@wordpress/dataviews 1.1.0 → 2.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 (176) hide show
  1. package/CHANGELOG.md +27 -5
  2. package/README.md +33 -30
  3. package/build/add-filter.js +30 -22
  4. package/build/add-filter.js.map +1 -1
  5. package/build/bulk-actions-toolbar.js +187 -0
  6. package/build/bulk-actions-toolbar.js.map +1 -0
  7. package/build/bulk-actions.js +75 -62
  8. package/build/bulk-actions.js.map +1 -1
  9. package/build/constants.js +17 -10
  10. package/build/constants.js.map +1 -1
  11. package/build/dataviews.js +64 -50
  12. package/build/dataviews.js.map +1 -1
  13. package/build/filter-and-sort-data-view.js +2 -2
  14. package/build/filter-and-sort-data-view.js.map +1 -1
  15. package/build/filter-summary.js +106 -96
  16. package/build/filter-summary.js.map +1 -1
  17. package/build/filters.js +18 -17
  18. package/build/filters.js.map +1 -1
  19. package/build/index.js.map +1 -1
  20. package/build/item-actions.js +101 -69
  21. package/build/item-actions.js.map +1 -1
  22. package/build/layouts.js.map +1 -1
  23. package/build/lock-unlock.js.map +1 -1
  24. package/build/normalize-fields.js.map +1 -1
  25. package/build/pagination.js +66 -57
  26. package/build/pagination.js.map +1 -1
  27. package/build/reset-filters.js +9 -4
  28. package/build/reset-filters.js.map +1 -1
  29. package/build/search-widget.js +108 -89
  30. package/build/search-widget.js.map +1 -1
  31. package/build/search.js +13 -6
  32. package/build/search.js.map +1 -1
  33. package/build/single-selection-checkbox.js +6 -2
  34. package/build/single-selection-checkbox.js.map +1 -1
  35. package/build/types.js.map +1 -1
  36. package/build/utils.js +3 -15
  37. package/build/utils.js.map +1 -1
  38. package/build/view-actions.js +168 -120
  39. package/build/view-actions.js.map +1 -1
  40. package/build/view-grid.js +119 -106
  41. package/build/view-grid.js.map +1 -1
  42. package/build/view-list.js +217 -83
  43. package/build/view-list.js.map +1 -1
  44. package/build/view-table.js +227 -199
  45. package/build/view-table.js.map +1 -1
  46. package/build-module/add-filter.js +30 -22
  47. package/build-module/add-filter.js.map +1 -1
  48. package/build-module/bulk-actions-toolbar.js +182 -0
  49. package/build-module/bulk-actions-toolbar.js.map +1 -0
  50. package/build-module/bulk-actions.js +77 -62
  51. package/build-module/bulk-actions.js.map +1 -1
  52. package/build-module/constants.js +16 -9
  53. package/build-module/constants.js.map +1 -1
  54. package/build-module/dataviews.js +65 -50
  55. package/build-module/dataviews.js.map +1 -1
  56. package/build-module/filter-and-sort-data-view.js +2 -2
  57. package/build-module/filter-and-sort-data-view.js.map +1 -1
  58. package/build-module/filter-summary.js +107 -97
  59. package/build-module/filter-summary.js.map +1 -1
  60. package/build-module/filters.js +18 -17
  61. package/build-module/filters.js.map +1 -1
  62. package/build-module/index.js.map +1 -1
  63. package/build-module/item-actions.js +102 -71
  64. package/build-module/item-actions.js.map +1 -1
  65. package/build-module/layouts.js.map +1 -1
  66. package/build-module/lock-unlock.js.map +1 -1
  67. package/build-module/normalize-fields.js.map +1 -1
  68. package/build-module/pagination.js +67 -57
  69. package/build-module/pagination.js.map +1 -1
  70. package/build-module/reset-filters.js +9 -4
  71. package/build-module/reset-filters.js.map +1 -1
  72. package/build-module/search-widget.js +109 -89
  73. package/build-module/search-widget.js.map +1 -1
  74. package/build-module/search.js +13 -6
  75. package/build-module/search.js.map +1 -1
  76. package/build-module/single-selection-checkbox.js +6 -2
  77. package/build-module/single-selection-checkbox.js.map +1 -1
  78. package/build-module/types.js.map +1 -1
  79. package/build-module/utils.js +2 -13
  80. package/build-module/utils.js.map +1 -1
  81. package/build-module/view-actions.js +170 -121
  82. package/build-module/view-actions.js.map +1 -1
  83. package/build-module/view-grid.js +121 -106
  84. package/build-module/view-grid.js.map +1 -1
  85. package/build-module/view-list.js +219 -85
  86. package/build-module/view-list.js.map +1 -1
  87. package/build-module/view-table.js +230 -201
  88. package/build-module/view-table.js.map +1 -1
  89. package/build-style/style-rtl.css +168 -44
  90. package/build-style/style.css +168 -44
  91. package/build-types/add-filter.d.ts +11 -0
  92. package/build-types/add-filter.d.ts.map +1 -0
  93. package/build-types/bulk-actions-toolbar.d.ts +12 -0
  94. package/build-types/bulk-actions-toolbar.d.ts.map +1 -0
  95. package/build-types/bulk-actions.d.ts +14 -0
  96. package/build-types/bulk-actions.d.ts.map +1 -0
  97. package/build-types/constants.d.ts +19 -32
  98. package/build-types/constants.d.ts.map +1 -1
  99. package/build-types/dataviews.d.ts +22 -0
  100. package/build-types/dataviews.d.ts.map +1 -0
  101. package/build-types/filter-and-sort-data-view.d.ts +3 -3
  102. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  103. package/build-types/filter-summary.d.ts +14 -0
  104. package/build-types/filter-summary.d.ts.map +1 -0
  105. package/build-types/filters.d.ts +13 -0
  106. package/build-types/filters.d.ts.map +1 -0
  107. package/build-types/index.d.ts +4 -0
  108. package/build-types/index.d.ts.map +1 -0
  109. package/build-types/item-actions.d.ts +35 -0
  110. package/build-types/item-actions.d.ts.map +1 -0
  111. package/build-types/layouts.d.ts +24 -0
  112. package/build-types/layouts.d.ts.map +1 -0
  113. package/build-types/lock-unlock.d.ts +2 -0
  114. package/build-types/lock-unlock.d.ts.map +1 -0
  115. package/build-types/normalize-fields.d.ts +2 -2
  116. package/build-types/normalize-fields.d.ts.map +1 -1
  117. package/build-types/pagination.d.ts +16 -0
  118. package/build-types/pagination.d.ts.map +1 -0
  119. package/build-types/reset-filters.d.ts +13 -0
  120. package/build-types/reset-filters.d.ts.map +1 -0
  121. package/build-types/search-widget.d.ts +10 -0
  122. package/build-types/search-widget.d.ts.map +1 -0
  123. package/build-types/search.d.ts +13 -0
  124. package/build-types/search.d.ts.map +1 -0
  125. package/build-types/single-selection-checkbox.d.ts +17 -0
  126. package/build-types/single-selection-checkbox.d.ts.map +1 -0
  127. package/build-types/stories/fixtures.d.ts +114 -0
  128. package/build-types/stories/fixtures.d.ts.map +1 -0
  129. package/build-types/stories/index.story.d.ts +15 -0
  130. package/build-types/stories/index.story.d.ts.map +1 -0
  131. package/build-types/types.d.ts +221 -21
  132. package/build-types/types.d.ts.map +1 -1
  133. package/build-types/utils.d.ts +3 -0
  134. package/build-types/utils.d.ts.map +1 -0
  135. package/build-types/view-actions.d.ts +12 -0
  136. package/build-types/view-actions.d.ts.map +1 -0
  137. package/build-types/view-grid.d.ts +4 -0
  138. package/build-types/view-grid.d.ts.map +1 -0
  139. package/build-types/view-list.d.ts +4 -0
  140. package/build-types/view-list.d.ts.map +1 -0
  141. package/build-types/view-table.d.ts +5 -0
  142. package/build-types/view-table.d.ts.map +1 -0
  143. package/package.json +12 -13
  144. package/src/{add-filter.js → add-filter.tsx} +17 -1
  145. package/src/bulk-actions-toolbar.tsx +272 -0
  146. package/src/{bulk-actions.js → bulk-actions.tsx} +77 -17
  147. package/src/constants.ts +12 -5
  148. package/src/{dataviews.js → dataviews.tsx} +54 -14
  149. package/src/filter-and-sort-data-view.ts +13 -8
  150. package/src/{filter-summary.js → filter-summary.tsx} +38 -9
  151. package/src/{filters.js → filters.tsx} +18 -6
  152. package/src/{item-actions.js → item-actions.tsx} +119 -30
  153. package/src/normalize-fields.ts +4 -2
  154. package/src/{pagination.js → pagination.tsx} +29 -8
  155. package/src/{reset-filters.js → reset-filters.tsx} +17 -2
  156. package/src/{search-widget.js → search-widget.tsx} +27 -7
  157. package/src/{search.js → search.tsx} +22 -5
  158. package/src/{single-selection-checkbox.js → single-selection-checkbox.tsx} +17 -2
  159. package/src/style.scss +166 -43
  160. package/src/types.ts +286 -21
  161. package/src/{utils.js → utils.ts} +5 -13
  162. package/src/{view-actions.js → view-actions.tsx} +105 -49
  163. package/src/{view-grid.js → view-grid.tsx} +31 -18
  164. package/src/view-list.tsx +410 -0
  165. package/src/{view-table.js → view-table.tsx} +99 -40
  166. package/tsconfig.json +3 -4
  167. package/tsconfig.tsbuildinfo +1 -1
  168. package/build/dropdown-menu-helper.js +0 -71
  169. package/build/dropdown-menu-helper.js.map +0 -1
  170. package/build-module/dropdown-menu-helper.js +0 -64
  171. package/build-module/dropdown-menu-helper.js.map +0 -1
  172. package/src/dropdown-menu-helper.js +0 -61
  173. package/src/view-list.js +0 -207
  174. /package/src/{index.js → index.ts} +0 -0
  175. /package/src/{layouts.js → layouts.ts} +0 -0
  176. /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
