@wordpress/dataviews 5.0.0 → 6.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 (250) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/README.md +55 -27
  3. package/build/components/dataviews/index.js +13 -4
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-context/index.js +3 -1
  6. package/build/components/dataviews-context/index.js.map +1 -1
  7. package/build/components/dataviews-filters/filter.js +15 -8
  8. package/build/components/dataviews-filters/filter.js.map +1 -1
  9. package/build/components/dataviews-filters/index.js +16 -5
  10. package/build/components/dataviews-filters/index.js.map +1 -1
  11. package/build/components/dataviews-filters/input-widget.js +7 -1
  12. package/build/components/dataviews-filters/input-widget.js.map +1 -1
  13. package/build/components/dataviews-filters/reset-filters.js +2 -2
  14. package/build/components/dataviews-filters/reset-filters.js.map +1 -1
  15. package/build/components/dataviews-layout/index.js +5 -2
  16. package/build/components/dataviews-layout/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +4 -3
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/dataform-controls/boolean.js +15 -1
  20. package/build/dataform-controls/boolean.js.map +1 -1
  21. package/build/dataform-controls/date.js +385 -0
  22. package/build/dataform-controls/date.js.map +1 -0
  23. package/build/dataform-controls/datetime.js +5 -84
  24. package/build/dataform-controls/datetime.js.map +1 -1
  25. package/build/dataform-controls/email.js +15 -1
  26. package/build/dataform-controls/email.js.map +1 -1
  27. package/build/dataform-controls/index.js +2 -0
  28. package/build/dataform-controls/index.js.map +1 -1
  29. package/build/dataform-controls/integer.js +23 -4
  30. package/build/dataform-controls/integer.js.map +1 -1
  31. package/build/dataform-controls/relative-date-control.js +109 -0
  32. package/build/dataform-controls/relative-date-control.js.map +1 -0
  33. package/build/dataform-controls/select.js +12 -5
  34. package/build/dataform-controls/select.js.map +1 -1
  35. package/build/dataform-controls/text.js +15 -1
  36. package/build/dataform-controls/text.js.map +1 -1
  37. package/build/dataviews-layouts/grid/index.js +40 -23
  38. package/build/dataviews-layouts/grid/index.js.map +1 -1
  39. package/build/dataviews-layouts/grid/preview-size-picker.js +39 -85
  40. package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  41. package/build/dataviews-layouts/list/index.js +7 -3
  42. package/build/dataviews-layouts/list/index.js.map +1 -1
  43. package/build/dataviews-layouts/table/column-primary.js +18 -3
  44. package/build/dataviews-layouts/table/column-primary.js.map +1 -1
  45. package/build/dataviews-layouts/table/index.js +57 -5
  46. package/build/dataviews-layouts/table/index.js.map +1 -1
  47. package/build/field-types/array.js +27 -18
  48. package/build/field-types/array.js.map +1 -1
  49. package/build/field-types/boolean.js +11 -7
  50. package/build/field-types/boolean.js.map +1 -1
  51. package/build/field-types/date.js +21 -12
  52. package/build/field-types/date.js.map +1 -1
  53. package/build/field-types/datetime.js +19 -10
  54. package/build/field-types/datetime.js.map +1 -1
  55. package/build/field-types/email.js +22 -18
  56. package/build/field-types/email.js.map +1 -1
  57. package/build/field-types/index.js +16 -6
  58. package/build/field-types/index.js.map +1 -1
  59. package/build/field-types/integer.js +22 -17
  60. package/build/field-types/integer.js.map +1 -1
  61. package/build/field-types/media.js +19 -10
  62. package/build/field-types/media.js.map +1 -1
  63. package/build/field-types/text.js +19 -10
  64. package/build/field-types/text.js.map +1 -1
  65. package/build/filter-and-sort-data-view.js +6 -4
  66. package/build/filter-and-sort-data-view.js.map +1 -1
  67. package/build/normalize-fields.js +4 -5
  68. package/build/normalize-fields.js.map +1 -1
  69. package/build/types.js.map +1 -1
  70. package/build/validation.js +15 -2
  71. package/build/validation.js.map +1 -1
  72. package/build-module/components/dataviews/index.js +15 -6
  73. package/build-module/components/dataviews/index.js.map +1 -1
  74. package/build-module/components/dataviews-context/index.js +3 -1
  75. package/build-module/components/dataviews-context/index.js.map +1 -1
  76. package/build-module/components/dataviews-filters/filter.js +15 -8
  77. package/build-module/components/dataviews-filters/filter.js.map +1 -1
  78. package/build-module/components/dataviews-filters/index.js +16 -5
  79. package/build-module/components/dataviews-filters/index.js.map +1 -1
  80. package/build-module/components/dataviews-filters/input-widget.js +7 -1
  81. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  82. package/build-module/components/dataviews-filters/reset-filters.js +2 -2
  83. package/build-module/components/dataviews-filters/reset-filters.js.map +1 -1
  84. package/build-module/components/dataviews-layout/index.js +5 -2
  85. package/build-module/components/dataviews-layout/index.js.map +1 -1
  86. package/build-module/components/dataviews-view-config/index.js +4 -3
  87. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  88. package/build-module/dataform-controls/boolean.js +17 -2
  89. package/build-module/dataform-controls/boolean.js.map +1 -1
  90. package/build-module/dataform-controls/date.js +376 -0
  91. package/build-module/dataform-controls/date.js.map +1 -0
  92. package/build-module/dataform-controls/datetime.js +3 -84
  93. package/build-module/dataform-controls/datetime.js.map +1 -1
  94. package/build-module/dataform-controls/email.js +17 -2
  95. package/build-module/dataform-controls/email.js.map +1 -1
  96. package/build-module/dataform-controls/index.js +2 -0
  97. package/build-module/dataform-controls/index.js.map +1 -1
  98. package/build-module/dataform-controls/integer.js +24 -5
  99. package/build-module/dataform-controls/integer.js.map +1 -1
  100. package/build-module/dataform-controls/relative-date-control.js +100 -0
  101. package/build-module/dataform-controls/relative-date-control.js.map +1 -0
  102. package/build-module/dataform-controls/select.js +12 -5
  103. package/build-module/dataform-controls/select.js.map +1 -1
  104. package/build-module/dataform-controls/text.js +17 -2
  105. package/build-module/dataform-controls/text.js.map +1 -1
  106. package/build-module/dataviews-layouts/grid/index.js +41 -24
  107. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  108. package/build-module/dataviews-layouts/grid/preview-size-picker.js +40 -85
  109. package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  110. package/build-module/dataviews-layouts/list/index.js +7 -3
  111. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  112. package/build-module/dataviews-layouts/table/column-primary.js +18 -3
  113. package/build-module/dataviews-layouts/table/column-primary.js.map +1 -1
  114. package/build-module/dataviews-layouts/table/index.js +58 -6
  115. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  116. package/build-module/field-types/array.js +27 -18
  117. package/build-module/field-types/array.js.map +1 -1
  118. package/build-module/field-types/boolean.js +11 -7
  119. package/build-module/field-types/boolean.js.map +1 -1
  120. package/build-module/field-types/date.js +21 -12
  121. package/build-module/field-types/date.js.map +1 -1
  122. package/build-module/field-types/datetime.js +19 -10
  123. package/build-module/field-types/datetime.js.map +1 -1
  124. package/build-module/field-types/email.js +22 -18
  125. package/build-module/field-types/email.js.map +1 -1
  126. package/build-module/field-types/index.js +16 -6
  127. package/build-module/field-types/index.js.map +1 -1
  128. package/build-module/field-types/integer.js +22 -17
  129. package/build-module/field-types/integer.js.map +1 -1
  130. package/build-module/field-types/media.js +19 -10
  131. package/build-module/field-types/media.js.map +1 -1
  132. package/build-module/field-types/text.js +19 -10
  133. package/build-module/field-types/text.js.map +1 -1
  134. package/build-module/filter-and-sort-data-view.js +6 -4
  135. package/build-module/filter-and-sort-data-view.js.map +1 -1
  136. package/build-module/normalize-fields.js +4 -5
  137. package/build-module/normalize-fields.js.map +1 -1
  138. package/build-module/types.js.map +1 -1
  139. package/build-module/validation.js +15 -2
  140. package/build-module/validation.js.map +1 -1
  141. package/build-style/style-rtl.css +78 -43
  142. package/build-style/style.css +78 -43
  143. package/build-types/components/dataform/stories/index.story.d.ts +21 -0
  144. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  145. package/build-types/components/dataviews/index.d.ts +3 -2
  146. package/build-types/components/dataviews/index.d.ts.map +1 -1
  147. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  148. package/build-types/components/dataviews/stories/index.story.d.ts +16 -3
  149. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  150. package/build-types/components/dataviews-context/index.d.ts +4 -2
  151. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  152. package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
  153. package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
  154. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  155. package/build-types/components/dataviews-filters/reset-filters.d.ts.map +1 -1
  156. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  157. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  158. package/build-types/constants.d.ts +2 -2
  159. package/build-types/dataform-controls/boolean.d.ts.map +1 -1
  160. package/build-types/dataform-controls/date.d.ts +3 -0
  161. package/build-types/dataform-controls/date.d.ts.map +1 -0
  162. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  163. package/build-types/dataform-controls/email.d.ts.map +1 -1
  164. package/build-types/dataform-controls/index.d.ts.map +1 -1
  165. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  166. package/build-types/dataform-controls/relative-date-control.d.ts +46 -0
  167. package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -0
  168. package/build-types/dataform-controls/select.d.ts.map +1 -1
  169. package/build-types/dataform-controls/text.d.ts.map +1 -1
  170. package/build-types/dataviews-layouts/grid/index.d.ts +1 -1
  171. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  172. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts +0 -1
  173. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts.map +1 -1
  174. package/build-types/dataviews-layouts/index.d.ts +3 -3
  175. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  176. package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
  177. package/build-types/dataviews-layouts/table/index.d.ts +1 -1
  178. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  179. package/build-types/field-types/array.d.ts.map +1 -1
  180. package/build-types/field-types/boolean.d.ts +5 -4
  181. package/build-types/field-types/boolean.d.ts.map +1 -1
  182. package/build-types/field-types/date.d.ts +9 -5
  183. package/build-types/field-types/date.d.ts.map +1 -1
  184. package/build-types/field-types/datetime.d.ts +4 -3
  185. package/build-types/field-types/datetime.d.ts.map +1 -1
  186. package/build-types/field-types/email.d.ts +4 -3
  187. package/build-types/field-types/email.d.ts.map +1 -1
  188. package/build-types/field-types/index.d.ts.map +1 -1
  189. package/build-types/field-types/integer.d.ts +4 -3
  190. package/build-types/field-types/integer.d.ts.map +1 -1
  191. package/build-types/field-types/media.d.ts +4 -3
  192. package/build-types/field-types/media.d.ts.map +1 -1
  193. package/build-types/field-types/text.d.ts +4 -3
  194. package/build-types/field-types/text.d.ts.map +1 -1
  195. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  196. package/build-types/normalize-fields.d.ts.map +1 -1
  197. package/build-types/types.d.ts +20 -7
  198. package/build-types/types.d.ts.map +1 -1
  199. package/build-types/validation.d.ts.map +1 -1
  200. package/build-wp/index.js +1561 -670
  201. package/package.json +15 -14
  202. package/src/components/dataform/stories/index.story.tsx +229 -2
  203. package/src/components/dataviews/index.tsx +30 -10
  204. package/src/components/dataviews/stories/fixtures.tsx +3 -1
  205. package/src/components/dataviews/stories/index.story.tsx +49 -29
  206. package/src/components/dataviews/stories/style.css +6 -0
  207. package/src/components/dataviews-context/index.ts +8 -2
  208. package/src/components/dataviews-filters/filter.tsx +17 -7
  209. package/src/components/dataviews-filters/index.tsx +17 -2
  210. package/src/components/dataviews-filters/input-widget.tsx +7 -1
  211. package/src/components/dataviews-filters/reset-filters.tsx +4 -2
  212. package/src/components/dataviews-filters/style.scss +8 -2
  213. package/src/components/dataviews-layout/index.tsx +3 -0
  214. package/src/components/dataviews-view-config/index.tsx +5 -3
  215. package/src/dataform-controls/boolean.tsx +19 -2
  216. package/src/dataform-controls/date.tsx +499 -0
  217. package/src/dataform-controls/datetime.tsx +5 -91
  218. package/src/dataform-controls/email.tsx +19 -2
  219. package/src/dataform-controls/index.tsx +2 -0
  220. package/src/dataform-controls/integer.tsx +30 -4
  221. package/src/dataform-controls/relative-date-control.tsx +106 -0
  222. package/src/dataform-controls/select.tsx +23 -13
  223. package/src/dataform-controls/style.scss +19 -2
  224. package/src/dataform-controls/text.tsx +19 -2
  225. package/src/dataviews-layouts/grid/index.tsx +46 -24
  226. package/src/dataviews-layouts/grid/preview-size-picker.tsx +48 -73
  227. package/src/dataviews-layouts/grid/style.scss +15 -28
  228. package/src/dataviews-layouts/list/index.tsx +7 -4
  229. package/src/dataviews-layouts/list/style.scss +3 -3
  230. package/src/dataviews-layouts/table/column-primary.tsx +29 -5
  231. package/src/dataviews-layouts/table/index.tsx +134 -42
  232. package/src/dataviews-layouts/table/style.scss +45 -1
  233. package/src/field-types/array.tsx +33 -21
  234. package/src/field-types/boolean.tsx +15 -9
  235. package/src/field-types/date.ts +51 -15
  236. package/src/field-types/datetime.tsx +19 -13
  237. package/src/field-types/email.tsx +26 -21
  238. package/src/field-types/index.tsx +18 -8
  239. package/src/field-types/integer.tsx +26 -22
  240. package/src/field-types/media.tsx +19 -13
  241. package/src/field-types/text.tsx +19 -13
  242. package/src/filter-and-sort-data-view.ts +11 -4
  243. package/src/normalize-fields.ts +4 -8
  244. package/src/test/dataviews.tsx +129 -0
  245. package/src/test/filter-and-sort-data-view.js +52 -2
  246. package/src/test/validation.ts +4 -15
  247. package/src/types.ts +28 -8
  248. package/src/validation.ts +30 -1
  249. package/tsconfig.json +1 -0
  250. package/tsconfig.tsbuildinfo +1 -1
