@wordpress/dataviews 11.2.1-next.ba3aee3a2.0 → 11.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 (182) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/build/components/dataform-controls/combobox.cjs +80 -0
  3. package/build/components/dataform-controls/combobox.cjs.map +7 -0
  4. package/build/components/dataform-controls/date.cjs +35 -10
  5. package/build/components/dataform-controls/date.cjs.map +2 -2
  6. package/build/components/dataform-controls/index.cjs +2 -0
  7. package/build/components/dataform-controls/index.cjs.map +3 -3
  8. package/build/components/dataform-layouts/card/index.cjs +58 -3
  9. package/build/components/dataform-layouts/card/index.cjs.map +3 -3
  10. package/build/components/dataform-layouts/panel/dropdown.cjs +18 -8
  11. package/build/components/dataform-layouts/panel/dropdown.cjs.map +3 -3
  12. package/build/components/dataform-layouts/panel/index.cjs +5 -3
  13. package/build/components/dataform-layouts/panel/index.cjs.map +2 -2
  14. package/build/components/dataform-layouts/panel/modal.cjs +16 -10
  15. package/build/components/dataform-layouts/panel/modal.cjs.map +3 -3
  16. package/build/components/dataviews-bulk-actions/index.cjs +16 -18
  17. package/build/components/dataviews-bulk-actions/index.cjs.map +3 -3
  18. package/build/components/dataviews-filters/input-widget.cjs +1 -1
  19. package/build/components/dataviews-filters/input-widget.cjs.map +1 -1
  20. package/build/components/dataviews-item-actions/index.cjs +4 -1
  21. package/build/components/dataviews-item-actions/index.cjs.map +2 -2
  22. package/build/components/dataviews-layouts/activity/activity-item.cjs +6 -1
  23. package/build/components/dataviews-layouts/activity/activity-item.cjs.map +2 -2
  24. package/build/components/dataviews-layouts/table/column-header-menu.cjs +73 -66
  25. package/build/components/dataviews-layouts/table/column-header-menu.cjs.map +2 -2
  26. package/build/components/dataviews-layouts/table/index.cjs +3 -2
  27. package/build/components/dataviews-layouts/table/index.cjs.map +2 -2
  28. package/build/components/dataviews-picker-footer/index.cjs +8 -15
  29. package/build/components/dataviews-picker-footer/index.cjs.map +3 -3
  30. package/build/components/dataviews-view-config/properties-section.cjs +11 -39
  31. package/build/components/dataviews-view-config/properties-section.cjs.map +2 -2
  32. package/build/field-types/index.cjs +2 -0
  33. package/build/field-types/index.cjs.map +3 -3
  34. package/build/field-types/utils/get-filter.cjs +36 -0
  35. package/build/field-types/utils/get-filter.cjs.map +7 -0
  36. package/build/hooks/use-form-validity.cjs +1 -1
  37. package/build/hooks/use-form-validity.cjs.map +1 -1
  38. package/build/hooks/use-report-validity.cjs +39 -0
  39. package/build/hooks/use-report-validity.cjs.map +7 -0
  40. package/build/types/field-api.cjs.map +1 -1
  41. package/build/utils/filter-sort-and-paginate.cjs +6 -174
  42. package/build/utils/filter-sort-and-paginate.cjs.map +2 -2
  43. package/build/utils/get-footer-message.cjs +49 -0
  44. package/build/utils/get-footer-message.cjs.map +7 -0
  45. package/build/utils/operators.cjs +203 -24
  46. package/build/utils/operators.cjs.map +2 -2
  47. package/build-module/components/dataform-controls/combobox.mjs +49 -0
  48. package/build-module/components/dataform-controls/combobox.mjs.map +7 -0
  49. package/build-module/components/dataform-controls/date.mjs +35 -10
  50. package/build-module/components/dataform-controls/date.mjs.map +2 -2
  51. package/build-module/components/dataform-controls/index.mjs +2 -0
  52. package/build-module/components/dataform-controls/index.mjs.map +2 -2
  53. package/build-module/components/dataform-layouts/card/index.mjs +59 -3
  54. package/build-module/components/dataform-layouts/card/index.mjs.map +2 -2
  55. package/build-module/components/dataform-layouts/panel/dropdown.mjs +20 -10
  56. package/build-module/components/dataform-layouts/panel/dropdown.mjs.map +2 -2
  57. package/build-module/components/dataform-layouts/panel/index.mjs +5 -3
  58. package/build-module/components/dataform-layouts/panel/index.mjs.map +2 -2
  59. package/build-module/components/dataform-layouts/panel/modal.mjs +18 -12
  60. package/build-module/components/dataform-layouts/panel/modal.mjs.map +2 -2
  61. package/build-module/components/dataviews-bulk-actions/index.mjs +17 -19
  62. package/build-module/components/dataviews-bulk-actions/index.mjs.map +2 -2
  63. package/build-module/components/dataviews-filters/input-widget.mjs +1 -1
  64. package/build-module/components/dataviews-filters/input-widget.mjs.map +1 -1
  65. package/build-module/components/dataviews-item-actions/index.mjs +4 -1
  66. package/build-module/components/dataviews-item-actions/index.mjs.map +2 -2
  67. package/build-module/components/dataviews-layouts/activity/activity-item.mjs +6 -1
  68. package/build-module/components/dataviews-layouts/activity/activity-item.mjs.map +2 -2
  69. package/build-module/components/dataviews-layouts/table/column-header-menu.mjs +74 -67
  70. package/build-module/components/dataviews-layouts/table/column-header-menu.mjs.map +2 -2
  71. package/build-module/components/dataviews-layouts/table/index.mjs +4 -3
  72. package/build-module/components/dataviews-layouts/table/index.mjs.map +2 -2
  73. package/build-module/components/dataviews-picker-footer/index.mjs +8 -15
  74. package/build-module/components/dataviews-picker-footer/index.mjs.map +2 -2
  75. package/build-module/components/dataviews-view-config/properties-section.mjs +11 -39
  76. package/build-module/components/dataviews-view-config/properties-section.mjs.map +2 -2
  77. package/build-module/field-types/index.mjs +2 -0
  78. package/build-module/field-types/index.mjs.map +2 -2
  79. package/build-module/field-types/utils/get-filter.mjs +15 -0
  80. package/build-module/field-types/utils/get-filter.mjs.map +7 -0
  81. package/build-module/hooks/use-form-validity.mjs +1 -1
  82. package/build-module/hooks/use-form-validity.mjs.map +1 -1
  83. package/build-module/hooks/use-report-validity.mjs +18 -0
  84. package/build-module/hooks/use-report-validity.mjs.map +7 -0
  85. package/build-module/utils/filter-sort-and-paginate.mjs +7 -198
  86. package/build-module/utils/filter-sort-and-paginate.mjs.map +2 -2
  87. package/build-module/utils/get-footer-message.mjs +28 -0
  88. package/build-module/utils/get-footer-message.mjs.map +7 -0
  89. package/build-module/utils/operators.mjs +203 -24
  90. package/build-module/utils/operators.mjs.map +2 -2
  91. package/build-style/style-rtl.css +28 -44
  92. package/build-style/style.css +28 -44
  93. package/build-types/components/dataform-controls/combobox.d.ts +6 -0
  94. package/build-types/components/dataform-controls/combobox.d.ts.map +1 -0
  95. package/build-types/components/dataform-controls/date.d.ts.map +1 -1
  96. package/build-types/components/dataform-controls/index.d.ts.map +1 -1
  97. package/build-types/components/dataform-layouts/card/index.d.ts +2 -0
  98. package/build-types/components/dataform-layouts/card/index.d.ts.map +1 -1
  99. package/build-types/components/dataform-layouts/panel/dropdown.d.ts +3 -2
  100. package/build-types/components/dataform-layouts/panel/dropdown.d.ts.map +1 -1
  101. package/build-types/components/dataform-layouts/panel/index.d.ts.map +1 -1
  102. package/build-types/components/dataform-layouts/panel/modal.d.ts +3 -2
  103. package/build-types/components/dataform-layouts/panel/modal.d.ts.map +1 -1
  104. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
  105. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  106. package/build-types/components/dataviews-layouts/activity/activity-item.d.ts.map +1 -1
  107. package/build-types/components/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  108. package/build-types/components/dataviews-layouts/table/index.d.ts.map +1 -1
  109. package/build-types/components/dataviews-picker-footer/index.d.ts.map +1 -1
  110. package/build-types/components/dataviews-view-config/properties-section.d.ts.map +1 -1
  111. package/build-types/dataform/stories/content.story.d.ts +14 -0
  112. package/build-types/dataform/stories/content.story.d.ts.map +1 -0
  113. package/build-types/dataform/stories/index.story.d.ts +1 -1
  114. package/build-types/dataform/stories/index.story.d.ts.map +1 -1
  115. package/build-types/dataform/stories/validation.d.ts +1 -1
  116. package/build-types/dataform/stories/validation.d.ts.map +1 -1
  117. package/build-types/dataviews/stories/fixtures.d.ts.map +1 -1
  118. package/build-types/dataviews/stories/index.story.d.ts +4 -1
  119. package/build-types/dataviews/stories/index.story.d.ts.map +1 -1
  120. package/build-types/dataviews/stories/layout-custom.d.ts +11 -0
  121. package/build-types/dataviews/stories/layout-custom.d.ts.map +1 -0
  122. package/build-types/dataviews-picker/stories/fixtures.d.ts.map +1 -1
  123. package/build-types/dataviews-picker/stories/index.story.d.ts +1 -1
  124. package/build-types/dataviews-picker/stories/index.story.d.ts.map +1 -1
  125. package/build-types/field-types/email.d.ts +1 -1
  126. package/build-types/field-types/index.d.ts.map +1 -1
  127. package/build-types/field-types/integer.d.ts +1 -1
  128. package/build-types/field-types/no-type.d.ts +1 -1
  129. package/build-types/field-types/number.d.ts +1 -1
  130. package/build-types/field-types/stories/index.story.d.ts +1 -1
  131. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  132. package/build-types/field-types/utils/get-filter.d.ts +7 -0
  133. package/build-types/field-types/utils/get-filter.d.ts.map +1 -0
  134. package/build-types/field-types/utils/get-format.d.ts +56 -56
  135. package/build-types/hooks/use-report-validity.d.ts +14 -0
  136. package/build-types/hooks/use-report-validity.d.ts.map +1 -0
  137. package/build-types/types/field-api.d.ts +3 -0
  138. package/build-types/types/field-api.d.ts.map +1 -1
  139. package/build-types/utils/filter-sort-and-paginate.d.ts.map +1 -1
  140. package/build-types/utils/get-footer-message.d.ts +10 -0
  141. package/build-types/utils/get-footer-message.d.ts.map +1 -0
  142. package/build-types/utils/operators.d.ts +2 -1
  143. package/build-types/utils/operators.d.ts.map +1 -1
  144. package/build-wp/index.js +2758 -2234
  145. package/package.json +22 -20
  146. package/src/components/dataform-controls/combobox.tsx +58 -0
  147. package/src/components/dataform-controls/date.tsx +45 -10
  148. package/src/components/dataform-controls/index.tsx +2 -0
  149. package/src/components/dataform-layouts/card/index.tsx +81 -3
  150. package/src/components/dataform-layouts/panel/dropdown.tsx +26 -11
  151. package/src/components/dataform-layouts/panel/index.tsx +6 -4
  152. package/src/components/dataform-layouts/panel/modal.tsx +24 -12
  153. package/src/components/dataviews-bulk-actions/index.tsx +23 -20
  154. package/src/components/dataviews-bulk-actions/style.scss +0 -3
  155. package/src/components/dataviews-filters/input-widget.tsx +1 -1
  156. package/src/components/dataviews-item-actions/index.tsx +6 -1
  157. package/src/components/dataviews-layouts/activity/activity-item.tsx +8 -1
  158. package/src/components/dataviews-layouts/table/column-header-menu.tsx +99 -73
  159. package/src/components/dataviews-layouts/table/index.tsx +12 -3
  160. package/src/components/dataviews-layouts/table/style.scss +14 -7
  161. package/src/components/dataviews-picker-footer/index.tsx +8 -18
  162. package/src/components/dataviews-view-config/properties-section.tsx +24 -49
  163. package/src/dataform/stories/content.story.mdx +159 -0
  164. package/src/dataform/stories/content.story.tsx +390 -0
  165. package/src/dataform/stories/index.story.tsx +8 -1
  166. package/src/dataform/stories/validation.tsx +98 -5
  167. package/src/dataviews/stories/best-practices.story.mdx +55 -0
  168. package/src/dataviews/stories/fixtures.tsx +1 -3
  169. package/src/dataviews/stories/index.story.tsx +6 -1
  170. package/src/dataviews/stories/layout-custom.tsx +140 -0
  171. package/src/dataviews/test/dataviews.tsx +66 -1
  172. package/src/dataviews-picker/stories/fixtures.tsx +1 -3
  173. package/src/dataviews-picker/stories/index.story.tsx +1 -1
  174. package/src/field-types/index.tsx +2 -0
  175. package/src/field-types/stories/index.story.tsx +2 -0
  176. package/src/field-types/utils/get-filter.ts +18 -0
  177. package/src/hooks/use-form-validity.ts +1 -1
  178. package/src/hooks/use-report-validity.ts +32 -0
  179. package/src/types/field-api.ts +11 -0
  180. package/src/utils/filter-sort-and-paginate.ts +11 -306
  181. package/src/utils/get-footer-message.ts +41 -0
  182. package/src/utils/operators.tsx +303 -31