@@ -1,4 +1,7 @@
1
- import { createElement } from "react";
1
+ /**
2
+ * External dependencies
3
+ */
4
+
2
5
  /**
3
6
  * WordPress dependencies
4
7
  */
@@ -11,8 +14,10 @@ import { settings } from '@wordpress/icons';
11
14
  * Internal dependencies
12
15
  */
13
16
  import { unlock } from './lock-unlock';
14
- import { SORTING_DIRECTIONS } from './constants';
17
+ import { SORTING_DIRECTIONS, sortLabels } from './constants';
15
18
  import { VIEW_LAYOUTS } from './layouts';
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ import { jsxs as _jsxs } from "react/jsx-runtime";
16
21
  const {
17
22
  DropdownMenuV2: DropdownMenu,
18
23
  DropdownMenuGroupV2: DropdownMenuGroup,
@@ -34,56 +39,77 @@ function ViewTypeMenu({
34
39
  return null;
35
40
  }
36
41
  const activeView = _availableViews.find(v => view.type === v.type);
37
- return createElement(DropdownMenu, {
38
- trigger: createElement(DropdownMenuItem, {
39
- suffix: createElement("span", {
40
- "aria-hidden": "true"
41
- }, activeView.label)
42
- }, createElement(DropdownMenuItemLabel, null, __('Layout')))
43
- }, _availableViews.map(availableView => {
44
- return createElement(DropdownMenuRadioItem, {
45
- key: availableView.type,
46
- value: availableView.type,
47
- name: "view-actions-available-view",
48
- checked: availableView.type === view.type,
49
- hideOnClick: true,
50
- onChange: e => {
51
- onChangeView({
52
- ...view,
53
- type: e.target.value
54
- });
55
- }
56
- }, createElement(DropdownMenuItemLabel, null, availableView.label));
57
- }));
42
+ return /*#__PURE__*/_jsx(DropdownMenu, {
43
+ trigger: /*#__PURE__*/_jsx(DropdownMenuItem, {
44
+ suffix: /*#__PURE__*/_jsx("span", {
45
+ "aria-hidden": "true",
46
+ children: activeView?.label
47
+ }),
48
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
49
+ children: __('Layout')
50
+ })
51
+ }),
52
+ children: _availableViews.map(availableView => {
53
+ return /*#__PURE__*/_jsx(DropdownMenuRadioItem, {
54
+ value: availableView.type,
55
+ name: "view-actions-available-view",
56
+ checked: availableView.type === view.type,
57
+ hideOnClick: true,
58
+ onChange: e => {
59
+ switch (e.target.value) {
60
+ case 'list':
61
+ case 'grid':
62
+ case 'table':
63
+ return onChangeView({
64
+ ...view,
65
+ type: e.target.value,
66
+ layout: {}
67
+ });
68
+ }
69
+ throw new Error('Invalid dataview');
70
+ },
71
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
72
+ children: availableView.label
73
+ })
74
+ }, availableView.type);
75
+ })
76
+ });
58
77
  }
