@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.
- package/CHANGELOG.md +8 -4
- package/README.md +76 -0
- package/build/components/dataviews/index.js +11 -1
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-context/index.js.map +1 -1
- package/build/components/dataviews-layout/index.js +2 -1
- package/build/components/dataviews-layout/index.js.map +1 -1
- package/build/components/dataviews-picker/footer.js +145 -0
- package/build/components/dataviews-picker/footer.js.map +1 -0
- package/build/components/dataviews-picker/index.js +201 -0
- package/build/components/dataviews-picker/index.js.map +1 -0
- package/build/components/dataviews-selection-checkbox/index.js +4 -2
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +1 -0
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/constants.js +4 -1
- package/build/constants.js.map +1 -1
- package/build/dataform-controls/email.js +8 -49
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-controls/index.js +2 -0
- package/build/dataform-controls/index.js.map +1 -1
- package/build/dataform-controls/telephone.js +28 -0
- package/build/dataform-controls/telephone.js.map +1 -0
- package/build/dataform-controls/text.js +7 -48
- package/build/dataform-controls/text.js.map +1 -1
- package/build/dataform-controls/utils/validated-text.js +68 -0
- package/build/dataform-controls/utils/validated-text.js.map +1 -0
- package/build/dataviews-layouts/grid/index.js +5 -8
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/index.js +9 -1
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/picker-grid/index.js +357 -0
- package/build/dataviews-layouts/picker-grid/index.js.map +1 -0
- package/build/dataviews-layouts/utils/grid-items.js +37 -0
- package/build/dataviews-layouts/utils/grid-items.js.map +1 -0
- package/build/dataviews-layouts/utils/preview-size-picker.js +81 -0
- package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
- package/build/field-types/index.js +4 -0
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/telephone.js +57 -0
- package/build/field-types/telephone.js.map +1 -0
- package/build/types.js.map +1 -1
- package/build-module/components/dataviews/index.js +11 -1
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-context/index.js.map +1 -1
- package/build-module/components/dataviews-layout/index.js +2 -1
- package/build-module/components/dataviews-layout/index.js.map +1 -1
- package/build-module/components/dataviews-picker/footer.js +136 -0
- package/build-module/components/dataviews-picker/footer.js.map +1 -0
- package/build-module/components/dataviews-picker/index.js +191 -0
- package/build-module/components/dataviews-picker/index.js.map +1 -0
- package/build-module/components/dataviews-selection-checkbox/index.js +4 -2
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +1 -0
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/constants.js +3 -0
- package/build-module/constants.js.map +1 -1
- package/build-module/dataform-controls/email.js +7 -49
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-controls/index.js +2 -0
- package/build-module/dataform-controls/index.js.map +1 -1
- package/build-module/dataform-controls/telephone.js +21 -0
- package/build-module/dataform-controls/telephone.js.map +1 -0
- package/build-module/dataform-controls/text.js +6 -48
- package/build-module/dataform-controls/text.js.map +1 -1
- package/build-module/dataform-controls/utils/validated-text.js +62 -0
- package/build-module/dataform-controls/utils/validated-text.js.map +1 -0
- package/build-module/dataviews-layouts/grid/index.js +5 -8
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +10 -2
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/picker-grid/index.js +348 -0
- package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -0
- package/build-module/dataviews-layouts/utils/grid-items.js +29 -0
- package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -0
- package/build-module/dataviews-layouts/utils/preview-size-picker.js +73 -0
- package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
- package/build-module/field-types/index.js +4 -0
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/telephone.js +51 -0
- package/build-module/field-types/telephone.js.map +1 -0
- package/build-module/types.js.map +1 -1
- package/build-style/style-rtl.css +194 -11
- package/build-style/style.css +194 -11
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews/index.d.ts +1 -1
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +1 -0
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
- package/build-types/components/dataviews-picker/footer.d.ts +4 -0
- package/build-types/components/dataviews-picker/footer.d.ts.map +1 -0
- package/build-types/components/dataviews-picker/index.d.ts +55 -0
- package/build-types/components/dataviews-picker/index.d.ts.map +1 -0
- package/build-types/components/dataviews-picker/stories/index.story.d.ts +42 -0
- package/build-types/components/dataviews-picker/stories/index.story.d.ts.map +1 -0
- package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -1
- package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/constants.d.ts +1 -0
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/email.d.ts.map +1 -1
- package/build-types/dataform-controls/index.d.ts.map +1 -1
- package/build-types/dataform-controls/telephone.d.ts +6 -0
- package/build-types/dataform-controls/telephone.d.ts.map +1 -0
- package/build-types/dataform-controls/text.d.ts.map +1 -1
- package/build-types/dataform-controls/utils/validated-text.d.ts +12 -0
- package/build-types/dataform-controls/utils/validated-text.d.ts.map +1 -0
- package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +12 -1
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/picker-grid/index.d.ts +4 -0
- package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/grid-items.d.ts +5 -0
- package/build-types/dataviews-layouts/utils/grid-items.d.ts.map +1 -0
- package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts +2 -0
- package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/stories/index.story.d.ts +5 -1
- package/build-types/field-types/stories/index.story.d.ts.map +1 -1
- package/build-types/field-types/telephone.d.ts +20 -0
- package/build-types/field-types/telephone.d.ts.map +1 -0
- package/build-types/test/dataviews-picker.d.ts +2 -0
- package/build-types/test/dataviews-picker.d.ts.map +1 -0
- package/build-types/types.d.ts +24 -2
- package/build-types/types.d.ts.map +1 -1
- package/build-wp/index.js +4042 -3569
- package/package.json +15 -15
- package/src/components/dataform/stories/index.story.tsx +26 -1
- package/src/components/dataviews/index.tsx +25 -1
- package/src/components/dataviews/style.scss +4 -2
- package/src/components/dataviews-context/index.ts +1 -0
- package/src/components/dataviews-layout/index.tsx +4 -2
- package/src/components/dataviews-picker/footer.tsx +207 -0
- package/src/components/dataviews-picker/index.tsx +284 -0
- package/src/components/dataviews-picker/stories/index.story.tsx +251 -0
- package/src/components/dataviews-picker/style.scss +10 -0
- package/src/components/dataviews-selection-checkbox/index.tsx +3 -0
- package/src/components/dataviews-view-config/index.tsx +1 -0
- package/src/constants.ts +3 -0
- package/src/dataform-controls/email.tsx +3 -57
- package/src/dataform-controls/index.tsx +2 -0
- package/src/dataform-controls/telephone.tsx +18 -0
- package/src/dataform-controls/text.tsx +2 -57
- package/src/dataform-controls/utils/validated-text.tsx +79 -0
- package/src/dataviews-layouts/grid/index.tsx +7 -14
- package/src/dataviews-layouts/grid/style.scss +2 -20
- package/src/dataviews-layouts/index.ts +16 -2
- package/src/dataviews-layouts/picker-grid/index.tsx +490 -0
- package/src/dataviews-layouts/picker-grid/style.scss +171 -0
- package/src/dataviews-layouts/utils/grid-items.scss +21 -0
- package/src/dataviews-layouts/utils/grid-items.tsx +35 -0
- package/src/dataviews-layouts/utils/preview-size-picker.tsx +87 -0
- package/src/field-types/index.tsx +5 -0
- package/src/field-types/stories/index.story.tsx +44 -0
- package/src/field-types/telephone.tsx +71 -0
- package/src/style.scss +2 -0
- package/src/test/dataviews-picker.tsx +478 -0
- package/src/types.ts +40 -1
- 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;;
|
|
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(
|
|
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":[]}
|