@wordpress/edit-site 5.20.1 → 5.21.1-next.f8d8eceb.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 (260) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +121 -0
  3. package/build/components/actions/index.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/block-editor/use-site-editor-settings.js +12 -4
  9. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  10. package/build/components/create-template-part-modal/index.js +10 -6
  11. package/build/components/create-template-part-modal/index.js.map +1 -1
  12. package/build/components/dataviews/context.js +15 -0
  13. package/build/components/dataviews/context.js.map +1 -0
  14. package/build/components/dataviews/dataviews.js +50 -33
  15. package/build/components/dataviews/dataviews.js.map +1 -1
  16. package/build/components/dataviews/filters.js +74 -0
  17. package/build/components/dataviews/filters.js.map +1 -0
  18. package/build/components/dataviews/in-filter.js +49 -0
  19. package/build/components/dataviews/in-filter.js.map +1 -0
  20. package/build/components/dataviews/index.js +0 -7
  21. package/build/components/dataviews/index.js.map +1 -1
  22. package/build/components/dataviews/item-actions.js +62 -0
  23. package/build/components/dataviews/item-actions.js.map +1 -0
  24. package/build/components/dataviews/pagination.js +74 -45
  25. package/build/components/dataviews/pagination.js.map +1 -1
  26. package/build/components/dataviews/{text-filter.js → search.js} +21 -15
  27. package/build/components/dataviews/search.js.map +1 -0
  28. package/build/components/dataviews/view-actions.js +94 -56
  29. package/build/components/dataviews/view-actions.js.map +1 -1
  30. package/build/components/dataviews/view-grid.js +59 -0
  31. package/build/components/dataviews/view-grid.js.map +1 -0
  32. package/build/components/dataviews/view-list.js +283 -0
  33. package/build/components/dataviews/view-list.js.map +1 -0
  34. package/build/components/editor/index.js +2 -1
  35. package/build/components/editor/index.js.map +1 -1
  36. package/build/components/global-styles/font-library-modal/context.js +16 -10
  37. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  38. package/build/components/global-styles/font-library-modal/font-collection.js +20 -6
  39. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  40. package/build/components/global-styles/screen-block.js +2 -10
  41. package/build/components/global-styles/screen-block.js.map +1 -1
  42. package/build/components/global-styles/screen-root.js +1 -2
  43. package/build/components/global-styles/screen-root.js.map +1 -1
  44. package/build/components/global-styles/ui.js +3 -4
  45. package/build/components/global-styles/ui.js.map +1 -1
  46. package/build/components/layout/index.js +10 -2
  47. package/build/components/layout/index.js.map +1 -1
  48. package/build/components/media/index.js +34 -0
  49. package/build/components/media/index.js.map +1 -0
  50. package/build/components/page-actions/index.js +0 -2
  51. package/build/components/page-actions/index.js.map +1 -1
  52. package/build/components/page-pages/default-views.js +60 -0
  53. package/build/components/page-pages/default-views.js.map +1 -0
  54. package/build/components/page-pages/index.js +174 -107
  55. package/build/components/page-pages/index.js.map +1 -1
  56. package/build/components/page-patterns/delete-category-menu-item.js +89 -0
  57. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -0
  58. package/build/components/page-patterns/duplicate-menu-item.js +52 -131
  59. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  60. package/build/components/page-patterns/grid-item.js +1 -0
  61. package/build/components/page-patterns/grid-item.js.map +1 -1
  62. package/build/components/page-patterns/header.js +25 -3
  63. package/build/components/page-patterns/header.js.map +1 -1
  64. package/build/components/page-patterns/rename-category-menu-item.js +49 -0
  65. package/build/components/page-patterns/rename-category-menu-item.js.map +1 -0
  66. package/build/components/page-patterns/rename-menu-item.js +1 -1
  67. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  68. package/build/components/page-patterns/use-patterns.js +1 -0
  69. package/build/components/page-patterns/use-patterns.js.map +1 -1
  70. package/build/components/pattern-modal/duplicate.js +65 -0
  71. package/build/components/pattern-modal/duplicate.js.map +1 -0
  72. package/build/components/pattern-modal/index.js +24 -0
  73. package/build/components/pattern-modal/index.js.map +1 -0
  74. package/build/components/pattern-modal/rename.js +42 -0
  75. package/build/components/pattern-modal/rename.js.map +1 -0
  76. package/build/components/sidebar/index.js +3 -1
  77. package/build/components/sidebar/index.js.map +1 -1
  78. package/build/components/sidebar-dataviews/index.js +72 -0
  79. package/build/components/sidebar-dataviews/index.js.map +1 -0
  80. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
  81. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
  83. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
  85. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  86. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +29 -0
  87. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  88. package/build/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
  89. package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  90. package/build/hooks/commands/use-common-commands.js +1 -2
  91. package/build/hooks/commands/use-common-commands.js.map +1 -1
  92. package/build/hooks/commands/use-edit-mode-commands.js +50 -0
  93. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  94. package/build/lock-unlock.js +1 -1
  95. package/build/lock-unlock.js.map +1 -1
  96. package/build/store/selectors.js +4 -5
  97. package/build/store/selectors.js.map +1 -1
  98. package/build-module/components/actions/index.js +108 -0
  99. package/build-module/components/actions/index.js.map +1 -0
  100. package/build-module/components/add-new-template/add-custom-template-modal-content.js +16 -12
  101. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  102. package/build-module/components/block-editor/resize-handle.js +2 -1
  103. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  104. package/build-module/components/block-editor/use-site-editor-settings.js +12 -4
  105. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  106. package/build-module/components/create-template-part-modal/index.js +10 -6
  107. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  108. package/build-module/components/dataviews/context.js +7 -0
  109. package/build-module/components/dataviews/context.js.map +1 -0
  110. package/build-module/components/dataviews/dataviews.js +49 -32
  111. package/build-module/components/dataviews/dataviews.js.map +1 -1
  112. package/build-module/components/dataviews/filters.js +66 -0
  113. package/build-module/components/dataviews/filters.js.map +1 -0
  114. package/build-module/components/dataviews/in-filter.js +41 -0
  115. package/build-module/components/dataviews/in-filter.js.map +1 -0
  116. package/build-module/components/dataviews/index.js +0 -1
  117. package/build-module/components/dataviews/index.js.map +1 -1
  118. package/build-module/components/dataviews/item-actions.js +55 -0
  119. package/build-module/components/dataviews/item-actions.js.map +1 -0
  120. package/build-module/components/dataviews/pagination.js +73 -46
  121. package/build-module/components/dataviews/pagination.js.map +1 -1
  122. package/build-module/components/dataviews/search.js +42 -0
  123. package/build-module/components/dataviews/search.js.map +1 -0
  124. package/build-module/components/dataviews/view-actions.js +95 -54
  125. package/build-module/components/dataviews/view-actions.js.map +1 -1
  126. package/build-module/components/dataviews/view-grid.js +51 -0
  127. package/build-module/components/dataviews/view-grid.js.map +1 -0
  128. package/build-module/components/dataviews/view-list.js +274 -0
  129. package/build-module/components/dataviews/view-list.js.map +1 -0
  130. package/build-module/components/editor/index.js +2 -1
  131. package/build-module/components/editor/index.js.map +1 -1
  132. package/build-module/components/global-styles/font-library-modal/context.js +16 -10
  133. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  134. package/build-module/components/global-styles/font-library-modal/font-collection.js +20 -6
  135. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  136. package/build-module/components/global-styles/screen-block.js +2 -10
  137. package/build-module/components/global-styles/screen-block.js.map +1 -1
  138. package/build-module/components/global-styles/screen-root.js +1 -2
  139. package/build-module/components/global-styles/screen-root.js.map +1 -1
  140. package/build-module/components/global-styles/ui.js +3 -4
  141. package/build-module/components/global-styles/ui.js.map +1 -1
  142. package/build-module/components/layout/index.js +11 -3
  143. package/build-module/components/layout/index.js.map +1 -1
  144. package/build-module/components/media/index.js +26 -0
  145. package/build-module/components/media/index.js.map +1 -0
  146. package/build-module/components/page-actions/index.js +0 -2
  147. package/build-module/components/page-actions/index.js.map +1 -1
  148. package/build-module/components/page-pages/default-views.js +53 -0
  149. package/build-module/components/page-pages/default-views.js.map +1 -0
  150. package/build-module/components/page-pages/index.js +175 -110
  151. package/build-module/components/page-pages/index.js.map +1 -1
  152. package/build-module/components/page-patterns/delete-category-menu-item.js +82 -0
  153. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -0
  154. package/build-module/components/page-patterns/duplicate-menu-item.js +54 -133
  155. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  156. package/build-module/components/page-patterns/grid-item.js +1 -0
  157. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  158. package/build-module/components/page-patterns/header.js +26 -4
  159. package/build-module/components/page-patterns/header.js.map +1 -1
  160. package/build-module/components/page-patterns/rename-category-menu-item.js +42 -0
  161. package/build-module/components/page-patterns/rename-category-menu-item.js.map +1 -0
  162. package/build-module/components/page-patterns/rename-menu-item.js +1 -1
  163. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
  164. package/build-module/components/page-patterns/use-patterns.js +1 -0
  165. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  166. package/build-module/components/pattern-modal/duplicate.js +57 -0
  167. package/build-module/components/pattern-modal/duplicate.js.map +1 -0
  168. package/build-module/components/pattern-modal/index.js +14 -0
  169. package/build-module/components/pattern-modal/index.js.map +1 -0
  170. package/build-module/components/pattern-modal/rename.js +34 -0
  171. package/build-module/components/pattern-modal/rename.js.map +1 -0
  172. package/build-module/components/sidebar/index.js +3 -1
  173. package/build-module/components/sidebar/index.js.map +1 -1
  174. package/build-module/components/sidebar-dataviews/index.js +64 -0
  175. package/build-module/components/sidebar-dataviews/index.js.map +1 -0
  176. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +3 -0
  177. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -2
  179. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -3
  181. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  182. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +22 -0
  183. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
  184. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +12 -1
  185. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  186. package/build-module/hooks/commands/use-common-commands.js +1 -2
  187. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  188. package/build-module/hooks/commands/use-edit-mode-commands.js +51 -1
  189. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  190. package/build-module/lock-unlock.js +1 -1
  191. package/build-module/lock-unlock.js.map +1 -1
  192. package/build-module/store/selectors.js +4 -5
  193. package/build-module/store/selectors.js.map +1 -1
  194. package/build-style/style-rtl.css +48 -11
  195. package/build-style/style.css +48 -11
  196. package/package.json +40 -40
  197. package/src/components/actions/index.js +123 -0
  198. package/src/components/add-new-template/add-custom-template-modal-content.js +22 -17
  199. package/src/components/block-editor/resize-handle.js +1 -0
  200. package/src/components/block-editor/use-site-editor-settings.js +21 -13
  201. package/src/components/create-template-part-modal/index.js +9 -5
  202. package/src/components/dataviews/README.md +194 -0
  203. package/src/components/dataviews/context.js +7 -0
  204. package/src/components/dataviews/dataviews.js +55 -34
  205. package/src/components/dataviews/filters.js +75 -0
  206. package/src/components/dataviews/in-filter.js +45 -0
  207. package/src/components/dataviews/index.js +0 -1
  208. package/src/components/dataviews/item-actions.js +69 -0
  209. package/src/components/dataviews/pagination.js +80 -59
  210. package/src/components/dataviews/search.js +41 -0
  211. package/src/components/dataviews/style.scss +18 -3
  212. package/src/components/dataviews/view-actions.js +108 -63
  213. package/src/components/dataviews/view-grid.js +65 -0
  214. package/src/components/dataviews/view-list.js +348 -0
  215. package/src/components/editor/index.js +2 -0
  216. package/src/components/global-styles/font-library-modal/context.js +17 -11
  217. package/src/components/global-styles/font-library-modal/font-collection.js +19 -11
  218. package/src/components/global-styles/screen-block.js +2 -9
  219. package/src/components/global-styles/screen-root.js +1 -2
  220. package/src/components/global-styles/style.scss +16 -4
  221. package/src/components/global-styles/ui.js +1 -2
  222. package/src/components/layout/index.js +12 -4
  223. package/src/components/media/index.js +25 -0
  224. package/src/components/page-actions/index.js +1 -7
  225. package/src/components/page-pages/default-views.js +58 -0
  226. package/src/components/page-pages/index.js +181 -108
  227. package/src/components/page-pages/style.scss +3 -0
  228. package/src/components/page-patterns/delete-category-menu-item.js +104 -0
  229. package/src/components/page-patterns/duplicate-menu-item.js +68 -181
  230. package/src/components/page-patterns/grid-item.js +1 -0
  231. package/src/components/page-patterns/header.js +42 -6
  232. package/src/components/page-patterns/rename-category-menu-item.js +45 -0
  233. package/src/components/page-patterns/rename-menu-item.js +2 -2
  234. package/src/components/page-patterns/style.scss +8 -0
  235. package/src/components/page-patterns/use-patterns.js +5 -0
  236. package/src/components/pattern-modal/duplicate.js +53 -0
  237. package/src/components/pattern-modal/index.js +19 -0
  238. package/src/components/pattern-modal/rename.js +29 -0
  239. package/src/components/sidebar/index.js +2 -0
  240. package/src/components/sidebar-dataviews/index.js +65 -0
  241. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +4 -0
  242. package/src/components/sidebar-navigation-screen/style.scss +17 -5
  243. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +2 -7
  244. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -8
  245. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +32 -0
  246. package/src/components/sidebar-navigation-screen-template/home-template-details.js +21 -7
  247. package/src/hooks/commands/use-common-commands.js +1 -2
  248. package/src/hooks/commands/use-edit-mode-commands.js +43 -0
  249. package/src/lock-unlock.js +1 -1
  250. package/src/store/selectors.js +9 -10
  251. package/src/style.scss +1 -0
  252. package/build/components/dataviews/list-view.js +0 -89
  253. package/build/components/dataviews/list-view.js.map +0 -1
  254. package/build/components/dataviews/text-filter.js.map +0 -1
  255. package/build-module/components/dataviews/list-view.js +0 -80
  256. package/build-module/components/dataviews/list-view.js.map +0 -1
  257. package/build-module/components/dataviews/text-filter.js +0 -36
  258. package/build-module/components/dataviews/text-filter.js.map +0 -1
  259. package/src/components/dataviews/list-view.js +0 -106
  260. package/src/components/dataviews/text-filter.js +0 -37
