@wordpress/dataviews 4.2.0 → 4.3.1-next.5368f64a9.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.
Files changed (125) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +47 -7
  3. package/build/components/dataviews/index.js +3 -5
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-bulk-actions/index.js +145 -141
  6. package/build/components/dataviews-bulk-actions/index.js.map +1 -1
  7. package/build/components/dataviews-filters/add-filter.js +4 -6
  8. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  9. package/build/components/dataviews-filters/search-widget.js +27 -25
  10. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  11. package/build/components/dataviews-footer/index.js +45 -0
  12. package/build/components/dataviews-footer/index.js.map +1 -0
  13. package/build/components/dataviews-item-actions/index.js +5 -8
  14. package/build/components/dataviews-item-actions/index.js.map +1 -1
  15. package/build/components/dataviews-pagination/index.js +4 -4
  16. package/build/components/dataviews-pagination/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +171 -32
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/dataforms-layouts/panel/index.js +4 -1
  20. package/build/dataforms-layouts/panel/index.js.map +1 -1
  21. package/build/dataviews-layouts/index.js +48 -2
  22. package/build/dataviews-layouts/index.js.map +1 -1
  23. package/build/dataviews-layouts/list/index.js +131 -91
  24. package/build/dataviews-layouts/list/index.js.map +1 -1
  25. package/build/dataviews-layouts/table/column-header-menu.js +52 -54
  26. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  27. package/build/dataviews-layouts/table/index.js +7 -35
  28. package/build/dataviews-layouts/table/index.js.map +1 -1
  29. package/build/normalize-fields.js +4 -2
  30. package/build/normalize-fields.js.map +1 -1
  31. package/build/types.js.map +1 -1
  32. package/build-module/components/dataviews/index.js +3 -5
  33. package/build-module/components/dataviews/index.js.map +1 -1
  34. package/build-module/components/dataviews-bulk-actions/index.js +145 -143
  35. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  36. package/build-module/components/dataviews-filters/add-filter.js +4 -6
  37. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  38. package/build-module/components/dataviews-filters/search-widget.js +27 -25
  39. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  40. package/build-module/components/dataviews-footer/index.js +38 -0
  41. package/build-module/components/dataviews-footer/index.js.map +1 -0
  42. package/build-module/components/dataviews-item-actions/index.js +5 -8
  43. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  44. package/build-module/components/dataviews-pagination/index.js +5 -5
  45. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  46. package/build-module/components/dataviews-view-config/index.js +177 -38
  47. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  48. package/build-module/dataforms-layouts/panel/index.js +4 -1
  49. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  50. package/build-module/dataviews-layouts/index.js +45 -1
  51. package/build-module/dataviews-layouts/index.js.map +1 -1
  52. package/build-module/dataviews-layouts/list/index.js +132 -90
  53. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  54. package/build-module/dataviews-layouts/table/column-header-menu.js +52 -54
  55. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  56. package/build-module/dataviews-layouts/table/index.js +9 -37
  57. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  58. package/build-module/normalize-fields.js +4 -2
  59. package/build-module/normalize-fields.js.map +1 -1
  60. package/build-module/types.js.map +1 -1
  61. package/build-style/style-rtl.css +79 -67
  62. package/build-style/style.css +79 -67
  63. package/build-types/components/dataviews/index.d.ts.map +1 -1
  64. package/build-types/components/dataviews/stories/fixtures.d.ts +27 -131
  65. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  66. package/build-types/components/dataviews/stories/index.story.d.ts +13 -53
  67. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  68. package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
  69. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
  70. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  71. package/build-types/components/dataviews-filters/search-widget.d.ts +3 -0
  72. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
  73. package/build-types/components/dataviews-footer/index.d.ts +2 -0
  74. package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
  75. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  76. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  77. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  78. package/build-types/dataviews-layouts/index.d.ts +4 -2
  79. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  80. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  81. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  82. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  83. package/build-types/normalize-fields.d.ts.map +1 -1
  84. package/build-types/types.d.ts +2 -0
  85. package/build-types/types.d.ts.map +1 -1
  86. package/package.json +11 -11
  87. package/src/components/dataviews/index.tsx +2 -6
  88. package/src/components/dataviews/stories/fixtures.tsx +698 -0
  89. package/src/components/dataviews/stories/index.story.tsx +186 -0
  90. package/src/components/dataviews/stories/style.css +4 -0
  91. package/src/components/dataviews/style.scss +2 -0
  92. package/src/components/dataviews-bulk-actions/index.tsx +264 -213
  93. package/src/components/dataviews-bulk-actions/style.scss +9 -4
  94. package/src/components/dataviews-filters/add-filter.tsx +7 -11
  95. package/src/components/dataviews-filters/search-widget.tsx +44 -29
  96. package/src/components/dataviews-filters/style.scss +12 -2
  97. package/src/components/dataviews-footer/index.tsx +50 -0
  98. package/src/components/dataviews-footer/style.scss +40 -0
  99. package/src/components/dataviews-item-actions/index.tsx +8 -14
  100. package/src/components/dataviews-pagination/index.tsx +5 -5
  101. package/src/components/dataviews-pagination/style.scss +0 -19
  102. package/src/components/dataviews-view-config/index.tsx +252 -53
  103. package/src/components/dataviews-view-config/style.scss +25 -0
  104. package/src/dataforms-layouts/panel/index.tsx +2 -0
  105. package/src/dataviews-layouts/grid/style.scss +1 -1
  106. package/src/dataviews-layouts/index.ts +63 -2
  107. package/src/dataviews-layouts/list/index.tsx +210 -139
  108. package/src/dataviews-layouts/list/style.scss +10 -4
  109. package/src/dataviews-layouts/table/column-header-menu.tsx +85 -87
  110. package/src/dataviews-layouts/table/index.tsx +8 -65
  111. package/src/dataviews-layouts/table/style.scss +0 -9
  112. package/src/normalize-fields.ts +2 -0
  113. package/src/style.scss +1 -1
  114. package/src/types.ts +2 -0
  115. package/tsconfig.tsbuildinfo +1 -1
  116. package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
  117. package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  118. package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
  119. package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  120. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
  121. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
  122. package/src/components/dataviews/stories/fixtures.js +0 -250
  123. package/src/components/dataviews/stories/index.story.js +0 -71
  124. package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
  125. package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.3.0 (2024-09-05)
