@wordpress/dataviews 4.22.0 → 5.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 +39 -0
- package/README.md +147 -32
- package/build/components/dataviews/index.js +71 -37
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-context/index.js +15 -1
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-filters/{filter-summary.js → filter.js} +108 -17
- package/build/components/dataviews-filters/filter.js.map +1 -0
- package/build/components/dataviews-filters/index.js +21 -20
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-filters/input-widget.js +76 -0
- package/build/components/dataviews-filters/input-widget.js.map +1 -0
- package/build/components/dataviews-filters/search-widget.js +33 -39
- package/build/components/dataviews-filters/search-widget.js.map +1 -1
- package/build/components/dataviews-filters/utils.js +25 -0
- package/build/components/dataviews-filters/utils.js.map +1 -0
- package/build/components/dataviews-item-actions/index.js +1 -1
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-layout/index.js +7 -2
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-pagination/index.js +4 -3
- package/build/components/dataviews-pagination/index.js.map +1 -1
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +10 -19
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/constants.js +83 -2
- package/build/constants.js.map +1 -1
- package/build/dataform-controls/boolean.js +42 -0
- package/build/dataform-controls/boolean.js.map +1 -0
- package/build/dataform-controls/checkbox.js +44 -0
- package/build/dataform-controls/checkbox.js.map +1 -0
- package/build/dataform-controls/datetime.js +96 -2
- package/build/dataform-controls/datetime.js.map +1 -1
- package/build/dataform-controls/email.js +48 -0
- package/build/dataform-controls/email.js.map +1 -0
- package/build/dataform-controls/index.js +9 -1
- package/build/dataform-controls/index.js.map +1 -1
- package/build/dataform-controls/integer.js +49 -1
- package/build/dataform-controls/integer.js.map +1 -1
- package/build/dataform-controls/select.js +1 -0
- package/build/dataform-controls/select.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/toggle-group.js +52 -0
- package/build/dataform-controls/toggle-group.js.map +1 -0
- package/build/dataforms-layouts/data-form-layout.js +1 -1
- package/build/dataforms-layouts/data-form-layout.js.map +1 -1
- package/build/dataforms-layouts/panel/index.js +14 -5
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataforms-layouts/regular/index.js +23 -4
- package/build/dataforms-layouts/regular/index.js.map +1 -1
- package/build/dataviews-layouts/grid/index.js +89 -27
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +11 -6
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/column-header-menu.js +9 -7
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build/dataviews-layouts/table/column-primary.js +18 -13
- package/build/dataviews-layouts/table/column-primary.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +46 -14
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js +65 -0
- package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -0
- package/build/dataviews-layouts/utils/item-click-wrapper.js +77 -0
- package/build/dataviews-layouts/utils/item-click-wrapper.js.map +1 -0
- package/build/field-types/array.js +62 -0
- package/build/field-types/array.js.map +1 -0
- package/build/field-types/boolean.js +71 -0
- package/build/field-types/boolean.js.map +1 -0
- package/build/field-types/date.js +57 -0
- package/build/field-types/date.js.map +1 -0
- package/build/field-types/datetime.js +19 -1
- package/build/field-types/datetime.js.map +1 -1
- package/build/field-types/email.js +60 -0
- package/build/field-types/email.js.map +1 -0
- package/build/field-types/index.js +42 -1
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/integer.js +23 -1
- package/build/field-types/integer.js.map +1 -1
- package/build/field-types/media.js +31 -0
- package/build/field-types/media.js.map +1 -0
- package/build/field-types/text.js +23 -1
- package/build/field-types/text.js.map +1 -1
- package/build/filter-and-sort-data-view.js +174 -11
- package/build/filter-and-sort-data-view.js.map +1 -1
- package/build/normalize-fields.js +72 -11
- package/build/normalize-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils.js +11 -19
- package/build/utils.js.map +1 -1
- package/build-module/components/dataviews/index.js +74 -40
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js +16 -2
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-filters/filter.js +309 -0
- package/build-module/components/dataviews-filters/filter.js.map +1 -0
- package/build-module/components/dataviews-filters/index.js +22 -21
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-filters/input-widget.js +69 -0
- package/build-module/components/dataviews-filters/input-widget.js.map +1 -0
- package/build-module/components/dataviews-filters/search-widget.js +31 -37
- package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
- package/build-module/components/dataviews-filters/utils.js +18 -0
- package/build-module/components/dataviews-filters/utils.js.map +1 -0
- package/build-module/components/dataviews-item-actions/index.js +1 -1
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +7 -2
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-pagination/index.js +4 -4
- package/build-module/components/dataviews-pagination/index.js.map +1 -1
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +9 -20
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/constants.js +82 -1
- package/build-module/constants.js.map +1 -1
- package/build-module/dataform-controls/boolean.js +35 -0
- package/build-module/dataform-controls/boolean.js.map +1 -0
- package/build-module/dataform-controls/checkbox.js +37 -0
- package/build-module/dataform-controls/checkbox.js.map +1 -0
- package/build-module/dataform-controls/datetime.js +98 -3
- package/build-module/dataform-controls/datetime.js.map +1 -1
- package/build-module/dataform-controls/email.js +41 -0
- package/build-module/dataform-controls/email.js.map +1 -0
- package/build-module/dataform-controls/index.js +9 -1
- package/build-module/dataform-controls/index.js.map +1 -1
- package/build-module/dataform-controls/integer.js +51 -3
- package/build-module/dataform-controls/integer.js.map +1 -1
- package/build-module/dataform-controls/select.js +1 -0
- package/build-module/dataform-controls/select.js.map +1 -1
- package/build-module/dataform-controls/text.js +3 -1
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/toggle-group.js +45 -0
- package/build-module/dataform-controls/toggle-group.js.map +1 -0
- package/build-module/dataforms-layouts/data-form-layout.js +1 -1
- package/build-module/dataforms-layouts/data-form-layout.js.map +1 -1
- package/build-module/dataforms-layouts/panel/index.js +14 -5
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataforms-layouts/regular/index.js +23 -4
- package/build-module/dataforms-layouts/regular/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/index.js +90 -29
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +11 -6
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-header-menu.js +9 -7
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-primary.js +18 -12
- package/build-module/dataviews-layouts/table/column-primary.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +47 -16
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js +58 -0
- package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -0
- package/build-module/dataviews-layouts/utils/item-click-wrapper.js +71 -0
- package/build-module/dataviews-layouts/utils/item-click-wrapper.js.map +1 -0
- package/build-module/field-types/array.js +57 -0
- package/build-module/field-types/array.js.map +1 -0
- package/build-module/field-types/boolean.js +65 -0
- package/build-module/field-types/boolean.js.map +1 -0
- package/build-module/field-types/date.js +51 -0
- package/build-module/field-types/date.js.map +1 -0
- package/build-module/field-types/datetime.js +19 -1
- package/build-module/field-types/datetime.js.map +1 -1
- package/build-module/field-types/email.js +54 -0
- package/build-module/field-types/email.js.map +1 -0
- package/build-module/field-types/index.js +42 -1
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/integer.js +23 -1
- package/build-module/field-types/integer.js.map +1 -1
- package/build-module/field-types/media.js +25 -0
- package/build-module/field-types/media.js.map +1 -0
- package/build-module/field-types/text.js +23 -1
- package/build-module/field-types/text.js.map +1 -1
- package/build-module/filter-and-sort-data-view.js +175 -12
- package/build-module/filter-and-sort-data-view.js.map +1 -1
- package/build-module/normalize-fields.js +72 -11
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/utils.js +10 -17
- package/build-module/utils.js.map +1 -1
- package/build-style/style-rtl.css +315 -13
- package/build-style/style.css +315 -13
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews/index.d.ts +24 -3
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts +10 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/index.story.d.ts +23 -4
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +14 -1
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/filter.d.ts +15 -0
- package/build-types/components/dataviews-filters/filter.d.ts.map +1 -0
- package/build-types/components/dataviews-filters/index.d.ts +3 -8
- package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/input-widget.d.ts +13 -0
- package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -0
- package/build-types/components/dataviews-filters/search-widget.d.ts +4 -5
- package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/utils.d.ts +6 -0
- package/build-types/components/dataviews-filters/utils.d.ts.map +1 -0
- package/build-types/components/dataviews-layout/index.d.ts +5 -1
- package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
- package/build-types/components/dataviews-pagination/index.d.ts +1 -1
- package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
- package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -2
- package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts +3 -4
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/components/stories/index.story.d.ts +63 -0
- package/build-types/components/stories/index.story.d.ts.map +1 -0
- package/build-types/constants.d.ts +20 -3
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/boolean.d.ts +6 -0
- package/build-types/dataform-controls/boolean.d.ts.map +1 -0
- package/build-types/dataform-controls/checkbox.d.ts +6 -0
- package/build-types/dataform-controls/checkbox.d.ts.map +1 -0
- package/build-types/dataform-controls/datetime.d.ts +1 -1
- package/build-types/dataform-controls/datetime.d.ts.map +1 -1
- package/build-types/dataform-controls/email.d.ts +6 -0
- package/build-types/dataform-controls/email.d.ts.map +1 -0
- 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 +1 -4
- package/build-types/dataform-controls/integer.d.ts.map +1 -1
- package/build-types/dataform-controls/select.d.ts.map +1 -1
- package/build-types/dataform-controls/text.d.ts.map +1 -1
- package/build-types/dataform-controls/toggle-group.d.ts +6 -0
- package/build-types/dataform-controls/toggle-group.d.ts.map +1 -0
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/index.d.ts +2 -1
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +3 -3
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-primary.d.ts +8 -1
- package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/use-is-horizontal-scroll-end.d.ts +19 -0
- package/build-types/dataviews-layouts/table/use-is-horizontal-scroll-end.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/item-click-wrapper.d.ts +15 -0
- package/build-types/dataviews-layouts/utils/item-click-wrapper.d.ts.map +1 -0
- package/build-types/field-types/array.d.ts +7 -0
- package/build-types/field-types/array.d.ts.map +1 -0
- package/build-types/field-types/boolean.d.ts +19 -0
- package/build-types/field-types/boolean.d.ts.map +1 -0
- package/build-types/field-types/date.d.ts +16 -0
- package/build-types/field-types/date.d.ts.map +1 -0
- package/build-types/field-types/datetime.d.ts +7 -1
- package/build-types/field-types/datetime.d.ts.map +1 -1
- package/build-types/field-types/email.d.ts +19 -0
- package/build-types/field-types/email.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts +2 -10
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/integer.d.ts +7 -1
- package/build-types/field-types/integer.d.ts.map +1 -1
- package/build-types/field-types/media.d.ts +16 -0
- package/build-types/field-types/media.d.ts.map +1 -0
- package/build-types/field-types/text.d.ts +7 -1
- package/build-types/field-types/text.d.ts.map +1 -1
- package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/types.d.ts +74 -8
- package/build-types/types.d.ts.map +1 -1
- package/build-types/utils.d.ts +5 -2
- package/build-types/utils.d.ts.map +1 -1
- package/build-wp/index.js +3299 -1182
- package/package.json +18 -12
- package/src/components/dataform/stories/index.story.tsx +41 -20
- package/src/components/dataviews/index.tsx +108 -43
- package/src/components/dataviews/stories/fixtures.tsx +135 -69
- package/src/components/dataviews/stories/index.story.tsx +265 -7
- package/src/components/dataviews/stories/style.css +24 -3
- package/src/components/dataviews/style.scss +27 -0
- package/src/components/dataviews-context/index.ts +30 -2
- package/src/components/dataviews-filters/filter.tsx +603 -0
- package/src/components/dataviews-filters/index.tsx +23 -29
- package/src/components/dataviews-filters/input-widget.tsx +91 -0
- package/src/components/dataviews-filters/search-widget.tsx +51 -48
- package/src/components/dataviews-filters/style.scss +117 -14
- package/src/components/dataviews-filters/utils.ts +25 -0
- package/src/components/dataviews-item-actions/index.tsx +1 -1
- package/src/components/dataviews-layout/index.tsx +8 -1
- package/src/components/dataviews-pagination/index.tsx +4 -4
- package/src/components/dataviews-selection-checkbox/index.tsx +2 -2
- package/src/components/dataviews-view-config/index.tsx +10 -18
- package/src/components/stories/index.story.tsx +372 -0
- package/src/constants.ts +116 -1
- package/src/dataform-controls/boolean.tsx +30 -0
- package/src/dataform-controls/checkbox.tsx +31 -0
- package/src/dataform-controls/datetime.tsx +106 -2
- package/src/dataform-controls/email.tsx +42 -0
- package/src/dataform-controls/index.tsx +8 -0
- package/src/dataform-controls/integer.tsx +75 -1
- package/src/dataform-controls/select.tsx +1 -0
- package/src/dataform-controls/style.scss +5 -0
- package/src/dataform-controls/text.tsx +2 -1
- package/src/dataform-controls/toggle-group.tsx +59 -0
- package/src/dataforms-layouts/data-form-layout.tsx +1 -1
- package/src/dataforms-layouts/panel/index.tsx +19 -7
- package/src/dataforms-layouts/panel/style.scss +8 -1
- package/src/dataforms-layouts/regular/index.tsx +50 -17
- package/src/dataforms-layouts/regular/style.scss +4 -1
- package/src/dataviews-layouts/grid/index.tsx +180 -68
- package/src/dataviews-layouts/grid/style.scss +8 -0
- package/src/dataviews-layouts/list/index.tsx +12 -5
- package/src/dataviews-layouts/table/column-header-menu.tsx +10 -8
- package/src/dataviews-layouts/table/column-primary.tsx +26 -13
- package/src/dataviews-layouts/table/index.tsx +74 -10
- package/src/dataviews-layouts/table/style.scss +37 -1
- package/src/dataviews-layouts/table/use-is-horizontal-scroll-end.ts +82 -0
- package/src/dataviews-layouts/utils/item-click-wrapper.tsx +93 -0
- package/src/field-types/array.tsx +75 -0
- package/src/field-types/boolean.tsx +66 -0
- package/src/field-types/date.ts +56 -0
- package/src/field-types/datetime.tsx +46 -2
- package/src/field-types/email.tsx +79 -0
- package/src/field-types/index.tsx +50 -3
- package/src/field-types/integer.tsx +53 -2
- package/src/field-types/media.tsx +28 -0
- package/src/field-types/text.tsx +41 -2
- package/src/filter-and-sort-data-view.ts +270 -10
- package/src/normalize-fields.ts +116 -13
- package/src/test/dataviews.tsx +20 -2
- package/src/test/filter-and-sort-data-view.js +601 -25
- package/src/test/normalize-fields.ts +155 -0
- package/src/types.ts +112 -9
- package/src/utils.ts +10 -33
- package/tsconfig.json +2 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/dataviews-filters/filter-summary.js.map +0 -1
- package/build/dataviews-layouts/utils/get-clickable-item-props.js +0 -36
- package/build/dataviews-layouts/utils/get-clickable-item-props.js.map +0 -1
- package/build-module/components/dataviews-filters/filter-summary.js +0 -218
- package/build-module/components/dataviews-filters/filter-summary.js.map +0 -1
- package/build-module/dataviews-layouts/utils/get-clickable-item-props.js +0 -30
- package/build-module/dataviews-layouts/utils/get-clickable-item-props.js.map +0 -1
- package/build-types/components/dataviews-filters/filter-summary.d.ts +0 -14
- package/build-types/components/dataviews-filters/filter-summary.d.ts.map +0 -1
- package/build-types/dataviews-layouts/utils/get-clickable-item-props.d.ts +0 -19
- package/build-types/dataviews-layouts/utils/get-clickable-item-props.d.ts.map +0 -1
- package/src/components/dataviews-filters/filter-summary.tsx +0 -338
- package/src/dataviews-layouts/utils/get-clickable-item-props.ts +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","__","Spinner","useEffect","useId","useRef","useState","DataViewsSelectionCheckbox","ItemActions","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","BulkSelectionCheckbox","ColumnHeaderMenu","ColumnPrimary","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TableColumnField","item","fields","column","field","find","f","id","className","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","onChangeSelection","_view$fields","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","columns","hasPrimaryColumn","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","disabled","undefined","map","_view$layout$styles$c","width","maxWidth","minWidth","layout","styles","style","length","e","stopPropagation","ViewTable","data","getItemLevel","isLoading","onChangeView","setOpenedFilter","_view$fields2","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","tableNoticeId","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","density","scope","ref","fieldId","canMove","_view$layout$styles$c2","sort","direction","showLevels","toString"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Spinner } from '@wordpress/components';\nimport { useEffect, useId, useRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\tonChangeSelection,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td key={ column } style={ { width, maxWidth, minWidth } }>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\tview,\n}: ViewTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\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 { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\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</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ { width, maxWidth, minWidth } }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</tbody>\n\t\t\t</table>\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\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","__","Spinner","useContext","useEffect","useId","useRef","useState","DataViewsContext","DataViewsSelectionCheckbox","ItemActions","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","BulkSelectionCheckbox","ColumnHeaderMenu","ColumnPrimary","useIsHorizontalScrollEnd","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TableColumnField","item","fields","column","align","field","find","f","id","className","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","renderItemLink","onChangeSelection","isActionsColumnSticky","_view$fields","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","columns","hasPrimaryColumn","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","disabled","undefined","map","_view$layout$styles$c","width","maxWidth","minWidth","layout","styles","style","length","e","stopPropagation","ViewTable","data","getItemLevel","isLoading","onChangeView","setOpenedFilter","_view$fields2","containerRef","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","tableNoticeId","isHorizontalScrollEnd","scrollContainerRef","enabled","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","density","scope","ref","fieldId","canMove","_view$layout$styles$c2","textAlign","sort","direction","showLevels","toString"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Spinner } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\nimport { useIsHorizontalScrollEnd } from './use-is-horizontal-scroll-end';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisActionsColumnSticky?: boolean;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tonChangeSelection,\n\tisActionsColumnSticky,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-table__actions-column', {\n\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky': true,\n\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\tisActionsColumnSticky,\n\t\t\t\t\t} ) }\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tview,\n\tclassName,\n}: ViewTableProps< Item > ) {\n\tconst { containerRef } = useContext( DataViewsContext );\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tconst isHorizontalScrollEnd = useIsHorizontalScrollEnd( {\n\t\tscrollContainerRef: containerRef,\n\t\tenabled: !! actions?.length,\n\t} );\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\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 { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\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</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky':\n\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd,\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\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\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</tbody>\n\t\t\t</table>\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\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies
|
|
7
|
+
*/
|
|
8
|
+
import { useDebounce } from '@wordpress/compose';
|
|
9
|
+
import { useCallback, useEffect, useState } from '@wordpress/element';
|
|
10
|
+
import { isRTL } from '@wordpress/i18n';
|
|
11
|
+
const isScrolledToEnd = element => {
|
|
12
|
+
if (isRTL()) {
|
|
13
|
+
const scrollLeft = Math.abs(element.scrollLeft);
|
|
14
|
+
return scrollLeft <= 1;
|
|
15
|
+
}
|
|
16
|
+
return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A hook to check if a given scroll container has reached the horizontal scroll end.
|
|
21
|
+
*
|
|
22
|
+
* The current way receives "refs" as arguments, but it lacks a mechanism to detect when a ref has changed.
|
|
23
|
+
* As a result, when the "ref" is updated and attached to a new div, the computation should trigger again.
|
|
24
|
+
* However, this isn't possible in the current setup because the hook is unaware that the ref has changed.
|
|
25
|
+
*
|
|
26
|
+
* See https://github.com/Automattic/wp-calypso/pull/103005#discussion_r2077567912.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object} params The parameters for the hook.
|
|
29
|
+
* @param {MutableRefObject<HTMLDivElement | null>} params.scrollContainerRef The ref to the scroll container element.
|
|
30
|
+
* @param {boolean} [params.enabled=false] Whether the hook is enabled.
|
|
31
|
+
* @return {boolean} - Returns true if the scroll container is scrolled to the end or false otherwise.
|
|
32
|
+
*/
|
|
33
|
+
export function useIsHorizontalScrollEnd({
|
|
34
|
+
scrollContainerRef,
|
|
35
|
+
enabled = false
|
|
36
|
+
}) {
|
|
37
|
+
const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = useState(false);
|
|
38
|
+
const handleIsHorizontalScrollEnd = useDebounce(useCallback(() => {
|
|
39
|
+
const scrollContainer = scrollContainerRef.current;
|
|
40
|
+
if (scrollContainer) {
|
|
41
|
+
setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer));
|
|
42
|
+
}
|
|
43
|
+
}, [scrollContainerRef, setIsHorizontalScrollEnd]), 200);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (typeof window === 'undefined' || !enabled || !scrollContainerRef.current) {
|
|
46
|
+
return () => {};
|
|
47
|
+
}
|
|
48
|
+
handleIsHorizontalScrollEnd();
|
|
49
|
+
scrollContainerRef.current.addEventListener('scroll', handleIsHorizontalScrollEnd);
|
|
50
|
+
window.addEventListener('resize', handleIsHorizontalScrollEnd);
|
|
51
|
+
return () => {
|
|
52
|
+
scrollContainerRef.current?.removeEventListener('scroll', handleIsHorizontalScrollEnd);
|
|
53
|
+
window.removeEventListener('resize', handleIsHorizontalScrollEnd);
|
|
54
|
+
};
|
|
55
|
+
}, [scrollContainerRef, enabled]);
|
|
56
|
+
return isHorizontalScrollEnd;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=use-is-horizontal-scroll-end.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useDebounce","useCallback","useEffect","useState","isRTL","isScrolledToEnd","element","scrollLeft","Math","abs","clientWidth","scrollWidth","useIsHorizontalScrollEnd","scrollContainerRef","enabled","isHorizontalScrollEnd","setIsHorizontalScrollEnd","handleIsHorizontalScrollEnd","scrollContainer","current","window","addEventListener","removeEventListener"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/use-is-horizontal-scroll-end.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { MutableRefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useDebounce } from '@wordpress/compose';\nimport { useCallback, useEffect, useState } from '@wordpress/element';\nimport { isRTL } from '@wordpress/i18n';\n\nconst isScrolledToEnd = ( element: Element ) => {\n\tif ( isRTL() ) {\n\t\tconst scrollLeft = Math.abs( element.scrollLeft );\n\t\treturn scrollLeft <= 1;\n\t}\n\n\treturn element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;\n};\n\n/**\n * A hook to check if a given scroll container has reached the horizontal scroll end.\n *\n * The current way receives \"refs\" as arguments, but it lacks a mechanism to detect when a ref has changed.\n * As a result, when the \"ref\" is updated and attached to a new div, the computation should trigger again.\n * However, this isn't possible in the current setup because the hook is unaware that the ref has changed.\n *\n * See https://github.com/Automattic/wp-calypso/pull/103005#discussion_r2077567912.\n *\n * @param {Object} params The parameters for the hook.\n * @param {MutableRefObject<HTMLDivElement | null>} params.scrollContainerRef The ref to the scroll container element.\n * @param {boolean} [params.enabled=false] Whether the hook is enabled.\n * @return {boolean} - Returns true if the scroll container is scrolled to the end or false otherwise.\n */\nexport function useIsHorizontalScrollEnd( {\n\tscrollContainerRef,\n\tenabled = false,\n}: {\n\tscrollContainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tenabled?: boolean;\n} ): boolean {\n\tconst [ isHorizontalScrollEnd, setIsHorizontalScrollEnd ] =\n\t\tuseState( false );\n\n\tconst handleIsHorizontalScrollEnd = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst scrollContainer = scrollContainerRef.current;\n\t\t\tif ( scrollContainer ) {\n\t\t\t\tsetIsHorizontalScrollEnd( isScrolledToEnd( scrollContainer ) );\n\t\t\t}\n\t\t}, [ scrollContainerRef, setIsHorizontalScrollEnd ] ),\n\t\t200\n\t);\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\ttypeof window === 'undefined' ||\n\t\t\t! enabled ||\n\t\t\t! scrollContainerRef.current\n\t\t) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\thandleIsHorizontalScrollEnd();\n\t\tscrollContainerRef.current.addEventListener(\n\t\t\t'scroll',\n\t\t\thandleIsHorizontalScrollEnd\n\t\t);\n\t\twindow.addEventListener( 'resize', handleIsHorizontalScrollEnd );\n\n\t\treturn () => {\n\t\t\tscrollContainerRef.current?.removeEventListener(\n\t\t\t\t'scroll',\n\t\t\t\thandleIsHorizontalScrollEnd\n\t\t\t);\n\t\t\twindow.removeEventListener( 'resize', handleIsHorizontalScrollEnd );\n\t\t};\n\t}, [ scrollContainerRef, enabled ] );\n\n\treturn isHorizontalScrollEnd;\n}\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,oBAAoB;AAChD,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,oBAAoB;AACrE,SAASC,KAAK,QAAQ,iBAAiB;AAEvC,MAAMC,eAAe,GAAKC,OAAgB,IAAM;EAC/C,IAAKF,KAAK,CAAC,CAAC,EAAG;IACd,MAAMG,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAEH,OAAO,CAACC,UAAW,CAAC;IACjD,OAAOA,UAAU,IAAI,CAAC;EACvB;EAEA,OAAOD,OAAO,CAACC,UAAU,GAAGD,OAAO,CAACI,WAAW,IAAIJ,OAAO,CAACK,WAAW,GAAG,CAAC;AAC3E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAAE;EACzCC,kBAAkB;EAClBC,OAAO,GAAG;AAIX,CAAC,EAAY;EACZ,MAAM,CAAEC,qBAAqB,EAAEC,wBAAwB,CAAE,GACxDb,QAAQ,CAAE,KAAM,CAAC;EAElB,MAAMc,2BAA2B,GAAGjB,WAAW,CAC9CC,WAAW,CAAE,MAAM;IAClB,MAAMiB,eAAe,GAAGL,kBAAkB,CAACM,OAAO;IAClD,IAAKD,eAAe,EAAG;MACtBF,wBAAwB,CAAEX,eAAe,CAAEa,eAAgB,CAAE,CAAC;IAC/D;EACD,CAAC,EAAE,CAAEL,kBAAkB,EAAEG,wBAAwB,CAAG,CAAC,EACrD,GACD,CAAC;EAEDd,SAAS,CAAE,MAAM;IAChB,IACC,OAAOkB,MAAM,KAAK,WAAW,IAC7B,CAAEN,OAAO,IACT,CAAED,kBAAkB,CAACM,OAAO,EAC3B;MACD,OAAO,MAAM,CAAC,CAAC;IAChB;IAEAF,2BAA2B,CAAC,CAAC;IAC7BJ,kBAAkB,CAACM,OAAO,CAACE,gBAAgB,CAC1C,QAAQ,EACRJ,2BACD,CAAC;IACDG,MAAM,CAACC,gBAAgB,CAAE,QAAQ,EAAEJ,2BAA4B,CAAC;IAEhE,OAAO,MAAM;MACZJ,kBAAkB,CAACM,OAAO,EAAEG,mBAAmB,CAC9C,QAAQ,EACRL,2BACD,CAAC;MACDG,MAAM,CAACE,mBAAmB,CAAE,QAAQ,EAAEL,2BAA4B,CAAC;IACpE,CAAC;EACF,CAAC,EAAE,CAAEJ,kBAAkB,EAAEC,OAAO,CAAG,CAAC;EAEpC,OAAOC,qBAAqB;AAC7B","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* External dependencies
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
function getClickableItemProps({
|
|
7
|
+
item,
|
|
8
|
+
isItemClickable,
|
|
9
|
+
onClickItem,
|
|
10
|
+
className
|
|
11
|
+
}) {
|
|
12
|
+
if (!isItemClickable(item) || !onClickItem) {
|
|
13
|
+
return {
|
|
14
|
+
className
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
className: className ? `${className} ${className}--clickable` : undefined,
|
|
19
|
+
role: 'button',
|
|
20
|
+
tabIndex: 0,
|
|
21
|
+
onClick: event => {
|
|
22
|
+
// Prevents onChangeSelection from triggering.
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
onClickItem(item);
|
|
25
|
+
},
|
|
26
|
+
onKeyDown: event => {
|
|
27
|
+
if (event.key === 'Enter' || event.key === '' || event.key === ' ') {
|
|
28
|
+
// Prevents onChangeSelection from triggering.
|
|
29
|
+
event.stopPropagation();
|
|
30
|
+
onClickItem(item);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function ItemClickWrapper({
|
|
36
|
+
item,
|
|
37
|
+
isItemClickable,
|
|
38
|
+
onClickItem,
|
|
39
|
+
renderItemLink,
|
|
40
|
+
className,
|
|
41
|
+
children,
|
|
42
|
+
...extraProps
|
|
43
|
+
}) {
|
|
44
|
+
if (!isItemClickable(item)) {
|
|
45
|
+
return children;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// If we have a renderItemLink, use it
|
|
49
|
+
if (renderItemLink) {
|
|
50
|
+
return renderItemLink({
|
|
51
|
+
item,
|
|
52
|
+
className: `${className} ${className}--clickable`,
|
|
53
|
+
...extraProps,
|
|
54
|
+
children
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Otherwise use the classic click handler approach
|
|
59
|
+
const clickProps = getClickableItemProps({
|
|
60
|
+
item,
|
|
61
|
+
isItemClickable,
|
|
62
|
+
onClickItem,
|
|
63
|
+
className
|
|
64
|
+
});
|
|
65
|
+
return /*#__PURE__*/_jsx("div", {
|
|
66
|
+
...clickProps,
|
|
67
|
+
...extraProps,
|
|
68
|
+
children: children
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=item-click-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getClickableItemProps","item","isItemClickable","onClickItem","className","undefined","role","tabIndex","onClick","event","stopPropagation","onKeyDown","key","ItemClickWrapper","renderItemLink","children","extraProps","clickProps","_jsx"],"sources":["@wordpress/dataviews/src/dataviews-layouts/utils/item-click-wrapper.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, ReactElement, ComponentProps } from 'react';\n\nfunction getClickableItemProps< Item >( {\n\titem,\n\tisItemClickable,\n\tonClickItem,\n\tclassName,\n}: {\n\titem: Item;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\tclassName?: string;\n} ) {\n\tif ( ! isItemClickable( item ) || ! onClickItem ) {\n\t\treturn { className };\n\t}\n\n\treturn {\n\t\tclassName: className\n\t\t\t? `${ className } ${ className }--clickable`\n\t\t\t: undefined,\n\t\trole: 'button',\n\t\ttabIndex: 0,\n\t\tonClick: ( event: React.MouseEvent ) => {\n\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\tevent.stopPropagation();\n\t\t\tonClickItem( item );\n\t\t},\n\t\tonKeyDown: ( event: React.KeyboardEvent ) => {\n\t\t\tif (\n\t\t\t\tevent.key === 'Enter' ||\n\t\t\t\tevent.key === '' ||\n\t\t\t\tevent.key === ' '\n\t\t\t) {\n\t\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonClickItem( item );\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport function ItemClickWrapper< Item >( {\n\titem,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tclassName,\n\tchildren,\n\t...extraProps\n}: {\n\titem: Item;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tclassName?: string;\n\tchildren: ReactNode;\n} ) {\n\tif ( ! isItemClickable( item ) ) {\n\t\treturn children;\n\t}\n\n\t// If we have a renderItemLink, use it\n\tif ( renderItemLink ) {\n\t\treturn renderItemLink( {\n\t\t\titem,\n\t\t\tclassName: `${ className } ${ className }--clickable`,\n\t\t\t...extraProps,\n\t\t\tchildren,\n\t\t} );\n\t}\n\n\t// Otherwise use the classic click handler approach\n\tconst clickProps = getClickableItemProps( {\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\tclassName,\n\t} );\n\n\treturn (\n\t\t<div { ...clickProps } { ...extraProps }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;;AAGA,SAASA,qBAAqBA,CAAU;EACvCC,IAAI;EACJC,eAAe;EACfC,WAAW;EACXC;AAMD,CAAC,EAAG;EACH,IAAK,CAAEF,eAAe,CAAED,IAAK,CAAC,IAAI,CAAEE,WAAW,EAAG;IACjD,OAAO;MAAEC;IAAU,CAAC;EACrB;EAEA,OAAO;IACNA,SAAS,EAAEA,SAAS,GACjB,GAAIA,SAAS,IAAMA,SAAS,aAAc,GAC1CC,SAAS;IACZC,IAAI,EAAE,QAAQ;IACdC,QAAQ,EAAE,CAAC;IACXC,OAAO,EAAIC,KAAuB,IAAM;MACvC;MACAA,KAAK,CAACC,eAAe,CAAC,CAAC;MACvBP,WAAW,CAAEF,IAAK,CAAC;IACpB,CAAC;IACDU,SAAS,EAAIF,KAA0B,IAAM;MAC5C,IACCA,KAAK,CAACG,GAAG,KAAK,OAAO,IACrBH,KAAK,CAACG,GAAG,KAAK,EAAE,IAChBH,KAAK,CAACG,GAAG,KAAK,GAAG,EAChB;QACD;QACAH,KAAK,CAACC,eAAe,CAAC,CAAC;QACvBP,WAAW,CAAEF,IAAK,CAAC;MACpB;IACD;EACD,CAAC;AACF;AAEA,OAAO,SAASY,gBAAgBA,CAAU;EACzCZ,IAAI;EACJC,eAAe;EACfC,WAAW;EACXW,cAAc;EACdV,SAAS;EACTW,QAAQ;EACR,GAAGC;AAYJ,CAAC,EAAG;EACH,IAAK,CAAEd,eAAe,CAAED,IAAK,CAAC,EAAG;IAChC,OAAOc,QAAQ;EAChB;;EAEA;EACA,IAAKD,cAAc,EAAG;IACrB,OAAOA,cAAc,CAAE;MACtBb,IAAI;MACJG,SAAS,EAAE,GAAIA,SAAS,IAAMA,SAAS,aAAc;MACrD,GAAGY,UAAU;MACbD;IACD,CAAE,CAAC;EACJ;;EAEA;EACA,MAAME,UAAU,GAAGjB,qBAAqB,CAAE;IACzCC,IAAI;IACJC,eAAe;IACfC,WAAW;IACXC;EACD,CAAE,CAAC;EAEH,oBACCc,IAAA;IAAA,GAAUD,UAAU;IAAA,GAAQD,UAAU;IAAAD,QAAA,EACnCA;EAAQ,CACN,CAAC;AAER","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { OPERATOR_IS_ALL, OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_NOT_ALL } from '../constants';
|
|
6
|
+
|
|
7
|
+
// Sort arrays by length, then alphabetically by joined string
|
|
8
|
+
function sort(valueA, valueB, direction) {
|
|
9
|
+
const arrA = Array.isArray(valueA) ? valueA : [];
|
|
10
|
+
const arrB = Array.isArray(valueB) ? valueB : [];
|
|
11
|
+
if (arrA.length !== arrB.length) {
|
|
12
|
+
return direction === 'asc' ? arrA.length - arrB.length : arrB.length - arrA.length;
|
|
13
|
+
}
|
|
14
|
+
const joinedA = arrA.join(',');
|
|
15
|
+
const joinedB = arrB.join(',');
|
|
16
|
+
return direction === 'asc' ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA);
|
|
17
|
+
}
|
|
18
|
+
function isValid(value, context) {
|
|
19
|
+
if (!Array.isArray(value)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Only allow strings for now. Can be extended to other types in the future.
|
|
24
|
+
if (!value.every(v => typeof v === 'string')) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (context?.elements) {
|
|
28
|
+
const validValues = context.elements.map(f => f.value);
|
|
29
|
+
if (!value.every(v => validValues.includes(v))) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function render({
|
|
36
|
+
item,
|
|
37
|
+
field
|
|
38
|
+
}) {
|
|
39
|
+
const value = field.getValue({
|
|
40
|
+
item
|
|
41
|
+
}) || [];
|
|
42
|
+
return value.join(', ');
|
|
43
|
+
}
|
|
44
|
+
const arrayFieldType = {
|
|
45
|
+
sort,
|
|
46
|
+
isValid,
|
|
47
|
+
Edit: null,
|
|
48
|
+
// Not implemented yet
|
|
49
|
+
render,
|
|
50
|
+
enableSorting: true,
|
|
51
|
+
filterBy: {
|
|
52
|
+
defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
|
|
53
|
+
validOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL]
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export default arrayFieldType;
|
|
57
|
+
//# sourceMappingURL=array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OPERATOR_IS_ALL","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_NOT_ALL","sort","valueA","valueB","direction","arrA","Array","isArray","arrB","length","joinedA","join","joinedB","localeCompare","isValid","value","context","every","v","elements","validValues","map","f","includes","render","item","field","getValue","arrayFieldType","Edit","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/array.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\n\n// Sort arrays by length, then alphabetically by joined string\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\tconst arrA = Array.isArray( valueA ) ? valueA : [];\n\tconst arrB = Array.isArray( valueB ) ? valueB : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\tif ( ! Array.isArray( value ) ) {\n\t\treturn false;\n\t}\n\n\t// Only allow strings for now. Can be extended to other types in the future.\n\tif ( ! value.every( ( v ) => typeof v === 'string' ) ) {\n\t\treturn false;\n\t}\n\n\tif ( context?.elements ) {\n\t\tconst validValues = context.elements.map( ( f ) => f.value );\n\t\tif ( ! value.every( ( v ) => validValues.includes( v ) ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tconst value = field.getValue( { item } ) || [];\n\treturn value.join( ', ' );\n}\n\nconst arrayFieldType: FieldTypeDefinition< any > = {\n\tsort,\n\tisValid,\n\tEdit: null, // Not implemented yet\n\trender,\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS_ANY,\n\t\t\tOPERATOR_IS_NONE,\n\t\t\tOPERATOR_IS_ALL,\n\t\t\tOPERATOR_IS_NOT_ALL,\n\t\t],\n\t},\n};\n\nexport default arrayFieldType;\n"],"mappings":"AAAA;AACA;AACA;;AAOA,SACCA,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,mBAAmB,QACb,cAAc;;AAErB;AACA,SAASC,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAAEL,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,MAAMM,IAAI,GAAGF,KAAK,CAACC,OAAO,CAAEJ,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,IAAKE,IAAI,CAACI,MAAM,KAAKD,IAAI,CAACC,MAAM,EAAG;IAClC,OAAOL,SAAS,KAAK,KAAK,GACvBC,IAAI,CAACI,MAAM,GAAGD,IAAI,CAACC,MAAM,GACzBD,IAAI,CAACC,MAAM,GAAGJ,IAAI,CAACI,MAAM;EAC7B;EAEA,MAAMC,OAAO,GAAGL,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;EAChC,MAAMC,OAAO,GAAGJ,IAAI,CAACG,IAAI,CAAE,GAAI,CAAC;EAChC,OAAOP,SAAS,KAAK,KAAK,GACvBM,OAAO,CAACG,aAAa,CAAED,OAAQ,CAAC,GAChCA,OAAO,CAACC,aAAa,CAAEH,OAAQ,CAAC;AACpC;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D,IAAK,CAAEV,KAAK,CAACC,OAAO,CAAEQ,KAAM,CAAC,EAAG;IAC/B,OAAO,KAAK;EACb;;EAEA;EACA,IAAK,CAAEA,KAAK,CAACE,KAAK,CAAIC,CAAC,IAAM,OAAOA,CAAC,KAAK,QAAS,CAAC,EAAG;IACtD,OAAO,KAAK;EACb;EAEA,IAAKF,OAAO,EAAEG,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGJ,OAAO,CAACG,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACP,KAAM,CAAC;IAC5D,IAAK,CAAEA,KAAK,CAACE,KAAK,CAAIC,CAAC,IAAME,WAAW,CAACG,QAAQ,CAAEL,CAAE,CAAE,CAAC,EAAG;MAC1D,OAAO,KAAK;IACb;EACD;EACA,OAAO,IAAI;AACZ;AAEA,SAASM,MAAMA,CAAE;EAAEC,IAAI;EAAEC;AAAuC,CAAC,EAAG;EACnE,MAAMX,KAAK,GAAGW,KAAK,CAACC,QAAQ,CAAE;IAAEF;EAAK,CAAE,CAAC,IAAI,EAAE;EAC9C,OAAOV,KAAK,CAACJ,IAAI,CAAE,IAAK,CAAC;AAC1B;AAEA,MAAMiB,cAA0C,GAAG;EAClD3B,IAAI;EACJa,OAAO;EACPe,IAAI,EAAE,IAAI;EAAE;EACZL,MAAM;EACNM,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAElC,eAAe,EAAEC,gBAAgB,CAAE;IACvDkC,cAAc,EAAE,CACfnC,eAAe,EACfC,gBAAgB,EAChBF,eAAe,EACfG,mBAAmB;EAErB;AACD,CAAC;AAED,eAAe4B,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { renderFromElements } from '../utils';
|
|
11
|
+
import { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';
|
|
12
|
+
function sort(a, b, direction) {
|
|
13
|
+
const boolA = Boolean(a);
|
|
14
|
+
const boolB = Boolean(b);
|
|
15
|
+
if (boolA === boolB) {
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// In ascending order, false comes before true
|
|
20
|
+
if (direction === 'asc') {
|
|
21
|
+
return boolA ? 1 : -1;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// In descending order, true comes before false
|
|
25
|
+
return boolA ? -1 : 1;
|
|
26
|
+
}
|
|
27
|
+
function isValid(value) {
|
|
28
|
+
if (![true, false, undefined].includes(value)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
export default {
|
|
34
|
+
sort,
|
|
35
|
+
isValid,
|
|
36
|
+
Edit: 'boolean',
|
|
37
|
+
render: ({
|
|
38
|
+
item,
|
|
39
|
+
field
|
|
40
|
+
}) => {
|
|
41
|
+
if (field.elements) {
|
|
42
|
+
return renderFromElements({
|
|
43
|
+
item,
|
|
44
|
+
field
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (field.getValue({
|
|
48
|
+
item
|
|
49
|
+
}) === true) {
|
|
50
|
+
return __('True');
|
|
51
|
+
}
|
|
52
|
+
if (field.getValue({
|
|
53
|
+
item
|
|
54
|
+
}) === false) {
|
|
55
|
+
return __('False');
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
},
|
|
59
|
+
enableSorting: true,
|
|
60
|
+
filterBy: {
|
|
61
|
+
defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
|
|
62
|
+
validOperators: [OPERATOR_IS, OPERATOR_IS_NOT]
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=boolean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__","renderFromElements","OPERATOR_IS","OPERATOR_IS_NOT","sort","a","b","direction","boolA","Boolean","boolB","isValid","value","undefined","includes","Edit","render","item","field","elements","getValue","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/boolean.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst boolA = Boolean( a );\n\tconst boolB = Boolean( b );\n\n\tif ( boolA === boolB ) {\n\t\treturn 0;\n\t}\n\n\t// In ascending order, false comes before true\n\tif ( direction === 'asc' ) {\n\t\treturn boolA ? 1 : -1;\n\t}\n\n\t// In descending order, true comes before false\n\treturn boolA ? -1 : 1;\n}\n\nfunction isValid( value: any ) {\n\tif ( ! [ true, false, undefined ].includes( value ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: 'boolean',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\tif ( field.elements ) {\n\t\t\treturn renderFromElements( { item, field } );\n\t\t}\n\n\t\tif ( field.getValue( { item } ) === true ) {\n\t\t\treturn __( 'True' );\n\t\t}\n\n\t\tif ( field.getValue( { item } ) === false ) {\n\t\t\treturn __( 'False' );\n\t\t}\n\n\t\treturn null;\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t\tvalidOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;;AAMA,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SAASC,WAAW,EAAEC,eAAe,QAAQ,cAAc;AAE3D,SAASC,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAGC,OAAO,CAAEJ,CAAE,CAAC;EAC1B,MAAMK,KAAK,GAAGD,OAAO,CAAEH,CAAE,CAAC;EAE1B,IAAKE,KAAK,KAAKE,KAAK,EAAG;IACtB,OAAO,CAAC;EACT;;EAEA;EACA,IAAKH,SAAS,KAAK,KAAK,EAAG;IAC1B,OAAOC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;EACtB;;EAEA;EACA,OAAOA,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB;AAEA,SAASG,OAAOA,CAAEC,KAAU,EAAG;EAC9B,IAAK,CAAE,CAAE,IAAI,EAAE,KAAK,EAAEC,SAAS,CAAE,CAACC,QAAQ,CAAEF,KAAM,CAAC,EAAG;IACrD,OAAO,KAAK;EACb;EAEA,OAAO,IAAI;AACZ;AAEA,eAAe;EACdR,IAAI;EACJO,OAAO;EACPI,IAAI,EAAE,SAAS;EACfC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,IAAKA,KAAK,CAACC,QAAQ,EAAG;MACrB,OAAOlB,kBAAkB,CAAE;QAAEgB,IAAI;QAAEC;MAAM,CAAE,CAAC;IAC7C;IAEA,IAAKA,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC,KAAK,IAAI,EAAG;MAC1C,OAAOjB,EAAE,CAAE,MAAO,CAAC;IACpB;IAEA,IAAKkB,KAAK,CAACE,QAAQ,CAAE;MAAEH;IAAK,CAAE,CAAC,KAAK,KAAK,EAAG;MAC3C,OAAOjB,EAAE,CAAE,OAAQ,CAAC;IACrB;IAEA,OAAO,IAAI;EACZ,CAAC;EACDqB,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAErB,WAAW,EAAEC,eAAe,CAAE;IAClDqB,cAAc,EAAE,CAAEtB,WAAW,EAAEC,eAAe;EAC/C;AACD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { dateI18n, getDate, getSettings } from '@wordpress/date';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { renderFromElements } from '../utils';
|
|
11
|
+
const getFormattedDate = dateToDisplay => dateI18n(getSettings().formats.date, getDate(dateToDisplay));
|
|
12
|
+
function sort(a, b, direction) {
|
|
13
|
+
const timeA = new Date(a).getTime();
|
|
14
|
+
const timeB = new Date(b).getTime();
|
|
15
|
+
return direction === 'asc' ? timeA - timeB : timeB - timeA;
|
|
16
|
+
}
|
|
17
|
+
function isValid(value, context) {
|
|
18
|
+
if (context?.elements) {
|
|
19
|
+
const validValues = context?.elements.map(f => f.value);
|
|
20
|
+
if (!validValues.includes(value)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
export default {
|
|
27
|
+
sort,
|
|
28
|
+
isValid,
|
|
29
|
+
Edit: null,
|
|
30
|
+
render: ({
|
|
31
|
+
item,
|
|
32
|
+
field
|
|
33
|
+
}) => {
|
|
34
|
+
if (field.elements) {
|
|
35
|
+
return renderFromElements({
|
|
36
|
+
item,
|
|
37
|
+
field
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const value = field.getValue({
|
|
41
|
+
item
|
|
42
|
+
});
|
|
43
|
+
if (!value) {
|
|
44
|
+
return '';
|
|
45
|
+
}
|
|
46
|
+
return getFormattedDate(value);
|
|
47
|
+
},
|
|
48
|
+
enableSorting: true,
|
|
49
|
+
filterBy: false
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dateI18n","getDate","getSettings","renderFromElements","getFormattedDate","dateToDisplay","formats","date","sort","a","b","direction","timeA","Date","getTime","timeB","isValid","value","context","elements","validValues","map","f","includes","Edit","render","item","field","getValue","enableSorting","filterBy"],"sources":["@wordpress/dataviews/src/field-types/date.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\n\nconst getFormattedDate = ( dateToDisplay: string | null ) =>\n\tdateI18n( getSettings().formats.date, getDate( dateToDisplay ) );\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\tif ( context?.elements ) {\n\t\tconst validValues = context?.elements.map( ( f ) => f.value );\n\t\tif ( ! validValues.includes( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: null,\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\tif ( field.elements ) {\n\t\t\treturn renderFromElements( { item, field } );\n\t\t}\n\n\t\tconst value = field.getValue( { item } );\n\t\tif ( ! value ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn getFormattedDate( value );\n\t},\n\tenableSorting: true,\n\tfilterBy: false,\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,OAAO,EAAEC,WAAW,QAAQ,iBAAiB;;AAEhE;AACA;AACA;;AAOA,SAASC,kBAAkB,QAAQ,UAAU;AAE7C,MAAMC,gBAAgB,GAAKC,aAA4B,IACtDL,QAAQ,CAAEE,WAAW,CAAC,CAAC,CAACI,OAAO,CAACC,IAAI,EAAEN,OAAO,CAAEI,aAAc,CAAE,CAAC;AAEjE,SAASG,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAEJ,CAAE,CAAC,CAACK,OAAO,CAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAIF,IAAI,CAAEH,CAAE,CAAC,CAACI,OAAO,CAAC,CAAC;EAErC,OAAOH,SAAS,KAAK,KAAK,GAAGC,KAAK,GAAGG,KAAK,GAAGA,KAAK,GAAGH,KAAK;AAC3D;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D,IAAKA,OAAO,EAAEC,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;IAC7D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;MACtC,OAAO,KAAK;IACb;EACD;EAEA,OAAO,IAAI;AACZ;AAEA,eAAe;EACdT,IAAI;EACJQ,OAAO;EACPQ,IAAI,EAAE,IAAI;EACVC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,IAAKA,KAAK,CAACR,QAAQ,EAAG;MACrB,OAAOhB,kBAAkB,CAAE;QAAEuB,IAAI;QAAEC;MAAM,CAAE,CAAC;IAC7C;IAEA,MAAMV,KAAK,GAAGU,KAAK,CAACC,QAAQ,CAAE;MAAEF;IAAK,CAAE,CAAC;IACxC,IAAK,CAAET,KAAK,EAAG;MACd,OAAO,EAAE;IACV;IAEA,OAAOb,gBAAgB,CAAEa,KAAM,CAAC;EACjC,CAAC;EACDY,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;AACX,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
import { renderFromElements } from '../utils';
|
|
6
|
+
import { OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE, OPERATOR_AFTER, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../constants';
|
|
5
7
|
function sort(a, b, direction) {
|
|
6
8
|
const timeA = new Date(a).getTime();
|
|
7
9
|
const timeB = new Date(b).getTime();
|
|
@@ -19,6 +21,22 @@ function isValid(value, context) {
|
|
|
19
21
|
export default {
|
|
20
22
|
sort,
|
|
21
23
|
isValid,
|
|
22
|
-
Edit: 'datetime'
|
|
24
|
+
Edit: 'datetime',
|
|
25
|
+
render: ({
|
|
26
|
+
item,
|
|
27
|
+
field
|
|
28
|
+
}) => {
|
|
29
|
+
return field.elements ? renderFromElements({
|
|
30
|
+
item,
|
|
31
|
+
field
|
|
32
|
+
}) : field.getValue({
|
|
33
|
+
item
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
enableSorting: true,
|
|
37
|
+
filterBy: {
|
|
38
|
+
defaultOperators: [OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE, OPERATOR_AFTER, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER],
|
|
39
|
+
validOperators: [OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE, OPERATOR_AFTER, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER]
|
|
40
|
+
}
|
|
23
41
|
};
|
|
24
42
|
//# sourceMappingURL=datetime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sort","a","b","direction","timeA","Date","getTime","timeB","isValid","value","context","elements","validValues","map","f","includes","Edit"],"sources":["@wordpress/dataviews/src/field-types/datetime.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type {
|
|
1
|
+
{"version":3,"names":["renderFromElements","OPERATOR_ON","OPERATOR_NOT_ON","OPERATOR_BEFORE","OPERATOR_AFTER","OPERATOR_BEFORE_INC","OPERATOR_AFTER_INC","OPERATOR_IN_THE_PAST","OPERATOR_OVER","sort","a","b","direction","timeA","Date","getTime","timeB","isValid","value","context","elements","validValues","map","f","includes","Edit","render","item","field","getValue","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/datetime.tsx"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\n\nfunction sort( a: any, b: any, direction: SortDirection ) {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\tif ( context?.elements ) {\n\t\tconst validValues = context?.elements.map( ( f ) => f.value );\n\t\tif ( ! validValues.includes( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: 'datetime',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\treturn field.elements\n\t\t\t? renderFromElements( { item, field } )\n\t\t\t: field.getValue( { item } );\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_ON,\n\t\t\tOPERATOR_NOT_ON,\n\t\t\tOPERATOR_BEFORE,\n\t\t\tOPERATOR_AFTER,\n\t\t\tOPERATOR_BEFORE_INC,\n\t\t\tOPERATOR_AFTER_INC,\n\t\t\tOPERATOR_IN_THE_PAST,\n\t\t\tOPERATOR_OVER,\n\t\t],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":"AAAA;AACA;AACA;;AAOA,SAASA,kBAAkB,QAAQ,UAAU;AAC7C,SACCC,WAAW,EACXC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,mBAAmB,EACnBC,kBAAkB,EAClBC,oBAAoB,EACpBC,aAAa,QACP,cAAc;AAErB,SAASC,IAAIA,CAAEC,CAAM,EAAEC,CAAM,EAAEC,SAAwB,EAAG;EACzD,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAEJ,CAAE,CAAC,CAACK,OAAO,CAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAIF,IAAI,CAAEH,CAAE,CAAC,CAACI,OAAO,CAAC,CAAC;EAErC,OAAOH,SAAS,KAAK,KAAK,GAAGC,KAAK,GAAGG,KAAK,GAAGA,KAAK,GAAGH,KAAK;AAC3D;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D,IAAKA,OAAO,EAAEC,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;IAC7D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;MACtC,OAAO,KAAK;IACb;EACD;EAEA,OAAO,IAAI;AACZ;AAEA,eAAe;EACdT,IAAI;EACJQ,OAAO;EACPQ,IAAI,EAAE,UAAU;EAChBC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,OAAOA,KAAK,CAACR,QAAQ,GAClBpB,kBAAkB,CAAE;MAAE2B,IAAI;MAAEC;IAAM,CAAE,CAAC,GACrCA,KAAK,CAACC,QAAQ,CAAE;MAAEF;IAAK,CAAE,CAAC;EAC9B,CAAC;EACDG,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CACjB/B,WAAW,EACXC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,mBAAmB,EACnBC,kBAAkB,EAClBC,oBAAoB,EACpBC,aAAa,CACb;IACDyB,cAAc,EAAE,CACfhC,WAAW,EACXC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,mBAAmB,EACnBC,kBAAkB,EAClBC,oBAAoB,EACpBC,aAAa;EAEf;AACD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { isEmail } from '@wordpress/url';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { renderFromElements } from '../utils';
|
|
11
|
+
import { OPERATOR_IS, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL, OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH } from '../constants';
|
|
12
|
+
function sort(valueA, valueB, direction) {
|
|
13
|
+
return direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
|
|
14
|
+
}
|
|
15
|
+
function isValid(value, context) {
|
|
16
|
+
// TODO: this implicitly means the value is required.
|
|
17
|
+
if (value === '') {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (!isEmail(value)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (context?.elements) {
|
|
24
|
+
const validValues = context?.elements?.map(f => f.value);
|
|
25
|
+
if (!validValues.includes(value)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
export default {
|
|
32
|
+
sort,
|
|
33
|
+
isValid,
|
|
34
|
+
Edit: 'email',
|
|
35
|
+
render: ({
|
|
36
|
+
item,
|
|
37
|
+
field
|
|
38
|
+
}) => {
|
|
39
|
+
return field.elements ? renderFromElements({
|
|
40
|
+
item,
|
|
41
|
+
field
|
|
42
|
+
}) : field.getValue({
|
|
43
|
+
item
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
enableSorting: true,
|
|
47
|
+
filterBy: {
|
|
48
|
+
defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
|
|
49
|
+
validOperators: [OPERATOR_IS, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH,
|
|
50
|
+
// Multiple selection
|
|
51
|
+
OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL]
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isEmail","renderFromElements","OPERATOR_IS","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_NOT","OPERATOR_CONTAINS","OPERATOR_NOT_CONTAINS","OPERATOR_STARTS_WITH","sort","valueA","valueB","direction","localeCompare","isValid","value","context","elements","validValues","map","f","includes","Edit","render","item","field","getValue","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/email.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isEmail } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tValidationContext,\n\tFieldTypeDefinition,\n} from '../types';\nimport { renderFromElements } from '../utils';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\n\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\treturn direction === 'asc'\n\t\t? valueA.localeCompare( valueB )\n\t\t: valueB.localeCompare( valueA );\n}\n\nfunction isValid( value: any, context?: ValidationContext ) {\n\t// TODO: this implicitly means the value is required.\n\tif ( value === '' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! isEmail( value ) ) {\n\t\treturn false;\n\t}\n\n\tif ( context?.elements ) {\n\t\tconst validValues = context?.elements?.map( ( f ) => f.value );\n\t\tif ( ! validValues.includes( value ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport default {\n\tsort,\n\tisValid,\n\tEdit: 'email',\n\trender: ( { item, field }: DataViewRenderFieldProps< any > ) => {\n\t\treturn field.elements\n\t\t\t? renderFromElements( { item, field } )\n\t\t\t: field.getValue( { item } );\n\t},\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS,\n\t\t\tOPERATOR_IS_NOT,\n\t\t\tOPERATOR_CONTAINS,\n\t\t\tOPERATOR_NOT_CONTAINS,\n\t\t\tOPERATOR_STARTS_WITH,\n\t\t\t// Multiple selection\n\t\t\tOPERATOR_IS_ANY,\n\t\t\tOPERATOR_IS_NONE,\n\t\t\tOPERATOR_IS_ALL,\n\t\t\tOPERATOR_IS_NOT_ALL,\n\t\t],\n\t},\n} satisfies FieldTypeDefinition< any >;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,gBAAgB;;AAExC;AACA;AACA;;AAOA,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SACCC,WAAW,EACXC,eAAe,EACfC,mBAAmB,EACnBC,eAAe,EACfC,gBAAgB,EAChBC,eAAe,EACfC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB,QACd,cAAc;AAErB,SAASC,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,OAAOA,SAAS,KAAK,KAAK,GACvBF,MAAM,CAACG,aAAa,CAAEF,MAAO,CAAC,GAC9BA,MAAM,CAACE,aAAa,CAAEH,MAAO,CAAC;AAClC;AAEA,SAASI,OAAOA,CAAEC,KAAU,EAAEC,OAA2B,EAAG;EAC3D;EACA,IAAKD,KAAK,KAAK,EAAE,EAAG;IACnB,OAAO,KAAK;EACb;EAEA,IAAK,CAAEjB,OAAO,CAAEiB,KAAM,CAAC,EAAG;IACzB,OAAO,KAAK;EACb;EAEA,IAAKC,OAAO,EAAEC,QAAQ,EAAG;IACxB,MAAMC,WAAW,GAAGF,OAAO,EAAEC,QAAQ,EAAEE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACL,KAAM,CAAC;IAC9D,IAAK,CAAEG,WAAW,CAACG,QAAQ,CAAEN,KAAM,CAAC,EAAG;MACtC,OAAO,KAAK;IACb;EACD;EAEA,OAAO,IAAI;AACZ;AAEA,eAAe;EACdN,IAAI;EACJK,OAAO;EACPQ,IAAI,EAAE,OAAO;EACbC,MAAM,EAAEA,CAAE;IAAEC,IAAI;IAAEC;EAAuC,CAAC,KAAM;IAC/D,OAAOA,KAAK,CAACR,QAAQ,GAClBlB,kBAAkB,CAAE;MAAEyB,IAAI;MAAEC;IAAM,CAAE,CAAC,GACrCA,KAAK,CAACC,QAAQ,CAAE;MAAEF;IAAK,CAAE,CAAC;EAC9B,CAAC;EACDG,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAE1B,eAAe,EAAEC,gBAAgB,CAAE;IACvD0B,cAAc,EAAE,CACf9B,WAAW,EACXK,eAAe,EACfC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB;IACpB;IACAL,eAAe,EACfC,gBAAgB,EAChBH,eAAe,EACfC,mBAAmB;EAErB;AACD,CAAC","ignoreList":[]}
|