diff --git a/packages/edit-site/src/components/dataviews/dataviews.js b/packages/edit-site/src/components/dataviews/dataviews.js index b488836a91f3eb..cf3515f9947c4f 100644 --- a/packages/edit-site/src/components/dataviews/dataviews.js +++ b/packages/edit-site/src/components/dataviews/dataviews.js @@ -20,6 +20,7 @@ export default function DataViews( { view, onChangeView, fields, + filters, actions, data, isLoading = false, @@ -38,6 +39,7 @@ export default function DataViews( { { + if ( 'object' !== typeof filter || ! filter?.id || ! filter?.type ) { + return; + } + + filterIndex[ filter.id ] = filter; + } ); + fields.forEach( ( field ) => { if ( ! field.filters ) { return; @@ -19,7 +27,7 @@ export default function Filters( { fields, view, onChangeView } ) { field.filters.forEach( ( filter ) => { let id = field.id; if ( 'string' === typeof filter ) { - filters[ id ] = { + filterIndex[ id ] = { id, name: field.header, type: filter, @@ -28,14 +36,14 @@ export default function Filters( { fields, view, onChangeView } ) { if ( 'object' === typeof filter ) { id = filter.id || field.id; - filters[ id ] = { + filterIndex[ id ] = { id, name: filter.name || field.header, type: filter.type, }; } - if ( 'enumeration' === filters[ id ]?.type ) { + if ( 'enumeration' === filterIndex[ id ]?.type ) { const elements = [ { value: filter.resetValue || '', @@ -43,8 +51,8 @@ export default function Filters( { fields, view, onChangeView } ) { }, ...( field.elements || [] ), ]; - filters[ id ] = { - ...filters[ id ], + filterIndex[ id ] = { + ...filterIndex[ id ], elements, }; } @@ -53,7 +61,7 @@ export default function Filters( { fields, view, onChangeView } ) { return ( view.visibleFilters?.map( ( filterName ) => { - const filter = filters[ filterName ]; + const filter = filterIndex[ filterName ]; if ( ! filter ) { return null; diff --git a/packages/edit-site/src/components/dataviews/text-filter.js b/packages/edit-site/src/components/dataviews/text-filter.js index cf324478391953..c5df0022e411c3 100644 --- a/packages/edit-site/src/components/dataviews/text-filter.js +++ b/packages/edit-site/src/components/dataviews/text-filter.js @@ -28,7 +28,7 @@ export default function TextFilter( { filter, view, onChangeView } ) { }, } ) ); }, [ debouncedSearch ] ); - const searchLabel = __( 'Filter list' ); + const searchLabel = filter?.name || __( 'Filter list' ); return ( ); }, - filters: [ - { id: 'search', type: 'search', name: __( 'Search' ) }, - ], maxWidth: 400, sortingFn: 'alphanumeric', enableHiding: false, @@ -200,6 +197,10 @@ export default function PagePages() { [ postStatuses, authors ] ); + const filters = useMemo( () => [ + { id: 'search', type: 'search', name: __( 'Filter list' ) }, + ] ); + const trashPostAction = useTrashPostAction(); const actions = useMemo( () => [ trashPostAction ], [ trashPostAction ] ); const onChangeView = useCallback( @@ -228,6 +229,7 @@ export default function PagePages() {