@wordpress/edit-site 5.28.5 → 5.30.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 (446) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +1 -1
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/editor-canvas.js +10 -11
  5. package/build/components/block-editor/editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +2 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/code-editor/index.js +3 -2
  9. package/build/components/code-editor/index.js.map +1 -1
  10. package/build/components/editor/index.js +5 -19
  11. package/build/components/editor/index.js.map +1 -1
  12. package/build/components/editor-canvas-container/index.js +1 -1
  13. package/build/components/editor-canvas-container/index.js.map +1 -1
  14. package/build/components/global-styles/color-palette-panel.js +9 -0
  15. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  16. package/build/components/global-styles/font-families.js +1 -1
  17. package/build/components/global-styles/font-families.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/context.js +11 -0
  20. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/font-collection.js +5 -16
  22. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/index.js +2 -2
  24. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  26. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/utils/index.js +27 -0
  30. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  33. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  34. package/build/components/global-styles/header.js +1 -1
  35. package/build/components/global-styles/header.js.map +1 -1
  36. package/build/components/global-styles/highlighted-colors.js +50 -0
  37. package/build/components/global-styles/highlighted-colors.js.map +1 -0
  38. package/build/components/global-styles/preview-colors.js +62 -0
  39. package/build/components/global-styles/preview-colors.js.map +1 -0
  40. package/build/components/global-styles/preview-iframe.js +131 -0
  41. package/build/components/global-styles/preview-iframe.js.map +1 -0
  42. package/build/components/global-styles/preview-styles.js +163 -0
  43. package/build/components/global-styles/preview-styles.js.map +1 -0
  44. package/build/components/global-styles/preview-typography.js +65 -0
  45. package/build/components/global-styles/preview-typography.js.map +1 -0
  46. package/build/components/global-styles/screen-block-list.js +1 -1
  47. package/build/components/global-styles/screen-block-list.js.map +1 -1
  48. package/build/components/global-styles/screen-block.js +1 -1
  49. package/build/components/global-styles/screen-block.js.map +1 -1
  50. package/build/components/global-styles/screen-colors.js +10 -2
  51. package/build/components/global-styles/screen-colors.js.map +1 -1
  52. package/build/components/global-styles/screen-root.js +2 -2
  53. package/build/components/global-styles/screen-root.js.map +1 -1
  54. package/build/components/global-styles/screen-typography.js +10 -2
  55. package/build/components/global-styles/screen-typography.js.map +1 -1
  56. package/build/components/global-styles/style-variations-container.js +12 -84
  57. package/build/components/global-styles/style-variations-container.js.map +1 -1
  58. package/build/components/global-styles/{typogrphy-elements.js → typography-elements.js} +1 -1
  59. package/build/components/global-styles/typography-elements.js.map +1 -0
  60. package/build/components/global-styles/utils.js +22 -0
  61. package/build/components/global-styles/utils.js.map +1 -1
  62. package/build/components/global-styles/variations/variation.js +90 -0
  63. package/build/components/global-styles/variations/variation.js.map +1 -0
  64. package/build/components/global-styles/variations/variations-color.js +36 -0
  65. package/build/components/global-styles/variations/variations-color.js.map +1 -0
  66. package/build/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  67. package/build/components/global-styles/variations/variations-panel.js.map +1 -0
  68. package/build/components/global-styles/variations/variations-typography.js +64 -0
  69. package/build/components/global-styles/variations/variations-typography.js.map +1 -0
  70. package/build/components/header-edit-mode/document-tools/index.js +1 -2
  71. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  72. package/build/components/header-edit-mode/index.js +16 -13
  73. package/build/components/header-edit-mode/index.js.map +1 -1
  74. package/build/components/header-edit-mode/more-menu/index.js +17 -6
  75. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  76. package/build/components/keyboard-shortcuts/edit-mode.js +0 -13
  77. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  78. package/build/components/keyboard-shortcuts/register.js +0 -18
  79. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  80. package/build/components/layout/index.js +4 -2
  81. package/build/components/layout/index.js.map +1 -1
  82. package/build/components/page-patterns/dataviews-pattern-actions.js +25 -8
  83. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  84. package/build/components/page-patterns/header.js +2 -1
  85. package/build/components/page-patterns/header.js.map +1 -1
  86. package/build/components/page-patterns/index.js +0 -1
  87. package/build/components/page-patterns/index.js.map +1 -1
  88. package/build/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -61
  89. package/build/components/page-templates-template-parts/hooks.js.map +1 -0
  90. package/build/components/page-templates-template-parts/index.js +14 -6
  91. package/build/components/page-templates-template-parts/index.js.map +1 -1
  92. package/build/components/revisions/index.js.map +1 -1
  93. package/build/components/save-button/index.js +2 -1
  94. package/build/components/save-button/index.js.map +1 -1
  95. package/build/components/save-panel/index.js +18 -3
  96. package/build/components/save-panel/index.js.map +1 -1
  97. package/build/components/sidebar/index.js +1 -1
  98. package/build/components/sidebar/index.js.map +1 -1
  99. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  100. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  101. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  102. package/build/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  103. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  104. package/build/components/sidebar-edit-mode/template-panel/index.js +48 -5
  105. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  106. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  107. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  108. package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  109. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  110. package/build/components/sidebar-navigation-screen-main/index.js +1 -2
  111. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  112. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  113. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  114. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  115. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  116. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  117. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +2 -2
  118. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  119. package/build/components/sidebar-navigation-screen-template/index.js +2 -2
  120. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  121. package/build/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  122. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  123. package/build/components/start-template-options/index.js.map +1 -1
  124. package/build/hooks/commands/use-edit-mode-commands.js +3 -171
  125. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  126. package/build/hooks/index.js +0 -1
  127. package/build/hooks/index.js.map +1 -1
  128. package/build/hooks/push-changes-to-global-styles/index.js +4 -5
  129. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  130. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +156 -0
  131. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  132. package/build/store/actions.js +19 -50
  133. package/build/store/actions.js.map +1 -1
  134. package/build/utils/clone-deep.js +15 -0
  135. package/build/utils/clone-deep.js.map +1 -0
  136. package/build-module/components/actions/index.js +1 -1
  137. package/build-module/components/actions/index.js.map +1 -1
  138. package/build-module/components/block-editor/editor-canvas.js +10 -11
  139. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  140. package/build-module/components/block-editor/use-site-editor-settings.js +2 -1
  141. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  142. package/build-module/components/code-editor/index.js +3 -2
  143. package/build-module/components/code-editor/index.js.map +1 -1
  144. package/build-module/components/editor/index.js +6 -20
  145. package/build-module/components/editor/index.js.map +1 -1
  146. package/build-module/components/editor-canvas-container/index.js +2 -2
  147. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  148. package/build-module/components/global-styles/color-palette-panel.js +8 -0
  149. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  150. package/build-module/components/global-styles/font-families.js +1 -1
  151. package/build-module/components/global-styles/font-families.js.map +1 -1
  152. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  153. package/build-module/components/global-styles/font-library-modal/context.js +12 -1
  154. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  155. package/build-module/components/global-styles/font-library-modal/font-collection.js +7 -18
  156. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  157. package/build-module/components/global-styles/font-library-modal/index.js +2 -2
  158. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  159. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  160. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  161. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  162. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  163. package/build-module/components/global-styles/font-library-modal/utils/index.js +26 -0
  164. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  165. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +1 -1
  166. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  167. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  168. package/build-module/components/global-styles/header.js +1 -1
  169. package/build-module/components/global-styles/header.js.map +1 -1
  170. package/build-module/components/global-styles/highlighted-colors.js +43 -0
  171. package/build-module/components/global-styles/highlighted-colors.js.map +1 -0
  172. package/build-module/components/global-styles/preview-colors.js +54 -0
  173. package/build-module/components/global-styles/preview-colors.js.map +1 -0
  174. package/build-module/components/global-styles/preview-iframe.js +124 -0
  175. package/build-module/components/global-styles/preview-iframe.js.map +1 -0
  176. package/build-module/components/global-styles/preview-styles.js +155 -0
  177. package/build-module/components/global-styles/preview-styles.js.map +1 -0
  178. package/build-module/components/global-styles/preview-typography.js +58 -0
  179. package/build-module/components/global-styles/preview-typography.js.map +1 -0
  180. package/build-module/components/global-styles/screen-block-list.js +1 -1
  181. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  182. package/build-module/components/global-styles/screen-block.js +1 -1
  183. package/build-module/components/global-styles/screen-block.js.map +1 -1
  184. package/build-module/components/global-styles/screen-colors.js +10 -2
  185. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  186. package/build-module/components/global-styles/screen-root.js +2 -2
  187. package/build-module/components/global-styles/screen-root.js.map +1 -1
  188. package/build-module/components/global-styles/screen-typography.js +10 -2
  189. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  190. package/build-module/components/global-styles/style-variations-container.js +13 -85
  191. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  192. package/build-module/components/global-styles/{typogrphy-elements.js → typography-elements.js} +1 -1
  193. package/build-module/components/global-styles/typography-elements.js.map +1 -0
  194. package/build-module/components/global-styles/utils.js +21 -0
  195. package/build-module/components/global-styles/utils.js.map +1 -1
  196. package/build-module/components/global-styles/variations/variation.js +82 -0
  197. package/build-module/components/global-styles/variations/variation.js.map +1 -0
  198. package/build-module/components/global-styles/variations/variations-color.js +28 -0
  199. package/build-module/components/global-styles/variations/variations-color.js.map +1 -0
  200. package/build-module/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  201. package/build-module/components/global-styles/variations/variations-panel.js.map +1 -0
  202. package/build-module/components/global-styles/variations/variations-typography.js +56 -0
  203. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -0
  204. package/build-module/components/header-edit-mode/document-tools/index.js +1 -2
  205. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  206. package/build-module/components/header-edit-mode/index.js +17 -14
  207. package/build-module/components/header-edit-mode/index.js.map +1 -1
  208. package/build-module/components/header-edit-mode/more-menu/index.js +19 -8
  209. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  210. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -13
  211. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  212. package/build-module/components/keyboard-shortcuts/register.js +0 -18
  213. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  214. package/build-module/components/layout/index.js +5 -3
  215. package/build-module/components/layout/index.js.map +1 -1
  216. package/build-module/components/page-patterns/dataviews-pattern-actions.js +25 -8
  217. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  218. package/build-module/components/page-patterns/header.js +2 -1
  219. package/build-module/components/page-patterns/header.js.map +1 -1
  220. package/build-module/components/page-patterns/index.js +0 -1
  221. package/build-module/components/page-patterns/index.js.map +1 -1
  222. package/build-module/components/{list/added-by.js → page-templates-template-parts/hooks.js} +2 -59
  223. package/build-module/components/page-templates-template-parts/hooks.js.map +1 -0
  224. package/build-module/components/page-templates-template-parts/index.js +13 -5
  225. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  226. package/build-module/components/revisions/index.js.map +1 -1
  227. package/build-module/components/save-button/index.js +2 -1
  228. package/build-module/components/save-button/index.js.map +1 -1
  229. package/build-module/components/save-panel/index.js +18 -3
  230. package/build-module/components/save-panel/index.js.map +1 -1
  231. package/build-module/components/sidebar/index.js +1 -1
  232. package/build-module/components/sidebar/index.js.map +1 -1
  233. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  234. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  235. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  236. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  237. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  238. package/build-module/components/sidebar-edit-mode/template-panel/index.js +50 -7
  239. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  240. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  241. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  242. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  243. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  244. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -2
  245. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  246. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  247. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  248. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  249. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  250. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  251. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  252. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  253. package/build-module/components/sidebar-navigation-screen-template/index.js +1 -1
  254. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  255. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +1 -1
  256. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  257. package/build-module/components/start-template-options/index.js.map +1 -1
  258. package/build-module/hooks/commands/use-edit-mode-commands.js +4 -172
  259. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  260. package/build-module/hooks/index.js +0 -1
  261. package/build-module/hooks/index.js.map +1 -1
  262. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -3
  263. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  264. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +144 -0
  265. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  266. package/build-module/store/actions.js +19 -50
  267. package/build-module/store/actions.js.map +1 -1
  268. package/build-module/utils/clone-deep.js +9 -0
  269. package/build-module/utils/clone-deep.js.map +1 -0
  270. package/build-style/style-rtl.css +152 -472
  271. package/build-style/style.css +152 -472
  272. package/package.json +43 -42
  273. package/src/components/actions/index.js +1 -1
  274. package/src/components/block-editor/editor-canvas.js +13 -12
  275. package/src/components/block-editor/style.scss +0 -3
  276. package/src/components/block-editor/use-site-editor-settings.js +1 -0
  277. package/src/components/code-editor/index.js +3 -2
  278. package/src/components/editor/index.js +10 -27
  279. package/src/components/editor-canvas-container/index.js +2 -5
  280. package/src/components/{test → error-boundary/test}/error-boundary.js +7 -5
  281. package/src/components/global-styles/color-palette-panel.js +11 -1
  282. package/src/components/global-styles/font-families.js +1 -1
  283. package/src/components/global-styles/font-library-modal/collection-font-variant.js +1 -1
  284. package/src/components/global-styles/font-library-modal/context.js +24 -0
  285. package/src/components/global-styles/font-library-modal/font-collection.js +7 -24
  286. package/src/components/global-styles/font-library-modal/index.js +2 -2
  287. package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  288. package/src/components/global-styles/font-library-modal/library-font-variant.js +1 -1
  289. package/src/components/global-styles/font-library-modal/upload-fonts.js +1 -1
  290. package/src/components/global-styles/font-library-modal/utils/index.js +34 -0
  291. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +2 -1
  292. package/src/components/global-styles/gradients-palette-panel.js +2 -2
  293. package/src/components/global-styles/header.js +1 -1
  294. package/src/components/global-styles/highlighted-colors.js +39 -0
  295. package/src/components/global-styles/preview-colors.js +61 -0
  296. package/src/components/global-styles/preview-iframe.js +153 -0
  297. package/src/components/global-styles/preview-styles.js +185 -0
  298. package/src/components/global-styles/preview-typography.js +62 -0
  299. package/src/components/global-styles/screen-block-list.js +1 -1
  300. package/src/components/global-styles/screen-block.js +4 -1
  301. package/src/components/global-styles/screen-colors.js +13 -1
  302. package/src/components/global-styles/screen-revisions/style.scss +2 -2
  303. package/src/components/global-styles/screen-root.js +2 -2
  304. package/src/components/global-styles/screen-typography.js +19 -2
  305. package/src/components/global-styles/style-variations-container.js +14 -92
  306. package/src/components/global-styles/style.scss +1 -35
  307. package/src/components/global-styles/utils.js +37 -0
  308. package/src/components/global-styles/variations/style.scss +44 -0
  309. package/src/components/global-styles/variations/variation.js +93 -0
  310. package/src/components/global-styles/variations/variations-color.js +30 -0
  311. package/src/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  312. package/src/components/global-styles/variations/variations-typography.js +85 -0
  313. package/src/components/header-edit-mode/document-tools/index.js +1 -2
  314. package/src/components/header-edit-mode/index.js +22 -31
  315. package/src/components/header-edit-mode/more-menu/index.js +25 -11
  316. package/src/components/header-edit-mode/style.scss +4 -0
  317. package/src/components/keyboard-shortcuts/edit-mode.js +0 -11
  318. package/src/components/keyboard-shortcuts/register.js +0 -19
  319. package/src/components/layout/index.js +5 -2
  320. package/src/components/page-patterns/dataviews-pattern-actions.js +41 -10
  321. package/src/components/page-patterns/header.js +1 -0
  322. package/src/components/page-patterns/index.js +1 -2
  323. package/src/components/page-patterns/style.scss +0 -182
  324. package/src/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -66
  325. package/src/components/page-templates-template-parts/index.js +20 -3
  326. package/src/components/page-templates-template-parts/style.scss +48 -0
  327. package/src/components/revisions/index.js +1 -1
  328. package/src/components/save-button/index.js +2 -1
  329. package/src/components/save-hub/style.scss +1 -1
  330. package/src/components/save-panel/index.js +34 -12
  331. package/src/components/sidebar/index.js +1 -1
  332. package/src/components/sidebar-button/style.scss +1 -1
  333. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +5 -7
  334. package/src/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  335. package/src/components/sidebar-edit-mode/style.scss +4 -0
  336. package/src/components/sidebar-edit-mode/template-panel/hooks.js +37 -24
  337. package/src/components/sidebar-edit-mode/template-panel/index.js +76 -18
  338. package/src/components/sidebar-edit-mode/template-panel/style.scss +5 -14
  339. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +1 -12
  340. package/src/components/sidebar-navigation-screen-global-styles/index.js +4 -1
  341. package/src/components/sidebar-navigation-screen-main/index.js +0 -2
  342. package/src/components/sidebar-navigation-screen-navigation-menu/delete-modal.js +1 -1
  343. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -2
  344. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +1 -1
  345. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  346. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  347. package/src/components/sidebar-navigation-screen-template/index.js +1 -1
  348. package/src/components/sidebar-navigation-screen-templates-browse/content.js +1 -1
  349. package/src/components/start-template-options/index.js +1 -1
  350. package/src/hooks/commands/use-edit-mode-commands.js +3 -184
  351. package/src/hooks/index.js +0 -1
  352. package/src/hooks/push-changes-to-global-styles/index.js +1 -4
  353. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +1137 -0
  354. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +159 -0
  355. package/src/store/actions.js +21 -85
  356. package/src/store/test/actions.js +0 -75
  357. package/src/style.scss +3 -8
  358. package/src/utils/clone-deep.js +8 -0
  359. package/build/components/global-styles/preview.js +0 -271
  360. package/build/components/global-styles/preview.js.map +0 -1
  361. package/build/components/global-styles/typogrphy-elements.js.map +0 -1
  362. package/build/components/global-styles/variations-panel.js.map +0 -1
  363. package/build/components/header-edit-mode/mode-switcher/index.js +0 -62
  364. package/build/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  365. package/build/components/list/added-by.js.map +0 -1
  366. package/build/components/list/header.js +0 -55
  367. package/build/components/list/header.js.map +0 -1
  368. package/build/components/list/index.js +0 -80
  369. package/build/components/list/index.js.map +0 -1
  370. package/build/components/list/table.js +0 -94
  371. package/build/components/list/table.js.map +0 -1
  372. package/build/components/list/use-register-shortcuts.js +0 -51
  373. package/build/components/list/use-register-shortcuts.js.map +0 -1
  374. package/build/components/page-patterns/duplicate-menu-item.js +0 -93
  375. package/build/components/page-patterns/duplicate-menu-item.js.map +0 -1
  376. package/build/components/page-patterns/grid-item.js +0 -223
  377. package/build/components/page-patterns/grid-item.js.map +0 -1
  378. package/build/components/page-patterns/grid.js +0 -31
  379. package/build/components/page-patterns/grid.js.map +0 -1
  380. package/build/components/page-patterns/no-patterns.js +0 -18
  381. package/build/components/page-patterns/no-patterns.js.map +0 -1
  382. package/build/components/page-patterns/patterns-list.js +0 -168
  383. package/build/components/page-patterns/patterns-list.js.map +0 -1
  384. package/build/components/page-patterns/rename-menu-item.js +0 -105
  385. package/build/components/page-patterns/rename-menu-item.js.map +0 -1
  386. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -83
  387. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  388. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +0 -36
  389. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  390. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -36
  391. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  392. package/build/hooks/navigation-menu-edit.js +0 -82
  393. package/build/hooks/navigation-menu-edit.js.map +0 -1
  394. package/build-module/components/global-styles/preview.js +0 -264
  395. package/build-module/components/global-styles/preview.js.map +0 -1
  396. package/build-module/components/global-styles/typogrphy-elements.js.map +0 -1
  397. package/build-module/components/global-styles/variations-panel.js.map +0 -1
  398. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -56
  399. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  400. package/build-module/components/list/added-by.js.map +0 -1
  401. package/build-module/components/list/header.js +0 -47
  402. package/build-module/components/list/header.js.map +0 -1
  403. package/build-module/components/list/index.js +0 -72
  404. package/build-module/components/list/index.js.map +0 -1
  405. package/build-module/components/list/table.js +0 -86
  406. package/build-module/components/list/table.js.map +0 -1
  407. package/build-module/components/list/use-register-shortcuts.js +0 -45
  408. package/build-module/components/list/use-register-shortcuts.js.map +0 -1
  409. package/build-module/components/page-patterns/duplicate-menu-item.js +0 -85
  410. package/build-module/components/page-patterns/duplicate-menu-item.js.map +0 -1
  411. package/build-module/components/page-patterns/grid-item.js +0 -215
  412. package/build-module/components/page-patterns/grid-item.js.map +0 -1
  413. package/build-module/components/page-patterns/grid.js +0 -23
  414. package/build-module/components/page-patterns/grid.js.map +0 -1
  415. package/build-module/components/page-patterns/no-patterns.js +0 -11
  416. package/build-module/components/page-patterns/no-patterns.js.map +0 -1
  417. package/build-module/components/page-patterns/patterns-list.js +0 -160
  418. package/build-module/components/page-patterns/patterns-list.js.map +0 -1
  419. package/build-module/components/page-patterns/rename-menu-item.js +0 -98
  420. package/build-module/components/page-patterns/rename-menu-item.js.map +0 -1
  421. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -76
  422. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  423. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +0 -29
  424. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  425. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -27
  426. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  427. package/build-module/hooks/navigation-menu-edit.js +0 -75
  428. package/build-module/hooks/navigation-menu-edit.js.map +0 -1
  429. package/src/components/global-styles/preview.js +0 -327
  430. package/src/components/header-edit-mode/mode-switcher/index.js +0 -60
  431. package/src/components/list/header.js +0 -48
  432. package/src/components/list/index.js +0 -87
  433. package/src/components/list/style.scss +0 -188
  434. package/src/components/list/table.js +0 -140
  435. package/src/components/list/use-register-shortcuts.js +0 -49
  436. package/src/components/page-patterns/duplicate-menu-item.js +0 -105
  437. package/src/components/page-patterns/grid-item.js +0 -331
  438. package/src/components/page-patterns/grid.js +0 -22
  439. package/src/components/page-patterns/no-patterns.js +0 -12
  440. package/src/components/page-patterns/patterns-list.js +0 -229
  441. package/src/components/page-patterns/rename-menu-item.js +0 -132
  442. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -89
  443. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +0 -34
  444. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -22
  445. package/src/hooks/navigation-menu-edit.js +0 -92
  446. /package/src/components/global-styles/{typogrphy-elements.js → typography-elements.js} +0 -0