@@ -26,14 +26,58 @@ __export(operators_exports, {
26
26
  isSingleSelectionOperator: () => isSingleSelectionOperator
27
27
  });
28
28
  module.exports = __toCommonJS(operators_exports);
29
+ var import_date_fns = require("date-fns");
29
30
  var import_i18n = require("@wordpress/i18n");
30
31
  var import_element = require("@wordpress/element");
32
+ var import_date = require("@wordpress/date");
31
33
  var import_constants = require("../constants.cjs");
32
34
  var import_jsx_runtime = require("react/jsx-runtime");
33
35
  var filterTextWrappers = {
34
36
  Name: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }),
35
37
  Value: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" })
36
38
  };
39
+ function getRelativeDate(value, unit) {
40
+ switch (unit) {
41
+ case "days":
42
+ return (0, import_date_fns.subDays)(/* @__PURE__ */ new Date(), value);
43
+ case "weeks":
44
+ return (0, import_date_fns.subWeeks)(/* @__PURE__ */ new Date(), value);
45
+ case "months":
46
+ return (0, import_date_fns.subMonths)(/* @__PURE__ */ new Date(), value);
47
+ case "years":
48
+ return (0, import_date_fns.subYears)(/* @__PURE__ */ new Date(), value);
49
+ default:
50
+ return /* @__PURE__ */ new Date();
51
+ }
52
+ }
53
+ var isNoneOperatorDefinition = {
54
+ /* translators: DataViews operator name */
55
+ label: (0, import_i18n.__)("Is none of"),
56
+ filterText: (filter, activeElements) => (0, import_element.createInterpolateElement)(
57
+ (0, import_i18n.sprintf)(
58
+ /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */
59
+ (0, import_i18n.__)("<Name>%1$s is none of: </Name><Value>%2$s</Value>"),
60
+ filter.name,
61
+ activeElements.map((element) => element.label).join(", ")
62
+ ),
63
+ filterTextWrappers
64
+ ),
65
+ filter: ((item, field, filterValue) => {
66
+ if (!filterValue?.length) {
67
+ return true;
68
+ }
69
+ const fieldValue = field.getValue({ item });
70
+ if (Array.isArray(fieldValue)) {
71
+ return !filterValue.some(
72
+ (fv) => fieldValue.includes(fv)
73
+ );
74
+ } else if (typeof fieldValue === "string") {
75
+ return !filterValue.includes(fieldValue);
76
+ }
77
+ return false;
78
+ }),
79
+ selection: "multi"
80
+ };
37
81
  var OPERATORS = [
38
82
  {
39
83
  name: import_constants.OPERATOR_IS_ANY,
@@ -48,22 +92,25 @@ var OPERATORS = [
48
92
  ),
49
93
  filterTextWrappers
50
94
  ),
95
+ filter(item, field, filterValue) {
96
+ if (!filterValue?.length) {
97
+ return true;
98
+ }
99
+ const fieldValue = field.getValue({ item });
100
+ if (Array.isArray(fieldValue)) {
101
+ return filterValue.some(
102
+ (fv) => fieldValue.includes(fv)
103
+ );
104
+ } else if (typeof fieldValue === "string") {
105
+ return filterValue.includes(fieldValue);
106
+ }
107
+ return false;
108
+ },
51
109
  selection: "multi"
52
110
  },
