@wordpress/dataviews 1.1.0 → 1.2.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 (124) hide show
  1. package/CHANGELOG.md +11 -5
  2. package/build/bulk-actions-toolbar.js +182 -0
  3. package/build/bulk-actions-toolbar.js.map +1 -0
  4. package/build/bulk-actions.js +8 -8
  5. package/build/bulk-actions.js.map +1 -1
  6. package/build/dataviews.js +11 -4
  7. package/build/dataviews.js.map +1 -1
  8. package/build/filter-and-sort-data-view.js +2 -2
  9. package/build/filter-and-sort-data-view.js.map +1 -1
  10. package/build/filter-summary.js +3 -3
  11. package/build/filter-summary.js.map +1 -1
  12. package/build/item-actions.js +41 -22
  13. package/build/item-actions.js.map +1 -1
  14. package/build/lock-unlock.js.map +1 -1
  15. package/build/normalize-fields.js.map +1 -1
  16. package/build/pagination.js +13 -7
  17. package/build/pagination.js.map +1 -1
  18. package/build/single-selection-checkbox.js +4 -0
  19. package/build/single-selection-checkbox.js.map +1 -1
  20. package/build/types.js.map +1 -1
  21. package/build/view-grid.js +9 -10
  22. package/build/view-grid.js.map +1 -1
  23. package/build/view-list.js +134 -21
  24. package/build/view-list.js.map +1 -1
  25. package/build/view-table.js +9 -9
  26. package/build/view-table.js.map +1 -1
  27. package/build-module/bulk-actions-toolbar.js +175 -0
  28. package/build-module/bulk-actions-toolbar.js.map +1 -0
  29. package/build-module/bulk-actions.js +8 -8
  30. package/build-module/bulk-actions.js.map +1 -1
  31. package/build-module/dataviews.js +11 -4
  32. package/build-module/dataviews.js.map +1 -1
  33. package/build-module/filter-and-sort-data-view.js +2 -2
  34. package/build-module/filter-and-sort-data-view.js.map +1 -1
  35. package/build-module/filter-summary.js +3 -3
  36. package/build-module/filter-summary.js.map +1 -1
  37. package/build-module/item-actions.js +40 -24
  38. package/build-module/item-actions.js.map +1 -1
  39. package/build-module/lock-unlock.js.map +1 -1
  40. package/build-module/normalize-fields.js.map +1 -1
  41. package/build-module/pagination.js +14 -7
  42. package/build-module/pagination.js.map +1 -1
  43. package/build-module/single-selection-checkbox.js +5 -0
  44. package/build-module/single-selection-checkbox.js.map +1 -1
  45. package/build-module/types.js.map +1 -1
  46. package/build-module/view-grid.js +9 -10
  47. package/build-module/view-grid.js.map +1 -1
  48. package/build-module/view-list.js +135 -23
  49. package/build-module/view-list.js.map +1 -1
  50. package/build-module/view-table.js +9 -9
  51. package/build-module/view-table.js.map +1 -1
  52. package/build-style/style-rtl.css +62 -27
  53. package/build-style/style.css +62 -27
  54. package/build-types/add-filter.d.ts +8 -0
  55. package/build-types/add-filter.d.ts.map +1 -0
  56. package/build-types/bulk-actions-toolbar.d.ts +8 -0
  57. package/build-types/bulk-actions-toolbar.d.ts.map +1 -0
  58. package/build-types/bulk-actions.d.ts +14 -0
  59. package/build-types/bulk-actions.d.ts.map +1 -0
  60. package/build-types/dataviews.d.ts +15 -0
  61. package/build-types/dataviews.d.ts.map +1 -0
  62. package/build-types/dropdown-menu-helper.d.ts +6 -0
  63. package/build-types/dropdown-menu-helper.d.ts.map +1 -0
  64. package/build-types/filter-and-sort-data-view.d.ts +3 -3
  65. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  66. package/build-types/filter-summary.d.ts +6 -0
  67. package/build-types/filter-summary.d.ts.map +1 -0
  68. package/build-types/filters.d.ts +3 -0
  69. package/build-types/filters.d.ts.map +1 -0
  70. package/build-types/index.d.ts +4 -0
  71. package/build-types/index.d.ts.map +1 -0
  72. package/build-types/item-actions.d.ts +37 -0
  73. package/build-types/item-actions.d.ts.map +1 -0
  74. package/build-types/layouts.d.ts +20 -0
  75. package/build-types/layouts.d.ts.map +1 -0
  76. package/build-types/lock-unlock.d.ts +2 -0
  77. package/build-types/lock-unlock.d.ts.map +1 -0
  78. package/build-types/normalize-fields.d.ts +2 -2
  79. package/build-types/normalize-fields.d.ts.map +1 -1
  80. package/build-types/pagination.d.ts +16 -0
  81. package/build-types/pagination.d.ts.map +1 -0
  82. package/build-types/reset-filters.d.ts +6 -0
  83. package/build-types/reset-filters.d.ts.map +1 -0
  84. package/build-types/search-widget.d.ts +2 -0
  85. package/build-types/search-widget.d.ts.map +1 -0
  86. package/build-types/search.d.ts +3 -0
  87. package/build-types/search.d.ts.map +1 -0
  88. package/build-types/single-selection-checkbox.d.ts +17 -0
  89. package/build-types/single-selection-checkbox.d.ts.map +1 -0
  90. package/build-types/stories/fixtures.d.ts +114 -0
  91. package/build-types/stories/fixtures.d.ts.map +1 -0
  92. package/build-types/stories/index.story.d.ts +15 -0
  93. package/build-types/stories/index.story.d.ts.map +1 -0
  94. package/build-types/types.d.ts +152 -20
  95. package/build-types/types.d.ts.map +1 -1
  96. package/build-types/utils.d.ts +2 -0
  97. package/build-types/utils.d.ts.map +1 -0
  98. package/build-types/view-actions.d.ts +3 -0
  99. package/build-types/view-actions.d.ts.map +1 -0
  100. package/build-types/view-grid.d.ts +15 -0
  101. package/build-types/view-grid.d.ts.map +1 -0
  102. package/build-types/view-list.d.ts +16 -0
  103. package/build-types/view-list.d.ts.map +1 -0
  104. package/build-types/view-table.d.ts +14 -0
  105. package/build-types/view-table.d.ts.map +1 -0
  106. package/package.json +12 -12
  107. package/src/bulk-actions-toolbar.js +244 -0
  108. package/src/{bulk-actions.js → bulk-actions.tsx} +73 -17
  109. package/src/dataviews.js +14 -3
  110. package/src/filter-and-sort-data-view.ts +13 -8
  111. package/src/filter-summary.js +3 -3
  112. package/src/{item-actions.js → item-actions.tsx} +112 -28
  113. package/src/normalize-fields.ts +4 -2
  114. package/src/{pagination.js → pagination.tsx} +28 -7
  115. package/src/{single-selection-checkbox.js → single-selection-checkbox.tsx} +17 -2
  116. package/src/style.scss +77 -28
  117. package/src/types.ts +190 -20
  118. package/src/{view-grid.js → view-grid.tsx} +45 -16
  119. package/src/view-list.tsx +421 -0
  120. package/src/view-table.js +8 -8
  121. package/tsconfig.json +4 -2
  122. package/tsconfig.tsbuildinfo +1 -1
  123. package/src/view-list.js +0 -207
  124. /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,30 +2,36 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.2.0 (2024-05-16)
