@wordpress/dataviews 3.0.0 → 4.1.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 +21 -3
- package/README.md +19 -4
- package/build/components/dataform/index.js +27 -0
- package/build/components/dataform/index.js.map +1 -0
- package/build/components/dataviews/index.js +126 -0
- package/build/components/dataviews/index.js.map +1 -0
- package/build/{bulk-actions.js → components/dataviews-bulk-actions/index.js} +42 -16
- package/build/components/dataviews-bulk-actions/index.js.map +1 -0
- package/build/{bulk-actions-toolbar.js → components/dataviews-bulk-actions-toolbar/index.js} +36 -19
- package/build/components/dataviews-bulk-actions-toolbar/index.js.map +1 -0
- package/build/components/dataviews-context/index.js +36 -0
- package/build/components/dataviews-context/index.js.map +1 -0
- package/build/{add-filter.js → components/dataviews-filters/add-filter.js} +35 -18
- package/build/components/dataviews-filters/add-filter.js.map +1 -0
- package/build/{filter-summary.js → components/dataviews-filters/filter-summary.js} +9 -9
- package/build/components/dataviews-filters/filter-summary.js.map +1 -0
- package/build/components/dataviews-filters/index.js +164 -0
- package/build/components/dataviews-filters/index.js.map +1 -0
- package/build/components/dataviews-filters/reset-filters.js.map +1 -0
- package/build/{search-widget.js → components/dataviews-filters/search-widget.js} +13 -13
- package/build/components/dataviews-filters/search-widget.js.map +1 -0
- package/build/{item-actions.js → components/dataviews-item-actions/index.js} +2 -2
- package/build/components/dataviews-item-actions/index.js.map +1 -0
- package/build/components/dataviews-layout/index.js +53 -0
- package/build/components/dataviews-layout/index.js.map +1 -0
- package/build/{pagination.js → components/dataviews-pagination/index.js} +16 -13
- package/build/components/dataviews-pagination/index.js.map +1 -0
- package/build/{search.js → components/dataviews-search/index.js} +18 -11
- package/build/components/dataviews-search/index.js.map +1 -0
- package/build/{single-selection-checkbox.js → components/dataviews-selection-checkbox/index.js} +6 -6
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -0
- package/build/components/dataviews-view-config/index.js +298 -0
- package/build/components/dataviews-view-config/index.js.map +1 -0
- package/build/constants.js +6 -1
- package/build/constants.js.map +1 -1
- package/build/dataforms-layouts/index.js +24 -0
- package/build/dataforms-layouts/index.js.map +1 -0
- package/build/dataforms-layouts/panel/index.js +129 -0
- package/build/dataforms-layouts/panel/index.js.map +1 -0
- package/build/dataforms-layouts/regular/index.js +39 -0
- package/build/dataforms-layouts/regular/index.js.map +1 -0
- package/build/dataviews-layouts/grid/density-picker.js +143 -0
- package/build/dataviews-layouts/grid/density-picker.js.map +1 -0
- package/build/{view-grid.js → dataviews-layouts/grid/index.js} +40 -41
- package/build/dataviews-layouts/grid/index.js.map +1 -0
- package/build/dataviews-layouts/index.js +52 -0
- package/build/dataviews-layouts/index.js.map +1 -0
- package/build/{view-list.js → dataviews-layouts/list/index.js} +26 -23
- package/build/dataviews-layouts/list/index.js.map +1 -0
- package/build/dataviews-layouts/table/column-header-menu.js +196 -0
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -0
- package/build/dataviews-layouts/table/index.js +350 -0
- package/build/dataviews-layouts/table/index.js.map +1 -0
- package/build/field-types/index.js +46 -0
- package/build/field-types/index.js.map +1 -0
- package/build/field-types/integer.js +94 -0
- package/build/field-types/integer.js.map +1 -0
- package/build/field-types/text.js +87 -0
- package/build/field-types/text.js.map +1 -0
- package/build/filter-and-sort-data-view.js +2 -11
- package/build/filter-and-sort-data-view.js.map +1 -1
- package/build/index.js +11 -4
- package/build/index.js.map +1 -1
- package/build/normalize-fields.js +36 -2
- package/build/normalize-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/validation.js +22 -0
- package/build/validation.js.map +1 -0
- package/build-module/components/dataform/index.js +21 -0
- package/build-module/components/dataform/index.js.map +1 -0
- package/build-module/components/dataviews/index.js +117 -0
- package/build-module/components/dataviews/index.js.map +1 -0
- package/build-module/{bulk-actions.js → components/dataviews-bulk-actions/index.js} +42 -17
- package/build-module/components/dataviews-bulk-actions/index.js.map +1 -0
- package/build-module/{bulk-actions-toolbar.js → components/dataviews-bulk-actions-toolbar/index.js} +35 -19
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +1 -0
- package/build-module/components/dataviews-context/index.js +30 -0
- package/build-module/components/dataviews-context/index.js.map +1 -0
- package/build-module/{add-filter.js → components/dataviews-filters/add-filter.js} +34 -18
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -0
- package/build-module/{filter-summary.js → components/dataviews-filters/filter-summary.js} +9 -9
- package/build-module/components/dataviews-filters/filter-summary.js.map +1 -0
- package/build-module/components/dataviews-filters/index.js +153 -0
- package/build-module/components/dataviews-filters/index.js.map +1 -0
- package/build-module/components/dataviews-filters/reset-filters.js.map +1 -0
- package/build-module/{search-widget.js → components/dataviews-filters/search-widget.js} +13 -13
- package/build-module/components/dataviews-filters/search-widget.js.map +1 -0
- package/build-module/{item-actions.js → components/dataviews-item-actions/index.js} +2 -2
- package/build-module/components/dataviews-item-actions/index.js.map +1 -0
- package/build-module/components/dataviews-layout/index.js +45 -0
- package/build-module/components/dataviews-layout/index.js.map +1 -0
- package/build-module/{pagination.js → components/dataviews-pagination/index.js} +17 -15
- package/build-module/components/dataviews-pagination/index.js.map +1 -0
- package/build-module/{search.js → components/dataviews-search/index.js} +18 -12
- package/build-module/components/dataviews-search/index.js.map +1 -0
- package/build-module/{single-selection-checkbox.js → components/dataviews-selection-checkbox/index.js} +5 -5
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -0
- package/build-module/components/dataviews-view-config/index.js +292 -0
- package/build-module/components/dataviews-view-config/index.js.map +1 -0
- package/build-module/constants.js +5 -0
- package/build-module/constants.js.map +1 -1
- package/build-module/dataforms-layouts/index.js +16 -0
- package/build-module/dataforms-layouts/index.js.map +1 -0
- package/build-module/dataforms-layouts/panel/index.js +124 -0
- package/build-module/dataforms-layouts/panel/index.js.map +1 -0
- package/build-module/dataforms-layouts/regular/index.js +32 -0
- package/build-module/dataforms-layouts/regular/index.js.map +1 -0
- package/build-module/dataviews-layouts/grid/density-picker.js +138 -0
- package/build-module/dataviews-layouts/grid/density-picker.js.map +1 -0
- package/build-module/{view-grid.js → dataviews-layouts/grid/index.js} +38 -39
- package/build-module/dataviews-layouts/grid/index.js.map +1 -0
- package/build-module/dataviews-layouts/index.js +43 -0
- package/build-module/dataviews-layouts/index.js.map +1 -0
- package/build-module/{view-list.js → dataviews-layouts/list/index.js} +24 -21
- package/build-module/dataviews-layouts/list/index.js.map +1 -0
- package/build-module/dataviews-layouts/table/column-header-menu.js +190 -0
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -0
- package/build-module/dataviews-layouts/table/index.js +344 -0
- package/build-module/dataviews-layouts/table/index.js.map +1 -0
- package/build-module/field-types/index.js +40 -0
- package/build-module/field-types/index.js.map +1 -0
- package/build-module/field-types/integer.js +87 -0
- package/build-module/field-types/integer.js.map +1 -0
- package/build-module/field-types/text.js +80 -0
- package/build-module/field-types/text.js.map +1 -0
- package/build-module/filter-and-sort-data-view.js +2 -11
- package/build-module/filter-and-sort-data-view.js.map +1 -1
- package/build-module/index.js +4 -3
- package/build-module/index.js.map +1 -1
- package/build-module/normalize-fields.js +35 -3
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/validation.js +15 -0
- package/build-module/validation.js.map +1 -0
- package/build-style/style-rtl.css +763 -532
- package/build-style/style.css +763 -532
- package/build-types/components/dataform/index.d.ts +6 -0
- package/build-types/components/dataform/index.d.ts.map +1 -0
- package/build-types/components/dataform/stories/index.story.d.ts +22 -0
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -0
- package/build-types/{dataviews.d.ts → components/dataviews/index.d.ts} +9 -7
- package/build-types/components/dataviews/index.d.ts.map +1 -0
- package/build-types/{stories → components/dataviews/stories}/fixtures.d.ts +13 -19
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -0
- package/build-types/components/dataviews/stories/index.story.d.ts +46 -0
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -0
- package/build-types/components/dataviews-bulk-actions/index.d.ts +5 -0
- package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -0
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +2 -0
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +1 -0
- package/build-types/components/dataviews-context/index.d.ts +26 -0
- package/build-types/components/dataviews-context/index.d.ts.map +1 -0
- package/build-types/{add-filter.d.ts → components/dataviews-filters/add-filter.d.ts} +4 -2
- package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -0
- package/build-types/{filter-summary.d.ts → components/dataviews-filters/filter-summary.d.ts} +1 -1
- package/build-types/components/dataviews-filters/filter-summary.d.ts.map +1 -0
- package/build-types/components/dataviews-filters/index.d.ts +14 -0
- package/build-types/components/dataviews-filters/index.d.ts.map +1 -0
- package/build-types/{reset-filters.d.ts → components/dataviews-filters/reset-filters.d.ts} +1 -2
- package/build-types/components/dataviews-filters/reset-filters.d.ts.map +1 -0
- package/build-types/{search-widget.d.ts → components/dataviews-filters/search-widget.d.ts} +1 -2
- package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -0
- package/build-types/{item-actions.d.ts → components/dataviews-item-actions/index.d.ts} +2 -2
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -0
- package/build-types/components/dataviews-layout/index.d.ts +2 -0
- package/build-types/components/dataviews-layout/index.d.ts.map +1 -0
- package/build-types/components/dataviews-pagination/index.d.ts +4 -0
- package/build-types/components/dataviews-pagination/index.d.ts.map +1 -0
- package/build-types/components/dataviews-search/index.d.ts +6 -0
- package/build-types/components/dataviews-search/index.d.ts.map +1 -0
- package/build-types/components/dataviews-selection-checkbox/index.d.ts +16 -0
- package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -0
- package/build-types/components/dataviews-view-config/index.d.ts +8 -0
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -0
- package/build-types/constants.d.ts +4 -0
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataforms-layouts/index.d.ts +9 -0
- package/build-types/dataforms-layouts/index.d.ts.map +1 -0
- package/build-types/dataforms-layouts/panel/index.d.ts +3 -0
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -0
- package/build-types/dataforms-layouts/regular/index.d.ts +3 -0
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/grid/density-picker.d.ts +5 -0
- package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +1 -0
- package/build-types/dataviews-layouts/grid/index.d.ts +3 -0
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -0
- package/build-types/{layouts.d.ts → dataviews-layouts/index.d.ts} +6 -5
- package/build-types/dataviews-layouts/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/list/index.d.ts +3 -0
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts +17 -0
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -0
- package/build-types/dataviews-layouts/table/index.d.ts +4 -0
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts +20 -0
- package/build-types/field-types/index.d.ts.map +1 -0
- package/build-types/field-types/integer.d.ts +14 -0
- package/build-types/field-types/integer.d.ts.map +1 -0
- package/build-types/field-types/text.d.ts +14 -0
- package/build-types/field-types/text.d.ts.map +1 -0
- package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
- package/build-types/index.d.ts +4 -3
- package/build-types/index.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts +0 -3
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/types.d.ts +73 -19
- package/build-types/types.d.ts.map +1 -1
- package/build-types/validation.d.ts +3 -0
- package/build-types/validation.d.ts.map +1 -0
- package/package.json +12 -11
- package/src/components/dataform/index.tsx +17 -0
- package/src/components/dataform/stories/index.story.tsx +79 -0
- package/src/components/dataviews/index.tsx +161 -0
- package/src/{stories → components/dataviews/stories}/fixtures.js +8 -11
- package/src/{stories → components/dataviews/stories}/index.story.js +17 -3
- package/src/components/dataviews/style.scss +100 -0
- package/src/{bulk-actions.tsx → components/dataviews-bulk-actions/index.tsx} +51 -29
- package/src/components/dataviews-bulk-actions/style.scss +7 -0
- package/src/{bulk-actions-toolbar.tsx → components/dataviews-bulk-actions-toolbar/index.tsx} +42 -30
- package/src/components/dataviews-bulk-actions-toolbar/style.scss +45 -0
- package/src/components/dataviews-context/index.ts +49 -0
- package/src/{add-filter.tsx → components/dataviews-filters/add-filter.tsx} +39 -23
- package/src/{filter-summary.tsx → components/dataviews-filters/filter-summary.tsx} +18 -10
- package/src/components/dataviews-filters/index.tsx +199 -0
- package/src/{reset-filters.tsx → components/dataviews-filters/reset-filters.tsx} +1 -1
- package/src/{search-widget.tsx → components/dataviews-filters/search-widget.tsx} +14 -14
- package/src/components/dataviews-filters/style.scss +282 -0
- package/src/{item-actions.tsx → components/dataviews-item-actions/index.tsx} +2 -2
- package/src/components/dataviews-item-actions/style.scss +3 -0
- package/src/components/dataviews-layout/index.tsx +51 -0
- package/src/{pagination.tsx → components/dataviews-pagination/index.tsx} +13 -21
- package/src/components/dataviews-pagination/style.scss +26 -0
- package/src/{search.tsx → components/dataviews-search/index.tsx} +13 -15
- package/src/{single-selection-checkbox.tsx → components/dataviews-selection-checkbox/index.tsx} +9 -9
- package/src/components/dataviews-selection-checkbox/style.scss +14 -0
- package/src/components/dataviews-view-config/index.tsx +358 -0
- package/src/components/dataviews-view-config/style.scss +44 -0
- package/src/constants.ts +5 -0
- package/src/dataforms-layouts/index.tsx +20 -0
- package/src/dataforms-layouts/panel/index.tsx +164 -0
- package/src/dataforms-layouts/panel/style.scss +59 -0
- package/src/dataforms-layouts/regular/index.tsx +41 -0
- package/src/dataviews-layouts/grid/density-picker.tsx +136 -0
- package/src/{view-grid.tsx → dataviews-layouts/grid/index.tsx} +35 -36
- package/src/dataviews-layouts/grid/style.scss +169 -0
- package/src/dataviews-layouts/index.ts +66 -0
- package/src/{view-list.tsx → dataviews-layouts/list/index.tsx} +30 -17
- package/src/dataviews-layouts/list/style.scss +192 -0
- package/src/dataviews-layouts/table/column-header-menu.tsx +268 -0
- package/src/dataviews-layouts/table/index.tsx +471 -0
- package/src/dataviews-layouts/table/style.scss +201 -0
- package/src/field-types/index.tsx +45 -0
- package/src/field-types/integer.tsx +103 -0
- package/src/field-types/text.tsx +95 -0
- package/src/filter-and-sort-data-view.ts +1 -15
- package/src/index.ts +4 -3
- package/src/normalize-fields.ts +45 -4
- package/src/style.scss +14 -907
- package/src/test/filter-and-sort-data-view.js +47 -4
- package/src/test/validation.ts +131 -0
- package/src/types.ts +88 -17
- package/src/validation.ts +18 -0
- package/tsconfig.json +2 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/add-filter.js.map +0 -1
- package/build/bulk-actions-toolbar.js.map +0 -1
- package/build/bulk-actions.js.map +0 -1
- package/build/dataform.js +0 -78
- package/build/dataform.js.map +0 -1
- package/build/dataviews.js +0 -125
- package/build/dataviews.js.map +0 -1
- package/build/filter-summary.js.map +0 -1
- package/build/filters.js +0 -102
- package/build/filters.js.map +0 -1
- package/build/item-actions.js.map +0 -1
- package/build/layouts.js +0 -38
- package/build/layouts.js.map +0 -1
- package/build/pagination.js.map +0 -1
- package/build/reset-filters.js.map +0 -1
- package/build/search-widget.js.map +0 -1
- package/build/search.js.map +0 -1
- package/build/single-selection-checkbox.js.map +0 -1
- package/build/view-actions.js +0 -260
- package/build/view-actions.js.map +0 -1
- package/build/view-grid.js.map +0 -1
- package/build/view-list.js.map +0 -1
- package/build/view-table.js +0 -400
- package/build/view-table.js.map +0 -1
- package/build-module/add-filter.js.map +0 -1
- package/build-module/bulk-actions-toolbar.js.map +0 -1
- package/build-module/bulk-actions.js.map +0 -1
- package/build-module/dataform.js +0 -72
- package/build-module/dataform.js.map +0 -1
- package/build-module/dataviews.js +0 -116
- package/build-module/dataviews.js.map +0 -1
- package/build-module/filter-summary.js.map +0 -1
- package/build-module/filters.js +0 -94
- package/build-module/filters.js.map +0 -1
- package/build-module/item-actions.js.map +0 -1
- package/build-module/layouts.js +0 -30
- package/build-module/layouts.js.map +0 -1
- package/build-module/pagination.js.map +0 -1
- package/build-module/reset-filters.js.map +0 -1
- package/build-module/search-widget.js.map +0 -1
- package/build-module/search.js.map +0 -1
- package/build-module/single-selection-checkbox.js.map +0 -1
- package/build-module/view-actions.js +0 -255
- package/build-module/view-actions.js.map +0 -1
- package/build-module/view-grid.js.map +0 -1
- package/build-module/view-list.js.map +0 -1
- package/build-module/view-table.js +0 -393
- package/build-module/view-table.js.map +0 -1
- package/build-types/add-filter.d.ts.map +0 -1
- package/build-types/bulk-actions-toolbar.d.ts +0 -13
- package/build-types/bulk-actions-toolbar.d.ts.map +0 -1
- package/build-types/bulk-actions.d.ts +0 -15
- package/build-types/bulk-actions.d.ts.map +0 -1
- package/build-types/dataform.d.ts +0 -17
- package/build-types/dataform.d.ts.map +0 -1
- package/build-types/dataviews.d.ts.map +0 -1
- package/build-types/filter-summary.d.ts.map +0 -1
- package/build-types/filters.d.ts +0 -13
- package/build-types/filters.d.ts.map +0 -1
- package/build-types/item-actions.d.ts.map +0 -1
- package/build-types/layouts.d.ts.map +0 -1
- package/build-types/pagination.d.ts +0 -16
- package/build-types/pagination.d.ts.map +0 -1
- package/build-types/reset-filters.d.ts.map +0 -1
- package/build-types/search-widget.d.ts.map +0 -1
- package/build-types/search.d.ts +0 -13
- package/build-types/search.d.ts.map +0 -1
- package/build-types/single-selection-checkbox.d.ts +0 -17
- package/build-types/single-selection-checkbox.d.ts.map +0 -1
- package/build-types/stories/fixtures.d.ts.map +0 -1
- package/build-types/stories/index.story.d.ts +0 -29
- package/build-types/stories/index.story.d.ts.map +0 -1
- package/build-types/view-actions.d.ts +0 -12
- package/build-types/view-actions.d.ts.map +0 -1
- package/build-types/view-grid.d.ts +0 -4
- package/build-types/view-grid.d.ts.map +0 -1
- package/build-types/view-list.d.ts +0 -4
- package/build-types/view-list.d.ts.map +0 -1
- package/build-types/view-table.d.ts +0 -5
- package/build-types/view-table.d.ts.map +0 -1
- package/src/dataform.tsx +0 -106
- package/src/dataviews.tsx +0 -183
- package/src/filters.tsx +0 -125
- package/src/layouts.ts +0 -39
- package/src/view-actions.tsx +0 -350
- package/src/view-table.tsx +0 -592
- /package/build/{reset-filters.js → components/dataviews-filters/reset-filters.js} +0 -0
- /package/build-module/{reset-filters.js → components/dataviews-filters/reset-filters.js} +0 -0
|
@@ -6,10 +6,10 @@ import { useState, useMemo } from '@wordpress/element';
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
|
-
import
|
|
9
|
+
import DataViews from '../index';
|
|
10
10
|
import { DEFAULT_VIEW, actions, data, fields } from './fixtures';
|
|
11
|
-
import { LAYOUT_GRID, LAYOUT_TABLE } from '
|
|
12
|
-
import { filterSortAndPaginate } from '
|
|
11
|
+
import { LAYOUT_GRID, LAYOUT_TABLE } from '../../../constants';
|
|
12
|
+
import { filterSortAndPaginate } from '../../../filter-and-sort-data-view';
|
|
13
13
|
|
|
14
14
|
const meta = {
|
|
15
15
|
title: 'DataViews/DataViews',
|
|
@@ -39,6 +39,20 @@ Default.args = {
|
|
|
39
39
|
[ LAYOUT_TABLE ]: {
|
|
40
40
|
layout: {
|
|
41
41
|
primaryField: 'title',
|
|
42
|
+
styles: {
|
|
43
|
+
image: {
|
|
44
|
+
width: 50,
|
|
45
|
+
},
|
|
46
|
+
title: {
|
|
47
|
+
maxWidth: 400,
|
|
48
|
+
},
|
|
49
|
+
type: {
|
|
50
|
+
maxWidth: 400,
|
|
51
|
+
},
|
|
52
|
+
description: {
|
|
53
|
+
maxWidth: 200,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
42
56
|
},
|
|
43
57
|
},
|
|
44
58
|
[ LAYOUT_GRID ]: {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
.dataviews-wrapper {
|
|
2
|
+
height: 100%;
|
|
3
|
+
overflow: auto;
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
scroll-padding-bottom: $grid-unit-80;
|
|
6
|
+
/* stylelint-disable-next-line property-no-unknown -- '@container' not globally permitted */
|
|
7
|
+
container: dataviews-wrapper / inline-size;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.dataviews__view-actions,
|
|
13
|
+
.dataviews-filters__container {
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
padding: $grid-unit-20 $grid-unit-60;
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
position: sticky;
|
|
18
|
+
left: 0;
|
|
19
|
+
transition: padding ease-out 0.1s;
|
|
20
|
+
@include reduce-motion("transition");
|
|
21
|
+
|
|
22
|
+
.components-search-control {
|
|
23
|
+
.components-base-control__field {
|
|
24
|
+
max-width: 240px;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.dataviews-view-list__primary-field,
|
|
30
|
+
.dataviews-view-grid__primary-field,
|
|
31
|
+
.dataviews-view-table__primary-field {
|
|
32
|
+
font-size: $default-font-size;
|
|
33
|
+
font-weight: 500;
|
|
34
|
+
color: $gray-700;
|
|
35
|
+
text-overflow: ellipsis;
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
width: 100%;
|
|
38
|
+
|
|
39
|
+
a {
|
|
40
|
+
text-decoration: none;
|
|
41
|
+
text-overflow: ellipsis;
|
|
42
|
+
white-space: nowrap;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
display: block;
|
|
45
|
+
flex-grow: 0;
|
|
46
|
+
color: $gray-900;
|
|
47
|
+
|
|
48
|
+
&:hover {
|
|
49
|
+
color: var(--wp-admin-theme-color);
|
|
50
|
+
}
|
|
51
|
+
@include link-reset();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
button.components-button.is-link {
|
|
55
|
+
text-decoration: none;
|
|
56
|
+
font-weight: inherit;
|
|
57
|
+
text-overflow: ellipsis;
|
|
58
|
+
white-space: nowrap;
|
|
59
|
+
overflow: hidden;
|
|
60
|
+
display: block;
|
|
61
|
+
width: 100%;
|
|
62
|
+
color: $gray-900;
|
|
63
|
+
&:hover {
|
|
64
|
+
color: var(--wp-admin-theme-color);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.dataviews-no-results,
|
|
70
|
+
.dataviews-loading {
|
|
71
|
+
padding: 0 $grid-unit-60;
|
|
72
|
+
flex-grow: 1;
|
|
73
|
+
display: flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
transition: padding ease-out 0.1s;
|
|
77
|
+
@include reduce-motion("transition");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* stylelint-disable-next-line scss/at-rule-no-unknown -- '@container' not globally permitted */
|
|
81
|
+
@container (max-width: 430px) {
|
|
82
|
+
.dataviews__view-actions,
|
|
83
|
+
.dataviews-filters__container {
|
|
84
|
+
padding: $grid-unit-15 $grid-unit-30;
|
|
85
|
+
|
|
86
|
+
.components-search-control {
|
|
87
|
+
.components-base-control__field {
|
|
88
|
+
max-width: 112px;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.dataviews-view-grid,
|
|
94
|
+
.dataviews-no-results,
|
|
95
|
+
.dataviews-loading {
|
|
96
|
+
padding-left: $grid-unit-30;
|
|
97
|
+
padding-right: $grid-unit-30;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
@@ -7,15 +7,16 @@ import {
|
|
|
7
7
|
Modal,
|
|
8
8
|
} from '@wordpress/components';
|
|
9
9
|
import { __, sprintf, _n } from '@wordpress/i18n';
|
|
10
|
-
import { useMemo, useState, useCallback } from '@wordpress/element';
|
|
10
|
+
import { useMemo, useState, useCallback, useContext } from '@wordpress/element';
|
|
11
11
|
import { useRegistry } from '@wordpress/data';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Internal dependencies
|
|
15
15
|
*/
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
16
|
+
import DataViewsContext from '../dataviews-context';
|
|
17
|
+
import { LAYOUT_TABLE, LAYOUT_GRID } from '../../constants';
|
|
18
|
+
import { unlock } from '../../lock-unlock';
|
|
19
|
+
import type { Action, ActionModal } from '../../types';
|
|
19
20
|
|
|
20
21
|
const {
|
|
21
22
|
DropdownMenuV2: DropdownMenu,
|
|
@@ -43,14 +44,6 @@ interface ActionsMenuGroupProps< Item > {
|
|
|
43
44
|
setActionWithModal: ( action?: ActionModal< Item > ) => void;
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
interface BulkActionsProps< Item > {
|
|
47
|
-
data: Item[];
|
|
48
|
-
actions: Action< Item >[];
|
|
49
|
-
selection: string[];
|
|
50
|
-
onSelectionChange: SetSelection;
|
|
51
|
-
getItemId: ( item: Item ) => string;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
47
|
export function useHasAPossibleBulkAction< Item >(
|
|
55
48
|
actions: Action< Item >[],
|
|
56
49
|
item: Item
|
|
@@ -96,6 +89,11 @@ function ActionWithModal< Item >( {
|
|
|
96
89
|
const onCloseModal = useCallback( () => {
|
|
97
90
|
setActionWithModal( undefined );
|
|
98
91
|
}, [ setActionWithModal ] );
|
|
92
|
+
|
|
93
|
+
if ( ! eligibleItems.length ) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
|
|
99
97
|
const label =
|
|
100
98
|
typeof action.label === 'string'
|
|
101
99
|
? action.label
|
|
@@ -105,7 +103,7 @@ function ActionWithModal< Item >( {
|
|
|
105
103
|
title={ ! hideModalHeader ? label : undefined }
|
|
106
104
|
__experimentalHideHeader={ !! hideModalHeader }
|
|
107
105
|
onRequestClose={ onCloseModal }
|
|
108
|
-
overlayClassName="dataviews-
|
|
106
|
+
overlayClassName="dataviews-bulk-actions__modal"
|
|
109
107
|
>
|
|
110
108
|
<RenderModal
|
|
111
109
|
items={ eligibleItems }
|
|
@@ -133,7 +131,6 @@ function BulkActionItem< Item >( {
|
|
|
133
131
|
return (
|
|
134
132
|
<DropdownMenuItem
|
|
135
133
|
key={ action.id }
|
|
136
|
-
disabled={ eligibleItems.length === 0 }
|
|
137
134
|
hideOnClick={ ! shouldShowModal }
|
|
138
135
|
onClick={ async () => {
|
|
139
136
|
if ( shouldShowModal ) {
|
|
@@ -142,9 +139,7 @@ function BulkActionItem< Item >( {
|
|
|
142
139
|
action.callback( eligibleItems, { registry } );
|
|
143
140
|
}
|
|
144
141
|
} }
|
|
145
|
-
suffix={
|
|
146
|
-
eligibleItems.length > 0 ? eligibleItems.length : undefined
|
|
147
|
-
}
|
|
142
|
+
suffix={ eligibleItems.length }
|
|
148
143
|
>
|
|
149
144
|
{ action.label }
|
|
150
145
|
</DropdownMenuItem>
|
|
@@ -156,10 +151,20 @@ function ActionsMenuGroup< Item >( {
|
|
|
156
151
|
selectedItems,
|
|
157
152
|
setActionWithModal,
|
|
158
153
|
}: ActionsMenuGroupProps< Item > ) {
|
|
154
|
+
const elligibleActions = useMemo( () => {
|
|
155
|
+
return actions.filter( ( action ) => {
|
|
156
|
+
return selectedItems.some(
|
|
157
|
+
( item ) => ! action.isEligible || action.isEligible( item )
|
|
158
|
+
);
|
|
159
|
+
} );
|
|
160
|
+
}, [ actions, selectedItems ] );
|
|
161
|
+
if ( ! elligibleActions.length ) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
159
164
|
return (
|
|
160
165
|
<>
|
|
161
166
|
<DropdownMenuGroup>
|
|
162
|
-
{
|
|
167
|
+
{ elligibleActions.map( ( action ) => (
|
|
163
168
|
<BulkActionItem
|
|
164
169
|
key={ action.id }
|
|
165
170
|
action={ action }
|
|
@@ -173,20 +178,21 @@ function ActionsMenuGroup< Item >( {
|
|
|
173
178
|
);
|
|
174
179
|
}
|
|
175
180
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
function _BulkActions() {
|
|
182
|
+
const {
|
|
183
|
+
data,
|
|
184
|
+
actions = [],
|
|
185
|
+
selection,
|
|
186
|
+
onChangeSelection,
|
|
187
|
+
getItemId,
|
|
188
|
+
} = useContext( DataViewsContext );
|
|
183
189
|
const bulkActions = useMemo(
|
|
184
190
|
() => actions.filter( ( action ) => action.supportsBulk ),
|
|
185
191
|
[ actions ]
|
|
186
192
|
);
|
|
187
193
|
const [ isMenuOpen, onMenuOpenChange ] = useState( false );
|
|
188
194
|
const [ actionWithModal, setActionWithModal ] = useState<
|
|
189
|
-
ActionModal<
|
|
195
|
+
ActionModal< any > | undefined
|
|
190
196
|
>();
|
|
191
197
|
const selectableItems = useMemo( () => {
|
|
192
198
|
return data.filter( ( item ) => {
|
|
@@ -220,7 +226,7 @@ export default function BulkActions< Item >( {
|
|
|
220
226
|
style={ { minWidth: '240px' } }
|
|
221
227
|
trigger={
|
|
222
228
|
<Button
|
|
223
|
-
className="dataviews-bulk-
|
|
229
|
+
className="dataviews-bulk-actions__edit-button"
|
|
224
230
|
__next40pxDefaultSize
|
|
225
231
|
variant="tertiary"
|
|
226
232
|
size="compact"
|
|
@@ -249,7 +255,7 @@ export default function BulkActions< Item >( {
|
|
|
249
255
|
disabled={ areAllSelected }
|
|
250
256
|
hideOnClick={ false }
|
|
251
257
|
onClick={ () => {
|
|
252
|
-
|
|
258
|
+
onChangeSelection(
|
|
253
259
|
selectableItems.map( ( item ) =>
|
|
254
260
|
getItemId( item )
|
|
255
261
|
)
|
|
@@ -263,7 +269,7 @@ export default function BulkActions< Item >( {
|
|
|
263
269
|
disabled={ selection.length === 0 }
|
|
264
270
|
hideOnClick={ false }
|
|
265
271
|
onClick={ () => {
|
|
266
|
-
|
|
272
|
+
onChangeSelection( [] );
|
|
267
273
|
} }
|
|
268
274
|
>
|
|
269
275
|
{ __( 'Deselect' ) }
|
|
@@ -281,3 +287,19 @@ export default function BulkActions< Item >( {
|
|
|
281
287
|
</>
|
|
282
288
|
);
|
|
283
289
|
}
|
|
290
|
+
|
|
291
|
+
export default function BulkActions() {
|
|
292
|
+
const { data, actions = [], view } = useContext( DataViewsContext );
|
|
293
|
+
const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(
|
|
294
|
+
actions,
|
|
295
|
+
data
|
|
296
|
+
);
|
|
297
|
+
if (
|
|
298
|
+
! [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) ||
|
|
299
|
+
! hasPossibleBulkAction
|
|
300
|
+
) {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return <_BulkActions />;
|
|
305
|
+
}
|
package/src/{bulk-actions-toolbar.tsx → components/dataviews-bulk-actions-toolbar/index.tsx}
RENAMED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
__unstableMotion as motion,
|
|
9
9
|
__unstableAnimatePresence as AnimatePresence,
|
|
10
10
|
} from '@wordpress/components';
|
|
11
|
-
import { useMemo, useState, useRef } from '@wordpress/element';
|
|
11
|
+
import { useMemo, useState, useRef, useContext } from '@wordpress/element';
|
|
12
12
|
import { _n, sprintf, __ } from '@wordpress/i18n';
|
|
13
13
|
import { closeSmall } from '@wordpress/icons';
|
|
14
14
|
import { useReducedMotion } from '@wordpress/compose';
|
|
@@ -17,10 +17,13 @@ import { useRegistry } from '@wordpress/data';
|
|
|
17
17
|
/**
|
|
18
18
|
* Internal dependencies
|
|
19
19
|
*/
|
|
20
|
-
import {
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
20
|
+
import { useSomeItemHasAPossibleBulkAction } from '../dataviews-bulk-actions';
|
|
21
|
+
import DataViewsContext from '../dataviews-context';
|
|
22
|
+
import { ActionWithModal } from '../dataviews-item-actions';
|
|
23
|
+
import { LAYOUT_GRID, LAYOUT_TABLE } from '../../constants';
|
|
24
|
+
import type { Action } from '../../types';
|
|
25
|
+
import type { ActionTriggerProps } from '../dataviews-item-actions';
|
|
26
|
+
import type { SetSelection } from '../../private-types';
|
|
24
27
|
|
|
25
28
|
interface ActionButtonProps< Item > {
|
|
26
29
|
action: Action< Item >;
|
|
@@ -33,15 +36,7 @@ interface ToolbarContentProps< Item > {
|
|
|
33
36
|
selection: string[];
|
|
34
37
|
actionsToShow: Action< Item >[];
|
|
35
38
|
selectedItems: Item[];
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
interface BulkActionsToolbarProps< Item > {
|
|
40
|
-
data: Item[];
|
|
41
|
-
selection: string[];
|
|
42
|
-
actions: Action< Item >[];
|
|
43
|
-
onSelectionChange: SetSelection;
|
|
44
|
-
getItemId: ( item: Item ) => string;
|
|
39
|
+
onChangeSelection: SetSelection;
|
|
45
40
|
}
|
|
46
41
|
|
|
47
42
|
const SNACKBAR_VARIANTS = {
|
|
@@ -131,12 +126,12 @@ function renderToolbarContent< Item >(
|
|
|
131
126
|
selectedItems: Item[],
|
|
132
127
|
actionInProgress: string | null,
|
|
133
128
|
setActionInProgress: ( actionId: string | null ) => void,
|
|
134
|
-
|
|
129
|
+
onChangeSelection: SetSelection
|
|
135
130
|
) {
|
|
136
131
|
return (
|
|
137
132
|
<>
|
|
138
133
|
<ToolbarGroup>
|
|
139
|
-
<div className="dataviews-bulk-
|
|
134
|
+
<div className="dataviews-bulk-actions-toolbar__selection-count">
|
|
140
135
|
{ selection.length === 1
|
|
141
136
|
? __( '1 item selected' )
|
|
142
137
|
: sprintf(
|
|
@@ -171,7 +166,7 @@ function renderToolbarContent< Item >(
|
|
|
171
166
|
label={ __( 'Cancel' ) }
|
|
172
167
|
disabled={ !! actionInProgress }
|
|
173
168
|
onClick={ () => {
|
|
174
|
-
|
|
169
|
+
onChangeSelection( EMPTY_ARRAY );
|
|
175
170
|
} }
|
|
176
171
|
/>
|
|
177
172
|
</ToolbarGroup>
|
|
@@ -183,7 +178,7 @@ function ToolbarContent< Item >( {
|
|
|
183
178
|
selection,
|
|
184
179
|
actionsToShow,
|
|
185
180
|
selectedItems,
|
|
186
|
-
|
|
181
|
+
onChangeSelection,
|
|
187
182
|
}: ToolbarContentProps< Item > ) {
|
|
188
183
|
const [ actionInProgress, setActionInProgress ] = useState< string | null >(
|
|
189
184
|
null
|
|
@@ -199,7 +194,7 @@ function ToolbarContent< Item >( {
|
|
|
199
194
|
selectedItems,
|
|
200
195
|
actionInProgress,
|
|
201
196
|
setActionInProgress,
|
|
202
|
-
|
|
197
|
+
onChangeSelection
|
|
203
198
|
);
|
|
204
199
|
} else if ( ! buttons.current ) {
|
|
205
200
|
buttons.current = renderToolbarContent(
|
|
@@ -208,19 +203,20 @@ function ToolbarContent< Item >( {
|
|
|
208
203
|
selectedItems,
|
|
209
204
|
actionInProgress,
|
|
210
205
|
setActionInProgress,
|
|
211
|
-
|
|
206
|
+
onChangeSelection
|
|
212
207
|
);
|
|
213
208
|
}
|
|
214
209
|
return buttons.current;
|
|
215
210
|
}
|
|
216
211
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
212
|
+
function _BulkActionsToolbar() {
|
|
213
|
+
const {
|
|
214
|
+
data,
|
|
215
|
+
selection,
|
|
216
|
+
actions = EMPTY_ARRAY,
|
|
217
|
+
onChangeSelection,
|
|
218
|
+
getItemId,
|
|
219
|
+
} = useContext( DataViewsContext );
|
|
224
220
|
const isReducedMotion = useReducedMotion();
|
|
225
221
|
const selectedItems = useMemo( () => {
|
|
226
222
|
return data.filter( ( item ) =>
|
|
@@ -258,15 +254,15 @@ export default function BulkActionsToolbar< Item >( {
|
|
|
258
254
|
animate="open"
|
|
259
255
|
exit="exit"
|
|
260
256
|
variants={ isReducedMotion ? undefined : SNACKBAR_VARIANTS }
|
|
261
|
-
className="dataviews-bulk-actions"
|
|
257
|
+
className="dataviews-bulk-actions-toolbar"
|
|
262
258
|
>
|
|
263
259
|
<Toolbar label={ __( 'Bulk actions' ) }>
|
|
264
|
-
<div className="dataviews-bulk-actions-
|
|
260
|
+
<div className="dataviews-bulk-actions-toolbar__wrapper">
|
|
265
261
|
<ToolbarContent
|
|
266
262
|
selection={ selection }
|
|
267
263
|
actionsToShow={ actionsToShow }
|
|
268
264
|
selectedItems={ selectedItems }
|
|
269
|
-
|
|
265
|
+
onChangeSelection={ onChangeSelection }
|
|
270
266
|
/>
|
|
271
267
|
</div>
|
|
272
268
|
</Toolbar>
|
|
@@ -274,3 +270,19 @@ export default function BulkActionsToolbar< Item >( {
|
|
|
274
270
|
</AnimatePresence>
|
|
275
271
|
);
|
|
276
272
|
}
|
|
273
|
+
|
|
274
|
+
export default function BulkActionsToolbar() {
|
|
275
|
+
const { data, actions = [], view } = useContext( DataViewsContext );
|
|
276
|
+
const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(
|
|
277
|
+
actions,
|
|
278
|
+
data
|
|
279
|
+
);
|
|
280
|
+
if (
|
|
281
|
+
! [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) ||
|
|
282
|
+
! hasPossibleBulkAction
|
|
283
|
+
) {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return <_BulkActionsToolbar />;
|
|
288
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
.dataviews-bulk-actions-toolbar {
|
|
2
|
+
position: sticky;
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
align-content: center;
|
|
6
|
+
flex-wrap: wrap;
|
|
7
|
+
width: fit-content;
|
|
8
|
+
margin-left: auto;
|
|
9
|
+
margin-right: auto;
|
|
10
|
+
bottom: $grid-unit-30;
|
|
11
|
+
z-index: z-index(".dataviews-bulk-actions-toolbar");
|
|
12
|
+
|
|
13
|
+
.components-accessible-toolbar {
|
|
14
|
+
border-color: $gray-300;
|
|
15
|
+
box-shadow: $shadow-popover;
|
|
16
|
+
|
|
17
|
+
.components-toolbar-group {
|
|
18
|
+
border-color: $gray-200;
|
|
19
|
+
|
|
20
|
+
&:last-child {
|
|
21
|
+
border: 0;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.dataviews-bulk-actions-toolbar__selection-count {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
margin: 0 $grid-unit-10 0 $grid-unit-10;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.dataviews-bulk-actions-toolbar__wrapper {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-grow: 1;
|
|
36
|
+
width: 100%;
|
|
37
|
+
|
|
38
|
+
.components-toolbar-group {
|
|
39
|
+
align-items: center;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.components-button.is-busy {
|
|
43
|
+
max-height: $button-size;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { createContext } from '@wordpress/element';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import type { View, Action, NormalizedField } from '../../types';
|
|
10
|
+
import type { SetSelection } from '../../private-types';
|
|
11
|
+
import { LAYOUT_TABLE } from '../../constants';
|
|
12
|
+
|
|
13
|
+
type DataViewsContextType< Item > = {
|
|
14
|
+
view: View;
|
|
15
|
+
onChangeView: ( view: View ) => void;
|
|
16
|
+
fields: NormalizedField< Item >[];
|
|
17
|
+
actions?: Action< Item >[];
|
|
18
|
+
data: Item[];
|
|
19
|
+
isLoading?: boolean;
|
|
20
|
+
paginationInfo: {
|
|
21
|
+
totalItems: number;
|
|
22
|
+
totalPages: number;
|
|
23
|
+
};
|
|
24
|
+
selection: string[];
|
|
25
|
+
onChangeSelection: SetSelection;
|
|
26
|
+
openedFilter: string | null;
|
|
27
|
+
setOpenedFilter: ( openedFilter: string | null ) => void;
|
|
28
|
+
getItemId: ( item: Item ) => string;
|
|
29
|
+
density: number;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const DataViewsContext = createContext< DataViewsContextType< any > >( {
|
|
33
|
+
view: { type: LAYOUT_TABLE },
|
|
34
|
+
onChangeView: () => {},
|
|
35
|
+
fields: [],
|
|
36
|
+
data: [],
|
|
37
|
+
paginationInfo: {
|
|
38
|
+
totalItems: 0,
|
|
39
|
+
totalPages: 0,
|
|
40
|
+
},
|
|
41
|
+
selection: [],
|
|
42
|
+
onChangeSelection: () => {},
|
|
43
|
+
setOpenedFilter: () => {},
|
|
44
|
+
openedFilter: null,
|
|
45
|
+
getItemId: ( item ) => item.id,
|
|
46
|
+
density: 0,
|
|
47
|
+
} );
|
|
48
|
+
|
|
49
|
+
export default DataViewsContext;
|
|
@@ -16,8 +16,8 @@ import { forwardRef } from '@wordpress/element';
|
|
|
16
16
|
/**
|
|
17
17
|
* Internal dependencies
|
|
18
18
|
*/
|
|
19
|
-
import { unlock } from '
|
|
20
|
-
import type { NormalizedFilter, View } from '
|
|
19
|
+
import { unlock } from '../../lock-unlock';
|
|
20
|
+
import type { NormalizedFilter, View } from '../../types';
|
|
21
21
|
|
|
22
22
|
const {
|
|
23
23
|
DropdownMenuV2: DropdownMenu,
|
|
@@ -32,29 +32,18 @@ interface AddFilterProps {
|
|
|
32
32
|
setOpenedFilter: ( filter: string | null ) => void;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
export function AddFilterDropdownMenu( {
|
|
36
|
+
filters,
|
|
37
|
+
view,
|
|
38
|
+
onChangeView,
|
|
39
|
+
setOpenedFilter,
|
|
40
|
+
trigger,
|
|
41
|
+
}: AddFilterProps & {
|
|
42
|
+
trigger: React.ReactNode;
|
|
43
|
+
} ) {
|
|
42
44
|
const inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );
|
|
43
45
|
return (
|
|
44
|
-
<DropdownMenu
|
|
45
|
-
trigger={
|
|
46
|
-
<Button
|
|
47
|
-
accessibleWhenDisabled
|
|
48
|
-
size="compact"
|
|
49
|
-
className="dataviews-filters-button"
|
|
50
|
-
variant="tertiary"
|
|
51
|
-
disabled={ ! inactiveFilters.length }
|
|
52
|
-
ref={ ref }
|
|
53
|
-
>
|
|
54
|
-
{ __( 'Add filter' ) }
|
|
55
|
-
</Button>
|
|
56
|
-
}
|
|
57
|
-
>
|
|
46
|
+
<DropdownMenu trigger={ trigger }>
|
|
58
47
|
{ inactiveFilters.map( ( filter ) => {
|
|
59
48
|
return (
|
|
60
49
|
<DropdownMenuItem
|
|
@@ -85,4 +74,31 @@ function AddFilter(
|
|
|
85
74
|
);
|
|
86
75
|
}
|
|
87
76
|
|
|
77
|
+
function AddFilter(
|
|
78
|
+
{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,
|
|
79
|
+
ref: Ref< HTMLButtonElement >
|
|
80
|
+
) {
|
|
81
|
+
if ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
const inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );
|
|
85
|
+
return (
|
|
86
|
+
<AddFilterDropdownMenu
|
|
87
|
+
trigger={
|
|
88
|
+
<Button
|
|
89
|
+
accessibleWhenDisabled
|
|
90
|
+
size="compact"
|
|
91
|
+
className="dataviews-filters-button"
|
|
92
|
+
variant="tertiary"
|
|
93
|
+
disabled={ ! inactiveFilters.length }
|
|
94
|
+
ref={ ref }
|
|
95
|
+
>
|
|
96
|
+
{ __( 'Add filter' ) }
|
|
97
|
+
</Button>
|
|
98
|
+
}
|
|
99
|
+
{ ...{ filters, view, onChangeView, setOpenedFilter } }
|
|
100
|
+
/>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
88
104
|
export default forwardRef( AddFilter );
|