53
111
  {
54
112
  name: import_constants.OPERATOR_IS_NONE,
55
- /* translators: DataViews operator name */
56
- label: (0, import_i18n.__)("Is none of"),
57
- filterText: (filter, activeElements) => (0, import_element.createInterpolateElement)(
58
- (0, import_i18n.sprintf)(
59
- /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */
60
- (0, import_i18n.__)("<Name>%1$s is none of: </Name><Value>%2$s</Value>"),
61
- filter.name,
62
- activeElements.map((element) => element.label).join(", ")
63
- ),
64
- filterTextWrappers
65
- ),
66
- selection: "multi"
113
+ ...isNoneOperatorDefinition
67
114
  },
68
115
  {
69
116
  name: import_constants.OPERATOR_IS_ALL,
@@ -78,22 +125,19 @@ var OPERATORS = [
78
125
  ),
79
126
  filterTextWrappers
80
127
  ),
128
+ filter(item, field, filterValue) {
129
+ if (!filterValue?.length) {
130
+ return true;
131
+ }
132
+ return filterValue.every((value) => {
133
+ return field.getValue({ item })?.includes(value);
134
+ });
135
+ },
81
136
  selection: "multi"
82
137
  },
83
138
  {
84
139
  name: import_constants.OPERATOR_IS_NOT_ALL,
85
- /* translators: DataViews operator name */
86
- label: (0, import_i18n.__)("Is none of"),
87
- filterText: (filter, activeElements) => (0, import_element.createInterpolateElement)(
88
- (0, import_i18n.sprintf)(
89
- /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */
90
- (0, import_i18n.__)("<Name>%1$s is none of: </Name><Value>%2$s</Value>"),
91
- filter.name,
92
- activeElements.map((element) => element.label).join(", ")
93
- ),
94
- filterTextWrappers
95
- ),
96
- selection: "multi"
140
+ ...isNoneOperatorDefinition
97
141
  },
