@wordpress/dataviews 4.1.0 → 4.2.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 (170) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +31 -23
  3. package/build/components/dataviews/index.js +9 -11
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-filters/index.js +3 -0
  6. package/build/components/dataviews-filters/index.js.map +1 -1
  7. package/build/components/dataviews-filters/search-widget.js +2 -5
  8. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  9. package/build/components/dataviews-pagination/index.js +23 -15
  10. package/build/components/dataviews-pagination/index.js.map +1 -1
  11. package/build/components/dataviews-view-config/index.js +26 -9
  12. package/build/components/dataviews-view-config/index.js.map +1 -1
  13. package/build/dataform-controls/datetime.js +49 -0
  14. package/build/dataform-controls/datetime.js.map +1 -0
  15. package/build/dataform-controls/index.js +50 -0
  16. package/build/dataform-controls/index.js.map +1 -0
  17. package/build/dataform-controls/integer.js +45 -0
  18. package/build/dataform-controls/integer.js.map +1 -0
  19. package/build/dataform-controls/radio.js +45 -0
  20. package/build/dataform-controls/radio.js.map +1 -0
  21. package/build/dataform-controls/select.js +58 -0
  22. package/build/dataform-controls/select.js.map +1 -0
  23. package/build/dataform-controls/text.js +45 -0
  24. package/build/dataform-controls/text.js.map +1 -0
  25. package/build/dataforms-layouts/panel/index.js +6 -3
  26. package/build/dataforms-layouts/panel/index.js.map +1 -1
  27. package/build/dataforms-layouts/regular/index.js +6 -3
  28. package/build/dataforms-layouts/regular/index.js.map +1 -1
  29. package/build/dataviews-layouts/grid/density-picker.js +23 -52
  30. package/build/dataviews-layouts/grid/density-picker.js.map +1 -1
  31. package/build/dataviews-layouts/grid/index.js +1 -1
  32. package/build/dataviews-layouts/grid/index.js.map +1 -1
  33. package/build/dataviews-layouts/list/index.js +6 -2
  34. package/build/dataviews-layouts/list/index.js.map +1 -1
  35. package/build/dataviews-layouts/table/column-header-menu.js +2 -5
  36. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  37. package/build/field-types/datetime.js +30 -0
  38. package/build/field-types/datetime.js.map +1 -0
  39. package/build/field-types/index.js +4 -0
  40. package/build/field-types/index.js.map +1 -1
  41. package/build/field-types/integer.js +1 -60
  42. package/build/field-types/integer.js.map +1 -1
  43. package/build/field-types/text.js +1 -60
  44. package/build/field-types/text.js.map +1 -1
  45. package/build/normalize-fields.js +6 -7
  46. package/build/normalize-fields.js.map +1 -1
  47. package/build/types.js.map +1 -1
  48. package/build-module/components/dataviews/index.js +9 -11
  49. package/build-module/components/dataviews/index.js.map +1 -1
  50. package/build-module/components/dataviews-filters/index.js +3 -0
  51. package/build-module/components/dataviews-filters/index.js.map +1 -1
  52. package/build-module/components/dataviews-filters/search-widget.js +2 -5
  53. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  54. package/build-module/components/dataviews-pagination/index.js +23 -15
  55. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  56. package/build-module/components/dataviews-view-config/index.js +27 -10
  57. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  58. package/build-module/dataform-controls/datetime.js +43 -0
  59. package/build-module/dataform-controls/datetime.js.map +1 -0
  60. package/build-module/dataform-controls/index.js +42 -0
  61. package/build-module/dataform-controls/index.js.map +1 -0
  62. package/build-module/dataform-controls/integer.js +38 -0
  63. package/build-module/dataform-controls/integer.js.map +1 -0
  64. package/build-module/dataform-controls/radio.js +38 -0
  65. package/build-module/dataform-controls/radio.js.map +1 -0
  66. package/build-module/dataform-controls/select.js +51 -0
  67. package/build-module/dataform-controls/select.js.map +1 -0
  68. package/build-module/dataform-controls/text.js +38 -0
  69. package/build-module/dataform-controls/text.js.map +1 -0
  70. package/build-module/dataforms-layouts/panel/index.js +6 -3
  71. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  72. package/build-module/dataforms-layouts/regular/index.js +6 -3
  73. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  74. package/build-module/dataviews-layouts/grid/density-picker.js +25 -56
  75. package/build-module/dataviews-layouts/grid/density-picker.js.map +1 -1
  76. package/build-module/dataviews-layouts/grid/index.js +1 -1
  77. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  78. package/build-module/dataviews-layouts/list/index.js +5 -2
  79. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  80. package/build-module/dataviews-layouts/table/column-header-menu.js +2 -5
  81. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  82. package/build-module/field-types/datetime.js +24 -0
  83. package/build-module/field-types/datetime.js.map +1 -0
  84. package/build-module/field-types/index.js +4 -0
  85. package/build-module/field-types/index.js.map +1 -1
  86. package/build-module/field-types/integer.js +2 -60
  87. package/build-module/field-types/integer.js.map +1 -1
  88. package/build-module/field-types/text.js +2 -60
  89. package/build-module/field-types/text.js.map +1 -1
  90. package/build-module/normalize-fields.js +7 -7
  91. package/build-module/normalize-fields.js.map +1 -1
  92. package/build-module/types.js.map +1 -1
  93. package/build-style/style-rtl.css +15 -18
  94. package/build-style/style.css +15 -18
  95. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  96. package/build-types/components/dataviews/index.d.ts.map +1 -1
  97. package/build-types/components/dataviews/stories/fixtures.d.ts +22 -3
  98. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  99. package/build-types/components/dataviews/stories/index.story.d.ts +9 -0
  100. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  101. package/build-types/components/dataviews-filters/index.d.ts +1 -1
  102. package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
  103. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
  104. package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
  105. package/build-types/components/dataviews-view-config/index.d.ts +4 -3
  106. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  107. package/build-types/dataform-controls/datetime.d.ts +6 -0
  108. package/build-types/dataform-controls/datetime.d.ts.map +1 -0
  109. package/build-types/dataform-controls/index.d.ts +11 -0
  110. package/build-types/dataform-controls/index.d.ts.map +1 -0
  111. package/build-types/dataform-controls/integer.d.ts +6 -0
  112. package/build-types/dataform-controls/integer.d.ts.map +1 -0
  113. package/build-types/dataform-controls/radio.d.ts +6 -0
  114. package/build-types/dataform-controls/radio.d.ts.map +1 -0
  115. package/build-types/dataform-controls/select.d.ts +6 -0
  116. package/build-types/dataform-controls/select.d.ts.map +1 -0
  117. package/build-types/dataform-controls/text.d.ts +6 -0
  118. package/build-types/dataform-controls/text.d.ts.map +1 -0
  119. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  120. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  121. package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +1 -1
  122. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  123. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  124. package/build-types/field-types/datetime.d.ts +13 -0
  125. package/build-types/field-types/datetime.d.ts.map +1 -0
  126. package/build-types/field-types/index.d.ts +1 -1
  127. package/build-types/field-types/index.d.ts.map +1 -1
  128. package/build-types/field-types/integer.d.ts +2 -3
  129. package/build-types/field-types/integer.d.ts.map +1 -1
  130. package/build-types/field-types/text.d.ts +2 -3
  131. package/build-types/field-types/text.d.ts.map +1 -1
  132. package/build-types/normalize-fields.d.ts.map +1 -1
  133. package/build-types/types.d.ts +41 -21
  134. package/build-types/types.d.ts.map +1 -1
  135. package/package.json +12 -12
  136. package/src/components/dataform/stories/index.story.tsx +43 -2
  137. package/src/components/dataviews/index.tsx +13 -13
  138. package/src/components/dataviews/stories/fixtures.js +29 -1
  139. package/src/components/dataviews/stories/index.story.js +7 -1
  140. package/src/components/dataviews/style.scss +0 -12
  141. package/src/components/dataviews-bulk-actions-toolbar/style.scss +1 -1
  142. package/src/components/dataviews-filters/index.tsx +3 -0
  143. package/src/components/dataviews-filters/search-widget.tsx +1 -8
  144. package/src/components/dataviews-filters/style.scss +1 -1
  145. package/src/components/dataviews-pagination/index.tsx +35 -16
  146. package/src/components/dataviews-pagination/style.scss +9 -4
  147. package/src/components/dataviews-view-config/index.tsx +45 -16
  148. package/src/dataform-controls/datetime.tsx +43 -0
  149. package/src/dataform-controls/index.tsx +61 -0
  150. package/src/dataform-controls/integer.tsx +38 -0
  151. package/src/dataform-controls/radio.tsx +42 -0
  152. package/src/dataform-controls/select.tsx +52 -0
  153. package/src/dataform-controls/style.scss +4 -0
  154. package/src/dataform-controls/text.tsx +40 -0
  155. package/src/dataforms-layouts/panel/index.tsx +6 -2
  156. package/src/dataforms-layouts/regular/index.tsx +6 -2
  157. package/src/dataviews-layouts/grid/density-picker.tsx +33 -67
  158. package/src/dataviews-layouts/grid/index.tsx +1 -1
  159. package/src/dataviews-layouts/grid/style.scss +0 -4
  160. package/src/dataviews-layouts/list/index.tsx +6 -2
  161. package/src/dataviews-layouts/table/column-header-menu.tsx +3 -5
  162. package/src/field-types/datetime.tsx +28 -0
  163. package/src/field-types/index.tsx +5 -0
  164. package/src/field-types/integer.tsx +2 -71
  165. package/src/field-types/text.tsx +2 -70
  166. package/src/normalize-fields.ts +8 -10
  167. package/src/style.scss +1 -0
  168. package/src/test/filter-and-sort-data-view.js +28 -0
  169. package/src/types.ts +54 -32
  170. package/tsconfig.tsbuildinfo +1 -1
