@wordpress/edit-site 6.1.0 → 6.3.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 (290) hide show
  1. package/CHANGELOG.md +10 -6
  2. package/build/components/add-new-pattern/index.js +31 -16
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/{add-new-page → add-new-post}/index.js +28 -16
  5. package/build/components/add-new-post/index.js.map +1 -0
  6. package/build/components/block-editor/use-site-editor-settings.js +5 -3
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +32 -7
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +18 -7
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/background-panel.js +0 -5
  13. package/build/components/global-styles/background-panel.js.map +1 -1
  14. package/build/components/global-styles/font-families.js +17 -17
  15. package/build/components/global-styles/font-families.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/context.js +2 -2
  17. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/font-collection.js +13 -30
  19. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/global-styles/hooks.js +0 -40
  23. package/build/components/global-styles/hooks.js.map +1 -1
  24. package/build/components/global-styles/preview-typography.js +47 -0
  25. package/build/components/global-styles/preview-typography.js.map +1 -0
  26. package/build/components/global-styles/screen-block.js +14 -0
  27. package/build/components/global-styles/screen-block.js.map +1 -1
  28. package/build/components/global-styles/screen-layout.js +5 -1
  29. package/build/components/global-styles/screen-layout.js.map +1 -1
  30. package/build/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  31. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  32. package/build/components/global-styles/shadows-edit-panel.js +1 -2
  33. package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
  34. package/build/components/global-styles/style-variations-container.js +5 -5
  35. package/build/components/global-styles/style-variations-container.js.map +1 -1
  36. package/build/components/global-styles/typography-elements.js +0 -2
  37. package/build/components/global-styles/typography-elements.js.map +1 -1
  38. package/build/components/global-styles/variations/variation.js +28 -22
  39. package/build/components/global-styles/variations/variation.js.map +1 -1
  40. package/build/components/global-styles/variations/variations-color.js +5 -3
  41. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  42. package/build/components/global-styles/variations/variations-typography.js +14 -27
  43. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  44. package/build/components/global-styles-sidebar/index.js +2 -2
  45. package/build/components/global-styles-sidebar/index.js.map +1 -1
  46. package/build/components/layout/index.js +16 -8
  47. package/build/components/layout/index.js.map +1 -1
  48. package/build/components/layout/router.js +20 -41
  49. package/build/components/layout/router.js.map +1 -1
  50. package/build/components/page-patterns/index.js +51 -41
  51. package/build/components/page-patterns/index.js.map +1 -1
  52. package/build/components/page-patterns/rename-category-menu-item.js +3 -1
  53. package/build/components/page-patterns/rename-category-menu-item.js.map +1 -1
  54. package/build/components/page-patterns/search-items.js +29 -4
  55. package/build/components/page-patterns/search-items.js.map +1 -1
  56. package/build/components/page-patterns/use-patterns.js +22 -55
  57. package/build/components/page-patterns/use-patterns.js.map +1 -1
  58. package/build/components/page-templates/index.js +27 -21
  59. package/build/components/page-templates/index.js.map +1 -1
  60. package/build/components/pagination/index.js +4 -4
  61. package/build/components/pagination/index.js.map +1 -1
  62. package/build/components/posts-app/index.js +11 -17
  63. package/build/components/posts-app/index.js.map +1 -1
  64. package/build/components/{page-pages/index.js → posts-app/posts-list.js} +165 -38
  65. package/build/components/posts-app/posts-list.js.map +1 -0
  66. package/build/components/posts-app/router.js +85 -0
  67. package/build/components/posts-app/router.js.map +1 -0
  68. package/build/components/revisions/index.js +10 -7
  69. package/build/components/revisions/index.js.map +1 -1
  70. package/build/components/save-panel/index.js +1 -1
  71. package/build/components/save-panel/index.js.map +1 -1
  72. package/build/components/sidebar-dataviews/add-new-view.js +4 -1
  73. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  74. package/build/components/sidebar-dataviews/custom-dataviews-list.js +6 -2
  75. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  76. package/build/components/sidebar-dataviews/default-views.js +98 -84
  77. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  78. package/build/components/sidebar-dataviews/index.js +4 -1
  79. package/build/components/sidebar-dataviews/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-global-styles/index.js +3 -3
  81. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +5 -2
  83. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +3 -2
  85. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  86. package/build/components/site-hub/index.js +81 -1
  87. package/build/components/site-hub/index.js.map +1 -1
  88. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -1
  89. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  90. package/build/deprecated.js +11 -0
  91. package/build/deprecated.js.map +1 -1
  92. package/build/hooks/commands/use-set-command-context.js +11 -0
  93. package/build/hooks/commands/use-set-command-context.js.map +1 -1
  94. package/build/hooks/push-changes-to-global-styles/index.js +1 -1
  95. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  96. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +65 -42
  97. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  98. package/build/index.js +6 -0
  99. package/build/index.js.map +1 -1
  100. package/build/lock-unlock.js +1 -1
  101. package/build/lock-unlock.js.map +1 -1
  102. package/build/posts.js +57 -2
  103. package/build/posts.js.map +1 -1
  104. package/build/store/private-actions.js +7 -2
  105. package/build/store/private-actions.js.map +1 -1
  106. package/build-module/components/add-new-pattern/index.js +31 -16
  107. package/build-module/components/add-new-pattern/index.js.map +1 -1
  108. package/build-module/components/{add-new-page → add-new-post}/index.js +28 -16
  109. package/build-module/components/add-new-post/index.js.map +1 -0
  110. package/build-module/components/block-editor/use-site-editor-settings.js +5 -3
  111. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  112. package/build-module/components/editor/index.js +33 -8
  113. package/build-module/components/editor/index.js.map +1 -1
  114. package/build-module/components/editor-canvas-container/index.js +19 -8
  115. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  116. package/build-module/components/global-styles/background-panel.js +0 -5
  117. package/build-module/components/global-styles/background-panel.js.map +1 -1
  118. package/build-module/components/global-styles/font-families.js +18 -18
  119. package/build-module/components/global-styles/font-families.js.map +1 -1
  120. package/build-module/components/global-styles/font-library-modal/context.js +2 -2
  121. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  122. package/build-module/components/global-styles/font-library-modal/font-collection.js +14 -31
  123. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  124. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  125. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  126. package/build-module/components/global-styles/hooks.js +0 -38
  127. package/build-module/components/global-styles/hooks.js.map +1 -1
  128. package/build-module/components/global-styles/preview-typography.js +39 -0
  129. package/build-module/components/global-styles/preview-typography.js.map +1 -0
  130. package/build-module/components/global-styles/screen-block.js +15 -0
  131. package/build-module/components/global-styles/screen-block.js.map +1 -1
  132. package/build-module/components/global-styles/screen-layout.js +5 -1
  133. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  134. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  135. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  136. package/build-module/components/global-styles/shadows-edit-panel.js +1 -2
  137. package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
  138. package/build-module/components/global-styles/style-variations-container.js +6 -6
  139. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  140. package/build-module/components/global-styles/typography-elements.js +0 -2
  141. package/build-module/components/global-styles/typography-elements.js.map +1 -1
  142. package/build-module/components/global-styles/variations/variation.js +29 -23
  143. package/build-module/components/global-styles/variations/variation.js.map +1 -1
  144. package/build-module/components/global-styles/variations/variations-color.js +5 -3
  145. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  146. package/build-module/components/global-styles/variations/variations-typography.js +16 -28
  147. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  148. package/build-module/components/global-styles-sidebar/index.js +2 -2
  149. package/build-module/components/global-styles-sidebar/index.js.map +1 -1
  150. package/build-module/components/layout/index.js +14 -8
  151. package/build-module/components/layout/index.js.map +1 -1
  152. package/build-module/components/layout/router.js +20 -41
  153. package/build-module/components/layout/router.js.map +1 -1
  154. package/build-module/components/page-patterns/index.js +52 -42
  155. package/build-module/components/page-patterns/index.js.map +1 -1
  156. package/build-module/components/page-patterns/rename-category-menu-item.js +3 -1
  157. package/build-module/components/page-patterns/rename-category-menu-item.js.map +1 -1
  158. package/build-module/components/page-patterns/search-items.js +28 -4
  159. package/build-module/components/page-patterns/search-items.js.map +1 -1
  160. package/build-module/components/page-patterns/use-patterns.js +23 -56
  161. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  162. package/build-module/components/page-templates/index.js +27 -21
  163. package/build-module/components/page-templates/index.js.map +1 -1
  164. package/build-module/components/pagination/index.js +4 -4
  165. package/build-module/components/pagination/index.js.map +1 -1
  166. package/build-module/components/posts-app/index.js +11 -17
  167. package/build-module/components/posts-app/index.js.map +1 -1
  168. package/build-module/components/{page-pages/index.js → posts-app/posts-list.js} +164 -37
  169. package/build-module/components/posts-app/posts-list.js.map +1 -0
  170. package/build-module/components/posts-app/router.js +77 -0
  171. package/build-module/components/posts-app/router.js.map +1 -0
  172. package/build-module/components/revisions/index.js +10 -7
  173. package/build-module/components/revisions/index.js.map +1 -1
  174. package/build-module/components/save-panel/index.js +1 -1
  175. package/build-module/components/save-panel/index.js.map +1 -1
  176. package/build-module/components/sidebar-dataviews/add-new-view.js +4 -1
  177. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  178. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +6 -2
  179. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  180. package/build-module/components/sidebar-dataviews/default-views.js +97 -84
  181. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  182. package/build-module/components/sidebar-dataviews/index.js +5 -2
  183. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  184. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +3 -3
  185. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +5 -2
  187. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +3 -2
  189. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  190. package/build-module/components/site-hub/index.js +81 -1
  191. package/build-module/components/site-hub/index.js.map +1 -1
  192. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -1
  193. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  194. package/build-module/deprecated.js +11 -0
  195. package/build-module/deprecated.js.map +1 -1
  196. package/build-module/hooks/commands/use-set-command-context.js +11 -0
  197. package/build-module/hooks/commands/use-set-command-context.js.map +1 -1
  198. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -1
  199. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  200. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +61 -38
  201. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  202. package/build-module/index.js +7 -2
  203. package/build-module/index.js.map +1 -1
  204. package/build-module/lock-unlock.js +1 -1
  205. package/build-module/lock-unlock.js.map +1 -1
  206. package/build-module/posts.js +57 -2
  207. package/build-module/posts.js.map +1 -1
  208. package/build-module/store/private-actions.js +7 -2
  209. package/build-module/store/private-actions.js.map +1 -1
  210. package/build-style/posts-rtl.css +108 -28
  211. package/build-style/posts.css +108 -28
  212. package/build-style/style-rtl.css +127 -157
  213. package/build-style/style.css +127 -157
  214. package/lib/inflate.js +3188 -3937
  215. package/lib/lib-font.browser.js +32 -2
  216. package/lib/unbrotli.js +1818 -2458
  217. package/package.json +41 -41
  218. package/src/components/add-new-pattern/index.js +38 -23
  219. package/src/components/{add-new-page → add-new-post}/index.js +42 -18
  220. package/src/components/block-editor/style.scss +0 -11
  221. package/src/components/block-editor/use-site-editor-settings.js +33 -28
  222. package/src/components/editor/index.js +34 -20
  223. package/src/components/editor-canvas-container/index.js +20 -8
  224. package/src/components/global-styles/background-panel.js +0 -8
  225. package/src/components/global-styles/font-families.js +28 -19
  226. package/src/components/global-styles/font-library-modal/context.js +2 -2
  227. package/src/components/global-styles/font-library-modal/font-collection.js +17 -32
  228. package/src/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  229. package/src/components/global-styles/font-library-modal/style.scss +17 -10
  230. package/src/components/global-styles/hooks.js +0 -41
  231. package/src/components/global-styles/preview-typography.js +39 -0
  232. package/src/components/global-styles/screen-block.js +22 -0
  233. package/src/components/global-styles/screen-layout.js +5 -1
  234. package/src/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  235. package/src/components/global-styles/shadows-edit-panel.js +1 -2
  236. package/src/components/global-styles/style-variations-container.js +10 -7
  237. package/src/components/global-styles/style.scss +2 -1
  238. package/src/components/global-styles/typography-elements.js +0 -4
  239. package/src/components/global-styles/variations/variation.js +41 -26
  240. package/src/components/global-styles/variations/variations-color.js +6 -3
  241. package/src/components/global-styles/variations/variations-typography.js +16 -32
  242. package/src/components/global-styles-sidebar/index.js +2 -2
  243. package/src/components/layout/index.js +13 -4
  244. package/src/components/layout/router.js +20 -36
  245. package/src/components/layout/style.scss +12 -0
  246. package/src/components/page-patterns/index.js +55 -58
  247. package/src/components/page-patterns/rename-category-menu-item.js +2 -0
  248. package/src/components/page-patterns/search-items.js +37 -3
  249. package/src/components/page-patterns/style.scss +1 -8
  250. package/src/components/page-patterns/use-patterns.js +43 -82
  251. package/src/components/page-templates/index.js +26 -21
  252. package/src/components/page-templates/style.scss +1 -6
  253. package/src/components/pagination/index.js +4 -4
  254. package/src/components/posts-app/index.js +9 -11
  255. package/src/components/{page-pages/index.js → posts-app/posts-list.js} +163 -42
  256. package/src/components/posts-app/router.js +69 -0
  257. package/src/components/{page-pages → posts-app}/style.scss +22 -8
  258. package/src/components/revisions/index.js +9 -1
  259. package/src/components/save-panel/index.js +1 -1
  260. package/src/components/sidebar/style.scss +6 -0
  261. package/src/components/sidebar-dataviews/add-new-view.js +2 -1
  262. package/src/components/sidebar-dataviews/custom-dataviews-list.js +6 -2
  263. package/src/components/sidebar-dataviews/default-views.js +119 -98
  264. package/src/components/sidebar-dataviews/index.js +3 -3
  265. package/src/components/sidebar-navigation-screen-global-styles/index.js +7 -6
  266. package/src/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +8 -2
  267. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +10 -2
  268. package/src/components/site-hub/index.js +84 -1
  269. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -2
  270. package/src/deprecated.js +14 -0
  271. package/src/hooks/commands/use-set-command-context.js +12 -0
  272. package/src/hooks/push-changes-to-global-styles/index.js +1 -1
  273. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +28 -24
  274. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +72 -47
  275. package/src/index.js +8 -1
  276. package/src/lock-unlock.js +1 -1
  277. package/src/posts.js +63 -2
  278. package/src/posts.scss +9 -0
  279. package/src/store/private-actions.js +7 -3
  280. package/src/style.scss +14 -2
  281. package/build/components/add-new-page/index.js.map +0 -1
  282. package/build/components/page-pages/index.js.map +0 -1
  283. package/build/components/table/index.js +0 -35
  284. package/build/components/table/index.js.map +0 -1
  285. package/build-module/components/add-new-page/index.js.map +0 -1
  286. package/build-module/components/page-pages/index.js.map +0 -1
  287. package/build-module/components/table/index.js +0 -30
  288. package/build-module/components/table/index.js.map +0 -1
  289. package/src/components/table/index.js +0 -33
  290. package/src/components/table/style.scss +0 -38