59
78
  const PAGE_SIZE_VALUES = [10, 20, 50, 100];
60
79
  function PageSizeMenu({
61
80
  view,
62
81
  onChangeView
63
82
  }) {
64
- return createElement(DropdownMenu, {
65
- trigger: createElement(DropdownMenuItem, {
66
- suffix: createElement("span", {
67
- "aria-hidden": "true"
68
- }, view.perPage)
69
- }, createElement(DropdownMenuItemLabel, null, __('Items per page')))
70
- }, PAGE_SIZE_VALUES.map(size => {
71
- return createElement(DropdownMenuRadioItem, {
72
- key: size,
73
- value: size,
74
- name: "view-actions-page-size",
75
- checked: view.perPage === size,
76
- onChange: () => {
77
- onChangeView({
78
- ...view,
79
- // `e.target.value` holds the same value as `size` but as a string,
80
- // so we use `size` directly to avoid parsing to int.
81
- perPage: size,
82
- page: 1
83
- });
84
- }
85
- }, createElement(DropdownMenuItemLabel, null, size));
86
- }));
83
+ return /*#__PURE__*/_jsx(DropdownMenu, {
84
+ trigger: /*#__PURE__*/_jsx(DropdownMenuItem, {
85
+ suffix: /*#__PURE__*/_jsx("span", {
86
+ "aria-hidden": "true",
87
+ children: view.perPage
88
+ }),
89
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
90
+ children: __('Items per page')
91
+ })
92
+ }),
93
+ children: PAGE_SIZE_VALUES.map(size => {
94
+ return /*#__PURE__*/_jsx(DropdownMenuRadioItem, {
95
+ value: size,
96
+ name: "view-actions-page-size",
97
+ checked: view.perPage === size,
98
+ onChange: () => {
99
+ onChangeView({
100
+ ...view,
101
+ // `e.target.value` holds the same value as `size` but as a string,
102
+ // so we use `size` directly to avoid parsing to int.
103
+ perPage: size,
104
+ page: 1
105
+ });
106
+ },
107
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
108
+ children: size
109
+ })
110
+ }, size);
111
+ })
112
+ });
87
113
  }