package/src/types.ts CHANGED
@@ -1,12 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type {
5
- ReactElement,
6
- ComponentType,
7
- Dispatch,
8
- SetStateAction,
9
- } from 'react';
4
+ import type { ReactElement, ComponentType } from 'react';
10
5
 
11
6
  /**
12
7
  * Internal dependencies
@@ -47,14 +42,32 @@ export type Operator =
47
42
  | 'isAll'
48
43
  | 'isNotAll';
49
44
 
50
- export type ItemRecord = Record< string, unknown >;
51
-
52
- export type FieldType = 'text' | 'integer';
45
+ export type FieldType = 'text' | 'integer' | 'datetime';
53
46
 
54
47
  export type ValidationContext = {
55
48
  elements?: Option[];
56
49
  };
57
50
 
51
+ /**
52
+ * An abstract interface for Field based on the field type.
53
+ */
54
+ export type FieldTypeDefinition< Item > = {
55
+ /**
56
+ * Callback used to sort the field.
57
+ */
58
+ sort: ( a: Item, b: Item, direction: SortDirection ) => number;
59
+
60
+ /**
61
+ * Callback used to validate the field.
62
+ */
63
+ isValid: ( item: Item, context?: ValidationContext ) => boolean;
64
+
65
+ /**
66
+ * Callback used to render an edit control for the field or control name.
67
+ */
68
+ Edit: ComponentType< DataFormControlProps< Item > > | string;
69
+ };
70
+
58
71
  /**
59
72
  * A dataview field for a specific property of a data type.
60
73
  */
