@wordpress/edit-site 5.25.0 → 5.26.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 (433) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/build/components/block-editor/back-button.js +3 -2
  4. package/build/components/block-editor/back-button.js.map +1 -1
  5. package/build/components/block-editor/resizable-editor.js +2 -2
  6. package/build/components/block-editor/resizable-editor.js.map +1 -1
  7. package/build/components/block-editor/use-post-link-props.js +27 -0
  8. package/build/components/block-editor/use-post-link-props.js.map +1 -0
  9. package/build/components/block-editor/use-site-editor-settings.js +7 -24
  10. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  11. package/build/components/create-template-part-modal/index.js +15 -7
  12. package/build/components/create-template-part-modal/index.js.map +1 -1
  13. package/build/components/editor/index.js +15 -16
  14. package/build/components/editor/index.js.map +1 -1
  15. package/build/components/editor-canvas-container/index.js +9 -7
  16. package/build/components/editor-canvas-container/index.js.map +1 -1
  17. package/build/components/global-styles/font-library-modal/collection-font-variant.js +5 -2
  18. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +3 -3
  20. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/context.js +5 -5
  22. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/font-collection.js +8 -4
  24. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/index.js +38 -21
  26. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  28. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/library-font-variant.js +5 -2
  30. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/local-fonts.js +26 -10
  32. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  33. package/build/components/global-styles/font-library-modal/resolvers.js +6 -6
  34. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  35. package/build/components/global-styles/font-library-modal/{tab-layout.js → tab-panel-layout.js} +4 -4
  36. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -0
  37. package/build/components/global-styles/font-library-modal/utils/index.js +35 -38
  38. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  39. package/build/components/global-styles/preview.js +43 -1
  40. package/build/components/global-styles/preview.js.map +1 -1
  41. package/build/components/global-styles/screen-color-palette.js +16 -12
  42. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  43. package/build/components/global-styles/screen-revisions/index.js +52 -52
  44. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  45. package/build/components/global-styles/screen-revisions/revisions-buttons.js +26 -35
  46. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  47. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +40 -22
  48. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  49. package/build/components/global-styles/ui.js +13 -62
  50. package/build/components/global-styles/ui.js.map +1 -1
  51. package/build/components/header-edit-mode/document-tools/index.js +8 -106
  52. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  53. package/build/components/header-edit-mode/index.js +7 -11
  54. package/build/components/header-edit-mode/index.js.map +1 -1
  55. package/build/components/header-edit-mode/mode-switcher/index.js +0 -2
  56. package/build/components/header-edit-mode/mode-switcher/index.js.map +1 -1
  57. package/build/components/header-edit-mode/more-menu/index.js +10 -7
  58. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  59. package/build/components/keyboard-shortcuts/edit-mode.js +0 -23
  60. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  61. package/build/components/keyboard-shortcuts/register.js +0 -36
  62. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  63. package/build/components/layout/index.js +6 -13
  64. package/build/components/layout/index.js.map +1 -1
  65. package/build/components/page-main/index.js +4 -4
  66. package/build/components/page-main/index.js.map +1 -1
  67. package/build/components/page-pages/index.js +84 -37
  68. package/build/components/page-pages/index.js.map +1 -1
  69. package/build/components/page-patterns/dataviews-pattern-actions.js +305 -0
  70. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -0
  71. package/build/components/page-patterns/dataviews-patterns.js +307 -0
  72. package/build/components/page-patterns/dataviews-patterns.js.map +1 -0
  73. package/build/components/page-patterns/duplicate-menu-item.js +1 -1
  74. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  75. package/build/components/page-patterns/grid-item.js +4 -3
  76. package/build/components/page-patterns/grid-item.js.map +1 -1
  77. package/build/components/page-patterns/patterns-list.js +2 -1
  78. package/build/components/page-patterns/patterns-list.js.map +1 -1
  79. package/build/components/page-patterns/use-patterns.js +23 -13
  80. package/build/components/page-patterns/use-patterns.js.map +1 -1
  81. package/build/components/page-templates/index.js +312 -36
  82. package/build/components/page-templates/index.js.map +1 -1
  83. package/build/components/{page-patterns/pagination.js → pagination/index.js} +25 -12
  84. package/build/components/pagination/index.js.map +1 -0
  85. package/build/components/{page-pages/side-editor.js → post-preview/index.js} +8 -4
  86. package/build/components/post-preview/index.js.map +1 -0
  87. package/build/components/preferences-modal/enable-feature.js +3 -2
  88. package/build/components/preferences-modal/enable-feature.js.map +1 -1
  89. package/build/components/preferences-modal/enable-panel-option.js +33 -0
  90. package/build/components/preferences-modal/enable-panel-option.js.map +1 -0
  91. package/build/components/preferences-modal/index.js +57 -9
  92. package/build/components/preferences-modal/index.js.map +1 -1
  93. package/build/components/revisions/index.js +3 -7
  94. package/build/components/revisions/index.js.map +1 -1
  95. package/build/components/routes/link.js +6 -2
  96. package/build/components/routes/link.js.map +1 -1
  97. package/build/components/save-button/index.js +6 -3
  98. package/build/components/save-button/index.js.map +1 -1
  99. package/build/components/sidebar/index.js +3 -11
  100. package/build/components/sidebar/index.js.map +1 -1
  101. package/build/components/sidebar-dataviews/add-new-view.js +2 -2
  102. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  103. package/build/components/sidebar-dataviews/default-views.js +18 -5
  104. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  105. package/build/components/sidebar-dataviews/index.js +3 -3
  106. package/build/components/sidebar-dataviews/index.js.map +1 -1
  107. package/build/components/sidebar-edit-mode/default-sidebar.js +1 -5
  108. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  109. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +62 -10
  110. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  111. package/build/components/sidebar-edit-mode/page-panels/index.js +1 -1
  112. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  113. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +0 -4
  114. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  115. package/build/components/sidebar-edit-mode/template-panel/index.js +4 -13
  116. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  117. package/build/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  118. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  119. package/build/components/sidebar-navigation-screen-global-styles/index.js +5 -2
  120. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  121. package/build/components/sidebar-navigation-screen-page/index.js +4 -1
  122. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  123. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +69 -0
  124. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -0
  125. package/build/components/style-book/index.js +38 -8
  126. package/build/components/style-book/index.js.map +1 -1
  127. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  128. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  129. package/build/hooks/commands/use-edit-mode-commands.js +11 -6
  130. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  131. package/build/index.js +12 -7
  132. package/build/index.js.map +1 -1
  133. package/build/store/actions.js +39 -44
  134. package/build/store/actions.js.map +1 -1
  135. package/build/store/private-actions.js +6 -2
  136. package/build/store/private-actions.js.map +1 -1
  137. package/build/store/reducer.js +0 -46
  138. package/build/store/reducer.js.map +1 -1
  139. package/build/store/selectors.js +32 -41
  140. package/build/store/selectors.js.map +1 -1
  141. package/build/utils/get-is-list-page.js +1 -1
  142. package/build/utils/get-is-list-page.js.map +1 -1
  143. package/build-module/components/block-editor/back-button.js +4 -3
  144. package/build-module/components/block-editor/back-button.js.map +1 -1
  145. package/build-module/components/block-editor/resizable-editor.js +2 -2
  146. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  147. package/build-module/components/block-editor/use-post-link-props.js +20 -0
  148. package/build-module/components/block-editor/use-post-link-props.js.map +1 -0
  149. package/build-module/components/block-editor/use-site-editor-settings.js +8 -25
  150. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  151. package/build-module/components/create-template-part-modal/index.js +14 -7
  152. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  153. package/build-module/components/editor/index.js +16 -17
  154. package/build-module/components/editor/index.js.map +1 -1
  155. package/build-module/components/editor-canvas-container/index.js +9 -7
  156. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  157. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +5 -2
  158. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  159. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +3 -3
  160. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -1
  161. package/build-module/components/global-styles/font-library-modal/context.js +7 -7
  162. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  163. package/build-module/components/global-styles/font-library-modal/font-collection.js +8 -4
  164. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  165. package/build-module/components/global-styles/font-library-modal/index.js +39 -22
  166. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  167. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  168. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  169. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +5 -2
  170. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  171. package/build-module/components/global-styles/font-library-modal/local-fonts.js +27 -11
  172. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  173. package/build-module/components/global-styles/font-library-modal/resolvers.js +5 -5
  174. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  175. package/build-module/components/global-styles/font-library-modal/{tab-layout.js → tab-panel-layout.js} +4 -4
  176. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -0
  177. package/build-module/components/global-styles/font-library-modal/utils/index.js +34 -36
  178. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  179. package/build-module/components/global-styles/preview.js +45 -3
  180. package/build-module/components/global-styles/preview.js.map +1 -1
  181. package/build-module/components/global-styles/screen-color-palette.js +17 -13
  182. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  183. package/build-module/components/global-styles/screen-revisions/index.js +53 -53
  184. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  185. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +27 -36
  186. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  187. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +40 -22
  188. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  189. package/build-module/components/global-styles/ui.js +15 -64
  190. package/build-module/components/global-styles/ui.js.map +1 -1
  191. package/build-module/components/header-edit-mode/document-tools/index.js +13 -110
  192. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  193. package/build-module/components/header-edit-mode/index.js +7 -11
  194. package/build-module/components/header-edit-mode/index.js.map +1 -1
  195. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -2
  196. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +1 -1
  197. package/build-module/components/header-edit-mode/more-menu/index.js +10 -7
  198. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  199. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -23
  200. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  201. package/build-module/components/keyboard-shortcuts/register.js +0 -36
  202. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  203. package/build-module/components/layout/index.js +6 -13
  204. package/build-module/components/layout/index.js.map +1 -1
  205. package/build-module/components/page-main/index.js +4 -4
  206. package/build-module/components/page-main/index.js.map +1 -1
  207. package/build-module/components/page-pages/index.js +83 -36
  208. package/build-module/components/page-pages/index.js.map +1 -1
  209. package/build-module/components/page-patterns/dataviews-pattern-actions.js +292 -0
  210. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -0
  211. package/build-module/components/page-patterns/dataviews-patterns.js +299 -0
  212. package/build-module/components/page-patterns/dataviews-patterns.js.map +1 -0
  213. package/build-module/components/page-patterns/duplicate-menu-item.js +1 -1
  214. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  215. package/build-module/components/page-patterns/grid-item.js +4 -3
  216. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  217. package/build-module/components/page-patterns/patterns-list.js +2 -1
  218. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  219. package/build-module/components/page-patterns/use-patterns.js +23 -13
  220. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  221. package/build-module/components/page-templates/index.js +314 -38
  222. package/build-module/components/page-templates/index.js.map +1 -1
  223. package/build-module/components/{page-patterns/pagination.js → pagination/index.js} +24 -12
  224. package/build-module/components/pagination/index.js.map +1 -0
  225. package/build-module/components/{page-pages/side-editor.js → post-preview/index.js} +7 -3
  226. package/build-module/components/post-preview/index.js.map +1 -0
  227. package/build-module/components/preferences-modal/enable-feature.js +3 -2
  228. package/build-module/components/preferences-modal/enable-feature.js.map +1 -1
  229. package/build-module/components/preferences-modal/enable-panel-option.js +26 -0
  230. package/build-module/components/preferences-modal/enable-panel-option.js.map +1 -0
  231. package/build-module/components/preferences-modal/index.js +57 -9
  232. package/build-module/components/preferences-modal/index.js.map +1 -1
  233. package/build-module/components/revisions/index.js +4 -8
  234. package/build-module/components/revisions/index.js.map +1 -1
  235. package/build-module/components/routes/link.js +5 -2
  236. package/build-module/components/routes/link.js.map +1 -1
  237. package/build-module/components/save-button/index.js +6 -3
  238. package/build-module/components/save-button/index.js.map +1 -1
  239. package/build-module/components/sidebar/index.js +3 -11
  240. package/build-module/components/sidebar/index.js.map +1 -1
  241. package/build-module/components/sidebar-dataviews/add-new-view.js +1 -1
  242. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  243. package/build-module/components/sidebar-dataviews/default-views.js +17 -5
  244. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  245. package/build-module/components/sidebar-dataviews/index.js +2 -2
  246. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  247. package/build-module/components/sidebar-edit-mode/default-sidebar.js +1 -5
  248. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  249. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +64 -12
  250. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  251. package/build-module/components/sidebar-edit-mode/page-panels/index.js +2 -2
  252. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  253. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +0 -4
  254. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  255. package/build-module/components/sidebar-edit-mode/template-panel/index.js +6 -15
  256. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  257. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  258. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  259. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +5 -2
  260. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  261. package/build-module/components/sidebar-navigation-screen-page/index.js +4 -1
  262. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  263. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +61 -0
  264. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -0
  265. package/build-module/components/style-book/index.js +40 -10
  266. package/build-module/components/style-book/index.js.map +1 -1
  267. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  268. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  269. package/build-module/hooks/commands/use-edit-mode-commands.js +11 -6
  270. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  271. package/build-module/index.js +12 -7
  272. package/build-module/index.js.map +1 -1
  273. package/build-module/store/actions.js +36 -41
  274. package/build-module/store/actions.js.map +1 -1
  275. package/build-module/store/private-actions.js +6 -2
  276. package/build-module/store/private-actions.js.map +1 -1
  277. package/build-module/store/reducer.js +0 -44
  278. package/build-module/store/reducer.js.map +1 -1
  279. package/build-module/store/selectors.js +30 -38
  280. package/build-module/store/selectors.js.map +1 -1
  281. package/build-module/utils/get-is-list-page.js +1 -1
  282. package/build-module/utils/get-is-list-page.js.map +1 -1
  283. package/build-style/style-rtl.css +357 -268
  284. package/build-style/style.css +357 -268
  285. package/package.json +42 -42
  286. package/src/components/add-new-template/style.scss +2 -1
  287. package/src/components/block-editor/back-button.js +4 -2
  288. package/src/components/block-editor/resizable-editor.js +1 -1
  289. package/src/components/block-editor/style.scss +1 -2
  290. package/src/components/block-editor/use-post-link-props.js +20 -0
  291. package/src/components/block-editor/use-site-editor-settings.js +10 -41
  292. package/src/components/code-editor/style.scss +0 -4
  293. package/src/components/create-template-part-modal/index.js +83 -82
  294. package/src/components/editor/index.js +24 -31
  295. package/src/components/editor-canvas-container/index.js +8 -6
  296. package/src/components/global-styles/font-library-modal/collection-font-variant.js +7 -2
  297. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +3 -3
  298. package/src/components/global-styles/font-library-modal/context.js +7 -7
  299. package/src/components/global-styles/font-library-modal/font-collection.js +10 -5
  300. package/src/components/global-styles/font-library-modal/index.js +44 -24
  301. package/src/components/global-styles/font-library-modal/installed-fonts.js +3 -3
  302. package/src/components/global-styles/font-library-modal/library-font-variant.js +7 -2
  303. package/src/components/global-styles/font-library-modal/local-fonts.js +53 -26
  304. package/src/components/global-styles/font-library-modal/resolvers.js +5 -5
  305. package/src/components/global-styles/font-library-modal/style.scss +5 -2
  306. package/src/components/global-styles/font-library-modal/{tab-layout.js → tab-panel-layout.js} +9 -3
  307. package/src/components/global-styles/font-library-modal/utils/index.js +21 -23
  308. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +58 -0
  309. package/src/components/global-styles/preview.js +55 -3
  310. package/src/components/global-styles/screen-color-palette.js +16 -26
  311. package/src/components/global-styles/screen-revisions/index.js +91 -92
  312. package/src/components/global-styles/screen-revisions/revisions-buttons.js +37 -38
  313. package/src/components/global-styles/screen-revisions/style.scss +77 -20
  314. package/src/components/global-styles/screen-revisions/test/use-global-styles-revisions.js +67 -0
  315. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +73 -46
  316. package/src/components/global-styles/ui.js +13 -74
  317. package/src/components/header-edit-mode/document-tools/index.js +33 -165
  318. package/src/components/header-edit-mode/index.js +6 -17
  319. package/src/components/header-edit-mode/mode-switcher/index.js +0 -4
  320. package/src/components/header-edit-mode/more-menu/index.js +9 -7
  321. package/src/components/header-edit-mode/style.scss +0 -47
  322. package/src/components/keyboard-shortcuts/edit-mode.js +1 -26
  323. package/src/components/keyboard-shortcuts/register.js +0 -43
  324. package/src/components/layout/index.js +8 -27
  325. package/src/components/layout/style.scss +10 -3
  326. package/src/components/list/style.scss +0 -5
  327. package/src/components/page/style.scss +1 -1
  328. package/src/components/page-main/index.js +8 -8
  329. package/src/components/page-pages/index.js +112 -41
  330. package/src/components/page-pages/style.scss +3 -2
  331. package/src/components/page-patterns/dataviews-pattern-actions.js +329 -0
  332. package/src/components/page-patterns/dataviews-patterns.js +380 -0
  333. package/src/components/page-patterns/duplicate-menu-item.js +1 -1
  334. package/src/components/page-patterns/grid-item.js +3 -2
  335. package/src/components/page-patterns/patterns-list.js +2 -1
  336. package/src/components/page-patterns/style.scss +89 -26
  337. package/src/components/page-patterns/use-patterns.js +24 -15
  338. package/src/components/page-templates/index.js +399 -64
  339. package/src/components/{page-patterns/pagination.js → pagination/index.js} +21 -10
  340. package/src/components/pagination/style.scss +5 -0
  341. package/src/components/post-preview/index.js +16 -0
  342. package/src/components/preferences-modal/enable-feature.js +9 -5
  343. package/src/components/preferences-modal/enable-panel-option.js +23 -0
  344. package/src/components/preferences-modal/index.js +107 -22
  345. package/src/components/revisions/index.js +8 -15
  346. package/src/components/routes/link.js +11 -3
  347. package/src/components/save-button/index.js +16 -3
  348. package/src/components/sidebar/index.js +6 -13
  349. package/src/components/sidebar-dataviews/add-new-view.js +1 -1
  350. package/src/components/sidebar-dataviews/default-views.js +23 -6
  351. package/src/components/sidebar-dataviews/index.js +2 -2
  352. package/src/components/sidebar-edit-mode/default-sidebar.js +0 -12
  353. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +85 -14
  354. package/src/components/sidebar-edit-mode/page-panels/index.js +15 -1
  355. package/src/components/sidebar-edit-mode/plugin-sidebar/index.js +0 -12
  356. package/src/components/sidebar-edit-mode/style.scss +0 -10
  357. package/src/components/sidebar-edit-mode/template-panel/index.js +44 -40
  358. package/src/components/sidebar-edit-mode/template-panel/style.scss +0 -4
  359. package/src/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  360. package/src/components/sidebar-navigation-screen-global-styles/index.js +3 -2
  361. package/src/components/sidebar-navigation-screen-page/index.js +2 -1
  362. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +77 -0
  363. package/src/components/site-hub/style.scss +5 -2
  364. package/src/components/style-book/index.js +65 -21
  365. package/src/components/style-book/style.scss +3 -3
  366. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +4 -1
  367. package/src/hooks/commands/use-edit-mode-commands.js +8 -12
  368. package/src/index.js +11 -5
  369. package/src/store/actions.js +35 -45
  370. package/src/store/private-actions.js +7 -3
  371. package/src/store/reducer.js +0 -44
  372. package/src/store/selectors.js +32 -38
  373. package/src/store/test/actions.js +11 -39
  374. package/src/store/test/reducer.js +1 -82
  375. package/src/store/test/selectors.js +0 -24
  376. package/src/style.scss +1 -1
  377. package/src/utils/get-is-list-page.js +2 -3
  378. package/build/components/global-styles/font-library-modal/tab-layout.js.map +0 -1
  379. package/build/components/global-styles/screen-revisions/get-revision-changes.js +0 -146
  380. package/build/components/global-styles/screen-revisions/get-revision-changes.js.map +0 -1
  381. package/build/components/header-edit-mode/undo-redo/redo.js +0 -41
  382. package/build/components/header-edit-mode/undo-redo/redo.js.map +0 -1
  383. package/build/components/header-edit-mode/undo-redo/undo.js +0 -40
  384. package/build/components/header-edit-mode/undo-redo/undo.js.map +0 -1
  385. package/build/components/page-pages/side-editor.js.map +0 -1
  386. package/build/components/page-patterns/pagination.js.map +0 -1
  387. package/build/components/page-templates/dataviews-templates.js +0 -317
  388. package/build/components/page-templates/dataviews-templates.js.map +0 -1
  389. package/build/components/secondary-sidebar/inserter-sidebar.js +0 -60
  390. package/build/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  391. package/build/components/secondary-sidebar/list-view-sidebar.js +0 -109
  392. package/build/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  393. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js +0 -35
  394. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +0 -1
  395. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +0 -73
  396. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +0 -1
  397. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +0 -219
  398. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +0 -1
  399. package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +0 -1
  400. package/build-module/components/global-styles/screen-revisions/get-revision-changes.js +0 -139
  401. package/build-module/components/global-styles/screen-revisions/get-revision-changes.js.map +0 -1
  402. package/build-module/components/header-edit-mode/undo-redo/redo.js +0 -33
  403. package/build-module/components/header-edit-mode/undo-redo/redo.js.map +0 -1
  404. package/build-module/components/header-edit-mode/undo-redo/undo.js +0 -32
  405. package/build-module/components/header-edit-mode/undo-redo/undo.js.map +0 -1
  406. package/build-module/components/page-pages/side-editor.js.map +0 -1
  407. package/build-module/components/page-patterns/pagination.js.map +0 -1
  408. package/build-module/components/page-templates/dataviews-templates.js +0 -309
  409. package/build-module/components/page-templates/dataviews-templates.js.map +0 -1
  410. package/build-module/components/secondary-sidebar/inserter-sidebar.js +0 -53
  411. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  412. package/build-module/components/secondary-sidebar/list-view-sidebar.js +0 -102
  413. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  414. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js +0 -27
  415. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +0 -1
  416. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +0 -65
  417. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +0 -1
  418. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +0 -209
  419. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +0 -1
  420. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +0 -62
  421. package/src/components/global-styles/font-library-modal/utils/test/wpKebabCase.spec.js +0 -28
  422. package/src/components/global-styles/screen-revisions/get-revision-changes.js +0 -171
  423. package/src/components/global-styles/screen-revisions/test/get-revision-changes.js +0 -191
  424. package/src/components/header-edit-mode/undo-redo/redo.js +0 -38
  425. package/src/components/header-edit-mode/undo-redo/undo.js +0 -34
  426. package/src/components/page-pages/side-editor.js +0 -14
  427. package/src/components/page-templates/dataviews-templates.js +0 -360
  428. package/src/components/secondary-sidebar/inserter-sidebar.js +0 -66
  429. package/src/components/secondary-sidebar/list-view-sidebar.js +0 -123
  430. package/src/components/secondary-sidebar/style.scss +0 -65
  431. package/src/components/sidebar-edit-mode/sidebar-fixed-bottom.js +0 -26
  432. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +0 -82
  433. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +0 -279
