@wordpress/dataviews 1.1.0 → 2.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 (176) hide show
  1. package/CHANGELOG.md +27 -5
  2. package/README.md +33 -30
  3. package/build/add-filter.js +30 -22
  4. package/build/add-filter.js.map +1 -1
  5. package/build/bulk-actions-toolbar.js +187 -0
  6. package/build/bulk-actions-toolbar.js.map +1 -0
  7. package/build/bulk-actions.js +75 -62
  8. package/build/bulk-actions.js.map +1 -1
  9. package/build/constants.js +17 -10
  10. package/build/constants.js.map +1 -1
  11. package/build/dataviews.js +64 -50
  12. package/build/dataviews.js.map +1 -1
  13. package/build/filter-and-sort-data-view.js +2 -2
  14. package/build/filter-and-sort-data-view.js.map +1 -1
  15. package/build/filter-summary.js +106 -96
  16. package/build/filter-summary.js.map +1 -1
  17. package/build/filters.js +18 -17
  18. package/build/filters.js.map +1 -1
  19. package/build/index.js.map +1 -1
  20. package/build/item-actions.js +101 -69
  21. package/build/item-actions.js.map +1 -1
  22. package/build/layouts.js.map +1 -1
  23. package/build/lock-unlock.js.map +1 -1
  24. package/build/normalize-fields.js.map +1 -1
  25. package/build/pagination.js +66 -57
  26. package/build/pagination.js.map +1 -1
  27. package/build/reset-filters.js +9 -4
  28. package/build/reset-filters.js.map +1 -1
  29. package/build/search-widget.js +108 -89
  30. package/build/search-widget.js.map +1 -1
  31. package/build/search.js +13 -6
  32. package/build/search.js.map +1 -1
  33. package/build/single-selection-checkbox.js +6 -2
  34. package/build/single-selection-checkbox.js.map +1 -1
  35. package/build/types.js.map +1 -1
  36. package/build/utils.js +3 -15
  37. package/build/utils.js.map +1 -1
  38. package/build/view-actions.js +168 -120
  39. package/build/view-actions.js.map +1 -1
  40. package/build/view-grid.js +119 -106
  41. package/build/view-grid.js.map +1 -1
  42. package/build/view-list.js +217 -83
  43. package/build/view-list.js.map +1 -1
  44. package/build/view-table.js +227 -199
  45. package/build/view-table.js.map +1 -1
  46. package/build-module/add-filter.js +30 -22
  47. package/build-module/add-filter.js.map +1 -1
  48. package/build-module/bulk-actions-toolbar.js +182 -0
  49. package/build-module/bulk-actions-toolbar.js.map +1 -0
  50. package/build-module/bulk-actions.js +77 -62
  51. package/build-module/bulk-actions.js.map +1 -1
  52. package/build-module/constants.js +16 -9
  53. package/build-module/constants.js.map +1 -1
  54. package/build-module/dataviews.js +65 -50
  55. package/build-module/dataviews.js.map +1 -1
  56. package/build-module/filter-and-sort-data-view.js +2 -2
  57. package/build-module/filter-and-sort-data-view.js.map +1 -1
  58. package/build-module/filter-summary.js +107 -97
  59. package/build-module/filter-summary.js.map +1 -1
  60. package/build-module/filters.js +18 -17
  61. package/build-module/filters.js.map +1 -1
  62. package/build-module/index.js.map +1 -1
  63. package/build-module/item-actions.js +102 -71
  64. package/build-module/item-actions.js.map +1 -1
  65. package/build-module/layouts.js.map +1 -1
  66. package/build-module/lock-unlock.js.map +1 -1
  67. package/build-module/normalize-fields.js.map +1 -1
  68. package/build-module/pagination.js +67 -57
  69. package/build-module/pagination.js.map +1 -1
  70. package/build-module/reset-filters.js +9 -4
  71. package/build-module/reset-filters.js.map +1 -1
  72. package/build-module/search-widget.js +109 -89
  73. package/build-module/search-widget.js.map +1 -1
  74. package/build-module/search.js +13 -6
  75. package/build-module/search.js.map +1 -1
  76. package/build-module/single-selection-checkbox.js +6 -2
  77. package/build-module/single-selection-checkbox.js.map +1 -1
  78. package/build-module/types.js.map +1 -1
  79. package/build-module/utils.js +2 -13
  80. package/build-module/utils.js.map +1 -1
  81. package/build-module/view-actions.js +170 -121
  82. package/build-module/view-actions.js.map +1 -1
  83. package/build-module/view-grid.js +121 -106
  84. package/build-module/view-grid.js.map +1 -1
  85. package/build-module/view-list.js +219 -85
  86. package/build-module/view-list.js.map +1 -1
  87. package/build-module/view-table.js +230 -201
  88. package/build-module/view-table.js.map +1 -1
  89. package/build-style/style-rtl.css +168 -44
  90. package/build-style/style.css +168 -44
  91. package/build-types/add-filter.d.ts +11 -0
  92. package/build-types/add-filter.d.ts.map +1 -0
  93. package/build-types/bulk-actions-toolbar.d.ts +12 -0
  94. package/build-types/bulk-actions-toolbar.d.ts.map +1 -0
  95. package/build-types/bulk-actions.d.ts +14 -0
  96. package/build-types/bulk-actions.d.ts.map +1 -0
  97. package/build-types/constants.d.ts +19 -32
  98. package/build-types/constants.d.ts.map +1 -1
  99. package/build-types/dataviews.d.ts +22 -0
  100. package/build-types/dataviews.d.ts.map +1 -0
  101. package/build-types/filter-and-sort-data-view.d.ts +3 -3
  102. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  103. package/build-types/filter-summary.d.ts +14 -0
  104. package/build-types/filter-summary.d.ts.map +1 -0
  105. package/build-types/filters.d.ts +13 -0
  106. package/build-types/filters.d.ts.map +1 -0
  107. package/build-types/index.d.ts +4 -0
  108. package/build-types/index.d.ts.map +1 -0
  109. package/build-types/item-actions.d.ts +35 -0
  110. package/build-types/item-actions.d.ts.map +1 -0
  111. package/build-types/layouts.d.ts +24 -0
  112. package/build-types/layouts.d.ts.map +1 -0
  113. package/build-types/lock-unlock.d.ts +2 -0
  114. package/build-types/lock-unlock.d.ts.map +1 -0
  115. package/build-types/normalize-fields.d.ts +2 -2
  116. package/build-types/normalize-fields.d.ts.map +1 -1
  117. package/build-types/pagination.d.ts +16 -0
  118. package/build-types/pagination.d.ts.map +1 -0
  119. package/build-types/reset-filters.d.ts +13 -0
  120. package/build-types/reset-filters.d.ts.map +1 -0
  121. package/build-types/search-widget.d.ts +10 -0
  122. package/build-types/search-widget.d.ts.map +1 -0
  123. package/build-types/search.d.ts +13 -0
  124. package/build-types/search.d.ts.map +1 -0
  125. package/build-types/single-selection-checkbox.d.ts +17 -0
  126. package/build-types/single-selection-checkbox.d.ts.map +1 -0
  127. package/build-types/stories/fixtures.d.ts +114 -0
  128. package/build-types/stories/fixtures.d.ts.map +1 -0
  129. package/build-types/stories/index.story.d.ts +15 -0
  130. package/build-types/stories/index.story.d.ts.map +1 -0
  131. package/build-types/types.d.ts +221 -21
  132. package/build-types/types.d.ts.map +1 -1
  133. package/build-types/utils.d.ts +3 -0
  134. package/build-types/utils.d.ts.map +1 -0
  135. package/build-types/view-actions.d.ts +12 -0
  136. package/build-types/view-actions.d.ts.map +1 -0
  137. package/build-types/view-grid.d.ts +4 -0
  138. package/build-types/view-grid.d.ts.map +1 -0
  139. package/build-types/view-list.d.ts +4 -0
  140. package/build-types/view-list.d.ts.map +1 -0
  141. package/build-types/view-table.d.ts +5 -0
  142. package/build-types/view-table.d.ts.map +1 -0
  143. package/package.json +12 -13
  144. package/src/{add-filter.js → add-filter.tsx} +17 -1
  145. package/src/bulk-actions-toolbar.tsx +272 -0
  146. package/src/{bulk-actions.js → bulk-actions.tsx} +77 -17
  147. package/src/constants.ts +12 -5
  148. package/src/{dataviews.js → dataviews.tsx} +54 -14
  149. package/src/filter-and-sort-data-view.ts +13 -8
  150. package/src/{filter-summary.js → filter-summary.tsx} +38 -9
  151. package/src/{filters.js → filters.tsx} +18 -6
  152. package/src/{item-actions.js → item-actions.tsx} +119 -30
  153. package/src/normalize-fields.ts +4 -2
  154. package/src/{pagination.js → pagination.tsx} +29 -8
  155. package/src/{reset-filters.js → reset-filters.tsx} +17 -2
  156. package/src/{search-widget.js → search-widget.tsx} +27 -7
  157. package/src/{search.js → search.tsx} +22 -5
  158. package/src/{single-selection-checkbox.js → single-selection-checkbox.tsx} +17 -2
  159. package/src/style.scss +166 -43
  160. package/src/types.ts +286 -21
  161. package/src/{utils.js → utils.ts} +5 -13
  162. package/src/{view-actions.js → view-actions.tsx} +105 -49
  163. package/src/{view-grid.js → view-grid.tsx} +31 -18
  164. package/src/view-list.tsx +410 -0
  165. package/src/{view-table.js → view-table.tsx} +99 -40
  166. package/tsconfig.json +3 -4
  167. package/tsconfig.tsbuildinfo +1 -1
  168. package/build/dropdown-menu-helper.js +0 -71
  169. package/build/dropdown-menu-helper.js.map +0 -1
  170. package/build-module/dropdown-menu-helper.js +0 -64
  171. package/build-module/dropdown-menu-helper.js.map +0 -1
  172. package/src/dropdown-menu-helper.js +0 -61
  173. package/src/view-list.js +0 -207
  174. /package/src/{index.js → index.ts} +0 -0
  175. /package/src/{layouts.js → layouts.ts} +0 -0
  176. /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