@@ -1,7 +1,16 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
- import { Button, __experimentalHStack as HStack } from '@wordpress/components';
9
+ import {
10
+ Button,
11
+ __experimentalHStack as HStack,
12
+ Icon,
13
+ } from '@wordpress/components';
5
14
  import { __, sprintf } from '@wordpress/i18n';
6
15
  import { useEntityRecords, store as coreStore } from '@wordpress/core-data';
7
16
  import { decodeEntities } from '@wordpress/html-entities';
@@ -17,6 +26,15 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
17
26
  import { useSelect, useDispatch } from '@wordpress/data';
18
27
  import { DataViews } from '@wordpress/dataviews';
19
28
  import { privateApis as editorPrivateApis } from '@wordpress/editor';
29
+ import {
30
+ trash,
31
+ drafts,
32
+ published,
33
+ scheduled,
34
+ pending,
35
+ notAllowed,
36
+ commentAuthorAvatar as authorIcon,
37
+ } from '@wordpress/icons';
20
38
 
21
39
  /**
22
40
  * Internal dependencies
@@ -24,7 +42,7 @@ import { privateApis as editorPrivateApis } from '@wordpress/editor';
24
42
  import Page from '../page';
25
43
  import { default as Link, useLink } from '../routes/link';
26
44
  import {
27
- DEFAULT_VIEWS,
45
+ useDefaultViews,
28
46
  DEFAULT_CONFIG_PER_VIEW_TYPE,
29
47
  } from '../sidebar-dataviews/default-views';
30
48
  import {
@@ -35,10 +53,11 @@ import {
35
53
  OPERATOR_IS_NONE,
36
54
  } from '../../utils/constants';
37
55
 
38
- import AddNewPageModal from '../add-new-page';
56
+ import AddNewPostModal from '../add-new-post';
39
57
  import Media from '../media';
40
58
  import { unlock } from '../../lock-unlock';
41
59
  import { useEditPostAction } from '../dataviews-actions';
60
+ import { usePrevious } from '@wordpress/compose';
42
61
 
43
62
  const { usePostActions } = unlock( editorPrivateApis );
44
63
  const { useLocation, useHistory } = unlock( routerPrivateApis );
@@ -55,6 +74,7 @@ function useView( postType ) {
55
74
  params: { activeView = 'all', isCustom = 'false', layout },
56
75
  } = useLocation();
57
76
  const history = useHistory();
77
+ const DEFAULT_VIEWS = useDefaultViews( { postType } );
58
78
  const selectedDefaultView = useMemo( () => {
59
79
  const defaultView =
60
80
  isCustom === 'false' &&
@@ -71,7 +91,7 @@ function useView( postType ) {
71
91
  };
72
92
  }
73
93
  return defaultView;
74
- }, [ isCustom, activeView, layout, postType ] );
94
+ }, [ isCustom, activeView, layout, postType, DEFAULT_VIEWS ] );
75
95
  const [ view, setView ] = useState( selectedDefaultView );
76
96
 
77
97
  useEffect( () => {
@@ -152,12 +172,12 @@ function useView( postType ) {
152
172
  // See https://github.com/WordPress/gutenberg/issues/55886
153
173
  // We do not support custom statutes at the moment.
154
174
  const STATUSES = [
155
- { value: 'draft', label: __( 'Draft' ) },
156
- { value: 'future', label: __( 'Scheduled' ) },
157
- { value: 'pending', label: __( 'Pending Review' ) },
158
- { value: 'private', label: __( 'Private' ) },
159
- { value: 'publish', label: __( 'Published' ) },
160
- { value: 'trash', label: __( 'Trash' ) },
175
+ { value: 'draft', label: __( 'Draft' ), icon: drafts },
176
+ { value: 'future', label: __( 'Scheduled' ), icon: scheduled },
177
+ { value: 'pending', label: __( 'Pending Review' ), icon: pending },
178
+ { value: 'private', label: __( 'Private' ), icon: notAllowed },
179
+ { value: 'publish', label: __( 'Published' ), icon: published },
180
+ { value: 'trash', label: __( 'Trash' ), icon: trash },
161
181
  ];
162
182
  const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'.
163
183
 
@@ -175,7 +195,7 @@ function FeaturedImage( { item, viewType } ) {
175
195
  : [ 'thumbnail', 'medium', 'large', 'full' ];
176
196
  const media = hasMedia ? (
177
197
  <Media
178
- className="edit-site-page-pages__featured-image"
198
+ className="posts-list-page__featured-image"
179
199
  id={ item.featured_media }
180
200
  size={ size }
181
201
  />
@@ -183,11 +203,11 @@ function FeaturedImage( { item, viewType } ) {
183
203
  const renderButton = viewType !== LAYOUT_LIST && ! isDisabled;
184
204
  return (
185
205
  <div
186
- className={ `edit-site-page-pages__featured-image-wrapper is-layout-${ viewType }` }
206
+ className={ `posts-list-page__featured-image-wrapper is-layout-${ viewType }` }
187
207
  >
188
208
  { renderButton ? (
189
209
  <button
190
- className="page-pages-preview-field__button"
210
+ className="posts-list-page-preview-field__button"
191
211
  type="button"
192
212
  onClick={ onClick }
193
213
  aria-label={ item.title?.rendered || __( '(no title)' ) }
@@ -201,11 +221,75 @@ function FeaturedImage( { item, viewType } ) {
201
221
  );
202
222
  }
203
223
 
204
- export default function PagePages() {
205
- const postType = 'page';
224
+ function getItemId( item ) {
225
+ return item.id.toString();
226
+ }
227
+
228
+ function PostStatusField( { item } ) {
229
+ const status = STATUSES.find( ( { value } ) => value === item.status );
230
+ const label = status?.label || item.status;
231
+ const icon = status?.icon;
232
+ return (
233
+ <HStack alignment="left" spacing={ 1 }>
234
+ { icon && (
235
+ <div className="posts-list-page-post-author-field__icon-container">
236
+ <Icon icon={ icon } />
237
+ </div>
238
+ ) }
239
+ <span>{ label }</span>
240
+ </HStack>
241
+ );
242
+ }
243
+
244
+ function PostAuthorField( { item, viewType } ) {
245
+ const { text, icon, imageUrl } = useSelect(
246
+ ( select ) => {
247
+ const { getUser } = select( coreStore );
248
+ const user = getUser( item.author );
249
+ return {
250
+ icon: authorIcon,
251
+ imageUrl: user?.avatar_urls?.[ 48 ],
252
+ text: user?.name,
253
+ };
254
+ },
255
+ [ item ]
256
+ );
257
+
258
+ const withAuthorImage = viewType !== LAYOUT_LIST && imageUrl;
259
+ const withAuthorIcon = viewType !== LAYOUT_LIST && ! imageUrl;
260
+ const [ isImageLoaded, setIsImageLoaded ] = useState( false );
261
+ return (
262
+ <HStack alignment="left" spacing={ 1 }>
263
+ { withAuthorImage && (
264
+ <div
265
+ className={ clsx( 'page-templates-author-field__avatar', {
266
+ 'is-loaded': isImageLoaded,
267
+ } ) }
268
+ >
269
+ <img
270
+ onLoad={ () => setIsImageLoaded( true ) }
271
+ alt={ __( 'Author avatar' ) }
272
+ src={ imageUrl }
273
+ />
274
+ </div>
275
+ ) }
276
+ { withAuthorIcon && (
277
+ <div className="page-templates-author-field__icon">
278
+ <Icon icon={ icon } />
279
+ </div>
280
+ ) }
281
+ <span className="page-templates-author-field__name">{ text }</span>
282
+ </HStack>
283
+ );
284
+ }
285
+
286
+ export default function PostsList( { postType } ) {
206
287
  const [ view, setView ] = useView( postType );
207
288
  const history = useHistory();
208
-
289
+ const {
290
+ params: { postId },
291
+ } = useLocation();
292
+ const [ selection, setSelection ] = useState( [ postId ] );
209
293
  const onSelectionChange = useCallback(
210
294
  ( items ) => {
211
295
  const { params } = history.getLocationWithParams();
@@ -260,12 +344,26 @@ export default function PagePages() {
260
344
  };
261
345
  }, [ view ] );
262
346
  const {
263
- records: pages,
264
- isResolving: isLoadingPages,
347
+ records,
348
+ isResolving: isLoadingMainEntities,
265
349
  totalItems,
266
350
  totalPages,
267
351
  } = useEntityRecords( 'postType', postType, queryArgs );
268
352
 
353
+ const ids = records?.map( ( record ) => getItemId( record ) ) ?? [];
354
+ const prevIds = usePrevious( ids ) ?? [];
355
+ const deletedIds = prevIds.filter( ( id ) => ! ids.includes( id ) );
356
+ const postIdWasDeleted = deletedIds.includes( postId );
357
+
358
+ useEffect( () => {
359
+ if ( postIdWasDeleted ) {
360
+ history.push( {
361
+ ...history.getLocationWithParams().params,
362
+ postId: undefined,
363
+ } );
364
+ }
365
+ }, [ postIdWasDeleted, history ] );
366
+
269
367
  const { records: authors, isResolving: isLoadingAuthors } =
270
368
  useEntityRecords( 'root', 'user', { per_page: -1 } );
271
369
 
@@ -277,16 +375,26 @@ export default function PagePages() {
277
375
  [ totalItems, totalPages ]
278
376
  );
279
377
 
280
- const { frontPageId, postsPageId, addNewLabel } = useSelect( ( select ) => {
281
- const { getEntityRecord, getPostType } = select( coreStore );
282
- const siteSettings = getEntityRecord( 'root', 'site' );
283
- return {
284
- frontPageId: siteSettings?.page_on_front,
285
- postsPageId: siteSettings?.page_for_posts,
286
- addNewLabel: getPostType( 'page' )?.labels?.add_new_item,
287
- };
288
- } );
378
+ const { frontPageId, postsPageId, labels, canCreateRecord } = useSelect(
379
+ ( select ) => {
380
+ const { getEntityRecord, getPostType, canUser } =
381
+ select( coreStore );
382
+ const siteSettings = getEntityRecord( 'root', 'site' );
383
+ const postTypeObject = getPostType( postType );
384
+ return {
385
+ frontPageId: siteSettings?.page_on_front,
386
+ postsPageId: siteSettings?.page_for_posts,
387
+ labels: getPostType( postType )?.labels,
388
+ canCreateRecord: canUser(
389
+ 'create',
390
+ postTypeObject?.rest_base || 'posts'
391
+ ),
392
+ };
393
+ },
394
+ [ postType ]
395
+ );
289
396
 
397
+ // TODO: this should be abstracted into a hook similar to `usePostActions`.
290
398
  const fields = useMemo(
291
399
  () => [
292
400
  {
@@ -328,13 +436,13 @@ export default function PagePages() {
328
436
  let suffix = '';
329
437
  if ( item.id === frontPageId ) {
330
438
  suffix = (
331
- <span className="edit-site-page-pages__title-badge">
439
+ <span className="posts-list-page-title-badge">
332
440
  { __( 'Front Page' ) }
333
441
  </span>
334
442
  );
335
443
  } else if ( item.id === postsPageId ) {
336
444
  suffix = (
337
- <span className="edit-site-page-pages__title-badge">
445
+ <span className="posts-list-page-title-badge">
338
446
  { __( 'Posts Page' ) }
339
447
  </span>
340
448
  );
@@ -342,7 +450,7 @@ export default function PagePages() {
342
450
 
343
451
  return (
344
452
  <HStack
345
- className="edit-site-page-pages-title"
453
+ className="posts-list-page-title"
346
454
  alignment="center"
347
455
  justify="flex-start"
348
456
  >
@@ -363,6 +471,11 @@ export default function PagePages() {
363
471
  value: id,
364
472
  label: name,
365
473
  } ) ) || [],
474
+ render: ( { item } ) => {
475
+ return (
476
+ <PostAuthorField viewType={ view.type } item={ item } />
477
+ );
478
+ },
366
479
  },
367
480
  {
368
481
  header: __( 'Status' ),
@@ -371,6 +484,7 @@ export default function PagePages() {
371
484
  STATUSES.find( ( { value } ) => value === item.status )
372
485
  ?.label ?? item.status,
373
486
  elements: STATUSES,
487
+ render: PostStatusField,
374
488
  enableSorting: false,
375
489
  filterBy: {
376
490
  operators: [ OPERATOR_IS_ANY ],
@@ -455,8 +569,10 @@ export default function PagePages() {
455
569
  ],
456
570
  [ authors, view.type, frontPageId, postsPageId ]
457
571
  );
458
-
459
- const postTypeActions = usePostActions( 'page' );
572
+ const postTypeActions = usePostActions( {
573
+ postType,
574
+ context: 'list',
575
+ } );
460
576
  const editAction = useEditPostAction();
461
577
  const actions = useMemo(
462
578
  () => [ editAction, ...postTypeActions ],
@@ -479,10 +595,10 @@ export default function PagePages() {
479
595
  [ view.type, setView ]
480
596
  );
481
597
 
482
- const [ showAddPageModal, setShowAddPageModal ] = useState( false );
598
+ const [ showAddPostModal, setShowAddPostModal ] = useState( false );
483
599
 
484
- const openModal = () => setShowAddPageModal( true );
485
- const closeModal = () => setShowAddPageModal( false );
600
+ const openModal = () => setShowAddPostModal( true );
601
+ const closeModal = () => setShowAddPostModal( false );
486
602
  const handleNewPage = ( { type, id } ) => {
487
603
  history.push( {
488
604
  postId: id,
@@ -494,19 +610,21 @@ export default function PagePages() {
494
610
 
495
611
  return (
496
612
  <Page
497
- title={ __( 'Pages' ) }
613
+ title={ labels?.name }
498
614
  actions={
499
- addNewLabel && (
615
+ labels?.add_new_item &&
616
+ canCreateRecord && (
500
617
  <>
501
618
  <Button
502
619
  variant="primary"
503
620
  onClick={ openModal }
504
621
  __next40pxDefaultSize
505
622
  >
506
- { addNewLabel }
623
+ { labels.add_new_item }
507
624
  </Button>
508
- { showAddPageModal && (
509
- <AddNewPageModal
625
+ { showAddPostModal && (
626
+ <AddNewPostModal
627
+ postType={ postType }
510
628
  onSave={ handleNewPage }
511
629
  onClose={ closeModal }
512
630
  />
@@ -519,11 +637,14 @@ export default function PagePages() {
519
637
  paginationInfo={ paginationInfo }
520
638
  fields={ fields }
521
639
  actions={ actions }
522
- data={ pages || EMPTY_ARRAY }
523
- isLoading={ isLoadingPages || isLoadingAuthors }
640
+ data={ records || EMPTY_ARRAY }
641
+ isLoading={ isLoadingMainEntities || isLoadingAuthors }
524
642
  view={ view }
525
643
  onChangeView={ onChangeView }
644
+ selection={ selection }
645
+ setSelection={ setSelection }
526
646
  onSelectionChange={ onSelectionChange }
647
+ getItemId={ getItemId }
527
648
  />
528
649
  </Page>
529
650
  );
@@ -0,0 +1,69 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
5
+ import { useSelect } from '@wordpress/data';
6
+ import { store as coreStore } from '@wordpress/core-data';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { unlock } from '../../lock-unlock';
12
+ import Editor from '../editor';
13
+ import SidebarNavigationScreen from '../sidebar-navigation-screen';
14
+ import SidebarNavigationScreenMain from '../sidebar-navigation-screen-main';
15
+ import DataViewsSidebarContent from '../sidebar-dataviews';
16
+ import PostsList from '../posts-app/posts-list';
17
+
18
+ const { useLocation } = unlock( routerPrivateApis );
19
+
20
+ export default function useLayoutAreas() {
21
+ const { params = {} } = useLocation();
22
+ const { postType, layout, canvas } = params;
23
+ const labels = useSelect(
24
+ ( select ) => {
25
+ return select( coreStore ).getPostType( postType )?.labels;
26
+ },
27
+ [ postType ]
28
+ );
29
+
30
+ // Posts list.
31
+ if ( [ 'post' ].includes( postType ) ) {
32
+ const isListLayout = layout === 'list' || ! layout;
33
+ return {
34
+ key: 'posts-list',
35
+ areas: {
36
+ sidebar: (
37
+ <SidebarNavigationScreen
38
+ title={ labels?.name }
39
+ isRoot
40
+ content={ <DataViewsSidebarContent /> }
41
+ />
42
+ ),
43
+ content: <PostsList postType={ postType } />,
44
+ preview: ( isListLayout || canvas === 'edit' ) && (
45
+ <Editor isPostsList />
46
+ ),
47
+ mobile:
48
+ canvas === 'edit' ? (
49
+ <Editor isPostsList />
50
+ ) : (
51
+ <PostsList postType={ postType } />
52
+ ),
53
+ },
54
+ widths: {
55
+ content: isListLayout ? 380 : undefined,
56
+ },
57
+ };
58
+ }
59
+
60
+ // Fallback shows the home page preview
61
+ return {
62
+ key: 'default',
63
+ areas: {
64
+ sidebar: <SidebarNavigationScreenMain />,
65
+ preview: <Editor isPostsList />,
66
+ mobile: canvas === 'edit' && <Editor isPostsList />,
67
+ },
68
+ };
69
+ }
@@ -1,16 +1,16 @@
1
- .edit-site-page-pages__featured-image {
1
+ .posts-list-page__featured-image {
2
2
  height: 100%;
3
3
  object-fit: cover;
4
4
  width: 100%;
5
5
  }
6
6
 
7
- .edit-site-page-pages__featured-image-wrapper {
7
+ .posts-list-page__featured-image-wrapper {
8
8
  height: 100%;
9
9
  width: 100%;
10
10
  border-radius: $grid-unit-05;
11
11
 
12
- &.is-layout-table:not(:has(.page-pages-preview-field__button)),
13
- &.is-layout-table .page-pages-preview-field__button {
12
+ &.is-layout-table:not(:has(.posts-list-page-preview-field__button)),
13
+ &.is-layout-table .posts-list-page-preview-field__button {
14
14
  width: $grid-unit-40;
15
15
  height: $grid-unit-40;
16
16
  display: block;
@@ -33,7 +33,7 @@
33
33
  }
34
34
  }
35
35
 
36
- .page-pages-preview-field__button {
36
+ .posts-list-page-preview-field__button {
37
37
  box-shadow: none;
38
38
  border: none;
39
39
  padding: 0;
@@ -43,7 +43,7 @@
43
43
  overflow: hidden;
44
44
  height: 100%;
45
45
  width: 100%;
46
- border-radius: 3px 3px 0 0;
46
+ border-radius: $grid-unit-05;
47
47
 
48
48
  &:focus-visible {
49
49
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
@@ -52,12 +52,19 @@
52
52
  }
53
53
  }
54
54
 
55
- .edit-site-page-pages-title span {
55
+ .dataviews-view-grid__card.is-selected {
56
+ .posts-list-page-preview-field__button::after {
57
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
58
+ background: rgba(var(--wp-admin-theme-color--rgb), 0.04);
59
+ }
60
+ }
61
+
62
+ .posts-list-page-title span {
56
63
  text-overflow: ellipsis;
57
64
  overflow: hidden;
58
65
  }
59
66
 
60
- .edit-site-page-pages__title-badge {
67
+ .posts-list-page-title-badge {
61
68
  background: $gray-100;
62
69
  color: $gray-700;
63
70
  padding: 0 $grid-unit-05;
@@ -66,3 +73,10 @@
66
73
  font-weight: 400;
67
74
  flex-shrink: 0;
68
75
  }
76
+
77
+ .posts-list-page-post-author-field__icon-container {
78
+ height: $grid-unit-30;
79
+ svg {
80
+ fill: currentColor;
81
+ }
82
+ }
@@ -25,6 +25,7 @@ const {
25
25
  ExperimentalBlockEditorProvider,
26
26
  GlobalStylesContext,
27
27
  useGlobalStylesOutputWithConfig,
28
+ __unstableBlockStyleVariationOverridesWithConfig,
28
29
  } = unlock( blockEditorPrivateApis );
29
30
  const { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );
30
31
 
@@ -74,7 +75,6 @@ function Revisions( { userConfig, blocks } ) {
74
75
  name="revisions"
75
76
  tabIndex={ 0 }
76
77
  >
77
- <EditorStyles styles={ editorStyles } />
78
78
  <style>
79
79
  {
80
80
  // Forming a "block formatting context" to prevent margin collapsing.
@@ -88,6 +88,14 @@ function Revisions( { userConfig, blocks } ) {
88
88
  settings={ settings }
89
89
  >
90
90
  <BlockList renderAppender={ false } />
91
+ { /*
92
+ * Styles are printed inside the block editor provider,
93
+ * so they can access any registered style overrides.
94
+ */ }
95
+ <EditorStyles styles={ editorStyles } />
96
+ <__unstableBlockStyleVariationOverridesWithConfig
97
+ config={ mergedConfig }
98
+ />
91
99
  </ExperimentalBlockEditorProvider>
