X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f55d7e31aa315de4eece3139c4fa1df7d6eb929e..0bd774be1714eb7bb815cef3d44803eac6c735ec:/src/views-components/sharing-dialog/sharing-dialog-component.tsx?ds=sidebyside diff --git a/src/views-components/sharing-dialog/sharing-dialog-component.tsx b/src/views-components/sharing-dialog/sharing-dialog-component.tsx index 259390aab7..0fa0056c01 100644 --- a/src/views-components/sharing-dialog/sharing-dialog-component.tsx +++ b/src/views-components/sharing-dialog/sharing-dialog-component.tsx @@ -13,6 +13,9 @@ import { Paper, Tabs, Tab, + Checkbox, + FormControlLabel, + Typography, } from '@material-ui/core'; import { StyleRulesCallback, @@ -27,6 +30,14 @@ import { } from 'models/resource'; import { SharingInvitationForm } from './sharing-invitation-form'; import { SharingManagementForm } from './sharing-management-form'; +import { + BasePicker, + Calendar, + MuiPickersUtilsProvider, + TimePickerView +} from 'material-ui-pickers'; +import DateFnsUtils from "@date-io/date-fns"; +import moment from 'moment'; export interface SharingDialogDataProps { open: boolean; @@ -37,7 +48,7 @@ export interface SharingDialogDataProps { export interface SharingDialogActionProps { onClose: () => void; onSave: () => void; - onCreateSharingToken: () => void; + onCreateSharingToken: (d: Date | undefined) => () => void; refreshPermissions: () => void; } enum SharingDialogTab { @@ -49,12 +60,22 @@ export default (props: SharingDialogDataProps & SharingDialogActionProps) => { onClose, onSave, onCreateSharingToken, refreshPermissions } = props; const showTabs = extractUuidObjectType(sharedResourceUuid) === ResourceObjectType.COLLECTION; const [tabNr, setTabNr] = React.useState(SharingDialogTab.PERMISSIONS); + const [expDate, setExpDate] = React.useState(); + const [withExpiration, setWithExpiration] = React.useState(false); // Sets up the dialog depending on the resource type if (!showTabs && tabNr !== SharingDialogTab.PERMISSIONS) { setTabNr(SharingDialogTab.PERMISSIONS); } + React.useEffect(() => { + if (!withExpiration) { + setExpDate(undefined); + } else { + setExpDate(moment().add(1, 'hour').toDate()); + } + }, [withExpiration]); + return { } + { tabNr === SharingDialogTab.URLS && withExpiration && <> + + + + {({ date, handleChange }) => (<> + + + + + {}} + onSecondsChange={() => {}} + onHourChange={handleChange} + /> + + )} + + + + + + Maximum expiration date may be limited by the cluster configuration. + + + } - { tabNr === SharingDialogTab.URLS && + { tabNr === SharingDialogTab.URLS && <> + setWithExpiration(e.target.checked)} />} + label="With expiration" /> + - - } + } { tabNr === SharingDialogTab.PERMISSIONS && - } -