@wordpress/dataviews 9.0.1-next.6f42e1382.0 → 9.1.1-next.f56bd8138.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 (201) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/README.md +107 -11
  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-view-config/index.js +22 -3
  6. package/build/components/dataviews-view-config/index.js.map +1 -1
  7. package/build/dataform-controls/array.js +117 -29
  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 +7 -1
  18. package/build/dataform-controls/email.js.map +1 -1
  19. package/build/dataform-controls/index.js +23 -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/radio.js +42 -9
  24. package/build/dataform-controls/radio.js.map +1 -1
  25. package/build/dataform-controls/relative-date-control.js +6 -10
  26. package/build/dataform-controls/relative-date-control.js.map +1 -1
  27. package/build/dataform-controls/select.js +41 -10
  28. package/build/dataform-controls/select.js.map +1 -1
  29. package/build/dataform-controls/telephone.js +7 -1
  30. package/build/dataform-controls/telephone.js.map +1 -1
  31. package/build/dataform-controls/text.js +14 -2
  32. package/build/dataform-controls/text.js.map +1 -1
  33. package/build/dataform-controls/textarea.js +33 -20
  34. package/build/dataform-controls/textarea.js.map +1 -1
  35. package/build/dataform-controls/toggle-group.js +36 -6
  36. package/build/dataform-controls/toggle-group.js.map +1 -1
  37. package/build/dataform-controls/toggle.js +33 -22
  38. package/build/dataform-controls/toggle.js.map +1 -1
  39. package/build/dataform-controls/url.js +7 -1
  40. package/build/dataform-controls/url.js.map +1 -1
  41. package/build/dataform-controls/utils/validated-input.js +34 -32
  42. package/build/dataform-controls/utils/validated-input.js.map +1 -1
  43. package/build/dataforms-layouts/panel/dropdown.js +10 -14
  44. package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
  45. package/build/dataforms-layouts/panel/index.js +24 -11
  46. package/build/dataforms-layouts/panel/index.js.map +1 -1
  47. package/build/dataforms-layouts/panel/modal.js +22 -27
  48. package/build/dataforms-layouts/panel/modal.js.map +1 -1
  49. package/build/dataforms-layouts/panel/summary-button.js +67 -0
  50. package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
  51. package/build/field-types/array.js +0 -6
  52. package/build/field-types/array.js.map +1 -1
  53. package/build/index.js +7 -0
  54. package/build/index.js.map +1 -1
  55. package/build/normalize-fields.js +17 -0
  56. package/build/normalize-fields.js.map +1 -1
  57. package/build/types.js.map +1 -1
  58. package/build/validation.js +18 -1
  59. package/build/validation.js.map +1 -1
  60. package/build-module/components/dataviews-filters/input-widget.js +48 -4
  61. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  62. package/build-module/components/dataviews-view-config/index.js +22 -3
  63. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  64. package/build-module/dataform-controls/array.js +120 -32
  65. package/build-module/dataform-controls/array.js.map +1 -1
  66. package/build-module/dataform-controls/checkbox.js +31 -21
  67. package/build-module/dataform-controls/checkbox.js.map +1 -1
  68. package/build-module/dataform-controls/color.js +28 -24
  69. package/build-module/dataform-controls/color.js.map +1 -1
  70. package/build-module/dataform-controls/date.js +32 -24
  71. package/build-module/dataform-controls/date.js.map +1 -1
  72. package/build-module/dataform-controls/datetime.js +135 -21
  73. package/build-module/dataform-controls/datetime.js.map +1 -1
  74. package/build-module/dataform-controls/email.js +7 -1
  75. package/build-module/dataform-controls/email.js.map +1 -1
  76. package/build-module/dataform-controls/index.js +23 -0
  77. package/build-module/dataform-controls/index.js.map +1 -1
  78. package/build-module/dataform-controls/integer.js +46 -34
  79. package/build-module/dataform-controls/integer.js.map +1 -1
  80. package/build-module/dataform-controls/radio.js +44 -11
  81. package/build-module/dataform-controls/radio.js.map +1 -1
  82. package/build-module/dataform-controls/relative-date-control.js +6 -10
  83. package/build-module/dataform-controls/relative-date-control.js.map +1 -1
  84. package/build-module/dataform-controls/select.js +43 -12
  85. package/build-module/dataform-controls/select.js.map +1 -1
  86. package/build-module/dataform-controls/telephone.js +7 -1
  87. package/build-module/dataform-controls/telephone.js.map +1 -1
  88. package/build-module/dataform-controls/text.js +14 -2
  89. package/build-module/dataform-controls/text.js.map +1 -1
  90. package/build-module/dataform-controls/textarea.js +32 -20
  91. package/build-module/dataform-controls/textarea.js.map +1 -1
  92. package/build-module/dataform-controls/toggle-group.js +38 -8
  93. package/build-module/dataform-controls/toggle-group.js.map +1 -1
  94. package/build-module/dataform-controls/toggle.js +33 -23
  95. package/build-module/dataform-controls/toggle.js.map +1 -1
  96. package/build-module/dataform-controls/url.js +7 -1
  97. package/build-module/dataform-controls/url.js.map +1 -1
  98. package/build-module/dataform-controls/utils/validated-input.js +34 -33
  99. package/build-module/dataform-controls/utils/validated-input.js.map +1 -1
  100. package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
  101. package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
  102. package/build-module/dataforms-layouts/panel/index.js +24 -11
  103. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  104. package/build-module/dataforms-layouts/panel/modal.js +22 -28
  105. package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
  106. package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
  107. package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
  108. package/build-module/field-types/array.js +0 -6
  109. package/build-module/field-types/array.js.map +1 -1
  110. package/build-module/index.js +1 -0
  111. package/build-module/index.js.map +1 -1
  112. package/build-module/normalize-fields.js +15 -0
  113. package/build-module/normalize-fields.js.map +1 -1
  114. package/build-module/types.js.map +1 -1
  115. package/build-module/validation.js +18 -1
  116. package/build-module/validation.js.map +1 -1
  117. package/build-types/components/dataform/stories/index.story.d.ts +3 -0
  118. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  119. package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
  120. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  121. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  122. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  123. package/build-types/dataform-controls/array.d.ts.map +1 -1
  124. package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
  125. package/build-types/dataform-controls/color.d.ts.map +1 -1
  126. package/build-types/dataform-controls/date.d.ts.map +1 -1
  127. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  128. package/build-types/dataform-controls/email.d.ts.map +1 -1
  129. package/build-types/dataform-controls/index.d.ts +1 -1
  130. package/build-types/dataform-controls/index.d.ts.map +1 -1
  131. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  132. package/build-types/dataform-controls/radio.d.ts.map +1 -1
  133. package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
  134. package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
  135. package/build-types/dataform-controls/select.d.ts.map +1 -1
  136. package/build-types/dataform-controls/telephone.d.ts.map +1 -1
  137. package/build-types/dataform-controls/text.d.ts +1 -1
  138. package/build-types/dataform-controls/text.d.ts.map +1 -1
  139. package/build-types/dataform-controls/textarea.d.ts +1 -1
  140. package/build-types/dataform-controls/textarea.d.ts.map +1 -1
  141. package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
  142. package/build-types/dataform-controls/toggle.d.ts.map +1 -1
  143. package/build-types/dataform-controls/url.d.ts.map +1 -1
  144. package/build-types/dataform-controls/utils/validated-input.d.ts +4 -4
  145. package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -1
  146. package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
  147. package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
  148. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  149. package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
  150. package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
  151. package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
  152. package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
  153. package/build-types/field-types/array.d.ts.map +1 -1
  154. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  155. package/build-types/index.d.ts +1 -0
  156. package/build-types/index.d.ts.map +1 -1
  157. package/build-types/normalize-fields.d.ts +3 -0
  158. package/build-types/normalize-fields.d.ts.map +1 -1
  159. package/build-types/types.d.ts +68 -4
  160. package/build-types/types.d.ts.map +1 -1
  161. package/build-types/validation.d.ts.map +1 -1
  162. package/build-wp/index.js +2009 -1489
  163. package/package.json +16 -15
  164. package/src/components/dataform/stories/index.story.tsx +509 -8
  165. package/src/components/dataviews/stories/fixtures.tsx +99 -41
  166. package/src/components/dataviews/stories/index.story.tsx +1 -1
  167. package/src/components/dataviews-filters/input-widget.tsx +44 -5
  168. package/src/components/dataviews-picker/stories/index.story.tsx +1 -1
  169. package/src/components/dataviews-view-config/index.tsx +18 -3
  170. package/src/dataform-controls/array.tsx +139 -44
  171. package/src/dataform-controls/checkbox.tsx +41 -24
  172. package/src/dataform-controls/color.tsx +33 -24
  173. package/src/dataform-controls/date.tsx +47 -21
  174. package/src/dataform-controls/datetime.tsx +171 -23
  175. package/src/dataform-controls/email.tsx +9 -1
  176. package/src/dataform-controls/index.tsx +26 -0
  177. package/src/dataform-controls/integer.tsx +82 -49
  178. package/src/dataform-controls/radio.tsx +53 -11
  179. package/src/dataform-controls/relative-date-control.tsx +11 -10
  180. package/src/dataform-controls/select.tsx +53 -10
  181. package/src/dataform-controls/telephone.tsx +9 -1
  182. package/src/dataform-controls/text.tsx +18 -1
  183. package/src/dataform-controls/textarea.tsx +38 -24
  184. package/src/dataform-controls/toggle-group.tsx +50 -10
  185. package/src/dataform-controls/toggle.tsx +41 -24
  186. package/src/dataform-controls/url.tsx +9 -1
  187. package/src/dataform-controls/utils/validated-input.tsx +50 -50
  188. package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
  189. package/src/dataforms-layouts/panel/index.tsx +39 -16
  190. package/src/dataforms-layouts/panel/modal.tsx +24 -30
  191. package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
  192. package/src/field-types/array.tsx +0 -8
  193. package/src/field-types/stories/index.story.tsx +89 -1
  194. package/src/index.ts +1 -0
  195. package/src/normalize-fields.ts +18 -0
  196. package/src/test/filter-and-sort-data-view.js +148 -138
  197. package/src/test/normalize-fields.ts +114 -0
  198. package/src/test/validation.ts +192 -0
  199. package/src/types.ts +75 -4
  200. package/src/validation.ts +30 -0
  201. package/tsconfig.tsbuildinfo +1 -1