6
+
5
7
  ## 4.2.0 (2024-08-21)
6
8
 
7
9
  ## New features
package/README.md CHANGED
@@ -124,7 +124,7 @@ Each field is an object with the following properties:
124
124
 
125
125
  - `value`: The id of the value to filter to (for internal use)
126
126
  - `label`: The text that will be displayed in the UI for the item.
127
- - `description`: A longer description that describes the element, to also be displayed. Optional.
127
+ - `description`: A longer description that describes the element, to also be displayed. Optional.
128
128
 
129
129
  To enable the filter by a field we just need to set a proper value to the `elements` property of the field we'd like to filter by.
130
130
 
@@ -172,14 +172,23 @@ Properties:
172
172
  - `perPage`: number of records to show per page.
173
173
  - `page`: the page that is visible.
174
174
  - `sort`:
175
+
175
176
  - `field`: the field used for sorting the dataset.
176
177
  - `direction`: the direction to use for sorting, one of `asc` or `desc`.
177
- - `fields`: the `id` of the fields that are visible in the UI.
178
+
179
+ - `fields`: the `id` of the fields that are visible in the UI and the specific order in which they are displayed.
178
180
  - `layout`: config that is specific to a particular layout type.
179
- - `primaryField`: used by the `table`, `grid` and `list` layouts. The `id` of the field to be highlighted in each row/card/item. This field is not hiddable.
180
- - `mediaField`: used by the `grid` and `list` layouts. The `id` of the field to be used for rendering each card's media. This field is not hiddable.
181
- - `badgeFields`: used by the `grid` layout. It renders these fields without a label and styled as badges.
182
- - `columnFields`: used by the `grid` layout. It renders the label and the field data vertically stacked instead of horizontally (the default).
181
+
182
+ #### Properties of `layout`
183
+
184
+ | Properties of `layout` | Table | Grid | List |
185
+ | --------------------------------------------------------------------------------------------------------------- | ----- | ---- | ---- |
186
+ | `primaryField`: the field's `id` to be highlighted in each layout. It's not hidable. | ✓ | ✓ | ✓ |
187
+ | `mediaField`: the field's `id` to be used for rendering each card's media. It's not hiddable. | | ✓ | ✓ |
188
+ | `columnFields`: a list of field's `id` to render vertically stacked instead of horizontally (the default). | | ✓ | |
189
+ | `badgeFields`: a list of field's `id` to render without label and styled as badges. | | ✓ | |
190
+ | `combinedFields`: a list of "virtual" fields that are made by combining others. See "Combining fields" section. | ✓ | | |
191
+ | `styles`: additional `width`, `maxWidth`, `minWidth` styles for each field column. | ✓ | | |
183
192
 
184
193
  ### `onChangeView`: `function`
185
194
 
@@ -295,12 +304,14 @@ For example, this is how you'd enable only the table view type:
295
304
  const defaultLayouts = {
296
305
  table: {
297
306
  layout: {
298
- primaryKey: 'my-key',
307
+ primaryField: 'my-key',
299
308
  },
300
309
  },
301
310
  };