@@ -0,0 +1,53 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ // DEFAULT_STATUSES is intentionally sorted. Items do not have spaces in between them.
7
+ // The reason for that is to match the default statuses coming from the endpoint
8
+ // (entity request and useEffect to update the view).
9
+ export const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All statuses but 'trash'.
10
+
11
+ const DEFAULT_PAGE_BASE = {
12
+ type: 'list',
13
+ search: '',
14
+ filters: {
15
+ status: DEFAULT_STATUSES
16
+ },
17
+ page: 1,
18
+ perPage: 5,
19
+ sort: {
20
+ field: 'date',
21
+ direction: 'desc'
22
+ },
23
+ visibleFilters: ['author', 'status'],
24
+ // All fields are visible by default, so it's
25
+ // better to keep track of the hidden ones.
26
+ hiddenFields: ['date', 'featured-image'],
27
+ layout: {}
28
+ };
29
+ const DEFAULT_VIEWS = [{
30
+ title: __('All'),
31
+ slug: 'all',
32
+ view: DEFAULT_PAGE_BASE
33
+ }, {
34
+ title: __('Drafts'),
35
+ slug: 'drafts',
36
+ view: {
37
+ ...DEFAULT_PAGE_BASE,
38
+ filters: {
39
+ status: 'draft'
40
+ }
41
+ }
42
+ }, {
43
+ title: __('Trash'),
44
+ slug: 'trash',
45
+ view: {
46
+ ...DEFAULT_PAGE_BASE,
47
+ filters: {
48
+ status: 'trash'
49
+ }
50
+ }
51
+ }];
52
+ export default DEFAULT_VIEWS;
53
+ //# sourceMappingURL=default-views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","DEFAULT_STATUSES","DEFAULT_PAGE_BASE","type","search","filters","status","page","perPage","sort","field","direction","visibleFilters","hiddenFields","layout","DEFAULT_VIEWS","title","slug","view"],"sources":["@wordpress/edit-site/src/components/page-pages/default-views.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n// DEFAULT_STATUSES is intentionally sorted. Items do not have spaces in between them.\n// The reason for that is to match the default statuses coming from the endpoint\n// (entity request and useEffect to update the view).\nexport const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All statuses but 'trash'.\n\nconst DEFAULT_PAGE_BASE = {\n\ttype: 'list',\n\tsearch: '',\n\tfilters: {\n\t\tstatus: DEFAULT_STATUSES,\n\t},\n\tpage: 1,\n\tperPage: 5,\n\tsort: {\n\t\tfield: 'date',\n\t\tdirection: 'desc',\n\t},\n\tvisibleFilters: [ 'author', 'status' ],\n\t// All fields are visible by default, so it's\n\t// better to keep track of the hidden ones.\n\thiddenFields: [ 'date', 'featured-image' ],\n\tlayout: {},\n};\n\nconst DEFAULT_VIEWS = [\n\t{\n\t\ttitle: __( 'All' ),\n\t\tslug: 'all',\n\t\tview: DEFAULT_PAGE_BASE,\n\t},\n\t{\n\t\ttitle: __( 'Drafts' ),\n\t\tslug: 'drafts',\n\t\tview: {\n\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\tfilters: {\n\t\t\t\tstatus: 'draft',\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\ttitle: __( 'Trash' ),\n\t\tslug: 'trash',\n\t\tview: {\n\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\tfilters: {\n\t\t\t\tstatus: 'trash',\n\t\t\t},\n\t\t},\n\t},\n];\n\nexport default DEFAULT_VIEWS;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG,sCAAsC,CAAC,CAAC;;AAExE,MAAMC,iBAAiB,GAAG;EACzBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,EAAE;EACVC,OAAO,EAAE;IACRC,MAAM,EAAEL;EACT,CAAC;EACDM,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,IAAI,EAAE;IACLC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE;EACZ,CAAC;EACDC,cAAc,EAAE,CAAE,QAAQ,EAAE,QAAQ,CAAE;EACtC;EACA;EACAC,YAAY,EAAE,CAAE,MAAM,EAAE,gBAAgB,CAAE;EAC1CC,MAAM,EAAE,CAAC;AACV,CAAC;AAED,MAAMC,aAAa,GAAG,CACrB;EACCC,KAAK,EAAEhB,EAAE,CAAE,KAAM,CAAC;EAClBiB,IAAI,EAAE,KAAK;EACXC,IAAI,EAAEhB;AACP,CAAC,EACD;EACCc,KAAK,EAAEhB,EAAE,CAAE,QAAS,CAAC;EACrBiB,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE;IACL,GAAGhB,iBAAiB;IACpBG,OAAO,EAAE;MACRC,MAAM,EAAE;IACT;EACD;AACD,CAAC,EACD;EACCU,KAAK,EAAEhB,EAAE,CAAE,OAAQ,CAAC;EACpBiB,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE;IACL,GAAGhB,iBAAiB;IACpBG,OAAO,EAAE;MACRC,MAAM,EAAE;IACT;EACD;AACD,CAAC,CACD;AAED,eAAeS,aAAa"}
@@ -2,89 +2,128 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import apiFetch from '@wordpress/api-fetch';
6
- import { addQueryArgs } from '@wordpress/url';
7
- import { VisuallyHidden, __experimentalHeading as Heading, __experimentalVStack as VStack } from '@wordpress/components';
5
+ import { __experimentalHeading as Heading, __experimentalVStack as VStack } from '@wordpress/components';
8
6
  import { __ } from '@wordpress/i18n';
