feat(FE): add drawer ui store

This commit is contained in:
randy-ar
2025-12-01 10:13:28 +07:00
parent 892bb19dfd
commit 2ace95a0db
6 changed files with 89 additions and 9 deletions
+40
View File
@@ -0,0 +1,40 @@
import { StateCreator } from 'zustand';
import { DrawerUiSlice } from '@/types/stores';
export const createFormDrawerUiSlice: StateCreator<
DrawerUiSlice,
[],
[],
DrawerUiSlice
> = (set, get, api) => ({
// event flag untuk memicu formik validate
triggerValidate: false,
// dibalik untuk memicu event
toggleValidate: () => {
const current = get().triggerValidate;
set({ triggerValidate: !current });
},
// sistem subscriber sederhana agar form bisa listen perubahan flag
subscribeValidate: (callback: () => void) => {
let prev = get().triggerValidate;
const unsub = api.subscribe((state) => {
if (state.triggerValidate !== prev) {
prev = state.triggerValidate;
callback();
}
});
return unsub;
},
isValid: false,
setIsValid: (isValid: boolean) => set({ isValid }),
subscribeIsValid: (callback: (isValid: boolean) => void) => {
return api.subscribe((state) => {
callback(Boolean(state.isValid));
});
},
});