6
+
7
+ ### Internal
8
+
9
+ - Replaced `classnames` package with the faster and smaller `clsx` package ([#61138](https://github.com/WordPress/gutenberg/pull/61138)).
10
+
5
11
  ## 1.1.0 (2024-05-02)
6
12
 
7
13
  ## 1.0.0 (2024-04-19)
8
14
 
9
15
  ### Breaking changes
10
16
 
11
- - Removed the `onDetailsChange` event only available for the list layout. We are looking into adding actions to the list layout, including primary ones.
17
+ - Removed the `onDetailsChange` event only available for the list layout. We are looking into adding actions to the list layout, including primary ones.
12
18
 
13
19
  ## 0.9.0 (2024-04-03)
14
20
 
15
21
  ### Enhancement
16
22
 
17
- - The `enumeration` type has been removed and we'll introduce new field types soon. The existing filters will still work as before given they checked for field.elements, which is still a condition filters should have.
23
+ - The `enumeration` type has been removed and we'll introduce new field types soon. The existing filters will still work as before given they checked for field.elements, which is still a condition filters should have.
18
24
 
19
25
  ## 0.8.0 (2024-03-21)
20
26
 
21
27
  ### Enhancement
22
28
 
23
- - Two new operators have been added: `isAll` and `isNotAll`. These are meant to represent `AND` operations. For example, `Category is all: Book, Review, Science Fiction` would represent all items that have all three categories selected.
24
- - DataViews now supports multi-selection. A new set of filter operators has been introduced: `is`, `isNot`, `isAny`, `isNone`. Single-selection operators are `is` and `isNot`, and multi-selection operators are `isAny` and `isNone`. If no operators are declared for a filter, it will support multi-selection. Additionally, the old filter operators `in` and `notIn` operators have been deprecated and will work as `is` and `isNot` respectively. Please, migrate to the new operators as they'll be removed soon.
29
+ - Two new operators have been added: `isAll` and `isNotAll`. These are meant to represent `AND` operations. For example, `Category is all: Book, Review, Science Fiction` would represent all items that have all three categories selected.
30
+ - DataViews now supports multi-selection. A new set of filter operators has been introduced: `is`, `isNot`, `isAny`, `isNone`. Single-selection operators are `is` and `isNot`, and multi-selection operators are `isAny` and `isNone`. If no operators are declared for a filter, it will support multi-selection. Additionally, the old filter operators `in` and `notIn` operators have been deprecated and will work as `is` and `isNot` respectively. Please, migrate to the new operators as they'll be removed soon.
25
31
 
26
32
  ### Breaking changes
27
33
 
28
- - Removed the `getPaginationResults` and `sortByTextFields` utils and replaced them with a unique `filterSortAndPaginate` function.
34
+ - Removed the `getPaginationResults` and `sortByTextFields` utils and replaced them with a unique `filterSortAndPaginate` function.
29
35
 
30
36
  ## 0.7.0 (2024-03-06)
31
37
 
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BulkActionsToolbar;
7
+ var _react = require("react");
8
+ var _components = require("@wordpress/components");
9
+ var _element = require("@wordpress/element");
10
+ var _i18n = require("@wordpress/i18n");
11
+ var _icons = require("@wordpress/icons");
12
+ var _compose = require("@wordpress/compose");
13
+ var _itemActions = require("./item-actions");
14
+ /**
15
+ * WordPress dependencies
16
+ */
17
+
18
+ /**
19
+ * Internal dependencies
20
+ */
21
+
22
+ const SNACKBAR_VARIANTS = {
23
+ init: {
24
+ bottom: -48
25
+ },
26
+ open: {
27
+ bottom: 24,
28
+ transition: {
29
+ bottom: {
30
+ type: 'tween',
31
+ duration: 0.2,
32
+ ease: [0, 0, 0.2, 1]
33
+ }
34
+ }
35
+ },
36
+ exit: {
37
+ opacity: 0,
38
+ bottom: 24,
39
+ transition: {
40
+ opacity: {
41
+ type: 'tween',
42
+ duration: 0.2,
43
+ ease: [0, 0, 0.2, 1]
44
+ }
45
+ }
46
+ }
47
+ };
48
+ function ActionTrigger({
49
+ action,
50
+ onClick,
51
+ isBusy
52
+ }) {
53
+ return (0, _react.createElement)(_components.ToolbarButton, {
54
+ disabled: isBusy,
55
+ label: action.label,
56
+ icon: action.icon,
57
+ isDestructive: action.isDestructive,
58
+ size: "compact",
59
+ onClick: onClick,
60
+ isBusy: isBusy,
61
+ __experimentalIsFocusable: true,
62
+ tooltipPosition: "top"
63
+ });
64
+ }
65
+ const EMPTY_ARRAY = [];
66
+ function ActionButton({
67
+ action,
68
+ selectedItems,
69
+ actionInProgress,
70
+ setActionInProgress
71
+ }) {
72
+ const selectedEligibleItems = (0, _element.useMemo)(() => {
73
+ return selectedItems.filter(item => {
74
+ return action.isEligible(item);
75
+ });
76
+ }, [action, selectedItems]);
77
+ if (!!action.RenderModal) {
78
+ return (0, _react.createElement)(_itemActions.ActionWithModal, {
79
+ key: action.id,
80
+ action: action,
81
+ items: selectedEligibleItems,
82
+ ActionTrigger: ActionTrigger,
83
+ onActionStart: () => {
84
+ setActionInProgress(action.id);
85
+ },
86
+ onActionPerformed: () => {
87
+ setActionInProgress(null);
88
+ }
89
+ });
90
+ }
91
+ return (0, _react.createElement)(ActionTrigger, {
92
+ key: action.id,
93
+ action: action,
94
+ items: selectedItems,
95
+ onClick: () => {
96
+ setActionInProgress(action.id);
97
+ action.callback(selectedItems, () => {
98
+ setActionInProgress(action.id);
99
+ });
100
+ },
101
+ isBusy: actionInProgress === action.id
102
+ });
103
+ }
104
+ function renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, setSelection) {
105
+ return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ToolbarGroup, null, (0, _react.createElement)("div", {
106
+ className: "dataviews-bulk-actions__selection-count"
107
+ }, selection.length === 1 ? (0, _i18n.__)('1 item selected') : (0, _i18n.sprintf)(
108
+ // translators: %s: Total number of selected items.
109
+ (0, _i18n._n)('%s item selected', '%s items selected', selection.length), selection.length))), (0, _react.createElement)(_components.ToolbarGroup, null, actionsToShow.map(action => {
110
+ return (0, _react.createElement)(ActionButton, {
111
+ key: action.id,
112
+ action: action,
113
+ selectedItems: selectedItems,
114
+ actionInProgress: actionInProgress,
115
+ setActionInProgress: setActionInProgress
116
+ });
117
+ })), (0, _react.createElement)(_components.ToolbarGroup, null, (0, _react.createElement)(_components.ToolbarButton, {
118
+ icon: _icons.closeSmall,
119
+ showTooltip: true,
120
+ tooltipPosition: "top",
121
+ label: (0, _i18n.__)('Cancel'),
122
+ disabled: !!actionInProgress,
123
+ onClick: () => {
124
+ setSelection(EMPTY_ARRAY);
125
+ }
126
+ })));
127
+ }
128
+ function ToolbarContent({
129
+ selection,
130
+ actionsToShow,
131
+ selectedItems,
132
+ setSelection
133
+ }) {
134
+ const [actionInProgress, setActionInProgress] = (0, _element.useState)(null);
135
+ const buttons = (0, _element.useRef)(null);
136
+ if (!actionInProgress) {
137
+ if (buttons.current) {
138
+ buttons.current = null;
139
+ }
140
+ return renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, setSelection);
141
+ } else if (!buttons.current) {
142
+ buttons.current = renderToolbarContent(selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, setSelection);
143
+ }
144
+ return buttons.current;
145
+ }
146
+ function BulkActionsToolbar({
147
+ data,
148
+ selection,
149
+ actions = EMPTY_ARRAY,
150
+ setSelection,
151
+ getItemId
152
+ }) {
153
+ const isReducedMotion = (0, _compose.useReducedMotion)();
154
+ const selectedItems = (0, _element.useMemo)(() => {
155
+ return data.filter(item => selection.includes(getItemId(item)));
156
+ }, [selection, data, getItemId]);
157
+ const actionsToShow = (0, _element.useMemo)(() => actions.filter(action => {
158
+ return action.supportsBulk && action.icon && selectedItems.some(item => action.isEligible(item));
159
+ }), [actions, selectedItems]);
160
+ if (selection && selection.length === 0 || actionsToShow.length === 0) {
161
+ return null;
162
+ }
163
+ return (0, _react.createElement)(_components.__unstableAnimatePresence, null, (0, _react.createElement)(_components.__unstableMotion.div, {
164
+ layout: !isReducedMotion // See https://www.framer.com/docs/animation/#layout-animations
165
+ ,
166
+ initial: 'init',
167
+ animate: 'open',
168
+ exit: 'exit',
169
+ variants: isReducedMotion ? undefined : SNACKBAR_VARIANTS,
170
+ className: "dataviews-bulk-actions"
171
+ }, (0, _react.createElement)(_components.Toolbar, {
172
+ label: (0, _i18n.__)('Bulk actions')
173
+ }, (0, _react.createElement)("div", {
174
+ className: "dataviews-bulk-actions-toolbar-wrapper"
175
+ }, (0, _react.createElement)(ToolbarContent, {
176
+ selection: selection,
177
+ actionsToShow: actionsToShow,
178
+ selectedItems: selectedItems,
179
+ setSelection: setSelection
180
+ })))));
181
+ }
182
+ //# sourceMappingURL=bulk-actions-toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_element","_i18n","_icons","_compose","_itemActions","SNACKBAR_VARIANTS","init","bottom","open","transition","type","duration","ease","exit","opacity","ActionTrigger","action","onClick","isBusy","_react","createElement","ToolbarButton","disabled","label","icon","isDestructive","size","__experimentalIsFocusable","tooltipPosition","EMPTY_ARRAY","ActionButton","selectedItems","actionInProgress","setActionInProgress","selectedEligibleItems","useMemo","filter","item","isEligible","RenderModal","ActionWithModal","key","id","items","onActionStart","onActionPerformed","callback","renderToolbarContent","selection","actionsToShow","setSelection","Fragment","ToolbarGroup","className","length","__","sprintf","_n","map","closeSmall","showTooltip","ToolbarContent","useState","buttons","useRef","current","BulkActionsToolbar","data","actions","getItemId","isReducedMotion","useReducedMotion","includes","supportsBulk","some","__unstableAnimatePresence","__unstableMotion","div","layout","initial","animate","variants","undefined","Toolbar"],"sources":["@wordpress/dataviews/src/bulk-actions-toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tToolbarButton,\n\tToolbar,\n\tToolbarGroup,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useMemo, useState, useRef } from '@wordpress/element';\nimport { _n, sprintf, __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ActionWithModal } from './item-actions';\n\nconst SNACKBAR_VARIANTS = {\n\tinit: {\n\t\tbottom: -48,\n\t},\n\topen: {\n\t\tbottom: 24,\n\t\ttransition: {\n\t\t\tbottom: { type: 'tween', duration: 0.2, ease: [ 0, 0, 0.2, 1 ] },\n\t\t},\n\t},\n\texit: {\n\t\topacity: 0,\n\t\tbottom: 24,\n\t\ttransition: {\n\t\t\topacity: { type: 'tween', duration: 0.2, ease: [ 0, 0, 0.2, 1 ] },\n\t\t},\n\t},\n};\n\nfunction ActionTrigger( { action, onClick, isBusy } ) {\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled={ isBusy }\n\t\t\tlabel={ action.label }\n\t\t\ticon={ action.icon }\n\t\t\tisDestructive={ action.isDestructive }\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t\tisBusy={ isBusy }\n\t\t\t__experimentalIsFocusable\n\t\t\ttooltipPosition=\"top\"\n\t\t/>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\n\nfunction ActionButton( {\n\taction,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n} ) {\n\tconst selectedEligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => {\n\t\t\treturn action.isEligible( item );\n\t\t} );\n\t}, [ action, selectedItems ] );\n\tif ( !! action.RenderModal ) {\n\t\treturn (\n\t\t\t<ActionWithModal\n\t\t\t\tkey={ action.id }\n\t\t\t\taction={ action }\n\t\t\t\titems={ selectedEligibleItems }\n\t\t\t\tActionTrigger={ ActionTrigger }\n\t\t\t\tonActionStart={ () => {\n\t\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\t} }\n\t\t\t\tonActionPerformed={ () => {\n\t\t\t\t\tsetActionInProgress( null );\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<ActionTrigger\n\t\t\tkey={ action.id }\n\t\t\taction={ action }\n\t\t\titems={ selectedItems }\n\t\t\tonClick={ () => {\n\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\taction.callback( selectedItems, () => {\n\t\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tisBusy={ actionInProgress === action.id }\n\t\t/>\n\t);\n}\n\nfunction renderToolbarContent(\n\tselection,\n\tactionsToShow,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n\tsetSelection\n) {\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<div className=\"dataviews-bulk-actions__selection-count\">\n\t\t\t\t\t{ selection.length === 1\n\t\t\t\t\t\t? __( '1 item selected' )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Total number of selected items.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'%s item selected',\n\t\t\t\t\t\t\t\t\t'%s items selected',\n\t\t\t\t\t\t\t\t\tselection.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tselection.length\n\t\t\t\t\t\t ) }\n\t\t\t\t</div>\n\t\t\t</ToolbarGroup>\n\t\t\t<ToolbarGroup>\n\t\t\t\t{ actionsToShow.map( ( action ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\t\tactionInProgress={ actionInProgress }\n\t\t\t\t\t\t\tsetActionInProgress={ setActionInProgress }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ToolbarGroup>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\tshowTooltip\n\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\tlabel={ __( 'Cancel' ) }\n\t\t\t\t\tdisabled={ !! actionInProgress }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetSelection( EMPTY_ARRAY );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t</>\n\t);\n}\n\nfunction ToolbarContent( {\n\tselection,\n\tactionsToShow,\n\tselectedItems,\n\tsetSelection,\n} ) {\n\tconst [ actionInProgress, setActionInProgress ] = useState( null );\n\tconst buttons = useRef( null );\n\tif ( ! actionInProgress ) {\n\t\tif ( buttons.current ) {\n\t\t\tbuttons.current = null;\n\t\t}\n\t\treturn renderToolbarContent(\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tsetSelection\n\t\t);\n\t} else if ( ! buttons.current ) {\n\t\tbuttons.current = renderToolbarContent(\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tsetSelection\n\t\t);\n\t}\n\treturn buttons.current;\n}\n\nexport default function BulkActionsToolbar( {\n\tdata,\n\tselection,\n\tactions = EMPTY_ARRAY,\n\tsetSelection,\n\tgetItemId,\n} ) {\n\tconst isReducedMotion = useReducedMotion();\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter( ( item ) =>\n\t\t\tselection.includes( getItemId( item ) )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst actionsToShow = useMemo(\n\t\t() =>\n\t\t\tactions.filter( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\taction.icon &&\n\t\t\t\t\tselectedItems.some( ( item ) => action.isEligible( item ) )\n\t\t\t\t);\n\t\t\t} ),\n\t\t[ actions, selectedItems ]\n\t);\n\n\tif (\n\t\t( selection && selection.length === 0 ) ||\n\t\tactionsToShow.length === 0\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t<motion.div\n\t\t\t\tlayout={ ! isReducedMotion } // See https://www.framer.com/docs/animation/#layout-animations\n\t\t\t\tinitial={ 'init' }\n\t\t\t\tanimate={ 'open' }\n\t\t\t\texit={ 'exit' }\n\t\t\t\tvariants={ isReducedMotion ? undefined : SNACKBAR_VARIANTS }\n\t\t\t\tclassName=\"dataviews-bulk-actions\"\n\t\t\t>\n\t\t\t\t<Toolbar label={ __( 'Bulk actions' ) }>\n\t\t\t\t\t<div className=\"dataviews-bulk-actions-toolbar-wrapper\">\n\t\t\t\t\t\t<ToolbarContent\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tactionsToShow={ actionsToShow }\n\t\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\t\tsetSelection={ setSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Toolbar>\n\t\t\t</motion.div>\n\t\t</AnimatePresence>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -28,7 +28,7 @@ const {
28
28
  function useHasAPossibleBulkAction(actions, item) {
29
29
  return (0, _element.useMemo)(() => {
30
30
  return actions.some(action => {
31
- return action.supportsBulk && action.isEligible(item);
31
+ return action.supportsBulk && (!action.isEligible || action.isEligible(item));
32
32
  });
33
33
  }, [actions, item]);
34
34
  }
