/** * WordPress Dependencies */ import { isEmpty } from "lodash"; import { __ } from "@wordpress/i18n"; import { useEffect } from "react"; import { tablebergIcons } from "./icons"; import { SearchControl, MenuGroup, MenuItem, PanelBody, } from "@wordpress/components"; export interface IconsLibrarySidebarProps { subCategoryFilter: string; search: string; setSubCategoryFilter: (subCategoryFilter: string) => void; setSearch: (search: string) => void; mainCategoryFilter: string; setMainCategoryFilter: (mainCategoryFilter: string) => void; } function Sidebar(props: IconsLibrarySidebarProps) { const { search, setSearch, subCategoryFilter, setSubCategoryFilter, setMainCategoryFilter, } = props; const preparedIconPacks = tablebergIcons.map(iconPack => { const categories = iconPack?.categories; const allCategories: Array<{ name: string; title: string; count: number; }> = categories?.map(category => { const categoryName = category?.name; const categoryIcons = iconPack?.icons.filter(icon => { return icon?.categories?.includes(categoryName); }); return { ...category, count: categoryIcons.length }; }); allCategories.unshift({ name: "all-" + iconPack?.type, title: __("All", "tableberg"), count: iconPack?.icons.length, }); return { ...iconPack, categories: allCategories }; }); useEffect(() => { setSubCategoryFilter(preparedIconPacks[0]?.categories?.[0]?.name); }, []); return (
{ setSearch(newValue); }} placeholder={__("Search Icon", "tableberg")} /> {!isEmpty(preparedIconPacks) && ( {preparedIconPacks.map((iconPack, index) => { return ( {iconPack?.categories.map(category => { return ( { setSubCategoryFilter( category?.name ); setMainCategoryFilter( iconPack?.type ); }} > {category?.title} {category?.count} ); })} ); })} )}
); } export default Sidebar;