@wordpress/dataviews 10.1.5 → 10.3.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 +19 -0
- package/README.md +109 -1
- package/build/components/dataform/index.js +6 -2
- package/build/components/dataform/index.js.map +3 -3
- package/build/components/dataform-context/index.js +4 -2
- package/build/components/dataform-context/index.js.map +1 -1
- package/build/components/dataviews/index.js +8 -6
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-bulk-actions/index.js +4 -2
- package/build/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build/components/dataviews-context/index.js +3 -1
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-filters/add-filter.js +4 -2
- package/build/components/dataviews-filters/add-filter.js.map +1 -1
- package/build/components/dataviews-filters/filter.js +20 -5
- package/build/components/dataviews-filters/filter.js.map +3 -3
- package/build/components/dataviews-filters/filters-toggled.js +3 -1
- package/build/components/dataviews-filters/filters-toggled.js.map +1 -1
- package/build/components/dataviews-filters/filters.js +3 -1
- package/build/components/dataviews-filters/filters.js.map +1 -1
- package/build/components/dataviews-filters/index.js +2 -0
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-filters/input-widget.js +3 -1
- package/build/components/dataviews-filters/input-widget.js.map +1 -1
- package/build/components/dataviews-filters/reset-filters.js +3 -1
- package/build/components/dataviews-filters/reset-filters.js.map +1 -1
- package/build/components/dataviews-filters/search-widget.js +8 -6
- package/build/components/dataviews-filters/search-widget.js.map +2 -2
- package/build/components/dataviews-filters/toggle.js +3 -1
- package/build/components/dataviews-filters/toggle.js.map +1 -1
- package/build/components/dataviews-filters/use-filters.js +2 -0
- package/build/components/dataviews-filters/use-filters.js.map +1 -1
- package/build/components/dataviews-filters/utils.js +4 -2
- package/build/components/dataviews-filters/utils.js.map +1 -1
- package/build/components/dataviews-footer/index.js +4 -2
- package/build/components/dataviews-footer/index.js.map +1 -1
- package/build/components/dataviews-item-actions/index.js +23 -4
- package/build/components/dataviews-item-actions/index.js.map +2 -2
- package/build/components/dataviews-layout/index.js +3 -1
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-pagination/index.js +3 -1
- package/build/components/dataviews-pagination/index.js.map +1 -1
- package/build/components/dataviews-picker/footer.js +4 -2
- package/build/components/dataviews-picker/footer.js.map +1 -1
- package/build/components/dataviews-picker/index.js +8 -6
- package/build/components/dataviews-picker/index.js.map +1 -1
- package/build/components/dataviews-search/index.js +4 -2
- package/build/components/dataviews-search/index.js.map +1 -1
- package/build/components/dataviews-selection-checkbox/index.js +3 -1
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +17 -400
- package/build/components/dataviews-view-config/index.js.map +3 -3
- package/build/components/dataviews-view-config/infinite-scroll-toggle.js +3 -1
- package/build/components/dataviews-view-config/infinite-scroll-toggle.js.map +1 -1
- package/build/components/dataviews-view-config/properties-section.js +177 -0
- package/build/components/dataviews-view-config/properties-section.js.map +7 -0
- package/build/constants.js +39 -34
- package/build/constants.js.map +2 -2
- package/build/dataform-controls/array.js +4 -2
- package/build/dataform-controls/array.js.map +1 -1
- package/build/dataform-controls/checkbox.js +4 -2
- package/build/dataform-controls/checkbox.js.map +1 -1
- package/build/dataform-controls/color.js +5 -3
- package/build/dataform-controls/color.js.map +1 -1
- package/build/dataform-controls/date.js +8 -6
- package/build/dataform-controls/date.js.map +1 -1
- package/build/dataform-controls/datetime.js +11 -15
- package/build/dataform-controls/datetime.js.map +3 -3
- package/build/dataform-controls/email.js +3 -1
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-controls/index.js +4 -2
- package/build/dataform-controls/index.js.map +1 -1
- package/build/dataform-controls/integer.js +3 -1
- package/build/dataform-controls/integer.js.map +1 -1
- package/build/dataform-controls/number.js +3 -1
- package/build/dataform-controls/number.js.map +1 -1
- package/build/dataform-controls/password.js +6 -5
- package/build/dataform-controls/password.js.map +3 -3
- package/build/dataform-controls/radio.js +4 -2
- package/build/dataform-controls/radio.js.map +1 -1
- package/build/dataform-controls/select.js +4 -2
- package/build/dataform-controls/select.js.map +1 -1
- package/build/dataform-controls/telephone.js +3 -1
- package/build/dataform-controls/telephone.js.map +1 -1
- package/build/dataform-controls/text.js +3 -1
- package/build/dataform-controls/text.js.map +1 -1
- package/build/dataform-controls/textarea.js +4 -2
- package/build/dataform-controls/textarea.js.map +1 -1
- package/build/dataform-controls/toggle-group.js +4 -2
- package/build/dataform-controls/toggle-group.js.map +1 -1
- package/build/dataform-controls/toggle.js +4 -2
- package/build/dataform-controls/toggle.js.map +1 -1
- package/build/dataform-controls/url.js +3 -1
- package/build/dataform-controls/url.js.map +1 -1
- package/build/dataform-controls/utils/get-custom-validity.js +2 -0
- package/build/dataform-controls/utils/get-custom-validity.js.map +1 -1
- package/build/dataform-controls/utils/relative-date-control.js +4 -2
- package/build/dataform-controls/utils/relative-date-control.js.map +1 -1
- package/build/dataform-controls/utils/validated-input.js +4 -2
- package/build/dataform-controls/utils/validated-input.js.map +1 -1
- package/build/dataform-controls/utils/validated-number.js +4 -2
- package/build/dataform-controls/utils/validated-number.js.map +1 -1
- package/build/dataform-layouts/card/index.js +91 -42
- package/build/dataform-layouts/card/index.js.map +3 -3
- package/build/dataform-layouts/data-form-layout.js +8 -14
- package/build/dataform-layouts/data-form-layout.js.map +3 -3
- package/build/dataform-layouts/details/index.js +78 -0
- package/build/dataform-layouts/details/index.js.map +7 -0
- package/build/dataform-layouts/get-summary-fields.js +3 -1
- package/build/dataform-layouts/get-summary-fields.js.map +1 -1
- package/build/dataform-layouts/index.js +9 -2
- package/build/dataform-layouts/index.js.map +3 -3
- package/build/dataform-layouts/{normalize-form-fields.js → normalize-form.js} +48 -24
- package/build/dataform-layouts/normalize-form.js.map +7 -0
- package/build/dataform-layouts/panel/dropdown.js +9 -8
- package/build/dataform-layouts/panel/dropdown.js.map +2 -2
- package/build/dataform-layouts/panel/index.js +10 -14
- package/build/dataform-layouts/panel/index.js.map +2 -2
- package/build/dataform-layouts/panel/modal.js +9 -8
- package/build/dataform-layouts/panel/modal.js.map +2 -2
- package/build/dataform-layouts/panel/summary-button.js +3 -1
- package/build/dataform-layouts/panel/summary-button.js.map +1 -1
- package/build/dataform-layouts/regular/index.js +8 -10
- package/build/dataform-layouts/regular/index.js.map +2 -2
- package/build/dataform-layouts/row/index.js +10 -33
- package/build/dataform-layouts/row/index.js.map +3 -3
- package/build/dataviews-layouts/grid/index.js +4 -2
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/grid/preview-size-picker.js +4 -2
- package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
- package/build/dataviews-layouts/index.js +12 -1
- package/build/dataviews-layouts/index.js.map +3 -3
- package/build/dataviews-layouts/list/index.js +4 -2
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/picker-grid/index.js +4 -2
- package/build/dataviews-layouts/picker-grid/index.js.map +1 -1
- package/build/dataviews-layouts/picker-table/index.js +422 -0
- package/build/dataviews-layouts/picker-table/index.js.map +7 -0
- package/build/dataviews-layouts/table/column-header-menu.js +6 -4
- package/build/dataviews-layouts/table/column-header-menu.js.map +2 -2
- package/build/dataviews-layouts/table/column-primary.js +4 -7
- package/build/dataviews-layouts/table/column-primary.js.map +2 -2
- package/build/dataviews-layouts/table/density-picker.js +3 -1
- package/build/dataviews-layouts/table/density-picker.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +36 -2
- package/build/dataviews-layouts/table/index.js.map +2 -2
- package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js +3 -1
- package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -1
- package/build/dataviews-layouts/utils/get-data-by-group.js +2 -0
- package/build/dataviews-layouts/utils/get-data-by-group.js.map +1 -1
- package/build/dataviews-layouts/utils/grid-items.js +4 -2
- package/build/dataviews-layouts/utils/grid-items.js.map +1 -1
- package/build/dataviews-layouts/utils/item-click-wrapper.js +3 -1
- package/build/dataviews-layouts/utils/item-click-wrapper.js.map +1 -1
- package/build/dataviews-layouts/utils/preview-size-picker.js +4 -2
- package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -1
- package/build/field-types/array.js +3 -1
- package/build/field-types/array.js.map +1 -1
- package/build/field-types/boolean.js +3 -1
- package/build/field-types/boolean.js.map +1 -1
- package/build/field-types/color.js +3 -1
- package/build/field-types/color.js.map +1 -1
- package/build/field-types/date.js +4 -2
- package/build/field-types/date.js.map +1 -1
- package/build/field-types/datetime.js +17 -2
- package/build/field-types/datetime.js.map +3 -3
- package/build/field-types/email.js +4 -2
- package/build/field-types/email.js.map +1 -1
- package/build/field-types/index.js +3 -1
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/integer.js +3 -1
- package/build/field-types/integer.js.map +1 -1
- package/build/field-types/media.js +2 -0
- package/build/field-types/media.js.map +1 -1
- package/build/field-types/number.js +3 -1
- package/build/field-types/number.js.map +1 -1
- package/build/field-types/password.js +3 -1
- package/build/field-types/password.js.map +1 -1
- package/build/field-types/telephone.js +3 -1
- package/build/field-types/telephone.js.map +1 -1
- package/build/field-types/text.js +3 -1
- package/build/field-types/text.js.map +1 -1
- package/build/field-types/url.js +3 -1
- package/build/field-types/url.js.map +1 -1
- package/build/{dataform-layouts/is-combined-field.js → field-types/utils/parse-date-time.js} +15 -11
- package/build/field-types/utils/parse-date-time.js.map +7 -0
- package/build/field-types/utils/render-from-elements.js +2 -0
- package/build/field-types/utils/render-from-elements.js.map +1 -1
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/use-elements.js +3 -1
- package/build/hooks/use-elements.js.map +1 -1
- package/build/hooks/use-form-validity.js +425 -321
- package/build/hooks/use-form-validity.js.map +3 -3
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/lock-unlock.js +3 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/types/dataform.js +2 -0
- package/build/types/dataform.js.map +2 -2
- package/build/types/dataviews.js +2 -0
- package/build/types/dataviews.js.map +2 -2
- package/build/types/field-api.js +2 -0
- package/build/types/field-api.js.map +1 -1
- package/build/types/index.js +2 -0
- package/build/types/index.js.map +1 -1
- package/build/types/private.js +2 -0
- package/build/types/private.js.map +1 -1
- package/build/utils/filter-sort-and-paginate.js +3 -1
- package/build/utils/filter-sort-and-paginate.js.map +1 -1
- package/build/utils/has-elements.js +2 -0
- package/build/utils/has-elements.js.map +1 -1
- package/build/utils/normalize-fields.js +4 -2
- package/build/utils/normalize-fields.js.map +1 -1
- package/build-module/components/dataform/index.js +5 -2
- package/build-module/components/dataform/index.js.map +2 -2
- package/build-module/components/dataform-context/index.js +3 -2
- package/build-module/components/dataform-context/index.js.map +1 -1
- package/build-module/components/dataviews/index.js +7 -6
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-bulk-actions/index.js +3 -2
- package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js +2 -1
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-filters/add-filter.js +3 -2
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
- package/build-module/components/dataviews-filters/filter.js +19 -5
- package/build-module/components/dataviews-filters/filter.js.map +2 -2
- package/build-module/components/dataviews-filters/filters-toggled.js +2 -1
- package/build-module/components/dataviews-filters/filters-toggled.js.map +1 -1
- package/build-module/components/dataviews-filters/filters.js +2 -1
- package/build-module/components/dataviews-filters/filters.js.map +1 -1
- package/build-module/components/dataviews-filters/index.js +1 -0
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-filters/input-widget.js +2 -1
- package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
- package/build-module/components/dataviews-filters/reset-filters.js +2 -1
- package/build-module/components/dataviews-filters/reset-filters.js.map +1 -1
- package/build-module/components/dataviews-filters/search-widget.js +7 -6
- package/build-module/components/dataviews-filters/search-widget.js.map +2 -2
- package/build-module/components/dataviews-filters/toggle.js +2 -1
- package/build-module/components/dataviews-filters/toggle.js.map +1 -1
- package/build-module/components/dataviews-filters/use-filters.js +1 -0
- package/build-module/components/dataviews-filters/use-filters.js.map +1 -1
- package/build-module/components/dataviews-filters/utils.js +3 -2
- package/build-module/components/dataviews-filters/utils.js.map +1 -1
- package/build-module/components/dataviews-footer/index.js +3 -2
- package/build-module/components/dataviews-footer/index.js.map +1 -1
- package/build-module/components/dataviews-item-actions/index.js +22 -4
- package/build-module/components/dataviews-item-actions/index.js.map +2 -2
- package/build-module/components/dataviews-layout/index.js +2 -1
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-pagination/index.js +2 -1
- package/build-module/components/dataviews-pagination/index.js.map +1 -1
- package/build-module/components/dataviews-picker/footer.js +3 -2
- package/build-module/components/dataviews-picker/footer.js.map +1 -1
- package/build-module/components/dataviews-picker/index.js +7 -6
- package/build-module/components/dataviews-picker/index.js.map +1 -1
- package/build-module/components/dataviews-search/index.js +3 -2
- package/build-module/components/dataviews-search/index.js.map +1 -1
- package/build-module/components/dataviews-selection-checkbox/index.js +2 -1
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +20 -416
- package/build-module/components/dataviews-view-config/index.js.map +2 -2
- package/build-module/components/dataviews-view-config/infinite-scroll-toggle.js +2 -1
- package/build-module/components/dataviews-view-config/infinite-scroll-toggle.js.map +1 -1
- package/build-module/components/dataviews-view-config/properties-section.js +149 -0
- package/build-module/components/dataviews-view-config/properties-section.js.map +7 -0
- package/build-module/constants.js +37 -34
- package/build-module/constants.js.map +2 -2
- package/build-module/dataform-controls/array.js +3 -2
- package/build-module/dataform-controls/array.js.map +1 -1
- package/build-module/dataform-controls/checkbox.js +3 -2
- package/build-module/dataform-controls/checkbox.js.map +1 -1
- package/build-module/dataform-controls/color.js +4 -3
- package/build-module/dataform-controls/color.js.map +1 -1
- package/build-module/dataform-controls/date.js +7 -6
- package/build-module/dataform-controls/date.js.map +1 -1
- package/build-module/dataform-controls/datetime.js +7 -12
- package/build-module/dataform-controls/datetime.js.map +2 -2
- package/build-module/dataform-controls/email.js +2 -1
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-controls/index.js +3 -2
- package/build-module/dataform-controls/index.js.map +1 -1
- package/build-module/dataform-controls/integer.js +2 -1
- package/build-module/dataform-controls/integer.js.map +1 -1
- package/build-module/dataform-controls/number.js +2 -1
- package/build-module/dataform-controls/number.js.map +1 -1
- package/build-module/dataform-controls/password.js +9 -6
- package/build-module/dataform-controls/password.js.map +2 -2
- package/build-module/dataform-controls/radio.js +3 -2
- package/build-module/dataform-controls/radio.js.map +1 -1
- package/build-module/dataform-controls/select.js +3 -2
- package/build-module/dataform-controls/select.js.map +1 -1
- package/build-module/dataform-controls/telephone.js +2 -1
- package/build-module/dataform-controls/telephone.js.map +1 -1
- package/build-module/dataform-controls/text.js +2 -1
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/textarea.js +3 -2
- package/build-module/dataform-controls/textarea.js.map +1 -1
- package/build-module/dataform-controls/toggle-group.js +3 -2
- package/build-module/dataform-controls/toggle-group.js.map +1 -1
- package/build-module/dataform-controls/toggle.js +3 -2
- package/build-module/dataform-controls/toggle.js.map +1 -1
- package/build-module/dataform-controls/url.js +2 -1
- package/build-module/dataform-controls/url.js.map +1 -1
- package/build-module/dataform-controls/utils/get-custom-validity.js +1 -0
- package/build-module/dataform-controls/utils/get-custom-validity.js.map +1 -1
- package/build-module/dataform-controls/utils/relative-date-control.js +3 -2
- package/build-module/dataform-controls/utils/relative-date-control.js.map +1 -1
- package/build-module/dataform-controls/utils/validated-input.js +3 -2
- package/build-module/dataform-controls/utils/validated-input.js.map +1 -1
- package/build-module/dataform-controls/utils/validated-number.js +3 -2
- package/build-module/dataform-controls/utils/validated-number.js.map +1 -1
- package/build-module/dataform-layouts/card/index.js +95 -42
- package/build-module/dataform-layouts/card/index.js.map +3 -3
- package/build-module/dataform-layouts/data-form-layout.js +8 -15
- package/build-module/dataform-layouts/data-form-layout.js.map +2 -2
- package/build-module/dataform-layouts/details/index.js +47 -0
- package/build-module/dataform-layouts/details/index.js.map +7 -0
- package/build-module/dataform-layouts/get-summary-fields.js +2 -1
- package/build-module/dataform-layouts/get-summary-fields.js.map +1 -1
- package/build-module/dataform-layouts/index.js +8 -2
- package/build-module/dataform-layouts/index.js.map +2 -2
- package/build-module/dataform-layouts/{normalize-form-fields.js → normalize-form.js} +43 -19
- package/build-module/dataform-layouts/normalize-form.js.map +7 -0
- package/build-module/dataform-layouts/panel/dropdown.js +7 -7
- package/build-module/dataform-layouts/panel/dropdown.js.map +2 -2
- package/build-module/dataform-layouts/panel/index.js +9 -14
- package/build-module/dataform-layouts/panel/index.js.map +2 -2
- package/build-module/dataform-layouts/panel/modal.js +7 -7
- package/build-module/dataform-layouts/panel/modal.js.map +2 -2
- package/build-module/dataform-layouts/panel/summary-button.js +2 -1
- package/build-module/dataform-layouts/panel/summary-button.js.map +1 -1
- package/build-module/dataform-layouts/regular/index.js +6 -9
- package/build-module/dataform-layouts/regular/index.js.map +2 -2
- package/build-module/dataform-layouts/row/index.js +9 -23
- package/build-module/dataform-layouts/row/index.js.map +2 -2
- package/build-module/dataviews-layouts/grid/index.js +3 -2
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/preview-size-picker.js +3 -2
- package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +13 -2
- package/build-module/dataviews-layouts/index.js.map +2 -2
- package/build-module/dataviews-layouts/list/index.js +3 -2
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/picker-grid/index.js +3 -2
- package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/picker-table/index.js +397 -0
- package/build-module/dataviews-layouts/picker-table/index.js.map +7 -0
- package/build-module/dataviews-layouts/table/column-header-menu.js +5 -4
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +2 -2
- package/build-module/dataviews-layouts/table/column-primary.js +3 -7
- package/build-module/dataviews-layouts/table/column-primary.js.map +2 -2
- package/build-module/dataviews-layouts/table/density-picker.js +2 -1
- package/build-module/dataviews-layouts/table/density-picker.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +36 -3
- package/build-module/dataviews-layouts/table/index.js.map +2 -2
- package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js +2 -1
- package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -1
- package/build-module/dataviews-layouts/utils/get-data-by-group.js +1 -0
- package/build-module/dataviews-layouts/utils/get-data-by-group.js.map +1 -1
- package/build-module/dataviews-layouts/utils/grid-items.js +3 -2
- package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -1
- package/build-module/dataviews-layouts/utils/item-click-wrapper.js +2 -1
- package/build-module/dataviews-layouts/utils/item-click-wrapper.js.map +1 -1
- package/build-module/dataviews-layouts/utils/preview-size-picker.js +3 -2
- package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -1
- package/build-module/field-types/array.js +2 -1
- package/build-module/field-types/array.js.map +1 -1
- package/build-module/field-types/boolean.js +2 -1
- package/build-module/field-types/boolean.js.map +1 -1
- package/build-module/field-types/color.js +2 -1
- package/build-module/field-types/color.js.map +1 -1
- package/build-module/field-types/date.js +3 -2
- package/build-module/field-types/date.js.map +1 -1
- package/build-module/field-types/datetime.js +16 -2
- package/build-module/field-types/datetime.js.map +2 -2
- package/build-module/field-types/email.js +3 -2
- package/build-module/field-types/email.js.map +1 -1
- package/build-module/field-types/index.js +2 -1
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/integer.js +2 -1
- package/build-module/field-types/integer.js.map +1 -1
- package/build-module/field-types/media.js +1 -0
- package/build-module/field-types/media.js.map +1 -1
- package/build-module/field-types/number.js +2 -1
- package/build-module/field-types/number.js.map +1 -1
- package/build-module/field-types/password.js +2 -1
- package/build-module/field-types/password.js.map +1 -1
- package/build-module/field-types/telephone.js +2 -1
- package/build-module/field-types/telephone.js.map +1 -1
- package/build-module/field-types/text.js +2 -1
- package/build-module/field-types/text.js.map +1 -1
- package/build-module/field-types/url.js +2 -1
- package/build-module/field-types/url.js.map +1 -1
- package/build-module/field-types/utils/parse-date-time.js +14 -0
- package/build-module/field-types/utils/parse-date-time.js.map +7 -0
- package/build-module/field-types/utils/render-from-elements.js +1 -0
- package/build-module/field-types/utils/render-from-elements.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/use-elements.js +2 -1
- package/build-module/hooks/use-elements.js.map +1 -1
- package/build-module/hooks/use-form-validity.js +424 -321
- package/build-module/hooks/use-form-validity.js.map +3 -3
- package/build-module/index.js +1 -0
- package/build-module/index.js.map +1 -1
- package/build-module/lock-unlock.js +2 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/utils/filter-sort-and-paginate.js +2 -1
- package/build-module/utils/filter-sort-and-paginate.js.map +1 -1
- package/build-module/utils/has-elements.js +1 -0
- package/build-module/utils/has-elements.js.map +1 -1
- package/build-module/utils/normalize-fields.js +3 -2
- package/build-module/utils/normalize-fields.js.map +1 -1
- package/build-style/style-rtl.css +41 -51
- package/build-style/style.css +41 -51
- package/build-types/components/dataform/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/utils.d.ts.map +1 -1
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/properties-section.d.ts +4 -0
- package/build-types/components/dataviews-view-config/properties-section.d.ts.map +1 -0
- package/build-types/constants.d.ts +1 -0
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/datetime.d.ts.map +1 -1
- package/build-types/dataform-controls/password.d.ts.map +1 -1
- package/build-types/dataform-layouts/card/index.d.ts +3 -3
- package/build-types/dataform-layouts/card/index.d.ts.map +1 -1
- package/build-types/dataform-layouts/data-form-layout.d.ts +4 -4
- package/build-types/dataform-layouts/data-form-layout.d.ts.map +1 -1
- package/build-types/dataform-layouts/details/index.d.ts +6 -0
- package/build-types/dataform-layouts/details/index.d.ts.map +1 -0
- package/build-types/dataform-layouts/get-summary-fields.d.ts.map +1 -1
- package/build-types/dataform-layouts/index.d.ts +7 -2
- package/build-types/dataform-layouts/index.d.ts.map +1 -1
- package/build-types/dataform-layouts/normalize-form.d.ts +8 -0
- package/build-types/dataform-layouts/normalize-form.d.ts.map +1 -0
- package/build-types/dataform-layouts/panel/dropdown.d.ts +2 -2
- package/build-types/dataform-layouts/panel/dropdown.d.ts.map +1 -1
- package/build-types/dataform-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataform-layouts/panel/modal.d.ts +2 -2
- package/build-types/dataform-layouts/panel/modal.d.ts.map +1 -1
- package/build-types/dataform-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataform-layouts/row/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +8 -0
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/picker-table/index.d.ts +4 -0
- package/build-types/dataviews-layouts/picker-table/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts +3 -3
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/field-types/datetime.d.ts +1 -1
- package/build-types/field-types/datetime.d.ts.map +1 -1
- package/build-types/field-types/utils/parse-date-time.d.ts +2 -0
- package/build-types/field-types/utils/parse-date-time.d.ts.map +1 -0
- package/build-types/hooks/use-form-validity.d.ts.map +1 -1
- package/build-types/stories/dataform.story.d.ts +13 -11
- package/build-types/stories/dataform.story.d.ts.map +1 -1
- package/build-types/stories/dataviews-picker.story.d.ts +33 -0
- package/build-types/stories/dataviews-picker.story.d.ts.map +1 -1
- package/build-types/stories/dataviews.story.d.ts +7 -1
- package/build-types/stories/dataviews.story.d.ts.map +1 -1
- package/build-types/test/normalize-form.d.ts +2 -0
- package/build-types/test/normalize-form.d.ts.map +1 -0
- package/build-types/types/dataform.d.ts +27 -9
- package/build-types/types/dataform.d.ts.map +1 -1
- package/build-types/types/dataviews.d.ts +23 -2
- package/build-types/types/dataviews.d.ts.map +1 -1
- package/build-wp/index.js +2258 -1817
- package/package.json +15 -15
- package/src/components/dataform/index.tsx +3 -1
- package/src/components/dataviews/style.scss +1 -1
- package/src/components/dataviews-bulk-actions/style.scss +1 -1
- package/src/components/dataviews-filters/filter.tsx +16 -1
- package/src/components/dataviews-filters/style.scss +1 -1
- package/src/components/dataviews-item-actions/index.tsx +37 -14
- package/src/components/dataviews-pagination/style.scss +2 -2
- package/src/components/dataviews-view-config/index.tsx +8 -504
- package/src/components/dataviews-view-config/properties-section.tsx +201 -0
- package/src/components/dataviews-view-config/style.scss +2 -39
- package/src/constants.ts +1 -0
- package/src/dataform-controls/datetime.tsx +3 -10
- package/src/dataform-controls/password.tsx +16 -12
- package/src/dataform-layouts/card/index.tsx +89 -33
- package/src/dataform-layouts/data-form-layout.tsx +12 -23
- package/src/dataform-layouts/details/index.tsx +71 -0
- package/src/dataform-layouts/details/style.scss +5 -0
- package/src/dataform-layouts/index.tsx +10 -3
- package/src/dataform-layouts/{normalize-form-fields.ts → normalize-form.ts} +50 -23
- package/src/dataform-layouts/panel/dropdown.tsx +10 -13
- package/src/dataform-layouts/panel/index.tsx +9 -24
- package/src/dataform-layouts/panel/modal.tsx +15 -15
- package/src/dataform-layouts/regular/index.tsx +7 -12
- package/src/dataform-layouts/row/index.tsx +13 -26
- package/src/dataviews-layouts/index.ts +10 -0
- package/src/dataviews-layouts/picker-table/index.tsx +487 -0
- package/src/dataviews-layouts/picker-table/style.scss +45 -0
- package/src/dataviews-layouts/table/column-header-menu.tsx +3 -2
- package/src/dataviews-layouts/table/column-primary.tsx +4 -7
- package/src/dataviews-layouts/table/index.tsx +37 -2
- package/src/dataviews-layouts/table/style.scss +2 -2
- package/src/field-types/datetime.tsx +16 -5
- package/src/field-types/utils/parse-date-time.ts +17 -0
- package/src/hooks/use-form-validity.ts +572 -422
- package/src/stories/dataform.story.tsx +604 -456
- package/src/stories/dataviews-picker.story.tsx +166 -38
- package/src/stories/dataviews.story.tsx +10 -2
- package/src/stories/field-types.story.tsx +7 -7
- package/src/style.scss +2 -0
- package/src/test/normalize-form.ts +568 -0
- package/src/test/use-form-validity.ts +318 -33
- package/src/types/dataform.ts +36 -11
- package/src/types/dataviews.ts +36 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build/dataform-layouts/is-combined-field.js.map +0 -7
- package/build/dataform-layouts/normalize-form-fields.js.map +0 -7
- package/build-module/dataform-layouts/is-combined-field.js +0 -7
- package/build-module/dataform-layouts/is-combined-field.js.map +0 -7
- package/build-module/dataform-layouts/normalize-form-fields.js.map +0 -7
- package/build-types/dataform-layouts/is-combined-field.d.ts +0 -6
- package/build-types/dataform-layouts/is-combined-field.d.ts.map +0 -1
- package/build-types/dataform-layouts/normalize-form-fields.d.ts +0 -19
- package/build-types/dataform-layouts/normalize-form-fields.d.ts.map +0 -1
- package/build-types/test/normalize-form-fields.d.ts +0 -2
- package/build-types/test/normalize-form-fields.d.ts.map +0 -1
- package/src/dataform-layouts/is-combined-field.ts +0 -10
- package/src/test/normalize-form-fields.ts +0 -317
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/use-form-validity.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport normalizeFields from '../utils/normalize-fields';\nimport normalizeFormFields from '../dataform-layouts/normalize-form-fields';\nimport type {\n\tCombinedFormField,\n\tField,\n\tFieldValidity,\n\tForm,\n\tFormValidity,\n\tNormalizedField,\n} from '../types';\nconst isEmptyNullOrUndefined = ( value: any ) =>\n\t[ undefined, '', null ].includes( value );\n\nconst isArrayOrElementsEmptyNullOrUndefined = ( value: any ) => {\n\treturn (\n\t\t! Array.isArray( value ) ||\n\t\tvalue.length === 0 ||\n\t\tvalue.every( ( element: any ) => isEmptyNullOrUndefined( element ) )\n\t);\n};\n\nfunction isInvalidForRequired( fieldType: string | undefined, value: any ) {\n\tif (\n\t\t( fieldType === undefined && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'text' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'email' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'url' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'telephone' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'password' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'integer' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'number' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'array' &&\n\t\t\tisArrayOrElementsEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'boolean' && value !== true )\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction isFormValid( formValidity: FormValidity | undefined ): boolean {\n\tif ( ! formValidity ) {\n\t\treturn true;\n\t}\n\n\treturn Object.values( formValidity ).every( ( fieldValidation ) => {\n\t\treturn Object.entries( fieldValidation ).every(\n\t\t\t( [ key, validation ] ) => {\n\t\t\t\tif (\n\t\t\t\t\tkey === 'children' &&\n\t\t\t\t\tvalidation &&\n\t\t\t\t\ttypeof validation === 'object'\n\t\t\t\t) {\n\t\t\t\t\t// Recursively check children validations\n\t\t\t\t\treturn isFormValid( validation as FormValidity );\n\t\t\t\t}\n\t\t\t\treturn validation.type === 'valid';\n\t\t\t}\n\t\t);\n\t} );\n}\n\nfunction updateFieldValidity(\n\tsetFormValidity: React.Dispatch< React.SetStateAction< FormValidity > >,\n\tparentFieldId: string | undefined,\n\tfieldId: string,\n\tnewValidity: FieldValidity\n) {\n\tif ( parentFieldId ) {\n\t\tsetFormValidity( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ parentFieldId ]: {\n\t\t\t\t...prev?.[ parentFieldId ],\n\t\t\t\tchildren: {\n\t\t\t\t\t...prev?.[ parentFieldId ]?.children,\n\t\t\t\t\t[ fieldId ]: {\n\t\t\t\t\t\t...newValidity,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t} ) );\n\t} else {\n\t\tsetFormValidity( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldId ]: {\n\t\t\t\t...newValidity,\n\t\t\t},\n\t\t} ) );\n\t}\n}\n\nfunction getFieldsToValidate< Item >(\n\tfields: Field< Item >[],\n\tform: Form\n): {\n\tfields: NormalizedField< Item >[];\n\tfieldToParent: Map< string, string >;\n} {\n\tconst formFields = normalizeFormFields( form );\n\tif ( formFields.length === 0 ) {\n\t\treturn { fields: [], fieldToParent: new Map() };\n\t}\n\n\tconst fieldToParent = new Map< string, string >();\n\tconst fieldIdsToValidate: string[] = [];\n\tformFields.forEach( ( formField ) => {\n\t\tif ( !! ( formField as CombinedFormField ).children ) {\n\t\t\t( formField as CombinedFormField ).children.forEach( ( child ) => {\n\t\t\t\tconst childId = typeof child === 'string' ? child : child.id;\n\t\t\t\tfieldIdsToValidate.push( childId );\n\t\t\t\tfieldToParent.set( childId, formField.id );\n\t\t\t} );\n\t\t} else {\n\t\t\tfieldIdsToValidate.push( formField.id );\n\t\t}\n\t} );\n\n\treturn {\n\t\tfields: normalizeFields(\n\t\t\tfields.filter( ( field ) =>\n\t\t\t\tfieldIdsToValidate.includes( field.id )\n\t\t\t)\n\t\t),\n\t\tfieldToParent,\n\t};\n}\n\n/**\n * Hook that validates a form item and returns an object with error messages for each field.\n *\n * @param item The item to validate.\n * @param fields Fields config.\n * @param form Form config.\n *\n * @return Record of field IDs to error messages (undefined means no error).\n */\nexport function useFormValidity< Item >(\n\titem: Item,\n\tfields: Field< Item >[],\n\tform: Form\n): { validity: FormValidity; isValid: boolean } {\n\tconst [ formValidity, setFormValidity ] = useState< FormValidity >();\n\tconst previousValidatedValuesRef = useRef< Record< string, any > >( {} );\n\n\t// The following counters are used to track the validation promises triggered\n\t// by executing isValid.custom and the elements validation. When the promise resolves,\n\t// it will update the form validity state ONLY if its counter matches the current one.\n\tconst customValidationCounterRef = useRef< Record< string, number > >( {} );\n\tconst elementsValidationCounterRef = useRef< Record< string, number > >(\n\t\t{}\n\t);\n\n\tconst validate = useCallback( () => {\n\t\tconst { fields: fieldsToValidate, fieldToParent } = getFieldsToValidate(\n\t\t\tfields,\n\t\t\tform\n\t\t);\n\t\tif ( fieldsToValidate.length === 0 ) {\n\t\t\tsetFormValidity( undefined );\n\t\t\treturn;\n\t\t}\n\n\t\tfieldsToValidate.forEach( ( field ) => {\n\t\t\tconst value = field.getValue( { item } );\n\t\t\tif (\n\t\t\t\tpreviousValidatedValuesRef.current.hasOwnProperty( field.id ) &&\n\t\t\t\tvalue === previousValidatedValuesRef.current[ field.id ]\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreviousValidatedValuesRef.current[ field.id ] = value;\n\n\t\t\tconst parentFieldId = fieldToParent.get( field.id );\n\n\t\t\t// isValid.required\n\t\t\tif (\n\t\t\t\tfield.isValid.required &&\n\t\t\t\tisInvalidForRequired( field.type, value )\n\t\t\t) {\n\t\t\t\tupdateFieldValidity( setFormValidity, parentFieldId, field.id, {\n\t\t\t\t\trequired: { type: 'invalid' },\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// isValid.elements (static elements)\n\t\t\tif (\n\t\t\t\tfield.isValid.elements &&\n\t\t\t\tfield.hasElements &&\n\t\t\t\t! field.getElements &&\n\t\t\t\tArray.isArray( field.elements )\n\t\t\t) {\n\t\t\t\tconst validValues = field.elements.map( ( el ) => el.value );\n\n\t\t\t\tif (\n\t\t\t\t\tfield.type !== 'array' &&\n\t\t\t\t\t! validValues.includes( value )\n\t\t\t\t) {\n\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: 'Value must be one of the elements.',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( field.type === 'array' && ! Array.isArray( value ) ) {\n\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: 'Value must be an array.',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tfield.type === 'array' &&\n\t\t\t\t\tvalue.some( ( v: any ) => ! validValues.includes( v ) )\n\t\t\t\t) {\n\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: 'Value must be one of the elements.',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// isValid.elements (get them via getElements first)\n\t\t\tif (\n\t\t\t\tfield.isValid.elements &&\n\t\t\t\tfield.hasElements &&\n\t\t\t\ttypeof field.getElements === 'function'\n\t\t\t) {\n\t\t\t\tconst currentToken =\n\t\t\t\t\t( elementsValidationCounterRef.current[ field.id ] || 0 ) +\n\t\t\t\t\t1;\n\t\t\t\telementsValidationCounterRef.current[ field.id ] = currentToken;\n\t\t\t\tupdateFieldValidity( setFormValidity, parentFieldId, field.id, {\n\t\t\t\t\telements: {\n\t\t\t\t\t\ttype: 'validating',\n\t\t\t\t\t\tmessage: 'Validating...',\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tfield\n\t\t\t\t\t.getElements()\n\t\t\t\t\t.then( ( result ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\telementsValidationCounterRef.current[ field.id ] !==\n\t\t\t\t\t\t\tcurrentToken\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( ! Array.isArray( result ) ) {\n\t\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\t\tmessage: 'Could not validate elements.',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst validValues = result.map( ( el ) => el.value );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfield.type !== 'array' &&\n\t\t\t\t\t\t\t! validValues.includes( value )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\t'Value must be one of the elements.',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfield.type === 'array' &&\n\t\t\t\t\t\t\t! Array.isArray( value )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\t\tmessage: 'Value must be an array.',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfield.type === 'array' &&\n\t\t\t\t\t\t\tvalue.some(\n\t\t\t\t\t\t\t\t( v: any ) => ! validValues.includes( v )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\t'Value must be one of the elements.',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )\n\t\t\t\t\t.catch( ( error ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\telementsValidationCounterRef.current[ field.id ] !==\n\t\t\t\t\t\t\tcurrentToken\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check isValid.custom\n\t\t\tlet customError;\n\t\t\ttry {\n\t\t\t\tcustomError = field.isValid?.custom?.(\n\t\t\t\t\tdeepMerge(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\tfield.setValue( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t\t),\n\t\t\t\t\tfield\n\t\t\t\t);\n\t\t\t} catch ( error: any ) {\n\t\t\t\tlet errorMessage;\n\t\t\t\tif ( error instanceof Error ) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tString( error ) ||\n\t\t\t\t\t\t__( 'Unknown error when running custom validation.' );\n\t\t\t\t}\n\n\t\t\t\tupdateFieldValidity( setFormValidity, parentFieldId, field.id, {\n\t\t\t\t\tcustom: {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// \u2014 isValid.custom (sync version)\n\t\t\tif ( typeof customError === 'string' ) {\n\t\t\t\tupdateFieldValidity( setFormValidity, parentFieldId, field.id, {\n\t\t\t\t\tcustom: {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage: customError,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// \u2014 isValid.custom (async version)\n\t\t\tif ( customError instanceof Promise ) {\n\t\t\t\t// Increment token for this field to track the latest validation\n\t\t\t\tconst currentToken =\n\t\t\t\t\t( customValidationCounterRef.current[ field.id ] || 0 ) + 1;\n\t\t\t\tcustomValidationCounterRef.current[ field.id ] = currentToken;\n\n\t\t\t\tupdateFieldValidity( setFormValidity, parentFieldId, field.id, {\n\t\t\t\t\tcustom: {\n\t\t\t\t\t\ttype: 'validating',\n\t\t\t\t\t\tmessage: 'Validating...',\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tcustomError\n\t\t\t\t\t.then( ( result ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcustomValidationCounterRef.current[ field.id ] !==\n\t\t\t\t\t\t\tcurrentToken\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( result === null ) {\n\t\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\t\t\ttype: 'valid',\n\t\t\t\t\t\t\t\t\t\tmessage: 'Valid',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( typeof result === 'string' ) {\n\t\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\t\tmessage: result,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )\n\t\t\t\t\t.catch( ( error ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcustomValidationCounterRef.current[ field.id ] !==\n\t\t\t\t\t\t\tcurrentToken\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tupdateFieldValidity(\n\t\t\t\t\t\t\tsetFormValidity,\n\t\t\t\t\t\t\tparentFieldId,\n\t\t\t\t\t\t\tfield.id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// No errors for this field, remove from errors object\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tif ( ! prev ) {\n\t\t\t\t\treturn prev;\n\t\t\t\t}\n\n\t\t\t\tif ( parentFieldId ) {\n\t\t\t\t\t// This field is a child - remove it from parent's children\n\t\t\t\t\tconst parentField = prev[ parentFieldId ];\n\t\t\t\t\tif ( ! parentField?.children ) {\n\t\t\t\t\t\treturn prev;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { [ field.id ]: removed, ...restChildren } =\n\t\t\t\t\t\tparentField.children as any;\n\n\t\t\t\t\t// If no more children, remove the children property\n\t\t\t\t\tif ( Object.keys( restChildren ).length === 0 ) {\n\t\t\t\t\t\tconst { children, ...restParent } = parentField;\n\t\t\t\t\t\tif ( Object.keys( restParent ).length === 0 ) {\n\t\t\t\t\t\t\t// Remove parent field entirely if no other validations\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t[ parentFieldId ]: removedParent,\n\t\t\t\t\t\t\t\t...restFields\n\t\t\t\t\t\t\t} = prev;\n\t\t\t\t\t\t\treturn Object.keys( restFields ).length === 0\n\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t: restFields;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t[ parentFieldId ]: restParent,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t[ parentFieldId ]: {\n\t\t\t\t\t\t\t...parentField,\n\t\t\t\t\t\t\tchildren: restChildren,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Regular field - remove from top level\n\t\t\t\tif ( ! prev[ field.id ] ) {\n\t\t\t\t\treturn prev;\n\t\t\t\t}\n\n\t\t\t\tconst { [ field.id ]: removed, ...rest } = prev;\n\n\t\t\t\tif ( Object.keys( rest ).length === 0 ) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn rest;\n\t\t\t} );\n\t\t} );\n\t}, [ item, fields, form ] );\n\n\tuseEffect( () => {\n\t\tvalidate();\n\t}, [ validate ] );\n\n\treturn {\n\t\tvalidity: formValidity,\n\t\tisValid: isFormValid( formValidity ),\n\t};\n}\n\nexport default useFormValidity;\n"],
|
|
5
|
-
"mappings": "AAGA,OAAO,eAAe;
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport normalizeFields from '../utils/normalize-fields';\nimport normalizeForm from '../dataform-layouts/normalize-form';\nimport type {\n\tField,\n\tFieldValidity,\n\tForm,\n\tFormValidity,\n\tNormalizedField,\n\tNormalizedFormField,\n} from '../types';\nconst isEmptyNullOrUndefined = ( value: any ) =>\n\t[ undefined, '', null ].includes( value );\n\nconst isArrayOrElementsEmptyNullOrUndefined = ( value: any ) => {\n\treturn (\n\t\t! Array.isArray( value ) ||\n\t\tvalue.length === 0 ||\n\t\tvalue.every( ( element: any ) => isEmptyNullOrUndefined( element ) )\n\t);\n};\n\nfunction isInvalidForRequired( fieldType: string | undefined, value: any ) {\n\tif (\n\t\t( fieldType === undefined && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'text' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'email' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'url' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'telephone' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'password' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'integer' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'number' && isEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'array' &&\n\t\t\tisArrayOrElementsEmptyNullOrUndefined( value ) ) ||\n\t\t( fieldType === 'boolean' && value !== true )\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction isFormValid( formValidity: FormValidity | undefined ): boolean {\n\tif ( ! formValidity ) {\n\t\treturn true;\n\t}\n\n\treturn Object.values( formValidity ).every( ( fieldValidation ) => {\n\t\treturn Object.entries( fieldValidation ).every(\n\t\t\t( [ key, validation ] ) => {\n\t\t\t\tif (\n\t\t\t\t\tkey === 'children' &&\n\t\t\t\t\tvalidation &&\n\t\t\t\t\ttypeof validation === 'object'\n\t\t\t\t) {\n\t\t\t\t\t// Recursively check children validations\n\t\t\t\t\treturn isFormValid( validation as FormValidity );\n\t\t\t\t}\n\t\t\t\treturn validation.type === 'valid';\n\t\t\t}\n\t\t);\n\t} );\n}\n\ntype FormFieldToValidate< Item > = {\n\tid: string;\n\tchildren: FormFieldToValidate< Item >[];\n\tfield?: NormalizedField< Item >;\n};\n\nfunction getFormFieldsToValidate< Item >(\n\tform: Form,\n\tfields: Field< Item >[]\n): FormFieldToValidate< Item >[] {\n\tconst normalizedForm = normalizeForm( form );\n\tif ( normalizedForm.fields.length === 0 ) {\n\t\treturn [];\n\t}\n\n\t// Create a map of field IDs to Field definitions for fast lookup\n\tconst fieldsMap = new Map< string, Field< Item > >();\n\tfields.forEach( ( field ) => {\n\t\tfieldsMap.set( field.id, field );\n\t} );\n\n\t// Recursive function to process form fields and their children\n\tfunction processFormField(\n\t\tformField: NormalizedFormField\n\t): FormFieldToValidate< Item > | null {\n\t\t// Handle combined fields (fields with children)\n\t\tif ( 'children' in formField && Array.isArray( formField.children ) ) {\n\t\t\tconst processedChildren = formField.children\n\t\t\t\t.map( processFormField )\n\t\t\t\t.filter( ( child ) => child !== null );\n\n\t\t\tif ( processedChildren.length === 0 ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst fieldDef = fieldsMap.get( formField.id );\n\t\t\tif ( fieldDef ) {\n\t\t\t\tconst [ normalizedField ] = normalizeFields< Item >( [\n\t\t\t\t\tfieldDef,\n\t\t\t\t] );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: formField.id,\n\t\t\t\t\tchildren: processedChildren,\n\t\t\t\t\tfield: normalizedField,\n\t\t\t\t} satisfies FormFieldToValidate< Item >;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: formField.id,\n\t\t\t\tchildren: processedChildren,\n\t\t\t} satisfies FormFieldToValidate< Item >;\n\t\t}\n\n\t\t// Handle leaf fields (fields without children)\n\t\tconst fieldDef = fieldsMap.get( formField.id );\n\t\tif ( ! fieldDef ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [ normalizedField ] = normalizeFields< Item >( [ fieldDef ] );\n\t\treturn {\n\t\t\tid: formField.id,\n\t\t\tchildren: [],\n\t\t\tfield: normalizedField,\n\t\t} as FormFieldToValidate< Item >;\n\t}\n\n\tconst toValidate = normalizedForm.fields\n\t\t.map( processFormField )\n\t\t.filter( ( field ) => field !== null );\n\n\treturn toValidate;\n}\n\nfunction setValidityAtPath(\n\tformValidity: FormValidity | undefined,\n\tfieldValidity: FieldValidity,\n\tpath: string[]\n): FormValidity {\n\t// Handle empty validity or empty path\n\tif ( ! formValidity ) {\n\t\tformValidity = {};\n\t}\n\n\tif ( path.length === 0 ) {\n\t\treturn formValidity;\n\t}\n\n\t// Clone the root to avoid mutations\n\tconst result = { ...formValidity };\n\n\t// Navigate through the result tree,\n\t// setting up empty paths if they don't exist.\n\tlet current: any = result;\n\tfor ( let i = 0; i < path.length - 1; i++ ) {\n\t\tconst segment = path[ i ];\n\t\tif ( ! current[ segment ] ) {\n\t\t\tcurrent[ segment ] = {};\n\t\t}\n\n\t\tcurrent = current[ segment ];\n\t}\n\n\t// At the final destination, merge the new validity with the existing.\n\tconst finalKey = path[ path.length - 1 ];\n\tcurrent[ finalKey ] = {\n\t\t...( current[ finalKey ] || {} ),\n\t\t...fieldValidity,\n\t};\n\n\treturn result;\n}\n\nfunction handleElementsValidationAsync< Item >(\n\tpromise: Promise< any >,\n\tformField: FormFieldToValidate< Item >,\n\tpromiseHandler: PromiseHandler< Item >\n) {\n\tconst { elementsCounterRef, setFormValidity, path, item } = promiseHandler;\n\tconst currentToken =\n\t\t( elementsCounterRef.current[ formField.id ] || 0 ) + 1;\n\telementsCounterRef.current[ formField.id ] = currentToken;\n\n\tpromise\n\t\t.then( ( result ) => {\n\t\t\tif ( currentToken !== elementsCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! Array.isArray( result ) ) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: __( 'Could not validate elements.' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst validValues = result.map( ( el ) => el.value );\n\t\t\tif (\n\t\t\t\t!! formField.field &&\n\t\t\t\tformField.field.type !== 'array' &&\n\t\t\t\t! validValues.includes( formField.field.getValue( { item } ) )\n\t\t\t) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t\t'Value must be one of the elements.'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!! formField.field &&\n\t\t\t\tformField.field.type === 'array' &&\n\t\t\t\t! Array.isArray( formField.field.getValue( { item } ) )\n\t\t\t) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: __( 'Value must be an array.' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!! formField.field &&\n\t\t\t\tformField.field.type === 'array' &&\n\t\t\t\tformField.field\n\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t.some( ( v: any ) => ! validValues.includes( v ) )\n\t\t\t) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t\t'Value must be one of the elements.'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t}\n\t\t} )\n\t\t.catch( ( error ) => {\n\t\t\tif ( currentToken !== elementsCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet errorMessage;\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else {\n\t\t\t\terrorMessage =\n\t\t\t\t\tString( error ) ||\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Unknown error when running elements validation asynchronously.'\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\tprev,\n\t\t\t\t\t{\n\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t);\n\t\t\t\treturn newFormValidity;\n\t\t\t} );\n\t\t} );\n}\n\nfunction handleCustomValidationAsync< Item >(\n\tpromise: Promise< any >,\n\tformField: FormFieldToValidate< Item >,\n\tpromiseHandler: PromiseHandler< Item >\n) {\n\tconst { customCounterRef, setFormValidity, path } = promiseHandler;\n\tconst currentToken = ( customCounterRef.current[ formField.id ] || 0 ) + 1;\n\tcustomCounterRef.current[ formField.id ] = currentToken;\n\n\tpromise\n\t\t.then( ( result ) => {\n\t\t\tif ( currentToken !== customCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( result === null ) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\ttype: 'valid',\n\t\t\t\t\t\t\t\tmessage: __( 'Valid' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( typeof result === 'string' ) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: result,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\tprev,\n\t\t\t\t\t{\n\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\tmessage: __( 'Validation could not be processed.' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t);\n\t\t\t\treturn newFormValidity;\n\t\t\t} );\n\t\t} )\n\t\t.catch( ( error ) => {\n\t\t\tif ( currentToken !== customCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet errorMessage;\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else {\n\t\t\t\terrorMessage =\n\t\t\t\t\tString( error ) ||\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Unknown error when running custom validation asynchronously.'\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\tprev,\n\t\t\t\t\t{\n\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t);\n\t\t\t\treturn newFormValidity;\n\t\t\t} );\n\t\t} );\n}\n\ntype PromiseHandler< Item > = {\n\tcustomCounterRef: React.MutableRefObject< Record< string, number > >;\n\telementsCounterRef: React.MutableRefObject< Record< string, number > >;\n\tsetFormValidity: React.Dispatch< React.SetStateAction< FormValidity > >;\n\tpath: string[];\n\titem: Item;\n};\n\nfunction validateFormField< Item >(\n\titem: Item,\n\tformField: FormFieldToValidate< Item >,\n\tpromiseHandler: PromiseHandler< Item >\n): FieldValidity | undefined {\n\t// Validate the field: isValid.required\n\tif (\n\t\t!! formField.field &&\n\t\tformField.field.isValid.required &&\n\t\tisInvalidForRequired(\n\t\t\tformField.field.type,\n\t\t\tformField.field.getValue( { item } )\n\t\t)\n\t) {\n\t\treturn {\n\t\t\trequired: { type: 'invalid' },\n\t\t};\n\t}\n\n\t// Validate the field: isValid.elements (static)\n\tif (\n\t\t!! formField.field &&\n\t\tformField.field.isValid.elements &&\n\t\tformField.field.hasElements &&\n\t\t! formField.field.getElements &&\n\t\tArray.isArray( formField.field.elements )\n\t) {\n\t\tconst value = formField.field.getValue( { item } );\n\t\tconst validValues = formField.field.elements.map( ( el ) => el.value );\n\n\t\tif (\n\t\t\tformField.field.type !== 'array' &&\n\t\t\t! validValues.includes( value )\n\t\t) {\n\t\t\treturn {\n\t\t\t\telements: {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: __( 'Value must be one of the elements.' ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif ( formField.field.type === 'array' && ! Array.isArray( value ) ) {\n\t\t\treturn {\n\t\t\t\telements: {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: __( 'Value must be an array.' ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (\n\t\t\tformField.field.type === 'array' &&\n\t\t\tvalue.some( ( v: any ) => ! validValues.includes( v ) )\n\t\t) {\n\t\t\treturn {\n\t\t\t\telements: {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: __( 'Value must be one of the elements.' ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\t// Validate the field: isValid.elements (async)\n\tif (\n\t\t!! formField.field &&\n\t\tformField.field.isValid.elements &&\n\t\tformField.field.hasElements &&\n\t\ttypeof formField.field.getElements === 'function'\n\t) {\n\t\thandleElementsValidationAsync(\n\t\t\tformField.field.getElements(),\n\t\t\tformField,\n\t\t\tpromiseHandler\n\t\t);\n\n\t\treturn {\n\t\t\telements: {\n\t\t\t\ttype: 'validating',\n\t\t\t\tmessage: __( 'Validating\u2026' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.custom (sync)\n\tlet customError;\n\tif ( !! formField.field ) {\n\t\ttry {\n\t\t\tconst value = formField.field.getValue( { item } );\n\t\t\tcustomError = formField.field.isValid?.custom?.(\n\t\t\t\tdeepMerge(\n\t\t\t\t\titem,\n\t\t\t\t\tformField.field.setValue( {\n\t\t\t\t\t\titem,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tformField.field\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tlet errorMessage;\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else {\n\t\t\t\terrorMessage =\n\t\t\t\t\tString( error ) ||\n\t\t\t\t\t__( 'Unknown error when running custom validation.' );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcustom: {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\tif ( typeof customError === 'string' ) {\n\t\treturn {\n\t\t\tcustom: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: customError,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.custom (async)\n\tif ( customError instanceof Promise ) {\n\t\thandleCustomValidationAsync( customError, formField, promiseHandler );\n\n\t\treturn {\n\t\t\tcustom: {\n\t\t\t\ttype: 'validating',\n\t\t\t\tmessage: __( 'Validating\u2026' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate its children.\n\tif ( formField.children.length > 0 ) {\n\t\tconst result: Record< string, FieldValidity | undefined > = {};\n\t\tformField.children.forEach( ( child ) => {\n\t\t\tresult[ child.id ] = validateFormField( item, child, {\n\t\t\t\t...promiseHandler,\n\t\t\t\tpath: [ ...promiseHandler.path, formField.id, 'children' ],\n\t\t\t} );\n\t\t} );\n\n\t\tconst filteredResult: Record< string, FieldValidity > = {};\n\t\tObject.entries( result ).forEach( ( [ key, value ] ) => {\n\t\t\tif ( value !== undefined ) {\n\t\t\t\tfilteredResult[ key ] = value;\n\t\t\t}\n\t\t} );\n\n\t\tif ( Object.keys( filteredResult ).length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tchildren: filteredResult,\n\t\t};\n\t}\n\n\t// No errors for this field or its children.\n\treturn undefined;\n}\n\nfunction getFormFieldValue< Item >(\n\tformField: FormFieldToValidate< Item >,\n\titem: Item\n): any {\n\tconst fieldValue = formField?.field?.getValue( { item } );\n\tif ( formField.children.length === 0 ) {\n\t\treturn fieldValue;\n\t}\n\n\tconst childrenValues = formField.children.map( ( child ) =>\n\t\tgetFormFieldValue( child, item )\n\t);\n\tif ( ! childrenValues ) {\n\t\treturn fieldValue;\n\t}\n\n\treturn {\n\t\tvalue: fieldValue,\n\t\tchildren: childrenValues,\n\t};\n}\n\n/**\n * Hook that validates a form item and returns an object with error messages for each field.\n *\n * @param item The item to validate.\n * @param fields Fields config.\n * @param form Form config.\n *\n * @return Record of field IDs to error messages (undefined means no error).\n */\nexport function useFormValidity< Item >(\n\titem: Item,\n\tfields: Field< Item >[],\n\tform: Form\n): { validity: FormValidity; isValid: boolean } {\n\tconst [ formValidity, setFormValidity ] = useState< FormValidity >();\n\tconst customCounterRef = useRef< Record< string, number > >( {} );\n\tconst elementsCounterRef = useRef< Record< string, number > >( {} );\n\tconst previousValuesRef = useRef< Record< string, any > >( {} );\n\n\tconst validate = useCallback( () => {\n\t\tconst promiseHandler = {\n\t\t\tcustomCounterRef,\n\t\t\telementsCounterRef,\n\t\t\tsetFormValidity,\n\t\t\tpath: [],\n\t\t\titem,\n\t\t};\n\n\t\tconst formFieldsToValidate = getFormFieldsToValidate( form, fields );\n\t\tif ( formFieldsToValidate.length === 0 ) {\n\t\t\tsetFormValidity( undefined );\n\t\t\treturn;\n\t\t}\n\n\t\tconst newFormValidity: FormValidity = {};\n\t\tconst untouchedFields: string[] = [];\n\t\tformFieldsToValidate.forEach( ( formField ) => {\n\t\t\t// Skip fields that did not change.\n\t\t\tconst value = getFormFieldValue< Item >( formField, item );\n\t\t\tif (\n\t\t\t\tpreviousValuesRef.current.hasOwnProperty( formField.id ) &&\n\t\t\t\tfastDeepEqual(\n\t\t\t\t\tpreviousValuesRef.current[ formField.id ],\n\t\t\t\t\tvalue\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tuntouchedFields.push( formField.id );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreviousValuesRef.current[ formField.id ] = value;\n\n\t\t\t// Calculate validity for those fields that changed.\n\t\t\tconst fieldValidity = validateFormField(\n\t\t\t\titem,\n\t\t\t\tformField,\n\t\t\t\tpromiseHandler\n\t\t\t);\n\t\t\tif ( fieldValidity !== undefined ) {\n\t\t\t\tnewFormValidity[ formField.id ] = fieldValidity;\n\t\t\t}\n\t\t} );\n\n\t\tsetFormValidity( ( existingFormValidity ) => {\n\t\t\tlet validity: FormValidity = {\n\t\t\t\t...existingFormValidity,\n\t\t\t\t...newFormValidity,\n\t\t\t};\n\n\t\t\tconst fieldsToKeep = [\n\t\t\t\t...untouchedFields,\n\t\t\t\t...Object.keys( newFormValidity ),\n\t\t\t];\n\t\t\tObject.keys( validity ).forEach( ( key ) => {\n\t\t\t\tif ( validity && ! fieldsToKeep.includes( key ) ) {\n\t\t\t\t\tdelete validity[ key ];\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( Object.keys( validity ).length === 0 ) {\n\t\t\t\tvalidity = undefined;\n\t\t\t}\n\n\t\t\tconst areEqual = fastDeepEqual( existingFormValidity, validity );\n\t\t\tif ( areEqual ) {\n\t\t\t\treturn existingFormValidity;\n\t\t\t}\n\n\t\t\treturn validity;\n\t\t} );\n\t}, [ item, fields, form ] );\n\n\tuseEffect( () => {\n\t\tvalidate();\n\t}, [ validate ] );\n\n\treturn {\n\t\tvalidity: formValidity,\n\t\tisValid: isFormValid( formValidity ),\n\t};\n}\n\nexport default useFormValidity;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["fieldDef", "normalizedField"]
|
|
7
7
|
}
|
package/build-module/index.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
4
|
"sourcesContent": ["export { default as DataViews } from './components/dataviews';\nexport { default as DataViewsPicker } from './components/dataviews-picker';\nexport { default as DataForm } from './components/dataform';\nexport { default as filterSortAndPaginate } from './utils/filter-sort-and-paginate';\nexport { useFormValidity } from './hooks';\nexport { VIEW_LAYOUTS } from './dataviews-layouts';\nexport type * from './types';\n"],
|
|
5
|
-
"mappings": "AAAA,SAAoB,WAAXA,gBAA4B;AACrC,SAAoB,WAAXA,gBAAkC;AAC3C,SAAoB,WAAXA,gBAA2B;AACpC,SAAoB,WAAXA,gBAAwC;AACjD,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;",
|
|
5
|
+
"mappings": ";AAAA,SAAoB,WAAXA,gBAA4B;AACrC,SAAoB,WAAXA,gBAAkC;AAC3C,SAAoB,WAAXA,gBAA2B;AACpC,SAAoB,WAAXA,gBAAwC;AACjD,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;",
|
|
6
6
|
"names": ["default"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
// packages/dataviews/src/lock-unlock.ts
|
|
1
2
|
import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from "@wordpress/private-apis";
|
|
2
|
-
|
|
3
|
+
var { lock, unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(
|
|
3
4
|
"I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
|
|
4
5
|
"@wordpress/dataviews"
|
|
5
6
|
);
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/lock-unlock.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/dataviews'\n\t);\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,wDAAwD;AAE1D,
|
|
5
|
+
"mappings": ";AAGA,SAAS,wDAAwD;AAE1D,IAAM,EAAE,MAAM,OAAO,IAC3B;AAAA,EACC;AAAA,EACA;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// packages/dataviews/src/utils/filter-sort-and-paginate.ts
|
|
1
2
|
import removeAccents from "remove-accents";
|
|
2
3
|
import { subDays, subWeeks, subMonths, subYears } from "date-fns";
|
|
3
4
|
import { getDate } from "@wordpress/date";
|
|
@@ -29,7 +30,7 @@ import normalizeFields from "./normalize-fields";
|
|
|
29
30
|
function normalizeSearchInput(input = "") {
|
|
30
31
|
return removeAccents(input.trim().toLowerCase());
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
var EMPTY_ARRAY = [];
|
|
33
34
|
function getRelativeDate(value, unit) {
|
|
34
35
|
switch (unit) {
|
|
35
36
|
case "days":
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/filter-sort-and-paginate.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\nimport { subDays, subWeeks, subMonths, subYears } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { getDate } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n\tOPERATOR_BETWEEN,\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\nimport normalizeFields from './normalize-fields';\nimport type { Field, View } from '../types';\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * Calculates a date offset from now.\n *\n * @param value Number of units to offset.\n * @param unit Unit of time to offset.\n * @return Date offset from now.\n */\nfunction getRelativeDate( value: number, unit: string ): Date {\n\tswitch ( unit ) {\n\t\tcase 'days':\n\t\t\treturn subDays( new Date(), value );\n\t\tcase 'weeks':\n\t\t\treturn subWeeks( new Date(), value );\n\t\tcase 'months':\n\t\t\treturn subMonths( new Date(), value );\n\t\tcase 'years':\n\t\t\treturn subYears( new Date(), value );\n\t\tdefault:\n\t\t\treturn new Date();\n\t}\n}\n\n/**\n * Applies the filtering, sorting and pagination to the raw data based on the view configuration.\n *\n * @param data Raw data.\n * @param view View config.\n * @param fields Fields config.\n *\n * @return Filtered, sorted and paginated data.\n */\nexport default function filterSortAndPaginate< Item >(\n\tdata: Item[],\n\tview: View,\n\tfields: Field< Item >[]\n): {\n\tdata: Item[];\n\tpaginationInfo: { totalItems: number; totalPages: number };\n} {\n\tif ( ! data ) {\n\t\treturn {\n\t\t\tdata: EMPTY_ARRAY,\n\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t};\n\t}\n\tconst _fields = normalizeFields( fields );\n\tlet filteredData = [ ...data ];\n\t// Handle global search.\n\tif ( view.search ) {\n\t\tconst normalizedSearch = normalizeSearchInput( view.search );\n\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\treturn _fields\n\t\t\t\t.filter( ( field ) => field.enableGlobalSearch )\n\t\t\t\t.some( ( field ) => {\n\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\tconst values = Array.isArray( fieldValue )\n\t\t\t\t\t\t? fieldValue\n\t\t\t\t\t\t: [ fieldValue ];\n\t\t\t\t\treturn values.some( ( value ) =>\n\t\t\t\t\t\tnormalizeSearchInput( String( value ) ).includes(\n\t\t\t\t\t\t\tnormalizedSearch\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t} );\n\t}\n\n\tif ( view.filters && view.filters?.length > 0 ) {\n\t\tview.filters.forEach( ( filter ) => {\n\t\t\tconst field = _fields.find(\n\t\t\t\t( _field ) => _field.id === filter.field\n\t\t\t);\n\t\t\tif ( field ) {\n\t\t\t\tif (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ANY &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NONE &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn ! filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn ! filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t?.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NOT_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn ! field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t?.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tfilter.value === field.getValue( { item } ) ||\n\t\t\t\t\t\t\tfilter.value === undefined\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS_NOT ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value !== field.getValue( { item } );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_ON &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterDate = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\t\t\t\t\t\treturn filterDate.getTime() === fieldDate.getTime();\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_NOT_ON &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterDate = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\t\t\t\t\t\treturn filterDate.getTime() !== fieldDate.getTime();\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_LESS_THAN &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue < filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_GREATER_THAN &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue > filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_LESS_THAN_OR_EQUAL &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue <= filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_GREATER_THAN_OR_EQUAL &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue >= filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_CONTAINS &&\n\t\t\t\t\tfilter?.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\t\t\t\tfilter.value &&\n\t\t\t\t\t\t\tfieldValue\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.includes(\n\t\t\t\t\t\t\t\t\tString( filter.value ).toLowerCase()\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_NOT_CONTAINS &&\n\t\t\t\t\tfilter?.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\t\t\t\tfilter.value &&\n\t\t\t\t\t\t\t! fieldValue\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.includes(\n\t\t\t\t\t\t\t\t\tString( filter.value ).toLowerCase()\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_STARTS_WITH &&\n\t\t\t\t\tfilter?.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\t\t\t\tfilter.value &&\n\t\t\t\t\t\t\tfieldValue\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.startsWith(\n\t\t\t\t\t\t\t\t\tString( filter.value ).toLowerCase()\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_BEFORE &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue < filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_AFTER &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue > filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_BEFORE_INC &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue <= filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_AFTER_INC &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue >= filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_BETWEEN &&\n\t\t\t\t\tArray.isArray( filter.value ) &&\n\t\t\t\t\tfilter.value.length === 2 &&\n\t\t\t\t\tfilter.value[ 0 ] !== undefined &&\n\t\t\t\t\tfilter.value[ 1 ] !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof fieldValue === 'number' ||\n\t\t\t\t\t\t\tfieldValue instanceof Date ||\n\t\t\t\t\t\t\ttypeof fieldValue === 'string'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tfieldValue >= filter.value[ 0 ] &&\n\t\t\t\t\t\t\t\tfieldValue <= filter.value[ 1 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IN_THE_PAST &&\n\t\t\t\t\tfilter.value?.value !== undefined &&\n\t\t\t\t\tfilter.value?.unit !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst targetDate = getRelativeDate(\n\t\t\t\t\t\tfilter.value.value,\n\t\t\t\t\t\tfilter.value.unit\n\t\t\t\t\t);\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tfieldValue >= targetDate && fieldValue <= new Date()\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_OVER &&\n\t\t\t\t\tfilter.value?.value !== undefined &&\n\t\t\t\t\tfilter.value?.unit !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst targetDate = getRelativeDate(\n\t\t\t\t\t\tfilter.value.value,\n\t\t\t\t\t\tfilter.value.unit\n\t\t\t\t\t);\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue < targetDate;\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t// Handle sorting.\n\tconst sortByField = view.sort?.field\n\t\t? _fields.find( ( field ) => {\n\t\t\t\treturn field.id === view.sort?.field;\n\t\t } )\n\t\t: null;\n\tconst groupByField = view.groupByField\n\t\t? _fields.find( ( field ) => {\n\t\t\t\treturn field.id === view.groupByField;\n\t\t } )\n\t\t: null;\n\tif ( sortByField || groupByField ) {\n\t\tfilteredData.sort( ( a, b ) => {\n\t\t\tif ( groupByField ) {\n\t\t\t\tconst groupCompare = groupByField.sort( a, b, 'asc' );\n\n\t\t\t\t// If items are in different groups, return the group comparison result.\n\t\t\t\t// Otherwise, fall back to sorting by the sort field.\n\t\t\t\tif ( groupCompare !== 0 ) {\n\t\t\t\t\treturn groupCompare;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( sortByField ) {\n\t\t\t\treturn sortByField.sort( a, b, view.sort?.direction ?? 'desc' );\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t} );\n\t}\n\n\t// Handle pagination.\n\tlet totalItems = filteredData.length;\n\tlet totalPages = 1;\n\tif ( view.page !== undefined && view.perPage !== undefined ) {\n\t\tconst start = ( view.page - 1 ) * view.perPage;\n\t\ttotalItems = filteredData?.length || 0;\n\t\ttotalPages = Math.ceil( totalItems / view.perPage );\n\t\tfilteredData = filteredData?.slice( start, start + view.perPage );\n\t}\n\n\treturn {\n\t\tdata: filteredData,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t},\n\t};\n}\n"],
|
|
5
|
-
"mappings": "AAGA,OAAO,mBAAmB;AAC1B,SAAS,SAAS,UAAU,WAAW,gBAAgB;AAKvD,SAAS,eAAe;AAKxB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,qBAAqB;AAG5B,SAAS,qBAAsB,QAAQ,IAAK;AAC3C,SAAO,cAAe,MAAM,KAAK,EAAE,YAAY,CAAE;AAClD;AAEA,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/has-elements.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { Field } from '../types/field-api';\n\nexport default function hasElements< Item >( field: Field< Item > ): boolean {\n\treturn (\n\t\t( Array.isArray( field.elements ) && field.elements.length > 0 ) ||\n\t\ttypeof field.getElements === 'function'\n\t);\n}\n"],
|
|
5
|
-
"mappings": "AAKe,SAAR,YAAsC,OAAgC;AAC5E,SACG,MAAM,QAAS,MAAM,QAAS,KAAK,MAAM,SAAS,SAAS,KAC7D,OAAO,MAAM,gBAAgB;AAE/B;",
|
|
5
|
+
"mappings": ";AAKe,SAAR,YAAsC,OAAgC;AAC5E,SACG,MAAM,QAAS,MAAM,QAAS,KAAK,MAAM,SAAS,SAAS,KAC7D,OAAO,MAAM,gBAAgB;AAE/B;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// packages/dataviews/src/utils/normalize-fields.ts
|
|
1
2
|
import getFieldTypeDefinition from "../field-types";
|
|
2
3
|
import { getControl } from "../dataform-controls";
|
|
3
4
|
import {
|
|
@@ -6,7 +7,7 @@ import {
|
|
|
6
7
|
SINGLE_SELECTION_OPERATORS
|
|
7
8
|
} from "../constants";
|
|
8
9
|
import hasElements from "./has-elements";
|
|
9
|
-
|
|
10
|
+
var getValueFromId = (id) => ({ item }) => {
|
|
10
11
|
const path = id.split(".");
|
|
11
12
|
let value = item;
|
|
12
13
|
for (const segment of path) {
|
|
@@ -18,7 +19,7 @@ const getValueFromId = (id) => ({ item }) => {
|
|
|
18
19
|
}
|
|
19
20
|
return value;
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
+
var setValueFromId = (id) => ({ value }) => {
|
|
22
23
|
const path = id.split(".");
|
|
23
24
|
const result = {};
|
|
24
25
|
let current = result;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/normalize-fields.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { FunctionComponent } from 'react';\n\n/**\n * Internal dependencies\n */\nimport getFieldTypeDefinition from '../field-types';\nimport type {\n\tDataViewRenderFieldProps,\n\tField,\n\tFieldTypeDefinition,\n\tNormalizedFilterByConfig,\n\tNormalizedField,\n} from '../types';\nimport { getControl } from '../dataform-controls';\nimport {\n\tALL_OPERATORS,\n\tOPERATOR_BETWEEN,\n\tSINGLE_SELECTION_OPERATORS,\n} from '../constants';\nimport hasElements from './has-elements';\n\nconst getValueFromId =\n\t( id: string ) =>\n\t( { item }: { item: any } ) => {\n\t\tconst path = id.split( '.' );\n\t\tlet value = item;\n\t\tfor ( const segment of path ) {\n\t\t\tif ( value.hasOwnProperty( segment ) ) {\n\t\t\t\tvalue = value[ segment ];\n\t\t\t} else {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t};\n\nconst setValueFromId =\n\t( id: string ) =>\n\t( { value }: { value: any } ) => {\n\t\tconst path = id.split( '.' );\n\t\tconst result: any = {};\n\t\tlet current = result;\n\n\t\tfor ( const segment of path.slice( 0, -1 ) ) {\n\t\t\tcurrent[ segment ] = {};\n\t\t\tcurrent = current[ segment ];\n\t\t}\n\n\t\tcurrent[ path.at( -1 )! ] = value;\n\t\treturn result;\n\t};\n\nfunction getFilterBy< Item >(\n\tfield: Field< Item >,\n\tfieldTypeDefinition: FieldTypeDefinition< Item >\n): NormalizedFilterByConfig | false {\n\tif ( field.filterBy === false ) {\n\t\treturn false;\n\t}\n\n\tif ( typeof field.filterBy === 'object' ) {\n\t\tlet operators = field.filterBy.operators;\n\n\t\t// Assign default values if no operator was provided.\n\t\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\t\toperators = !! fieldTypeDefinition.filterBy\n\t\t\t\t? fieldTypeDefinition.filterBy.defaultOperators\n\t\t\t\t: [];\n\t\t}\n\n\t\t// Make sure only valid operators are included.\n\t\tlet validOperators = ALL_OPERATORS;\n\t\tif ( typeof fieldTypeDefinition.filterBy === 'object' ) {\n\t\t\tvalidOperators = fieldTypeDefinition.filterBy.validOperators;\n\t\t}\n\t\toperators = operators.filter( ( operator ) =>\n\t\t\tvalidOperators.includes( operator )\n\t\t);\n\n\t\t// The `between` operator is not supported when elements are provided.\n\t\tif ( hasElements( field ) && operators.includes( OPERATOR_BETWEEN ) ) {\n\t\t\toperators = operators.filter(\n\t\t\t\t( operator ) => operator !== OPERATOR_BETWEEN\n\t\t\t);\n\t\t}\n\n\t\t// Do not allow mixing single & multiselection operators.\n\t\t// Remove multiselection operators if any of the single selection ones is present.\n\t\tconst hasSingleSelectionOperator = operators.some( ( operator ) =>\n\t\t\tSINGLE_SELECTION_OPERATORS.includes( operator )\n\t\t);\n\t\tif ( hasSingleSelectionOperator ) {\n\t\t\toperators = operators.filter( ( operator ) =>\n\t\t\t\t// The 'Between' operator is unique as it can be combined with single selection operators.\n\t\t\t\t[ ...SINGLE_SELECTION_OPERATORS, OPERATOR_BETWEEN ].includes(\n\t\t\t\t\toperator\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// If no operators are left at this point,\n\t\t// the filters should be disabled.\n\t\tif ( operators.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn {\n\t\t\tisPrimary: !! field.filterBy.isPrimary,\n\t\t\toperators,\n\t\t};\n\t}\n\n\tif ( fieldTypeDefinition.filterBy === false ) {\n\t\treturn false;\n\t}\n\n\tlet defaultOperators = fieldTypeDefinition.filterBy.defaultOperators;\n\t// The `between` operator is not supported when elements are provided.\n\tif (\n\t\thasElements( field ) &&\n\t\tdefaultOperators.includes( OPERATOR_BETWEEN )\n\t) {\n\t\tdefaultOperators = defaultOperators.filter(\n\t\t\t( operator ) => operator !== OPERATOR_BETWEEN\n\t\t);\n\t}\n\n\treturn {\n\t\toperators: defaultOperators,\n\t};\n}\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport default function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst fieldTypeDefinition = getFieldTypeDefinition< Item >(\n\t\t\tfield.type\n\t\t);\n\t\tconst getValue = field.getValue || getValueFromId( field.id );\n\t\tconst setValue = field.setValue || setValueFromId( field.id );\n\n\t\tconst sort =\n\t\t\tfield.sort ??\n\t\t\tfunction sort( a, b, direction ) {\n\t\t\t\treturn fieldTypeDefinition.sort(\n\t\t\t\t\tgetValue( { item: a } ),\n\t\t\t\t\tgetValue( { item: b } ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\t\t\t};\n\n\t\tconst isValid = {\n\t\t\t...fieldTypeDefinition.isValid,\n\t\t\t...field.isValid,\n\t\t};\n\n\t\tconst Edit = getControl( field, fieldTypeDefinition );\n\n\t\tconst render =\n\t\t\tfield.render ??\n\t\t\tfunction render( {\n\t\t\t\titem,\n\t\t\t\tfield: renderedField,\n\t\t\t}: DataViewRenderFieldProps< Item > ) {\n\t\t\t\treturn (\n\t\t\t\t\tfieldTypeDefinition.render as FunctionComponent<\n\t\t\t\t\t\tDataViewRenderFieldProps< Item >\n\t\t\t\t\t>\n\t\t\t\t )( { item, field: renderedField } );\n\t\t\t};\n\n\t\tconst filterBy = getFilterBy( field, fieldTypeDefinition );\n\n\t\treturn {\n\t\t\t...field,\n\t\t\tlabel: field.label || field.id,\n\t\t\theader: field.header || field.label || field.id,\n\t\t\tgetValue,\n\t\t\tsetValue,\n\t\t\trender,\n\t\t\tsort,\n\t\t\tisValid,\n\t\t\tEdit,\n\t\t\thasElements: hasElements( field ),\n\t\t\tenableHiding: field.enableHiding ?? true,\n\t\t\tenableSorting:\n\t\t\t\tfield.enableSorting ??\n\t\t\t\tfieldTypeDefinition.enableSorting ??\n\t\t\t\ttrue,\n\t\t\tfilterBy,\n\t\t\treadOnly: field.readOnly ?? fieldTypeDefinition.readOnly ?? false,\n\t\t};\n\t} );\n}\n"],
|
|
5
|
-
"mappings": "AAQA,OAAO,4BAA4B;AAQnC,SAAS,kBAAkB;AAC3B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,iBAAiB;AAExB,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["sort", "render"]
|
|
7
7
|
}
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
}
|
|
145
145
|
.dataviews-title-field {
|
|
146
146
|
font-size: 13px;
|
|
147
|
-
font-weight:
|
|
147
|
+
font-weight: 499;
|
|
148
148
|
color: #2f2f2f;
|
|
149
149
|
text-overflow: ellipsis;
|
|
150
150
|
white-space: nowrap;
|
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
|
|
232
232
|
.dataviews-bulk-actions-footer__item-count {
|
|
233
233
|
color: #1e1e1e;
|
|
234
|
-
font-weight:
|
|
234
|
+
font-weight: 499;
|
|
235
235
|
font-size: 11px;
|
|
236
236
|
text-transform: uppercase;
|
|
237
237
|
}
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
|
|
333
333
|
}
|
|
334
334
|
.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip .dataviews-filters-__summary-filter-text-name {
|
|
335
|
-
font-weight:
|
|
335
|
+
font-weight: 499;
|
|
336
336
|
}
|
|
337
337
|
.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove {
|
|
338
338
|
width: 24px;
|
|
@@ -800,13 +800,13 @@
|
|
|
800
800
|
}
|
|
801
801
|
.dataviews-pagination__page-select {
|
|
802
802
|
font-size: 11px;
|
|
803
|
-
font-weight:
|
|
803
|
+
font-weight: 499;
|
|
804
804
|
text-transform: uppercase;
|
|
805
805
|
}
|
|
806
806
|
@media (min-width: 600px) {
|
|
807
807
|
.dataviews-pagination__page-select .components-select-control__input {
|
|
808
808
|
font-size: 11px !important;
|
|
809
|
-
font-weight:
|
|
809
|
+
font-weight: 499;
|
|
810
810
|
}
|
|
811
811
|
}
|
|
812
812
|
|
|
@@ -895,45 +895,8 @@
|
|
|
895
895
|
grid-column: span 2;
|
|
896
896
|
}
|
|
897
897
|
}
|
|
898
|
-
.dataviews-
|
|
899
|
-
|
|
900
|
-
}
|
|
901
|
-
|
|
902
|
-
.dataviews-field-control__actions {
|
|
903
|
-
position: absolute;
|
|
904
|
-
top: -9999em;
|
|
905
|
-
}
|
|
906
|
-
|
|
907
|
-
.dataviews-field-control__actions.dataviews-field-control__actions {
|
|
908
|
-
gap: 4px;
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
.dataviews-field-control__field:hover .dataviews-field-control__actions,
|
|
912
|
-
.dataviews-field-control__field:focus-within .dataviews-field-control__actions,
|
|
913
|
-
.dataviews-field-control__field.is-interacting .dataviews-field-control__actions {
|
|
914
|
-
position: unset;
|
|
915
|
-
top: unset;
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
.dataviews-field-control__icon {
|
|
919
|
-
display: flex;
|
|
920
|
-
width: 24px;
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
.dataviews-field-control__label-sub-label-container {
|
|
924
|
-
flex-grow: 1;
|
|
925
|
-
}
|
|
926
|
-
|
|
927
|
-
.dataviews-field-control__label {
|
|
928
|
-
display: block;
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
.dataviews-field-control__sub-label {
|
|
932
|
-
margin-top: 8px;
|
|
933
|
-
margin-bottom: 0;
|
|
934
|
-
font-size: 11px;
|
|
935
|
-
font-style: normal;
|
|
936
|
-
color: #757575;
|
|
898
|
+
.dataviews-view-config__label {
|
|
899
|
+
text-wrap: nowrap;
|
|
937
900
|
}
|
|
938
901
|
|
|
939
902
|
.dataviews-view-grid-items {
|
|
@@ -1116,7 +1079,7 @@
|
|
|
1116
1079
|
|
|
1117
1080
|
.dataviews-view-grid__group-header {
|
|
1118
1081
|
font-size: 15px;
|
|
1119
|
-
font-weight:
|
|
1082
|
+
font-weight: 499;
|
|
1120
1083
|
color: #1e1e1e;
|
|
1121
1084
|
margin: 0 0 8px 0;
|
|
1122
1085
|
padding: 0 48px;
|
|
@@ -1317,7 +1280,7 @@ div.dataviews-view-list {
|
|
|
1317
1280
|
|
|
1318
1281
|
.dataviews-view-list__group-header {
|
|
1319
1282
|
font-size: 15px;
|
|
1320
|
-
font-weight:
|
|
1283
|
+
font-weight: 499;
|
|
1321
1284
|
color: #1e1e1e;
|
|
1322
1285
|
margin: 0 0 8px 0;
|
|
1323
1286
|
padding: 0 24px;
|
|
@@ -1451,7 +1414,7 @@ div.dataviews-view-list {
|
|
|
1451
1414
|
padding-right: 12px;
|
|
1452
1415
|
font-size: 11px;
|
|
1453
1416
|
text-transform: uppercase;
|
|
1454
|
-
font-weight:
|
|
1417
|
+
font-weight: 499;
|
|
1455
1418
|
}
|
|
1456
1419
|
.dataviews-view-table thead th:has(.dataviews-view-table-header-button):not(:first-child) {
|
|
1457
1420
|
padding-right: 4px;
|
|
@@ -1478,7 +1441,7 @@ div.dataviews-view-list {
|
|
|
1478
1441
|
padding: 4px 8px;
|
|
1479
1442
|
font-size: 11px;
|
|
1480
1443
|
text-transform: uppercase;
|
|
1481
|
-
font-weight:
|
|
1444
|
+
font-weight: 499;
|
|
1482
1445
|
}
|
|
1483
1446
|
.dataviews-view-table .dataviews-view-table-header-button:not(:hover) {
|
|
1484
1447
|
color: #1e1e1e;
|
|
@@ -1566,7 +1529,7 @@ div.dataviews-view-list {
|
|
|
1566
1529
|
}
|
|
1567
1530
|
|
|
1568
1531
|
.dataviews-view-table__group-header-row .dataviews-view-table__group-header-cell {
|
|
1569
|
-
font-weight:
|
|
1532
|
+
font-weight: 499;
|
|
1570
1533
|
padding: 12px 48px;
|
|
1571
1534
|
color: #1e1e1e;
|
|
1572
1535
|
}
|
|
@@ -1707,12 +1670,35 @@ div.dataviews-view-list {
|
|
|
1707
1670
|
|
|
1708
1671
|
.dataviews-view-picker-grid-group__header {
|
|
1709
1672
|
font-size: 15px;
|
|
1710
|
-
font-weight:
|
|
1673
|
+
font-weight: 499;
|
|
1711
1674
|
color: #1e1e1e;
|
|
1712
1675
|
margin: 0 0 8px 0;
|
|
1713
1676
|
padding: 0 48px;
|
|
1714
1677
|
}
|
|
1715
1678
|
|
|
1679
|
+
.dataviews-view-picker-table tbody:focus-visible[aria-activedescendant] {
|
|
1680
|
+
outline: none;
|
|
1681
|
+
}
|
|
1682
|
+
.dataviews-view-picker-table tbody:focus-visible [data-active-item=true] {
|
|
1683
|
+
outline: 2px solid var(--wp-admin-theme-color);
|
|
1684
|
+
}
|
|
1685
|
+
.dataviews-view-picker-table .dataviews-selection-checkbox .components-checkbox-control__input.components-checkbox-control__input {
|
|
1686
|
+
pointer-events: none;
|
|
1687
|
+
opacity: 1;
|
|
1688
|
+
}
|
|
1689
|
+
.dataviews-view-picker-table .dataviews-view-table__row {
|
|
1690
|
+
cursor: pointer;
|
|
1691
|
+
}
|
|
1692
|
+
.dataviews-view-picker-table .dataviews-view-table__row.is-selected {
|
|
1693
|
+
background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04);
|
|
1694
|
+
}
|
|
1695
|
+
.dataviews-view-picker-table .dataviews-view-table__row.is-hovered {
|
|
1696
|
+
background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08);
|
|
1697
|
+
}
|
|
1698
|
+
.dataviews-view-picker-table .dataviews-view-table__row.is-selected.is-hovered {
|
|
1699
|
+
background-color: rgba(var(--wp-admin-theme-color--rgb), 0.12);
|
|
1700
|
+
}
|
|
1701
|
+
|
|
1716
1702
|
.dataviews-controls__datetime {
|
|
1717
1703
|
border: none;
|
|
1718
1704
|
padding: 0;
|
|
@@ -1823,7 +1809,7 @@ div.dataviews-view-list {
|
|
|
1823
1809
|
|
|
1824
1810
|
.dataforms-layouts-card__field-header-label {
|
|
1825
1811
|
font-family: -apple-system, "system-ui", "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
|
1826
|
-
font-weight:
|
|
1812
|
+
font-weight: 499;
|
|
1827
1813
|
font-size: 15px;
|
|
1828
1814
|
line-height: 20px;
|
|
1829
1815
|
}
|
|
@@ -1845,6 +1831,10 @@ div.dataviews-view-list {
|
|
|
1845
1831
|
gap: 16px;
|
|
1846
1832
|
}
|
|
1847
1833
|
|
|
1834
|
+
.dataforms-layouts-details__content {
|
|
1835
|
+
padding-top: 12px;
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1848
1838
|
.dataforms-layouts-row__field-control {
|
|
1849
1839
|
width: 100%;
|
|
1850
1840
|
}
|