@@ -5,7 +5,11 @@ import { useState, useMemo } from '@wordpress/element';
5
5
  import {
6
6
  __experimentalHStack as HStack,
7
7
  __experimentalVStack as VStack,
8
+ Icon,
9
+ __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
10
+ __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,
8
11
  } from '@wordpress/components';
12
+ import { starFilled } from '@wordpress/icons';
9
13
 
10
14
  /**
11
15
  * Internal dependencies
@@ -56,10 +60,32 @@ const meta = {
56
60
  };
57
61
  export default meta;
58
62
 
63
+ const DollarPrefix = () => (
64
+ <InputControlPrefixWrapper>
65
+ <span>$</span>
66
+ </InputControlPrefixWrapper>
67
+ );
68
+ const StarIconPrefix = () => (
69
+ <InputControlPrefixWrapper variant="icon">
70
+ <Icon icon={ starFilled } />
71
+ </InputControlPrefixWrapper>
72
+ );
73
+ const PercentSuffix = () => (
74
+ <InputControlSuffixWrapper>
75
+ <span>%</span>
76
+ </InputControlSuffixWrapper>
77
+ );
78
+ const USDSuffix = () => (
79
+ <InputControlSuffixWrapper>
80
+ <span>USD</span>
81
+ </InputControlSuffixWrapper>
82
+ );
83
+
59
84
  type DataType = {
60
85
  id: number;
61
86
  text: string;
62
87
  textWithElements: string;
88
+ textWithRadio: string;
63
89
  textWithTextarea: string;
64
90
  integer: number;
65
91
  integerWithElements: number;
@@ -86,13 +112,18 @@ type DataType = {
86
112
  arrayWithElements: string[];
87
113
  notype: string;
88
114
  notypeWithElements: string;
115
+ priceWithPrefix?: string;
116
+ ratingWithIcon?: string;
117
+ percentageWithSuffix?: string;
118
+ priceWithBoth?: string;
89
119
  };
90
120
 
91
121
  const data: DataType[] = [
92
122
  {
93
123
  id: 1,
94
124
  text: 'Text',
95
- textWithElements: 'Item 1',
125
+ textWithElements: 'item1',
126
+ textWithRadio: 'item2',
96
127
  textWithTextarea: 'Textarea',
97
128
  integer: 1,
98
129
  integerWithElements: 1,
@@ -120,6 +151,10 @@ const data: DataType[] = [
120
151
  arrayWithElements: [ 'item1', 'item2', 'item3' ],
121
152
  notype: 'No type',
122
153
  notypeWithElements: 'No type',
154
+ priceWithPrefix: '25.99',
155
+ ratingWithIcon: '4.5',
156
+ percentageWithSuffix: '85',
157
+ priceWithBoth: '199.99',
123
158
  },
124
159
  ];
125
160
 
@@ -141,6 +176,18 @@ const fields: Field< DataType >[] = [
141
176
  { value: 'item3', label: 'Item 3' },
142
177
  ],
143
178
  },
179
+ {
180
+ id: 'textWithRadio',
181
+ type: 'text',
182
+ label: 'Text (with radio)',
183
+ description: 'Help for text with radio.',
184
+ Edit: 'radio',
185
+ elements: [
186
+ { value: 'item1', label: 'Item 1' },
187
+ { value: 'item2', label: 'Item 2' },
188
+ { value: 'item3', label: 'Item 3' },
189
+ ],
190
+ },
144
191
  {
145
192
  id: 'textWithTextarea',
146
193
  type: 'text',
@@ -395,6 +442,47 @@ const fields: Field< DataType >[] = [
395
442
  { value: 'item3', label: 'Item 3' },
396
443
  ],
397
444
  },
445
+ {
446
+ id: 'priceWithPrefix',
447
+ label: 'Text with Prefix',
448
+ type: 'text',
449
+ description: 'Text field with dollar sign prefix.',
450
+ Edit: {
451
+ control: 'text',
452
+ prefix: DollarPrefix,
453
+ },
454
+ },
455
+ {
456
+ id: 'ratingWithIcon',
457
+ label: 'Text with Icon Prefix',
458
+ type: 'text',
459
+ description: 'Text field with star icon prefix.',
460
+ Edit: {
461
+ control: 'text',
462
+ prefix: StarIconPrefix,
463
+ },
464
+ },
465
+ {
466
+ id: 'percentageWithSuffix',
467
+ label: 'Text with Suffix',
468
+ type: 'text',
469
+ description: 'Text field with percent sign suffix.',
470
+ Edit: {
471
+ control: 'text',
472
+ suffix: PercentSuffix,
473
+ },
474
+ },
475
+ {
476
+ id: 'priceWithBoth',
477
+ label: 'Text with Prefix and Suffix',
478
+ type: 'text',
479
+ description: 'Text field with both dollar prefix and USD suffix.',
480
+ Edit: {
481
+ control: 'text',
482
+ prefix: DollarPrefix,
483
+ suffix: USDSuffix,
484
+ },
485
+ },
398
486
  ];
399
487
 
400
488
  type PanelTypes = 'regular' | 'panel';
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default as DataViews } from './components/dataviews';
2
+ export { default as DataViewsPicker } from './components/dataviews-picker';
2
3
  export { default as DataForm } from './components/dataform';
3
4
  export { VIEW_LAYOUTS } from './dataviews-layouts';
4
5
  export { filterSortAndPaginate } from './filter-and-sort-data-view';
@@ -37,6 +37,22 @@ const getValueFromId =
37
37
  return value;
38
38
  };
39
39
 
40
+ export const setValueFromId =
41
+ ( id: string ) =>
42
+ ( { value }: { value: any } ) => {
43
+ const path = id.split( '.' );
44
+ const result: any = {};
45
+ let current = result;
46
+
47
+ for ( const segment of path.slice( 0, -1 ) ) {
48
+ current[ segment ] = {};
49
+ current = current[ segment ];
50
+ }
51
+
52
+ current[ path.at( -1 )! ] = value;
53
+ return result;
54
+ };
55
+
40
56
  function getFilterBy< Item >(
41
57
  field: Field< Item >,
42
58
  fieldTypeDefinition: FieldTypeDefinition< Item >
@@ -128,6 +144,7 @@ export function normalizeFields< Item >(
128
144
  field.type
129
145
  );
130
146
  const getValue = field.getValue || getValueFromId( field.id );
147
+ const setValue = field.setValue || setValueFromId( field.id );
131
148
 
132
149
  const sort =
133
150
  field.sort ??
@@ -166,6 +183,7 @@ export function normalizeFields< Item >(
166
183
  label: field.label || field.id,
167
184
  header: field.header || field.label || field.id,
168
185
  getValue,
186
+ setValue,
169
187
  render,
170
188
  sort,
171
189
  isValid,