33 lines
842 B
TypeScript
33 lines
842 B
TypeScript
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);
|
|
},
|
|
})); |