66a6190e3c
Closes https://github.com/twentyhq/core-team-issues/issues/1502 - Created the save action - Removed the temporary data attribute from the page layout widget since we will connect widgets to real data soon https://github.com/user-attachments/assets/2b46b511-f2c2-4e11-873c-a76fd31704e5
37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import { PageLayoutComponentInstanceContext } from '@/page-layout/states/contexts/PageLayoutComponentInstanceContext';
|
|
import { pageLayoutDraftComponentState } from '@/page-layout/states/pageLayoutDraftComponentState';
|
|
import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow';
|
|
import { useRecoilComponentCallbackState } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState';
|
|
import { useRecoilCallback } from 'recoil';
|
|
import { type PageLayoutWidget } from '~/generated/graphql';
|
|
|
|
export const useUpdatePageLayoutWidget = (pageLayoutIdFromProps?: string) => {
|
|
const pageLayoutId = useAvailableComponentInstanceIdOrThrow(
|
|
PageLayoutComponentInstanceContext,
|
|
pageLayoutIdFromProps,
|
|
);
|
|
|
|
const pageLayoutDraftState = useRecoilComponentCallbackState(
|
|
pageLayoutDraftComponentState,
|
|
pageLayoutId,
|
|
);
|
|
|
|
const updatePageLayoutWidget = useRecoilCallback(
|
|
({ set }) =>
|
|
(widgetId: string, updates: Partial<PageLayoutWidget>) => {
|
|
set(pageLayoutDraftState, (prev) => ({
|
|
...prev,
|
|
tabs: prev.tabs.map((tab) => ({
|
|
...tab,
|
|
widgets: tab.widgets.map((widget) =>
|
|
widget.id === widgetId ? { ...widget, ...updates } : widget,
|
|
),
|
|
})),
|
|
}));
|
|
},
|
|
[pageLayoutDraftState],
|
|
);
|
|
|
|
return { updatePageLayoutWidget };
|
|
};
|