@wordpress/dataviews 0.3.0 → 0.4.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 (45) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/bulk-actions.js +143 -0
  3. package/build/bulk-actions.js.map +1 -0
  4. package/build/dataviews.js +15 -1
  5. package/build/dataviews.js.map +1 -1
  6. package/build/item-actions.js +4 -4
  7. package/build/item-actions.js.map +1 -1
  8. package/build/pagination.js +2 -2
  9. package/build/pagination.js.map +1 -1
  10. package/build/view-actions.js +3 -2
  11. package/build/view-actions.js.map +1 -1
  12. package/build/view-grid.js +11 -8
  13. package/build/view-grid.js.map +1 -1
  14. package/build/view-list.js +13 -1
  15. package/build/view-list.js.map +1 -1
  16. package/build/view-table.js +116 -9
  17. package/build/view-table.js.map +1 -1
  18. package/build-module/bulk-actions.js +136 -0
  19. package/build-module/bulk-actions.js.map +1 -0
  20. package/build-module/dataviews.js +17 -3
  21. package/build-module/dataviews.js.map +1 -1
  22. package/build-module/item-actions.js +4 -4
  23. package/build-module/item-actions.js.map +1 -1
  24. package/build-module/pagination.js +2 -2
  25. package/build-module/pagination.js.map +1 -1
  26. package/build-module/view-actions.js +4 -3
  27. package/build-module/view-actions.js.map +1 -1
  28. package/build-module/view-grid.js +12 -9
  29. package/build-module/view-grid.js.map +1 -1
  30. package/build-module/view-list.js +13 -1
  31. package/build-module/view-list.js.map +1 -1
  32. package/build-module/view-table.js +120 -13
  33. package/build-module/view-table.js.map +1 -1
  34. package/build-style/style-rtl.css +143 -26
  35. package/build-style/style.css +143 -26
  36. package/package.json +11 -11
  37. package/src/bulk-actions.js +187 -0
  38. package/src/dataviews.js +29 -2
  39. package/src/item-actions.js +4 -7
  40. package/src/pagination.js +2 -6
  41. package/src/style.scss +152 -29
  42. package/src/view-actions.js +8 -14
  43. package/src/view-grid.js +14 -12
  44. package/src/view-list.js +20 -1
  45. package/src/view-table.js +161 -15
