@wordpress/edit-site 5.26.0 → 5.27.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 (330) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +139 -36
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/editor-canvas-container/index.js +1 -1
  5. package/build/components/editor-canvas-container/index.js.map +1 -1
  6. package/build/components/global-styles/font-families.js +3 -2
  7. package/build/components/global-styles/font-families.js.map +1 -1
  8. package/build/components/global-styles/font-family-item.js +3 -4
  9. package/build/components/global-styles/font-family-item.js.map +1 -1
  10. package/build/components/global-styles/font-library-modal/context.js +80 -41
  11. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/font-collection.js +49 -22
  13. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  15. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/index.js +4 -4
  17. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  19. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/library-font-card.js +1 -1
  21. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  23. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/local-fonts.js +13 -4
  25. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/resolvers.js +49 -20
  27. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  29. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
  31. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  33. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +4 -1
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/layout/hooks.js +6 -5
  37. package/build/components/layout/hooks.js.map +1 -1
  38. package/build/components/layout/index.js +19 -28
  39. package/build/components/layout/index.js.map +1 -1
  40. package/build/components/layout/router.js +135 -0
  41. package/build/components/layout/router.js.map +1 -0
  42. package/build/components/page-pages/index.js +92 -69
  43. package/build/components/page-pages/index.js.map +1 -1
  44. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
  45. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  46. package/build/components/page-patterns/index.js +295 -15
  47. package/build/components/page-patterns/index.js.map +1 -1
  48. package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
  49. package/build/components/page-templates-template-parts/actions.js.map +1 -0
  50. package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  51. package/build/components/page-templates-template-parts/index.js +395 -0
  52. package/build/components/page-templates-template-parts/index.js.map +1 -0
  53. package/build/components/preferences-modal/index.js +9 -134
  54. package/build/components/preferences-modal/index.js.map +1 -1
  55. package/build/components/revisions/index.js +1 -1
  56. package/build/components/revisions/index.js.map +1 -1
  57. package/build/components/save-button/index.js +4 -2
  58. package/build/components/save-button/index.js.map +1 -1
  59. package/build/components/save-panel/index.js +6 -5
  60. package/build/components/save-panel/index.js.map +1 -1
  61. package/build/components/sidebar/index.js +3 -1
  62. package/build/components/sidebar/index.js.map +1 -1
  63. package/build/components/sidebar-dataviews/dataview-item.js +3 -1
  64. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  65. package/build/components/sidebar-dataviews/default-views.js +4 -2
  66. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  67. package/build/components/sidebar-dataviews/index.js +2 -2
  68. package/build/components/sidebar-dataviews/index.js.map +1 -1
  69. package/build/components/sidebar-navigation-screen/index.js +8 -7
  70. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  71. package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
  72. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
  74. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-templates/index.js +63 -8
  76. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
  78. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  80. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  81. package/build/components/site-hub/index.js +3 -1
  82. package/build/components/site-hub/index.js.map +1 -1
  83. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
  84. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  86. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  87. package/build/hooks/commands/use-edit-mode-commands.js +33 -5
  88. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  89. package/build/hooks/push-changes-to-global-styles/index.js +13 -6
  90. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  91. package/build/hooks/template-part-edit.js +7 -6
  92. package/build/hooks/template-part-edit.js.map +1 -1
  93. package/build/index.js +1 -1
  94. package/build/index.js.map +1 -1
  95. package/build/store/actions.js +11 -29
  96. package/build/store/actions.js.map +1 -1
  97. package/build/store/private-actions.js +85 -1
  98. package/build/store/private-actions.js.map +1 -1
  99. package/build/store/selectors.js +2 -2
  100. package/build/store/selectors.js.map +1 -1
  101. package/build/utils/get-is-list-page.js +1 -1
  102. package/build/utils/get-is-list-page.js.map +1 -1
  103. package/build/utils/use-actual-current-theme.js +32 -0
  104. package/build/utils/use-actual-current-theme.js.map +1 -0
  105. package/build-module/components/actions/index.js +139 -36
  106. package/build-module/components/actions/index.js.map +1 -1
  107. package/build-module/components/editor-canvas-container/index.js +1 -1
  108. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  109. package/build-module/components/global-styles/font-families.js +3 -2
  110. package/build-module/components/global-styles/font-families.js.map +1 -1
  111. package/build-module/components/global-styles/font-family-item.js +4 -5
  112. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  113. package/build-module/components/global-styles/font-library-modal/context.js +82 -42
  114. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  115. package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
  116. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  117. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  118. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  119. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  120. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  121. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  122. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  123. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  124. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  125. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  126. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  127. package/build-module/components/global-styles/font-library-modal/local-fonts.js +13 -4
  128. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  129. package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
  130. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  131. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  132. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  133. package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
  134. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  135. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  136. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  137. package/build-module/components/global-styles/screen-typography.js +4 -1
  138. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  139. package/build-module/components/layout/hooks.js +6 -5
  140. package/build-module/components/layout/hooks.js.map +1 -1
  141. package/build-module/components/layout/index.js +19 -28
  142. package/build-module/components/layout/index.js.map +1 -1
  143. package/build-module/components/layout/router.js +127 -0
  144. package/build-module/components/layout/router.js.map +1 -0
  145. package/build-module/components/page-pages/index.js +91 -70
  146. package/build-module/components/page-pages/index.js.map +1 -1
  147. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
  148. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  149. package/build-module/components/page-patterns/index.js +296 -16
  150. package/build-module/components/page-patterns/index.js.map +1 -1
  151. package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
  152. package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
  153. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  154. package/build-module/components/page-templates-template-parts/index.js +385 -0
  155. package/build-module/components/page-templates-template-parts/index.js.map +1 -0
  156. package/build-module/components/preferences-modal/index.js +12 -136
  157. package/build-module/components/preferences-modal/index.js.map +1 -1
  158. package/build-module/components/revisions/index.js +1 -1
  159. package/build-module/components/revisions/index.js.map +1 -1
  160. package/build-module/components/save-button/index.js +4 -2
  161. package/build-module/components/save-button/index.js.map +1 -1
  162. package/build-module/components/save-panel/index.js +7 -6
  163. package/build-module/components/save-panel/index.js.map +1 -1
  164. package/build-module/components/sidebar/index.js +3 -1
  165. package/build-module/components/sidebar/index.js.map +1 -1
  166. package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
  167. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  168. package/build-module/components/sidebar-dataviews/default-views.js +4 -2
  169. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  170. package/build-module/components/sidebar-dataviews/index.js +2 -2
  171. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  172. package/build-module/components/sidebar-navigation-screen/index.js +8 -7
  173. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  174. package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
  175. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  176. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
  177. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-templates/index.js +64 -9
  179. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
  181. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  182. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  183. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  184. package/build-module/components/site-hub/index.js +3 -1
  185. package/build-module/components/site-hub/index.js.map +1 -1
  186. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
  187. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  188. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  189. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  190. package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
  191. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  192. package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
  193. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  194. package/build-module/hooks/template-part-edit.js +7 -6
  195. package/build-module/hooks/template-part-edit.js.map +1 -1
  196. package/build-module/index.js +1 -1
  197. package/build-module/index.js.map +1 -1
  198. package/build-module/store/actions.js +13 -30
  199. package/build-module/store/actions.js.map +1 -1
  200. package/build-module/store/private-actions.js +83 -0
  201. package/build-module/store/private-actions.js.map +1 -1
  202. package/build-module/store/selectors.js +2 -2
  203. package/build-module/store/selectors.js.map +1 -1
  204. package/build-module/utils/get-is-list-page.js +1 -1
  205. package/build-module/utils/get-is-list-page.js.map +1 -1
  206. package/build-module/utils/use-actual-current-theme.js +24 -0
  207. package/build-module/utils/use-actual-current-theme.js.map +1 -0
  208. package/build-style/style-rtl.css +302 -188
  209. package/build-style/style.css +302 -188
  210. package/package.json +42 -42
  211. package/src/components/actions/index.js +236 -84
  212. package/src/components/editor-canvas-container/index.js +1 -1
  213. package/src/components/global-styles/font-families.js +14 -8
  214. package/src/components/global-styles/font-family-item.js +7 -4
  215. package/src/components/global-styles/font-library-modal/context.js +156 -50
  216. package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
  217. package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
  218. package/src/components/global-styles/font-library-modal/index.js +4 -4
  219. package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
  220. package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
  221. package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
  222. package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
  223. package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
  224. package/src/components/global-styles/font-library-modal/style.scss +1 -0
  225. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
  226. package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
  227. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
  228. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
  229. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
  230. package/src/components/global-styles/screen-typography.js +9 -3
  231. package/src/components/global-styles/style.scss +4 -0
  232. package/src/components/header-edit-mode/style.scss +15 -5
  233. package/src/components/layout/hooks.js +6 -5
  234. package/src/components/layout/index.js +80 -96
  235. package/src/components/layout/router.js +121 -0
  236. package/src/components/layout/style.scss +13 -16
  237. package/src/components/page/style.scss +1 -8
  238. package/src/components/page-pages/index.js +142 -148
  239. package/src/components/page-pages/style.scss +41 -2
  240. package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
  241. package/src/components/page-patterns/index.js +392 -14
  242. package/src/components/page-patterns/style.scss +36 -2
  243. package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
  244. package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
  245. package/src/components/page-templates-template-parts/style.scss +44 -0
  246. package/src/components/preferences-modal/index.js +8 -211
  247. package/src/components/revisions/index.js +1 -1
  248. package/src/components/save-button/index.js +7 -4
  249. package/src/components/save-panel/index.js +13 -12
  250. package/src/components/sidebar/index.js +4 -5
  251. package/src/components/sidebar-dataviews/dataview-item.js +2 -1
  252. package/src/components/sidebar-dataviews/default-views.js +4 -2
  253. package/src/components/sidebar-dataviews/index.js +8 -6
  254. package/src/components/sidebar-navigation-item/style.scss +1 -1
  255. package/src/components/sidebar-navigation-screen/index.js +19 -10
  256. package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
  257. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
  258. package/src/components/sidebar-navigation-screen-templates/index.js +85 -28
  259. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  260. package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
  261. package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
  262. package/src/components/site-hub/index.js +4 -1
  263. package/src/components/site-hub/style.scss +1 -12
  264. package/src/components/site-icon/style.scss +1 -1
  265. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
  266. package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
  267. package/src/hooks/commands/use-edit-mode-commands.js +50 -3
  268. package/src/hooks/push-changes-to-global-styles/index.js +29 -23
  269. package/src/hooks/template-part-edit.js +12 -12
  270. package/src/index.js +1 -1
  271. package/src/store/actions.js +17 -51
  272. package/src/store/private-actions.js +133 -0
  273. package/src/store/selectors.js +2 -4
  274. package/src/style.scss +2 -1
  275. package/src/utils/get-is-list-page.js +3 -2
  276. package/src/utils/use-actual-current-theme.js +27 -0
  277. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  278. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  279. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
  280. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  281. package/build/components/page-main/index.js +0 -44
  282. package/build/components/page-main/index.js.map +0 -1
  283. package/build/components/page-patterns/dataviews-patterns.js +0 -307
  284. package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
  285. package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
  286. package/build/components/page-template-parts/index.js +0 -81
  287. package/build/components/page-template-parts/index.js.map +0 -1
  288. package/build/components/page-templates/index.js +0 -352
  289. package/build/components/page-templates/index.js.map +0 -1
  290. package/build/components/page-templates/template-actions.js.map +0 -1
  291. package/build/components/post-preview/index.js +0 -29
  292. package/build/components/post-preview/index.js.map +0 -1
  293. package/build/components/preferences-modal/enable-feature.js +0 -36
  294. package/build/components/preferences-modal/enable-feature.js.map +0 -1
  295. package/build/components/preferences-modal/enable-panel-option.js +0 -33
  296. package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
  297. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
  298. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  299. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
  300. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  301. package/build-module/components/page-main/index.js +0 -36
  302. package/build-module/components/page-main/index.js.map +0 -1
  303. package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
  304. package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
  305. package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
  306. package/build-module/components/page-template-parts/index.js +0 -73
  307. package/build-module/components/page-template-parts/index.js.map +0 -1
  308. package/build-module/components/page-templates/index.js +0 -344
  309. package/build-module/components/page-templates/index.js.map +0 -1
  310. package/build-module/components/page-templates/template-actions.js.map +0 -1
  311. package/build-module/components/post-preview/index.js +0 -21
  312. package/build-module/components/post-preview/index.js.map +0 -1
  313. package/build-module/components/preferences-modal/enable-feature.js +0 -29
  314. package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
  315. package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
  316. package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
  317. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  318. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
  319. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
  320. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
  321. package/src/components/page-main/index.js +0 -38
  322. package/src/components/page-patterns/dataviews-patterns.js +0 -380
  323. package/src/components/page-template-parts/index.js +0 -99
  324. package/src/components/page-templates/style.scss +0 -13
  325. package/src/components/post-preview/index.js +0 -16
  326. package/src/components/preferences-modal/enable-feature.js +0 -31
  327. package/src/components/preferences-modal/enable-panel-option.js +0 -23
  328. /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  329. /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  330. /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