@@ -1,92 +1,427 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import removeAccents from 'remove-accents';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
9
  import {
5
- VisuallyHidden,
6
- __experimentalHeading as Heading,
10
+ Icon,
11
+ __experimentalView as View,
7
12
  __experimentalText as Text,
13
+ __experimentalHStack as HStack,
8
14
  __experimentalVStack as VStack,
15
+ VisuallyHidden,
9
16
  } from '@wordpress/components';
10
17
  import { __ } from '@wordpress/i18n';
18
+ import { useState, useMemo, useCallback } from '@wordpress/element';
11
19
  import { useEntityRecords } from '@wordpress/core-data';
12
20
  import { decodeEntities } from '@wordpress/html-entities';
21
+ import { ENTER, SPACE } from '@wordpress/keycodes';
22
+ import { parse } from '@wordpress/blocks';
23
+ import {
24
+ BlockPreview,
25
+ privateApis as blockEditorPrivateApis,
26
+ } from '@wordpress/block-editor';
27
+ import {
28
+ DataViews,
29
+ sortByTextFields,
30
+ getPaginationResults,
31
+ } from '@wordpress/dataviews';
32
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
13
33
 
14
34
  /**
15
35
  * Internal dependencies
16
36
  */
17
37
  import Page from '../page';
18
- import Table from '../table';
19
38
  import Link from '../routes/link';