98
142
  {
99
143
  name: import_constants.OPERATOR_BETWEEN,
@@ -111,6 +155,16 @@ var OPERATORS = [
111
155
  ),
112
156
  filterTextWrappers
113
157
  ),
158
+ filter(item, field, filterValue) {
159
+ if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) {
160
+ return true;
161
+ }
162
+ const fieldValue = field.getValue({ item });
163
+ if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") {
164
+ return fieldValue >= filterValue[0] && fieldValue <= filterValue[1];
165
+ }
166
+ return false;
167
+ },
114
168
  selection: "custom"
115
169
  },
116
170
  {
@@ -128,6 +182,17 @@ var OPERATORS = [
128
182
  ),
129
183
  filterTextWrappers
130
184
  ),
185
+ filter(item, field, filterValue) {
186
+ if (filterValue?.value === void 0 || filterValue?.unit === void 0) {
187
+ return true;
188
+ }
189
+ const targetDate = getRelativeDate(
190
+ filterValue.value,
191
+ filterValue.unit
192
+ );
193
+ const fieldValue = (0, import_date.getDate)(field.getValue({ item }));
194
+ return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date();
195
+ },
131
196
  selection: "custom"
132
197
  },
133
198
  {
@@ -143,6 +208,17 @@ var OPERATORS = [
143
208
  ),
144
209
  filterTextWrappers
145
210
  ),
211
+ filter(item, field, filterValue) {
212
+ if (filterValue?.value === void 0 || filterValue?.unit === void 0) {
213
+ return true;
214
+ }
215
+ const targetDate = getRelativeDate(
216
+ filterValue.value,
217
+ filterValue.unit
218
+ );
219
+ const fieldValue = (0, import_date.getDate)(field.getValue({ item }));
220
+ return fieldValue < targetDate;
221
+ },
146
222
  selection: "custom"
147
223
  },
148
224
  {
@@ -158,6 +234,9 @@ var OPERATORS = [
158
234
  ),
159
235
  filterTextWrappers
160
236
  ),
237
+ filter(item, field, filterValue) {
238
+ return filterValue === field.getValue({ item }) || filterValue === void 0;
239
+ },
161
240
  selection: "single"
162
241
  },
163
242
  {
@@ -173,6 +252,9 @@ var OPERATORS = [
173
252
  ),
174
253
  filterTextWrappers
175
254
  ),
255
+ filter(item, field, filterValue) {
256
+ return filterValue !== field.getValue({ item });
257
+ },
176
258
  selection: "single"
177
259
  },
178
260
  {
@@ -188,6 +270,13 @@ var OPERATORS = [
188
270
  ),
189
271
  filterTextWrappers
190
272
  ),
273
+ filter(item, field, filterValue) {
274
+ if (filterValue === void 0) {
275
+ return true;
276
+ }
277
+ const fieldValue = field.getValue({ item });
278
+ return fieldValue < filterValue;
279
+ },
191
280
  selection: "single"
192
281
  },
193
282
  {
@@ -205,6 +294,13 @@ var OPERATORS = [
205
294
  ),
206
295
  filterTextWrappers
207
296
  ),
297
+ filter(item, field, filterValue) {
298
+ if (filterValue === void 0) {
299
+ return true;
300
+ }
301
+ const fieldValue = field.getValue({ item });
302
+ return fieldValue > filterValue;
303
+ },
208
304
  selection: "single"
209
305
  },
210
306
  {
@@ -222,6 +318,13 @@ var OPERATORS = [
222
318
  ),
223
319
  filterTextWrappers
224
320
  ),
