@wordpress/dataviews 9.0.1-next.6870dfe5b.0 → 9.0.1-next.a730c9c8c.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 (255) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/README.md +107 -12
  3. package/build/components/dataviews-filters/input-widget.js +48 -4
  4. package/build/components/dataviews-filters/input-widget.js.map +1 -1
  5. package/build/components/dataviews-layout/index.js +3 -1
  6. package/build/components/dataviews-layout/index.js.map +1 -1
  7. package/build/dataform-controls/array.js +9 -7
  8. package/build/dataform-controls/array.js.map +1 -1
  9. package/build/dataform-controls/checkbox.js +31 -20
  10. package/build/dataform-controls/checkbox.js.map +1 -1
  11. package/build/dataform-controls/color.js +29 -24
  12. package/build/dataform-controls/color.js.map +1 -1
  13. package/build/dataform-controls/date.js +32 -24
  14. package/build/dataform-controls/date.js.map +1 -1
  15. package/build/dataform-controls/datetime.js +133 -19
  16. package/build/dataform-controls/datetime.js.map +1 -1
  17. package/build/dataform-controls/email.js +9 -3
  18. package/build/dataform-controls/email.js.map +1 -1
  19. package/build/dataform-controls/index.js +27 -0
  20. package/build/dataform-controls/index.js.map +1 -1
  21. package/build/dataform-controls/integer.js +47 -34
  22. package/build/dataform-controls/integer.js.map +1 -1
  23. package/build/dataform-controls/password.js +47 -0
  24. package/build/dataform-controls/password.js.map +1 -0
  25. package/build/dataform-controls/radio.js +42 -9
  26. package/build/dataform-controls/radio.js.map +1 -1
  27. package/build/dataform-controls/relative-date-control.js +6 -10
  28. package/build/dataform-controls/relative-date-control.js.map +1 -1
  29. package/build/dataform-controls/select.js +41 -10
  30. package/build/dataform-controls/select.js.map +1 -1
  31. package/build/dataform-controls/telephone.js +9 -3
  32. package/build/dataform-controls/telephone.js.map +1 -1
  33. package/build/dataform-controls/text.js +16 -4
  34. package/build/dataform-controls/text.js.map +1 -1
  35. package/build/dataform-controls/textarea.js +81 -0
  36. package/build/dataform-controls/textarea.js.map +1 -0
  37. package/build/dataform-controls/toggle-group.js +36 -6
  38. package/build/dataform-controls/toggle-group.js.map +1 -1
  39. package/build/dataform-controls/toggle.js +33 -22
  40. package/build/dataform-controls/toggle.js.map +1 -1
  41. package/build/dataform-controls/url.js +9 -3
  42. package/build/dataform-controls/url.js.map +1 -1
  43. package/build/dataform-controls/utils/{validated-text.js → validated-input.js} +36 -29
  44. package/build/dataform-controls/utils/validated-input.js.map +1 -0
  45. package/build/dataforms-layouts/panel/dropdown.js +10 -14
  46. package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
  47. package/build/dataforms-layouts/panel/index.js +24 -11
  48. package/build/dataforms-layouts/panel/index.js.map +1 -1
  49. package/build/dataforms-layouts/panel/modal.js +22 -27
  50. package/build/dataforms-layouts/panel/modal.js.map +1 -1
  51. package/build/dataforms-layouts/panel/summary-button.js +67 -0
  52. package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
  53. package/build/dataforms-layouts/regular/index.js +7 -9
  54. package/build/dataforms-layouts/regular/index.js.map +1 -1
  55. package/build/dataviews-layouts/grid/index.js +5 -15
  56. package/build/dataviews-layouts/grid/index.js.map +1 -1
  57. package/build/dataviews-layouts/list/index.js +47 -2
  58. package/build/dataviews-layouts/list/index.js.map +1 -1
  59. package/build/dataviews-layouts/picker-grid/index.js +5 -15
  60. package/build/dataviews-layouts/picker-grid/index.js.map +1 -1
  61. package/build/dataviews-layouts/table/index.js +5 -17
  62. package/build/dataviews-layouts/table/index.js.map +1 -1
  63. package/build/dataviews-layouts/utils/get-data-by-group.js +23 -0
  64. package/build/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
  65. package/build/field-types/index.js +4 -0
  66. package/build/field-types/index.js.map +1 -1
  67. package/build/field-types/password.js +51 -0
  68. package/build/field-types/password.js.map +1 -0
  69. package/build/normalize-fields.js +17 -0
  70. package/build/normalize-fields.js.map +1 -1
  71. package/build/types.js.map +1 -1
  72. package/build/validation.js +1 -1
  73. package/build/validation.js.map +1 -1
  74. package/build-module/components/dataviews-filters/input-widget.js +48 -4
  75. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  76. package/build-module/components/dataviews-layout/index.js +3 -1
  77. package/build-module/components/dataviews-layout/index.js.map +1 -1
  78. package/build-module/dataform-controls/array.js +9 -7
  79. package/build-module/dataform-controls/array.js.map +1 -1
  80. package/build-module/dataform-controls/checkbox.js +31 -21
  81. package/build-module/dataform-controls/checkbox.js.map +1 -1
  82. package/build-module/dataform-controls/color.js +28 -24
  83. package/build-module/dataform-controls/color.js.map +1 -1
  84. package/build-module/dataform-controls/date.js +32 -24
  85. package/build-module/dataform-controls/date.js.map +1 -1
  86. package/build-module/dataform-controls/datetime.js +135 -21
  87. package/build-module/dataform-controls/datetime.js.map +1 -1
  88. package/build-module/dataform-controls/email.js +8 -2
  89. package/build-module/dataform-controls/email.js.map +1 -1
  90. package/build-module/dataform-controls/index.js +27 -0
  91. package/build-module/dataform-controls/index.js.map +1 -1
  92. package/build-module/dataform-controls/integer.js +46 -34
  93. package/build-module/dataform-controls/integer.js.map +1 -1
  94. package/build-module/dataform-controls/password.js +38 -0
  95. package/build-module/dataform-controls/password.js.map +1 -0
  96. package/build-module/dataform-controls/radio.js +44 -11
  97. package/build-module/dataform-controls/radio.js.map +1 -1
  98. package/build-module/dataform-controls/relative-date-control.js +6 -10
  99. package/build-module/dataform-controls/relative-date-control.js.map +1 -1
  100. package/build-module/dataform-controls/select.js +43 -12
  101. package/build-module/dataform-controls/select.js.map +1 -1
  102. package/build-module/dataform-controls/telephone.js +8 -2
  103. package/build-module/dataform-controls/telephone.js.map +1 -1
  104. package/build-module/dataform-controls/text.js +15 -3
  105. package/build-module/dataform-controls/text.js.map +1 -1
  106. package/build-module/dataform-controls/textarea.js +74 -0
  107. package/build-module/dataform-controls/textarea.js.map +1 -0
  108. package/build-module/dataform-controls/toggle-group.js +38 -8
  109. package/build-module/dataform-controls/toggle-group.js.map +1 -1
  110. package/build-module/dataform-controls/toggle.js +33 -23
  111. package/build-module/dataform-controls/toggle.js.map +1 -1
  112. package/build-module/dataform-controls/url.js +8 -2
  113. package/build-module/dataform-controls/url.js.map +1 -1
  114. package/build-module/dataform-controls/utils/validated-input.js +76 -0
  115. package/build-module/dataform-controls/utils/validated-input.js.map +1 -0
  116. package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
  117. package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
  118. package/build-module/dataforms-layouts/panel/index.js +24 -11
  119. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  120. package/build-module/dataforms-layouts/panel/modal.js +22 -28
  121. package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
  122. package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
  123. package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
  124. package/build-module/dataforms-layouts/regular/index.js +8 -10
  125. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  126. package/build-module/dataviews-layouts/grid/index.js +6 -16
  127. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  128. package/build-module/dataviews-layouts/list/index.js +48 -3
  129. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  130. package/build-module/dataviews-layouts/picker-grid/index.js +6 -16
  131. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -1
  132. package/build-module/dataviews-layouts/table/index.js +5 -17
  133. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  134. package/build-module/dataviews-layouts/utils/get-data-by-group.js +17 -0
  135. package/build-module/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
  136. package/build-module/field-types/index.js +4 -0
  137. package/build-module/field-types/index.js.map +1 -1
  138. package/build-module/field-types/password.js +46 -0
  139. package/build-module/field-types/password.js.map +1 -0
  140. package/build-module/normalize-fields.js +15 -0
  141. package/build-module/normalize-fields.js.map +1 -1
  142. package/build-module/types.js.map +1 -1
  143. package/build-module/validation.js +1 -1
  144. package/build-module/validation.js.map +1 -1
  145. package/build-style/style-rtl.css +9 -6
  146. package/build-style/style.css +9 -6
  147. package/build-types/components/dataform/stories/index.story.d.ts +3 -14
  148. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  149. package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
  150. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  151. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  152. package/build-types/dataform-controls/array.d.ts.map +1 -1
  153. package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
  154. package/build-types/dataform-controls/color.d.ts.map +1 -1
  155. package/build-types/dataform-controls/date.d.ts.map +1 -1
  156. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  157. package/build-types/dataform-controls/email.d.ts.map +1 -1
  158. package/build-types/dataform-controls/index.d.ts +1 -1
  159. package/build-types/dataform-controls/index.d.ts.map +1 -1
  160. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  161. package/build-types/dataform-controls/password.d.ts +3 -0
  162. package/build-types/dataform-controls/password.d.ts.map +1 -0
  163. package/build-types/dataform-controls/radio.d.ts.map +1 -1
  164. package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
  165. package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
  166. package/build-types/dataform-controls/select.d.ts.map +1 -1
  167. package/build-types/dataform-controls/telephone.d.ts.map +1 -1
  168. package/build-types/dataform-controls/text.d.ts +1 -1
  169. package/build-types/dataform-controls/text.d.ts.map +1 -1
  170. package/build-types/dataform-controls/textarea.d.ts +6 -0
  171. package/build-types/dataform-controls/textarea.d.ts.map +1 -0
  172. package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
  173. package/build-types/dataform-controls/toggle.d.ts.map +1 -1
  174. package/build-types/dataform-controls/url.d.ts.map +1 -1
  175. package/build-types/dataform-controls/utils/validated-input.d.ts +20 -0
  176. package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -0
  177. package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
  178. package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
  179. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  180. package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
  181. package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
  182. package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
  183. package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
  184. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  185. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  186. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  187. package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
  188. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  189. package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts +6 -0
  190. package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts.map +1 -0
  191. package/build-types/field-types/index.d.ts.map +1 -1
  192. package/build-types/field-types/password.d.ts +17 -0
  193. package/build-types/field-types/password.d.ts.map +1 -0
  194. package/build-types/field-types/stories/index.story.d.ts +5 -1
  195. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  196. package/build-types/normalize-fields.d.ts +3 -0
  197. package/build-types/normalize-fields.d.ts.map +1 -1
  198. package/build-types/types.d.ts +67 -4
  199. package/build-types/types.d.ts.map +1 -1
  200. package/build-types/validation.d.ts.map +1 -1
  201. package/build-wp/index.js +1670 -1350
  202. package/package.json +16 -15
  203. package/src/components/dataform/stories/index.story.tsx +489 -17
  204. package/src/components/dataviews/stories/fixtures.tsx +99 -41
  205. package/src/components/dataviews/stories/index.story.tsx +2 -2
  206. package/src/components/dataviews-filters/input-widget.tsx +44 -5
  207. package/src/components/dataviews-layout/index.tsx +1 -1
  208. package/src/components/dataviews-picker/stories/index.story.tsx +1 -1
  209. package/src/dataform-controls/array.tsx +4 -6
  210. package/src/dataform-controls/checkbox.tsx +41 -24
  211. package/src/dataform-controls/color.tsx +33 -24
  212. package/src/dataform-controls/date.tsx +47 -21
  213. package/src/dataform-controls/datetime.tsx +171 -23
  214. package/src/dataform-controls/email.tsx +10 -2
  215. package/src/dataform-controls/index.tsx +30 -0
  216. package/src/dataform-controls/integer.tsx +82 -49
  217. package/src/dataform-controls/password.tsx +50 -0
  218. package/src/dataform-controls/radio.tsx +53 -11
  219. package/src/dataform-controls/relative-date-control.tsx +11 -10
  220. package/src/dataform-controls/select.tsx +53 -10
  221. package/src/dataform-controls/telephone.tsx +10 -2
  222. package/src/dataform-controls/text.tsx +19 -2
  223. package/src/dataform-controls/textarea.tsx +85 -0
  224. package/src/dataform-controls/toggle-group.tsx +50 -10
  225. package/src/dataform-controls/toggle.tsx +41 -24
  226. package/src/dataform-controls/url.tsx +10 -2
  227. package/src/dataform-controls/utils/validated-input.tsx +109 -0
  228. package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
  229. package/src/dataforms-layouts/panel/index.tsx +39 -16
  230. package/src/dataforms-layouts/panel/modal.tsx +24 -30
  231. package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
  232. package/src/dataforms-layouts/regular/index.tsx +9 -7
  233. package/src/dataforms-layouts/regular/style.scss +0 -6
  234. package/src/dataviews-layouts/grid/index.tsx +9 -14
  235. package/src/dataviews-layouts/grid/style.scss +1 -0
  236. package/src/dataviews-layouts/list/index.tsx +74 -2
  237. package/src/dataviews-layouts/list/style.scss +8 -0
  238. package/src/dataviews-layouts/picker-grid/index.tsx +9 -13
  239. package/src/dataviews-layouts/table/index.tsx +10 -14
  240. package/src/dataviews-layouts/utils/get-data-by-group.ts +18 -0
  241. package/src/field-types/index.tsx +5 -0
  242. package/src/field-types/password.tsx +46 -0
  243. package/src/field-types/stories/index.story.tsx +138 -1
  244. package/src/normalize-fields.ts +18 -0
  245. package/src/test/filter-and-sort-data-view.js +148 -138
  246. package/src/test/normalize-fields.ts +114 -0
  247. package/src/types.ts +74 -3
  248. package/src/validation.ts +2 -0
  249. package/tsconfig.tsbuildinfo +1 -1
  250. package/build/dataform-controls/utils/validated-text.js.map +0 -1
  251. package/build-module/dataform-controls/utils/validated-text.js +0 -70
  252. package/build-module/dataform-controls/utils/validated-text.js.map +0 -1
  253. package/build-types/dataform-controls/utils/validated-text.d.ts +0 -16
  254. package/build-types/dataform-controls/utils/validated-text.d.ts.map +0 -1
  255. package/src/dataform-controls/utils/validated-text.tsx +0 -96
