@wordpress/edit-site 5.30.0 → 5.32.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 (470) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-editor/editor-canvas.js +24 -4
  3. package/build/components/block-editor/editor-canvas.js.map +1 -1
  4. package/build/components/block-editor/site-editor-canvas.js +15 -4
  5. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +12 -3
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +1 -2
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/background-panel.js +38 -0
  13. package/build/components/global-styles/background-panel.js.map +1 -0
  14. package/build/components/global-styles/color-palette-panel.js +0 -9
  15. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  16. package/build/components/global-styles/font-families.js +1 -1
  17. package/build/components/global-styles/font-families.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/context.js +53 -17
  19. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/font-collection.js +4 -3
  21. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +3 -2
  23. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  25. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/upload-fonts.js +44 -10
  27. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/utils/index.js +22 -4
  29. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +3 -0
  31. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  32. package/build/components/global-styles/header.js +1 -1
  33. package/build/components/global-styles/header.js.map +1 -1
  34. package/build/components/global-styles/hooks.js +50 -1
  35. package/build/components/global-styles/hooks.js.map +1 -1
  36. package/build/components/global-styles/palette.js +3 -1
  37. package/build/components/global-styles/palette.js.map +1 -1
  38. package/build/components/global-styles/preview-colors.js +2 -2
  39. package/build/components/global-styles/preview-colors.js.map +1 -1
  40. package/build/components/global-styles/preview-iframe.js +0 -1
  41. package/build/components/global-styles/preview-iframe.js.map +1 -1
  42. package/build/components/global-styles/preview-styles.js +2 -2
  43. package/build/components/global-styles/preview-styles.js.map +1 -1
  44. package/build/components/global-styles/root-menu.js +8 -2
  45. package/build/components/global-styles/root-menu.js.map +1 -1
  46. package/build/components/global-styles/screen-background.js +34 -0
  47. package/build/components/global-styles/screen-background.js.map +1 -0
  48. package/build/components/global-styles/screen-color-palette.js +2 -2
  49. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  50. package/build/components/global-styles/screen-colors.js +5 -10
  51. package/build/components/global-styles/screen-colors.js.map +1 -1
  52. package/build/components/global-styles/screen-style-variations.js +3 -37
  53. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  54. package/build/components/global-styles/screen-typography.js +6 -11
  55. package/build/components/global-styles/screen-typography.js.map +1 -1
  56. package/build/components/global-styles/style-variations-container.js +5 -2
  57. package/build/components/global-styles/style-variations-container.js.map +1 -1
  58. package/build/components/global-styles/typography-elements.js +3 -1
  59. package/build/components/global-styles/typography-elements.js.map +1 -1
  60. package/build/components/global-styles/{preview-typography.js → typography-example.js} +4 -2
  61. package/build/components/global-styles/typography-example.js.map +1 -0
  62. package/build/components/global-styles/typography-preview.js +3 -1
  63. package/build/components/global-styles/typography-preview.js.map +1 -1
  64. package/build/components/global-styles/ui.js +4 -1
  65. package/build/components/global-styles/ui.js.map +1 -1
  66. package/build/components/global-styles/utils.js +1 -1
  67. package/build/components/global-styles/utils.js.map +1 -1
  68. package/build/components/global-styles/variations/variations-color.js +13 -7
  69. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  70. package/build/components/global-styles/variations/variations-typography.js +34 -37
  71. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  72. package/build/components/header-edit-mode/index.js +2 -1
  73. package/build/components/header-edit-mode/index.js.map +1 -1
  74. package/build/components/keyboard-shortcut-help-modal/config.js +6 -0
  75. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  76. package/build/components/keyboard-shortcut-help-modal/index.js +3 -0
  77. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  78. package/build/components/keyboard-shortcuts/global.js +17 -3
  79. package/build/components/keyboard-shortcuts/global.js.map +1 -1
  80. package/build/components/layout/animation.js +129 -0
  81. package/build/components/layout/animation.js.map +1 -0
  82. package/build/components/layout/index.js +9 -17
  83. package/build/components/layout/index.js.map +1 -1
  84. package/build/components/layout/router.js +22 -22
  85. package/build/components/layout/router.js.map +1 -1
  86. package/build/components/page-pages/index.js +24 -27
  87. package/build/components/page-pages/index.js.map +1 -1
  88. package/build/components/page-patterns/delete-category-menu-item.js +6 -1
  89. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -1
  90. package/build/components/page-patterns/index.js +19 -32
  91. package/build/components/page-patterns/index.js.map +1 -1
  92. package/build/components/page-patterns/search-items.js +16 -58
  93. package/build/components/page-patterns/search-items.js.map +1 -1
  94. package/build/components/page-patterns/use-patterns.js +9 -9
  95. package/build/components/page-patterns/use-patterns.js.map +1 -1
  96. package/build/components/page-templates-template-parts/actions.js +54 -41
  97. package/build/components/page-templates-template-parts/actions.js.map +1 -1
  98. package/build/components/page-templates-template-parts/index.js +31 -69
  99. package/build/components/page-templates-template-parts/index.js.map +1 -1
  100. package/build/components/plugin-template-setting-panel/index.js +12 -1
  101. package/build/components/plugin-template-setting-panel/index.js.map +1 -1
  102. package/build/components/save-button/index.js +45 -16
  103. package/build/components/save-button/index.js.map +1 -1
  104. package/build/components/save-hub/index.js +8 -112
  105. package/build/components/save-hub/index.js.map +1 -1
  106. package/build/components/save-panel/index.js +14 -9
  107. package/build/components/save-panel/index.js.map +1 -1
  108. package/build/components/sidebar/index.js +3 -8
  109. package/build/components/sidebar/index.js.map +1 -1
  110. package/build/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  111. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  112. package/build/components/sidebar-dataviews/dataview-item.js +2 -2
  113. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  114. package/build/components/sidebar-dataviews/default-views.js +3 -3
  115. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  116. package/build/components/sidebar-dataviews/index.js +5 -4
  117. package/build/components/sidebar-dataviews/index.js.map +1 -1
  118. package/build/components/sidebar-edit-mode/index.js +1 -2
  119. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  120. package/build/components/sidebar-edit-mode/page-panels/index.js +7 -17
  121. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  122. package/build/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  123. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  124. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +3 -1
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/template-panel/index.js +32 -18
  127. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  128. package/build/components/sidebar-navigation-screen-details-footer/index.js +5 -1
  129. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-global-styles/index.js +18 -1
  131. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +4 -5
  133. package/build/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  134. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  135. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  137. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-patterns/index.js +1 -5
  139. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-template/index.js +5 -1
  141. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  143. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  144. package/build/components/style-book/index.js +1 -1
  145. package/build/components/style-book/index.js.map +1 -1
  146. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
  147. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  148. package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  149. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  150. package/build/components/template-actions/index.js +44 -27
  151. package/build/components/template-actions/index.js.map +1 -1
  152. package/build/components/welcome-guide/editor.js +11 -2
  153. package/build/components/welcome-guide/editor.js.map +1 -1
  154. package/build/hooks/index.js +0 -1
  155. package/build/hooks/index.js.map +1 -1
  156. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +15 -2
  157. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  158. package/build/store/selectors.js +1 -9
  159. package/build/store/selectors.js.map +1 -1
  160. package/build/utils/constants.js +5 -3
  161. package/build/utils/constants.js.map +1 -1
  162. package/build/utils/get-is-list-page.js +1 -1
  163. package/build/utils/get-is-list-page.js.map +1 -1
  164. package/build/utils/math.js +98 -0
  165. package/build/utils/math.js.map +1 -0
  166. package/build-module/components/block-editor/editor-canvas.js +24 -4
  167. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  168. package/build-module/components/block-editor/site-editor-canvas.js +15 -4
  169. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  170. package/build-module/components/block-editor/use-site-editor-settings.js +1 -1
  171. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  172. package/build-module/components/editor/index.js +13 -4
  173. package/build-module/components/editor/index.js.map +1 -1
  174. package/build-module/components/editor-canvas-container/index.js +1 -2
  175. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  176. package/build-module/components/global-styles/background-panel.js +31 -0
  177. package/build-module/components/global-styles/background-panel.js.map +1 -0
  178. package/build-module/components/global-styles/color-palette-panel.js +0 -8
  179. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  180. package/build-module/components/global-styles/font-families.js +1 -1
  181. package/build-module/components/global-styles/font-families.js.map +1 -1
  182. package/build-module/components/global-styles/font-library-modal/context.js +54 -18
  183. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  184. package/build-module/components/global-styles/font-library-modal/font-collection.js +4 -3
  185. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  186. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +4 -3
  187. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  188. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  189. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  190. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +44 -10
  191. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  192. package/build-module/components/global-styles/font-library-modal/utils/index.js +22 -4
  193. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  194. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +3 -0
  195. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  196. package/build-module/components/global-styles/header.js +1 -1
  197. package/build-module/components/global-styles/header.js.map +1 -1
  198. package/build-module/components/global-styles/hooks.js +48 -1
  199. package/build-module/components/global-styles/hooks.js.map +1 -1
  200. package/build-module/components/global-styles/palette.js +3 -1
  201. package/build-module/components/global-styles/palette.js.map +1 -1
  202. package/build-module/components/global-styles/preview-colors.js +2 -2
  203. package/build-module/components/global-styles/preview-colors.js.map +1 -1
  204. package/build-module/components/global-styles/preview-iframe.js +0 -1
  205. package/build-module/components/global-styles/preview-iframe.js.map +1 -1
  206. package/build-module/components/global-styles/preview-styles.js +2 -2
  207. package/build-module/components/global-styles/preview-styles.js.map +1 -1
  208. package/build-module/components/global-styles/root-menu.js +9 -3
  209. package/build-module/components/global-styles/root-menu.js.map +1 -1
  210. package/build-module/components/global-styles/screen-background.js +26 -0
  211. package/build-module/components/global-styles/screen-background.js.map +1 -0
  212. package/build-module/components/global-styles/screen-color-palette.js +2 -2
  213. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  214. package/build-module/components/global-styles/screen-colors.js +5 -10
  215. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  216. package/build-module/components/global-styles/screen-style-variations.js +4 -38
  217. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  218. package/build-module/components/global-styles/screen-typography.js +6 -11
  219. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  220. package/build-module/components/global-styles/style-variations-container.js +5 -2
  221. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  222. package/build-module/components/global-styles/typography-elements.js +3 -1
  223. package/build-module/components/global-styles/typography-elements.js.map +1 -1
  224. package/build-module/components/global-styles/{preview-typography.js → typography-example.js} +4 -2
  225. package/build-module/components/global-styles/typography-example.js.map +1 -0
  226. package/build-module/components/global-styles/typography-preview.js +3 -1
  227. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  228. package/build-module/components/global-styles/ui.js +4 -1
  229. package/build-module/components/global-styles/ui.js.map +1 -1
  230. package/build-module/components/global-styles/utils.js +1 -1
  231. package/build-module/components/global-styles/utils.js.map +1 -1
  232. package/build-module/components/global-styles/variations/variations-color.js +13 -7
  233. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  234. package/build-module/components/global-styles/variations/variations-typography.js +35 -38
  235. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  236. package/build-module/components/header-edit-mode/index.js +2 -1
  237. package/build-module/components/header-edit-mode/index.js.map +1 -1
  238. package/build-module/components/keyboard-shortcut-help-modal/config.js +6 -0
  239. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  240. package/build-module/components/keyboard-shortcut-help-modal/index.js +3 -0
  241. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  242. package/build-module/components/keyboard-shortcuts/global.js +17 -3
  243. package/build-module/components/keyboard-shortcuts/global.js.map +1 -1
  244. package/build-module/components/layout/animation.js +122 -0
  245. package/build-module/components/layout/animation.js.map +1 -0
  246. package/build-module/components/layout/index.js +9 -17
  247. package/build-module/components/layout/index.js.map +1 -1
  248. package/build-module/components/layout/router.js +22 -22
  249. package/build-module/components/layout/router.js.map +1 -1
  250. package/build-module/components/page-pages/index.js +25 -28
  251. package/build-module/components/page-pages/index.js.map +1 -1
  252. package/build-module/components/page-patterns/delete-category-menu-item.js +6 -1
  253. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -1
  254. package/build-module/components/page-patterns/index.js +21 -34
  255. package/build-module/components/page-patterns/index.js.map +1 -1
  256. package/build-module/components/page-patterns/search-items.js +14 -55
  257. package/build-module/components/page-patterns/search-items.js.map +1 -1
  258. package/build-module/components/page-patterns/use-patterns.js +9 -9
  259. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  260. package/build-module/components/page-templates-template-parts/actions.js +54 -40
  261. package/build-module/components/page-templates-template-parts/actions.js.map +1 -1
  262. package/build-module/components/page-templates-template-parts/index.js +34 -72
  263. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  264. package/build-module/components/plugin-template-setting-panel/index.js +12 -1
  265. package/build-module/components/plugin-template-setting-panel/index.js.map +1 -1
  266. package/build-module/components/save-button/index.js +46 -17
  267. package/build-module/components/save-button/index.js.map +1 -1
  268. package/build-module/components/save-hub/index.js +10 -114
  269. package/build-module/components/save-hub/index.js.map +1 -1
  270. package/build-module/components/save-panel/index.js +14 -9
  271. package/build-module/components/save-panel/index.js.map +1 -1
  272. package/build-module/components/sidebar/index.js +3 -8
  273. package/build-module/components/sidebar/index.js.map +1 -1
  274. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  275. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  276. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -2
  277. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  278. package/build-module/components/sidebar-dataviews/default-views.js +4 -4
  279. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  280. package/build-module/components/sidebar-dataviews/index.js +5 -4
  281. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  282. package/build-module/components/sidebar-edit-mode/index.js +1 -2
  283. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  284. package/build-module/components/sidebar-edit-mode/page-panels/index.js +10 -20
  285. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  286. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  287. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  288. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +4 -2
  289. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  290. package/build-module/components/sidebar-edit-mode/template-panel/index.js +33 -19
  291. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  292. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +5 -1
  293. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  294. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +19 -2
  295. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  296. package/build-module/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  297. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  298. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  299. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  300. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  301. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  302. package/build-module/components/sidebar-navigation-screen-patterns/index.js +1 -5
  303. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  304. package/build-module/components/sidebar-navigation-screen-template/index.js +5 -1
  305. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  306. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  307. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  308. package/build-module/components/style-book/index.js +1 -1
  309. package/build-module/components/style-book/index.js.map +1 -1
  310. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
  311. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  312. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  313. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  314. package/build-module/components/template-actions/index.js +44 -27
  315. package/build-module/components/template-actions/index.js.map +1 -1
  316. package/build-module/components/welcome-guide/editor.js +11 -2
  317. package/build-module/components/welcome-guide/editor.js.map +1 -1
  318. package/build-module/hooks/index.js +0 -1
  319. package/build-module/hooks/index.js.map +1 -1
  320. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +15 -2
  321. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  322. package/build-module/store/selectors.js +1 -9
  323. package/build-module/store/selectors.js.map +1 -1
  324. package/build-module/utils/constants.js +4 -2
  325. package/build-module/utils/constants.js.map +1 -1
  326. package/build-module/utils/get-is-list-page.js +1 -1
  327. package/build-module/utils/get-is-list-page.js.map +1 -1
  328. package/build-module/utils/math.js +92 -0
  329. package/build-module/utils/math.js.map +1 -0
  330. package/build-style/style-rtl.css +146 -130
  331. package/build-style/style.css +146 -130
  332. package/package.json +44 -44
  333. package/src/components/block-editor/editor-canvas.js +34 -9
  334. package/src/components/block-editor/site-editor-canvas.js +10 -7
  335. package/src/components/block-editor/use-site-editor-settings.js +0 -2
  336. package/src/components/editor/index.js +11 -4
  337. package/src/components/editor-canvas-container/index.js +0 -1
  338. package/src/components/global-styles/background-panel.js +34 -0
  339. package/src/components/global-styles/color-palette-panel.js +0 -11
  340. package/src/components/global-styles/font-families.js +1 -1
  341. package/src/components/global-styles/font-library-modal/context.js +77 -31
  342. package/src/components/global-styles/font-library-modal/font-collection.js +4 -3
  343. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -2
  344. package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  345. package/src/components/global-styles/font-library-modal/style.scss +15 -6
  346. package/src/components/global-styles/font-library-modal/upload-fonts.js +53 -8
  347. package/src/components/global-styles/font-library-modal/utils/index.js +21 -8
  348. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +4 -0
  349. package/src/components/global-styles/header.js +1 -1
  350. package/src/components/global-styles/hooks.js +68 -1
  351. package/src/components/global-styles/palette.js +3 -1
  352. package/src/components/global-styles/preview-colors.js +2 -2
  353. package/src/components/global-styles/preview-iframe.js +0 -1
  354. package/src/components/global-styles/preview-styles.js +2 -2
  355. package/src/components/global-styles/root-menu.js +12 -1
  356. package/src/components/global-styles/screen-background.js +29 -0
  357. package/src/components/global-styles/screen-color-palette.js +2 -2
  358. package/src/components/global-styles/screen-colors.js +4 -15
  359. package/src/components/global-styles/screen-style-variations.js +4 -36
  360. package/src/components/global-styles/screen-typography.js +6 -20
  361. package/src/components/global-styles/style-variations-container.js +2 -1
  362. package/src/components/global-styles/style.scss +15 -10
  363. package/src/components/global-styles/typography-elements.js +5 -1
  364. package/src/components/global-styles/{preview-typography.js → typography-example.js} +3 -1
  365. package/src/components/global-styles/typography-preview.js +3 -1
  366. package/src/components/global-styles/ui.js +5 -0
  367. package/src/components/global-styles/utils.js +1 -1
  368. package/src/components/global-styles/variations/style.scss +32 -23
  369. package/src/components/global-styles/variations/variations-color.js +12 -6
  370. package/src/components/global-styles/variations/variations-typography.js +41 -60
  371. package/src/components/header-edit-mode/index.js +1 -0
  372. package/src/components/header-edit-mode/style.scss +28 -17
  373. package/src/components/keyboard-shortcut-help-modal/config.js +4 -0
  374. package/src/components/keyboard-shortcut-help-modal/index.js +4 -0
  375. package/src/components/keyboard-shortcuts/global.js +16 -4
  376. package/src/components/layout/animation.js +122 -0
  377. package/src/components/layout/index.js +12 -27
  378. package/src/components/layout/router.js +26 -25
  379. package/src/components/layout/style.scss +2 -0
  380. package/src/components/page-pages/index.js +33 -54
  381. package/src/components/page-patterns/delete-category-menu-item.js +7 -0
  382. package/src/components/page-patterns/index.js +22 -31
  383. package/src/components/page-patterns/search-items.js +13 -58
  384. package/src/components/page-patterns/use-patterns.js +17 -10
  385. package/src/components/page-templates-template-parts/actions.js +106 -91
  386. package/src/components/page-templates-template-parts/index.js +41 -93
  387. package/src/components/page-templates-template-parts/style.scss +5 -0
  388. package/src/components/plugin-template-setting-panel/index.js +14 -1
  389. package/src/components/save-button/index.js +55 -26
  390. package/src/components/save-hub/index.js +20 -164
  391. package/src/components/save-panel/index.js +24 -17
  392. package/src/components/sidebar/index.js +2 -8
  393. package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  394. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  395. package/src/components/sidebar-dataviews/default-views.js +12 -4
  396. package/src/components/sidebar-dataviews/index.js +5 -4
  397. package/src/components/sidebar-edit-mode/index.js +0 -2
  398. package/src/components/sidebar-edit-mode/page-panels/index.js +31 -62
  399. package/src/components/sidebar-edit-mode/page-panels/page-content.js +10 -10
  400. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  401. package/src/components/sidebar-edit-mode/template-panel/index.js +33 -24
  402. package/src/components/sidebar-edit-mode/template-panel/style.scss +1 -29
  403. package/src/components/sidebar-navigation-screen/style.scss +21 -9
  404. package/src/components/sidebar-navigation-screen-details-footer/index.js +6 -2
  405. package/src/components/sidebar-navigation-screen-global-styles/index.js +29 -2
  406. package/src/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +2 -3
  407. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +11 -9
  408. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +6 -3
  409. package/src/components/sidebar-navigation-screen-patterns/index.js +0 -7
  410. package/src/components/sidebar-navigation-screen-template/index.js +6 -1
  411. package/src/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  412. package/src/components/style-book/index.js +1 -3
  413. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
  414. package/src/components/sync-state-with-url/use-sync-path-with-url.js +3 -19
  415. package/src/components/template-actions/index.js +63 -46
  416. package/src/components/welcome-guide/editor.js +9 -6
  417. package/src/hooks/index.js +0 -1
  418. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +21 -4
  419. package/src/store/selectors.js +3 -15
  420. package/src/style.scss +0 -2
  421. package/src/utils/constants.js +4 -2
  422. package/src/utils/get-is-list-page.js +1 -1
  423. package/src/utils/math.js +93 -0
  424. package/build/components/actions/index.js +0 -321
  425. package/build/components/actions/index.js.map +0 -1
  426. package/build/components/global-styles/preview-typography.js.map +0 -1
  427. package/build/components/sidebar-edit-mode/sidebar-card/index.js +0 -42
  428. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
  429. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +0 -50
  430. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  431. package/build/components/sidebar-edit-mode/template-panel/template-areas.js +0 -70
  432. package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
  433. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  434. package/build/components/sidebar-navigation-screen-pages/index.js +0 -175
  435. package/build/components/sidebar-navigation-screen-pages/index.js.map +0 -1
  436. package/build/components/sidebar-navigation-screen-templates/index.js +0 -132
  437. package/build/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  438. package/build/hooks/template-part-edit.js +0 -82
  439. package/build/hooks/template-part-edit.js.map +0 -1
  440. package/build/store/utils.js +0 -71
  441. package/build/store/utils.js.map +0 -1
  442. package/build-module/components/actions/index.js +0 -310
  443. package/build-module/components/actions/index.js.map +0 -1
  444. package/build-module/components/global-styles/preview-typography.js.map +0 -1
  445. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +0 -34
  446. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
  447. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +0 -42
  448. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  449. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js +0 -63
  450. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
  451. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  452. package/build-module/components/sidebar-navigation-screen-pages/index.js +0 -167
  453. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +0 -1
  454. package/build-module/components/sidebar-navigation-screen-templates/index.js +0 -124
  455. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  456. package/build-module/hooks/template-part-edit.js +0 -75
  457. package/build-module/hooks/template-part-edit.js.map +0 -1
  458. package/build-module/store/utils.js +0 -64
  459. package/build-module/store/utils.js.map +0 -1
  460. package/src/components/actions/index.js +0 -411
  461. package/src/components/sidebar-edit-mode/sidebar-card/index.js +0 -34
  462. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +0 -37
  463. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +0 -49
  464. package/src/components/sidebar-edit-mode/template-panel/template-areas.js +0 -86
  465. package/src/components/sidebar-navigation-screen-pages/index.js +0 -238
  466. package/src/components/sidebar-navigation-screen-templates/index.js +0 -156
  467. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -9
  468. package/src/hooks/template-part-edit.js +0 -89
  469. package/src/store/test/utils.js +0 -191
  470. package/src/store/utils.js +0 -69
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { backup, trash } from '@wordpress/icons';
5
4
  import { __, sprintf, _n } from '@wordpress/i18n';
