@wordpress/dataviews 8.0.1-next.e256d081a.0 → 9.0.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 +40 -1
- package/README.md +203 -13
- package/build/components/dataform-context/index.js +1 -0
- package/build/components/dataform-context/index.js.map +1 -1
- package/build/components/dataviews/index.js +11 -1
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-context/index.js +1 -0
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-filters/input-widget.js +48 -4
- package/build/components/dataviews-filters/input-widget.js.map +1 -1
- package/build/components/dataviews-layout/index.js +5 -2
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-picker/footer.js +145 -0
- package/build/components/dataviews-picker/footer.js.map +1 -0
- package/build/components/dataviews-picker/index.js +201 -0
- package/build/components/dataviews-picker/index.js.map +1 -0
- package/build/components/dataviews-selection-checkbox/index.js +4 -2
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +1 -0
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/constants.js +4 -1
- package/build/constants.js.map +1 -1
- package/build/dataform-controls/array.js +9 -7
- package/build/dataform-controls/array.js.map +1 -1
- package/build/dataform-controls/checkbox.js +40 -8
- package/build/dataform-controls/checkbox.js.map +1 -1
- package/build/dataform-controls/color.js +133 -0
- package/build/dataform-controls/color.js.map +1 -0
- package/build/dataform-controls/date.js +32 -24
- package/build/dataform-controls/date.js.map +1 -1
- package/build/dataform-controls/datetime.js +133 -19
- package/build/dataform-controls/datetime.js.map +1 -1
- package/build/dataform-controls/email.js +15 -44
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-controls/index.js +35 -2
- package/build/dataform-controls/index.js.map +1 -1
- package/build/dataform-controls/integer.js +47 -34
- package/build/dataform-controls/integer.js.map +1 -1
- package/build/dataform-controls/password.js +47 -0
- package/build/dataform-controls/password.js.map +1 -0
- package/build/dataform-controls/radio.js +42 -9
- package/build/dataform-controls/radio.js.map +1 -1
- package/build/dataform-controls/relative-date-control.js +6 -10
- package/build/dataform-controls/relative-date-control.js.map +1 -1
- package/build/dataform-controls/select.js +41 -10
- package/build/dataform-controls/select.js.map +1 -1
- package/build/dataform-controls/telephone.js +40 -0
- package/build/dataform-controls/telephone.js.map +1 -0
- package/build/dataform-controls/text.js +14 -43
- package/build/dataform-controls/text.js.map +1 -1
- package/build/dataform-controls/textarea.js +81 -0
- package/build/dataform-controls/textarea.js.map +1 -0
- package/build/dataform-controls/toggle-group.js +36 -6
- package/build/dataform-controls/toggle-group.js.map +1 -1
- package/build/dataform-controls/toggle.js +77 -0
- package/build/dataform-controls/toggle.js.map +1 -0
- package/build/dataform-controls/url.js +40 -0
- package/build/dataform-controls/url.js.map +1 -0
- package/build/dataform-controls/utils/validated-input.js +83 -0
- package/build/dataform-controls/utils/validated-input.js.map +1 -0
- package/build/dataforms-layouts/card/index.js +6 -7
- package/build/dataforms-layouts/card/index.js.map +1 -1
- package/build/dataforms-layouts/data-form-layout.js +16 -4
- package/build/dataforms-layouts/data-form-layout.js.map +1 -1
- package/build/dataforms-layouts/index.js +31 -1
- package/build/dataforms-layouts/index.js.map +1 -1
- package/build/dataforms-layouts/panel/dropdown.js +10 -14
- package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
- package/build/dataforms-layouts/panel/index.js +24 -11
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataforms-layouts/panel/modal.js +22 -27
- package/build/dataforms-layouts/panel/modal.js.map +1 -1
- package/build/dataforms-layouts/panel/summary-button.js +67 -0
- package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
- package/build/dataforms-layouts/regular/index.js +7 -9
- package/build/dataforms-layouts/regular/index.js.map +1 -1
- package/build/dataforms-layouts/row/index.js +113 -0
- package/build/dataforms-layouts/row/index.js.map +1 -0
- package/build/dataviews-layouts/grid/index.js +21 -26
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/index.js +9 -1
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +47 -2
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/picker-grid/index.js +347 -0
- package/build/dataviews-layouts/picker-grid/index.js.map +1 -0
- package/build/dataviews-layouts/table/index.js +5 -17
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/dataviews-layouts/utils/get-data-by-group.js +23 -0
- package/build/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
- package/build/dataviews-layouts/utils/grid-items.js +37 -0
- package/build/dataviews-layouts/utils/grid-items.js.map +1 -0
- package/build/dataviews-layouts/utils/preview-size-picker.js +81 -0
- package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
- package/build/field-types/boolean.js +1 -1
- package/build/field-types/boolean.js.map +1 -1
- package/build/field-types/color.js +113 -0
- package/build/field-types/color.js.map +1 -0
- package/build/field-types/index.js +16 -0
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/password.js +51 -0
- package/build/field-types/password.js.map +1 -0
- package/build/field-types/telephone.js +57 -0
- package/build/field-types/telephone.js.map +1 -0
- package/build/field-types/url.js +57 -0
- package/build/field-types/url.js.map +1 -0
- package/build/normalize-fields.js +17 -0
- package/build/normalize-fields.js.map +1 -1
- package/build/normalize-form-fields.js +6 -0
- package/build/normalize-form-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/validation.js +1 -1
- package/build/validation.js.map +1 -1
- package/build-module/components/dataform-context/index.js +1 -0
- package/build-module/components/dataform-context/index.js.map +1 -1
- package/build-module/components/dataviews/index.js +11 -1
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js +1 -0
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-filters/input-widget.js +48 -4
- package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +5 -2
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-picker/footer.js +136 -0
- package/build-module/components/dataviews-picker/footer.js.map +1 -0
- package/build-module/components/dataviews-picker/index.js +191 -0
- package/build-module/components/dataviews-picker/index.js.map +1 -0
- package/build-module/components/dataviews-selection-checkbox/index.js +4 -2
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +1 -0
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/constants.js +3 -0
- package/build-module/constants.js.map +1 -1
- package/build-module/dataform-controls/array.js +9 -7
- package/build-module/dataform-controls/array.js.map +1 -1
- package/build-module/dataform-controls/checkbox.js +41 -9
- package/build-module/dataform-controls/checkbox.js.map +1 -1
- package/build-module/dataform-controls/color.js +126 -0
- package/build-module/dataform-controls/color.js.map +1 -0
- package/build-module/dataform-controls/date.js +32 -24
- package/build-module/dataform-controls/date.js.map +1 -1
- package/build-module/dataform-controls/datetime.js +135 -21
- package/build-module/dataform-controls/datetime.js.map +1 -1
- package/build-module/dataform-controls/email.js +15 -45
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-controls/index.js +35 -2
- package/build-module/dataform-controls/index.js.map +1 -1
- package/build-module/dataform-controls/integer.js +46 -34
- package/build-module/dataform-controls/integer.js.map +1 -1
- package/build-module/dataform-controls/password.js +38 -0
- package/build-module/dataform-controls/password.js.map +1 -0
- package/build-module/dataform-controls/radio.js +44 -11
- package/build-module/dataform-controls/radio.js.map +1 -1
- package/build-module/dataform-controls/relative-date-control.js +6 -10
- package/build-module/dataform-controls/relative-date-control.js.map +1 -1
- package/build-module/dataform-controls/select.js +43 -12
- package/build-module/dataform-controls/select.js.map +1 -1
- package/build-module/dataform-controls/telephone.js +33 -0
- package/build-module/dataform-controls/telephone.js.map +1 -0
- package/build-module/dataform-controls/text.js +14 -44
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/textarea.js +74 -0
- package/build-module/dataform-controls/textarea.js.map +1 -0
- package/build-module/dataform-controls/toggle-group.js +38 -8
- package/build-module/dataform-controls/toggle-group.js.map +1 -1
- package/build-module/dataform-controls/toggle.js +70 -0
- package/build-module/dataform-controls/toggle.js.map +1 -0
- package/build-module/dataform-controls/url.js +33 -0
- package/build-module/dataform-controls/url.js.map +1 -0
- package/build-module/dataform-controls/utils/validated-input.js +76 -0
- package/build-module/dataform-controls/utils/validated-input.js.map +1 -0
- package/build-module/dataforms-layouts/card/index.js +6 -7
- package/build-module/dataforms-layouts/card/index.js.map +1 -1
- package/build-module/dataforms-layouts/data-form-layout.js +14 -4
- package/build-module/dataforms-layouts/data-form-layout.js.map +1 -1
- package/build-module/dataforms-layouts/index.js +32 -1
- package/build-module/dataforms-layouts/index.js.map +1 -1
- package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
- package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
- package/build-module/dataforms-layouts/panel/index.js +24 -11
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataforms-layouts/panel/modal.js +22 -28
- package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
- package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
- package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
- package/build-module/dataforms-layouts/regular/index.js +8 -10
- package/build-module/dataforms-layouts/regular/index.js.map +1 -1
- package/build-module/dataforms-layouts/row/index.js +106 -0
- package/build-module/dataforms-layouts/row/index.js.map +1 -0
- package/build-module/dataviews-layouts/grid/index.js +22 -27
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +10 -2
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +48 -3
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/picker-grid/index.js +338 -0
- package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -0
- package/build-module/dataviews-layouts/table/index.js +5 -17
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/dataviews-layouts/utils/get-data-by-group.js +17 -0
- package/build-module/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
- package/build-module/dataviews-layouts/utils/grid-items.js +29 -0
- package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -0
- package/build-module/dataviews-layouts/utils/preview-size-picker.js +73 -0
- package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
- package/build-module/field-types/boolean.js +1 -1
- package/build-module/field-types/boolean.js.map +1 -1
- package/build-module/field-types/color.js +107 -0
- package/build-module/field-types/color.js.map +1 -0
- package/build-module/field-types/index.js +16 -0
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/password.js +46 -0
- package/build-module/field-types/password.js.map +1 -0
- package/build-module/field-types/telephone.js +51 -0
- package/build-module/field-types/telephone.js.map +1 -0
- package/build-module/field-types/url.js +51 -0
- package/build-module/field-types/url.js.map +1 -0
- package/build-module/normalize-fields.js +15 -0
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/normalize-form-fields.js +6 -0
- package/build-module/normalize-form-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/validation.js +1 -1
- package/build-module/validation.js.map +1 -1
- package/build-style/style-rtl.css +261 -18
- package/build-style/style.css +261 -18
- package/build-types/components/dataform/stories/index.story.d.ts +21 -17
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataform-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews/index.d.ts +1 -1
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +1 -0
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
- package/build-types/components/dataviews-picker/footer.d.ts +4 -0
- package/build-types/components/dataviews-picker/footer.d.ts.map +1 -0
- package/build-types/components/dataviews-picker/index.d.ts +55 -0
- package/build-types/components/dataviews-picker/index.d.ts.map +1 -0
- package/build-types/components/dataviews-picker/stories/index.story.d.ts +42 -0
- package/build-types/components/dataviews-picker/stories/index.story.d.ts.map +1 -0
- package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -1
- package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/constants.d.ts +1 -0
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/array.d.ts.map +1 -1
- package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
- package/build-types/dataform-controls/color.d.ts +6 -0
- package/build-types/dataform-controls/color.d.ts.map +1 -0
- package/build-types/dataform-controls/date.d.ts.map +1 -1
- package/build-types/dataform-controls/datetime.d.ts.map +1 -1
- package/build-types/dataform-controls/email.d.ts.map +1 -1
- package/build-types/dataform-controls/index.d.ts +1 -1
- package/build-types/dataform-controls/index.d.ts.map +1 -1
- package/build-types/dataform-controls/integer.d.ts.map +1 -1
- package/build-types/dataform-controls/password.d.ts +3 -0
- package/build-types/dataform-controls/password.d.ts.map +1 -0
- package/build-types/dataform-controls/radio.d.ts.map +1 -1
- package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
- package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
- package/build-types/dataform-controls/select.d.ts.map +1 -1
- package/build-types/dataform-controls/telephone.d.ts +6 -0
- package/build-types/dataform-controls/telephone.d.ts.map +1 -0
- package/build-types/dataform-controls/text.d.ts +1 -1
- package/build-types/dataform-controls/text.d.ts.map +1 -1
- package/build-types/dataform-controls/textarea.d.ts +6 -0
- package/build-types/dataform-controls/textarea.d.ts.map +1 -0
- package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
- package/build-types/dataform-controls/toggle.d.ts +6 -0
- package/build-types/dataform-controls/toggle.d.ts.map +1 -0
- package/build-types/dataform-controls/url.d.ts +6 -0
- package/build-types/dataform-controls/url.d.ts.map +1 -0
- package/build-types/dataform-controls/utils/validated-input.d.ts +20 -0
- package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -0
- package/build-types/dataforms-layouts/card/index.d.ts +0 -3
- package/build-types/dataforms-layouts/card/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/data-form-layout.d.ts +4 -1
- package/build-types/dataforms-layouts/data-form-layout.d.ts.map +1 -1
- package/build-types/dataforms-layouts/index.d.ts +10 -0
- package/build-types/dataforms-layouts/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
- package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
- package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
- package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/row/index.d.ts +6 -0
- package/build-types/dataforms-layouts/row/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +12 -1
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/picker-grid/index.d.ts +4 -0
- package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts +6 -0
- package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/grid-items.d.ts +5 -0
- package/build-types/dataviews-layouts/utils/grid-items.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts +2 -0
- package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts.map +1 -0
- package/build-types/field-types/color.d.ts +20 -0
- package/build-types/field-types/color.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/password.d.ts +17 -0
- package/build-types/field-types/password.d.ts.map +1 -0
- package/build-types/field-types/stories/index.story.d.ts +85 -0
- package/build-types/field-types/stories/index.story.d.ts.map +1 -0
- package/build-types/field-types/telephone.d.ts +20 -0
- package/build-types/field-types/telephone.d.ts.map +1 -0
- package/build-types/field-types/url.d.ts +20 -0
- package/build-types/field-types/url.d.ts.map +1 -0
- package/build-types/normalize-fields.d.ts +3 -0
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/normalize-form-fields.d.ts.map +1 -1
- package/build-types/test/dataviews-picker.d.ts +2 -0
- package/build-types/test/dataviews-picker.d.ts.map +1 -0
- package/build-types/types.d.ts +102 -8
- package/build-types/types.d.ts.map +1 -1
- package/build-types/validation.d.ts.map +1 -1
- package/build-wp/index.js +6380 -5012
- package/package.json +17 -15
- package/src/components/dataform/stories/index.story.tsx +822 -28
- package/src/components/dataform-context/index.tsx +1 -0
- package/src/components/dataviews/index.tsx +25 -1
- package/src/components/dataviews/stories/fixtures.tsx +100 -42
- package/src/components/dataviews/stories/index.story.tsx +16 -2
- package/src/components/dataviews/style.scss +4 -2
- package/src/components/dataviews-context/index.ts +3 -0
- package/src/components/dataviews-filters/input-widget.tsx +44 -5
- package/src/components/dataviews-layout/index.tsx +5 -3
- package/src/components/dataviews-picker/footer.tsx +207 -0
- package/src/components/dataviews-picker/index.tsx +284 -0
- package/src/components/dataviews-picker/stories/index.story.tsx +251 -0
- package/src/components/dataviews-picker/style.scss +10 -0
- package/src/components/dataviews-selection-checkbox/index.tsx +3 -0
- package/src/components/dataviews-view-config/index.tsx +1 -0
- package/src/constants.ts +3 -0
- package/src/dataform-controls/array.tsx +4 -6
- package/src/dataform-controls/checkbox.tsx +54 -7
- package/src/dataform-controls/color.tsx +148 -0
- package/src/dataform-controls/date.tsx +47 -21
- package/src/dataform-controls/datetime.tsx +171 -23
- package/src/dataform-controls/email.tsx +18 -52
- package/src/dataform-controls/index.tsx +38 -2
- package/src/dataform-controls/integer.tsx +82 -49
- package/src/dataform-controls/password.tsx +50 -0
- package/src/dataform-controls/radio.tsx +53 -11
- package/src/dataform-controls/relative-date-control.tsx +11 -10
- package/src/dataform-controls/select.tsx +53 -10
- package/src/dataform-controls/telephone.tsx +38 -0
- package/src/dataform-controls/text.tsx +12 -50
- package/src/dataform-controls/textarea.tsx +85 -0
- package/src/dataform-controls/toggle-group.tsx +50 -10
- package/src/dataform-controls/toggle.tsx +79 -0
- package/src/dataform-controls/url.tsx +38 -0
- package/src/dataform-controls/utils/validated-input.tsx +109 -0
- package/src/dataforms-layouts/card/index.tsx +5 -4
- package/src/dataforms-layouts/card/style.scss +7 -0
- package/src/dataforms-layouts/data-form-layout.tsx +15 -3
- package/src/dataforms-layouts/index.tsx +35 -0
- package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
- package/src/dataforms-layouts/panel/index.tsx +39 -16
- package/src/dataforms-layouts/panel/modal.tsx +24 -30
- package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
- package/src/dataforms-layouts/regular/index.tsx +9 -7
- package/src/dataforms-layouts/regular/style.scss +0 -6
- package/src/dataforms-layouts/row/index.tsx +115 -0
- package/src/dataforms-layouts/row/style.scss +3 -0
- package/src/dataviews-layouts/grid/index.tsx +47 -47
- package/src/dataviews-layouts/grid/style.scss +43 -20
- package/src/dataviews-layouts/index.ts +16 -2
- package/src/dataviews-layouts/list/index.tsx +74 -2
- package/src/dataviews-layouts/list/style.scss +8 -0
- package/src/dataviews-layouts/picker-grid/index.tsx +486 -0
- package/src/dataviews-layouts/picker-grid/style.scss +171 -0
- package/src/dataviews-layouts/table/index.tsx +10 -14
- package/src/dataviews-layouts/utils/get-data-by-group.ts +18 -0
- package/src/dataviews-layouts/utils/grid-items.scss +21 -0
- package/src/dataviews-layouts/utils/grid-items.tsx +35 -0
- package/src/dataviews-layouts/utils/preview-size-picker.tsx +87 -0
- package/src/field-types/boolean.tsx +1 -1
- package/src/field-types/color.tsx +115 -0
- package/src/field-types/index.tsx +20 -0
- package/src/field-types/password.tsx +46 -0
- package/src/field-types/stories/index.story.tsx +856 -0
- package/src/field-types/telephone.tsx +71 -0
- package/src/field-types/url.tsx +71 -0
- package/src/normalize-fields.ts +18 -0
- package/src/normalize-form-fields.ts +6 -0
- package/src/style.scss +4 -0
- package/src/test/dataform.tsx +2 -2
- package/src/test/dataviews-picker.tsx +478 -0
- package/src/test/dataviews.tsx +86 -0
- package/src/test/filter-and-sort-data-view.js +148 -138
- package/src/test/normalize-fields.ts +114 -0
- package/src/types.ts +130 -7
- package/src/validation.ts +5 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/dataform-controls/boolean.js +0 -64
- package/build/dataform-controls/boolean.js.map +0 -1
- package/build-module/dataform-controls/boolean.js +0 -58
- package/build-module/dataform-controls/boolean.js.map +0 -1
- package/build-types/components/stories/index.story.d.ts +0 -63
- package/build-types/components/stories/index.story.d.ts.map +0 -1
- package/build-types/dataform-controls/boolean.d.ts +0 -6
- package/build-types/dataform-controls/boolean.d.ts.map +0 -1
- package/src/components/stories/index.story.tsx +0 -372
- package/src/dataform-controls/boolean.tsx +0 -61
|
@@ -15,6 +15,7 @@ var _data = require("@wordpress/data");
|
|
|
15
15
|
var _lockUnlock = require("../../lock-unlock");
|
|
16
16
|
var _dataviewsItemActions = require("../../components/dataviews-item-actions");
|
|
17
17
|
var _dataviewsContext = _interopRequireDefault(require("../../components/dataviews-context"));
|
|
18
|
+
var _getDataByGroup = _interopRequireDefault(require("../utils/get-data-by-group"));
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
20
|
/**
|
|
20
21
|
* External dependencies
|
|
@@ -359,11 +360,55 @@ function ViewList(props) {
|
|
|
359
360
|
'dataviews-loading': isLoading,
|
|
360
361
|
'dataviews-no-results': !hasData && !isLoading
|
|
361
362
|
}),
|
|
362
|
-
children: !hasData && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
363
|
-
children:
|
|
363
|
+
children: !hasData && (isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
364
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {})
|
|
365
|
+
}) : empty)
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
const groupField = view.groupByField ? fields.find(field => field.id === view.groupByField) : null;
|
|
369
|
+
const dataByGroup = groupField ? (0, _getDataByGroup.default)(data, groupField) : null;
|
|
370
|
+
|
|
371
|
+
// Render data grouped by field
|
|
372
|
+
if (hasData && groupField && dataByGroup) {
|
|
373
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Composite, {
|
|
374
|
+
id: `${baseId}`,
|
|
375
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {}),
|
|
376
|
+
className: "dataviews-view-list__group",
|
|
377
|
+
role: "grid",
|
|
378
|
+
activeId: activeCompositeId,
|
|
379
|
+
setActiveId: setActiveCompositeId,
|
|
380
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
381
|
+
spacing: 4,
|
|
382
|
+
className: (0, _clsx.default)('dataviews-view-list', className),
|
|
383
|
+
children: Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
384
|
+
spacing: 2,
|
|
385
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
386
|
+
className: "dataviews-view-list__group-header",
|
|
387
|
+
children: (0, _i18n.sprintf)(
|
|
388
|
+
// translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
|
|
389
|
+
(0, _i18n.__)('%1$s: %2$s'), groupField.label, groupName)
|
|
390
|
+
}), groupItems.map(item => {
|
|
391
|
+
const id = generateCompositeItemIdPrefix(item);
|
|
392
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ListItem, {
|
|
393
|
+
view: view,
|
|
394
|
+
idPrefix: id,
|
|
395
|
+
actions: actions,
|
|
396
|
+
item: item,
|
|
397
|
+
isSelected: item === selectedItem,
|
|
398
|
+
onSelect: onSelect,
|
|
399
|
+
mediaField: mediaField,
|
|
400
|
+
titleField: titleField,
|
|
401
|
+
descriptionField: descriptionField,
|
|
402
|
+
otherFields: otherFields,
|
|
403
|
+
onDropdownTriggerKeyDown: onDropdownTriggerKeyDown
|
|
404
|
+
}, id);
|
|
405
|
+
})]
|
|
406
|
+
}, groupName))
|
|
364
407
|
})
|
|
365
408
|
});
|
|
366
409
|
}
|
|
410
|
+
|
|
411
|
+
// Render ungrouped data
|
|
367
412
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
368
413
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Composite, {
|
|
369
414
|
id: baseId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_compose","_components","_element","_i18n","_icons","_data","_lockUnlock","_dataviewsItemActions","_dataviewsContext","_jsxRuntime","Menu","unlock","componentsPrivateApis","generateItemWrapperCompositeId","idPrefix","generatePrimaryActionCompositeId","primaryActionId","generateDropdownTriggerCompositeId","PrimaryActionGridCell","primaryAction","item","registry","useRegistry","isModalOpen","setIsModalOpen","useState","compositeItemId","id","label","jsx","role","children","Composite","Item","render","Button","disabled","accessibleWhenDisabled","icon","isDestructive","size","onClick","ActionModal","action","items","closeModal","callback","ListItem","view","actions","isSelected","titleField","mediaField","descriptionField","onSelect","otherFields","onDropdownTriggerKeyDown","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","itemRef","useRef","labelId","descriptionId","isHovered","setIsHovered","activeModalAction","setActiveModalAction","handleHover","type","isHover","paginationInfo","useContext","DataViewsContext","useEffect","current","scrollIntoView","behavior","block","inline","eligibleActions","useMemo","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","field","config","sizes","renderedTitleField","usedActions","jsxs","__experimentalHStack","spacing","placement","TriggerButton","moreVertical","__","onKeyDown","Popover","ActionsMenuGroup","Row","ref","totalItems","undefined","clsx","onMouseEnter","onMouseLeave","justify","alignment","__experimentalVStack","map","VisuallyHidden","as","isDefined","ViewList","props","_view$fields","data","fields","getItemId","isLoading","onChangeSelection","selection","empty","baseId","useInstanceId","selectedItem","findLast","includes","find","fieldId","f","generateCompositeItemIdPrefix","useCallback","isActiveCompositeItem","idToCheck","startsWith","activeCompositeId","setActiveCompositeId","activeItemIndex","findIndex","previousActiveItemIndex","usePrevious","isActiveIdInList","selectCompositeItem","targetIndex","generateCompositeId","clampedIndex","Math","min","max","itemIdPrefix","targetCompositeItemId","document","getElementById","focus","wasActiveIdInList","event","key","preventDefault","hasData","Spinner","Fragment","activeId","setActiveId","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseContext,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport DataViewsContext from '../../components/dataviews-context';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n\tposinset?: number;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n\tposinset,\n}: ListViewItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render\n\t\t\t\t\titem={ item }\n\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\tconfig={ { sizes: '52px' } }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<HStack spacing={ 3 } className=\"dataviews-view-list__item-actions\">\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\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\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={\n\t\t\t\t/* aria-posinset breaks Composite.Row if passed to it directly. */\n\t\t\t\t<div\n\t\t\t\t\taria-posinset={ posinset }\n\t\t\t\t\taria-setsize={\n\t\t\t\t\t\tinfiniteScrollEnabled\n\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'row' }\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\" spacing={ 0 }>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<HStack spacing={ 3 } justify=\"start\" alignment=\"flex-start\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack spacing={ 0 }>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</VStack>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t\tclassName,\n\t\tempty,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it — which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && <p>{ isLoading ? <Spinner /> : empty }</p> }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Composite\n\t\t\t\tid={ baseId }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : 'grid' }\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\tview.infiniteScrollEnabled\n\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t: undefined\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} ) }\n\t\t\t</Composite>\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_compose","_components","_element","_i18n","_icons","_data","_lockUnlock","_dataviewsItemActions","_dataviewsContext","_getDataByGroup","_jsxRuntime","Menu","unlock","componentsPrivateApis","generateItemWrapperCompositeId","idPrefix","generatePrimaryActionCompositeId","primaryActionId","generateDropdownTriggerCompositeId","PrimaryActionGridCell","primaryAction","item","registry","useRegistry","isModalOpen","setIsModalOpen","useState","compositeItemId","id","label","jsx","role","children","Composite","Item","render","Button","disabled","accessibleWhenDisabled","icon","isDestructive","size","onClick","ActionModal","action","items","closeModal","callback","ListItem","view","actions","isSelected","titleField","mediaField","descriptionField","onSelect","otherFields","onDropdownTriggerKeyDown","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","itemRef","useRef","labelId","descriptionId","isHovered","setIsHovered","activeModalAction","setActiveModalAction","handleHover","type","isHover","paginationInfo","useContext","DataViewsContext","useEffect","current","scrollIntoView","behavior","block","inline","eligibleActions","useMemo","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","field","config","sizes","renderedTitleField","usedActions","jsxs","__experimentalHStack","spacing","placement","TriggerButton","moreVertical","__","onKeyDown","Popover","ActionsMenuGroup","Row","ref","totalItems","undefined","clsx","onMouseEnter","onMouseLeave","justify","alignment","__experimentalVStack","map","VisuallyHidden","as","isDefined","ViewList","props","_view$fields","data","fields","getItemId","isLoading","onChangeSelection","selection","empty","baseId","useInstanceId","selectedItem","findLast","includes","find","fieldId","f","generateCompositeItemIdPrefix","useCallback","isActiveCompositeItem","idToCheck","startsWith","activeCompositeId","setActiveCompositeId","activeItemIndex","findIndex","previousActiveItemIndex","usePrevious","isActiveIdInList","selectCompositeItem","targetIndex","generateCompositeId","clampedIndex","Math","min","max","itemIdPrefix","targetCompositeItemId","document","getElementById","focus","wasActiveIdInList","event","key","preventDefault","hasData","Spinner","groupField","groupByField","dataByGroup","getDataByGroup","activeId","setActiveId","Array","from","entries","groupName","groupItems","sprintf","Fragment","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseContext,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport DataViewsContext from '../../components/dataviews-context';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n\tposinset?: number;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n\tposinset,\n}: ListViewItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render\n\t\t\t\t\titem={ item }\n\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\tconfig={ { sizes: '52px' } }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<HStack spacing={ 3 } className=\"dataviews-view-list__item-actions\">\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\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\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={\n\t\t\t\t/* aria-posinset breaks Composite.Row if passed to it directly. */\n\t\t\t\t<div\n\t\t\t\t\taria-posinset={ posinset }\n\t\t\t\t\taria-setsize={\n\t\t\t\t\t\tinfiniteScrollEnabled\n\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'row' }\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\" spacing={ 0 }>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<HStack spacing={ 3 } justify=\"start\" alignment=\"flex-start\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack spacing={ 0 }>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</VStack>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t\tclassName,\n\t\tempty,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it — which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( field ) => field.id === view.groupByField )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\t// Render data grouped by field\n\tif ( hasData && groupField && dataByGroup ) {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\tid={ `${ baseId }` }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName=\"dataviews-view-list__group\"\n\t\t\t\trole=\"grid\"\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t<VStack\n\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\t>\n\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-list__group-header\">\n\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tconst id =\n\t\t\t\t\t\t\t\t\t\tgenerateCompositeItemIdPrefix( item );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\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</VStack>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t</VStack>\n\t\t\t</Composite>\n\t\t);\n\t}\n\n\t// Render ungrouped data\n\treturn (\n\t\t<>\n\t\t\t<Composite\n\t\t\t\tid={ baseId }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : 'grid' }\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\tview.infiniteScrollEnabled\n\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t: undefined\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} ) }\n\t\t\t</Composite>\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
9
|
+
var _components = require("@wordpress/components");
|
|
10
|
+
var _i18n = require("@wordpress/i18n");
|
|
11
|
+
var _compose = require("@wordpress/compose");
|
|
12
|
+
var _element = require("@wordpress/element");
|
|
13
|
+
var _lockUnlock = require("../../lock-unlock");
|
|
14
|
+
var _dataviewsSelectionCheckbox = _interopRequireDefault(require("../../components/dataviews-selection-checkbox"));
|
|
15
|
+
var _dataviewsContext = _interopRequireDefault(require("../../components/dataviews-context"));
|
|
16
|
+
var _footer = require("../../components/dataviews-picker/footer");
|
|
17
|
+
var _gridItems = require("../utils/grid-items");
|
|
18
|
+
var _getDataByGroup = _interopRequireDefault(require("../utils/get-data-by-group"));
|
|
19
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
+
/**
|
|
21
|
+
* External dependencies
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* WordPress dependencies
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Internal dependencies
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
const {
|
|
33
|
+
Badge
|
|
34
|
+
} = (0, _lockUnlock.unlock)(_components.privateApis);
|
|
35
|
+
function GridItem({
|
|
36
|
+
view,
|
|
37
|
+
multiselect,
|
|
38
|
+
selection,
|
|
39
|
+
onChangeSelection,
|
|
40
|
+
getItemId,
|
|
41
|
+
item,
|
|
42
|
+
mediaField,
|
|
43
|
+
titleField,
|
|
44
|
+
descriptionField,
|
|
45
|
+
regularFields,
|
|
46
|
+
badgeFields,
|
|
47
|
+
config,
|
|
48
|
+
posinset,
|
|
49
|
+
setsize
|
|
50
|
+
}) {
|
|
51
|
+
const {
|
|
52
|
+
showTitle = true,
|
|
53
|
+
showMedia = true,
|
|
54
|
+
showDescription = true
|
|
55
|
+
} = view;
|
|
56
|
+
const id = getItemId(item);
|
|
57
|
+
const isSelected = selection.includes(id);
|
|
58
|
+
const renderedMediaField = mediaField?.render ? /*#__PURE__*/(0, _jsxRuntime.jsx)(mediaField.render, {
|
|
59
|
+
item: item,
|
|
60
|
+
field: mediaField,
|
|
61
|
+
config: config
|
|
62
|
+
}) : null;
|
|
63
|
+
const renderedTitleField = showTitle && titleField?.render ? /*#__PURE__*/(0, _jsxRuntime.jsx)(titleField.render, {
|
|
64
|
+
item: item,
|
|
65
|
+
field: titleField
|
|
66
|
+
}) : null;
|
|
67
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Composite.Item, {
|
|
68
|
+
render: ({
|
|
69
|
+
children,
|
|
70
|
+
...props
|
|
71
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
72
|
+
spacing: 0,
|
|
73
|
+
children: children,
|
|
74
|
+
...props
|
|
75
|
+
}),
|
|
76
|
+
role: "option",
|
|
77
|
+
"aria-posinset": posinset,
|
|
78
|
+
"aria-setsize": setsize,
|
|
79
|
+
className: (0, _clsx.default)('dataviews-view-picker-grid__card', {
|
|
80
|
+
'is-selected': isSelected
|
|
81
|
+
}),
|
|
82
|
+
"aria-selected": isSelected,
|
|
83
|
+
onClick: () => {
|
|
84
|
+
if (isSelected) {
|
|
85
|
+
onChangeSelection(selection.filter(itemId => id !== itemId));
|
|
86
|
+
} else {
|
|
87
|
+
const newSelection = multiselect ? [...selection, id] : [id];
|
|
88
|
+
onChangeSelection(newSelection);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
children: [showMedia && renderedMediaField && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
92
|
+
className: "dataviews-view-picker-grid__media",
|
|
93
|
+
children: renderedMediaField
|
|
94
|
+
}), showMedia && renderedMediaField && /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsSelectionCheckbox.default, {
|
|
95
|
+
item: item,
|
|
96
|
+
selection: selection,
|
|
97
|
+
onChangeSelection: onChangeSelection,
|
|
98
|
+
getItemId: getItemId,
|
|
99
|
+
titleField: titleField,
|
|
100
|
+
disabled: false,
|
|
101
|
+
"aria-hidden": true,
|
|
102
|
+
tabIndex: -1
|
|
103
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
104
|
+
justify: "space-between",
|
|
105
|
+
className: "dataviews-view-picker-grid__title-actions",
|
|
106
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
107
|
+
className: "dataviews-view-picker-grid__title-field dataviews-title-field",
|
|
108
|
+
children: renderedTitleField
|
|
109
|
+
})
|
|
110
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
111
|
+
spacing: 1,
|
|
112
|
+
children: [showDescription && descriptionField?.render && /*#__PURE__*/(0, _jsxRuntime.jsx)(descriptionField.render, {
|
|
113
|
+
item: item,
|
|
114
|
+
field: descriptionField
|
|
115
|
+
}), !!badgeFields?.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
116
|
+
className: "dataviews-view-picker-grid__badge-fields",
|
|
117
|
+
spacing: 2,
|
|
118
|
+
wrap: true,
|
|
119
|
+
alignment: "top",
|
|
120
|
+
justify: "flex-start",
|
|
121
|
+
children: badgeFields.map(field => {
|
|
122
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Badge, {
|
|
123
|
+
className: "dataviews-view-picker-grid__field-value",
|
|
124
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(field.render, {
|
|
125
|
+
item: item,
|
|
126
|
+
field: field
|
|
127
|
+
})
|
|
128
|
+
}, field.id);
|
|
129
|
+
})
|
|
130
|
+
}), !!regularFields?.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
131
|
+
className: "dataviews-view-picker-grid__fields",
|
|
132
|
+
spacing: 1,
|
|
133
|
+
children: regularFields.map(field => {
|
|
134
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Flex, {
|
|
135
|
+
className: "dataviews-view-picker-grid__field",
|
|
136
|
+
gap: 1,
|
|
137
|
+
justify: "flex-start",
|
|
138
|
+
expanded: true,
|
|
139
|
+
style: {
|
|
140
|
+
height: 'auto'
|
|
141
|
+
},
|
|
142
|
+
direction: "row",
|
|
143
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
144
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
|
|
145
|
+
className: "dataviews-view-picker-grid__field-name",
|
|
146
|
+
children: field.header
|
|
147
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
|
|
148
|
+
className: "dataviews-view-picker-grid__field-value",
|
|
149
|
+
style: {
|
|
150
|
+
maxHeight: 'none'
|
|
151
|
+
},
|
|
152
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(field.render, {
|
|
153
|
+
item: item,
|
|
154
|
+
field: field
|
|
155
|
+
})
|
|
156
|
+
})]
|
|
157
|
+
})
|
|
158
|
+
}, field.id);
|
|
159
|
+
})
|
|
160
|
+
})]
|
|
161
|
+
})]
|
|
162
|
+
}, id);
|
|
163
|
+
}
|
|
164
|
+
function GridGroup({
|
|
165
|
+
groupName,
|
|
166
|
+
groupField,
|
|
167
|
+
children
|
|
168
|
+
}) {
|
|
169
|
+
const headerId = (0, _compose.useInstanceId)(GridGroup, 'dataviews-view-picker-grid-group__header');
|
|
170
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
171
|
+
spacing: 2,
|
|
172
|
+
role: "group",
|
|
173
|
+
"aria-labelledby": headerId,
|
|
174
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
175
|
+
className: "dataviews-view-picker-grid-group__header",
|
|
176
|
+
id: headerId,
|
|
177
|
+
children: (0, _i18n.sprintf)(
|
|
178
|
+
// translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
|
|
179
|
+
(0, _i18n.__)('%1$s: %2$s'), groupField.label, groupName)
|
|
180
|
+
}), children]
|
|
181
|
+
}, groupName);
|
|
182
|
+
}
|
|
183
|
+
function ViewPickerGrid({
|
|
184
|
+
actions,
|
|
185
|
+
data,
|
|
186
|
+
fields,
|
|
187
|
+
getItemId,
|
|
188
|
+
isLoading,
|
|
189
|
+
onChangeSelection,
|
|
190
|
+
selection,
|
|
191
|
+
view,
|
|
192
|
+
className,
|
|
193
|
+
empty
|
|
194
|
+
}) {
|
|
195
|
+
var _view$fields, _view$page, _view$perPage;
|
|
196
|
+
const {
|
|
197
|
+
resizeObserverRef,
|
|
198
|
+
paginationInfo,
|
|
199
|
+
itemListLabel
|
|
200
|
+
} = (0, _element.useContext)(_dataviewsContext.default);
|
|
201
|
+
const titleField = fields.find(field => field.id === view?.titleField);
|
|
202
|
+
const mediaField = fields.find(field => field.id === view?.mediaField);
|
|
203
|
+
const descriptionField = fields.find(field => field.id === view?.descriptionField);
|
|
204
|
+
const otherFields = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
|
|
205
|
+
const {
|
|
206
|
+
regularFields,
|
|
207
|
+
badgeFields
|
|
208
|
+
} = otherFields.reduce((accumulator, fieldId) => {
|
|
209
|
+
const field = fields.find(f => f.id === fieldId);
|
|
210
|
+
if (!field) {
|
|
211
|
+
return accumulator;
|
|
212
|
+
}
|
|
213
|
+
// If the field is a badge field, add it to the badgeFields array
|
|
214
|
+
// otherwise add it to the rest visibleFields array.
|
|
215
|
+
const key = view.layout?.badgeFields?.includes(fieldId) ? 'badgeFields' : 'regularFields';
|
|
216
|
+
accumulator[key].push(field);
|
|
217
|
+
return accumulator;
|
|
218
|
+
}, {
|
|
219
|
+
regularFields: [],
|
|
220
|
+
badgeFields: []
|
|
221
|
+
});
|
|
222
|
+
const hasData = !!data?.length;
|
|
223
|
+
const usedPreviewSize = view.layout?.previewSize;
|
|
224
|
+
const isMultiselect = (0, _footer.useIsMultiselectPicker)(actions);
|
|
225
|
+
|
|
226
|
+
/*
|
|
227
|
+
* This is the maximum width that an image can achieve in the grid. The reasoning is:
|
|
228
|
+
* The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).
|
|
229
|
+
* Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.
|
|
230
|
+
* So each image will never grow past 2*430px plus a little more to account for the gaps.
|
|
231
|
+
*/
|
|
232
|
+
const size = '900px';
|
|
233
|
+
const groupField = view.groupByField ? fields.find(f => f.id === view.groupByField) : null;
|
|
234
|
+
const dataByGroup = groupField ? (0, _getDataByGroup.default)(data, groupField) : null;
|
|
235
|
+
const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
|
|
236
|
+
const currentPage = (_view$page = view?.page) !== null && _view$page !== void 0 ? _view$page : 1;
|
|
237
|
+
const perPage = (_view$perPage = view?.perPage) !== null && _view$perPage !== void 0 ? _view$perPage : 0;
|
|
238
|
+
const setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;
|
|
239
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
240
|
+
children: [
|
|
241
|
+
// Render multiple groups.
|
|
242
|
+
hasData && groupField && dataByGroup && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Composite, {
|
|
243
|
+
virtualFocus: true,
|
|
244
|
+
orientation: "horizontal",
|
|
245
|
+
role: "listbox",
|
|
246
|
+
"aria-multiselectable": isMultiselect,
|
|
247
|
+
className: (0, _clsx.default)('dataviews-view-picker-grid', className),
|
|
248
|
+
"aria-label": itemListLabel,
|
|
249
|
+
render: ({
|
|
250
|
+
children,
|
|
251
|
+
...props
|
|
252
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
253
|
+
spacing: 4,
|
|
254
|
+
children: children,
|
|
255
|
+
...props
|
|
256
|
+
}),
|
|
257
|
+
children: Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/(0, _jsxRuntime.jsx)(GridGroup, {
|
|
258
|
+
groupName: groupName,
|
|
259
|
+
groupField: groupField,
|
|
260
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_gridItems.GridItems, {
|
|
261
|
+
previewSize: usedPreviewSize,
|
|
262
|
+
style: {
|
|
263
|
+
gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
|
|
264
|
+
},
|
|
265
|
+
"aria-busy": isLoading,
|
|
266
|
+
ref: resizeObserverRef,
|
|
267
|
+
children: groupItems.map(item => {
|
|
268
|
+
const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1;
|
|
269
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridItem, {
|
|
270
|
+
view: view,
|
|
271
|
+
multiselect: isMultiselect,
|
|
272
|
+
selection: selection,
|
|
273
|
+
onChangeSelection: onChangeSelection,
|
|
274
|
+
getItemId: getItemId,
|
|
275
|
+
item: item,
|
|
276
|
+
mediaField: mediaField,
|
|
277
|
+
titleField: titleField,
|
|
278
|
+
descriptionField: descriptionField,
|
|
279
|
+
regularFields: regularFields,
|
|
280
|
+
badgeFields: badgeFields,
|
|
281
|
+
config: {
|
|
282
|
+
sizes: size
|
|
283
|
+
},
|
|
284
|
+
posinset: posInSet,
|
|
285
|
+
setsize: setSize
|
|
286
|
+
}, getItemId(item));
|
|
287
|
+
})
|
|
288
|
+
})
|
|
289
|
+
}, groupName))
|
|
290
|
+
}),
|
|
291
|
+
// Render a single grid with all data.
|
|
292
|
+
hasData && !dataByGroup && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Composite, {
|
|
293
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_gridItems.GridItems, {
|
|
294
|
+
className: (0, _clsx.default)('dataviews-view-picker-grid', className),
|
|
295
|
+
previewSize: usedPreviewSize,
|
|
296
|
+
"aria-busy": isLoading,
|
|
297
|
+
ref: resizeObserverRef
|
|
298
|
+
}),
|
|
299
|
+
virtualFocus: true,
|
|
300
|
+
orientation: "horizontal",
|
|
301
|
+
role: "listbox",
|
|
302
|
+
"aria-multiselectable": isMultiselect,
|
|
303
|
+
"aria-label": itemListLabel,
|
|
304
|
+
children: data.map((item, index) => {
|
|
305
|
+
let posinset = isInfiniteScroll ? index + 1 : undefined;
|
|
306
|
+
if (!isInfiniteScroll) {
|
|
307
|
+
// When infinite scroll isn't active, take pagination into account
|
|
308
|
+
// when calculating the posinset.
|
|
309
|
+
posinset = (currentPage - 1) * perPage + index + 1;
|
|
310
|
+
}
|
|
311
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridItem, {
|
|
312
|
+
view: view,
|
|
313
|
+
multiselect: isMultiselect,
|
|
314
|
+
selection: selection,
|
|
315
|
+
onChangeSelection: onChangeSelection,
|
|
316
|
+
getItemId: getItemId,
|
|
317
|
+
item: item,
|
|
318
|
+
mediaField: mediaField,
|
|
319
|
+
titleField: titleField,
|
|
320
|
+
descriptionField: descriptionField,
|
|
321
|
+
regularFields: regularFields,
|
|
322
|
+
badgeFields: badgeFields,
|
|
323
|
+
config: {
|
|
324
|
+
sizes: size
|
|
325
|
+
},
|
|
326
|
+
posinset: posinset,
|
|
327
|
+
setsize: setSize
|
|
328
|
+
}, getItemId(item));
|
|
329
|
+
})
|
|
330
|
+
}),
|
|
331
|
+
// Render empty state.
|
|
332
|
+
!hasData && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
333
|
+
className: (0, _clsx.default)({
|
|
334
|
+
'dataviews-loading': isLoading,
|
|
335
|
+
'dataviews-no-results': !isLoading
|
|
336
|
+
}),
|
|
337
|
+
children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
338
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {})
|
|
339
|
+
}) : empty
|
|
340
|
+
}), hasData && isLoading && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
341
|
+
className: "dataviews-loading-more",
|
|
342
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {})
|
|
343
|
+
})]
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
var _default = exports.default = ViewPickerGrid;
|
|
347
|
+
//# sourceMappingURL=index.js.map
|