package/src/types.ts CHANGED
@@ -18,6 +18,14 @@ import type { SetSelection } from './private-types';
18
18
  */
19
19
  import type { useFocusOnMount } from '@wordpress/compose';
20
20
 
21
+ /**
22
+ * Utility type that makes all properties of T optional recursively.
23
+ * Used by field setValue functions to allow partial item updates.
24
+ */
25
+ export type DeepPartial< T > = {
26
+ [ P in keyof T ]?: T[ P ] extends object ? DeepPartial< T[ P ] > : T[ P ];
27
+ };
28
+
21
29
  export type SortDirection = 'asc' | 'desc';
22
30
 
23
31
  /**
@@ -103,6 +111,7 @@ export type FieldType =
103
111
  | 'media'
104
112
  | 'boolean'
105
113
  | 'email'
114
+ | 'password'
106
115
  | 'telephone'
107
116
  | 'color'
108
117
  | 'url'
@@ -125,7 +134,11 @@ export type FieldTypeDefinition< Item > = {
125
134
  /**
126
135
  * Callback used to render an edit control for the field or control name.
127
136
  */
128
- Edit: ComponentType< DataFormControlProps< Item > > | string | null;
137
+ Edit:
138
+ | ComponentType< DataFormControlProps< Item > >
139
+ | string
140
+ | EditConfig
141
+ | null;
129
142
 