@@ -74,6 +87,12 @@ export type Field< Item > = {
74
87
  */
75
88
  label?: string;
76
89
 
90
+ /**
91
+ * The header of the field. Defaults to the label.
92
+ * It allows the usage of a React Element to render the field labels.
93
+ */
94
+ header?: string | ReactElement;
95
+
77
96
  /**
78
97
  * A description of the field.
79
98
  */
@@ -92,7 +111,7 @@ export type Field< Item > = {
92
111
  /**
93
112
  * Callback used to render an edit control for the field.
94
113
  */
95
- Edit?: ComponentType< DataFormControlProps< Item > >;
114
+ Edit?: ComponentType< DataFormControlProps< Item > > | string;
96
115
 
97
116
  /**
98
117
  * Callback used to sort the field.
@@ -128,24 +147,17 @@ export type Field< Item > = {
128
147
  * Filter config for the field.
129
148
  */
130
149
  filterBy?: FilterByConfig | undefined;
131
- } & ( Item extends ItemRecord
132
- ? {
133
- /**
134
- * Callback used to retrieve the value of the field from the item.
135
- * Defaults to `item[ field.id ]`.
136
- */
137
- getValue?: ( args: { item: Item } ) => any;
138
- }
139
- : {
140
- /**
141
- * Callback used to retrieve the value of the field from the item.
142
- * Defaults to `item[ field.id ]`.
143
- */
144
- getValue: ( args: { item: Item } ) => any;
145
- } );
150
+
151
+ /**
152
+ * Callback used to retrieve the value of the field from the item.
153
+ * Defaults to `item[ field.id ]`.
154
+ */
155
+ getValue?: ( args: { item: Item } ) => any;
156
+ };
146
157
 
