251127:1700 Frontend Start Build
This commit is contained in:
29
frontend/lib/stores/draft-store.ts
Normal file
29
frontend/lib/stores/draft-store.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
// File: lib/stores/draft-store.ts
|
||||
import { create } from 'zustand';
|
||||
import { persist, createJSONStorage } from 'zustand/middleware';
|
||||
|
||||
interface DraftState {
|
||||
drafts: Record<string, any>;
|
||||
saveDraft: (key: string, data: any) => void;
|
||||
getDraft: (key: string) => any;
|
||||
clearDraft: (key: string) => void;
|
||||
}
|
||||
|
||||
export const useDraftStore = create<DraftState>()(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
drafts: {},
|
||||
saveDraft: (key, data) => set((state) => ({ drafts: { ...state.drafts, [key]: data } })),
|
||||
getDraft: (key) => get().drafts[key],
|
||||
clearDraft: (key) => set((state) => {
|
||||
const newDrafts = { ...state.drafts };
|
||||
delete newDrafts[key];
|
||||
return { drafts: newDrafts };
|
||||
}),
|
||||
}),
|
||||
{
|
||||
name: 'lcbp3-form-drafts',
|
||||
storage: createJSONStorage(() => localStorage),
|
||||
}
|
||||
)
|
||||
);
|
||||
27
frontend/lib/stores/ui-store.ts
Normal file
27
frontend/lib/stores/ui-store.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
// File: lib/stores/ui-store.ts
|
||||
import { create } from 'zustand';
|
||||
import { persist } from 'zustand/middleware';
|
||||
|
||||
interface UIState {
|
||||
isSidebarOpen: boolean;
|
||||
toggleSidebar: () => void;
|
||||
closeSidebar: () => void; // ✅ เพิ่มกลับมา
|
||||
openSidebar: () => void; // ✅ เพิ่มกลับมา
|
||||
}
|
||||
|
||||
export const useUIStore = create<UIState>()(
|
||||
persist(
|
||||
(set) => ({
|
||||
isSidebarOpen: true,
|
||||
|
||||
toggleSidebar: () => set((state) => ({ isSidebarOpen: !state.isSidebarOpen })),
|
||||
|
||||
// ✅ เพิ่ม Implementation กลับมา
|
||||
closeSidebar: () => set({ isSidebarOpen: false }),
|
||||
openSidebar: () => set({ isSidebarOpen: true }),
|
||||
}),
|
||||
{
|
||||
name: 'sidebar-state',
|
||||
}
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user