@wordpress/dataviews 8.0.0 → 8.0.2-next.836ecdcae.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.
Files changed (160) hide show
  1. package/CHANGELOG.md +8 -4
  2. package/README.md +76 -0
  3. package/build/components/dataviews/index.js +11 -1
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-context/index.js.map +1 -1
  6. package/build/components/dataviews-layout/index.js +2 -1
  7. package/build/components/dataviews-layout/index.js.map +1 -1
  8. package/build/components/dataviews-picker/footer.js +145 -0
  9. package/build/components/dataviews-picker/footer.js.map +1 -0
  10. package/build/components/dataviews-picker/index.js +201 -0
  11. package/build/components/dataviews-picker/index.js.map +1 -0
  12. package/build/components/dataviews-selection-checkbox/index.js +4 -2
  13. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  14. package/build/components/dataviews-view-config/index.js +1 -0
  15. package/build/components/dataviews-view-config/index.js.map +1 -1
  16. package/build/constants.js +4 -1
  17. package/build/constants.js.map +1 -1
  18. package/build/dataform-controls/email.js +8 -49
  19. package/build/dataform-controls/email.js.map +1 -1
  20. package/build/dataform-controls/index.js +2 -0
  21. package/build/dataform-controls/index.js.map +1 -1
  22. package/build/dataform-controls/telephone.js +28 -0
  23. package/build/dataform-controls/telephone.js.map +1 -0
  24. package/build/dataform-controls/text.js +7 -48
  25. package/build/dataform-controls/text.js.map +1 -1
  26. package/build/dataform-controls/utils/validated-text.js +68 -0
  27. package/build/dataform-controls/utils/validated-text.js.map +1 -0
  28. package/build/dataviews-layouts/grid/index.js +5 -8
  29. package/build/dataviews-layouts/grid/index.js.map +1 -1
  30. package/build/dataviews-layouts/index.js +9 -1
  31. package/build/dataviews-layouts/index.js.map +1 -1
  32. package/build/dataviews-layouts/picker-grid/index.js +357 -0
  33. package/build/dataviews-layouts/picker-grid/index.js.map +1 -0
  34. package/build/dataviews-layouts/utils/grid-items.js +37 -0
  35. package/build/dataviews-layouts/utils/grid-items.js.map +1 -0
  36. package/build/dataviews-layouts/utils/preview-size-picker.js +81 -0
  37. package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
  38. package/build/field-types/index.js +4 -0
  39. package/build/field-types/index.js.map +1 -1
  40. package/build/field-types/telephone.js +57 -0
  41. package/build/field-types/telephone.js.map +1 -0
  42. package/build/types.js.map +1 -1
  43. package/build-module/components/dataviews/index.js +11 -1
  44. package/build-module/components/dataviews/index.js.map +1 -1
  45. package/build-module/components/dataviews-context/index.js.map +1 -1
  46. package/build-module/components/dataviews-layout/index.js +2 -1
  47. package/build-module/components/dataviews-layout/index.js.map +1 -1
  48. package/build-module/components/dataviews-picker/footer.js +136 -0
  49. package/build-module/components/dataviews-picker/footer.js.map +1 -0
  50. package/build-module/components/dataviews-picker/index.js +191 -0
  51. package/build-module/components/dataviews-picker/index.js.map +1 -0
  52. package/build-module/components/dataviews-selection-checkbox/index.js +4 -2
  53. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  54. package/build-module/components/dataviews-view-config/index.js +1 -0
  55. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  56. package/build-module/constants.js +3 -0
  57. package/build-module/constants.js.map +1 -1
  58. package/build-module/dataform-controls/email.js +7 -49
  59. package/build-module/dataform-controls/email.js.map +1 -1
  60. package/build-module/dataform-controls/index.js +2 -0
  61. package/build-module/dataform-controls/index.js.map +1 -1
  62. package/build-module/dataform-controls/telephone.js +21 -0
  63. package/build-module/dataform-controls/telephone.js.map +1 -0
  64. package/build-module/dataform-controls/text.js +6 -48
  65. package/build-module/dataform-controls/text.js.map +1 -1
  66. package/build-module/dataform-controls/utils/validated-text.js +62 -0
  67. package/build-module/dataform-controls/utils/validated-text.js.map +1 -0
  68. package/build-module/dataviews-layouts/grid/index.js +5 -8
  69. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  70. package/build-module/dataviews-layouts/index.js +10 -2
  71. package/build-module/dataviews-layouts/index.js.map +1 -1
  72. package/build-module/dataviews-layouts/picker-grid/index.js +348 -0
  73. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -0
  74. package/build-module/dataviews-layouts/utils/grid-items.js +29 -0
  75. package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -0
  76. package/build-module/dataviews-layouts/utils/preview-size-picker.js +73 -0
  77. package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
  78. package/build-module/field-types/index.js +4 -0
  79. package/build-module/field-types/index.js.map +1 -1
  80. package/build-module/field-types/telephone.js +51 -0
  81. package/build-module/field-types/telephone.js.map +1 -0
  82. package/build-module/types.js.map +1 -1
  83. package/build-style/style-rtl.css +194 -11
  84. package/build-style/style.css +194 -11
  85. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  86. package/build-types/components/dataviews/index.d.ts +1 -1
  87. package/build-types/components/dataviews/index.d.ts.map +1 -1
  88. package/build-types/components/dataviews-context/index.d.ts +1 -0
  89. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  90. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  91. package/build-types/components/dataviews-picker/footer.d.ts +4 -0
  92. package/build-types/components/dataviews-picker/footer.d.ts.map +1 -0
  93. package/build-types/components/dataviews-picker/index.d.ts +55 -0
  94. package/build-types/components/dataviews-picker/index.d.ts.map +1 -0
  95. package/build-types/components/dataviews-picker/stories/index.story.d.ts +42 -0
  96. package/build-types/components/dataviews-picker/stories/index.story.d.ts.map +1 -0
  97. package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -1
  98. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  99. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  100. package/build-types/constants.d.ts +1 -0
  101. package/build-types/constants.d.ts.map +1 -1
  102. package/build-types/dataform-controls/email.d.ts.map +1 -1
  103. package/build-types/dataform-controls/index.d.ts.map +1 -1
  104. package/build-types/dataform-controls/telephone.d.ts +6 -0
  105. package/build-types/dataform-controls/telephone.d.ts.map +1 -0
  106. package/build-types/dataform-controls/text.d.ts.map +1 -1
  107. package/build-types/dataform-controls/utils/validated-text.d.ts +12 -0
  108. package/build-types/dataform-controls/utils/validated-text.d.ts.map +1 -0
  109. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  110. package/build-types/dataviews-layouts/index.d.ts +12 -1
  111. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  112. package/build-types/dataviews-layouts/picker-grid/index.d.ts +4 -0
  113. package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -0
  114. package/build-types/dataviews-layouts/utils/grid-items.d.ts +5 -0
  115. package/build-types/dataviews-layouts/utils/grid-items.d.ts.map +1 -0
  116. package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts +2 -0
  117. package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts.map +1 -0
  118. package/build-types/field-types/index.d.ts.map +1 -1
  119. package/build-types/field-types/stories/index.story.d.ts +5 -1
  120. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  121. package/build-types/field-types/telephone.d.ts +20 -0
  122. package/build-types/field-types/telephone.d.ts.map +1 -0
  123. package/build-types/test/dataviews-picker.d.ts +2 -0
  124. package/build-types/test/dataviews-picker.d.ts.map +1 -0
  125. package/build-types/types.d.ts +24 -2
  126. package/build-types/types.d.ts.map +1 -1
  127. package/build-wp/index.js +4042 -3569
  128. package/package.json +15 -15
  129. package/src/components/dataform/stories/index.story.tsx +26 -1
  130. package/src/components/dataviews/index.tsx +25 -1
  131. package/src/components/dataviews/style.scss +4 -2
  132. package/src/components/dataviews-context/index.ts +1 -0
  133. package/src/components/dataviews-layout/index.tsx +4 -2
  134. package/src/components/dataviews-picker/footer.tsx +207 -0
  135. package/src/components/dataviews-picker/index.tsx +284 -0
  136. package/src/components/dataviews-picker/stories/index.story.tsx +251 -0
  137. package/src/components/dataviews-picker/style.scss +10 -0
  138. package/src/components/dataviews-selection-checkbox/index.tsx +3 -0
  139. package/src/components/dataviews-view-config/index.tsx +1 -0
  140. package/src/constants.ts +3 -0
  141. package/src/dataform-controls/email.tsx +3 -57
  142. package/src/dataform-controls/index.tsx +2 -0
  143. package/src/dataform-controls/telephone.tsx +18 -0
  144. package/src/dataform-controls/text.tsx +2 -57
  145. package/src/dataform-controls/utils/validated-text.tsx +79 -0
  146. package/src/dataviews-layouts/grid/index.tsx +7 -14
  147. package/src/dataviews-layouts/grid/style.scss +2 -20
  148. package/src/dataviews-layouts/index.ts +16 -2
  149. package/src/dataviews-layouts/picker-grid/index.tsx +490 -0
  150. package/src/dataviews-layouts/picker-grid/style.scss +171 -0
  151. package/src/dataviews-layouts/utils/grid-items.scss +21 -0
  152. package/src/dataviews-layouts/utils/grid-items.tsx +35 -0
  153. package/src/dataviews-layouts/utils/preview-size-picker.tsx +87 -0
  154. package/src/field-types/index.tsx +5 -0
  155. package/src/field-types/stories/index.story.tsx +44 -0
  156. package/src/field-types/telephone.tsx +71 -0
  157. package/src/style.scss +2 -0
  158. package/src/test/dataviews-picker.tsx +478 -0
  159. package/src/types.ts +40 -1
  160. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 8.0.1-next.0 (2025-09-05)
