diff --git a/src/stores/table/table-filter.store.ts b/src/stores/table/table-filter.store.ts new file mode 100644 index 00000000..cae14e10 --- /dev/null +++ b/src/stores/table/table-filter.store.ts @@ -0,0 +1,60 @@ +import { create } from 'zustand'; +import { createJSONStorage, devtools, persist } from 'zustand/middleware'; +import { TableFilterStore } from '@/types/stores'; + +type TableFilterStoreState = TableFilterStore< + Record> +>; + +export const useTableFilterStore = create()( + devtools( + persist( + (set) => ({ + data: {}, + + setData: (newData) => { + set({ data: newData }); + }, + + setTableData: (key, tableData) => { + set((state) => ({ + data: { + ...state.data, + [key]: tableData, + }, + })); + }, + + setTableDataField: (key, field, value) => { + set((state) => ({ + data: { + ...state.data, + [key]: { + ...state.data[key], + [field]: value, + }, + }, + })); + }, + + setSearchValue: (key, searchValue) => { + set((state) => ({ + data: { + ...state.data, + [key]: { + ...state.data[key], + + // search key + search: searchValue, + }, + }, + })); + }, + }), + { + name: 'table-filter-store', + storage: createJSONStorage(() => sessionStorage), + } + ) + ) +);