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),
|
||||
}
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user