@@ -9,6 +9,7 @@ var _clsx = _interopRequireDefault(require("clsx"));
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _components = require("@wordpress/components");
11
11
  var _element = require("@wordpress/element");
12
+ var _keycodes = require("@wordpress/keycodes");
12
13
  var _dataviewsContext = _interopRequireDefault(require("../../components/dataviews-context"));
13
14
  var _dataviewsSelectionCheckbox = _interopRequireDefault(require("../../components/dataviews-selection-checkbox"));
14
15
  var _dataviewsItemActions = _interopRequireDefault(require("../../components/dataviews-item-actions"));
@@ -104,12 +105,18 @@ function TableRow({
104
105
  onTouchStart: () => {
105
106
  isTouchDeviceRef.current = true;
106
107
  },
107
- onClick: () => {
108
+ onClick: event => {
108
109
  if (!hasPossibleBulkAction) {
109
110
  return;
110
111
  }
111
112
  if (!isTouchDeviceRef.current && document.getSelection()?.type !== 'Range') {
112
- onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [id]);
113
+ if ((0, _keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey) {
114
+ // Handle non-consecutive selection.
115
+ onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [...selection, id]);
116
+ } else {
117
+ // Handle single selection
118
+ onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [id]);
119
+ }
113
120
  }
114
121
  },
115
122
  children: [hasBulkActions && /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
@@ -195,7 +202,8 @@ function ViewTable({
195
202
  isItemClickable,
196
203
  renderItemLink,
197
204
  view,
198
- className
205
+ className,
206
+ empty
199
207
  }) {
200
208
  var _view$fields2;
201
209
  const {
@@ -234,6 +242,21 @@ function ViewTable({
234
242
  const titleField = fields.find(field => field.id === view.titleField);
235
243
  const mediaField = fields.find(field => field.id === view.mediaField);
236
244
  const descriptionField = fields.find(field => field.id === view.descriptionField);
245
+
246
+ // Get group field if groupByField is specified
247
+ const groupField = view.groupByField ? fields.find(f => f.id === view.groupByField) : null;
248
+
249
+ // Group data by groupByField if specified
250
+ const dataByGroup = groupField ? data.reduce((groups, item) => {
251
+ const groupName = groupField.getValue({
252
+ item
253
+ });
254
+ if (!groups.has(groupName)) {
255
+ groups.set(groupName, []);
256
+ }
257
+ groups.get(groupName)?.push(item);
258
+ return groups;
259
+ }, new Map()) : null;
237
260
  const {
238
261
  showTitle = true,
239
262
  showMedia = true,
@@ -322,7 +345,36 @@ function ViewTable({
322
345
  })
323
346
  })]
324
347
  })
325
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("tbody", {
348
+ }), hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/(0, _jsxRuntime.jsxs)("tbody", {
349
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("tr", {
350
+ className: "dataviews-view-table__group-header-row",
351
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
352
+ colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0),
353
+ className: "dataviews-view-table__group-header-cell",
354
+ children: (0, _i18n.sprintf)(
355
+ // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
356
+ (0, _i18n.__)('%1$s: %2$s'), groupField.label, groupName)
357
+ })
358
+ }), groupItems.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(TableRow, {
359
+ item: item,
360
+ level: view.showLevels && typeof getItemLevel === 'function' ? getItemLevel(item) : undefined,
361
+ hasBulkActions: hasBulkActions,
362
+ actions: actions,
363
+ fields: fields,
364
+ id: getItemId(item) || index.toString(),
365
+ view: view,
366
+ titleField: titleField,
367
+ mediaField: mediaField,
368
+ descriptionField: descriptionField,
369
+ selection: selection,
370
+ getItemId: getItemId,
371
+ onChangeSelection: onChangeSelection,
372
+ onClickItem: onClickItem,
373
+ renderItemLink: renderItemLink,
374
+ isItemClickable: isItemClickable,
375
+ isActionsColumnSticky: !isHorizontalScrollEnd
376
+ }, getItemId(item)))]
377
+ }, `group-${groupName}`)) : /*#__PURE__*/(0, _jsxRuntime.jsx)("tbody", {
326
378
  children: hasData && data.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(TableRow, {
327
379
  item: item,
328
380
  level: view.showLevels && typeof getItemLevel === 'function' ? getItemLevel(item) : undefined,
@@ -350,7 +402,7 @@ function ViewTable({
350
402
  }),
351
403
  id: tableNoticeId,
352
404
  children: !hasData && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
353
- children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {}) : (0, _i18n.__)('No results')
405
+ children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {}) : empty
354
406
  })