20
- import AddedBy from '../list/added-by';
21
- import TemplateActions from '../template-actions';
22
39
  import AddNewTemplate from '../add-new-template';
23
- import { TEMPLATE_POST_TYPE } from '../../utils/constants';
40
+ import { useAddedBy, AvatarImage } from '../list/added-by';
41
+ import {
42
+ TEMPLATE_POST_TYPE,
43
+ ENUMERATION_TYPE,
44
+ OPERATOR_IN,
45
+ OPERATOR_NOT_IN,
46
+ LAYOUT_GRID,
47
+ LAYOUT_TABLE,
48
+ LAYOUT_LIST,
49
+ } from '../../utils/constants';
50
+ import {
51
+ useResetTemplateAction,
52
+ deleteTemplateAction,
53
+ renameTemplateAction,
54
+ } from './template-actions';
55
+ import { postRevisionsAction } from '../actions';
56
+ import usePatternSettings from '../page-patterns/use-pattern-settings';
57
+ import { unlock } from '../../lock-unlock';
58
+ import PostPreview from '../post-preview';
59
+
60
+ const { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(
61
+ blockEditorPrivateApis
62
+ );
63
+ const { useHistory } = unlock( routerPrivateApis );
64
+
65
+ const EMPTY_ARRAY = [];
66
+
67
+ const defaultConfigPerViewType = {
68
+ [ LAYOUT_TABLE ]: {},
69
+ [ LAYOUT_GRID ]: {
70
+ mediaField: 'preview',
71
+ primaryField: 'title',
72
+ },
73
+ [ LAYOUT_LIST ]: {
74
+ primaryField: 'title',
75
+ mediaField: 'preview',
76
+ },
77
+ };
78
+
79
+ const DEFAULT_VIEW = {
80
+ type: LAYOUT_TABLE,
81
+ search: '',
82
+ page: 1,
83
+ perPage: 20,
84
+ // All fields are visible by default, so it's
85
+ // better to keep track of the hidden ones.
86
+ hiddenFields: [ 'preview' ],
87
+ layout: {},
88
+ filters: [],
89
+ };
24
90
 
25
- export default function PageTemplates() {
26
- const { records: templates } = useEntityRecords(
27
- 'postType',
28
- TEMPLATE_POST_TYPE,
29
- {
91
+ function normalizeSearchInput( input = '' ) {
92
+ return removeAccents( input.trim().toLowerCase() );
93
+ }
94
+
95
+ function TemplateTitle( { item, viewType } ) {
96
+ if ( viewType === LAYOUT_LIST ) {
97
+ return (
98
+ <>
99
+ { decodeEntities( item.title?.rendered ) || __( '(no title)' ) }
100
+ </>
101
+ );
102
+ }
103
+
104
+ return (
105
+ <VStack spacing={ 1 }>
106
+ <View as="span" className="dataviews-view-grid__title-field">
107
+ <Link
108
+ params={ {
109
+ postId: item.id,
110
+ postType: item.type,
111
+ canvas: 'edit',
112
+ } }
113
+ >
114
+ { decodeEntities( item.title?.rendered ) ||
115
+ __( '(no title)' ) }
116
+ </Link>
117
+ </View>
118
+ </VStack>
119
+ );
120
+ }
121
+
122
+ function AuthorField( { item, viewType } ) {
123
+ const { text, icon, imageUrl } = useAddedBy( item.type, item.id );
124
+ const withIcon = viewType !== LAYOUT_LIST;
125
+
126
+ return (
127
+ <HStack alignment="left" spacing={ 1 }>
128
+ { withIcon && imageUrl && <AvatarImage imageUrl={ imageUrl } /> }
129
+ { withIcon && ! imageUrl && (
130
+ <div className="edit-site-list-added-by__icon">
131
+ <Icon icon={ icon } />
132
+ </div>
133
+ ) }
134
+ <span>{ text }</span>
135
+ </HStack>
136
+ );
137
+ }
138
+
139
+ function TemplatePreview( { content, viewType } ) {
140
+ const settings = usePatternSettings();
141
+ const [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );
142
+ const blocks = useMemo( () => {
143
+ return parse( content );
144
+ }, [ content ] );
145
+ if ( ! blocks?.length ) {
146
+ return null;
147
+ }
148
+ // Wrap everything in a block editor provider to ensure 'styles' that are needed
149
+ // for the previews are synced between the site editor store and the block editor store.
150
+ // Additionally we need to have the `__experimentalBlockPatterns` setting in order to
151
+ // render patterns inside the previews.
152
+ // TODO: Same approach is used in the patterns list and it becomes obvious that some of
153
+ // the block editor settings are needed in context where we don't have the block editor.
154
+ // Explore how we can solve this in a better way.
155
+ return (
156
+ <ExperimentalBlockEditorProvider settings={ settings }>
157
+ <div
158
+ className={ `page-templates-preview-field is-viewtype-${ viewType }` }
159
+ style={ { backgroundColor } }
160
+ >
161
+ <BlockPreview blocks={ blocks } />
162
+ </div>
163
+ </ExperimentalBlockEditorProvider>
164
+ );
165
+ }
166
+
167
+ export default function DataviewsTemplates() {
168
+ const [ templateId, setTemplateId ] = useState( null );
169
+ const [ view, setView ] = useState( DEFAULT_VIEW );
170
+ const { records: allTemplates, isResolving: isLoadingData } =
171
+ useEntityRecords( 'postType', TEMPLATE_POST_TYPE, {
30
172
  per_page: -1,
173
+ } );
174
+ const history = useHistory();
175
+
176
+ const onSelectionChange = useCallback(
177
+ ( items ) =>
178
+ setTemplateId( items?.length === 1 ? items[ 0 ].id : null ),
179
+ [ setTemplateId ]
180
+ );
181
+
182
+ const authors = useMemo( () => {
183
+ if ( ! allTemplates ) {
184
+ return EMPTY_ARRAY;
31
185
  }
186
+ const authorsSet = new Set();
187
+ allTemplates.forEach( ( template ) => {
188
+ authorsSet.add( template.author_text );
189
+ } );
190
+ return Array.from( authorsSet ).map( ( author ) => ( {
191
+ value: author,
192
+ label: author,
193
+ } ) );
194
+ }, [ allTemplates ] );
195
+
196
+ const fields = useMemo(
197
+ () => [
198
+ {
199
+ header: __( 'Preview' ),
200
+ id: 'preview',
201
+ render: ( { item } ) => {
202
+ return (
203
+ <TemplatePreview
204
+ content={ item.content.raw }
205
+ viewType={ view.type }
206
+ />
207
+ );
208
+ },
209
+ minWidth: 120,
210
+ maxWidth: 120,
211
+ enableSorting: false,
212
+ },
213
+ {
214
+ header: __( 'Template' ),
215
+ id: 'title',
216
+ getValue: ( { item } ) => item.title?.rendered,
217
+ render: ( { item } ) => (
218
+ <TemplateTitle item={ item } viewType={ view.type } />
219
+ ),
220
+ maxWidth: 400,
221
+ enableHiding: false,
222
+ },
223
+ {
224
+ header: __( 'Description' ),
225
+ id: 'description',
226
+ getValue: ( { item } ) => item.description,
227
+ render: ( { item } ) => {
228
+ return item.description ? (
229
+ decodeEntities( item.description )
230
+ ) : (
231
+ <>
232
+ <Text variant="muted" aria-hidden="true">
233
+ &#8212;
234
+ </Text>
235
+ <VisuallyHidden>
236
+ { __( 'No description.' ) }
237
+ </VisuallyHidden>
238
+ </>
239
+ );
240
+ },
241
+ maxWidth: 200,
242
+ enableSorting: false,
243
+ },
244
+ {
245
+ header: __( 'Author' ),
246
+ id: 'author',
247
+ getValue: ( { item } ) => item.author_text,
248
+ render: ( { item } ) => {
249
+ return <AuthorField viewType={ view.type } item={ item } />;
250
+ },
251
+ enableHiding: false,
252
+ type: ENUMERATION_TYPE,
253
+ elements: authors,
254
+ },
255
+ ],
256
+ [ authors, view.type ]
32
257
  );
33
258
 
34
- const columns = [
35
- {
36
- header: __( 'Template' ),
37
- cell: ( template ) => (
38
- <VStack>
39
- <Heading as="h3" level={ 5 }>
40
- <Link
41
- params={ {
42
- postId: template.id,
43
- postType: template.type,
44
- canvas: 'edit',
45
- } }
46
- >
47
- { decodeEntities(
48
- template.title?.rendered || template.slug
49
- ) }
50
- </Link>
51
- </Heading>
52
- { template.description && (
53
- <Text variant="muted">
54
- { decodeEntities( template.description ) }
55
- </Text>
56
- ) }
57
- </VStack>
58
- ),
59
- maxWidth: 400,
60
- },
61
- {
62
- header: __( 'Added by' ),
63
- cell: ( template ) => (
64
- <AddedBy postType={ template.type } postId={ template.id } />
65
- ),
66
- },
67
- {
68
- header: <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>,
69
- cell: ( template ) => (
70
- <TemplateActions
71
- postType={ template.type }
72
- postId={ template.id }
73
- />
74
- ),
259
+ const { data, paginationInfo } = useMemo( () => {
260
+ if ( ! allTemplates ) {
261
+ return {
262
+ data: EMPTY_ARRAY,
263
+ paginationInfo: { totalItems: 0, totalPages: 0 },
264
+ };
265
+ }
266
+ let filteredTemplates = [ ...allTemplates ];
267
+ // Handle global search.
268
+ if ( view.search ) {
269
+ const normalizedSearch = normalizeSearchInput( view.search );
270
+ filteredTemplates = filteredTemplates.filter( ( item ) => {
271
+ const title = item.title?.rendered || item.slug;
272
+ return (
273
+ normalizeSearchInput( title ).includes(
274
+ normalizedSearch
275
+ ) ||
276
+ normalizeSearchInput( item.description ).includes(
277
+ normalizedSearch
278
+ )
279
+ );
280
+ } );
281
+ }
282
+
283
+ // Handle filters.
284
+ if ( view.filters.length > 0 ) {
285
+ view.filters.forEach( ( filter ) => {
286
+ if (
287
+ filter.field === 'author' &&
288
+ filter.operator === OPERATOR_IN &&
289
+ !! filter.value
290
+ ) {
291
+ filteredTemplates = filteredTemplates.filter( ( item ) => {
292
+ return item.author_text === filter.value;
293
+ } );
294
+ } else if (
295
+ filter.field === 'author' &&
296
+ filter.operator === OPERATOR_NOT_IN &&
297
+ !! filter.value
298
+ ) {
299
+ filteredTemplates = filteredTemplates.filter( ( item ) => {
300
+ return item.author_text !== filter.value;
301
+ } );
302
+ }
303
+ } );
304
+ }
305
+
306
+ // Handle sorting.
307
+ if ( view.sort ) {
308
+ filteredTemplates = sortByTextFields( {
309
+ data: filteredTemplates,
310
+ view,
311
+ fields,
312
+ textFields: [ 'title' ],
313
+ } );
314
+ }
315
+ // Handle pagination.
316
+ return getPaginationResults( {
317
+ data: filteredTemplates,
318
+ view,
319
+ } );
320
+ }, [ allTemplates, view, fields ] );
321
+
322
+ const resetTemplateAction = useResetTemplateAction();
323
+ const actions = useMemo(
324
+ () => [
325
+ resetTemplateAction,
326
+ deleteTemplateAction,
327
+ renameTemplateAction,
328
+ postRevisionsAction,
329
+ ],
330
+ [ resetTemplateAction ]
331
+ );
332
+
333
+ const onChangeView = useCallback(
334
+ ( newView ) => {
335
+ if ( newView.type !== view.type ) {
336
+ newView = {
337
+ ...newView,
338
+ layout: {
339
+ ...defaultConfigPerViewType[ newView.type ],
340
+ },
341
+ };
342
+ }
343
+
344
+ setView( newView );
75
345
  },
76
- ];
346
+ [ view.type, setView ]
347
+ );
77
348
 
78
349
  return (
79
- <Page
80
- title={ __( 'Templates' ) }
81
- actions={
82
- <AddNewTemplate
83
- templateType={ TEMPLATE_POST_TYPE }
84
- showIcon={ false }
85
- toggleProps={ { variant: 'primary' } }
350
+ <>
351
+ <Page
352
+ className={
353
+ view.type === LAYOUT_LIST
354
+ ? 'edit-site-template-pages-list-view'
355
+ : null
356
+ }
357
+ title={ __( 'Templates' ) }
358
+ actions={
359
+ <AddNewTemplate
360
+ templateType={ TEMPLATE_POST_TYPE }
361
+ showIcon={ false }
362
+ toggleProps={ { variant: 'primary' } }
363
+ />
364
+ }
365
+ >
366
+ <DataViews
367
+ paginationInfo={ paginationInfo }
368
+ fields={ fields }
369
+ actions={ actions }
370
+ data={ data }
371
+ isLoading={ isLoadingData }
372
+ view={ view }
373
+ onChangeView={ onChangeView }
374
+ onSelectionChange={ onSelectionChange }
375
+ deferredRendering={
376
+ ! view.hiddenFields?.includes( 'preview' )
377
+ }
86
378
  />
87
- }
88
- >
89
- { templates && <Table data={ templates } columns={ columns } /> }
90
- </Page>
379
+ </Page>
380
+ { view.type === LAYOUT_LIST && (
381
+ <Page>
382
+ <div
383
+ className="edit-site-template-pages-preview"
384
+ tabIndex={ 0 }
385
+ role="button"
386
+ onKeyDown={ ( event ) => {
387
+ const { keyCode } = event;
388
+ if ( keyCode === ENTER || keyCode === SPACE ) {
389
+ history.push( {
390
+ postId: templateId,
391
+ postType: TEMPLATE_POST_TYPE,
392
+ canvas: 'edit',
393
+ } );
394
+ }
395
+ } }
396
+ onClick={ () =>
397
+ history.push( {
398
+ postId: templateId,
399
+ postType: TEMPLATE_POST_TYPE,
400
+ canvas: 'edit',
401
+ } )
402
+ }
403
+ >
404
+ { templateId !== null ? (
405
+ <PostPreview
406
+ postId={ templateId }
407
+ postType={ TEMPLATE_POST_TYPE }
408
+ />
409
+ ) : (
410
+ <div
411
+ style={ {
412
+ display: 'flex',
413
+ flexDirection: 'column',
414
+ justifyContent: 'center',
415
+ textAlign: 'center',
416
+ height: '100%',
417
+ } }
418
+ >
419
+ <p>{ __( 'Select a template to preview' ) }</p>
420
+ </div>
421
+ ) }
422
+ </div>
423
+ </Page>
424
+ ) }
425
+ </>
91
426
  );
92
427
  }
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -13,15 +18,21 @@ export default function Pagination( {
13
18
  numPages,
14
19
  changePage,
15
20
  totalItems,
21
+ className,
22
+ disabled = false,
23
+ buttonVariant = 'tertiary',
24
+ label = __( 'Pagination Navigation' ),
16
25
  } ) {
17
26
  return (
18
27
  <HStack
19
28
  expanded={ false }
29
+ as="nav"
30
+ aria-label={ label }
20
31
  spacing={ 3 }
21
32
  justify="flex-start"
22
- className="edit-site-patterns__grid-pagination"
33
+ className={ classnames( 'edit-site-pagination', className ) }
23
34
  >
24
- <Text variant="muted">
35
+ <Text variant="muted" className="edit-site-pagination__total">
25
36
  {
26
37
  // translators: %s: Total number of patterns.
27
38
  sprintf(
@@ -33,17 +44,17 @@ export default function Pagination( {
33
44
  </Text>
34
45
  <HStack expanded={ false } spacing={ 1 }>
35
46
  <Button
36
- variant="tertiary"
47
+ variant={ buttonVariant }
37
48
  onClick={ () => changePage( 1 ) }
38
- disabled={ currentPage === 1 }
49
+ disabled={ disabled || currentPage === 1 }
39
50
  aria-label={ __( 'First page' ) }
40
51
  >
41
52
  «
42
53
  </Button>
43
54
  <Button
44
- variant="tertiary"
55
+ variant={ buttonVariant }
45
56
  onClick={ () => changePage( currentPage - 1 ) }
46
- disabled={ currentPage === 1 }
57
+ disabled={ disabled || currentPage === 1 }
47
58
  aria-label={ __( 'Previous page' ) }
48
59
  >
49
60
 
@@ -59,17 +70,17 @@ export default function Pagination( {
59
70
  </Text>
60
71
  <HStack expanded={ false } spacing={ 1 }>
61
72
  <Button
62
- variant="tertiary"
73
+ variant={ buttonVariant }
63
74
  onClick={ () => changePage( currentPage + 1 ) }
64
- disabled={ currentPage === numPages }
75
+ disabled={ disabled || currentPage === numPages }
65
76
  aria-label={ __( 'Next page' ) }
66
77
  >
67
78
 
68
79
  </Button>
69
80
  <Button
70
- variant="tertiary"
81
+ variant={ buttonVariant }
71
82
  onClick={ () => changePage( numPages ) }
72
- disabled={ currentPage === numPages }
83
+ disabled={ disabled || currentPage === numPages }
73
84
  aria-label={ __( 'Last page' ) }
74
85
  >
75
86
  »
@@ -0,0 +1,5 @@
1
+ .edit-site-pagination .components-button.is-tertiary {
2
+ width: $button-size-compact;
3
+ height: $button-size-compact;
4
+ justify-content: center;
5
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import Editor from '../editor';
5
+ import { useInitEditedEntity } from '../sync-state-with-url/use-init-edited-entity-from-url';
6
+ import { useIsSiteEditorLoading } from '../layout/hooks';
7
+
8
+ export default function PostPreview( { postType, postId } ) {
9
+ useInitEditedEntity( {
10
+ postId,
11
+ postType,
12
+ } );
13
+ const isEditorLoading = useIsSiteEditorLoading();
14
+
15
+ return <Editor isLoading={ isEditorLoading } />;
16
+ }
@@ -6,16 +6,20 @@ import { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/
6
6
  import { store as preferencesStore } from '@wordpress/preferences';
7
7
 
8
8
  export default function EnableFeature( props ) {
9
- const { featureName, onToggle = () => {}, ...remainingProps } = props;
9
+ const {
10
+ scope = 'core/edit-site',
11
+ featureName,
12
+ onToggle = () => {},
13
+ ...remainingProps
14
+ } = props;
10
15
  const isChecked = useSelect(
11
- ( select ) =>
12
- !! select( preferencesStore ).get( 'core/edit-site', featureName ),
13
- [ featureName ]
16
+ ( select ) => !! select( preferencesStore ).get( scope, featureName ),
17
+ [ scope, featureName ]
14
18
  );
15
19
  const { toggle } = useDispatch( preferencesStore );
16
20
  const onChange = () => {
17
21
  onToggle();
18
- toggle( 'core/edit-site', featureName );
22
+ toggle( scope, featureName );
19
23
  };
20
24
  return (
21
25
  <BaseOption
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { compose, ifCondition } from '@wordpress/compose';
5
+ import { withSelect, withDispatch } from '@wordpress/data';
6
+ import { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';
7
+ import { store as editorStore } from '@wordpress/editor';
8
+
9
+ export default compose(
10
+ withSelect( ( select, { panelName } ) => {
11
+ const { isEditorPanelEnabled, isEditorPanelRemoved } =
12
+ select( editorStore );
13
+ return {
14
+ isRemoved: isEditorPanelRemoved( panelName ),
15
+ isChecked: isEditorPanelEnabled( panelName ),
16
+ };
17
+ } ),
18
+ ifCondition( ( { isRemoved } ) => ! isRemoved ),
19
+ withDispatch( ( dispatch, { panelName } ) => ( {
20
+ onChange: () =>
21
+ dispatch( editorStore ).toggleEditorPanelEnabled( panelName ),
22
+ } ) )
23
+ )( BaseOption );