@wordpress/dataviews 0.8.0 → 1.0.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 (92) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +3 -13
  3. package/build/add-filter.js.map +1 -1
  4. package/build/bulk-actions.js.map +1 -1
  5. package/build/constants.js +1 -4
  6. package/build/constants.js.map +1 -1
  7. package/build/dataviews.js +3 -17
  8. package/build/dataviews.js.map +1 -1
  9. package/build/dropdown-menu-helper.js.map +1 -1
  10. package/build/filter-and-sort-data-view.js +147 -0
  11. package/build/filter-and-sort-data-view.js.map +1 -0
  12. package/build/filter-summary.js +4 -2
  13. package/build/filter-summary.js.map +1 -1
  14. package/build/filters.js +11 -17
  15. package/build/filters.js.map +1 -1
  16. package/build/index.js +3 -9
  17. package/build/index.js.map +1 -1
  18. package/build/item-actions.js.map +1 -1
  19. package/build/lock-unlock.js.map +1 -1
  20. package/build/normalize-fields.js +25 -0
  21. package/build/normalize-fields.js.map +1 -0
  22. package/build/pagination.js.map +1 -1
  23. package/build/reset-filters.js.map +1 -1
  24. package/build/search-widget.js +5 -4
  25. package/build/search-widget.js.map +1 -1
  26. package/build/search.js.map +1 -1
  27. package/build/single-selection-checkbox.js +1 -1
  28. package/build/single-selection-checkbox.js.map +1 -1
  29. package/build/utils.js +1 -65
  30. package/build/utils.js.map +1 -1
  31. package/build/view-actions.js.map +1 -1
  32. package/build/view-grid.js +57 -19
  33. package/build/view-grid.js.map +1 -1
  34. package/build/view-list.js +112 -66
  35. package/build/view-list.js.map +1 -1
  36. package/build/view-table.js +32 -24
  37. package/build/view-table.js.map +1 -1
  38. package/build-module/add-filter.js.map +1 -1
  39. package/build-module/bulk-actions.js.map +1 -1
  40. package/build-module/constants.js +0 -3
  41. package/build-module/constants.js.map +1 -1
  42. package/build-module/dataviews.js +3 -17
  43. package/build-module/dataviews.js.map +1 -1
  44. package/build-module/dropdown-menu-helper.js.map +1 -1
  45. package/build-module/filter-and-sort-data-view.js +139 -0
  46. package/build-module/filter-and-sort-data-view.js.map +1 -0
  47. package/build-module/filter-summary.js +3 -2
  48. package/build-module/filter-summary.js.map +1 -1
  49. package/build-module/filters.js +12 -18
  50. package/build-module/filters.js.map +1 -1
  51. package/build-module/index.js +1 -1
  52. package/build-module/index.js.map +1 -1
  53. package/build-module/item-actions.js.map +1 -1
  54. package/build-module/lock-unlock.js.map +1 -1
  55. package/build-module/normalize-fields.js +19 -0
  56. package/build-module/normalize-fields.js.map +1 -0
  57. package/build-module/pagination.js.map +1 -1
  58. package/build-module/reset-filters.js.map +1 -1
  59. package/build-module/search-widget.js +4 -3
  60. package/build-module/search-widget.js.map +1 -1
  61. package/build-module/search.js.map +1 -1
  62. package/build-module/single-selection-checkbox.js +1 -1
  63. package/build-module/single-selection-checkbox.js.map +1 -1
  64. package/build-module/utils.js +0 -63
  65. package/build-module/utils.js.map +1 -1
  66. package/build-module/view-actions.js.map +1 -1
  67. package/build-module/view-grid.js +58 -20
  68. package/build-module/view-grid.js.map +1 -1
  69. package/build-module/view-list.js +114 -68
  70. package/build-module/view-list.js.map +1 -1
  71. package/build-module/view-table.js +33 -25
  72. package/build-module/view-table.js.map +1 -1
  73. package/build-style/style-rtl.css +75 -39
  74. package/build-style/style.css +75 -39
  75. package/package.json +11 -11
  76. package/src/constants.js +0 -3
  77. package/src/dataviews.js +2 -16
  78. package/src/filter-and-sort-data-view.js +154 -0
  79. package/src/filter-summary.js +4 -4
  80. package/src/filters.js +20 -32
  81. package/src/index.js +1 -1
  82. package/src/normalize-fields.js +17 -0
  83. package/src/search-widget.js +4 -3
  84. package/src/single-selection-checkbox.js +1 -1
  85. package/src/stories/fixtures.js +75 -1
  86. package/src/stories/index.story.js +5 -113
  87. package/src/style.scss +89 -49
  88. package/src/test/filter-and-sort-data-view.js +276 -0
  89. package/src/utils.js +0 -52
  90. package/src/view-grid.js +97 -36
  91. package/src/view-list.js +147 -77
  92. package/src/view-table.js +36 -24