321
+ filter(item, field, filterValue) {
322
+ if (filterValue === void 0) {
323
+ return true;
324
+ }
325
+ const fieldValue = field.getValue({ item });
326
+ return fieldValue <= filterValue;
327
+ },
225
328
  selection: "single"
226
329
  },
227
330
  {
@@ -239,6 +342,13 @@ var OPERATORS = [
239
342
  ),
240
343
  filterTextWrappers
241
344
  ),
345
+ filter(item, field, filterValue) {
346
+ if (filterValue === void 0) {
347
+ return true;
348
+ }
349
+ const fieldValue = field.getValue({ item });
350
+ return fieldValue >= filterValue;
351
+ },
242
352
  selection: "single"
243
353
  },
244
354
  {
@@ -254,6 +364,14 @@ var OPERATORS = [
254
364
  ),
255
365
  filterTextWrappers
256
366
  ),
367
+ filter(item, field, filterValue) {
368
+ if (filterValue === void 0) {
369
+ return true;
370
+ }
371
+ const filterDate = (0, import_date.getDate)(filterValue);
372
+ const fieldDate = (0, import_date.getDate)(field.getValue({ item }));
373
+ return fieldDate < filterDate;
374
+ },
257
375
  selection: "single"
258
376
  },
259
377
  {
@@ -269,6 +387,14 @@ var OPERATORS = [
269
387
  ),
270
388
  filterTextWrappers
271
389
  ),
390
+ filter(item, field, filterValue) {
391
+ if (filterValue === void 0) {
392
+ return true;
393
+ }
394
+ const filterDate = (0, import_date.getDate)(filterValue);
395
+ const fieldDate = (0, import_date.getDate)(field.getValue({ item }));
396
+ return fieldDate > filterDate;
397
+ },
272
398
  selection: "single"
273
399
  },
274
400
  {
@@ -286,6 +412,14 @@ var OPERATORS = [
286
412
  ),
287
413
  filterTextWrappers
288
414
  ),
415
+ filter(item, field, filterValue) {
416
+ if (filterValue === void 0) {
417
+ return true;
418
+ }
419
+ const filterDate = (0, import_date.getDate)(filterValue);
420
+ const fieldDate = (0, import_date.getDate)(field.getValue({ item }));
421
+ return fieldDate <= filterDate;
422
+ },
289
423
  selection: "single"
290
424
  },
291
425
  {
@@ -303,6 +437,14 @@ var OPERATORS = [
303
437
  ),
304
438
  filterTextWrappers
305
439
  ),
440
+ filter(item, field, filterValue) {
441
+ if (filterValue === void 0) {
442
+ return true;
443
+ }
444
+ const filterDate = (0, import_date.getDate)(filterValue);
445
+ const fieldDate = (0, import_date.getDate)(field.getValue({ item }));
446
+ return fieldDate >= filterDate;
447
+ },
306
448
  selection: "single"
307
449
  },
308
450
  {
@@ -318,6 +460,13 @@ var OPERATORS = [
318
460
  ),
319
461
  filterTextWrappers
320
462
  ),
463
+ filter(item, field, filterValue) {
464
+ if (filterValue === void 0) {
465
+ return true;
466
+ }
467
+ const fieldValue = field.getValue({ item });
468
+ return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase());
469
+ },
321
470
  selection: "single"
322
471
  },
323
472
  {
@@ -335,6 +484,13 @@ var OPERATORS = [
335
484
  ),
336
485
  filterTextWrappers
337
486
  ),
487
+ filter(item, field, filterValue) {
488
+ if (filterValue === void 0) {
489
+ return true;
490
+ }
491
+ const fieldValue = field.getValue({ item });
492
+ return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase());
493
+ },
338
494
  selection: "single"
339
495
  },
340
496
  {
@@ -350,6 +506,13 @@ var OPERATORS = [
350
506
  ),
351
507
  filterTextWrappers
352
508
  ),
509
+ filter(item, field, filterValue) {
510
+ if (filterValue === void 0) {
511
+ return true;
512
+ }
513
+ const fieldValue = field.getValue({ item });
514
+ return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase());
515
+ },
353
516
  selection: "single"
354
517
  },
355
518
  {
@@ -365,6 +528,14 @@ var OPERATORS = [
365
528
  ),
366
529
  filterTextWrappers
367
530
  ),
531
+ filter(item, field, filterValue) {
532
+ if (filterValue === void 0) {
533
+ return true;
534
+ }
535
+ const filterDate = (0, import_date.getDate)(filterValue);
536
+ const fieldDate = (0, import_date.getDate)(field.getValue({ item }));
537
+ return filterDate.getTime() === fieldDate.getTime();
538
+ },
368
539
  selection: "single"
369
540
  },
370
541
  {
@@ -380,6 +551,14 @@ var OPERATORS = [
380
551
  ),
381
552
  filterTextWrappers
382
553
  ),
554
+ filter(item, field, filterValue) {
555
+ if (filterValue === void 0) {
556
+ return true;
557
+ }
558
+ const filterDate = (0, import_date.getDate)(filterValue);
559
+ const fieldDate = (0, import_date.getDate)(field.getValue({ item }));
560
+ return filterDate.getTime() !== fieldDate.getTime();
561
+ },
383
562
  selection: "single"
384
563
  }