6
+
7
+ ### Features
8
+
9
+ - Introduce a new `DataViewsPicker` component. [#70971](https://github.com/WordPress/gutenberg/pull/70971)
10
+ - Dataform: Add new `telephone` field type and field control. [#71498](https://github.com/WordPress/gutenberg/pull/71498)
11
+
5
12
  ## 8.0.0 (2025-09-03)
6
13
 
7
14
  ### Breaking changes
@@ -11,6 +18,7 @@
11
18
  ### Enhancements
12
19
 
13
20
  - DataForm: add description support for the combined fields and show the description in the Card layout ([#71380](https://github.com/WordPress/gutenberg/pull/71380)).
21
+ - Add support for hiding the `title` in Grid layouts, with the actions menu rendered over the media preview. [#71369](https://github.com/WordPress/gutenberg/pull/71369)
14
22
 
15
23
  ### Internal
16
24
 
@@ -21,10 +29,6 @@
21
29
  - DataViews: Fix incorrect documentation for `defaultLayouts` prop. [#71334](https://github.com/WordPress/gutenberg/pull/71334)
22
30
  - DataViews: Fix mismatched padding on mobile viewports for grid layout [#71455](https://github.com/WordPress/gutenberg/pull/71455)
23
31
 
24
- ### Enhancements
25
-
26
- - Add support for hiding the `title` in Grid layouts, with the actions menu rendered over the media preview. [#71369](https://github.com/WordPress/gutenberg/pull/71369)
27
-
28
32
  ## 7.0.0 (2025-08-20)
29
33
 
30
34
  ### Breaking changes
package/README.md CHANGED
@@ -381,12 +381,16 @@ The list of selected items' ids.
381
381
 
382
382
  If `selection` and `onChangeSelection` are provided, the `DataViews` component behaves like a controlled component. Otherwise, it behaves like an uncontrolled component.
383
383
 
384
+ Note: `DataViews` still requires at least one bulk action to make items selectable.
385
+
384
386
  #### `onChangeSelection`: `function`
385
387
 
386
388
  Callback that signals the user selected one of more items. It receives the list of selected items' IDs as a parameter.
387
389
 
388
390
  If `selection` and `onChangeSelection` are provided, the `DataViews` component behaves like a controlled component. Otherwise, it behaves like an uncontrolled component.
389
391
 
392
+ Note: `DataViews` still requires at least one bulk action to make items selectable.
393
+
390
394
  #### `isItemClickable`: `function`
391
395
 
392
396
  A function that determines if a media field or a primary field is clickable. It receives an item as an argument and returns a boolean value indicating whether the item can be clicked.
@@ -496,6 +500,78 @@ Developers don't need to worry about the internal accessibility logic for indivi
496
500
 
497
501
  `FiltersToggle` controls the visibility of the filters panel, and `Filters` renders the actual filters inside it. They work together and should always be used as a pair. While their internal behavior is accessible by default, how they’re positioned and grouped in custom layouts may affect the overall experience — especially for assistive technologies. Extra care is recommended.
498
502
 
503
+ ## `DataViewsPicker`
504
+
505
+ <div class="callout callout-info">At <a href="https://wordpress.github.io/gutenberg/">WordPress Gutenberg's Storybook</a> there's an <a href="https://wordpress.github.io/gutenberg/?path=/docs/dataviews-dataviewspicker--docs">example implementation of the DataviewsPicker component</a>.</div>
506
+
507
+ ### Usage
508
+
509
+ The `DataViewsPicker` component is very similar to the regular `DataViews` component, but is optimized for selection or picking of items.
510
+
511
+ The component behaves differently to a regular `DataViews` component in the following ways:
512
+
513
+ - The items in the view are rendered using the `listbox` and `option` aria roles.
514
+ - Holding the `ctrl` or `cmd` key isn't required for multi-selection of items. The entire item can be clicked to select or deselect it.
515
+ - Individual items do not display any actions. All actions appear in the footer as text buttons.
516
+ - Selection is maintained across multiple pages when the component is paginated.
517
+
518
+ There are also a few differences in the implementation:
519
+
520
+ - Currently only the `pickerGrid` layout is supported for `DataViewsPicker`. This layout is very similar to the regular `grid` layout.
521
+ - The picker component is used as a 'controlled' component, so `selection` and `onChangeSelection` should be provided as props. This is so that implementers can access the full range of selected items across pages.
522
+ - An optional `itemListLabel` prop can be supplied to the `DataViewsPicker` component. This is added as an `aria-label` to the `listbox` element, and should be supplied if there's no heading element associated with the `DataViewsPicker` UI.
523
+ - The `isItemClickable`, `renderItemLink` and `onClickItem` prop are unsupported for `DataViewsPicker`.
524
+ - To implement a multi-selection picker, ensure all actions are declared with `supportsBulk: true`. For single selection use `supportsBulk: false`. When a mixture of bulk and non-bulk actions are provided, the component falls back to single selection.
525
+ - Only the `callback` style of action is supported. `RenderModal` is unsupported.
526
+ - The `isEligible` callback for actions is unsupported.
527
+ - The `isPrimary` option for an action is used to render a `primary` variant of `Button` that can be used as a main call to action.
528
+
529
+ Example:
530
+
531
+ ```jsx
532
+ const Example = () => {
533
+ // When using DataViewsPicker, `selection` should be managed so that the component is 'controlled'.
534
+ const [ selection, setSelection ] = useState( [] );
535
+
536
+ // Both actions have `supportsBulk: true`, so the `DataViewsPicker` will allow multi-selection.
537
+ const actions = [
538
+ {
539
+ id: 'confirm',
540
+ label: 'Confirm',
541
+ isPrimary: true,
542
+ supportsBulk: true,
543
+ callback() {
544
+ window.alert( selection.join( ', ' ) );
545
+ },
546
+ },
547
+ {
548
+ id: 'cancel',
549
+ label: 'Cancel',
550
+ supportsBulk: true,
551
+ callback() {
552
+ setSelection( [] );
553
+ },
554
+ },
555
+ ];
556
+
557
+ return (
558
+ <DataViewsPicker
559
+ actions={ actions }
560
+ data={ data }
561
+ fields={ fields }
562
+ view={ view }
563
+ onChangeView={ onChangeView }
564
+ defaultLayouts={ defaultLayouts }
565
+ paginationInfo={ paginationInfo }
566
+ selection={ selection }
567
+ onChangeSelection={ setSelection }
568
+ />
569
+ );
570
+ };
571
+ ```
572
+
573
+ ### Properties
574
+
499
575
  ## `DataForm`
500
576
 
501
577
  <div class="callout callout-info">At <a href="https://wordpress.github.io/gutenberg/">WordPress Gutenberg's Storybook</a> there's and <a href="https://wordpress.github.io/gutenberg/?path=/docs/dataviews-dataform--docs">example implementation of the DataForm component</a>.</div>
@@ -9,6 +9,7 @@ var _components = require("@wordpress/components");
9
9
  var _element = require("@wordpress/element");
10
10
  var _compose = require("@wordpress/compose");
11
11
  var _dataviewsContext = _interopRequireDefault(require("../dataviews-context"));
12
+ var _dataviewsLayouts = require("../../dataviews-layouts");
12
13
  var _dataviewsFilters = _interopRequireWildcard(require("../dataviews-filters"));
13
14
  var _dataviewsLayout = _interopRequireDefault(require("../dataviews-layout"));
14
15
  var _dataviewsFooter = _interopRequireDefault(require("../dataviews-footer"));
@@ -35,6 +36,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
35
36
  const defaultGetItemId = item => item.id;
36
37
  const defaultIsItemClickable = () => true;
37
38
  const EMPTY_ARRAY = [];
39
+ const dataViewsLayouts = _dataviewsLayouts.VIEW_LAYOUTS.filter(viewLayout => !viewLayout.isPicker);
38
40
  function DefaultUI({
39
41
  header,
40
42
  search = true,
@@ -81,7 +83,7 @@ function DataViews({
81
83
  getItemLevel,
82
84
  isLoading = false,
83
85
  paginationInfo,
84
- defaultLayouts,
86
+ defaultLayouts: defaultLayoutsProperty,
85
87
  selection: selectionProperty,
86
88
  onChangeSelection,
87
89
  onClickItem,
@@ -154,6 +156,14 @@ function DataViews({
154
156
  handleScroll.cancel(); // Cancel any pending throttled calls
155
157
  };
156
158
  }, [infiniteScrollHandler, view.infiniteScrollEnabled]);
159
+
160
+ // Filter out DataViewsPicker layouts.
161
+ const defaultLayouts = (0, _element.useMemo)(() => Object.fromEntries(Object.entries(defaultLayoutsProperty).filter(([layoutType]) => {
162
+ return dataViewsLayouts.some(viewLayout => viewLayout.type === layoutType);
163
+ })), [defaultLayoutsProperty]);
164
+ if (!defaultLayouts[view.type]) {
165
+ return null;
166
+ }
157
167
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsContext.default.Provider, {
158
168
  value: {
159
169
  view,
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_compose","_dataviewsContext","_interopRequireDefault","_dataviewsFilters","_interopRequireWildcard","_dataviewsLayout","_dataviewsFooter","_dataviewsSearch","_dataviewsBulkActions","_dataviewsPagination","_dataviewsViewConfig","_normalizeFields","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","defaultGetItemId","item","id","defaultIsItemClickable","EMPTY_ARRAY","DefaultUI","header","search","searchLabel","undefined","isShowingFilter","useContext","DataViewsContext","jsxs","Fragment","children","__experimentalHStack","alignment","justify","className","spacing","expanded","jsx","label","FiltersToggle","style","flexShrink","DataViews","view","onChangeView","fields","actions","data","getItemId","getItemLevel","isLoading","paginationInfo","defaultLayouts","selection","selectionProperty","onChangeSelection","onClickItem","renderItemLink","isItemClickable","config","perPageSizes","empty","infiniteScrollHandler","containerRef","useRef","containerWidth","setContainerWidth","useState","resizeObserverRef","useResizeObserver","resizeObserverEntries","borderBoxSize","inlineSize","box","selectionState","setSelectionState","isUncontrolled","openedFilter","setOpenedFilter","setSelectionWithChange","value","newValue","_fields","useMemo","normalizeFields","_selection","filter","some","filters","useFilters","hasPrimaryOrLockedFilters","isPrimary","isLocked","setIsShowingFilter","useEffect","infiniteScrollEnabled","current","handleScroll","throttle","event","target","scrollTop","scrollHeight","clientHeight","container","addEventListener","removeEventListener","cancel","Provider","hasInfiniteScrollHandler","ref","DataViewsSubComponents","BulkActionToolbar","BulkActionsFooter","Filters","DataViewsFilters","Layout","DataViewsLayout","LayoutSwitcher","ViewTypeMenu","Pagination","DataViewsPagination","Search","DataViewsSearch","ViewConfig","DataviewsViewConfigDropdown","Footer","DataViewsFooter","_default","exports"],"sources":["@wordpress/dataviews/src/components/dataviews/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { useResizeObserver, throttle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport {\n\tdefault as DataViewsFilters,\n\tuseFilters,\n\tFiltersToggle,\n} from '../dataviews-filters';\nimport DataViewsLayout from '../dataviews-layout';\nimport DataViewsFooter from '../dataviews-footer';\nimport DataViewsSearch from '../dataviews-search';\nimport { BulkActionsFooter } from '../dataviews-bulk-actions';\nimport { DataViewsPagination } from '../dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../dataviews-view-config';\nimport { normalizeFields } from '../../normalize-fields';\nimport type { Action, Field, View, SupportedLayouts } from '../../types';\nimport type { SelectionOrUpdater } from '../../private-types';\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t\tinfiniteScrollHandler?: () => void;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\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\theader?: ReactNode;\n\tgetItemLevel?: ( item: Item ) => number;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\tempty?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\n\ntype DefaultUIProps = Pick<\n\tDataViewsProps< any >,\n\t'header' | 'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\theader,\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\tconst { isShowingFilter } = useContext( DataViewsContext );\n\treturn (\n\t\t<>\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\tspacing={ 1 }\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</HStack>\n\t\t\t\t<HStack\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\texpanded={ false }\n\t\t\t\t\tstyle={ { flexShrink: 0 } }\n\t\t\t\t>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t\t{ header }\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t\t{ isShowingFilter && (\n\t\t\t\t<DataViewsFilters className=\"dataviews-filters__container\" />\n\t\t\t) }\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\tempty,\n}: DataViewsProps< Item > ) {\n\tconst { infiniteScrollHandler } = paginationInfo;\n\tconst containerRef = useRef< HTMLDivElement | null >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Attach scroll event listener for infinite scroll\n\tuseEffect( () => {\n\t\tif ( ! view.infiniteScrollEnabled || ! containerRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = throttle( ( event: unknown ) => {\n\t\t\tconst target = ( event as Event ).target as HTMLElement;\n\t\t\tconst scrollTop = target.scrollTop;\n\t\t\tconst scrollHeight = target.scrollHeight;\n\t\t\tconst clientHeight = target.clientHeight;\n\n\t\t\t// Check if user has scrolled near the bottom\n\t\t\tif ( scrollTop + clientHeight >= scrollHeight - 100 ) {\n\t\t\t\tinfiniteScrollHandler?.();\n\t\t\t}\n\t\t}, 100 ); // Throttle to 100ms\n\n\t\tconst container = containerRef.current;\n\t\tcontainer.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener( 'scroll', handleScroll );\n\t\t\thandleScroll.cancel(); // Cancel any pending throttled calls\n\t\t};\n\t}, [ infiniteScrollHandler, view.infiniteScrollEnabled ] );\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemLevel,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t\trenderItemLink,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\tempty,\n\t\t\t\thasInfiniteScrollHandler: !! infiniteScrollHandler,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\" ref={ containerRef }>\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI\n\t\t\t\t\t\theader={ header }\n\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsSubComponents = DataViews as typeof DataViews & {\n\tBulkActionToolbar: typeof BulkActionsFooter;\n\tFilters: typeof DataViewsFilters;\n\tFiltersToggle: typeof FiltersToggle;\n\tLayout: typeof DataViewsLayout;\n\tLayoutSwitcher: typeof ViewTypeMenu;\n\tPagination: typeof DataViewsPagination;\n\tSearch: typeof DataViewsSearch;\n\tViewConfig: typeof DataviewsViewConfigDropdown;\n\tFooter: typeof DataViewsFooter;\n};\n\nDataViewsSubComponents.BulkActionToolbar = BulkActionsFooter;\nDataViewsSubComponents.Filters = DataViewsFilters;\nDataViewsSubComponents.FiltersToggle = FiltersToggle;\nDataViewsSubComponents.Layout = DataViewsLayout;\nDataViewsSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsSubComponents.Pagination = DataViewsPagination;\nDataViewsSubComponents.Search = DataViewsSearch;\nDataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown;\nDataViewsSubComponents.Footer = DataViewsFooter;\n\nexport default DataViewsSubComponents;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_element","_compose","_dataviewsContext","_interopRequireDefault","_dataviewsLayouts","_dataviewsFilters","_interopRequireWildcard","_dataviewsLayout","_dataviewsFooter","_dataviewsSearch","_dataviewsBulkActions","_dataviewsPagination","_dataviewsViewConfig","_normalizeFields","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","defaultGetItemId","item","id","defaultIsItemClickable","EMPTY_ARRAY","dataViewsLayouts","VIEW_LAYOUTS","filter","viewLayout","isPicker","DefaultUI","header","search","searchLabel","undefined","isShowingFilter","useContext","DataViewsContext","jsxs","Fragment","children","__experimentalHStack","alignment","justify","className","spacing","expanded","jsx","label","FiltersToggle","style","flexShrink","DataViews","view","onChangeView","fields","actions","data","getItemId","getItemLevel","isLoading","paginationInfo","defaultLayouts","defaultLayoutsProperty","selection","selectionProperty","onChangeSelection","onClickItem","renderItemLink","isItemClickable","config","perPageSizes","empty","infiniteScrollHandler","containerRef","useRef","containerWidth","setContainerWidth","useState","resizeObserverRef","useResizeObserver","resizeObserverEntries","borderBoxSize","inlineSize","box","selectionState","setSelectionState","isUncontrolled","openedFilter","setOpenedFilter","setSelectionWithChange","value","newValue","_fields","useMemo","normalizeFields","_selection","some","filters","useFilters","hasPrimaryOrLockedFilters","isPrimary","isLocked","setIsShowingFilter","useEffect","infiniteScrollEnabled","current","handleScroll","throttle","event","target","scrollTop","scrollHeight","clientHeight","container","addEventListener","removeEventListener","cancel","fromEntries","entries","layoutType","type","Provider","hasInfiniteScrollHandler","ref","DataViewsSubComponents","BulkActionToolbar","BulkActionsFooter","Filters","DataViewsFilters","Layout","DataViewsLayout","LayoutSwitcher","ViewTypeMenu","Pagination","DataViewsPagination","Search","DataViewsSearch","ViewConfig","DataviewsViewConfigDropdown","Footer","DataViewsFooter","_default","exports"],"sources":["@wordpress/dataviews/src/components/dataviews/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode, ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { useResizeObserver, throttle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { VIEW_LAYOUTS } from '../../dataviews-layouts';\nimport {\n\tdefault as DataViewsFilters,\n\tuseFilters,\n\tFiltersToggle,\n} from '../dataviews-filters';\nimport DataViewsLayout from '../dataviews-layout';\nimport DataViewsFooter from '../dataviews-footer';\nimport DataViewsSearch from '../dataviews-search';\nimport { BulkActionsFooter } from '../dataviews-bulk-actions';\nimport { DataViewsPagination } from '../dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../dataviews-view-config';\nimport { normalizeFields } from '../../normalize-fields';\nimport type { Action, Field, View, SupportedLayouts } from '../../types';\nimport type { SelectionOrUpdater } from '../../private-types';\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t\tinfiniteScrollHandler?: () => void;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\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\theader?: ReactNode;\n\tgetItemLevel?: ( item: Item ) => number;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\tempty?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\n\nconst dataViewsLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => ! viewLayout.isPicker\n);\n\ntype DefaultUIProps = Pick<\n\tDataViewsProps< any >,\n\t'header' | 'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\theader,\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\tconst { isShowingFilter } = useContext( DataViewsContext );\n\treturn (\n\t\t<>\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\tspacing={ 1 }\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</HStack>\n\t\t\t\t<HStack\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\texpanded={ false }\n\t\t\t\t\tstyle={ { flexShrink: 0 } }\n\t\t\t\t>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t\t{ header }\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t\t{ isShowingFilter && (\n\t\t\t\t<DataViewsFilters className=\"dataviews-filters__container\" />\n\t\t\t) }\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts: defaultLayoutsProperty,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\tempty,\n}: DataViewsProps< Item > ) {\n\tconst { infiniteScrollHandler } = paginationInfo;\n\tconst containerRef = useRef< HTMLDivElement | null >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Attach scroll event listener for infinite scroll\n\tuseEffect( () => {\n\t\tif ( ! view.infiniteScrollEnabled || ! containerRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = throttle( ( event: unknown ) => {\n\t\t\tconst target = ( event as Event ).target as HTMLElement;\n\t\t\tconst scrollTop = target.scrollTop;\n\t\t\tconst scrollHeight = target.scrollHeight;\n\t\t\tconst clientHeight = target.clientHeight;\n\n\t\t\t// Check if user has scrolled near the bottom\n\t\t\tif ( scrollTop + clientHeight >= scrollHeight - 100 ) {\n\t\t\t\tinfiniteScrollHandler?.();\n\t\t\t}\n\t\t}, 100 ); // Throttle to 100ms\n\n\t\tconst container = containerRef.current;\n\t\tcontainer.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener( 'scroll', handleScroll );\n\t\t\thandleScroll.cancel(); // Cancel any pending throttled calls\n\t\t};\n\t}, [ infiniteScrollHandler, view.infiniteScrollEnabled ] );\n\n\t// Filter out DataViewsPicker layouts.\n\tconst defaultLayouts = useMemo(\n\t\t() =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( defaultLayoutsProperty ).filter(\n\t\t\t\t\t( [ layoutType ] ) => {\n\t\t\t\t\t\treturn dataViewsLayouts.some(\n\t\t\t\t\t\t\t( viewLayout ) => viewLayout.type === layoutType\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t),\n\t\t[ defaultLayoutsProperty ]\n\t);\n\n\tif ( ! defaultLayouts[ view.type ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemLevel,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t\trenderItemLink,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\tempty,\n\t\t\t\thasInfiniteScrollHandler: !! infiniteScrollHandler,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\" ref={ containerRef }>\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI\n\t\t\t\t\t\theader={ header }\n\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsSubComponents = DataViews as typeof DataViews & {\n\tBulkActionToolbar: typeof BulkActionsFooter;\n\tFilters: typeof DataViewsFilters;\n\tFiltersToggle: typeof FiltersToggle;\n\tLayout: typeof DataViewsLayout;\n\tLayoutSwitcher: typeof ViewTypeMenu;\n\tPagination: typeof DataViewsPagination;\n\tSearch: typeof DataViewsSearch;\n\tViewConfig: typeof DataviewsViewConfigDropdown;\n\tFooter: typeof DataViewsFooter;\n};\n\nDataViewsSubComponents.BulkActionToolbar = BulkActionsFooter;\nDataViewsSubComponents.Filters = DataViewsFilters;\nDataViewsSubComponents.FiltersToggle = FiltersToggle;\nDataViewsSubComponents.Layout = DataViewsLayout;\nDataViewsSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsSubComponents.Pagination = DataViewsPagination;\nDataViewsSubComponents.Search = DataViewsSearch;\nDataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown;\nDataViewsSubComponents.Footer = DataViewsFooter;\n\nexport default DataViewsSubComponents;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_constants","DataViewsContext","createContext","view","type","LAYOUT_TABLE","onChangeView","fields","data","paginationInfo","totalItems","totalPages","selection","onChangeSelection","setOpenedFilter","openedFilter","getItemId","item","id","isItemClickable","renderItemLink","undefined","containerWidth","containerRef","createRef","resizeObserverRef","defaultLayouts","list","grid","table","filters","isShowingFilter","setIsShowingFilter","hasInfiniteScrollHandler","config","perPageSizes","displayName","_default","exports","default"],"sources":["@wordpress/dataviews/src/components/dataviews-context/index.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement, ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { createContext, createRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tView,\n\tAction,\n\tNormalizedField,\n\tSupportedLayouts,\n\tNormalizedFilter,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { LAYOUT_TABLE } from '../../constants';\n\ntype DataViewsContextType< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\topenedFilter: string | null;\n\tsetOpenedFilter: ( openedFilter: string | null ) => void;\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\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\tcontainerWidth: number;\n\tcontainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tresizeObserverRef:\n\t\t| ( ( element?: HTMLDivElement | null ) => void )\n\t\t| React.RefObject< HTMLDivElement >;\n\tdefaultLayouts: SupportedLayouts;\n\tfilters: NormalizedFilter[];\n\tisShowingFilter: boolean;\n\tsetIsShowingFilter: ( value: boolean ) => void;\n\tconfig: { perPageSizes: number[] };\n\tempty?: ReactNode;\n\thasInfiniteScrollHandler: boolean;\n};\n\nconst DataViewsContext = createContext< DataViewsContextType< any > >( {\n\tview: { type: LAYOUT_TABLE },\n\tonChangeView: () => {},\n\tfields: [],\n\tdata: [],\n\tpaginationInfo: {\n\t\ttotalItems: 0,\n\t\ttotalPages: 0,\n\t},\n\tselection: [],\n\tonChangeSelection: () => {},\n\tsetOpenedFilter: () => {},\n\topenedFilter: null,\n\tgetItemId: ( item ) => item.id,\n\tisItemClickable: () => true,\n\trenderItemLink: undefined,\n\tcontainerWidth: 0,\n\tcontainerRef: createRef(),\n\tresizeObserverRef: () => {},\n\tdefaultLayouts: { list: {}, grid: {}, table: {} },\n\tfilters: [],\n\tisShowingFilter: false,\n\tsetIsShowingFilter: () => {},\n\thasInfiniteScrollHandler: false,\n\tconfig: {\n\t\tperPageSizes: [],\n\t},\n} );\n\nDataViewsContext.displayName = 'DataViewsContext';\n\nexport default DataViewsContext;\n"],"mappings":";;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AAaA,IAAAC,UAAA,GAAAD,OAAA;AArBA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAiDA,MAAME,gBAAgB,GAAG,IAAAC,sBAAa,EAAiC;EACtEC,IAAI,EAAE;IAAEC,IAAI,EAAEC;EAAa,CAAC;EAC5BC,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAE,EAAE;EACVC,IAAI,EAAE,EAAE;EACRC,cAAc,EAAE;IACfC,UAAU,EAAE,CAAC;IACbC,UAAU,EAAE;EACb,CAAC;EACDC,SAAS,EAAE,EAAE;EACbC,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC3BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAC;EACzBC,YAAY,EAAE,IAAI;EAClBC,SAAS,EAAIC,IAAI,IAAMA,IAAI,CAACC,EAAE;EAC9BC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,cAAc,EAAEC,SAAS;EACzBC,cAAc,EAAE,CAAC;EACjBC,YAAY,EAAE,IAAAC,kBAAS,EAAC,CAAC;EACzBC,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC3BC,cAAc,EAAE;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,KAAK,EAAE,CAAC;EAAE,CAAC;EACjDC,OAAO,EAAE,EAAE;EACXC,eAAe,EAAE,KAAK;EACtBC,kBAAkB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC5BC,wBAAwB,EAAE,KAAK;EAC/BC,MAAM,EAAE;IACPC,YAAY,EAAE;EACf;AACD,CAAE,CAAC;AAEHlC,gBAAgB,CAACmC,WAAW,GAAG,kBAAkB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEnCtC,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_constants","DataViewsContext","createContext","view","type","LAYOUT_TABLE","onChangeView","fields","data","paginationInfo","totalItems","totalPages","selection","onChangeSelection","setOpenedFilter","openedFilter","getItemId","item","id","isItemClickable","renderItemLink","undefined","containerWidth","containerRef","createRef","resizeObserverRef","defaultLayouts","list","grid","table","filters","isShowingFilter","setIsShowingFilter","hasInfiniteScrollHandler","config","perPageSizes","displayName","_default","exports","default"],"sources":["@wordpress/dataviews/src/components/dataviews-context/index.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement, ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { createContext, createRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tView,\n\tAction,\n\tNormalizedField,\n\tSupportedLayouts,\n\tNormalizedFilter,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { LAYOUT_TABLE } from '../../constants';\n\ntype DataViewsContextType< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\topenedFilter: string | null;\n\tsetOpenedFilter: ( openedFilter: string | null ) => void;\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\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\tcontainerWidth: number;\n\tcontainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tresizeObserverRef:\n\t\t| ( ( element?: HTMLDivElement | null ) => void )\n\t\t| React.RefObject< HTMLDivElement >;\n\tdefaultLayouts: SupportedLayouts;\n\tfilters: NormalizedFilter[];\n\tisShowingFilter: boolean;\n\tsetIsShowingFilter: ( value: boolean ) => void;\n\tconfig: { perPageSizes: number[] };\n\tempty?: ReactNode;\n\thasInfiniteScrollHandler: boolean;\n\titemListLabel?: string;\n};\n\nconst DataViewsContext = createContext< DataViewsContextType< any > >( {\n\tview: { type: LAYOUT_TABLE },\n\tonChangeView: () => {},\n\tfields: [],\n\tdata: [],\n\tpaginationInfo: {\n\t\ttotalItems: 0,\n\t\ttotalPages: 0,\n\t},\n\tselection: [],\n\tonChangeSelection: () => {},\n\tsetOpenedFilter: () => {},\n\topenedFilter: null,\n\tgetItemId: ( item ) => item.id,\n\tisItemClickable: () => true,\n\trenderItemLink: undefined,\n\tcontainerWidth: 0,\n\tcontainerRef: createRef(),\n\tresizeObserverRef: () => {},\n\tdefaultLayouts: { list: {}, grid: {}, table: {} },\n\tfilters: [],\n\tisShowingFilter: false,\n\tsetIsShowingFilter: () => {},\n\thasInfiniteScrollHandler: false,\n\tconfig: {\n\t\tperPageSizes: [],\n\t},\n} );\n\nDataViewsContext.displayName = 'DataViewsContext';\n\nexport default DataViewsContext;\n"],"mappings":";;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AAaA,IAAAC,UAAA,GAAAD,OAAA;AArBA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAkDA,MAAME,gBAAgB,GAAG,IAAAC,sBAAa,EAAiC;EACtEC,IAAI,EAAE;IAAEC,IAAI,EAAEC;EAAa,CAAC;EAC5BC,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAE,EAAE;EACVC,IAAI,EAAE,EAAE;EACRC,cAAc,EAAE;IACfC,UAAU,EAAE,CAAC;IACbC,UAAU,EAAE;EACb,CAAC;EACDC,SAAS,EAAE,EAAE;EACbC,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC3BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAC;EACzBC,YAAY,EAAE,IAAI;EAClBC,SAAS,EAAIC,IAAI,IAAMA,IAAI,CAACC,EAAE;EAC9BC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,cAAc,EAAEC,SAAS;EACzBC,cAAc,EAAE,CAAC;EACjBC,YAAY,EAAE,IAAAC,kBAAS,EAAC,CAAC;EACzBC,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC3BC,cAAc,EAAE;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,KAAK,EAAE,CAAC;EAAE,CAAC;EACjDC,OAAO,EAAE,EAAE;EACXC,eAAe,EAAE,KAAK;EACtBC,kBAAkB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC5BC,wBAAwB,EAAE,KAAK;EAC/BC,MAAM,EAAE;IACPC,YAAY,EAAE;EACf;AACD,CAAE,CAAC;AAEHlC,gBAAgB,CAACmC,WAAW,GAAG,kBAAkB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEnCtC,gBAAgB","ignoreList":[]}
@@ -40,9 +40,10 @@ function DataViewsLayout({
40
40
  onClickItem,
41
41
  isItemClickable,
42
42
  renderItemLink,
43
+ defaultLayouts,
43
44
  empty = (0, _i18n.__)('No results')
44
45
  } = (0, _element.useContext)(_dataviewsContext.default);
45
- const ViewComponent = _dataviewsLayouts.VIEW_LAYOUTS.find(v => v.type === view.type)?.component;
46
+ const ViewComponent = _dataviewsLayouts.VIEW_LAYOUTS.find(v => v.type === view.type && defaultLayouts[v.type])?.component;
46
47
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ViewComponent, {
47
48
  className: className,
48
49
  actions: actions,
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_dataviewsContext","_interopRequireDefault","_dataviewsLayouts","_jsxRuntime","DataViewsLayout","className","actions","data","fields","getItemId","getItemLevel","isLoading","view","onChangeView","selection","onChangeSelection","setOpenedFilter","onClickItem","isItemClickable","renderItemLink","empty","__","useContext","DataViewsContext","ViewComponent","VIEW_LAYOUTS","find","v","type","component","jsx"],"sources":["@wordpress/dataviews/src/components/dataviews-layout/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { VIEW_LAYOUTS } from '../../dataviews-layouts';\nimport type { ViewBaseProps } from '../../types';\n\ntype DataViewsLayoutProps = {\n\tclassName?: string;\n};\n\nexport default function DataViewsLayout( { className }: DataViewsLayoutProps ) {\n\tconst {\n\t\tactions = [],\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tgetItemLevel,\n\t\tisLoading,\n\t\tview,\n\t\tonChangeView,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tsetOpenedFilter,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tempty = __( 'No results' ),\n\t} = useContext( DataViewsContext );\n\n\tconst ViewComponent = VIEW_LAYOUTS.find( ( v ) => v.type === view.type )\n\t\t?.component as ComponentType< ViewBaseProps< any > >;\n\n\treturn (\n\t\t<ViewComponent\n\t\t\tclassName={ className }\n\t\t\tactions={ actions }\n\t\t\tdata={ data }\n\t\t\tfields={ fields }\n\t\t\tgetItemId={ getItemId }\n\t\t\tgetItemLevel={ getItemLevel }\n\t\t\tisLoading={ isLoading }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tselection={ selection }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\tonClickItem={ onClickItem }\n\t\t\trenderItemLink={ renderItemLink }\n\t\t\tisItemClickable={ isItemClickable }\n\t\t\tview={ view }\n\t\t\tempty={ empty }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAAuD,IAAAK,WAAA,GAAAL,OAAA;AAfvD;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AASe,SAASM,eAAeA,CAAE;EAAEC;AAAgC,CAAC,EAAG;EAC9E,MAAM;IACLC,OAAO,GAAG,EAAE;IACZC,IAAI;IACJC,MAAM;IACNC,SAAS;IACTC,YAAY;IACZC,SAAS;IACTC,IAAI;IACJC,YAAY;IACZC,SAAS;IACTC,iBAAiB;IACjBC,eAAe;IACfC,WAAW;IACXC,eAAe;IACfC,cAAc;IACdC,KAAK,GAAG,IAAAC,QAAE,EAAE,YAAa;EAC1B,CAAC,GAAG,IAAAC,mBAAU,EAAEC,yBAAiB,CAAC;EAElC,MAAMC,aAAa,GAAGC,8BAAY,CAACC,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACC,IAAI,KAAKhB,IAAI,CAACgB,IAAK,CAAC,EACrEC,SAAkD;EAErD,oBACC,IAAA1B,WAAA,CAAA2B,GAAA,EAACN,aAAa;IACbnB,SAAS,EAAGA,SAAW;IACvBC,OAAO,EAAGA,OAAS;IACnBC,IAAI,EAAGA,IAAM;IACbC,MAAM,EAAGA,MAAQ;IACjBC,SAAS,EAAGA,SAAW;IACvBC,YAAY,EAAGA,YAAc;IAC7BC,SAAS,EAAGA,SAAW;IACvBE,YAAY,EAAGA,YAAc;IAC7BE,iBAAiB,EAAGA,iBAAmB;IACvCD,SAAS,EAAGA,SAAW;IACvBE,eAAe,EAAGA,eAAiB;IACnCC,WAAW,EAAGA,WAAa;IAC3BE,cAAc,EAAGA,cAAgB;IACjCD,eAAe,EAAGA,eAAiB;IACnCN,IAAI,EAAGA,IAAM;IACbQ,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_i18n","_dataviewsContext","_interopRequireDefault","_dataviewsLayouts","_jsxRuntime","DataViewsLayout","className","actions","data","fields","getItemId","getItemLevel","isLoading","view","onChangeView","selection","onChangeSelection","setOpenedFilter","onClickItem","isItemClickable","renderItemLink","defaultLayouts","empty","__","useContext","DataViewsContext","ViewComponent","VIEW_LAYOUTS","find","v","type","component","jsx"],"sources":["@wordpress/dataviews/src/components/dataviews-layout/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { VIEW_LAYOUTS } from '../../dataviews-layouts';\nimport type { ViewBaseProps } from '../../types';\n\ntype DataViewsLayoutProps = {\n\tclassName?: string;\n};\n\nexport default function DataViewsLayout( { className }: DataViewsLayoutProps ) {\n\tconst {\n\t\tactions = [],\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tgetItemLevel,\n\t\tisLoading,\n\t\tview,\n\t\tonChangeView,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tsetOpenedFilter,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tdefaultLayouts,\n\t\tempty = __( 'No results' ),\n\t} = useContext( DataViewsContext );\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type && defaultLayouts[ v.type ]\n\t)?.component as ComponentType< ViewBaseProps< any > >;\n\n\treturn (\n\t\t<ViewComponent\n\t\t\tclassName={ className }\n\t\t\tactions={ actions }\n\t\t\tdata={ data }\n\t\t\tfields={ fields }\n\t\t\tgetItemId={ getItemId }\n\t\t\tgetItemLevel={ getItemLevel }\n\t\t\tisLoading={ isLoading }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tselection={ selection }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\tonClickItem={ onClickItem }\n\t\t\trenderItemLink={ renderItemLink }\n\t\t\tisItemClickable={ isItemClickable }\n\t\t\tview={ view }\n\t\t\tempty={ empty }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAAuD,IAAAK,WAAA,GAAAL,OAAA;AAfvD;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AASe,SAASM,eAAeA,CAAE;EAAEC;AAAgC,CAAC,EAAG;EAC9E,MAAM;IACLC,OAAO,GAAG,EAAE;IACZC,IAAI;IACJC,MAAM;IACNC,SAAS;IACTC,YAAY;IACZC,SAAS;IACTC,IAAI;IACJC,YAAY;IACZC,SAAS;IACTC,iBAAiB;IACjBC,eAAe;IACfC,WAAW;IACXC,eAAe;IACfC,cAAc;IACdC,cAAc;IACdC,KAAK,GAAG,IAAAC,QAAE,EAAE,YAAa;EAC1B,CAAC,GAAG,IAAAC,mBAAU,EAAEC,yBAAiB,CAAC;EAElC,MAAMC,aAAa,GAAGC,8BAAY,CAACC,IAAI,CACpCC,CAAC,IAAMA,CAAC,CAACC,IAAI,KAAKjB,IAAI,CAACiB,IAAI,IAAIT,cAAc,CAAEQ,CAAC,CAACC,IAAI,CACxD,CAAC,EAAEC,SAAkD;EAErD,oBACC,IAAA3B,WAAA,CAAA4B,GAAA,EAACN,aAAa;IACbpB,SAAS,EAAGA,SAAW;IACvBC,OAAO,EAAGA,OAAS;IACnBC,IAAI,EAAGA,IAAM;IACbC,MAAM,EAAGA,MAAQ;IACjBC,SAAS,EAAGA,SAAW;IACvBC,YAAY,EAAGA,YAAc;IAC7BC,SAAS,EAAGA,SAAW;IACvBE,YAAY,EAAGA,YAAc;IAC7BE,iBAAiB,EAAGA,iBAAmB;IACvCD,SAAS,EAAGA,SAAW;IACvBE,eAAe,EAAGA,eAAiB;IACnCC,WAAW,EAAGA,WAAa;IAC3BE,cAAc,EAAGA,cAAgB;IACjCD,eAAe,EAAGA,eAAiB;IACnCN,IAAI,EAAGA,IAAM;IACbS,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DataViewsPickerFooter = DataViewsPickerFooter;
8
+ exports.useIsMultiselectPicker = useIsMultiselectPicker;
9
+ var _components = require("@wordpress/components");
10
+ var _data = require("@wordpress/data");
11
+ var _element = require("@wordpress/element");
12
+ var _i18n = require("@wordpress/i18n");
13
+ var _dataviewsPagination = _interopRequireDefault(require("../dataviews-pagination"));
14
+ var _dataviewsContext = _interopRequireDefault(require("../dataviews-context"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ /**
17
+ * WordPress dependencies
18
+ */
19
+
20
+ /**
21
+ * Internal dependencies
22
+ */
23
+
24
+ const EMPTY_ARRAY = [];
25
+ function useIsMultiselectPicker(actions) {
26
+ return (0, _element.useMemo)(() => {
27
+ return actions?.every(action => action.supportsBulk);
28
+ }, [actions]);
29
+ }
30
+ function BulkSelectionCheckbox({
31
+ selection,
32
+ selectedItems,
33
+ onChangeSelection,
34
+ data,
35
+ getItemId
36
+ }) {
37
+ const areAllSelected = selectedItems.length === data.length;
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.CheckboxControl, {
39
+ className: "dataviews-view-table-selection-checkbox",
40
+ __nextHasNoMarginBottom: true,
41
+ checked: areAllSelected,
42
+ indeterminate: !areAllSelected && !!selectedItems.length,
43
+ onChange: () => {
44
+ if (areAllSelected) {
45
+ // Deselect all - remove the current page from the total selection.
46
+ onChangeSelection(selection.filter(id => !data.some(item => id === getItemId(item))));
47
+ } else {
48
+ // Select all - merge the current page into the total selection.
49
+ const selectionSet = new Set([...selection, ...data.map(item => getItemId(item))]);
50
+ onChangeSelection(Array.from(selectionSet));
51
+ }
52
+ },
53
+ "aria-label": areAllSelected ? (0, _i18n.__)('Deselect all') : (0, _i18n.__)('Select all')
54
+ });
55
+ }
56
+ function ActionButtons({
57
+ actions,
58
+ items,
59
+ selection
60
+ }) {
61
+ const registry = (0, _data.useRegistry)();
62
+ const [actionInProgress, setActionInProgress] = (0, _element.useState)(null);
63
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
64
+ expanded: false,
65
+ spacing: 1,
66
+ children: actions.map(action => {
67
+ // Only support actions with callbacks for DataViewsPicker.
68
+ // This is because many use cases of the picker will be already within modals.
69
+ if (!('callback' in action)) {
70
+ return null;
71
+ }
72
+ const {
73
+ id,
74
+ label,
75
+ icon,
76
+ isPrimary,
77
+ isDestructive,
78
+ callback
79
+ } = action;
80
+ const _label = typeof label === 'string' ? label : label(items);
81
+ const variant = isPrimary ? 'primary' : 'tertiary';
82
+ const isInProgress = id === actionInProgress;
83
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
84
+ accessibleWhenDisabled: true,
85
+ icon: icon,
86
+ disabled: isInProgress || !selection?.length,
87
+ isBusy: isInProgress,
88
+ onClick: async () => {
89
+ setActionInProgress(id);
90
+ await callback(items, {
91
+ registry
92
+ });
93
+ setActionInProgress(null);
94
+ },
95
+ size: "compact",
96
+ isDestructive: isDestructive,
97
+ variant: variant,
98
+ children: _label
99
+ }, id);
100
+ })
101
+ });
102
+ }
103
+ function DataViewsPickerFooter() {
104
+ const {
105
+ data,
106
+ selection,
107
+ onChangeSelection,
108
+ getItemId,
109
+ actions = EMPTY_ARRAY
110
+ } = (0, _element.useContext)(_dataviewsContext.default);
111
+ const selectionCount = selection.length;
112
+ const isMultiselect = useIsMultiselectPicker(actions);
113
+ const message = selectionCount > 0 ? (0, _i18n.sprintf)(/* translators: %d: number of items. */
114
+ (0, _i18n._n)('%d Item selected', '%d Items selected', selectionCount), selectionCount) : (0, _i18n.sprintf)(/* translators: %d: number of items. */
115
+ (0, _i18n._n)('%d Item', '%d Items', data.length), data.length);
116
+ const selectedItems = (0, _element.useMemo)(() => data.filter(item => selection.includes(getItemId(item))), [selection, getItemId, data]);
117
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
118
+ expanded: false,
119
+ justify: "space-between",
120
+ className: "dataviews-footer",
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
122
+ className: "dataviews-picker-footer__bulk-selection",
123
+ expanded: false,
124
+ spacing: 3,
125
+ children: [isMultiselect && /*#__PURE__*/(0, _jsxRuntime.jsx)(BulkSelectionCheckbox, {
126
+ selection: selection,
127
+ selectedItems: selectedItems,
128
+ onChangeSelection: onChangeSelection,
129
+ data: data,
130
+ getItemId: getItemId
131
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
132
+ className: "dataviews-bulk-actions-footer__item-count",
133
+ children: message
134
+ })]
135
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviewsPagination.default, {}), Boolean(actions?.length) && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
136
+ className: "dataviews-picker-footer__actions",
137
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButtons, {
138
+ actions: actions,
139
+ items: selectedItems,
140
+ selection: selection
141
+ })
142
+ })]
143
+ });
144
+ }
145
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_data","_element","_i18n","_dataviewsPagination","_interopRequireDefault","_dataviewsContext","_jsxRuntime","EMPTY_ARRAY","useIsMultiselectPicker","actions","useMemo","every","action","supportsBulk","BulkSelectionCheckbox","selection","selectedItems","onChangeSelection","data","getItemId","areAllSelected","length","jsx","CheckboxControl","className","__nextHasNoMarginBottom","checked","indeterminate","onChange","filter","id","some","item","selectionSet","Set","map","Array","from","__","ActionButtons","items","registry","useRegistry","actionInProgress","setActionInProgress","useState","__experimentalHStack","expanded","spacing","children","label","icon","isPrimary","isDestructive","callback","_label","variant","isInProgress","Button","accessibleWhenDisabled","disabled","isBusy","onClick","size","DataViewsPickerFooter","useContext","DataViewsContext","selectionCount","isMultiselect","message","sprintf","_n","includes","jsxs","justify","default","Boolean"],"sources":["@wordpress/dataviews/src/components/dataviews-picker/footer.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCheckboxControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useRegistry } from '@wordpress/data';\nimport { useContext, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf, _n } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport DataViewsPagination from '../dataviews-pagination';\nimport DataViewsContext from '../dataviews-context';\nimport type { SetSelection } from '../../private-types';\nimport type { Action } from '../../types';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport function useIsMultiselectPicker< Item >(\n\tactions: Action< Item >[] | undefined\n) {\n\treturn useMemo( () => {\n\t\treturn actions?.every( ( action ) => action.supportsBulk );\n\t}, [ actions ] );\n}\n\nfunction BulkSelectionCheckbox< Item >( {\n\tselection,\n\tselectedItems,\n\tonChangeSelection,\n\tdata,\n\tgetItemId,\n}: {\n\tselection: string[];\n\tselectedItems: Item[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tgetItemId: ( item: Item ) => string;\n} ) {\n\tconst areAllSelected = selectedItems.length === data.length;\n\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\t// Deselect all - remove the current page from the total selection.\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter(\n\t\t\t\t\t\t\t( id ) =>\n\t\t\t\t\t\t\t\t! data.some(\n\t\t\t\t\t\t\t\t\t( item ) => id === getItemId( item )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// Select all - merge the current page into the total selection.\n\t\t\t\t\tconst selectionSet = new Set( [\n\t\t\t\t\t\t...selection,\n\t\t\t\t\t\t...data.map( ( item ) => getItemId( item ) ),\n\t\t\t\t\t] );\n\t\t\t\t\tonChangeSelection( Array.from( selectionSet ) );\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction ActionButtons< Item >( {\n\tactions,\n\titems,\n\tselection,\n}: {\n\tactions: Action< Item >[];\n\titems: Item[];\n\tselection: string[];\n} ) {\n\tconst registry = useRegistry();\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\n\treturn (\n\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\t// Only support actions with callbacks for DataViewsPicker.\n\t\t\t\t// This is because many use cases of the picker will be already within modals.\n\t\t\t\tif ( ! ( 'callback' in action ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst { id, label, icon, isPrimary, isDestructive, callback } =\n\t\t\t\t\taction;\n\n\t\t\t\tconst _label =\n\t\t\t\t\ttypeof label === 'string' ? label : label( items );\n\t\t\t\tconst variant = isPrimary ? 'primary' : 'tertiary';\n\t\t\t\tconst isInProgress = id === actionInProgress;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tdisabled={ isInProgress || ! selection?.length }\n\t\t\t\t\t\tisBusy={ isInProgress }\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetActionInProgress( id );\n\t\t\t\t\t\t\tawait callback( items, {\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tsetActionInProgress( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tisDestructive={ isDestructive }\n\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ _label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</HStack>\n\t);\n}\n\nexport function DataViewsPickerFooter() {\n\tconst {\n\t\tdata,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t\tactions = EMPTY_ARRAY,\n\t} = useContext( DataViewsContext );\n\n\tconst selectionCount = selection.length;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\tconst message =\n\t\tselectionCount > 0\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d Item selected',\n\t\t\t\t\t\t'%d Items selected',\n\t\t\t\t\t\tselectionCount\n\t\t\t\t\t),\n\t\t\t\t\tselectionCount\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n( '%d Item', '%d Items', data.length ),\n\t\t\t\t\tdata.length\n\t\t\t );\n\n\tconst selectedItems = useMemo(\n\t\t() =>\n\t\t\tdata.filter( ( item ) => selection.includes( getItemId( item ) ) ),\n\t\t[ selection, getItemId, data ]\n\t);\n\n\treturn (\n\t\t<HStack\n\t\t\texpanded={ false }\n\t\t\tjustify=\"space-between\"\n\t\t\tclassName=\"dataviews-footer\"\n\t\t>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-picker-footer__bulk-selection\"\n\t\t\t\texpanded={ false }\n\t\t\t\tspacing={ 3 }\n\t\t\t>\n\t\t\t\t{ isMultiselect && (\n\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<span className=\"dataviews-bulk-actions-footer__item-count\">\n\t\t\t\t\t{ message }\n\t\t\t\t</span>\n\t\t\t</HStack>\n\t\t\t<DataViewsPagination />\n\t\t\t{ Boolean( actions?.length ) && (\n\t\t\t\t<div className=\"dataviews-picker-footer__actions\">\n\t\t\t\t\t<ActionButtons\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titems={ selectedItems }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}