88
114
  function FieldsVisibilityMenu({
89
115
  view,
@@ -94,21 +120,28 @@ function FieldsVisibilityMenu({
94
120
  if (!hidableFields?.length) {
95
121
  return null;
96
122
  }
97
- return createElement(DropdownMenu, {
98
- trigger: createElement(DropdownMenuItem, null, createElement(DropdownMenuItemLabel, null, __('Fields')))
99
- }, hidableFields?.map(field => {
100
- return createElement(DropdownMenuCheckboxItem, {
101
- key: field.id,
102
- value: field.id,
103
- checked: !view.hiddenFields?.includes(field.id),
104
- onChange: () => {
105
- onChangeView({
106
- ...view,
107
- hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...(view.hiddenFields || []), field.id]
108
- });
109
- }
110
- }, createElement(DropdownMenuItemLabel, null, field.header));
111
- }));
123
+ return /*#__PURE__*/_jsx(DropdownMenu, {
124
+ trigger: /*#__PURE__*/_jsx(DropdownMenuItem, {
125
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
126
+ children: __('Fields')
127
+ })
128
+ }),
129
+ children: hidableFields?.map(field => {
130
+ return /*#__PURE__*/_jsx(DropdownMenuCheckboxItem, {
131
+ value: field.id,
132
+ checked: !view.hiddenFields?.includes(field.id),
133
+ onChange: () => {
134
+ onChangeView({
135
+ ...view,
136
+ hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...(view.hiddenFields || []), field.id]
137
+ });
138
+ },
139
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
140
+ children: field.header
141
+ })
142
+ }, field.id);
143
+ })
144
+ });
112
145
  }
