1111import { isArray , isEmpty , isNil , isNumber , isString } from 'lodash'
1212import { useData } from '@Pimcore/modules/element/listing/abstract/data-layer/provider/data/use-data'
1313import { usePaging } from '@Pimcore/modules/element/listing/decorators/paging/context-layer/paging/provider/use-paging'
14- import { useSearchTermFilter } from '@Pimcore/modules/element/listing/decorators/general-filters/context-layer/provider/search-term-filter/use-search-term-filter'
15- import { useFieldFilters } from '@Pimcore/modules/element/listing/decorators/general-filters/context-layer/provider/field-filters/use-field-filters'
14+ import { useAppliedFilters } from '@Pimcore/modules/element/listing/decorators/general-filters/element-filters'
1615import { type FieldFilter } from '@Pimcore/modules/element/listing/decorators/general-filters/context-layer/provider/field-filters/field-filters-provider'
17- import { usePqlFilter } from '@Pimcore/modules/element/listing/decorators/general-filters/context-layer/provider/pql-filter/use-pql-filter'
18- import { useUnreferencedFilter } from '@Pimcore/modules/element/listing/decorators/general-filters/context-layer/provider/unreferenced-filter/use-unreferenced-filter'
19- import { useDirectChildrenFilter } from '@Pimcore/modules/element/listing/decorators/general-filters/context-layer/provider/direct-children-filter/use-direct-children-filter'
2016import { useSelectedColumns } from '@Pimcore/modules/element/listing/abstract/configuration-layer/provider/selected-columns/use-selected-columns'
2117import { type SelectedColumn } from '@Pimcore/modules/element/listing/abstract/configuration-layer/provider/selected-columns/selected-columns-provider'
2218import { useAvailableColumns } from '@Pimcore/modules/element/listing/decorators/utils/column-configuration/context-layer/provider/available-columns/use-available-columns'
@@ -81,11 +77,7 @@ const buildSelectedColumns = (savedColumns: SavedColumn[], availableColumns: Ava
8177 * notes.)
8278 */
8379export const useApplySavedSearch = ( ) : ( ( configuration : SavedSearchDetailedConfiguration ) => void ) => {
84- const { setSearchTerm } = useSearchTermFilter ( )
85- const { setFieldFilters } = useFieldFilters ( )
86- const { setPqlQuery } = usePqlFilter ( )
87- const { setOnlyUnreferenced } = useUnreferencedFilter ( )
88- const { setOnlyDirectChildren } = useDirectChildrenFilter ( )
80+ const { setValues : setAppliedFilters } = useAppliedFilters ( )
8981 const { setPage, setPageSize } = usePaging ( )
9082 const { setSelectedColumns } = useSelectedColumns ( )
9183 const { availableColumns } = useAvailableColumns ( )
@@ -94,18 +86,16 @@ export const useApplySavedSearch = (): ((configuration: SavedSearchDetailedConfi
9486
9587 return ( configuration : SavedSearchDetailedConfiguration ) : void => {
9688 const filter = getFilter ( configuration )
89+ const entries = ( isArray ( filter ?. columnFilters ) ? filter . columnFilters : [ ] ) as ColumnFilterEntry [ ]
9790
9891 // Search term — the `system.fulltext` column filter.
99- const columnFilters = ( filter ?. columnFilters ?? [ ] ) as ColumnFilterEntry [ ]
100- const searchTermEntry = isArray ( columnFilters )
101- ? columnFilters . find ( ( entry ) => entry . type === SEARCH_TERM_FILTER_TYPE )
102- : undefined
103- setSearchTerm ( isString ( searchTermEntry ?. filterValue ) ? searchTermEntry . filterValue : '' )
92+ const searchTermEntry = entries . find ( ( entry ) => entry . type === SEARCH_TERM_FILTER_TYPE )
93+ const searchTerm = isString ( searchTermEntry ?. filterValue ) ? searchTermEntry . filterValue : ''
10494
10595 // Field filters — every non-system column filter. The saved entries keep `meta`, so they can be
106- // re-hydrated into the field-filters provider (which re-keys them to columns by `key`). Always
107- // set (empty when none) so opening a search replaces any filters from a previous one.
108- const fieldFilters : FieldFilter [ ] = ( isArray ( columnFilters ) ? columnFilters : [ ] )
96+ // re-hydrated into the field-filters state (which re-keys them to columns by `key`). Always set
97+ // (empty when none) so opening a search replaces any filters from a previous one.
98+ const fieldFilters : FieldFilter [ ] = entries
10999 . filter ( ( entry ) => isString ( entry . type ) && ! SYSTEM_FILTER_TYPES . has ( entry . type ) )
110100 . map ( ( entry ) => ( {
111101 key : entry . key ?? '' ,
@@ -114,15 +104,17 @@ export const useApplySavedSearch = (): ((configuration: SavedSearchDetailedConfi
114104 locale : entry . locale ,
115105 meta : { translationKey : entry . meta ?. translationKey ?? '' , ...entry . meta }
116106 } ) )
117- setFieldFilters ( fieldFilters )
118107
119108 // System filters with their own sidebar controls.
120- const entries = isArray ( columnFilters ) ? columnFilters : [ ]
121109 const pqlEntry = entries . find ( ( entry ) => entry . type === 'system.pql' )
122- setPqlQuery ( isString ( pqlEntry ?. filterValue ) ? pqlEntry . filterValue : '' )
123- setOnlyUnreferenced ( entries . find ( ( entry ) => entry . type === 'system.unreferenced' ) ?. filterValue === true )
110+ const pql = isString ( pqlEntry ?. filterValue ) ? pqlEntry . filterValue : ''
111+ const unreferenced = entries . find ( ( entry ) => entry . type === 'system.unreferenced' ) ?. filterValue === true
124112 // The query sends `includeDescendants` (the inverse of the "only direct children" toggle).
125- setOnlyDirectChildren ( filter ?. includeDescendants === false )
113+ const directChildren = filter ?. includeDescendants === false
114+
115+ // Apply every general filter in one write to the applied-filters store. Always set each key (even
116+ // when empty/false) so opening a search replaces the state left over from a previous one.
117+ setAppliedFilters ( { searchTerm, fieldFilters, pql, unreferenced, directChildren } )
126118
127119 // Tags — the `system.tag` column filter, applied via its own provider rather than as a field
128120 // filter. Always set (empty when none) so opening a search clears tags left over from a previous one.
0 commit comments