9
7
  import { useEntityRecords } from '@wordpress/core-data';
10
8
  import { decodeEntities } from '@wordpress/html-entities';
11
- import { useState, useEffect, useMemo } from '@wordpress/element';
9
+ import { useState, useMemo, useCallback, useEffect } from '@wordpress/element';
10
+ import { dateI18n, getDate, getSettings } from '@wordpress/date';
11
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
12
12
 
13
13
  /**
14
14
  * Internal dependencies
15
15
  */
16
16
  import Page from '../page';
17
17
  import Link from '../routes/link';
18
- import PageActions from '../page-actions';
19
- import { DataViews, PAGE_SIZE_VALUES } from '../dataviews';
18
+ import { DataViews } from '../dataviews';
19
+ import { DEFAULT_STATUSES, default as DEFAULT_VIEWS } from './default-views';
20
+ import { useTrashPostAction, postRevisionsAction, viewPostAction, useEditPostAction } from '../actions';
21
+ import Media from '../media';
22
+ import { unlock } from '../../lock-unlock';
23
+ const {
24
+ useLocation
25
+ } = unlock(routerPrivateApis);
20
26
  const EMPTY_ARRAY = [];
27
+ const defaultConfigPerViewType = {
28
+ list: {},
29
+ grid: {
30
+ mediaField: 'featured-image'
31
+ }
32
+ };
21
33
  export default function PagePages() {
22
- const [reset, setResetQuery] = useState(v => !v);
23
- const [globalFilter, setGlobalFilter] = useState('');
24
- const [paginationInfo, setPaginationInfo] = useState();
25
- const [{
26
- pageIndex,
27
- pageSize
28
- }, setPagination] = useState({
29
- pageIndex: 0,
30
- pageSize: PAGE_SIZE_VALUES[0]
31
- });
34
+ const {
35
+ params: {
36
+ path,
37
+ activeView = 'all'
38
+ }
39
+ } = useLocation();
40
+ const initialView = DEFAULT_VIEWS.find(({
41
+ slug
42
+ }) => slug === activeView).view;
43
+ const [view, setView] = useState(initialView);
44
+ useEffect(() => {
45
+ setView(DEFAULT_VIEWS.find(({
46
+ slug
47
+ }) => slug === activeView).view);
48
+ }, [path, activeView]);
32
49
  // Request post statuses to get the proper labels.
33
- const [postStatuses, setPostStatuses] = useState(EMPTY_ARRAY);
50
+ const {
51
+ records: statuses
52
+ } = useEntityRecords('root', 'status');
53
+ const defaultStatuses = useMemo(() => {
54
+ return statuses === null ? DEFAULT_STATUSES : statuses.filter(({
55
+ slug
56
+ }) => slug !== 'trash').map(({
57
+ slug
58
+ }) => slug).sort().join();
59
+ }, [statuses]);
34
60
  useEffect(() => {
35
- apiFetch({
36
- path: '/wp/v2/statuses'
37
- }).then(setPostStatuses);
38
- }, []);
39
-
40
- // TODO: probably memo other objects passed as state(ex:https://tanstack.com/table/v8/docs/examples/react/pagination-controlled).
41
- const pagination = useMemo(() => ({
42
- pageIndex,
43
- pageSize
44
- }), [pageIndex, pageSize]);
45
- const [sorting, setSorting] = useState([{
46
- order: 'desc',
47
- orderby: 'date'
48
- }]);
61
+ // Only update the view if the statuses received from the endpoint
62
+ // are different from the DEFAULT_STATUSES provided initially.
63
+ //
64
+ // The pages endpoint depends on the status endpoint via the status filter.
65
+ // Initially, this code filters the pages request by DEFAULT_STATUTES,
66
+ // instead of using the default (publish).
67
+ // https://developer.wordpress.org/rest-api/reference/pages/#list-pages
68
+ //
69
+ // By doing so, it avoids a second request to the pages endpoint
70
+ // upon receiving the statuses when they are the same (most common scenario).
71
+ if (DEFAULT_STATUSES !== defaultStatuses) {
72
+ setView({
73
+ ...view,
74
+ filters: {
75
+ ...view.filters,
76
+ status: defaultStatuses
77
+ }
78
+ });
79
+ }
80
+ }, [defaultStatuses]);
49
81
  const queryArgs = useMemo(() => ({
50
- per_page: pageSize,
51
- page: pageIndex + 1,
52
- // tanstack starts from zero.
82
+ per_page: view.perPage,
83
+ page: view.page,
53
84
  _embed: 'author',
54
- order: sorting[0]?.desc ? 'desc' : 'asc',
55
- orderby: sorting[0]?.id,
56
- search: globalFilter,
57
- status: ['publish', 'draft']
58
- }), [globalFilter, sorting[0]?.id, sorting[0]?.desc, pageSize, pageIndex, reset]);
85
+ order: view.sort?.direction,
86
+ orderby: view.sort?.field,
87
+ search: view.search,
88
+ ...view.filters
89
+ }), [view]);
59
90
  const {
60
- records,
61
- isResolving: isLoading
91
+ records: pages,
92
+ isResolving: isLoadingPages,
93
+ totalItems,
94
+ totalPages
62
95
  } = useEntityRecords('postType', 'page', queryArgs);