113
146
  function SortMenu({
114
147
  fields,
@@ -120,75 +153,91 @@ function SortMenu({
120
153
  return null;
121
154
  }
122
155
  const currentSortedField = fields.find(field => field.id === view.sort?.field);
123
- return createElement(DropdownMenu, {
124
- trigger: createElement(DropdownMenuItem, {
125
- suffix: createElement("span", {
126
- "aria-hidden": "true"
127
- }, currentSortedField?.header)
128
- }, createElement(DropdownMenuItemLabel, null, __('Sort by')))
129
- }, sortableFields?.map(field => {
130
- const sortedDirection = view.sort?.direction;
131
- return createElement(DropdownMenu, {
132
- key: field.id,
133
- trigger: createElement(DropdownMenuItem, null, createElement(DropdownMenuItemLabel, null, field.header)),
134
- style: {
135
- minWidth: '220px'
136
- }
137
- }, Object.entries(SORTING_DIRECTIONS).map(([direction, info]) => {
138
- const isChecked = currentSortedField !== undefined && sortedDirection === direction && field.id === currentSortedField.id;
139
- const value = `${field.id}-${direction}`;
140
- return createElement(DropdownMenuRadioItem, {
141
- key: value
142
- // All sorting radio items share the same name, so that
143
- // selecting a sorting option automatically deselects the
144
- // previously selected one, even if it is displayed in
145
- // another submenu. The field and direction are passed via
146
- // the `value` prop.
147
- ,
148
- name: "view-actions-sorting",
149
- value: value,
150
- checked: isChecked,
151
- onChange: () => {
152
- onChangeView({
153
- ...view,
154
- sort: {
155
- field: field.id,
156
- direction
157
- }
158
- });
159
- }
160
- }, createElement(DropdownMenuItemLabel, null, info.label));
161
- }));
162
- }));
156
+ return /*#__PURE__*/_jsx(DropdownMenu, {
157
+ trigger: /*#__PURE__*/_jsx(DropdownMenuItem, {
158
+ suffix: /*#__PURE__*/_jsx("span", {
159
+ "aria-hidden": "true",
160
+ children: currentSortedField?.header
161
+ }),
162
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
163
+ children: __('Sort by')
164
+ })
165
+ }),
166
+ children: sortableFields?.map(field => {
167
+ const sortedDirection = view.sort?.direction;
168
+ return /*#__PURE__*/_jsx(DropdownMenu, {
169
+ trigger: /*#__PURE__*/_jsx(DropdownMenuItem, {
170
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
171
+ children: field.header
172
+ })
173
+ }),
174
+ style: {
175
+ minWidth: '220px'
176
+ },
177
+ children: SORTING_DIRECTIONS.map(direction => {
178
+ const isChecked = currentSortedField !== undefined && sortedDirection === direction && field.id === currentSortedField.id;
179
+ const value = `${field.id}-${direction}`;
180
+ return /*#__PURE__*/_jsx(DropdownMenuRadioItem, {
181
+ // All sorting radio items share the same name, so that
182
+ // selecting a sorting option automatically deselects the
183
+ // previously selected one, even if it is displayed in
184
+ // another submenu. The field and direction are passed via
185
+ // the `value` prop.
186
+ name: "view-actions-sorting",
187
+ value: value,
188
+ checked: isChecked,
189
+ onChange: () => {
190
+ onChangeView({
191
+ ...view,
192
+ sort: {
193
+ field: field.id,
194
+ direction
195
+ }
196
+ });
197
+ },
198
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
199
+ children: sortLabels[direction]
200
+ })
201
+ }, value);
202
+ })
203
+ }, field.id);
204
+ })
205
+ });
163
206
  }
