@wordpress/dataviews 0.6.0 → 0.8.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 (86) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +48 -15
  3. package/build/add-filter.js +0 -2
  4. package/build/add-filter.js.map +1 -1
  5. package/build/bulk-actions.js +41 -3
  6. package/build/bulk-actions.js.map +1 -1
  7. package/build/constants.js +28 -7
  8. package/build/constants.js.map +1 -1
  9. package/build/dataviews.js +34 -21
  10. package/build/dataviews.js.map +1 -1
  11. package/build/filter-summary.js +33 -12
  12. package/build/filter-summary.js.map +1 -1
  13. package/build/filters.js +10 -2
  14. package/build/filters.js.map +1 -1
  15. package/build/item-actions.js +20 -39
  16. package/build/item-actions.js.map +1 -1
  17. package/build/pagination.js +4 -3
  18. package/build/pagination.js.map +1 -1
  19. package/build/reset-filters.js +2 -1
  20. package/build/reset-filters.js.map +1 -1
  21. package/build/search-widget.js +117 -8
  22. package/build/search-widget.js.map +1 -1
  23. package/build/single-selection-checkbox.js +7 -2
  24. package/build/single-selection-checkbox.js.map +1 -1
  25. package/build/utils.js +24 -2
  26. package/build/utils.js.map +1 -1
  27. package/build/view-actions.js.map +1 -1
  28. package/build/view-grid.js +12 -13
  29. package/build/view-grid.js.map +1 -1
  30. package/build/view-list.js +1 -1
  31. package/build/view-list.js.map +1 -1
  32. package/build/view-table.js +111 -47
  33. package/build/view-table.js.map +1 -1
  34. package/build-module/add-filter.js +0 -2
  35. package/build-module/add-filter.js.map +1 -1
  36. package/build-module/bulk-actions.js +40 -4
  37. package/build-module/bulk-actions.js.map +1 -1
  38. package/build-module/constants.js +27 -6
  39. package/build-module/constants.js.map +1 -1
  40. package/build-module/dataviews.js +35 -22
  41. package/build-module/dataviews.js.map +1 -1
  42. package/build-module/filter-summary.js +34 -13
  43. package/build-module/filter-summary.js.map +1 -1
  44. package/build-module/filters.js +11 -3
  45. package/build-module/filters.js.map +1 -1
  46. package/build-module/item-actions.js +20 -39
  47. package/build-module/item-actions.js.map +1 -1
  48. package/build-module/pagination.js +4 -3
  49. package/build-module/pagination.js.map +1 -1
  50. package/build-module/reset-filters.js +2 -1
  51. package/build-module/reset-filters.js.map +1 -1
  52. package/build-module/search-widget.js +120 -11
  53. package/build-module/search-widget.js.map +1 -1
  54. package/build-module/single-selection-checkbox.js +7 -2
  55. package/build-module/single-selection-checkbox.js.map +1 -1
  56. package/build-module/utils.js +25 -3
  57. package/build-module/utils.js.map +1 -1
  58. package/build-module/view-actions.js.map +1 -1
  59. package/build-module/view-grid.js +13 -14
  60. package/build-module/view-grid.js.map +1 -1
  61. package/build-module/view-list.js +2 -2
  62. package/build-module/view-list.js.map +1 -1
  63. package/build-module/view-table.js +113 -49
  64. package/build-module/view-table.js.map +1 -1
  65. package/build-style/style-rtl.css +76 -46
  66. package/build-style/style.css +76 -46
  67. package/package.json +11 -11
  68. package/src/add-filter.js +0 -2
  69. package/src/bulk-actions.js +54 -4
  70. package/src/constants.js +35 -6
  71. package/src/dataviews.js +66 -49
  72. package/src/filter-summary.js +76 -23
  73. package/src/filters.js +16 -5
  74. package/src/item-actions.js +19 -55
  75. package/src/pagination.js +8 -3
  76. package/src/reset-filters.js +2 -1
  77. package/src/search-widget.js +182 -15
  78. package/src/single-selection-checkbox.js +7 -1
  79. package/src/stories/fixtures.js +12 -1
  80. package/src/stories/index.story.js +43 -4
  81. package/src/style.scss +108 -73
  82. package/src/utils.js +38 -4
  83. package/src/view-actions.js +1 -1
  84. package/src/view-grid.js +13 -12
  85. package/src/view-list.js +2 -1
  86. package/src/view-table.js +162 -81
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.8.0 (2024-03-21)
6
+
7
+ ### Enhancement
8
+
9
+ - 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.
10
+ - 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.
11
+
12
+ ## 0.7.0 (2024-03-06)
13
+
5
14
  ## 0.6.0 (2024-02-21)
6
15
 
7
16
  ## 0.5.0 (2024-02-09)
package/README.md CHANGED
@@ -59,17 +59,23 @@ The fields describe the visible items for each record in the dataset.
59
59
  Example:
60
60
 
61
61
  ```js
62
+ const STATUSES = [
63
+ { value: 'draft', label: __( 'Draft' ) },
64
+ { value: 'future', label: __( 'Scheduled' ) },
65
+ { value: 'pending', label: __( 'Pending Review' ) },
66
+ { value: 'private', label: __( 'Private' ) },
67
+ { value: 'publish', label: __( 'Published' ) },
68
+ { value: 'trash', label: __( 'Trash' ) },
69
+ ];
62
70
  const fields = [
63
71
  {
64
72
  id: 'title',
65
73
  header: 'Title',
66
- getValue: ({ item }) => item.title,
67
74
  enableHiding: false,
68
75
  },
69
76
  {
70
77
  id: 'date',
71
78
  header: 'Date',
72
- getValue: ( { item } ) => item.date,
73
79
  render: ( { item } ) => {
74
80
  return (
75
81
  <time>{ getFormattedDate( item.date ) }</time>
@@ -79,7 +85,6 @@ const fields = [
79
85
  {
80
86
  id: 'author',
81
87
  header: __( 'Author' ),
82
- getValue: ( { item } ) => item.author,
83
88
  render: ( { item } ) => {
84
89
  return (
85
90
  <a href="...">{ item.author }</a>
@@ -89,9 +94,25 @@ const fields = [
89
94
  elements: [
90
95
  { value: 1, label: 'Admin' }
91
96
  { value: 2, label: 'User' }
92
- ]
97
+ ],
98
+ filterBy: {
99
+ operators: [ 'is', 'isNot' ]
100
+ },
93
101
  enableSorting: false
94
- }
102
+ },
103
+ {
104
+ header: __( 'Status' ),
105
+ id: 'status',
106
+ getValue: ( { item } ) =>
107
+ STATUSES.find( ( { value } ) => value === item.status )
108
+ ?.label ?? item.status,
109
+ type: 'enumeration',
110
+ elements: STATUSES,
111
+ filterBy: {
112
+ operators: [ 'isAny' ],
113
+ },
114
+ enableSorting: false,
115
+ },
95
116
  ]
96
117
  ```
97
118
 
@@ -99,7 +120,7 @@ Each field is an object with the following properties:
99
120
 
100
121
  - `id`: identifier for the field. Unique.
101
122
  - `header`: the field's name to be shown in the UI.
102
- - `getValue`: function that returns the value of the field.
123
+ - `getValue`: function that returns the value of the field, defaults to `field[id]`.
103
124
  - `render`: function that renders the field. Optional, `getValue` will be used if `render` is not defined.
104
125
  - `elements`: the set of valid values for the field's value.
105
126
  - `type`: the type of the field. Used to generate the proper filters. Only `enumeration` available at the moment. See "Field types".