355
407
  })]
356
408
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_element","_dataviewsContext","_dataviewsSelectionCheckbox","_dataviewsItemActions","_constants","_dataviewsBulkActions","_columnHeaderMenu","_columnPrimary","_useIsHorizontalScrollEnd","_jsxRuntime","TableColumnField","item","fields","column","align","field","find","f","id","className","clsx","jsx","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","renderItemLink","onChangeSelection","isActionsColumnSticky","_view$fields","hasPossibleBulkAction","useHasAPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","useState","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","useRef","columns","hasPrimaryColumn","jsxs","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","default","disabled","undefined","map","_view$layout$styles$c","width","maxWidth","minWidth","layout","styles","style","length","e","stopPropagation","ViewTable","data","getItemLevel","isLoading","onChangeView","setOpenedFilter","_view$fields2","containerRef","useContext","DataViewsContext","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useSomeItemHasAPossibleBulkAction","useEffect","focus","tableNoticeId","useId","isHorizontalScrollEnd","useIsHorizontalScrollEnd","scrollContainerRef","enabled","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","Fragment","density","scope","BulkSelectionCheckbox","ref","fieldId","canMove","_view$layout$styles$c2","textAlign","sort","direction","sortValues","__","showLevels","toString","Spinner","_default","exports"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Spinner } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\nimport { useIsHorizontalScrollEnd } from './use-is-horizontal-scroll-end';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisActionsColumnSticky?: boolean;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tonChangeSelection,\n\tisActionsColumnSticky,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\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 isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( '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\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ id ]\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 className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\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\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\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{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\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={ clsx( 'dataviews-view-table__actions-column', {\n\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky': true,\n\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\tisActionsColumnSticky,\n\t\t\t\t\t} ) }\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< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tview,\n\tclassName,\n}: ViewTableProps< Item > ) {\n\tconst { containerRef } = useContext( DataViewsContext );\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\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\tconst isHorizontalScrollEnd = useIsHorizontalScrollEnd( {\n\t\tscrollContainerRef: containerRef,\n\t\tenabled: !! actions?.length,\n\t} );\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( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\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\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\tonChangeSelection={ onChangeSelection }\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\tgetItemId={ getItemId }\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{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\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</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\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\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky':\n\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<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\tlevel={\n\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\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\tfields={ fields }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\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\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\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</tbody>\n\t\t\t</table>\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\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":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_element","_keycodes","_dataviewsContext","_dataviewsSelectionCheckbox","_dataviewsItemActions","_constants","_dataviewsBulkActions","_columnHeaderMenu","_columnPrimary","_useIsHorizontalScrollEnd","_jsxRuntime","TableColumnField","item","fields","column","align","field","find","f","id","className","clsx","jsx","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","renderItemLink","onChangeSelection","isActionsColumnSticky","_view$fields","hasPossibleBulkAction","useHasAPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","useState","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","useRef","columns","hasPrimaryColumn","jsxs","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","event","document","getSelection","type","isAppleOS","metaKey","ctrlKey","filter","itemId","default","disabled","undefined","map","_view$layout$styles$c","width","maxWidth","minWidth","layout","styles","style","length","e","stopPropagation","ViewTable","data","getItemLevel","isLoading","onChangeView","setOpenedFilter","empty","_view$fields2","containerRef","useContext","DataViewsContext","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useSomeItemHasAPossibleBulkAction","useEffect","focus","tableNoticeId","useId","isHorizontalScrollEnd","useIsHorizontalScrollEnd","scrollContainerRef","enabled","onHide","hidden","get","fallback","node","hasData","groupField","groupByField","dataByGroup","reduce","groups","groupName","getValue","has","set","push","headerMenuRef","index","delete","Fragment","density","scope","BulkSelectionCheckbox","ref","fieldId","canMove","_view$layout$styles$c2","textAlign","sort","direction","sortValues","__","Array","from","entries","groupItems","colSpan","sprintf","label","showLevels","toString","Spinner","_default","exports"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Spinner } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\nimport { useIsHorizontalScrollEnd } from './use-is-horizontal-scroll-end';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisActionsColumnSticky?: boolean;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tonChangeSelection,\n\tisActionsColumnSticky,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\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 isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( '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\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\t\t// Handle non-consecutive selection.\n\t\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t\t? selection.filter(\n\t\t\t\t\t\t\t\t\t\t( itemId ) => id !== itemId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Handle single selection\n\t\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t\t? selection.filter(\n\t\t\t\t\t\t\t\t\t\t( itemId ) => id !== itemId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: [ id ]\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 className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\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\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\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{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\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={ clsx( 'dataviews-view-table__actions-column', {\n\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky': true,\n\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\tisActionsColumnSticky,\n\t\t\t\t\t} ) }\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< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tview,\n\tclassName,\n\tempty,\n}: ViewTableProps< Item > ) {\n\tconst { containerRef } = useContext( DataViewsContext );\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\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\tconst isHorizontalScrollEnd = useIsHorizontalScrollEnd( {\n\t\tscrollContainerRef: containerRef,\n\t\tenabled: !! actions?.length,\n\t} );\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( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\n\t// Get group field if groupByField is specified\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\n\t// Group data by groupByField if specified\n\tconst dataByGroup = groupField\n\t\t? data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\t\t\tconst groupName = groupField.getValue( { item } );\n\t\t\t\tif ( ! groups.has( groupName ) ) {\n\t\t\t\t\tgroups.set( groupName, [] );\n\t\t\t\t}\n\t\t\t\tgroups.get( groupName )?.push( item );\n\t\t\t\treturn groups;\n\t\t }, new Map< string, typeof data >() )\n\t\t: null;\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\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\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\tonChangeSelection={ onChangeSelection }\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\tgetItemId={ getItemId }\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{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\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</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\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\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky':\n\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<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{ /* Render grouped data if groupByField is specified */ }\n\t\t\t\t{ hasData && groupField && dataByGroup ? (\n\t\t\t\t\tArray.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<tbody key={ `group-${ groupName }` }>\n\t\t\t\t\t\t\t\t<tr className=\"dataviews-view-table__group-header-row\">\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tcolSpan={\n\t\t\t\t\t\t\t\t\t\t\tcolumns.length +\n\t\t\t\t\t\t\t\t\t\t\t( hasPrimaryColumn ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t( hasBulkActions ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t( actions?.length ? 1 : 0 )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-cell\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tid={\n\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) ||\n\t\t\t\t\t\t\t\t\t\t\tindex.toString()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\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</tbody>\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\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</tbody>\n\t\t\t\t) }\n\t\t\t</table>\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\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData && <p>{ isLoading ? <Spinner /> : empty }</p> }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _i18n = require("@wordpress/i18n");
7
8
  var _constants = require("../constants");