164
- const ViewActions = memo(function ViewActions({
207
+ function _ViewActions({
165
208
  fields,
166
209
  view,
167
210
  onChangeView,
168
211
  supportedLayouts
169
212
  }) {
170
- return createElement(DropdownMenu, {
171
- trigger: createElement(Button, {
213
+ return /*#__PURE__*/_jsx(DropdownMenu, {
214
+ trigger: /*#__PURE__*/_jsx(Button, {
172
215
  size: "compact",
173
216
  icon: settings,
174
217
  label: __('View options')
218
+ }),
219
+ children: /*#__PURE__*/_jsxs(DropdownMenuGroup, {
220
+ children: [/*#__PURE__*/_jsx(ViewTypeMenu, {
221
+ view: view,
222
+ onChangeView: onChangeView,
223
+ supportedLayouts: supportedLayouts
224
+ }), /*#__PURE__*/_jsx(SortMenu, {
225
+ fields: fields,
226
+ view: view,
227
+ onChangeView: onChangeView
228
+ }), /*#__PURE__*/_jsx(FieldsVisibilityMenu, {
229
+ fields: fields,
230
+ view: view,
231
+ onChangeView: onChangeView
232
+ }), /*#__PURE__*/_jsx(PageSizeMenu, {
233
+ view: view,
234
+ onChangeView: onChangeView
235
+ })]
175
236
  })
176
- }, createElement(DropdownMenuGroup, null, createElement(ViewTypeMenu, {
177
- view: view,
178
- onChangeView: onChangeView,
179
- supportedLayouts: supportedLayouts
180
- }), createElement(SortMenu, {
181
- fields: fields,
182
- view: view,
183
- onChangeView: onChangeView
184
- }), createElement(FieldsVisibilityMenu, {
185
- fields: fields,
186
- view: view,
187
- onChangeView: onChangeView
188
- }), createElement(PageSizeMenu, {
189
- view: view,
190
- onChangeView: onChangeView
191
- })));
192
- });
237
+ });
238
+ }
239
+
240
+ // A type assertion is used here to keep the type argument.
241
+ const ViewActions = memo(_ViewActions);
193
242
  export default ViewActions;
194
243
  //# sourceMappingURL=view-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Button","privateApis","componentsPrivateApis","__","memo","settings","unlock","SORTING_DIRECTIONS","VIEW_LAYOUTS","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuCheckboxItemV2","DropdownMenuCheckboxItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","ViewTypeMenu","view","onChangeView","supportedLayouts","_availableViews","filter","_view","includes","type","length","activeView","find","v","createElement","trigger","suffix","label","map","availableView","key","value","name","checked","hideOnClick","onChange","e","target","PAGE_SIZE_VALUES","PageSizeMenu","perPage","size","page","FieldsVisibilityMenu","fields","hidableFields","field","enableHiding","id","layout","mediaField","hiddenFields","header","SortMenu","sortableFields","enableSorting","currentSortedField","sort","sortedDirection","direction","style","minWidth","Object","entries","info","isChecked","undefined","ViewActions","icon"],"sources":["@wordpress/dataviews/src/view-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { memo } from '@wordpress/element';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport { SORTING_DIRECTIONS } from './constants';\nimport { VIEW_LAYOUTS } from './layouts';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuCheckboxItemV2: DropdownMenuCheckboxItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\nfunction ViewTypeMenu( { view, onChangeView, supportedLayouts } ) {\n\tlet _availableViews = VIEW_LAYOUTS;\n\tif ( supportedLayouts ) {\n\t\t_availableViews = _availableViews.filter( ( _view ) =>\n\t\t\tsupportedLayouts.includes( _view.type )\n\t\t);\n\t}\n\tif ( _availableViews.length === 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = _availableViews.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<span aria-hidden=\"true\">{ activeView.label }</span>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Layout' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ _availableViews.map( ( availableView ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\tkey={ availableView.type }\n\t\t\t\t\t\tvalue={ availableView.type }\n\t\t\t\t\t\tname=\"view-actions-available-view\"\n\t\t\t\t\t\tchecked={ availableView.type === view.type }\n\t\t\t\t\t\thideOnClick\n\t\t\t\t\t\tonChange={ ( e ) => {\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\ttype: e.target.value,\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{ availableView.label }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 10, 20, 50, 100 ];\nfunction PageSizeMenu( { view, onChangeView } ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tsuffix={ <span aria-hidden=\"true\">{ view.perPage }</span> }\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Items per page' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ PAGE_SIZE_VALUES.map( ( size ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\tvalue={ size }\n\t\t\t\t\t\tname=\"view-actions-page-size\"\n\t\t\t\t\t\tchecked={ view.perPage === size }\n\t\t\t\t\t\tonChange={ () => {\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\t// `e.target.value` holds the same value as `size` but as a string,\n\t\t\t\t\t\t\t\t// so we use `size` directly to avoid parsing to int.\n\t\t\t\t\t\t\t\tperPage: size,\n\t\t\t\t\t\t\t\tpage: 1,\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>{ size }</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction FieldsVisibilityMenu( { view, onChangeView, fields } ) {\n\tconst hidableFields = fields.filter(\n\t\t( field ) =>\n\t\t\tfield.enableHiding !== false && field.id !== view.layout.mediaField\n\t);\n\tif ( ! hidableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Fields' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ hidableFields?.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tvalue={ field.id }\n\t\t\t\t\t\tchecked={ ! view.hiddenFields?.includes( field.id ) }\n\t\t\t\t\t\tonChange={ () => {\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\thiddenFields: view.hiddenFields?.includes(\n\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t? view.hiddenFields.filter(\n\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== field.id\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.hiddenFields || [] ),\n\t\t\t\t\t\t\t\t\t\t\tfield.id,\n\t\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{ field.header }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction SortMenu( { fields, view, onChangeView } ) {\n\tconst sortableFields = fields.filter(\n\t\t( field ) => field.enableSorting !== false\n\t);\n\tif ( ! sortableFields?.length ) {\n\t\treturn null;\n\t}\n\tconst currentSortedField = fields.find(\n\t\t( field ) => field.id === view.sort?.field\n\t);\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ currentSortedField?.header }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Sort by' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ sortableFields?.map( ( field ) => {\n\t\t\t\tconst sortedDirection = view.sort?.direction;\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownMenuItem>\n\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tminWidth: '220px',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Object.entries( SORTING_DIRECTIONS ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\tcurrentSortedField !== undefined &&\n\t\t\t\t\t\t\t\t\tsortedDirection === direction &&\n\t\t\t\t\t\t\t\t\tfield.id === currentSortedField.id;\n\n\t\t\t\t\t\t\t\tconst value = `${ field.id }-${ direction }`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\tname=\"view-actions-sorting\"\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\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</DropdownMenu>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nconst ViewActions = memo( function ViewActions( {\n\tfields,\n\tview,\n\tonChangeView,\n\tsupportedLayouts,\n} ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tlabel={ __( 'View options' ) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t<ViewTypeMenu\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\t<SortMenu\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/>\n\t\t\t\t<FieldsVisibilityMenu\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/>\n\t\t\t\t<PageSizeMenu view={ view } onChangeView={ onChangeView } />\n\t\t\t</DropdownMenuGroup>\n\t\t</DropdownMenu>\n\t);\n} );\n\nexport default ViewActions;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Button","privateApis","componentsPrivateApis","__","memo","settings","unlock","SORTING_DIRECTIONS","sortLabels","VIEW_LAYOUTS","jsx","_jsx","jsxs","_jsxs","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuCheckboxItemV2","DropdownMenuCheckboxItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","ViewTypeMenu","view","onChangeView","supportedLayouts","_availableViews","filter","_view","includes","type","length","activeView","find","v","trigger","suffix","children","label","map","availableView","value","name","checked","hideOnClick","onChange","e","target","layout","Error","PAGE_SIZE_VALUES","PageSizeMenu","perPage","size","page","FieldsVisibilityMenu","fields","hidableFields","field","enableHiding","id","mediaField","hiddenFields","header","SortMenu","sortableFields","enableSorting","currentSortedField","sort","sortedDirection","direction","style","minWidth","isChecked","undefined","_ViewActions","icon","ViewActions"],"sources":["@wordpress/dataviews/src/view-actions.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ChangeEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { memo } from '@wordpress/element';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport { SORTING_DIRECTIONS, sortLabels } from './constants';\nimport { VIEW_LAYOUTS } from './layouts';\nimport type { AnyItem, NormalizedField, View } from './types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuCheckboxItemV2: DropdownMenuCheckboxItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\ninterface ViewTypeMenuProps {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsupportedLayouts?: string[];\n}\n\ninterface PageSizeMenuProps {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\ninterface FieldsVisibilityMenuProps< Item extends AnyItem > {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n}\n\ninterface SortMenuProps< Item extends AnyItem > {\n\tfields: NormalizedField< Item >[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\ninterface ViewActionsProps< Item extends AnyItem > {\n\tfields: NormalizedField< Item >[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsupportedLayouts?: string[];\n}\n\nfunction ViewTypeMenu( {\n\tview,\n\tonChangeView,\n\tsupportedLayouts,\n}: ViewTypeMenuProps ) {\n\tlet _availableViews = VIEW_LAYOUTS;\n\tif ( supportedLayouts ) {\n\t\t_availableViews = _availableViews.filter( ( _view ) =>\n\t\t\tsupportedLayouts.includes( _view.type )\n\t\t);\n\t}\n\tif ( _availableViews.length === 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = _availableViews.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<span aria-hidden=\"true\">{ activeView?.label }</span>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Layout' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ _availableViews.map( ( availableView ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\tkey={ availableView.type }\n\t\t\t\t\t\tvalue={ availableView.type }\n\t\t\t\t\t\tname=\"view-actions-available-view\"\n\t\t\t\t\t\tchecked={ availableView.type === view.type }\n\t\t\t\t\t\thideOnClick\n\t\t\t\t\t\tonChange={ ( e: ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\t\tswitch ( e.target.value ) {\n\t\t\t\t\t\t\t\tcase 'list':\n\t\t\t\t\t\t\t\tcase 'grid':\n\t\t\t\t\t\t\t\tcase 'table':\n\t\t\t\t\t\t\t\t\treturn onChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\ttype: e.target.value,\n\t\t\t\t\t\t\t\t\t\tlayout: {},\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow new Error( 'Invalid dataview' );\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{ availableView.label }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 10, 20, 50, 100 ];\nfunction PageSizeMenu( { view, onChangeView }: PageSizeMenuProps ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tsuffix={ <span aria-hidden=\"true\">{ view.perPage }</span> }\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Items per page' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ PAGE_SIZE_VALUES.map( ( size ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\tvalue={ size }\n\t\t\t\t\t\tname=\"view-actions-page-size\"\n\t\t\t\t\t\tchecked={ view.perPage === size }\n\t\t\t\t\t\tonChange={ () => {\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\t// `e.target.value` holds the same value as `size` but as a string,\n\t\t\t\t\t\t\t\t// so we use `size` directly to avoid parsing to int.\n\t\t\t\t\t\t\t\tperPage: size,\n\t\t\t\t\t\t\t\tpage: 1,\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>{ size }</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction FieldsVisibilityMenu< Item extends AnyItem >( {\n\tview,\n\tonChangeView,\n\tfields,\n}: FieldsVisibilityMenuProps< Item > ) {\n\tconst hidableFields = fields.filter(\n\t\t( field ) =>\n\t\t\tfield.enableHiding !== false && field.id !== view.layout.mediaField\n\t);\n\tif ( ! hidableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Fields' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ hidableFields?.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tvalue={ field.id }\n\t\t\t\t\t\tchecked={ ! view.hiddenFields?.includes( field.id ) }\n\t\t\t\t\t\tonChange={ () => {\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\thiddenFields: view.hiddenFields?.includes(\n\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t? view.hiddenFields.filter(\n\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== field.id\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.hiddenFields || [] ),\n\t\t\t\t\t\t\t\t\t\t\tfield.id,\n\t\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{ field.header }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction SortMenu< Item extends AnyItem >( {\n\tfields,\n\tview,\n\tonChangeView,\n}: SortMenuProps< Item > ) {\n\tconst sortableFields = fields.filter(\n\t\t( field ) => field.enableSorting !== false\n\t);\n\tif ( ! sortableFields?.length ) {\n\t\treturn null;\n\t}\n\tconst currentSortedField = fields.find(\n\t\t( field ) => field.id === view.sort?.field\n\t);\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<DropdownMenuItem\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t\t{ currentSortedField?.header }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t{ __( 'Sort by' ) }\n\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t}\n\t\t>\n\t\t\t{ sortableFields?.map( ( field ) => {\n\t\t\t\tconst sortedDirection = view.sort?.direction;\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownMenuItem>\n\t\t\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tminWidth: '220px',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ SORTING_DIRECTIONS.map( ( direction ) => {\n\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\tcurrentSortedField !== undefined &&\n\t\t\t\t\t\t\t\tsortedDirection === direction &&\n\t\t\t\t\t\t\t\tfield.id === currentSortedField.id;\n\n\t\t\t\t\t\t\tconst value = `${ field.id }-${ direction }`;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\tname=\"view-actions-sorting\"\n\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t} );\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\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction _ViewActions< Item extends AnyItem >( {\n\tfields,\n\tview,\n\tonChangeView,\n\tsupportedLayouts,\n}: ViewActionsProps< Item > ) {\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tlabel={ __( 'View options' ) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroup>\n\t\t\t\t<ViewTypeMenu\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\t<SortMenu\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/>\n\t\t\t\t<FieldsVisibilityMenu\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/>\n\t\t\t\t<PageSizeMenu view={ view } onChangeView={ onChangeView } />\n\t\t\t</DropdownMenuGroup>\n\t\t</DropdownMenu>\n\t);\n}\n\n// A type assertion is used here to keep the type argument.\nconst ViewActions = memo( _ViewActions ) as typeof _ViewActions;\n\nexport default ViewActions;\n"],"mappings":"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","ignoreList":[]}