@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.
- package/CHANGELOG.md +17 -1
- package/README.md +107 -12
- package/build/components/dataviews-filters/input-widget.js +48 -4
- package/build/components/dataviews-filters/input-widget.js.map +1 -1
- package/build/components/dataviews-layout/index.js +3 -1
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/dataform-controls/array.js +9 -7
- package/build/dataform-controls/array.js.map +1 -1
- package/build/dataform-controls/checkbox.js +31 -20
- package/build/dataform-controls/checkbox.js.map +1 -1
- package/build/dataform-controls/color.js +29 -24
- package/build/dataform-controls/color.js.map +1 -1
- package/build/dataform-controls/date.js +32 -24
- package/build/dataform-controls/date.js.map +1 -1
- package/build/dataform-controls/datetime.js +133 -19
- package/build/dataform-controls/datetime.js.map +1 -1
- package/build/dataform-controls/email.js +9 -3
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-controls/index.js +27 -0
- package/build/dataform-controls/index.js.map +1 -1
- package/build/dataform-controls/integer.js +47 -34
- package/build/dataform-controls/integer.js.map +1 -1
- package/build/dataform-controls/password.js +47 -0
- package/build/dataform-controls/password.js.map +1 -0
- package/build/dataform-controls/radio.js +42 -9
- package/build/dataform-controls/radio.js.map +1 -1
- package/build/dataform-controls/relative-date-control.js +6 -10
- package/build/dataform-controls/relative-date-control.js.map +1 -1
- package/build/dataform-controls/select.js +41 -10
- package/build/dataform-controls/select.js.map +1 -1
- package/build/dataform-controls/telephone.js +9 -3
- package/build/dataform-controls/telephone.js.map +1 -1
- package/build/dataform-controls/text.js +16 -4
- package/build/dataform-controls/text.js.map +1 -1
- package/build/dataform-controls/textarea.js +81 -0
- package/build/dataform-controls/textarea.js.map +1 -0
- package/build/dataform-controls/toggle-group.js +36 -6
- package/build/dataform-controls/toggle-group.js.map +1 -1
- package/build/dataform-controls/toggle.js +33 -22
- package/build/dataform-controls/toggle.js.map +1 -1
- package/build/dataform-controls/url.js +9 -3
- package/build/dataform-controls/url.js.map +1 -1
- package/build/dataform-controls/utils/{validated-text.js → validated-input.js} +36 -29
- package/build/dataform-controls/utils/validated-input.js.map +1 -0
- package/build/dataforms-layouts/panel/dropdown.js +10 -14
- package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
- package/build/dataforms-layouts/panel/index.js +24 -11
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataforms-layouts/panel/modal.js +22 -27
- package/build/dataforms-layouts/panel/modal.js.map +1 -1
- package/build/dataforms-layouts/panel/summary-button.js +67 -0
- package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
- package/build/dataforms-layouts/regular/index.js +7 -9
- package/build/dataforms-layouts/regular/index.js.map +1 -1
- package/build/dataviews-layouts/grid/index.js +5 -15
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +47 -2
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/picker-grid/index.js +5 -15
- package/build/dataviews-layouts/picker-grid/index.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +5 -17
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/dataviews-layouts/utils/get-data-by-group.js +23 -0
- package/build/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
- package/build/field-types/index.js +4 -0
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/password.js +51 -0
- package/build/field-types/password.js.map +1 -0
- package/build/normalize-fields.js +17 -0
- package/build/normalize-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/validation.js +1 -1
- package/build/validation.js.map +1 -1
- package/build-module/components/dataviews-filters/input-widget.js +48 -4
- package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +3 -1
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/dataform-controls/array.js +9 -7
- package/build-module/dataform-controls/array.js.map +1 -1
- package/build-module/dataform-controls/checkbox.js +31 -21
- package/build-module/dataform-controls/checkbox.js.map +1 -1
- package/build-module/dataform-controls/color.js +28 -24
- package/build-module/dataform-controls/color.js.map +1 -1
- package/build-module/dataform-controls/date.js +32 -24
- package/build-module/dataform-controls/date.js.map +1 -1
- package/build-module/dataform-controls/datetime.js +135 -21
- package/build-module/dataform-controls/datetime.js.map +1 -1
- package/build-module/dataform-controls/email.js +8 -2
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-controls/index.js +27 -0
- package/build-module/dataform-controls/index.js.map +1 -1
- package/build-module/dataform-controls/integer.js +46 -34
- package/build-module/dataform-controls/integer.js.map +1 -1
- package/build-module/dataform-controls/password.js +38 -0
- package/build-module/dataform-controls/password.js.map +1 -0
- package/build-module/dataform-controls/radio.js +44 -11
- package/build-module/dataform-controls/radio.js.map +1 -1
- package/build-module/dataform-controls/relative-date-control.js +6 -10
- package/build-module/dataform-controls/relative-date-control.js.map +1 -1
- package/build-module/dataform-controls/select.js +43 -12
- package/build-module/dataform-controls/select.js.map +1 -1
- package/build-module/dataform-controls/telephone.js +8 -2
- package/build-module/dataform-controls/telephone.js.map +1 -1
- package/build-module/dataform-controls/text.js +15 -3
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/textarea.js +74 -0
- package/build-module/dataform-controls/textarea.js.map +1 -0
- package/build-module/dataform-controls/toggle-group.js +38 -8
- package/build-module/dataform-controls/toggle-group.js.map +1 -1
- package/build-module/dataform-controls/toggle.js +33 -23
- package/build-module/dataform-controls/toggle.js.map +1 -1
- package/build-module/dataform-controls/url.js +8 -2
- package/build-module/dataform-controls/url.js.map +1 -1
- package/build-module/dataform-controls/utils/validated-input.js +76 -0
- package/build-module/dataform-controls/utils/validated-input.js.map +1 -0
- package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
- package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
- package/build-module/dataforms-layouts/panel/index.js +24 -11
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataforms-layouts/panel/modal.js +22 -28
- package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
- package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
- package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
- package/build-module/dataforms-layouts/regular/index.js +8 -10
- package/build-module/dataforms-layouts/regular/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/index.js +6 -16
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +48 -3
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/picker-grid/index.js +6 -16
- package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +5 -17
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/dataviews-layouts/utils/get-data-by-group.js +17 -0
- package/build-module/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
- package/build-module/field-types/index.js +4 -0
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/password.js +46 -0
- package/build-module/field-types/password.js.map +1 -0
- package/build-module/normalize-fields.js +15 -0
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/validation.js +1 -1
- package/build-module/validation.js.map +1 -1
- package/build-style/style-rtl.css +9 -6
- package/build-style/style.css +9 -6
- package/build-types/components/dataform/stories/index.story.d.ts +3 -14
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
- package/build-types/dataform-controls/array.d.ts.map +1 -1
- package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
- package/build-types/dataform-controls/color.d.ts.map +1 -1
- package/build-types/dataform-controls/date.d.ts.map +1 -1
- package/build-types/dataform-controls/datetime.d.ts.map +1 -1
- package/build-types/dataform-controls/email.d.ts.map +1 -1
- package/build-types/dataform-controls/index.d.ts +1 -1
- package/build-types/dataform-controls/index.d.ts.map +1 -1
- package/build-types/dataform-controls/integer.d.ts.map +1 -1
- package/build-types/dataform-controls/password.d.ts +3 -0
- package/build-types/dataform-controls/password.d.ts.map +1 -0
- package/build-types/dataform-controls/radio.d.ts.map +1 -1
- package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
- package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
- package/build-types/dataform-controls/select.d.ts.map +1 -1
- package/build-types/dataform-controls/telephone.d.ts.map +1 -1
- package/build-types/dataform-controls/text.d.ts +1 -1
- package/build-types/dataform-controls/text.d.ts.map +1 -1
- package/build-types/dataform-controls/textarea.d.ts +6 -0
- package/build-types/dataform-controls/textarea.d.ts.map +1 -0
- package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
- package/build-types/dataform-controls/toggle.d.ts.map +1 -1
- package/build-types/dataform-controls/url.d.ts.map +1 -1
- package/build-types/dataform-controls/utils/validated-input.d.ts +20 -0
- package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -0
- package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
- package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
- package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
- package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts +6 -0
- package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/password.d.ts +17 -0
- package/build-types/field-types/password.d.ts.map +1 -0
- package/build-types/field-types/stories/index.story.d.ts +5 -1
- package/build-types/field-types/stories/index.story.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts +3 -0
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/types.d.ts +67 -4
- package/build-types/types.d.ts.map +1 -1
- package/build-types/validation.d.ts.map +1 -1
- package/build-wp/index.js +1670 -1350
- package/package.json +16 -15
- package/src/components/dataform/stories/index.story.tsx +489 -17
- package/src/components/dataviews/stories/fixtures.tsx +99 -41
- package/src/components/dataviews/stories/index.story.tsx +2 -2
- package/src/components/dataviews-filters/input-widget.tsx +44 -5
- package/src/components/dataviews-layout/index.tsx +1 -1
- package/src/components/dataviews-picker/stories/index.story.tsx +1 -1
- package/src/dataform-controls/array.tsx +4 -6
- package/src/dataform-controls/checkbox.tsx +41 -24
- package/src/dataform-controls/color.tsx +33 -24
- package/src/dataform-controls/date.tsx +47 -21
- package/src/dataform-controls/datetime.tsx +171 -23
- package/src/dataform-controls/email.tsx +10 -2
- package/src/dataform-controls/index.tsx +30 -0
- package/src/dataform-controls/integer.tsx +82 -49
- package/src/dataform-controls/password.tsx +50 -0
- package/src/dataform-controls/radio.tsx +53 -11
- package/src/dataform-controls/relative-date-control.tsx +11 -10
- package/src/dataform-controls/select.tsx +53 -10
- package/src/dataform-controls/telephone.tsx +10 -2
- package/src/dataform-controls/text.tsx +19 -2
- package/src/dataform-controls/textarea.tsx +85 -0
- package/src/dataform-controls/toggle-group.tsx +50 -10
- package/src/dataform-controls/toggle.tsx +41 -24
- package/src/dataform-controls/url.tsx +10 -2
- package/src/dataform-controls/utils/validated-input.tsx +109 -0
- package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
- package/src/dataforms-layouts/panel/index.tsx +39 -16
- package/src/dataforms-layouts/panel/modal.tsx +24 -30
- package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
- package/src/dataforms-layouts/regular/index.tsx +9 -7
- package/src/dataforms-layouts/regular/style.scss +0 -6
- package/src/dataviews-layouts/grid/index.tsx +9 -14
- package/src/dataviews-layouts/grid/style.scss +1 -0
- package/src/dataviews-layouts/list/index.tsx +74 -2
- package/src/dataviews-layouts/list/style.scss +8 -0
- package/src/dataviews-layouts/picker-grid/index.tsx +9 -13
- package/src/dataviews-layouts/table/index.tsx +10 -14
- package/src/dataviews-layouts/utils/get-data-by-group.ts +18 -0
- package/src/field-types/index.tsx +5 -0
- package/src/field-types/password.tsx +46 -0
- package/src/field-types/stories/index.story.tsx +138 -1
- package/src/normalize-fields.ts +18 -0
- package/src/test/filter-and-sort-data-view.js +148 -138
- package/src/test/normalize-fields.ts +114 -0
- package/src/types.ts +74 -3
- package/src/validation.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/dataform-controls/utils/validated-text.js.map +0 -1
- package/build-module/dataform-controls/utils/validated-text.js +0 -70
- package/build-module/dataform-controls/utils/validated-text.js.map +0 -1
- package/build-types/dataform-controls/utils/validated-text.d.ts +0 -16
- package/build-types/dataform-controls/utils/validated-text.d.ts.map +0 -1
- 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:
|
|
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:
|
|
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 ) )
|