@@ -1,11 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- __experimentalView as View,
6
- __experimentalVStack as VStack,
7
- Button,
8
- } from '@wordpress/components';
4
+ import { Button } from '@wordpress/components';
9
5
  import { __ } from '@wordpress/i18n';
10
6
  import { useEntityRecords, store as coreStore } from '@wordpress/core-data';
11
7
  import { decodeEntities } from '@wordpress/html-entities';
@@ -14,13 +10,12 @@ import { dateI18n, getDate, getSettings } from '@wordpress/date';
14
10
  import { privateApis as routerPrivateApis } from '@wordpress/router';
15
11
  import { useSelect, useDispatch } from '@wordpress/data';
16
12
  import { DataViews } from '@wordpress/dataviews';
17
- import { ENTER, SPACE } from '@wordpress/keycodes';
18
13
 
19
14
  /**
20
15
  * Internal dependencies
21
16
  */
22
17
  import Page from '../page';
23
- import Link from '../routes/link';
18
+ import { default as Link, useLink } from '../routes/link';
24
19
  import {
25
20
  DEFAULT_VIEWS,
26
21
  DEFAULT_CONFIG_PER_VIEW_TYPE,
@@ -42,21 +37,35 @@ import {
42
37
  viewPostAction,
43
38
  useEditPostAction,
44
39
  } from '../actions';
45
- import PostPreview from '../post-preview';
46
40
  import AddNewPageModal from '../add-new-page';
47
41
  import Media from '../media';
48
42
  import { unlock } from '../../lock-unlock';
43
+
49
44
  const { useLocation, useHistory } = unlock( routerPrivateApis );
50
45
 
51
46
  const EMPTY_ARRAY = [];
47
+ const SUPPORTED_LAYOUTS = window?.__experimentalAdminViews
48
+ ? [ LAYOUT_GRID, LAYOUT_TABLE, LAYOUT_LIST ]
49
+ : [ LAYOUT_GRID, LAYOUT_TABLE ];
52
50
 
53
- function useView( type ) {
54
- const {
55
- params: { activeView = 'all', isCustom = 'false' },
56
- } = useLocation();
57
- const selectedDefaultView =
58
- isCustom === 'false' &&
59
- DEFAULT_VIEWS[ type ].find( ( { slug } ) => slug === activeView )?.view;
51
+ function useView( postType ) {
52
+ const { params } = useLocation();
53
+ const { activeView = 'all', isCustom = 'false', layout } = params;
54
+ const history = useHistory();
55
+ const selectedDefaultView = useMemo( () => {
56
+ const defaultView =
57
+ isCustom === 'false' &&
58
+ DEFAULT_VIEWS[ postType ].find(
59
+ ( { slug } ) => slug === activeView
60
+ )?.view;
61
+ if ( isCustom === 'false' && layout ) {
62
+ return {
63
+ ...defaultView,
64
+ type: layout,
65
+ };
66
+ }
67
+ return defaultView;
68
+ }, [ isCustom, activeView, layout, postType ] );
60
69
  const [ view, setView ] = useState( selectedDefaultView );
61
70
 
62
71
  useEffect( () => {
@@ -82,10 +91,21 @@ function useView( type ) {
82
91
  const { editEntityRecord } = useDispatch( coreStore );
83
92
 
84
93
  const customView = useMemo( () => {
85
- return (
86
- editedViewRecord?.content && JSON.parse( editedViewRecord?.content )
87
- );
94
+ const storedView =
95
+ editedViewRecord?.content &&
96
+ JSON.parse( editedViewRecord?.content );
97
+ if ( ! storedView ) {
98
+ return storedView;
99
+ }
100
+
101
+ return {
102
+ ...storedView,
103
+ layout: {
104
+ ...( DEFAULT_CONFIG_PER_VIEW_TYPE[ storedView?.type ] || {} ),
105
+ },
106
+ };
88
107
  }, [ editedViewRecord?.content ] );
108
+
89
109
  const setCustomView = useCallback(
90
110
  ( viewToSet ) => {
91
111
  editEntityRecord(
@@ -100,13 +120,26 @@ function useView( type ) {
100
120
  [ editEntityRecord, editedViewRecord?.id ]
101
121
  );
102
122
 
123
+ const setDefaultViewAndUpdateUrl = useCallback(
124
+ ( viewToSet ) => {
125
+ if ( viewToSet.type !== view?.type ) {
126
+ history.push( {
127
+ ...params,
128
+ layout: viewToSet.type,
129
+ } );
130
+ }
131
+ setView( viewToSet );
132
+ },
133
+ [ params, view?.type, history ]
134
+ );
135
+
103
136
  if ( isCustom === 'false' ) {
104
- return [ view, setView ];
137
+ return [ view, setDefaultViewAndUpdateUrl ];
105
138
  } else if ( isCustom === 'true' && customView ) {
106
139
  return [ customView, setCustomView ];
107
140
  }
108
141
  // Loading state where no the view was not found on custom views or default views.
109
- return [ DEFAULT_VIEWS[ type ][ 0 ].view, setView ];
142
+ return [ DEFAULT_VIEWS[ postType ][ 0 ].view, setDefaultViewAndUpdateUrl ];
110
143
  }
111
144
 
112
145
  // See https://github.com/WordPress/gutenberg/issues/55886
@@ -121,27 +154,59 @@ const STATUSES = [
121
154
  ];
122
155
  const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'.
123
156
 
157
+ function FeaturedImage( { item, viewType } ) {
158
+ const { onClick } = useLink( {
159
+ postId: item.id,
160
+ postType: item.type,
161
+ canvas: 'edit',
162
+ } );
163
+ const hasMedia = !! item.featured_media;
164
+ return (
165
+ <span
166
+ className={ {
167
+ 'edit-site-page-pages__media-wrapper':
168
+ viewType === LAYOUT_TABLE,
169
+ } }
170
+ >
171
+ <button
172
+ className="page-pages-preview-field__button"
173
+ type="button"
174
+ onClick={ onClick }
175
+ aria-label={ item.title?.rendered || __( '(no title)' ) }
176
+ >
177
+ { hasMedia && (
178
+ <Media
179
+ className="edit-site-page-pages__featured-image"
180
+ id={ item.featured_media }
181
+ size={
182
+ viewType === LAYOUT_GRID
183
+ ? [ 'large', 'full', 'medium', 'thumbnail' ]
184
+ : [ 'thumbnail', 'medium', 'large', 'full' ]
185
+ }
186
+ />
187
+ ) }
188
+ </button>
189
+ </span>
190
+ );
191
+ }
192
+
124
193
  export default function PagePages() {
125
194
  const postType = 'page';
126
195
  const [ view, setView ] = useView( postType );
127
- const [ pageId, setPageId ] = useState( null );
128
196
  const history = useHistory();
197
+ const { params } = useLocation();
198
+ const { isCustom = 'false' } = params;
129
199
 
130
200
  const onSelectionChange = useCallback(
131
- ( items ) => setPageId( items?.length === 1 ? items[ 0 ].id : null ),
132
- [ setPageId ]
133
- );
134
-
135
- const onDetailsChange = useCallback(
136
201
  ( items ) => {
137
- if ( !! postType && items?.length === 1 ) {
202
+ if ( isCustom === 'false' && view?.type === LAYOUT_LIST ) {
138
203
  history.push( {
139
- postId: items[ 0 ].id,
140
- postType,
204
+ ...params,
205
+ postId: items.length === 1 ? items[ 0 ].id : undefined,
141
206
  } );
142
207
  }
143
208
  },
144
- [ history, postType ]
209
+ [ history, params, view?.type, isCustom ]
145
210
  );
146
211
 
147
212
  const queryArgs = useMemo( () => {
@@ -205,18 +270,9 @@ export default function PagePages() {
205
270
  id: 'featured-image',
206
271
  header: __( 'Featured Image' ),
207
272
  getValue: ( { item } ) => item.featured_media,
208
- render: ( { item } ) =>
209
- !! item.featured_media ? (
210
- <Media
211
- className="edit-site-page-pages__featured-image"
212
- id={ item.featured_media }
213
- size={
214
- view.type === LAYOUT_GRID
215
- ? [ 'large', 'full', 'medium', 'thumbnail' ]
216
- : [ 'thumbnail', 'medium', 'large', 'full' ]
217
- }
218
- />
219
- ) : null,
273
+ render: ( { item } ) => (
274
+ <FeaturedImage item={ item } viewType={ view.type } />
275
+ ),
220
276
  enableSorting: false,
221
277
  },
222
278
  {
@@ -224,32 +280,22 @@ export default function PagePages() {
224
280
  id: 'title',
225
281
  getValue: ( { item } ) => item.title?.rendered,
226
282
  render: ( { item } ) => {
227
- return (
228
- <VStack spacing={ 1 }>
229
- <View
230
- as="span"
231
- className="dataviews-view-grid__title-field"
232
- >
233
- { [ LAYOUT_TABLE, LAYOUT_GRID ].includes(
234
- view.type
235
- ) ? (
236
- <Link
237
- params={ {
238
- postId: item.id,
239
- postType: item.type,
240
- canvas: 'edit',
241
- } }
242
- >
243
- { decodeEntities(
244
- item.title?.rendered
245
- ) || __( '(no title)' ) }
246
- </Link>
247
- ) : (
248
- decodeEntities( item.title?.rendered ) ||
249
- __( '(no title)' )
250
- ) }
251
- </View>
252
- </VStack>
283
+ return [ LAYOUT_TABLE, LAYOUT_GRID ].includes(
284
+ view.type
285
+ ) ? (
286
+ <Link
287
+ params={ {
288
+ postId: item.id,
289
+ postType: item.type,
290
+ canvas: 'edit',
291
+ } }
292
+ >
293
+ { decodeEntities( item.title?.rendered ) ||
294
+ __( '(no title)' ) }
295
+ </Link>
296
+ ) : (
297
+ decodeEntities( item.title?.rendered ) ||
298
+ __( '(no title)' )
253
299
  );
254
300
  },
255
301
  maxWidth: 400,
@@ -350,85 +396,33 @@ export default function PagePages() {
350
396
 
351
397
  // TODO: we need to handle properly `data={ data || EMPTY_ARRAY }` for when `isLoading`.
352
398
  return (
353
- <>
354
- <Page
355
- className={
356
- view.type === LAYOUT_LIST
357
- ? 'edit-site-page-pages-list-view'
358
- : null
359
- }
360
- title={ __( 'Pages' ) }
361
- actions={
362
- <>
363
- <Button variant="primary" onClick={ openModal }>
364
- { __( 'Add new page' ) }
365
- </Button>
366
- { showAddPageModal && (
367
- <AddNewPageModal
368
- onSave={ handleNewPage }
369
- onClose={ closeModal }
370
- />
371
- ) }
372
- </>
373
- }
374
- >
375
- <DataViews
376
- paginationInfo={ paginationInfo }
377
- fields={ fields }
378
- actions={ actions }
379
- data={ pages || EMPTY_ARRAY }
380
- isLoading={ isLoadingPages || isLoadingAuthors }
381
- view={ view }
382
- onChangeView={ onChangeView }
383
- onSelectionChange={ onSelectionChange }
384
- onDetailsChange={ onDetailsChange }
385
- />
386
- </Page>
387
- { view.type === LAYOUT_LIST && (
388
- <Page>
389
- <div
390
- className="edit-site-page-pages-preview"
391
- tabIndex={ 0 }
392
- role="button"
393
- onKeyDown={ ( event ) => {
394
- const { keyCode } = event;
395
- if ( keyCode === ENTER || keyCode === SPACE ) {
396
- history.push( {
397
- postId: pageId,
398
- postType,
399
- canvas: 'edit',
400
- } );
401
- }
402
- } }
403
- onClick={ () =>
404
- history.push( {
405
- postId: pageId,
406
- postType,
407
- canvas: 'edit',
408
- } )
409
- }
410
- >
411
- { pageId !== null ? (
412
- <PostPreview
413
- postId={ pageId }
414
- postType={ postType }
415
- />
416
- ) : (
417
- <div
418
- style={ {
419
- display: 'flex',
420
- flexDirection: 'column',
421
- justifyContent: 'center',
422
- textAlign: 'center',
423
- height: '100%',
424
- } }
425
- >
426
- <p>{ __( 'Select a page to preview' ) }</p>
427
- </div>
428
- ) }
429
- </div>
430
- </Page>
431
- ) }
432
- </>
399
+ <Page
400
+ title={ __( 'Pages' ) }
401
+ actions={
402
+ <>
403
+ <Button variant="primary" onClick={ openModal }>
404
+ { __( 'Add new page' ) }
405
+ </Button>
406
+ { showAddPageModal && (
407
+ <AddNewPageModal
408
+ onSave={ handleNewPage }
409
+ onClose={ closeModal }
410
+ />
411
+ ) }
412
+ </>
413
+ }
414
+ >
415
+ <DataViews
416
+ paginationInfo={ paginationInfo }
417
+ fields={ fields }
418
+ actions={ actions }
419
+ data={ pages || EMPTY_ARRAY }
420
+ isLoading={ isLoadingPages || isLoadingAuthors }
421
+ view={ view }
422
+ onChangeView={ onChangeView }
423
+ onSelectionChange={ onSelectionChange }
424
+ supportedLayouts={ SUPPORTED_LAYOUTS }
425
+ />
426
+ </Page>
433
427
  );
434
428
  }
@@ -1,6 +1,45 @@
1
- .edit-site-page-pages__featured-image {
2
- border-radius: $grid-unit-05;
1
+ .edit-site-page-pages__media-wrapper {
3
2
  width: $grid-unit-50;
4
3
  height: $grid-unit-50;
5
4
  display: block;
5
+ border-radius: $grid-unit-05;
6
+ position: relative;
7
+ background-color: $gray-100;
8
+ overflow: hidden;
9
+
10
+ .edit-site-page-pages__featured-image {
11
+ height: 100%;
12
+ object-fit: cover;
13
+ width: 100%;
14
+ }
15
+
16
+ &::after {
17
+ border-radius: 4px;
18
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
19
+ content: "";
20
+ height: 100%;
21
+ left: 0;
22
+ position: absolute;
23
+ top: 0;
24
+ width: 100%;
25
+ }
26
+ }
27
+
28
+ .page-pages-preview-field__button {
29
+ box-shadow: none;
30
+ border: none;
31
+ padding: 0;
32
+ background-color: unset;
33
+ box-sizing: border-box;
34
+ cursor: pointer;
35
+ overflow: hidden;
36
+ height: 100%;
37
+ width: 100%;
38
+ border-radius: 3px 3px 0 0;
39
+
40
+ &:focus-visible {
41
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
42
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
43
+ outline: 2px solid transparent;
44
+ }
6
45
  }
@@ -45,7 +45,7 @@ export const exportJSONaction = {
45
45
  id: 'export-pattern',
46
46
  label: __( 'Export as JSON' ),
47
47
  isEligible: ( item ) => item.type === PATTERN_TYPES.user,
48
- callback: ( item ) => {
48
+ callback: ( [ item ] ) => {
49
49
  const json = {
50
50
  __file: item.type,
51
51
  title: item.title || item.name,
@@ -71,7 +71,8 @@ export const renameAction = {
71
71
  const hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;
72
72
  return isCustomPattern && ! hasThemeFile;
73
73
  },
74
- RenderModal: ( { item, closeModal } ) => {
74
+ RenderModal: ( { items, closeModal } ) => {
75
+ const [ item ] = items;
75
76
  const [ title, setTitle ] = useState( () => item.title );
76
77
  const { editEntityRecord, saveEditedEntityRecord } =
77
78
  useDispatch( coreStore );
@@ -160,7 +161,8 @@ export const deleteAction = {
160
161
  return canDeleteOrReset( item ) && ! hasThemeFile;
161
162
  },
162
163
  hideModalHeader: true,
163
- RenderModal: ( { item, closeModal } ) => {
164
+ RenderModal: ( { items, closeModal } ) => {
165
+ const [ item ] = items;
164
166
  const { __experimentalDeleteReusableBlock } =
165
167
  useDispatch( reusableBlocksStore );
166
168
  const { createErrorNotice, createSuccessNotice } =
@@ -224,7 +226,8 @@ export const resetAction = {
224
226
  return canDeleteOrReset( item ) && hasThemeFile;
225
227
  },
226
228
  hideModalHeader: true,
227
- RenderModal: ( { item, closeModal } ) => {
229
+ RenderModal: ( { items, closeModal } ) => {
230
+ const [ item ] = items;
228
231
  const { removeTemplate } = useDispatch( editSiteStore );
229
232
  return (
230
233
  <VStack spacing="5">
@@ -254,7 +257,8 @@ export const duplicatePatternAction = {
254
257
  label: _x( 'Duplicate', 'action label' ),
255
258
  isEligible: ( item ) => item.type !== TEMPLATE_PART_POST_TYPE,
256
259
  modalHeader: _x( 'Duplicate pattern', 'action label' ),
257
- RenderModal: ( { item, closeModal } ) => {
260
+ RenderModal: ( { items, closeModal } ) => {
261
+ const [ item ] = items;
258
262
  const { categoryId = PATTERN_DEFAULT_CATEGORY } = getQueryArgs(
259
263
  window.location.href
260
264
  );
@@ -288,7 +292,8 @@ export const duplicateTemplatePartAction = {
288
292
  label: _x( 'Duplicate', 'action label' ),
289
293
  isEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,
290
294
  modalHeader: _x( 'Duplicate template part', 'action label' ),
291
- RenderModal: ( { item, closeModal } ) => {
295
+ RenderModal: ( { items, closeModal } ) => {
296
+ const [ item ] = items;
292
297
  const { createSuccessNotice } = useDispatch( noticesStore );
293
298
  const { categoryId = PATTERN_DEFAULT_CATEGORY } = getQueryArgs(
294
299
  window.location.href