@@ -1,331 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
- import { paramCase as kebabCase } from 'change-case';
6
-
7
- /**
8
- * WordPress dependencies
9
- */
10
- import {
11
- BlockPreview,
12
- privateApis as blockEditorPrivateApis,
13
- } from '@wordpress/block-editor';
14
- import {
15
- Button,
16
- __experimentalConfirmDialog as ConfirmDialog,
17
- DropdownMenu,
18
- MenuGroup,
19
- MenuItem,
20
- __experimentalHeading as Heading,
21
- __experimentalHStack as HStack,
22
- Tooltip,
23
- Flex,
24
- } from '@wordpress/components';
25
- import { useDispatch } from '@wordpress/data';
26
- import { useState, useId, memo } from '@wordpress/element';
27
- import { __, sprintf } from '@wordpress/i18n';
28
- import {
29
- Icon,
30
- header,
31
- footer,
32
- symbolFilled as uncategorized,
33
- symbol,
34
- moreVertical,
35
- lockSmall,
36
- } from '@wordpress/icons';
37
- import { store as noticesStore } from '@wordpress/notices';
38
- import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
39
- import { downloadBlob } from '@wordpress/blob';
40
-
41
- /**
42
- * Internal dependencies
43
- */
44
- import RenameMenuItem from './rename-menu-item';
45
- import DuplicateMenuItem from './duplicate-menu-item';
46
- import {
47
- PATTERN_TYPES,
48
- TEMPLATE_PART_POST_TYPE,
49
- PATTERN_SYNC_TYPES,
50
- } from '../../utils/constants';
51
- import { store as editSiteStore } from '../../store';
52
- import { useLink } from '../routes/link';
53
- import { unlock } from '../../lock-unlock';
54
-
55
- const { useGlobalStyle } = unlock( blockEditorPrivateApis );
56
-
57
- const templatePartIcons = { header, footer, uncategorized };
58
-
59
- function GridItem( { categoryId, item, ...props } ) {
60
- const descriptionId = useId();
61
- const [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );
62
- const [ backgroundColor ] = useGlobalStyle( 'color.background' );
63
-
64
- const { removeTemplate } = useDispatch( editSiteStore );
65
- const { __experimentalDeleteReusableBlock } =
66
- useDispatch( reusableBlocksStore );
67
- const { createErrorNotice, createSuccessNotice } =
68
- useDispatch( noticesStore );
69
-
70
- const isUserPattern = item.type === PATTERN_TYPES.user;
71
- const isNonUserPattern = item.type === PATTERN_TYPES.theme;
72
- const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
73
-
74
- const { onClick } = useLink( {
75
- postType: item.type,
76
- postId: isUserPattern ? item.id : item.name,
77
- categoryId,
78
- categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,
79
- } );
80
-
81
- const isEmpty = ! item.blocks?.length;
82
- const patternClassNames = classnames( 'edit-site-patterns__pattern', {
83
- 'is-placeholder': isEmpty,
84
- } );
85
- const previewClassNames = classnames( 'edit-site-patterns__preview', {
86
- 'is-inactive': isNonUserPattern,
87
- } );
88
-
89
- const deletePattern = async () => {
90
- try {
91
- await __experimentalDeleteReusableBlock( item.id );
92
- createSuccessNotice(
93
- sprintf(
94
- // translators: %s: The pattern's title e.g. 'Call to action'.
95
- __( '"%s" deleted.' ),
96
- item.title
97
- ),
98
- { type: 'snackbar', id: 'edit-site-patterns-success' }
99
- );
100
- } catch ( error ) {
101
- const errorMessage =
102
- error.message && error.code !== 'unknown_error'
103
- ? error.message
104
- : __( 'An error occurred while deleting the pattern.' );
105
- createErrorNotice( errorMessage, {
106
- type: 'snackbar',
107
- id: 'edit-site-patterns-error',
108
- } );
109
- }
110
- };
111
- const deleteItem = () =>
112
- isTemplatePart ? removeTemplate( item ) : deletePattern();
113
- const exportAsJSON = () => {
114
- const json = {
115
- __file: item.type,
116
- title: item.title || item.name,
117
- content: item.patternPost.content.raw,
118
- syncStatus: item.patternPost.wp_pattern_sync_status,
119
- };
120
-
121
- return downloadBlob(
122
- `${ kebabCase( item.title || item.name ) }.json`,
123
- JSON.stringify( json, null, 2 ),
124
- 'application/json'
125
- );
126
- };
127
-
128
- // Only custom patterns or custom template parts can be renamed or deleted.
129
- const isCustomPattern =
130
- isUserPattern || ( isTemplatePart && item.isCustom );
131
- const hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;
132
- const ariaDescriptions = [];
133
-
134
- if ( isCustomPattern ) {
135
- // User patterns don't have descriptions, but can be edited and deleted, so include some help text.
136
- ariaDescriptions.push(
137
- __( 'Press Enter to edit, or Delete to delete the pattern.' )
138
- );
139
- } else if ( item.description ) {
140
- ariaDescriptions.push( item.description );
141
- }
142
-
143
- if ( isNonUserPattern ) {
144
- ariaDescriptions.push(
145
- __( 'Theme & plugin patterns cannot be edited.' )
146
- );
147
- }
148
-
149
- let itemIcon;
150
- if ( ! isUserPattern && templatePartIcons[ categoryId ] ) {
151
- itemIcon = templatePartIcons[ categoryId ];
152
- } else {
153
- itemIcon =
154
- item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
155
- }
156
-
157
- const confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );
158
- const confirmPrompt = hasThemeFile
159
- ? __( 'Are you sure you want to clear these customizations?' )
160
- : sprintf(
161
- // translators: %s: The pattern or template part's title e.g. 'Call to action'.
162
- __( 'Are you sure you want to delete "%s"?' ),
163
- item.title || item.name
164
- );
165
-
166
- const additionalStyles = ! backgroundColor
167
- ? [ { css: 'body { background: #fff; }' } ]
168
- : undefined;
169
-
170
- return (
171
- <li className={ patternClassNames }>
172
- <button
173
- className={ previewClassNames }
174
- id={ `edit-site-patterns-${ item.name }` }
175
- type="button"
176
- { ...props }
177
- onClick={
178
- item.type !== PATTERN_TYPES.theme ? onClick : undefined
179
- }
180
- aria-disabled={
181
- item.type !== PATTERN_TYPES.theme ? 'false' : 'true'
182
- }
183
- aria-label={ item.title }
184
- aria-describedby={
185
- ariaDescriptions.length
186
- ? ariaDescriptions
187
- .map(
188
- ( _, index ) =>
189
- `${ descriptionId }-${ index }`
190
- )
191
- .join( ' ' )
192
- : undefined
193
- }
194
- >
195
- { isEmpty && isTemplatePart && __( 'Empty template part' ) }
196
- { isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }
197
- { ! isEmpty && (
198
- <BlockPreview
199
- blocks={ item.blocks }
200
- additionalStyles={ additionalStyles }
201
- viewportWidth={ item.viewportWidth }
202
- />
203
- ) }
204
- </button>
205
- { ariaDescriptions.map( ( ariaDescription, index ) => (
206
- <div
207
- key={ index }
208
- hidden
209
- id={ `${ descriptionId }-${ index }` }
210
- >
211
- { ariaDescription }
212
- </div>
213
- ) ) }
214
- <HStack
215
- className="edit-site-patterns__footer"
216
- justify="space-between"
217
- >
218
- <HStack
219
- alignment="center"
220
- justify="left"
221
- spacing={ 3 }
222
- className="edit-site-patterns__pattern-title"
223
- >
224
- { itemIcon && ! isNonUserPattern && (
225
- <Tooltip
226
- placement="top"
227
- text={ __(
228
- 'Editing this pattern will also update anywhere it is used'
229
- ) }
230
- >
231
- <Icon
232
- className="edit-site-patterns__pattern-icon"
233
- icon={ itemIcon }
234
- />
235
- </Tooltip>
236
- ) }
237
- <Flex as="span" gap={ 0 } justify="left">
238
- { item.type === PATTERN_TYPES.theme ? (
239
- item.title
240
- ) : (
241
- <Heading level={ 5 }>
242
- <Button
243
- variant="link"
244
- onClick={ onClick }
245
- // Required for the grid's roving tab index system.
246
- // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
247
- tabIndex="-1"
248
- >
249
- { item.title || item.name }
250
- </Button>
251
- </Heading>
252
- ) }
253
- { item.type === PATTERN_TYPES.theme && (
254
- <Tooltip
255
- placement="top"
256
- text={ __( 'This pattern cannot be edited.' ) }
257
- >
258
- <Icon
259
- className="edit-site-patterns__pattern-lock-icon"
260
- icon={ lockSmall }
261
- size={ 24 }
262
- />
263
- </Tooltip>
264
- ) }
265
- </Flex>
266
- </HStack>
267
- <DropdownMenu
268
- icon={ moreVertical }
269
- label={ __( 'Actions' ) }
270
- className="edit-site-patterns__dropdown"
271
- popoverProps={ { placement: 'bottom-end' } }
272
- toggleProps={ {
273
- className: 'edit-site-patterns__button',
274
- describedBy: sprintf(
275
- /* translators: %s: pattern name */
276
- __( 'Action menu for %s pattern' ),
277
- item.title
278
- ),
279
- } }
280
- >
281
- { ( { onClose } ) => (
282
- <MenuGroup>
283
- { isCustomPattern && ! hasThemeFile && (
284
- <RenameMenuItem
285
- item={ item }
286
- onClose={ onClose }
287
- />
288
- ) }
289
- <DuplicateMenuItem
290
- categoryId={ categoryId }
291
- item={ item }
292
- onClose={ onClose }
293
- label={ __( 'Duplicate' ) }
294
- />
295
- { item.type === PATTERN_TYPES.user && (
296
- <MenuItem onClick={ () => exportAsJSON() }>
297
- { __( 'Export as JSON' ) }
298
- </MenuItem>
299
- ) }
300
-
301
- { isCustomPattern && (
302
- <MenuItem
303
- isDestructive={ ! hasThemeFile }
304
- onClick={ () =>
305
- setIsDeleteDialogOpen( true )
306
- }
307
- >
308
- { hasThemeFile
309
- ? __( 'Clear customizations' )
310
- : __( 'Delete' ) }
311
- </MenuItem>
312
- ) }
313
- </MenuGroup>
314
- ) }
315
- </DropdownMenu>
316
- </HStack>
317
-
318
- { isDeleteDialogOpen && (
319
- <ConfirmDialog
320
- confirmButtonText={ confirmButtonText }
321
- onConfirm={ deleteItem }
322
- onCancel={ () => setIsDeleteDialogOpen( false ) }
323
- >
324
- { confirmPrompt }
325
- </ConfirmDialog>
326
- ) }
327
- </li>
328
- );
329
- }
330
-
331
- export default memo( GridItem );
@@ -1,22 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import GridItem from './grid-item';
5
-
6
- export default function Grid( { categoryId, items, ...props } ) {
7
- if ( ! items?.length ) {
8
- return null;
9
- }
10
-
11
- return (
12
- <ul className="edit-site-patterns__grid" { ...props }>
13
- { items.map( ( item ) => (
14
- <GridItem
15
- key={ item.name }
16
- item={ item }
17
- categoryId={ categoryId }
18
- />
19
- ) ) }
20
- </ul>
21
- );
22
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
-
6
- export default function NoPatterns() {
7
- return (
8
- <div className="edit-site-patterns__no-results">
9
- { __( 'No patterns found.' ) }
10
- </div>
11
- );
12
- }
@@ -1,229 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useState, useDeferredValue, useId, useMemo } from '@wordpress/element';
5
- import {
6
- SearchControl,
7
- __experimentalVStack as VStack,
8
- Flex,
9
- FlexBlock,
10
- __experimentalToggleGroupControl as ToggleGroupControl,
11
- __experimentalToggleGroupControlOption as ToggleGroupControlOption,
12
- __experimentalHeading as Heading,
13
- __experimentalText as Text,
14
- } from '@wordpress/components';
15
- import { __, _x, isRTL } from '@wordpress/i18n';
16
- import { chevronLeft, chevronRight } from '@wordpress/icons';
17
- import { privateApis as routerPrivateApis } from '@wordpress/router';
18
- import {
19
- useAsyncList,
20
- useViewportMatch,
21
- useDebouncedInput,
22
- } from '@wordpress/compose';
23
-
24
- /**
25
- * Internal dependencies
26
- */
27
- import PatternsHeader from './header';
28
- import Grid from './grid';
29
- import NoPatterns from './no-patterns';
30
- import usePatterns from './use-patterns';
31
- import SidebarButton from '../sidebar-button';
32
- import { unlock } from '../../lock-unlock';
33
- import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../../utils/constants';
34
- import Pagination from '../pagination';
35
-
36
- const { useLocation, useHistory } = unlock( routerPrivateApis );
37
-
38
- const SYNC_FILTERS = {
39
- all: _x( 'All', 'Option that shows all patterns' ),
40
- [ PATTERN_SYNC_TYPES.full ]: _x(
41
- 'Synced',
42
- 'Option that shows all synchronized patterns'
43
- ),
44
- [ PATTERN_SYNC_TYPES.unsynced ]: _x(
45
- 'Not synced',
46
- 'Option that shows all patterns that are not synchronized'
47
- ),
48
- };
49
-
50
- const SYNC_DESCRIPTIONS = {
51
- all: '',
52
- [ PATTERN_SYNC_TYPES.full ]: __(
53
- 'Patterns that are kept in sync across the site.'
54
- ),
55
- [ PATTERN_SYNC_TYPES.unsynced ]: __(
56
- 'Patterns that can be changed freely without affecting the site.'
57
- ),
58
- };
59
-
60
- const PAGE_SIZE = 20;
61
-
62
- export default function PatternsList( { categoryId, type } ) {
63
- const location = useLocation();
64
- const history = useHistory();
65
- const isMobileViewport = useViewportMatch( 'medium', '<' );
66
- const [ filterValue, setFilterValue, delayedFilterValue ] =
67
- useDebouncedInput( '' );
68
- const deferredFilterValue = useDeferredValue( delayedFilterValue );
69
-
70
- const [ syncFilter, setSyncFilter ] = useState( 'all' );
71
- const [ currentPage, setCurrentPage ] = useState( 1 );
72
-
73
- const deferredSyncedFilter = useDeferredValue( syncFilter );
74
-
75
- const isUncategorizedThemePatterns =
76
- type === PATTERN_TYPES.theme && categoryId === 'uncategorized';
77
-
78
- const { patterns, isResolving } = usePatterns(
79
- type,
80
- isUncategorizedThemePatterns ? '' : categoryId,
81
- {
82
- search: deferredFilterValue,
83
- syncStatus:
84
- deferredSyncedFilter === 'all'
85
- ? undefined
86
- : deferredSyncedFilter,
87
- }
88
- );
89
-
90
- const updateSearchFilter = ( value ) => {
91
- setCurrentPage( 1 );
92
- setFilterValue( value );
93
- };
94
-
95
- const updateSyncFilter = ( value ) => {
96
- setCurrentPage( 1 );
97
- setSyncFilter( value );
98
- };
99
-
100
- const id = useId();
101
- const titleId = `${ id }-title`;
102
- const descriptionId = `${ id }-description`;
103
-
104
- const hasPatterns = patterns.length;
105
- const title = SYNC_FILTERS[ syncFilter ];
106
- const description = SYNC_DESCRIPTIONS[ syncFilter ];
107
-
108
- const totalItems = patterns.length;
109
- const pageIndex = currentPage - 1;
110
- const numPages = Math.ceil( patterns.length / PAGE_SIZE );
111
-
112
- const list = useMemo( () => {
113
- return patterns.slice(
114
- pageIndex * PAGE_SIZE,
115
- pageIndex * PAGE_SIZE + PAGE_SIZE
116
- );
117
- }, [ pageIndex, patterns ] );
118
-
119
- const asyncList = useAsyncList( list, { step: 10 } );
120
-
121
- const changePage = ( page ) => {
122
- const scrollContainer = document.querySelector( '.edit-site-patterns' );
123
- scrollContainer?.scrollTo( 0, 0 );
124
-
125
- setCurrentPage( page );
126
- };
127
-
128
- return (
129
- <>
130
- <VStack className="edit-site-patterns__header" spacing={ 6 }>
131
- <PatternsHeader
132
- categoryId={ categoryId }
133
- type={ type }
134
- titleId={ titleId }
135
- descriptionId={ descriptionId }
136
- />
137
- <Flex alignment="stretch" wrap>
138
- { isMobileViewport && (
139
- <SidebarButton
140
- icon={ isRTL() ? chevronRight : chevronLeft }
141
- label={ __( 'Back' ) }
142
- onClick={ () => {
143
- // Go back in history if we came from the Patterns page.
144
- // Otherwise push a stack onto the history.
145
- if (
146
- location.state?.backPath === '/patterns'
147
- ) {
148
- history.back();
149
- } else {
150
- history.push( { path: '/patterns' } );
151
- }
152
- } }
153
- />
154
- ) }
155
- <FlexBlock className="edit-site-patterns__search-block">
156
- <SearchControl
157
- className="edit-site-patterns__search"
158
- onChange={ ( value ) =>
159
- updateSearchFilter( value )
160
- }
161
- placeholder={ __( 'Search patterns' ) }
162
- label={ __( 'Search patterns' ) }
163
- value={ filterValue }
164
- __nextHasNoMarginBottom
165
- />
166
- </FlexBlock>
167
- { type === PATTERN_TYPES.theme && (
168
- <ToggleGroupControl
169
- className="edit-site-patterns__sync-status-filter"
170
- hideLabelFromVision
171
- label={ __( 'Filter by sync status' ) }
172
- value={ syncFilter }
173
- isBlock
174
- onChange={ ( value ) => updateSyncFilter( value ) }
175
- __nextHasNoMarginBottom
176
- >
177
- { Object.entries( SYNC_FILTERS ).map(
178
- ( [ key, label ] ) => (
179
- <ToggleGroupControlOption
180
- className="edit-site-patterns__sync-status-filter-option"
181
- key={ key }
182
- value={ key }
183
- label={ label }
184
- />
185
- )
186
- ) }
187
- </ToggleGroupControl>
188
- ) }
189
- </Flex>
190
- </VStack>
191
- <VStack
192
- className="edit-site-patterns__section"
193
- justify="flex-start"
194
- spacing={ 6 }
195
- >
196
- { syncFilter !== 'all' && (
197
- <VStack className="edit-site-patterns__section-header">
198
- <Heading as="h3" level={ 5 } id={ titleId }>
199
- { title }
200
- </Heading>
201
- { description ? (
202
- <Text variant="muted" as="p" id={ descriptionId }>
203
- { description }
204
- </Text>
205
- ) : null }
206
- </VStack>
207
- ) }
208
- { hasPatterns && (
209
- <Grid
210
- categoryId={ categoryId }
211
- items={ asyncList }
212
- aria-labelledby={ titleId }
213
- aria-describedby={ descriptionId }
214
- />
215
- ) }
216
- { ! isResolving && ! hasPatterns && <NoPatterns /> }
217
- </VStack>
218
- { numPages > 1 && (
219
- <Pagination
220
- className="edit-site-patterns__pagination"
221
- currentPage={ currentPage }
222
- numPages={ numPages }
223
- changePage={ changePage }
224
- totalItems={ totalItems }
225
- />
226
- ) }
227
- </>
228
- );
229
- }