92
100
  </Disabled>
93
101
  </Iframe>
@@ -155,7 +155,7 @@ export default function SavePanel() {
155
155
  onClick={ () => setIsSaveViewOpened( true ) }
156
156
  aria-haspopup="dialog"
157
157
  disabled={ disabled }
158
- __experimentalIsFocusable
158
+ accessibleWhenDisabled
159
159
  >
160
160
  { __( 'Open save panel' ) }
161
161
  </Button>
@@ -1,6 +1,12 @@
1
1
  .edit-site-sidebar__content {
2
2
  flex-grow: 1;
3
3
  overflow-y: auto;
4
+ // Prevents horizontal overflow while animating screen transitions
5
+ overflow-x: hidden;
6
+ // Mark this section of the DOM as isolated, providing performance benefits
7
+ // by limiting calculations of layout, style and paint to a DOM subtree rather
8
+ // than the entire page.
9
+ contain: content;
4
10
  }
5
11
 
6
12
  @keyframes local--slide-from-right {
@@ -19,7 +19,7 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
19
19
  * Internal dependencies
20
20
  */
21
21
  import SidebarNavigationItem from '../sidebar-navigation-item';
22
- import { DEFAULT_VIEWS } from './default-views';
22
+ import { useDefaultViews } from './default-views';
23
23
  import { unlock } from '../../lock-unlock';
24
24
 
25
25
  const { useHistory } = unlock( routerPrivateApis );
@@ -29,6 +29,7 @@ function AddNewItemModalContent( { type, setIsAdding } ) {
29
29
  const { saveEntityRecord } = useDispatch( coreStore );
30
30
  const [ title, setTitle ] = useState( '' );
31
31
  const [ isSaving, setIsSaving ] = useState( false );
32
+ const DEFAULT_VIEWS = useDefaultViews( { postType: type } );
32
33
  return (
33
34
  <form
34
35
  onSubmit={ async ( event ) => {
@@ -61,6 +61,7 @@ function RenameItemModalContent( { dataviewId, currentTitle, setIsRenaming } ) {
61
61
  <HStack justify="right">
62
62
  <Button
63
63
  variant="tertiary"
64
+ __next40pxDefaultSize
64
65
  onClick={ () => {
65
66
  setIsRenaming( false );
66
67
  } }
@@ -71,8 +72,9 @@ function RenameItemModalContent( { dataviewId, currentTitle, setIsRenaming } ) {
71
72
  variant="primary"
72
73
  type="submit"
73
74
  aria-disabled={ ! title }
75
+ __next40pxDefaultSize
74
76
  >
75
- { __( 'Rename' ) }
77
+ { __( 'Save' ) }
76
78
  </Button>
77
79
  </HStack>
78
80
  </VStack>
@@ -160,10 +162,12 @@ function CustomDataViewItem( { dataviewId, isActive } ) {
160
162
  />
161
163
  { isRenaming && (
162
164
  <Modal
163
- title={ __( 'Rename view' ) }
165
+ title={ __( 'Rename' ) }
164
166
  onRequestClose={ () => {
165
167
  setIsRenaming( false );
166
168
  } }
169
+ focusOnMount="firstContentElement"
170
+ size="small"
167
171
  >
168
172
  <RenameItemModalContent
169
173
  dataviewId={ dataviewId }