[arvados] updated: 2.7.0-6428-g2447ba1d6a
git repository hosting
git at public.arvados.org
Mon Apr 29 13:35:33 UTC 2024
Summary of changes:
services/workbench2/package.json | 2 +-
.../components/conditional-tabs/conditional-tabs.tsx | 15 +++++++++++----
.../src/views/process-panel/process-io-card.tsx | 20 ++++++++++++--------
services/workbench2/yarn.lock | 17 ++++++++++++-----
4 files changed, 36 insertions(+), 18 deletions(-)
via 2447ba1d6a912c806ce4bc3392667496bbcea49c (commit)
via 8465186e04c914c7520d1e36152e3c0ee4604f94 (commit)
from a72bfc2cc90e0155ac7ea7ea9aa21390d2c18c19 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 2447ba1d6a912c806ce4bc3392667496bbcea49c
Author: Stephen Smith <stephen at curii.com>
Date: Mon Apr 29 09:35:02 2024 -0400
21642: Change conditionaltabs to render tabs as hidden to avoid re-renders
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen at curii.com>
diff --git a/services/workbench2/src/components/conditional-tabs/conditional-tabs.tsx b/services/workbench2/src/components/conditional-tabs/conditional-tabs.tsx
index ff8d517c4e..499e84df8a 100644
--- a/services/workbench2/src/components/conditional-tabs/conditional-tabs.tsx
+++ b/services/workbench2/src/components/conditional-tabs/conditional-tabs.tsx
@@ -2,14 +2,19 @@
//
// SPDX-License-Identifier: AGPL-3.0
-import React, { ReactNode, useEffect, useState } from "react";
+import React, { CSSProperties, ReactElement, useEffect, useState } from "react";
import { Tabs, Tab } from "@material-ui/core";
import { TabsProps } from "@material-ui/core/Tabs";
+interface ComponentWithHidden {
+ styles: CSSProperties;
+ hidden: boolean;
+};
+
export type TabData = {
show: boolean;
label: string;
- content: ReactNode;
+ content: ReactElement<ComponentWithHidden>;
};
type ConditionalTabsProps = {
@@ -19,7 +24,6 @@ type ConditionalTabsProps = {
export const ConditionalTabs = (props: Omit<TabsProps, 'value' | 'onChange'> & ConditionalTabsProps) => {
const [tabState, setTabState] = useState(0);
const visibleTabs = props.tabs.filter(tab => tab.show);
- const activeTab = visibleTabs[tabState];
const visibleTabNames = visibleTabs.map(tab => tab.label).join();
const handleTabChange = (event: React.MouseEvent<HTMLElement>, value: number) => {
@@ -39,6 +43,9 @@ export const ConditionalTabs = (props: Omit<TabsProps, 'value' | 'onChange'> & C
onChange={handleTabChange} >
{visibleTabs.map(tab => <Tab key={tab.label} label={tab.label} />)}
</Tabs>
- {activeTab && activeTab.content}
+
+ {visibleTabs.map((tab, i) => (
+ React.cloneElement(tab.content, {hidden: i !== tabState})
+ ))}
</>;
};
diff --git a/services/workbench2/src/views/process-panel/process-io-card.tsx b/services/workbench2/src/views/process-panel/process-io-card.tsx
index 76d4c52d04..6d60b8cf22 100644
--- a/services/workbench2/src/views/process-panel/process-io-card.tsx
+++ b/services/workbench2/src/views/process-panel/process-io-card.tsx
@@ -485,12 +485,13 @@ export type ProcessIOParameter = {
interface ProcessIOPreviewDataProps {
data: ProcessIOParameter[];
valueLabel: string;
+ hidden?: boolean;
}
type ProcessIOPreviewProps = ProcessIOPreviewDataProps & WithStyles<CssRules>;
const ProcessIOPreview = memo(
- withStyles(styles)(({ data, valueLabel, classes }: ProcessIOPreviewProps) => {
+ withStyles(styles)(({ data, valueLabel, hidden, classes }: ProcessIOPreviewProps) => {
const showLabel = data.some((param: ProcessIOParameter) => param.label);
const hasMoreValues = (index: number) => (
@@ -546,7 +547,7 @@ const ProcessIOPreview = memo(
</TableRow>;
};
- return <div className={classes.tableWrapper}>
+ return <div className={classes.tableWrapper} hidden={hidden}>
<Table
className={classes.paramTableRoot}
aria-label="Process IO Preview"
@@ -590,10 +591,11 @@ const ProcessValuePreview = withStyles(styles)(({ value, classes }: ProcessValue
interface ProcessIORawDataProps {
data: ProcessIOParameter[];
+ hidden?: boolean;
}
-const ProcessIORaw = withStyles(styles)(({ data, classes }: ProcessIORawDataProps & WithStyles<CssRules>) => (
- <div className={classes.jsonWrapper}>
+const ProcessIORaw = withStyles(styles)(({ data, hidden, classes }: ProcessIORawDataProps & WithStyles<CssRules>) => (
+ <div className={classes.jsonWrapper} hidden={hidden}>
<Paper elevation={0} style={{minWidth: "100%", height: "100%"}}>
<DefaultVirtualCodeSnippet
lines={JSON.stringify(data, null, 2).split('\n')}
@@ -605,6 +607,7 @@ const ProcessIORaw = withStyles(styles)(({ data, classes }: ProcessIORawDataProp
interface ProcessInputMountsDataProps {
mounts: InputCollectionMount[];
+ hidden?: boolean;
}
type ProcessInputMountsProps = ProcessInputMountsDataProps & WithStyles<CssRules>;
@@ -612,10 +615,11 @@ type ProcessInputMountsProps = ProcessInputMountsDataProps & WithStyles<CssRules
const ProcessInputMounts = withStyles(styles)(
connect((state: RootState) => ({
auth: state.auth,
- }))(({ mounts, classes, auth }: ProcessInputMountsProps & { auth: AuthState }) => (
+ }))(({ mounts, hidden, classes, auth }: ProcessInputMountsProps & { auth: AuthState }) => (
<Table
className={classes.mountsTableRoot}
aria-label="Process Input Mounts"
+ hidden={hidden}
>
<TableHead>
<TableRow>
@@ -652,10 +656,10 @@ const mapNavigateToProps = (dispatch: Dispatch): ProcessOutputCollectionActionPr
navigateTo: uuid => dispatch<any>(navigateTo(uuid)),
});
-type ProcessOutputCollectionProps = {outputUuid: string | undefined} & ProcessOutputCollectionActionProps & WithStyles<CssRules>;
+type ProcessOutputCollectionProps = {outputUuid: string | undefined, hidden?: boolean} & ProcessOutputCollectionActionProps & WithStyles<CssRules>;
-const ProcessOutputCollection = withStyles(styles)(connect(null, mapNavigateToProps)(({ outputUuid, navigateTo, classes }: ProcessOutputCollectionProps) => (
- <div className={classes.tableWrapper}>
+const ProcessOutputCollection = withStyles(styles)(connect(null, mapNavigateToProps)(({ outputUuid, hidden, navigateTo, classes }: ProcessOutputCollectionProps) => (
+ <div className={classes.tableWrapper} hidden={hidden}>
<>
{outputUuid && (
<Typography className={classes.collectionLink}>
commit 8465186e04c914c7520d1e36152e3c0ee4604f94
Author: Stephen Smith <stephen at curii.com>
Date: Mon Apr 29 09:32:27 2024 -0400
21642: Update caniuse
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen at curii.com>
diff --git a/services/workbench2/package.json b/services/workbench2/package.json
index 139b58f3d6..c74f026c9c 100644
--- a/services/workbench2/package.json
+++ b/services/workbench2/package.json
@@ -30,7 +30,7 @@
"@types/shell-escape": "^0.2.0",
"axios": "^0.28.1",
"bootstrap": "^5.3.2",
- "caniuse-lite": "1.0.30001610",
+ "caniuse-lite": "1.0.30001612",
"classnames": "2.2.6",
"cwlts": "1.15.29",
"date-fns": "^2.28.0",
diff --git a/services/workbench2/yarn.lock b/services/workbench2/yarn.lock
index 985a6fa973..6dba1d2fcd 100644
--- a/services/workbench2/yarn.lock
+++ b/services/workbench2/yarn.lock
@@ -4165,7 +4165,7 @@ __metadata:
axios: ^0.28.1
axios-mock-adapter: 1.17.0
bootstrap: ^5.3.2
- caniuse-lite: 1.0.30001610
+ caniuse-lite: 1.0.30001612
classnames: 2.2.6
cwlts: 1.15.29
cypress: ^13.6.6
@@ -5373,10 +5373,17 @@ __metadata:
languageName: node
linkType: hard
-"caniuse-lite at npm:1.0.30001610, caniuse-lite at npm:^1.0.0, caniuse-lite at npm:^1.0.30000981, caniuse-lite at npm:^1.0.30001035, caniuse-lite at npm:^1.0.30001109, caniuse-lite at npm:^1.0.30001541, caniuse-lite at npm:^1.0.30001587":
- version: 1.0.30001610
- resolution: "caniuse-lite at npm:1.0.30001610"
- checksum: 580c7367aafd7e524f4e3f0e8b22ac08d081a4d44ceece211f1758e214df9a87961750fb1e1ee28a2cd2830f0daf3edafe5e1d87bf1eefbbe7c6cf3d00e2979d
+"caniuse-lite at npm:1.0.30001612":
+ version: 1.0.30001612
+ resolution: "caniuse-lite at npm:1.0.30001612"
+ checksum: 2b6ab6a19c72bdf8dccac824944e828a2a1fae52c6dfeb2d64ccecfd60d0466d2e5a392e996da2150d92850188a5034666dceed34a38d978177f6934e0bf106d
+ languageName: node
+ linkType: hard
+
+"caniuse-lite at npm:^1.0.0, caniuse-lite at npm:^1.0.30000981, caniuse-lite at npm:^1.0.30001035, caniuse-lite at npm:^1.0.30001109, caniuse-lite at npm:^1.0.30001541, caniuse-lite at npm:^1.0.30001587":
+ version: 1.0.30001614
+ resolution: "caniuse-lite at npm:1.0.30001614"
+ checksum: 1b695625f9a1b08584c3c229d4b8deaebb89e7901a2a2ffe599a6250c0a79fc61afc49c374c32a76dbf593a5dedac3229bb0140bbacd438276211bdd1d7c4958
languageName: node
linkType: hard
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list