From 9c5e4b599f5a5f6fbc0bb30e882faa6997859027 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 12 Aug 2025 14:27:43 +0700 Subject: [PATCH] add filter toggle icon --- frontend/public/img/icon-filter.svg | 9 +++ frontend/src/components/Filterbar.tsx | 77 ++++++++++++++---------- frontend/src/stores/FilterbarTempConf.ts | 4 ++ 3 files changed, 57 insertions(+), 33 deletions(-) create mode 100644 frontend/public/img/icon-filter.svg diff --git a/frontend/public/img/icon-filter.svg b/frontend/public/img/icon-filter.svg new file mode 100644 index 00000000..aa48b16f --- /dev/null +++ b/frontend/public/img/icon-filter.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/frontend/src/components/Filterbar.tsx b/frontend/src/components/Filterbar.tsx index 71b84811..7d24aefd 100644 --- a/frontend/src/components/Filterbar.tsx +++ b/frontend/src/components/Filterbar.tsx @@ -5,6 +5,7 @@ import iconSubstract from '/img/icon-substract.svg'; import iconGridView from '/img/icon-gridview.svg'; import iconListView from '/img/icon-listview.svg'; import iconTableView from '/img/icon-tableview.svg'; +import iconFilter from '/img/icon-filter.svg'; import { useUserConfigStore } from '../stores/UserConfigStore'; import { ViewStyleNamesType, ViewStylesEnum } from '../configuration/constants/ViewStyle'; import updateUserConfig, { UserConfigType } from '../api/actions/updateUserConfig'; @@ -27,7 +28,8 @@ const Filterbar = ({ viewStyle, showSort = true, showTypeFilter = false }: Filte const { userConfig, setUserConfig } = useUserConfigStore(); const [showHidden, setShowHidden] = useState(false); - const { filterHeight, setFilterHeight } = useFilterBarTempConf(); + const { filterHeight, setFilterHeight, showFilterItems, setShowFilterItems } = + useFilterBarTempConf(); const currentViewStyle = userConfig[viewStyle]; const isGridView = currentViewStyle === ViewStylesEnum.Grid; @@ -55,39 +57,48 @@ const Filterbar = ({ viewStyle, showSort = true, showTypeFilter = false }: Filte return (
-
- - {showTypeFilter && ( - +
+ {showFilterItems && ( + <> + + {showTypeFilter && ( + + )} + setFilterHeight(e.target.value)} + /> + )} - setFilterHeight(e.target.value)} + icon filter setShowFilterItems(!showFilterItems)} />
diff --git a/frontend/src/stores/FilterbarTempConf.ts b/frontend/src/stores/FilterbarTempConf.ts index 045f0691..3f32113e 100644 --- a/frontend/src/stores/FilterbarTempConf.ts +++ b/frontend/src/stores/FilterbarTempConf.ts @@ -5,9 +5,13 @@ import { create } from 'zustand'; interface FilterbarTempConfInterface { filterHeight: string; setFilterHeight: (filterHeight: string) => void; + showFilterItems: boolean; + setShowFilterItems: (filterItems: boolean) => void; } export const useFilterBarTempConf = create(set => ({ filterHeight: '', setFilterHeight: (filterHeight: string) => set({ filterHeight }), + showFilterItems: false, + setShowFilterItems: (showFilterItems: boolean) => set({ showFilterItems }), }));