filter
This commit is contained in:
33
lib/filter-zustand.ts
Normal file
33
lib/filter-zustand.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { create } from "zustand";
|
||||
|
||||
interface FilterZustandTypes {
|
||||
filter: string[];
|
||||
removeFilter: (data: string) => void;
|
||||
toggleFilter: (data: string) => void;
|
||||
resetFilter: () => void;
|
||||
hasFilter: (data: string) => boolean;
|
||||
}
|
||||
|
||||
export const useFilter = create<FilterZustandTypes>((set, get) => ({
|
||||
filter: [],
|
||||
|
||||
removeFilter: (data) =>
|
||||
set((state) => ({
|
||||
filter: state.filter.filter((item) => item !== data),
|
||||
})),
|
||||
|
||||
// Toggle: mavjud bo'lsa o'chirish, yo'q bo'lsa qo'shish
|
||||
toggleFilter: (data) =>
|
||||
set((state) => {
|
||||
if (state.filter.includes(data)) {
|
||||
return { filter: state.filter.filter((item) => item !== data) };
|
||||
}
|
||||
return { filter: [...state.filter, data] };
|
||||
}),
|
||||
|
||||
resetFilter: () => set({ filter: [] }),
|
||||
|
||||
hasFilter: (data) => {
|
||||
return get().filter.includes(data);
|
||||
},
|
||||
}));
|
||||
Reference in New Issue
Block a user