@wordpress/dataviews 14.0.0 → 14.1.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 +21 -0
- package/README.md +16 -5
- package/build/components/dataform-controls/array.cjs +2 -0
- package/build/components/dataform-controls/array.cjs.map +2 -2
- package/build/components/dataform-controls/checkbox.cjs +3 -1
- package/build/components/dataform-controls/checkbox.cjs.map +2 -2
- package/build/components/dataform-controls/color.cjs +8 -2
- package/build/components/dataform-controls/color.cjs.map +2 -2
- package/build/components/dataform-controls/date.cjs +31 -9
- package/build/components/dataform-controls/date.cjs.map +3 -3
- package/build/components/dataform-controls/datetime.cjs +9 -2
- package/build/components/dataform-controls/datetime.cjs.map +3 -3
- package/build/components/dataform-controls/password.cjs +4 -1
- package/build/components/dataform-controls/password.cjs.map +2 -2
- package/build/components/dataform-controls/radio.cjs +3 -1
- package/build/components/dataform-controls/radio.cjs.map +2 -2
- package/build/components/dataform-controls/select.cjs +3 -1
- package/build/components/dataform-controls/select.cjs.map +2 -2
- package/build/components/dataform-controls/textarea.cjs +2 -0
- package/build/components/dataform-controls/textarea.cjs.map +2 -2
- package/build/components/dataform-controls/toggle-group.cjs +3 -1
- package/build/components/dataform-controls/toggle-group.cjs.map +2 -2
- package/build/components/dataform-controls/toggle.cjs +3 -1
- package/build/components/dataform-controls/toggle.cjs.map +2 -2
- package/build/components/dataform-controls/utils/relative-date-control.cjs +5 -2
- package/build/components/dataform-controls/utils/relative-date-control.cjs.map +2 -2
- package/build/components/dataform-controls/utils/use-disabled-date-matchers.cjs +48 -0
- package/build/components/dataform-controls/utils/use-disabled-date-matchers.cjs.map +7 -0
- package/build/components/dataform-controls/utils/validated-input.cjs +2 -0
- package/build/components/dataform-controls/utils/validated-input.cjs.map +2 -2
- package/build/components/dataform-controls/utils/validated-number.cjs +3 -1
- package/build/components/dataform-controls/utils/validated-number.cjs.map +2 -2
- package/build/components/dataform-layouts/panel/summary-button.cjs +0 -1
- package/build/components/dataform-layouts/panel/summary-button.cjs.map +2 -2
- package/build/components/dataviews-context/index.cjs.map +1 -1
- package/build/components/dataviews-filters/input-widget.cjs +4 -0
- package/build/components/dataviews-filters/input-widget.cjs.map +2 -2
- package/build/components/dataviews-layouts/picker-grid/index.cjs +1 -4
- package/build/components/dataviews-layouts/picker-grid/index.cjs.map +2 -2
- package/build/components/dataviews-layouts/picker-table/index.cjs +15 -12
- package/build/components/dataviews-layouts/picker-table/index.cjs.map +2 -2
- package/build/components/dataviews-layouts/table/index.cjs +0 -1
- package/build/components/dataviews-layouts/table/index.cjs.map +2 -2
- package/build/components/dataviews-pagination/index.cjs +1 -0
- package/build/components/dataviews-pagination/index.cjs.map +2 -2
- package/build/dataviews/index.cjs +10 -8
- package/build/dataviews/index.cjs.map +2 -2
- package/build/dataviews-picker/index.cjs +16 -9
- package/build/dataviews-picker/index.cjs.map +2 -2
- package/build/field-types/date.cjs +4 -1
- package/build/field-types/date.cjs.map +2 -2
- package/build/field-types/datetime.cjs +4 -1
- package/build/field-types/datetime.cjs.map +2 -2
- package/build/field-types/index.cjs +1 -0
- package/build/field-types/index.cjs.map +2 -2
- package/build/field-types/utils/get-is-valid.cjs +29 -24
- package/build/field-types/utils/get-is-valid.cjs.map +2 -2
- package/build/field-types/utils/is-valid-date-boundary.cjs +64 -0
- package/build/field-types/utils/is-valid-date-boundary.cjs.map +7 -0
- package/build/types/dataviews.cjs.map +1 -1
- package/build/types/field-api.cjs.map +1 -1
- package/build-module/components/dataform-controls/array.mjs +2 -0
- package/build-module/components/dataform-controls/array.mjs.map +2 -2
- package/build-module/components/dataform-controls/checkbox.mjs +3 -1
- package/build-module/components/dataform-controls/checkbox.mjs.map +2 -2
- package/build-module/components/dataform-controls/color.mjs +8 -2
- package/build-module/components/dataform-controls/color.mjs.map +2 -2
- package/build-module/components/dataform-controls/date.mjs +31 -9
- package/build-module/components/dataform-controls/date.mjs.map +2 -2
- package/build-module/components/dataform-controls/datetime.mjs +9 -2
- package/build-module/components/dataform-controls/datetime.mjs.map +2 -2
- package/build-module/components/dataform-controls/password.mjs +4 -1
- package/build-module/components/dataform-controls/password.mjs.map +2 -2
- package/build-module/components/dataform-controls/radio.mjs +3 -1
- package/build-module/components/dataform-controls/radio.mjs.map +2 -2
- package/build-module/components/dataform-controls/select.mjs +3 -1
- package/build-module/components/dataform-controls/select.mjs.map +2 -2
- package/build-module/components/dataform-controls/textarea.mjs +2 -0
- package/build-module/components/dataform-controls/textarea.mjs.map +2 -2
- package/build-module/components/dataform-controls/toggle-group.mjs +3 -1
- package/build-module/components/dataform-controls/toggle-group.mjs.map +2 -2
- package/build-module/components/dataform-controls/toggle.mjs +3 -1
- package/build-module/components/dataform-controls/toggle.mjs.map +2 -2
- package/build-module/components/dataform-controls/utils/relative-date-control.mjs +5 -2
- package/build-module/components/dataform-controls/utils/relative-date-control.mjs.map +2 -2
- package/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs +27 -0
- package/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs.map +7 -0
- package/build-module/components/dataform-controls/utils/validated-input.mjs +2 -0
- package/build-module/components/dataform-controls/utils/validated-input.mjs.map +2 -2
- package/build-module/components/dataform-controls/utils/validated-number.mjs +3 -1
- package/build-module/components/dataform-controls/utils/validated-number.mjs.map +2 -2
- package/build-module/components/dataform-layouts/panel/summary-button.mjs +0 -1
- package/build-module/components/dataform-layouts/panel/summary-button.mjs.map +2 -2
- package/build-module/components/dataviews-context/index.mjs.map +1 -1
- package/build-module/components/dataviews-filters/input-widget.mjs +4 -0
- package/build-module/components/dataviews-filters/input-widget.mjs.map +2 -2
- package/build-module/components/dataviews-layouts/picker-grid/index.mjs +1 -4
- package/build-module/components/dataviews-layouts/picker-grid/index.mjs.map +2 -2
- package/build-module/components/dataviews-layouts/picker-table/index.mjs +15 -12
- package/build-module/components/dataviews-layouts/picker-table/index.mjs.map +2 -2
- package/build-module/components/dataviews-layouts/table/index.mjs +0 -1
- package/build-module/components/dataviews-layouts/table/index.mjs.map +2 -2
- package/build-module/components/dataviews-pagination/index.mjs +1 -0
- package/build-module/components/dataviews-pagination/index.mjs.map +2 -2
- package/build-module/dataviews/index.mjs +10 -8
- package/build-module/dataviews/index.mjs.map +2 -2
- package/build-module/dataviews-picker/index.mjs +16 -9
- package/build-module/dataviews-picker/index.mjs.map +2 -2
- package/build-module/field-types/date.mjs +4 -1
- package/build-module/field-types/date.mjs.map +2 -2
- package/build-module/field-types/datetime.mjs +4 -1
- package/build-module/field-types/datetime.mjs.map +2 -2
- package/build-module/field-types/index.mjs +1 -0
- package/build-module/field-types/index.mjs.map +2 -2
- package/build-module/field-types/utils/get-is-valid.mjs +29 -24
- package/build-module/field-types/utils/get-is-valid.mjs.map +2 -2
- package/build-module/field-types/utils/is-valid-date-boundary.mjs +38 -0
- package/build-module/field-types/utils/is-valid-date-boundary.mjs.map +7 -0
- package/build-style/style-rtl.css +14 -15
- package/build-style/style.css +14 -15
- package/build-types/components/dataform-controls/array.d.ts.map +1 -1
- package/build-types/components/dataform-controls/checkbox.d.ts.map +1 -1
- package/build-types/components/dataform-controls/color.d.ts.map +1 -1
- package/build-types/components/dataform-controls/date.d.ts.map +1 -1
- package/build-types/components/dataform-controls/datetime.d.ts.map +1 -1
- package/build-types/components/dataform-controls/password.d.ts.map +1 -1
- package/build-types/components/dataform-controls/radio.d.ts.map +1 -1
- package/build-types/components/dataform-controls/select.d.ts.map +1 -1
- package/build-types/components/dataform-controls/textarea.d.ts.map +1 -1
- package/build-types/components/dataform-controls/toggle-group.d.ts.map +1 -1
- package/build-types/components/dataform-controls/toggle.d.ts.map +1 -1
- package/build-types/components/dataform-controls/utils/relative-date-control.d.ts.map +1 -1
- package/build-types/components/dataform-controls/utils/use-disabled-date-matchers.d.ts +16 -0
- package/build-types/components/dataform-controls/utils/use-disabled-date-matchers.d.ts.map +1 -0
- package/build-types/components/dataform-controls/utils/validated-input.d.ts.map +1 -1
- package/build-types/components/dataform-controls/utils/validated-number.d.ts.map +1 -1
- package/build-types/components/dataform-layouts/panel/summary-button.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +2 -2
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-layouts/index.d.ts +6 -6
- package/build-types/components/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layouts/picker-table/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
- package/build-types/components/dataviews-search/index.d.ts +1 -1
- package/build-types/components/dataviews-search/index.d.ts.map +1 -1
- package/build-types/constants.d.ts +2 -2
- package/build-types/dataform/stories/index.story.d.ts +11 -1
- package/build-types/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/dataform/stories/layout-regular.d.ts +2 -1
- package/build-types/dataform/stories/layout-regular.d.ts.map +1 -1
- package/build-types/dataform/stories/validation.d.ts.map +1 -1
- package/build-types/dataviews/index.d.ts +1 -1
- package/build-types/dataviews/index.d.ts.map +1 -1
- package/build-types/dataviews-picker/index.d.ts +3 -2
- package/build-types/dataviews-picker/index.d.ts.map +1 -1
- package/build-types/dataviews-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/field-types/array.d.ts +1 -1
- package/build-types/field-types/array.d.ts.map +1 -1
- package/build-types/field-types/boolean.d.ts +1 -1
- package/build-types/field-types/boolean.d.ts.map +1 -1
- package/build-types/field-types/color.d.ts +1 -1
- package/build-types/field-types/color.d.ts.map +1 -1
- package/build-types/field-types/date.d.ts +3 -0
- package/build-types/field-types/date.d.ts.map +1 -1
- package/build-types/field-types/datetime.d.ts +3 -0
- package/build-types/field-types/datetime.d.ts.map +1 -1
- package/build-types/field-types/email.d.ts +1 -1
- package/build-types/field-types/email.d.ts.map +1 -1
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/integer.d.ts +1 -1
- package/build-types/field-types/integer.d.ts.map +1 -1
- package/build-types/field-types/number.d.ts +1 -1
- package/build-types/field-types/number.d.ts.map +1 -1
- package/build-types/field-types/stories/index.story.d.ts +37 -15
- package/build-types/field-types/stories/index.story.d.ts.map +1 -1
- package/build-types/field-types/utils/get-is-valid.d.ts.map +1 -1
- package/build-types/field-types/utils/is-valid-date-boundary.d.ts +7 -0
- package/build-types/field-types/utils/is-valid-date-boundary.d.ts.map +1 -0
- package/build-types/types/dataviews.d.ts +8 -0
- package/build-types/types/dataviews.d.ts.map +1 -1
- package/build-types/types/field-api.d.ts +24 -9
- package/build-types/types/field-api.d.ts.map +1 -1
- package/build-wp/index.js +1141 -990
- package/package.json +16 -16
- package/src/components/dataform-controls/array.tsx +2 -0
- package/src/components/dataform-controls/checkbox.tsx +2 -0
- package/src/components/dataform-controls/color.tsx +7 -0
- package/src/components/dataform-controls/date.tsx +30 -4
- package/src/components/dataform-controls/datetime.tsx +17 -0
- package/src/components/dataform-controls/password.tsx +3 -0
- package/src/components/dataform-controls/radio.tsx +2 -0
- package/src/components/dataform-controls/select.tsx +2 -0
- package/src/components/dataform-controls/textarea.tsx +2 -0
- package/src/components/dataform-controls/toggle-group.tsx +2 -0
- package/src/components/dataform-controls/toggle.tsx +2 -0
- package/src/components/dataform-controls/utils/relative-date-control.tsx +3 -0
- package/src/components/dataform-controls/utils/use-disabled-date-matchers.ts +48 -0
- package/src/components/dataform-controls/utils/validated-input.tsx +2 -0
- package/src/components/dataform-controls/utils/validated-number.tsx +2 -0
- package/src/components/dataform-layouts/panel/style.scss +4 -5
- package/src/components/dataform-layouts/panel/summary-button.tsx +0 -1
- package/src/components/dataviews-context/index.ts +2 -2
- package/src/components/dataviews-filters/input-widget.tsx +4 -0
- package/src/components/dataviews-filters/style.scss +2 -2
- package/src/components/dataviews-layouts/activity/style.scss +3 -3
- package/src/components/dataviews-layouts/grid/style.scss +1 -1
- package/src/components/dataviews-layouts/list/style.scss +1 -1
- package/src/components/dataviews-layouts/picker-grid/index.tsx +2 -6
- package/src/components/dataviews-layouts/picker-grid/style.scss +1 -1
- package/src/components/dataviews-layouts/picker-table/index.tsx +9 -7
- package/src/components/dataviews-layouts/picker-table/style.scss +1 -1
- package/src/components/dataviews-layouts/table/index.tsx +0 -2
- package/src/components/dataviews-pagination/index.tsx +1 -0
- package/src/dataform/stories/content.story.tsx +1 -1
- package/src/dataform/stories/data-adapter.tsx +6 -6
- package/src/dataform/stories/index.story.tsx +7 -0
- package/src/dataform/stories/layout-card.tsx +5 -5
- package/src/dataform/stories/layout-details.tsx +5 -5
- package/src/dataform/stories/layout-panel.tsx +9 -9
- package/src/dataform/stories/layout-regular.tsx +31 -10
- package/src/dataform/stories/layout-row.tsx +9 -9
- package/src/dataform/stories/validation.tsx +25 -10
- package/src/dataviews/index.tsx +11 -7
- package/src/dataviews/stories/empty.tsx +4 -4
- package/src/dataviews/stories/free-composition.tsx +2 -2
- package/src/dataviews/stories/infinite-scroll.tsx +4 -4
- package/src/dataviews/stories/layout-custom.tsx +1 -1
- package/src/dataviews/stories/layout-grid.tsx +1 -1
- package/src/dataviews/stories/layout-list.tsx +1 -1
- package/src/dataviews/stories/layout-table.tsx +1 -1
- package/src/dataviews/stories/minimal-ui.tsx +1 -1
- package/src/dataviews/stories/with-card.tsx +4 -4
- package/src/dataviews/style.scss +1 -1
- package/src/dataviews/test/dataviews.tsx +73 -6
- package/src/dataviews-picker/index.tsx +17 -7
- package/src/dataviews-picker/stories/index.story.tsx +1 -5
- package/src/dataviews-picker/test/dataviews-picker.tsx +79 -2
- package/src/field-types/date.tsx +3 -0
- package/src/field-types/datetime.tsx +3 -0
- package/src/field-types/index.tsx +4 -0
- package/src/field-types/stories/index.story.tsx +67 -6
- package/src/field-types/test/normalize-fields.ts +44 -0
- package/src/field-types/utils/get-is-valid.ts +44 -31
- package/src/field-types/utils/is-valid-date-boundary.ts +80 -0
- package/src/hooks/test/use-form-validity.ts +479 -0
- package/src/types/dataviews.ts +9 -0
- package/src/types/field-api.ts +27 -9
|
@@ -78,14 +78,10 @@ function GridItem< Item >( {
|
|
|
78
78
|
}: GridItemProps< Item > ) {
|
|
79
79
|
const { showTitle = true, showMedia = true, showDescription = true } = view;
|
|
80
80
|
const id = getItemId( item );
|
|
81
|
-
const elementRef = useRef<
|
|
81
|
+
const elementRef = useRef< HTMLButtonElement >( null );
|
|
82
82
|
|
|
83
83
|
const isSelected = selection.includes( id );
|
|
84
84
|
|
|
85
|
-
const setElementRef = ( element: HTMLElement | null ) => {
|
|
86
|
-
elementRef.current = element;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
85
|
useIntersectionObserver( elementRef, posinset );
|
|
90
86
|
|
|
91
87
|
const renderedMediaField = mediaField?.render ? (
|
|
@@ -102,7 +98,7 @@ function GridItem< Item >( {
|
|
|
102
98
|
|
|
103
99
|
return (
|
|
104
100
|
<Composite.Item
|
|
105
|
-
ref={
|
|
101
|
+
ref={ elementRef }
|
|
106
102
|
aria-label={
|
|
107
103
|
titleField
|
|
108
104
|
? titleField.getValue( { item } ) || __( '(no title)' )
|
|
@@ -100,11 +100,7 @@ function TableRow< Item >( {
|
|
|
100
100
|
const isSelected = selection.includes( id );
|
|
101
101
|
|
|
102
102
|
const [ isHovered, setIsHovered ] = useState( false );
|
|
103
|
-
const elementRef = useRef<
|
|
104
|
-
|
|
105
|
-
const setElementRef = ( element: HTMLElement | null ) => {
|
|
106
|
-
elementRef.current = element;
|
|
107
|
-
};
|
|
103
|
+
const elementRef = useRef< HTMLButtonElement >( null );
|
|
108
104
|
|
|
109
105
|
useIntersectionObserver( elementRef, posinset );
|
|
110
106
|
const {
|
|
@@ -129,7 +125,7 @@ function TableRow< Item >( {
|
|
|
129
125
|
return (
|
|
130
126
|
<Composite.Item
|
|
131
127
|
key={ id }
|
|
132
|
-
ref={
|
|
128
|
+
ref={ elementRef }
|
|
133
129
|
render={ ( { children, ...props } ) => (
|
|
134
130
|
<tr
|
|
135
131
|
className={ clsx( 'dataviews-view-table__row', {
|
|
@@ -162,6 +158,7 @@ function TableRow< Item >( {
|
|
|
162
158
|
>
|
|
163
159
|
<td
|
|
164
160
|
className="dataviews-view-table__checkbox-column"
|
|
161
|
+
// eslint-disable-next-line jsx-a11y/no-interactive-element-to-noninteractive-role
|
|
165
162
|
role="presentation"
|
|
166
163
|
>
|
|
167
164
|
<div className="dataviews-view-table__cell-content-wrapper">
|
|
@@ -179,7 +176,10 @@ function TableRow< Item >( {
|
|
|
179
176
|
</td>
|
|
180
177
|
|
|
181
178
|
{ hasPrimaryColumn && (
|
|
182
|
-
<td
|
|
179
|
+
<td
|
|
180
|
+
// eslint-disable-next-line jsx-a11y/no-interactive-element-to-noninteractive-role
|
|
181
|
+
role="presentation"
|
|
182
|
+
>
|
|
183
183
|
<ColumnPrimary
|
|
184
184
|
item={ item }
|
|
185
185
|
titleField={ showTitle ? titleField : undefined }
|
|
@@ -204,6 +204,7 @@ function TableRow< Item >( {
|
|
|
204
204
|
maxWidth,
|
|
205
205
|
minWidth,
|
|
206
206
|
} }
|
|
207
|
+
// eslint-disable-next-line jsx-a11y/no-interactive-element-to-noninteractive-role
|
|
207
208
|
role="presentation"
|
|
208
209
|
>
|
|
209
210
|
<TableColumnField
|
|
@@ -414,6 +415,7 @@ function ViewPickerTable< Item >( {
|
|
|
414
415
|
1
|
|
415
416
|
}
|
|
416
417
|
className="dataviews-view-table__group-header-cell"
|
|
418
|
+
// eslint-disable-next-line jsx-a11y/no-interactive-element-to-noninteractive-role
|
|
417
419
|
role="presentation"
|
|
418
420
|
>
|
|
419
421
|
{ view.groupBy?.showLabel === false
|
|
@@ -267,7 +267,6 @@ function TableRow< Item >( {
|
|
|
267
267
|
// itself (to toggle row selection) without erroneously
|
|
268
268
|
// intercepting click events from ItemActions.
|
|
269
269
|
|
|
270
|
-
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
271
270
|
<td
|
|
272
271
|
className={ clsx( 'dataviews-view-table__actions-column', {
|
|
273
272
|
'dataviews-view-table__actions-column--sticky': true,
|
|
@@ -278,7 +277,6 @@ function TableRow< Item >( {
|
|
|
278
277
|
>
|
|
279
278
|
<ItemActions item={ item } actions={ actions } />
|
|
280
279
|
</td>
|
|
281
|
-
/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
282
280
|
) }
|
|
283
281
|
</tr>
|
|
284
282
|
);
|
|
@@ -297,7 +297,7 @@ export const HighLevelHelpText: Story = {
|
|
|
297
297
|
fields: [
|
|
298
298
|
{
|
|
299
299
|
id: 'accountForm',
|
|
300
|
-
label: 'Account
|
|
300
|
+
label: 'Account information',
|
|
301
301
|
description:
|
|
302
302
|
'We collect this information to create your account and provide personalized services. Your data will be kept secure and used only for account management and service improvements.',
|
|
303
303
|
children: [ 'name', 'email', 'phone' ],
|
|
@@ -54,17 +54,17 @@ const DataAdapterComponent = () => {
|
|
|
54
54
|
// for nested data based on the field id.
|
|
55
55
|
{
|
|
56
56
|
id: 'user.profile.name',
|
|
57
|
-
label: 'User
|
|
57
|
+
label: 'User name',
|
|
58
58
|
type: 'text',
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
id: 'user.profile.email',
|
|
62
|
-
label: 'User
|
|
62
|
+
label: 'User email',
|
|
63
63
|
type: 'email',
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
id: 'user.profile.tags',
|
|
67
|
-
label: 'User
|
|
67
|
+
label: 'User tags',
|
|
68
68
|
type: 'array',
|
|
69
69
|
placeholder: 'Enter comma-separated tags',
|
|
70
70
|
description:
|
|
@@ -101,13 +101,13 @@ const DataAdapterComponent = () => {
|
|
|
101
101
|
// Example of deriving data by leveraging setValue method.
|
|
102
102
|
{
|
|
103
103
|
id: 'revenue.total',
|
|
104
|
-
label: 'Total
|
|
104
|
+
label: 'Total revenue',
|
|
105
105
|
type: 'integer',
|
|
106
106
|
readOnly: true,
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
id: 'revenue.pricePerUnit',
|
|
110
|
-
label: 'Price
|
|
110
|
+
label: 'Price per unit',
|
|
111
111
|
type: 'integer',
|
|
112
112
|
setValue: ( { item, value } ) => ( {
|
|
113
113
|
revenue: {
|
|
@@ -174,7 +174,7 @@ const DataAdapterComponent = () => {
|
|
|
174
174
|
fields: [
|
|
175
175
|
{
|
|
176
176
|
id: 'userProfile',
|
|
177
|
-
label: 'User
|
|
177
|
+
label: 'User profile',
|
|
178
178
|
children: [
|
|
179
179
|
'user.profile.name',
|
|
180
180
|
'user.profile.email',
|
|
@@ -93,6 +93,13 @@ export const LayoutRegular = {
|
|
|
93
93
|
description: 'Chooses the label position.',
|
|
94
94
|
options: [ 'default', 'top', 'side', 'none' ],
|
|
95
95
|
},
|
|
96
|
+
disabled: {
|
|
97
|
+
control: { type: 'boolean' },
|
|
98
|
+
description: 'Disable all fields in the form.',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
args: {
|
|
102
|
+
disabled: false,
|
|
96
103
|
},
|
|
97
104
|
};
|
|
98
105
|
|
|
@@ -44,7 +44,7 @@ const LayoutCardComponent = ( {
|
|
|
44
44
|
const customerFields: Field< Customer >[] = [
|
|
45
45
|
{
|
|
46
46
|
id: 'name',
|
|
47
|
-
label: 'Customer
|
|
47
|
+
label: 'Customer name',
|
|
48
48
|
type: 'text',
|
|
49
49
|
},
|
|
50
50
|
{
|
|
@@ -70,17 +70,17 @@ const LayoutCardComponent = ( {
|
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
id: 'shippingAddress',
|
|
73
|
-
label: 'Shipping
|
|
73
|
+
label: 'Shipping address',
|
|
74
74
|
type: 'text',
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
id: 'billingAddress',
|
|
78
|
-
label: 'Billing
|
|
78
|
+
label: 'Billing address',
|
|
79
79
|
type: 'text',
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
id: 'displayPayments',
|
|
83
|
-
label: 'Display
|
|
83
|
+
label: 'Display payments?',
|
|
84
84
|
type: 'boolean',
|
|
85
85
|
},
|
|
86
86
|
{
|
|
@@ -112,7 +112,7 @@ const LayoutCardComponent = ( {
|
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
id: 'dueDate',
|
|
115
|
-
label: 'Due
|
|
115
|
+
label: 'Due date',
|
|
116
116
|
type: 'text',
|
|
117
117
|
render: ( { item } ) => {
|
|
118
118
|
return <Badge>Due on: { item.dueDate }</Badge>;
|
|
@@ -123,7 +123,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
id: 'filesize',
|
|
126
|
-
label: 'File
|
|
126
|
+
label: 'File size',
|
|
127
127
|
type: 'integer',
|
|
128
128
|
readOnly: true,
|
|
129
129
|
},
|
|
@@ -170,7 +170,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
id: 'longDescription',
|
|
173
|
-
label: 'Long
|
|
173
|
+
label: 'Long description',
|
|
174
174
|
type: 'text',
|
|
175
175
|
Edit: {
|
|
176
176
|
control: 'textarea',
|
|
@@ -179,7 +179,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
id: 'comment_status',
|
|
182
|
-
label: 'Comment
|
|
182
|
+
label: 'Comment status',
|
|
183
183
|
type: 'text',
|
|
184
184
|
Edit: 'radio',
|
|
185
185
|
elements: [
|
|
@@ -189,7 +189,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
id: 'ping_status',
|
|
192
|
-
label: 'Allow
|
|
192
|
+
label: 'Allow pings/trackbacks',
|
|
193
193
|
type: 'boolean',
|
|
194
194
|
},
|
|
195
195
|
{
|
|
@@ -223,7 +223,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
223
223
|
},
|
|
224
224
|
{
|
|
225
225
|
id: 'flight_status',
|
|
226
|
-
label: 'Flight
|
|
226
|
+
label: 'Flight status',
|
|
227
227
|
type: 'text',
|
|
228
228
|
Edit: 'radio',
|
|
229
229
|
elements: [
|
|
@@ -133,7 +133,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
id: 'filesize',
|
|
136
|
-
label: 'File
|
|
136
|
+
label: 'File size',
|
|
137
137
|
type: 'integer',
|
|
138
138
|
readOnly: true,
|
|
139
139
|
},
|
|
@@ -180,7 +180,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
id: 'longDescription',
|
|
183
|
-
label: 'Long
|
|
183
|
+
label: 'Long description',
|
|
184
184
|
type: 'text',
|
|
185
185
|
Edit: {
|
|
186
186
|
control: 'textarea',
|
|
@@ -189,7 +189,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
id: 'comment_status',
|
|
192
|
-
label: 'Comment
|
|
192
|
+
label: 'Comment status',
|
|
193
193
|
type: 'text',
|
|
194
194
|
Edit: 'radio',
|
|
195
195
|
elements: [
|
|
@@ -199,7 +199,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
id: 'ping_status',
|
|
202
|
-
label: 'Allow
|
|
202
|
+
label: 'Allow pings/trackbacks',
|
|
203
203
|
type: 'boolean',
|
|
204
204
|
},
|
|
205
205
|
{
|
|
@@ -233,7 +233,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
233
233
|
},
|
|
234
234
|
{
|
|
235
235
|
id: 'flight_status',
|
|
236
|
-
label: 'Flight
|
|
236
|
+
label: 'Flight status',
|
|
237
237
|
type: 'text',
|
|
238
238
|
Edit: 'radio',
|
|
239
239
|
elements: [
|
|
@@ -360,7 +360,7 @@ const LayoutPanelComponent = ( {
|
|
|
360
360
|
'title',
|
|
361
361
|
{
|
|
362
362
|
id: 'status',
|
|
363
|
-
label: 'Status &
|
|
363
|
+
label: 'Status & visibility',
|
|
364
364
|
children: [ 'status', 'password' ],
|
|
365
365
|
},
|
|
366
366
|
'order',
|
|
@@ -375,12 +375,12 @@ const LayoutPanelComponent = ( {
|
|
|
375
375
|
},
|
|
376
376
|
{
|
|
377
377
|
id: 'address1',
|
|
378
|
-
label: 'Combined
|
|
378
|
+
label: 'Combined address',
|
|
379
379
|
children: [ 'address1', 'address2', 'city' ],
|
|
380
380
|
},
|
|
381
381
|
{
|
|
382
382
|
id: 'flight_info',
|
|
383
|
-
label: 'Flight
|
|
383
|
+
label: 'Flight information',
|
|
384
384
|
children: [
|
|
385
385
|
'origin',
|
|
386
386
|
'destination',
|
|
@@ -396,7 +396,7 @@ const LayoutPanelComponent = ( {
|
|
|
396
396
|
},
|
|
397
397
|
{
|
|
398
398
|
id: 'passenger_details',
|
|
399
|
-
label: 'Passenger
|
|
399
|
+
label: 'Passenger details',
|
|
400
400
|
children: [ 'author', 'seat' ],
|
|
401
401
|
layout: getPanelLayoutFromStoryArgs( {
|
|
402
402
|
summary: [ 'author', 'seat' ],
|
|
@@ -55,11 +55,16 @@ const fields: Field< SamplePost >[] = [
|
|
|
55
55
|
{
|
|
56
56
|
id: 'date',
|
|
57
57
|
label: 'Date',
|
|
58
|
+
type: 'date',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'datetime',
|
|
62
|
+
label: 'DateTime',
|
|
58
63
|
type: 'datetime',
|
|
59
64
|
},
|
|
60
65
|
{
|
|
61
66
|
id: 'birthdate',
|
|
62
|
-
label: '
|
|
67
|
+
label: 'DateTime as options',
|
|
63
68
|
type: 'datetime',
|
|
64
69
|
elements: [
|
|
65
70
|
{ value: '', label: 'Select a date' },
|
|
@@ -126,11 +131,11 @@ const fields: Field< SamplePost >[] = [
|
|
|
126
131
|
id: 'can_comment',
|
|
127
132
|
label: 'Allow people to leave a comment',
|
|
128
133
|
type: 'boolean',
|
|
129
|
-
Edit: '
|
|
134
|
+
Edit: 'toggle',
|
|
130
135
|
},
|
|
131
136
|
{
|
|
132
137
|
id: 'filesize',
|
|
133
|
-
label: 'File
|
|
138
|
+
label: 'File size',
|
|
134
139
|
type: 'integer',
|
|
135
140
|
readOnly: true,
|
|
136
141
|
},
|
|
@@ -177,7 +182,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
177
182
|
},
|
|
178
183
|
{
|
|
179
184
|
id: 'longDescription',
|
|
180
|
-
label: 'Long
|
|
185
|
+
label: 'Long description',
|
|
181
186
|
type: 'text',
|
|
182
187
|
Edit: {
|
|
183
188
|
control: 'textarea',
|
|
@@ -186,7 +191,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
186
191
|
},
|
|
187
192
|
{
|
|
188
193
|
id: 'comment_status',
|
|
189
|
-
label: 'Comment
|
|
194
|
+
label: 'Comment status',
|
|
190
195
|
type: 'text',
|
|
191
196
|
Edit: 'radio',
|
|
192
197
|
elements: [
|
|
@@ -196,7 +201,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
196
201
|
},
|
|
197
202
|
{
|
|
198
203
|
id: 'ping_status',
|
|
199
|
-
label: 'Allow
|
|
204
|
+
label: 'Allow pings/trackbacks',
|
|
200
205
|
type: 'boolean',
|
|
201
206
|
},
|
|
202
207
|
{
|
|
@@ -230,7 +235,7 @@ const fields: Field< SamplePost >[] = [
|
|
|
230
235
|
},
|
|
231
236
|
{
|
|
232
237
|
id: 'flight_status',
|
|
233
|
-
label: 'Flight
|
|
238
|
+
label: 'Flight status',
|
|
234
239
|
type: 'text',
|
|
235
240
|
Edit: 'radio',
|
|
236
241
|
elements: [
|
|
@@ -312,8 +317,10 @@ const getLayoutFromStoryArgs = ( {
|
|
|
312
317
|
|
|
313
318
|
const LayoutRegularComponent = ( {
|
|
314
319
|
labelPosition,
|
|
320
|
+
disabled = false,
|
|
315
321
|
}: {
|
|
316
322
|
labelPosition: 'default' | 'top' | 'side' | 'none';
|
|
323
|
+
disabled?: boolean;
|
|
317
324
|
} ) => {
|
|
318
325
|
const [ post, setPost ] = useState( {
|
|
319
326
|
title: 'Hello, World!',
|
|
@@ -322,7 +329,8 @@ const LayoutRegularComponent = ( {
|
|
|
322
329
|
status: 'draft',
|
|
323
330
|
reviewer: 'fulano',
|
|
324
331
|
email: 'hello@wordpress.org',
|
|
325
|
-
date: '2021-01-
|
|
332
|
+
date: '2021-01-01',
|
|
333
|
+
datetime: '2021-01-01T12:00:00',
|
|
326
334
|
birthdate: '1950-02-23T12:00:00',
|
|
327
335
|
sticky: false,
|
|
328
336
|
can_comment: false,
|
|
@@ -332,6 +340,18 @@ const LayoutRegularComponent = ( {
|
|
|
332
340
|
description: 'This is a sample description.',
|
|
333
341
|
} );
|
|
334
342
|
|
|
343
|
+
// Make fields disabled when control is set to disabled.
|
|
344
|
+
const _fields: Field< SamplePost >[] = useMemo( () => {
|
|
345
|
+
if ( ! disabled ) {
|
|
346
|
+
return fields;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
return fields.map( ( field ) => ( {
|
|
350
|
+
...field,
|
|
351
|
+
isDisabled: true,
|
|
352
|
+
} ) );
|
|
353
|
+
}, [ disabled ] );
|
|
354
|
+
|
|
335
355
|
const form: Form = useMemo(
|
|
336
356
|
() => ( {
|
|
337
357
|
layout: getLayoutFromStoryArgs( {
|
|
@@ -342,14 +362,15 @@ const LayoutRegularComponent = ( {
|
|
|
342
362
|
'title',
|
|
343
363
|
'order',
|
|
344
364
|
'sticky',
|
|
365
|
+
'can_comment',
|
|
345
366
|
'author',
|
|
346
367
|
'status',
|
|
347
368
|
'reviewer',
|
|
348
369
|
'email',
|
|
349
370
|
'password',
|
|
350
371
|
'date',
|
|
372
|
+
'datetime',
|
|
351
373
|
'birthdate',
|
|
352
|
-
'can_comment',
|
|
353
374
|
'filesize',
|
|
354
375
|
'dimensions',
|
|
355
376
|
'tags',
|
|
@@ -363,7 +384,7 @@ const LayoutRegularComponent = ( {
|
|
|
363
384
|
return (
|
|
364
385
|
<DataForm< SamplePost >
|
|
365
386
|
data={ post }
|
|
366
|
-
fields={
|
|
387
|
+
fields={ _fields }
|
|
367
388
|
form={ form }
|
|
368
389
|
onChange={ ( edits ) =>
|
|
369
390
|
setPost( ( prev ) => ( {
|
|
@@ -42,7 +42,7 @@ const LayoutRowComponent = ( {
|
|
|
42
42
|
const customerFields: Field< Customer >[] = [
|
|
43
43
|
{
|
|
44
44
|
id: 'name',
|
|
45
|
-
label: 'Customer
|
|
45
|
+
label: 'Customer name',
|
|
46
46
|
type: 'text',
|
|
47
47
|
},
|
|
48
48
|
{
|
|
@@ -57,37 +57,37 @@ const LayoutRowComponent = ( {
|
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
id: 'shippingAddress',
|
|
60
|
-
label: 'Shipping
|
|
60
|
+
label: 'Shipping address',
|
|
61
61
|
type: 'text',
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
id: 'shippingCity',
|
|
65
|
-
label: 'Shipping
|
|
65
|
+
label: 'Shipping city',
|
|
66
66
|
type: 'text',
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
id: 'shippingPostalCode',
|
|
70
|
-
label: 'Shipping
|
|
70
|
+
label: 'Shipping postal code',
|
|
71
71
|
type: 'text',
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
id: 'shippingCountry',
|
|
75
|
-
label: 'Shipping
|
|
75
|
+
label: 'Shipping country',
|
|
76
76
|
type: 'text',
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
id: 'billingAddress',
|
|
80
|
-
label: 'Billing
|
|
80
|
+
label: 'Billing address',
|
|
81
81
|
type: 'text',
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
id: 'billingCity',
|
|
85
|
-
label: 'Billing
|
|
85
|
+
label: 'Billing city',
|
|
86
86
|
type: 'text',
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
id: 'billingPostalCode',
|
|
90
|
-
label: 'Billing
|
|
90
|
+
label: 'Billing postal code',
|
|
91
91
|
type: 'text',
|
|
92
92
|
},
|
|
93
93
|
{
|
|
@@ -102,7 +102,7 @@ const LayoutRowComponent = ( {
|
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
id: 'hasDiscount',
|
|
105
|
-
label: 'Has
|
|
105
|
+
label: 'Has discount?',
|
|
106
106
|
type: 'boolean',
|
|
107
107
|
},
|
|
108
108
|
{
|
|
@@ -739,7 +739,7 @@ const ValidationComponent = ( {
|
|
|
739
739
|
},
|
|
740
740
|
{
|
|
741
741
|
id: 'customEdit',
|
|
742
|
-
label: 'Custom
|
|
742
|
+
label: 'Custom control',
|
|
743
743
|
Edit: CustomEditControl,
|
|
744
744
|
isValid: {
|
|
745
745
|
required,
|
|
@@ -783,7 +783,7 @@ const ValidationComponent = ( {
|
|
|
783
783
|
{
|
|
784
784
|
id: 'toggleGroup',
|
|
785
785
|
type: 'text',
|
|
786
|
-
label: 'Toggle
|
|
786
|
+
label: 'Toggle group',
|
|
787
787
|
Edit: 'toggleGroup',
|
|
788
788
|
elements:
|
|
789
789
|
elements === 'async'
|
|
@@ -849,31 +849,46 @@ const ValidationComponent = ( {
|
|
|
849
849
|
id: 'date',
|
|
850
850
|
type: 'date',
|
|
851
851
|
label: 'Date',
|
|
852
|
+
description: minMax
|
|
853
|
+
? 'Must be between Apr 1 and Apr 20, 2026'
|
|
854
|
+
: undefined,
|
|
852
855
|
isValid: {
|
|
853
856
|
required,
|
|
854
857
|
elements: elements !== 'none' ? true : false,
|
|
855
858
|
custom: maybeCustomRule( customDateRule ),
|
|
859
|
+
min: minMax ? '2026-04-01' : undefined,
|
|
860
|
+
max: minMax ? '2026-04-20' : undefined,
|
|
856
861
|
},
|
|
857
862
|
},
|
|
858
863
|
{
|
|
859
864
|
id: 'dateRange',
|
|
860
865
|
type: 'date',
|
|
861
|
-
label: 'Date
|
|
866
|
+
label: 'Date range',
|
|
862
867
|
Edit: DateRangeEdit,
|
|
868
|
+
description: minMax
|
|
869
|
+
? 'Must be between Apr 1 and Apr 20, 2026'
|
|
870
|
+
: undefined,
|
|
863
871
|
isValid: {
|
|
864
872
|
required,
|
|
865
873
|
elements: elements !== 'none' ? true : false,
|
|
866
874
|
custom: maybeCustomRule( customDateRangeRule ),
|
|
875
|
+
min: minMax ? '2026-04-01' : undefined,
|
|
876
|
+
max: minMax ? '2026-04-20' : undefined,
|
|
867
877
|
},
|
|
868
878
|
},
|
|
869
879
|
{
|
|
870
880
|
id: 'datetime',
|
|
871
881
|
type: 'datetime',
|
|
872
|
-
label: 'Date
|
|
882
|
+
label: 'Date time',
|
|
883
|
+
description: minMax
|
|
884
|
+
? 'Must be between Apr 1 and Apr 20, 2026'
|
|
885
|
+
: undefined,
|
|
873
886
|
isValid: {
|
|
874
887
|
required,
|
|
875
888
|
elements: elements !== 'none' ? true : false,
|
|
876
889
|
custom: maybeCustomRule( customDateTimeRule ),
|
|
890
|
+
min: minMax ? '2026-04-01T00:00:00.000Z' : undefined,
|
|
891
|
+
max: minMax ? '2026-04-20T23:59:59.000Z' : undefined,
|
|
877
892
|
},
|
|
878
893
|
},
|
|
879
894
|
];
|
|
@@ -947,34 +962,34 @@ const ValidationComponent = ( {
|
|
|
947
962
|
const groupedFields = [
|
|
948
963
|
{
|
|
949
964
|
id: 'textFields',
|
|
950
|
-
label: 'Text
|
|
965
|
+
label: 'Text fields',
|
|
951
966
|
children: [ 'text', 'textarea', 'password', 'customEdit' ],
|
|
952
967
|
},
|
|
953
968
|
{
|
|
954
969
|
id: 'numberFields',
|
|
955
|
-
label: 'Number
|
|
970
|
+
label: 'Number fields',
|
|
956
971
|
children: [ 'integer', 'number' ],
|
|
957
972
|
},
|
|
958
973
|
{
|
|
959
974
|
id: 'contactFields',
|
|
960
|
-
label: 'Contact
|
|
975
|
+
label: 'Contact fields',
|
|
961
976
|
children: [ 'email', 'telephone', 'url' ],
|
|
962
977
|
},
|
|
963
978
|
{
|
|
964
979
|
id: 'selectFields',
|
|
965
|
-
label: 'Selection
|
|
980
|
+
label: 'Selection fields',
|
|
966
981
|
children: [ 'select', 'combobox', 'textWithRadio' ],
|
|
967
982
|
},
|
|
968
983
|
{
|
|
969
984
|
id: 'booleanFields',
|
|
970
|
-
label: 'Boolean
|
|
985
|
+
label: 'Boolean fields',
|
|
971
986
|
children: [ 'boolean', 'toggle', 'toggleGroup' ],
|
|
972
987
|
},
|
|
973
988
|
{ id: 'color' },
|
|
974
989
|
{ id: 'array' },
|
|
975
990
|
{
|
|
976
991
|
id: 'dateFields',
|
|
977
|
-
label: 'Date
|
|
992
|
+
label: 'Date fields',
|
|
978
993
|
children: [ 'date', 'dateRange', 'datetime' ],
|
|
979
994
|
},
|
|
980
995
|
];
|