@wordpress/dataviews 8.0.0 → 8.0.2-next.836ecdcae.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 (160) hide show
  1. package/CHANGELOG.md +8 -4
  2. package/README.md +76 -0
  3. package/build/components/dataviews/index.js +11 -1
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-context/index.js.map +1 -1
  6. package/build/components/dataviews-layout/index.js +2 -1
  7. package/build/components/dataviews-layout/index.js.map +1 -1
  8. package/build/components/dataviews-picker/footer.js +145 -0
  9. package/build/components/dataviews-picker/footer.js.map +1 -0
  10. package/build/components/dataviews-picker/index.js +201 -0
  11. package/build/components/dataviews-picker/index.js.map +1 -0
  12. package/build/components/dataviews-selection-checkbox/index.js +4 -2
  13. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  14. package/build/components/dataviews-view-config/index.js +1 -0
  15. package/build/components/dataviews-view-config/index.js.map +1 -1
  16. package/build/constants.js +4 -1
  17. package/build/constants.js.map +1 -1
  18. package/build/dataform-controls/email.js +8 -49
  19. package/build/dataform-controls/email.js.map +1 -1
  20. package/build/dataform-controls/index.js +2 -0
  21. package/build/dataform-controls/index.js.map +1 -1
  22. package/build/dataform-controls/telephone.js +28 -0
  23. package/build/dataform-controls/telephone.js.map +1 -0
  24. package/build/dataform-controls/text.js +7 -48
  25. package/build/dataform-controls/text.js.map +1 -1
  26. package/build/dataform-controls/utils/validated-text.js +68 -0
  27. package/build/dataform-controls/utils/validated-text.js.map +1 -0
  28. package/build/dataviews-layouts/grid/index.js +5 -8
  29. package/build/dataviews-layouts/grid/index.js.map +1 -1
  30. package/build/dataviews-layouts/index.js +9 -1
  31. package/build/dataviews-layouts/index.js.map +1 -1
  32. package/build/dataviews-layouts/picker-grid/index.js +357 -0
  33. package/build/dataviews-layouts/picker-grid/index.js.map +1 -0
  34. package/build/dataviews-layouts/utils/grid-items.js +37 -0
  35. package/build/dataviews-layouts/utils/grid-items.js.map +1 -0
  36. package/build/dataviews-layouts/utils/preview-size-picker.js +81 -0
  37. package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
  38. package/build/field-types/index.js +4 -0
  39. package/build/field-types/index.js.map +1 -1
  40. package/build/field-types/telephone.js +57 -0
  41. package/build/field-types/telephone.js.map +1 -0
  42. package/build/types.js.map +1 -1
  43. package/build-module/components/dataviews/index.js +11 -1
  44. package/build-module/components/dataviews/index.js.map +1 -1
  45. package/build-module/components/dataviews-context/index.js.map +1 -1
  46. package/build-module/components/dataviews-layout/index.js +2 -1
  47. package/build-module/components/dataviews-layout/index.js.map +1 -1
  48. package/build-module/components/dataviews-picker/footer.js +136 -0
  49. package/build-module/components/dataviews-picker/footer.js.map +1 -0
  50. package/build-module/components/dataviews-picker/index.js +191 -0
  51. package/build-module/components/dataviews-picker/index.js.map +1 -0
  52. package/build-module/components/dataviews-selection-checkbox/index.js +4 -2
  53. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  54. package/build-module/components/dataviews-view-config/index.js +1 -0
  55. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  56. package/build-module/constants.js +3 -0
  57. package/build-module/constants.js.map +1 -1
  58. package/build-module/dataform-controls/email.js +7 -49
  59. package/build-module/dataform-controls/email.js.map +1 -1
  60. package/build-module/dataform-controls/index.js +2 -0
  61. package/build-module/dataform-controls/index.js.map +1 -1
  62. package/build-module/dataform-controls/telephone.js +21 -0
  63. package/build-module/dataform-controls/telephone.js.map +1 -0
  64. package/build-module/dataform-controls/text.js +6 -48
  65. package/build-module/dataform-controls/text.js.map +1 -1
  66. package/build-module/dataform-controls/utils/validated-text.js +62 -0
  67. package/build-module/dataform-controls/utils/validated-text.js.map +1 -0
  68. package/build-module/dataviews-layouts/grid/index.js +5 -8
  69. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  70. package/build-module/dataviews-layouts/index.js +10 -2
  71. package/build-module/dataviews-layouts/index.js.map +1 -1
  72. package/build-module/dataviews-layouts/picker-grid/index.js +348 -0
  73. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -0
  74. package/build-module/dataviews-layouts/utils/grid-items.js +29 -0
  75. package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -0
  76. package/build-module/dataviews-layouts/utils/preview-size-picker.js +73 -0
  77. package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
  78. package/build-module/field-types/index.js +4 -0
  79. package/build-module/field-types/index.js.map +1 -1
  80. package/build-module/field-types/telephone.js +51 -0
  81. package/build-module/field-types/telephone.js.map +1 -0
  82. package/build-module/types.js.map +1 -1
  83. package/build-style/style-rtl.css +194 -11
  84. package/build-style/style.css +194 -11
  85. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  86. package/build-types/components/dataviews/index.d.ts +1 -1
  87. package/build-types/components/dataviews/index.d.ts.map +1 -1
  88. package/build-types/components/dataviews-context/index.d.ts +1 -0
  89. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  90. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  91. package/build-types/components/dataviews-picker/footer.d.ts +4 -0
  92. package/build-types/components/dataviews-picker/footer.d.ts.map +1 -0
  93. package/build-types/components/dataviews-picker/index.d.ts +55 -0
  94. package/build-types/components/dataviews-picker/index.d.ts.map +1 -0
  95. package/build-types/components/dataviews-picker/stories/index.story.d.ts +42 -0
  96. package/build-types/components/dataviews-picker/stories/index.story.d.ts.map +1 -0
  97. package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -1
  98. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  99. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  100. package/build-types/constants.d.ts +1 -0
  101. package/build-types/constants.d.ts.map +1 -1
  102. package/build-types/dataform-controls/email.d.ts.map +1 -1
  103. package/build-types/dataform-controls/index.d.ts.map +1 -1
  104. package/build-types/dataform-controls/telephone.d.ts +6 -0
  105. package/build-types/dataform-controls/telephone.d.ts.map +1 -0
  106. package/build-types/dataform-controls/text.d.ts.map +1 -1
  107. package/build-types/dataform-controls/utils/validated-text.d.ts +12 -0
  108. package/build-types/dataform-controls/utils/validated-text.d.ts.map +1 -0
  109. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  110. package/build-types/dataviews-layouts/index.d.ts +12 -1
  111. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  112. package/build-types/dataviews-layouts/picker-grid/index.d.ts +4 -0
  113. package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -0
  114. package/build-types/dataviews-layouts/utils/grid-items.d.ts +5 -0
  115. package/build-types/dataviews-layouts/utils/grid-items.d.ts.map +1 -0
  116. package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts +2 -0
  117. package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts.map +1 -0
  118. package/build-types/field-types/index.d.ts.map +1 -1
  119. package/build-types/field-types/stories/index.story.d.ts +5 -1
  120. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  121. package/build-types/field-types/telephone.d.ts +20 -0
  122. package/build-types/field-types/telephone.d.ts.map +1 -0
  123. package/build-types/test/dataviews-picker.d.ts +2 -0
  124. package/build-types/test/dataviews-picker.d.ts.map +1 -0
  125. package/build-types/types.d.ts +24 -2
  126. package/build-types/types.d.ts.map +1 -1
  127. package/build-wp/index.js +4042 -3569
  128. package/package.json +15 -15
  129. package/src/components/dataform/stories/index.story.tsx +26 -1
  130. package/src/components/dataviews/index.tsx +25 -1
  131. package/src/components/dataviews/style.scss +4 -2
  132. package/src/components/dataviews-context/index.ts +1 -0
  133. package/src/components/dataviews-layout/index.tsx +4 -2
  134. package/src/components/dataviews-picker/footer.tsx +207 -0
  135. package/src/components/dataviews-picker/index.tsx +284 -0
  136. package/src/components/dataviews-picker/stories/index.story.tsx +251 -0
  137. package/src/components/dataviews-picker/style.scss +10 -0
  138. package/src/components/dataviews-selection-checkbox/index.tsx +3 -0
  139. package/src/components/dataviews-view-config/index.tsx +1 -0
  140. package/src/constants.ts +3 -0
  141. package/src/dataform-controls/email.tsx +3 -57
  142. package/src/dataform-controls/index.tsx +2 -0
  143. package/src/dataform-controls/telephone.tsx +18 -0
  144. package/src/dataform-controls/text.tsx +2 -57
  145. package/src/dataform-controls/utils/validated-text.tsx +79 -0
  146. package/src/dataviews-layouts/grid/index.tsx +7 -14
  147. package/src/dataviews-layouts/grid/style.scss +2 -20
  148. package/src/dataviews-layouts/index.ts +16 -2
  149. package/src/dataviews-layouts/picker-grid/index.tsx +490 -0
  150. package/src/dataviews-layouts/picker-grid/style.scss +171 -0
  151. package/src/dataviews-layouts/utils/grid-items.scss +21 -0
  152. package/src/dataviews-layouts/utils/grid-items.tsx +35 -0
  153. package/src/dataviews-layouts/utils/preview-size-picker.tsx +87 -0
  154. package/src/field-types/index.tsx +5 -0
  155. package/src/field-types/stories/index.story.tsx +44 -0
  156. package/src/field-types/telephone.tsx +71 -0
  157. package/src/style.scss +2 -0
  158. package/src/test/dataviews-picker.tsx +478 -0
  159. package/src/types.ts +40 -1
  160. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,348 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, Spinner, Flex, FlexItem, privateApis as componentsPrivateApis, Composite } from '@wordpress/components';