6
5
  import { useDispatch } from '@wordpress/data';
7
- import { useMemo, useState } from '@wordpress/element';
6
+ import { useState } from '@wordpress/element';
8
7
  import { store as coreStore } from '@wordpress/core-data';
9
8
  import { store as noticesStore } from '@wordpress/notices';
10
9
  import { decodeEntities } from '@wordpress/html-entities';
@@ -25,95 +24,106 @@ import isTemplateRevertable from '../../utils/is-template-revertable';
25
24
  import isTemplateRemovable from '../../utils/is-template-removable';
26
25
  import { TEMPLATE_POST_TYPE } from '../../utils/constants';
27
26
 
28
- export function useResetTemplateAction() {
29
- const { revertTemplate } = useDispatch( editSiteStore );
30
- const { saveEditedEntityRecord } = useDispatch( coreStore );
31
- const { createSuccessNotice, createErrorNotice } =
32
- useDispatch( noticesStore );
33
- return useMemo(
34
- () => ( {
35
- id: 'reset-template',
36
- label: __( 'Reset' ),
37
- isPrimary: true,
38
- icon: backup,
39
- isEligible: isTemplateRevertable,
40
- supportsBulk: true,
41
- async callback( templates ) {
42
- try {
43
- for ( const template of templates ) {
44
- await revertTemplate( template, {
45
- allowUndo: false,
46
- } );
47
- await saveEditedEntityRecord(
48
- 'postType',
49
- template.type,
50
- template.id
51
- );
52
- }
53
-
54
- createSuccessNotice(
55
- templates.length > 1
56
- ? sprintf(
57
- /* translators: The number of items. */
58
- __( '%s items reverted.' ),
59
- templates.length
60
- )
61
- : sprintf(
62
- /* translators: The template/part's name. */
63
- __( '"%s" reverted.' ),
64
- decodeEntities(
65
- templates[ 0 ].title.rendered
66
- )
67
- ),
68
- {
69
- type: 'snackbar',
70
- id: 'edit-site-template-reverted',
71
- }
27
+ export const resetTemplateAction = {
28
+ id: 'reset-template',
29
+ label: __( 'Clear customizations' ),
30
+ isEligible: isTemplateRevertable,
31
+ supportsBulk: true,
32
+ hideModalHeader: true,
33
+ RenderModal: ( { items, closeModal, onPerform } ) => {
34
+ const { revertTemplate } = useDispatch( editSiteStore );
35
+ const { saveEditedEntityRecord } = useDispatch( coreStore );
36
+ const { createSuccessNotice, createErrorNotice } =
37
+ useDispatch( noticesStore );
38
+ const onConfirm = async () => {
39
+ try {
40
+ for ( const template of items ) {
41
+ await revertTemplate( template, {
42
+ allowUndo: false,
43
+ } );
44
+ await saveEditedEntityRecord(
45
+ 'postType',
46
+ template.type,
47
+ template.id
72
48
  );
73
- } catch ( error ) {
74
- let fallbackErrorMessage;
75
- if ( templates[ 0 ].type === TEMPLATE_POST_TYPE ) {
76
- fallbackErrorMessage =
77
- templates.length === 1
78
- ? __(
79
- 'An error occurred while reverting the template.'
80
- )
81
- : __(
82
- 'An error occurred while reverting the templates.'
83
- );
84
- } else {
85
- fallbackErrorMessage =
86
- templates.length === 1
87
- ? __(
88
- 'An error occurred while reverting the template part.'
89
- )
90
- : __(
91
- 'An error occurred while reverting the template parts.'
92
- );
93
- }
94
- const errorMessage =
95
- error.message && error.code !== 'unknown_error'
96
- ? error.message
97
- : fallbackErrorMessage;
49
+ }
98
50
 
99
- createErrorNotice( errorMessage, { type: 'snackbar' } );
51
+ createSuccessNotice(
52
+ items.length > 1
53
+ ? sprintf(
54
+ /* translators: The number of items. */
55
+ __( '%s items reverted.' ),
56
+ items.length
57
+ )
58
+ : sprintf(
59
+ /* translators: The template/part's name. */
60
+ __( '"%s" reverted.' ),
61
+ decodeEntities( items[ 0 ].title.rendered )
62
+ ),
63
+ {
64
+ type: 'snackbar',
65
+ id: 'edit-site-template-reverted',
66
+ }
67
+ );
68
+ } catch ( error ) {
69
+ let fallbackErrorMessage;
70
+ if ( items[ 0 ].type === TEMPLATE_POST_TYPE ) {
71
+ fallbackErrorMessage =
72
+ items.length === 1
73
+ ? __(
74
+ 'An error occurred while reverting the template.'
75
+ )
76
+ : __(
77
+ 'An error occurred while reverting the templates.'
78
+ );
79
+ } else {
80
+ fallbackErrorMessage =
81
+ items.length === 1
82
+ ? __(
83
+ 'An error occurred while reverting the template part.'
84
+ )
85
+ : __(
86
+ 'An error occurred while reverting the template parts.'
87
+ );
100
88
  }
101
- },
102
- } ),
103
- [
104
- createErrorNotice,
105
- createSuccessNotice,
106
- revertTemplate,
107
- saveEditedEntityRecord,
108
- ]
109
- );
110
- }
89
+ const errorMessage =
90
+ error.message && error.code !== 'unknown_error'
91
+ ? error.message
92
+ : fallbackErrorMessage;
93
+
94
+ createErrorNotice( errorMessage, { type: 'snackbar' } );
95
+ }
96
+ };
97
+ return (
98
+ <VStack spacing="5">
99
+ <Text>
100
+ { __(
101
+ 'Are you sure you want to clear these customizations?'
102
+ ) }
103
+ </Text>
104
+ <HStack justify="right">
105
+ <Button variant="tertiary" onClick={ closeModal }>
106
+ { __( 'Cancel' ) }
107
+ </Button>
108
+ <Button
109
+ variant="primary"
110
+ onClick={ async () => {
111
+ await onConfirm( items );
112
+ onPerform?.();
113
+ closeModal();
114
+ } }
115
+ >
116
+ { __( 'Clear' ) }
117
+ </Button>
118
+ </HStack>
119
+ </VStack>
120
+ );
121
+ },
122
+ };
111
123
 
112
124
  export const deleteTemplateAction = {
113
125
  id: 'delete-template',
114
126
  label: __( 'Delete' ),
115
- isPrimary: true,
116
- icon: trash,
117
127
  isEligible: isTemplateRemovable,
118
128
  supportsBulk: true,
119
129
  hideModalHeader: true,
@@ -150,9 +160,7 @@ export const deleteTemplateAction = {
150
160
  await removeTemplates( templates, {
151
161
  allowUndo: false,
152
162
  } );
153
- if ( onPerform ) {
154
- onPerform();
155
- }
163
+ onPerform?.();
156
164
  closeModal();
157
165
  } }
158
166
  >
@@ -212,8 +220,6 @@ export const renameTemplateAction = {
212
220
  throwOnError: true,
213
221
  }
214
222
  );
215
- // TODO: this action will be reused in template parts list, so
216
- // let's keep this for a bit, even it's always a `template` now.
217
223
  createSuccessNotice(
218
224
  template.type === TEMPLATE_POST_TYPE
219
225
  ? __( 'Template renamed.' )
@@ -242,16 +248,25 @@ export const renameTemplateAction = {
242
248
  <VStack spacing="5">
243
249
  <TextControl
244
250
  __nextHasNoMarginBottom
251
+ __next40pxDefaultSize
245
252
  label={ __( 'Name' ) }
246
253
  value={ editedTitle }
247
254
  onChange={ setEditedTitle }
248
255
  required
249
256
  />
250
257
  <HStack justify="right">
251
- <Button variant="tertiary" onClick={ closeModal }>
258
+ <Button
259
+ variant="tertiary"
260
+ onClick={ closeModal }
261
+ __next40pxDefaultSize
262
+ >
252
263
  { __( 'Cancel' ) }
253
264
  </Button>
254
- <Button variant="primary" type="submit">
265
+ <Button
266
+ variant="primary"
267
+ type="submit"
268
+ __next40pxDefaultSize
269
+ >
255
270
  { __( 'Save' ) }
256
271
  </Button>
257
272
  </HStack>
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import removeAccents from 'remove-accents';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -22,12 +21,9 @@ import {
22
21
  BlockPreview,
23
22
  privateApis as blockEditorPrivateApis,
24
23
  } from '@wordpress/block-editor';
25
- import {
26
- DataViews,
27
- sortByTextFields,
28
- getPaginationResults,
29
- } from '@wordpress/dataviews';
24
+ import { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';
30
25
  import { privateApis as routerPrivateApis } from '@wordpress/router';
26
+ import { privateApis as editorPrivateApis } from '@wordpress/editor';
31
27
 
32
28
  /**
33
29
  * Internal dependencies
@@ -40,22 +36,22 @@ import {
40
36
  TEMPLATE_POST_TYPE,
41
37
  TEMPLATE_PART_POST_TYPE,
42
38
  ENUMERATION_TYPE,
43
- OPERATOR_IN,
44
- OPERATOR_NOT_IN,
39
+ OPERATOR_IS_ANY,
45
40
  LAYOUT_GRID,
46
41
  LAYOUT_TABLE,
47
42
  LAYOUT_LIST,
48
43
  } from '../../utils/constants';
49
44
  import {
50
- useResetTemplateAction,
45
+ resetTemplateAction,
51
46
  deleteTemplateAction,
52
47
  renameTemplateAction,
53
48
  } from './actions';
54
- import { postRevisionsAction } from '../actions';
55
49
  import usePatternSettings from '../page-patterns/use-pattern-settings';
56
50
  import { unlock } from '../../lock-unlock';
57
51
  import AddNewTemplatePart from './add-new-template-part';
58
52
 
53
+ const { usePostActions } = unlock( editorPrivateApis );
54
+
59
55
  const { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(
60
56
  blockEditorPrivateApis
61
57
  );
@@ -63,10 +59,6 @@ const { useHistory, useLocation } = unlock( routerPrivateApis );
63
59
 
64
60
  const EMPTY_ARRAY = [];
65
61
 
66
- const SUPPORTED_LAYOUTS = window?.__experimentalAdminViews
67
- ? [ LAYOUT_TABLE, LAYOUT_GRID, LAYOUT_LIST ]
68
- : [ LAYOUT_TABLE, LAYOUT_GRID ];
69
-
70
62
  const defaultConfigPerViewType = {
71
63
  [ LAYOUT_TABLE ]: {
72
64
  primaryField: 'title',
@@ -74,6 +66,7 @@ const defaultConfigPerViewType = {
74
66
  [ LAYOUT_GRID ]: {
75
67
  mediaField: 'preview',
76
68
  primaryField: 'title',
69
+ displayAsColumnFields: [ 'description' ],
77
70
  },
78
71
  [ LAYOUT_LIST ]: {
79
72
  primaryField: 'title',
@@ -97,10 +90,6 @@ const DEFAULT_VIEW = {
97
90
  filters: [],
98
91
  };
99
92
 
100
- function normalizeSearchInput( input = '' ) {
101
- return removeAccents( input.trim().toLowerCase() );
102
- }
103
-
104
93
  function Title( { item, viewType } ) {
105
94
  if ( viewType === LAYOUT_LIST ) {
106
95
  return decodeEntities( item.title?.rendered ) || __( '(no title)' );
@@ -152,7 +141,7 @@ function AuthorField( { item, viewType } ) {
152
141
  <Icon icon={ icon } />
153
142
  </div>
154
143
  ) }
155
- <span>{ text }</span>
144
+ <span className="page-templates-author-field__name">{ text }</span>
156
145
  </HStack>
157
146
  );
158
147
  }
@@ -209,9 +198,7 @@ export default function PageTemplatesTemplateParts( { postType } ) {
209
198
  const { params } = useLocation();
210
199
  const { activeView = 'all', layout } = params;
211
200
  const defaultView = useMemo( () => {
212
- const usedType = window?.__experimentalAdminViews
213
- ? layout ?? DEFAULT_VIEW.type
214
- : DEFAULT_VIEW.type;
201
+ const usedType = layout ?? DEFAULT_VIEW.type;
215
202
  return {
216
203
  ...DEFAULT_VIEW,
217
204
  type: usedType,
@@ -221,8 +208,8 @@ export default function PageTemplatesTemplateParts( { postType } ) {
221
208
  ? [
222
209
  {
223
210
  field: 'author',
224
- operator: 'in',
225
- value: activeView,
211
+ operator: 'isAny',
212
+ value: [ activeView ],
226
213
  },
227
214
  ]
228
215
  : [],
@@ -237,8 +224,8 @@ export default function PageTemplatesTemplateParts( { postType } ) {
237
224
  ? [
238
225
  {
239
226
  field: 'author',
240
- operator: 'in',
241
- value: activeView,
227
+ operator: OPERATOR_IS_ANY,
228
+ value: [ activeView ],
242
229
  },
243
230
  ]
244
231
  : [],
@@ -303,13 +290,13 @@ export default function PageTemplatesTemplateParts( { postType } ) {
303
290
  ),
304
291
  maxWidth: 400,
305
292
  enableHiding: false,
293
+ enableGlobalSearch: true,
306
294
  },
307
295
  ];
308
296
  if ( postType === TEMPLATE_POST_TYPE ) {
309
297
  _fields.push( {
310
298
  header: __( 'Description' ),
311
299
  id: 'description',
312
- getValue: ( { item } ) => item.description,
313
300
  render: ( { item } ) => {
314
301
  return item.description ? (
315
302
  <span className="page-templates-description">
@@ -331,6 +318,7 @@ export default function PageTemplatesTemplateParts( { postType } ) {
331
318
  maxWidth: 400,
332
319
  minWidth: 320,
333
320
  enableSorting: false,
321
+ enableGlobalSearch: true,
334
322
  } );
335
323
  }
336
324
  // TODO: The plan is to support fields reordering, which would require an API like `order` or something
@@ -350,77 +338,35 @@ export default function PageTemplatesTemplateParts( { postType } ) {
350
338
  }, [ postType, authors, view.type ] );
351
339
 
352
340
  const { data, paginationInfo } = useMemo( () => {
353
- if ( ! records ) {
354
- return {
355
- data: EMPTY_ARRAY,
356
- paginationInfo: { totalItems: 0, totalPages: 0 },
357
- };
358
- }
359
- let filteredData = [ ...records ];
360
- // Handle global search.
361
- if ( view.search ) {
362
- const normalizedSearch = normalizeSearchInput( view.search );
363
- filteredData = filteredData.filter( ( item ) => {
364
- const title = item.title?.rendered || item.slug;
365
- return (
366
- normalizeSearchInput( title ).includes(
367
- normalizedSearch
368
- ) ||
369
- normalizeSearchInput( item.description ).includes(
370
- normalizedSearch
371
- )
372
- );
373
- } );
374
- }
375
-
376
- // Handle filters.
377
- if ( view.filters.length > 0 ) {
378
- view.filters.forEach( ( filter ) => {
379
- if (
380
- filter.field === 'author' &&
381
- filter.operator === OPERATOR_IN &&
382
- !! filter.value
383
- ) {
384
- filteredData = filteredData.filter( ( item ) => {
385
- return item.author_text === filter.value;
386
- } );
387
- } else if (
388
- filter.field === 'author' &&
389
- filter.operator === OPERATOR_NOT_IN &&
390
- !! filter.value
391
- ) {
392
- filteredData = filteredData.filter( ( item ) => {
393
- return item.author_text !== filter.value;
394
- } );
395
- }
396
- } );
397
- }
398
-
399
- // Handle sorting.
400
- if ( view.sort ) {
401
- filteredData = sortByTextFields( {
402
- data: filteredData,
403
- view,
404
- fields,
405
- textFields: [ 'title', 'author' ],
406
- } );
407
- }
408
- // Handle pagination.
409
- return getPaginationResults( {
410
- data: filteredData,
411
- view,
412
- } );
341
+ return filterSortAndPaginate( records, view, fields );
413
342
  }, [ records, view, fields ] );
414
343
 
415
- const resetTemplateAction = useResetTemplateAction();
344
+ const onActionPerformed = useCallback(
345
+ ( actionId, items ) => {
346
+ if ( actionId === 'edit-post' ) {
347
+ const post = items[ 0 ];
348
+ history.push( {
349
+ postId: post.id,
350
+ postType: post.type,
351
+ canvas: 'edit',
352
+ } );
353
+ }
354
+ },
355
+ [ history ]
356
+ );
357
+ const [ editAction, viewRevisionsAction ] = usePostActions(
358
+ onActionPerformed,
359
+ [ 'edit-post', 'view-post-revisions' ]
360
+ );
416
361
  const actions = useMemo(
417
362
  () => [
363
+ editAction,
418
364
  resetTemplateAction,
419
- deleteTemplateAction,
420
365
  renameTemplateAction,
421
- postRevisionsAction,
366
+ viewRevisionsAction,
367
+ deleteTemplateAction,
422
368
  ],
423
- [ resetTemplateAction ]
369
+ [ editAction, viewRevisionsAction ]
424
370
  );
425
371
 
426
372
  const onChangeView = useCallback(
@@ -473,8 +419,10 @@ export default function PageTemplatesTemplateParts( { postType } ) {
473
419
  view={ view }
474
420
  onChangeView={ onChangeView }
475
421
  onSelectionChange={ onSelectionChange }
476
- deferredRendering={ ! view.hiddenFields?.includes( 'preview' ) }
477
- supportedLayouts={ SUPPORTED_LAYOUTS }
422
+ deferredRendering={
423
+ view.type === LAYOUT_GRID ||
424
+ ! view.hiddenFields?.includes( 'preview' )
425
+ }
478
426
  />
479
427
  </Page>
480
428
  );
@@ -103,6 +103,11 @@
103
103
  }
104
104
  }
105
105
 
106
+ .page-templates-author-field__name {
107
+ text-overflow: ellipsis;
108
+ overflow: hidden;
109
+ }
110
+
106
111
  .edit-site-list__rename-modal {
107
112
  // The rename dropdown popover is open at the same time as the rename modal. The latter has to be higher.
108
113
  z-index: z-index(".edit-site-list__rename-modal");
@@ -5,11 +5,24 @@
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
8
+ import { store as editorStore } from '@wordpress/editor';
9
+ import { useSelect } from '@wordpress/data';
8
10
  import { createSlotFill } from '@wordpress/components';
9
11
 
10
12
  const { Fill, Slot } = createSlotFill( 'PluginTemplateSettingPanel' );
11
13
 
12
- const PluginTemplateSettingPanel = Fill;
14
+ const PluginTemplateSettingPanel = ( { children } ) => {
15
+ const isCurrentEntityTemplate = useSelect(
16
+ ( select ) =>
17
+ select( editorStore ).getCurrentPostType() === 'wp_template',
18
+ []
19
+ );
20
+ if ( ! isCurrentEntityTemplate ) {
21
+ return null;
22
+ }
23
+ return <Fill>{ children }</Fill>;
24
+ };
25
+
13
26
  PluginTemplateSettingPanel.Slot = Slot;
14
27
 
15
28
  /**
@@ -3,9 +3,14 @@
3
3
  */
4
4
  import { useSelect, useDispatch } from '@wordpress/data';
5
5
  import { Button } from '@wordpress/components';
6
- import { __, sprintf } from '@wordpress/i18n';
6
+ import { __, _n, sprintf } from '@wordpress/i18n';
7
7
  import { store as coreStore } from '@wordpress/core-data';
8
8
  import { displayShortcut } from '@wordpress/keycodes';
9
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
10
+ import {
11
+ useEntitiesSavedStatesIsDirty,
12
+ store as editorStore,
13
+ } from '@wordpress/editor';
9
14
 
10
15
  /**
11
16
  * Internal dependencies
@@ -15,30 +20,30 @@ import {
15
20
  currentlyPreviewingTheme,
16
21
  isPreviewingTheme,
17
22
  } from '../../utils/is-previewing-theme';
23
+ import { unlock } from '../../lock-unlock';
24
+
25
+ const { useLocation } = unlock( routerPrivateApis );
18
26
 
19
27
  export default function SaveButton( {
20
28
  className = 'edit-site-save-button__button',
21
29
  variant = 'primary',
22
30
  showTooltip = true,
23
- defaultLabel,
31
+ showReviewMessage,
24
32
  icon,
25
33
  size,
26
34
  __next40pxDefaultSize = false,
27
35
  } ) {
28
- const { isDirty, isSaving, isSaveViewOpen, previewingThemeName } =
29
- useSelect( ( select ) => {
30
- const {
31
- __experimentalGetDirtyEntityRecords,
32
- isSavingEntityRecord,
33
- isResolving,
34
- } = select( coreStore );
35
- const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
36
+ const { params } = useLocation();
37
+ const { setIsSaveViewOpened } = useDispatch( editSiteStore );
38
+ const { saveDirtyEntities } = unlock( useDispatch( editorStore ) );
39
+ const { dirtyEntityRecords } = useEntitiesSavedStatesIsDirty();
40
+ const { isSaving, isSaveViewOpen, previewingThemeName } = useSelect(
41
+ ( select ) => {
42
+ const { isSavingEntityRecord, isResolving } = select( coreStore );
36
43
  const { isSaveViewOpened } = select( editSiteStore );
37
44
  const isActivatingTheme = isResolving( 'activateTheme' );
38
45
  const currentlyPreviewingThemeId = currentlyPreviewingTheme();
39
-
40
46
  return {
41
- isDirty: dirtyEntityRecords.length > 0,
42
47
  isSaving:
43
48
  dirtyEntityRecords.some( ( record ) =>
44
49
  isSavingEntityRecord(
@@ -55,12 +60,26 @@ export default function SaveButton( {
55
60
  ?.name?.rendered
56
61
  : undefined,
57
62
  };
58
- }, [] );
59
- const { setIsSaveViewOpened } = useDispatch( editSiteStore );
60
-
61
- const activateSaveEnabled = isPreviewingTheme() || isDirty;
62
- const disabled = isSaving || ! activateSaveEnabled;
63
-
63
+ },
64
+ [ dirtyEntityRecords ]
65
+ );
66
+ const hasDirtyEntities = !! dirtyEntityRecords.length;
67
+ let isOnlyCurrentEntityDirty;
68
+ // Check if the current entity is the only entity with changes.
69
+ // We have some extra logic for `wp_global_styles` for now, that
70
+ // is used in navigation sidebar.
71
+ if ( dirtyEntityRecords.length === 1 ) {
72
+ if ( params.postId ) {
73
+ isOnlyCurrentEntityDirty =
74
+ `${ dirtyEntityRecords[ 0 ].key }` === params.postId &&
75
+ dirtyEntityRecords[ 0 ].name === params.postType;
76
+ } else if ( params.path?.includes( 'wp_global_styles' ) ) {
77
+ isOnlyCurrentEntityDirty =
78
+ dirtyEntityRecords[ 0 ].name === 'globalStyles';
79
+ }
80
+ }
81
+ const disabled =
82
+ isSaving || ( ! hasDirtyEntities && ! isPreviewingTheme() );
64
83
  const getLabel = () => {
65
84
  if ( isPreviewingTheme() ) {
66
85
  if ( isSaving ) {
@@ -71,32 +90,42 @@ export default function SaveButton( {
71
90
  );
72
91
  } else if ( disabled ) {
73
92
  return __( 'Saved' );
74
- } else if ( isDirty ) {
93
+ } else if ( hasDirtyEntities ) {
75
94
  return sprintf(
76
95
  /* translators: %s: The name of theme to be activated. */
77
96
  __( 'Activate %s & Save' ),
78
97
  previewingThemeName
79
98
  );
80
99
  }
81
-
82
100
  return sprintf(
83
101
  /* translators: %s: The name of theme to be activated. */
84
102
  __( 'Activate %s' ),
85
103
  previewingThemeName
86
104
  );
87
105
  }
88
-
89
106
  if ( isSaving ) {
90
107
  return __( 'Saving' );
91
- } else if ( disabled ) {
108
+ }
109
+ if ( disabled ) {
92
110
  return __( 'Saved' );
93
- } else if ( defaultLabel ) {
94
- return defaultLabel;
111
+ }
112
+ if ( ! isOnlyCurrentEntityDirty && showReviewMessage ) {
113
+ return sprintf(
114
+ // translators: %d: number of unsaved changes (number).
115
+ _n(
116
+ 'Review %d change…',
117
+ 'Review %d changes…',
118
+ dirtyEntityRecords.length
119
+ ),
120
+ dirtyEntityRecords.length
121
+ );
95
122
  }
96
123
  return __( 'Save' );
97
124
  };
98
125
  const label = getLabel();
99
-
126
+ const onClick = isOnlyCurrentEntityDirty
127
+ ? () => saveDirtyEntities( { dirtyEntityRecords } )
128
+ : () => setIsSaveViewOpened( true );
100
129
  return (
101
130
  <Button
102
131
  variant={ variant }
@@ -104,7 +133,7 @@ export default function SaveButton( {
104
133
  aria-disabled={ disabled }
105
134
  aria-expanded={ isSaveViewOpen }
106
135
  isBusy={ isSaving }
107
- onClick={ disabled ? undefined : () => setIsSaveViewOpened( true ) }
136
+ onClick={ disabled ? undefined : onClick }
108
137
  label={ label }
109
138
  /*
110
139
  * We want the tooltip to show the keyboard shortcut only when the