9
+ /**
10
+ * WordPress dependencies
11
+ */
12
+
8
13
  /**
9
14
  * Internal dependencies
10
15
  */
@@ -20,23 +25,6 @@ function sort(valueA, valueB, direction) {
20
25
  const joinedB = arrB.join(',');
21
26
  return direction === 'asc' ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA);
22
27
  }
23
- function isValid(value, context) {
24
- if (!Array.isArray(value)) {
25
- return false;
26
- }
27
-
28
- // Only allow strings for now. Can be extended to other types in the future.
29
- if (!value.every(v => typeof v === 'string')) {
30
- return false;
31
- }
32
- if (context?.elements) {
33
- const validValues = context.elements.map(f => f.value);
34
- if (!value.every(v => validValues.includes(v))) {
35
- return false;
36
- }
37
- }
38
- return true;
39
- }
40
28
  function render({
41
29
  item,
42
30
  field
@@ -48,7 +36,28 @@ function render({
48
36
  }
49
37
  const arrayFieldType = {
50
38
  sort,
51
- isValid,
39
+ isValid: {
40
+ custom: (item, field) => {
41
+ const value = field.getValue({
42
+ item
43
+ });
44
+ if (![undefined, '', null].includes(value) && !Array.isArray(value)) {
45
+ return (0, _i18n.__)('Value must be an array.');
46
+ }
47
+
48
+ // Only allow strings for now. Can be extended to other types in the future.
49
+ if (!value.every(v => typeof v === 'string')) {
50
+ return (0, _i18n.__)('Every value must be a string.');
51
+ }
52
+ if (field?.elements) {
53
+ const validValues = field.elements.map(f => f.value);
54
+ if (!value.every(v => validValues.includes(v))) {
55
+ return (0, _i18n.__)('Value must be one of the elements.');
56
+ }
57
+ }
58
+ return null;
59
+ }
60
+ },
52
61
  Edit: null,
53
62
  // Not implemented yet
54
63
  render,
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","sort","valueA","valueB","direction","arrA","Array","isArray","arrB","length","joinedA","join","joinedB","localeCompare","isValid","value","context","every","v","elements","validValues","map","f","includes","render","item","field","getValue","arrayFieldType","Edit","enableSorting","filterBy","defaultOperators","OPERATOR_IS_ANY","OPERATOR_IS_NONE","validOperators","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","_default","exports","default"],"sources":["@wordpress/dataviews/src/field-types/array.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\n\n// Sort arrays by length, then alphabetically by joined string\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\tconst arrA = Array.isArray( valueA ) ? valueA : [];\n\tconst arrB = Array.isArray( valueB ) ? valueB : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\tif ( ! Array.isArray( value ) ) {\n\t\treturn false;\n\t}\n\n\t// Only allow strings for now. Can be extended to other types in the future.\n\tif ( ! value.every( ( v ) => typeof v === 'string' ) ) {\n\t\treturn false;\n\t}\n\n\tif ( context?.elements ) {\n\t\tconst validValues = context.elements.map( ( f ) => f.value );\n\t\tif ( ! value.every( ( v ) => validValues.includes( v ) ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tconst value = field.getValue( { item } ) || [];\n\treturn value.join( ', ' );\n}\n\nconst arrayFieldType: FieldTypeDefinition< any > = {\n\tsort,\n\tisValid,\n\tEdit: null, // Not implemented yet\n\trender,\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS_ANY,\n\t\t\tOPERATOR_IS_NONE,\n\t\t\tOPERATOR_IS_ALL,\n\t\t\tOPERATOR_IS_NOT_ALL,\n\t\t],\n\t},\n};\n\nexport default arrayFieldType;\n"],"mappings":";;;;;;AASA,IAAAA,UAAA,GAAAC,OAAA;AATA;AACA;AACA;;AAcA;AACA,SAASC,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAAEL,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,MAAMM,IAAI,GAAGF,KAAK,CAACC,OAAO,CAAEJ,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,IAAKE,IAAI,CAACI,MAAM,KAAKD,IAAI,CAACC,MAAM,EAAG;IAClC,OAAOL,SAAS,KAAK,KAAK,GACvBC,IAAI,CAACI,MAAM,GAAGD,IAAI,CAACC,MAAM,GACzBD,IAAI,CAACC,MAAM,GAAGJ,IAAI,CAACI,MAAM;EAC7B;EAEA,MAAMC,OAAO,GAAGL,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;EAChC,MAAMC,OAAO,GAAGJ,IAAI,CAACG,IAAI,CAAE,GAAI,CAAC;EAChC,OAAOP,SAAS,KAAK,KAAK,GACvBM,OAAO,CAACG,aAAa,CAAED,OAAQ,CAAC,GAChCA,OAAO,CAACC,aAAa,CAAEH,OAAQ,CAAC;AACpC;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D,IAAK,CAAEV,KAAK,CAACC,OAAO,CAAEQ,KAAM,CAAC,EAAG;IAC/B,OAAO,KAAK;EACb;;EAEA;EACA,IAAK,CAAEA,KAAK,CAACE,KAAK,CAAIC,CAAC,IAAM,OAAOA,CAAC,KAAK,QAAS,CAAC,EAAG;IACtD,OAAO,KAAK;EACb;EAEA,IAAKF,OAAO,EAAEG,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGJ,OAAO,CAACG,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACP,KAAM,CAAC;IAC5D,IAAK,CAAEA,KAAK,CAACE,KAAK,CAAIC,CAAC,IAAME,WAAW,CAACG,QAAQ,CAAEL,CAAE,CAAE,CAAC,EAAG;MAC1D,OAAO,KAAK;IACb;EACD;EACA,OAAO,IAAI;AACZ;AAEA,SAASM,MAAMA,CAAE;EAAEC,IAAI;EAAEC;AAAuC,CAAC,EAAG;EACnE,MAAMX,KAAK,GAAGW,KAAK,CAACC,QAAQ,CAAE;IAAEF;EAAK,CAAE,CAAC,IAAI,EAAE;EAC9C,OAAOV,KAAK,CAACJ,IAAI,CAAE,IAAK,CAAC;AAC1B;AAEA,MAAMiB,cAA0C,GAAG;EAClD3B,IAAI;EACJa,OAAO;EACPe,IAAI,EAAE,IAAI;EAAE;EACZL,MAAM;EACNM,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAEC,0BAAe,EAAEC,2BAAgB,CAAE;IACvDC,cAAc,EAAE,CACfF,0BAAe,EACfC,2BAAgB,EAChBE,0BAAe,EACfC,8BAAmB;EAErB;AACD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_constants","sort","valueA","valueB","direction","arrA","Array","isArray","arrB","length","joinedA","join","joinedB","localeCompare","render","item","field","value","getValue","arrayFieldType","isValid","custom","undefined","includes","__","every","v","elements","validValues","map","f","Edit","enableSorting","filterBy","defaultOperators","OPERATOR_IS_ANY","OPERATOR_IS_NONE","validOperators","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","_default","exports","default"],"sources":["@wordpress/dataviews/src/field-types/array.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tFieldTypeDefinition,\n\tNormalizedField,\n} from '../types';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\n\n// Sort arrays by length, then alphabetically by joined string\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\tconst arrA = Array.isArray( valueA ) ? valueA : [];\n\tconst arrB = Array.isArray( valueB ) ? valueB : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tconst value = field.getValue( { item } ) || [];\n\treturn value.join( ', ' );\n}\n\nconst arrayFieldType: FieldTypeDefinition< any > = {\n\tsort,\n\tisValid: {\n\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\tconst value = field.getValue( { item } );\n\n\t\t\tif (\n\t\t\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t\t\t! Array.isArray( value )\n\t\t\t) {\n\t\t\t\treturn __( 'Value must be an array.' );\n\t\t\t}\n\n\t\t\t// Only allow strings for now. Can be extended to other types in the future.\n\t\t\tif ( ! value.every( ( v: any ) => typeof v === 'string' ) ) {\n\t\t\t\treturn __( 'Every value must be a string.' );\n\t\t\t}\n\n\t\t\tif ( field?.elements ) {\n\t\t\t\tconst validValues = field.elements.map( ( f ) => f.value );\n\t\t\t\tif (\n\t\t\t\t\t! value.every( ( v: any ) => validValues.includes( v ) )\n\t\t\t\t) {\n\t\t\t\t\treturn __( 'Value must be one of the elements.' );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t},\n\tEdit: null, // Not implemented yet\n\trender,\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS_ANY,\n\t\t\tOPERATOR_IS_NONE,\n\t\t\tOPERATOR_IS_ALL,\n\t\t\tOPERATOR_IS_NOT_ALL,\n\t\t],\n\t},\n};\n\nexport default arrayFieldType;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAWA,IAAAC,UAAA,GAAAD,OAAA;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AAcA;AACA,SAASE,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAAEL,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,MAAMM,IAAI,GAAGF,KAAK,CAACC,OAAO,CAAEJ,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,IAAKE,IAAI,CAACI,MAAM,KAAKD,IAAI,CAACC,MAAM,EAAG;IAClC,OAAOL,SAAS,KAAK,KAAK,GACvBC,IAAI,CAACI,MAAM,GAAGD,IAAI,CAACC,MAAM,GACzBD,IAAI,CAACC,MAAM,GAAGJ,IAAI,CAACI,MAAM;EAC7B;EAEA,MAAMC,OAAO,GAAGL,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;EAChC,MAAMC,OAAO,GAAGJ,IAAI,CAACG,IAAI,CAAE,GAAI,CAAC;EAChC,OAAOP,SAAS,KAAK,KAAK,GACvBM,OAAO,CAACG,aAAa,CAAED,OAAQ,CAAC,GAChCA,OAAO,CAACC,aAAa,CAAEH,OAAQ,CAAC;AACpC;AAEA,SAASI,MAAMA,CAAE;EAAEC,IAAI;EAAEC;AAAuC,CAAC,EAAG;EACnE,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;IAAEH;EAAK,CAAE,CAAC,IAAI,EAAE;EAC9C,OAAOE,KAAK,CAACN,IAAI,CAAE,IAAK,CAAC;AAC1B;AAEA,MAAMQ,cAA0C,GAAG;EAClDlB,IAAI;EACJmB,OAAO,EAAE;IACRC,MAAM,EAAEA,CAAEN,IAAS,EAAEC,KAA6B,KAAM;MACvD,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;QAAEH;MAAK,CAAE,CAAC;MAExC,IACC,CAAE,CAAEO,SAAS,EAAE,EAAE,EAAE,IAAI,CAAE,CAACC,QAAQ,CAAEN,KAAM,CAAC,IAC3C,CAAEX,KAAK,CAACC,OAAO,CAAEU,KAAM,CAAC,EACvB;QACD,OAAO,IAAAO,QAAE,EAAE,yBAA0B,CAAC;MACvC;;MAEA;MACA,IAAK,CAAEP,KAAK,CAACQ,KAAK,CAAIC,CAAM,IAAM,OAAOA,CAAC,KAAK,QAAS,CAAC,EAAG;QAC3D,OAAO,IAAAF,QAAE,EAAE,+BAAgC,CAAC;MAC7C;MAEA,IAAKR,KAAK,EAAEW,QAAQ,EAAG;QACtB,MAAMC,WAAW,GAAGZ,KAAK,CAACW,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACb,KAAM,CAAC;QAC1D,IACC,CAAEA,KAAK,CAACQ,KAAK,CAAIC,CAAM,IAAME,WAAW,CAACL,QAAQ,CAAEG,CAAE,CAAE,CAAC,EACvD;UACD,OAAO,IAAAF,QAAE,EAAE,oCAAqC,CAAC;QAClD;MACD;MACA,OAAO,IAAI;IACZ;EACD,CAAC;EACDO,IAAI,EAAE,IAAI;EAAE;EACZjB,MAAM;EACNkB,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAEC,0BAAe,EAAEC,2BAAgB,CAAE;IACvDC,cAAc,EAAE,CACfF,0BAAe,EACfC,2BAAgB,EAChBE,0BAAe,EACfC,8BAAmB;EAErB;AACD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEavB,cAAc","ignoreList":[]}
@@ -30,15 +30,19 @@ function sort(a, b, direction) {
30
30
  // In descending order, true comes before false
31
31
  return boolA ? -1 : 1;
32
32
  }
33
- function isValid(value) {
34
- if (![true, false, undefined].includes(value)) {
35
- return false;
36
- }
37
- return true;
38
- }
39
33
  var _default = exports.default = {
40
34
  sort,
41
- isValid,
35
+ isValid: {
36
+ custom: (item, field) => {
37
+ const value = field.getValue({
38
+ item
39
+ });
40
+ if (![undefined, '', null].includes(value) && ![true, false].includes(value)) {
41
+ return (0, _i18n.__)('Value must be true, false, or undefined');
42
+ }
43
+ return null;
44
+ }
45
+ },
42
46
  Edit: 'boolean',
43
47
  render: ({
44
48
  item,
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_utils","_constants","sort","a","b","direction","boolA","Boolean","boolB","isValid","value","undefined","includes","_default","exports","default","Edit","render","item","field","elements","renderFromElements","getValue","__","enableSorting","filterBy","defaultOperators","OPERATOR_IS","OPERATOR_IS_NOT","validOperators"],"sources":["@wordpress/dataviews/src/field-types/boolean.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst boolA = Boolean( a );\n\tconst boolB = Boolean( b );\n\n\tif ( boolA === boolB ) {\n\t\treturn 0;\n\t}\n\n\t// In ascending order, false comes before true\n\tif ( direction === 'asc' ) {\n\t\treturn boolA ? 1 : -1;\n\t}\n\n\t// In descending order, true comes before false\n\treturn boolA ? -1 : 1;\n}\n\nfunction isValid( value: any ) {\n\tif ( ! [ true, false, undefined ].includes( value ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: 'boolean',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\tif ( field.elements ) {\n\t\t\treturn renderFromElements( { item, field } );\n\t\t}\n\n\t\tif ( field.getValue( { item } ) === true ) {\n\t\t\treturn __( 'True' );\n\t\t}\n\n\t\tif ( field.getValue( { item } ) === false ) {\n\t\t\treturn __( 'False' );\n\t\t}\n\n\t\treturn null;\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t\tvalidOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAUA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AASA,SAASG,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAGC,OAAO,CAAEJ,CAAE,CAAC;EAC1B,MAAMK,KAAK,GAAGD,OAAO,CAAEH,CAAE,CAAC;EAE1B,IAAKE,KAAK,KAAKE,KAAK,EAAG;IACtB,OAAO,CAAC;EACT;;EAEA;EACA,IAAKH,SAAS,KAAK,KAAK,EAAG;IAC1B,OAAOC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;EACtB;;EAEA;EACA,OAAOA,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB;AAEA,SAASG,OAAOA,CAAEC,KAAU,EAAG;EAC9B,IAAK,CAAE,CAAE,IAAI,EAAE,KAAK,EAAEC,SAAS,CAAE,CAACC,QAAQ,CAAEF,KAAM,CAAC,EAAG;IACrD,OAAO,KAAK;EACb;EAEA,OAAO,IAAI;AACZ;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdb,IAAI;EACJO,OAAO;EACPO,IAAI,EAAE,SAAS;EACfC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,IAAKA,KAAK,CAACC,QAAQ,EAAG;MACrB,OAAO,IAAAC,yBAAkB,EAAE;QAAEH,IAAI;QAAEC;MAAM,CAAE,CAAC;IAC7C;IAEA,IAAKA,KAAK,CAACG,QAAQ,CAAE;MAAEJ;IAAK,CAAE,CAAC,KAAK,IAAI,EAAG;MAC1C,OAAO,IAAAK,QAAE,EAAE,MAAO,CAAC;IACpB;IAEA,IAAKJ,KAAK,CAACG,QAAQ,CAAE;MAAEJ;IAAK,CAAE,CAAC,KAAK,KAAK,EAAG;MAC3C,OAAO,IAAAK,QAAE,EAAE,OAAQ,CAAC;IACrB;IAEA,OAAO,IAAI;EACZ,CAAC;EACDC,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAEC,sBAAW,EAAEC,0BAAe,CAAE;IAClDC,cAAc,EAAE,CAAEF,sBAAW,EAAEC,0BAAe;EAC/C;AACD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_utils","_constants","sort","a","b","direction","boolA","Boolean","boolB","_default","exports","default","isValid","custom","item","field","value","getValue","undefined","includes","__","Edit","render","elements","renderFromElements","enableSorting","filterBy","defaultOperators","OPERATOR_IS","OPERATOR_IS_NOT","validOperators"],"sources":["@wordpress/dataviews/src/field-types/boolean.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tFieldTypeDefinition,\n\tNormalizedField,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst boolA = Boolean( a );\n\tconst boolB = Boolean( b );\n\n\tif ( boolA === boolB ) {\n\t\treturn 0;\n\t}\n\n\t// In ascending order, false comes before true\n\tif ( direction === 'asc' ) {\n\t\treturn boolA ? 1 : -1;\n\t}\n\n\t// In descending order, true comes before false\n\treturn boolA ? -1 : 1;\n}\n\nexport default {\n\tsort,\n\tisValid: {\n\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\tconst value = field.getValue( { item } );\n\n\t\t\tif (\n\t\t\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t\t\t! [ true, false ].includes( value )\n\t\t\t) {\n\t\t\t\treturn __( 'Value must be true, false, or undefined' );\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t},\n\tEdit: 'boolean',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\tif ( field.elements ) {\n\t\t\treturn renderFromElements( { item, field } );\n\t\t}\n\n\t\tif ( field.getValue( { item } ) === true ) {\n\t\t\treturn __( 'True' );\n\t\t}\n\n\t\tif ( field.getValue( { item } ) === false ) {\n\t\t\treturn __( 'False' );\n\t\t}\n\n\t\treturn null;\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t\tvalidOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAWA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAUA,SAASG,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAGC,OAAO,CAAEJ,CAAE,CAAC;EAC1B,MAAMK,KAAK,GAAGD,OAAO,CAAEH,CAAE,CAAC;EAE1B,IAAKE,KAAK,KAAKE,KAAK,EAAG;IACtB,OAAO,CAAC;EACT;;EAEA;EACA,IAAKH,SAAS,KAAK,KAAK,EAAG;IAC1B,OAAOC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;EACtB;;EAEA;EACA,OAAOA,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdT,IAAI;EACJU,OAAO,EAAE;IACRC,MAAM,EAAEA,CAAEC,IAAS,EAAEC,KAA6B,KAAM;MACvD,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;QAAEH;MAAK,CAAE,CAAC;MAExC,IACC,CAAE,CAAEI,SAAS,EAAE,EAAE,EAAE,IAAI,CAAE,CAACC,QAAQ,CAAEH,KAAM,CAAC,IAC3C,CAAE,CAAE,IAAI,EAAE,KAAK,CAAE,CAACG,QAAQ,CAAEH,KAAM,CAAC,EAClC;QACD,OAAO,IAAAI,QAAE,EAAE,yCAA0C,CAAC;MACvD;MAEA,OAAO,IAAI;IACZ;EACD,CAAC;EACDC,IAAI,EAAE,SAAS;EACfC,MAAM,EAAEA,CAAE;IAAER,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,IAAKA,KAAK,CAACQ,QAAQ,EAAG;MACrB,OAAO,IAAAC,yBAAkB,EAAE;QAAEV,IAAI;QAAEC;MAAM,CAAE,CAAC;IAC7C;IAEA,IAAKA,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC,KAAK,IAAI,EAAG;MAC1C,OAAO,IAAAM,QAAE,EAAE,MAAO,CAAC;IACpB;IAEA,IAAKL,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC,KAAK,KAAK,EAAG;MAC3C,OAAO,IAAAM,QAAE,EAAE,OAAQ,CAAC;IACrB;IAEA,OAAO,IAAI;EACZ,CAAC;EACDK,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAEC,sBAAW,EAAEC,0BAAe,CAAE;IAClDC,cAAc,EAAE,CAAEF,sBAAW,EAAEC,0BAAe;EAC/C;AACD,CAAC","ignoreList":[]}
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _date = require("@wordpress/date");
8
+ var _i18n = require("@wordpress/i18n");
8
9
  var _utils = require("../utils");
10
+ var _constants = require("../constants");
9
11
  /**
10
12
  * WordPress dependencies
11
13
  */
@@ -20,19 +22,23 @@ function sort(a, b, direction) {
20
22
  const timeB = new Date(b).getTime();
21
23
  return direction === 'asc' ? timeA - timeB : timeB - timeA;
22
24
  }
23
- function isValid(value, context) {
24
- if (context?.elements) {
25
- const validValues = context?.elements.map(f => f.value);
26
- if (!validValues.includes(value)) {
27
- return false;
28
- }
29
- }
30
- return true;
31
- }
32
25
  var _default = exports.default = {
33
26
  sort,
34
- isValid,
35
- Edit: null,
27
+ Edit: 'date',
28
+ isValid: {
29
+ custom: (item, field) => {
30
+ const value = field.getValue({
31
+ item
32
+ });
33
+ if (field?.elements) {
34
+ const validValues = field.elements.map(f => f.value);
35
+ if (!validValues.includes(value)) {
36
+ return (0, _i18n.__)('Value must be one of the elements.');
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ },
36
42
  render: ({
37
43
  item,
38
44
  field
@@ -52,6 +58,9 @@ var _default = exports.default = {
52
58
  return getFormattedDate(value);
53
59
  },
54
60
  enableSorting: true,
55
- filterBy: false
61
+ filterBy: {
62
+ defaultOperators: [_constants.OPERATOR_ON, _constants.OPERATOR_NOT_ON, _constants.OPERATOR_BEFORE, _constants.OPERATOR_AFTER, _constants.OPERATOR_BEFORE_INC, _constants.OPERATOR_AFTER_INC, _constants.OPERATOR_IN_THE_PAST, _constants.OPERATOR_OVER, _constants.OPERATOR_BETWEEN],
63
+ validOperators: [_constants.OPERATOR_ON, _constants.OPERATOR_NOT_ON, _constants.OPERATOR_BEFORE, _constants.OPERATOR_AFTER, _constants.OPERATOR_BEFORE_INC, _constants.OPERATOR_AFTER_INC, _constants.OPERATOR_IN_THE_PAST, _constants.OPERATOR_OVER, _constants.OPERATOR_BETWEEN]
64
+ }
56
65
  };
57
66
  //# sourceMappingURL=date.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_date","require","_utils","getFormattedDate","dateToDisplay","dateI18n","getSettings","formats","date","getDate","sort","a","b","direction","timeA","Date","getTime","timeB","isValid","value","context","elements","validValues","map","f","includes","_default","exports","default","Edit","render","item","field","renderFromElements","getValue","enableSorting","filterBy"],"sources":["@wordpress/dataviews/src/field-types/date.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\n\nconst getFormattedDate = ( dateToDisplay: string | null ) =>\n\tdateI18n( getSettings().formats.date, getDate( dateToDisplay ) );\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\tif ( context?.elements ) {\n\t\tconst validValues = context?.elements.map( ( f ) => f.value );\n\t\tif ( ! validValues.includes( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: null,\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\tif ( field.elements ) {\n\t\t\treturn renderFromElements( { item, field } );\n\t\t}\n\n\t\tconst value = field.getValue( { item } );\n\t\tif ( ! value ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn getFormattedDate( value );\n\t},\n\tenableSorting: true,\n\tfilterBy: false,\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAWA,IAAAC,MAAA,GAAAD,OAAA;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AASA,MAAME,gBAAgB,GAAKC,aAA4B,IACtD,IAAAC,cAAQ,EAAE,IAAAC,iBAAW,EAAC,CAAC,CAACC,OAAO,CAACC,IAAI,EAAE,IAAAC,aAAO,EAAEL,aAAc,CAAE,CAAC;AAEjE,SAASM,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAEJ,CAAE,CAAC,CAACK,OAAO,CAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAIF,IAAI,CAAEH,CAAE,CAAC,CAACI,OAAO,CAAC,CAAC;EAErC,OAAOH,SAAS,KAAK,KAAK,GAAGC,KAAK,GAAGG,KAAK,GAAGA,KAAK,GAAGH,KAAK;AAC3D;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D,IAAKA,OAAO,EAAEC,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;IAC7D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;MACtC,OAAO,KAAK;IACb;EACD;EAEA,OAAO,IAAI;AACZ;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdlB,IAAI;EACJQ,OAAO;EACPW,IAAI,EAAE,IAAI;EACVC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,IAAKA,KAAK,CAACX,QAAQ,EAAG;MACrB,OAAO,IAAAY,yBAAkB,EAAE;QAAEF,IAAI;QAAEC;MAAM,CAAE,CAAC;IAC7C;IAEA,MAAMb,KAAK,GAAGa,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC;IACxC,IAAK,CAAEZ,KAAK,EAAG;MACd,OAAO,EAAE;IACV;IAEA,OAAOhB,gBAAgB,CAAEgB,KAAM,CAAC;EACjC,CAAC;EACDgB,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;AACX,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_date","require","_i18n","_utils","_constants","getFormattedDate","dateToDisplay","dateI18n","getSettings","formats","date","getDate","sort","a","b","direction","timeA","Date","getTime","timeB","_default","exports","default","Edit","isValid","custom","item","field","value","getValue","elements","validValues","map","f","includes","__","render","renderFromElements","enableSorting","filterBy","defaultOperators","OPERATOR_ON","OPERATOR_NOT_ON","OPERATOR_BEFORE","OPERATOR_AFTER","OPERATOR_BEFORE_INC","OPERATOR_AFTER_INC","OPERATOR_IN_THE_PAST","OPERATOR_OVER","OPERATOR_BETWEEN","validOperators"],"sources":["@wordpress/dataviews/src/field-types/date.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tNormalizedField,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n\tOPERATOR_BETWEEN,\n} from '../constants';\n\nconst getFormattedDate = ( dateToDisplay: string | null ) =>\n\tdateI18n( getSettings().formats.date, getDate( dateToDisplay ) );\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n}\n\nexport default {\n\tsort,\n\tEdit: 'date',\n\tisValid: {\n\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\tconst value = field.getValue( { item } );\n\t\t\tif ( field?.elements ) {\n\t\t\t\tconst validValues = field.elements.map( ( f ) => f.value );\n\t\t\t\tif ( ! validValues.includes( value ) ) {\n\t\t\t\t\treturn __( 'Value must be one of the elements.' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t},\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\tif ( field.elements ) {\n\t\t\treturn renderFromElements( { item, field } );\n\t\t}\n\n\t\tconst value = field.getValue( { item } );\n\t\tif ( ! value ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn getFormattedDate( value );\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t\tOPERATOR_BETWEEN,\n\t\t],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t\tOPERATOR_BETWEEN,\n\t\t],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAWA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAhBA;AACA;AACA;;AAIA;AACA;AACA;;AAoBA,MAAMI,gBAAgB,GAAKC,aAA4B,IACtD,IAAAC,cAAQ,EAAE,IAAAC,iBAAW,EAAC,CAAC,CAACC,OAAO,CAACC,IAAI,EAAE,IAAAC,aAAO,EAAEL,aAAc,CAAE,CAAC;AAEjE,SAASM,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAEJ,CAAE,CAAC,CAACK,OAAO,CAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAIF,IAAI,CAAEH,CAAE,CAAC,CAACI,OAAO,CAAC,CAAC;EAErC,OAAOH,SAAS,KAAK,KAAK,GAAGC,KAAK,GAAGG,KAAK,GAAGA,KAAK,GAAGH,KAAK;AAC3D;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdV,IAAI;EACJW,IAAI,EAAE,MAAM;EACZC,OAAO,EAAE;IACRC,MAAM,EAAEA,CAAEC,IAAS,EAAEC,KAA6B,KAAM;MACvD,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;QAAEH;MAAK,CAAE,CAAC;MACxC,IAAKC,KAAK,EAAEG,QAAQ,EAAG;QACtB,MAAMC,WAAW,GAAGJ,KAAK,CAACG,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;QAC1D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;UACtC,OAAO,IAAAO,QAAE,EAAE,oCAAqC,CAAC;QAClD;MACD;MAEA,OAAO,IAAI;IACZ;EACD,CAAC;EACDC,MAAM,EAAEA,CAAE;IAAEV,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,IAAKA,KAAK,CAACG,QAAQ,EAAG;MACrB,OAAO,IAAAO,yBAAkB,EAAE;QAAEX,IAAI;QAAEC;MAAM,CAAE,CAAC;IAC7C;IAEA,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC;IACxC,IAAK,CAAEE,KAAK,EAAG;MACd,OAAO,EAAE;IACV;IAEA,OAAOvB,gBAAgB,CAAEuB,KAAM,CAAC;EACjC,CAAC;EACDU,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CACjBC,sBAAW,EACXC,0BAAe,EACfC,0BAAe,EACfC,yBAAc,EACdC,8BAAmB,EACnBC,6BAAkB,EAClBC,+BAAoB,EACpBC,wBAAa,EACbC,2BAAgB,CAChB;IACDC,cAAc,EAAE,CACfT,sBAAW,EACXC,0BAAe,EACfC,0BAAe,EACfC,yBAAc,EACdC,8BAAmB,EACnBC,6BAAkB,EAClBC,+BAAoB,EACpBC,wBAAa,EACbC,2BAAgB;EAElB;AACD,CAAC","ignoreList":[]}
@@ -4,8 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _i18n = require("@wordpress/i18n");
7
8
  var _utils = require("../utils");
8
9
  var _constants = require("../constants");
10
+ /**
11
+ * WordPress dependencies
12
+ */
13
+
9
14
  /**
10
15
  * Internal dependencies
11
16
  */
@@ -15,18 +20,22 @@ function sort(a, b, direction) {
15
20
  const timeB = new Date(b).getTime();
16
21
  return direction === 'asc' ? timeA - timeB : timeB - timeA;
17
22
  }
18
- function isValid(value, context) {
19
- if (context?.elements) {
20
- const validValues = context?.elements.map(f => f.value);
21
- if (!validValues.includes(value)) {
22
- return false;
23
- }
24
- }
25
- return true;
26
- }
27
23
  var _default = exports.default = {
28
24
  sort,
29
- isValid,
25
+ isValid: {
26
+ custom: (item, field) => {
27
+ const value = field.getValue({
28
+ item
29
+ });
30
+ if (field?.elements) {
31
+ const validValues = field.elements.map(f => f.value);
32
+ if (!validValues.includes(value)) {
33
+ return (0, _i18n.__)('Value must be one of the elements.');
34
+ }
35
+ }
36
+ return null;
37
+ }
38
+ },
30
39
  Edit: 'datetime',
31
40
  render: ({
32
41
  item,
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_constants","sort","a","b","direction","timeA","Date","getTime","timeB","isValid","value","context","elements","validValues","map","f","includes","_default","exports","default","Edit","render","item","field","renderFromElements","getValue","enableSorting","filterBy","defaultOperators","OPERATOR_ON","OPERATOR_NOT_ON","OPERATOR_BEFORE","OPERATOR_AFTER","OPERATOR_BEFORE_INC","OPERATOR_AFTER_INC","OPERATOR_IN_THE_PAST","OPERATOR_OVER","validOperators"],"sources":["@wordpress/dataviews/src/field-types/datetime.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\tif ( context?.elements ) {\n\t\tconst validValues = context?.elements.map( ( f ) => f.value );\n\t\tif ( ! validValues.includes( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: 'datetime',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\treturn field.elements\n\t\t\t? renderFromElements( { item, field } )\n\t\t\t: field.getValue( { item } );\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":";;;;;;AASA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAVA;AACA;AACA;;AAmBA,SAASE,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAEJ,CAAE,CAAC,CAACK,OAAO,CAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAIF,IAAI,CAAEH,CAAE,CAAC,CAACI,OAAO,CAAC,CAAC;EAErC,OAAOH,SAAS,KAAK,KAAK,GAAGC,KAAK,GAAGG,KAAK,GAAGA,KAAK,GAAGH,KAAK;AAC3D;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D,IAAKA,OAAO,EAAEC,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;IAC7D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;MACtC,OAAO,KAAK;IACb;EACD;EAEA,OAAO,IAAI;AACZ;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdlB,IAAI;EACJQ,OAAO;EACPW,IAAI,EAAE,UAAU;EAChBC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,OAAOA,KAAK,CAACX,QAAQ,GAClB,IAAAY,yBAAkB,EAAE;MAAEF,IAAI;MAAEC;IAAM,CAAE,CAAC,GACrCA,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC;EAC9B,CAAC;EACDI,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CACjBC,sBAAW,EACXC,0BAAe,EACfC,0BAAe,EACfC,yBAAc,EACdC,8BAAmB,EACnBC,6BAAkB,EAClBC,+BAAoB,EACpBC,wBAAa,CACb;IACDC,cAAc,EAAE,CACfR,sBAAW,EACXC,0BAAe,EACfC,0BAAe,EACfC,yBAAc,EACdC,8BAAmB,EACnBC,6BAAkB,EAClBC,+BAAoB,EACpBC,wBAAa;EAEf;AACD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_utils","_constants","sort","a","b","direction","timeA","Date","getTime","timeB","_default","exports","default","isValid","custom","item","field","value","getValue","elements","validValues","map","f","includes","__","Edit","render","renderFromElements","enableSorting","filterBy","defaultOperators","OPERATOR_ON","OPERATOR_NOT_ON","OPERATOR_BEFORE","OPERATOR_AFTER","OPERATOR_BEFORE_INC","OPERATOR_AFTER_INC","OPERATOR_IN_THE_PAST","OPERATOR_OVER","validOperators"],"sources":["@wordpress/dataviews/src/field-types/datetime.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tNormalizedField,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n}\n\nexport default {\n\tsort,\n\tisValid: {\n\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\tconst value = field.getValue( { item } );\n\t\t\tif ( field?.elements ) {\n\t\t\t\tconst validValues = field.elements.map( ( f ) => f.value );\n\t\t\t\tif ( ! validValues.includes( value ) ) {\n\t\t\t\t\treturn __( 'Value must be one of the elements.' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t},\n\tEdit: 'datetime',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\treturn field.elements\n\t\t\t? renderFromElements( { item, field } )\n\t\t\t: field.getValue( { item } );\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAWA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAmBA,SAASG,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAEJ,CAAE,CAAC,CAACK,OAAO,CAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAIF,IAAI,CAAEH,CAAE,CAAC,CAACI,OAAO,CAAC,CAAC;EAErC,OAAOH,SAAS,KAAK,KAAK,GAAGC,KAAK,GAAGG,KAAK,GAAGA,KAAK,GAAGH,KAAK;AAC3D;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdV,IAAI;EACJW,OAAO,EAAE;IACRC,MAAM,EAAEA,CAAEC,IAAS,EAAEC,KAA6B,KAAM;MACvD,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;QAAEH;MAAK,CAAE,CAAC;MACxC,IAAKC,KAAK,EAAEG,QAAQ,EAAG;QACtB,MAAMC,WAAW,GAAGJ,KAAK,CAACG,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;QAC1D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;UACtC,OAAO,IAAAO,QAAE,EAAE,oCAAqC,CAAC;QAClD;MACD;MAEA,OAAO,IAAI;IACZ;EACD,CAAC;EACDC,IAAI,EAAE,UAAU;EAChBC,MAAM,EAAEA,CAAE;IAAEX,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,OAAOA,KAAK,CAACG,QAAQ,GAClB,IAAAQ,yBAAkB,EAAE;MAAEZ,IAAI;MAAEC;IAAM,CAAE,CAAC,GACrCA,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC;EAC9B,CAAC;EACDa,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CACjBC,sBAAW,EACXC,0BAAe,EACfC,0BAAe,EACfC,yBAAc,EACdC,8BAAmB,EACnBC,6BAAkB,EAClBC,+BAAoB,EACpBC,wBAAa,CACb;IACDC,cAAc,EAAE,CACfR,sBAAW,EACXC,0BAAe,EACfC,0BAAe,EACfC,yBAAc,EACdC,8BAAmB,EACnBC,6BAAkB,EAClBC,+BAAoB,EACpBC,wBAAa;EAEf;AACD,CAAC","ignoreList":[]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _url = require("@wordpress/url");
7
+ var _i18n = require("@wordpress/i18n");
8
8
  var _utils = require("../utils");
9
9
  var _constants = require("../constants");
10
10
  /**
@@ -18,25 +18,29 @@ var _constants = require("../constants");
18
18
  function sort(valueA, valueB, direction) {
19
19
  return direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
20
20
  }
21
- function isValid(value, context) {
22
- // TODO: this implicitly means the value is required.
23
- if (value === '') {
24
- return false;
25
- }
26
- if (!(0, _url.isEmail)(value)) {
27
- return false;
28
- }
29
- if (context?.elements) {
30
- const validValues = context?.elements?.map(f => f.value);
31
- if (!validValues.includes(value)) {
32
- return false;
33
- }
34
- }
35
- return true;
36
- }
21
+
22
+ // Email validation regex based on HTML5 spec
23
+ // https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
24
+ const emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
37
25
  var _default = exports.default = {
38
26
  sort,
39
- isValid,
27
+ isValid: {
28
+ custom: (item, field) => {
29
+ const value = field.getValue({
30
+ item
31
+ });
32
+ if (![undefined, '', null].includes(value) && !emailRegex.test(value)) {
33
+ return (0, _i18n.__)('Value must be a valid email address.');
34
+ }
35
+ if (field.elements) {
36
+ const validValues = field.elements.map(f => f.value);
37
+ if (!validValues.includes(value)) {
38
+ return (0, _i18n.__)('Value must be one of the elements.');
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ },
40
44
  Edit: 'email',
41
45
  render: ({
42
46
  item,