@wordpress/dataviews 4.1.0 → 4.3.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 (223) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +77 -29
  3. package/build/components/dataviews/index.js +10 -14
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-bulk-actions/index.js +145 -141
  6. package/build/components/dataviews-bulk-actions/index.js.map +1 -1
  7. package/build/components/dataviews-filters/add-filter.js +4 -6
  8. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  9. package/build/components/dataviews-filters/index.js +3 -0
  10. package/build/components/dataviews-filters/index.js.map +1 -1
  11. package/build/components/dataviews-filters/search-widget.js +30 -23
  12. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  13. package/build/components/dataviews-footer/index.js +45 -0
  14. package/build/components/dataviews-footer/index.js.map +1 -0
  15. package/build/components/dataviews-item-actions/index.js +5 -8
  16. package/build/components/dataviews-item-actions/index.js.map +1 -1
  17. package/build/components/dataviews-pagination/index.js +27 -19
  18. package/build/components/dataviews-pagination/index.js.map +1 -1
  19. package/build/components/dataviews-view-config/index.js +197 -41
  20. package/build/components/dataviews-view-config/index.js.map +1 -1
  21. package/build/dataform-controls/datetime.js +49 -0
  22. package/build/dataform-controls/datetime.js.map +1 -0
  23. package/build/dataform-controls/index.js +50 -0
  24. package/build/dataform-controls/index.js.map +1 -0
  25. package/build/dataform-controls/integer.js +45 -0
  26. package/build/dataform-controls/integer.js.map +1 -0
  27. package/build/dataform-controls/radio.js +45 -0
  28. package/build/dataform-controls/radio.js.map +1 -0
  29. package/build/dataform-controls/select.js +58 -0
  30. package/build/dataform-controls/select.js.map +1 -0
  31. package/build/dataform-controls/text.js +45 -0
  32. package/build/dataform-controls/text.js.map +1 -0
  33. package/build/dataforms-layouts/panel/index.js +10 -4
  34. package/build/dataforms-layouts/panel/index.js.map +1 -1
  35. package/build/dataforms-layouts/regular/index.js +6 -3
  36. package/build/dataforms-layouts/regular/index.js.map +1 -1
  37. package/build/dataviews-layouts/grid/density-picker.js +23 -52
  38. package/build/dataviews-layouts/grid/density-picker.js.map +1 -1
  39. package/build/dataviews-layouts/grid/index.js +1 -1
  40. package/build/dataviews-layouts/grid/index.js.map +1 -1
  41. package/build/dataviews-layouts/index.js +48 -2
  42. package/build/dataviews-layouts/index.js.map +1 -1
  43. package/build/dataviews-layouts/list/index.js +124 -80
  44. package/build/dataviews-layouts/list/index.js.map +1 -1
  45. package/build/dataviews-layouts/table/column-header-menu.js +52 -57
  46. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  47. package/build/dataviews-layouts/table/index.js +7 -35
  48. package/build/dataviews-layouts/table/index.js.map +1 -1
  49. package/build/field-types/datetime.js +30 -0
  50. package/build/field-types/datetime.js.map +1 -0
  51. package/build/field-types/index.js +4 -0
  52. package/build/field-types/index.js.map +1 -1
  53. package/build/field-types/integer.js +1 -60
  54. package/build/field-types/integer.js.map +1 -1
  55. package/build/field-types/text.js +1 -60
  56. package/build/field-types/text.js.map +1 -1
  57. package/build/normalize-fields.js +10 -9
  58. package/build/normalize-fields.js.map +1 -1
  59. package/build/types.js.map +1 -1
  60. package/build-module/components/dataviews/index.js +10 -14
  61. package/build-module/components/dataviews/index.js.map +1 -1
  62. package/build-module/components/dataviews-bulk-actions/index.js +145 -143
  63. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  64. package/build-module/components/dataviews-filters/add-filter.js +4 -6
  65. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  66. package/build-module/components/dataviews-filters/index.js +3 -0
  67. package/build-module/components/dataviews-filters/index.js.map +1 -1
  68. package/build-module/components/dataviews-filters/search-widget.js +30 -23
  69. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  70. package/build-module/components/dataviews-footer/index.js +38 -0
  71. package/build-module/components/dataviews-footer/index.js.map +1 -0
  72. package/build-module/components/dataviews-item-actions/index.js +5 -8
  73. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  74. package/build-module/components/dataviews-pagination/index.js +28 -20
  75. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  76. package/build-module/components/dataviews-view-config/index.js +203 -47
  77. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  78. package/build-module/dataform-controls/datetime.js +43 -0
  79. package/build-module/dataform-controls/datetime.js.map +1 -0
  80. package/build-module/dataform-controls/index.js +42 -0
  81. package/build-module/dataform-controls/index.js.map +1 -0
  82. package/build-module/dataform-controls/integer.js +38 -0
  83. package/build-module/dataform-controls/integer.js.map +1 -0
  84. package/build-module/dataform-controls/radio.js +38 -0
  85. package/build-module/dataform-controls/radio.js.map +1 -0
  86. package/build-module/dataform-controls/select.js +51 -0
  87. package/build-module/dataform-controls/select.js.map +1 -0
  88. package/build-module/dataform-controls/text.js +38 -0
  89. package/build-module/dataform-controls/text.js.map +1 -0
  90. package/build-module/dataforms-layouts/panel/index.js +10 -4
  91. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  92. package/build-module/dataforms-layouts/regular/index.js +6 -3
  93. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  94. package/build-module/dataviews-layouts/grid/density-picker.js +25 -56
  95. package/build-module/dataviews-layouts/grid/density-picker.js.map +1 -1
  96. package/build-module/dataviews-layouts/grid/index.js +1 -1
  97. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  98. package/build-module/dataviews-layouts/index.js +45 -1
  99. package/build-module/dataviews-layouts/index.js.map +1 -1
  100. package/build-module/dataviews-layouts/list/index.js +125 -80
  101. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  102. package/build-module/dataviews-layouts/table/column-header-menu.js +52 -57
  103. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  104. package/build-module/dataviews-layouts/table/index.js +9 -37
  105. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  106. package/build-module/field-types/datetime.js +24 -0
  107. package/build-module/field-types/datetime.js.map +1 -0
  108. package/build-module/field-types/index.js +4 -0
  109. package/build-module/field-types/index.js.map +1 -1
  110. package/build-module/field-types/integer.js +2 -60
  111. package/build-module/field-types/integer.js.map +1 -1
  112. package/build-module/field-types/text.js +2 -60
  113. package/build-module/field-types/text.js.map +1 -1
  114. package/build-module/normalize-fields.js +11 -9
  115. package/build-module/normalize-fields.js.map +1 -1
  116. package/build-module/types.js.map +1 -1
  117. package/build-style/style-rtl.css +93 -80
  118. package/build-style/style.css +93 -80
  119. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  120. package/build-types/components/dataviews/index.d.ts.map +1 -1
  121. package/build-types/components/dataviews/stories/fixtures.d.ts +28 -113
  122. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  123. package/build-types/components/dataviews/stories/index.story.d.ts +12 -44
  124. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  125. package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
  126. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
  127. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  128. package/build-types/components/dataviews-filters/index.d.ts +1 -1
  129. package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
  130. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
  131. package/build-types/components/dataviews-footer/index.d.ts +2 -0
  132. package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
  133. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  134. package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
  135. package/build-types/components/dataviews-view-config/index.d.ts +4 -3
  136. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  137. package/build-types/dataform-controls/datetime.d.ts +6 -0
  138. package/build-types/dataform-controls/datetime.d.ts.map +1 -0
  139. package/build-types/dataform-controls/index.d.ts +11 -0
  140. package/build-types/dataform-controls/index.d.ts.map +1 -0
  141. package/build-types/dataform-controls/integer.d.ts +6 -0
  142. package/build-types/dataform-controls/integer.d.ts.map +1 -0
  143. package/build-types/dataform-controls/radio.d.ts +6 -0
  144. package/build-types/dataform-controls/radio.d.ts.map +1 -0
  145. package/build-types/dataform-controls/select.d.ts +6 -0
  146. package/build-types/dataform-controls/select.d.ts.map +1 -0
  147. package/build-types/dataform-controls/text.d.ts +6 -0
  148. package/build-types/dataform-controls/text.d.ts.map +1 -0
  149. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  150. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  151. package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +1 -1
  152. package/build-types/dataviews-layouts/index.d.ts +4 -2
  153. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  154. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  155. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  156. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  157. package/build-types/field-types/datetime.d.ts +13 -0
  158. package/build-types/field-types/datetime.d.ts.map +1 -0
  159. package/build-types/field-types/index.d.ts +1 -1
  160. package/build-types/field-types/index.d.ts.map +1 -1
  161. package/build-types/field-types/integer.d.ts +2 -3
  162. package/build-types/field-types/integer.d.ts.map +1 -1
  163. package/build-types/field-types/text.d.ts +2 -3
  164. package/build-types/field-types/text.d.ts.map +1 -1
  165. package/build-types/normalize-fields.d.ts.map +1 -1
  166. package/build-types/types.d.ts +43 -21
  167. package/build-types/types.d.ts.map +1 -1
  168. package/package.json +12 -12
  169. package/src/components/dataform/stories/index.story.tsx +43 -2
  170. package/src/components/dataviews/index.tsx +14 -18
  171. package/src/components/dataviews/stories/fixtures.tsx +690 -0
  172. package/src/components/dataviews/stories/index.story.tsx +164 -0
  173. package/src/components/dataviews/style.scss +2 -12
  174. package/src/components/dataviews-bulk-actions/index.tsx +264 -213
  175. package/src/components/dataviews-bulk-actions/style.scss +9 -4
  176. package/src/components/dataviews-filters/add-filter.tsx +7 -11
  177. package/src/components/dataviews-filters/index.tsx +3 -0
  178. package/src/components/dataviews-filters/search-widget.tsx +46 -25
  179. package/src/components/dataviews-filters/style.scss +13 -3
  180. package/src/components/dataviews-footer/index.tsx +50 -0
  181. package/src/components/dataviews-footer/style.scss +40 -0
  182. package/src/components/dataviews-item-actions/index.tsx +8 -14
  183. package/src/components/dataviews-pagination/index.tsx +40 -21
  184. package/src/components/dataviews-pagination/style.scss +7 -21
  185. package/src/components/dataviews-view-config/index.tsx +297 -69
  186. package/src/components/dataviews-view-config/style.scss +25 -0
  187. package/src/dataform-controls/datetime.tsx +43 -0
  188. package/src/dataform-controls/index.tsx +61 -0
  189. package/src/dataform-controls/integer.tsx +38 -0
  190. package/src/dataform-controls/radio.tsx +42 -0
  191. package/src/dataform-controls/select.tsx +52 -0
  192. package/src/dataform-controls/style.scss +4 -0
  193. package/src/dataform-controls/text.tsx +40 -0
  194. package/src/dataforms-layouts/panel/index.tsx +8 -2
  195. package/src/dataforms-layouts/regular/index.tsx +6 -2
  196. package/src/dataviews-layouts/grid/density-picker.tsx +33 -67
  197. package/src/dataviews-layouts/grid/index.tsx +1 -1
  198. package/src/dataviews-layouts/grid/style.scss +1 -5
  199. package/src/dataviews-layouts/index.ts +63 -2
  200. package/src/dataviews-layouts/list/index.tsx +199 -123
  201. package/src/dataviews-layouts/list/style.scss +10 -4
  202. package/src/dataviews-layouts/table/column-header-menu.tsx +86 -90
  203. package/src/dataviews-layouts/table/index.tsx +8 -65
  204. package/src/dataviews-layouts/table/style.scss +0 -5
  205. package/src/field-types/datetime.tsx +28 -0
  206. package/src/field-types/index.tsx +5 -0
  207. package/src/field-types/integer.tsx +2 -71
  208. package/src/field-types/text.tsx +2 -70
  209. package/src/normalize-fields.ts +10 -10
  210. package/src/style.scss +2 -1
  211. package/src/test/filter-and-sort-data-view.js +28 -0
  212. package/src/types.ts +56 -32
  213. package/tsconfig.tsbuildinfo +1 -1
  214. package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
  215. package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  216. package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
  217. package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  218. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
  219. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
  220. package/src/components/dataviews/stories/fixtures.js +0 -222
  221. package/src/components/dataviews/stories/index.story.js +0 -65
  222. package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
  223. package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