385
564
  ];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/operators.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport type { ReactElement } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, Operator, Option } from '../types';\nimport {\n\tOPERATOR_AFTER,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_BEFORE,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_BETWEEN,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_ON,\n\tOPERATOR_OVER,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\n\nconst filterTextWrappers = {\n\tName: <span className=\"dataviews-filters__summary-filter-text-name\" />,\n\tValue: <span className=\"dataviews-filters__summary-filter-text-value\" />,\n};\n\nconst OPERATORS: {\n\tname: Operator;\n\tlabel: string;\n\tfilterText: (\n\t\tfilter: NormalizedFilter,\n\t\tactiveElements: Option[]\n\t) => ReactElement;\n\tselection: 'single' | 'multi' | 'custom';\n}[] = [\n\t{\n\t\tname: OPERATOR_IS_ANY,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is any: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NONE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is none of' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes all' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author includes all: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes all: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is none of' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_BETWEEN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Between (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Item count\"). 2: Filter value min. 3: Filter value max. e.g.: \"Item count between (inc): 10 and 180\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s between (inc): </Name><Value>%2$s and %3$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label[ 0 ],\n\t\t\t\t\tactiveElements[ 0 ].label[ 1 ]\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IN_THE_PAST,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'In the past' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is in the past: 7 days\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is in the past: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_OVER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Over' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is over: 7 days\". */\n\t\t\t\t\t__( '<Name>%1$s is over: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is not' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is not: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than: 10\". */\n\t\t\t\t\t__( '<Name>%1$s is less than: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is less than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is before: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is before: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is after: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is after: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or before: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or before: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or after: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or after: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Contains' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title contains: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s contains: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( \"Doesn't contain\" ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title doesn't contain: Hello\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t\"<Name>%1$s doesn't contain: </Name><Value>%2$s</Value>\"\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_STARTS_WITH,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Starts with' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title starts with: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s starts with: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'On' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Not on' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is not: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n];\n\nconst getOperatorByName = ( name: string | undefined ) =>\n\tOPERATORS.find( ( op ) => op.name === name );\n\nconst getAllOperatorNames = () => OPERATORS.map( ( op ) => op.name );\n\nconst isSingleSelectionOperator = ( name: string ) =>\n\tOPERATORS.filter( ( op ) => op.selection === 'single' ).some(\n\t\t( op ) => op.name === name\n\t);\n\nconst isRegisteredOperator = ( name: string ) =>\n\tOPERATORS.some( ( op ) => op.name === name );\n\nexport {\n\tgetOperatorByName,\n\tgetAllOperatorNames,\n\tisSingleSelectionOperator,\n\tisRegisteredOperator,\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport { subDays, subWeeks, subMonths, subYears } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { getDate } from '@wordpress/date';\nimport type { ReactElement } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFilterOperator,\n\tNormalizedFilter,\n\tOperator,\n\tOption,\n} from '../types';\nimport {\n\tOPERATOR_AFTER,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_BEFORE,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_BETWEEN,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_ON,\n\tOPERATOR_OVER,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\n\nconst filterTextWrappers = {\n\tName: <span className=\"dataviews-filters__summary-filter-text-name\" />,\n\tValue: <span className=\"dataviews-filters__summary-filter-text-value\" />,\n};\n\n/**\n * Calculates a date offset from now.\n *\n * @param value Number of units to offset.\n * @param unit Unit of time to offset (days, weeks, months, years).\n * @return Date offset from now.\n */\nfunction getRelativeDate( value: number, unit: string ): Date {\n\tswitch ( unit ) {\n\t\tcase 'days':\n\t\t\treturn subDays( new Date(), value );\n\t\tcase 'weeks':\n\t\t\treturn subWeeks( new Date(), value );\n\t\tcase 'months':\n\t\t\treturn subMonths( new Date(), value );\n\t\tcase 'years':\n\t\t\treturn subYears( new Date(), value );\n\t\tdefault:\n\t\t\treturn new Date();\n\t}\n}\n\n// Shared operator definition for IS_NONE and IS_NOT_ALL (deprecated).\nconst isNoneOperatorDefinition = {\n\t/* translators: DataViews operator name */\n\tlabel: __( 'Is none of' ),\n\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\tcreateInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\tfilter.name,\n\t\t\t\tactiveElements.map( ( element ) => element.label ).join( ', ' )\n\t\t\t),\n\t\t\tfilterTextWrappers\n\t\t),\n\tfilter: ( ( item, field, filterValue ) => {\n\t\tif ( ! filterValue?.length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst fieldValue = field.getValue( { item } );\n\n\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\treturn ! filterValue.some( ( fv: any ) =>\n\t\t\t\tfieldValue.includes( fv )\n\t\t\t);\n\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\treturn ! filterValue.includes( fieldValue );\n\t\t}\n\n\t\treturn false;\n\t} ) as FilterOperator< any >,\n\tselection: 'multi' as const,\n};\n\nconst OPERATORS: {\n\tname: Operator;\n\tlabel: string;\n\tfilterText: (\n\t\tfilter: NormalizedFilter,\n\t\tactiveElements: Option[]\n\t) => ReactElement;\n\tfilter?: FilterOperator< any >;\n\tselection: 'single' | 'multi' | 'custom';\n}[] = [\n\t{\n\t\tname: OPERATOR_IS_ANY,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is any: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( ! filterValue?.length ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\treturn filterValue.some( ( fv: any ) =>\n\t\t\t\t\tfieldValue.includes( fv )\n\t\t\t\t);\n\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\treturn filterValue.includes( fieldValue );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NONE,\n\t\t...isNoneOperatorDefinition,\n\t},\n\t{\n\t\tname: OPERATOR_IS_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes all' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author includes all: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes all: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( ! filterValue?.length ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn filterValue.every( ( value: any ) => {\n\t\t\t\treturn field.getValue( { item } )?.includes( value );\n\t\t\t} );\n\t\t},\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT_ALL,\n\t\t...isNoneOperatorDefinition,\n\t},\n\t{\n\t\tname: OPERATOR_BETWEEN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Between (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Item count\"). 2: Filter value min. 3: Filter value max. e.g.: \"Item count between (inc): 10 and 180\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s between (inc): </Name><Value>%2$s and %3$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label[ 0 ],\n\t\t\t\t\tactiveElements[ 0 ].label[ 1 ]\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif (\n\t\t\t\t! Array.isArray( filterValue ) ||\n\t\t\t\tfilterValue.length !== 2 ||\n\t\t\t\tfilterValue[ 0 ] === undefined ||\n\t\t\t\tfilterValue[ 1 ] === undefined\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\tif (\n\t\t\t\ttypeof fieldValue === 'number' ||\n\t\t\t\tfieldValue instanceof Date ||\n\t\t\t\ttypeof fieldValue === 'string'\n\t\t\t) {\n\t\t\t\treturn (\n\t\t\t\t\tfieldValue >= filterValue[ 0 ] &&\n\t\t\t\t\tfieldValue <= filterValue[ 1 ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IN_THE_PAST,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'In the past' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is in the past: 7 days\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is in the past: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif (\n\t\t\t\tfilterValue?.value === undefined ||\n\t\t\t\tfilterValue?.unit === undefined\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst targetDate = getRelativeDate(\n\t\t\t\tfilterValue.value,\n\t\t\t\tfilterValue.unit\n\t\t\t);\n\t\t\tconst fieldValue = getDate( field.getValue( { item } ) );\n\n\t\t\treturn fieldValue >= targetDate && fieldValue <= new Date();\n\t\t},\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_OVER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Over' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is over: 7 days\". */\n\t\t\t\t\t__( '<Name>%1$s is over: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif (\n\t\t\t\tfilterValue?.value === undefined ||\n\t\t\t\tfilterValue?.unit === undefined\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst targetDate = getRelativeDate(\n\t\t\t\tfilterValue.value,\n\t\t\t\tfilterValue.unit\n\t\t\t);\n\t\t\tconst fieldValue = getDate( field.getValue( { item } ) );\n\n\t\t\treturn fieldValue < targetDate;\n\t\t},\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\treturn (\n\t\t\t\tfilterValue === field.getValue( { item } ) ||\n\t\t\t\tfilterValue === undefined\n\t\t\t);\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is not' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is not: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\treturn filterValue !== field.getValue( { item } );\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than: 10\". */\n\t\t\t\t\t__( '<Name>%1$s is less than: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn fieldValue < filterValue;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn fieldValue > filterValue;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is less than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn fieldValue <= filterValue;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn fieldValue >= filterValue;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is before: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is before: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst filterDate = getDate( filterValue );\n\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\n\t\t\treturn fieldDate < filterDate;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is after: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is after: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst filterDate = getDate( filterValue );\n\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\n\t\t\treturn fieldDate > filterDate;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or before: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or before: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst filterDate = getDate( filterValue );\n\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\n\t\t\treturn fieldDate <= filterDate;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or after: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or after: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst filterDate = getDate( filterValue );\n\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\n\t\t\treturn fieldDate >= filterDate;\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Contains' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title contains: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s contains: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn (\n\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\tfilterValue &&\n\t\t\t\tfieldValue\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.includes( String( filterValue ).toLowerCase() )\n\t\t\t);\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( \"Doesn't contain\" ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title doesn't contain: Hello\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t\"<Name>%1$s doesn't contain: </Name><Value>%2$s</Value>\"\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn (\n\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\tfilterValue &&\n\t\t\t\t! fieldValue\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.includes( String( filterValue ).toLowerCase() )\n\t\t\t);\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_STARTS_WITH,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Starts with' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title starts with: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s starts with: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst fieldValue = field.getValue( { item } );\n\n\t\t\treturn (\n\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\tfilterValue &&\n\t\t\t\tfieldValue\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.startsWith( String( filterValue ).toLowerCase() )\n\t\t\t);\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'On' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst filterDate = getDate( filterValue );\n\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\n\t\t\treturn filterDate.getTime() === fieldDate.getTime();\n\t\t},\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Not on' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is not: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tfilter( item, field, filterValue ) {\n\t\t\tif ( filterValue === undefined ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst filterDate = getDate( filterValue );\n\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\n\t\t\treturn filterDate.getTime() !== fieldDate.getTime();\n\t\t},\n\t\tselection: 'single',\n\t},\n];\n\nconst getOperatorByName = ( name: string | undefined ) =>\n\tOPERATORS.find( ( op ) => op.name === name );\n\nconst getAllOperatorNames = () => OPERATORS.map( ( op ) => op.name );\n\nconst isSingleSelectionOperator = ( name: string ) =>\n\tOPERATORS.filter( ( op ) => op.selection === 'single' ).some(\n\t\t( op ) => op.name === name\n\t);\n\nconst isRegisteredOperator = ( name: string ) =>\n\tOPERATORS.some( ( op ) => op.name === name );\n\nexport {\n\tgetOperatorByName,\n\tgetAllOperatorNames,\n\tisSingleSelectionOperator,\n\tisRegisteredOperator,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,49 @@
1
+ // packages/dataviews/src/components/dataform-controls/combobox.tsx
2
+ import { privateApis, Spinner } from "@wordpress/components";
3
+ import { useCallback } from "@wordpress/element";
4
+ import useElements from "../../hooks/use-elements.mjs";
5
+ import { unlock } from "../../lock-unlock.mjs";
6
+ import getCustomValidity from "./utils/get-custom-validity.mjs";
7
+ import { jsx } from "react/jsx-runtime";
8
+ var { ValidatedComboboxControl } = unlock(privateApis);
9
+ function Combobox({
10
+ data,
11
+ field,
12
+ onChange,
13
+ hideLabelFromVision,
14
+ validity
15
+ }) {
16
+ const { label, description, placeholder, getValue, setValue, isValid } = field;
17
+ const value = getValue({ item: data }) ?? "";
18
+ const onChangeControl = useCallback(
19
+ (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })),
20
+ [data, onChange, setValue]
21
+ );
22
+ const { elements, isLoading } = useElements({
23
+ elements: field.elements,
24
+ getElements: field.getElements
25
+ });
26
+ if (isLoading) {
27
+ return /* @__PURE__ */ jsx(Spinner, {});
28
+ }
29
+ return /* @__PURE__ */ jsx(
30
+ ValidatedComboboxControl,
31
+ {
32
+ required: !!field.isValid?.required,
33
+ customValidity: getCustomValidity(isValid, validity),
34
+ label,
35
+ value,
36
+ help: description,
37
+ placeholder,
38
+ options: elements,
39
+ onChange: onChangeControl,
40
+ hideLabelFromVision,
41
+ allowReset: true,
42
+ expandOnFocus: true
43
+ }
44
+ );
45
+ }
46
+ export {
47
+ Combobox as default
48
+ };
49
+ //# sourceMappingURL=combobox.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/dataform-controls/combobox.tsx"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport useElements from '../../hooks/use-elements';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedComboboxControl } = unlock( privateApis );\n\nexport default function Combobox< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, placeholder, getValue, setValue, isValid } =\n\t\tfield;\n\tconst value = getValue( { item: data } ) ?? '';\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | null ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue ?? '' } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedComboboxControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tvalue={ value }\n\t\t\thelp={ description }\n\t\t\tplaceholder={ placeholder }\n\t\t\toptions={ elements }\n\t\t\tonChange={ onChangeControl }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tallowReset\n\t\t\texpandOnFocus\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,aAAa,eAAe;AACrC,SAAS,mBAAmB;AAM5B,OAAO,iBAAiB;AACxB,SAAS,cAAc;AACvB,OAAO,uBAAuB;AA2BrB;AAzBT,IAAM,EAAE,yBAAyB,IAAI,OAAQ,WAAY;AAE1C,SAAR,SAAmC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAkC;AACjC,QAAM,EAAE,OAAO,aAAa,aAAa,UAAU,UAAU,QAAQ,IACpE;AACD,QAAM,QAAQ,SAAU,EAAE,MAAM,KAAK,CAAE,KAAK;AAE5C,QAAM,kBAAkB;AAAA,IACvB,CAAE,aACD,SAAU,SAAU,EAAE,MAAM,MAAM,OAAO,YAAY,GAAG,CAAE,CAAE;AAAA,IAC7D,CAAE,MAAM,UAAU,QAAS;AAAA,EAC5B;AAEA,QAAM,EAAE,UAAU,UAAU,IAAI,YAAa;AAAA,IAC5C,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM;AAAA,EACpB,CAAE;AAEF,MAAK,WAAY;AAChB,WAAO,oBAAC,WAAQ;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,UAAW,CAAC,CAAE,MAAM,SAAS;AAAA,MAC7B,gBAAiB,kBAAmB,SAAS,QAAS;AAAA,MACtD;AAAA,MACA;AAAA,MACA,MAAO;AAAA,MACP;AAAA,MACA,SAAU;AAAA,MACV,UAAW;AAAA,MACX;AAAA,MACA,YAAU;AAAA,MACV,eAAa;AAAA;AAAA,EACd;AAEF;",
6
+ "names": []
7
+ }
@@ -148,17 +148,42 @@ function ValidatedDateControl({
148
148
  setCustomValidity(void 0);
149
149
  }, [inputRefs]);
