@wordpress/dataviews 2.1.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +24 -5
  2. package/README.md +5 -5
  3. package/build/add-filter.js +1 -1
  4. package/build/add-filter.js.map +1 -1
  5. package/build/bulk-actions-toolbar.js +5 -2
  6. package/build/bulk-actions-toolbar.js.map +1 -1
  7. package/build/bulk-actions.js +11 -21
  8. package/build/bulk-actions.js.map +1 -1
  9. package/build/dataform.js +78 -0
  10. package/build/dataform.js.map +1 -0
  11. package/build/dataviews.js +26 -31
  12. package/build/dataviews.js.map +1 -1
  13. package/build/filter-and-sort-data-view.js +4 -1
  14. package/build/filter-and-sort-data-view.js.map +1 -1
  15. package/build/filter-summary.js +6 -5
  16. package/build/filter-summary.js.map +1 -1
  17. package/build/filters.js +1 -1
  18. package/build/filters.js.map +1 -1
  19. package/build/index.js +7 -0
  20. package/build/index.js.map +1 -1
  21. package/build/item-actions.js +17 -6
  22. package/build/item-actions.js.map +1 -1
  23. package/build/lock-unlock.js +1 -1
  24. package/build/lock-unlock.js.map +1 -1
  25. package/build/normalize-fields.js.map +1 -1
  26. package/build/pagination.js +2 -2
  27. package/build/pagination.js.map +1 -1
  28. package/build/private-types.js +6 -0
  29. package/build/private-types.js.map +1 -0
  30. package/build/reset-filters.js +1 -1
  31. package/build/reset-filters.js.map +1 -1
  32. package/build/search-widget.js +8 -6
  33. package/build/search-widget.js.map +1 -1
  34. package/build/single-selection-checkbox.js +5 -16
  35. package/build/single-selection-checkbox.js.map +1 -1
  36. package/build/types.js.map +1 -1
  37. package/build/utils.js.map +1 -1
  38. package/build/view-actions.js +76 -65
  39. package/build/view-actions.js.map +1 -1
  40. package/build/view-grid.js +7 -19
  41. package/build/view-grid.js.map +1 -1
  42. package/build/view-list.js +15 -8
  43. package/build/view-list.js.map +1 -1
  44. package/build/view-table.js +22 -25
  45. package/build/view-table.js.map +1 -1
  46. package/build-module/add-filter.js +1 -1
  47. package/build-module/add-filter.js.map +1 -1
  48. package/build-module/bulk-actions-toolbar.js +5 -2
  49. package/build-module/bulk-actions-toolbar.js.map +1 -1
  50. package/build-module/bulk-actions.js +12 -22
  51. package/build-module/bulk-actions.js.map +1 -1
  52. package/build-module/dataform.js +72 -0
  53. package/build-module/dataform.js.map +1 -0
  54. package/build-module/dataviews.js +24 -31
  55. package/build-module/dataviews.js.map +1 -1
  56. package/build-module/filter-and-sort-data-view.js +4 -1
  57. package/build-module/filter-and-sort-data-view.js.map +1 -1
  58. package/build-module/filter-summary.js +6 -5
  59. package/build-module/filter-summary.js.map +1 -1
  60. package/build-module/filters.js +1 -1
  61. package/build-module/filters.js.map +1 -1
  62. package/build-module/index.js +1 -0
  63. package/build-module/index.js.map +1 -1
  64. package/build-module/item-actions.js +17 -6
  65. package/build-module/item-actions.js.map +1 -1
  66. package/build-module/lock-unlock.js +1 -1
  67. package/build-module/lock-unlock.js.map +1 -1
  68. package/build-module/normalize-fields.js.map +1 -1
  69. package/build-module/pagination.js +2 -2
  70. package/build-module/pagination.js.map +1 -1
  71. package/build-module/private-types.js +2 -0
  72. package/build-module/private-types.js.map +1 -0
  73. package/build-module/reset-filters.js +1 -1
  74. package/build-module/reset-filters.js.map +1 -1
  75. package/build-module/search-widget.js +8 -6
  76. package/build-module/search-widget.js.map +1 -1
  77. package/build-module/single-selection-checkbox.js +5 -16
  78. package/build-module/single-selection-checkbox.js.map +1 -1
  79. package/build-module/types.js.map +1 -1
  80. package/build-module/utils.js.map +1 -1
  81. package/build-module/view-actions.js +80 -68
  82. package/build-module/view-actions.js.map +1 -1
  83. package/build-module/view-grid.js +7 -19
  84. package/build-module/view-grid.js.map +1 -1
  85. package/build-module/view-list.js +15 -8
  86. package/build-module/view-list.js.map +1 -1
  87. package/build-module/view-table.js +22 -25
  88. package/build-module/view-table.js.map +1 -1
  89. package/build-style/style-rtl.css +8 -24
  90. package/build-style/style.css +8 -24
  91. package/build-types/bulk-actions-toolbar.d.ts +5 -4
  92. package/build-types/bulk-actions-toolbar.d.ts.map +1 -1
  93. package/build-types/bulk-actions.d.ts +7 -6
  94. package/build-types/bulk-actions.d.ts.map +1 -1
  95. package/build-types/dataform.d.ts +17 -0
  96. package/build-types/dataform.d.ts.map +1 -0
  97. package/build-types/dataviews.d.ts +15 -6
  98. package/build-types/dataviews.d.ts.map +1 -1
  99. package/build-types/filter-and-sort-data-view.d.ts +2 -2
  100. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  101. package/build-types/filter-summary.d.ts.map +1 -1
  102. package/build-types/filters.d.ts +3 -3
  103. package/build-types/filters.d.ts.map +1 -1
  104. package/build-types/index.d.ts +1 -0
  105. package/build-types/index.d.ts.map +1 -1
  106. package/build-types/item-actions.d.ts +10 -10
  107. package/build-types/item-actions.d.ts.map +1 -1
  108. package/build-types/normalize-fields.d.ts +2 -2
  109. package/build-types/normalize-fields.d.ts.map +1 -1
  110. package/build-types/private-types.d.ts +3 -0
  111. package/build-types/private-types.d.ts.map +1 -0
  112. package/build-types/single-selection-checkbox.d.ts +5 -5
  113. package/build-types/single-selection-checkbox.d.ts.map +1 -1
  114. package/build-types/stories/fixtures.d.ts +14 -1
  115. package/build-types/stories/fixtures.d.ts.map +1 -1
  116. package/build-types/stories/index.story.d.ts +15 -1
  117. package/build-types/stories/index.story.d.ts.map +1 -1
  118. package/build-types/types.d.ts +73 -38
  119. package/build-types/types.d.ts.map +1 -1
  120. package/build-types/utils.d.ts +2 -2
  121. package/build-types/utils.d.ts.map +1 -1
  122. package/build-types/view-actions.d.ts +4 -4
  123. package/build-types/view-actions.d.ts.map +1 -1
  124. package/build-types/view-grid.d.ts +2 -2
  125. package/build-types/view-grid.d.ts.map +1 -1
  126. package/build-types/view-list.d.ts +2 -2
  127. package/build-types/view-list.d.ts.map +1 -1
  128. package/build-types/view-table.d.ts +2 -2
  129. package/build-types/view-table.d.ts.map +1 -1
  130. package/package.json +10 -9
  131. package/src/add-filter.tsx +1 -1
  132. package/src/bulk-actions-toolbar.tsx +18 -14
  133. package/src/bulk-actions.tsx +31 -45
  134. package/src/dataform.tsx +106 -0
  135. package/src/dataviews.tsx +55 -60
  136. package/src/filter-and-sort-data-view.ts +13 -3
  137. package/src/filter-summary.tsx +18 -12
  138. package/src/filters.tsx +4 -4
  139. package/src/index.ts +1 -0
  140. package/src/item-actions.tsx +27 -24
  141. package/src/lock-unlock.ts +1 -1
  142. package/src/normalize-fields.ts +5 -3
  143. package/src/pagination.tsx +2 -2
  144. package/src/private-types.tsx +2 -0
  145. package/src/reset-filters.tsx +1 -1
  146. package/src/search-widget.tsx +6 -6
  147. package/src/single-selection-checkbox.tsx +14 -29
  148. package/src/stories/fixtures.js +17 -1
  149. package/src/stories/index.story.js +15 -28
  150. package/src/style.scss +10 -22
  151. package/src/test/filter-and-sort-data-view.js +16 -1
  152. package/src/types.ts +75 -47
  153. package/src/utils.ts +2 -4
  154. package/src/view-actions.tsx +105 -102
  155. package/src/view-grid.tsx +21 -38
  156. package/src/view-list.tsx +22 -22
  157. package/src/view-table.tsx +45 -45
  158. package/tsconfig.json +1 -0
  159. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 3.0.0 (2024-07-10)