@@ -16,21 +16,17 @@ import { forwardRef, Children, Fragment } from '@wordpress/element';
16
16
  import { unlock } from '../../lock-unlock';
17
17
  import { sanitizeOperators } from '../../utils';
18
18
  import { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../constants';
19
+ import { getVisibleFieldIds } from '../index';
19
20
  import { jsx as _jsx } from "react/jsx-runtime";
20
21
  import { jsxs as _jsxs } from "react/jsx-runtime";
21
22
  const {
22
- DropdownMenuV2: DropdownMenu,
23
- DropdownMenuGroupV2: DropdownMenuGroup,
24
- DropdownMenuItemV2: DropdownMenuItem,
25
- DropdownMenuRadioItemV2: DropdownMenuRadioItem,
26
- DropdownMenuItemLabelV2: DropdownMenuItemLabel,
27
- DropdownMenuSeparatorV2: DropdownMenuSeparator
23
+ DropdownMenuV2
28
24
  } = unlock(componentsPrivateApis);
29
25
  function WithDropDownMenuSeparators({
30
26
  children
31
27
  }) {
32
28
  return Children.toArray(children).filter(Boolean).map((child, i) => /*#__PURE__*/_jsxs(Fragment, {
33
- children: [i > 0 && /*#__PURE__*/_jsx(DropdownMenuSeparator, {}), child]
29
+ children: [i > 0 && /*#__PURE__*/_jsx(DropdownMenuV2.Separator, {}), child]
34
30
  }, i));
35
31
  }
36
32
  const _HeaderMenu = forwardRef(function HeaderMenu({
@@ -41,35 +37,41 @@ const _HeaderMenu = forwardRef(function HeaderMenu({
41
37
  onHide,
42
38
  setOpenedFilter
43
39
  }, ref) {
40
+ const visibleFieldIds = getVisibleFieldIds(view, fields);
41
+ const index = visibleFieldIds?.indexOf(fieldId);
42
+ const isSorted = view.sort?.field === fieldId;
43
+ let isHidable = false;
44
+ let isSortable = false;
45
+ let canAddFilter = false;
46
+ let header;
47
+ let operators = [];
44
48
  const combinedField = view.layout?.combinedFields?.find(f => f.id === fieldId);
45
- const index = view.fields?.indexOf(fieldId);
46
- if (!!combinedField) {
47
- return combinedField.label;
48
- }
49
49
  const field = fields.find(f => f.id === fieldId);
50
- if (!field) {
51
- return null;
52
- }
53
- const isHidable = field.enableHiding !== false;
54
- const isSortable = field.enableSorting !== false;
55
- const isSorted = view.sort?.field === field.id;
56
- const operators = sanitizeOperators(field);
57
- // Filter can be added:
58
- // 1. If the field is not already part of a view's filters.
59
- // 2. If the field meets the type and operator requirements.
60
- // 3. If it's not primary. If it is, it should be already visible.
61
- const canAddFilter = !view.filters?.some(_filter => field.id === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary;
62
- if (!isSortable && !isHidable && !canAddFilter) {
63
- return field.label;
50
+ if (!combinedField) {
51
+ if (!field) {
52
+ // No combined or regular field found.
53
+ return null;
54
+ }
55
+ isHidable = field.enableHiding !== false;
56
+ isSortable = field.enableSorting !== false;
57
+ header = field.header;
58
+ operators = sanitizeOperators(field);
59
+ // Filter can be added:
60
+ // 1. If the field is not already part of a view's filters.
61
+ // 2. If the field meets the type and operator requirements.
62
+ // 3. If it's not primary. If it is, it should be already visible.
63
+ canAddFilter = !view.filters?.some(_filter => fieldId === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary;
64
+ } else {
65
+ header = combinedField.header || combinedField.label;
64
66
  }
65
- return /*#__PURE__*/_jsx(DropdownMenu, {
67
+ return /*#__PURE__*/_jsx(DropdownMenuV2, {
66
68
  align: "start",
67
69
  trigger: /*#__PURE__*/_jsxs(Button, {
68
70
  size: "compact",
69
71
  className: "dataviews-view-table-header-button",
70
72
  ref: ref,
71
73
  variant: "tertiary",
72
- children: [field.label, view.sort && isSorted && /*#__PURE__*/_jsx("span", {
74
+ children: [header, view.sort && isSorted && /*#__PURE__*/_jsx("span", {
73
75
  "aria-hidden": "true",
74
76
  children: sortArrows[view.sort.direction]
75
77
  })]
@@ -78,11 +80,11 @@ const _HeaderMenu = forwardRef(function HeaderMenu({
78
80
  minWidth: '240px'
79
81
  },
80
82
  children: /*#__PURE__*/_jsxs(WithDropDownMenuSeparators, {
81
- children: [isSortable && /*#__PURE__*/_jsx(DropdownMenuGroup, {
83
+ children: [isSortable && /*#__PURE__*/_jsx(DropdownMenuV2.Group, {
82
84
  children: SORTING_DIRECTIONS.map(direction => {
83
85
  const isChecked = view.sort && isSorted && view.sort.direction === direction;
84
- const value = `${field.id}-${direction}`;
85
- return /*#__PURE__*/_jsx(DropdownMenuRadioItem, {
86
+ const value = `${fieldId}-${direction}`;
87
+ return /*#__PURE__*/_jsx(DropdownMenuV2.RadioItem, {
86
88
  // All sorting radio items share the same name, so that
87
89
  // selecting a sorting option automatically deselects the
88
90
  // previously selected one, even if it is displayed in
@@ -95,87 +97,80 @@ const _HeaderMenu = forwardRef(function HeaderMenu({
95
97
  onChangeView({
96
98
  ...view,
97
99
  sort: {
98
- field: field.id,
100
+ field: fieldId,
99
101
  direction
100
102
  }
101
103
  });
102
104
  },
103
- children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
105
+ children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
104
106
  children: sortLabels[direction]
105
107
  })
106
108
  }, value);
107
109
  })
108
- }), canAddFilter && /*#__PURE__*/_jsx(DropdownMenuGroup, {
109
- children: /*#__PURE__*/_jsx(DropdownMenuItem, {
110
+ }), canAddFilter && /*#__PURE__*/_jsx(DropdownMenuV2.Group, {
111
+ children: /*#__PURE__*/_jsx(DropdownMenuV2.Item, {
110
112
  prefix: /*#__PURE__*/_jsx(Icon, {
111
113
  icon: funnel
112
114
  }),
113
115
  onClick: () => {
114
- setOpenedFilter(field.id);
116
+ setOpenedFilter(fieldId);
115
117
  onChangeView({
116
118
  ...view,
117
119
  page: 1,
118
120
  filters: [...(view.filters || []), {
119
- field: field.id,
121
+ field: fieldId,
120
122
  value: undefined,
121
123
  operator: operators[0]
122
124
  }]
123
125
  });
124
126
  },
125
- children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
127
+ children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
126
128
  children: __('Add filter')
127
129
  })
128
130
  })
129
- }), /*#__PURE__*/_jsxs(DropdownMenuGroup, {
130
- children: [/*#__PURE__*/_jsx(DropdownMenuItem, {
131
+ }), /*#__PURE__*/_jsxs(DropdownMenuV2.Group, {
132
+ children: [/*#__PURE__*/_jsx(DropdownMenuV2.Item, {
131
133
  prefix: /*#__PURE__*/_jsx(Icon, {
132
134
  icon: arrowLeft
133
135
  }),
134
136
  disabled: index < 1,
135
137
  onClick: () => {
136
- var _view$fields$slice;
137
- if (!view.fields || index < 1) {
138
- return;
139
- }
138
+ var _visibleFieldIds$slic;
140
139
  onChangeView({
141
140
  ...view,
142
- fields: [...((_view$fields$slice = view.fields.slice(0, index - 1)) !== null && _view$fields$slice !== void 0 ? _view$fields$slice : []), field.id, view.fields[index - 1], ...view.fields.slice(index + 1)]
141
+ fields: [...((_visibleFieldIds$slic = visibleFieldIds.slice(0, index - 1)) !== null && _visibleFieldIds$slic !== void 0 ? _visibleFieldIds$slic : []), fieldId, visibleFieldIds[index - 1], ...visibleFieldIds.slice(index + 1)]
143
142
  });
144
143
  },
145
- children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
144
+ children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
146
145
  children: __('Move left')
147
146
  })
148
- }), /*#__PURE__*/_jsx(DropdownMenuItem, {
147
+ }), /*#__PURE__*/_jsx(DropdownMenuV2.Item, {
149
148
  prefix: /*#__PURE__*/_jsx(Icon, {
150
149
  icon: arrowRight
151
150
  }),
152
- disabled: !view.fields || index >= view.fields.length - 1,
151
+ disabled: index >= visibleFieldIds.length - 1,
153
152
  onClick: () => {
154
- var _view$fields$slice2;
155
- if (!view.fields || index >= view.fields.length - 1) {
156
- return;
157
- }
153
+ var _visibleFieldIds$slic2;
158
154
  onChangeView({
159
155
  ...view,
160
- fields: [...((_view$fields$slice2 = view.fields.slice(0, index)) !== null && _view$fields$slice2 !== void 0 ? _view$fields$slice2 : []), view.fields[index + 1], field.id, ...view.fields.slice(index + 2)]
156
+ fields: [...((_visibleFieldIds$slic2 = visibleFieldIds.slice(0, index)) !== null && _visibleFieldIds$slic2 !== void 0 ? _visibleFieldIds$slic2 : []), visibleFieldIds[index + 1], fieldId, ...visibleFieldIds.slice(index + 2)]
161
157
  });
162
158
  },
163
- children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
159
+ children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
164
160
  children: __('Move right')
165
161
  })
166
- }), isHidable && /*#__PURE__*/_jsx(DropdownMenuItem, {
162
+ }), isHidable && field && /*#__PURE__*/_jsx(DropdownMenuV2.Item, {
167
163
  prefix: /*#__PURE__*/_jsx(Icon, {
168
164
  icon: unseen
169
165
  }),
170
166
  onClick: () => {
171
- const viewFields = view.fields || fields.map(f => f.id);
172
167
  onHide(field);
173
168
  onChangeView({
174
169
  ...view,
175
- fields: viewFields.filter(id => id !== field.id)
170
+ fields: visibleFieldIds.filter(id => id !== fieldId)
176
171
  });
177
172
  },
178
- children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
173
+ children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
179
174
  children: __('Hide column')
180
175
  })
181
176
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["__","arrowLeft","arrowRight","unseen","funnel","Button","Icon","privateApis","componentsPrivateApis","forwardRef","Children","Fragment","unlock","sanitizeOperators","SORTING_DIRECTIONS","sortArrows","sortLabels","jsx","_jsx","jsxs","_jsxs","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","DropdownMenuSeparatorV2","DropdownMenuSeparator","WithDropDownMenuSeparators","children","toArray","filter","Boolean","map","child","i","_HeaderMenu","HeaderMenu","fieldId","view","fields","onChangeView","onHide","setOpenedFilter","ref","combinedField","layout","combinedFields","find","f","id","index","indexOf","label","field","isHidable","enableHiding","isSortable","enableSorting","isSorted","sort","operators","canAddFilter","filters","some","_filter","elements","length","filterBy","isPrimary","align","trigger","size","className","variant","direction","style","minWidth","isChecked","value","name","checked","onChange","prefix","icon","onClick","page","undefined","operator","disabled","_view$fields$slice","slice","_view$fields$slice2","viewFields","ColumnHeaderMenu"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/column-header-menu.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef, Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { sanitizeOperators } from '../../utils';\nimport { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../constants';\nimport type {\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n} from '../../types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item > {\n\tfieldId: string;\n\tview: ViewTableType;\n\tfields: NormalizedField< Item >[];\n\tonChangeView: ( view: ViewTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n}\n\nfunction WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item >(\n\t{\n\t\tfieldId,\n\t\tview,\n\t\tfields,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst combinedField = view.layout?.combinedFields?.find(\n\t\t( f ) => f.id === fieldId\n\t);\n\tconst index = view.fields?.indexOf( fieldId ) as number;\n\tif ( !! combinedField ) {\n\t\treturn combinedField.label;\n\t}\n\tconst field = fields.find( ( f ) => f.id === fieldId );\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\tconst isHidable = field.enableHiding !== false;\n\tconst isSortable = field.enableSorting !== false;\n\tconst isSorted = view.sort?.field === field.id;\n\tconst operators = sanitizeOperators( field );\n\t// Filter can be added:\n\t// 1. If the field is not already part of a view's filters.\n\t// 2. If the field meets the type and operator requirements.\n\t// 3. If it's not primary. If it is, it should be already visible.\n\tconst canAddFilter =\n\t\t! view.filters?.some( ( _filter ) => field.id === _filter.field ) &&\n\t\t!! field.elements?.length &&\n\t\t!! operators.length &&\n\t\t! field.filterBy?.isPrimary;\n\tif ( ! isSortable && ! isHidable && ! canAddFilter ) {\n\t\treturn field.label;\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t>\n\t\t\t\t\t{ field.label }\n\t\t\t\t\t{ view.sort && isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ sortArrows[ view.sort.direction ] }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tstyle={ { minWidth: '240px' } }\n\t\t>\n\t\t\t<WithDropDownMenuSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tview.sort &&\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\tconst value = `${ field.id }-${ direction }`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ canAddFilter && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( field.id );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tprefix={ <Icon icon={ arrowLeft } /> }\n\t\t\t\t\t\tdisabled={ index < 1 }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( ! view.fields || index < 1 ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t...( view.fields.slice( 0, index - 1 ) ??\n\t\t\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t\tview.fields[ index - 1 ],\n\t\t\t\t\t\t\t\t\t...view.fields.slice( index + 1 ),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ __( 'Move left' ) }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tprefix={ <Icon icon={ arrowRight } /> }\n\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t! view.fields || index >= view.fields.length - 1\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t! view.fields ||\n\t\t\t\t\t\t\t\tindex >= view.fields.length - 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t...( view.fields.slice( 0, index ) ?? [] ),\n\t\t\t\t\t\t\t\t\tview.fields[ index + 1 ],\n\t\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t\t...view.fields.slice( index + 2 ),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ __( 'Move right' ) }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t{ isHidable && (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst viewFields =\n\t\t\t\t\t\t\t\t\tview.fields || fields.map( ( f ) => f.id );\n\t\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tfields: viewFields.filter(\n\t\t\t\t\t\t\t\t\t\t( id ) => id !== field.id\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Hide column' ) }\n\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</WithDropDownMenuSeparators>\n\t\t</DropdownMenu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst ColumnHeaderMenu: < Item >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nexport default ColumnHeaderMenu;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,QAAQ,kBAAkB;AACxE,SACCC,MAAM,EACNC,IAAI,EACJC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,oBAAoB;;AAEnE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,iBAAiB,QAAQ,aAAa;AAC/C,SAASC,kBAAkB,EAAEC,UAAU,EAAEC,UAAU,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAO7E,MAAM;EACLC,cAAc,EAAEC,YAAY;EAC5BC,mBAAmB,EAAEC,iBAAiB;EACtCC,kBAAkB,EAAEC,gBAAgB;EACpCC,uBAAuB,EAAEC,qBAAqB;EAC9CC,uBAAuB,EAAEC,qBAAqB;EAC9CC,uBAAuB,EAAEC;AAC1B,CAAC,GAAGpB,MAAM,CAAEJ,qBAAsB,CAAC;AAWnC,SAASyB,0BAA0BA,CAAE;EAAEC;AAAkC,CAAC,EAAG;EAC5E,OAAOxB,QAAQ,CAACyB,OAAO,CAAED,QAAS,CAAC,CACjCE,MAAM,CAAEC,OAAQ,CAAC,CACjBC,GAAG,CAAE,CAAEC,KAAK,EAAEC,CAAC,kBACfpB,KAAA,CAACT,QAAQ;IAAAuB,QAAA,GACNM,CAAC,GAAG,CAAC,iBAAItB,IAAA,CAACc,qBAAqB,IAAE,CAAC,EAClCO,KAAK;EAAA,GAFQC,CAGN,CACT,CAAC;AACL;AAEA,MAAMC,WAAW,GAAGhC,UAAU,CAAE,SAASiC,UAAUA,CAClD;EACCC,OAAO;EACPC,IAAI;EACJC,MAAM;EACNC,YAAY;EACZC,MAAM;EACNC;AACwB,CAAC,EAC1BC,GAA6B,EAC5B;EACD,MAAMC,aAAa,GAAGN,IAAI,CAACO,MAAM,EAAEC,cAAc,EAAEC,IAAI,CACpDC,CAAC,IAAMA,CAAC,CAACC,EAAE,KAAKZ,OACnB,CAAC;EACD,MAAMa,KAAK,GAAGZ,IAAI,CAACC,MAAM,EAAEY,OAAO,CAAEd,OAAQ,CAAW;EACvD,IAAK,CAAC,CAAEO,aAAa,EAAG;IACvB,OAAOA,aAAa,CAACQ,KAAK;EAC3B;EACA,MAAMC,KAAK,GAAGd,MAAM,CAACQ,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACC,EAAE,KAAKZ,OAAQ,CAAC;EACtD,IAAK,CAAEgB,KAAK,EAAG;IACd,OAAO,IAAI;EACZ;EACA,MAAMC,SAAS,GAAGD,KAAK,CAACE,YAAY,KAAK,KAAK;EAC9C,MAAMC,UAAU,GAAGH,KAAK,CAACI,aAAa,KAAK,KAAK;EAChD,MAAMC,QAAQ,GAAGpB,IAAI,CAACqB,IAAI,EAAEN,KAAK,KAAKA,KAAK,CAACJ,EAAE;EAC9C,MAAMW,SAAS,GAAGrD,iBAAiB,CAAE8C,KAAM,CAAC;EAC5C;EACA;EACA;EACA;EACA,MAAMQ,YAAY,GACjB,CAAEvB,IAAI,CAACwB,OAAO,EAAEC,IAAI,CAAIC,OAAO,IAAMX,KAAK,CAACJ,EAAE,KAAKe,OAAO,CAACX,KAAM,CAAC,IACjE,CAAC,CAAEA,KAAK,CAACY,QAAQ,EAAEC,MAAM,IACzB,CAAC,CAAEN,SAAS,CAACM,MAAM,IACnB,CAAEb,KAAK,CAACc,QAAQ,EAAEC,SAAS;EAC5B,IAAK,CAAEZ,UAAU,IAAI,CAAEF,SAAS,IAAI,CAAEO,YAAY,EAAG;IACpD,OAAOR,KAAK,CAACD,KAAK;EACnB;EACA,oBACCxC,IAAA,CAACI,YAAY;IACZqD,KAAK,EAAC,OAAO;IACbC,OAAO,eACNxD,KAAA,CAACf,MAAM;MACNwE,IAAI,EAAC,SAAS;MACdC,SAAS,EAAC,oCAAoC;MAC9C7B,GAAG,EAAGA,GAAK;MACX8B,OAAO,EAAC,UAAU;MAAA7C,QAAA,GAEhByB,KAAK,CAACD,KAAK,EACXd,IAAI,CAACqB,IAAI,IAAID,QAAQ,iBACtB9C,IAAA;QAAM,eAAY,MAAM;QAAAgB,QAAA,EACrBnB,UAAU,CAAE6B,IAAI,CAACqB,IAAI,CAACe,SAAS;MAAE,CAC9B,CACN;IAAA,CACM,CACR;IACDC,KAAK,EAAG;MAAEC,QAAQ,EAAE;IAAQ,CAAG;IAAAhD,QAAA,eAE/Bd,KAAA,CAACa,0BAA0B;MAAAC,QAAA,GACxB4B,UAAU,iBACX5C,IAAA,CAACM,iBAAiB;QAAAU,QAAA,EACfpB,kBAAkB,CAACwB,GAAG,CACrB0C,SAAwB,IAAM;UAC/B,MAAMG,SAAS,GACdvC,IAAI,CAACqB,IAAI,IACTD,QAAQ,IACRpB,IAAI,CAACqB,IAAI,CAACe,SAAS,KAAKA,SAAS;UAElC,MAAMI,KAAK,GAAI,GAAGzB,KAAK,CAACJ,EAAI,IAAIyB,SAAW,EAAC;UAE5C,oBACC9D,IAAA,CAACU,qBAAqB;YAErB;YACA;YACA;YACA;YACA;YACAyD,IAAI,EAAC,oBAAoB;YACzBD,KAAK,EAAGA,KAAO;YACfE,OAAO,EAAGH,SAAW;YACrBI,QAAQ,EAAGA,CAAA,KAAM;cAChBzC,YAAY,CAAE;gBACb,GAAGF,IAAI;gBACPqB,IAAI,EAAE;kBACLN,KAAK,EAAEA,KAAK,CAACJ,EAAE;kBACfyB;gBACD;cACD,CAAE,CAAC;YACJ,CAAG;YAAA9C,QAAA,eAEHhB,IAAA,CAACY,qBAAqB;cAAAI,QAAA,EACnBlB,UAAU,CAAEgE,SAAS;YAAE,CACH;UAAC,GArBlBI,KAsBgB,CAAC;QAE1B,CACD;MAAC,CACiB,CACnB,EACCjB,YAAY,iBACbjD,IAAA,CAACM,iBAAiB;QAAAU,QAAA,eACjBhB,IAAA,CAACQ,gBAAgB;UAChB8D,MAAM,eAAGtE,IAAA,CAACZ,IAAI;YAACmF,IAAI,EAAGrF;UAAQ,CAAE,CAAG;UACnCsF,OAAO,EAAGA,CAAA,KAAM;YACf1C,eAAe,CAAEW,KAAK,CAACJ,EAAG,CAAC;YAC3BT,YAAY,CAAE;cACb,GAAGF,IAAI;cACP+C,IAAI,EAAE,CAAC;cACPvB,OAAO,EAAE,CACR,IAAKxB,IAAI,CAACwB,OAAO,IAAI,EAAE,CAAE,EACzB;gBACCT,KAAK,EAAEA,KAAK,CAACJ,EAAE;gBACf6B,KAAK,EAAEQ,SAAS;gBAChBC,QAAQ,EAAE3B,SAAS,CAAE,CAAC;cACvB,CAAC;YAEH,CAAE,CAAC;UACJ,CAAG;UAAAhC,QAAA,eAEHhB,IAAA,CAACY,qBAAqB;YAAAI,QAAA,EACnBlC,EAAE,CAAE,YAAa;UAAC,CACE;QAAC,CACP;MAAC,CACD,CACnB,eACDoB,KAAA,CAACI,iBAAiB;QAAAU,QAAA,gBACjBhB,IAAA,CAACQ,gBAAgB;UAChB8D,MAAM,eAAGtE,IAAA,CAACZ,IAAI;YAACmF,IAAI,EAAGxF;UAAW,CAAE,CAAG;UACtC6F,QAAQ,EAAGtC,KAAK,GAAG,CAAG;UACtBkC,OAAO,EAAGA,CAAA,KAAM;YAAA,IAAAK,kBAAA;YACf,IAAK,CAAEnD,IAAI,CAACC,MAAM,IAAIW,KAAK,GAAG,CAAC,EAAG;cACjC;YACD;YACAV,YAAY,CAAE;cACb,GAAGF,IAAI;cACPC,MAAM,EAAE,CACP,KAAAkD,kBAAA,GAAKnD,IAAI,CAACC,MAAM,CAACmD,KAAK,CAAE,CAAC,EAAExC,KAAK,GAAG,CAAE,CAAC,cAAAuC,kBAAA,cAAAA,kBAAA,GACrC,EAAE,CAAE,EACLpC,KAAK,CAACJ,EAAE,EACRX,IAAI,CAACC,MAAM,CAAEW,KAAK,GAAG,CAAC,CAAE,EACxB,GAAGZ,IAAI,CAACC,MAAM,CAACmD,KAAK,CAAExC,KAAK,GAAG,CAAE,CAAC;YAEnC,CAAE,CAAC;UACJ,CAAG;UAAAtB,QAAA,eAEHhB,IAAA,CAACY,qBAAqB;YAAAI,QAAA,EACnBlC,EAAE,CAAE,WAAY;UAAC,CACG;QAAC,CACP,CAAC,eACnBkB,IAAA,CAACQ,gBAAgB;UAChB8D,MAAM,eAAGtE,IAAA,CAACZ,IAAI;YAACmF,IAAI,EAAGvF;UAAY,CAAE,CAAG;UACvC4F,QAAQ,EACP,CAAElD,IAAI,CAACC,MAAM,IAAIW,KAAK,IAAIZ,IAAI,CAACC,MAAM,CAAC2B,MAAM,GAAG,CAC/C;UACDkB,OAAO,EAAGA,CAAA,KAAM;YAAA,IAAAO,mBAAA;YACf,IACC,CAAErD,IAAI,CAACC,MAAM,IACbW,KAAK,IAAIZ,IAAI,CAACC,MAAM,CAAC2B,MAAM,GAAG,CAAC,EAC9B;cACD;YACD;YACA1B,YAAY,CAAE;cACb,GAAGF,IAAI;cACPC,MAAM,EAAE,CACP,KAAAoD,mBAAA,GAAKrD,IAAI,CAACC,MAAM,CAACmD,KAAK,CAAE,CAAC,EAAExC,KAAM,CAAC,cAAAyC,mBAAA,cAAAA,mBAAA,GAAI,EAAE,CAAE,EAC1CrD,IAAI,CAACC,MAAM,CAAEW,KAAK,GAAG,CAAC,CAAE,EACxBG,KAAK,CAACJ,EAAE,EACR,GAAGX,IAAI,CAACC,MAAM,CAACmD,KAAK,CAAExC,KAAK,GAAG,CAAE,CAAC;YAEnC,CAAE,CAAC;UACJ,CAAG;UAAAtB,QAAA,eAEHhB,IAAA,CAACY,qBAAqB;YAAAI,QAAA,EACnBlC,EAAE,CAAE,YAAa;UAAC,CACE;QAAC,CACP,CAAC,EACjB4D,SAAS,iBACV1C,IAAA,CAACQ,gBAAgB;UAChB8D,MAAM,eAAGtE,IAAA,CAACZ,IAAI;YAACmF,IAAI,EAAGtF;UAAQ,CAAE,CAAG;UACnCuF,OAAO,EAAGA,CAAA,KAAM;YACf,MAAMQ,UAAU,GACftD,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACP,GAAG,CAAIgB,CAAC,IAAMA,CAAC,CAACC,EAAG,CAAC;YAC3CR,MAAM,CAAEY,KAAM,CAAC;YACfb,YAAY,CAAE;cACb,GAAGF,IAAI;cACPC,MAAM,EAAEqD,UAAU,CAAC9D,MAAM,CACtBmB,EAAE,IAAMA,EAAE,KAAKI,KAAK,CAACJ,EACxB;YACD,CAAE,CAAC;UACJ,CAAG;UAAArB,QAAA,eAEHhB,IAAA,CAACY,qBAAqB;YAAAI,QAAA,EACnBlC,EAAE,CAAE,aAAc;UAAC,CACC;QAAC,CACP,CAClB;MAAA,CACiB,CAAC;IAAA,CACO;EAAC,CAChB,CAAC;AAEjB,CAAE,CAAC;;AAEH;AACA,MAAMmG,gBAG+B,GAAG1D,WAAW;AAEnD,eAAe0D,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["__","arrowLeft","arrowRight","unseen","funnel","Button","Icon","privateApis","componentsPrivateApis","forwardRef","Children","Fragment","unlock","sanitizeOperators","SORTING_DIRECTIONS","sortArrows","sortLabels","getVisibleFieldIds","jsx","_jsx","jsxs","_jsxs","DropdownMenuV2","WithDropDownMenuSeparators","children","toArray","filter","Boolean","map","child","i","Separator","_HeaderMenu","HeaderMenu","fieldId","view","fields","onChangeView","onHide","setOpenedFilter","ref","visibleFieldIds","index","indexOf","isSorted","sort","field","isHidable","isSortable","canAddFilter","header","operators","combinedField","layout","combinedFields","find","f","id","enableHiding","enableSorting","filters","some","_filter","elements","length","filterBy","isPrimary","label","align","trigger","size","className","variant","direction","style","minWidth","Group","isChecked","value","RadioItem","name","checked","onChange","ItemLabel","Item","prefix","icon","onClick","page","undefined","operator","disabled","_visibleFieldIds$slic","slice","_visibleFieldIds$slic2","ColumnHeaderMenu"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/column-header-menu.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef, Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { sanitizeOperators } from '../../utils';\nimport { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../constants';\nimport type {\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tOperator,\n} from '../../types';\nimport { getVisibleFieldIds } from '../index';\n\nconst { DropdownMenuV2 } = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item > {\n\tfieldId: string;\n\tview: ViewTableType;\n\tfields: NormalizedField< Item >[];\n\tonChangeView: ( view: ViewTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n}\n\nfunction WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuV2.Separator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item >(\n\t{\n\t\tfieldId,\n\t\tview,\n\t\tfields,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst visibleFieldIds = getVisibleFieldIds( view, fields );\n\tconst index = visibleFieldIds?.indexOf( fieldId ) as number;\n\tconst isSorted = view.sort?.field === fieldId;\n\tlet isHidable = false;\n\tlet isSortable = false;\n\tlet canAddFilter = false;\n\tlet header;\n\tlet operators: Operator[] = [];\n\n\tconst combinedField = view.layout?.combinedFields?.find(\n\t\t( f ) => f.id === fieldId\n\t);\n\tconst field = fields.find( ( f ) => f.id === fieldId );\n\n\tif ( ! combinedField ) {\n\t\tif ( ! field ) {\n\t\t\t// No combined or regular field found.\n\t\t\treturn null;\n\t\t}\n\n\t\tisHidable = field.enableHiding !== false;\n\t\tisSortable = field.enableSorting !== false;\n\t\theader = field.header;\n\n\t\toperators = sanitizeOperators( field );\n\t\t// Filter can be added:\n\t\t// 1. If the field is not already part of a view's filters.\n\t\t// 2. If the field meets the type and operator requirements.\n\t\t// 3. If it's not primary. If it is, it should be already visible.\n\t\tcanAddFilter =\n\t\t\t! view.filters?.some( ( _filter ) => fieldId === _filter.field ) &&\n\t\t\t!! field.elements?.length &&\n\t\t\t!! operators.length &&\n\t\t\t! field.filterBy?.isPrimary;\n\t} else {\n\t\theader = combinedField.header || combinedField.label;\n\t}\n\n\treturn (\n\t\t<DropdownMenuV2\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t>\n\t\t\t\t\t{ header }\n\t\t\t\t\t{ view.sort && isSorted && (\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ sortArrows[ view.sort.direction ] }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\tstyle={ { minWidth: '240px' } }\n\t\t>\n\t\t\t<WithDropDownMenuSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuV2.Group>\n\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tview.sort &&\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\tconst value = `${ fieldId }-${ direction }`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuV2.RadioItem\n\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuV2.RadioItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenuV2.Group>\n\t\t\t\t) }\n\t\t\t\t{ canAddFilter && (\n\t\t\t\t\t<DropdownMenuV2.Group>\n\t\t\t\t\t\t<DropdownMenuV2.Item\n\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( fieldId );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t</DropdownMenuV2.Item>\n\t\t\t\t\t</DropdownMenuV2.Group>\n\t\t\t\t) }\n\t\t\t\t<DropdownMenuV2.Group>\n\t\t\t\t\t<DropdownMenuV2.Item\n\t\t\t\t\t\tprefix={ <Icon icon={ arrowLeft } /> }\n\t\t\t\t\t\tdisabled={ index < 1 }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\tindex - 1\n\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\tfieldId,\n\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index - 1 ],\n\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice( index + 1 ),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t{ __( 'Move left' ) }\n\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t</DropdownMenuV2.Item>\n\t\t\t\t\t<DropdownMenuV2.Item\n\t\t\t\t\t\tprefix={ <Icon icon={ arrowRight } /> }\n\t\t\t\t\t\tdisabled={ index >= visibleFieldIds.length - 1 }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice( 0, index ) ??\n\t\t\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index + 1 ],\n\t\t\t\t\t\t\t\t\tfieldId,\n\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice( index + 2 ),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t{ __( 'Move right' ) }\n\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t</DropdownMenuV2.Item>\n\t\t\t\t\t{ isHidable && field && (\n\t\t\t\t\t\t<DropdownMenuV2.Item\n\t\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tfields: visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t( id ) => id !== fieldId\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t{ __( 'Hide column' ) }\n\t\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t</DropdownMenuV2.Item>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenuV2.Group>\n\t\t\t</WithDropDownMenuSeparators>\n\t\t</DropdownMenuV2>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst ColumnHeaderMenu: < Item >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nexport default ColumnHeaderMenu;\n"],"mappings":"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","ignoreList":[]}
@@ -7,8 +7,8 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
- import { CheckboxControl, Spinner, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
11
- import { useEffect, useId, useRef, useState, useMemo } from '@wordpress/element';
10
+ import { Spinner, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
11
+ import { useEffect, useId, useRef, useState } from '@wordpress/element';
12
12
 
13
13
  /**
14
14
  * Internal dependencies
@@ -16,40 +16,12 @@ import { useEffect, useId, useRef, useState, useMemo } from '@wordpress/element'
16
16
  import SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';
17
17
  import ItemActions from '../../components/dataviews-item-actions';
18
18
  import { sortValues } from '../../constants';
19
- import { useSomeItemHasAPossibleBulkAction, useHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';
19
+ import { useSomeItemHasAPossibleBulkAction, useHasAPossibleBulkAction, BulkSelectionCheckbox } from '../../components/dataviews-bulk-actions';
20
20
  import ColumnHeaderMenu from './column-header-menu';
21
+ import { getVisibleFieldIds } from '../index';
21
22
  import { jsx as _jsx } from "react/jsx-runtime";
22
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
23
24
  import { Fragment as _Fragment } from "react/jsx-runtime";
24
- function BulkSelectionCheckbox({
25
- selection,
26
- onChangeSelection,
27
- data,
28
- actions,
29
- getItemId
30
- }) {
31
- const selectableItems = useMemo(() => {
32
- return data.filter(item => {
33
- return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
34
- });
35
- }, [data, actions]);
36
- const selectedItems = data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
37
- const areAllSelected = selectedItems.length === selectableItems.length;
38
- return /*#__PURE__*/_jsx(CheckboxControl, {
39
- className: "dataviews-view-table-selection-checkbox",
40
- __nextHasNoMarginBottom: true,
41
- checked: areAllSelected,
42
- indeterminate: !areAllSelected && !!selectedItems.length,
43
- onChange: () => {
44
- if (areAllSelected) {
45
- onChangeSelection([]);
46
- } else {
47
- onChangeSelection(selectableItems.map(item => getItemId(item)));
48
- }
49
- },
50
- "aria-label": areAllSelected ? __('Deselect all') : __('Select all')
51
- });
52
- }
53
25
  function TableColumn({
54
26
  column,
55
27
  fields,
@@ -132,8 +104,8 @@ function TableRow({
132
104
  // Will be set to true if `onTouchStart` fires. This happens before
133
105
  // `onClick` and can be used to exclude touchscreen devices from certain
134
106
  // behaviours.
135
- const isTouchDevice = useRef(false);
136
- const columns = view.fields || fields.map(f => f.id);
107
+ const isTouchDeviceRef = useRef(false);
108
+ const columns = getVisibleFieldIds(view, fields);
137
109
  return /*#__PURE__*/_jsxs("tr", {
138
110
  className: clsx('dataviews-view-table__row', {
139
111
  'is-selected': hasPossibleBulkAction && isSelected,
@@ -143,13 +115,13 @@ function TableRow({
143
115
  onMouseEnter: handleMouseEnter,
144
116
  onMouseLeave: handleMouseLeave,
145
117
  onTouchStart: () => {
146
- isTouchDevice.current = true;
118
+ isTouchDeviceRef.current = true;
147
119
  },
148
120
  onClick: () => {
149
121
  if (!hasPossibleBulkAction) {
150
122
  return;
151
123
  }
152
- if (!isTouchDevice.current && document.getSelection()?.type !== 'Range') {
124
+ if (!isTouchDeviceRef.current && document.getSelection()?.type !== 'Range') {
153
125
  onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [id]);
154
126
  }
155
127
  },
@@ -247,7 +219,7 @@ function ViewTable({
247
219
  const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : undefined;
248
220
  setNextHeaderMenuToFocus(fallback?.node);
249
221
  };
250
- const columns = view.fields || fields.map(f => f.id);
222
+ const columns = getVisibleFieldIds(view, fields);
251
223
  const hasData = !!data?.length;
252
224
  const primaryField = fields.find(field => field.id === view.layout?.primaryField);
253
225
  return /*#__PURE__*/_jsxs(_Fragment, {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","CheckboxControl","Spinner","__experimentalHStack","HStack","__experimentalVStack","VStack","useEffect","useId","useRef","useState","useMemo","SingleSelectionCheckbox","ItemActions","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","ColumnHeaderMenu","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","BulkSelectionCheckbox","selection","onChangeSelection","data","actions","getItemId","selectableItems","filter","item","some","action","supportsBulk","isEligible","selectedItems","includes","areAllSelected","length","className","__nextHasNoMarginBottom","checked","indeterminate","onChange","map","TableColumn","column","fields","view","props","field","find","f","id","TableColumnField","combinedField","layout","combinedFields","TableColumnCombined","primaryField","children","render","child","direction","spacing","TableRow","hasBulkActions","hasPossibleBulkAction","isSelected","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDevice","columns","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","itemId","style","width","disabled","_view$layout$styles$c","maxWidth","minWidth","styles","e","stopPropagation","ViewTable","isLoading","onChangeView","setOpenedFilter","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","undefined","tableNoticeId","onHide","hidden","get","fallback","node","hasData","scope","index","_view$layout$styles$c2","sort","ref","set","delete","fieldId","toString"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tCheckboxControl,\n\tSpinner,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n\tCombinedField,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\n\ninterface BulkSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\ninterface TableColumnFieldProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfield: NormalizedField< Item >;\n\titem: Item;\n}\n\ninterface TableColumnCombinedProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\tfield: CombinedField;\n\titem: Item;\n\tview: ViewTableType;\n}\n\ninterface TableColumnProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\titem: Item;\n\tcolumn: string;\n\tview: ViewTableType;\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\tprimaryField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n}\n\nfunction BulkSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\tdata,\n\tactions,\n\tgetItemId,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst selectedItems = data.filter(\n\t\t( item ) =>\n\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\tselectableItems.includes( item )\n\t);\n\tconst areAllSelected = selectedItems.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonChangeSelection( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselectableItems.map( ( item ) => getItemId( item ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction TableColumn< Item >( {\n\tcolumn,\n\tfields,\n\tview,\n\t...props\n}: TableColumnProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\tif ( !! field ) {\n\t\treturn <TableColumnField { ...props } field={ field } />;\n\t}\n\tconst combinedField = view.layout?.combinedFields?.find(\n\t\t( f ) => f.id === column\n\t);\n\tif ( !! combinedField ) {\n\t\treturn (\n\t\t\t<TableColumnCombined\n\t\t\t\t{ ...props }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tfield={ combinedField }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction TableColumnField< Item >( {\n\tprimaryField,\n\titem,\n\tfield,\n}: TableColumnFieldProps< Item > ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\tprimaryField?.id === field.id,\n\t\t\t} ) }\n\t\t>\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableColumnCombined< Item >( {\n\tfield,\n\t...props\n}: TableColumnCombinedProps< Item > ) {\n\tconst children = field.children.map( ( child ) => (\n\t\t<TableColumn key={ child } { ...props } column={ child } />\n\t) );\n\n\tif ( field.direction === 'horizontal' ) {\n\t\treturn <HStack spacing={ 3 }>{ children }</HStack>;\n\t}\n\treturn <VStack spacing={ 0 }>{ children }</VStack>;\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\tprimaryField,\n\tselection,\n\tgetItemId,\n\tonChangeSelection,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\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 isTouchDevice = useRef( false );\n\tconst columns = view.fields || fields.map( ( f ) => f.id );\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\tisTouchDevice.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! isTouchDevice.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\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\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\tprimaryField={ primaryField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td key={ column } style={ { width, maxWidth, minWidth } }>\n\t\t\t\t\t\t<TableColumn\n\t\t\t\t\t\t\tprimaryField={ primaryField }\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\tview={ view }\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=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tview,\n}: ViewTableProps< Item > ) {\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\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 columns = view.fields || fields.map( ( f ) => f.id );\n\tconst hasData = !! data?.length;\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\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{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth } =\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={ { width, maxWidth, minWidth } }\n\t\t\t\t\t\t\t\t\taria-sort={\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={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumns[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\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 className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\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\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\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","__","Spinner","__experimentalHStack","HStack","__experimentalVStack","VStack","useEffect","useId","useRef","useState","SingleSelectionCheckbox","ItemActions","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","BulkSelectionCheckbox","ColumnHeaderMenu","getVisibleFieldIds","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TableColumn","column","fields","view","props","field","find","f","id","TableColumnField","combinedField","layout","combinedFields","TableColumnCombined","primaryField","item","className","children","render","map","child","direction","spacing","TableRow","hasBulkActions","actions","selection","getItemId","onChangeSelection","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","columns","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","style","width","disabled","_view$layout$styles$c","maxWidth","minWidth","styles","length","e","stopPropagation","ViewTable","data","isLoading","onChangeView","setOpenedFilter","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","undefined","tableNoticeId","onHide","hidden","get","fallback","node","hasData","scope","index","_view$layout$styles$c2","sort","ref","set","delete","fieldId","toString"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tSpinner,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEffect, useId, useRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox 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\tCombinedField,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport { getVisibleFieldIds } from '../index';\n\ninterface TableColumnFieldProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfield: NormalizedField< Item >;\n\titem: Item;\n}\n\ninterface TableColumnCombinedProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\tfield: CombinedField;\n\titem: Item;\n\tview: ViewTableType;\n}\n\ninterface TableColumnProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\titem: Item;\n\tcolumn: string;\n\tview: ViewTableType;\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\tprimaryField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n}\n\nfunction TableColumn< Item >( {\n\tcolumn,\n\tfields,\n\tview,\n\t...props\n}: TableColumnProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\tif ( !! field ) {\n\t\treturn <TableColumnField { ...props } field={ field } />;\n\t}\n\tconst combinedField = view.layout?.combinedFields?.find(\n\t\t( f ) => f.id === column\n\t);\n\tif ( !! combinedField ) {\n\t\treturn (\n\t\t\t<TableColumnCombined\n\t\t\t\t{ ...props }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tfield={ combinedField }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction TableColumnField< Item >( {\n\tprimaryField,\n\titem,\n\tfield,\n}: TableColumnFieldProps< Item > ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\tprimaryField?.id === field.id,\n\t\t\t} ) }\n\t\t>\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableColumnCombined< Item >( {\n\tfield,\n\t...props\n}: TableColumnCombinedProps< Item > ) {\n\tconst children = field.children.map( ( child ) => (\n\t\t<TableColumn key={ child } { ...props } column={ child } />\n\t) );\n\n\tif ( field.direction === 'horizontal' ) {\n\t\treturn <HStack spacing={ 3 }>{ children }</HStack>;\n\t}\n\treturn <VStack spacing={ 0 }>{ children }</VStack>;\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\tprimaryField,\n\tselection,\n\tgetItemId,\n\tonChangeSelection,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\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 = getVisibleFieldIds( view, fields );\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\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\t\t\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\tprimaryField={ primaryField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td key={ column } style={ { width, maxWidth, minWidth } }>\n\t\t\t\t\t\t<TableColumn\n\t\t\t\t\t\t\tprimaryField={ primaryField }\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\tview={ view }\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=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tview,\n}: ViewTableProps< Item > ) {\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\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 columns = getVisibleFieldIds( view, fields );\n\tconst hasData = !! data?.length;\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\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{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth } =\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={ { width, maxWidth, minWidth } }\n\t\t\t\t\t\t\t\t\taria-sort={\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={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumns[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\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 className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\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\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\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":[]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+
5
+ function sort(a, b, direction) {
6
+ const timeA = new Date(a).getTime();
7
+ const timeB = new Date(b).getTime();
8
+ return direction === 'asc' ? timeA - timeB : timeB - timeA;
9
+ }
10
+ function isValid(value, context) {
11
+ if (context?.elements) {
12
+ const validValues = context?.elements.map(f => f.value);
13
+ if (!validValues.includes(value)) {
14
+ return false;
15
+ }
16
+ }
17
+ return true;
18
+ }
19
+ export default {
20
+ sort,
21
+ isValid,
22
+ Edit: 'datetime'
23
+ };
24
+ //# sourceMappingURL=datetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sort","a","b","direction","timeA","Date","getTime","timeB","isValid","value","context","elements","validValues","map","f","includes","Edit"],"sources":["@wordpress/dataviews/src/field-types/datetime.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { SortDirection, ValidationContext } from '../types';\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};\n"],"mappings":"AAAA;AACA;AACA;;AAGA,SAASA,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;AAEA,eAAe;EACdT,IAAI;EACJQ,OAAO;EACPQ,IAAI,EAAE;AACP,CAAC","ignoreList":[]}
@@ -4,6 +4,7 @@
4
4
 
5
5
  import { default as integer } from './integer';
6
6
  import { default as text } from './text';
7
+ import { default as datetime } from './datetime';
7
8
 
8
9
  /**
9
10
  *
@@ -18,6 +19,9 @@ export default function getFieldTypeDefinition(type) {
18
19
  if ('text' === type) {
19
20
  return text;
20
21
  }
22
+ if ('datetime' === type) {
23
+ return datetime;
24
+ }
21
25
  return {
22
26
  sort: (a, b, direction) => {
23
27
  if (typeof a === 'number' && typeof b === 'number') {
@@ -1 +1 @@
1
- {"version":3,"names":["default","integer","text","getFieldTypeDefinition","type","sort","a","b","direction","localeCompare","isValid","value","context","elements","validValues","map","f","includes","Edit"],"sources":["@wordpress/dataviews/src/field-types/index.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { FieldType, SortDirection, ValidationContext } from '../types';\nimport { default as integer } from './integer';\nimport { default as text } from './text';\n\n/**\n *\n * @param {FieldType} type The field type definition to get.\n *\n * @return A field type definition.\n */\nexport default function getFieldTypeDefinition( type?: FieldType ) {\n\tif ( 'integer' === type ) {\n\t\treturn integer;\n\t}\n\n\tif ( 'text' === type ) {\n\t\treturn text;\n\t}\n\n\treturn {\n\t\tsort: ( a: any, b: any, direction: SortDirection ) => {\n\t\t\tif ( typeof a === 'number' && typeof b === 'number' ) {\n\t\t\t\treturn direction === 'asc' ? a - b : b - a;\n\t\t\t}\n\n\t\t\treturn direction === 'asc'\n\t\t\t\t? a.localeCompare( b )\n\t\t\t\t: b.localeCompare( a );\n\t\t},\n\t\tisValid: ( value: any, context?: ValidationContext ) => {\n\t\t\tif ( context?.elements ) {\n\t\t\t\tconst validValues = context?.elements?.map( ( f ) => f.value );\n\t\t\t\tif ( ! validValues.includes( value ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tEdit: () => null,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA,SAASA,OAAO,IAAIC,OAAO,QAAQ,WAAW;AAC9C,SAASD,OAAO,IAAIE,IAAI,QAAQ,QAAQ;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAsBA,CAAEC,IAAgB,EAAG;EAClE,IAAK,SAAS,KAAKA,IAAI,EAAG;IACzB,OAAOH,OAAO;EACf;EAEA,IAAK,MAAM,KAAKG,IAAI,EAAG;IACtB,OAAOF,IAAI;EACZ;EAEA,OAAO;IACNG,IAAI,EAAEA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,KAAM;MACrD,IAAK,OAAOF,CAAC,KAAK,QAAQ,IAAI,OAAOC,CAAC,KAAK,QAAQ,EAAG;QACrD,OAAOC,SAAS,KAAK,KAAK,GAAGF,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGD,CAAC;MAC3C;MAEA,OAAOE,SAAS,KAAK,KAAK,GACvBF,CAAC,CAACG,aAAa,CAAEF,CAAE,CAAC,GACpBA,CAAC,CAACE,aAAa,CAAEH,CAAE,CAAC;IACxB,CAAC;IACDI,OAAO,EAAEA,CAAEC,KAAU,EAAEC,OAA2B,KAAM;MACvD,IAAKA,OAAO,EAAEC,QAAQ,EAAG;QACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,EAAEE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;QAC9D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;UACtC,OAAO,KAAK;QACb;MACD;MAEA,OAAO,IAAI;IACZ,CAAC;IACDO,IAAI,EAAEA,CAAA,KAAM;EACb,CAAC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["default","integer","text","datetime","getFieldTypeDefinition","type","sort","a","b","direction","localeCompare","isValid","value","context","elements","validValues","map","f","includes","Edit"],"sources":["@wordpress/dataviews/src/field-types/index.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { FieldType, SortDirection, ValidationContext } from '../types';\nimport { default as integer } from './integer';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\n\n/**\n *\n * @param {FieldType} type The field type definition to get.\n *\n * @return A field type definition.\n */\nexport default function getFieldTypeDefinition( type?: FieldType ) {\n\tif ( 'integer' === type ) {\n\t\treturn integer;\n\t}\n\n\tif ( 'text' === type ) {\n\t\treturn text;\n\t}\n\n\tif ( 'datetime' === type ) {\n\t\treturn datetime;\n\t}\n\n\treturn {\n\t\tsort: ( a: any, b: any, direction: SortDirection ) => {\n\t\t\tif ( typeof a === 'number' && typeof b === 'number' ) {\n\t\t\t\treturn direction === 'asc' ? a - b : b - a;\n\t\t\t}\n\n\t\t\treturn direction === 'asc'\n\t\t\t\t? a.localeCompare( b )\n\t\t\t\t: b.localeCompare( a );\n\t\t},\n\t\tisValid: ( value: any, context?: ValidationContext ) => {\n\t\t\tif ( context?.elements ) {\n\t\t\t\tconst validValues = context?.elements?.map( ( f ) => f.value );\n\t\t\t\tif ( ! validValues.includes( value ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tEdit: () => null,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA,SAASA,OAAO,IAAIC,OAAO,QAAQ,WAAW;AAC9C,SAASD,OAAO,IAAIE,IAAI,QAAQ,QAAQ;AACxC,SAASF,OAAO,IAAIG,QAAQ,QAAQ,YAAY;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAsBA,CAAEC,IAAgB,EAAG;EAClE,IAAK,SAAS,KAAKA,IAAI,EAAG;IACzB,OAAOJ,OAAO;EACf;EAEA,IAAK,MAAM,KAAKI,IAAI,EAAG;IACtB,OAAOH,IAAI;EACZ;EAEA,IAAK,UAAU,KAAKG,IAAI,EAAG;IAC1B,OAAOF,QAAQ;EAChB;EAEA,OAAO;IACNG,IAAI,EAAEA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,KAAM;MACrD,IAAK,OAAOF,CAAC,KAAK,QAAQ,IAAI,OAAOC,CAAC,KAAK,QAAQ,EAAG;QACrD,OAAOC,SAAS,KAAK,KAAK,GAAGF,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGD,CAAC;MAC3C;MAEA,OAAOE,SAAS,KAAK,KAAK,GACvBF,CAAC,CAACG,aAAa,CAAEF,CAAE,CAAC,GACpBA,CAAC,CAACE,aAAa,CAAEH,CAAE,CAAC;IACxB,CAAC;IACDI,OAAO,EAAEA,CAAEC,KAAU,EAAEC,OAA2B,KAAM;MACvD,IAAKA,OAAO,EAAEC,QAAQ,EAAG;QACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,EAAEE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;QAC9D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;UACtC,OAAO,KAAK;QACb;MACD;MAEA,OAAO,IAAI;IACZ,CAAC;IACDO,IAAI,EAAEA,CAAA,KAAM;EACb,CAAC;AACF","ignoreList":[]}