@wordpress/dataviews 9.0.1-next.6f42e1382.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 +7 -1
- package/README.md +106 -11
- package/build/components/dataviews-filters/input-widget.js +48 -4
- package/build/components/dataviews-filters/input-widget.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 +7 -1
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-controls/index.js +23 -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/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 +7 -1
- package/build/dataform-controls/telephone.js.map +1 -1
- package/build/dataform-controls/text.js +14 -2
- package/build/dataform-controls/text.js.map +1 -1
- package/build/dataform-controls/textarea.js +33 -20
- package/build/dataform-controls/textarea.js.map +1 -1
- 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 +7 -1
- package/build/dataform-controls/url.js.map +1 -1
- package/build/dataform-controls/utils/validated-input.js +34 -32
- package/build/dataform-controls/utils/validated-input.js.map +1 -1
- 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/normalize-fields.js +17 -0
- package/build/normalize-fields.js.map +1 -1
- package/build/types.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/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 +7 -1
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-controls/index.js +23 -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/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 +7 -1
- package/build-module/dataform-controls/telephone.js.map +1 -1
- package/build-module/dataform-controls/text.js +14 -2
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/textarea.js +32 -20
- package/build-module/dataform-controls/textarea.js.map +1 -1
- 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 +7 -1
- package/build-module/dataform-controls/url.js.map +1 -1
- package/build-module/dataform-controls/utils/validated-input.js +34 -33
- package/build-module/dataform-controls/utils/validated-input.js.map +1 -1
- 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/normalize-fields.js +15 -0
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-types/components/dataform/stories/index.story.d.ts +3 -0
- 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/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 +1 -1
- package/build-types/dataform-controls/textarea.d.ts.map +1 -1
- 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 +4 -4
- package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -1
- 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/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 +66 -3
- package/build-types/types.d.ts.map +1 -1
- package/build-wp/index.js +1468 -1422
- package/package.json +16 -15
- package/src/components/dataform/stories/index.story.tsx +436 -7
- package/src/components/dataviews/stories/fixtures.tsx +99 -41
- package/src/components/dataviews/stories/index.story.tsx +1 -1
- package/src/components/dataviews-filters/input-widget.tsx +44 -5
- 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 +9 -1
- package/src/dataform-controls/index.tsx +26 -0
- package/src/dataform-controls/integer.tsx +82 -49
- 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 +9 -1
- package/src/dataform-controls/text.tsx +18 -1
- package/src/dataform-controls/textarea.tsx +38 -24
- package/src/dataform-controls/toggle-group.tsx +50 -10
- package/src/dataform-controls/toggle.tsx +41 -24
- package/src/dataform-controls/url.tsx +9 -1
- package/src/dataform-controls/utils/validated-input.tsx +50 -50
- 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/field-types/stories/index.story.tsx +89 -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 +73 -3
- package/tsconfig.tsbuildinfo +1 -1
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
|
/**
|
|
@@ -126,7 +134,11 @@ export type FieldTypeDefinition< Item > = {
|
|
|
126
134
|
/**
|
|
127
135
|
* Callback used to render an edit control for the field or control name.
|
|
128
136
|
*/
|
|
129
|
-
Edit:
|
|
137
|
+
Edit:
|
|
138
|
+
| ComponentType< DataFormControlProps< Item > >
|
|
139
|
+
| string
|
|
140
|
+
| EditConfig
|
|
141
|
+
| null;
|
|
130
142
|
|
|
131
143
|
/**
|
|
132
144
|
* Callback used to render the field.
|
|
@@ -155,6 +167,48 @@ export type Rules< Item > = {
|
|
|
155
167
|
custom?: ( item: Item, field: NormalizedField< Item > ) => null | string;
|
|
156
168
|
};
|
|
157
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
|
+
|
|
158
212
|
/**
|
|
159
213
|
* A dataview field for a specific property of a data type.
|
|
160
214
|
*/
|
|
@@ -198,7 +252,7 @@ export type Field< Item > = {
|
|
|
198
252
|
/**
|
|
199
253
|
* Callback used to render an edit control for the field.
|
|
200
254
|
*/
|
|
201
|
-
Edit?: ComponentType< DataFormControlProps< Item > > | string;
|
|
255
|
+
Edit?: ComponentType< DataFormControlProps< Item > > | string | EditConfig;
|
|
202
256
|
|
|
203
257
|
/**
|
|
204
258
|
* Callback used to sort the field.
|
|
@@ -251,12 +305,19 @@ export type Field< Item > = {
|
|
|
251
305
|
* Defaults to `item[ field.id ]`.
|
|
252
306
|
*/
|
|
253
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 >;
|
|
254
314
|
};
|
|
255
315
|
|
|
256
316
|
export type NormalizedField< Item > = Omit< Field< Item >, 'Edit' > & {
|
|
257
317
|
label: string;
|
|
258
318
|
header: string | ReactElement;
|
|
259
319
|
getValue: ( args: { item: Item } ) => any;
|
|
320
|
+
setValue: ( args: { item: Item; value: any } ) => DeepPartial< Item >;
|
|
260
321
|
render: ComponentType< DataViewRenderFieldProps< Item > >;
|
|
261
322
|
Edit: ComponentType< DataFormControlProps< Item > > | null;
|
|
262
323
|
sort: ( a: Item, b: Item, direction: SortDirection ) => number;
|
|
@@ -277,7 +338,7 @@ export type Data< Item > = Item[];
|
|
|
277
338
|
export type DataFormControlProps< Item > = {
|
|
278
339
|
data: Item;
|
|
279
340
|
field: NormalizedField< Item >;
|
|
280
|
-
onChange: ( value:
|
|
341
|
+
onChange: ( value: DeepPartial< Item > ) => void;
|
|
281
342
|
hideLabelFromVision?: boolean;
|
|
282
343
|
/**
|
|
283
344
|
* The currently selected filter operator for this field.
|
|
@@ -285,6 +346,14 @@ export type DataFormControlProps< Item > = {
|
|
|
285
346
|
* Used by DataViews filters to determine which control to render based on the operator type.
|
|
286
347
|
*/
|
|
287
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
|
+
};
|
|
288
357
|
};
|
|
289
358
|
|
|
290
359
|
export type DataViewRenderFieldProps< Item > = {
|
|
@@ -793,6 +862,7 @@ export type CombinedFormField = {
|
|
|
793
862
|
description?: string;
|
|
794
863
|
layout?: Layout;
|
|
795
864
|
children: Array< FormField | string >;
|
|
865
|
+
summary?: string | string[];
|
|
796
866
|
};
|
|
797
867
|
|
|
798
868
|
export type FormField = SimpleFormField | CombinedFormField;
|