20085: Make the public/private/shared dropdown save on change
authorPeter Amstutz <peter.amstutz@curii.com>
Fri, 31 Mar 2023 21:59:16 +0000 (17:59 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Fri, 31 Mar 2023 21:59:16 +0000 (17:59 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

src/views-components/sharing-dialog/sharing-dialog-component.tsx
src/views-components/sharing-dialog/sharing-public-access-form-component.tsx
src/views-components/sharing-dialog/sharing-public-access-form.tsx

index 44824fe3142ededdd863d4e445a67eba18addfd4..0cc9fc90f574d468c373e1b69685b73536d505c5 100644 (file)
@@ -114,7 +114,7 @@ export default (props: SharingDialogComponentProps) => {
             {tabNr === SharingDialogTab.PERMISSIONS &&
                 <Grid container direction='column' spacing={24}>
                     <Grid item>
-                        <SharingPublicAccessForm />
+                        <SharingPublicAccessForm onSave={onSave} />
                     </Grid>
                     <Grid item>
                         <SharingManagementForm onSave={onSave} />
index 7ec71161ab303ed41cc7f4c4e34c43a7ae6b7577..37b3d37678b5bd382468e5dc1e1a65685094aea1 100644 (file)
@@ -16,8 +16,13 @@ const sharingPublicAccessStyles: StyleRulesCallback<'root'> = theme => ({
     }
 });
 
+interface AccessProps {
+    visibility: VisibilityLevel;
+    onSave: () => void;
+}
+
 const SharingPublicAccessForm = withStyles(sharingPublicAccessStyles)(
-    ({ classes, visibility }: WithStyles<'root'> & { visibility: VisibilityLevel }) =>
+    ({ classes, visibility, onSave }: WithStyles<'root'> & AccessProps) =>
         <>
             <Divider />
             <Grid container alignItems='center' spacing={8} className={classes.root}>
@@ -27,7 +32,7 @@ const SharingPublicAccessForm = withStyles(sharingPublicAccessStyles)(
                     </Typography>
                 </Grid>
                 <Grid item xs={4} container wrap='nowrap'>
-                    <Field name='visibility' component={VisibilityLevelSelectComponent} />
+                    <Field name='visibility' component={VisibilityLevelSelectComponent} onChange={onSave} />
                 </Grid>
             </Grid>
         </>
@@ -46,9 +51,10 @@ const renderVisibilityInfo = (visibility: VisibilityLevel) => {
     }
 };
 
-export default ({ visibility }: { visibility: VisibilityLevel }) =>
-    <SharingPublicAccessForm {...{ visibility }} />;
+const SharingPublicAccessFormComponent = ({ visibility, onSave }: AccessProps) =>
+    <SharingPublicAccessForm {...{ visibility, onSave }} />;
+
+export default SharingPublicAccessFormComponent;
 
 const VisibilityLevelSelectComponent = ({ input }: WrappedFieldProps) =>
     <VisibilityLevelSelect fullWidth disableUnderline {...input} />;
-
index 8ee1d94dbe8edb7bdd609ffcfc81655ce00f3fb3..f95ff2974d05cbcca8e3f77d5fd48568d87397a0 100644 (file)
@@ -10,8 +10,12 @@ import { SHARING_PUBLIC_ACCESS_FORM_NAME, VisibilityLevel } from 'store/sharing-
 import { RootState } from 'store/store';
 import { getSharingPublicAccessFormData } from '../../store/sharing-dialog/sharing-dialog-types';
 
+interface SaveProps {
+    onSave: () => void;
+}
+
 export const SharingPublicAccessForm = compose(
-    reduxForm(
+    reduxForm<{}, SaveProps>(
         { form: SHARING_PUBLIC_ACCESS_FORM_NAME }
     ),
     connect(
@@ -21,4 +25,3 @@ export const SharingPublicAccessForm = compose(
         }
     )
 )(SharingPublicAccessFormComponent);
-