302
311
  ```
303
312
 
313
+ The `defaultLayouts` property should be an object that includes properties named `table`, `grid`, or `list`. Each of these properties should contain a `layout` property, which holds the configuration for each specific layout type. Check [here](#properties-of-layout) the full list of properties available for each layout's configuration
314
+
304
315
  ### `onChangeSelection`: `function`
305
316
 
306
317
  Callback that signals the user selected one of more items, and takes them as parameter. So far, only the `list` view implements it.
@@ -317,6 +328,35 @@ Callback that signals the user selected one of more items, and takes them as par
317
328
 
318
329
  > The `enumeration` type was removed as it was deemed redundant with the field.elements metadata. New types will be introduced soon.
319
330
 
331
+ ## Combining fields
332
+
333
+ The `table` layout has the ability to create "virtual" fields that are made out by combining existing ones.
334
+
335
+ Each "virtual field", has to provide an `id` and `label` (optionally a `header` instead), which have the same meaning as any other field.
336
+
337
+ Additionally, they need to provide:
338
+
339
+ - `children`: a list of field's `id` to combine
340
+ - `direction`: how should they be stacked, `vertical` or `horizontal`
341
+
342
+ For example, this is how you'd define a `site` field which is a combination of a `title` and `description` fields, which are not displayed:
343
+
344
+ ```js
345
+ {
346
+ fields: [ 'site', 'status' ],
347
+ layout: {
348
+ combinedFields: [
349
+ {
350
+ id: 'site',
351
+ label: 'Site',
352
+ children: [ 'title', 'description' ],
353
+ direction: 'vertical',
354
+ }
355
+ ]
356
+ }
357
+ }
358
+ ```
359
+
320
360
  ### Operators
321
361
 
322
362
  Allowed operators:
@@ -7,12 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = DataViews;
8
8
  var _components = require("@wordpress/components");
9
9
  var _element = require("@wordpress/element");
10
- var _dataviewsBulkActions = _interopRequireDefault(require("../dataviews-bulk-actions"));
11
- var _dataviewsBulkActionsToolbar = _interopRequireDefault(require("../dataviews-bulk-actions-toolbar"));
12
10
  var _dataviewsContext = _interopRequireDefault(require("../dataviews-context"));
13
11
  var _dataviewsFilters = _interopRequireWildcard(require("../dataviews-filters"));
14
12
  var _dataviewsLayout = _interopRequireDefault(require("../dataviews-layout"));
15
- var _dataviewsPagination = _interopRequireDefault(require("../dataviews-pagination"));
13
+ var _dataviewsFooter = _interopRequireDefault(require("../dataviews-footer"));
16
14
  var _dataviewsSearch = _interopRequireDefault(require("../dataviews-search"));
17
15
  var _dataviewsViewConfig = _interopRequireDefault(require("../dataviews-view-config"));
18
16
  var _normalizeFields = require("../../normalize-fields");
@@ -111,13 +109,13 @@ function DataViews({
111
109
  style: {
112
110
  flexShrink: 0
113
111
  },
114
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsBulkActions.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsViewConfig.default, {
112
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsViewConfig.default, {
115
113
  defaultLayouts: defaultLayouts,
116
114
  density: density,
117
115
  setDensity: setDensity
118
116
  }), header]
119
117
  })]
120
- }), isShowingFilter && /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsFilters.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsLayout.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsPagination.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsBulkActionsToolbar.default, {})]
118
+ }), isShowingFilter && /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsFilters.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsLayout.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsFooter.default, {})]
121
119
  })
122
120
  });
123
121
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_dataviewsBulkActions","_interopRequireDefault","_dataviewsBulkActionsToolbar","_dataviewsContext","_dataviewsFilters","_interopRequireWildcard","_dataviewsLayout","_dataviewsPagination","_dataviewsSearch","_dataviewsViewConfig","_normalizeFields","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","defaultGetItemId","item","id","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","defaultLayouts","selection","selectionProperty","onChangeSelection","header","selectionState","setSelectionState","useState","density","setDensity","isUncontrolled","openedFilter","setOpenedFilter","setSelectionWithChange","value","newValue","_fields","useMemo","normalizeFields","_selection","filter","some","filters","useFilters","isShowingFilter","setIsShowingFilter","isPrimary","jsx","Provider","children","jsxs","className","__experimentalHStack","alignment","justify","spacing","expanded","label","FilterVisibilityToggle","style","flexShrink"],"sources":["@wordpress/dataviews/src/components/dataviews/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { default as DataViewsBulkActions } from '../dataviews-bulk-actions';\nimport DataViewsBulkActionsToolbar from '../dataviews-bulk-actions-toolbar';\nimport DataViewsContext from '../dataviews-context';\nimport {\n\tdefault as DataViewsFilters,\n\tuseFilters,\n\tFilterVisibilityToggle,\n} from '../dataviews-filters';\nimport DataViewsLayout from '../dataviews-layout';\nimport DataviewsPagination from '../dataviews-pagination';\nimport DataViewsSearch from '../dataviews-search';\nimport DataViewsViewConfig from '../dataviews-view-config';\nimport { normalizeFields } from '../../normalize-fields';\nimport type { Action, Field, View, SupportedLayouts } from '../../types';\nimport type { SelectionOrUpdater } from '../../private-types';\n\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\theader?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\n\nexport default function DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\theader,\n}: DataViewsProps< Item > ) {\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst [ density, setDensity ] = useState< number >( 0 );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >( () =>\n\t\t( filters || [] ).some( ( filter ) => filter.isPrimary )\n\t);\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tdensity,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t\t<FilterVisibilityToggle\n\t\t\t\t\t\t\tfilters={ filters }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\tsetIsShowingFilter={ setIsShowingFilter }\n\t\t\t\t\t\t\tisShowingFilter={ isShowingFilter }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tstyle={ { flexShrink: 0 } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DataViewsBulkActions />\n\t\t\t\t\t\t<DataViewsViewConfig\n\t\t\t\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\t\t\t\tdensity={ density }\n\t\t\t\t\t\t\tsetDensity={ setDensity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ header }\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t\t{ isShowingFilter && <DataViewsFilters /> }\n\t\t\t\t<DataViewsLayout />\n\t\t\t\t<DataviewsPagination />\n\t\t\t\t<DataViewsBulkActionsToolbar />\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_element","_dataviewsContext","_interopRequireDefault","_dataviewsFilters","_interopRequireWildcard","_dataviewsLayout","_dataviewsFooter","_dataviewsSearch","_dataviewsViewConfig","_normalizeFields","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","defaultGetItemId","item","id","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","defaultLayouts","selection","selectionProperty","onChangeSelection","header","selectionState","setSelectionState","useState","density","setDensity","isUncontrolled","openedFilter","setOpenedFilter","setSelectionWithChange","value","newValue","_fields","useMemo","normalizeFields","_selection","filter","some","filters","useFilters","isShowingFilter","setIsShowingFilter","isPrimary","jsx","Provider","children","jsxs","className","__experimentalHStack","alignment","justify","spacing","expanded","label","FilterVisibilityToggle","style","flexShrink"],"sources":["@wordpress/dataviews/src/components/dataviews/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport {\n\tdefault as DataViewsFilters,\n\tuseFilters,\n\tFilterVisibilityToggle,\n} from '../dataviews-filters';\nimport DataViewsLayout from '../dataviews-layout';\nimport DataViewsFooter from '../dataviews-footer';\nimport DataViewsSearch from '../dataviews-search';\nimport DataViewsViewConfig from '../dataviews-view-config';\nimport { normalizeFields } from '../../normalize-fields';\nimport type { Action, Field, View, SupportedLayouts } from '../../types';\nimport type { SelectionOrUpdater } from '../../private-types';\n\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\theader?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\n\nexport default function DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\theader,\n}: DataViewsProps< Item > ) {\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst [ density, setDensity ] = useState< number >( 0 );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >( () =>\n\t\t( filters || [] ).some( ( filter ) => filter.isPrimary )\n\t);\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tdensity,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t\t<FilterVisibilityToggle\n\t\t\t\t\t\t\tfilters={ filters }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\tsetIsShowingFilter={ setIsShowingFilter }\n\t\t\t\t\t\t\tisShowingFilter={ isShowingFilter }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tstyle={ { flexShrink: 0 } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DataViewsViewConfig\n\t\t\t\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\t\t\t\tdensity={ density }\n\t\t\t\t\t\t\tsetDensity={ setDensity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ header }\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t\t{ isShowingFilter && <DataViewsFilters /> }\n\t\t\t\t<DataViewsLayout />\n\t\t\t\t<DataViewsFooter />\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,16 +4,17 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = BulkActions;
7
+ exports.BulkActionsFooter = BulkActionsFooter;
8
+ exports.BulkSelectionCheckbox = BulkSelectionCheckbox;
8
9
  exports.useHasAPossibleBulkAction = useHasAPossibleBulkAction;
9
10
  exports.useSomeItemHasAPossibleBulkAction = useSomeItemHasAPossibleBulkAction;
10
11
  var _components = require("@wordpress/components");
11
12
  var _i18n = require("@wordpress/i18n");
12
13
  var _element = require("@wordpress/element");
13
14
  var _data = require("@wordpress/data");
15
+ var _icons = require("@wordpress/icons");
14
16
  var _dataviewsContext = _interopRequireDefault(require("../dataviews-context"));
15
- var _constants = require("../../constants");
16
- var _lockUnlock = require("../../lock-unlock");
17
+ var _dataviewsItemActions = require("../dataviews-item-actions");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  /**
19
20
  * WordPress dependencies
@@ -23,12 +24,6 @@ var _jsxRuntime = require("react/jsx-runtime");
23
24
  * Internal dependencies
24
25
  */
25
26
 
26
- const {
27
- DropdownMenuV2: DropdownMenu,
28
- DropdownMenuGroupV2: DropdownMenuGroup,
29
- DropdownMenuItemV2: DropdownMenuItem,
30
- DropdownMenuSeparatorV2: DropdownMenuSeparator
31
- } = (0, _lockUnlock.unlock)(_components.privateApis);
32
27
  function useHasAPossibleBulkAction(actions, item) {
33
28
  return (0, _element.useMemo)(() => {
34
29
  return actions.some(action => {
@@ -45,166 +40,175 @@ function useSomeItemHasAPossibleBulkAction(actions, data) {
45
40
  });
46
41
  }, [actions, data]);
47
42
  }
48
- function ActionWithModal({
43
+ function BulkSelectionCheckbox({
44
+ selection,
45
+ onChangeSelection,
46
+ data,
47
+ actions,
48
+ getItemId
49
+ }) {
50
+ const selectableItems = (0, _element.useMemo)(() => {
51
+ return data.filter(item => {
52
+ return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
53
+ });
54
+ }, [data, actions]);
55
+ const selectedItems = data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
56
+ const areAllSelected = selectedItems.length === selectableItems.length;
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.CheckboxControl, {
58
+ className: "dataviews-view-table-selection-checkbox",
59
+ __nextHasNoMarginBottom: true,
60
+ checked: areAllSelected,
61
+ indeterminate: !areAllSelected && !!selectedItems.length,
62
+ onChange: () => {
63
+ if (areAllSelected) {
64
+ onChangeSelection([]);
65
+ } else {
66
+ onChangeSelection(selectableItems.map(item => getItemId(item)));
67
+ }
68
+ },
69
+ "aria-label": areAllSelected ? (0, _i18n.__)('Deselect all') : (0, _i18n.__)('Select all')
70
+ });
71
+ }
72
+ function ActionTrigger({
49
73
  action,
50
- selectedItems,
51
- setActionWithModal,
52
- onMenuOpenChange
74
+ onClick,
75
+ isBusy,
76
+ items
53
77
  }) {
54
- const eligibleItems = (0, _element.useMemo)(() => {
55
- return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
56
- }, [action, selectedItems]);
57
- const {
58
- RenderModal,
59
- hideModalHeader
60
- } = action;
61
- const onCloseModal = (0, _element.useCallback)(() => {
62
- setActionWithModal(undefined);
63
- }, [setActionWithModal]);
64
- if (!eligibleItems.length) {
65
- return null;
66
- }
67
- const label = typeof action.label === 'string' ? action.label : action.label(selectedItems);
68
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Modal, {
69
- title: !hideModalHeader ? label : undefined,
70
- __experimentalHideHeader: !!hideModalHeader,
71
- onRequestClose: onCloseModal,
72
- overlayClassName: "dataviews-bulk-actions__modal",
73
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(RenderModal, {
74
- items: eligibleItems,
75
- closeModal: onCloseModal,
76
- onActionPerformed: () => onMenuOpenChange(false)
77
- })
78
+ const label = typeof action.label === 'string' ? action.label : action.label(items);
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
80
+ disabled: isBusy,
81
+ accessibleWhenDisabled: true,
82
+ label: label,
83
+ icon: action.icon,
84
+ isDestructive: action.isDestructive,
85
+ size: "compact",
86
+ onClick: onClick,
87
+ isBusy: isBusy,
88
+ tooltipPosition: "top"
78
89
  });
79
90
  }
80
- function BulkActionItem({
91
+ const EMPTY_ARRAY = [];
92
+ function ActionButton({
81
93
  action,
82
94
  selectedItems,
83
- setActionWithModal
95
+ actionInProgress,
96
+ setActionInProgress
84
97
  }) {
85
98
  const registry = (0, _data.useRegistry)();
86
- const eligibleItems = (0, _element.useMemo)(() => {
87
- return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
99
+ const selectedEligibleItems = (0, _element.useMemo)(() => {
100
+ return selectedItems.filter(item => {
101
+ return !action.isEligible || action.isEligible(item);
102
+ });
88
103
  }, [action, selectedItems]);
89
- const shouldShowModal = ('RenderModal' in action);
90
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenuItem, {
91
- hideOnClick: !shouldShowModal,
104
+ if ('RenderModal' in action) {
105
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsItemActions.ActionWithModal, {
106
+ action: action,
107
+ items: selectedEligibleItems,
108
+ ActionTrigger: ActionTrigger
109
+ }, action.id);
110
+ }
111
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionTrigger, {
112
+ action: action,
92
113
  onClick: async () => {
93
- if (shouldShowModal) {
94
- setActionWithModal(action);
95
- } else {
96
- action.callback(eligibleItems, {
97
- registry
98
- });
99
- }
114
+ setActionInProgress(action.id);
115
+ await action.callback(selectedItems, {
116
+ registry
117
+ });
118
+ setActionInProgress(null);
100
119
  },
101
- suffix: eligibleItems.length,
102
- children: action.label
120
+ items: selectedEligibleItems,
121
+ isBusy: actionInProgress === action.id
103
122
  }, action.id);
104
123
  }
105
- function ActionsMenuGroup({
106
- actions,
107
- selectedItems,
108
- setActionWithModal
109
- }) {
110
- const elligibleActions = (0, _element.useMemo)(() => {
111
- return actions.filter(action => {
112
- return selectedItems.some(item => !action.isEligible || action.isEligible(item));
113
- });
114
- }, [actions, selectedItems]);
115
- if (!elligibleActions.length) {
116
- return null;
117
- }
118
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
119
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenuGroup, {
120
- children: elligibleActions.map(action => /*#__PURE__*/(0, _jsxRuntime.jsx)(BulkActionItem, {
121
- action: action,
122
- selectedItems: selectedItems,
123
- setActionWithModal: setActionWithModal
124
- }, action.id))
125
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenuSeparator, {})]
124
+ function renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection) {
125
+ const message = selectedItems.length > 0 ? (0, _i18n.sprintf)( /* translators: %d: number of items. */
126
+ (0, _i18n._n)('%d Item selected', '%d Items selected', selectedItems.length), selectedItems.length) : (0, _i18n.sprintf)( /* translators: %d: number of items. */
127
+ (0, _i18n._n)('%d Item', '%d Items', data.length), data.length);
128
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
129
+ expanded: false,
130
+ className: "dataviews-bulk-actions-footer__container",
131
+ spacing: 3,
132
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BulkSelectionCheckbox, {
133
+ selection: selection,
134
+ onChangeSelection: onChangeSelection,
135
+ data: data,
136
+ actions: actions,
137
+ getItemId: getItemId
138
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
139
+ className: "dataviews-bulk-actions-footer__item-count",
140
+ children: message
141
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
142
+ className: "dataviews-bulk-actions-footer__action-buttons",
143
+ expanded: false,
144
+ spacing: 1,
145
+ children: [actionsToShow.map(action => {
146
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButton, {
147
+ action: action,
148
+ selectedItems: selectedItems,
149
+ actionInProgress: actionInProgress,
150
+ setActionInProgress: setActionInProgress
151
+ }, action.id);
152
+ }), selectedItems.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
153
+ icon: _icons.closeSmall,
154
+ showTooltip: true,
155
+ tooltipPosition: "top",
156
+ size: "compact",
157
+ label: (0, _i18n.__)('Cancel'),
158
+ disabled: !!actionInProgress,
159
+ accessibleWhenDisabled: false,
160
+ onClick: () => {
161
+ onChangeSelection(EMPTY_ARRAY);
162
+ }
163
+ })]
164
+ })]
126
165
  });
127
166
  }
128
- function _BulkActions() {
129
- const {
130
- data,
131
- actions = [],
132
- selection,
133
- onChangeSelection,
134
- getItemId
135
- } = (0, _element.useContext)(_dataviewsContext.default);
167
+ function FooterContent({
168
+ selection,
169
+ actions,
170
+ onChangeSelection,
171
+ data,
172
+ getItemId
173
+ }) {
174
+ const [actionInProgress, setActionInProgress] = (0, _element.useState)(null);
175
+ const footerContent = (0, _element.useRef)(null);
136
176
  const bulkActions = (0, _element.useMemo)(() => actions.filter(action => action.supportsBulk), [actions]);
137
- const [isMenuOpen, onMenuOpenChange] = (0, _element.useState)(false);
138
- const [actionWithModal, setActionWithModal] = (0, _element.useState)();
139
177
  const selectableItems = (0, _element.useMemo)(() => {
140
178
  return data.filter(item => {
141
179
  return bulkActions.some(action => !action.isEligible || action.isEligible(item));
142
180
  });
143
181
  }, [data, bulkActions]);
144
- const numberSelectableItems = selectableItems.length;
145
182
  const selectedItems = (0, _element.useMemo)(() => {
146
183
  return data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
147
184
  }, [selection, data, getItemId, selectableItems]);
148
- const areAllSelected = selectedItems.length === numberSelectableItems;
149
- if (bulkActions.length === 0) {
150
- return null;
185
+ const actionsToShow = (0, _element.useMemo)(() => actions.filter(action => {
186
+ return action.supportsBulk && action.icon && selectedItems.some(item => !action.isEligible || action.isEligible(item));
187
+ }), [actions, selectedItems]);
188
+ if (!actionInProgress) {
189
+ if (footerContent.current) {
190
+ footerContent.current = null;
191
+ }
192
+ return renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection);
193
+ } else if (!footerContent.current) {
194
+ footerContent.current = renderFooterContent(data, actions, getItemId, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection);
151
195
  }
152
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
153
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(DropdownMenu, {
154
- open: isMenuOpen,
155
- onOpenChange: onMenuOpenChange,
156
- label: (0, _i18n.__)('Bulk actions'),
157
- style: {
158
- minWidth: '240px'
159
- },
160
- trigger: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
161
- className: "dataviews-bulk-actions__edit-button",
162
- __next40pxDefaultSize: true,
163
- variant: "tertiary",
164
- size: "compact",
165
- children: selectedItems.length ? (0, _i18n.sprintf)( /* translators: %d: Number of items. */
166
- (0, _i18n._n)('Edit %d item', 'Edit %d items', selectedItems.length), selectedItems.length) : (0, _i18n.__)('Bulk edit')
167
- }),
168
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ActionsMenuGroup, {
169
- actions: bulkActions,
170
- setActionWithModal: setActionWithModal,
171
- selectedItems: selectedItems
172
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(DropdownMenuGroup, {
173
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenuItem, {
174
- disabled: areAllSelected,
175
- hideOnClick: false,
176
- onClick: () => {
177
- onChangeSelection(selectableItems.map(item => getItemId(item)));
178
- },
179
- suffix: numberSelectableItems,
180
- children: (0, _i18n.__)('Select all')
181
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenuItem, {
182
- disabled: selection.length === 0,
183
- hideOnClick: false,
184
- onClick: () => {
185
- onChangeSelection([]);
186
- },
187
- children: (0, _i18n.__)('Deselect')
188
- })]
189
- })]
190
- }), actionWithModal && /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionWithModal, {
191
- action: actionWithModal,
192
- selectedItems: selectedItems,
193
- setActionWithModal: setActionWithModal,
194
- onMenuOpenChange: onMenuOpenChange
195
- })]
196
- });
196
+ return footerContent.current;
197
197
  }
198
- function BulkActions() {
198
+ function BulkActionsFooter() {
199
199
  const {
200
200
  data,
201
- actions = [],
202
- view
201
+ selection,
202
+ actions = EMPTY_ARRAY,
203
+ onChangeSelection,
204
+ getItemId
203
205
  } = (0, _element.useContext)(_dataviewsContext.default);
204
- const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(actions, data);
205
- if (![_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(view.type) || !hasPossibleBulkAction) {
206
- return null;
207
- }
208
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BulkActions, {});
206
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(FooterContent, {
207
+ selection: selection,
208
+ onChangeSelection: onChangeSelection,
209
+ data: data,
210
+ actions: actions,
211
+ getItemId: getItemId
212
+ });
209
213
  }
210
214
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_data","_dataviewsContext","_interopRequireDefault","_constants","_lockUnlock","_jsxRuntime","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","unlock","componentsPrivateApis","useHasAPossibleBulkAction","actions","item","useMemo","some","action","supportsBulk","isEligible","useSomeItemHasAPossibleBulkAction","data","ActionWithModal","selectedItems","setActionWithModal","onMenuOpenChange","eligibleItems","filter","RenderModal","hideModalHeader","onCloseModal","useCallback","undefined","length","label","jsx","Modal","title","__experimentalHideHeader","onRequestClose","overlayClassName","children","items","closeModal","onActionPerformed","BulkActionItem","registry","useRegistry","shouldShowModal","hideOnClick","onClick","callback","suffix","id","ActionsMenuGroup","elligibleActions","jsxs","Fragment","map","_BulkActions","selection","onChangeSelection","getItemId","useContext","DataViewsContext","bulkActions","isMenuOpen","useState","actionWithModal","selectableItems","numberSelectableItems","includes","areAllSelected","open","onOpenChange","__","style","minWidth","trigger","Button","className","__next40pxDefaultSize","variant","size","sprintf","_n","disabled","BulkActions","view","hasPossibleBulkAction","LAYOUT_TABLE","LAYOUT_GRID","type"],"sources":["@wordpress/dataviews/src/components/dataviews-bulk-actions/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { useMemo, useState, useCallback, useContext } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { LAYOUT_TABLE, LAYOUT_GRID } from '../../constants';\nimport { unlock } from '../../lock-unlock';\nimport type { Action, ActionModal } from '../../types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\ninterface ActionWithModalProps< Item > {\n\taction: ActionModal< Item >;\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n\tonMenuOpenChange: ( isOpen: boolean ) => void;\n}\n\ninterface BulkActionsItemProps< Item > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n}\n\ninterface ActionsMenuGroupProps< Item > {\n\tactions: Action< Item >[];\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n}\n\nexport function useHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\titem: Item\n) {\n\treturn useMemo( () => {\n\t\treturn actions.some( ( action ) => {\n\t\t\treturn (\n\t\t\t\taction.supportsBulk &&\n\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ actions, item ] );\n}\n\nexport function useSomeItemHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\tdata: Item[]\n) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nfunction ActionWithModal< Item >( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n\tonMenuOpenChange,\n}: ActionWithModalProps< Item > ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter(\n\t\t\t( item ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t}, [ action, selectedItems ] );\n\tconst { RenderModal, hideModalHeader } = action;\n\tconst onCloseModal = useCallback( () => {\n\t\tsetActionWithModal( undefined );\n\t}, [ setActionWithModal ] );\n\n\tif ( ! eligibleItems.length ) {\n\t\treturn null;\n\t}\n\n\tconst label =\n\t\ttypeof action.label === 'string'\n\t\t\t? action.label\n\t\t\t: action.label( selectedItems );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ ! hideModalHeader ? label : undefined }\n\t\t\t__experimentalHideHeader={ !! hideModalHeader }\n\t\t\tonRequestClose={ onCloseModal }\n\t\t\toverlayClassName=\"dataviews-bulk-actions__modal\"\n\t\t>\n\t\t\t<RenderModal\n\t\t\t\titems={ eligibleItems }\n\t\t\t\tcloseModal={ onCloseModal }\n\t\t\t\tonActionPerformed={ () => onMenuOpenChange( false ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nfunction BulkActionItem< Item >( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n}: BulkActionsItemProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter(\n\t\t\t( item ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t}, [ action, selectedItems ] );\n\n\tconst shouldShowModal = 'RenderModal' in action;\n\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tkey={ action.id }\n\t\t\thideOnClick={ ! shouldShowModal }\n\t\t\tonClick={ async () => {\n\t\t\t\tif ( shouldShowModal ) {\n\t\t\t\t\tsetActionWithModal( action );\n\t\t\t\t} else {\n\t\t\t\t\taction.callback( eligibleItems, { registry } );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tsuffix={ eligibleItems.length }\n\t\t>\n\t\t\t{ action.label }\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction ActionsMenuGroup< Item >( {\n\tactions,\n\tselectedItems,\n\tsetActionWithModal,\n}: ActionsMenuGroupProps< Item > ) {\n\tconst elligibleActions = useMemo( () => {\n\t\treturn actions.filter( ( action ) => {\n\t\t\treturn selectedItems.some(\n\t\t\t\t( item ) => ! action.isEligible || action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ actions, selectedItems ] );\n\tif ( ! elligibleActions.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t{ elligibleActions.map( ( action ) => (\n\t\t\t\t\t<BulkActionItem\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</DropdownMenuGroup>\n\t\t\t<DropdownMenuSeparator />\n\t\t</>\n\t);\n}\n\nfunction _BulkActions() {\n\tconst {\n\t\tdata,\n\t\tactions = [],\n\t\tselection,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t} = useContext( DataViewsContext );\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst [ isMenuOpen, onMenuOpenChange ] = useState( false );\n\tconst [ actionWithModal, setActionWithModal ] = useState<\n\t\tActionModal< any > | undefined\n\t>();\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn bulkActions.some(\n\t\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, bulkActions ] );\n\n\tconst numberSelectableItems = selectableItems.length;\n\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter(\n\t\t\t( item ) =>\n\t\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\t\tselectableItems.includes( item )\n\t\t);\n\t}, [ selection, data, getItemId, selectableItems ] );\n\n\tconst areAllSelected = selectedItems.length === numberSelectableItems;\n\n\tif ( bulkActions.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonOpenChange={ onMenuOpenChange }\n\t\t\t\tlabel={ __( 'Bulk actions' ) }\n\t\t\t\tstyle={ { minWidth: '240px' } }\n\t\t\t\ttrigger={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"dataviews-bulk-actions__edit-button\"\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ selectedItems.length\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %d: Number of items. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'Edit %d item',\n\t\t\t\t\t\t\t\t\t\t'Edit %d items',\n\t\t\t\t\t\t\t\t\t\tselectedItems.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tselectedItems.length\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'Bulk edit' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\tactions={ bulkActions }\n\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t/>\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tdisabled={ areAllSelected }\n\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\t\t\tselectableItems.map( ( item ) =>\n\t\t\t\t\t\t\t\t\tgetItemId( item )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={ numberSelectableItems }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Select all' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tdisabled={ selection.length === 0 }\n\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeSelection( [] );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Deselect' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenu>\n\t\t\t{ actionWithModal && (\n\t\t\t\t<ActionWithModal\n\t\t\t\t\taction={ actionWithModal }\n\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\tonMenuOpenChange={ onMenuOpenChange }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default function BulkActions() {\n\tconst { data, actions = [], view } = useContext( DataViewsContext );\n\tconst hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(\n\t\tactions,\n\t\tdata\n\t);\n\tif (\n\t\t! [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) ||\n\t\t! hasPossibleBulkAction\n\t) {\n\t\treturn null;\n\t}\n\n\treturn <_BulkActions />;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_data","_icons","_dataviewsContext","_interopRequireDefault","_dataviewsItemActions","_jsxRuntime","useHasAPossibleBulkAction","actions","item","useMemo","some","action","supportsBulk","isEligible","useSomeItemHasAPossibleBulkAction","data","BulkSelectionCheckbox","selection","onChangeSelection","getItemId","selectableItems","filter","selectedItems","includes","areAllSelected","length","jsx","CheckboxControl","className","__nextHasNoMarginBottom","checked","indeterminate","onChange","map","__","ActionTrigger","onClick","isBusy","items","label","Button","disabled","accessibleWhenDisabled","icon","isDestructive","size","tooltipPosition","EMPTY_ARRAY","ActionButton","actionInProgress","setActionInProgress","registry","useRegistry","selectedEligibleItems","ActionWithModal","id","callback","renderFooterContent","actionsToShow","message","sprintf","_n","jsxs","__experimentalHStack","expanded","spacing","children","closeSmall","showTooltip","FooterContent","useState","footerContent","useRef","bulkActions","current","BulkActionsFooter","useContext","DataViewsContext"],"sources":["@wordpress/dataviews/src/components/dataviews-bulk-actions/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCheckboxControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { useMemo, useState, useRef, useContext } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { ActionWithModal } from '../dataviews-item-actions';\nimport type { Action } from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport type { ActionTriggerProps } from '../dataviews-item-actions';\n\nexport function useHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\titem: Item\n) {\n\treturn useMemo( () => {\n\t\treturn actions.some( ( action ) => {\n\t\t\treturn (\n\t\t\t\taction.supportsBulk &&\n\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ actions, item ] );\n}\n\nexport function useSomeItemHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\tdata: Item[]\n) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\ninterface BulkSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\nexport function BulkSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\tdata,\n\tactions,\n\tgetItemId,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst selectedItems = data.filter(\n\t\t( item ) =>\n\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\tselectableItems.includes( item )\n\t);\n\tconst areAllSelected = selectedItems.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonChangeSelection( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselectableItems.map( ( item ) => getItemId( item ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\ninterface ActionButtonProps< Item > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tactionInProgress: string | null;\n\tsetActionInProgress: ( actionId: string | null ) => void;\n}\n\ninterface ToolbarContentProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\nfunction ActionTrigger< Item >( {\n\taction,\n\tonClick,\n\tisBusy,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ isBusy }\n\t\t\taccessibleWhenDisabled\n\t\t\tlabel={ label }\n\t\t\ticon={ action.icon }\n\t\t\tisDestructive={ action.isDestructive }\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t\tisBusy={ isBusy }\n\t\t\ttooltipPosition=\"top\"\n\t\t/>\n\t);\n}\n\nconst EMPTY_ARRAY: [] = [];\n\nfunction ActionButton< Item >( {\n\taction,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n}: ActionButtonProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst selectedEligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => {\n\t\t\treturn ! action.isEligible || action.isEligible( item );\n\t\t} );\n\t}, [ action, selectedItems ] );\n\tif ( 'RenderModal' in action ) {\n\t\treturn (\n\t\t\t<ActionWithModal\n\t\t\t\tkey={ action.id }\n\t\t\t\taction={ action }\n\t\t\t\titems={ selectedEligibleItems }\n\t\t\t\tActionTrigger={ ActionTrigger }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<ActionTrigger\n\t\t\tkey={ action.id }\n\t\t\taction={ action }\n\t\t\tonClick={ async () => {\n\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\tawait action.callback( selectedItems, {\n\t\t\t\t\tregistry,\n\t\t\t\t} );\n\t\t\t\tsetActionInProgress( null );\n\t\t\t} }\n\t\t\titems={ selectedEligibleItems }\n\t\t\tisBusy={ actionInProgress === action.id }\n\t\t/>\n\t);\n}\n\nfunction renderFooterContent< Item >(\n\tdata: Item[],\n\tactions: Action< Item >[],\n\tgetItemId: ( item: Item ) => string,\n\tselection: string[],\n\tactionsToShow: Action< Item >[],\n\tselectedItems: Item[],\n\tactionInProgress: string | null,\n\tsetActionInProgress: ( actionId: string | null ) => void,\n\tonChangeSelection: SetSelection\n) {\n\tconst message =\n\t\tselectedItems.length > 0\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d Item selected',\n\t\t\t\t\t\t'%d Items selected',\n\t\t\t\t\t\tselectedItems.length\n\t\t\t\t\t),\n\t\t\t\t\tselectedItems.length\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n( '%d Item', '%d Items', data.length ),\n\t\t\t\t\tdata.length\n\t\t\t );\n\treturn (\n\t\t<HStack\n\t\t\texpanded={ false }\n\t\t\tclassName=\"dataviews-bulk-actions-footer__container\"\n\t\t\tspacing={ 3 }\n\t\t>\n\t\t\t<BulkSelectionCheckbox\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tdata={ data }\n\t\t\t\tactions={ actions }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t/>\n\t\t\t<span className=\"dataviews-bulk-actions-footer__item-count\">\n\t\t\t\t{ message }\n\t\t\t</span>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-bulk-actions-footer__action-buttons\"\n\t\t\t\texpanded={ false }\n\t\t\t\tspacing={ 1 }\n\t\t\t>\n\t\t\t\t{ actionsToShow.map( ( action ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\t\tactionInProgress={ actionInProgress }\n\t\t\t\t\t\t\tsetActionInProgress={ setActionInProgress }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ selectedItems.length > 0 && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tlabel={ __( 'Cancel' ) }\n\t\t\t\t\t\tdisabled={ !! actionInProgress }\n\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeSelection( EMPTY_ARRAY );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</HStack>\n\t);\n}\n\nfunction FooterContent< Item >( {\n\tselection,\n\tactions,\n\tonChangeSelection,\n\tdata,\n\tgetItemId,\n}: ToolbarContentProps< Item > ) {\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\tconst footerContent = useRef< JSX.Element | null >( null );\n\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn bulkActions.some(\n\t\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, bulkActions ] );\n\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter(\n\t\t\t( item ) =>\n\t\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\t\tselectableItems.includes( item )\n\t\t);\n\t}, [ selection, data, getItemId, selectableItems ] );\n\n\tconst actionsToShow = useMemo(\n\t\t() =>\n\t\t\tactions.filter( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\taction.icon &&\n\t\t\t\t\tselectedItems.some(\n\t\t\t\t\t\t( item ) =>\n\t\t\t\t\t\t\t! action.isEligible || action.isEligible( item )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} ),\n\t\t[ actions, selectedItems ]\n\t);\n\tif ( ! actionInProgress ) {\n\t\tif ( footerContent.current ) {\n\t\t\tfooterContent.current = null;\n\t\t}\n\t\treturn renderFooterContent(\n\t\t\tdata,\n\t\t\tactions,\n\t\t\tgetItemId,\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tonChangeSelection\n\t\t);\n\t} else if ( ! footerContent.current ) {\n\t\tfooterContent.current = renderFooterContent(\n\t\t\tdata,\n\t\t\tactions,\n\t\t\tgetItemId,\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tonChangeSelection\n\t\t);\n\t}\n\treturn footerContent.current;\n}\n\nexport function BulkActionsFooter() {\n\tconst {\n\t\tdata,\n\t\tselection,\n\t\tactions = EMPTY_ARRAY,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t} = useContext( DataViewsContext );\n\treturn (\n\t\t<FooterContent\n\t\t\tselection={ selection }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tdata={ data }\n\t\t\tactions={ actions }\n\t\t\tgetItemId={ getItemId }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}