diff --git a/src/frontend/src/components/calendar/OrderCalendar.tsx b/src/frontend/src/components/calendar/OrderCalendar.tsx index 0f468a7041..4bf4ea9ca8 100644 --- a/src/frontend/src/components/calendar/OrderCalendar.tsx +++ b/src/frontend/src/components/calendar/OrderCalendar.tsx @@ -22,6 +22,7 @@ import { useCallback, useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; import { api } from '../../App'; import useCalendar from '../../hooks/UseCalendar'; +import { openGlobalPreview } from '../../states/PreviewDrawerState'; import { useUserState } from '../../states/UserState'; import { AssignedToMeFilter, @@ -166,14 +167,18 @@ export default function OrderCalendar({ } }; - // Callback when PurchaseOrder is clicked + // Callback when an order is clicked - open preview drawer, or navigate on modifier click const onClickOrder = (info: EventClickArg) => { - if (!!info.event.id) { + if (!info.event.id) return; + + if (info.jsEvent.ctrlKey || info.jsEvent.metaKey || info.jsEvent.shiftKey) { navigateToLink( getDetailUrl(model, info.event.id), navigate, info.jsEvent ); + } else { + openGlobalPreview(model, Number.parseInt(info.event.id)); } }; diff --git a/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx b/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx index 078d13a211..d398f404ea 100644 --- a/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx +++ b/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx @@ -8,7 +8,8 @@ export default function GlobalPreviewDrawer() { const instance = usePreviewDrawerState((state) => state.instance); const closePreview = usePreviewDrawerState((state) => state.closePreview); - if (!isOpen || modelType === undefined || id === undefined) { + // Only skip rendering before the drawer has ever been opened + if (modelType === undefined || id === undefined) { return null; } diff --git a/src/frontend/src/components/previews/PreviewDrawer.tsx b/src/frontend/src/components/previews/PreviewDrawer.tsx index 12c11c6eb9..195b3872cf 100644 --- a/src/frontend/src/components/previews/PreviewDrawer.tsx +++ b/src/frontend/src/components/previews/PreviewDrawer.tsx @@ -36,11 +36,16 @@ export default function PreviewDrawer({ return ( {`${modelInfo.label} #${id}`}} opened={opened} onClose={onClose} withCloseButton + transitionProps={{ + transition: 'slide-left', + duration: 300, + timingFunction: 'ease' + }} > {!instance && instanceQuery.isFetching ? ( diff --git a/src/frontend/src/states/PreviewDrawerState.tsx b/src/frontend/src/states/PreviewDrawerState.tsx index b079958d62..29488ce97a 100644 --- a/src/frontend/src/states/PreviewDrawerState.tsx +++ b/src/frontend/src/states/PreviewDrawerState.tsx @@ -22,12 +22,7 @@ export const usePreviewDrawerState = create()( }, closePreview: () => { - set({ - modelType: undefined, - id: undefined, - instance: undefined, - isOpen: false - }); + set({ isOpen: false }); } }) );