@@ -1,39 +1,54 @@
1
- import { createElement } from "react";
2
1
  /**
3
2
  * External dependencies
4
3
  */
5
- import classNames from 'classnames';
4
+ import clsx from 'clsx';
5
+ // Import CompositeStore type, which is not exported from @wordpress/components.
6
+ // eslint-disable-next-line no-restricted-imports
6
7
 
7
8
  /**
8
9
  * WordPress dependencies
9
10
  */
10
11
  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';
12
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, Button, privateApis as componentsPrivateApis, Spinner, VisuallyHidden } from '@wordpress/components';
13
+ import { useCallback, useEffect, useMemo, useRef, useState } from '@wordpress/element';
13
14
  import { __ } from '@wordpress/i18n';
15
+ import { moreVertical } from '@wordpress/icons';
14
16
 
15
17
  /**
16
18
  * Internal dependencies
17
19
  */
18
20
  import { unlock } from './lock-unlock';
21
+ import { ActionsDropdownMenuGroup, ActionModal } from './item-actions';
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { jsxs as _jsxs } from "react/jsx-runtime";
19
24
  const {
20
25
  useCompositeStoreV2: useCompositeStore,
21
26
  CompositeV2: Composite,
22
27
  CompositeItemV2: CompositeItem,
23
- CompositeRowV2: CompositeRow
28
+ CompositeRowV2: CompositeRow,
29
+ DropdownMenuV2: DropdownMenu
24
30
  } = unlock(componentsPrivateApis);
