From 4a4f168d470d9421c675703f9b28a483cb04321b Mon Sep 17 00:00:00 2001 From: Abdulraoof Date: Wed, 16 Apr 2025 22:54:29 +0300 Subject: [PATCH] Split selected tab from selectedResource --- src/lib/components/common/WithResources.tsx | 13 +++++++------ src/lib/store/provider.tsx | 2 +- src/lib/store/types.ts | 3 ++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib/components/common/WithResources.tsx b/src/lib/components/common/WithResources.tsx index d6b94f0b..993ec52e 100644 --- a/src/lib/components/common/WithResources.tsx +++ b/src/lib/components/common/WithResources.tsx @@ -55,7 +55,7 @@ const WithResources = ({ renderChildren }: WithResourcesProps) => { }; const ResourcesTabTables = ({ renderChildren }: WithResourcesProps) => { - const { resources, resourceFields, selectedResource, handleState, onResourceChange } = useStore(); + const { resources, resourceFields, selectedTab, handleState, onResourceChange } = useStore(); const tabs: ButtonTabProps[] = resources.map((res) => { return { @@ -66,7 +66,7 @@ const ResourcesTabTables = ({ renderChildren }: WithResourcesProps) => { }); const setTab = (tab: DefaultResource["assignee"]) => { - handleState(tab, "selectedResource"); + handleState(tab, "selectedTab"); if (typeof onResourceChange === "function") { const selected = resources.find((re) => re[resourceFields.idField] === tab); if (selected) { @@ -77,17 +77,18 @@ const ResourcesTabTables = ({ renderChildren }: WithResourcesProps) => { const currentTabSafeId = useMemo(() => { const firstId = resources[0][resourceFields.idField]; - if (!selectedResource) { + if (!selectedTab) { return firstId; } + // Make sure current selected id is within the resources array - const idx = resources.findIndex((re) => re[resourceFields.idField] === selectedResource); + const idx = resources.findIndex((re) => re[resourceFields.idField] === selectedTab); if (idx < 0) { return firstId; } - return selectedResource; - }, [resources, selectedResource, resourceFields.idField]); + return selectedTab; + }, [resources, resourceFields.idField, selectedTab]); return ( diff --git a/src/lib/store/provider.tsx b/src/lib/store/provider.tsx index e095f241..805e1ea0 100644 --- a/src/lib/store/provider.tsx +++ b/src/lib/store/provider.tsx @@ -57,7 +57,7 @@ export const StoreProvider = ({ children, initial }: Props) => { end: new Date(Date.now() + 60 * 60 * 1000), }, selectedEvent: isEvent?.event_id ? isEvent : undefined, - selectedResource: prev.selectedResource || isEvent?.[state.resourceFields?.idField], + selectedResource: isEvent?.[state.resourceFields?.idField], })); }; diff --git a/src/lib/store/types.ts b/src/lib/store/types.ts index dd1e0d0b..9f9f49e8 100644 --- a/src/lib/store/types.ts +++ b/src/lib/store/types.ts @@ -8,7 +8,8 @@ export interface SchedulerState extends SchedulerProps { dialog: boolean; selectedRange?: SelectedRange; selectedEvent?: ProcessedEvent; - selectedResource?: DefaultResource["assignee"]; + selectedResource?: DefaultResource["assignee"] | DefaultResource["assignee"][]; + selectedTab?: DefaultResource["assignee"]; currentDragged?: ProcessedEvent; enableAgenda?: boolean; }