150
150
  useEffect(() => {
151
- if (isTouched) {
152
- const timeoutId = setTimeout(() => {
153
- if (validity) {
154
- setCustomValidity(getCustomValidity(isValid, validity));
155
- } else {
156
- validateRefs();
157
- }
158
- }, 0);
159
- return () => clearTimeout(timeoutId);
151
+ const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
152
+ const result = validity ? getCustomValidity(isValid, validity) : void 0;
153
+ for (const ref of refs) {
154
+ const input = ref.current;
155
+ if (input) {
156
+ input.setCustomValidity(
157
+ result?.type === "invalid" && result.message ? result.message : ""
158
+ );
159
+ }
160
+ }
161
+ }, [inputRefs, isValid, validity]);
162
+ useEffect(() => {
163
+ const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
164
+ const handleInvalid = (event) => {
165
+ event.preventDefault();
166
+ setIsTouched(true);
167
+ };
168
+ for (const ref of refs) {
169
+ ref.current?.addEventListener("invalid", handleInvalid);
170
+ }
171
+ return () => {
172
+ for (const ref of refs) {
173
+ ref.current?.removeEventListener("invalid", handleInvalid);
174
+ }
175
+ };
176
+ }, [inputRefs, setIsTouched]);
177
+ useEffect(() => {
178
+ if (!isTouched) {
179
+ return;
180
+ }
181
+ const result = validity ? getCustomValidity(isValid, validity) : void 0;
182
+ if (result) {
183
+ setCustomValidity(result);
184
+ } else {
185
+ validateRefs();
160
186
  }
161
- return void 0;
162
187
  }, [isTouched, isValid, validity, validateRefs]);
163
188
  const onBlur = (event) => {
164
189
  if (isTouched) {