@@ -36,7 +36,7 @@ function useSomeItemHasAPossibleBulkAction(actions, data) {
36
36
  return (0, _element.useMemo)(() => {
37
37
  return data.some(item => {
38
38
  return actions.some(action => {
39
- return action.supportsBulk && action.isEligible(item);
39
+ return action.supportsBulk && (!action.isEligible || action.isEligible(item));
40
40
  });
41
41
  });
42
42
  }, [actions, data]);
@@ -48,7 +48,7 @@ function ActionWithModal({
48
48
  onMenuOpenChange
49
49
  }) {
50
50
  const eligibleItems = (0, _element.useMemo)(() => {
51
- return selectedItems.filter(item => action.isEligible(item));
51
+ return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
52
52
  }, [action, selectedItems]);
53
53
  const {
54
54
  RenderModal,
@@ -58,14 +58,14 @@ function ActionWithModal({
58
58
  setActionWithModal(undefined);
59
59
  }, [setActionWithModal]);
60
60
  return (0, _react.createElement)(_components.Modal, {
61
- title: !hideModalHeader && action.label,
61
+ title: !hideModalHeader ? action.label : undefined,
62
62
  __experimentalHideHeader: !!hideModalHeader,
63
63
  onRequestClose: onCloseModal,
64
64
  overlayClassName: "dataviews-action-modal"
65
65
  }, (0, _react.createElement)(RenderModal, {
66
66
  items: eligibleItems,
67
67
  closeModal: onCloseModal,
68
- onPerform: () => onMenuOpenChange(false)
68
+ onActionPerformed: () => onMenuOpenChange(false)
69
69
  }));
70
70
  }
71
71
  function BulkActionItem({
@@ -74,9 +74,9 @@ function BulkActionItem({
74
74
  setActionWithModal
75
75
  }) {
76
76
  const eligibleItems = (0, _element.useMemo)(() => {
77
- return selectedItems.filter(item => action.isEligible(item));
77
+ return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
78
78
  }, [action, selectedItems]);
79
- const shouldShowModal = !!action.RenderModal;
79
+ const shouldShowModal = ('RenderModal' in action);
80
80
  return (0, _react.createElement)(DropdownMenuItem, {
81
81
  key: action.id,
82
82
  disabled: eligibleItems.length === 0,
@@ -115,7 +115,7 @@ function BulkActions({
115
115
  const [actionWithModal, setActionWithModal] = (0, _element.useState)();
116
116
  const selectableItems = (0, _element.useMemo)(() => {
117
117
  return data.filter(item => {
118
- return bulkActions.some(action => action.isEligible(item));
118
+ return bulkActions.some(action => !action.isEligible || action.isEligible(item));
119
119
  });
120
120
  }, [data, bulkActions]);
121
121
  const numberSelectableItems = selectableItems.length;
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","unlock","componentsPrivateApis","useHasAPossibleBulkAction","actions","item","useMemo","some","action","supportsBulk","isEligible","useSomeItemHasAPossibleBulkAction","data","ActionWithModal","selectedItems","setActionWithModal","onMenuOpenChange","eligibleItems","filter","RenderModal","hideModalHeader","onCloseModal","useCallback","undefined","_react","createElement","Modal","title","label","__experimentalHideHeader","onRequestClose","overlayClassName","items","closeModal","onPerform","BulkActionItem","shouldShowModal","key","id","disabled","length","hideOnClick","onClick","callback","suffix","ActionsMenuGroup","Fragment","map","BulkActions","selection","onSelectionChange","getItemId","bulkActions","isMenuOpen","useState","actionWithModal","selectableItems","numberSelectableItems","areAllSelected","includes","hasNonSelectableItemSelected","useEffect","selectedItem","open","onOpenChange","__","style","minWidth","trigger","Button","className","__next40pxDefaultSize","variant","size","sprintf","_n"],"sources":["@wordpress/dataviews/src/bulk-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\nexport function useHasAPossibleBulkAction( actions, item ) {\n\treturn useMemo( () => {\n\t\treturn actions.some( ( action ) => {\n\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t} );\n\t}, [ actions, item ] );\n}\n\nexport function useSomeItemHasAPossibleBulkAction( actions, data ) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nfunction ActionWithModal( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n\tonMenuOpenChange,\n} ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => action.isEligible( item ) );\n\t}, [ action, selectedItems ] );\n\tconst { RenderModal, hideModalHeader } = action;\n\tconst onCloseModal = useCallback( () => {\n\t\tsetActionWithModal( undefined );\n\t}, [ setActionWithModal ] );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ ! hideModalHeader && action.label }\n\t\t\t__experimentalHideHeader={ !! hideModalHeader }\n\t\t\tonRequestClose={ onCloseModal }\n\t\t\toverlayClassName=\"dataviews-action-modal\"\n\t\t>\n\t\t\t<RenderModal\n\t\t\t\titems={ eligibleItems }\n\t\t\t\tcloseModal={ onCloseModal }\n\t\t\t\tonPerform={ () => onMenuOpenChange( false ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nfunction BulkActionItem( { action, selectedItems, setActionWithModal } ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => action.isEligible( item ) );\n\t}, [ action, selectedItems ] );\n\n\tconst shouldShowModal = !! action.RenderModal;\n\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tkey={ action.id }\n\t\t\tdisabled={ eligibleItems.length === 0 }\n\t\t\thideOnClick={ ! shouldShowModal }\n\t\t\tonClick={ async () => {\n\t\t\t\tif ( shouldShowModal ) {\n\t\t\t\t\tsetActionWithModal( action );\n\t\t\t\t} else {\n\t\t\t\t\tawait action.callback( eligibleItems );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tsuffix={\n\t\t\t\teligibleItems.length > 0 ? eligibleItems.length : undefined\n\t\t\t}\n\t\t>\n\t\t\t{ action.label }\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction ActionsMenuGroup( { actions, selectedItems, setActionWithModal } ) {\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t{ actions.map( ( action ) => (\n\t\t\t\t\t<BulkActionItem\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</DropdownMenuGroup>\n\t\t\t<DropdownMenuSeparator />\n\t\t</>\n\t);\n}\n\nexport default function BulkActions( {\n\tdata,\n\tactions,\n\tselection,\n\tonSelectionChange,\n\tgetItemId,\n} ) {\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst [ isMenuOpen, onMenuOpenChange ] = useState( false );\n\tconst [ actionWithModal, setActionWithModal ] = useState();\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn bulkActions.some( ( action ) => action.isEligible( item ) );\n\t\t} );\n\t}, [ data, bulkActions ] );\n\n\tconst numberSelectableItems = selectableItems.length;\n\tconst areAllSelected =\n\t\tselection && selection.length === numberSelectableItems;\n\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter( ( item ) =>\n\t\t\tselection.includes( getItemId( item ) )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst hasNonSelectableItemSelected = useMemo( () => {\n\t\treturn selectedItems.some( ( item ) => {\n\t\t\treturn ! selectableItems.includes( item );\n\t\t} );\n\t}, [ selectedItems, selectableItems ] );\n\tuseEffect( () => {\n\t\tif ( hasNonSelectableItemSelected ) {\n\t\t\tonSelectionChange(\n\t\t\t\tselectedItems.filter( ( selectedItem ) => {\n\t\t\t\t\treturn selectableItems.some( ( item ) => {\n\t\t\t\t\t\treturn getItemId( selectedItem ) === getItemId( item );\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t}, [\n\t\thasNonSelectableItemSelected,\n\t\tselectedItems,\n\t\tselectableItems,\n\t\tgetItemId,\n\t\tonSelectionChange,\n\t] );\n\n\tif ( bulkActions.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonOpenChange={ onMenuOpenChange }\n\t\t\t\tlabel={ __( 'Bulk actions' ) }\n\t\t\t\tstyle={ { minWidth: '240px' } }\n\t\t\t\ttrigger={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"dataviews-bulk-edit-button\"\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ selection.length\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %d: Number of items. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'Edit %d item',\n\t\t\t\t\t\t\t\t\t\t'Edit %d items',\n\t\t\t\t\t\t\t\t\t\tselection.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tselection.length\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'Bulk edit' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\tactions={ bulkActions }\n\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t/>\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tdisabled={ areAllSelected }\n\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSelectionChange( selectableItems );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={ numberSelectableItems }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Select all' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tdisabled={ selection.length === 0 }\n\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSelectionChange( [] );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Deselect' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenu>\n\t\t\t{ actionWithModal && (\n\t\t\t\t<ActionWithModal\n\t\t\t\t\taction={ actionWithModal }\n\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\tonMenuOpenChange={ onMenuOpenChange }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","unlock","componentsPrivateApis","useHasAPossibleBulkAction","actions","item","useMemo","some","action","supportsBulk","isEligible","useSomeItemHasAPossibleBulkAction","data","ActionWithModal","selectedItems","setActionWithModal","onMenuOpenChange","eligibleItems","filter","RenderModal","hideModalHeader","onCloseModal","useCallback","undefined","_react","createElement","Modal","title","label","__experimentalHideHeader","onRequestClose","overlayClassName","items","closeModal","onActionPerformed","BulkActionItem","shouldShowModal","key","id","disabled","length","hideOnClick","onClick","callback","suffix","ActionsMenuGroup","Fragment","map","BulkActions","selection","onSelectionChange","getItemId","bulkActions","isMenuOpen","useState","actionWithModal","selectableItems","numberSelectableItems","areAllSelected","includes","hasNonSelectableItemSelected","useEffect","selectedItem","open","onOpenChange","__","style","minWidth","trigger","Button","className","__next40pxDefaultSize","variant","size","sprintf","_n"],"sources":["@wordpress/dataviews/src/bulk-actions.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { Action, ActionModal, AnyItem } from './types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\ninterface ActionWithModalProps< Item extends AnyItem > {\n\taction: ActionModal< Item >;\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n\tonMenuOpenChange: ( isOpen: boolean ) => void;\n}\n\ninterface BulkActionsItemProps< Item extends AnyItem > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n}\n\ninterface ActionsMenuGroupProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n}\n\ninterface BulkActionsProps< Item extends AnyItem > {\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tselection: string[];\n\tonSelectionChange: ( selection: Item[] ) => void;\n\tgetItemId: ( item: Item ) => string;\n}\n\nexport function useHasAPossibleBulkAction< Item extends AnyItem >(\n\tactions: Action< Item >[],\n\titem: Item\n) {\n\treturn useMemo( () => {\n\t\treturn actions.some( ( action ) => {\n\t\t\treturn (\n\t\t\t\taction.supportsBulk &&\n\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ actions, item ] );\n}\n\nexport function useSomeItemHasAPossibleBulkAction< Item extends AnyItem >(\n\tactions: Action< Item >[],\n\tdata: Item[]\n) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nfunction ActionWithModal< Item extends AnyItem >( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n\tonMenuOpenChange,\n}: ActionWithModalProps< Item > ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter(\n\t\t\t( item ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t}, [ action, selectedItems ] );\n\tconst { RenderModal, hideModalHeader } = action;\n\tconst onCloseModal = useCallback( () => {\n\t\tsetActionWithModal( undefined );\n\t}, [ setActionWithModal ] );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ ! hideModalHeader ? action.label : undefined }\n\t\t\t__experimentalHideHeader={ !! hideModalHeader }\n\t\t\tonRequestClose={ onCloseModal }\n\t\t\toverlayClassName=\"dataviews-action-modal\"\n\t\t>\n\t\t\t<RenderModal\n\t\t\t\titems={ eligibleItems }\n\t\t\t\tcloseModal={ onCloseModal }\n\t\t\t\tonActionPerformed={ () => onMenuOpenChange( false ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nfunction BulkActionItem< Item extends AnyItem >( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n}: BulkActionsItemProps< Item > ) {\n\tconst eligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter(\n\t\t\t( item ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t}, [ action, selectedItems ] );\n\n\tconst shouldShowModal = 'RenderModal' in action;\n\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tkey={ action.id }\n\t\t\tdisabled={ eligibleItems.length === 0 }\n\t\t\thideOnClick={ ! shouldShowModal }\n\t\t\tonClick={ async () => {\n\t\t\t\tif ( shouldShowModal ) {\n\t\t\t\t\tsetActionWithModal( action );\n\t\t\t\t} else {\n\t\t\t\t\tawait action.callback( eligibleItems );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tsuffix={\n\t\t\t\teligibleItems.length > 0 ? eligibleItems.length : undefined\n\t\t\t}\n\t\t>\n\t\t\t{ action.label }\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction ActionsMenuGroup< Item extends AnyItem >( {\n\tactions,\n\tselectedItems,\n\tsetActionWithModal,\n}: ActionsMenuGroupProps< Item > ) {\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t{ actions.map( ( action ) => (\n\t\t\t\t\t<BulkActionItem\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</DropdownMenuGroup>\n\t\t\t<DropdownMenuSeparator />\n\t\t</>\n\t);\n}\n\nexport default function BulkActions< Item extends AnyItem >( {\n\tdata,\n\tactions,\n\tselection,\n\tonSelectionChange,\n\tgetItemId,\n}: BulkActionsProps< Item > ) {\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst [ isMenuOpen, onMenuOpenChange ] = useState( false );\n\tconst [ actionWithModal, setActionWithModal ] = useState<\n\t\tActionModal< Item > | undefined\n\t>();\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn bulkActions.some(\n\t\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, bulkActions ] );\n\n\tconst numberSelectableItems = selectableItems.length;\n\tconst areAllSelected =\n\t\tselection && selection.length === numberSelectableItems;\n\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter( ( item ) =>\n\t\t\tselection.includes( getItemId( item ) )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst hasNonSelectableItemSelected = useMemo( () => {\n\t\treturn selectedItems.some( ( item ) => {\n\t\t\treturn ! selectableItems.includes( item );\n\t\t} );\n\t}, [ selectedItems, selectableItems ] );\n\tuseEffect( () => {\n\t\tif ( hasNonSelectableItemSelected ) {\n\t\t\tonSelectionChange(\n\t\t\t\tselectedItems.filter( ( selectedItem ) => {\n\t\t\t\t\treturn selectableItems.some( ( item ) => {\n\t\t\t\t\t\treturn getItemId( selectedItem ) === getItemId( item );\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t}, [\n\t\thasNonSelectableItemSelected,\n\t\tselectedItems,\n\t\tselectableItems,\n\t\tgetItemId,\n\t\tonSelectionChange,\n\t] );\n\n\tif ( bulkActions.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonOpenChange={ onMenuOpenChange }\n\t\t\t\tlabel={ __( 'Bulk actions' ) }\n\t\t\t\tstyle={ { minWidth: '240px' } }\n\t\t\t\ttrigger={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"dataviews-bulk-edit-button\"\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ selection.length\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %d: Number of items. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'Edit %d item',\n\t\t\t\t\t\t\t\t\t\t'Edit %d items',\n\t\t\t\t\t\t\t\t\t\tselection.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tselection.length\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'Bulk edit' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\tactions={ bulkActions }\n\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t/>\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tdisabled={ areAllSelected }\n\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSelectionChange( selectableItems );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={ numberSelectableItems }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Select all' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tdisabled={ selection.length === 0 }\n\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSelectionChange( [] );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Deselect' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenu>\n\t\t\t{ actionWithModal && (\n\t\t\t\t<ActionWithModal\n\t\t\t\t\taction={ actionWithModal }\n\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\tsetActionWithModal={ setActionWithModal }\n\t\t\t\t\tonMenuOpenChange={ onMenuOpenChange }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ var _constants = require("./constants");
16
16
  var _layouts = require("./layouts");
17
17
  var _bulkActions = _interopRequireDefault(require("./bulk-actions"));
18
18
  var _normalizeFields = require("./normalize-fields");
19
+ var _bulkActionsToolbar = _interopRequireDefault(require("./bulk-actions-toolbar"));
19
20
  /**
20
21
  * WordPress dependencies
21
22
  */
@@ -97,20 +98,26 @@ function DataViews({
97
98
  onChangeView: onChangeView,
98
99
  supportedLayouts: supportedLayouts
99
100
  })), (0, _react.createElement)(ViewComponent, {
100
- fields: _fields,
101
- view: view,
102
- onChangeView: onChangeView,
103
101
  actions: actions,
104
102
  data: data,
103
+ fields: _fields,
105
104
  getItemId: getItemId,
106
105
  isLoading: isLoading,
106
+ onChangeView: onChangeView,
107
107
  onSelectionChange: onSetSelection,
108
108
  selection: selection,
109
- setOpenedFilter: setOpenedFilter
109
+ setOpenedFilter: setOpenedFilter,
110
+ view: view
110
111
  }), (0, _react.createElement)(_pagination.default, {
111
112
  view: view,
112
113
  onChangeView: onChangeView,
113
114
  paginationInfo: paginationInfo
115
+ }), [_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && (0, _react.createElement)(_bulkActionsToolbar.default, {
116
+ data: data,
117
+ actions: actions,
118
+ selection: selection,
119
+ setSelection: setSelection,
120
+ getItemId: getItemId
114
121
  }));
115
122
  }
116
123
  //# sourceMappingURL=dataviews.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_pagination","_interopRequireDefault","_viewActions","_filters","_search","_constants","_layouts","_bulkActions","_normalizeFields","defaultGetItemId","item","id","defaultOnSelectionChange","useSomeItemHasAPossibleBulkAction","actions","data","useMemo","some","action","supportsBulk","isEligible","DataViews","view","onChangeView","fields","search","searchLabel","undefined","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","selection","setSelection","useState","openedFilter","setOpenedFilter","useEffect","length","newSelection","filter","includes","onSetSelection","useCallback","items","map","ViewComponent","VIEW_LAYOUTS","find","v","type","component","_fields","normalizeFields","hasPossibleBulkAction","_react","createElement","className","__experimentalHStack","alignment","justify","wrap","default","label","LAYOUT_TABLE","LAYOUT_GRID"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport { VIEW_LAYOUTS } from './layouts';\nimport BulkActions from './bulk-actions';\nimport { normalizeFields } from './normalize-fields';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\n\nfunction useSomeItemHasAPossibleBulkAction( actions, data ) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange = defaultOnSelectionChange,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\tconst [ openedFilter, setOpenedFilter ] = useState( null );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tselection.length > 0 &&\n\t\t\tselection.some(\n\t\t\t\t( id ) => ! data.some( ( item ) => getItemId( item ) === id )\n\t\t\t)\n\t\t) {\n\t\t\tconst newSelection = selection.filter( ( id ) =>\n\t\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t\t);\n\t\t\tsetSelection( newSelection );\n\t\t\tonSelectionChange(\n\t\t\t\tdata.filter( ( item ) =>\n\t\t\t\t\tnewSelection.includes( getItemId( item ) )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selection, data, getItemId, onSelectionChange ] );\n\n\tconst onSetSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items.map( ( item ) => getItemId( item ) ) );\n\t\t\tonSelectionChange( items );\n\t\t},\n\t\t[ setSelection, getItemId, onSelectionChange ]\n\t);\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\n\tconst hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(\n\t\tactions,\n\t\tdata\n\t);\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"start\"\n\t\t\t\tclassName=\"dataviews-filters__view-actions\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\t\t\twrap\n\t\t\t\t>\n\t\t\t\t\t{ search && (\n\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Filters\n\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) &&\n\t\t\t\t\thasPossibleBulkAction && (\n\t\t\t\t\t\t<BulkActions\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t<ViewActions\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t<ViewComponent\n\t\t\t\tfields={ _fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\tselection={ selection }\n\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t/>\n\t\t\t<Pagination\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_element","_pagination","_interopRequireDefault","_viewActions","_filters","_search","_constants","_layouts","_bulkActions","_normalizeFields","_bulkActionsToolbar","defaultGetItemId","item","id","defaultOnSelectionChange","useSomeItemHasAPossibleBulkAction","actions","data","useMemo","some","action","supportsBulk","isEligible","DataViews","view","onChangeView","fields","search","searchLabel","undefined","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","selection","setSelection","useState","openedFilter","setOpenedFilter","useEffect","length","newSelection","filter","includes","onSetSelection","useCallback","items","map","ViewComponent","VIEW_LAYOUTS","find","v","type","component","_fields","normalizeFields","hasPossibleBulkAction","_react","createElement","className","__experimentalHStack","alignment","justify","wrap","default","label","LAYOUT_TABLE","LAYOUT_GRID"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport { VIEW_LAYOUTS } from './layouts';\nimport BulkActions from './bulk-actions';\nimport { normalizeFields } from './normalize-fields';\nimport BulkActionsToolbar from './bulk-actions-toolbar';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\n\nfunction useSomeItemHasAPossibleBulkAction( actions, data ) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange = defaultOnSelectionChange,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\tconst [ openedFilter, setOpenedFilter ] = useState( null );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tselection.length > 0 &&\n\t\t\tselection.some(\n\t\t\t\t( id ) => ! data.some( ( item ) => getItemId( item ) === id )\n\t\t\t)\n\t\t) {\n\t\t\tconst newSelection = selection.filter( ( id ) =>\n\t\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t\t);\n\t\t\tsetSelection( newSelection );\n\t\t\tonSelectionChange(\n\t\t\t\tdata.filter( ( item ) =>\n\t\t\t\t\tnewSelection.includes( getItemId( item ) )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selection, data, getItemId, onSelectionChange ] );\n\n\tconst onSetSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items.map( ( item ) => getItemId( item ) ) );\n\t\t\tonSelectionChange( items );\n\t\t},\n\t\t[ setSelection, getItemId, onSelectionChange ]\n\t);\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\n\tconst hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(\n\t\tactions,\n\t\tdata\n\t);\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"start\"\n\t\t\t\tclassName=\"dataviews-filters__view-actions\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\t\t\twrap\n\t\t\t\t>\n\t\t\t\t\t{ search && (\n\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Filters\n\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) &&\n\t\t\t\t\thasPossibleBulkAction && (\n\t\t\t\t\t\t<BulkActions\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t<ViewActions\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t<ViewComponent\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tfields={ _fields }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\tselection={ selection }\n\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\tview={ view }\n\t\t\t/>\n\t\t\t<Pagination\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t/>\n\t\t\t{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) &&\n\t\t\t\thasPossibleBulkAction && (\n\t\t\t\t\t<BulkActionsToolbar\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tsetSelection={ setSelection }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -86,7 +86,7 @@ function filterSortAndPaginate(data, view, fields) {
86
86
  return filter.value.every(value => {
87
87
  return field.getValue({
88
88
  item
89
- }).includes(value);
89
+ })?.includes(value);
90
90
  });
91
91
  });
