@wordpress/edit-site 5.20.1 → 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
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _components = require("@wordpress/components");
9
+ var _blockEditor = require("@wordpress/block-editor");
10
+ var _lockUnlock = require("../../lock-unlock");
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+
19
+ const {
20
+ cleanEmptyObject
21
+ } = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
22
+ var _default = ({
23
+ id,
24
+ fields,
25
+ view,
26
+ onChangeView
27
+ }) => {
28
+ const field = fields.find(f => f.id === id);
29
+ return (0, _react.createElement)(_components.SelectControl, {
30
+ value: view.filters[id],
31
+ prefix: (0, _react.createElement)(_components.__experimentalInputControlPrefixWrapper, {
32
+ as: "span",
33
+ className: "dataviews__select-control-prefix"
34
+ }, field.header + ':'),
35
+ options: field?.elements || [],
36
+ onChange: value => {
37
+ if (value === '') {
38
+ value = undefined;
39
+ }
40
+ onChangeView(currentView => ({
41
+ ...currentView,
42
+ filters: cleanEmptyObject({
43
+ ...currentView.filters,
44
+ [id]: value
45
+ })
46
+ }));
47
+ }
48
+ });
49
+ };
50
+ exports.default = _default;
51
+ //# sourceMappingURL=in-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_blockEditor","_lockUnlock","cleanEmptyObject","unlock","blockEditorPrivateApis","_default","id","fields","view","onChangeView","field","find","f","_react","createElement","SelectControl","value","filters","prefix","__experimentalInputControlPrefixWrapper","as","className","header","options","elements","onChange","undefined","currentView","exports","default"],"sources":["@wordpress/edit-site/src/components/dataviews/in-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\tSelectControl,\n} from '@wordpress/components';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { cleanEmptyObject } = unlock( blockEditorPrivateApis );\n\nexport default ( { id, fields, view, onChangeView } ) => {\n\tconst field = fields.find( ( f ) => f.id === id );\n\n\treturn (\n\t\t<SelectControl\n\t\t\tvalue={ view.filters[ id ] }\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{ field.header + ':' }\n\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t}\n\t\t\toptions={ field?.elements || [] }\n\t\t\tonChange={ ( value ) => {\n\t\t\t\tif ( value === '' ) {\n\t\t\t\t\tvalue = undefined;\n\t\t\t\t}\n\n\t\t\t\tonChangeView( ( currentView ) => ( {\n\t\t\t\t\t...currentView,\n\t\t\t\t\tfilters: cleanEmptyObject( {\n\t\t\t\t\t\t...currentView.filters,\n\t\t\t\t\t\t[ id ]: value,\n\t\t\t\t\t} ),\n\t\t\t\t} ) );\n\t\t\t} }\n\t\t/>\n\t);\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAF,OAAA;AAZA;AACA;AACA;;AAOA;AACA;AACA;;AAGA,MAAM;EAAEG;AAAiB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,wBAAuB,CAAC;AAAC,IAAAC,QAAA,GAE/CA,CAAE;EAAEC,EAAE;EAAEC,MAAM;EAAEC,IAAI;EAAEC;AAAa,CAAC,KAAM;EACxD,MAAMC,KAAK,GAAGH,MAAM,CAACI,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACN,EAAE,KAAKA,EAAG,CAAC;EAEjD,OACC,IAAAO,MAAA,CAAAC,aAAA,EAAChB,WAAA,CAAAiB,aAAa;IACbC,KAAK,EAAGR,IAAI,CAACS,OAAO,CAAEX,EAAE,CAAI;IAC5BY,MAAM,EACL,IAAAL,MAAA,CAAAC,aAAA,EAAChB,WAAA,CAAAqB,uCAAyB;MACzBC,EAAE,EAAC,MAAM;MACTC,SAAS,EAAC;IAAkC,GAE1CX,KAAK,CAACY,MAAM,GAAG,GACS,CAC3B;IACDC,OAAO,EAAGb,KAAK,EAAEc,QAAQ,IAAI,EAAI;IACjCC,QAAQ,EAAKT,KAAK,IAAM;MACvB,IAAKA,KAAK,KAAK,EAAE,EAAG;QACnBA,KAAK,GAAGU,SAAS;MAClB;MAEAjB,YAAY,CAAIkB,WAAW,KAAQ;QAClC,GAAGA,WAAW;QACdV,OAAO,EAAEf,gBAAgB,CAAE;UAC1B,GAAGyB,WAAW,CAACV,OAAO;UACtB,CAAEX,EAAE,GAAIU;QACT,CAAE;MACH,CAAC,CAAG,CAAC;IACN;EAAG,CACH,CAAC;AAEJ,CAAC;AAAAY,OAAA,CAAAC,OAAA,GAAAxB,QAAA"}
@@ -10,12 +10,5 @@ Object.defineProperty(exports, "DataViews", {
10
10
  return _dataviews.default;
11
11
  }
12
12
  });
