@wordpress/edit-site 5.20.0 → 5.21.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 (231) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/trash-post.js +48 -0
  3. package/build/components/actions/trash-post.js.map +1 -0
  4. package/build/components/add-new-template/add-custom-template-modal-content.js +17 -13
  5. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  6. package/build/components/block-editor/resize-handle.js +2 -1
  7. package/build/components/block-editor/resize-handle.js.map +1 -1
  8. package/build/components/create-template-part-modal/index.js +10 -6
  9. package/build/components/create-template-part-modal/index.js.map +1 -1
  10. package/build/components/dataviews/dataviews.js +41 -32
  11. package/build/components/dataviews/dataviews.js.map +1 -1
  12. package/build/components/dataviews/field-actions.js +30 -0
  13. package/build/components/dataviews/field-actions.js.map +1 -0
  14. package/build/components/dataviews/filters.js +61 -0
  15. package/build/components/dataviews/filters.js.map +1 -0
  16. package/build/components/dataviews/in-filter.js +51 -0
  17. package/build/components/dataviews/in-filter.js.map +1 -0
  18. package/build/components/dataviews/index.js +0 -7
  19. package/build/components/dataviews/index.js.map +1 -1
  20. package/build/components/dataviews/pagination.js +75 -27
  21. package/build/components/dataviews/pagination.js.map +1 -1
  22. package/build/components/dataviews/text-filter.js +18 -12
  23. package/build/components/dataviews/text-filter.js.map +1 -1
  24. package/build/components/dataviews/view-actions.js +94 -56
  25. package/build/components/dataviews/view-actions.js.map +1 -1
  26. package/build/components/dataviews/view-grid.js +59 -0
  27. package/build/components/dataviews/view-grid.js.map +1 -0
  28. package/build/components/dataviews/view-list.js +283 -0
  29. package/build/components/dataviews/view-list.js.map +1 -0
  30. package/build/components/editor/index.js +2 -1
  31. package/build/components/editor/index.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/context.js +16 -10
  33. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  34. package/build/components/global-styles/font-library-modal/font-collection.js +20 -6
  35. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  36. package/build/components/global-styles/screen-block.js +1 -2
  37. package/build/components/global-styles/screen-block.js.map +1 -1
  38. package/build/components/global-styles/screen-root.js +1 -2
  39. package/build/components/global-styles/screen-root.js.map +1 -1
  40. package/build/components/global-styles/ui.js +3 -4
  41. package/build/components/global-styles/ui.js.map +1 -1
  42. package/build/components/layout/index.js +10 -2
  43. package/build/components/layout/index.js.map +1 -1
  44. package/build/components/media/index.js +34 -0
  45. package/build/components/media/index.js.map +1 -0
  46. package/build/components/page-actions/index.js +0 -2
  47. package/build/components/page-actions/index.js.map +1 -1
  48. package/build/components/page-pages/index.js +153 -107
  49. package/build/components/page-pages/index.js.map +1 -1
  50. package/build/components/page-patterns/delete-category-menu-item.js +89 -0
  51. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -0
  52. package/build/components/page-patterns/duplicate-menu-item.js +52 -131
  53. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  54. package/build/components/page-patterns/grid-item.js +1 -0
  55. package/build/components/page-patterns/grid-item.js.map +1 -1
  56. package/build/components/page-patterns/header.js +25 -3
  57. package/build/components/page-patterns/header.js.map +1 -1
  58. package/build/components/page-patterns/rename-category-menu-item.js +49 -0
  59. package/build/components/page-patterns/rename-category-menu-item.js.map +1 -0
  60. package/build/components/page-patterns/rename-menu-item.js +1 -1
  61. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  62. package/build/components/page-patterns/use-patterns.js +1 -0
  63. package/build/components/page-patterns/use-patterns.js.map +1 -1
  64. package/build/components/pattern-modal/duplicate.js +65 -0
  65. package/build/components/pattern-modal/duplicate.js.map +1 -0
  66. package/build/components/pattern-modal/index.js +24 -0
  67. package/build/components/pattern-modal/index.js.map +1 -0
  68. package/build/components/pattern-modal/rename.js +42 -0
  69. package/build/components/pattern-modal/rename.js.map +1 -0
  70. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
  71. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
  73. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
  75. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  76. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +29 -0
  77. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  78. package/build/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
  79. package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  80. package/build/hooks/commands/use-common-commands.js +1 -2
  81. package/build/hooks/commands/use-common-commands.js.map +1 -1
  82. package/build/hooks/commands/use-edit-mode-commands.js +49 -0
  83. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  84. package/build/lock-unlock.js +1 -1
  85. package/build/lock-unlock.js.map +1 -1
  86. package/build/store/selectors.js +4 -5
  87. package/build/store/selectors.js.map +1 -1
  88. package/build-module/components/actions/trash-post.js +41 -0
  89. package/build-module/components/actions/trash-post.js.map +1 -0
  90. package/build-module/components/add-new-template/add-custom-template-modal-content.js +16 -12
  91. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  92. package/build-module/components/block-editor/resize-handle.js +2 -1
  93. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  94. package/build-module/components/create-template-part-modal/index.js +10 -6
  95. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  96. package/build-module/components/dataviews/dataviews.js +40 -31
  97. package/build-module/components/dataviews/dataviews.js.map +1 -1
  98. package/build-module/components/dataviews/field-actions.js +22 -0
  99. package/build-module/components/dataviews/field-actions.js.map +1 -0
  100. package/build-module/components/dataviews/filters.js +53 -0
  101. package/build-module/components/dataviews/filters.js.map +1 -0
  102. package/build-module/components/dataviews/in-filter.js +43 -0
  103. package/build-module/components/dataviews/in-filter.js.map +1 -0
  104. package/build-module/components/dataviews/index.js +0 -1
  105. package/build-module/components/dataviews/index.js.map +1 -1
  106. package/build-module/components/dataviews/pagination.js +74 -28
  107. package/build-module/components/dataviews/pagination.js.map +1 -1
  108. package/build-module/components/dataviews/text-filter.js +19 -13
  109. package/build-module/components/dataviews/text-filter.js.map +1 -1
  110. package/build-module/components/dataviews/view-actions.js +95 -54
  111. package/build-module/components/dataviews/view-actions.js.map +1 -1
  112. package/build-module/components/dataviews/view-grid.js +51 -0
  113. package/build-module/components/dataviews/view-grid.js.map +1 -0
  114. package/build-module/components/dataviews/view-list.js +274 -0
  115. package/build-module/components/dataviews/view-list.js.map +1 -0
  116. package/build-module/components/editor/index.js +2 -1
  117. package/build-module/components/editor/index.js.map +1 -1
  118. package/build-module/components/global-styles/font-library-modal/context.js +16 -10
  119. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  120. package/build-module/components/global-styles/font-library-modal/font-collection.js +20 -6
  121. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  122. package/build-module/components/global-styles/screen-block.js +1 -2
  123. package/build-module/components/global-styles/screen-block.js.map +1 -1
  124. package/build-module/components/global-styles/screen-root.js +1 -2
  125. package/build-module/components/global-styles/screen-root.js.map +1 -1
  126. package/build-module/components/global-styles/ui.js +3 -4
  127. package/build-module/components/global-styles/ui.js.map +1 -1
  128. package/build-module/components/layout/index.js +11 -3
  129. package/build-module/components/layout/index.js.map +1 -1
  130. package/build-module/components/media/index.js +26 -0
  131. package/build-module/components/media/index.js.map +1 -0
  132. package/build-module/components/page-actions/index.js +0 -2
  133. package/build-module/components/page-actions/index.js.map +1 -1
  134. package/build-module/components/page-pages/index.js +156 -110
  135. package/build-module/components/page-pages/index.js.map +1 -1
  136. package/build-module/components/page-patterns/delete-category-menu-item.js +82 -0
  137. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -0
  138. package/build-module/components/page-patterns/duplicate-menu-item.js +54 -133
  139. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  140. package/build-module/components/page-patterns/grid-item.js +1 -0
  141. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  142. package/build-module/components/page-patterns/header.js +26 -4
  143. package/build-module/components/page-patterns/header.js.map +1 -1
  144. package/build-module/components/page-patterns/rename-category-menu-item.js +42 -0
  145. package/build-module/components/page-patterns/rename-category-menu-item.js.map +1 -0
  146. package/build-module/components/page-patterns/rename-menu-item.js +1 -1
  147. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
  148. package/build-module/components/page-patterns/use-patterns.js +1 -0
  149. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  150. package/build-module/components/pattern-modal/duplicate.js +57 -0
  151. package/build-module/components/pattern-modal/duplicate.js.map +1 -0
  152. package/build-module/components/pattern-modal/index.js +14 -0
  153. package/build-module/components/pattern-modal/index.js.map +1 -0
  154. package/build-module/components/pattern-modal/rename.js +34 -0
  155. package/build-module/components/pattern-modal/rename.js.map +1 -0
  156. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
  157. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  158. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
  159. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  160. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
  161. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  162. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +22 -0
  163. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  164. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
  165. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  166. package/build-module/hooks/commands/use-common-commands.js +1 -2
  167. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  168. package/build-module/hooks/commands/use-edit-mode-commands.js +50 -1
  169. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  170. package/build-module/lock-unlock.js +1 -1
  171. package/build-module/lock-unlock.js.map +1 -1
  172. package/build-module/store/selectors.js +4 -5
  173. package/build-module/store/selectors.js.map +1 -1
  174. package/build-style/style-rtl.css +42 -9
  175. package/build-style/style.css +42 -9
  176. package/package.json +40 -40
  177. package/src/components/actions/trash-post.js +55 -0
  178. package/src/components/add-new-template/add-custom-template-modal-content.js +22 -17
  179. package/src/components/block-editor/resize-handle.js +1 -0
  180. package/src/components/create-template-part-modal/index.js +9 -5
  181. package/src/components/dataviews/README.md +107 -0
  182. package/src/components/dataviews/dataviews.js +44 -33
  183. package/src/components/dataviews/field-actions.js +28 -0
  184. package/src/components/dataviews/filters.js +57 -0
  185. package/src/components/dataviews/in-filter.js +47 -0
  186. package/src/components/dataviews/index.js +0 -1
  187. package/src/components/dataviews/pagination.js +71 -29
  188. package/src/components/dataviews/style.scss +11 -1
  189. package/src/components/dataviews/text-filter.js +19 -15
  190. package/src/components/dataviews/view-actions.js +108 -63
  191. package/src/components/dataviews/view-grid.js +60 -0
  192. package/src/components/dataviews/view-list.js +348 -0
  193. package/src/components/editor/index.js +2 -0
  194. package/src/components/global-styles/font-library-modal/context.js +17 -11
  195. package/src/components/global-styles/font-library-modal/font-collection.js +18 -10
  196. package/src/components/global-styles/screen-block.js +1 -2
  197. package/src/components/global-styles/screen-root.js +1 -2
  198. package/src/components/global-styles/style.scss +16 -4
  199. package/src/components/global-styles/ui.js +1 -2
  200. package/src/components/layout/index.js +12 -4
  201. package/src/components/media/index.js +25 -0
  202. package/src/components/page-actions/index.js +1 -7
  203. package/src/components/page-pages/index.js +156 -108
  204. package/src/components/page-pages/style.scss +3 -0
  205. package/src/components/page-patterns/delete-category-menu-item.js +104 -0
  206. package/src/components/page-patterns/duplicate-menu-item.js +68 -181
  207. package/src/components/page-patterns/grid-item.js +1 -0
  208. package/src/components/page-patterns/header.js +42 -6
  209. package/src/components/page-patterns/rename-category-menu-item.js +45 -0
  210. package/src/components/page-patterns/rename-menu-item.js +2 -2
  211. package/src/components/page-patterns/style.scss +8 -0
  212. package/src/components/page-patterns/use-patterns.js +5 -0
  213. package/src/components/pattern-modal/duplicate.js +53 -0
  214. package/src/components/pattern-modal/index.js +19 -0
  215. package/src/components/pattern-modal/rename.js +29 -0
  216. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +4 -0
  217. package/src/components/sidebar-navigation-screen/style.scss +17 -5
  218. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -7
  219. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -8
  220. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +32 -0
  221. package/src/components/sidebar-navigation-screen-template/home-template-details.js +21 -7
  222. package/src/hooks/commands/use-common-commands.js +1 -2
  223. package/src/hooks/commands/use-edit-mode-commands.js +41 -0
  224. package/src/lock-unlock.js +1 -1
  225. package/src/store/selectors.js +9 -10
  226. package/src/style.scss +1 -0
  227. package/build/components/dataviews/list-view.js +0 -89
  228. package/build/components/dataviews/list-view.js.map +0 -1
  229. package/build-module/components/dataviews/list-view.js +0 -80
  230. package/build-module/components/dataviews/list-view.js.map +0 -1
  231. package/src/components/dataviews/list-view.js +0 -106