6
+
7
+
8
+ ### Breaking Changes
9
+
10
+ - Replace the `hiddenFields` property in the view prop of `DataViews` with a `fields` property that accepts an array of visible fields instead.
11
+ - Replace the `supportedLayouts` prop in the `DataViews` component with a `defaultLayouts` prop that accepts an object whose keys are the layout names and values are the default view objects for these layouts.
12
+
13
+ ### New features
14
+
15
+ - Added a new `DataForm` component to render controls from a given configuration (fields, form), and data.
16
+
17
+ ### Internal
18
+
19
+ - Method style type signatures have been changed to function style ([#62718](https://github.com/WordPress/gutenberg/pull/62718)).
20
+
21
+ ## 2.2.0 (2024-06-26)
22
+
5
23
  ## 2.1.0 (2024-06-15)
6
24
 
7
25
  ## 2.0.0 (2024-05-31)
@@ -16,9 +34,10 @@
16
34
 
17
35
  - Remove some unused dependencies ([#62010](https://github.com/WordPress/gutenberg/pull/62010)).
18
36
 
19
- ### Enhancement
37
+ ### Enhancements
20
38
 
21
39
  - `label` prop in Actions API can be either a `string` value or a `function`, in case we want to use information from the selected items. ([#61942](https://github.com/WordPress/gutenberg/pull/61942)).
40
+ - Add `registry` argument to the callback of the actions API. ([#62505](https://github.com/WordPress/gutenberg/pull/62505)).
22
41
 
23
42
  ## 1.2.0 (2024-05-16)
24
43
 
@@ -30,24 +49,24 @@
30
49
 
31
50
  ## 1.0.0 (2024-04-19)
32
51
 
33
- ### Breaking changes
52
+ ### Breaking Changes
34
53
 
35
54
  - Removed the `onDetailsChange` event only available for the list layout. We are looking into adding actions to the list layout, including primary ones.
36
55
 
37
56
  ## 0.9.0 (2024-04-03)
38
57
 
39
- ### Enhancement
58
+ ### Enhancements
40
59
 
41
60
  - 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.
42
61
 
43
62
  ## 0.8.0 (2024-03-21)
44
63
 
45
- ### Enhancement
64
+ ### Enhancements
46
65
 
47
66
  - 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.
48
67
  - 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.
49
68
 
50
- ### Breaking changes
69
+ ### Breaking Changes
51
70
 
52
71
  - Removed the `getPaginationResults` and `sortByTextFields` utils and replaced them with a unique `filterSortAndPaginate` function.
53
72
 
package/README.md CHANGED
@@ -149,7 +149,7 @@ const view = {
149
149
  field: 'date',
150
150
  direction: 'desc',
151
151
  },
152
- hiddenFields: [ 'date', 'featured-image' ],
152
+ fields: [ 'author', 'status' ],
153
153
  layout: {},
154
154
  };
155
155
  ```
@@ -167,7 +167,7 @@ Properties:
167
167
  - `sort`:
168
168
  - `field`: the field used for sorting the dataset.
169
169
  - `direction`: the direction to use for sorting, one of `asc` or `desc`.
170
- - `hiddenFields`: the `id` of the fields that are hidden in the UI.
170
+ - `fields`: the `id` of the fields that are visible in the UI.
171
171
  - `layout`: config that is specific to a particular layout type.
172
172
  - `mediaField`: used by the `grid` and `list` layouts. The `id` of the field to be used for rendering each card's media.
173
173
  - `primaryField`: used by the `table`, `grid` and `list` layouts. The `id` of the field to be highlighted in each row/card/item.
@@ -199,7 +199,7 @@ function MyCustomPageTable() {
199
199
  value: [ 'publish', 'draft' ],
200
200
  },
201
201
  ],
202
- hiddenFields: [ 'date', 'featured-image' ],
202
+ fields: [ 'author', 'status' ],
203
203
  layout: {},
204
204
  } );
205
205
 
@@ -274,9 +274,9 @@ Function that receives an item and returns an unique identifier for it. By defau
274
274
 
275
275
  Whether the data is loading. `false` by default.
276
276
 
277
- ### `supportedLayouts`: `String[]`
277
+ ### `defaultLayouts`: `Record< string, view >`
278
278
 
279
- Array of layouts supported. By default, all are: `table`, `grid`, `list`.
279
+ Default layouts. By default, uses empty layouts: `table`, `grid`, `list`.
280
280
 
281
281
  ### `onSelectionChange`: `function`
282
282
 
@@ -40,7 +40,7 @@ function AddFilter({
40
40
  const inactiveFilters = filters.filter(filter => !filter.isVisible);
41
41
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenu, {
42
42
  trigger: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
43
- __experimentalIsFocusable: true,
43
+ accessibleWhenDisabled: true,
44
44
  size: "compact",
45
45
  className: "dataviews-filters-button",
46
46
  variant: "tertiary",
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","_jsxRuntime","DropdownMenuV2","DropdownMenu","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","unlock","componentsPrivateApis","AddFilter","filters","view","onChangeView","setOpenedFilter","ref","length","every","isPrimary","inactiveFilters","filter","isVisible","jsx","trigger","Button","__experimentalIsFocusable","size","className","variant","disabled","children","__","map","onClick","field","page","value","undefined","operator","operators","name","_default","exports","default","forwardRef"],"sources":["@wordpress/dataviews/src/add-filter.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { Ref } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { NormalizedFilter, View } from './types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\ninterface AddFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n}\n\nfunction AddFilter(\n\t{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,\n\tref: Ref< HTMLButtonElement >\n) {\n\tif ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {\n\t\treturn null;\n\t}\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tdisabled={ ! inactiveFilters.length }\n\t\t\t\t\tref={ ref }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t{ inactiveFilters.map( ( filter ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetOpenedFilter( filter.field );\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ filter.name }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nexport default forwardRef( AddFilter );\n"],"mappings":";;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAKA,IAAAG,WAAA,GAAAH,OAAA;AAAuC,IAAAI,WAAA,GAAAJ,OAAA;AAlBvC;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAIA,MAAM;EACLK,cAAc,EAAEC,YAAY;EAC5BC,kBAAkB,EAAEC,gBAAgB;EACpCC,uBAAuB,EAAEC;AAC1B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AASnC,SAASC,SAASA,CACjB;EAAEC,OAAO;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAgC,CAAC,EAChEC,GAA6B,EAC5B;EACD,IAAK,CAAEJ,OAAO,CAACK,MAAM,IAAIL,OAAO,CAACM,KAAK,CAAE,CAAE;IAAEC;EAAU,CAAC,KAAMA,SAAU,CAAC,EAAG;IAC1E,OAAO,IAAI;EACZ;EACA,MAAMC,eAAe,GAAGR,OAAO,CAACS,MAAM,CAAIA,MAAM,IAAM,CAAEA,MAAM,CAACC,SAAU,CAAC;EAC1E,oBACC,IAAApB,WAAA,CAAAqB,GAAA,EAACnB,YAAY;IACZoB,OAAO,eACN,IAAAtB,WAAA,CAAAqB,GAAA,EAAC1B,WAAA,CAAA4B,MAAM;MACNC,yBAAyB;MACzBC,IAAI,EAAC,SAAS;MACdC,SAAS,EAAC,0BAA0B;MACpCC,OAAO,EAAC,UAAU;MAClBC,QAAQ,EAAG,CAAEV,eAAe,CAACH,MAAQ;MACrCD,GAAG,EAAGA,GAAK;MAAAe,QAAA,EAET,IAAAC,QAAE,EAAE,YAAa;IAAC,CACb,CACR;IAAAD,QAAA,EAECX,eAAe,CAACa,GAAG,CAAIZ,MAAM,IAAM;MACpC,oBACC,IAAAnB,WAAA,CAAAqB,GAAA,EAACjB,gBAAgB;QAEhB4B,OAAO,EAAGA,CAAA,KAAM;UACfnB,eAAe,CAAEM,MAAM,CAACc,KAAM,CAAC;UAC/BrB,YAAY,CAAE;YACb,GAAGD,IAAI;YACPuB,IAAI,EAAE,CAAC;YACPxB,OAAO,EAAE,CACR,IAAKC,IAAI,CAACD,OAAO,IAAI,EAAE,CAAE,EACzB;cACCuB,KAAK,EAAEd,MAAM,CAACc,KAAK;cACnBE,KAAK,EAAEC,SAAS;cAChBC,QAAQ,EAAElB,MAAM,CAACmB,SAAS,CAAE,CAAC;YAC9B,CAAC;UAEH,CAAE,CAAC;QACJ,CAAG;QAAAT,QAAA,eAEH,IAAA7B,WAAA,CAAAqB,GAAA,EAACf,qBAAqB;UAAAuB,QAAA,EACnBV,MAAM,CAACoB;QAAI,CACS;MAAC,GAnBlBpB,MAAM,CAACc,KAoBI,CAAC;IAErB,CAAE;EAAC,CACU,CAAC;AAEjB;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,mBAAU,EAAElC,SAAU,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","_jsxRuntime","DropdownMenuV2","DropdownMenu","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","unlock","componentsPrivateApis","AddFilter","filters","view","onChangeView","setOpenedFilter","ref","length","every","isPrimary","inactiveFilters","filter","isVisible","jsx","trigger","Button","accessibleWhenDisabled","size","className","variant","disabled","children","__","map","onClick","field","page","value","undefined","operator","operators","name","_default","exports","default","forwardRef"],"sources":["@wordpress/dataviews/src/add-filter.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { Ref } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { NormalizedFilter, View } from './types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\ninterface AddFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n}\n\nfunction AddFilter(\n\t{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,\n\tref: Ref< HTMLButtonElement >\n) {\n\tif ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {\n\t\treturn null;\n\t}\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tdisabled={ ! inactiveFilters.length }\n\t\t\t\t\tref={ ref }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t{ inactiveFilters.map( ( filter ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetOpenedFilter( filter.field );\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ filter.name }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nexport default forwardRef( AddFilter );\n"],"mappings":";;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAKA,IAAAG,WAAA,GAAAH,OAAA;AAAuC,IAAAI,WAAA,GAAAJ,OAAA;AAlBvC;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAIA,MAAM;EACLK,cAAc,EAAEC,YAAY;EAC5BC,kBAAkB,EAAEC,gBAAgB;EACpCC,uBAAuB,EAAEC;AAC1B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AASnC,SAASC,SAASA,CACjB;EAAEC,OAAO;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAgC,CAAC,EAChEC,GAA6B,EAC5B;EACD,IAAK,CAAEJ,OAAO,CAACK,MAAM,IAAIL,OAAO,CAACM,KAAK,CAAE,CAAE;IAAEC;EAAU,CAAC,KAAMA,SAAU,CAAC,EAAG;IAC1E,OAAO,IAAI;EACZ;EACA,MAAMC,eAAe,GAAGR,OAAO,CAACS,MAAM,CAAIA,MAAM,IAAM,CAAEA,MAAM,CAACC,SAAU,CAAC;EAC1E,oBACC,IAAApB,WAAA,CAAAqB,GAAA,EAACnB,YAAY;IACZoB,OAAO,eACN,IAAAtB,WAAA,CAAAqB,GAAA,EAAC1B,WAAA,CAAA4B,MAAM;MACNC,sBAAsB;MACtBC,IAAI,EAAC,SAAS;MACdC,SAAS,EAAC,0BAA0B;MACpCC,OAAO,EAAC,UAAU;MAClBC,QAAQ,EAAG,CAAEV,eAAe,CAACH,MAAQ;MACrCD,GAAG,EAAGA,GAAK;MAAAe,QAAA,EAET,IAAAC,QAAE,EAAE,YAAa;IAAC,CACb,CACR;IAAAD,QAAA,EAECX,eAAe,CAACa,GAAG,CAAIZ,MAAM,IAAM;MACpC,oBACC,IAAAnB,WAAA,CAAAqB,GAAA,EAACjB,gBAAgB;QAEhB4B,OAAO,EAAGA,CAAA,KAAM;UACfnB,eAAe,CAAEM,MAAM,CAACc,KAAM,CAAC;UAC/BrB,YAAY,CAAE;YACb,GAAGD,IAAI;YACPuB,IAAI,EAAE,CAAC;YACPxB,OAAO,EAAE,CACR,IAAKC,IAAI,CAACD,OAAO,IAAI,EAAE,CAAE,EACzB;cACCuB,KAAK,EAAEd,MAAM,CAACc,KAAK;cACnBE,KAAK,EAAEC,SAAS;cAChBC,QAAQ,EAAElB,MAAM,CAACmB,SAAS,CAAE,CAAC;YAC9B,CAAC;UAEH,CAAE,CAAC;QACJ,CAAG;QAAAT,QAAA,eAEH,IAAA7B,WAAA,CAAAqB,GAAA,EAACf,qBAAqB;UAAAuB,QAAA,EACnBV,MAAM,CAACoB;QAAI,CACS;MAAC,GAnBlBpB,MAAM,CAACc,KAoBI,CAAC;IAErB,CAAE;EAAC,CACU,CAAC;AAEjB;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,mBAAU,EAAElC,SAAU,CAAC","ignoreList":[]}
@@ -9,6 +9,7 @@ var _element = require("@wordpress/element");
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _icons = require("@wordpress/icons");
11
11
  var _compose = require("@wordpress/compose");
12
+ var _data = require("@wordpress/data");
12
13
  var _itemActions = require("./item-actions");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  /**
@@ -60,7 +61,6 @@ function ActionTrigger({
60
61
  size: "compact",
61
62
  onClick: onClick,
62
63
  isBusy: isBusy,
63
- __experimentalIsFocusable: true,
64
64
  tooltipPosition: "top"
65
65
  });
66
66
  }
@@ -71,6 +71,7 @@ function ActionButton({
71
71
  actionInProgress,
72
72
  setActionInProgress
73
73
  }) {
74
+ const registry = (0, _data.useRegistry)();
74
75
  const selectedEligibleItems = (0, _element.useMemo)(() => {
75
76
  return selectedItems.filter(item => {
76
77
  return !action.isEligible || action.isEligible(item);
@@ -87,7 +88,9 @@ function ActionButton({
87
88
  action: action,
88
89
  onClick: () => {
89
90
  setActionInProgress(action.id);
90
- action.callback(selectedItems);
91
+ action.callback(selectedItems, {
92
+ registry
93
+ });
91
94
  },
92
95
  items: selectedEligibleItems,
93
96
  isBusy: actionInProgress === action.id
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_icons","_compose","_itemActions","_jsxRuntime","SNACKBAR_VARIANTS","init","bottom","open","transition","type","duration","ease","exit","opacity","ActionTrigger","action","onClick","isBusy","items","label","jsx","ToolbarButton","disabled","icon","isDestructive","size","__experimentalIsFocusable","tooltipPosition","EMPTY_ARRAY","ActionButton","selectedItems","actionInProgress","setActionInProgress","selectedEligibleItems","useMemo","filter","item","isEligible","ActionWithModal","id","callback","renderToolbarContent","selection","actionsToShow","onSelectionChange","jsxs","Fragment","children","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.tsx"],"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';\nimport type { Action, AnyItem } from './types';\nimport type { ActionTriggerProps } from './item-actions';\n\ninterface ActionButtonProps< Item extends AnyItem > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tactionInProgress: string | null;\n\tsetActionInProgress: ( actionId: string | null ) => void;\n}\n\ninterface ToolbarContentProps< Item extends AnyItem > {\n\tselection: string[];\n\tactionsToShow: Action< Item >[];\n\tselectedItems: Item[];\n\tonSelectionChange: ( selection: Item[] ) => void;\n}\n\ninterface BulkActionsToolbarProps< Item extends AnyItem > {\n\tdata: Item[];\n\tselection: string[];\n\tactions: Action< Item >[];\n\tonSelectionChange: ( selection: Item[] ) => void;\n\tgetItemId: ( item: Item ) => string;\n}\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< Item extends AnyItem >( {\n\taction,\n\tonClick,\n\tisBusy,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled={ isBusy }\n\t\t\tlabel={ 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< Item extends AnyItem >( {\n\taction,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n}: ActionButtonProps< Item > ) {\n\tconst selectedEligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => {\n\t\t\treturn ! action.isEligible || action.isEligible( item );\n\t\t} );\n\t}, [ action, selectedItems ] );\n\tif ( 'RenderModal' in action ) {\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/>\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\tonClick={ () => {\n\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\taction.callback( selectedItems );\n\t\t\t} }\n\t\t\titems={ selectedEligibleItems }\n\t\t\tisBusy={ actionInProgress === action.id }\n\t\t/>\n\t);\n}\n\nfunction renderToolbarContent< Item extends AnyItem >(\n\tselection: string[],\n\tactionsToShow: Action< Item >[],\n\tselectedItems: Item[],\n\tactionInProgress: string | null,\n\tsetActionInProgress: ( actionId: string | null ) => void,\n\tonSelectionChange: ( selection: Item[] ) => void\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\tonSelectionChange( 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< Item extends AnyItem >( {\n\tselection,\n\tactionsToShow,\n\tselectedItems,\n\tonSelectionChange,\n}: ToolbarContentProps< Item > ) {\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\tconst buttons = useRef< JSX.Element | null >( 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\tonSelectionChange\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\tonSelectionChange\n\t\t);\n\t}\n\treturn buttons.current;\n}\n\nexport default function BulkActionsToolbar< Item extends AnyItem >( {\n\tdata,\n\tselection,\n\tactions = EMPTY_ARRAY,\n\tonSelectionChange,\n\tgetItemId,\n}: BulkActionsToolbarProps< Item > ) {\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(\n\t\t\t\t\t\t( item ) =>\n\t\t\t\t\t\t\t! action.isEligible || action.isEligible( item )\n\t\t\t\t\t)\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\tonSelectionChange={ onSelectionChange }\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":[]}
1
+ {"version":3,"names":["_components","require","_element","_i18n","_icons","_compose","_data","_itemActions","_jsxRuntime","SNACKBAR_VARIANTS","init","bottom","open","transition","type","duration","ease","exit","opacity","ActionTrigger","action","onClick","isBusy","items","label","jsx","ToolbarButton","disabled","icon","isDestructive","size","tooltipPosition","EMPTY_ARRAY","ActionButton","selectedItems","actionInProgress","setActionInProgress","registry","useRegistry","selectedEligibleItems","useMemo","filter","item","isEligible","ActionWithModal","id","callback","renderToolbarContent","selection","actionsToShow","onSelectionChange","jsxs","Fragment","children","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.tsx"],"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';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { ActionWithModal } from './item-actions';\nimport type { Action } from './types';\nimport type { ActionTriggerProps } from './item-actions';\nimport type { SetSelection } from './private-types';\n\ninterface ActionButtonProps< Item > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tactionInProgress: string | null;\n\tsetActionInProgress: ( actionId: string | null ) => void;\n}\n\ninterface ToolbarContentProps< Item > {\n\tselection: string[];\n\tactionsToShow: Action< Item >[];\n\tselectedItems: Item[];\n\tonSelectionChange: SetSelection;\n}\n\ninterface BulkActionsToolbarProps< Item > {\n\tdata: Item[];\n\tselection: string[];\n\tactions: Action< Item >[];\n\tonSelectionChange: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n}\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< Item >( {\n\taction,\n\tonClick,\n\tisBusy,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled={ isBusy }\n\t\t\tlabel={ 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\ttooltipPosition=\"top\"\n\t\t/>\n\t);\n}\n\nconst EMPTY_ARRAY: [] = [];\n\nfunction ActionButton< Item >( {\n\taction,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n}: ActionButtonProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst selectedEligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => {\n\t\t\treturn ! action.isEligible || action.isEligible( item );\n\t\t} );\n\t}, [ action, selectedItems ] );\n\tif ( 'RenderModal' in action ) {\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/>\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\tonClick={ () => {\n\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\taction.callback( selectedItems, {\n\t\t\t\t\tregistry,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\titems={ selectedEligibleItems }\n\t\t\tisBusy={ actionInProgress === action.id }\n\t\t/>\n\t);\n}\n\nfunction renderToolbarContent< Item >(\n\tselection: string[],\n\tactionsToShow: Action< Item >[],\n\tselectedItems: Item[],\n\tactionInProgress: string | null,\n\tsetActionInProgress: ( actionId: string | null ) => void,\n\tonSelectionChange: SetSelection\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\tonSelectionChange( 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< Item >( {\n\tselection,\n\tactionsToShow,\n\tselectedItems,\n\tonSelectionChange,\n}: ToolbarContentProps< Item > ) {\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\tconst buttons = useRef< JSX.Element | null >( 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\tonSelectionChange\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\tonSelectionChange\n\t\t);\n\t}\n\treturn buttons.current;\n}\n\nexport default function BulkActionsToolbar< Item >( {\n\tdata,\n\tselection,\n\tactions = EMPTY_ARRAY,\n\tonSelectionChange,\n\tgetItemId,\n}: BulkActionsToolbarProps< Item > ) {\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(\n\t\t\t\t\t\t( item ) =>\n\t\t\t\t\t\t\t! action.isEligible || action.isEligible( item )\n\t\t\t\t\t)\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\tonSelectionChange={ onSelectionChange }\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":[]}
@@ -9,6 +9,7 @@ exports.useSomeItemHasAPossibleBulkAction = useSomeItemHasAPossibleBulkAction;
9
9
  var _components = require("@wordpress/components");
10
10
  var _i18n = require("@wordpress/i18n");
11
11
  var _element = require("@wordpress/element");
12
+ var _data = require("@wordpress/data");
12
13
  var _lockUnlock = require("./lock-unlock");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  /**
@@ -75,6 +76,7 @@ function BulkActionItem({
75
76
  selectedItems,
76
77
  setActionWithModal
77
78
  }) {
79
+ const registry = (0, _data.useRegistry)();
78
80
  const eligibleItems = (0, _element.useMemo)(() => {
79
81
  return selectedItems.filter(item => !action.isEligible || action.isEligible(item));
80
82
  }, [action, selectedItems]);
@@ -86,7 +88,9 @@ function BulkActionItem({
86
88
  if (shouldShowModal) {
87
89
  setActionWithModal(action);
88
90
  } else {
89
- await action.callback(eligibleItems);
91
+ action.callback(eligibleItems, {
92
+ registry
93
+ });
90
94
  }
91
95
  },
92
96
  suffix: eligibleItems.length > 0 ? eligibleItems.length : undefined,
@@ -124,24 +128,10 @@ function BulkActions({
124
128
  });
125
129
  }, [data, bulkActions]);
126
130
  const numberSelectableItems = selectableItems.length;
127
- const areAllSelected = selection && selection.length === numberSelectableItems;
128
131
  const selectedItems = (0, _element.useMemo)(() => {
129
- return data.filter(item => selection.includes(getItemId(item)));
130
- }, [selection, data, getItemId]);
131
- const hasNonSelectableItemSelected = (0, _element.useMemo)(() => {
132
- return selectedItems.some(item => {
133
- return !selectableItems.includes(item);
134
- });
135
- }, [selectedItems, selectableItems]);
136
- (0, _element.useEffect)(() => {
137
- if (hasNonSelectableItemSelected) {
138
- onSelectionChange(selectedItems.filter(selectedItem => {
139
- return selectableItems.some(item => {
140
- return getItemId(selectedItem) === getItemId(item);
141
- });
142
- }));
143
- }
144
- }, [hasNonSelectableItemSelected, selectedItems, selectableItems, getItemId, onSelectionChange]);
132
+ return data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item));
133
+ }, [selection, data, getItemId, selectableItems]);
134
+ const areAllSelected = selectedItems.length === numberSelectableItems;
145
135
  if (bulkActions.length === 0) {
146
136
  return null;
147
137
  }
@@ -158,8 +148,8 @@ function BulkActions({
158
148
  __next40pxDefaultSize: true,
159
149
  variant: "tertiary",
160
150
  size: "compact",
161
- children: selection.length ? (0, _i18n.sprintf)( /* translators: %d: Number of items. */
162
- (0, _i18n._n)('Edit %d item', 'Edit %d items', selection.length), selection.length) : (0, _i18n.__)('Bulk edit')
151
+ children: selectedItems.length ? (0, _i18n.sprintf)( /* translators: %d: Number of items. */
152
+ (0, _i18n._n)('Edit %d item', 'Edit %d items', selectedItems.length), selectedItems.length) : (0, _i18n.__)('Bulk edit')
163
153
  }),
164
154
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ActionsMenuGroup, {
165
155
  actions: bulkActions,
@@ -170,7 +160,7 @@ function BulkActions({
170
160
  disabled: areAllSelected,
171
161
  hideOnClick: false,
172
162
  onClick: () => {
173
- onSelectionChange(selectableItems);
163
+ onSelectionChange(selectableItems.map(item => getItemId(item)));
174
164
  },
175
165
  suffix: numberSelectableItems,
176
166
  children: (0, _i18n.__)('Select all')
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","_jsxRuntime","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","label","jsx","Modal","title","__experimentalHideHeader","onRequestClose","overlayClassName","children","items","closeModal","onActionPerformed","BulkActionItem","shouldShowModal","disabled","length","hideOnClick","onClick","callback","suffix","id","ActionsMenuGroup","jsxs","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\tconst label =\n\t\ttypeof action.label === 'string'\n\t\t\t? action.label\n\t\t\t: action.label( selectedItems );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ ! hideModalHeader ? 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":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_data","_lockUnlock","_jsxRuntime","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","label","jsx","Modal","title","__experimentalHideHeader","onRequestClose","overlayClassName","children","items","closeModal","onActionPerformed","BulkActionItem","registry","useRegistry","shouldShowModal","disabled","length","hideOnClick","onClick","callback","suffix","id","ActionsMenuGroup","jsxs","Fragment","map","BulkActions","selection","onSelectionChange","getItemId","bulkActions","isMenuOpen","useState","actionWithModal","selectableItems","numberSelectableItems","includes","areAllSelected","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 } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { Action, ActionModal } from './types';\nimport type { SetSelection } from './private-types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n} = unlock( componentsPrivateApis );\n\ninterface ActionWithModalProps< Item > {\n\taction: ActionModal< Item >;\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n\tonMenuOpenChange: ( isOpen: boolean ) => void;\n}\n\ninterface BulkActionsItemProps< Item > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n}\n\ninterface ActionsMenuGroupProps< Item > {\n\tactions: Action< Item >[];\n\tselectedItems: Item[];\n\tsetActionWithModal: ( action?: ActionModal< Item > ) => void;\n}\n\ninterface BulkActionsProps< Item > {\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tselection: string[];\n\tonSelectionChange: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n}\n\nexport function useHasAPossibleBulkAction< Item >(\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 >(\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 >( {\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\tconst label =\n\t\ttypeof action.label === 'string'\n\t\t\t? action.label\n\t\t\t: action.label( selectedItems );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ ! hideModalHeader ? 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 >( {\n\taction,\n\tselectedItems,\n\tsetActionWithModal,\n}: BulkActionsItemProps< Item > ) {\n\tconst registry = useRegistry();\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\taction.callback( eligibleItems, { registry } );\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 >( {\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 >( {\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\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter(\n\t\t\t( item ) =>\n\t\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\t\tselectableItems.includes( item )\n\t\t);\n\t}, [ selection, data, getItemId, selectableItems ] );\n\n\tconst areAllSelected = selectedItems.length === numberSelectableItems;\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{ selectedItems.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\tselectedItems.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tselectedItems.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(\n\t\t\t\t\t\t\t\tselectableItems.map( ( item ) =>\n\t\t\t\t\t\t\t\t\tgetItemId( item )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\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":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = DataForm;
7
+ var _components = require("@wordpress/components");
8
+ var _element = require("@wordpress/element");
9
+ var _normalizeFields = require("./normalize-fields");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /**
12
+ * External dependencies
13
+ */
14
+
15
+ /**
16
+ * WordPress dependencies
17
+ */
18
+
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+
23
+ function DataFormTextControl({
24
+ data,
25
+ field,
26
+ onChange
27
+ }) {
28
+ const {
29
+ id,
30
+ header,
31
+ placeholder
32
+ } = field;
33
+ const value = field.getValue({
34
+ item: data
35
+ });
36
+ const onChangeControl = (0, _element.useCallback)(newValue => onChange(prevItem => ({
37
+ ...prevItem,
38
+ [id]: newValue
39
+ })), [id, onChange]);
40
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextControl, {
41
+ label: header,
42
+ placeholder: placeholder,
43
+ value: value,
44
+ onChange: onChangeControl,
45
+ __next40pxDefaultSize: true
46
+ });
47
+ }
48
+ const controls = {
49
+ text: DataFormTextControl
50
+ };
51
+ function getControlForField(field) {
52
+ if (!field.type) {
53
+ return null;
54
+ }
55
+ if (!Object.keys(controls).includes(field.type)) {
56
+ return null;
57
+ }
58
+ return controls[field.type];
59
+ }
60
+ function DataForm({
61
+ data,
62
+ fields,
63
+ form,
64
+ onChange
65
+ }) {
66
+ const visibleFields = (0, _element.useMemo)(() => (0, _normalizeFields.normalizeFields)(fields.filter(({
67
+ id
68
+ }) => !!form.visibleFields?.includes(id))), [fields, form.visibleFields]);
69
+ return visibleFields.map(field => {
70
+ const DataFormControl = getControlForField(field);
71
+ return DataFormControl ? /*#__PURE__*/(0, _jsxRuntime.jsx)(DataFormControl, {
72
+ data: data,
73
+ field: field,
74
+ onChange: onChange
75
+ }, field.id) : null;
76
+ });
77
+ }
78
+ //# sourceMappingURL=dataform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_element","_normalizeFields","_jsxRuntime","DataFormTextControl","data","field","onChange","id","header","placeholder","value","getValue","item","onChangeControl","useCallback","newValue","prevItem","jsx","TextControl","label","__next40pxDefaultSize","controls","text","getControlForField","type","Object","keys","includes","DataForm","fields","form","visibleFields","useMemo","normalizeFields","filter","map","DataFormControl"],"sources":["@wordpress/dataviews/src/dataform.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { Dispatch, SetStateAction } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { TextControl } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { Form, Field, NormalizedField } from './types';\nimport { normalizeFields } from './normalize-fields';\n\ntype DataFormProps< Item > = {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: Dispatch< SetStateAction< Item > >;\n};\n\ntype DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: Dispatch< SetStateAction< Item > >;\n};\n\nfunction DataFormTextControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: DataFormControlProps< Item > ) {\n\tconst { id, header, placeholder } = field;\n\tconst value = field.getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( ( prevItem: Item ) => ( {\n\t\t\t\t...prevItem,\n\t\t\t\t[ id ]: newValue,\n\t\t\t} ) ),\n\t\t[ id, onChange ]\n\t);\n\n\treturn (\n\t\t<TextControl\n\t\t\tlabel={ header }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t/>\n\t);\n}\n\nconst controls: {\n\t[ key: string ]: < Item >(\n\t\tprops: DataFormControlProps< Item >\n\t) => JSX.Element;\n} = {\n\ttext: DataFormTextControl,\n};\n\nfunction getControlForField< Item >( field: NormalizedField< Item > ) {\n\tif ( ! field.type ) {\n\t\treturn null;\n\t}\n\n\tif ( ! Object.keys( controls ).includes( field.type ) ) {\n\t\treturn null;\n\t}\n\n\treturn controls[ field.type ];\n}\n\nexport default function DataForm< Item >( {\n\tdata,\n\tfields,\n\tform,\n\tonChange,\n}: DataFormProps< Item > ) {\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tnormalizeFields(\n\t\t\t\tfields.filter(\n\t\t\t\t\t( { id } ) => !! form.visibleFields?.includes( id )\n\t\t\t\t)\n\t\t\t),\n\t\t[ fields, form.visibleFields ]\n\t);\n\n\treturn visibleFields.map( ( field ) => {\n\t\tconst DataFormControl = getControlForField( field );\n\t\treturn DataFormControl ? (\n\t\t\t<DataFormControl\n\t\t\t\tkey={ field.id }\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t/>\n\t\t) : null;\n\t} );\n}\n"],"mappings":";;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAMA,IAAAE,gBAAA,GAAAF,OAAA;AAAqD,IAAAG,WAAA,GAAAH,OAAA;AAfrD;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAiBA,SAASI,mBAAmBA,CAAU;EACrCC,IAAI;EACJC,KAAK;EACLC;AAC6B,CAAC,EAAG;EACjC,MAAM;IAAEC,EAAE;IAAEC,MAAM;IAAEC;EAAY,CAAC,GAAGJ,KAAK;EACzC,MAAMK,KAAK,GAAGL,KAAK,CAACM,QAAQ,CAAE;IAAEC,IAAI,EAAER;EAAK,CAAE,CAAC;EAE9C,MAAMS,eAAe,GAAG,IAAAC,oBAAW,EAChCC,QAAgB,IACjBT,QAAQ,CAAIU,QAAc,KAAQ;IACjC,GAAGA,QAAQ;IACX,CAAET,EAAE,GAAIQ;EACT,CAAC,CAAG,CAAC,EACN,CAAER,EAAE,EAAED,QAAQ,CACf,CAAC;EAED,oBACC,IAAAJ,WAAA,CAAAe,GAAA,EAACnB,WAAA,CAAAoB,WAAW;IACXC,KAAK,EAAGX,MAAQ;IAChBC,WAAW,EAAGA,WAAa;IAC3BC,KAAK,EAAGA,KAAO;IACfJ,QAAQ,EAAGO,eAAiB;IAC5BO,qBAAqB;EAAA,CACrB,CAAC;AAEJ;AAEA,MAAMC,QAIL,GAAG;EACHC,IAAI,EAAEnB;AACP,CAAC;AAED,SAASoB,kBAAkBA,CAAUlB,KAA8B,EAAG;EACrE,IAAK,CAAEA,KAAK,CAACmB,IAAI,EAAG;IACnB,OAAO,IAAI;EACZ;EAEA,IAAK,CAAEC,MAAM,CAACC,IAAI,CAAEL,QAAS,CAAC,CAACM,QAAQ,CAAEtB,KAAK,CAACmB,IAAK,CAAC,EAAG;IACvD,OAAO,IAAI;EACZ;EAEA,OAAOH,QAAQ,CAAEhB,KAAK,CAACmB,IAAI,CAAE;AAC9B;AAEe,SAASI,QAAQA,CAAU;EACzCxB,IAAI;EACJyB,MAAM;EACNC,IAAI;EACJxB;AACsB,CAAC,EAAG;EAC1B,MAAMyB,aAAa,GAAG,IAAAC,gBAAO,EAC5B,MACC,IAAAC,gCAAe,EACdJ,MAAM,CAACK,MAAM,CACZ,CAAE;IAAE3B;EAAG,CAAC,KAAM,CAAC,CAAEuB,IAAI,CAACC,aAAa,EAAEJ,QAAQ,CAAEpB,EAAG,CACnD,CACD,CAAC,EACF,CAAEsB,MAAM,EAAEC,IAAI,CAACC,aAAa,CAC7B,CAAC;EAED,OAAOA,aAAa,CAACI,GAAG,CAAI9B,KAAK,IAAM;IACtC,MAAM+B,eAAe,GAAGb,kBAAkB,CAAElB,KAAM,CAAC;IACnD,OAAO+B,eAAe,gBACrB,IAAAlC,WAAA,CAAAe,GAAA,EAACmB,eAAe;MAEfhC,IAAI,EAAGA,IAAM;MACbC,KAAK,EAAGA,KAAO;MACfC,QAAQ,EAAGA;IAAU,GAHfD,KAAK,CAACE,EAIZ,CAAC,GACC,IAAI;EACT,CAAE,CAAC;AACJ","ignoreList":[]}
@@ -13,10 +13,12 @@ var _filters = _interopRequireDefault(require("./filters"));
13
13
  var _search = _interopRequireDefault(require("./search"));
14
14
  var _constants = require("./constants");
15
15
  var _layouts = require("./layouts");
16
- var _bulkActions = _interopRequireDefault(require("./bulk-actions"));
16
+ var _bulkActions = _interopRequireWildcard(require("./bulk-actions"));
17
17
  var _normalizeFields = require("./normalize-fields");
18
18
  var _bulkActionsToolbar = _interopRequireDefault(require("./bulk-actions-toolbar"));
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
22
  /**
21
23
  * External dependencies
22
24
  */
@@ -31,15 +33,6 @@ var _jsxRuntime = require("react/jsx-runtime");
31
33
 
32
34
  const defaultGetItemId = item => item.id;
33
35
  const defaultOnSelectionChange = () => {};
34
- function useSomeItemHasAPossibleBulkAction(actions, data) {
35
- return (0, _element.useMemo)(() => {
36
- return data.some(item => {
37
- return actions.some(action => {
38
- return action.supportsBulk && (!action.isEligible || action.isEligible(item));
39
- });
40
- });
41
- }, [actions, data]);
42
- }
43
36
  function DataViews({
44
37
  view,
45
38
  onChangeView,
@@ -51,25 +44,27 @@ function DataViews({
51
44
  getItemId = defaultGetItemId,
52
45
  isLoading = false,
53
46
  paginationInfo,
54
- supportedLayouts,
47
+ defaultLayouts,
48
+ selection: selectionProperty,
49
+ setSelection: setSelectionProperty,
55
50
  onSelectionChange = defaultOnSelectionChange
56
51
  }) {
57
- const [selection, setSelection] = (0, _element.useState)([]);
52
+ const [selectionState, setSelectionState] = (0, _element.useState)([]);
53
+ const isUncontrolled = selectionProperty === undefined || setSelectionProperty === undefined;
54
+ const selection = isUncontrolled ? selectionState : selectionProperty;
55
+ const setSelection = isUncontrolled ? setSelectionState : setSelectionProperty;
58
56
  const [openedFilter, setOpenedFilter] = (0, _element.useState)(null);
59
- (0, _element.useEffect)(() => {
60
- if (selection.length > 0 && selection.some(id => !data.some(item => getItemId(item) === id))) {
61
- const newSelection = selection.filter(id => data.some(item => getItemId(item) === id));
62
- setSelection(newSelection);
63
- onSelectionChange(data.filter(item => newSelection.includes(getItemId(item))));
64
- }
65
- }, [selection, data, getItemId, onSelectionChange]);
66
- const onSetSelection = (0, _element.useCallback)(items => {
67
- setSelection(items.map(item => getItemId(item)));
68
- onSelectionChange(items);
69
- }, [setSelection, getItemId, onSelectionChange]);
57
+ function setSelectionWithChange(value) {
58
+ const newValue = typeof value === 'function' ? value(selection) : value;
59
+ onSelectionChange(data.filter(item => newValue.includes(getItemId(item))));
60
+ return setSelection(value);
61
+ }
70
62
  const ViewComponent = _layouts.VIEW_LAYOUTS.find(v => v.type === view.type)?.component;
71
63
  const _fields = (0, _element.useMemo)(() => (0, _normalizeFields.normalizeFields)(fields), [fields]);
72
- const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(actions, data);
64
+ const hasPossibleBulkAction = (0, _bulkActions.useSomeItemHasAPossibleBulkAction)(actions, data);
65
+ const _selection = (0, _element.useMemo)(() => {
66
+ return selection.filter(id => data.some(item => getItemId(item) === id));
67
+ }, [selection, data, getItemId]);
73
68
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
74
69
  className: "dataviews-wrapper",
75
70
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
@@ -94,14 +89,14 @@ function DataViews({
94
89
  }), [_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && /*#__PURE__*/(0, _jsxRuntime.jsx)(_bulkActions.default, {
95
90
  actions: actions,
96
91
  data: data,
97
- onSelectionChange: onSetSelection,
98
- selection: selection,
92
+ onSelectionChange: setSelectionWithChange,
93
+ selection: _selection,
99
94
  getItemId: getItemId
100
95
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_viewActions.default, {
101
96
  fields: _fields,
102
97
  view: view,
103
98
  onChangeView: onChangeView,
104
- supportedLayouts: supportedLayouts
99
+ defaultLayouts: defaultLayouts
105
100
  })]
106
101
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ViewComponent, {
107
102
  actions: actions,
@@ -110,8 +105,8 @@ function DataViews({
110
105
  getItemId: getItemId,
111
106
  isLoading: isLoading,
112
107
  onChangeView: onChangeView,
113
- onSelectionChange: onSetSelection,
114
- selection: selection,
108
+ onSelectionChange: setSelectionWithChange,
109
+ selection: _selection,
115
110
  setOpenedFilter: setOpenedFilter,
116
111
  view: view
117
112
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_pagination.default, {
@@ -121,8 +116,8 @@ function DataViews({
121
116
  }), [_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && /*#__PURE__*/(0, _jsxRuntime.jsx)(_bulkActionsToolbar.default, {
122
117
  data: data,
123
118
  actions: actions,
124
- selection: selection,
125
- onSelectionChange: onSetSelection,
119
+ selection: _selection,
120
+ onSelectionChange: setSelectionWithChange,
126
121
  getItemId: getItemId
127
122
  })]
128
123
  });