@@ -24,6 +24,7 @@ function ViewList({
24
24
  view,
25
25
  fields,
26
26
  data,
27
+ isLoading,
27
28
  getItemId,
28
29
  onSelectionChange,
29
30
  onDetailsChange,
@@ -45,6 +46,15 @@ function ViewList({
45
46
  onSelectionChange([item]);
46
47
  }
47
48
  };
49
+ const hasData = usedData?.length;
50
+ if (!hasData) {
51
+ return (0, _react.createElement)("div", {
52
+ className: (0, _classnames.default)({
53
+ 'dataviews-loading': isLoading,
54
+ 'dataviews-no-results': !hasData && !isLoading
55
+ })
56
+ }, !hasData && (0, _react.createElement)("p", null, isLoading ? (0, _i18n.__)('Loading…') : (0, _i18n.__)('No results')));
57
+ }
48
58
  return (0, _react.createElement)("ul", {
49
59
  className: "dataviews-view-list"
50
60
  }, usedData.map(item => {
@@ -73,9 +83,11 @@ function ViewList({
73
83
  className: "dataviews-view-list__media-placeholder"
74
84
  })), (0, _react.createElement)(_components.__experimentalVStack, {
75
85
  spacing: 1
86
+ }, (0, _react.createElement)("span", {
87
+ className: "dataviews-view-list__primary-field"
76
88
  }, primaryField?.render({
77
89
  item
78
- }), (0, _react.createElement)("div", {
90
+ })), (0, _react.createElement)("div", {
79
91
  className: "dataviews-view-list__fields"
80
92
  }, visibleFields.map(field => {
81
93
  return (0, _react.createElement)("span", {
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_compose","_components","_keycodes","_icons","_i18n","ViewList","view","fields","data","getItemId","onSelectionChange","onDetailsChange","selection","deferredRendering","shownData","useAsyncList","step","usedData","mediaField","find","field","id","layout","primaryField","visibleFields","filter","hiddenFields","includes","onEnter","item","event","keyCode","ENTER","SPACE","_react","createElement","className","map","key","classNames","__experimentalHStack","role","tabIndex","onKeyDown","onClick","spacing","justify","render","__experimentalVStack","Button","icon","info","label","__","size"],"sources":["@wordpress/dataviews/src/view-list.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { info } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nexport default function ViewList( {\n\tview,\n\tfields,\n\tdata,\n\tgetItemId,\n\tonSelectionChange,\n\tonDetailsChange,\n\tselection,\n\tdeferredRendering,\n} ) {\n\tconst shownData = useAsyncList( data, { step: 3 } );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onEnter = ( item ) => ( event ) => {\n\t\tconst { keyCode } = event;\n\t\tif ( [ ENTER, SPACE ].includes( keyCode ) ) {\n\t\t\tonSelectionChange( [ item ] );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ul className=\"dataviews-view-list\">\n\t\t\t{ usedData.map( ( item ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\tclassName={ classNames( {\n\t\t\t\t\t\t\t'is-selected': selection.includes( item.id ),\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\t\t\t\taria-pressed={ selection.includes( item.id ) }\n\t\t\t\t\t\t\t\tonKeyDown={ onEnter( item ) }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\t\t\tonClick={ () => onSelectionChange( [ item ] ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<HStack spacing={ 3 } justify=\"start\">\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__fields\">\n\t\t\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ onDetailsChange && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__details-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonDetailsChange( [ item ] )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ticon={ info }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'View details' ) }\n\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ul>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_compose","_components","_keycodes","_icons","_i18n","ViewList","view","fields","data","isLoading","getItemId","onSelectionChange","onDetailsChange","selection","deferredRendering","shownData","useAsyncList","step","usedData","mediaField","find","field","id","layout","primaryField","visibleFields","filter","hiddenFields","includes","onEnter","item","event","keyCode","ENTER","SPACE","hasData","length","_react","createElement","className","classNames","__","map","key","__experimentalHStack","role","tabIndex","onKeyDown","onClick","spacing","justify","render","__experimentalVStack","Button","icon","info","label","size"],"sources":["@wordpress/dataviews/src/view-list.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { info } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nexport default function ViewList( {\n\tview,\n\tfields,\n\tdata,\n\tisLoading,\n\tgetItemId,\n\tonSelectionChange,\n\tonDetailsChange,\n\tselection,\n\tdeferredRendering,\n} ) {\n\tconst shownData = useAsyncList( data, { step: 3 } );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onEnter = ( item ) => ( event ) => {\n\t\tconst { keyCode } = event;\n\t\tif ( [ ENTER, SPACE ].includes( keyCode ) ) {\n\t\t\tonSelectionChange( [ item ] );\n\t\t}\n\t};\n\n\tconst hasData = usedData?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ classNames( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? __( 'Loading…' ) : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ul className=\"dataviews-view-list\">\n\t\t\t{ usedData.map( ( item ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\tclassName={ classNames( {\n\t\t\t\t\t\t\t'is-selected': selection.includes( item.id ),\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\t\t\t\taria-pressed={ selection.includes( item.id ) }\n\t\t\t\t\t\t\t\tonKeyDown={ onEnter( item ) }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\t\t\tonClick={ () => onSelectionChange( [ item ] ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<HStack spacing={ 3 } justify=\"start\">\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__primary-field\">\n\t\t\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__fields\">\n\t\t\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ onDetailsChange && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__details-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonDetailsChange( [ item ] )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ticon={ info }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'View details' ) }\n\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ul>\n\t);\n}\n"],"mappings":"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"}
@@ -183,6 +183,67 @@ function WithSeparators({
183
183
  key: i
184
184
  }, i > 0 && (0, _react.createElement)(DropdownMenuSeparator, null), child));
185
185
  }
186
+ function BulkSelectionCheckbox({
187
+ selection,
188
+ onSelectionChange,
189
+ data
190
+ }) {
191
+ const areAllSelected = selection.length === data.length;
192
+ return (0, _react.createElement)(_components.CheckboxControl, {
193
+ className: "dataviews-view-table-selection-checkbox",
194
+ __nextHasNoMarginBottom: true,
195
+ checked: areAllSelected,
196
+ indeterminate: !areAllSelected && selection.length,
197
+ onChange: () => {
198
+ if (areAllSelected) {
199
+ onSelectionChange([]);
200
+ } else {
201
+ onSelectionChange(data);
202
+ }
203
+ },
204
+ label: areAllSelected ? (0, _i18n.__)('Deselect all') : (0, _i18n.__)('Select all')
205
+ });
206
+ }
207
+ function SingleSelectionCheckbox({
208
+ selection,
209
+ onSelectionChange,
210
+ item,
211
+ data,
212
+ getItemId,
213
+ primaryField
214
+ }) {
215
+ const id = getItemId(item);
216
+ const isSelected = selection.includes(id);
217
+ let selectionLabel;
218
+ if (primaryField?.getValue && item) {
219
+ // eslint-disable-next-line @wordpress/valid-sprintf
220
+ selectionLabel = (0, _i18n.sprintf)( /* translators: %s: item title. */
221
+ isSelected ? (0, _i18n.__)('Deselect item: %s') : (0, _i18n.__)('Select item: %s'), primaryField.getValue({
222
+ item
223
+ }));
224
+ } else {
225
+ selectionLabel = isSelected ? (0, _i18n.__)('Select a new item') : (0, _i18n.__)('Deselect item');
226
+ }
227
+ return (0, _react.createElement)(_components.CheckboxControl, {
228
+ className: "dataviews-view-table-selection-checkbox",
229
+ __nextHasNoMarginBottom: true,
230
+ checked: isSelected,
231
+ label: selectionLabel,
232
+ onChange: () => {
233
+ if (!isSelected) {
234
+ onSelectionChange(data.filter(_item => {
235
+ const itemId = getItemId?.(_item);
236
+ return itemId === id || selection.includes(itemId);
237
+ }));
238
+ } else {
239
+ onSelectionChange(data.filter(_item => {
240
+ const itemId = getItemId?.(_item);
241
+ return itemId !== id && selection.includes(itemId);
242
+ }));
243
+ }
244
+ }
245
+ });
246
+ }
186
247
  function ViewTable({
187
248
  view,
188
249
  onChangeView,
@@ -191,8 +252,11 @@ function ViewTable({
191
252
  data,
192
253
  getItemId,
193
254
  isLoading = false,
194
- deferredRendering
255
+ deferredRendering,
256
+ selection,
257
+ onSelectionChange
195
258
  }) {
259
+ const hasBulkActions = actions?.some(action => action.supportsBulk);
196
260
  const headerMenuRefs = (0, _element.useRef)(new Map());
197
261
  const headerMenuToFocusRef = (0, _element.useRef)();
198
262
  const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, _element.useState)();
@@ -218,18 +282,35 @@ function ViewTable({
218
282
  const fallback = headerMenuRefs.current.get(hidden.fallback);
219
283
  setNextHeaderMenuToFocus(fallback?.node);
220
284
  };
221
- const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField, view.layout.primaryField].includes(field.id));
285
+ const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField].includes(field.id));
222
286
  const usedData = deferredRendering ? asyncData : data;
223
287
  const hasData = !!usedData?.length;
224
288
  const sortValues = {
225
289
  asc: 'ascending',
226
290
  desc: 'descending'
227
291
  };
228
- return (0, _react.createElement)("div", null, (0, _react.createElement)("table", {
292
+ const primaryField = fields.find(field => field.id === view.layout.primaryField);
293
+ return (0, _react.createElement)("div", {
294
+ className: "dataviews-view-table-wrapper"
295
+ }, (0, _react.createElement)("table", {
229
296
  className: "dataviews-view-table",
230
297
  "aria-busy": isLoading,
231
298
  "aria-describedby": tableNoticeId
232
- }, (0, _react.createElement)("thead", null, (0, _react.createElement)("tr", null, visibleFields.map((field, index) => (0, _react.createElement)("th", {
299
+ }, (0, _react.createElement)("thead", null, (0, _react.createElement)("tr", {
300
+ className: "dataviews-view-table__row"
301
+ }, hasBulkActions && (0, _react.createElement)("th", {
302
+ className: "dataviews-view-table__checkbox-column",
303
+ style: {
304
+ width: 20,
305
+ minWidth: 20
306
+ },
307
+ "data-field-id": "selection",
308
+ scope: "col"
309
+ }, (0, _react.createElement)(BulkSelectionCheckbox, {
310
+ selection: selection,
311
+ onSelectionChange: onSelectionChange,
312
+ data: data
313
+ })), visibleFields.map((field, index) => (0, _react.createElement)("th", {
233
314
  key: field.id,
234
315
  style: {
235
316
  width: field.width || undefined,
@@ -255,21 +336,47 @@ function ViewTable({
255
336
  onChangeView: onChangeView,
256
337
  onHide: onHide
257
338
  }))), !!actions?.length && (0, _react.createElement)("th", {
258
- "data-field-id": "actions"
339
+ "data-field-id": "actions",
340
+ className: "dataviews-view-table__actions-column"
259
341
  }, (0, _react.createElement)("span", {
260
342
  className: "dataviews-view-table-header"
261
- }, (0, _i18n.__)('Actions'))))), (0, _react.createElement)("tbody", null, hasData && usedData.map(item => (0, _react.createElement)("tr", {
262
- key: getItemId(item)
263
- }, visibleFields.map(field => (0, _react.createElement)("td", {
343
+ }, (0, _i18n.__)('Actions'))))), (0, _react.createElement)("tbody", null, hasData && usedData.map((item, index) => (0, _react.createElement)("tr", {
344
+ key: getItemId(item),
345
+ className: (0, _classnames.default)('dataviews-view-table__row', {
346
+ 'is-selected': selection.includes(getItemId(item) || index)
347
+ })
348
+ }, hasBulkActions && (0, _react.createElement)("td", {
349
+ className: "dataviews-view-table__checkbox-column",
350
+ style: {
351
+ width: 20,
352
+ minWidth: 20
353
+ }
354
+ }, (0, _react.createElement)("span", {
355
+ className: "dataviews-view-table__cell-content-wrapper"
356
+ }, (0, _react.createElement)(SingleSelectionCheckbox, {
357
+ id: getItemId(item) || index,
358
+ item: item,
359
+ selection: selection,
360
+ onSelectionChange: onSelectionChange,
361
+ getItemId: getItemId,
362
+ data: data,
363
+ primaryField: primaryField
364
+ }))), visibleFields.map(field => (0, _react.createElement)("td", {
264
365
  key: field.id,
265
366
  style: {
266
367
  width: field.width || undefined,
267
368
  minWidth: field.minWidth || undefined,
268
369
  maxWidth: field.maxWidth || undefined
269
370
  }
371
+ }, (0, _react.createElement)("span", {
372
+ className: (0, _classnames.default)('dataviews-view-table__cell-content-wrapper', {
373
+ 'dataviews-view-table__primary-field': primaryField?.id === field.id
374
+ })
270
375
  }, field.render({
271
376
  item
272
- }))), !!actions?.length && (0, _react.createElement)("td", null, (0, _react.createElement)(_itemActions.default, {
377
+ })))), !!actions?.length && (0, _react.createElement)("td", {
378
+ className: "dataviews-view-table__actions-column"
379
+ }, (0, _react.createElement)(_itemActions.default, {
273
380
  item: item,
274
381
  actions: actions
275
382
  })))))), (0, _react.createElement)("div", {
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_compose","_icons","_components","_element","_lockUnlock","_itemActions","_constants","_dropdownMenuHelper","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuItemHelpTextV2","DropdownMenuItemHelpText","unlock","componentsPrivateApis","sortArrows","asc","desc","sanitizeOperators","field","operators","filterBy","Array","isArray","Object","keys","OPERATORS","filter","operator","includes","HeaderMenu","forwardRef","view","onChangeView","onHide","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","filterInView","activeElement","activeOperator","otherFilters","type","ENUMERATION_TYPE","length","elements","filters","find","f","element","value","isFilterable","header","_react","createElement","align","trigger","Button","size","className","variant","direction","style","minWidth","WithSeparators","entries","SORTING_DIRECTIONS","map","info","isChecked","key","name","checked","onChange","label","prefix","Icon","icon","unseen","onClick","hiddenFields","concat","__","funnel","suffix","isActive","DropdownMenuRadioItemCustom","page","undefined","description","e","target","children","Children","toArray","Boolean","child","i","Fragment","ViewTable","fields","actions","data","getItemId","isLoading","deferredRendering","headerMenuRefs","useRef","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useState","useEffect","current","focus","asyncData","useAsyncList","tableNoticeId","useId","hidden","get","fallback","node","visibleFields","layout","mediaField","primaryField","usedData","hasData","sortValues","index","width","maxWidth","scope","set","delete","item","render","default","classNames","_default","exports"],"sources":["@wordpress/dataviews/src/view-table.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\nimport { unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport {\n\tChildren,\n\tFragment,\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { ENUMERATION_TYPE, OPERATORS, SORTING_DIRECTIONS } from './constants';\nimport { DropdownMenuRadioItemCustom } from './dropdown-menu-helper';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuItemHelpTextV2: DropdownMenuItemHelpText,\n} = unlock( componentsPrivateApis );\n\nconst sortArrows = { asc: '↑', desc: '↓' };\n\nconst sanitizeOperators = ( field ) => {\n\tlet operators = field.filterBy?.operators;\n\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\toperators = Object.keys( OPERATORS );\n\t}\n\treturn operators.filter( ( operator ) =>\n\t\tObject.keys( OPERATORS ).includes( operator )\n\t);\n};\n\nconst HeaderMenu = forwardRef( function HeaderMenu(\n\t{ field, view, onChangeView, onHide },\n\tref\n) {\n\tconst isHidable = field.enableHiding !== false;\n\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\n\tlet filter, filterInView, activeElement, activeOperator, otherFilters;\n\tconst operators = sanitizeOperators( field );\n\tif ( field.type === ENUMERATION_TYPE && operators.length > 0 ) {\n\t\tfilter = {\n\t\t\tfield: field.id,\n\t\t\toperators,\n\t\t\telements: field.elements || [],\n\t\t};\n\t\tfilterInView = view.filters.find( ( f ) => f.field === filter.field );\n\t\totherFilters = view.filters.filter( ( f ) => f.field !== filter.field );\n\t\tactiveElement = filter.elements.find(\n\t\t\t( element ) => element.value === filterInView?.value\n\t\t);\n\t\tactiveOperator = filterInView?.operator || filter.operators[ 0 ];\n\t}\n\tconst isFilterable = !! filter;\n\n\tif ( ! isSortable && ! isHidable && ! isFilterable ) {\n\t\treturn field.header;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t>\n\t\t\t\t\t{ field.header }\n\t\t\t\t\t{ isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ isSorted && sortArrows[ view.sort.direction ] }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tstyle={ { minWidth: '240px' } }\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ Object.entries( SORTING_DIRECTIONS ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\tconst value = `${ field.id }-${ direction }`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\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</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ isHidable && (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields.concat(\n\t\t\t\t\t\t\t\t\tfield.id\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>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ __( 'Hide' ) }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t) }\n\t\t\t\t{ isFilterable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\tactiveElement && (\n\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ activeOperator in OPERATORS &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ OPERATORS[ activeOperator ].label } ` }\n\t\t\t\t\t\t\t\t\t\t\t\t{ activeElement?.label }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Filter by' ) }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\t\tactiveElement?.value ===\n\t\t\t\t\t\t\t\t\t\t\telement.value;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItemCustom\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\tname={ `view-table-${ filter.field }` }\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: element.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemHelpText>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemHelpText>\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItemCustom>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATORS[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ Object.entries( OPERATORS ).map(\n\t\t\t\t\t\t\t\t\t\t\t( [\n\t\t\t\t\t\t\t\t\t\t\t\toperator,\n\t\t\t\t\t\t\t\t\t\t\t\t{ label, key },\n\t\t\t\t\t\t\t\t\t\t\t] ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\t\tname={ `view-table-${ filter.field }-conditions` }\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={ operator }\n\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( e ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.target\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tdeferredRendering,\n} ) {\n\tconst headerMenuRefs = useRef( new Map() );\n\tconst headerMenuToFocusRef = useRef();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] = useState();\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst asyncData = useAsyncList( data );\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus();\n\t\treturn;\n\t}\n\n\tconst onHide = ( field ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = headerMenuRefs.current.get( hidden.fallback );\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField, view.layout.primaryField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\tconst usedData = deferredRendering ? asyncData : data;\n\tconst hasData = !! usedData?.length;\n\tconst sortValues = { asc: 'ascending', desc: 'descending' };\n\n\treturn (\n\t\t<div>\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{ visibleFields.map( ( field, index ) => (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdata-field-id={ field.id }\n\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\tview.sort?.field === field.id &&\n\t\t\t\t\t\t\t\t\tsortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<HeaderMenu\n\t\t\t\t\t\t\t\t\tref={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvisibleFields[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.id,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th data-field-id=\"actions\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tusedData.map( ( item ) => (\n\t\t\t\t\t\t\t<tr key={ getItemId( item ) }>\n\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\t\tminWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ classNames( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? __( 'Loading…' ) : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_compose","_icons","_components","_element","_lockUnlock","_itemActions","_constants","_dropdownMenuHelper","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuItemHelpTextV2","DropdownMenuItemHelpText","unlock","componentsPrivateApis","sortArrows","asc","desc","sanitizeOperators","field","operators","filterBy","Array","isArray","Object","keys","OPERATORS","filter","operator","includes","HeaderMenu","forwardRef","view","onChangeView","onHide","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","filterInView","activeElement","activeOperator","otherFilters","type","ENUMERATION_TYPE","length","elements","filters","find","f","element","value","isFilterable","header","_react","createElement","align","trigger","Button","size","className","variant","direction","style","minWidth","WithSeparators","entries","SORTING_DIRECTIONS","map","info","isChecked","key","name","checked","onChange","label","prefix","Icon","icon","unseen","onClick","hiddenFields","concat","__","funnel","suffix","isActive","DropdownMenuRadioItemCustom","page","undefined","description","e","target","children","Children","toArray","Boolean","child","i","Fragment","BulkSelectionCheckbox","selection","onSelectionChange","data","areAllSelected","CheckboxControl","__nextHasNoMarginBottom","indeterminate","SingleSelectionCheckbox","item","getItemId","primaryField","isSelected","selectionLabel","getValue","sprintf","_item","itemId","ViewTable","fields","actions","isLoading","deferredRendering","hasBulkActions","some","action","supportsBulk","headerMenuRefs","useRef","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useState","useEffect","current","focus","asyncData","useAsyncList","tableNoticeId","useId","hidden","get","fallback","node","visibleFields","layout","mediaField","usedData","hasData","sortValues","width","scope","index","maxWidth","set","delete","classnames","render","default","_default","exports"],"sources":["@wordpress/dataviews/src/view-table.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\nimport { unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n\tCheckboxControl,\n} from '@wordpress/components';\nimport {\n\tChildren,\n\tFragment,\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { ENUMERATION_TYPE, OPERATORS, SORTING_DIRECTIONS } from './constants';\nimport { DropdownMenuRadioItemCustom } from './dropdown-menu-helper';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuItemHelpTextV2: DropdownMenuItemHelpText,\n} = unlock( componentsPrivateApis );\n\nconst sortArrows = { asc: '↑', desc: '↓' };\n\nconst sanitizeOperators = ( field ) => {\n\tlet operators = field.filterBy?.operators;\n\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\toperators = Object.keys( OPERATORS );\n\t}\n\treturn operators.filter( ( operator ) =>\n\t\tObject.keys( OPERATORS ).includes( operator )\n\t);\n};\n\nconst HeaderMenu = forwardRef( function HeaderMenu(\n\t{ field, view, onChangeView, onHide },\n\tref\n) {\n\tconst isHidable = field.enableHiding !== false;\n\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\n\tlet filter, filterInView, activeElement, activeOperator, otherFilters;\n\tconst operators = sanitizeOperators( field );\n\tif ( field.type === ENUMERATION_TYPE && operators.length > 0 ) {\n\t\tfilter = {\n\t\t\tfield: field.id,\n\t\t\toperators,\n\t\t\telements: field.elements || [],\n\t\t};\n\t\tfilterInView = view.filters.find( ( f ) => f.field === filter.field );\n\t\totherFilters = view.filters.filter( ( f ) => f.field !== filter.field );\n\t\tactiveElement = filter.elements.find(\n\t\t\t( element ) => element.value === filterInView?.value\n\t\t);\n\t\tactiveOperator = filterInView?.operator || filter.operators[ 0 ];\n\t}\n\tconst isFilterable = !! filter;\n\n\tif ( ! isSortable && ! isHidable && ! isFilterable ) {\n\t\treturn field.header;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t>\n\t\t\t\t\t{ field.header }\n\t\t\t\t\t{ isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ isSorted && sortArrows[ view.sort.direction ] }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tstyle={ { minWidth: '240px' } }\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ Object.entries( SORTING_DIRECTIONS ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\tconst value = `${ field.id }-${ direction }`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\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</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ isHidable && (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields.concat(\n\t\t\t\t\t\t\t\t\tfield.id\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>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ __( 'Hide' ) }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t) }\n\t\t\t\t{ isFilterable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\tactiveElement && (\n\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ activeOperator in OPERATORS &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ OPERATORS[ activeOperator ].label } ` }\n\t\t\t\t\t\t\t\t\t\t\t\t{ activeElement?.label }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Filter by' ) }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\t\tactiveElement?.value ===\n\t\t\t\t\t\t\t\t\t\t\telement.value;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItemCustom\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\tname={ `view-table-${ filter.field }` }\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: element.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemHelpText>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemHelpText>\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItemCustom>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATORS[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ Object.entries( OPERATORS ).map(\n\t\t\t\t\t\t\t\t\t\t\t( [\n\t\t\t\t\t\t\t\t\t\t\t\toperator,\n\t\t\t\t\t\t\t\t\t\t\t\t{ label, key },\n\t\t\t\t\t\t\t\t\t\t\t] ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\t\tname={ `view-table-${ filter.field }-conditions` }\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={ operator }\n\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveOperator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( e ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.target\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nfunction BulkSelectionCheckbox( { selection, onSelectionChange, data } ) {\n\tconst areAllSelected = selection.length === data.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 && selection.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonSelectionChange( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonSelectionChange( data );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tlabel={ areAllSelected ? __( 'Deselect all' ) : __( 'Select all' ) }\n\t\t/>\n\t);\n}\n\nfunction SingleSelectionCheckbox( {\n\tselection,\n\tonSelectionChange,\n\titem,\n\tdata,\n\tgetItemId,\n\tprimaryField,\n} ) {\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tlet selectionLabel;\n\tif ( primaryField?.getValue && item ) {\n\t\t// eslint-disable-next-line @wordpress/valid-sprintf\n\t\tselectionLabel = sprintf(\n\t\t\t/* translators: %s: item title. */\n\t\t\tisSelected ? __( 'Deselect item: %s' ) : __( 'Select item: %s' ),\n\t\t\tprimaryField.getValue( { item } )\n\t\t);\n\t} else {\n\t\tselectionLabel = isSelected\n\t\t\t? __( 'Select a new item' )\n\t\t\t: __( 'Deselect item' );\n\t}\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ isSelected }\n\t\t\tlabel={ selectionLabel }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( ! isSelected ) {\n\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\titemId === id || selection.includes( itemId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\titemId !== id && selection.includes( itemId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tdeferredRendering,\n\tselection,\n\tonSelectionChange,\n} ) {\n\tconst hasBulkActions = actions?.some( ( action ) => action.supportsBulk );\n\tconst headerMenuRefs = useRef( new Map() );\n\tconst headerMenuToFocusRef = useRef();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] = useState();\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst asyncData = useAsyncList( data );\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus();\n\t\treturn;\n\t}\n\n\tconst onHide = ( field ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = headerMenuRefs.current.get( hidden.fallback );\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField ].includes( field.id )\n\t);\n\tconst usedData = deferredRendering ? asyncData : data;\n\tconst hasData = !! usedData?.length;\n\tconst sortValues = { asc: 'ascending', desc: 'descending' };\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\n\treturn (\n\t\t<div className=\"dataviews-view-table-wrapper\">\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\t\t\t\tminWidth: 20,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdata-field-id=\"selection\"\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ visibleFields.map( ( field, index ) => (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdata-field-id={ field.id }\n\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\tview.sort?.field === field.id &&\n\t\t\t\t\t\t\t\t\tsortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<HeaderMenu\n\t\t\t\t\t\t\t\t\tref={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvisibleFields[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.id,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tdata-field-id=\"actions\"\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tusedData.map( ( item, index ) => (\n\t\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__row',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-selected': selection.includes(\n\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) || index\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\t\t\t\t\t\tminWidth: 20,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\t\t\t\t\t\tid={\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) || index\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\tonSelectionChange={\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectionChange\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\t\tminWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__cell-content-wrapper',\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryField?.id ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t\t<td className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? __( 'Loading…' ) : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { createElement, Fragment } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { privateApis as componentsPrivateApis, Button, Modal } from '@wordpress/components';
6
+ import { __, sprintf, _n } from '@wordpress/i18n';
7
+ import { useMemo, useState, useCallback } from '@wordpress/element';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { unlock } from './lock-unlock';
13
+ const {
14
+ DropdownMenuV2: DropdownMenu,
15
+ DropdownMenuGroupV2: DropdownMenuGroup,
16
+ DropdownMenuItemV2: DropdownMenuItem,
17
+ DropdownMenuSeparatorV2: DropdownMenuSeparator
18
+ } = unlock(componentsPrivateApis);
19
+ function ActionWithModal({
20
+ action,
21
+ selectedItems,
22
+ setActionWithModal,
23
+ onMenuOpenChange
24
+ }) {
25
+ const eligibleItems = useMemo(() => {
26
+ return selectedItems.filter(item => action.isEligible(item));
27
+ }, [action, selectedItems]);
28
+ const {
29
+ RenderModal,
30
+ hideModalHeader
31
+ } = action;
32
+ const onCloseModal = useCallback(() => {
33
+ setActionWithModal(undefined);
34
+ }, [setActionWithModal]);
35
+ return createElement(Modal, {
36
+ title: !hideModalHeader && action.label,
37
+ __experimentalHideHeader: !!hideModalHeader,
38
+ onRequestClose: onCloseModal,
39
+ overlayClassName: "dataviews-action-modal"
40
+ }, createElement(RenderModal, {
41
+ items: eligibleItems,
42
+ closeModal: onCloseModal,
43
+ onPerform: () => onMenuOpenChange(false)
44
+ }));
45
+ }
46
+ function BulkActionItem({
47
+ action,
48
+ selectedItems,
49
+ setActionWithModal
50
+ }) {
51
+ const eligibleItems = useMemo(() => {
52
+ return selectedItems.filter(item => action.isEligible(item));
53
+ }, [action, selectedItems]);
54
+ const shouldShowModal = !!action.RenderModal;
55
+ return createElement(DropdownMenuItem, {
56
+ key: action.id,
57
+ disabled: eligibleItems.length === 0,
58
+ hideOnClick: !shouldShowModal,
59
+ onClick: async () => {
60
+ if (shouldShowModal) {
61
+ setActionWithModal(action);
62
+ } else {
63
+ await action.callback(eligibleItems);
64
+ }
65
+ },
66
+ suffix: eligibleItems.length > 0 ? eligibleItems.length : undefined
67
+ }, action.label);
68
+ }
69
+ function ActionsMenuGroup({
70
+ actions,
71
+ selectedItems,
72
+ setActionWithModal
73
+ }) {
74
+ return createElement(Fragment, null, createElement(DropdownMenuGroup, null, actions.map(action => createElement(BulkActionItem, {
75
+ key: action.id,
76
+ action: action,
77
+ selectedItems: selectedItems,
78
+ setActionWithModal: setActionWithModal
79
+ }))), createElement(DropdownMenuSeparator, null));
80
+ }
81
+ export default function BulkActions({
82
+ data,
83
+ actions,
84
+ selection,
85
+ onSelectionChange,
86
+ getItemId
87
+ }) {
88
+ const bulkActions = useMemo(() => actions.filter(action => action.supportsBulk), [actions]);
89
+ const areAllSelected = selection && selection.length === data.length;
90
+ const [isMenuOpen, onMenuOpenChange] = useState(false);
91
+ const [actionWithModal, setActionWithModal] = useState();
92
+ const selectedItems = useMemo(() => {
93
+ return data.filter(item => selection.includes(getItemId(item)));
94
+ }, [selection, data, getItemId]);
95
+ if (bulkActions.length === 0) {
96
+ return null;
97
+ }
98
+ return createElement(Fragment, null, createElement(DropdownMenu, {
99
+ open: isMenuOpen,
100
+ onOpenChange: onMenuOpenChange,
101
+ label: __('Bulk actions'),
102
+ style: {
103
+ minWidth: '240px'
104
+ },
105
+ trigger: createElement(Button, {
106
+ className: "dataviews-bulk-edit-button",
107
+ __next40pxDefaultSize: true,
108
+ variant: "tertiary",
109
+ size: "compact"
110
+ }, selection.length ? sprintf( /* translators: %d: Number of items. */
111
+ _n('Edit %d item', 'Edit %d items', selection.length), selection.length) : __('Bulk edit'))
112
+ }, createElement(ActionsMenuGroup, {
113
+ actions: bulkActions,
114
+ setActionWithModal: setActionWithModal,
115
+ selectedItems: selectedItems
116
+ }), createElement(DropdownMenuGroup, null, createElement(DropdownMenuItem, {
117
+ disabled: areAllSelected,
118
+ hideOnClick: false,
119
+ onClick: () => {
120
+ onSelectionChange(data);
121
+ },
122
+ suffix: data.length
123
+ }, __('Select all')), createElement(DropdownMenuItem, {
124
+ disabled: selection.length === 0,
125
+ hideOnClick: false,
126
+ onClick: () => {
127
+ onSelectionChange([]);
128
+ }
129
+ }, __('Deselect')))), actionWithModal && createElement(ActionWithModal, {
130
+ action: actionWithModal,
131
+ selectedItems: selectedItems,
132
+ setActionWithModal: setActionWithModal,
133
+ onMenuOpenChange: onMenuOpenChange
134
+ }));
135
+ }
136
+ //# sourceMappingURL=bulk-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["privateApis","componentsPrivateApis","Button","Modal","__","sprintf","_n","useMemo","useState","useCallback","unlock","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","ActionWithModal","action","selectedItems","setActionWithModal","onMenuOpenChange","eligibleItems","filter","item","isEligible","RenderModal","hideModalHeader","onCloseModal","undefined","createElement","title","label","__experimentalHideHeader","onRequestClose","overlayClassName","items","closeModal","onPerform","BulkActionItem","shouldShowModal","key","id","disabled","length","hideOnClick","onClick","callback","suffix","ActionsMenuGroup","actions","Fragment","map","BulkActions","data","selection","onSelectionChange","getItemId","bulkActions","supportsBulk","areAllSelected","isMenuOpen","actionWithModal","includes","open","onOpenChange","style","minWidth","trigger","className","__next40pxDefaultSize","variant","size"],"sources":["@wordpress/dataviews/src/bulk-actions.js"],"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 } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\nfunction ActionWithModal( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n\tonMenuOpenChange,\n} ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => action.isEligible( item ) );\n\t}, [ action, selectedItems ] );\n\tconst { RenderModal, hideModalHeader } = action;\n\tconst onCloseModal = useCallback( () => {\n\t\tsetActionWithModal( undefined );\n\t}, [ setActionWithModal ] );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ ! hideModalHeader && action.label }\n\t\t\t__experimentalHideHeader={ !! hideModalHeader }\n\t\t\tonRequestClose={ onCloseModal }\n\t\t\toverlayClassName=\"dataviews-action-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\tonPerform={ () => onMenuOpenChange( false ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nfunction BulkActionItem( { action, selectedItems, setActionWithModal } ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => action.isEligible( item ) );\n\t}, [ action, selectedItems ] );\n\n\tconst shouldShowModal = !! action.RenderModal;\n\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tkey={ action.id }\n\t\t\tdisabled={ eligibleItems.length === 0 }\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\tawait action.callback( eligibleItems );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tsuffix={\n\t\t\t\teligibleItems.length > 0 ? eligibleItems.length : undefined\n\t\t\t}\n\t\t>\n\t\t\t{ action.label }\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction ActionsMenuGroup( { actions, selectedItems, setActionWithModal } ) {\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t{ actions.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\nexport default function BulkActions( {\n\tdata,\n\tactions,\n\tselection,\n\tonSelectionChange,\n\tgetItemId,\n} ) {\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst areAllSelected = selection && selection.length === data.length;\n\tconst [ isMenuOpen, onMenuOpenChange ] = useState( false );\n\tconst [ actionWithModal, setActionWithModal ] = useState();\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter( ( item ) =>\n\t\t\tselection.includes( getItemId( item ) )\n\t\t);\n\t}, [ selection, data, getItemId ] );\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-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{ selection.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\tselection.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tselection.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\tonSelectionChange( data );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={ data.length }\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\tonSelectionChange( [] );\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"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { createElement } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { __experimentalVStack as VStack, __experimentalHStack as HStack } from '@wordpress/components';
6
- import { useMemo, useState, useCallback } from '@wordpress/element';
6
+ import { useMemo, useState, useCallback, useEffect } from '@wordpress/element';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
@@ -12,7 +12,8 @@ import Pagination from './pagination';
12
12
  import ViewActions from './view-actions';
13
13
  import Filters from './filters';
14
14
  import Search from './search';
15
- import { VIEW_LAYOUTS } from './constants';
15
+ import { VIEW_LAYOUTS, LAYOUT_TABLE } from './constants';
16
+ import BulkActions from './bulk-actions';
16
17
  const defaultGetItemId = item => item.id;
17
18
  const defaultOnSelectionChange = () => {};
18
19
  export default function DataViews({
@@ -32,6 +33,13 @@ export default function DataViews({
32
33
  deferredRendering = false
33
34
  }) {
34
35
  const [selection, setSelection] = useState([]);
36
+ useEffect(() => {
37
+ if (selection.length > 0 && selection.some(id => !data.some(item => item.id === id))) {
38
+ const newSelection = selection.filter(id => data.some(item => item.id === id));
39
+ setSelection(newSelection);
40
+ onSelectionChange(data.filter(item => newSelection.includes(item.id)));
41
+ }
42
+ }, [selection, data, onSelectionChange]);
35
43
  const onSetSelection = useCallback(items => {
36
44
  setSelection(items.map(item => item.id));
37
45
  onSelectionChange(items);
@@ -62,7 +70,13 @@ export default function DataViews({
62
70
  fields: _fields,
63
71
  view: view,
64
72
  onChangeView: onChangeView
65
- })), createElement(ViewActions, {
73
+ })), view.type === LAYOUT_TABLE && createElement(BulkActions, {
74
+ actions: actions,
75
+ data: data,
76
+ onSelectionChange: onSetSelection,
77
+ selection: selection,
78
+ getItemId: getItemId
79
+ }), createElement(ViewActions, {
66
80
  fields: _fields,
67
81
  view: view,
68
82
  onChangeView: onChangeView,