UNPKG

@seliseblocks/next-filters

Version:
39 lines (31 loc) 1.2 kB
import { useState } from 'react'; import { IActiveFilter, IUseFilterStateProps } from '../types'; /** * @description {useFilterState} - Custom hook for managing filter state. * @param {string} featureName - The options for the hook. * @returns {Object} - An object containing the filter state and related functions. */ export const useFilterState = ({ featureName }: IUseFilterStateProps) => { const savedActiveFilters = (): IActiveFilter[] => { const activeFiltersSaved = localStorage.getItem(`activeFilters-${featureName}`); if (activeFiltersSaved) { return JSON.parse(activeFiltersSaved); } return []; }; const [isSidebarOpen, setIsSidebarOpen] = useState<boolean>(false); const [activeFilters, setActiveFilters] = useState<IActiveFilter[]>(savedActiveFilters); const handleSidebarToggle = () => { setIsSidebarOpen(!isSidebarOpen); }; const handleActiveFilters = (newActiveFilters: IActiveFilter[]) => { setActiveFilters(newActiveFilters); localStorage.setItem(`activeFilters-${featureName}`, JSON.stringify(newActiveFilters)); }; return { isSidebarOpen, handleSidebarToggle, activeFilters, handleActiveFilters, }; };