@@ -120,8 +141,8 @@ const view = {
120
141
  type: 'table',
121
142
  search: '',
122
143
  filters: [
123
- { field: 'author', operator: 'in', value: 2 },
124
- { field: 'status', operator: 'in', value: 'publish,draft' }
144
+ { field: 'author', operator: 'is', value: 2 },
145
+ { field: 'status', operator: 'isAny', value: [ 'publish', 'draft'] }
125
146
  ],
126
147
  page: 1,
127
148
  perPage: 5,
@@ -140,7 +161,7 @@ Properties:
140
161
  - `search`: the text search applied to the dataset.
141
162
  - `filters`: the filters applied to the dataset. Each item describes:
142
163
  - `field`: which field this filter is bound to.
143
- - `operator`: which type of filter it is. One of `in`, `notIn`. See "Operator types".
164
+ - `operator`: which type of filter it is. See "Operator types".
144
165
  - `value`: the actual value selected by the user.
145
166
  - `perPage`: number of records to show per page.
146
167
  - `page`: the page that is visible.
@@ -172,8 +193,8 @@ function MyCustomPageTable() {
172
193
  },
173
194
  search: '',
174
195
  filters: [
175
- { field: 'author', operator: 'in', value: 2 },
176
- { field: 'status', operator: 'in', value: 'publish,draft' }
196
+ { field: 'author', operator: 'is', value: 2 },
197
+ { field: 'status', operator: 'isAny', value: [ 'publish', 'draft' ] }
177
198
  ],
178
199
  hiddenFields: [ 'date', 'featured-image' ],
179
200
  layout: {},
@@ -182,10 +203,10 @@ function MyCustomPageTable() {
182
203
  const queryArgs = useMemo( () => {
183
204
  const filters = {};
184
205
  view.filters.forEach( ( filter ) => {
185
- if ( filter.field === 'status' && filter.operator === 'in' ) {
206
+ if ( filter.field === 'status' && filter.operator === 'isAny' ) {
186
207
  filters.status = filter.value;
187
208
  }
188
- if ( filter.field === 'author' && filter.operator === 'in' ) {
209
+ if ( filter.field === 'author' && filter.operator === 'is' ) {
189
210
  filters.author = filter.value;
190
211
  }
191
212
  } );
@@ -282,8 +303,20 @@ Callback that signals the user triggered the details for one of more items, and
282
303
 
283
304
  ### Operators
284
305
 
285
- - `in`: operator to be used in filters for fields of type `enumeration`.
286
- - `notIn`: operator to be used in filters for fields of type `enumeration`.
306
+ Allowed operators for fields of type `enumeration`:
307
+
308
+ | Operator | Selection | Description | Example |
309
+ | --- | --- | --- | --- |
310
+ | `is` | Single item | `EQUAL TO`. The item's field is equal to a single value. | Author is Admin |
311
+ | `isNot` | Single item | `NOT EQUAL TO`. The item's field is not equal to a single value. | Author is not Admin |
312
+ | `isAny` | Multiple items | `OR`. The item's field is present in a list of values. | Author is any: Admin, Editor |
313
+ | `isNone` | Multiple items | `NOT OR`. The item's field is not present in a list of values. | Author is none: Admin, Editor |
314
+ | `isAll` | Multiple items | `AND`. The item's field has all of the values in the list. | Category is all: Book, Review, Science Fiction |
315
+ | `isNotAll` | Multiple items | `NOT AND`. The item's field doesn't have all of the values in the list. | Category is not all: Book, Review, Science Fiction |
316
+
317
+ `is` and `isNot` are single-selection operators, while `isAny`, `isNone`, `isAll`, and `isNotALl` are multi-selection. By default, a filter with no operators declared will support the `isAny` and `isNone` multi-selection operators. A filter cannot mix single-selection & multi-selection operators; if a single-selection operator is present in the list of valid operators, the multi-selection ones will be discarded and the filter won't allow selecting more than one item.
318
+
319
+ > The legacy operators `in` and `notIn` have been deprecated and will be removed soon. In the meantime, they work as `is` and `isNot` operators, respectively.
287
320
 
288
321
  ## Contributing to this package
289
322
 
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = require("react");
8
8
  var _components = require("@wordpress/components");
9
- var _icons = require("@wordpress/icons");
10
9
  var _i18n = require("@wordpress/i18n");
11
10
  var _element = require("@wordpress/element");
12
11
  var _lockUnlock = require("./lock-unlock");
@@ -39,7 +38,6 @@ function AddFilter({
39
38
  trigger: (0, _react.createElement)(_components.Button, {
40
39
  __experimentalIsFocusable: true,
41
40
  size: "compact",
42
- icon: _icons.plus,
43
41
  className: "dataviews-filters-button",
44
42
  variant: "tertiary",
45
43
  disabled: !inactiveFilters.length,
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_icons","_i18n","_element","_lockUnlock","DropdownMenuV2","DropdownMenu","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","unlock","componentsPrivateApis","AddFilter","filters","view","onChangeView","setOpenedFilter","ref","length","every","isPrimary","inactiveFilters","filter","isVisible","_react","createElement","trigger","Button","__experimentalIsFocusable","size","icon","plus","className","variant","disabled","__","map","key","field","onClick","page","value","undefined","operator","operators","name","_default","exports","default","forwardRef"],"sources":["@wordpress/dataviews/src/add-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { plus } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\nfunction AddFilter( { filters, view, onChangeView, setOpenedFilter }, ref ) {\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\ticon={ plus }\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":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAKA,IAAAI,WAAA,GAAAJ,OAAA;AAdA;AACA;AACA;;AASA;AACA;AACA;;AAGA,MAAM;EACLK,cAAc,EAAEC,YAAY;EAC5BC,kBAAkB,EAAEC,gBAAgB;EACpCC,uBAAuB,EAAEC;AAC1B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEnC,SAASC,SAASA,CAAE;EAAEC,OAAO;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAgB,CAAC,EAAEC,GAAG,EAAG;EAC3E,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,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACpB,YAAY;IACZqB,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAC3B,WAAA,CAAA6B,MAAM;MACNC,yBAAyB;MACzBC,IAAI,EAAC,SAAS;MACdC,IAAI,EAAGC,WAAM;MACbC,SAAS,EAAC,0BAA0B;MACpCC,OAAO,EAAC,UAAU;MAClBC,QAAQ,EAAG,CAAEb,eAAe,CAACH,MAAQ;MACrCD,GAAG,EAAGA;IAAK,GAET,IAAAkB,QAAE,EAAE,YAAa,CACZ;EACR,GAECd,eAAe,CAACe,GAAG,CAAId,MAAM,IAAM;IACpC,OACC,IAAAE,MAAA,CAAAC,aAAA,EAAClB,gBAAgB;MAChB8B,GAAG,EAAGf,MAAM,CAACgB,KAAO;MACpBC,OAAO,EAAGA,CAAA,KAAM;QACfvB,eAAe,CAAEM,MAAM,CAACgB,KAAM,CAAC;QAC/BvB,YAAY,CAAE;UACb,GAAGD,IAAI;UACP0B,IAAI,EAAE,CAAC;UACP3B,OAAO,EAAE,CACR,IAAKC,IAAI,CAACD,OAAO,IAAI,EAAE,CAAE,EACzB;YACCyB,KAAK,EAAEhB,MAAM,CAACgB,KAAK;YACnBG,KAAK,EAAEC,SAAS;YAChBC,QAAQ,EAAErB,MAAM,CAACsB,SAAS,CAAE,CAAC;UAC9B,CAAC;QAEH,CAAE,CAAC;MACJ;IAAG,GAEH,IAAApB,MAAA,CAAAC,aAAA,EAAChB,qBAAqB,QACnBa,MAAM,CAACuB,IACa,CACN,CAAC;EAErB,CAAE,CACW,CAAC;AAEjB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,mBAAU,EAAErC,SAAU,CAAC"}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","DropdownMenuV2","DropdownMenu","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","unlock","componentsPrivateApis","AddFilter","filters","view","onChangeView","setOpenedFilter","ref","length","every","isPrimary","inactiveFilters","filter","isVisible","_react","createElement","trigger","Button","__experimentalIsFocusable","size","className","variant","disabled","__","map","key","field","onClick","page","value","undefined","operator","operators","name","_default","exports","default","forwardRef"],"sources":["@wordpress/dataviews/src/add-filter.js"],"sourcesContent":["/**\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';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\nfunction AddFilter( { filters, view, onChangeView, setOpenedFilter }, ref ) {\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":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAKA,IAAAG,WAAA,GAAAH,OAAA;AAbA;AACA;AACA;;AAQA;AACA;AACA;;AAGA,MAAM;EACLI,cAAc,EAAEC,YAAY;EAC5BC,kBAAkB,EAAEC,gBAAgB;EACpCC,uBAAuB,EAAEC;AAC1B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEnC,SAASC,SAASA,CAAE;EAAEC,OAAO;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAgB,CAAC,EAAEC,GAAG,EAAG;EAC3E,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,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACpB,YAAY;IACZqB,OAAO,EACN,IAAAF,MAAA,CAAAC,aAAA,EAAC1B,WAAA,CAAA4B,MAAM;MACNC,yBAAyB;MACzBC,IAAI,EAAC,SAAS;MACdC,SAAS,EAAC,0BAA0B;MACpCC,OAAO,EAAC,UAAU;MAClBC,QAAQ,EAAG,CAAEX,eAAe,CAACH,MAAQ;MACrCD,GAAG,EAAGA;IAAK,GAET,IAAAgB,QAAE,EAAE,YAAa,CACZ;EACR,GAECZ,eAAe,CAACa,GAAG,CAAIZ,MAAM,IAAM;IACpC,OACC,IAAAE,MAAA,CAAAC,aAAA,EAAClB,gBAAgB;MAChB4B,GAAG,EAAGb,MAAM,CAACc,KAAO;MACpBC,OAAO,EAAGA,CAAA,KAAM;QACfrB,eAAe,CAAEM,MAAM,CAACc,KAAM,CAAC;QAC/BrB,YAAY,CAAE;UACb,GAAGD,IAAI;UACPwB,IAAI,EAAE,CAAC;UACPzB,OAAO,EAAE,CACR,IAAKC,IAAI,CAACD,OAAO,IAAI,EAAE,CAAE,EACzB;YACCuB,KAAK,EAAEd,MAAM,CAACc,KAAK;YACnBG,KAAK,EAAEC,SAAS;YAChBC,QAAQ,EAAEnB,MAAM,CAACoB,SAAS,CAAE,CAAC;UAC9B,CAAC;QAEH,CAAE,CAAC;MACJ;IAAG,GAEH,IAAAlB,MAAA,CAAAC,aAAA,EAAChB,qBAAqB,QACnBa,MAAM,CAACqB,IACa,CACN,CAAC;EAErB,CAAE,CACW,CAAC;AAEjB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,mBAAU,EAAEnC,SAAU,CAAC"}
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = BulkActions;
7
+ exports.useHasAPossibleBulkAction = useHasAPossibleBulkAction;
8
+ exports.useSomeItemHasAPossibleBulkAction = useSomeItemHasAPossibleBulkAction;
7
9
  var _react = require("react");
8
10
  var _components = require("@wordpress/components");
9
11
  var _i18n = require("@wordpress/i18n");
@@ -23,6 +25,22 @@ const {
23
25
  DropdownMenuItemV2: DropdownMenuItem,
24
26
  DropdownMenuSeparatorV2: DropdownMenuSeparator
25
27
  } = (0, _lockUnlock.unlock)(_components.privateApis);
28
+ function useHasAPossibleBulkAction(actions, item) {
29
+ return (0, _element.useMemo)(() => {
30
+ return actions.some(action => {
31
+ return action.supportsBulk && action.isEligible(item);
32
+ });
33
+ }, [actions, item]);
34
+ }
35
+ function useSomeItemHasAPossibleBulkAction(actions, data) {
36
+ return (0, _element.useMemo)(() => {
37
+ return data.some(item => {
38
+ return actions.some(action => {
39
+ return action.supportsBulk && action.isEligible(item);
40
+ });
41
+ });
42
+ }, [actions, data]);
43
+ }
26
44
  function ActionWithModal({
27
45
  action,
28
46
  selectedItems,
@@ -93,12 +111,32 @@ function BulkActions({
93
111
  getItemId
94
112
  }) {
95
113
  const bulkActions = (0, _element.useMemo)(() => actions.filter(action => action.supportsBulk), [actions]);
96
- const areAllSelected = selection && selection.length === data.length;
97
114
  const [isMenuOpen, onMenuOpenChange] = (0, _element.useState)(false);
98
115
  const [actionWithModal, setActionWithModal] = (0, _element.useState)();
116
+ const selectableItems = (0, _element.useMemo)(() => {
117
+ return data.filter(item => {
118
+ return bulkActions.some(action => action.isEligible(item));
119
+ });
120
+ }, [data, bulkActions]);
121
+ const numberSelectableItems = selectableItems.length;
122
+ const areAllSelected = selection && selection.length === numberSelectableItems;
99
123
  const selectedItems = (0, _element.useMemo)(() => {
100
124
  return data.filter(item => selection.includes(getItemId(item)));
101
125
  }, [selection, data, getItemId]);
126
+ const hasNonSelectableItemSelected = (0, _element.useMemo)(() => {
127
+ return selectedItems.some(item => {
128
+ return !selectableItems.includes(item);
129
+ });
130
+ }, [selectedItems, selectableItems]);
131
+ (0, _element.useEffect)(() => {
132
+ if (hasNonSelectableItemSelected) {
133
+ onSelectionChange(selectedItems.filter(selectedItem => {
134
+ return selectableItems.some(item => {
135
+ return getItemId(selectedItem) === getItemId(item);
136
+ });
137
+ }));
138
+ }
139
+ }, [hasNonSelectableItemSelected, selectedItems, selectableItems, getItemId, onSelectionChange]);
102
140
  if (bulkActions.length === 0) {
103
141
  return null;
104
142
  }
@@ -124,9 +162,9 @@ function BulkActions({
124
162
  disabled: areAllSelected,
125
163
  hideOnClick: false,
126
164
  onClick: () => {
127
- onSelectionChange(data);
165
+ onSelectionChange(selectableItems);
128
166
  },
129
- suffix: data.length
167
+ suffix: numberSelectableItems
130
168
  }, (0, _i18n.__)('Select all')), (0, _react.createElement)(DropdownMenuItem, {
131
169
  disabled: selection.length === 0,
132
170
  hideOnClick: false,
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_lockUnlock","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","unlock","componentsPrivateApis","ActionWithModal","action","selectedItems","setActionWithModal","onMenuOpenChange","eligibleItems","useMemo","filter","item","isEligible","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","actions","Fragment","map","BulkActions","data","selection","onSelectionChange","getItemId","bulkActions","supportsBulk","areAllSelected","isMenuOpen","useState","actionWithModal","includes","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 } 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\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 areAllSelected = selection && selection.length === data.length;\n\tconst [ isMenuOpen, onMenuOpenChange ] = useState( false );\n\tconst [ actionWithModal, setActionWithModal ] = useState();\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\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( data );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsuffix={ data.length }\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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"}
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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"}
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.VIEW_LAYOUTS = exports.SORTING_DIRECTIONS = exports.OPERATOR_NOT_IN = exports.OPERATOR_IN = exports.OPERATORS = exports.LAYOUT_TABLE = exports.LAYOUT_LIST = exports.LAYOUT_GRID = exports.ENUMERATION_TYPE = void 0;
7
+ exports.VIEW_LAYOUTS = exports.SORTING_DIRECTIONS = exports.OPERATOR_IS_NOT_ALL = exports.OPERATOR_IS_NOT = exports.OPERATOR_IS_NONE = exports.OPERATOR_IS_ANY = exports.OPERATOR_IS_ALL = exports.OPERATOR_IS = exports.OPERATORS = exports.LAYOUT_TABLE = exports.LAYOUT_LIST = exports.LAYOUT_GRID = exports.ENUMERATION_TYPE = exports.ALL_OPERATORS = void 0;
8
8
  var _i18n = require("@wordpress/i18n");
9
9
  var _icons = require("@wordpress/icons");
10
10
  var _viewTable = _interopRequireDefault(require("./view-table"));
@@ -22,16 +22,37 @@ var _viewList = _interopRequireDefault(require("./view-list"));
22
22
  const ENUMERATION_TYPE = exports.ENUMERATION_TYPE = 'enumeration';
23
23
 
24
24
  // Filter operators.
25
- const OPERATOR_IN = exports.OPERATOR_IN = 'in';
26
- const OPERATOR_NOT_IN = exports.OPERATOR_NOT_IN = 'notIn';
25
+ const OPERATOR_IS = exports.OPERATOR_IS = 'is';
26
+ const OPERATOR_IS_NOT = exports.OPERATOR_IS_NOT = 'isNot';
27
+ const OPERATOR_IS_ANY = exports.OPERATOR_IS_ANY = 'isAny';
28
+ const OPERATOR_IS_NONE = exports.OPERATOR_IS_NONE = 'isNone';
29
+ const OPERATOR_IS_ALL = exports.OPERATOR_IS_ALL = 'isAll';
30
+ const OPERATOR_IS_NOT_ALL = exports.OPERATOR_IS_NOT_ALL = 'isNotAll';
31
+ const ALL_OPERATORS = exports.ALL_OPERATORS = [OPERATOR_IS, OPERATOR_IS_NOT, OPERATOR_IS_ANY, OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL];
27
32
  const OPERATORS = exports.OPERATORS = {
28
- [OPERATOR_IN]: {
29
- key: 'in-filter',
33
+ [OPERATOR_IS]: {
34
+ key: 'is-filter',
30
35
  label: (0, _i18n.__)('Is')
31
36
  },
32
- [OPERATOR_NOT_IN]: {
33
- key: 'not-in-filter',
37
+ [OPERATOR_IS_NOT]: {
38
+ key: 'is-not-filter',
34
39
  label: (0, _i18n.__)('Is not')
40
+ },
41
+ [OPERATOR_IS_ANY]: {
42
+ key: 'is-any-filter',
43
+ label: (0, _i18n.__)('Is any')
44
+ },
45
+ [OPERATOR_IS_NONE]: {
46
+ key: 'is-none-filter',
47
+ label: (0, _i18n.__)('Is none')
48
+ },
49
+ [OPERATOR_IS_ALL]: {
50
+ key: 'is-all-filter',
51
+ label: (0, _i18n.__)('Is all')
52
+ },
53
+ [OPERATOR_IS_NOT_ALL]: {
54
+ key: 'is-not-all-filter',
55
+ label: (0, _i18n.__)('Is not all')
35
56
  }
36
57
  };
37
58
 
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_icons","_viewTable","_interopRequireDefault","_viewGrid","_viewList","ENUMERATION_TYPE","exports","OPERATOR_IN","OPERATOR_NOT_IN","OPERATORS","key","label","__","SORTING_DIRECTIONS","asc","desc","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","component","ViewTable","icon","blockTable","ViewGrid","category","ViewList","isRTL","formatListBulletsRTL","formatListBullets"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IN = 'in';\nexport const OPERATOR_NOT_IN = 'notIn';\nexport const OPERATORS = {\n\t[ OPERATOR_IN ]: {\n\t\tkey: 'in-filter',\n\t\tlabel: __( 'Is' ),\n\t},\n\t[ OPERATOR_NOT_IN ]: {\n\t\tkey: 'not-in-filter',\n\t\tlabel: __( 'Is not' ),\n\t},\n};\n\n// Sorting\nexport const SORTING_DIRECTIONS = {\n\tasc: { label: __( 'Sort ascending' ) },\n\tdesc: { label: __( 'Sort descending' ) },\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAUA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,SAAA,GAAAF,sBAAA,CAAAH,OAAA;AAhBA;AACA;AACA;;AASA;AACA;AACA;;AAKA;AACO,MAAMM,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,aAAa;;AAE7C;AACO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAG,IAAI;AACxB,MAAMC,eAAe,GAAAF,OAAA,CAAAE,eAAA,GAAG,OAAO;AAC/B,MAAMC,SAAS,GAAAH,OAAA,CAAAG,SAAA,GAAG;EACxB,CAAEF,WAAW,GAAI;IAChBG,GAAG,EAAE,WAAW;IAChBC,KAAK,EAAE,IAAAC,QAAE,EAAE,IAAK;EACjB,CAAC;EACD,CAAEJ,eAAe,GAAI;IACpBE,GAAG,EAAE,eAAe;IACpBC,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAS;EACrB;AACD,CAAC;;AAED;AACO,MAAMC,kBAAkB,GAAAP,OAAA,CAAAO,kBAAA,GAAG;EACjCC,GAAG,EAAE;IAAEH,KAAK,EAAE,IAAAC,QAAE,EAAE,gBAAiB;EAAE,CAAC;EACtCG,IAAI,EAAE;IAAEJ,KAAK,EAAE,IAAAC,QAAE,EAAE,iBAAkB;EAAE;AACxC,CAAC;;AAED;AACO,MAAMI,YAAY,GAAAV,OAAA,CAAAU,YAAA,GAAG,OAAO;AAC5B,MAAMC,WAAW,GAAAX,OAAA,CAAAW,WAAA,GAAG,MAAM;AAC1B,MAAMC,WAAW,GAAAZ,OAAA,CAAAY,WAAA,GAAG,MAAM;AAE1B,MAAMC,YAAY,GAAAb,OAAA,CAAAa,YAAA,GAAG,CAC3B;EACCC,IAAI,EAAEJ,YAAY;EAClBL,KAAK,EAAE,IAAAC,QAAE,EAAE,OAAQ,CAAC;EACpBS,SAAS,EAAEC,kBAAS;EACpBC,IAAI,EAAEC;AACP,CAAC,EACD;EACCJ,IAAI,EAAEH,WAAW;EACjBN,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;EACnBS,SAAS,EAAEI,iBAAQ;EACnBF,IAAI,EAAEG;AACP,CAAC,EACD;EACCN,IAAI,EAAEF,WAAW;EACjBP,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;EACnBS,SAAS,EAAEM,iBAAQ;EACnBJ,IAAI,EAAE,IAAAK,WAAK,EAAC,CAAC,GAAGC,2BAAoB,GAAGC;AACxC,CAAC,CACD"}
1
+ {"version":3,"names":["_i18n","require","_icons","_viewTable","_interopRequireDefault","_viewGrid","_viewList","ENUMERATION_TYPE","exports","OPERATOR_IS","OPERATOR_IS_NOT","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","ALL_OPERATORS","OPERATORS","key","label","__","SORTING_DIRECTIONS","asc","desc","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","component","ViewTable","icon","blockTable","ViewGrid","category","ViewList","isRTL","formatListBulletsRTL","formatListBullets"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_IS_ALL = 'isAll';\nexport const OPERATOR_IS_NOT_ALL = 'isNotAll';\n\nexport const ALL_OPERATORS = [\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n];\nexport const OPERATORS = {\n\t[ OPERATOR_IS ]: {\n\t\tkey: 'is-filter',\n\t\tlabel: __( 'Is' ),\n\t},\n\t[ OPERATOR_IS_NOT ]: {\n\t\tkey: 'is-not-filter',\n\t\tlabel: __( 'Is not' ),\n\t},\n\t[ OPERATOR_IS_ANY ]: {\n\t\tkey: 'is-any-filter',\n\t\tlabel: __( 'Is any' ),\n\t},\n\t[ OPERATOR_IS_NONE ]: {\n\t\tkey: 'is-none-filter',\n\t\tlabel: __( 'Is none' ),\n\t},\n\t[ OPERATOR_IS_ALL ]: {\n\t\tkey: 'is-all-filter',\n\t\tlabel: __( 'Is all' ),\n\t},\n\t[ OPERATOR_IS_NOT_ALL ]: {\n\t\tkey: 'is-not-all-filter',\n\t\tlabel: __( 'Is not all' ),\n\t},\n};\n\n// Sorting\nexport const SORTING_DIRECTIONS = {\n\tasc: { label: __( 'Sort ascending' ) },\n\tdesc: { label: __( 'Sort descending' ) },\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"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"}
@@ -24,13 +24,22 @@ var _bulkActions = _interopRequireDefault(require("./bulk-actions"));
24
24
 
25
25
  const defaultGetItemId = item => item.id;
26
26
  const defaultOnSelectionChange = () => {};
27
+ function useSomeItemHasAPossibleBulkAction(actions, data) {
28
+ return (0, _element.useMemo)(() => {
29
+ return data.some(item => {
30
+ return actions.some(action => {
31
+ return action.supportsBulk && action.isEligible(item);
32
+ });
33
+ });
34
+ }, [actions, data]);
35
+ }
27
36
  function DataViews({
28
37
  view,
29
38
  onChangeView,
30
39
  fields,
31
40
  search = true,
32
41
  searchLabel = undefined,
33
- actions,
42
+ actions = [],
34
43
  data,
35
44
  getItemId = defaultGetItemId,
36
45
  isLoading = false,
@@ -55,25 +64,39 @@ function DataViews({
55
64
  }, [setSelection, getItemId, onSelectionChange]);
56
65
  const ViewComponent = _constants.VIEW_LAYOUTS.find(v => v.type === view.type).component;
57
66
  const _fields = (0, _element.useMemo)(() => {
58
- return fields.map(field => ({
59
- ...field,
60
- render: field.render || field.getValue
61
- }));
67
+ return fields.map(field => {
68
+ const getValue = field.getValue || (({
69
+ item
70
+ }) => item[field.id]);
71
+ return {
72
+ ...field,
73
+ getValue,
74
+ render: field.render || getValue
75
+ };
76
+ });
62
77
  }, [fields]);
78
+ const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(actions, data);
63
79
  return (0, _react.createElement)("div", {
64
80
  className: "dataviews-wrapper"
65
- }, (0, _react.createElement)(_components.__experimentalVStack, {
66
- spacing: 3,
67
- justify: "flex-start"
68
81
  }, (0, _react.createElement)(_components.__experimentalHStack, {
69
- alignment: "flex-start",
82
+ alignment: "top",
70
83
  justify: "start",
71
84
  className: "dataviews-filters__view-actions"
85
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
86
+ justify: "start",
87
+ className: "dataviews-filters__container",
88
+ wrap: true
72
89
  }, search && (0, _react.createElement)(_search.default, {
73
90
  label: searchLabel,
74
91
  view: view,
75
92
  onChangeView: onChangeView
76
- }), [_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(view.type) && (0, _react.createElement)(_bulkActions.default, {
93
+ }), (0, _react.createElement)(_filters.default, {
94
+ fields: _fields,
95
+ view: view,
96
+ onChangeView: onChangeView,
97
+ openedFilter: openedFilter,
98
+ setOpenedFilter: setOpenedFilter
99
+ })), [_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(view.type) && hasPossibleBulkAction && (0, _react.createElement)(_bulkActions.default, {
77
100
  actions: actions,
78
101
  data: data,
79
102
  onSelectionChange: onSetSelection,
@@ -84,16 +107,6 @@ function DataViews({
84
107
  view: view,
85
108
  onChangeView: onChangeView,
86
109
  supportedLayouts: supportedLayouts
87
- })), (0, _react.createElement)(_components.__experimentalHStack, {
88
- justify: "start",
89
- className: "dataviews-filters__container",
90
- wrap: true
91
- }, (0, _react.createElement)(_filters.default, {
92
- fields: _fields,
93
- view: view,
94
- onChangeView: onChangeView,
95
- openedFilter: openedFilter,
96
- setOpenedFilter: setOpenedFilter
97
110
  })), (0, _react.createElement)(ViewComponent, {
98
111
  fields: _fields,
99
112
  view: view,
@@ -111,6 +124,6 @@ function DataViews({
111
124
  view: view,
112
125
  onChangeView: onChangeView,
113
126
  paginationInfo: paginationInfo
114
- })));
127
+ }));
115
128
  }
116
129
  //# sourceMappingURL=dataviews.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_pagination","_interopRequireDefault","_viewActions","_filters","_search","_constants","_bulkActions","defaultGetItemId","item","id","defaultOnSelectionChange","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","onDetailsChange","deferredRendering","selection","setSelection","useState","openedFilter","setOpenedFilter","useEffect","length","some","newSelection","filter","includes","onSetSelection","useCallback","items","map","ViewComponent","VIEW_LAYOUTS","find","v","type","component","_fields","useMemo","field","render","getValue","_react","createElement","className","__experimentalVStack","spacing","justify","__experimentalHStack","alignment","default","label","LAYOUT_TABLE","LAYOUT_GRID","wrap"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} 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 { VIEW_LAYOUTS, LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport BulkActions from './bulk-actions';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\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\tonDetailsChange = null,\n\tdeferredRendering = false,\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( () => {\n\t\treturn fields.map( ( field ) => ( {\n\t\t\t...field,\n\t\t\trender: field.render || field.getValue,\n\t\t} ) );\n\t}, [ fields ] );\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<VStack spacing={ 3 } justify=\"flex-start\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews-filters__view-actions\"\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{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) && (\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\t<ViewActions\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\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\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<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<ViewComponent\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\tactions={ actions }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tisLoading={ isLoading }\n\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\tonDetailsChange={ onDetailsChange }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t/>\n\t\t\t\t<Pagination\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_element","_pagination","_interopRequireDefault","_viewActions","_filters","_search","_constants","_bulkActions","defaultGetItemId","item","id","defaultOnSelectionChange","useSomeItemHasAPossibleBulkAction","actions","data","useMemo","some","action","supportsBulk","isEligible","DataViews","view","onChangeView","fields","search","searchLabel","undefined","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","onDetailsChange","deferredRendering","selection","setSelection","useState","openedFilter","setOpenedFilter","useEffect","length","newSelection","filter","includes","onSetSelection","useCallback","items","map","ViewComponent","VIEW_LAYOUTS","find","v","type","component","_fields","field","getValue","render","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 { VIEW_LAYOUTS, LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport BulkActions from './bulk-actions';\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\tonDetailsChange = null,\n\tdeferredRendering = false,\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( () => {\n\t\treturn fields.map( ( field ) => {\n\t\t\tconst getValue =\n\t\t\t\tfield.getValue || ( ( { item } ) => item[ field.id ] );\n\n\t\t\treturn {\n\t\t\t\t...field,\n\t\t\t\tgetValue,\n\t\t\t\trender: field.render || getValue,\n\t\t\t};\n\t\t} );\n\t}, [ 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\tonDetailsChange={ onDetailsChange }\n\t\t\t\tselection={ selection }\n\t\t\t\tdeferredRendering={ deferredRendering }\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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"}