92
92
  } else if (filter.operator === _constants.OPERATOR_IS_NOT_ALL && filter?.value?.length > 0) {
@@ -94,7 +94,7 @@ function filterSortAndPaginate(data, view, fields) {
94
94
  return filter.value.every(value => {
95
95
  return !field.getValue({
96
96
  item
97
- }).includes(value);
97
+ })?.includes(value);
98
98
  });
99
99
  });
100
100
  } else if (filter.operator === _constants.OPERATOR_IS) {
@@ -1 +1 @@
1
- {"version":3,"names":["_removeAccents","_interopRequireDefault","require","_constants","_normalizeFields","normalizeSearchInput","input","removeAccents","trim","toLowerCase","EMPTY_ARRAY","filterSortAndPaginate","data","view","fields","paginationInfo","totalItems","totalPages","_fields","normalizeFields","filteredData","search","normalizedSearch","filter","item","field","enableGlobalSearch","map","getValue","some","includes","filters","length","forEach","find","_field","id","operator","OPERATOR_IS_ANY","value","fieldValue","Array","isArray","filterValue","OPERATOR_IS_NONE","OPERATOR_IS_ALL","every","OPERATOR_IS_NOT_ALL","OPERATOR_IS","OPERATOR_IS_NOT","sort","fieldId","fieldToSort","a","b","_fieldToSort$getValue","_fieldToSort$getValue2","valueA","valueB","direction","localeCompare","page","undefined","perPage","start","Math","ceil","slice"],"sources":["@wordpress/dataviews/src/filter-and-sort-data-view.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * Internal dependencies\n */\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n} from './constants';\nimport { normalizeFields } from './normalize-fields';\nimport type { Data, Field, View } from './types';\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY: Data = [];\n\n/**\n * Applies the filtering, sorting and pagination to the raw data based on the view configuration.\n *\n * @param data Raw data.\n * @param view View config.\n * @param fields Fields config.\n *\n * @return Filtered, sorted and paginated data.\n */\nexport function filterSortAndPaginate(\n\tdata: Data,\n\tview: View,\n\tfields: Field[]\n): { data: Data; paginationInfo: { totalItems: number; totalPages: number } } {\n\tif ( ! data ) {\n\t\treturn {\n\t\t\tdata: EMPTY_ARRAY,\n\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t};\n\t}\n\tconst _fields = normalizeFields( fields );\n\tlet filteredData = [ ...data ];\n\t// Handle global search.\n\tif ( view.search ) {\n\t\tconst normalizedSearch = normalizeSearchInput( view.search );\n\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\treturn _fields\n\t\t\t\t.filter( ( field ) => field.enableGlobalSearch )\n\t\t\t\t.map( ( field ) => {\n\t\t\t\t\treturn normalizeSearchInput( field.getValue( { item } ) );\n\t\t\t\t} )\n\t\t\t\t.some( ( field ) => field.includes( normalizedSearch ) );\n\t\t} );\n\t}\n\n\tif ( view.filters.length > 0 ) {\n\t\tview.filters.forEach( ( filter ) => {\n\t\t\tconst field = _fields.find(\n\t\t\t\t( _field ) => _field.id === filter.field\n\t\t\t);\n\t\t\tif ( field ) {\n\t\t\t\tif (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ANY &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NONE &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn ! filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn ! filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn field.getValue( { item } ).includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NOT_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn ! field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value === field.getValue( { item } );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS_NOT ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value !== field.getValue( { item } );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t// Handle sorting.\n\tif ( view.sort ) {\n\t\tconst fieldId = view.sort.field;\n\t\tconst fieldToSort = _fields.find( ( field ) => {\n\t\t\treturn field.id === fieldId;\n\t\t} );\n\t\tif ( fieldToSort ) {\n\t\t\tfilteredData.sort( ( a, b ) => {\n\t\t\t\tconst valueA = fieldToSort.getValue( { item: a } ) ?? '';\n\t\t\t\tconst valueB = fieldToSort.getValue( { item: b } ) ?? '';\n\t\t\t\treturn view.sort?.direction === 'asc'\n\t\t\t\t\t? valueA.localeCompare( valueB )\n\t\t\t\t\t: valueB.localeCompare( valueA );\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle pagination.\n\tlet totalItems = filteredData.length;\n\tlet totalPages = 1;\n\tif ( view.page !== undefined && view.perPage !== undefined ) {\n\t\tconst start = ( view.page - 1 ) * view.perPage;\n\t\ttotalItems = filteredData?.length || 0;\n\t\ttotalPages = Math.ceil( totalItems / view.perPage );\n\t\tfilteredData = filteredData?.slice( start, start + view.perPage );\n\t}\n\n\treturn {\n\t\tdata: filteredData,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_removeAccents","_interopRequireDefault","require","_constants","_normalizeFields","normalizeSearchInput","input","removeAccents","trim","toLowerCase","EMPTY_ARRAY","filterSortAndPaginate","data","view","fields","paginationInfo","totalItems","totalPages","_fields","normalizeFields","filteredData","search","normalizedSearch","filter","item","field","enableGlobalSearch","map","getValue","some","includes","filters","length","forEach","find","_field","id","operator","OPERATOR_IS_ANY","value","fieldValue","Array","isArray","filterValue","OPERATOR_IS_NONE","OPERATOR_IS_ALL","every","OPERATOR_IS_NOT_ALL","OPERATOR_IS","OPERATOR_IS_NOT","sort","fieldId","fieldToSort","a","b","_fieldToSort$getValue","_fieldToSort$getValue2","valueA","valueB","direction","localeCompare","page","undefined","perPage","start","Math","ceil","slice"],"sources":["@wordpress/dataviews/src/filter-and-sort-data-view.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * Internal dependencies\n */\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n} from './constants';\nimport { normalizeFields } from './normalize-fields';\nimport type { Field, AnyItem, View } from './types';\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * Applies the filtering, sorting and pagination to the raw data based on the view configuration.\n *\n * @param data Raw data.\n * @param view View config.\n * @param fields Fields config.\n *\n * @return Filtered, sorted and paginated data.\n */\nexport function filterSortAndPaginate< Item extends AnyItem >(\n\tdata: Item[],\n\tview: View,\n\tfields: Field< Item >[]\n): {\n\tdata: Item[];\n\tpaginationInfo: { totalItems: number; totalPages: number };\n} {\n\tif ( ! data ) {\n\t\treturn {\n\t\t\tdata: EMPTY_ARRAY,\n\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t};\n\t}\n\tconst _fields = normalizeFields( fields );\n\tlet filteredData = [ ...data ];\n\t// Handle global search.\n\tif ( view.search ) {\n\t\tconst normalizedSearch = normalizeSearchInput( view.search );\n\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\treturn _fields\n\t\t\t\t.filter( ( field ) => field.enableGlobalSearch )\n\t\t\t\t.map( ( field ) => {\n\t\t\t\t\treturn normalizeSearchInput( field.getValue( { item } ) );\n\t\t\t\t} )\n\t\t\t\t.some( ( field ) => field.includes( normalizedSearch ) );\n\t\t} );\n\t}\n\n\tif ( view.filters.length > 0 ) {\n\t\tview.filters.forEach( ( filter ) => {\n\t\t\tconst field = _fields.find(\n\t\t\t\t( _field ) => _field.id === filter.field\n\t\t\t);\n\t\t\tif ( field ) {\n\t\t\t\tif (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ANY &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NONE &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn ! filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn ! filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t?.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NOT_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn ! field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t?.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value === field.getValue( { item } );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS_NOT ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value !== field.getValue( { item } );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t// Handle sorting.\n\tif ( view.sort ) {\n\t\tconst fieldId = view.sort.field;\n\t\tconst fieldToSort = _fields.find( ( field ) => {\n\t\t\treturn field.id === fieldId;\n\t\t} );\n\t\tif ( fieldToSort ) {\n\t\t\tfilteredData.sort( ( a, b ) => {\n\t\t\t\tconst valueA = fieldToSort.getValue( { item: a } ) ?? '';\n\t\t\t\tconst valueB = fieldToSort.getValue( { item: b } ) ?? '';\n\t\t\t\treturn view.sort?.direction === 'asc'\n\t\t\t\t\t? valueA.localeCompare( valueB )\n\t\t\t\t\t: valueB.localeCompare( valueA );\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle pagination.\n\tlet totalItems = filteredData.length;\n\tlet totalPages = 1;\n\tif ( view.page !== undefined && view.perPage !== undefined ) {\n\t\tconst start = ( view.page - 1 ) * view.perPage;\n\t\ttotalItems = filteredData?.length || 0;\n\t\ttotalPages = Math.ceil( totalItems / view.perPage );\n\t\tfilteredData = filteredData?.slice( start, start + view.perPage );\n\t}\n\n\treturn {\n\t\tdata: filteredData,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = FilterSummary;
8
8
  var _react = require("react");
9
- var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _clsx = _interopRequireDefault(require("clsx"));
10
10
  var _components = require("@wordpress/components");
11
11
  var _i18n = require("@wordpress/i18n");
12
12
  var _element = require("@wordpress/element");
@@ -157,7 +157,7 @@ function FilterSummary({
157
157
  (0, _i18n.__)('Filter by: %1$s'), filter.name.toLowerCase()),
158
158
  placement: "top"
159
159
  }, (0, _react.createElement)("div", {
160
- className: (0, _classnames.default)('dataviews-filter-summary__chip', {
160
+ className: (0, _clsx.default)('dataviews-filter-summary__chip', {
161
161
  'has-reset': canResetOrRemove,
162
162
  'has-values': hasValues
163
163
  }),
@@ -181,7 +181,7 @@ function FilterSummary({
181
181
  text: isPrimary ? (0, _i18n.__)('Reset') : (0, _i18n.__)('Remove'),
182
182
  placement: "top"
183
183
  }, (0, _react.createElement)("button", {
184
- className: (0, _classnames.default)('dataviews-filter-summary__chip-remove', {
184
+ className: (0, _clsx.default)('dataviews-filter-summary__chip-remove', {
185
185
  'has-values': hasValues
186
186
  }),
187
187
  onClick: () => {