X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/92308b1b044dee2970c4409a0da660ccbecce945..5a858213eb471c685204b7a65b4e23ca1eb98d72:/services/workbench2/src/store/details-panel/details-panel-action.ts diff --git a/services/workbench2/src/store/details-panel/details-panel-action.ts b/services/workbench2/src/store/details-panel/details-panel-action.ts index b708ad622c..1367d44613 100644 --- a/services/workbench2/src/store/details-panel/details-panel-action.ts +++ b/services/workbench2/src/store/details-panel/details-panel-action.ts @@ -19,7 +19,9 @@ export const SLIDE_TIMEOUT = 500; export const detailsPanelActions = unionize({ TOGGLE_DETAILS_PANEL: ofType<{}>(), OPEN_DETAILS_PANEL: ofType(), - LOAD_DETAILS_PANEL: ofType() + LOAD_DETAILS_PANEL: ofType(), + START_TRANSITION: ofType<{}>(), + END_TRANSITION: ofType<{}>(), }); export type DetailsPanelAction = UnionOf; @@ -41,6 +43,7 @@ export const loadDetailsPanel = (uuid: string) => export const openDetailsPanel = (uuid?: string, tabNr: number = 0) => (dispatch: Dispatch) => { + startDetailsPanelTransition(dispatch) dispatch(detailsPanelActions.OPEN_DETAILS_PANEL(tabNr)); if (uuid !== undefined) { dispatch(loadDetailsPanel(uuid)); @@ -63,14 +66,27 @@ export const refreshCollectionVersionsList = (uuid: string) => ); }; -export const toggleDetailsPanel = () => (dispatch: Dispatch, getState: () => RootState) => { +export const toggleDetailsPanel = (uuid: string = '') => (dispatch: Dispatch, getState: () => RootState) => { + const { detailsPanel, router }= getState() // because of material-ui issue resizing details panel breaks tabs. // triggering window resize event fixes that. + if(uuid !== detailsPanel.resourceUuid && detailsPanel.isOpened){ + dispatch(loadDetailsPanel(uuid)); + } else { + setTimeout(() => { + window.dispatchEvent(new Event('resize')); + }, SLIDE_TIMEOUT); + startDetailsPanelTransition(dispatch) + dispatch(detailsPanelActions.TOGGLE_DETAILS_PANEL()); + if (getState().detailsPanel.isOpened) { + dispatch(loadDetailsPanel(getState().detailsPanel.resourceUuid)); + } + } + }; + + const startDetailsPanelTransition = (dispatch) => { + dispatch(detailsPanelActions.START_TRANSITION()) setTimeout(() => { - window.dispatchEvent(new Event('resize')); + dispatch(detailsPanelActions.END_TRANSITION()) }, SLIDE_TIMEOUT); - dispatch(detailsPanelActions.TOGGLE_DETAILS_PANEL()); - if (getState().detailsPanel.isOpened) { - dispatch(loadDetailsPanel(getState().detailsPanel.resourceUuid)); - } -}; +} \ No newline at end of file