147
158
  export type NormalizedField< Item > = Field< Item > & {
148
159
  label: string;
160
+ header: string | ReactElement;
149
161
  getValue: ( args: { item: Item } ) => any;
150
162
  render: ComponentType< { item: Item } >;
151
163
  Edit: ComponentType< DataFormControlProps< Item > >;
@@ -171,7 +183,7 @@ export type Form = {
171
183
  export type DataFormControlProps< Item > = {
172
184
  data: Item;
173
185
  field: NormalizedField< Item >;
174
- onChange: Dispatch< SetStateAction< Item > >;
186
+ onChange: ( value: Record< string, any > ) => void;
175
187
  hideLabelFromVision?: boolean;
176
188
  };
177
189
 
@@ -284,6 +296,8 @@ export interface CombinedField {
284
296
 
285
297
  label: string;
286
298
 
299
+ header?: string | ReactElement;
300
+
287
301
  /**
288
302
  * The fields to use as columns.
289
303
  */
@@ -421,6 +435,18 @@ interface ActionBase< Item > {
421
435
  * Whether the action can be used as a bulk action.
422
436
  */
423
437
  supportsBulk?: boolean;
438
+
439
+ /**
440
+ * The context in which the action is visible.
441
+ * This is only a "meta" information for now.
442
+ */
443
+ context?: 'list' | 'single';
444
+ }
445
+
446
+ export interface RenderModalProps< Item > {
447
+ items: Item[];
448
+ closeModal?: () => void;
449
+ onActionPerformed?: ( items: Item[] ) => void;
424
450
  }
425
451
 
426
452
  export interface ActionModal< Item > extends ActionBase< Item > {
@@ -431,11 +457,7 @@ export interface ActionModal< Item > extends ActionBase< Item > {
431
457
  items,
432
458
  closeModal,
433
459
  onActionPerformed,
434
- }: {
435
- items: Item[];
436
- closeModal?: () => void;
437
- onActionPerformed?: ( items: Item[] ) => void;
438
- } ) => ReactElement;
460
+ }: RenderModalProps< Item > ) => ReactElement;
439
461
 
440
462
  /**
441
463
  * Whether to hide the modal header.
@@ -504,5 +526,5 @@ export interface DataFormProps< Item > {
504
526
  data: Item;
505
527
  fields: Field< Item >[];
506
528
  form: Form;
507
- onChange: Dispatch< SetStateAction< Item > >;
529
+ onChange: ( value: Record< string, any > ) => void;
508
530
  }