63
- useEffect(() => {
64
- // Make extra request to handle controlled pagination.
65
- apiFetch({
66
- path: addQueryArgs('/wp/v2/pages', {
67
- ...queryArgs,
68
- _fields: 'id'
69
- }),
70
- method: 'HEAD',
71
- parse: false
72
- }).then(res => {
73
- const totalPages = parseInt(res.headers.get('X-WP-TotalPages'));
74
- const totalItems = parseInt(res.headers.get('X-WP-Total'));
75
- setPaginationInfo({
76
- totalPages,
77
- totalItems
78
- });
79
- });
80
- // Status should not make extra request if already did..
81
- }, [globalFilter, pageSize, reset]);
96
+ const {
97
+ records: authors
98
+ } = useEntityRecords('root', 'user');
99
+ const paginationInfo = useMemo(() => ({
100
+ totalItems,
101
+ totalPages
102
+ }), [totalItems, totalPages]);
82
103
  const fields = useMemo(() => [{
104
+ id: 'featured-image',
105
+ header: __('Featured Image'),
106
+ getValue: ({
107
+ item
108
+ }) => item.featured_media,
109
+ render: ({
110
+ item,
111
+ view: currentView
112
+ }) => !!item.featured_media ? createElement(Media, {
113
+ className: "edit-site-page-pages__featured-image",
114
+ id: item.featured_media,
115
+ size: currentView.type === 'list' ? ['thumbnail', 'medium', 'large', 'full'] : ['large', 'full', 'medium', 'thumbnail']
116
+ }) : null,
117
+ enableSorting: false
118
+ }, {
83
119
  header: __('Title'),
84
120
  id: 'title',
85
- accessorFn: page => page.title?.rendered || page.slug,
86
- cell: props => {
87
- const page = props.row.original;
121
+ getValue: ({
122
+ item
123
+ }) => item.title?.rendered || item.slug,
124
+ render: ({
125
+ item
126
+ }) => {
88
127
  return createElement(VStack, {
89
128
  spacing: 1
90
129
  }, createElement(Heading, {
@@ -92,11 +131,11 @@ export default function PagePages() {
92
131
  level: 5
93
132
  }, createElement(Link, {
94
133
  params: {
95
- postId: page.id,
96
- postType: page.type,
134
+ postId: item.id,
135
+ postType: item.type,
97
136
  canvas: 'edit'
98
137
  }
99
- }, decodeEntities(props.getValue()))));
138
+ }, decodeEntities(item.title?.rendered || item.slug) || __('(no title)'))));
100
139
  },
101
140
  maxWidth: 400,
102
141
  sortingFn: 'alphanumeric',
@@ -104,63 +143,89 @@ export default function PagePages() {
104
143
  }, {
105
144
  header: __('Author'),
106
145
  id: 'author',
107
- accessorFn: page => page._embedded?.author[0]?.name,
108
- cell: props => {
109
- const author = props.row.original._embedded?.author[0];
146
+ getValue: ({
147
+ item
148
+ }) => item._embedded?.author[0]?.name,
149
+ render: ({
150
+ item
151
+ }) => {
152
+ const author = item._embedded?.author[0];
110
153
  return createElement("a", {
111
154
  href: `user-edit.php?user_id=${author.id}`
112
155
  }, author.name);
113
- }
156
+ },
157
+ filters: ['enumeration'],
158
+ elements: authors?.map(({
159
+ id,
160
+ name
161
+ }) => ({
162
+ value: id,
163
+ label: name
164
+ })) || []
114
165
  }, {
115
- header: 'Status',
166
+ header: __('Status'),
116
167
  id: 'status',
117
- cell: props => postStatuses[props.row.original.status]?.name
118
- }, {
119
- header: createElement(VisuallyHidden, null, __('Actions')),
120
- id: 'actions',
121
- cell: props => {
122
- const page = props.row.original;
123
- return createElement(PageActions, {
124
- postId: page.id,
125
- onRemove: () => setResetQuery()
126
- });
168
+ getValue: ({
169
+ item
170
+ }) => {
171
+ var _statuses$find$name;
172
+ return (_statuses$find$name = statuses?.find(({
173
+ slug
174
+ }) => slug === item.status)?.name) !== null && _statuses$find$name !== void 0 ? _statuses$find$name : item.status;
127
175
  },
128
- enableHiding: false
129
- }], [postStatuses]);
176
+ filters: [{
177
+ type: 'enumeration',
178
+ id: 'status',
179
+ resetValue: defaultStatuses
180
+ }],
181
+ elements: statuses?.map(({
182
+ slug,
183
+ name
184
+ }) => ({
185
+ value: slug,
186
+ label: name
187
+ })) || [],
188
+ enableSorting: false
189
+ }, {
190
+ header: __('Date'),
191
+ id: 'date',
192
+ getValue: ({
193
+ item
194
+ }) => item.date,
195
+ render: ({
196
+ item
197
+ }) => {
198
+ const formattedDate = dateI18n(getSettings().formats.datetimeAbbreviated, getDate(item.date));
199
+ return createElement("time", null, formattedDate);
200
+ }
201
+ }], [defaultStatuses, statuses, authors]);
202
+ const trashPostAction = useTrashPostAction();
203
+ const editPostAction = useEditPostAction();
204
+ const actions = useMemo(() => [viewPostAction, trashPostAction, editPostAction, postRevisionsAction], [trashPostAction, editPostAction]);
205
+ const onChangeView = useCallback(viewUpdater => {
206
+ let updatedView = typeof viewUpdater === 'function' ? viewUpdater(view) : viewUpdater;
207
+ if (updatedView.type !== view.type) {
208
+ updatedView = {
209
+ ...updatedView,
210
+ layout: {
211
+ ...defaultConfigPerViewType[updatedView.type]
212
+ }
213
+ };
214
+ }
215
+ setView(updatedView);
216
+ }, [view, setView]);
130
217
 
