37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
|
|
import { create } from "zustand";
|
||
|
|
|
||
|
|
// 일정 관리 페이지 상태 스토어
|
||
|
|
// 메모리 기반이므로 SPA 내 페이지 이동 시 유지, 새로고침 시 초기화
|
||
|
|
const useScheduleStore = create((set) => ({
|
||
|
|
// 검색 관련
|
||
|
|
searchInput: "",
|
||
|
|
searchTerm: "",
|
||
|
|
isSearchMode: false,
|
||
|
|
|
||
|
|
// 필터 및 선택
|
||
|
|
selectedCategories: [],
|
||
|
|
selectedDate: null, // null이면 getTodayKST() 사용
|
||
|
|
currentDate: new Date(),
|
||
|
|
|
||
|
|
// 상태 업데이트 함수
|
||
|
|
setSearchInput: (value) => set({ searchInput: value }),
|
||
|
|
setSearchTerm: (value) => set({ searchTerm: value }),
|
||
|
|
setIsSearchMode: (value) => set({ isSearchMode: value }),
|
||
|
|
setSelectedCategories: (value) => set({ selectedCategories: value }),
|
||
|
|
setSelectedDate: (value) => set({ selectedDate: value }),
|
||
|
|
setCurrentDate: (value) => set({ currentDate: value }),
|
||
|
|
|
||
|
|
// 상태 초기화
|
||
|
|
reset: () =>
|
||
|
|
set({
|
||
|
|
searchInput: "",
|
||
|
|
searchTerm: "",
|
||
|
|
isSearchMode: false,
|
||
|
|
selectedCategories: [],
|
||
|
|
selectedDate: null,
|
||
|
|
currentDate: new Date(),
|
||
|
|
}),
|
||
|
|
}));
|
||
|
|
|
||
|
|
export default useScheduleStore;
|