25
31
  function ListItem({
32
+ actions,
26
33
  id,
27
- item,
28
34
  isSelected,
29
- onSelect,
35
+ item,
30
36
  mediaField,
37
+ onSelect,
31
38
  primaryField,
39
+ store,
32
40
  visibleFields
33
41
  }) {
34
42
  const itemRef = useRef(null);
35
43
  const labelId = `${id}-label`;
36
44
  const descriptionId = `${id}-description`;
45
+ const [isHovered, setIsHovered] = useState(false);
46
+ const handleMouseEnter = () => {
47
+ setIsHovered(true);
48
+ };
49
+ const handleMouseLeave = () => {
50
+ setIsHovered(false);
51
+ };
37
52
  useEffect(() => {
38
53
  if (isSelected) {
39
54
  itemRef.current?.scrollIntoView({
@@ -43,69 +58,170 @@ function ListItem({
43
58
  });
44
59
  }
45
60
  }, [isSelected]);
46
- return createElement(CompositeRow, {
61
+ const {
62
+ primaryAction,
63
+ eligibleActions
64
+ } = useMemo(() => {
65
+ // If an action is eligible for all items, doesn't need
66
+ // to provide the `isEligible` function.
67
+ const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item));
68
+ const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon);
69
+ return {
70
+ primaryAction: _primaryActions?.[0],
71
+ eligibleActions: _eligibleActions
72
+ };
73
+ }, [actions, item]);
74
+ const [isModalOpen, setIsModalOpen] = useState(false);
75
+ const primaryActionLabel = primaryAction && (typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item]));
76
+ return /*#__PURE__*/_jsx(CompositeRow, {
47
77
  ref: itemRef,
48
- render: createElement("li", null),
78
+ render: /*#__PURE__*/_jsx("li", {}),
49
79
  role: "row",
50
- className: classNames({
51
- 'is-selected': isSelected
80
+ className: clsx({
81
+ 'is-selected': isSelected,
82
+ 'is-hovered': isHovered
83
+ }),
84
+ onMouseEnter: handleMouseEnter,
85
+ onMouseLeave: handleMouseLeave,
86
+ children: /*#__PURE__*/_jsxs(HStack, {
87
+ className: "dataviews-view-list__item-wrapper",
88
+ alignment: "center",
89
+ spacing: 0,
90
+ children: [/*#__PURE__*/_jsx("div", {
91
+ role: "gridcell",
92
+ children: /*#__PURE__*/_jsx(CompositeItem, {
93
+ store: store,
94
+ render: /*#__PURE__*/_jsx("div", {}),
95
+ role: "button",
96
+ id: id,
97
+ "aria-pressed": isSelected,
98
+ "aria-labelledby": labelId,
99
+ "aria-describedby": descriptionId,
100
+ className: "dataviews-view-list__item",
101
+ onClick: () => onSelect(item),
102
+ children: /*#__PURE__*/_jsxs(HStack, {
103
+ spacing: 3,
104
+ justify: "start",
105
+ alignment: "flex-start",
106
+ children: [/*#__PURE__*/_jsx("div", {
107
+ className: "dataviews-view-list__media-wrapper",
108
+ children: mediaField?.render({
109
+ item
110
+ }) || /*#__PURE__*/_jsx("div", {
111
+ className: "dataviews-view-list__media-placeholder"
112
+ })
113
+ }), /*#__PURE__*/_jsxs(VStack, {
114
+ spacing: 0,
115
+ children: [/*#__PURE__*/_jsx("span", {
116
+ className: "dataviews-view-list__primary-field",
117
+ id: labelId,
118
+ children: primaryField?.render({
119
+ item
120
+ })
121
+ }), /*#__PURE__*/_jsx("div", {
122
+ className: "dataviews-view-list__fields",
123
+ id: descriptionId,
124
+ children: visibleFields.map(field => /*#__PURE__*/_jsxs("div", {
125
+ className: "dataviews-view-list__field",
126
+ children: [/*#__PURE__*/_jsx(VisuallyHidden, {
127
+ as: "span",
128
+ className: "dataviews-view-list__field-label",
129
+ children: field.header
130
+ }), /*#__PURE__*/_jsx("span", {
131
+ className: "dataviews-view-list__field-value",
132
+ children: field.render({
133
+ item
134
+ })
135
+ })]
136
+ }, field.id))
137
+ })]
138
+ })]
139
+ })
140
+ })
141
+ }), actions?.length > 0 && /*#__PURE__*/_jsxs(HStack, {
142
+ spacing: 1,
143
+ justify: "flex-end",
144
+ className: "dataviews-view-list__item-actions",
145
+ style: {
146
+ flexShrink: '0',
147
+ width: 'auto'
148
+ },
149
+ children: [primaryAction && 'RenderModal' in primaryAction && /*#__PURE__*/_jsx("div", {
150
+ role: "gridcell",
151
+ children: /*#__PURE__*/_jsx(CompositeItem, {
152
+ store: store,
153
+ render: /*#__PURE__*/_jsx(Button, {
154
+ label: primaryActionLabel,
155
+ icon: primaryAction.icon,
156
+ isDestructive: primaryAction.isDestructive,
157
+ size: "compact",
158
+ onClick: () => setIsModalOpen(true)
159
+ }),
160
+ children: isModalOpen && /*#__PURE__*/_jsx(ActionModal, {
161
+ action: primaryAction,
162
+ items: [item],
163
+ closeModal: () => setIsModalOpen(false)
164
+ })
165
+ })
166
+ }), primaryAction && !('RenderModal' in primaryAction) && /*#__PURE__*/_jsx("div", {
167
+ role: "gridcell",
168
+ children: /*#__PURE__*/_jsx(CompositeItem, {
169
+ store: store,
170
+ render: /*#__PURE__*/_jsx(Button, {
171
+ label: primaryActionLabel,
172
+ icon: primaryAction.icon,
173
+ isDestructive: primaryAction.isDestructive,
174
+ size: "compact",
175
+ onClick: () => primaryAction.callback([item])
176
+ })
177
+ })
178
+ }, primaryAction.id), /*#__PURE__*/_jsx("div", {
179
+ role: "gridcell",
180
+ children: /*#__PURE__*/_jsx(DropdownMenu, {
181
+ trigger: /*#__PURE__*/_jsx(CompositeItem, {
182
+ store: store,
183
+ render: /*#__PURE__*/_jsx(Button, {
184
+ size: "compact",
185
+ icon: moreVertical,
186
+ label: __('Actions'),
187
+ disabled: !actions.length,
188
+ onKeyDown: event => {
189
+ if (event.key === 'ArrowDown') {
190
+ // Prevent the default behaviour (open dropdown menu) and go down.
191
+ event.preventDefault();
192
+ store.move(store.down());
193
+ }
194
+ if (event.key === 'ArrowUp') {
195
+ // Prevent the default behavior (open dropdown menu) and go up.
196
+ event.preventDefault();
197
+ store.move(store.up());
198
+ }
199
+ }
200
+ })
201
+ }),
202
+ placement: "bottom-end",
203
+ children: /*#__PURE__*/_jsx(ActionsDropdownMenuGroup, {
204
+ actions: eligibleActions,
205
+ item: item
206
+ })
207
+ })
208
+ })]
209
+ })]
52
210
  })
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
- })))))))))));
211
+ });
97
212
  }