9
+ import { __, sprintf } from '@wordpress/i18n';
10
+ import { useInstanceId } from '@wordpress/compose';
11
+ import { useContext } from '@wordpress/element';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { unlock } from '../../lock-unlock';
17
+ import DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';
18
+ import DataViewsContext from '../../components/dataviews-context';
19
+ import { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';
20
+ import { GridItems } from '../utils/grid-items';
21
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
+ const {
23
+ Badge
24
+ } = unlock(componentsPrivateApis);
25
+ function GridItem({
26
+ view,
27
+ multiselect,
28
+ selection,
29
+ onChangeSelection,
30
+ getItemId,
31
+ item,
32
+ mediaField,
33
+ titleField,
34
+ descriptionField,
35
+ regularFields,
36
+ badgeFields,
37
+ config,
38
+ posinset,
39
+ setsize
40
+ }) {
41
+ const {
42
+ showTitle = true,
43
+ showMedia = true,
44
+ showDescription = true
45
+ } = view;
46
+ const id = getItemId(item);
47
+ const isSelected = selection.includes(id);
48
+ const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx(mediaField.render, {
49
+ item: item,
50
+ field: mediaField,
51
+ config: config
52
+ }) : null;
53
+ const renderedTitleField = showTitle && titleField?.render ? /*#__PURE__*/_jsx(titleField.render, {
54
+ item: item,
55
+ field: titleField
56
+ }) : null;
57
+ return /*#__PURE__*/_jsxs(Composite.Item, {
58
+ render: ({
59
+ children,
60
+ ...props
61
+ }) => /*#__PURE__*/_jsx(VStack, {
62
+ spacing: 0,
63
+ children: children,
64
+ ...props
65
+ }),
66
+ role: "option",
67
+ "aria-posinset": posinset,
68
+ "aria-setsize": setsize,
69
+ className: clsx('dataviews-view-picker-grid__card', {
70
+ 'is-selected': isSelected
71
+ }),
72
+ "aria-selected": isSelected,
73
+ onClick: () => {
74
+ if (isSelected) {
75
+ onChangeSelection(selection.filter(itemId => id !== itemId));
76
+ } else {
77
+ const newSelection = multiselect ? [...selection, id] : [id];
78
+ onChangeSelection(newSelection);
79
+ }
80
+ },
81
+ children: [showMedia && renderedMediaField && /*#__PURE__*/_jsx("div", {
82
+ className: "dataviews-view-picker-grid__media",
83
+ children: renderedMediaField
84
+ }), showMedia && renderedMediaField && /*#__PURE__*/_jsx(DataViewsSelectionCheckbox, {
85
+ item: item,
86
+ selection: selection,
87
+ onChangeSelection: onChangeSelection,
88
+ getItemId: getItemId,
89
+ titleField: titleField,
90
+ disabled: false,
91
+ "aria-hidden": true,
92
+ tabIndex: -1
93
+ }), /*#__PURE__*/_jsx(HStack, {
94
+ justify: "space-between",
95
+ className: "dataviews-view-picker-grid__title-actions",
96
+ children: /*#__PURE__*/_jsx("div", {
97
+ className: "dataviews-view-picker-grid__title-field dataviews-title-field",
98
+ children: renderedTitleField
99
+ })
100
+ }), /*#__PURE__*/_jsxs(VStack, {
101
+ spacing: 1,
102
+ children: [showDescription && descriptionField?.render && /*#__PURE__*/_jsx(descriptionField.render, {
103
+ item: item,
104
+ field: descriptionField
105
+ }), !!badgeFields?.length && /*#__PURE__*/_jsx(HStack, {
106
+ className: "dataviews-view-picker-grid__badge-fields",
107
+ spacing: 2,
108
+ wrap: true,
109
+ alignment: "top",
110
+ justify: "flex-start",
111
+ children: badgeFields.map(field => {
112
+ return /*#__PURE__*/_jsx(Badge, {
113
+ className: "dataviews-view-picker-grid__field-value",
114
+ children: /*#__PURE__*/_jsx(field.render, {
115
+ item: item,
116
+ field: field
117
+ })
118
+ }, field.id);
119
+ })
120
+ }), !!regularFields?.length && /*#__PURE__*/_jsx(VStack, {
121
+ className: "dataviews-view-picker-grid__fields",
122
+ spacing: 1,
123
+ children: regularFields.map(field => {
124
+ return /*#__PURE__*/_jsx(Flex, {
125
+ className: "dataviews-view-picker-grid__field",
126
+ gap: 1,
127
+ justify: "flex-start",
128
+ expanded: true,
129
+ style: {
130
+ height: 'auto'
131
+ },
132
+ direction: "row",
133
+ children: /*#__PURE__*/_jsxs(_Fragment, {
134
+ children: [/*#__PURE__*/_jsx(FlexItem, {
135
+ className: "dataviews-view-picker-grid__field-name",
136
+ children: field.header
137
+ }), /*#__PURE__*/_jsx(FlexItem, {
138
+ className: "dataviews-view-picker-grid__field-value",
139
+ style: {
140
+ maxHeight: 'none'
141
+ },
142
+ children: /*#__PURE__*/_jsx(field.render, {
143
+ item: item,
144
+ field: field
145
+ })
146
+ })]
147
+ })
148
+ }, field.id);
149
+ })
150
+ })]
151
+ })]
152
+ }, id);
153
+ }
154
+ function GridGroup({
155
+ groupName,
156
+ groupField,
157
+ children
158
+ }) {
159
+ const headerId = useInstanceId(GridGroup, 'dataviews-view-picker-grid-group__header');
160
+ return /*#__PURE__*/_jsxs(VStack, {
161
+ spacing: 2,
162
+ role: "group",
163
+ "aria-labelledby": headerId,
164
+ children: [/*#__PURE__*/_jsx("h3", {
165
+ className: "dataviews-view-picker-grid-group__header",
166
+ id: headerId,
167
+ children: sprintf(
168
+ // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
169
+ __('%1$s: %2$s'), groupField.label, groupName)
170
+ }), children]
171
+ }, groupName);
172
+ }
173
+ function ViewPickerGrid({
174
+ actions,
175
+ data,
176
+ fields,
177
+ getItemId,
178
+ isLoading,
179
+ onChangeSelection,
180
+ selection,
181
+ view,
182
+ className,
183
+ empty
184
+ }) {
185
+ var _view$fields, _view$page, _view$perPage;
186
+ const {
187
+ resizeObserverRef,
188
+ paginationInfo,
189
+ itemListLabel
190
+ } = useContext(DataViewsContext);
191
+ const titleField = fields.find(field => field.id === view?.titleField);
192
+ const mediaField = fields.find(field => field.id === view?.mediaField);
193
+ const descriptionField = fields.find(field => field.id === view?.descriptionField);
194
+ const otherFields = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
195
+ const {
196
+ regularFields,
197
+ badgeFields
198
+ } = otherFields.reduce((accumulator, fieldId) => {
199
+ const field = fields.find(f => f.id === fieldId);
200
+ if (!field) {
201
+ return accumulator;
202
+ }
203
+ // If the field is a badge field, add it to the badgeFields array
204
+ // otherwise add it to the rest visibleFields array.
205
+ const key = view.layout?.badgeFields?.includes(fieldId) ? 'badgeFields' : 'regularFields';
206
+ accumulator[key].push(field);
207
+ return accumulator;
208
+ }, {
209
+ regularFields: [],
210
+ badgeFields: []
211
+ });
212
+ const hasData = !!data?.length;
213
+ const usedPreviewSize = view.layout?.previewSize;
214
+ const isMultiselect = useIsMultiselectPicker(actions);
215
+
216
+ /*
217
+ * This is the maximum width that an image can achieve in the grid. The reasoning is:
218
+ * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).
219
+ * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.
220
+ * So each image will never grow past 2*430px plus a little more to account for the gaps.
221
+ */
222
+ const size = '900px';
223
+ const groupField = view.groupByField ? fields.find(f => f.id === view.groupByField) : null;
224
+
225
+ // Group data by groupByField if specified
226
+ const dataByGroup = groupField ? data.reduce((groups, item) => {
227
+ const groupName = groupField.getValue({
228
+ item
229
+ });
230
+ if (!groups.has(groupName)) {
231
+ groups.set(groupName, []);
232
+ }
233
+ groups.get(groupName)?.push(item);
234
+ return groups;
235
+ }, new Map()) : null;
236
+ const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
237
+ const currentPage = (_view$page = view?.page) !== null && _view$page !== void 0 ? _view$page : 1;
238
+ const perPage = (_view$perPage = view?.perPage) !== null && _view$perPage !== void 0 ? _view$perPage : 0;
239
+ const setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;
240
+ return /*#__PURE__*/_jsxs(_Fragment, {
241
+ children: [
242
+ // Render multiple groups.
243
+ hasData && groupField && dataByGroup && /*#__PURE__*/_jsx(Composite, {
244
+ virtualFocus: true,
245
+ orientation: "horizontal",
246
+ role: "listbox",
247
+ "aria-multiselectable": isMultiselect,
248
+ className: clsx('dataviews-view-picker-grid', className),
249
+ "aria-label": itemListLabel,
250
+ render: ({
251
+ children,
252
+ ...props
253
+ }) => /*#__PURE__*/_jsx(VStack, {
254
+ spacing: 4,
255
+ children: children,
256
+ ...props
257
+ }),
258
+ children: Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/_jsx(GridGroup, {
259
+ groupName: groupName,
260
+ groupField: groupField,
261
+ children: /*#__PURE__*/_jsx(GridItems, {
262
+ previewSize: usedPreviewSize,
263
+ style: {
264
+ gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
265
+ },
266
+ "aria-busy": isLoading,
267
+ ref: resizeObserverRef,
268
+ children: groupItems.map(item => {
269
+ const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1;
270
+ return /*#__PURE__*/_jsx(GridItem, {
271
+ view: view,
272
+ multiselect: isMultiselect,
273
+ selection: selection,
274
+ onChangeSelection: onChangeSelection,
275
+ getItemId: getItemId,
276
+ item: item,
277
+ mediaField: mediaField,
278
+ titleField: titleField,
279
+ descriptionField: descriptionField,
280
+ regularFields: regularFields,
281
+ badgeFields: badgeFields,
282
+ config: {
283
+ sizes: size
284
+ },
285
+ posinset: posInSet,
286
+ setsize: setSize
287
+ }, getItemId(item));
288
+ })
289
+ })
290
+ }, groupName))
291
+ }),
292
+ // Render a single grid with all data.
293
+ hasData && !dataByGroup && /*#__PURE__*/_jsx(Composite, {
294
+ render: /*#__PURE__*/_jsx(GridItems, {
295
+ className: clsx('dataviews-view-picker-grid', className),
296
+ previewSize: usedPreviewSize,
297
+ "aria-busy": isLoading,
298
+ ref: resizeObserverRef
299
+ }),
300
+ virtualFocus: true,
301
+ orientation: "horizontal",
302
+ role: "listbox",
303
+ "aria-multiselectable": isMultiselect,
304
+ "aria-label": itemListLabel,
305
+ children: data.map((item, index) => {
306
+ let posinset = isInfiniteScroll ? index + 1 : undefined;
307
+ if (!isInfiniteScroll) {
308
+ // When infinite scroll isn't active, take pagination into account
309
+ // when calculating the posinset.
310
+ posinset = (currentPage - 1) * perPage + index + 1;
311
+ }
312
+ return /*#__PURE__*/_jsx(GridItem, {
313
+ view: view,
314
+ multiselect: isMultiselect,
315
+ selection: selection,
316
+ onChangeSelection: onChangeSelection,
317
+ getItemId: getItemId,
318
+ item: item,
319
+ mediaField: mediaField,
320
+ titleField: titleField,
321
+ descriptionField: descriptionField,
322
+ regularFields: regularFields,
323
+ badgeFields: badgeFields,
324
+ config: {
325
+ sizes: size
326
+ },
327
+ posinset: posinset,
328
+ setsize: setSize
329
+ }, getItemId(item));
330
+ })
331
+ }),
332
+ // Render empty state.
333
+ !hasData && /*#__PURE__*/_jsx("div", {
334
+ className: clsx({
335
+ 'dataviews-loading': isLoading,
336
+ 'dataviews-no-results': !isLoading
337
+ }),
338
+ children: /*#__PURE__*/_jsx("p", {
339
+ children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
340
+ })
341
+ }), hasData && isLoading && /*#__PURE__*/_jsx("p", {
342
+ className: "dataviews-loading-more",
343
+ children: /*#__PURE__*/_jsx(Spinner, {})
344
+ })]
345
+ });
346
+ }
347
+ export default ViewPickerGrid;
348
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","privateApis","componentsPrivateApis","Composite","__","sprintf","useInstanceId","useContext","unlock","DataViewsSelectionCheckbox","DataViewsContext","useIsMultiselectPicker","GridItems","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Badge","GridItem","view","multiselect","selection","onChangeSelection","getItemId","item","mediaField","titleField","descriptionField","regularFields","badgeFields","config","posinset","setsize","showTitle","showMedia","showDescription","id","isSelected","includes","renderedMediaField","render","field","renderedTitleField","Item","children","props","spacing","role","className","onClick","filter","itemId","newSelection","disabled","tabIndex","justify","length","wrap","alignment","map","gap","expanded","style","height","direction","header","maxHeight","GridGroup","groupName","groupField","headerId","label","ViewPickerGrid","actions","data","fields","isLoading","empty","_view$fields","_view$page","_view$perPage","resizeObserverRef","paginationInfo","itemListLabel","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","isMultiselect","size","groupByField","dataByGroup","groups","getValue","has","set","get","Map","isInfiniteScroll","infiniteScrollEnabled","currentPage","page","perPage","setSize","totalItems","undefined","virtualFocus","orientation","Array","from","entries","groupItems","gridTemplateColumns","ref","posInSet","indexOf","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/picker-grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n\tComposite,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';\nimport type {\n\tNormalizedField,\n\tViewPickerGrid as ViewPickerGridType,\n\tViewPickerGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewPickerGridType;\n\tmultiselect?: boolean;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n\tsetsize?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tmultiselect,\n\tselection,\n\tonChangeSelection,\n\tgetItemId,\n\titem,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\tconfig,\n\tposinset,\n\tsetsize,\n}: GridItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\treturn (\n\t\t<Composite.Item\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<VStack spacing={ 0 } children={ children } { ...props } />\n\t\t\t) }\n\t\t\trole=\"option\"\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={ setsize }\n\t\t\tclassName={ clsx( 'dataviews-view-picker-grid__card', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\taria-selected={ isSelected }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<div className=\"dataviews-view-picker-grid__media\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ false }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-picker-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<div className=\"dataviews-view-picker-grid__title-field dataviews-title-field\">\n\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t</div>\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\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<FlexItem className=\"dataviews-view-picker-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</Composite.Item>\n\t);\n}\n\nfunction GridGroup< Item >( {\n\tgroupName,\n\tgroupField,\n\tchildren,\n}: {\n\tgroupName: string;\n\tgroupField: NormalizedField< Item >;\n\tchildren: ReactNode;\n} ) {\n\tconst headerId = useInstanceId(\n\t\tGridGroup,\n\t\t'dataviews-view-picker-grid-group__header'\n\t);\n\treturn (\n\t\t<VStack\n\t\t\tkey={ groupName }\n\t\t\tspacing={ 2 }\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ headerId }\n\t\t>\n\t\t\t<h3\n\t\t\t\tclassName=\"dataviews-view-picker-grid-group__header\"\n\t\t\t\tid={ headerId }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\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__( '%1$s: %2$s' ),\n\t\t\t\t\tgroupField.label,\n\t\t\t\t\tgroupName\n\t\t\t\t) }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nfunction ViewPickerGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerGridProps< Item > ) {\n\tconst { resizeObserverRef, paginationInfo, itemListLabel } =\n\t\tuseContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst usedPreviewSize = view.layout?.previewSize;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\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\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\tconst currentPage = view?.page ?? 1;\n\tconst perPage = view?.perPage ?? 0;\n\tconst setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\t\t{ ...props }\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{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<GridGroup\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\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{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst posInSet =\n\t\t\t\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage +\n\t\t\t\t\t\t\t\t\t\t\t\tdata.indexOf( item ) +\n\t\t\t\t\t\t\t\t\t\t\t\t1;\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiselect={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisMultiselect\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\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\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\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\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\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\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\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\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\tposinset={ posInSet }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetsize={ setSize }\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</GridItems>\n\t\t\t\t\t\t\t\t</GridGroup>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\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\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\tlet posinset = isInfiniteScroll\n\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\tif ( ! isInfiniteScroll ) {\n\t\t\t\t\t\t\t\t// When infinite scroll isn't active, take pagination into account\n\t\t\t\t\t\t\t\t// when calculating the posinset.\n\t\t\t\t\t\t\t\tposinset =\n\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage + index + 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\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\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={ posinset }\n\t\t\t\t\t\t\t\t\tsetsize={ setSize }\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</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewPickerGrid;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+ import { forwardRef } from '@wordpress/element';
9
+
10
+ /**
11
+ * External dependencies
12
+ */
13
+ import clsx from 'clsx';
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ export const GridItems = forwardRef(({
16
+ className,
17
+ previewSize,
18
+ ...props
19
+ }, ref) => {
20
+ return /*#__PURE__*/_jsx("div", {
21
+ ref: ref,
22
+ className: clsx('dataviews-view-grid-items', className),
23
+ style: {
24
+ gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))`
25
+ },
26
+ ...props
27
+ });
28
+ });
29
+ //# sourceMappingURL=grid-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","clsx","jsx","_jsx","GridItems","className","previewSize","props","ref","style","gridTemplateColumns"],"sources":["@wordpress/dataviews/src/dataviews-layouts/utils/grid-items.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentPropsWithoutRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\nexport const GridItems = forwardRef<\n\tHTMLDivElement,\n\t{\n\t\tclassName?: string;\n\t\tpreviewSize: number | undefined;\n\t} & ComponentPropsWithoutRef< 'div' >\n>( ( { className, previewSize, ...props }, ref ) => {\n\treturn (\n\t\t<div\n\t\t\tref={ ref }\n\t\t\tclassName={ clsx( 'dataviews-view-grid-items', className ) }\n\t\t\tstyle={ {\n\t\t\t\tgridTemplateColumns:\n\t\t\t\t\tpreviewSize &&\n\t\t\t\t\t`repeat(auto-fill, minmax(${ previewSize }px, 1fr))`,\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,IAAI,MAAM,MAAM;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExB,OAAO,MAAMC,SAAS,GAAGJ,UAAU,CAMhC,CAAE;EAAEK,SAAS;EAAEC,WAAW;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAM;EACnD,oBACCL,IAAA;IACCK,GAAG,EAAGA,GAAK;IACXH,SAAS,EAAGJ,IAAI,CAAE,2BAA2B,EAAEI,SAAU,CAAG;IAC5DI,KAAK,EAAG;MACPC,mBAAmB,EAClBJ,WAAW,IACX,4BAA6BA,WAAW;IAC1C,CAAG;IAAA,GACEC;EAAK,CACV,CAAC;AAEJ,CAAE,CAAC","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { RangeControl } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useContext } from '@wordpress/element';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import DataViewsContext from '../../components/dataviews-context';
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ const imageSizes = [{
14
+ value: 120,
15
+ breakpoint: 1
16
+ }, {
17
+ value: 170,
18
+ breakpoint: 1
19
+ }, {
20
+ value: 230,
21
+ breakpoint: 1
22
+ }, {
23
+ value: 290,
24
+ breakpoint: 1112 // at minimum image width, 4 images display at this container size
25
+ }, {
26
+ value: 350,
27
+ breakpoint: 1636 // at minimum image width, 6 images display at this container size
28
+ }, {
29
+ value: 430,
30
+ breakpoint: 588 // at minimum image width, 2 images display at this container size
31
+ }];
32
+ export default function PreviewSizePicker() {
33
+ var _view$layout$previewS, _breakValues$map$filt;
34
+ const context = useContext(DataViewsContext);
35
+ const view = context.view;
36
+ const breakValues = imageSizes.filter(size => {
37
+ return context.containerWidth >= size.breakpoint;
38
+ });
39
+ const layoutPreviewSize = (_view$layout$previewS = view.layout?.previewSize) !== null && _view$layout$previewS !== void 0 ? _view$layout$previewS : 230; // Default to the third smallest size if no preview size is set.
40
+ // If the container has resized and the set preview size is no longer available,
41
+ // we reset it to the next smallest size, or the smallest available size.
42
+ const previewSizeToUse = (_breakValues$map$filt = breakValues.map((size, index) => ({
43
+ ...size,
44
+ index
45
+ })).filter(size => size.value <= layoutPreviewSize).sort((a, b) => b.value - a.value)[0]?.index) !== null && _breakValues$map$filt !== void 0 ? _breakValues$map$filt : 0;
46
+ const marks = breakValues.map((size, index) => {
47
+ return {
48
+ value: index
49
+ };
50
+ });
51
+ return /*#__PURE__*/_jsx(RangeControl, {
52
+ __nextHasNoMarginBottom: true,
53
+ __next40pxDefaultSize: true,
54
+ showTooltip: false,
55
+ label: __('Preview size'),
56
+ value: previewSizeToUse,
57
+ min: 0,
58
+ max: breakValues.length - 1,
59
+ withInputField: false,
60
+ onChange: (value = 0) => {
61
+ context.onChangeView({
62
+ ...view,
63
+ layout: {
64
+ ...view.layout,
65
+ previewSize: breakValues[value].value
66
+ }
67
+ });
68
+ },
69
+ step: 1,
70
+ marks: marks
71
+ });
72
+ }
73
+ //# sourceMappingURL=preview-size-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RangeControl","__","useContext","DataViewsContext","jsx","_jsx","imageSizes","value","breakpoint","PreviewSizePicker","_view$layout$previewS","_breakValues$map$filt","context","view","breakValues","filter","size","containerWidth","layoutPreviewSize","layout","previewSize","previewSizeToUse","map","index","sort","a","b","marks","__nextHasNoMarginBottom","__next40pxDefaultSize","showTooltip","label","min","max","length","withInputField","onChange","onChangeView","step"],"sources":["@wordpress/dataviews/src/dataviews-layouts/utils/preview-size-picker.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport type { ViewGrid } from '../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 120,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 170,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\tconst layoutPreviewSize = view.layout?.previewSize ?? 230; // Default to the third smallest size if no preview size is set.\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size, or the smallest available size.\n\tconst previewSizeToUse =\n\t\tbreakValues\n\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t.filter( ( size ) => size.value <= layoutPreviewSize )\n\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ]?.index ?? 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,uBAAuB;AACpD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlE,MAAMC,UAAU,GAAG,CAClB;EACCC,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,IAAI,CAAE;AACnB,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,IAAI,CAAE;AACnB,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,GAAG,CAAE;AAClB,CAAC,CACD;AAED,eAAe,SAASC,iBAAiBA,CAAA,EAAG;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAC3C,MAAMC,OAAO,GAAGV,UAAU,CAAEC,gBAAiB,CAAC;EAC9C,MAAMU,IAAI,GAAGD,OAAO,CAACC,IAAgB;EAErC,MAAMC,WAAW,GAAGR,UAAU,CAACS,MAAM,CAAIC,IAAI,IAAM;IAClD,OAAOJ,OAAO,CAACK,cAAc,IAAID,IAAI,CAACR,UAAU;EACjD,CAAE,CAAC;EAEH,MAAMU,iBAAiB,IAAAR,qBAAA,GAAGG,IAAI,CAACM,MAAM,EAAEC,WAAW,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,GAAG,CAAC,CAAC;EAC3D;EACA;EACA,MAAMW,gBAAgB,IAAAV,qBAAA,GACrBG,WAAW,CACTQ,GAAG,CAAE,CAAEN,IAAI,EAAEO,KAAK,MAAQ;IAAE,GAAGP,IAAI;IAAEO;EAAM,CAAC,CAAG,CAAC,CAChDR,MAAM,CAAIC,IAAI,IAAMA,IAAI,CAACT,KAAK,IAAIW,iBAAkB,CAAC,CACrDM,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMA,CAAC,CAACnB,KAAK,GAAGkB,CAAC,CAAClB,KAAM,CAAC,CAAE,CAAC,CAAE,EAAEgB,KAAK,cAAAZ,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EAEzD,MAAMgB,KAAK,GAAGb,WAAW,CAACQ,GAAG,CAAE,CAAEN,IAAI,EAAEO,KAAK,KAAM;IACjD,OAAO;MACNhB,KAAK,EAAEgB;IACR,CAAC;EACF,CAAE,CAAC;EAEH,oBACClB,IAAA,CAACL,YAAY;IACZ4B,uBAAuB;IACvBC,qBAAqB;IACrBC,WAAW,EAAG,KAAO;IACrBC,KAAK,EAAG9B,EAAE,CAAE,cAAe,CAAG;IAC9BM,KAAK,EAAGc,gBAAkB;IAC1BW,GAAG,EAAG,CAAG;IACTC,GAAG,EAAGnB,WAAW,CAACoB,MAAM,GAAG,CAAG;IAC9BC,cAAc,EAAG,KAAO;IACxBC,QAAQ,EAAGA,CAAE7B,KAAK,GAAG,CAAC,KAAM;MAC3BK,OAAO,CAACyB,YAAY,CAAE;QACrB,GAAGxB,IAAI;QACPM,MAAM,EAAE;UACP,GAAGN,IAAI,CAACM,MAAM;UACdC,WAAW,EAAEN,WAAW,CAAEP,KAAK,CAAE,CAACA;QACnC;MACD,CAAE,CAAC;IACJ,CAAG;IACH+B,IAAI,EAAG,CAAG;IACVX,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
@@ -15,6 +15,7 @@ import { default as date } from './date';
15
15
  import { default as boolean } from './boolean';
16
16
  import { default as media } from './media';
17
17
  import { default as array } from './array';
18
+ import { default as telephone } from './telephone';
18
19
  import { renderFromElements } from '../utils';
19
20
  import { ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';
20
21
 
@@ -49,6 +50,9 @@ export default function getFieldTypeDefinition(type) {
49
50
  if ('array' === type) {
50
51
  return array;
51
52
  }
53
+ if ('telephone' === type) {
54
+ return telephone;
55
+ }
52
56
 
53
57
  // This is a fallback for fields that don't provide a type.
54
58
  // It can be removed when the field.type is mandatory.
@@ -1 +1 @@
1
- {"version":3,"names":["__","default","email","integer","text","datetime","date","boolean","media","array","renderFromElements","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","getFieldTypeDefinition","type","sort","a","b","direction","localeCompare","isValid","custom","item","field","elements","value","getValue","validValues","map","f","includes","Edit","render","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tNormalizedField,\n\tFieldType,\n\tFieldTypeDefinition,\n\tSortDirection,\n} from '../types';\nimport { default as email } from './email';\nimport { default as integer } from './integer';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\nimport { default as date } from './date';\nimport { default as boolean } from './boolean';\nimport { default as media } from './media';\nimport { default as array } from './array';\nimport { renderFromElements } from '../utils';\nimport { ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\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< Item >(\n\ttype?: FieldType\n): FieldTypeDefinition< Item > {\n\tif ( 'email' === type ) {\n\t\treturn email;\n\t}\n\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\tif ( 'date' === type ) {\n\t\treturn date;\n\t}\n\n\tif ( 'boolean' === type ) {\n\t\treturn boolean;\n\t}\n\n\tif ( 'media' === type ) {\n\t\treturn media;\n\t}\n\n\tif ( 'array' === type ) {\n\t\treturn array;\n\t}\n\n\t// This is a fallback for fields that don't provide a type.\n\t// It can be removed when the field.type is mandatory.\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: {\n\t\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\t\tif ( field?.elements ) {\n\t\t\t\t\tconst value = field.getValue( { item } );\n\t\t\t\t\tconst validValues = field?.elements?.map(\n\t\t\t\t\t\t( f ) => f.value\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! validValues.includes( value ) ) {\n\t\t\t\t\t\treturn __( 'Value must be one of the elements.' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t\tEdit: null,\n\t\trender: ( { item, field }: DataViewRenderFieldProps< Item > ) => {\n\t\t\treturn field.elements\n\t\t\t\t? renderFromElements( { item, field } )\n\t\t\t\t: field.getValue( { item } );\n\t\t},\n\t\tenableSorting: true,\n\t\tfilterBy: {\n\t\t\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t\t\tvalidOperators: ALL_OPERATORS,\n\t\t},\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;;AAQA,SAASC,OAAO,IAAIC,KAAK,QAAQ,SAAS;AAC1C,SAASD,OAAO,IAAIE,OAAO,QAAQ,WAAW;AAC9C,SAASF,OAAO,IAAIG,IAAI,QAAQ,QAAQ;AACxC,SAASH,OAAO,IAAII,QAAQ,QAAQ,YAAY;AAChD,SAASJ,OAAO,IAAIK,IAAI,QAAQ,QAAQ;AACxC,SAASL,OAAO,IAAIM,OAAO,QAAQ,WAAW;AAC9C,SAASN,OAAO,IAAIO,KAAK,QAAQ,SAAS;AAC1C,SAASP,OAAO,IAAIQ,KAAK,QAAQ,SAAS;AAC1C,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SAASC,aAAa,EAAEC,WAAW,EAAEC,eAAe,QAAQ,cAAc;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAsBA,CAC7CC,IAAgB,EACc;EAC9B,IAAK,OAAO,KAAKA,IAAI,EAAG;IACvB,OAAOb,KAAK;EACb;EAEA,IAAK,SAAS,KAAKa,IAAI,EAAG;IACzB,OAAOZ,OAAO;EACf;EAEA,IAAK,MAAM,KAAKY,IAAI,EAAG;IACtB,OAAOX,IAAI;EACZ;EAEA,IAAK,UAAU,KAAKW,IAAI,EAAG;IAC1B,OAAOV,QAAQ;EAChB;EAEA,IAAK,MAAM,KAAKU,IAAI,EAAG;IACtB,OAAOT,IAAI;EACZ;EAEA,IAAK,SAAS,KAAKS,IAAI,EAAG;IACzB,OAAOR,OAAO;EACf;EAEA,IAAK,OAAO,KAAKQ,IAAI,EAAG;IACvB,OAAOP,KAAK;EACb;EAEA,IAAK,OAAO,KAAKO,IAAI,EAAG;IACvB,OAAON,KAAK;EACb;;EAEA;EACA;EACA,OAAO;IACNO,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,EAAE;MACRC,MAAM,EAAEA,CAAEC,IAAS,EAAEC,KAA6B,KAAM;QACvD,IAAKA,KAAK,EAAEC,QAAQ,EAAG;UACtB,MAAMC,KAAK,GAAGF,KAAK,CAACG,QAAQ,CAAE;YAAEJ;UAAK,CAAE,CAAC;UACxC,MAAMK,WAAW,GAAGJ,KAAK,EAAEC,QAAQ,EAAEI,GAAG,CACrCC,CAAC,IAAMA,CAAC,CAACJ,KACZ,CAAC;UACD,IAAK,CAAEE,WAAW,CAACG,QAAQ,CAAEL,KAAM,CAAC,EAAG;YACtC,OAAO1B,EAAE,CAAE,oCAAqC,CAAC;UAClD;QACD;QAEA,OAAO,IAAI;MACZ;IACD,CAAC;IACDgC,IAAI,EAAE,IAAI;IACVC,MAAM,EAAEA,CAAE;MAAEV,IAAI;MAAEC;IAAwC,CAAC,KAAM;MAChE,OAAOA,KAAK,CAACC,QAAQ,GAClBf,kBAAkB,CAAE;QAAEa,IAAI;QAAEC;MAAM,CAAE,CAAC,GACrCA,KAAK,CAACG,QAAQ,CAAE;QAAEJ;MAAK,CAAE,CAAC;IAC9B,CAAC;IACDW,aAAa,EAAE,IAAI;IACnBC,QAAQ,EAAE;MACTC,gBAAgB,EAAE,CAAExB,WAAW,EAAEC,eAAe,CAAE;MAClDwB,cAAc,EAAE1B;IACjB;EACD,CAAC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["__","default","email","integer","text","datetime","date","boolean","media","array","telephone","renderFromElements","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","getFieldTypeDefinition","type","sort","a","b","direction","localeCompare","isValid","custom","item","field","elements","value","getValue","validValues","map","f","includes","Edit","render","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tNormalizedField,\n\tFieldType,\n\tFieldTypeDefinition,\n\tSortDirection,\n} from '../types';\nimport { default as email } from './email';\nimport { default as integer } from './integer';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\nimport { default as date } from './date';\nimport { default as boolean } from './boolean';\nimport { default as media } from './media';\nimport { default as array } from './array';\nimport { default as telephone } from './telephone';\nimport { renderFromElements } from '../utils';\nimport { ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\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< Item >(\n\ttype?: FieldType\n): FieldTypeDefinition< Item > {\n\tif ( 'email' === type ) {\n\t\treturn email;\n\t}\n\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\tif ( 'date' === type ) {\n\t\treturn date;\n\t}\n\n\tif ( 'boolean' === type ) {\n\t\treturn boolean;\n\t}\n\n\tif ( 'media' === type ) {\n\t\treturn media;\n\t}\n\n\tif ( 'array' === type ) {\n\t\treturn array;\n\t}\n\n\tif ( 'telephone' === type ) {\n\t\treturn telephone;\n\t}\n\n\t// This is a fallback for fields that don't provide a type.\n\t// It can be removed when the field.type is mandatory.\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: {\n\t\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\t\tif ( field?.elements ) {\n\t\t\t\t\tconst value = field.getValue( { item } );\n\t\t\t\t\tconst validValues = field?.elements?.map(\n\t\t\t\t\t\t( f ) => f.value\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! validValues.includes( value ) ) {\n\t\t\t\t\t\treturn __( 'Value must be one of the elements.' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t},\n\t\tEdit: null,\n\t\trender: ( { item, field }: DataViewRenderFieldProps< Item > ) => {\n\t\t\treturn field.elements\n\t\t\t\t? renderFromElements( { item, field } )\n\t\t\t\t: field.getValue( { item } );\n\t\t},\n\t\tenableSorting: true,\n\t\tfilterBy: {\n\t\t\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t\t\tvalidOperators: ALL_OPERATORS,\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+
10
+ import { renderFromElements } from '../utils';
11
+ import { OPERATOR_IS, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL, OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH } from '../constants';
12
+ function sort(valueA, valueB, direction) {
13
+ return direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
14
+ }
15
+ export default {
16
+ sort,
17
+ isValid: {
18
+ custom: (item, field) => {
19
+ const value = field.getValue({
20
+ item
21
+ });
22
+ if (field?.elements) {
23
+ const validValues = field.elements.map(f => f.value);
24
+ if (!validValues.includes(value)) {
25
+ return __('Value must be one of the elements.');
26
+ }
27
+ }
28
+ return null;
29
+ }
30
+ },
31
+ Edit: 'telephone',
32
+ render: ({
33
+ item,
34
+ field
35
+ }) => {
36
+ return field.elements ? renderFromElements({
37
+ item,
38
+ field
39
+ }) : field.getValue({
40
+ item
41
+ });
42
+ },
43
+ enableSorting: true,
44
+ filterBy: {
45
+ defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
46
+ validOperators: [OPERATOR_IS, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH,
47
+ // Multiple selection
48
+ OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL]
49
+ }
50
+ };
51
+ //# sourceMappingURL=telephone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","renderFromElements","OPERATOR_IS","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_NOT","OPERATOR_CONTAINS","OPERATOR_NOT_CONTAINS","OPERATOR_STARTS_WITH","sort","valueA","valueB","direction","localeCompare","isValid","custom","item","field","value","getValue","elements","validValues","map","f","includes","Edit","render","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/telephone.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_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\n\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\treturn direction === 'asc'\n\t\t? valueA.localeCompare( valueB )\n\t\t: valueB.localeCompare( valueA );\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: 'telephone',\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: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS,\n\t\t\tOPERATOR_IS_NOT,\n\t\t\tOPERATOR_CONTAINS,\n\t\t\tOPERATOR_NOT_CONTAINS,\n\t\t\tOPERATOR_STARTS_WITH,\n\t\t\t// Multiple selection\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} satisfies FieldTypeDefinition< any >;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;;AAOA,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SACCC,WAAW,EACXC,eAAe,EACfC,mBAAmB,EACnBC,eAAe,EACfC,gBAAgB,EAChBC,eAAe,EACfC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB,QACd,cAAc;AAErB,SAASC,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,OAAOA,SAAS,KAAK,KAAK,GACvBF,MAAM,CAACG,aAAa,CAAEF,MAAO,CAAC,GAC9BA,MAAM,CAACE,aAAa,CAAEH,MAAO,CAAC;AAClC;AAEA,eAAe;EACdD,IAAI;EACJK,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,OAAOpB,EAAE,CAAE,oCAAqC,CAAC;QAClD;MACD;MAEA,OAAO,IAAI;IACZ;EACD,CAAC;EACD2B,IAAI,EAAE,WAAW;EACjBC,MAAM,EAAEA,CAAE;IAAEV,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,OAAOA,KAAK,CAACG,QAAQ,GAClBrB,kBAAkB,CAAE;MAAEiB,IAAI;MAAEC;IAAM,CAAE,CAAC,GACrCA,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC;EAC9B,CAAC;EACDW,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAE1B,eAAe,EAAEC,gBAAgB,CAAE;IACvD0B,cAAc,EAAE,CACf9B,WAAW,EACXK,eAAe,EACfC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB;IACpB;IACAL,eAAe,EACfC,gBAAgB,EAChBH,eAAe,EACfC,mBAAmB;EAErB;AACD,CAAC","ignoreList":[]}