@@ -2,26 +2,53 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { Button, __experimentalHStack as HStack, __experimentalText as Text, __experimentalNumberControl as NumberControl } from '@wordpress/components';
5
+ import { Button, __experimentalHStack as HStack, __experimentalText as Text, __experimentalNumberControl as NumberControl, __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper, SelectControl } from '@wordpress/components';
6
6
  import { createInterpolateElement } from '@wordpress/element';
7
7
  import { sprintf, __, _x, _n } from '@wordpress/i18n';
8
-
9
- /**
10
- * Internal dependencies
11
- */
12
- import { PageSizeControl } from './view-actions';
8
+ const PAGE_SIZE_VALUES = [5, 20, 50];
9
+ function PageSizeControl({
10
+ view,
11
+ onChangeView
12
+ }) {
13
+ const label = __('Rows per page:');
14
+ return createElement(SelectControl, {
15
+ __nextHasNoMarginBottom: true,
16
+ label: label,
17
+ hideLabelFromVision: true
18
+ // TODO: This should probably use a label based on the wanted design
19
+ // and we could remove InputControlPrefixWrapper usage.
20
+ ,
21
+ prefix: createElement(InputControlPrefixWrapper, {
22
+ as: "span",
23
+ className: "dataviews__select-control-prefix"
24
+ }, label),
25
+ value: view.perPage,
26
+ options: PAGE_SIZE_VALUES.map(pageSize => ({
27
+ value: pageSize,
28
+ label: pageSize
29
+ })),
30
+ onChange: value => onChangeView({
31
+ ...view,
32
+ perPage: value,
33
+ page: 1
34
+ })
35
+ });
36
+ }
13
37
 
14
38
  // For now this is copied from the patterns list Pagination component, because
15
39
  // the datatable pagination starts from index zero(`0`). Eventually all lists will be
16
40
  // using this one.