98
- export default function ViewList({
99
- view,
100
- fields,
101
- data,
102
- isLoading,
103
- getItemId,
104
- onSelectionChange,
105
- selection,
106
- id: preferredId
107
- }) {
108
- const baseId = useInstanceId(ViewList, 'view-list', preferredId);
213
+ export default function ViewList(props) {
214
+ const {
215
+ actions,
216
+ data,
217
+ fields,
218
+ getItemId,
219
+ isLoading,
220
+ onSelectionChange,
221
+ selection,
222
+ view
223
+ } = props;
224
+ const baseId = useInstanceId(ViewList, 'view-list');
109
225
  const selectedItem = data?.findLast(item => selection.includes(item.id));
110
226
  const mediaField = fields.find(field => field.id === view.layout.mediaField);
111
227
  const primaryField = fields.find(field => field.id === view.layout.primaryField);
@@ -115,33 +231,51 @@ export default function ViewList({
115
231
  const store = useCompositeStore({
116
232
  defaultActiveId: getItemDomId(selectedItem)
117
233
  });
234
+
235
+ // Manage focused item, when the active one is removed from the list.
236
+ const isActiveIdInList = store.useState(state => state.items.some(item => item.id === state.activeId));
237
+ useEffect(() => {
238
+ if (!isActiveIdInList) {
239
+ // Prefer going down, except if there is no item below (last item), then go up (last item in list).
240
+ if (store.down()) {
241
+ store.move(store.down());
242
+ } else if (store.up()) {
243
+ store.move(store.up());
244
+ }
245
+ }
246
+ }, [isActiveIdInList]);
118
247
  const hasData = data?.length;
119
248
  if (!hasData) {
120
- return createElement("div", {
121
- className: classNames({
249
+ return /*#__PURE__*/_jsx("div", {
250
+ className: clsx({
122
251
  'dataviews-loading': isLoading,
123
252
  'dataviews-no-results': !hasData && !isLoading
253
+ }),
254
+ children: !hasData && /*#__PURE__*/_jsx("p", {
255
+ children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : __('No results')
124
256
  })
125
- }, !hasData && createElement("p", null, isLoading ? createElement(Spinner, null) : __('No results')));
257
+ });
126
258
  }
127
- return createElement(Composite, {
259
+ return /*#__PURE__*/_jsx(Composite, {
128
260
  id: baseId,
129
- render: createElement("ul", null),
261
+ render: /*#__PURE__*/_jsx("ul", {}),
130
262
  className: "dataviews-view-list",
131
263
  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
- });
145
- }));
264
+ store: store,
265
+ children: data.map(item => {
266
+ const id = getItemDomId(item);
267
+ return /*#__PURE__*/_jsx(ListItem, {
268
+ id: id,
269
+ actions: actions,
270
+ item: item,
271
+ isSelected: item === selectedItem,
272
+ onSelect: onSelect,
273
+ mediaField: mediaField,
274
+ primaryField: primaryField,
275
+ store: store,
276
+ visibleFields: visibleFields
277
+ }, id);
278
+ })
279
+ });
146
280
  }
147
281
  //# sourceMappingURL=view-list.js.map
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"names":["clsx","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","unlock","ActionsDropdownMenuGroup","ActionModal","jsx","_jsx","jsxs","_jsxs","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","DropdownMenuV2","DropdownMenu","ListItem","actions","id","isSelected","item","mediaField","onSelect","primaryField","store","visibleFields","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","current","scrollIntoView","behavior","block","inline","primaryAction","eligibleActions","_eligibleActions","filter","action","isEligible","_primaryActions","isPrimary","icon","isModalOpen","setIsModalOpen","primaryActionLabel","label","ref","render","role","className","onMouseEnter","onMouseLeave","children","alignment","spacing","onClick","justify","map","field","as","header","length","style","flexShrink","width","isDestructive","size","items","closeModal","callback","trigger","disabled","onKeyDown","event","key","preventDefault","move","down","up","placement","ViewList","props","data","fields","getItemId","isLoading","onSelectionChange","selection","view","baseId","selectedItem","findLast","includes","find","layout","hiddenFields","getItemDomId","undefined","defaultActiveId","isActiveIdInList","state","some","activeId","hasData"],"sources":["@wordpress/dataviews/src/view-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n// Import CompositeStore type, which is not exported from @wordpress/components.\n// eslint-disable-next-line no-restricted-imports\nimport type { CompositeStore } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { Action, AnyItem, NormalizedField, ViewListProps } from './types';\n\nimport { ActionsDropdownMenuGroup, ActionModal } from './item-actions';\n\ninterface ListViewItemProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tid?: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tstore: CompositeStore;\n\tvisibleFields: NormalizedField< Item >[];\n}\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n\tDropdownMenuV2: DropdownMenu,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem< Item extends AnyItem >( {\n\tactions,\n\tid,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tstore,\n\tvisibleFields,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\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\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions?.[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst primaryActionLabel =\n\t\tprimaryAction &&\n\t\t( typeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] ) );\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={ clsx( {\n\t\t\t\t'is-selected': isSelected,\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>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tspacing={ 0 }\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\tstore={ store }\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={ 0 }>\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\t{ actions?.length > 0 && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tflexShrink: '0',\n\t\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ primaryAction && 'RenderModal' in primaryAction && (\n\t\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( true )\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>\n\t\t\t\t\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\t\t\t\tcloseModal={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false )\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</CompositeItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ primaryAction &&\n\t\t\t\t\t\t\t! ( 'RenderModal' in primaryAction ) && (\n\t\t\t\t\t\t\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\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\tsize=\"compact\"\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\tprimaryAction.callback( [\n\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] )\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</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ ( event: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreventDefault: () => void;\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ArrowDown'\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// Prevent the default behaviour (open dropdown menu) and go down.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.down()\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key === 'ArrowUp'\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// Prevent the default behavior (open dropdown menu) and go up.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.up()\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}\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\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList< Item extends AnyItem >(\n\tprops: ViewListProps< Item >\n) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonSelectionChange,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\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: Item ) => onSelectionChange( [ item ] ),\n\t\t[ onSelectionChange ]\n\t);\n\n\tconst getItemDomId = useCallback(\n\t\t( item?: Item ) =>\n\t\t\titem ? `${ 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\t// Manage focused item, when the active one is removed from the list.\n\tconst isActiveIdInList = store.useState(\n\t\t( state: { items: any[]; activeId: any } ) =>\n\t\t\tstate.items.some(\n\t\t\t\t( item: { id: any } ) => item.id === state.activeId\n\t\t\t)\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isActiveIdInList ) {\n\t\t\t// Prefer going down, except if there is no item below (last item), then go up (last item in list).\n\t\t\tif ( store.down() ) {\n\t\t\t\tstore.move( store.down() );\n\t\t\t} else if ( store.up() ) {\n\t\t\t\tstore.move( store.up() );\n\t\t\t}\n\t\t}\n\t}, [ isActiveIdInList ] );\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\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\tactions={ actions }\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\tstore={ store }\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":[]}