130
143
  /**
131
144
  * Callback used to render the field.
@@ -154,6 +167,48 @@ export type Rules< Item > = {
154
167
  custom?: ( item: Item, field: NormalizedField< Item > ) => null | string;
155
168
  };
156
169
 
170
+ /**
171
+ * Edit configuration for textarea controls.
172
+ */
173
+ export type EditConfigTextarea = {
174
+ control: 'textarea';
175
+ /**
176
+ * Number of rows for the textarea.
177
+ */
178
+ rows?: number;
179
+ };
180
+
181
+ /**
182
+ * Edit configuration for text controls.
183
+ */
184
+ export type EditConfigText = {
185
+ control: 'text';
186
+ /**
187
+ * Prefix component to display before the input.
188
+ */
189
+ prefix?: React.ComponentType;
190
+ /**
191
+ * Suffix component to display after the input.
192
+ */
193
+ suffix?: React.ComponentType;
194
+ };
195
+
196
+ /**
197
+ * Edit configuration for other control types (excluding 'text' and 'textarea').
198
+ */
199
+ export type EditConfigGeneric = {
200
+ control: Exclude< FieldType, 'text' | 'textarea' >;
201
+ };
202
+
203
+ /**
204
+ * Edit configuration object with type-safe control options.
205
+ * Each control type has its own specific configuration properties.
206
+ */
207
+ export type EditConfig =
208
+ | EditConfigTextarea
209
+ | EditConfigText
210
+ | EditConfigGeneric;
211
+
157
212
  /**
158
213
  * A dataview field for a specific property of a data type.
159
214
  */
