@wordpress/edit-site 5.22.0 → 5.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/components/actions/index.js +115 -15
- package/build/components/actions/index.js.map +1 -1
- package/build/components/add-new-template/new-template.js +0 -7
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/block-editor/site-editor-canvas.js +7 -2
- package/build/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build/components/block-editor/use-site-editor-settings.js +54 -63
- package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build/components/dataviews/add-filter.js +91 -0
- package/build/components/dataviews/add-filter.js.map +1 -0
- package/build/components/dataviews/constants.js +14 -0
- package/build/components/dataviews/constants.js.map +1 -0
- package/build/components/dataviews/dataviews.js +30 -9
- package/build/components/dataviews/dataviews.js.map +1 -1
- package/build/components/dataviews/filter-summary.js +62 -0
- package/build/components/dataviews/filter-summary.js.map +1 -0
- package/build/components/dataviews/filters.js +37 -48
- package/build/components/dataviews/filters.js.map +1 -1
- package/build/components/dataviews/index.js +9 -2
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews/item-actions.js +139 -17
- package/build/components/dataviews/item-actions.js.map +1 -1
- package/build/components/dataviews/pagination.js +7 -2
- package/build/components/dataviews/pagination.js.map +1 -1
- package/build/components/dataviews/reset-filters.js +33 -0
- package/build/components/dataviews/reset-filters.js.map +1 -0
- package/build/components/dataviews/search.js +1 -0
- package/build/components/dataviews/search.js.map +1 -1
- package/build/components/dataviews/view-actions.js +49 -32
- package/build/components/dataviews/view-actions.js.map +1 -1
- package/build/components/dataviews/view-grid.js +48 -25
- package/build/components/dataviews/view-grid.js.map +1 -1
- package/build/components/dataviews/view-list.js +130 -14
- package/build/components/dataviews/view-list.js.map +1 -1
- package/build/components/dataviews/view-side-by-side.js +20 -0
- package/build/components/dataviews/view-side-by-side.js.map +1 -0
- package/build/components/editor/index.js +52 -56
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
- package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/index.js +15 -2
- package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build/components/global-styles/header.js +4 -2
- package/build/components/global-styles/header.js.map +1 -1
- package/build/components/global-styles/screen-block-list.js +22 -16
- package/build/components/global-styles/screen-block-list.js.map +1 -1
- package/build/components/global-styles/screen-revisions/index.js +66 -24
- package/build/components/global-styles/screen-revisions/index.js.map +1 -1
- package/build/components/global-styles/screen-revisions/revisions-buttons.js +52 -24
- package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
- package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
- package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
- package/build/components/global-styles/screen-root.js +3 -3
- package/build/components/global-styles/screen-root.js.map +1 -1
- package/build/components/global-styles/ui.js +31 -39
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles-renderer/index.js +1 -1
- package/build/components/global-styles-renderer/index.js.map +1 -1
- package/build/components/header-edit-mode/document-actions/index.js +21 -16
- package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
- package/build/components/header-edit-mode/document-tools/index.js +160 -0
- package/build/components/header-edit-mode/document-tools/index.js.map +1 -0
- package/build/components/header-edit-mode/index.js +50 -117
- package/build/components/header-edit-mode/index.js.map +1 -1
- package/build/components/header-edit-mode/more-menu/index.js +1 -1
- package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
- package/build/components/header-edit-mode/more-menu/site-export.js +2 -6
- package/build/components/header-edit-mode/more-menu/site-export.js.map +1 -1
- package/build/components/layout/index.js +4 -19
- package/build/components/layout/index.js.map +1 -1
- package/build/components/list/added-by.js +44 -54
- package/build/components/list/added-by.js.map +1 -1
- package/build/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +11 -15
- package/build/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
- package/build/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
- package/build/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
- package/build/components/page-content-focus-notifications/index.js +22 -0
- package/build/components/page-content-focus-notifications/index.js.map +1 -0
- package/build/components/page-main/index.js +2 -1
- package/build/components/page-main/index.js.map +1 -1
- package/build/components/page-pages/index.js +137 -88
- package/build/components/page-pages/index.js.map +1 -1
- package/build/components/page-pages/side-editor.js +25 -0
- package/build/components/page-pages/side-editor.js.map +1 -0
- package/build/components/page-patterns/grid-item.js +2 -2
- package/build/components/page-patterns/grid-item.js.map +1 -1
- package/build/components/page-patterns/patterns-list.js +3 -3
- package/build/components/page-patterns/patterns-list.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +2 -2
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/page-templates/dataviews-templates.js +316 -0
- package/build/components/page-templates/dataviews-templates.js.map +1 -0
- package/build/components/page-templates/template-actions.js +168 -0
- package/build/components/page-templates/template-actions.js.map +1 -0
- package/build/components/preferences-modal/index.js +1 -1
- package/build/components/preferences-modal/index.js.map +1 -1
- package/build/components/save-button/index.js +9 -6
- package/build/components/save-button/index.js.map +1 -1
- package/build/components/save-hub/index.js +14 -0
- package/build/components/save-hub/index.js.map +1 -1
- package/build/components/sidebar/index.js +1 -2
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar-dataviews/add-new-view.js +124 -0
- package/build/components/sidebar-dataviews/add-new-view.js.map +1 -0
- package/build/components/sidebar-dataviews/custom-dataviews-list.js +191 -0
- package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -0
- package/build/components/sidebar-dataviews/dataview-item.js +71 -0
- package/build/components/sidebar-dataviews/dataview-item.js.map +1 -0
- package/build/components/sidebar-dataviews/default-views.js +65 -0
- package/build/components/sidebar-dataviews/default-views.js.map +1 -0
- package/build/components/sidebar-dataviews/index.js +21 -38
- package/build/components/sidebar-dataviews/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/default-sidebar.js +2 -6
- package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
- package/build/components/sidebar-edit-mode/index.js +6 -5
- package/build/components/sidebar-edit-mode/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/edit-template.js +18 -29
- package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/hooks.js +22 -8
- package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/page-status.js +8 -5
- package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/page-summary.js +5 -8
- package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +6 -14
- package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +4 -12
- package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
- package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -6
- package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/settings-header/index.js +10 -6
- package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/hooks.js +3 -3
- package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
- package/build/components/sidebar-navigation-screen-global-styles/index.js +1 -1
- package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
- package/build/components/sidebar-navigation-screen-page/index.js +23 -4
- package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-page/page-details.js +3 -11
- package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
- package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
- package/build/components/site-hub/index.js +18 -6
- package/build/components/site-hub/index.js.map +1 -1
- package/build/components/start-template-options/index.js +12 -16
- package/build/components/start-template-options/index.js.map +1 -1
- package/build/components/style-book/index.js +22 -12
- package/build/components/style-book/index.js.map +1 -1
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +150 -55
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
- package/build/components/template-part-converter/convert-to-regular.js +1 -1
- package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
- package/build/components/welcome-guide/page.js +2 -2
- package/build/components/welcome-guide/page.js.map +1 -1
- package/build/components/welcome-guide/template.js +6 -3
- package/build/components/welcome-guide/template.js.map +1 -1
- package/build/hooks/commands/use-edit-mode-commands.js +24 -14
- package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js +3 -1
- package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build/hooks/template-part-edit.js +6 -2
- package/build/hooks/template-part-edit.js.map +1 -1
- package/build/index.js +0 -3
- package/build/index.js.map +1 -1
- package/build/store/actions.js +39 -83
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +2 -27
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +0 -23
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +1 -40
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +33 -67
- package/build/store/selectors.js.map +1 -1
- package/build/utils/constants.js +3 -14
- package/build/utils/constants.js.map +1 -1
- package/build-module/components/actions/index.js +113 -14
- package/build-module/components/actions/index.js.map +1 -1
- package/build-module/components/add-new-template/new-template.js +0 -7
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/block-editor/site-editor-canvas.js +7 -2
- package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build-module/components/block-editor/use-site-editor-settings.js +54 -62
- package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build-module/components/dataviews/add-filter.js +84 -0
- package/build-module/components/dataviews/add-filter.js.map +1 -0
- package/build-module/components/dataviews/constants.js +6 -0
- package/build-module/components/dataviews/constants.js.map +1 -0
- package/build-module/components/dataviews/dataviews.js +29 -9
- package/build-module/components/dataviews/dataviews.js.map +1 -1
- package/build-module/components/dataviews/filter-summary.js +55 -0
- package/build-module/components/dataviews/filter-summary.js.map +1 -0
- package/build-module/components/dataviews/filters.js +37 -48
- package/build-module/components/dataviews/filters.js.map +1 -1
- package/build-module/components/dataviews/index.js +1 -1
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews/item-actions.js +142 -20
- package/build-module/components/dataviews/item-actions.js.map +1 -1
- package/build-module/components/dataviews/pagination.js +7 -2
- package/build-module/components/dataviews/pagination.js.map +1 -1
- package/build-module/components/dataviews/reset-filters.js +26 -0
- package/build-module/components/dataviews/reset-filters.js.map +1 -0
- package/build-module/components/dataviews/search.js +1 -0
- package/build-module/components/dataviews/search.js.map +1 -1
- package/build-module/components/dataviews/view-actions.js +50 -33
- package/build-module/components/dataviews/view-actions.js.map +1 -1
- package/build-module/components/dataviews/view-grid.js +49 -26
- package/build-module/components/dataviews/view-grid.js.map +1 -1
- package/build-module/components/dataviews/view-list.js +132 -16
- package/build-module/components/dataviews/view-list.js.map +1 -1
- package/build-module/components/dataviews/view-side-by-side.js +12 -0
- package/build-module/components/dataviews/view-side-by-side.js.map +1 -0
- package/build-module/components/editor/index.js +55 -59
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/index.js +14 -2
- package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build-module/components/global-styles/header.js +4 -2
- package/build-module/components/global-styles/header.js.map +1 -1
- package/build-module/components/global-styles/screen-block-list.js +23 -17
- package/build-module/components/global-styles/screen-block-list.js.map +1 -1
- package/build-module/components/global-styles/screen-revisions/index.js +67 -25
- package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
- package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +51 -24
- package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
- package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
- package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
- package/build-module/components/global-styles/screen-root.js +3 -3
- package/build-module/components/global-styles/screen-root.js.map +1 -1
- package/build-module/components/global-styles/ui.js +31 -39
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles-renderer/index.js +1 -1
- package/build-module/components/global-styles-renderer/index.js.map +1 -1
- package/build-module/components/header-edit-mode/document-actions/index.js +21 -16
- package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
- package/build-module/components/header-edit-mode/document-tools/index.js +152 -0
- package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -0
- package/build-module/components/header-edit-mode/index.js +54 -121
- package/build-module/components/header-edit-mode/index.js.map +1 -1
- package/build-module/components/header-edit-mode/more-menu/index.js +1 -1
- package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
- package/build-module/components/header-edit-mode/more-menu/site-export.js +2 -6
- package/build-module/components/header-edit-mode/more-menu/site-export.js.map +1 -1
- package/build-module/components/layout/index.js +5 -20
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/list/added-by.js +45 -56
- package/build-module/components/list/added-by.js.map +1 -1
- package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +11 -15
- package/build-module/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
- package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
- package/build-module/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
- package/build-module/components/page-content-focus-notifications/index.js +14 -0
- package/build-module/components/page-content-focus-notifications/index.js.map +1 -0
- package/build-module/components/page-main/index.js +2 -1
- package/build-module/components/page-main/index.js.map +1 -1
- package/build-module/components/page-pages/index.js +141 -90
- package/build-module/components/page-pages/index.js.map +1 -1
- package/build-module/components/page-pages/side-editor.js +17 -0
- package/build-module/components/page-pages/side-editor.js.map +1 -0
- package/build-module/components/page-patterns/grid-item.js +2 -2
- package/build-module/components/page-patterns/grid-item.js.map +1 -1
- package/build-module/components/page-patterns/patterns-list.js +4 -4
- package/build-module/components/page-patterns/patterns-list.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +3 -3
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/page-templates/dataviews-templates.js +308 -0
- package/build-module/components/page-templates/dataviews-templates.js.map +1 -0
- package/build-module/components/page-templates/template-actions.js +157 -0
- package/build-module/components/page-templates/template-actions.js.map +1 -0
- package/build-module/components/preferences-modal/index.js +1 -1
- package/build-module/components/preferences-modal/index.js.map +1 -1
- package/build-module/components/save-button/index.js +11 -8
- package/build-module/components/save-button/index.js.map +1 -1
- package/build-module/components/save-hub/index.js +14 -0
- package/build-module/components/save-hub/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +1 -2
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/add-new-view.js +116 -0
- package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -0
- package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +182 -0
- package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -0
- package/build-module/components/sidebar-dataviews/dataview-item.js +63 -0
- package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -0
- package/build-module/components/sidebar-dataviews/default-views.js +57 -0
- package/build-module/components/sidebar-dataviews/default-views.js.map +1 -0
- package/build-module/components/sidebar-dataviews/index.js +22 -39
- package/build-module/components/sidebar-dataviews/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/default-sidebar.js +2 -6
- package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/index.js +6 -5
- package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +20 -31
- package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +21 -7
- package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +9 -6
- package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +6 -8
- package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +8 -16
- package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +5 -13
- package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -6
- package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/settings-header/index.js +10 -6
- package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +4 -4
- package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js +1 -1
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-page/index.js +23 -4
- package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-page/page-details.js +3 -11
- package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -2
- package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
- package/build-module/components/site-hub/index.js +19 -7
- package/build-module/components/site-hub/index.js.map +1 -1
- package/build-module/components/start-template-options/index.js +13 -16
- package/build-module/components/start-template-options/index.js.map +1 -1
- package/build-module/components/style-book/index.js +22 -12
- package/build-module/components/style-book/index.js.map +1 -1
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +150 -56
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
- package/build-module/components/template-part-converter/convert-to-regular.js +1 -1
- package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
- package/build-module/components/welcome-guide/page.js +2 -2
- package/build-module/components/welcome-guide/page.js.map +1 -1
- package/build-module/components/welcome-guide/template.js +6 -3
- package/build-module/components/welcome-guide/template.js.map +1 -1
- package/build-module/hooks/commands/use-edit-mode-commands.js +24 -14
- package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js +4 -2
- package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build-module/hooks/template-part-edit.js +6 -2
- package/build-module/hooks/template-part-edit.js.map +1 -1
- package/build-module/index.js +0 -3
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js +37 -80
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +1 -25
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +0 -22
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +1 -38
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +27 -62
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/constants.js +1 -11
- package/build-module/utils/constants.js.map +1 -1
- package/build-style/style-rtl.css +221 -181
- package/build-style/style.css +221 -181
- package/package.json +41 -41
- package/src/components/actions/index.js +150 -14
- package/src/components/add-new-template/new-template.js +0 -5
- package/src/components/block-editor/site-editor-canvas.js +8 -2
- package/src/components/block-editor/style.scss +0 -87
- package/src/components/block-editor/use-site-editor-settings.js +68 -89
- package/src/components/dataviews/README.md +80 -83
- package/src/components/dataviews/add-filter.js +108 -0
- package/src/components/dataviews/constants.js +5 -0
- package/src/components/dataviews/dataviews.js +28 -10
- package/src/components/dataviews/filter-summary.js +79 -0
- package/src/components/dataviews/filters.js +48 -58
- package/src/components/dataviews/index.js +1 -1
- package/src/components/dataviews/item-actions.js +169 -30
- package/src/components/dataviews/pagination.js +9 -4
- package/src/components/dataviews/reset-filters.js +26 -0
- package/src/components/dataviews/search.js +1 -0
- package/src/components/dataviews/style.scss +89 -9
- package/src/components/dataviews/view-actions.js +77 -49
- package/src/components/dataviews/view-grid.js +63 -38
- package/src/components/dataviews/view-list.js +182 -18
- package/src/components/dataviews/view-side-by-side.js +9 -0
- package/src/components/editor/index.js +135 -123
- package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
- package/src/components/global-styles/font-library-modal/utils/index.js +20 -9
- package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +46 -15
- package/src/components/global-styles/font-library-modal/utils/test/wpKebabCase.spec.js +28 -0
- package/src/components/global-styles/header.js +2 -1
- package/src/components/global-styles/screen-block-list.js +37 -26
- package/src/components/global-styles/screen-revisions/index.js +91 -35
- package/src/components/global-styles/screen-revisions/revisions-buttons.js +65 -45
- package/src/components/global-styles/screen-revisions/style.scss +52 -28
- package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -6
- package/src/components/global-styles/screen-root.js +2 -1
- package/src/components/global-styles/style.scss +0 -11
- package/src/components/global-styles/ui.js +60 -75
- package/src/components/global-styles-renderer/index.js +1 -1
- package/src/components/header-edit-mode/document-actions/index.js +20 -18
- package/src/components/header-edit-mode/document-tools/index.js +201 -0
- package/src/components/header-edit-mode/index.js +87 -184
- package/src/components/header-edit-mode/more-menu/index.js +1 -1
- package/src/components/header-edit-mode/more-menu/site-export.js +2 -6
- package/src/components/header-edit-mode/style.scss +35 -2
- package/src/components/layout/index.js +4 -11
- package/src/components/layout/style.scss +6 -18
- package/src/components/list/added-by.js +24 -64
- package/src/components/list/style.scss +11 -13
- package/src/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +10 -22
- package/src/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
- package/src/components/page-content-focus-notifications/index.js +14 -0
- package/src/components/page-main/index.js +6 -1
- package/src/components/page-pages/index.js +167 -91
- package/src/components/page-pages/side-editor.js +14 -0
- package/src/components/page-patterns/grid-item.js +3 -3
- package/src/components/page-patterns/patterns-list.js +10 -4
- package/src/components/page-patterns/use-patterns.js +4 -3
- package/src/components/page-templates/dataviews-templates.js +345 -0
- package/src/components/page-templates/style.scss +13 -0
- package/src/components/page-templates/template-actions.js +209 -0
- package/src/components/preferences-modal/index.js +1 -1
- package/src/components/save-button/index.js +37 -24
- package/src/components/save-hub/index.js +15 -0
- package/src/components/save-hub/style.scss +7 -0
- package/src/components/sidebar/index.js +1 -2
- package/src/components/sidebar-dataviews/add-new-view.js +141 -0
- package/src/components/sidebar-dataviews/custom-dataviews-list.js +229 -0
- package/src/components/sidebar-dataviews/dataview-item.js +67 -0
- package/src/components/sidebar-dataviews/default-views.js +59 -0
- package/src/components/sidebar-dataviews/index.js +36 -45
- package/src/components/sidebar-dataviews/style.scss +29 -0
- package/src/components/sidebar-edit-mode/default-sidebar.js +6 -6
- package/src/components/sidebar-edit-mode/index.js +13 -9
- package/src/components/sidebar-edit-mode/page-panels/edit-template.js +31 -57
- package/src/components/sidebar-edit-mode/page-panels/hooks.js +20 -9
- package/src/components/sidebar-edit-mode/page-panels/page-status.js +6 -6
- package/src/components/sidebar-edit-mode/page-panels/page-summary.js +10 -8
- package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +13 -12
- package/src/components/sidebar-edit-mode/page-panels/style.scss +14 -19
- package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +10 -9
- package/src/components/sidebar-edit-mode/plugin-sidebar/index.js +6 -6
- package/src/components/sidebar-edit-mode/settings-header/index.js +8 -9
- package/src/components/sidebar-edit-mode/template-panel/hooks.js +11 -7
- package/src/components/sidebar-navigation-screen/style.scss +1 -0
- package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -1
- package/src/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
- package/src/components/sidebar-navigation-screen-page/index.js +24 -3
- package/src/components/sidebar-navigation-screen-page/page-details.js +4 -17
- package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -2
- package/src/components/sidebar-navigation-screen-template/style.scss +6 -1
- package/src/components/site-hub/index.js +9 -8
- package/src/components/start-template-options/index.js +14 -12
- package/src/components/style-book/index.js +48 -35
- package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +182 -63
- package/src/components/template-part-converter/convert-to-regular.js +1 -1
- package/src/components/welcome-guide/page.js +2 -2
- package/src/components/welcome-guide/template.js +4 -2
- package/src/hooks/commands/use-edit-mode-commands.js +22 -16
- package/src/hooks/push-changes-to-global-styles/index.js +13 -6
- package/src/hooks/template-part-edit.js +4 -2
- package/src/index.js +0 -8
- package/src/store/actions.js +42 -96
- package/src/store/private-actions.js +1 -24
- package/src/store/private-selectors.js +0 -22
- package/src/store/reducer.js +0 -39
- package/src/store/selectors.js +43 -95
- package/src/store/test/actions.js +14 -169
- package/src/store/test/reducer.js +0 -62
- package/src/store/test/selectors.js +0 -117
- package/src/style.scss +2 -0
- package/src/utils/constants.js +1 -11
- package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -77
- package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +0 -1
- package/build/components/block-editor/block-editor-provider/index.js +0 -31
- package/build/components/block-editor/block-editor-provider/index.js.map +0 -1
- package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -110
- package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +0 -1
- package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -84
- package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +0 -1
- package/build/components/block-editor/index.js +0 -30
- package/build/components/block-editor/index.js.map +0 -1
- package/build/components/dataviews/in-filter.js +0 -49
- package/build/components/dataviews/in-filter.js.map +0 -1
- package/build/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
- package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -50
- package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
- package/build/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
- package/build/components/page-content-focus-manager/index.js +0 -61
- package/build/components/page-content-focus-manager/index.js.map +0 -1
- package/build/components/page-pages/default-views.js +0 -62
- package/build/components/page-pages/default-views.js.map +0 -1
- package/build/components/sidebar-edit-mode/page-panels/publish-date.js +0 -87
- package/build/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
- package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -69
- package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +0 -1
- package/build-module/components/block-editor/block-editor-provider/index.js +0 -23
- package/build-module/components/block-editor/block-editor-provider/index.js.map +0 -1
- package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -102
- package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +0 -1
- package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -78
- package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +0 -1
- package/build-module/components/block-editor/index.js +0 -22
- package/build-module/components/block-editor/index.js.map +0 -1
- package/build-module/components/dataviews/in-filter.js +0 -41
- package/build-module/components/dataviews/in-filter.js.map +0 -1
- package/build-module/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
- package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -43
- package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
- package/build-module/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
- package/build-module/components/page-content-focus-manager/index.js +0 -52
- package/build-module/components/page-content-focus-manager/index.js.map +0 -1
- package/build-module/components/page-pages/default-views.js +0 -55
- package/build-module/components/page-pages/default-views.js.map +0 -1
- package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js +0 -80
- package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
- package/src/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -75
- package/src/components/block-editor/block-editor-provider/index.js +0 -29
- package/src/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -114
- package/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js +0 -116
- package/src/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -90
- package/src/components/block-editor/index.js +0 -28
- package/src/components/dataviews/in-filter.js +0 -45
- package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -52
- package/src/components/page-content-focus-manager/index.js +0 -51
- package/src/components/page-pages/default-views.js +0 -60
- package/src/components/sidebar-edit-mode/page-panels/publish-date.js +0 -94
|
@@ -5,7 +5,8 @@ This file documents the DataViews UI component, which provides an API to render
|
|
|
5
5
|
```js
|
|
6
6
|
<DataViews
|
|
7
7
|
data={ pages }
|
|
8
|
-
|
|
8
|
+
getItemId={ ( item ) => item.id }
|
|
9
|
+
isLoading={ isLoadingPages }
|
|
9
10
|
view={ view }
|
|
10
11
|
onChangeView={ onChangeView }
|
|
11
12
|
fields={ fields }
|
|
@@ -16,7 +17,7 @@ This file documents the DataViews UI component, which provides an API to render
|
|
|
16
17
|
|
|
17
18
|
## Data
|
|
18
19
|
|
|
19
|
-
The dataset to work with, represented as a one-dimensional array.
|
|
20
|
+
The dataset to work with, represented as a one-dimensional array.
|
|
20
21
|
|
|
21
22
|
Example:
|
|
22
23
|
|
|
@@ -43,50 +44,75 @@ Example:
|
|
|
43
44
|
direction: 'desc',
|
|
44
45
|
},
|
|
45
46
|
search: '',
|
|
46
|
-
filters:
|
|
47
|
-
author: 2,
|
|
48
|
-
status: 'publish,
|
|
49
|
-
|
|
50
|
-
visibleFilters: [ 'author', 'status' ],
|
|
47
|
+
filters: [
|
|
48
|
+
{ field: 'author', operator: OPERATOR_IN, value: 2 },
|
|
49
|
+
{ field: 'status', operator: OPERATOR_IN, value: 'publish,draft' }
|
|
50
|
+
],
|
|
51
51
|
hiddenFields: [ 'date', 'featured-image' ],
|
|
52
52
|
layout: {},
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
56
|
+
- `type`: view type, one of `list` or `grid`.
|
|
57
|
+
- `perPage`: number of records to show per page.
|
|
58
|
+
- `page`: the page that is visible.
|
|
59
|
+
- `sort.field`: field used for sorting the dataset.
|
|
60
|
+
- `sort.direction`: the direction to use for sorting, one of `asc` or `desc`.
|
|
61
|
+
- `search`: the text search applied to the dataset.
|
|
62
|
+
- `filters`: the filters applied to the dataset. Each item describes:
|
|
63
|
+
- `field`: which field this filter is bound to.
|
|
64
|
+
- `operator`: which type of filter it is. Only `in` available at the moment.
|
|
65
|
+
- `value`: the actual value selected by the user.
|
|
66
|
+
- `hiddenFields`: the `id` of the fields that are hidden in the UI.
|
|
67
|
+
- `layout`: config that is specific to a particular layout type.
|
|
68
|
+
- `mediaField`: used by the `grid` layout. The `id` of the field to be used for rendering each card's media.
|
|
69
|
+
- `primaryField`: used by the `grid` layout. The `id` of the field to be used for rendering each card's title.
|
|
66
70
|
|
|
67
|
-
|
|
71
|
+
### View <=> data
|
|
68
72
|
|
|
69
|
-
|
|
73
|
+
The view is a representation of the visible state of the dataset. Note, however, that it's the consumer's responsibility to work with the data provider to make sure the user options defined through the view's config (sort, pagination, filters, etc.) are respected.
|
|
74
|
+
|
|
75
|
+
The following example shows how a view object is used to query the WordPress REST API via the entities abstraction. The same can be done with any other data provider.
|
|
70
76
|
|
|
71
77
|
```js
|
|
72
|
-
function MyCustomPageList() {
|
|
78
|
+
function MyCustomPageList() {
|
|
73
79
|
const [ view, setView ] = useState( {
|
|
74
80
|
type: 'list',
|
|
81
|
+
perPage: 5,
|
|
75
82
|
page: 1,
|
|
76
|
-
|
|
83
|
+
sort: {
|
|
84
|
+
field: 'date',
|
|
85
|
+
direction: 'desc',
|
|
86
|
+
},
|
|
87
|
+
search: '',
|
|
88
|
+
filters: [
|
|
89
|
+
{ field: 'author', operator: OPERATOR_IN, value: 2 },
|
|
90
|
+
{ field: 'status', operator: OPERATOR_IN, value: 'publish,draft' }
|
|
91
|
+
],
|
|
92
|
+
hiddenFields: [ 'date', 'featured-image' ],
|
|
93
|
+
layout: {},
|
|
77
94
|
} );
|
|
78
95
|
|
|
79
|
-
const queryArgs = useMemo(
|
|
80
|
-
|
|
96
|
+
const queryArgs = useMemo( () => {
|
|
97
|
+
const filters = {};
|
|
98
|
+
view.filters.forEach( ( filter ) => {
|
|
99
|
+
if ( filter.field === 'status' && filter.operator === OPERATOR_IN ) {
|
|
100
|
+
filters.status = filter.value;
|
|
101
|
+
}
|
|
102
|
+
if ( filter.field === 'author' && filter.operator === OPERATOR_IN ) {
|
|
103
|
+
filters.author = filter.value;
|
|
104
|
+
}
|
|
105
|
+
} );
|
|
106
|
+
return {
|
|
81
107
|
per_page: view.perPage,
|
|
82
108
|
page: view.page,
|
|
109
|
+
_embed: 'author',
|
|
83
110
|
order: view.sort?.direction,
|
|
84
|
-
orderby: view.sort?.field
|
|
111
|
+
orderby: view.sort?.field,
|
|
85
112
|
search: view.search,
|
|
86
|
-
...
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
);
|
|
113
|
+
...filters,
|
|
114
|
+
};
|
|
115
|
+
}, [ view ] );
|
|
90
116
|
|
|
91
117
|
const {
|
|
92
118
|
records
|
|
@@ -119,7 +145,8 @@ Example:
|
|
|
119
145
|
return (
|
|
120
146
|
<time>{ getFormattedDate( item.date ) }</time>
|
|
121
147
|
);
|
|
122
|
-
}
|
|
148
|
+
},
|
|
149
|
+
enableHiding: false
|
|
123
150
|
},
|
|
124
151
|
{
|
|
125
152
|
id: 'author',
|
|
@@ -130,65 +157,35 @@ Example:
|
|
|
130
157
|
<a href="...">{ item.author }</a>
|
|
131
158
|
);
|
|
132
159
|
},
|
|
160
|
+
type: ENUMERATION_TYPE,
|
|
133
161
|
elements: [
|
|
134
162
|
{ value: 1, label: 'Admin' }
|
|
135
163
|
{ value: 2, label: 'User' }
|
|
136
164
|
]
|
|
137
|
-
|
|
165
|
+
enableSorting: false
|
|
138
166
|
}
|
|
139
167
|
]
|
|
140
168
|
```
|
|
141
169
|
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
A filter is an object that may contain the following properties:
|
|
167
|
-
|
|
168
|
-
- `id`: unique identifier for the filter. Matches the entity query param. Field filters may omit it, in which case the field's `id` will be used.
|
|
169
|
-
- `name`: nice looking name for the filter. Field filters may omit it, in which case the field's `header` will be used.
|
|
170
|
-
- `type`: the type of filter. Only `enumeration` is supported at the moment.
|
|
171
|
-
- `elements`: for filters of type `enumeration`, the list of options to show. A one-dimensional array of object with value/label keys, as in `[ { value: 1, label: "Value name" } ]`.
|
|
172
|
-
- `value`: what's serialized into the view's filters.
|
|
173
|
-
- `label`: nice-looking name for users.
|
|
174
|
-
- `resetValue`: for filters of type `enumeration`, this is the value for the reset option. If none is provided, `''` will be used.
|
|
175
|
-
- `resetLabel`: for filters of type `enumeration`, this is the label for the reset option. If none is provided, `All` will be used.
|
|
176
|
-
|
|
177
|
-
As a convenience, field's filter can provide abbreviated versions for the filter. All of following examples result in the same filter:
|
|
178
|
-
|
|
179
|
-
```js
|
|
180
|
-
const field = [
|
|
181
|
-
{
|
|
182
|
-
id: 'author',
|
|
183
|
-
header: __( 'Author' ),
|
|
184
|
-
elements: authors,
|
|
185
|
-
filters: [
|
|
186
|
-
'enumeration',
|
|
187
|
-
{ type: 'enumeration' },
|
|
188
|
-
{ id: 'author', type: 'enumeration' },
|
|
189
|
-
{ id: 'author', type: 'enumeration', name: __( 'Author' ) },
|
|
190
|
-
{ id: 'author', type: 'enumeration', name: __( 'Author' ), elements: authors },
|
|
191
|
-
],
|
|
192
|
-
}
|
|
193
|
-
];
|
|
194
|
-
```
|
|
170
|
+
- `id`: identifier for the field. Unique.
|
|
171
|
+
- `header`: the field's name to be shown in the UI.
|
|
172
|
+
- `getValue`: function that returns the value of the field.
|
|
173
|
+
- `render`: function that renders the field.
|
|
174
|
+
- `elements`: the set of valid values for the field's value.
|
|
175
|
+
- `type`: the type of the field. Used to generate the proper filters. Only `enumeration` available at the moment.
|
|
176
|
+
- `enableSorting`: whether the data can be sorted by the given field. True by default.
|
|
177
|
+
- `enableHiding`: whether the field can be hidden. True by default.
|
|
178
|
+
|
|
179
|
+
## Actions
|
|
180
|
+
|
|
181
|
+
Array of operations that can be performed upon each record. Each action is an object with the following properties:
|
|
182
|
+
|
|
183
|
+
- `id`: string, required. Unique identifier of the action. For example, `move-to-trash`.
|
|
184
|
+
- `label`: string, required. User facing description of the action. For example, `Move to Trash`.
|
|
185
|
+
- `isPrimary`: boolean, optional. Whether the action should be listed inline (primary) or in hidden in the more actions menu (secondary).
|
|
186
|
+
- `icon`: icon to show for primary actions. It's required for a primary action, otherwise the action would be considered secondary.
|
|
187
|
+
- `isEligible`: function, optional. Whether the action can be performed for a given record. If not present, the action is considered to be eligible for all items. It takes the given record as input.
|
|
188
|
+
- `isDestructive`: boolean, optional. Whether the action can delete data, in which case the UI would communicate it via red color.
|
|
189
|
+
- `callback`: function, required unless `RenderModal` is provided. Callback function that takes the record as input and performs the required action.
|
|
190
|
+
- `RenderModal`: ReactElement, optional. If an action requires that some UI be rendered in a modal, it can provide a component which takes as props the record as `item` and a `closeModal` function. When this prop is provided, the `callback` property is ignored.
|
|
191
|
+
- `hideModalHeader`: boolean, optional. This property is used in combination with `RenderModal` and controls the visibility of the modal's header. If the action renders a modal and doesn't hide the header, the action's label is going to be used in the modal's header.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
privateApis as componentsPrivateApis,
|
|
6
|
+
Button,
|
|
7
|
+
Icon,
|
|
8
|
+
} from '@wordpress/components';
|
|
9
|
+
import { chevronRightSmall, plus } from '@wordpress/icons';
|
|
10
|
+
import { __ } from '@wordpress/i18n';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
import { unlock } from '../../lock-unlock';
|
|
16
|
+
import { ENUMERATION_TYPE, OPERATOR_IN } from './constants';
|
|
17
|
+
|
|
18
|
+
const {
|
|
19
|
+
DropdownMenuV2: DropdownMenu,
|
|
20
|
+
DropdownSubMenuV2: DropdownSubMenu,
|
|
21
|
+
DropdownSubMenuTriggerV2: DropdownSubMenuTrigger,
|
|
22
|
+
DropdownMenuItemV2: DropdownMenuItem,
|
|
23
|
+
} = unlock( componentsPrivateApis );
|
|
24
|
+
|
|
25
|
+
export default function AddFilter( { fields, view, onChangeView } ) {
|
|
26
|
+
const filters = [];
|
|
27
|
+
fields.forEach( ( field ) => {
|
|
28
|
+
if ( ! field.type ) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
switch ( field.type ) {
|
|
33
|
+
case ENUMERATION_TYPE:
|
|
34
|
+
filters.push( {
|
|
35
|
+
field: field.id,
|
|
36
|
+
name: field.header,
|
|
37
|
+
elements: field.elements || [],
|
|
38
|
+
isVisible: view.filters.some(
|
|
39
|
+
( f ) =>
|
|
40
|
+
f.field === field.id && f.operator === OPERATOR_IN
|
|
41
|
+
),
|
|
42
|
+
} );
|
|
43
|
+
}
|
|
44
|
+
} );
|
|
45
|
+
|
|
46
|
+
if ( filters.length === 0 ) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<DropdownMenu
|
|
52
|
+
label={ __( 'Add filter' ) }
|
|
53
|
+
trigger={
|
|
54
|
+
<Button
|
|
55
|
+
disabled={ filters.length === view.filters?.length }
|
|
56
|
+
__experimentalIsFocusable
|
|
57
|
+
variant="tertiary"
|
|
58
|
+
size="compact"
|
|
59
|
+
>
|
|
60
|
+
<Icon icon={ plus } style={ { flexShrink: 0 } } />
|
|
61
|
+
{ __( 'Add filter' ) }
|
|
62
|
+
</Button>
|
|
63
|
+
}
|
|
64
|
+
>
|
|
65
|
+
{ filters.map( ( filter ) => {
|
|
66
|
+
if ( filter.isVisible ) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<DropdownSubMenu
|
|
72
|
+
key={ filter.field }
|
|
73
|
+
trigger={
|
|
74
|
+
<DropdownSubMenuTrigger
|
|
75
|
+
suffix={ <Icon icon={ chevronRightSmall } /> }
|
|
76
|
+
>
|
|
77
|
+
{ filter.name }
|
|
78
|
+
</DropdownSubMenuTrigger>
|
|
79
|
+
}
|
|
80
|
+
>
|
|
81
|
+
{ filter.elements.map( ( element ) => (
|
|
82
|
+
<DropdownMenuItem
|
|
83
|
+
key={ element.value }
|
|
84
|
+
onSelect={ () => {
|
|
85
|
+
onChangeView( ( currentView ) => ( {
|
|
86
|
+
...currentView,
|
|
87
|
+
page: 1,
|
|
88
|
+
filters: [
|
|
89
|
+
...currentView.filters,
|
|
90
|
+
{
|
|
91
|
+
field: filter.field,
|
|
92
|
+
operator: OPERATOR_IN,
|
|
93
|
+
value: element.value,
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
} ) );
|
|
97
|
+
} }
|
|
98
|
+
role="menuitemcheckbox"
|
|
99
|
+
>
|
|
100
|
+
{ element.label }
|
|
101
|
+
</DropdownMenuItem>
|
|
102
|
+
) ) }
|
|
103
|
+
</DropdownSubMenu>
|
|
104
|
+
);
|
|
105
|
+
} ) }
|
|
106
|
+
</DropdownMenu>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
@@ -16,6 +16,22 @@ import ViewActions from './view-actions';
|
|
|
16
16
|
import Filters from './filters';
|
|
17
17
|
import Search from './search';
|
|
18
18
|
import { ViewGrid } from './view-grid';
|
|
19
|
+
import { ViewSideBySide } from './view-side-by-side';
|
|
20
|
+
|
|
21
|
+
// To do: convert to view type registry.
|
|
22
|
+
export const viewTypeSupportsMap = {
|
|
23
|
+
list: {},
|
|
24
|
+
grid: {},
|
|
25
|
+
'side-by-side': {
|
|
26
|
+
preview: true,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const viewTypeMap = {
|
|
31
|
+
list: ViewList,
|
|
32
|
+
grid: ViewGrid,
|
|
33
|
+
'side-by-side': ViewSideBySide,
|
|
34
|
+
};
|
|
19
35
|
|
|
20
36
|
export default function DataViews( {
|
|
21
37
|
view,
|
|
@@ -25,10 +41,12 @@ export default function DataViews( {
|
|
|
25
41
|
searchLabel = undefined,
|
|
26
42
|
actions,
|
|
27
43
|
data,
|
|
44
|
+
getItemId,
|
|
28
45
|
isLoading = false,
|
|
29
46
|
paginationInfo,
|
|
47
|
+
supportedLayouts,
|
|
30
48
|
} ) {
|
|
31
|
-
const ViewComponent = view.type
|
|
49
|
+
const ViewComponent = viewTypeMap[ view.type ];
|
|
32
50
|
const _fields = useMemo( () => {
|
|
33
51
|
return fields.map( ( field ) => ( {
|
|
34
52
|
...field,
|
|
@@ -38,8 +56,8 @@ export default function DataViews( {
|
|
|
38
56
|
return (
|
|
39
57
|
<div className="dataviews-wrapper">
|
|
40
58
|
<VStack spacing={ 4 } justify="flex-start">
|
|
41
|
-
<HStack>
|
|
42
|
-
<HStack justify="start">
|
|
59
|
+
<HStack alignment="flex-start">
|
|
60
|
+
<HStack justify="start" wrap>
|
|
43
61
|
{ search && (
|
|
44
62
|
<Search
|
|
45
63
|
label={ searchLabel }
|
|
@@ -53,13 +71,12 @@ export default function DataViews( {
|
|
|
53
71
|
onChangeView={ onChangeView }
|
|
54
72
|
/>
|
|
55
73
|
</HStack>
|
|
56
|
-
<
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</HStack>
|
|
74
|
+
<ViewActions
|
|
75
|
+
fields={ fields }
|
|
76
|
+
view={ view }
|
|
77
|
+
onChangeView={ onChangeView }
|
|
78
|
+
supportedLayouts={ supportedLayouts }
|
|
79
|
+
/>
|
|
63
80
|
</HStack>
|
|
64
81
|
<ViewComponent
|
|
65
82
|
fields={ _fields }
|
|
@@ -68,6 +85,7 @@ export default function DataViews( {
|
|
|
68
85
|
paginationInfo={ paginationInfo }
|
|
69
86
|
actions={ actions }
|
|
70
87
|
data={ data }
|
|
88
|
+
getItemId={ getItemId }
|
|
71
89
|
isLoading={ isLoading }
|
|
72
90
|
/>
|
|
73
91
|
<Pagination
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
Button,
|
|
6
|
+
privateApis as componentsPrivateApis,
|
|
7
|
+
Icon,
|
|
8
|
+
} from '@wordpress/components';
|
|
9
|
+
import { chevronDown } from '@wordpress/icons';
|
|
10
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
import { OPERATOR_IN } from './constants';
|
|
16
|
+
import { unlock } from '../../lock-unlock';
|
|
17
|
+
|
|
18
|
+
const {
|
|
19
|
+
DropdownMenuV2: DropdownMenu,
|
|
20
|
+
DropdownMenuCheckboxItemV2: DropdownMenuCheckboxItem,
|
|
21
|
+
} = unlock( componentsPrivateApis );
|
|
22
|
+
|
|
23
|
+
export default function FilterSummary( { filter, view, onChangeView } ) {
|
|
24
|
+
const filterInView = view.filters.find( ( f ) => f.field === filter.field );
|
|
25
|
+
const activeElement = filter.elements.find(
|
|
26
|
+
( element ) => element.value === filterInView?.value
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<DropdownMenu
|
|
31
|
+
key={ filter.field }
|
|
32
|
+
trigger={
|
|
33
|
+
<Button variant="tertiary" size="compact" label={ filter.name }>
|
|
34
|
+
{ activeElement !== undefined
|
|
35
|
+
? sprintf(
|
|
36
|
+
/* translators: 1: Filter name. 2: filter value. e.g.: "Author is Admin". */
|
|
37
|
+
__( '%1$s is %2$s' ),
|
|
38
|
+
filter.name,
|
|
39
|
+
activeElement.label
|
|
40
|
+
)
|
|
41
|
+
: filter.name }
|
|
42
|
+
<Icon icon={ chevronDown } style={ { flexShrink: 0 } } />
|
|
43
|
+
</Button>
|
|
44
|
+
}
|
|
45
|
+
>
|
|
46
|
+
{ filter.elements.map( ( element ) => {
|
|
47
|
+
return (
|
|
48
|
+
<DropdownMenuCheckboxItem
|
|
49
|
+
key={ element.value }
|
|
50
|
+
value={ element.value }
|
|
51
|
+
checked={ activeElement?.value === element.value }
|
|
52
|
+
onSelect={ () =>
|
|
53
|
+
onChangeView( ( currentView ) => ( {
|
|
54
|
+
...currentView,
|
|
55
|
+
page: 1,
|
|
56
|
+
filters: [
|
|
57
|
+
...view.filters.filter(
|
|
58
|
+
( f ) => f.field !== filter.field
|
|
59
|
+
),
|
|
60
|
+
{
|
|
61
|
+
field: filter.field,
|
|
62
|
+
operator: OPERATOR_IN,
|
|
63
|
+
value:
|
|
64
|
+
activeElement?.value ===
|
|
65
|
+
element.value
|
|
66
|
+
? undefined
|
|
67
|
+
: element.value,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
} ) )
|
|
71
|
+
}
|
|
72
|
+
>
|
|
73
|
+
{ element.label }
|
|
74
|
+
</DropdownMenuCheckboxItem>
|
|
75
|
+
);
|
|
76
|
+
} ) }
|
|
77
|
+
</DropdownMenu>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
@@ -1,75 +1,65 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { __ } from '@wordpress/i18n';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* Internal dependencies
|
|
8
3
|
*/
|
|
9
|
-
import
|
|
4
|
+
import FilterSummary from './filter-summary';
|
|
5
|
+
import AddFilter from './add-filter';
|
|
6
|
+
import ResetFilters from './reset-filters';
|
|
7
|
+
import { ENUMERATION_TYPE, OPERATOR_IN } from './constants';
|
|
10
8
|
|
|
11
9
|
export default function Filters( { fields, view, onChangeView } ) {
|
|
12
|
-
const
|
|
10
|
+
const filters = [];
|
|
13
11
|
fields.forEach( ( field ) => {
|
|
14
|
-
if ( ! field.
|
|
12
|
+
if ( ! field.type ) {
|
|
15
13
|
return;
|
|
16
14
|
}
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
id,
|
|
16
|
+
switch ( field.type ) {
|
|
17
|
+
case ENUMERATION_TYPE:
|
|
18
|
+
filters.push( {
|
|
19
|
+
field: field.id,
|
|
23
20
|
name: field.header,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
elements: field.elements || [],
|
|
22
|
+
isVisible: view.filters.some(
|
|
23
|
+
( f ) =>
|
|
24
|
+
f.field === field.id && f.operator === OPERATOR_IN
|
|
25
|
+
),
|
|
26
|
+
} );
|
|
27
|
+
}
|
|
28
|
+
} );
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
name: filter.name || field.header,
|
|
33
|
-
type: filter.type,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
30
|
+
const filterComponents = filters.map( ( filter ) => {
|
|
31
|
+
if ( ! filter.isVisible ) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
filterIndex[ id ] = {
|
|
46
|
-
...filterIndex[ id ],
|
|
47
|
-
elements,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
} );
|
|
35
|
+
return (
|
|
36
|
+
<FilterSummary
|
|
37
|
+
key={ filter.field + '.' + filter.operator }
|
|
38
|
+
filter={ filter }
|
|
39
|
+
view={ view }
|
|
40
|
+
onChangeView={ onChangeView }
|
|
41
|
+
/>
|
|
42
|
+
);
|
|
51
43
|
} );
|
|
52
44
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
filterComponents.push(
|
|
46
|
+
<AddFilter
|
|
47
|
+
key="add-filter"
|
|
48
|
+
fields={ fields }
|
|
49
|
+
view={ view }
|
|
50
|
+
onChangeView={ onChangeView }
|
|
51
|
+
/>
|
|
52
|
+
);
|
|
60
53
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
54
|
+
if ( filterComponents.length > 1 ) {
|
|
55
|
+
filterComponents.push(
|
|
56
|
+
<ResetFilters
|
|
57
|
+
key="reset-filters"
|
|
58
|
+
view={ view }
|
|
59
|
+
onChangeView={ onChangeView }
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
71
63
|
|
|
72
|
-
|
|
73
|
-
} ) || __( 'No filters available' )
|
|
74
|
-
);
|
|
64
|
+
return filterComponents;
|
|
75
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as DataViews } from './dataviews';
|
|
1
|
+
export { default as DataViews, viewTypeSupportsMap } from './dataviews';
|