Make page layouts less specific (#15102)
This PR makes some hooks/functions/components more generic. I untied them from dashboards as they will be needed for any page layout type. --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
committed by
GitHub
parent
4ae299973b
commit
41c970e163
@@ -0,0 +1,35 @@
|
||||
import { forceRegisteredActionsByKeyState } from '@/action-menu/actions/states/forceRegisteredActionsMapComponentState';
|
||||
import { PageLayoutSingleRecordActionKeys } from '@/page-layout/actions/PageLayoutSingleRecordActionKeys';
|
||||
import { PageLayoutComponentInstanceContext } from '@/page-layout/states/contexts/PageLayoutComponentInstanceContext';
|
||||
import { isPageLayoutInEditModeComponentState } from '@/page-layout/states/isPageLayoutInEditModeComponentState';
|
||||
import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow';
|
||||
import { useRecoilComponentCallbackState } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
|
||||
export const useSetIsPageLayoutInEditMode = (pageLayoutIdFromProps: string) => {
|
||||
const pageLayoutId = useAvailableComponentInstanceIdOrThrow(
|
||||
PageLayoutComponentInstanceContext,
|
||||
pageLayoutIdFromProps,
|
||||
);
|
||||
|
||||
const isPageLayoutInEditModeState = useRecoilComponentCallbackState(
|
||||
isPageLayoutInEditModeComponentState,
|
||||
pageLayoutId,
|
||||
);
|
||||
|
||||
const setIsPageLayoutInEditMode = useRecoilCallback(
|
||||
({ set }) =>
|
||||
(value: boolean) => {
|
||||
set(isPageLayoutInEditModeState, value);
|
||||
set(forceRegisteredActionsByKeyState, (prev) => ({
|
||||
...prev,
|
||||
[PageLayoutSingleRecordActionKeys.EDIT_LAYOUT]: !value,
|
||||
[PageLayoutSingleRecordActionKeys.SAVE_LAYOUT]: value,
|
||||
[PageLayoutSingleRecordActionKeys.CANCEL_LAYOUT_EDITION]: value,
|
||||
}));
|
||||
},
|
||||
[isPageLayoutInEditModeState],
|
||||
);
|
||||
|
||||
return { setIsPageLayoutInEditMode };
|
||||
};
|
||||
Reference in New Issue
Block a user