@@ -197,7 +252,7 @@ export type Field< Item > = {
197
252
  /**
198
253
  * Callback used to render an edit control for the field.
199
254
  */
200
- Edit?: ComponentType< DataFormControlProps< Item > > | string;
255
+ Edit?: ComponentType< DataFormControlProps< Item > > | string | EditConfig;
201
256
 
202
257
  /**
203
258
  * Callback used to sort the field.
@@ -250,12 +305,19 @@ export type Field< Item > = {
250
305
  * Defaults to `item[ field.id ]`.
251
306
  */
252
307
  getValue?: ( args: { item: Item } ) => any;
308
+
309
+ /**
310
+ * Callback used to set the value of the field on the item.
311
+ * Used for editing operations to update field values.
312
+ */
313
+ setValue?: ( args: { item: Item; value: any } ) => DeepPartial< Item >;
253
314
  };
254
315
 
255
316
  export type NormalizedField< Item > = Omit< Field< Item >, 'Edit' > & {
256
317
  label: string;
257
318
  header: string | ReactElement;
258
319
  getValue: ( args: { item: Item } ) => any;
320
+ setValue: ( args: { item: Item; value: any } ) => DeepPartial< Item >;
259
321
  render: ComponentType< DataViewRenderFieldProps< Item > >;
260
322
  Edit: ComponentType< DataFormControlProps< Item > > | null;
261
323
  sort: ( a: Item, b: Item, direction: SortDirection ) => number;
@@ -276,7 +338,7 @@ export type Data< Item > = Item[];
276
338
  export type DataFormControlProps< Item > = {
277
339
  data: Item;
278
340
  field: NormalizedField< Item >;
279
- onChange: ( value: Record< string, any > ) => void;
341
+ onChange: ( value: DeepPartial< Item > ) => void;
280
342
  hideLabelFromVision?: boolean;
281
343
  /**
282
344
  * The currently selected filter operator for this field.
@@ -284,6 +346,14 @@ export type DataFormControlProps< Item > = {
284
346
  * Used by DataViews filters to determine which control to render based on the operator type.
285
347
  */
286
348
  operator?: Operator;
349
+ /**
350
+ * Configuration object for the control.
351
+ */
352
+ config?: {
353
+ prefix?: React.ComponentType;
354
+ suffix?: React.ComponentType;
355
+ rows?: number;
356
+ };
287
357
  };
288
358
 
289
359
  export type DataViewRenderFieldProps< Item > = {
@@ -792,6 +862,7 @@ export type CombinedFormField = {
792
862
  description?: string;
793
863
  layout?: Layout;
794
864
  children: Array< FormField | string >;
865
+ summary?: string | string[];
795
866
  };
796
867
 
797
868
  export type FormField = SimpleFormField | CombinedFormField;
package/src/validation.ts CHANGED
@@ -35,6 +35,8 @@ export function isItemValid< Item >(
35
35
  ( field.type === 'url' && isEmptyNullOrUndefined( value ) ) ||
36
36
  ( field.type === 'telephone' &&
37
37
  isEmptyNullOrUndefined( value ) ) ||
38
+ ( field.type === 'password' &&
39
+ isEmptyNullOrUndefined( value ) ) ||
38
40
  ( field.type === 'integer' &&
39
41
  isEmptyNullOrUndefined( value ) ) ||
40
42
  ( field.type === undefined && isEmptyNullOrUndefined( value ) )