@@ -7,11 +7,94 @@ import classNames from 'classnames';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { useAsyncList } from '@wordpress/compose';
11
- import { __experimentalHStack as HStack, __experimentalVStack as VStack, Button, Spinner } from '@wordpress/components';
12
- import { ENTER, SPACE } from '@wordpress/keycodes';
13
- import { info } from '@wordpress/icons';
10
+ import { useInstanceId } from '@wordpress/compose';
11
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, privateApis as componentsPrivateApis, Spinner, VisuallyHidden } from '@wordpress/components';
12
+ import { useCallback, useEffect, useRef } from '@wordpress/element';
14
13
  import { __ } from '@wordpress/i18n';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import { unlock } from './lock-unlock';
19
+ const {
20
+ useCompositeStoreV2: useCompositeStore,
21
+ CompositeV2: Composite,
22
+ CompositeItemV2: CompositeItem,
23
+ CompositeRowV2: CompositeRow
24
+ } = unlock(componentsPrivateApis);
25
+ function ListItem({
26
+ id,
27
+ item,
28
+ isSelected,
29
+ onSelect,
30
+ mediaField,
31
+ primaryField,
32
+ visibleFields
33
+ }) {
34
+ const itemRef = useRef(null);
35
+ const labelId = `${id}-label`;
36
+ const descriptionId = `${id}-description`;
37
+ useEffect(() => {
38
+ if (isSelected) {
39
+ itemRef.current?.scrollIntoView({
40
+ behavior: 'auto',
41
+ block: 'nearest',
42
+ inline: 'nearest'
43
+ });
44
+ }
45
+ }, [isSelected]);
46
+ return createElement(CompositeRow, {
47
+ ref: itemRef,
48
+ render: createElement("li", null),
49
+ role: "row",
50
+ className: classNames({
51
+ 'is-selected': isSelected
52
+ })
53
+ }, createElement(HStack, {
54
+ className: "dataviews-view-list__item-wrapper"
55
+ }, createElement("div", {
56
+ role: "gridcell"
57
+ }, createElement(CompositeItem, {
58
+ render: createElement("div", null),
59
+ role: "button",
60
+ id: id,
61
+ "aria-pressed": isSelected,
62
+ "aria-labelledby": labelId,
63
+ "aria-describedby": descriptionId,
64
+ className: "dataviews-view-list__item",
65
+ onClick: () => onSelect(item)
66
+ }, createElement(HStack, {
67
+ spacing: 3,
68
+ justify: "start",
69
+ alignment: "flex-start"
70
+ }, createElement("div", {
71
+ className: "dataviews-view-list__media-wrapper"
72
+ }, mediaField?.render({
73
+ item
74
+ }) || createElement("div", {
75
+ className: "dataviews-view-list__media-placeholder"
76
+ })), createElement(VStack, {
77
+ spacing: 1
78
+ }, createElement("span", {
79
+ className: "dataviews-view-list__primary-field",
80
+ id: labelId
81
+ }, primaryField?.render({
82
+ item
83
+ })), createElement("div", {
84
+ className: "dataviews-view-list__fields",
85
+ id: descriptionId
86
+ }, visibleFields.map(field => createElement("div", {
87
+ key: field.id,
88
+ className: "dataviews-view-list__field"
89
+ }, createElement(VisuallyHidden, {
90
+ as: "span",
91
+ className: "dataviews-view-list__field-label"
92
+ }, field.header), createElement("span", {
93
+ className: "dataviews-view-list__field-value"
94
+ }, field.render({
95
+ item
96
+ })))))))))));
97
+ }
15
98
  export default function ViewList({
16
99
  view,
17
100
  fields,
@@ -19,26 +102,20 @@ export default function ViewList({
19
102
  isLoading,
20
103
  getItemId,
21
104
  onSelectionChange,
22
- onDetailsChange,
23
105
  selection,
24
- deferredRendering
106
+ id: preferredId
25
107
  }) {
26
- const shownData = useAsyncList(data, {
27
- step: 3
28
- });
29
- const usedData = deferredRendering ? shownData : data;
108
+ const baseId = useInstanceId(ViewList, 'view-list', preferredId);
109
+ const selectedItem = data?.findLast(item => selection.includes(item.id));
30
110
  const mediaField = fields.find(field => field.id === view.layout.mediaField);
31
111
  const primaryField = fields.find(field => field.id === view.layout.primaryField);
32
112
  const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.primaryField, view.layout.mediaField].includes(field.id));
33
- const onEnter = item => event => {
34
- const {
35
- keyCode
36
- } = event;
37
- if ([ENTER, SPACE].includes(keyCode)) {
38
- onSelectionChange([item]);
39
- }
40
- };
41
- const hasData = usedData?.length;
113
+ const onSelect = useCallback(item => onSelectionChange([item]), [onSelectionChange]);
114
+ const getItemDomId = useCallback(item => item ? `${baseId}-${getItemId(item)}` : undefined, [baseId, getItemId]);
115
+ const store = useCompositeStore({
116
+ defaultActiveId: getItemDomId(selectedItem)
117
+ });
118
+ const hasData = data?.length;
42
119
  if (!hasData) {
43
120
  return createElement("div", {
44
121
  className: classNames({
@@ -47,55 +124,24 @@ export default function ViewList({
47
124
  })
48
125
  }, !hasData && createElement("p", null, isLoading ? createElement(Spinner, null) : __('No results')));
49
126
  }
50
- return createElement("ul", {
51
- className: "dataviews-view-list"
52
- }, usedData.map(item => {
53
- return createElement("li", {
54
- key: getItemId(item),
55
- className: classNames({
56
- 'is-selected': selection.includes(item.id)
57
- })
58
- }, createElement(HStack, {
59
- className: "dataviews-view-list__item-wrapper"
60
- }, createElement("div", {
61
- role: "button",
62
- tabIndex: 0,
63
- "aria-pressed": selection.includes(item.id),
64
- onKeyDown: onEnter(item),
65
- className: "dataviews-view-list__item",
66
- onClick: () => onSelectionChange([item])
67
- }, createElement(HStack, {
68
- spacing: 3,
69
- justify: "start",
70
- alignment: "flex-start"
71
- }, createElement("div", {
72
- className: "dataviews-view-list__media-wrapper"
73
- }, mediaField?.render({
74
- item
75
- }) || createElement("div", {
76
- className: "dataviews-view-list__media-placeholder"
77
- })), createElement(VStack, {
78
- spacing: 1
79
- }, createElement("span", {
80
- className: "dataviews-view-list__primary-field"
81
- }, primaryField?.render({
82
- item
83
- })), createElement("div", {
84
- className: "dataviews-view-list__fields"
85
- }, visibleFields.map(field => {
86
- return createElement("span", {
87
- key: field.id,
88
- className: "dataviews-view-list__field"
89
- }, field.render({
90
- item
91
- }));
92
- }))))), onDetailsChange && createElement(Button, {
93
- className: "dataviews-view-list__details-button",
94
- onClick: () => onDetailsChange([item]),
95
- icon: info,
96
- label: __('View details'),
97
- size: "compact"
98
- })));
127
+ return createElement(Composite, {
128
+ id: baseId,
129
+ render: createElement("ul", null),
130
+ className: "dataviews-view-list",
131
+ role: "grid",
132
+ store: store
133
+ }, data.map(item => {
134
+ const id = getItemDomId(item);
135
+ return createElement(ListItem, {
136
+ key: id,
137
+ id: id,
138
+ item: item,
139
+ isSelected: item === selectedItem,
140
+ onSelect: onSelect,
141
+ mediaField: mediaField,
142
+ primaryField: primaryField,
143
+ visibleFields: visibleFields
144
+ });
99
145
  }));
100
146
  }
101
147
  //# sourceMappingURL=view-list.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["classNames","useAsyncList","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","Spinner","ENTER","SPACE","info","__","ViewList","view","fields","data","isLoading","getItemId","onSelectionChange","onDetailsChange","selection","deferredRendering","shownData","step","usedData","mediaField","find","field","id","layout","primaryField","visibleFields","filter","hiddenFields","includes","onEnter","item","event","keyCode","hasData","length","createElement","className","map","key","role","tabIndex","onKeyDown","onClick","spacing","justify","alignment","render","icon","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\tSpinner,\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 ? <Spinner /> : __( '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\n\t\t\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t\t\t>\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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"}
1
+ {"version":3,"names":["classNames","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useRef","__","unlock","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","ListItem","id","item","isSelected","onSelect","mediaField","primaryField","visibleFields","itemRef","labelId","descriptionId","current","scrollIntoView","behavior","block","inline","createElement","ref","render","role","className","onClick","spacing","justify","alignment","map","field","key","as","header","ViewList","view","fields","data","isLoading","getItemId","onSelectionChange","selection","preferredId","baseId","selectedItem","findLast","includes","find","layout","filter","hiddenFields","getItemDomId","undefined","store","defaultActiveId","hasData","length"],"sources":["@wordpress/dataviews/src/view-list.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem( {\n\tid,\n\titem,\n\tisSelected,\n\tonSelect,\n\tmediaField,\n\tprimaryField,\n\tvisibleFields,\n} ) {\n\tconst itemRef = useRef( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\treturn (\n\t\t<CompositeRow\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ classNames( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\">\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\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) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__primary-field\"\n\t\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\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>\n\t\t\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\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{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</CompositeItem>\n\t\t\t\t</div>\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList( {\n\tview,\n\tfields,\n\tdata,\n\tisLoading,\n\tgetItemId,\n\tonSelectionChange,\n\tselection,\n\tid: preferredId,\n} ) {\n\tconst baseId = useInstanceId( ViewList, 'view-list', preferredId );\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( item.id )\n\t);\n\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 onSelect = useCallback(\n\t\t( item ) => onSelectionChange( [ item ] ),\n\t\t[ onSelectionChange ]\n\t);\n\n\tconst getItemDomId = useCallback(\n\t\t( item ) => ( item ? `${ baseId }-${ getItemId( item ) }` : undefined ),\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst store = useCompositeStore( {\n\t\tdefaultActiveId: getItemDomId( selectedItem ),\n\t} );\n\n\tconst hasData = data?.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 ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = getItemDomId( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,6 @@ import classnames from 'classnames';
8
8
  * WordPress dependencies
9
9
  */
10
10
  import { __ } from '@wordpress/i18n';
11
- import { useAsyncList } from '@wordpress/compose';
12
11
  import { unseen, funnel } from '@wordpress/icons';
13
12
  import { Button, Icon, privateApis as componentsPrivateApis, CheckboxControl, Spinner } from '@wordpress/components';
14
13
  import { forwardRef, useEffect, useId, useRef, useState, useMemo, Children, Fragment } from '@wordpress/element';
@@ -20,7 +19,7 @@ import SingleSelectionCheckbox from './single-selection-checkbox';
20
19
  import { unlock } from './lock-unlock';
21
20
  import ItemActions from './item-actions';
22
21
  import { sanitizeOperators } from './utils';
23
- import { ENUMERATION_TYPE, SORTING_DIRECTIONS } from './constants';
22
+ import { SORTING_DIRECTIONS } from './constants';
24
23
  import { useSomeItemHasAPossibleBulkAction, useHasAPossibleBulkAction } from './bulk-actions';
25
24
  const {
26
25
  DropdownMenuV2: DropdownMenu,
@@ -56,7 +55,7 @@ const HeaderMenu = forwardRef(function HeaderMenu({
56
55
  // 1. If the field is not already part of a view's filters.
57
56
  // 2. If the field meets the type and operator requirements.
58
57
  // 3. If it's not primary. If it is, it should be already visible.
59
- const canAddFilter = !view.filters?.some(_filter => field.id === _filter.field) && field.type === ENUMERATION_TYPE && !!operators.length && !field.filterBy?.isPrimary;
58
+ const canAddFilter = !view.filters?.some(_filter => field.id === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary;
60
59
  if (!isSortable && !isHidable && !canAddFilter) {
61
60
  return field.header;
62
61
  }
@@ -150,7 +149,7 @@ function BulkSelectionCheckbox({
150
149
  onSelectionChange(selectableItems);
151
150
  }
152
151
  },
153
- label: areAllSelected ? __('Deselect all') : __('Select all')
152
+ "aria-label": areAllSelected ? __('Deselect all') : __('Select all')
154
153
  });
155
154
  }
156
155
  function TableRow({
@@ -174,20 +173,24 @@ function TableRow({
174
173
  const handleMouseLeave = () => {
175
174
  setIsHovered(false);
176
175
  };
176
+
177
+ // Will be set to true if `onTouchStart` fires. This happens before
178
+ // `onClick` and can be used to exclude touchscreen devices from certain
179
+ // behaviours.
180
+ const isTouchDevice = useRef(false);
177
181
  return createElement("tr", {
178
182
  className: classnames('dataviews-view-table__row', {
179
- 'is-selected': hasPossibleBulkAction && selection.includes(id),
180
- 'is-hovered': isHovered
183
+ 'is-selected': hasPossibleBulkAction && isSelected,
184
+ 'is-hovered': isHovered,
185
+ 'has-bulk-actions': hasPossibleBulkAction
181
186
  }),
182
187
  onMouseEnter: handleMouseEnter,
183
188
  onMouseLeave: handleMouseLeave,
184
- onClickCapture: event => {
185
- if (event.ctrlKey || event.metaKey) {
186
- event.stopPropagation();
187
- event.preventDefault();
188
- if (!hasPossibleBulkAction) {
189
- return;
190
- }
189
+ onTouchStart: () => {
190
+ isTouchDevice.current = true;
191
+ },
192
+ onClick: () => {
193
+ if (!isTouchDevice.current && document.getSelection().type !== 'Range') {
191
194
  if (!isSelected) {
192
195
  onSelectionChange(data.filter(_item => {
193
196
  const itemId = getItemId?.(_item);
@@ -204,8 +207,7 @@ function TableRow({
204
207
  }, hasBulkActions && createElement("td", {
205
208
  className: "dataviews-view-table__checkbox-column",
206
209
  style: {
207
- width: 20,
208
- minWidth: 20
210
+ width: '1%'
209
211
  }
210
212
  }, createElement("div", {
211
213
  className: "dataviews-view-table__cell-content-wrapper"
@@ -231,12 +233,22 @@ function TableRow({
231
233
  })
232
234
  }, field.render({
233
235
  item
234
- })))), !!actions?.length && createElement("td", {
235
- className: "dataviews-view-table__actions-column"
236
+ })))), !!actions?.length &&
237
+ // Disable reason: we are not making the element interactive,
238
+ // but preventing any click events from bubbling up to the
239
+ // table row. This allows us to add a click handler to the row
240
+ // itself (to toggle row selection) without erroneously
241
+ // intercepting click events from ItemActions.
242
+
243
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
244
+ createElement("td", {
245
+ className: "dataviews-view-table__actions-column",
246
+ onClick: e => e.stopPropagation()
236
247
  }, createElement(ItemActions, {
237
248
  item: item,
238
249
  actions: actions
239
- })));
250
+ }))
251
+ /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */);
240
252
  }
241
253
  function ViewTable({
242
254
  view,
@@ -246,7 +258,6 @@ function ViewTable({
246
258
  data,
247
259
  getItemId,
248
260
  isLoading = false,
249
- deferredRendering,
250
261
  selection,
251
262
  onSelectionChange,
252
263
  setOpenedFilter
@@ -261,7 +272,6 @@ function ViewTable({
261
272
  headerMenuToFocusRef.current = undefined;
262
273
  }
263
274
  });
264
- const asyncData = useAsyncList(data);
265
275
  const tableNoticeId = useId();
266
276
  if (nextHeaderMenuToFocus) {
267
277
  // If we need to force focus, we short-circuit rendering here
@@ -278,8 +288,7 @@ function ViewTable({
278
288
  setNextHeaderMenuToFocus(fallback?.node);
279
289
  };
280
290
  const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField].includes(field.id));
281
- const usedData = deferredRendering ? asyncData : data;
282
- const hasData = !!usedData?.length;
291
+ const hasData = !!data?.length;
283
292
  const sortValues = {
284
293
  asc: 'ascending',
285
294
  desc: 'descending'
@@ -294,8 +303,7 @@ function ViewTable({
294
303
  }, hasBulkActions && createElement("th", {
295
304
  className: "dataviews-view-table__checkbox-column",
296
305
  style: {
297
- width: 20,
298
- minWidth: 20
306
+ width: '1%'
299
307
  },
300
308
  "data-field-id": "selection",
301
309
  scope: "col"
@@ -335,7 +343,7 @@ function ViewTable({
335
343
  className: "dataviews-view-table__actions-column"
336
344
  }, createElement("span", {
337
345
  className: "dataviews-view-table-header"
338
- }, __('Actions'))))), createElement("tbody", null, hasData && usedData.map((item, index) => createElement(TableRow, {
346
+ }, __('Actions'))))), createElement("tbody", null, hasData && data.map((item, index) => createElement(TableRow, {
339
347
  key: getItemId(item),
340
348
  item: item,
341
349
  hasBulkActions: hasBulkActions,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","__","useAsyncList","unseen","funnel","Button","Icon","privateApis","componentsPrivateApis","CheckboxControl","Spinner","forwardRef","useEffect","useId","useRef","useState","useMemo","Children","Fragment","SingleSelectionCheckbox","unlock","ItemActions","sanitizeOperators","ENUMERATION_TYPE","SORTING_DIRECTIONS","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuSeparatorV2","DropdownMenuSeparator","WithDropDownMenuSeparators","children","toArray","filter","Boolean","map","child","i","createElement","key","sortArrows","asc","desc","HeaderMenu","field","view","onChangeView","onHide","setOpenedFilter","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","operators","canAddFilter","filters","some","_filter","type","length","filterBy","isPrimary","header","align","trigger","size","className","variant","direction","style","minWidth","Object","entries","info","isChecked","value","name","checked","onChange","label","prefix","icon","onClick","page","undefined","operator","hiddenFields","concat","BulkSelectionCheckbox","selection","onSelectionChange","data","actions","selectableItems","item","action","supportsBulk","isEligible","areAllSelected","__nextHasNoMarginBottom","indeterminate","TableRow","hasBulkActions","visibleFields","primaryField","getItemId","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","onMouseEnter","onMouseLeave","onClickCapture","event","ctrlKey","metaKey","stopPropagation","preventDefault","_item","itemId","width","disabled","maxWidth","render","ViewTable","fields","isLoading","deferredRendering","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","current","focus","asyncData","tableNoticeId","hidden","get","fallback","node","layout","mediaField","usedData","hasData","sortValues","find","scope","index","set","delete"],"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\tCheckboxControl,\n\tSpinner,\n} from '@wordpress/components';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n\tChildren,\n\tFragment,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox from './single-selection-checkbox';\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { sanitizeOperators } from './utils';\nimport { ENUMERATION_TYPE, SORTING_DIRECTIONS } from './constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n} from './bulk-actions';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\nfunction WithDropDownMenuSeparators( { 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\nconst sortArrows = { asc: '↑', desc: '↓' };\n\nconst HeaderMenu = forwardRef( function HeaderMenu(\n\t{ field, view, onChangeView, onHide, setOpenedFilter },\n\tref\n) {\n\tconst isHidable = field.enableHiding !== false;\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\tconst operators = sanitizeOperators( field );\n\t// Filter can be added:\n\t// 1. If the field is not already part of a view's filters.\n\t// 2. If the field meets the type and operator requirements.\n\t// 3. If it's not primary. If it is, it should be already visible.\n\tconst canAddFilter =\n\t\t! view.filters?.some( ( _filter ) => field.id === _filter.field ) &&\n\t\tfield.type === ENUMERATION_TYPE &&\n\t\t!! operators.length &&\n\t\t! field.filterBy?.isPrimary;\n\tif ( ! isSortable && ! isHidable && ! canAddFilter ) {\n\t\treturn field.header;\n\t}\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<WithDropDownMenuSeparators>\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{ canAddFilter && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( field.id );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\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>\n\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t</DropdownMenuItem>\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</WithDropDownMenuSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\nfunction BulkSelectionCheckbox( {\n\tselection,\n\tonSelectionChange,\n\tdata,\n\tactions,\n} ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) => action.supportsBulk && action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst areAllSelected = selection.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 && 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( selectableItems );\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 TableRow( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tid,\n\tvisibleFields,\n\tprimaryField,\n\tselection,\n\tgetItemId,\n\tonSelectionChange,\n\tdata,\n} ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\n\tconst isSelected = selection.includes( id );\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ classnames( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected':\n\t\t\t\t\thasPossibleBulkAction && selection.includes( id ),\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ! isSelected ) {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId === id ||\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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} else {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId !== id &&\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: 20,\n\t\t\t\t\t\tminWidth: 20,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t<td\n\t\t\t\t\tkey={ field.id }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'dataviews-view-table__cell-content-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\t\t\t\t\tprimaryField?.id === field.id,\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{ field.render( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t<td className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t) }\n\t\t</tr>\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\tsetOpenedFilter,\n} ) {\n\tconst headerMenuRefs = useRef( new Map() );\n\tconst headerMenuToFocusRef = useRef();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] = useState();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\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<>\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\tactions={ actions }\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\tsetOpenedFilter={ setOpenedFilter }\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<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t/>\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 ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","__","unseen","funnel","Button","Icon","privateApis","componentsPrivateApis","CheckboxControl","Spinner","forwardRef","useEffect","useId","useRef","useState","useMemo","Children","Fragment","SingleSelectionCheckbox","unlock","ItemActions","sanitizeOperators","SORTING_DIRECTIONS","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuSeparatorV2","DropdownMenuSeparator","WithDropDownMenuSeparators","children","toArray","filter","Boolean","map","child","i","createElement","key","sortArrows","asc","desc","HeaderMenu","field","view","onChangeView","onHide","setOpenedFilter","ref","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","id","operators","canAddFilter","filters","some","_filter","elements","length","filterBy","isPrimary","header","align","trigger","size","className","variant","direction","style","minWidth","Object","entries","info","isChecked","value","name","checked","onChange","label","prefix","icon","onClick","page","undefined","operator","hiddenFields","concat","BulkSelectionCheckbox","selection","onSelectionChange","data","actions","selectableItems","item","action","supportsBulk","isEligible","areAllSelected","__nextHasNoMarginBottom","indeterminate","TableRow","hasBulkActions","visibleFields","primaryField","getItemId","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDevice","onMouseEnter","onMouseLeave","onTouchStart","current","document","getSelection","type","_item","itemId","width","disabled","maxWidth","render","e","stopPropagation","ViewTable","fields","isLoading","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","tableNoticeId","hidden","get","fallback","node","layout","mediaField","hasData","sortValues","find","scope","index","set","delete"],"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 { unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n\tCheckboxControl,\n\tSpinner,\n} from '@wordpress/components';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n\tChildren,\n\tFragment,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox from './single-selection-checkbox';\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { sanitizeOperators } from './utils';\nimport { SORTING_DIRECTIONS } from './constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n} from './bulk-actions';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\nfunction WithDropDownMenuSeparators( { 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\nconst sortArrows = { asc: '↑', desc: '↓' };\n\nconst HeaderMenu = forwardRef( function HeaderMenu(\n\t{ field, view, onChangeView, onHide, setOpenedFilter },\n\tref\n) {\n\tconst isHidable = field.enableHiding !== false;\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\tconst operators = sanitizeOperators( field );\n\t// Filter can be added:\n\t// 1. If the field is not already part of a view's filters.\n\t// 2. If the field meets the type and operator requirements.\n\t// 3. If it's not primary. If it is, it should be already visible.\n\tconst canAddFilter =\n\t\t! view.filters?.some( ( _filter ) => field.id === _filter.field ) &&\n\t\t!! field.elements?.length &&\n\t\t!! operators.length &&\n\t\t! field.filterBy?.isPrimary;\n\tif ( ! isSortable && ! isHidable && ! canAddFilter ) {\n\t\treturn field.header;\n\t}\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<WithDropDownMenuSeparators>\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{ canAddFilter && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( field.id );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\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>\n\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t</DropdownMenuItem>\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</WithDropDownMenuSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\nfunction BulkSelectionCheckbox( {\n\tselection,\n\tonSelectionChange,\n\tdata,\n\tactions,\n} ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) => action.supportsBulk && action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst areAllSelected = selection.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 && 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( selectableItems );\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\nfunction TableRow( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tid,\n\tvisibleFields,\n\tprimaryField,\n\tselection,\n\tgetItemId,\n\tonSelectionChange,\n\tdata,\n} ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = selection.includes( id );\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDevice = useRef( false );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ classnames( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDevice.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDevice.current &&\n\t\t\t\t\tdocument.getSelection().type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tif ( ! isSelected ) {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId === id ||\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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} else {\n\t\t\t\t\t\tonSelectionChange(\n\t\t\t\t\t\t\tdata.filter( ( _item ) => {\n\t\t\t\t\t\t\t\tconst itemId = getItemId?.( _item );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\titemId !== id &&\n\t\t\t\t\t\t\t\t\tselection.includes( itemId )\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}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t<td\n\t\t\t\t\tkey={ field.id }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'dataviews-view-table__cell-content-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\t\t\t\t\tprimaryField?.id === field.id,\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{ field.render( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tselection,\n\tonSelectionChange,\n\tsetOpenedFilter,\n} ) {\n\tconst headerMenuRefs = useRef( new Map() );\n\tconst headerMenuToFocusRef = useRef();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] = useState();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\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 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 hasData = !! data?.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<>\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: '1%',\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\tactions={ actions }\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\tsetOpenedFilter={ setOpenedFilter }\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\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t/>\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 ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}