17
- export function Pagination({
18
- dataView,
19
- // If passed, use it, as it's for controlled pagination.
20
- totalItems = 0
41
+ function Pagination({
42
+ view,
43
+ onChangeView,
44
+ paginationInfo: {
45
+ totalItems = 0,
46
+ totalPages
47
+ }
21
48
  }) {
22
- const currentPage = dataView.getState().pagination.pageIndex + 1;
23
- const numPages = dataView.getPageCount();
24
- const _totalItems = totalItems || dataView.getCoreRowModel().rows.length;
49
+ if (!totalItems || !totalPages) {
50
+ return null;
51
+ }
25
52
  return createElement(HStack, {
26
53
  expanded: false,
27
54
  spacing: 3,
@@ -33,18 +60,24 @@ export function Pagination({
33
60
  // translators: %s: Total number of entries.
34
61
  sprintf(
35
62
  // translators: %s: Total number of entries.
36
- _n('%s item', '%s items', _totalItems), _totalItems)), !!_totalItems && createElement(HStack, {
63
+ _n('%s item', '%s items', totalItems), totalItems)), !!totalItems && createElement(HStack, {
37
64
  expanded: false,
38
65
  spacing: 1
39
66
  }, createElement(Button, {
40
67
  variant: "tertiary",
41
- onClick: () => dataView.setPageIndex(0),
42
- disabled: !dataView.getCanPreviousPage(),
68
+ onClick: () => onChangeView({
69
+ ...view,
70
+ page: 1
71
+ }),
72
+ disabled: view.page === 1,
43
73
  "aria-label": __('First page')
44
74
  }, "\xAB"), createElement(Button, {
45
75
  variant: "tertiary",
46
- onClick: () => dataView.previousPage(),
47
- disabled: !dataView.getCanPreviousPage(),
76
+ onClick: () => onChangeView({
77
+ ...view,
78
+ page: view.page - 1
79
+ }),
80
+ disabled: view.page === 1,
48
81
  "aria-label": __('Previous page')
49
82
  }, "\u2039"), createElement(HStack, {
50
83
  justify: "flex-start",
@@ -52,32 +85,45 @@ export function Pagination({
52
85
  spacing: 1
53
86
  }, createInterpolateElement(sprintf(
54
87
  // translators: %1$s: Current page number, %2$s: Total number of pages.
55
- _x('<CurrenPageControl /> of %2$s', 'paging'), currentPage, numPages), {
88
+ _x('<CurrenPageControl /> of %2$s', 'paging'), view.page, totalPages), {
56
89
  CurrenPageControl: createElement(NumberControl, {
57
90
  "aria-label": __('Current page'),
58
91
  min: 1,
59
- max: numPages,
92
+ max: totalPages,
60
93
  onChange: value => {
61
- if (value > numPages) return;
62
- dataView.setPageIndex(value - 1);
94
+ if (!value || value < 1 || value > totalPages) {
95
+ return;
96
+ }
97
+ onChangeView({
98
+ ...view,
99
+ page: value
100
+ });
63
101
  },
64
102
  step: "1",
65
- value: currentPage,
103
+ value: view.page,
66
104
  isDragEnabled: false,
67
105
  spinControls: "none"
68
106
  })
69
107
  })), createElement(Button, {
70
108
  variant: "tertiary",
71
- onClick: () => dataView.nextPage(),
72
- disabled: !dataView.getCanNextPage(),
109
+ onClick: () => onChangeView({
110
+ ...view,
111
+ page: view.page + 1
112
+ }),
113
+ disabled: view.page >= totalPages,
73
114
  "aria-label": __('Next page')
74
115
  }, "\u203A"), createElement(Button, {
75
116
  variant: "tertiary",
76
- onClick: () => dataView.setPageIndex(dataView.getPageCount() - 1),
77
- disabled: !dataView.getCanNextPage(),
117
+ onClick: () => onChangeView({
118
+ ...view,
119
+ page: totalPages
120
+ }),
121
+ disabled: view.page >= totalPages,
78
122
  "aria-label": __('Last page')
79
123
  }, "\xBB")), createElement(PageSizeControl, {
80
- dataView: dataView
124
+ view: view,
125
+ onChangeView: onChangeView
81
126
  }));
82
127
  }
128
+ export default Pagination;
83
129
  //# sourceMappingURL=pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Button","__experimentalHStack","HStack","__experimentalText","Text","__experimentalNumberControl","NumberControl","createInterpolateElement","sprintf","__","_x","_n","PageSizeControl","Pagination","dataView","totalItems","currentPage","getState","pagination","pageIndex","numPages","getPageCount","_totalItems","getCoreRowModel","rows","length","createElement","expanded","spacing","justify","className","variant","onClick","setPageIndex","disabled","getCanPreviousPage","previousPage","CurrenPageControl","min","max","onChange","value","step","isDragEnabled","spinControls","nextPage","getCanNextPage"],"sources":["@wordpress/edit-site/src/components/dataviews/pagination.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n\t__experimentalNumberControl as NumberControl,\n} from '@wordpress/components';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { sprintf, __, _x, _n } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PageSizeControl } from './view-actions';\n\n// For now this is copied from the patterns list Pagination component, because\n// the datatable pagination starts from index zero(`0`). Eventually all lists will be\n// using this one.\nexport function Pagination( {\n\tdataView,\n\t// If passed, use it, as it's for controlled pagination.\n\ttotalItems = 0,\n} ) {\n\tconst currentPage = dataView.getState().pagination.pageIndex + 1;\n\tconst numPages = dataView.getPageCount();\n\tconst _totalItems = totalItems || dataView.getCoreRowModel().rows.length;\n\treturn (\n\t\t<HStack\n\t\t\texpanded={ false }\n\t\t\tspacing={ 3 }\n\t\t\tjustify=\"space-between\"\n\t\t\tclassName=\"dataviews-pagination\"\n\t\t>\n\t\t\t<Text variant=\"muted\">\n\t\t\t\t{\n\t\t\t\t\t// translators: %s: Total number of entries.\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: Total number of entries.\n\t\t\t\t\t\t_n( '%s item', '%s items', _totalItems ),\n\t\t\t\t\t\t_totalItems\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t</Text>\n\t\t\t{ !! _totalItems && (\n\t\t\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => dataView.setPageIndex( 0 ) }\n\t\t\t\t\t\tdisabled={ ! dataView.getCanPreviousPage() }\n\t\t\t\t\t\taria-label={ __( 'First page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t«\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => dataView.previousPage() }\n\t\t\t\t\t\tdisabled={ ! dataView.getCanPreviousPage() }\n\t\t\t\t\t\taria-label={ __( 'Previous page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t‹\n\t\t\t\t\t</Button>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %1$s: Current page number, %2$s: Total number of pages.\n\t\t\t\t\t\t\t\t_x( '<CurrenPageControl /> of %2$s', 'paging' ),\n\t\t\t\t\t\t\t\tcurrentPage,\n\t\t\t\t\t\t\t\tnumPages\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tCurrenPageControl: (\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\t\tmax={ numPages }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( value > numPages ) return;\n\t\t\t\t\t\t\t\t\t\t\tdataView.setPageIndex( value - 1 );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tstep=\"1\"\n\t\t\t\t\t\t\t\t\t\tvalue={ currentPage }\n\t\t\t\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\t\t\t\tspinControls=\"none\"\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</HStack>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => dataView.nextPage() }\n\t\t\t\t\t\tdisabled={ ! dataView.getCanNextPage() }\n\t\t\t\t\t\taria-label={ __( 'Next page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t›\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tdataView.setPageIndex( dataView.getPageCount() - 1 )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ ! dataView.getCanNextPage() }\n\t\t\t\t\t\taria-label={ __( 'Last page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t»\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t<PageSizeControl dataView={ dataView } />\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Button","__experimentalHStack","HStack","__experimentalText","Text","__experimentalNumberControl","NumberControl","__experimentalInputControlPrefixWrapper","InputControlPrefixWrapper","SelectControl","createInterpolateElement","sprintf","__","_x","_n","PAGE_SIZE_VALUES","PageSizeControl","view","onChangeView","label","createElement","__nextHasNoMarginBottom","hideLabelFromVision","prefix","as","className","value","perPage","options","map","pageSize","onChange","page","Pagination","paginationInfo","totalItems","totalPages","expanded","spacing","justify","variant","onClick","disabled","CurrenPageControl","min","max","step","isDragEnabled","spinControls"],"sources":["@wordpress/edit-site/src/components/dataviews/pagination.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\tSelectControl,\n} from '@wordpress/components';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { sprintf, __, _x, _n } from '@wordpress/i18n';\n\nconst PAGE_SIZE_VALUES = [ 5, 20, 50 ];\nfunction PageSizeControl( { view, onChangeView } ) {\n\tconst label = __( 'Rows per page:' );\n\treturn (\n\t\t<SelectControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision\n\t\t\t// TODO: This should probably use a label based on the wanted design\n\t\t\t// and we could remove InputControlPrefixWrapper usage.\n\t\t\tprefix={\n\t\t\t\t<InputControlPrefixWrapper\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tclassName=\"dataviews__select-control-prefix\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t}\n\t\t\tvalue={ view.perPage }\n\t\t\toptions={ PAGE_SIZE_VALUES.map( ( pageSize ) => ( {\n\t\t\t\tvalue: pageSize,\n\t\t\t\tlabel: pageSize,\n\t\t\t} ) ) }\n\t\t\tonChange={ ( value ) =>\n\t\t\t\tonChangeView( { ...view, perPage: value, page: 1 } )\n\t\t\t}\n\t\t/>\n\t);\n}\n\n// For now this is copied from the patterns list Pagination component, because\n// the datatable pagination starts from index zero(`0`). Eventually all lists will be\n// using this one.\nfunction Pagination( {\n\tview,\n\tonChangeView,\n\tpaginationInfo: { totalItems = 0, totalPages },\n} ) {\n\tif ( ! totalItems || ! totalPages ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<HStack\n\t\t\texpanded={ false }\n\t\t\tspacing={ 3 }\n\t\t\tjustify=\"space-between\"\n\t\t\tclassName=\"dataviews-pagination\"\n\t\t>\n\t\t\t<Text variant=\"muted\">\n\t\t\t\t{\n\t\t\t\t\t// translators: %s: Total number of entries.\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: Total number of entries.\n\t\t\t\t\t\t_n( '%s item', '%s items', totalItems ),\n\t\t\t\t\t\ttotalItems\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t</Text>\n\t\t\t{ !! totalItems && (\n\t\t\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => onChangeView( { ...view, page: 1 } ) }\n\t\t\t\t\t\tdisabled={ view.page === 1 }\n\t\t\t\t\t\taria-label={ __( 'First page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t«\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: view.page - 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ view.page === 1 }\n\t\t\t\t\t\taria-label={ __( 'Previous page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t‹\n\t\t\t\t\t</Button>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %1$s: Current page number, %2$s: Total number of pages.\n\t\t\t\t\t\t\t\t_x( '<CurrenPageControl /> of %2$s', 'paging' ),\n\t\t\t\t\t\t\t\tview.page,\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tCurrenPageControl: (\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\t\tmax={ totalPages }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t! value ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue < 1 ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue > totalPages\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\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\tpage: value,\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\tstep=\"1\"\n\t\t\t\t\t\t\t\t\t\tvalue={ view.page }\n\t\t\t\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\t\t\t\tspinControls=\"none\"\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</HStack>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: view.page + 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ view.page >= totalPages }\n\t\t\t\t\t\taria-label={ __( 'Next page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t›\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: totalPages } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ view.page >= totalPages }\n\t\t\t\t\t\taria-label={ __( 'Last page' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t»\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t<PageSizeControl view={ view } onChangeView={ onChangeView } />\n\t\t</HStack>\n\t);\n}\n\nexport default Pagination;\n"],"mappings":"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"}
@@ -1,14 +1,9 @@
1
1
  import { createElement } from "react";
2
- /**
3
- * External dependencies
4
- */
5
- import classnames from 'classnames';
6
-
7
2
  /**
8
3
  * WordPress dependencies
9
4
  */
10
5
  import { __ } from '@wordpress/i18n';
11
- import { useEffect } from '@wordpress/element';
6
+ import { useEffect, useRef } from '@wordpress/element';
12
7
  import { SearchControl } from '@wordpress/components';
13
8
 
14
9
  /**
@@ -16,16 +11,27 @@ import { SearchControl } from '@wordpress/components';
16
11
  */
17
12
  import useDebouncedInput from '../../utils/use-debounced-input';
18
13
  export default function TextFilter({
19
- className,
20
- searchLabel = __('Filter list'),
21
- onChange
14
+ id,
15
+ view,
16
+ onChangeView
22
17
  }) {
23
- const [search, setSearch, debouncedSearch] = useDebouncedInput();
18
+ const [search, setSearch, debouncedSearch] = useDebouncedInput(view.filters[id]);
19
+ const onChangeViewRef = useRef(onChangeView);
20
+ useEffect(() => {
21
+ onChangeViewRef.current = onChangeView;
22
+ }, [onChangeView]);
24
23
  useEffect(() => {
25
- onChange(debouncedSearch);
26
- }, [debouncedSearch, onChange]);
24
+ onChangeViewRef.current(currentView => ({
25
+ ...currentView,
26
+ page: 1,
27
+ filters: {
28
+ ...currentView.filters,
29
+ [id]: debouncedSearch
30
+ }
31
+ }));
32
+ }, [debouncedSearch]);
33
+ const searchLabel = __('Filter list');
27
34
  return createElement(SearchControl, {
28
- className: classnames('dataviews__text-filter', className),
29
35
  onChange: setSearch,
30
36
  value: search,
31
37
  label: searchLabel,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","__","useEffect","SearchControl","useDebouncedInput","TextFilter","className","searchLabel","onChange","search","setSearch","debouncedSearch","createElement","value","label","placeholder","size"],"sources":["@wordpress/edit-site/src/components/dataviews/text-filter.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\nimport { SearchControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport useDebouncedInput from '../../utils/use-debounced-input';\n\nexport default function TextFilter( {\n\tclassName,\n\tsearchLabel = __( 'Filter list' ),\n\tonChange,\n} ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tuseEffect( () => {\n\t\tonChange( debouncedSearch );\n\t}, [ debouncedSearch, onChange ] );\n\treturn (\n\t\t<SearchControl\n\t\t\tclassName={ classnames( 'dataviews__text-filter', className ) }\n\t\t\tonChange={ setSearch }\n\t\t\tvalue={ search }\n\t\t\tlabel={ searchLabel }\n\t\t\tplaceholder={ searchLabel }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,aAAa,QAAQ,uBAAuB;;AAErD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,iCAAiC;AAE/D,eAAe,SAASC,UAAUA,CAAE;EACnCC,SAAS;EACTC,WAAW,GAAGN,EAAE,CAAE,aAAc,CAAC;EACjCO;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,MAAM,EAAEC,SAAS,EAAEC,eAAe,CAAE,GAAGP,iBAAiB,CAAC,CAAC;EAClEF,SAAS,CAAE,MAAM;IAChBM,QAAQ,CAAEG,eAAgB,CAAC;EAC5B,CAAC,EAAE,CAAEA,eAAe,EAAEH,QAAQ,CAAG,CAAC;EAClC,OACCI,aAAA,CAACT,aAAa;IACbG,SAAS,EAAGN,UAAU,CAAE,wBAAwB,EAAEM,SAAU,CAAG;IAC/DE,QAAQ,EAAGE,SAAW;IACtBG,KAAK,EAAGJ,MAAQ;IAChBK,KAAK,EAAGP,WAAa;IACrBQ,WAAW,EAAGR,WAAa;IAC3BS,IAAI,EAAC;EAAS,CACd,CAAC;AAEJ"}
1
+ {"version":3,"names":["__","useEffect","useRef","SearchControl","useDebouncedInput","TextFilter","id","view","onChangeView","search","setSearch","debouncedSearch","filters","onChangeViewRef","current","currentView","page","searchLabel","createElement","onChange","value","label","placeholder","size"],"sources":["@wordpress/edit-site/src/components/dataviews/text-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { SearchControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport useDebouncedInput from '../../utils/use-debounced-input';\n\nexport default function TextFilter( { id, view, onChangeView } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput(\n\t\tview.filters[ id ]\n\t);\n\tconst onChangeViewRef = useRef( onChangeView );\n\tuseEffect( () => {\n\t\tonChangeViewRef.current = onChangeView;\n\t}, [ onChangeView ] );\n\tuseEffect( () => {\n\t\tonChangeViewRef.current( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tpage: 1,\n\t\t\tfilters: {\n\t\t\t\t...currentView.filters,\n\t\t\t\t[ id ]: debouncedSearch,\n\t\t\t},\n\t\t} ) );\n\t}, [ debouncedSearch ] );\n\tconst searchLabel = __( 'Filter list' );\n\treturn (\n\t\t<SearchControl\n\t\t\tonChange={ setSearch }\n\t\t\tvalue={ search }\n\t\t\tlabel={ searchLabel }\n\t\t\tplaceholder={ searchLabel }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACtD,SAASC,aAAa,QAAQ,uBAAuB;;AAErD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,iCAAiC;AAE/D,eAAe,SAASC,UAAUA,CAAE;EAAEC,EAAE;EAAEC,IAAI;EAAEC;AAAa,CAAC,EAAG;EAChE,MAAM,CAAEC,MAAM,EAAEC,SAAS,EAAEC,eAAe,CAAE,GAAGP,iBAAiB,CAC/DG,IAAI,CAACK,OAAO,CAAEN,EAAE,CACjB,CAAC;EACD,MAAMO,eAAe,GAAGX,MAAM,CAAEM,YAAa,CAAC;EAC9CP,SAAS,CAAE,MAAM;IAChBY,eAAe,CAACC,OAAO,GAAGN,YAAY;EACvC,CAAC,EAAE,CAAEA,YAAY,CAAG,CAAC;EACrBP,SAAS,CAAE,MAAM;IAChBY,eAAe,CAACC,OAAO,CAAIC,WAAW,KAAQ;MAC7C,GAAGA,WAAW;MACdC,IAAI,EAAE,CAAC;MACPJ,OAAO,EAAE;QACR,GAAGG,WAAW,CAACH,OAAO;QACtB,CAAEN,EAAE,GAAIK;MACT;IACD,CAAC,CAAG,CAAC;EACN,CAAC,EAAE,CAAEA,eAAe,CAAG,CAAC;EACxB,MAAMM,WAAW,GAAGjB,EAAE,CAAE,aAAc,CAAC;EACvC,OACCkB,aAAA,CAACf,aAAa;IACbgB,QAAQ,EAAGT,SAAW;IACtBU,KAAK,EAAGX,MAAQ;IAChBY,KAAK,EAAGJ,WAAa;IACrBK,WAAW,EAAGL,WAAa;IAC3BM,IAAI,EAAC;EAAS,CACd,CAAC;AAEJ"}
@@ -2,7 +2,7 @@ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { Button, Icon, SelectControl, privateApis as componentsPrivateApis, __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper } from '@wordpress/components';
5
+ import { Button, Icon, privateApis as componentsPrivateApis } from '@wordpress/components';
6
6
  import { chevronRightSmall, check, blockTable, chevronDown, arrowUp, arrowDown } from '@wordpress/icons';
7
7
  import { __ } from '@wordpress/i18n';
8
8
 
@@ -17,50 +17,69 @@ const {
17
17
  DropdownSubMenuV2,
18
18
  DropdownSubMenuTriggerV2
19
19
  } = unlock(componentsPrivateApis);
20
- export const PAGE_SIZE_VALUES = [5, 20, 50];
21
- export function PageSizeControl({
22
- dataView
20
+ const availableViews = [{
21
+ id: 'list',
22
+ label: __('List')
23
+ }, {
24
+ id: 'grid',
25
+ label: __('Grid')
26
+ }];
27
+ function ViewTypeMenu({
28
+ view,
29
+ onChangeView
23
30
  }) {
24
- const label = __('Rows per page:');
25
- return createElement(SelectControl, {
26
- __nextHasNoMarginBottom: true,
27
- label: label,
28
- hideLabelFromVision: true
29
- // TODO: This should probably use a label based on the wanted design
30
- // and we could remove InputControlPrefixWrapper usage.
31
- ,
32
- prefix: createElement(InputControlPrefixWrapper, {
33
- as: "span",
34
- className: "dataviews__per-page-control-prefix"
35
- }, label),
36
- value: dataView.getState().pagination.pageSize,
37
- options: PAGE_SIZE_VALUES.map(pageSize => ({
38
- value: pageSize,
39
- label: pageSize
40
- })),
41
- onChange: value => dataView.setPageSize(+value)
42
- });
31
+ const activeView = availableViews.find(v => view.type === v.id);
32
+ return createElement(DropdownSubMenuV2, {
33
+ trigger: createElement(DropdownSubMenuTriggerV2, {
34
+ suffix: createElement(Fragment, null, activeView.label, createElement(Icon, {
35
+ icon: chevronRightSmall
36
+ }))
37
+ }, __('Layout'))
38
+ }, availableViews.map(availableView => {
39
+ return createElement(DropdownMenuItemV2, {
40
+ key: availableView.id,
41
+ prefix: availableView.id === view.type && createElement(Icon, {
42
+ icon: check
43
+ }),
44
+ onSelect: event => {
45
+ // We need to handle this on DropDown component probably..
46
+ event.preventDefault();
47
+ onChangeView({
48
+ ...view,
49
+ type: availableView.id
50
+ });
51
+ }
52
+ // TODO: check about role and a11y.
53
+ ,
54
+ role: "menuitemcheckbox"
55
+ }, availableView.label);
56
+ }));
43
57
  }
58
+ const PAGE_SIZE_VALUES = [5, 20, 50];
44
59
  function PageSizeMenu({
45
- dataView
60
+ view,
61
+ onChangeView
46
62
  }) {
47
- const currenPageSize = dataView.getState().pagination.pageSize;
48
63
  return createElement(DropdownSubMenuV2, {
49
64
  trigger: createElement(DropdownSubMenuTriggerV2, {
50
- suffix: createElement(Fragment, null, currenPageSize, createElement(Icon, {
65
+ suffix: createElement(Fragment, null, view.perPage, createElement(Icon, {
51
66
  icon: chevronRightSmall
52
67
  }))
53
68
  }, __('Rows per page'))
54
69
  }, PAGE_SIZE_VALUES.map(size => {
55
70
  return createElement(DropdownMenuItemV2, {
56
71
  key: size,
57
- prefix: currenPageSize === size && createElement(Icon, {
72
+ prefix: view.perPage === size && createElement(Icon, {
58
73
  icon: check
59
74
  }),
60
75
  onSelect: event => {
61
76
  // We need to handle this on DropDown component probably..
62
77
  event.preventDefault();
63
- dataView.setPageSize(size);
78
+ onChangeView({
79
+ ...view,
80
+ perPage: size,
81
+ page: 1
82
+ });
64
83
  }
65
84
  // TODO: check about role and a11y.
66
85
  ,
@@ -69,10 +88,12 @@ function PageSizeMenu({
69
88
  }));
70
89
  }
71
90
  function FieldsVisibilityMenu({
72
- dataView
91
+ view,
92
+ onChangeView,
93
+ fields
73
94
  }) {
74
- const hideableFields = dataView.getAllColumns().filter(columnn => columnn.getCanHide());
75
- if (!hideableFields?.length) {
95
+ const hidableFields = fields.filter(field => field.enableHiding !== false);
96
+ if (!hidableFields?.length) {
76
97
  return null;
77
98
  }
78
99
  return createElement(DropdownSubMenuV2, {
@@ -81,18 +102,21 @@ function FieldsVisibilityMenu({
81
102
  icon: chevronRightSmall
82
103
  })
83
104
  }, __('Fields'))
84
- }, hideableFields?.map(field => {
105
+ }, hidableFields?.map(field => {
85
106
  return createElement(DropdownMenuItemV2, {
86
107
  key: field.id,
87
- prefix: field.getIsVisible() && createElement(Icon, {
108
+ prefix: !view.hiddenFields?.includes(field.id) && createElement(Icon, {
88
109
  icon: check
89
110
  }),
90
111
  onSelect: event => {
91
112
  event.preventDefault();
92
- field.getToggleVisibilityHandler()(event);
113
+ onChangeView({
114
+ ...view,
115
+ hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...view.hiddenFields, field.id]
116
+ });
93
117
  },
94
118
  role: "menuitemcheckbox"
95
- }, field.columnDef.header);
119
+ }, field.header);
96
120
  }));
97
121
  }
98
122
 
@@ -108,47 +132,56 @@ const sortingItemsInfo = {
108
132
  }
109
133
  };
110
134
  function SortMenu({
111
- dataView
135
+ fields,
136
+ view,
137
+ onChangeView
112
138
  }) {
113
- const sortableFields = dataView.getAllColumns().filter(columnn => columnn.getCanSort());
139
+ const sortableFields = fields.filter(field => field.enableSorting !== false);
114
140
  if (!sortableFields?.length) {
115
141
  return null;
116
142
  }
117
- const currentSortedField = sortableFields.find(field => field.getIsSorted());
143
+ const currentSortedField = fields.find(field => field.id === view.sort?.field);
118
144
  return createElement(DropdownSubMenuV2, {
119
145
  trigger: createElement(DropdownSubMenuTriggerV2, {
120
- suffix: createElement(Fragment, null, currentSortedField?.columnDef.header, createElement(Icon, {
146
+ suffix: createElement(Fragment, null, currentSortedField?.header, createElement(Icon, {
121
147
  icon: chevronRightSmall
122
148
  }))
123
149
  }, __('Sort by'))
124
150
  }, sortableFields?.map(field => {
125
- const sortedDirection = field.getIsSorted();
151
+ const sortedDirection = view.sort?.direction;
126
152
  return createElement(DropdownSubMenuV2, {
127
153
  key: field.id,
128
154
  trigger: createElement(DropdownSubMenuTriggerV2, {
129
155
  suffix: createElement(Icon, {
130
156
  icon: chevronRightSmall
131
157
  })
132
- }, field.columnDef.header),
158
+ }, field.header),
133
159
  side: "left"
134
160
  }, Object.entries(sortingItemsInfo).map(([direction, info]) => {
161
+ const isActive = currentSortedField && sortedDirection === direction && field.id === currentSortedField.id;
135
162
  return createElement(DropdownMenuItemV2, {
136
163
  key: direction,
137
164
  prefix: createElement(Icon, {
138
165
  icon: info.icon
139
166
  }),
140
- suffix: sortedDirection === direction && createElement(Icon, {
167
+ suffix: isActive && createElement(Icon, {
141
168
  icon: check
142
169
  }),
143
170
  onSelect: event => {
144
171
  event.preventDefault();
145
172
  if (sortedDirection === direction) {
146
- dataView.resetSorting();
173
+ onChangeView({
174
+ ...view,
175
+ sort: undefined
176
+ });
147
177
  } else {
148
- dataView.setSorting([{
149
- id: field.id,
150
- desc: direction === 'desc'
151
- }]);
178
+ onChangeView({
179
+ ...view,
180
+ sort: {
181
+ field: field.id,
182
+ direction
183
+ }
184
+ });
152
185
  }
153
186
  }
154
187
  }, info.label);
@@ -156,24 +189,32 @@ function SortMenu({
156
189
  }));
157
190
  }
158
191
  export default function ViewActions({
159
- dataView,
160
- className
192
+ fields,
193
+ view,
194
+ onChangeView
161
195
  }) {
162
196
  return createElement(DropdownMenuV2, {
163
197
  label: __('Actions'),
164
- className: className,
165
198
  trigger: createElement(Button, {
166
199
  variant: "tertiary",
167
200
  icon: blockTable
168
201
  }, __('View'), createElement(Icon, {
169
202
  icon: chevronDown
170
203
  }))
171
- }, createElement(DropdownMenuGroupV2, null, createElement(SortMenu, {
172
- dataView: dataView
204
+ }, createElement(DropdownMenuGroupV2, null, createElement(ViewTypeMenu, {
205
+ view: view,
206
+ onChangeView: onChangeView
207
+ }), createElement(SortMenu, {
208
+ fields: fields,
209
+ view: view,
210
+ onChangeView: onChangeView
173
211
  }), createElement(FieldsVisibilityMenu, {
174
- dataView: dataView
212
+ fields: fields,
213
+ view: view,
214
+ onChangeView: onChangeView
175
215
  }), createElement(PageSizeMenu, {
176
- dataView: dataView
216
+ view: view,
217
+ onChangeView: onChangeView
177
218
  })));
178
219
  }
179
220
  //# sourceMappingURL=view-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Button","Icon","SelectControl","privateApis","componentsPrivateApis","__experimentalInputControlPrefixWrapper","InputControlPrefixWrapper","chevronRightSmall","check","blockTable","chevronDown","arrowUp","arrowDown","__","unlock","DropdownMenuV2","DropdownMenuGroupV2","DropdownMenuItemV2","DropdownSubMenuV2","DropdownSubMenuTriggerV2","PAGE_SIZE_VALUES","PageSizeControl","dataView","label","createElement","__nextHasNoMarginBottom","hideLabelFromVision","prefix","as","className","value","getState","pagination","pageSize","options","map","onChange","setPageSize","PageSizeMenu","currenPageSize","trigger","suffix","Fragment","icon","size","key","onSelect","event","preventDefault","role","FieldsVisibilityMenu","hideableFields","getAllColumns","filter","columnn","getCanHide","length","field","id","getIsVisible","getToggleVisibilityHandler","columnDef","header","sortingItemsInfo","asc","desc","SortMenu","sortableFields","getCanSort","currentSortedField","find","getIsSorted","sortedDirection","side","Object","entries","direction","info","resetSorting","setSorting","ViewActions","variant"],"sources":["@wordpress/edit-site/src/components/dataviews/view-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tIcon,\n\tSelectControl,\n\tprivateApis as componentsPrivateApis,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport {\n\tchevronRightSmall,\n\tcheck,\n\tblockTable,\n\tchevronDown,\n\tarrowUp,\n\tarrowDown,\n} from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst {\n\tDropdownMenuV2,\n\tDropdownMenuGroupV2,\n\tDropdownMenuItemV2,\n\tDropdownSubMenuV2,\n\tDropdownSubMenuTriggerV2,\n} = unlock( componentsPrivateApis );\n\nexport const PAGE_SIZE_VALUES = [ 5, 20, 50 ];\n\nexport function PageSizeControl( { dataView } ) {\n\tconst label = __( 'Rows per page:' );\n\treturn (\n\t\t<SelectControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision\n\t\t\t// TODO: This should probably use a label based on the wanted design\n\t\t\t// and we could remove InputControlPrefixWrapper usage.\n\t\t\tprefix={\n\t\t\t\t<InputControlPrefixWrapper\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tclassName=\"dataviews__per-page-control-prefix\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t}\n\t\t\tvalue={ dataView.getState().pagination.pageSize }\n\t\t\toptions={ PAGE_SIZE_VALUES.map( ( pageSize ) => ( {\n\t\t\t\tvalue: pageSize,\n\t\t\t\tlabel: pageSize,\n\t\t\t} ) ) }\n\t\t\tonChange={ ( value ) => dataView.setPageSize( +value ) }\n\t\t/>\n\t);\n}\n\nfunction PageSizeMenu( { dataView } ) {\n\tconst currenPageSize = dataView.getState().pagination.pageSize;\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ currenPageSize }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ /* TODO: probably label per view type. */ }\n\t\t\t\t\t{ __( 'Rows per page' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\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<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tcurrenPageSize === size && <Icon icon={ check } />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t// We need to handle this on DropDown component probably..\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tdataView.setPageSize( size );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// TODO: check about role and a11y.\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ size }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nfunction FieldsVisibilityMenu( { dataView } ) {\n\tconst hideableFields = dataView\n\t\t.getAllColumns()\n\t\t.filter( ( columnn ) => columnn.getCanHide() );\n\tif ( ! hideableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Fields' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ hideableFields?.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tfield.getIsVisible() && <Icon icon={ check } />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tfield.getToggleVisibilityHandler()( event );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ field.columnDef.header }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\n// This object is used to construct the sorting options per sortable field.\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\n};\nfunction SortMenu( { dataView } ) {\n\tconst sortableFields = dataView\n\t\t.getAllColumns()\n\t\t.filter( ( columnn ) => columnn.getCanSort() );\n\tif ( ! sortableFields?.length ) {\n\t\treturn null;\n\t}\n\tconst currentSortedField = sortableFields.find( ( field ) =>\n\t\tfield.getIsSorted()\n\t);\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ currentSortedField?.columnDef.header }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Sort by' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t}\n\t\t>\n\t\t\t{ sortableFields?.map( ( field ) => {\n\t\t\t\tconst sortedDirection = field.getIsSorted();\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownSubMenuV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ field.columnDef.header }\n\t\t\t\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside=\"left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tsortedDirection === direction && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\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\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tsortedDirection === direction\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataView.resetSorting();\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdataView.setSorting( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdesc:\n\t\t\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\t\t\t'desc',\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\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{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemV2>\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</DropdownSubMenuV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nexport default function ViewActions( { dataView, className } ) {\n\treturn (\n\t\t<DropdownMenuV2\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName={ className }\n\t\t\ttrigger={\n\t\t\t\t<Button variant=\"tertiary\" icon={ blockTable }>\n\t\t\t\t\t{ __( 'View' ) }\n\t\t\t\t\t<Icon icon={ chevronDown } />\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroupV2>\n\t\t\t\t<SortMenu dataView={ dataView } />\n\t\t\t\t<FieldsVisibilityMenu dataView={ dataView } />\n\t\t\t\t<PageSizeMenu dataView={ dataView } />\n\t\t\t</DropdownMenuGroupV2>\n\t\t</DropdownMenuV2>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Button","Icon","privateApis","componentsPrivateApis","chevronRightSmall","check","blockTable","chevronDown","arrowUp","arrowDown","__","unlock","DropdownMenuV2","DropdownMenuGroupV2","DropdownMenuItemV2","DropdownSubMenuV2","DropdownSubMenuTriggerV2","availableViews","id","label","ViewTypeMenu","view","onChangeView","activeView","find","v","type","createElement","trigger","suffix","Fragment","icon","map","availableView","key","prefix","onSelect","event","preventDefault","role","PAGE_SIZE_VALUES","PageSizeMenu","perPage","size","page","FieldsVisibilityMenu","fields","hidableFields","filter","field","enableHiding","length","hiddenFields","includes","header","sortingItemsInfo","asc","desc","SortMenu","sortableFields","enableSorting","currentSortedField","sort","sortedDirection","direction","side","Object","entries","info","isActive","undefined","ViewActions","variant"],"sources":["@wordpress/edit-site/src/components/dataviews/view-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport {\n\tchevronRightSmall,\n\tcheck,\n\tblockTable,\n\tchevronDown,\n\tarrowUp,\n\tarrowDown,\n} from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst {\n\tDropdownMenuV2,\n\tDropdownMenuGroupV2,\n\tDropdownMenuItemV2,\n\tDropdownSubMenuV2,\n\tDropdownSubMenuTriggerV2,\n} = unlock( componentsPrivateApis );\n\nconst availableViews = [\n\t{\n\t\tid: 'list',\n\t\tlabel: __( 'List' ),\n\t},\n\t{\n\t\tid: 'grid',\n\t\tlabel: __( 'Grid' ),\n\t},\n];\n\nfunction ViewTypeMenu( { view, onChangeView } ) {\n\tconst activeView = availableViews.find( ( v ) => view.type === v.id );\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ activeView.label }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Layout' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\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<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ availableView.id }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tavailableView.id === view.type && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t// We need to handle this on DropDown component probably..\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( { ...view, type: availableView.id } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// TODO: check about role and a11y.\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ availableView.label }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 5, 20, 50 ];\nfunction PageSizeMenu( { view, onChangeView } ) {\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ view.perPage }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ /* TODO: probably label per view type. */ }\n\t\t\t\t\t{ __( 'Rows per page' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\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<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ size }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\tview.perPage === size && <Icon icon={ check } />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t// We need to handle this on DropDown component probably..\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( { ...view, perPage: size, page: 1 } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// TODO: check about role and a11y.\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ size }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nfunction FieldsVisibilityMenu( { view, onChangeView, fields } ) {\n\tconst hidableFields = fields.filter(\n\t\t( field ) => field.enableHiding !== false\n\t);\n\tif ( ! hidableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Fields' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\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<DropdownMenuItemV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t! view.hiddenFields?.includes( field.id ) && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\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: [ ...view.hiddenFields, field.id ],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t</DropdownMenuItemV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\n// This object is used to construct the sorting options per sortable field.\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\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<DropdownSubMenuV2\n\t\t\ttrigger={\n\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\tsuffix={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ currentSortedField?.header }\n\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Sort by' ) }\n\t\t\t\t</DropdownSubMenuTriggerV2>\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<DropdownSubMenuV2\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTriggerV2\n\t\t\t\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t</DropdownSubMenuTriggerV2>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside=\"left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\tcurrentSortedField &&\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\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItemV2\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tisActive && <Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tsortedDirection === direction\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\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\t\tsort: undefined,\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} else {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\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\t\tsort: {\n\t\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\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\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{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItemV2>\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</DropdownSubMenuV2>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownSubMenuV2>\n\t);\n}\n\nexport default function ViewActions( { fields, view, onChangeView } ) {\n\treturn (\n\t\t<DropdownMenuV2\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\ttrigger={\n\t\t\t\t<Button variant=\"tertiary\" icon={ blockTable }>\n\t\t\t\t\t{ __( 'View' ) }\n\t\t\t\t\t<Icon icon={ chevronDown } />\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t<DropdownMenuGroupV2>\n\t\t\t\t<ViewTypeMenu view={ view } onChangeView={ onChangeView } />\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</DropdownMenuGroupV2>\n\t\t</DropdownMenuV2>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,MAAM,EACNC,IAAI,EACJC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SACCC,iBAAiB,EACjBC,KAAK,EACLC,UAAU,EACVC,WAAW,EACXC,OAAO,EACPC,SAAS,QACH,kBAAkB;AACzB,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EACLC,cAAc;EACdC,mBAAmB;EACnBC,kBAAkB;EAClBC,iBAAiB;EACjBC;AACD,CAAC,GAAGL,MAAM,CAAER,qBAAsB,CAAC;AAEnC,MAAMc,cAAc,GAAG,CACtB;EACCC,EAAE,EAAE,MAAM;EACVC,KAAK,EAAET,EAAE,CAAE,MAAO;AACnB,CAAC,EACD;EACCQ,EAAE,EAAE,MAAM;EACVC,KAAK,EAAET,EAAE,CAAE,MAAO;AACnB,CAAC,CACD;AAED,SAASU,YAAYA,CAAE;EAAEC,IAAI;EAAEC;AAAa,CAAC,EAAG;EAC/C,MAAMC,UAAU,GAAGN,cAAc,CAACO,IAAI,CAAIC,CAAC,IAAMJ,IAAI,CAACK,IAAI,KAAKD,CAAC,CAACP,EAAG,CAAC;EACrE,OACCS,aAAA,CAACZ,iBAAiB;IACjBa,OAAO,EACND,aAAA,CAACX,wBAAwB;MACxBa,MAAM,EACLF,aAAA,CAAAG,QAAA,QACGP,UAAU,CAACJ,KAAK,EAClBQ,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG3B;MAAmB,CAAE,CACjC;IACF,GAECM,EAAE,CAAE,QAAS,CACU;EAC1B,GAECO,cAAc,CAACe,GAAG,CAAIC,aAAa,IAAM;IAC1C,OACCN,aAAA,CAACb,kBAAkB;MAClBoB,GAAG,EAAGD,aAAa,CAACf,EAAI;MACxBiB,MAAM,EACLF,aAAa,CAACf,EAAE,KAAKG,IAAI,CAACK,IAAI,IAC7BC,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG1B;MAAO,CAAE,CAEvB;MACD+B,QAAQ,EAAKC,KAAK,IAAM;QACvB;QACAA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtBhB,YAAY,CAAE;UAAE,GAAGD,IAAI;UAAEK,IAAI,EAAEO,aAAa,CAACf;QAAG,CAAE,CAAC;MACpD;MACA;MAAA;MACAqB,IAAI,EAAC;IAAkB,GAErBN,aAAa,CAACd,KACG,CAAC;EAEvB,CAAE,CACgB,CAAC;AAEtB;AAEA,MAAMqB,gBAAgB,GAAG,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAE;AACtC,SAASC,YAAYA,CAAE;EAAEpB,IAAI;EAAEC;AAAa,CAAC,EAAG;EAC/C,OACCK,aAAA,CAACZ,iBAAiB;IACjBa,OAAO,EACND,aAAA,CAACX,wBAAwB;MACxBa,MAAM,EACLF,aAAA,CAAAG,QAAA,QACGT,IAAI,CAACqB,OAAO,EACdf,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG3B;MAAmB,CAAE,CACjC;IACF,GAGCM,EAAE,CAAE,eAAgB,CACG;EAC1B,GAEC8B,gBAAgB,CAACR,GAAG,CAAIW,IAAI,IAAM;IACnC,OACChB,aAAA,CAACb,kBAAkB;MAClBoB,GAAG,EAAGS,IAAM;MACZR,MAAM,EACLd,IAAI,CAACqB,OAAO,KAAKC,IAAI,IAAIhB,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG1B;MAAO,CAAE,CAC/C;MACD+B,QAAQ,EAAKC,KAAK,IAAM;QACvB;QACAA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtBhB,YAAY,CAAE;UAAE,GAAGD,IAAI;UAAEqB,OAAO,EAAEC,IAAI;UAAEC,IAAI,EAAE;QAAE,CAAE,CAAC;MACpD;MACA;MAAA;MACAL,IAAI,EAAC;IAAkB,GAErBI,IACiB,CAAC;EAEvB,CAAE,CACgB,CAAC;AAEtB;AAEA,SAASE,oBAAoBA,CAAE;EAAExB,IAAI;EAAEC,YAAY;EAAEwB;AAAO,CAAC,EAAG;EAC/D,MAAMC,aAAa,GAAGD,MAAM,CAACE,MAAM,CAChCC,KAAK,IAAMA,KAAK,CAACC,YAAY,KAAK,KACrC,CAAC;EACD,IAAK,CAAEH,aAAa,EAAEI,MAAM,EAAG;IAC9B,OAAO,IAAI;EACZ;EACA,OACCxB,aAAA,CAACZ,iBAAiB;IACjBa,OAAO,EACND,aAAA,CAACX,wBAAwB;MACxBa,MAAM,EAAGF,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG3B;MAAmB,CAAE;IAAG,GAE5CM,EAAE,CAAE,QAAS,CACU;EAC1B,GAECqC,aAAa,EAAEf,GAAG,CAAIiB,KAAK,IAAM;IAClC,OACCtB,aAAA,CAACb,kBAAkB;MAClBoB,GAAG,EAAGe,KAAK,CAAC/B,EAAI;MAChBiB,MAAM,EACL,CAAEd,IAAI,CAAC+B,YAAY,EAAEC,QAAQ,CAAEJ,KAAK,CAAC/B,EAAG,CAAC,IACxCS,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG1B;MAAO,CAAE,CAEvB;MACD+B,QAAQ,EAAKC,KAAK,IAAM;QACvBA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtBhB,YAAY,CAAE;UACb,GAAGD,IAAI;UACP+B,YAAY,EAAE/B,IAAI,CAAC+B,YAAY,EAAEC,QAAQ,CACxCJ,KAAK,CAAC/B,EACP,CAAC,GACEG,IAAI,CAAC+B,YAAY,CAACJ,MAAM,CACtB9B,EAAE,IAAMA,EAAE,KAAK+B,KAAK,CAAC/B,EACvB,CAAC,GACD,CAAE,GAAGG,IAAI,CAAC+B,YAAY,EAAEH,KAAK,CAAC/B,EAAE;QACpC,CAAE,CAAC;MACJ,CAAG;MACHqB,IAAI,EAAC;IAAkB,GAErBU,KAAK,CAACK,MACW,CAAC;EAEvB,CAAE,CACgB,CAAC;AAEtB;;AAEA;AACA,MAAMC,gBAAgB,GAAG;EACxBC,GAAG,EAAE;IAAEzB,IAAI,EAAEvB,OAAO;IAAEW,KAAK,EAAET,EAAE,CAAE,gBAAiB;EAAE,CAAC;EACrD+C,IAAI,EAAE;IAAE1B,IAAI,EAAEtB,SAAS;IAAEU,KAAK,EAAET,EAAE,CAAE,iBAAkB;EAAE;AACzD,CAAC;AACD,SAASgD,QAAQA,CAAE;EAAEZ,MAAM;EAAEzB,IAAI;EAAEC;AAAa,CAAC,EAAG;EACnD,MAAMqC,cAAc,GAAGb,MAAM,CAACE,MAAM,CACjCC,KAAK,IAAMA,KAAK,CAACW,aAAa,KAAK,KACtC,CAAC;EACD,IAAK,CAAED,cAAc,EAAER,MAAM,EAAG;IAC/B,OAAO,IAAI;EACZ;EACA,MAAMU,kBAAkB,GAAGf,MAAM,CAACtB,IAAI,CACnCyB,KAAK,IAAMA,KAAK,CAAC/B,EAAE,KAAKG,IAAI,CAACyC,IAAI,EAAEb,KACtC,CAAC;EACD,OACCtB,aAAA,CAACZ,iBAAiB;IACjBa,OAAO,EACND,aAAA,CAACX,wBAAwB;MACxBa,MAAM,EACLF,aAAA,CAAAG,QAAA,QACG+B,kBAAkB,EAAEP,MAAM,EAC5B3B,aAAA,CAAC1B,IAAI;QAAC8B,IAAI,EAAG3B;MAAmB,CAAE,CACjC;IACF,GAECM,EAAE,CAAE,SAAU,CACS;EAC1B,GAECiD,cAAc,EAAE3B,GAAG,CAAIiB,KAAK,IAAM;IACnC,MAAMc,eAAe,GAAG1C,IAAI,CAACyC,IAAI,EAAEE,SAAS;IAC5C,OACCrC,aAAA,CAACZ,iBAAiB;MACjBmB,GAAG,EAAGe,KAAK,CAAC/B,EAAI;MAChBU,OAAO,EACND,aAAA,CAACX,wBAAwB;QACxBa,MAAM,EAAGF,aAAA,CAAC1B,IAAI;UAAC8B,IAAI,EAAG3B;QAAmB,CAAE;MAAG,GAE5C6C,KAAK,CAACK,MACiB,CAC1B;MACDW,IAAI,EAAC;IAAM,GAETC,MAAM,CAACC,OAAO,CAAEZ,gBAAiB,CAAC,CAACvB,GAAG,CACvC,CAAE,CAAEgC,SAAS,EAAEI,IAAI,CAAE,KAAM;MAC1B,MAAMC,QAAQ,GACbR,kBAAkB,IAClBE,eAAe,KAAKC,SAAS,IAC7Bf,KAAK,CAAC/B,EAAE,KAAK2C,kBAAkB,CAAC3C,EAAE;MACnC,OACCS,aAAA,CAACb,kBAAkB;QAClBoB,GAAG,EAAG8B,SAAW;QACjB7B,MAAM,EAAGR,aAAA,CAAC1B,IAAI;UAAC8B,IAAI,EAAGqC,IAAI,CAACrC;QAAM,CAAE,CAAG;QACtCF,MAAM,EACLwC,QAAQ,IAAI1C,aAAA,CAAC1B,IAAI;UAAC8B,IAAI,EAAG1B;QAAO,CAAE,CAClC;QACD+B,QAAQ,EAAKC,KAAK,IAAM;UACvBA,KAAK,CAACC,cAAc,CAAC,CAAC;UACtB,IACCyB,eAAe,KAAKC,SAAS,EAC5B;YACD1C,YAAY,CAAE;cACb,GAAGD,IAAI;cACPyC,IAAI,EAAEQ;YACP,CAAE,CAAC;UACJ,CAAC,MAAM;YACNhD,YAAY,CAAE;cACb,GAAGD,IAAI;cACPyC,IAAI,EAAE;gBACLb,KAAK,EAAEA,KAAK,CAAC/B,EAAE;gBACf8C;cACD;YACD,CAAE,CAAC;UACJ;QACD;MAAG,GAEDI,IAAI,CAACjD,KACY,CAAC;IAEvB,CACD,CACkB,CAAC;EAEtB,CAAE,CACgB,CAAC;AAEtB;AAEA,eAAe,SAASoD,WAAWA,CAAE;EAAEzB,MAAM;EAAEzB,IAAI;EAAEC;AAAa,CAAC,EAAG;EACrE,OACCK,aAAA,CAACf,cAAc;IACdO,KAAK,EAAGT,EAAE,CAAE,SAAU,CAAG;IACzBkB,OAAO,EACND,aAAA,CAAC3B,MAAM;MAACwE,OAAO,EAAC,UAAU;MAACzC,IAAI,EAAGzB;IAAY,GAC3CI,EAAE,CAAE,MAAO,CAAC,EACdiB,aAAA,CAAC1B,IAAI;MAAC8B,IAAI,EAAGxB;IAAa,CAAE,CACrB;EACR,GAEDoB,aAAA,CAACd,mBAAmB,QACnBc,aAAA,CAACP,YAAY;IAACC,IAAI,EAAGA,IAAM;IAACC,YAAY,EAAGA;EAAc,CAAE,CAAC,EAC5DK,aAAA,CAAC+B,QAAQ;IACRZ,MAAM,EAAGA,MAAQ;IACjBzB,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CAAC,EACFK,aAAA,CAACkB,oBAAoB;IACpBC,MAAM,EAAGA,MAAQ;IACjBzB,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CAAC,EACFK,aAAA,CAACc,YAAY;IAACpB,IAAI,EAAGA,IAAM;IAACC,YAAY,EAAGA;EAAc,CAAE,CACvC,CACN,CAAC;AAEnB"}