131
218
  // TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.
132
219
  return createElement(Page, {
133
220
  title: __('Pages')
134
221
  }, createElement(DataViews, {
135
222
  paginationInfo: paginationInfo,
136
- data: records || EMPTY_ARRAY,
137
- isLoading: isLoading,
138
223
  fields: fields,
139
- options: {
140
- manualSorting: true,
141
- manualFiltering: true,
142
- manualPagination: true,
143
- enableRowSelection: true,
144
- state: {
145
- sorting,
146
- globalFilter,
147
- pagination
148
- },
149
- pageCount: paginationInfo?.totalPages,
150
- onSortingChange: setSorting,
151
- onGlobalFilterChange: value => {
152
- setGlobalFilter(value);
153
- setPagination({
154
- pageIndex: 0,
155
- pageSize
156
- });
157
- },
158
- // TODO: check these callbacks and maybe reset the query when needed...
159
- onPaginationChange: setPagination,
160
- meta: {
161
- resetQuery: setResetQuery
162
- }
163
- }
224
+ actions: actions,
225
+ data: pages || EMPTY_ARRAY,
226
+ isLoading: isLoadingPages,
227
+ view: view,
228
+ onChangeView: onChangeView
164
229
  }));
165
230
  }
166
231
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["apiFetch","addQueryArgs","VisuallyHidden","__experimentalHeading","Heading","__experimentalVStack","VStack","__","useEntityRecords","decodeEntities","useState","useEffect","useMemo","Page","Link","PageActions","DataViews","PAGE_SIZE_VALUES","EMPTY_ARRAY","PagePages","reset","setResetQuery","v","globalFilter","setGlobalFilter","paginationInfo","setPaginationInfo","pageIndex","pageSize","setPagination","postStatuses","setPostStatuses","path","then","pagination","sorting","setSorting","order","orderby","queryArgs","per_page","page","_embed","desc","id","search","status","records","isResolving","isLoading","_fields","method","parse","res","totalPages","parseInt","headers","get","totalItems","fields","header","accessorFn","title","rendered","slug","cell","props","row","original","createElement","spacing","as","level","params","postId","postType","type","canvas","getValue","maxWidth","sortingFn","enableHiding","_embedded","author","name","href","onRemove","data","options","manualSorting","manualFiltering","manualPagination","enableRowSelection","state","pageCount","onSortingChange","onGlobalFilterChange","value","onPaginationChange","meta","resetQuery"],"sources":["@wordpress/edit-site/src/components/page-pages/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport {\n\tVisuallyHidden,\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Link from '../routes/link';\nimport PageActions from '../page-actions';\nimport { DataViews, PAGE_SIZE_VALUES } from '../dataviews';\n\nconst EMPTY_ARRAY = [];\n\nexport default function PagePages() {\n\tconst [ reset, setResetQuery ] = useState( ( v ) => ! v );\n\tconst [ globalFilter, setGlobalFilter ] = useState( '' );\n\tconst [ paginationInfo, setPaginationInfo ] = useState();\n\tconst [ { pageIndex, pageSize }, setPagination ] = useState( {\n\t\tpageIndex: 0,\n\t\tpageSize: PAGE_SIZE_VALUES[ 0 ],\n\t} );\n\t// Request post statuses to get the proper labels.\n\tconst [ postStatuses, setPostStatuses ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tapiFetch( {\n\t\t\tpath: '/wp/v2/statuses',\n\t\t} ).then( setPostStatuses );\n\t}, [] );\n\n\t// TODO: probably memo other objects passed as state(ex:https://tanstack.com/table/v8/docs/examples/react/pagination-controlled).\n\tconst pagination = useMemo(\n\t\t() => ( { pageIndex, pageSize } ),\n\t\t[ pageIndex, pageSize ]\n\t);\n\tconst [ sorting, setSorting ] = useState( [\n\t\t{ order: 'desc', orderby: 'date' },\n\t] );\n\tconst queryArgs = useMemo(\n\t\t() => ( {\n\t\t\tper_page: pageSize,\n\t\t\tpage: pageIndex + 1, // tanstack starts from zero.\n\t\t\t_embed: 'author',\n\t\t\torder: sorting[ 0 ]?.desc ? 'desc' : 'asc',\n\t\t\torderby: sorting[ 0 ]?.id,\n\t\t\tsearch: globalFilter,\n\t\t\tstatus: [ 'publish', 'draft' ],\n\t\t} ),\n\t\t[\n\t\t\tglobalFilter,\n\t\t\tsorting[ 0 ]?.id,\n\t\t\tsorting[ 0 ]?.desc,\n\t\t\tpageSize,\n\t\t\tpageIndex,\n\t\t\treset,\n\t\t]\n\t);\n\tconst { records, isResolving: isLoading } = useEntityRecords(\n\t\t'postType',\n\t\t'page',\n\t\tqueryArgs\n\t);\n\tuseEffect( () => {\n\t\t// Make extra request to handle controlled pagination.\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/pages', {\n\t\t\t\t...queryArgs,\n\t\t\t\t_fields: 'id',\n\t\t\t} ),\n\t\t\tmethod: 'HEAD',\n\t\t\tparse: false,\n\t\t} ).then( ( res ) => {\n\t\t\tconst totalPages = parseInt( res.headers.get( 'X-WP-TotalPages' ) );\n\t\t\tconst totalItems = parseInt( res.headers.get( 'X-WP-Total' ) );\n\t\t\tsetPaginationInfo( {\n\t\t\t\ttotalPages,\n\t\t\t\ttotalItems,\n\t\t\t} );\n\t\t} );\n\t\t// Status should not make extra request if already did..\n\t}, [ globalFilter, pageSize, reset ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\taccessorFn: ( page ) => page.title?.rendered || page.slug,\n\t\t\t\tcell: ( props ) => {\n\t\t\t\t\tconst page = props.row.original;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t<Heading as=\"h3\" level={ 5 }>\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\t\t\tpostId: page.id,\n\t\t\t\t\t\t\t\t\t\tpostType: page.type,\n\t\t\t\t\t\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ decodeEntities( props.getValue() ) }\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tsortingFn: 'alphanumeric',\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\taccessorFn: ( page ) => page._embedded?.author[ 0 ]?.name,\n\t\t\t\tcell: ( props ) => {\n\t\t\t\t\tconst author = props.row.original._embedded?.author[ 0 ];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<a href={ `user-edit.php?user_id=${ author.id }` }>\n\t\t\t\t\t\t\t{ author.name }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: 'Status',\n\t\t\t\tid: 'status',\n\t\t\t\tcell: ( props ) =>\n\t\t\t\t\tpostStatuses[ props.row.original.status ]?.name,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>,\n\t\t\t\tid: 'actions',\n\t\t\t\tcell: ( props ) => {\n\t\t\t\t\tconst page = props.row.original;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PageActions\n\t\t\t\t\t\t\tpostId={ page.id }\n\t\t\t\t\t\t\tonRemove={ () => setResetQuery() }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t],\n\t\t[ postStatuses ]\n\t);\n\n\t// TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.\n\treturn (\n\t\t<Page title={ __( 'Pages' ) }>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tdata={ records || EMPTY_ARRAY }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tfields={ fields }\n\t\t\t\toptions={ {\n\t\t\t\t\tmanualSorting: true,\n\t\t\t\t\tmanualFiltering: true,\n\t\t\t\t\tmanualPagination: true,\n\t\t\t\t\tenableRowSelection: true,\n\t\t\t\t\tstate: {\n\t\t\t\t\t\tsorting,\n\t\t\t\t\t\tglobalFilter,\n\t\t\t\t\t\tpagination,\n\t\t\t\t\t},\n\t\t\t\t\tpageCount: paginationInfo?.totalPages,\n\t\t\t\t\tonSortingChange: setSorting,\n\t\t\t\t\tonGlobalFilterChange: ( value ) => {\n\t\t\t\t\t\tsetGlobalFilter( value );\n\t\t\t\t\t\tsetPagination( { pageIndex: 0, pageSize } );\n\t\t\t\t\t},\n\t\t\t\t\t// TODO: check these callbacks and maybe reset the query when needed...\n\t\t\t\t\tonPaginationChange: setPagination,\n\t\t\t\t\tmeta: { resetQuery: setResetQuery },\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["__experimentalHeading","Heading","__experimentalVStack","VStack","__","useEntityRecords","decodeEntities","useState","useMemo","useCallback","useEffect","dateI18n","getDate","getSettings","privateApis","routerPrivateApis","Page","Link","DataViews","DEFAULT_STATUSES","default","DEFAULT_VIEWS","useTrashPostAction","postRevisionsAction","viewPostAction","useEditPostAction","Media","unlock","useLocation","EMPTY_ARRAY","defaultConfigPerViewType","list","grid","mediaField","PagePages","params","path","activeView","initialView","find","slug","view","setView","records","statuses","defaultStatuses","filter","map","sort","join","filters","status","queryArgs","per_page","perPage","page","_embed","order","direction","orderby","field","search","pages","isResolving","isLoadingPages","totalItems","totalPages","authors","paginationInfo","fields","id","header","getValue","item","featured_media","render","currentView","createElement","className","size","type","enableSorting","title","rendered","spacing","as","level","postId","postType","canvas","maxWidth","sortingFn","enableHiding","_embedded","author","name","href","elements","value","label","_statuses$find$name","resetValue","date","formattedDate","formats","datetimeAbbreviated","trashPostAction","editPostAction","actions","onChangeView","viewUpdater","updatedView","layout","data","isLoading"],"sources":["@wordpress/edit-site/src/components/page-pages/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Link from '../routes/link';\nimport { DataViews } from '../dataviews';\nimport { DEFAULT_STATUSES, default as DEFAULT_VIEWS } from './default-views';\nimport {\n\tuseTrashPostAction,\n\tpostRevisionsAction,\n\tviewPostAction,\n\tuseEditPostAction,\n} from '../actions';\nimport Media from '../media';\nimport { unlock } from '../../lock-unlock';\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\nconst defaultConfigPerViewType = {\n\tlist: {},\n\tgrid: {\n\t\tmediaField: 'featured-image',\n\t},\n};\n\nexport default function PagePages() {\n\tconst {\n\t\tparams: { path, activeView = 'all' },\n\t} = useLocation();\n\tconst initialView = DEFAULT_VIEWS.find(\n\t\t( { slug } ) => slug === activeView\n\t).view;\n\tconst [ view, setView ] = useState( initialView );\n\tuseEffect( () => {\n\t\tsetView(\n\t\t\tDEFAULT_VIEWS.find( ( { slug } ) => slug === activeView ).view\n\t\t);\n\t}, [ path, activeView ] );\n\t// Request post statuses to get the proper labels.\n\tconst { records: statuses } = useEntityRecords( 'root', 'status' );\n\tconst defaultStatuses = useMemo( () => {\n\t\treturn statuses === null\n\t\t\t? DEFAULT_STATUSES\n\t\t\t: statuses\n\t\t\t\t\t.filter( ( { slug } ) => slug !== 'trash' )\n\t\t\t\t\t.map( ( { slug } ) => slug )\n\t\t\t\t\t.sort()\n\t\t\t\t\t.join();\n\t}, [ statuses ] );\n\n\tuseEffect( () => {\n\t\t// Only update the view if the statuses received from the endpoint\n\t\t// are different from the DEFAULT_STATUSES provided initially.\n\t\t//\n\t\t// The pages endpoint depends on the status endpoint via the status filter.\n\t\t// Initially, this code filters the pages request by DEFAULT_STATUTES,\n\t\t// instead of using the default (publish).\n\t\t// https://developer.wordpress.org/rest-api/reference/pages/#list-pages\n\t\t//\n\t\t// By doing so, it avoids a second request to the pages endpoint\n\t\t// upon receiving the statuses when they are the same (most common scenario).\n\t\tif ( DEFAULT_STATUSES !== defaultStatuses ) {\n\t\t\tsetView( {\n\t\t\t\t...view,\n\t\t\t\tfilters: {\n\t\t\t\t\t...view.filters,\n\t\t\t\t\tstatus: defaultStatuses,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [ defaultStatuses ] );\n\n\tconst queryArgs = useMemo(\n\t\t() => ( {\n\t\t\tper_page: view.perPage,\n\t\t\tpage: view.page,\n\t\t\t_embed: 'author',\n\t\t\torder: view.sort?.direction,\n\t\t\torderby: view.sort?.field,\n\t\t\tsearch: view.search,\n\t\t\t...view.filters,\n\t\t} ),\n\t\t[ view ]\n\t);\n\tconst {\n\t\trecords: pages,\n\t\tisResolving: isLoadingPages,\n\t\ttotalItems,\n\t\ttotalPages,\n\t} = useEntityRecords( 'postType', 'page', queryArgs );\n\n\tconst { records: authors } = useEntityRecords( 'root', 'user' );\n\n\tconst paginationInfo = useMemo(\n\t\t() => ( {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t} ),\n\t\t[ totalItems, totalPages ]\n\t);\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'featured-image',\n\t\t\t\theader: __( 'Featured Image' ),\n\t\t\t\tgetValue: ( { item } ) => item.featured_media,\n\t\t\t\trender: ( { item, view: currentView } ) =>\n\t\t\t\t\t!! item.featured_media ? (\n\t\t\t\t\t\t<Media\n\t\t\t\t\t\t\tclassName=\"edit-site-page-pages__featured-image\"\n\t\t\t\t\t\t\tid={ item.featured_media }\n\t\t\t\t\t\t\tsize={\n\t\t\t\t\t\t\t\tcurrentView.type === 'list'\n\t\t\t\t\t\t\t\t\t? [ 'thumbnail', 'medium', 'large', 'full' ]\n\t\t\t\t\t\t\t\t\t: [ 'large', 'full', 'medium', 'thumbnail' ]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null,\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered || item.slug,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t<Heading as=\"h3\" level={ 5 }>\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\t\t\tpostId: item.id,\n\t\t\t\t\t\t\t\t\t\tpostType: item.type,\n\t\t\t\t\t\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\t\t\titem.title?.rendered || item.slug\n\t\t\t\t\t\t\t\t\t) || __( '(no title)' ) }\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tsortingFn: 'alphanumeric',\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item._embedded?.author[ 0 ]?.name,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\tconst author = item._embedded?.author[ 0 ];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<a href={ `user-edit.php?user_id=${ author.id }` }>\n\t\t\t\t\t\t\t{ author.name }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tfilters: [ 'enumeration' ],\n\t\t\t\telements:\n\t\t\t\t\tauthors?.map( ( { id, name } ) => ( {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t} ) ) || [],\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Status' ),\n\t\t\t\tid: 'status',\n\t\t\t\tgetValue: ( { item } ) =>\n\t\t\t\t\tstatuses?.find( ( { slug } ) => slug === item.status )\n\t\t\t\t\t\t?.name ?? item.status,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'enumeration',\n\t\t\t\t\t\tid: 'status',\n\t\t\t\t\t\tresetValue: defaultStatuses,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\telements:\n\t\t\t\t\tstatuses?.map( ( { slug, name } ) => ( {\n\t\t\t\t\t\tvalue: slug,\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t} ) ) || [],\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Date' ),\n\t\t\t\tid: 'date',\n\t\t\t\tgetValue: ( { item } ) => item.date,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\tconst formattedDate = dateI18n(\n\t\t\t\t\t\tgetSettings().formats.datetimeAbbreviated,\n\t\t\t\t\t\tgetDate( item.date )\n\t\t\t\t\t);\n\t\t\t\t\treturn <time>{ formattedDate }</time>;\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\t[ defaultStatuses, statuses, authors ]\n\t);\n\n\tconst trashPostAction = useTrashPostAction();\n\tconst editPostAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\tviewPostAction,\n\t\t\ttrashPostAction,\n\t\t\teditPostAction,\n\t\t\tpostRevisionsAction,\n\t\t],\n\t\t[ trashPostAction, editPostAction ]\n\t);\n\tconst onChangeView = useCallback(\n\t\t( viewUpdater ) => {\n\t\t\tlet updatedView =\n\t\t\t\ttypeof viewUpdater === 'function'\n\t\t\t\t\t? viewUpdater( view )\n\t\t\t\t\t: viewUpdater;\n\t\t\tif ( updatedView.type !== view.type ) {\n\t\t\t\tupdatedView = {\n\t\t\t\t\t...updatedView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ updatedView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tsetView( updatedView );\n\t\t},\n\t\t[ view, setView ]\n\t);\n\n\t// TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.\n\treturn (\n\t\t<Page title={ __( 'Pages' ) }>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ pages || EMPTY_ARRAY }\n\t\t\t\tisLoading={ isLoadingPages }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { createElement, Fragment } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { MenuItem, __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
6
+ import { store as coreStore } from '@wordpress/core-data';
7
+ import { useDispatch } from '@wordpress/data';
8
+ import { useState } from '@wordpress/element';
9
+ import { decodeEntities } from '@wordpress/html-entities';
10
+ import { __, sprintf } from '@wordpress/i18n';
11
+ import { store as noticesStore } from '@wordpress/notices';
12
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { unlock } from '../../lock-unlock';
18
+ import { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';
19
+ const {
20
+ useHistory
21
+ } = unlock(routerPrivateApis);
22
+ export default function DeleteCategoryMenuItem({
23
+ category,
24
+ onClose
25
+ }) {
26
+ const [isModalOpen, setIsModalOpen] = useState(false);
27
+ const history = useHistory();
28
+ const {
29
+ createSuccessNotice,
30
+ createErrorNotice
31
+ } = useDispatch(noticesStore);
32
+ const {
33
+ deleteEntityRecord,
34
+ invalidateResolution
35
+ } = useDispatch(coreStore);
36
+ const onDelete = async () => {
37
+ try {
38
+ await deleteEntityRecord('taxonomy', 'wp_pattern_category', category.id, {
39
+ force: true
40
+ }, {
41
+ throwOnError: true
42
+ });
43
+
44
+ // Prevent the need to refresh the page to get up-to-date categories
45
+ // and pattern categorization.
46
+ invalidateResolution('getUserPatternCategories');
47
+ invalidateResolution('getEntityRecords', ['postType', PATTERN_TYPES.user, {
48
+ per_page: -1
49
+ }]);
50
+ createSuccessNotice(sprintf( /* translators: The pattern category's name */
51
+ __('"%s" deleted.'), category.label), {
52
+ type: 'snackbar',
53
+ id: 'pattern-category-delete'
54
+ });
55
+ onClose?.();
56
+ history.push({
57
+ path: `/patterns`,
58
+ categoryType: PATTERN_TYPES.theme,
59
+ categoryId: PATTERN_DEFAULT_CATEGORY
60
+ });
61
+ } catch (error) {
62
+ const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while deleting the pattern category.');
63
+ createErrorNotice(errorMessage, {
64
+ type: 'snackbar',
65
+ id: 'pattern-category-delete'
66
+ });
67
+ }
68
+ };
69
+ return createElement(Fragment, null, createElement(MenuItem, {
70
+ isDestructive: true,
71
+ onClick: () => setIsModalOpen(true)
72
+ }, __('Delete')), createElement(ConfirmDialog, {
73
+ isOpen: isModalOpen,
74
+ onConfirm: onDelete,
75
+ onCancel: () => setIsModalOpen(false),
76
+ confirmButtonText: __('Delete'),
77
+ className: "edit-site-patterns__delete-modal"
78
+ }, sprintf(
79
+ // translators: %s: The pattern category's name.
80
+ __('Are you sure you want to delete the category "%s"? The patterns will not be deleted.'), decodeEntities(category.label))));
81
+ }
82
+ //# sourceMappingURL=delete-category-menu-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MenuItem","__experimentalConfirmDialog","ConfirmDialog","store","coreStore","useDispatch","useState","decodeEntities","__","sprintf","noticesStore","privateApis","routerPrivateApis","unlock","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","useHistory","DeleteCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","history","createSuccessNotice","createErrorNotice","deleteEntityRecord","invalidateResolution","onDelete","id","force","throwOnError","user","per_page","label","type","push","path","categoryType","theme","categoryId","error","errorMessage","message","code","createElement","Fragment","isDestructive","onClick","isOpen","onConfirm","onCancel","confirmButtonText","className"],"sources":["@wordpress/edit-site/src/components/page-patterns/delete-category-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DeleteCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord, invalidateResolution } =\n\t\tuseDispatch( coreStore );\n\n\tconst onDelete = async () => {\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\tcategory.id,\n\t\t\t\t{ force: true },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Prevent the need to refresh the page to get up-to-date categories\n\t\t\t// and pattern categorization.\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tinvalidateResolution( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t{ per_page: -1 },\n\t\t\t] );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: The pattern category's name */\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\tcategory.label\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'pattern-category-delete' }\n\t\t\t);\n\n\t\t\tonClose?.();\n\t\t\thistory.push( {\n\t\t\t\tpath: `/patterns`,\n\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while deleting the pattern category.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-delete',\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onDelete }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\tclassName=\"edit-site-patterns__delete-modal\"\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete the category \"%s\"? The patterns will not be deleted.'\n\t\t\t\t\t),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}