@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
@@ -0,0 +1,380 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalHStack as HStack,
6
+ Button,
7
+ __experimentalHeading as Heading,
8
+ Tooltip,
9
+ Flex,
10
+ } from '@wordpress/components';
11
+ import { getQueryArgs } from '@wordpress/url';
12
+ import { __, _x } from '@wordpress/i18n';
13
+ import {
14
+ useState,
15
+ useMemo,
16
+ useCallback,
17
+ useId,
18
+ useEffect,
19
+ } from '@wordpress/element';
20
+ import {
21
+ BlockPreview,
22
+ privateApis as blockEditorPrivateApis,
23
+ } from '@wordpress/block-editor';
24
+ import {
25
+ DataViews,
26
+ sortByTextFields,
27
+ getPaginationResults,
28
+ } from '@wordpress/dataviews';
29
+ import {
30
+ Icon,
31
+ header,
32
+ footer,
33
+ symbolFilled as uncategorized,
34
+ symbol,
35
+ lockSmall,
36
+ } from '@wordpress/icons';
37
+ import { usePrevious } from '@wordpress/compose';
38
+
39
+ /**
40
+ * Internal dependencies
41
+ */
42
+ import Page from '../page';
43
+ import {
44
+ LAYOUT_GRID,
45
+ PATTERN_TYPES,
46
+ TEMPLATE_PART_POST_TYPE,
47
+ PATTERN_SYNC_TYPES,
48
+ PATTERN_DEFAULT_CATEGORY,
49
+ ENUMERATION_TYPE,
50
+ OPERATOR_IN,
51
+ } from '../../utils/constants';
52
+ import {
53
+ exportJSONaction,
54
+ renameAction,
55
+ resetAction,
56
+ deleteAction,
57
+ duplicatePatternAction,
58
+ duplicateTemplatePartAction,
59
+ } from './dataviews-pattern-actions';
60
+ import usePatternSettings from './use-pattern-settings';
61
+ import { unlock } from '../../lock-unlock';
62
+ import usePatterns from './use-patterns';
63
+ import PatternsHeader from './header';
64
+ import { useLink } from '../routes/link';
65
+
66
+ const { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(
67
+ blockEditorPrivateApis
68
+ );
69
+
70
+ const templatePartIcons = { header, footer, uncategorized };
71
+ const EMPTY_ARRAY = [];
72
+ const defaultConfigPerViewType = {
73
+ [ LAYOUT_GRID ]: {
74
+ mediaField: 'preview',
75
+ primaryField: 'title',
76
+ },
77
+ };
78
+ const DEFAULT_VIEW = {
79
+ type: LAYOUT_GRID,
80
+ search: '',
81
+ page: 1,
82
+ perPage: 20,
83
+ hiddenFields: [ 'sync-status' ],
84
+ layout: {
85
+ ...defaultConfigPerViewType[ LAYOUT_GRID ],
86
+ },
87
+ filters: [],
88
+ };
89
+
90
+ const SYNC_FILTERS = [
91
+ {
92
+ value: PATTERN_SYNC_TYPES.full,
93
+ label: _x( 'Synced', 'Option that shows all synchronized patterns' ),
94
+ description: __( 'Patterns that are kept in sync across the site.' ),
95
+ },
96
+ {
97
+ value: PATTERN_SYNC_TYPES.unsynced,
98
+ label: _x(
99
+ 'Not synced',
100
+ 'Option that shows all patterns that are not synchronized'
101
+ ),
102
+ description: __(
103
+ 'Patterns that can be changed freely without affecting the site.'
104
+ ),
105
+ },
106
+ ];
107
+
108
+ function Preview( { item, viewType } ) {
109
+ const descriptionId = useId();
110
+ const isUserPattern = item.type === PATTERN_TYPES.user;
111
+ const isNonUserPattern = item.type === PATTERN_TYPES.theme;
112
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
113
+ const isEmpty = ! item.blocks?.length;
114
+ // Only custom patterns or custom template parts can be renamed or deleted.
115
+ const isCustomPattern =
116
+ isUserPattern || ( isTemplatePart && item.isCustom );
117
+ const ariaDescriptions = [];
118
+ if ( isCustomPattern ) {
119
+ // User patterns don't have descriptions, but can be edited and deleted, so include some help text.
120
+ ariaDescriptions.push(
121
+ __( 'Press Enter to edit, or Delete to delete the pattern.' )
122
+ );
123
+ } else if ( item.description ) {
124
+ ariaDescriptions.push( item.description );
125
+ }
126
+
127
+ if ( isNonUserPattern ) {
128
+ ariaDescriptions.push(
129
+ __( 'Theme & plugin patterns cannot be edited.' )
130
+ );
131
+ }
132
+ const [ backgroundColor ] = useGlobalStyle( 'color.background' );
133
+ return (
134
+ <>
135
+ <div
136
+ className={ `page-patterns-preview-field is-viewtype-${ viewType }` }
137
+ style={ { backgroundColor } }
138
+ >
139
+ { isEmpty && isTemplatePart && __( 'Empty template part' ) }
140
+ { isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }
141
+ { ! isEmpty && <BlockPreview blocks={ item.blocks } /> }
142
+ </div>
143
+ { ariaDescriptions.map( ( ariaDescription, index ) => (
144
+ <div
145
+ key={ index }
146
+ hidden
147
+ id={ `${ descriptionId }-${ index }` }
148
+ >
149
+ { ariaDescription }
150
+ </div>
151
+ ) ) }
152
+ </>
153
+ );
154
+ }
155
+
156
+ function Title( { item, categoryId } ) {
157
+ const isUserPattern = item.type === PATTERN_TYPES.user;
158
+ const isNonUserPattern = item.type === PATTERN_TYPES.theme;
159
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
160
+ let itemIcon;
161
+ const { onClick } = useLink( {
162
+ postType: item.type,
163
+ postId: isUserPattern ? item.id : item.name,
164
+ categoryId,
165
+ categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,
166
+ } );
167
+ if ( ! isUserPattern && templatePartIcons[ categoryId ] ) {
168
+ itemIcon = templatePartIcons[ categoryId ];
169
+ } else {
170
+ itemIcon =
171
+ item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
172
+ }
173
+ return (
174
+ <HStack alignment="center" justify="flex-start" spacing={ 2 }>
175
+ { itemIcon && ! isNonUserPattern && (
176
+ <Tooltip
177
+ placement="top"
178
+ text={ __(
179
+ 'Editing this pattern will also update anywhere it is used'
180
+ ) }
181
+ >
182
+ <Icon
183
+ className="edit-site-patterns__pattern-icon"
184
+ icon={ itemIcon }
185
+ />
186
+ </Tooltip>
187
+ ) }
188
+ { item.type === PATTERN_TYPES.theme && (
189
+ <Tooltip
190
+ placement="top"
191
+ text={ __( 'This pattern cannot be edited.' ) }
192
+ >
193
+ <Icon
194
+ className="edit-site-patterns__pattern-lock-icon"
195
+ icon={ lockSmall }
196
+ size={ 24 }
197
+ />
198
+ </Tooltip>
199
+ ) }
200
+ <Flex as="span" gap={ 0 } justify="left">
201
+ { item.type === PATTERN_TYPES.theme ? (
202
+ <span className="dataviews-view-grid__title-field">
203
+ { item.title }
204
+ </span>
205
+ ) : (
206
+ <Heading level={ 5 }>
207
+ <Button
208
+ variant="link"
209
+ onClick={ onClick }
210
+ // Required for the grid's roving tab index system.
211
+ // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
212
+ tabIndex="-1"
213
+ className="dataviews-view-grid__title-field"
214
+ >
215
+ { item.title || item.name }
216
+ </Button>
217
+ </Heading>
218
+ ) }
219
+ </Flex>
220
+ </HStack>
221
+ );
222
+ }
223
+
224
+ export default function DataviewsPatterns() {
225
+ const { categoryType, categoryId = PATTERN_DEFAULT_CATEGORY } =
226
+ getQueryArgs( window.location.href );
227
+ const type = categoryType || PATTERN_TYPES.theme;
228
+ const [ view, setView ] = useState( DEFAULT_VIEW );
229
+ const isUncategorizedThemePatterns =
230
+ type === PATTERN_TYPES.theme && categoryId === 'uncategorized';
231
+ const previousCategoryId = usePrevious( categoryId );
232
+ const viewSyncStatus = view.filters?.find(
233
+ ( { field } ) => field === 'sync-status'
234
+ )?.value;
235
+ const { patterns, isResolving } = usePatterns(
236
+ type,
237
+ isUncategorizedThemePatterns ? '' : categoryId,
238
+ {
239
+ search: view.search,
240
+ syncStatus: viewSyncStatus,
241
+ }
242
+ );
243
+ const fields = useMemo( () => {
244
+ const _fields = [
245
+ {
246
+ header: __( 'Preview' ),
247
+ id: 'preview',
248
+ render: ( { item } ) => (
249
+ <Preview item={ item } viewType={ view.type } />
250
+ ),
251
+ enableSorting: false,
252
+ enableHiding: false,
253
+ },
254
+ {
255
+ header: __( 'Title' ),
256
+ id: 'title',
257
+ getValue: ( { item } ) => item.title,
258
+ render: ( { item } ) => (
259
+ <Title item={ item } categoryId={ categoryId } />
260
+ ),
261
+ enableHiding: false,
262
+ },
263
+ ];
264
+ if ( type === PATTERN_TYPES.theme ) {
265
+ _fields.push( {
266
+ header: __( 'Sync Status' ),
267
+ id: 'sync-status',
268
+ render: ( { item } ) => {
269
+ // User patterns can have their sync statuses checked directly.
270
+ // Non-user patterns are all unsynced for the time being.
271
+ return (
272
+ SYNC_FILTERS.find(
273
+ ( { value } ) => value === item.syncStatus
274
+ )?.label ||
275
+ SYNC_FILTERS.find(
276
+ ( { value } ) =>
277
+ value === PATTERN_SYNC_TYPES.unsynced
278
+ ).label
279
+ );
280
+ },
281
+ type: ENUMERATION_TYPE,
282
+ elements: SYNC_FILTERS,
283
+ filterBy: {
284
+ operators: [ OPERATOR_IN ],
285
+ },
286
+ enableSorting: false,
287
+ } );
288
+ }
289
+ return _fields;
290
+ }, [ view.type, categoryId, type ] );
291
+ // Reset the page number when the category changes.
292
+ useEffect( () => {
293
+ if ( previousCategoryId !== categoryId ) {
294
+ setView( DEFAULT_VIEW );
295
+ }
296
+ }, [ categoryId, previousCategoryId ] );
297
+ const { data, paginationInfo } = useMemo( () => {
298
+ if ( ! patterns ) {
299
+ return {
300
+ data: EMPTY_ARRAY,
301
+ paginationInfo: { totalItems: 0, totalPages: 0 },
302
+ };
303
+ }
304
+ let filteredData = [ ...patterns ];
305
+ // Handle sorting.
306
+ if ( view.sort ) {
307
+ filteredData = sortByTextFields( {
308
+ data: filteredData,
309
+ view,
310
+ fields,
311
+ textFields: [ 'title', 'author' ],
312
+ } );
313
+ }
314
+ // Handle pagination.
315
+ return getPaginationResults( {
316
+ data: filteredData,
317
+ view,
318
+ } );
319
+ }, [ patterns, view, fields ] );
320
+
321
+ const actions = useMemo(
322
+ () => [
323
+ renameAction,
324
+ duplicatePatternAction,
325
+ duplicateTemplatePartAction,
326
+ exportJSONaction,
327
+ resetAction,
328
+ deleteAction,
329
+ ],
330
+ []
331
+ );
332
+ const onChangeView = useCallback(
333
+ ( newView ) => {
334
+ if ( newView.type !== view.type ) {
335
+ newView = {
336
+ ...newView,
337
+ layout: {
338
+ ...defaultConfigPerViewType[ newView.type ],
339
+ },
340
+ };
341
+ }
342
+ setView( newView );
343
+ },
344
+ [ view.type, setView ]
345
+ );
346
+ const id = useId();
347
+ const settings = usePatternSettings();
348
+ // Wrap everything in a block editor provider.
349
+ // This ensures 'styles' that are needed for the previews are synced
350
+ // from the site editor store to the block editor store.
351
+ // TODO: check if I add the provider in every preview like in templates...
352
+ return (
353
+ <ExperimentalBlockEditorProvider settings={ settings }>
354
+ <Page
355
+ title={ __( 'Patterns content' ) }
356
+ className="edit-site-page-patterns-dataviews"
357
+ hideTitleFromUI
358
+ >
359
+ <PatternsHeader
360
+ categoryId={ categoryId }
361
+ type={ type }
362
+ titleId={ `${ id }-title` }
363
+ descriptionId={ `${ id }-description` }
364
+ />
365
+ <DataViews
366
+ paginationInfo={ paginationInfo }
367
+ fields={ fields }
368
+ actions={ actions }
369
+ data={ data || EMPTY_ARRAY }
370
+ getItemId={ ( item ) => item.name }
371
+ isLoading={ isResolving }
372
+ view={ view }
373
+ onChangeView={ onChangeView }
374
+ deferredRendering={ true }
375
+ supportedLayouts={ [ LAYOUT_GRID ] }
376
+ />
377
+ </Page>
378
+ </ExperimentalBlockEditorProvider>
379
+ );
380
+ }
@@ -81,7 +81,7 @@ export default function DuplicateMenuItem( {
81
81
  <DuplicatePatternModal
82
82
  onClose={ closeModal }
83
83
  onSuccess={ onPatternSuccess }
84
- pattern={ isThemePattern ? item : item.patternBlock }
84
+ pattern={ isThemePattern ? item : item.patternPost }
85
85
  />
86
86
  ) }
87
87
  { isModalOpen && isTemplatePart && (
@@ -114,8 +114,8 @@ function GridItem( { categoryId, item, ...props } ) {
114
114
  const json = {
115
115
  __file: item.type,
116
116
  title: item.title || item.name,
117
- content: item.patternBlock.content.raw,
118
- syncStatus: item.patternBlock.wp_pattern_sync_status,
117
+ content: item.patternPost.content.raw,
118
+ syncStatus: item.patternPost.wp_pattern_sync_status,
119
119
  };
120
120
 
121
121
  return downloadBlob(
@@ -200,6 +200,7 @@ function GridItem( { categoryId, item, ...props } ) {
200
200
  <BlockPreview
201
201
  blocks={ item.blocks }
202
202
  additionalStyles={ additionalStyles }
203
+ viewportWidth={ item.viewportWidth }
203
204
  />
204
205
  ) }
205
206
  </button>
@@ -31,7 +31,7 @@ import usePatterns from './use-patterns';
31
31
  import SidebarButton from '../sidebar-button';
32
32
  import { unlock } from '../../lock-unlock';
33
33
  import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../../utils/constants';
34
- import Pagination from './pagination';
34
+ import Pagination from '../pagination';
35
35
 
36
36
  const { useLocation, useHistory } = unlock( routerPrivateApis );
37
37
 
@@ -217,6 +217,7 @@ export default function PatternsList( { categoryId, type } ) {
217
217
  </VStack>
218
218
  { numPages > 1 && (
219
219
  <Pagination
220
+ className="edit-site-patterns__pagination"
220
221
  currentPage={ currentPage }
221
222
  numPages={ numPages }
222
223
  changePage={ changePage }
@@ -67,32 +67,6 @@
67
67
  background: $gray-700;
68
68
  color: $gray-100;
69
69
  }
70
-
71
- .edit-site-patterns__grid-pagination {
72
- border-top: 1px solid $gray-800;
73
- background: $gray-900;
74
- padding: $grid-unit-30 $grid-unit-40;
75
- position: sticky;
76
- bottom: 0;
77
- z-index: z-index(".edit-site-patterns__grid-pagination");
78
-
79
- .components-button.is-tertiary {
80
- width: $button-size-compact;
81
- height: $button-size-compact;
82
- color: $gray-100;
83
- background-color: $gray-800;
84
- justify-content: center;
85
-
86
- &:disabled {
87
- color: $gray-600;
88
- background: none;
89
- }
90
-
91
- &:hover:not(:disabled) {
92
- background-color: $gray-700;
93
- }
94
- }
95
- }
96
70
  }
97
71
 
98
72
  .edit-site-patterns__header {
@@ -226,3 +200,92 @@
226
200
  .edit-site-patterns__delete-modal {
227
201
  width: $modal-width-small;
228
202
  }
203
+
204
+ .edit-site-patterns__pagination {
205
+ padding: $grid-unit-30 $grid-unit-40;
206
+ border-top: 1px solid $gray-800;
207
+ background: $gray-900;
208
+ position: sticky;
209
+ bottom: 0;
210
+ color: $gray-100;
211
+ z-index: z-index(".edit-site-patterns__grid-pagination");
212
+ .components-button.is-tertiary {
213
+ background-color: $gray-800;
214
+ color: $gray-100;
215
+
216
+ &:disabled {
217
+ color: $gray-600;
218
+ background: none;
219
+ }
220
+
221
+ &:hover:not(:disabled) {
222
+ background-color: $gray-700;
223
+ }
224
+ }
225
+ }
226
+
227
+ /**
228
+ * DataViews patterns styles.
229
+ * TODO: when this becomes stable, consolidate styles with the above.
230
+ */
231
+ .edit-site-page-patterns-dataviews {
232
+ .page-patterns-preview-field {
233
+ &.is-viewtype-grid {
234
+ .block-editor-block-preview__container {
235
+ height: auto;
236
+ }
237
+ }
238
+ }
239
+
240
+ .edit-site-patterns__pattern-icon {
241
+ fill: var(--wp-block-synced-color);
242
+ flex-shrink: 0;
243
+ }
244
+
245
+ .edit-site-patterns__pattern-lock-icon {
246
+ min-width: min-content;
247
+ }
248
+
249
+ .edit-site-patterns__section-header {
250
+ border-bottom: 1px solid #f0f0f0;
251
+ min-height: 72px;
252
+ padding: $grid-unit-20 $grid-unit-40;
253
+ position: sticky;
254
+ top: 0;
255
+ z-index: 2;
256
+ }
257
+ }
258
+
259
+ .dataviews-action-modal__duplicate-pattern {
260
+ // Fix the modal width to prevent added categories from stretching the modal.
261
+ [role="dialog"] > [role="document"] {
262
+ width: 350px;
263
+ }
264
+
265
+ .patterns-menu-items__convert-modal-categories {
266
+ position: relative;
267
+ }
268
+
269
+ .components-form-token-field__suggestions-list:not(:empty) {
270
+ position: absolute;
271
+ border: $border-width solid var(--wp-admin-theme-color);
272
+ border-bottom-left-radius: $radius-block-ui;
273
+ border-bottom-right-radius: $radius-block-ui;
274
+ box-shadow: 0 0 0.5px 0.5px var(--wp-admin-theme-color);
275
+ box-sizing: border-box;
276
+ z-index: 1;
277
+ background-color: $white;
278
+ width: calc(100% + 2px); // Account for the border width of the token field.
279
+ left: -1px;
280
+ min-width: initial;
281
+ max-height: $grid-unit-60 * 2; // Adjust to not cover the save button, showing three items.
282
+ }
283
+ }
284
+
285
+ .dataviews-action-modal__duplicate-template-part {
286
+ .components-modal__frame {
287
+ @include break-small {
288
+ max-width: 500px;
289
+ }
290
+ }
291
+ }
@@ -184,29 +184,38 @@ const selectPatterns = createSelector(
184
184
  ]
185
185
  );
186
186
 
187
- const patternBlockToPattern = ( patternBlock, categories ) => ( {
188
- blocks: parse( patternBlock.content.raw, {
187
+ /**
188
+ * Converts a post of type `wp_block` to a 'pattern item' that more closely
189
+ * matches the structure of theme provided patterns.
190
+ *
191
+ * @param {Object} patternPost The `wp_block` record being normalized.
192
+ * @param {Map} categories A Map of user created categories.
193
+ *
194
+ * @return {Object} The normalized item.
195
+ */
196
+ const convertPatternPostToItem = ( patternPost, categories ) => ( {
197
+ blocks: parse( patternPost.content.raw, {
189
198
  __unstableSkipMigrationLogs: true,
190
199
  } ),
191
- ...( patternBlock.wp_pattern_category.length > 0 && {
192
- categories: patternBlock.wp_pattern_category.map(
200
+ ...( patternPost.wp_pattern_category.length > 0 && {
201
+ categories: patternPost.wp_pattern_category.map(
193
202
  ( patternCategoryId ) =>
194
203
  categories && categories.get( patternCategoryId )
195
204
  ? categories.get( patternCategoryId ).slug
196
205
  : patternCategoryId
197
206
  ),
198
207
  } ),
199
- termLabels: patternBlock.wp_pattern_category.map( ( patternCategoryId ) =>
208
+ termLabels: patternPost.wp_pattern_category.map( ( patternCategoryId ) =>
200
209
  categories?.get( patternCategoryId )
201
210
  ? categories.get( patternCategoryId ).label
202
211
  : patternCategoryId
203
212
  ),
204
- id: patternBlock.id,
205
- name: patternBlock.slug,
206
- syncStatus: patternBlock.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,
207
- title: patternBlock.title.raw,
208
- type: PATTERN_TYPES.user,
209
- patternBlock,
213
+ id: patternPost.id,
214
+ name: patternPost.slug,
215
+ syncStatus: patternPost.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,
216
+ title: patternPost.title.raw,
217
+ type: patternPost.type,
218
+ patternPost,
210
219
  } );
211
220
 
212
221
  const selectUserPatterns = createSelector(
@@ -215,7 +224,7 @@ const selectUserPatterns = createSelector(
215
224
  select( coreStore );
216
225
 
217
226
  const query = { per_page: -1 };
218
- const records = getEntityRecords(
227
+ const patternPosts = getEntityRecords(
219
228
  'postType',
220
229
  PATTERN_TYPES.user,
221
230
  query
@@ -225,9 +234,9 @@ const selectUserPatterns = createSelector(
225
234
  userPatternCategories.forEach( ( userCategory ) =>
226
235
  categories.set( userCategory.id, userCategory )
227
236
  );
228
- let patterns = records
229
- ? records.map( ( record ) =>
230
- patternBlockToPattern( record, categories )
237
+ let patterns = patternPosts
238
+ ? patternPosts.map( ( record ) =>
239
+ convertPatternPostToItem( record, categories )
231
240
  )
232
241
  : EMPTY_PATTERN_LIST;
233
242