13
- Object.defineProperty(exports, "PAGE_SIZE_VALUES", {
14
- enumerable: true,
15
- get: function () {
16
- return _viewActions.PAGE_SIZE_VALUES;
17
- }
18
- });
19
13
  var _dataviews = _interopRequireDefault(require("./dataviews"));
20
- var _viewActions = require("./view-actions");
21
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_dataviews","_interopRequireDefault","require","_viewActions"],"sources":["@wordpress/edit-site/src/components/dataviews/index.js"],"sourcesContent":["export { default as DataViews } from './dataviews';\nexport { PAGE_SIZE_VALUES } from './view-actions';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA"}
1
+ {"version":3,"names":["_dataviews","_interopRequireDefault","require"],"sources":["@wordpress/edit-site/src/components/dataviews/index.js"],"sourcesContent":["export { default as DataViews } from './dataviews';\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA"}
@@ -3,31 +3,59 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Pagination = Pagination;
6
+ exports.default = void 0;
7
7
  var _react = require("react");
8
8
  var _components = require("@wordpress/components");
9
9
  var _element = require("@wordpress/element");
10
10
  var _i18n = require("@wordpress/i18n");
11
- var _viewActions = require("./view-actions");
12
11
  /**
13
12
  * WordPress dependencies
14
13
  */
15
14
 
16
- /**
17
- * Internal dependencies
18
- */
15
+ const PAGE_SIZE_VALUES = [5, 20, 50];
16
+ function PageSizeControl({
17
+ view,
18
+ onChangeView
19
+ }) {
20
+ const label = (0, _i18n.__)('Rows per page:');
21
+ return (0, _react.createElement)(_components.SelectControl, {
22
+ __nextHasNoMarginBottom: true,
23
+ label: label,
24
+ hideLabelFromVision: true
25
+ // TODO: This should probably use a label based on the wanted design
26
+ // and we could remove InputControlPrefixWrapper usage.
27
+ ,
28
+ prefix: (0, _react.createElement)(_components.__experimentalInputControlPrefixWrapper, {
29
+ as: "span",
30
+ className: "dataviews__select-control-prefix"
31
+ }, label),
32
+ value: view.perPage,
33
+ options: PAGE_SIZE_VALUES.map(pageSize => ({
34
+ value: pageSize,
35
+ label: pageSize
36
+ })),
37
+ onChange: value => onChangeView({
38
+ ...view,
39
+ perPage: value,
40
+ page: 1
41
+ })
42
+ });
43
+ }
19
44
 
20
45
  // For now this is copied from the patterns list Pagination component, because
21
46
  // the datatable pagination starts from index zero(`0`). Eventually all lists will be
22
47
  // using this one.
23
48
  function Pagination({
24
- dataView,
25
- // If passed, use it, as it's for controlled pagination.
26
- totalItems = 0
49
+ view,
50
+ onChangeView,
51
+ paginationInfo: {
52
+ totalItems = 0,
53
+ totalPages
54
+ }
27
55
  }) {
28
- const currentPage = dataView.getState().pagination.pageIndex + 1;
29
- const numPages = dataView.getPageCount();
30
- const _totalItems = totalItems || dataView.getCoreRowModel().rows.length;
56
+ if (!totalItems || !totalPages) {
57
+ return null;
58
+ }
31
59
  return (0, _react.createElement)(_components.__experimentalHStack, {
32
60
  expanded: false,
33
61
  spacing: 3,
@@ -39,18 +67,24 @@ function Pagination({
39
67
  // translators: %s: Total number of entries.
40
68
  (0, _i18n.sprintf)(
41
69
  // translators: %s: Total number of entries.
42
- (0, _i18n._n)('%s item', '%s items', _totalItems), _totalItems)), !!_totalItems && (0, _react.createElement)(_components.__experimentalHStack, {
70
+ (0, _i18n._n)('%s item', '%s items', totalItems), totalItems)), !!totalItems && (0, _react.createElement)(_components.__experimentalHStack, {
43
71
  expanded: false,
44
72
  spacing: 1
45
73
  }, (0, _react.createElement)(_components.Button, {
46
74
  variant: "tertiary",
47
- onClick: () => dataView.setPageIndex(0),
48
- disabled: !dataView.getCanPreviousPage(),
75
+ onClick: () => onChangeView({
76
+ ...view,
77
+ page: 1
78
+ }),
79
+ disabled: view.page === 1,
49
80
  "aria-label": (0, _i18n.__)('First page')
50
81
  }, "\xAB"), (0, _react.createElement)(_components.Button, {
51
82
  variant: "tertiary",
52
- onClick: () => dataView.previousPage(),
53
- disabled: !dataView.getCanPreviousPage(),
83
+ onClick: () => onChangeView({
84
+ ...view,
85
+ page: view.page - 1
86
+ }),
87
+ disabled: view.page === 1,
54
88
  "aria-label": (0, _i18n.__)('Previous page')
55
89
  }, "\u2039"), (0, _react.createElement)(_components.__experimentalHStack, {
56
90
  justify: "flex-start",
@@ -58,32 +92,46 @@ function Pagination({
58
92
  spacing: 1
59
93
  }, (0, _element.createInterpolateElement)((0, _i18n.sprintf)(
60
94
  // translators: %1$s: Current page number, %2$s: Total number of pages.
61
- (0, _i18n._x)('<CurrenPageControl /> of %2$s', 'paging'), currentPage, numPages), {
95
+ (0, _i18n._x)('<CurrenPageControl /> of %2$s', 'paging'), view.page, totalPages), {
62
96
  CurrenPageControl: (0, _react.createElement)(_components.__experimentalNumberControl, {
63
97
  "aria-label": (0, _i18n.__)('Current page'),
64
98
  min: 1,
65
- max: numPages,
99
+ max: totalPages,
66
100
  onChange: value => {
67
- if (value > numPages) return;
68
- dataView.setPageIndex(value - 1);
101
+ if (!value || value < 1 || value > totalPages) {
102
+ return;
103
+ }
104
+ onChangeView({
105
+ ...view,
106
+ page: value
107
+ });
69
108
  },
70
109
  step: "1",
71
- value: currentPage,
110
+ value: view.page,
72
111
  isDragEnabled: false,
73
112
  spinControls: "none"
74
113
  })
75
114
  })), (0, _react.createElement)(_components.Button, {
76
115
  variant: "tertiary",
77
- onClick: () => dataView.nextPage(),
78
- disabled: !dataView.getCanNextPage(),
116
+ onClick: () => onChangeView({
117
+ ...view,
118
+ page: view.page + 1
119
+ }),
120
+ disabled: view.page >= totalPages,
79
121
  "aria-label": (0, _i18n.__)('Next page')
80
122
  }, "\u203A"), (0, _react.createElement)(_components.Button, {
81
123
  variant: "tertiary",
82
- onClick: () => dataView.setPageIndex(dataView.getPageCount() - 1),
83
- disabled: !dataView.getCanNextPage(),
124
+ onClick: () => onChangeView({
125
+ ...view,
126
+ page: totalPages
127
+ }),
128
+ disabled: view.page >= totalPages,
84
129
  "aria-label": (0, _i18n.__)('Last page')
85
- }, "\xBB")), (0, _react.createElement)(_viewActions.PageSizeControl, {
86
- dataView: dataView
130
+ }, "\xBB")), (0, _react.createElement)(PageSizeControl, {
131
+ view: view,
132
+ onChangeView: onChangeView
87
133
  }));
88
134
  }
135
+ var _default = Pagination;
136
+ exports.default = _default;
89
137
  //# sourceMappingURL=pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_viewActions","Pagination","dataView","totalItems","currentPage","getState","pagination","pageIndex","numPages","getPageCount","_totalItems","getCoreRowModel","rows","length","_react","createElement","__experimentalHStack","expanded","spacing","justify","className","__experimentalText","variant","sprintf","_n","Button","onClick","setPageIndex","disabled","getCanPreviousPage","__","previousPage","createInterpolateElement","_x","CurrenPageControl","__experimentalNumberControl","min","max","onChange","value","step","isDragEnabled","spinControls","nextPage","getCanNextPage","PageSizeControl"],"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":["_components","require","_element","_i18n","PAGE_SIZE_VALUES","PageSizeControl","view","onChangeView","label","__","_react","createElement","SelectControl","__nextHasNoMarginBottom","hideLabelFromVision","prefix","__experimentalInputControlPrefixWrapper","as","className","value","perPage","options","map","pageSize","onChange","page","Pagination","paginationInfo","totalItems","totalPages","__experimentalHStack","expanded","spacing","justify","__experimentalText","variant","sprintf","_n","Button","onClick","disabled","createInterpolateElement","_x","CurrenPageControl","__experimentalNumberControl","min","max","step","isDragEnabled","spinControls","_default","exports","default"],"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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"}
@@ -6,15 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = TextFilter;
8
8
  var _react = require("react");
9
- var _classnames = _interopRequireDefault(require("classnames"));
10
9
  var _i18n = require("@wordpress/i18n");
11
10
  var _element = require("@wordpress/element");
12
11
  var _components = require("@wordpress/components");
13
12
  var _useDebouncedInput = _interopRequireDefault(require("../../utils/use-debounced-input"));
14
- /**
15
- * External dependencies
16
- */
17
-
18
13
  /**
19
14
  * WordPress dependencies
20
15
  */
@@ -24,16 +19,27 @@ var _useDebouncedInput = _interopRequireDefault(require("../../utils/use-debounc
24
19
  */
25
20
 
26
21
  function TextFilter({
27
- className,
28
- searchLabel = (0, _i18n.__)('Filter list'),
29
- onChange
22
+ id,
23
+ view,
24
+ onChangeView
30
25
  }) {
31
- const [search, setSearch, debouncedSearch] = (0, _useDebouncedInput.default)();
26
+ const [search, setSearch, debouncedSearch] = (0, _useDebouncedInput.default)(view.filters[id]);
27
+ const onChangeViewRef = (0, _element.useRef)(onChangeView);
28
+ (0, _element.useEffect)(() => {
29
+ onChangeViewRef.current = onChangeView;
30
+ }, [onChangeView]);
32
31
  (0, _element.useEffect)(() => {
33
- onChange(debouncedSearch);
34
- }, [debouncedSearch, onChange]);
32
+ onChangeViewRef.current(currentView => ({
33
+ ...currentView,
34
+ page: 1,
35
+ filters: {
36
+ ...currentView.filters,
37
+ [id]: debouncedSearch
38
+ }
39
+ }));
40
+ }, [debouncedSearch]);
41
+ const searchLabel = (0, _i18n.__)('Filter list');
35
42
  return (0, _react.createElement)(_components.SearchControl, {
36
- className: (0, _classnames.default)('dataviews__text-filter', className),
37
43
  onChange: setSearch,
38
44
  value: search,
39
45
  label: searchLabel,
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_element","_components","_useDebouncedInput","TextFilter","className","searchLabel","__","onChange","search","setSearch","debouncedSearch","useDebouncedInput","useEffect","_react","createElement","SearchControl","classnames","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":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAKA,IAAAI,kBAAA,GAAAL,sBAAA,CAAAC,OAAA;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGe,SAASK,UAAUA,CAAE;EACnCC,SAAS;EACTC,WAAW,GAAG,IAAAC,QAAE,EAAE,aAAc,CAAC;EACjCC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,MAAM,EAAEC,SAAS,EAAEC,eAAe,CAAE,GAAG,IAAAC,0BAAiB,EAAC,CAAC;EAClE,IAAAC,kBAAS,EAAE,MAAM;IAChBL,QAAQ,CAAEG,eAAgB,CAAC;EAC5B,CAAC,EAAE,CAAEA,eAAe,EAAEH,QAAQ,CAAG,CAAC;EAClC,OACC,IAAAM,MAAA,CAAAC,aAAA,EAACb,WAAA,CAAAc,aAAa;IACbX,SAAS,EAAG,IAAAY,mBAAU,EAAE,wBAAwB,EAAEZ,SAAU,CAAG;IAC/DG,QAAQ,EAAGE,SAAW;IACtBQ,KAAK,EAAGT,MAAQ;IAChBU,KAAK,EAAGb,WAAa;IACrBc,WAAW,EAAGd,WAAa;IAC3Be,IAAI,EAAC;EAAS,CACd,CAAC;AAEJ"}
1
+ {"version":3,"names":["_i18n","require","_element","_components","_useDebouncedInput","_interopRequireDefault","TextFilter","id","view","onChangeView","search","setSearch","debouncedSearch","useDebouncedInput","filters","onChangeViewRef","useRef","useEffect","current","currentView","page","searchLabel","__","_react","createElement","SearchControl","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":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAKA,IAAAG,kBAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAVA;AACA;AACA;;AAKA;AACA;AACA;;AAGe,SAASK,UAAUA,CAAE;EAAEC,EAAE;EAAEC,IAAI;EAAEC;AAAa,CAAC,EAAG;EAChE,MAAM,CAAEC,MAAM,EAAEC,SAAS,EAAEC,eAAe,CAAE,GAAG,IAAAC,0BAAiB,EAC/DL,IAAI,CAACM,OAAO,CAAEP,EAAE,CACjB,CAAC;EACD,MAAMQ,eAAe,GAAG,IAAAC,eAAM,EAAEP,YAAa,CAAC;EAC9C,IAAAQ,kBAAS,EAAE,MAAM;IAChBF,eAAe,CAACG,OAAO,GAAGT,YAAY;EACvC,CAAC,EAAE,CAAEA,YAAY,CAAG,CAAC;EACrB,IAAAQ,kBAAS,EAAE,MAAM;IAChBF,eAAe,CAACG,OAAO,CAAIC,WAAW,KAAQ;MAC7C,GAAGA,WAAW;MACdC,IAAI,EAAE,CAAC;MACPN,OAAO,EAAE;QACR,GAAGK,WAAW,CAACL,OAAO;QACtB,CAAEP,EAAE,GAAIK;MACT;IACD,CAAC,CAAG,CAAC;EACN,CAAC,EAAE,CAAEA,eAAe,CAAG,CAAC;EACxB,MAAMS,WAAW,GAAG,IAAAC,QAAE,EAAE,aAAc,CAAC;EACvC,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACrB,WAAA,CAAAsB,aAAa;IACbC,QAAQ,EAAGf,SAAW;IACtBgB,KAAK,EAAGjB,MAAQ;IAChBkB,KAAK,EAAGP,WAAa;IACrBQ,WAAW,EAAGR,WAAa;IAC3BS,IAAI,EAAC;EAAS,CACd,CAAC;AAEJ"}
@@ -3,8 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.PAGE_SIZE_VALUES = void 0;
7
- exports.PageSizeControl = PageSizeControl;
8
6
  exports.default = ViewActions;
9
7
  var _react = require("react");
10
8
  var _components = require("@wordpress/components");
@@ -26,51 +24,69 @@ const {
26
24
  DropdownSubMenuV2,
27
25
  DropdownSubMenuTriggerV2
28
26
  } = (0, _lockUnlock.unlock)(_components.privateApis);
29
- const PAGE_SIZE_VALUES = [5, 20, 50];
30
- exports.PAGE_SIZE_VALUES = PAGE_SIZE_VALUES;
31
- function PageSizeControl({
32
- dataView
27
+ const availableViews = [{
28
+ id: 'list',
29
+ label: (0, _i18n.__)('List')
30
+ }, {
31
+ id: 'grid',
32
+ label: (0, _i18n.__)('Grid')
33
+ }];
34
+ function ViewTypeMenu({
35
+ view,
36
+ onChangeView
33
37
  }) {
34
- const label = (0, _i18n.__)('Rows per page:');
35
- return (0, _react.createElement)(_components.SelectControl, {
36
- __nextHasNoMarginBottom: true,
37
- label: label,
38
- hideLabelFromVision: true
39
- // TODO: This should probably use a label based on the wanted design
40
- // and we could remove InputControlPrefixWrapper usage.
41
- ,
42
- prefix: (0, _react.createElement)(_components.__experimentalInputControlPrefixWrapper, {
43
- as: "span",
44
- className: "dataviews__per-page-control-prefix"
45
- }, label),
46
- value: dataView.getState().pagination.pageSize,
47
- options: PAGE_SIZE_VALUES.map(pageSize => ({
48
- value: pageSize,
49
- label: pageSize
50
- })),
51
- onChange: value => dataView.setPageSize(+value)
52
- });
38
+ const activeView = availableViews.find(v => view.type === v.id);
39
+ return (0, _react.createElement)(DropdownSubMenuV2, {
40
+ trigger: (0, _react.createElement)(DropdownSubMenuTriggerV2, {
41
+ suffix: (0, _react.createElement)(_react.Fragment, null, activeView.label, (0, _react.createElement)(_components.Icon, {
42
+ icon: _icons.chevronRightSmall
43
+ }))
44
+ }, (0, _i18n.__)('Layout'))
45
+ }, availableViews.map(availableView => {
46
+ return (0, _react.createElement)(DropdownMenuItemV2, {
47
+ key: availableView.id,
48
+ prefix: availableView.id === view.type && (0, _react.createElement)(_components.Icon, {
49
+ icon: _icons.check
50
+ }),
51
+ onSelect: event => {
52
+ // We need to handle this on DropDown component probably..
53
+ event.preventDefault();
54
+ onChangeView({
55
+ ...view,
56
+ type: availableView.id
57
+ });
58
+ }
59
+ // TODO: check about role and a11y.
60
+ ,
61
+ role: "menuitemcheckbox"
62
+ }, availableView.label);
63
+ }));
53
64
  }
65
+ const PAGE_SIZE_VALUES = [5, 20, 50];
54
66
  function PageSizeMenu({
55
- dataView
67
+ view,
68
+ onChangeView
56
69
  }) {
57
- const currenPageSize = dataView.getState().pagination.pageSize;
58
70
  return (0, _react.createElement)(DropdownSubMenuV2, {
59
71
  trigger: (0, _react.createElement)(DropdownSubMenuTriggerV2, {
60
- suffix: (0, _react.createElement)(_react.Fragment, null, currenPageSize, (0, _react.createElement)(_components.Icon, {
72
+ suffix: (0, _react.createElement)(_react.Fragment, null, view.perPage, (0, _react.createElement)(_components.Icon, {
61
73
  icon: _icons.chevronRightSmall
62
74
  }))
63
75
  }, (0, _i18n.__)('Rows per page'))
64
76
  }, PAGE_SIZE_VALUES.map(size => {
65
77
  return (0, _react.createElement)(DropdownMenuItemV2, {
66
78
  key: size,
67
- prefix: currenPageSize === size && (0, _react.createElement)(_components.Icon, {
79
+ prefix: view.perPage === size && (0, _react.createElement)(_components.Icon, {
68
80
  icon: _icons.check
69
81
  }),
70
82
  onSelect: event => {
71
83
  // We need to handle this on DropDown component probably..
72
84
  event.preventDefault();
73
- dataView.setPageSize(size);
85
+ onChangeView({
86
+ ...view,
87
+ perPage: size,
88
+ page: 1
89
+ });
74
90
  }
75
91
  // TODO: check about role and a11y.
76
92
  ,
@@ -79,10 +95,12 @@ function PageSizeMenu({
79
95
  }));
80
96
  }
81
97
  function FieldsVisibilityMenu({
82
- dataView
98
+ view,
99
+ onChangeView,
100
+ fields
83
101
  }) {
84
- const hideableFields = dataView.getAllColumns().filter(columnn => columnn.getCanHide());
85
- if (!hideableFields?.length) {
102
+ const hidableFields = fields.filter(field => field.enableHiding !== false);
103
+ if (!hidableFields?.length) {
86
104
  return null;
87
105
  }
88
106
  return (0, _react.createElement)(DropdownSubMenuV2, {
@@ -91,18 +109,21 @@ function FieldsVisibilityMenu({
91
109
  icon: _icons.chevronRightSmall
92
110
  })
93
111
  }, (0, _i18n.__)('Fields'))
94
- }, hideableFields?.map(field => {
112
+ }, hidableFields?.map(field => {
95
113
  return (0, _react.createElement)(DropdownMenuItemV2, {
96
114
  key: field.id,
97
- prefix: field.getIsVisible() && (0, _react.createElement)(_components.Icon, {
115
+ prefix: !view.hiddenFields?.includes(field.id) && (0, _react.createElement)(_components.Icon, {
98
116
  icon: _icons.check
99
117
  }),
100
118
  onSelect: event => {
101
119
  event.preventDefault();
102
- field.getToggleVisibilityHandler()(event);
120
+ onChangeView({
121
+ ...view,
122
+ hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...view.hiddenFields, field.id]
123
+ });
103
124
  },
104
125
  role: "menuitemcheckbox"
105
- }, field.columnDef.header);
126
+ }, field.header);
106
127
  }));
107
128
  }
108
129
 
@@ -118,47 +139,56 @@ const sortingItemsInfo = {
118
139
  }
119
140
  };
120
141
  function SortMenu({
121
- dataView
142
+ fields,
143
+ view,
144
+ onChangeView
122
145
  }) {
123
- const sortableFields = dataView.getAllColumns().filter(columnn => columnn.getCanSort());
146
+ const sortableFields = fields.filter(field => field.enableSorting !== false);
124
147
  if (!sortableFields?.length) {
125
148
  return null;
126
149
  }
127
- const currentSortedField = sortableFields.find(field => field.getIsSorted());
150
+ const currentSortedField = fields.find(field => field.id === view.sort?.field);
128
151
  return (0, _react.createElement)(DropdownSubMenuV2, {
129
152
  trigger: (0, _react.createElement)(DropdownSubMenuTriggerV2, {
130
- suffix: (0, _react.createElement)(_react.Fragment, null, currentSortedField?.columnDef.header, (0, _react.createElement)(_components.Icon, {
153
+ suffix: (0, _react.createElement)(_react.Fragment, null, currentSortedField?.header, (0, _react.createElement)(_components.Icon, {
131
154
  icon: _icons.chevronRightSmall
132
155
  }))
133
156
  }, (0, _i18n.__)('Sort by'))
134
157
  }, sortableFields?.map(field => {
135
- const sortedDirection = field.getIsSorted();
158
+ const sortedDirection = view.sort?.direction;
136
159
  return (0, _react.createElement)(DropdownSubMenuV2, {
137
160
  key: field.id,
138
161
  trigger: (0, _react.createElement)(DropdownSubMenuTriggerV2, {
139
162
  suffix: (0, _react.createElement)(_components.Icon, {
140
163
  icon: _icons.chevronRightSmall
141
164
  })
142
- }, field.columnDef.header),
165
+ }, field.header),
143
166
  side: "left"
144
167
  }, Object.entries(sortingItemsInfo).map(([direction, info]) => {
168
+ const isActive = currentSortedField && sortedDirection === direction && field.id === currentSortedField.id;
145
169
  return (0, _react.createElement)(DropdownMenuItemV2, {
146
170
  key: direction,
147
171
  prefix: (0, _react.createElement)(_components.Icon, {
148
172
  icon: info.icon
149
173
  }),
150
- suffix: sortedDirection === direction && (0, _react.createElement)(_components.Icon, {
174
+ suffix: isActive && (0, _react.createElement)(_components.Icon, {
151
175
  icon: _icons.check
152
176
  }),
153
177
  onSelect: event => {
154
178
  event.preventDefault();
155
179
  if (sortedDirection === direction) {
156
- dataView.resetSorting();
180
+ onChangeView({
181
+ ...view,
182
+ sort: undefined
183
+ });
157
184
  } else {
158
- dataView.setSorting([{
159
- id: field.id,
160
- desc: direction === 'desc'
161
- }]);
185
+ onChangeView({
186
+ ...view,
187
+ sort: {
188
+ field: field.id,
189
+ direction
190
+ }
191
+ });
162
192
  }
163
193
  }
164
194
  }, info.label);
@@ -166,24 +196,32 @@ function SortMenu({
166
196
  }));
167
197
  }
168
198
  function ViewActions({
169
- dataView,
170
- className
199
+ fields,
200
+ view,
201
+ onChangeView
171
202
  }) {
172
203
  return (0, _react.createElement)(DropdownMenuV2, {
173
204
  label: (0, _i18n.__)('Actions'),
174
- className: className,
175
205
  trigger: (0, _react.createElement)(_components.Button, {
176
206
  variant: "tertiary",
177
207
  icon: _icons.blockTable
178
208
  }, (0, _i18n.__)('View'), (0, _react.createElement)(_components.Icon, {
179
209
  icon: _icons.chevronDown
180
210
  }))
181
- }, (0, _react.createElement)(DropdownMenuGroupV2, null, (0, _react.createElement)(SortMenu, {
182
- dataView: dataView
211
+ }, (0, _react.createElement)(DropdownMenuGroupV2, null, (0, _react.createElement)(ViewTypeMenu, {
212
+ view: view,
213
+ onChangeView: onChangeView
214
+ }), (0, _react.createElement)(SortMenu, {
215
+ fields: fields,
216
+ view: view,
217
+ onChangeView: onChangeView
183
218
  }), (0, _react.createElement)(FieldsVisibilityMenu, {
184
- dataView: dataView
219
+ fields: fields,
220
+ view: view,
221
+ onChangeView: onChangeView
185
222
  }), (0, _react.createElement)(PageSizeMenu, {
186
- dataView: dataView
223
+ view: view,
224
+ onChangeView: onChangeView
187
225
  })));
188
226
  }
189
227
  //# sourceMappingURL=view-actions.js.map