@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":["_i18n","require","_icons","_components","_element","_lockUnlock","_utils","_constants","_jsxRuntime","Menu","unlock","componentsPrivateApis","WithMenuSeparators","children","Children","toArray","filter","Boolean","map","child","i","jsxs","Fragment","jsx","Separator","_HeaderMenu","forwardRef","HeaderMenu","fieldId","view","fields","onChangeView","onHide","setOpenedFilter","canMove","ref","_view$fields","visibleFieldIds","index","indexOf","isSorted","sort","field","isHidable","isSortable","canAddFilter","operators","find","f","id","enableHiding","enableSorting","header","sanitizeOperators","filters","some","_filter","elements","length","filterBy","isPrimary","TriggerButton","render","Button","size","className","variant","sortArrows","direction","Popover","style","minWidth","Group","SORTING_DIRECTIONS","isChecked","value","RadioItem","name","checked","onChange","showLevels","ItemLabel","sortLabels","Item","prefix","Icon","icon","funnel","onClick","page","undefined","operator","__","arrowLeft","disabled","_visibleFieldIds$slic","slice","arrowRight","_visibleFieldIds$slic2","unseen","ColumnHeaderMenu","_default","exports","default"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/column-header-menu.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef, Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { sanitizeOperators } from '../../utils';\nimport { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../constants';\nimport type {\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tOperator,\n} from '../../types';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item > {\n\tfieldId: string;\n\tview: ViewTableType;\n\tfields: NormalizedField< Item >[];\n\tonChangeView: ( view: ViewTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tcanMove?: boolean;\n}\n\nfunction WithMenuSeparators( { children }: { children: ReactNode } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <Menu.Separator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item >(\n\t{\n\t\tfieldId,\n\t\tview,\n\t\tfields,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t\tcanMove = true,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst visibleFieldIds = view.fields ?? [];\n\tconst index = visibleFieldIds?.indexOf( fieldId ) as number;\n\tconst isSorted = view.sort?.field === fieldId;\n\tlet isHidable = false;\n\tlet isSortable = false;\n\tlet canAddFilter = false;\n\tlet operators: Operator[] = [];\n\tconst field = fields.find( ( f ) => f.id === fieldId );\n\n\tif ( ! field ) {\n\t\t// No combined or regular field found.\n\t\treturn null;\n\t}\n\n\tisHidable = field.enableHiding !== false;\n\tisSortable = field.enableSorting !== false;\n\tconst header = field.header;\n\n\toperators = sanitizeOperators( field );\n\t// Filter can be added:\n\t// 1. If the field is not already part of a view's filters.\n\t// 2. If the field meets the type and operator requirements.\n\t// 3. If it's not primary. If it is, it should be already visible.\n\tcanAddFilter =\n\t\t! view.filters?.some( ( _filter ) => fieldId === _filter.field ) &&\n\t\t!! field.elements?.length &&\n\t\t!! operators.length &&\n\t\t! field.filterBy?.isPrimary;\n\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ header }\n\t\t\t\t{ view.sort && isSorted && (\n\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t{ sortArrows[ view.sort.direction ] }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</Menu.TriggerButton>\n\t\t\t<Menu.Popover style={ { minWidth: '240px' } }>\n\t\t\t\t<WithMenuSeparators>\n\t\t\t\t\t{ isSortable && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\t\tview.sort &&\n\t\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\t\tconst value = `${ fieldId }-${ direction }`;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Menu.RadioItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowLevels: false,\n\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t</Menu.RadioItem>\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</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canAddFilter && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetOpenedFilter( fieldId );\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ( canMove || isHidable ) && field && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowLeft } /> }\n\t\t\t\t\t\t\t\t\tdisabled={ index < 1 }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex - 1\n\t\t\t\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t\tfieldId,\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index - 1 ],\n\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move left' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowRight } /> }\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\tindex >= visibleFieldIds.length - 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index + 1 ],\n\t\t\t\t\t\t\t\t\t\t\t\tfieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 2\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move right' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ isHidable && field && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== fieldId\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Hide column' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t</WithMenuSeparators>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst ColumnHeaderMenu: < Item >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nexport default ColumnHeaderMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_icons","_components","_element","_lockUnlock","_constants","_jsxRuntime","Menu","unlock","componentsPrivateApis","WithMenuSeparators","children","Children","toArray","filter","Boolean","map","child","i","jsxs","Fragment","jsx","Separator","_HeaderMenu","forwardRef","HeaderMenu","fieldId","view","fields","onChangeView","onHide","setOpenedFilter","canMove","ref","_view$fields","visibleFieldIds","index","indexOf","isSorted","sort","field","isHidable","isSortable","canAddFilter","operators","find","f","id","enableHiding","enableSorting","header","filterBy","filters","some","_filter","elements","length","Edit","isPrimary","TriggerButton","render","Button","size","className","variant","sortArrows","direction","Popover","style","minWidth","Group","SORTING_DIRECTIONS","isChecked","value","RadioItem","name","checked","onChange","showLevels","ItemLabel","sortLabels","Item","prefix","Icon","icon","funnel","onClick","page","undefined","operator","__","arrowLeft","disabled","_visibleFieldIds$slic","slice","arrowRight","_visibleFieldIds$slic2","unseen","ColumnHeaderMenu","_default","exports","default"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/column-header-menu.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef, Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../constants';\nimport type {\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tOperator,\n} from '../../types';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item > {\n\tfieldId: string;\n\tview: ViewTableType;\n\tfields: NormalizedField< Item >[];\n\tonChangeView: ( view: ViewTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tcanMove?: boolean;\n}\n\nfunction WithMenuSeparators( { children }: { children: ReactNode } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <Menu.Separator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item >(\n\t{\n\t\tfieldId,\n\t\tview,\n\t\tfields,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t\tcanMove = true,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst visibleFieldIds = view.fields ?? [];\n\tconst index = visibleFieldIds?.indexOf( fieldId ) as number;\n\tconst isSorted = view.sort?.field === fieldId;\n\tlet isHidable = false;\n\tlet isSortable = false;\n\tlet canAddFilter = false;\n\tlet operators: Operator[] = [];\n\tconst field = fields.find( ( f ) => f.id === fieldId );\n\n\tif ( ! field ) {\n\t\t// No combined or regular field found.\n\t\treturn null;\n\t}\n\n\tisHidable = field.enableHiding !== false;\n\tisSortable = field.enableSorting !== false;\n\tconst header = field.header;\n\n\toperators = ( !! field.filterBy && field.filterBy?.operators ) || [];\n\n\t// Filter can be added if:\n\t//\n\t// 1. The field is not already part of a view's filters.\n\t// 2. The field has elements or Edit property.\n\t// 3. The field does not opt-out of filtering.\n\t// 4. The filter is not primary (if it is, it is already visible).\n\tcanAddFilter =\n\t\t! view.filters?.some( ( _filter ) => fieldId === _filter.field ) &&\n\t\t!! ( field.elements?.length || field.Edit ) &&\n\t\tfield.filterBy !== false &&\n\t\t! field.filterBy?.isPrimary;\n\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ header }\n\t\t\t\t{ view.sort && isSorted && (\n\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t{ sortArrows[ view.sort.direction ] }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</Menu.TriggerButton>\n\t\t\t<Menu.Popover style={ { minWidth: '240px' } }>\n\t\t\t\t<WithMenuSeparators>\n\t\t\t\t\t{ isSortable && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\t\tview.sort &&\n\t\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\t\tconst value = `${ fieldId }-${ direction }`;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Menu.RadioItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowLevels: false,\n\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t</Menu.RadioItem>\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</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canAddFilter && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetOpenedFilter( fieldId );\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ( canMove || isHidable ) && field && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowLeft } /> }\n\t\t\t\t\t\t\t\t\tdisabled={ index < 1 }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex - 1\n\t\t\t\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t\tfieldId,\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index - 1 ],\n\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move left' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowRight } /> }\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\tindex >= visibleFieldIds.length - 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index + 1 ],\n\t\t\t\t\t\t\t\t\t\t\t\tfieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 2\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move right' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ isHidable && field && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== fieldId\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Hide column' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t</WithMenuSeparators>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst ColumnHeaderMenu: < Item >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nexport default ColumnHeaderMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.default = void 0;
|
|
8
7
|
var _components = require("@wordpress/components");
|
|
9
|
-
var
|
|
8
|
+
var _itemClickWrapper = require("../utils/item-click-wrapper");
|
|
10
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
/**
|
|
11
|
+
* External dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
11
14
|
/**
|
|
12
15
|
* WordPress dependencies
|
|
13
16
|
*/
|
|
@@ -23,34 +26,36 @@ function ColumnPrimary({
|
|
|
23
26
|
mediaField,
|
|
24
27
|
descriptionField,
|
|
25
28
|
onClickItem,
|
|
29
|
+
renderItemLink,
|
|
26
30
|
isItemClickable
|
|
27
31
|
}) {
|
|
28
|
-
const clickableProps = (0, _getClickableItemProps.default)({
|
|
29
|
-
item,
|
|
30
|
-
isItemClickable,
|
|
31
|
-
onClickItem,
|
|
32
|
-
className: 'dataviews-view-table__cell-content-wrapper dataviews-title-field'
|
|
33
|
-
});
|
|
34
32
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
|
|
35
33
|
spacing: 3,
|
|
36
34
|
justify: "flex-start",
|
|
37
35
|
children: [mediaField && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
38
36
|
className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media",
|
|
39
37
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(mediaField.render, {
|
|
40
|
-
item: item
|
|
38
|
+
item: item,
|
|
39
|
+
field: mediaField
|
|
41
40
|
})
|
|
42
41
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
43
42
|
spacing: 0,
|
|
44
|
-
children: [titleField && /*#__PURE__*/(0, _jsxRuntime.jsxs)(
|
|
45
|
-
|
|
43
|
+
children: [titleField && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_itemClickWrapper.ItemClickWrapper, {
|
|
44
|
+
item: item,
|
|
45
|
+
isItemClickable: isItemClickable,
|
|
46
|
+
onClickItem: onClickItem,
|
|
47
|
+
renderItemLink: renderItemLink,
|
|
48
|
+
className: "dataviews-view-table__cell-content-wrapper dataviews-title-field",
|
|
46
49
|
children: [level !== undefined && /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
|
|
47
50
|
className: "dataviews-view-table__level",
|
|
48
51
|
children: ['—'.repeat(level), "\xA0"]
|
|
49
52
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(titleField.render, {
|
|
50
|
-
item: item
|
|
53
|
+
item: item,
|
|
54
|
+
field: titleField
|
|
51
55
|
})]
|
|
52
56
|
}), descriptionField && /*#__PURE__*/(0, _jsxRuntime.jsx)(descriptionField.render, {
|
|
53
|
-
item: item
|
|
57
|
+
item: item,
|
|
58
|
+
field: descriptionField
|
|
54
59
|
})]
|
|
55
60
|
})]
|
|
56
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","
|
|
1
|
+
{"version":3,"names":["_components","require","_itemClickWrapper","_jsxRuntime","ColumnPrimary","item","level","titleField","mediaField","descriptionField","onClickItem","renderItemLink","isItemClickable","jsxs","__experimentalHStack","spacing","justify","children","jsx","className","render","field","__experimentalVStack","ItemClickWrapper","undefined","repeat","_default","exports","default"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/column-primary.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\n\nfunction ColumnPrimary< Item >( {\n\titem,\n\tlevel,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable,\n}: {\n\titem: Item;\n\tlevel?: number;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n} ) {\n\treturn (\n\t\t<HStack spacing={ 3 } justify=\"flex-start\">\n\t\t\t{ mediaField && (\n\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media\">\n\t\t\t\t\t<mediaField.render item={ item } field={ mediaField } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t{ titleField && (\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\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\tclassName=\"dataviews-view-table__cell-content-wrapper dataviews-title-field\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ level !== undefined && (\n\t\t\t\t\t\t\t<span className=\"dataviews-view-table__level\">\n\t\t\t\t\t\t\t\t{ '—'.repeat( level ) } \n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t) }\n\t\t\t\t{ descriptionField && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</HStack>\n\t);\n}\n\nexport default ColumnPrimary;\n"],"mappings":";;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AASA,IAAAC,iBAAA,GAAAD,OAAA;AAA+D,IAAAE,WAAA,GAAAF,OAAA;AAjB/D;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAIA,SAASG,aAAaA,CAAU;EAC/BC,IAAI;EACJC,KAAK;EACLC,UAAU;EACVC,UAAU;EACVC,gBAAgB;EAChBC,WAAW;EACXC,cAAc;EACdC;AAcD,CAAC,EAAG;EACH,oBACC,IAAAT,WAAA,CAAAU,IAAA,EAACb,WAAA,CAAAc,oBAAM;IAACC,OAAO,EAAG,CAAG;IAACC,OAAO,EAAC,YAAY;IAAAC,QAAA,GACvCT,UAAU,iBACX,IAAAL,WAAA,CAAAe,GAAA;MAAKC,SAAS,EAAC,4EAA4E;MAAAF,QAAA,eAC1F,IAAAd,WAAA,CAAAe,GAAA,EAACV,UAAU,CAACY,MAAM;QAACf,IAAI,EAAGA,IAAM;QAACgB,KAAK,EAAGb;MAAY,CAAE;IAAC,CACpD,CACL,eACD,IAAAL,WAAA,CAAAU,IAAA,EAACb,WAAA,CAAAsB,oBAAM;MAACP,OAAO,EAAG,CAAG;MAAAE,QAAA,GAClBV,UAAU,iBACX,IAAAJ,WAAA,CAAAU,IAAA,EAACX,iBAAA,CAAAqB,gBAAgB;QAChBlB,IAAI,EAAGA,IAAM;QACbO,eAAe,EAAGA,eAAiB;QACnCF,WAAW,EAAGA,WAAa;QAC3BC,cAAc,EAAGA,cAAgB;QACjCQ,SAAS,EAAC,kEAAkE;QAAAF,QAAA,GAE1EX,KAAK,KAAKkB,SAAS,iBACpB,IAAArB,WAAA,CAAAU,IAAA;UAAMM,SAAS,EAAC,6BAA6B;UAAAF,QAAA,GAC1C,GAAG,CAACQ,MAAM,CAAEnB,KAAM,CAAC,EAAE,MACxB;QAAA,CAAM,CACN,eACD,IAAAH,WAAA,CAAAe,GAAA,EAACX,UAAU,CAACa,MAAM;UAACf,IAAI,EAAGA,IAAM;UAACgB,KAAK,EAAGd;QAAY,CAAE,CAAC;MAAA,CACvC,CAClB,EACCE,gBAAgB,iBACjB,IAAAN,WAAA,CAAAe,GAAA,EAACT,gBAAgB,CAACW,MAAM;QACvBf,IAAI,EAAGA,IAAM;QACbgB,KAAK,EAAGZ;MAAkB,CAC1B,CACD;IAAA,CACM,CAAC;EAAA,CACF,CAAC;AAEX;AAAC,IAAAiB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcxB,aAAa","ignoreList":[]}
|
|
@@ -9,12 +9,14 @@ var _clsx = _interopRequireDefault(require("clsx"));
|
|
|
9
9
|
var _i18n = require("@wordpress/i18n");
|
|
10
10
|
var _components = require("@wordpress/components");
|
|
11
11
|
var _element = require("@wordpress/element");
|
|
12
|
+
var _dataviewsContext = _interopRequireDefault(require("../../components/dataviews-context"));
|
|
12
13
|
var _dataviewsSelectionCheckbox = _interopRequireDefault(require("../../components/dataviews-selection-checkbox"));
|
|
13
14
|
var _dataviewsItemActions = _interopRequireDefault(require("../../components/dataviews-item-actions"));
|
|
14
15
|
var _constants = require("../../constants");
|
|
15
16
|
var _dataviewsBulkActions = require("../../components/dataviews-bulk-actions");
|
|
16
17
|
var _columnHeaderMenu = _interopRequireDefault(require("./column-header-menu"));
|
|
17
18
|
var _columnPrimary = _interopRequireDefault(require("./column-primary"));
|
|
19
|
+
var _useIsHorizontalScrollEnd = require("./use-is-horizontal-scroll-end");
|
|
18
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
21
|
/**
|
|
20
22
|
* External dependencies
|
|
@@ -31,16 +33,22 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
31
33
|
function TableColumnField({
|
|
32
34
|
item,
|
|
33
35
|
fields,
|
|
34
|
-
column
|
|
36
|
+
column,
|
|
37
|
+
align
|
|
35
38
|
}) {
|
|
36
39
|
const field = fields.find(f => f.id === column);
|
|
37
40
|
if (!field) {
|
|
38
41
|
return null;
|
|
39
42
|
}
|
|
43
|
+
const className = (0, _clsx.default)('dataviews-view-table__cell-content-wrapper', {
|
|
44
|
+
'dataviews-view-table__cell-align-end': align === 'end',
|
|
45
|
+
'dataviews-view-table__cell-align-center': align === 'center'
|
|
46
|
+
});
|
|
40
47
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
41
|
-
className:
|
|
48
|
+
className: className,
|
|
42
49
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(field.render, {
|
|
43
|
-
item
|
|
50
|
+
item: item,
|
|
51
|
+
field: field
|
|
44
52
|
})
|
|
45
53
|
});
|
|
46
54
|
}
|
|
@@ -59,7 +67,9 @@ function TableRow({
|
|
|
59
67
|
getItemId,
|
|
60
68
|
isItemClickable,
|
|
61
69
|
onClickItem,
|
|
62
|
-
|
|
70
|
+
renderItemLink,
|
|
71
|
+
onChangeSelection,
|
|
72
|
+
isActionsColumnSticky
|
|
63
73
|
}) {
|
|
64
74
|
var _view$fields;
|
|
65
75
|
const hasPossibleBulkAction = (0, _dataviewsBulkActions.useHasAPossibleBulkAction)(actions, item);
|
|
@@ -123,7 +133,8 @@ function TableRow({
|
|
|
123
133
|
mediaField: showMedia ? mediaField : undefined,
|
|
124
134
|
descriptionField: showDescription ? descriptionField : undefined,
|
|
125
135
|
isItemClickable: isItemClickable,
|
|
126
|
-
onClickItem: onClickItem
|
|
136
|
+
onClickItem: onClickItem,
|
|
137
|
+
renderItemLink: renderItemLink
|
|
127
138
|
})
|
|
128
139
|
}), columns.map(column => {
|
|
129
140
|
var _view$layout$styles$c;
|
|
@@ -131,7 +142,8 @@ function TableRow({
|
|
|
131
142
|
const {
|
|
132
143
|
width,
|
|
133
144
|
maxWidth,
|
|
134
|
-
minWidth
|
|
145
|
+
minWidth,
|
|
146
|
+
align
|
|
135
147
|
} = (_view$layout$styles$c = view.layout?.styles?.[column]) !== null && _view$layout$styles$c !== void 0 ? _view$layout$styles$c : {};
|
|
136
148
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
|
|
137
149
|
style: {
|
|
@@ -142,7 +154,8 @@ function TableRow({
|
|
|
142
154
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TableColumnField, {
|
|
143
155
|
fields: fields,
|
|
144
156
|
item: item,
|
|
145
|
-
column: column
|
|
157
|
+
column: column,
|
|
158
|
+
align: align
|
|
146
159
|
})
|
|
147
160
|
}, column);
|
|
148
161
|
}), !!actions?.length &&
|
|
@@ -154,7 +167,10 @@ function TableRow({
|
|
|
154
167
|
// intercepting click events from ItemActions.
|
|
155
168
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
156
169
|
(0, _jsxRuntime.jsx)("td", {
|
|
157
|
-
className:
|
|
170
|
+
className: (0, _clsx.default)('dataviews-view-table__actions-column', {
|
|
171
|
+
'dataviews-view-table__actions-column--sticky': true,
|
|
172
|
+
'dataviews-view-table__actions-column--stuck': isActionsColumnSticky
|
|
173
|
+
}),
|
|
158
174
|
onClick: e => e.stopPropagation(),
|
|
159
175
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsItemActions.default, {
|
|
160
176
|
item: item,
|
|
@@ -177,9 +193,14 @@ function ViewTable({
|
|
|
177
193
|
setOpenedFilter,
|
|
178
194
|
onClickItem,
|
|
179
195
|
isItemClickable,
|
|
180
|
-
|
|
196
|
+
renderItemLink,
|
|
197
|
+
view,
|
|
198
|
+
className
|
|
181
199
|
}) {
|
|
182
200
|
var _view$fields2;
|
|
201
|
+
const {
|
|
202
|
+
containerRef
|
|
203
|
+
} = (0, _element.useContext)(_dataviewsContext.default);
|
|
183
204
|
const headerMenuRefs = (0, _element.useRef)(new Map());
|
|
184
205
|
const headerMenuToFocusRef = (0, _element.useRef)();
|
|
185
206
|
const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, _element.useState)();
|
|
@@ -191,6 +212,10 @@ function ViewTable({
|
|
|
191
212
|
}
|
|
192
213
|
});
|
|
193
214
|
const tableNoticeId = (0, _element.useId)();
|
|
215
|
+
const isHorizontalScrollEnd = (0, _useIsHorizontalScrollEnd.useIsHorizontalScrollEnd)({
|
|
216
|
+
scrollContainerRef: containerRef,
|
|
217
|
+
enabled: !!actions?.length
|
|
218
|
+
});
|
|
194
219
|
if (nextHeaderMenuToFocus) {
|
|
195
220
|
// If we need to force focus, we short-circuit rendering here
|
|
196
221
|
// to prevent any additional work while we handle that.
|
|
@@ -228,7 +253,7 @@ function ViewTable({
|
|
|
228
253
|
};
|
|
229
254
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
230
255
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
|
|
231
|
-
className: (0, _clsx.default)('dataviews-view-table', {
|
|
256
|
+
className: (0, _clsx.default)('dataviews-view-table', className, {
|
|
232
257
|
[`has-${view.layout?.density}-density`]: view.layout?.density && ['compact', 'comfortable'].includes(view.layout.density)
|
|
233
258
|
}),
|
|
234
259
|
"aria-busy": isLoading,
|
|
@@ -264,13 +289,15 @@ function ViewTable({
|
|
|
264
289
|
const {
|
|
265
290
|
width,
|
|
266
291
|
maxWidth,
|
|
267
|
-
minWidth
|
|
292
|
+
minWidth,
|
|
293
|
+
align
|
|
268
294
|
} = (_view$layout$styles$c2 = view.layout?.styles?.[column]) !== null && _view$layout$styles$c2 !== void 0 ? _view$layout$styles$c2 : {};
|
|
269
295
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("th", {
|
|
270
296
|
style: {
|
|
271
297
|
width,
|
|
272
298
|
maxWidth,
|
|
273
|
-
minWidth
|
|
299
|
+
minWidth,
|
|
300
|
+
textAlign: align
|
|
274
301
|
},
|
|
275
302
|
"aria-sort": view.sort?.direction && view.sort?.field === column ? _constants.sortValues[view.sort.direction] : undefined,
|
|
276
303
|
scope: "col",
|
|
@@ -285,7 +312,10 @@ function ViewTable({
|
|
|
285
312
|
})
|
|
286
313
|
}, column);
|
|
287
314
|
}), !!actions?.length && /*#__PURE__*/(0, _jsxRuntime.jsx)("th", {
|
|
288
|
-
className:
|
|
315
|
+
className: (0, _clsx.default)('dataviews-view-table__actions-column', {
|
|
316
|
+
'dataviews-view-table__actions-column--sticky': true,
|
|
317
|
+
'dataviews-view-table__actions-column--stuck': !isHorizontalScrollEnd
|
|
318
|
+
}),
|
|
289
319
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
290
320
|
className: "dataviews-view-table-header",
|
|
291
321
|
children: (0, _i18n.__)('Actions')
|
|
@@ -308,7 +338,9 @@ function ViewTable({
|
|
|
308
338
|
getItemId: getItemId,
|
|
309
339
|
onChangeSelection: onChangeSelection,
|
|
310
340
|
onClickItem: onClickItem,
|
|
311
|
-
|
|
341
|
+
renderItemLink: renderItemLink,
|
|
342
|
+
isItemClickable: isItemClickable,
|
|
343
|
+
isActionsColumnSticky: !isHorizontalScrollEnd
|
|
312
344
|
}, getItemId(item)))
|
|
313
345
|
})]
|
|
314
346
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_element","_dataviewsSelectionCheckbox","_dataviewsItemActions","_constants","_dataviewsBulkActions","_columnHeaderMenu","_columnPrimary","_jsxRuntime","TableColumnField","item","fields","column","field","find","f","id","jsx","className","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","onChangeSelection","_view$fields","hasPossibleBulkAction","useHasAPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","useState","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","useRef","columns","hasPrimaryColumn","jsxs","clsx","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","default","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","useSomeItemHasAPossibleBulkAction","useEffect","focus","tableNoticeId","useId","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","Fragment","density","scope","BulkSelectionCheckbox","ref","fieldId","canMove","_view$layout$styles$c2","sort","direction","sortValues","__","showLevels","toString","Spinner","_default","exports"],"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","_interopRequireDefault","require","_i18n","_components","_element","_dataviewsContext","_dataviewsSelectionCheckbox","_dataviewsItemActions","_constants","_dataviewsBulkActions","_columnHeaderMenu","_columnPrimary","_useIsHorizontalScrollEnd","_jsxRuntime","TableColumnField","item","fields","column","align","field","find","f","id","className","clsx","jsx","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","renderItemLink","onChangeSelection","isActionsColumnSticky","_view$fields","hasPossibleBulkAction","useHasAPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","useState","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","useRef","columns","hasPrimaryColumn","jsxs","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","default","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","useContext","DataViewsContext","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useSomeItemHasAPossibleBulkAction","useEffect","focus","tableNoticeId","useId","isHorizontalScrollEnd","useIsHorizontalScrollEnd","scrollContainerRef","enabled","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","Fragment","density","scope","BulkSelectionCheckbox","ref","fieldId","canMove","_view$layout$styles$c2","textAlign","sort","direction","sortValues","__","showLevels","toString","Spinner","_default","exports"],"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,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useIsHorizontalScrollEnd = useIsHorizontalScrollEnd;
|
|
7
|
+
var _compose = require("@wordpress/compose");
|
|
8
|
+
var _element = require("@wordpress/element");
|
|
9
|
+
var _i18n = require("@wordpress/i18n");
|
|
10
|
+
/**
|
|
11
|
+
* External dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* WordPress dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const isScrolledToEnd = element => {
|
|
19
|
+
if ((0, _i18n.isRTL)()) {
|
|
20
|
+
const scrollLeft = Math.abs(element.scrollLeft);
|
|
21
|
+
return scrollLeft <= 1;
|
|
22
|
+
}
|
|
23
|
+
return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A hook to check if a given scroll container has reached the horizontal scroll end.
|
|
28
|
+
*
|
|
29
|
+
* The current way receives "refs" as arguments, but it lacks a mechanism to detect when a ref has changed.
|
|
30
|
+
* As a result, when the "ref" is updated and attached to a new div, the computation should trigger again.
|
|
31
|
+
* However, this isn't possible in the current setup because the hook is unaware that the ref has changed.
|
|
32
|
+
*
|
|
33
|
+
* See https://github.com/Automattic/wp-calypso/pull/103005#discussion_r2077567912.
|
|
34
|
+
*
|
|
35
|
+
* @param {Object} params The parameters for the hook.
|
|
36
|
+
* @param {MutableRefObject<HTMLDivElement | null>} params.scrollContainerRef The ref to the scroll container element.
|
|
37
|
+
* @param {boolean} [params.enabled=false] Whether the hook is enabled.
|
|
38
|
+
* @return {boolean} - Returns true if the scroll container is scrolled to the end or false otherwise.
|
|
39
|
+
*/
|
|
40
|
+
function useIsHorizontalScrollEnd({
|
|
41
|
+
scrollContainerRef,
|
|
42
|
+
enabled = false
|
|
43
|
+
}) {
|
|
44
|
+
const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, _element.useState)(false);
|
|
45
|
+
const handleIsHorizontalScrollEnd = (0, _compose.useDebounce)((0, _element.useCallback)(() => {
|
|
46
|
+
const scrollContainer = scrollContainerRef.current;
|
|
47
|
+
if (scrollContainer) {
|
|
48
|
+
setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer));
|
|
49
|
+
}
|
|
50
|
+
}, [scrollContainerRef, setIsHorizontalScrollEnd]), 200);
|
|
51
|
+
(0, _element.useEffect)(() => {
|
|
52
|
+
if (typeof window === 'undefined' || !enabled || !scrollContainerRef.current) {
|
|
53
|
+
return () => {};
|
|
54
|
+
}
|
|
55
|
+
handleIsHorizontalScrollEnd();
|
|
56
|
+
scrollContainerRef.current.addEventListener('scroll', handleIsHorizontalScrollEnd);
|
|
57
|
+
window.addEventListener('resize', handleIsHorizontalScrollEnd);
|
|
58
|
+
return () => {
|
|
59
|
+
scrollContainerRef.current?.removeEventListener('scroll', handleIsHorizontalScrollEnd);
|
|
60
|
+
window.removeEventListener('resize', handleIsHorizontalScrollEnd);
|
|
61
|
+
};
|
|
62
|
+
}, [scrollContainerRef, enabled]);
|
|
63
|
+
return isHorizontalScrollEnd;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=use-is-horizontal-scroll-end.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_compose","require","_element","_i18n","isScrolledToEnd","element","isRTL","scrollLeft","Math","abs","clientWidth","scrollWidth","useIsHorizontalScrollEnd","scrollContainerRef","enabled","isHorizontalScrollEnd","setIsHorizontalScrollEnd","useState","handleIsHorizontalScrollEnd","useDebounce","useCallback","scrollContainer","current","useEffect","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":";;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAVA;AACA;AACA;;AAGA;AACA;AACA;;AAKA,MAAMG,eAAe,GAAKC,OAAgB,IAAM;EAC/C,IAAK,IAAAC,WAAK,EAAC,CAAC,EAAG;IACd,MAAMC,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAEJ,OAAO,CAACE,UAAW,CAAC;IACjD,OAAOA,UAAU,IAAI,CAAC;EACvB;EAEA,OAAOF,OAAO,CAACE,UAAU,GAAGF,OAAO,CAACK,WAAW,IAAIL,OAAO,CAACM,WAAW,GAAG,CAAC;AAC3E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,wBAAwBA,CAAE;EACzCC,kBAAkB;EAClBC,OAAO,GAAG;AAIX,CAAC,EAAY;EACZ,MAAM,CAAEC,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAElB,MAAMC,2BAA2B,GAAG,IAAAC,oBAAW,EAC9C,IAAAC,oBAAW,EAAE,MAAM;IAClB,MAAMC,eAAe,GAAGR,kBAAkB,CAACS,OAAO;IAClD,IAAKD,eAAe,EAAG;MACtBL,wBAAwB,CAAEZ,eAAe,CAAEiB,eAAgB,CAAE,CAAC;IAC/D;EACD,CAAC,EAAE,CAAER,kBAAkB,EAAEG,wBAAwB,CAAG,CAAC,EACrD,GACD,CAAC;EAED,IAAAO,kBAAS,EAAE,MAAM;IAChB,IACC,OAAOC,MAAM,KAAK,WAAW,IAC7B,CAAEV,OAAO,IACT,CAAED,kBAAkB,CAACS,OAAO,EAC3B;MACD,OAAO,MAAM,CAAC,CAAC;IAChB;IAEAJ,2BAA2B,CAAC,CAAC;IAC7BL,kBAAkB,CAACS,OAAO,CAACG,gBAAgB,CAC1C,QAAQ,EACRP,2BACD,CAAC;IACDM,MAAM,CAACC,gBAAgB,CAAE,QAAQ,EAAEP,2BAA4B,CAAC;IAEhE,OAAO,MAAM;MACZL,kBAAkB,CAACS,OAAO,EAAEI,mBAAmB,CAC9C,QAAQ,EACRR,2BACD,CAAC;MACDM,MAAM,CAACE,mBAAmB,CAAE,QAAQ,EAAER,2BAA4B,CAAC;IACpE,CAAC;EACF,CAAC,EAAE,CAAEL,kBAAkB,EAAEC,OAAO,CAAG,CAAC;EAEpC,OAAOC,qBAAqB;AAC7B","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ItemClickWrapper = ItemClickWrapper;
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
|
+
/**
|
|
9
|
+
* External dependencies
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function getClickableItemProps({
|
|
13
|
+
item,
|
|
14
|
+
isItemClickable,
|
|
15
|
+
onClickItem,
|
|
16
|
+
className
|
|
17
|
+
}) {
|
|
18
|
+
if (!isItemClickable(item) || !onClickItem) {
|
|
19
|
+
return {
|
|
20
|
+
className
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
className: className ? `${className} ${className}--clickable` : undefined,
|
|
25
|
+
role: 'button',
|
|
26
|
+
tabIndex: 0,
|
|
27
|
+
onClick: event => {
|
|
28
|
+
// Prevents onChangeSelection from triggering.
|
|
29
|
+
event.stopPropagation();
|
|
30
|
+
onClickItem(item);
|
|
31
|
+
},
|
|
32
|
+
onKeyDown: event => {
|
|
33
|
+
if (event.key === 'Enter' || event.key === '' || event.key === ' ') {
|
|
34
|
+
// Prevents onChangeSelection from triggering.
|
|
35
|
+
event.stopPropagation();
|
|
36
|
+
onClickItem(item);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function ItemClickWrapper({
|
|
42
|
+
item,
|
|
43
|
+
isItemClickable,
|
|
44
|
+
onClickItem,
|
|
45
|
+
renderItemLink,
|
|
46
|
+
className,
|
|
47
|
+
children,
|
|
48
|
+
...extraProps
|
|
49
|
+
}) {
|
|
50
|
+
if (!isItemClickable(item)) {
|
|
51
|
+
return children;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// If we have a renderItemLink, use it
|
|
55
|
+
if (renderItemLink) {
|
|
56
|
+
return renderItemLink({
|
|
57
|
+
item,
|
|
58
|
+
className: `${className} ${className}--clickable`,
|
|
59
|
+
...extraProps,
|
|
60
|
+
children
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Otherwise use the classic click handler approach
|
|
65
|
+
const clickProps = getClickableItemProps({
|
|
66
|
+
item,
|
|
67
|
+
isItemClickable,
|
|
68
|
+
onClickItem,
|
|
69
|
+
className
|
|
70
|
+
});
|
|
71
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
72
|
+
...clickProps,
|
|
73
|
+
...extraProps,
|
|
74
|
+
children: children
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=item-click-wrapper.js.map
|