@wordpress/edit-site 5.26.0 → 5.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +139 -36
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/editor-canvas-container/index.js +1 -1
  5. package/build/components/editor-canvas-container/index.js.map +1 -1
  6. package/build/components/global-styles/font-families.js +3 -2
  7. package/build/components/global-styles/font-families.js.map +1 -1
  8. package/build/components/global-styles/font-family-item.js +3 -4
  9. package/build/components/global-styles/font-family-item.js.map +1 -1
  10. package/build/components/global-styles/font-library-modal/context.js +80 -41
  11. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/font-collection.js +49 -22
  13. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  15. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/index.js +4 -4
  17. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  19. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/library-font-card.js +1 -1
  21. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  23. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/local-fonts.js +13 -4
  25. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/resolvers.js +49 -20
  27. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  29. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
  31. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  33. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +4 -1
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/layout/hooks.js +6 -5
  37. package/build/components/layout/hooks.js.map +1 -1
  38. package/build/components/layout/index.js +19 -28
  39. package/build/components/layout/index.js.map +1 -1
  40. package/build/components/layout/router.js +135 -0
  41. package/build/components/layout/router.js.map +1 -0
  42. package/build/components/page-pages/index.js +92 -69
  43. package/build/components/page-pages/index.js.map +1 -1
  44. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
  45. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  46. package/build/components/page-patterns/index.js +295 -15
  47. package/build/components/page-patterns/index.js.map +1 -1
  48. package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
  49. package/build/components/page-templates-template-parts/actions.js.map +1 -0
  50. package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  51. package/build/components/page-templates-template-parts/index.js +395 -0
  52. package/build/components/page-templates-template-parts/index.js.map +1 -0
  53. package/build/components/preferences-modal/index.js +9 -134
  54. package/build/components/preferences-modal/index.js.map +1 -1
  55. package/build/components/revisions/index.js +1 -1
  56. package/build/components/revisions/index.js.map +1 -1
  57. package/build/components/save-button/index.js +4 -2
  58. package/build/components/save-button/index.js.map +1 -1
  59. package/build/components/save-panel/index.js +6 -5
  60. package/build/components/save-panel/index.js.map +1 -1
  61. package/build/components/sidebar/index.js +3 -1
  62. package/build/components/sidebar/index.js.map +1 -1
  63. package/build/components/sidebar-dataviews/dataview-item.js +3 -1
  64. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  65. package/build/components/sidebar-dataviews/default-views.js +4 -2
  66. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  67. package/build/components/sidebar-dataviews/index.js +2 -2
  68. package/build/components/sidebar-dataviews/index.js.map +1 -1
  69. package/build/components/sidebar-navigation-screen/index.js +8 -7
  70. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  71. package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
  72. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
  74. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-templates/index.js +63 -8
  76. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
  78. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  80. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  81. package/build/components/site-hub/index.js +3 -1
  82. package/build/components/site-hub/index.js.map +1 -1
  83. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
  84. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  86. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  87. package/build/hooks/commands/use-edit-mode-commands.js +33 -5
  88. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  89. package/build/hooks/push-changes-to-global-styles/index.js +13 -6
  90. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  91. package/build/hooks/template-part-edit.js +7 -6
  92. package/build/hooks/template-part-edit.js.map +1 -1
  93. package/build/index.js +1 -1
  94. package/build/index.js.map +1 -1
  95. package/build/store/actions.js +11 -29
  96. package/build/store/actions.js.map +1 -1
  97. package/build/store/private-actions.js +85 -1
  98. package/build/store/private-actions.js.map +1 -1
  99. package/build/store/selectors.js +2 -2
  100. package/build/store/selectors.js.map +1 -1
  101. package/build/utils/get-is-list-page.js +1 -1
  102. package/build/utils/get-is-list-page.js.map +1 -1
  103. package/build/utils/use-actual-current-theme.js +32 -0
  104. package/build/utils/use-actual-current-theme.js.map +1 -0
  105. package/build-module/components/actions/index.js +139 -36
  106. package/build-module/components/actions/index.js.map +1 -1
  107. package/build-module/components/editor-canvas-container/index.js +1 -1
  108. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  109. package/build-module/components/global-styles/font-families.js +3 -2
  110. package/build-module/components/global-styles/font-families.js.map +1 -1
  111. package/build-module/components/global-styles/font-family-item.js +4 -5
  112. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  113. package/build-module/components/global-styles/font-library-modal/context.js +82 -42
  114. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  115. package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
  116. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  117. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  118. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  119. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  120. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  121. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  122. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  123. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  124. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  125. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  126. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  127. package/build-module/components/global-styles/font-library-modal/local-fonts.js +13 -4
  128. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  129. package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
  130. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  131. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  132. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  133. package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
  134. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  135. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  136. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  137. package/build-module/components/global-styles/screen-typography.js +4 -1
  138. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  139. package/build-module/components/layout/hooks.js +6 -5
  140. package/build-module/components/layout/hooks.js.map +1 -1
  141. package/build-module/components/layout/index.js +19 -28
  142. package/build-module/components/layout/index.js.map +1 -1
  143. package/build-module/components/layout/router.js +127 -0
  144. package/build-module/components/layout/router.js.map +1 -0
  145. package/build-module/components/page-pages/index.js +91 -70
  146. package/build-module/components/page-pages/index.js.map +1 -1
  147. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
  148. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  149. package/build-module/components/page-patterns/index.js +296 -16
  150. package/build-module/components/page-patterns/index.js.map +1 -1
  151. package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
  152. package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
  153. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  154. package/build-module/components/page-templates-template-parts/index.js +385 -0
  155. package/build-module/components/page-templates-template-parts/index.js.map +1 -0
  156. package/build-module/components/preferences-modal/index.js +12 -136
  157. package/build-module/components/preferences-modal/index.js.map +1 -1
  158. package/build-module/components/revisions/index.js +1 -1
  159. package/build-module/components/revisions/index.js.map +1 -1
  160. package/build-module/components/save-button/index.js +4 -2
  161. package/build-module/components/save-button/index.js.map +1 -1
  162. package/build-module/components/save-panel/index.js +7 -6
  163. package/build-module/components/save-panel/index.js.map +1 -1
  164. package/build-module/components/sidebar/index.js +3 -1
  165. package/build-module/components/sidebar/index.js.map +1 -1
  166. package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
  167. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  168. package/build-module/components/sidebar-dataviews/default-views.js +4 -2
  169. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  170. package/build-module/components/sidebar-dataviews/index.js +2 -2
  171. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  172. package/build-module/components/sidebar-navigation-screen/index.js +8 -7
  173. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  174. package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
  175. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  176. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
  177. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-templates/index.js +64 -9
  179. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
  181. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  182. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  183. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  184. package/build-module/components/site-hub/index.js +3 -1
  185. package/build-module/components/site-hub/index.js.map +1 -1
  186. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
  187. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  188. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  189. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  190. package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
  191. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  192. package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
  193. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  194. package/build-module/hooks/template-part-edit.js +7 -6
  195. package/build-module/hooks/template-part-edit.js.map +1 -1
  196. package/build-module/index.js +1 -1
  197. package/build-module/index.js.map +1 -1
  198. package/build-module/store/actions.js +13 -30
  199. package/build-module/store/actions.js.map +1 -1
  200. package/build-module/store/private-actions.js +83 -0
  201. package/build-module/store/private-actions.js.map +1 -1
  202. package/build-module/store/selectors.js +2 -2
  203. package/build-module/store/selectors.js.map +1 -1
  204. package/build-module/utils/get-is-list-page.js +1 -1
  205. package/build-module/utils/get-is-list-page.js.map +1 -1
  206. package/build-module/utils/use-actual-current-theme.js +24 -0
  207. package/build-module/utils/use-actual-current-theme.js.map +1 -0
  208. package/build-style/style-rtl.css +302 -188
  209. package/build-style/style.css +302 -188
  210. package/package.json +42 -42
  211. package/src/components/actions/index.js +236 -84
  212. package/src/components/editor-canvas-container/index.js +1 -1
  213. package/src/components/global-styles/font-families.js +14 -8
  214. package/src/components/global-styles/font-family-item.js +7 -4
  215. package/src/components/global-styles/font-library-modal/context.js +156 -50
  216. package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
  217. package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
  218. package/src/components/global-styles/font-library-modal/index.js +4 -4
  219. package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
  220. package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
  221. package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
  222. package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
  223. package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
  224. package/src/components/global-styles/font-library-modal/style.scss +1 -0
  225. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
  226. package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
  227. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
  228. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
  229. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
  230. package/src/components/global-styles/screen-typography.js +9 -3
  231. package/src/components/global-styles/style.scss +4 -0
  232. package/src/components/header-edit-mode/style.scss +15 -5
  233. package/src/components/layout/hooks.js +6 -5
  234. package/src/components/layout/index.js +80 -96
  235. package/src/components/layout/router.js +121 -0
  236. package/src/components/layout/style.scss +13 -16
  237. package/src/components/page/style.scss +1 -8
  238. package/src/components/page-pages/index.js +142 -148
  239. package/src/components/page-pages/style.scss +41 -2
  240. package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
  241. package/src/components/page-patterns/index.js +392 -14
  242. package/src/components/page-patterns/style.scss +36 -2
  243. package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
  244. package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
  245. package/src/components/page-templates-template-parts/style.scss +44 -0
  246. package/src/components/preferences-modal/index.js +8 -211
  247. package/src/components/revisions/index.js +1 -1
  248. package/src/components/save-button/index.js +7 -4
  249. package/src/components/save-panel/index.js +13 -12
  250. package/src/components/sidebar/index.js +4 -5
  251. package/src/components/sidebar-dataviews/dataview-item.js +2 -1
  252. package/src/components/sidebar-dataviews/default-views.js +4 -2
  253. package/src/components/sidebar-dataviews/index.js +8 -6
  254. package/src/components/sidebar-navigation-item/style.scss +1 -1
  255. package/src/components/sidebar-navigation-screen/index.js +19 -10
  256. package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
  257. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
  258. package/src/components/sidebar-navigation-screen-templates/index.js +85 -28
  259. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  260. package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
  261. package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
  262. package/src/components/site-hub/index.js +4 -1
  263. package/src/components/site-hub/style.scss +1 -12
  264. package/src/components/site-icon/style.scss +1 -1
  265. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
  266. package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
  267. package/src/hooks/commands/use-edit-mode-commands.js +50 -3
  268. package/src/hooks/push-changes-to-global-styles/index.js +29 -23
  269. package/src/hooks/template-part-edit.js +12 -12
  270. package/src/index.js +1 -1
  271. package/src/store/actions.js +17 -51
  272. package/src/store/private-actions.js +133 -0
  273. package/src/store/selectors.js +2 -4
  274. package/src/style.scss +2 -1
  275. package/src/utils/get-is-list-page.js +3 -2
  276. package/src/utils/use-actual-current-theme.js +27 -0
  277. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  278. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  279. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
  280. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  281. package/build/components/page-main/index.js +0 -44
  282. package/build/components/page-main/index.js.map +0 -1
  283. package/build/components/page-patterns/dataviews-patterns.js +0 -307
  284. package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
  285. package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
  286. package/build/components/page-template-parts/index.js +0 -81
  287. package/build/components/page-template-parts/index.js.map +0 -1
  288. package/build/components/page-templates/index.js +0 -352
  289. package/build/components/page-templates/index.js.map +0 -1
  290. package/build/components/page-templates/template-actions.js.map +0 -1
  291. package/build/components/post-preview/index.js +0 -29
  292. package/build/components/post-preview/index.js.map +0 -1
  293. package/build/components/preferences-modal/enable-feature.js +0 -36
  294. package/build/components/preferences-modal/enable-feature.js.map +0 -1
  295. package/build/components/preferences-modal/enable-panel-option.js +0 -33
  296. package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
  297. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
  298. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  299. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
  300. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  301. package/build-module/components/page-main/index.js +0 -36
  302. package/build-module/components/page-main/index.js.map +0 -1
  303. package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
  304. package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
  305. package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
  306. package/build-module/components/page-template-parts/index.js +0 -73
  307. package/build-module/components/page-template-parts/index.js.map +0 -1
  308. package/build-module/components/page-templates/index.js +0 -344
  309. package/build-module/components/page-templates/index.js.map +0 -1
  310. package/build-module/components/page-templates/template-actions.js.map +0 -1
  311. package/build-module/components/post-preview/index.js +0 -21
  312. package/build-module/components/post-preview/index.js.map +0 -1
  313. package/build-module/components/preferences-modal/enable-feature.js +0 -29
  314. package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
  315. package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
  316. package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
  317. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  318. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
  319. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
  320. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
  321. package/src/components/page-main/index.js +0 -38
  322. package/src/components/page-patterns/dataviews-patterns.js +0 -380
  323. package/src/components/page-template-parts/index.js +0 -99
  324. package/src/components/page-templates/style.scss +0 -13
  325. package/src/components/post-preview/index.js +0 -16
  326. package/src/components/preferences-modal/enable-feature.js +0 -31
  327. package/src/components/preferences-modal/enable-panel-option.js +0 -23
  328. /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  329. /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  330. /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
@@ -1,380 +0,0 @@
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
- }
@@ -1,99 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- VisuallyHidden,
6
- __experimentalHeading as Heading,
7
- __experimentalVStack as VStack,
8
- } from '@wordpress/components';
9
- import { __ } from '@wordpress/i18n';
10
- import { useEntityRecords } from '@wordpress/core-data';
11
- import { decodeEntities } from '@wordpress/html-entities';
12
- import { privateApis as routerPrivateApis } from '@wordpress/router';
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
- import Page from '../page';
18
- import Table from '../table';
19
- import Link from '../routes/link';
20
- import AddedBy from '../list/added-by';
21
- import TemplateActions from '../template-actions';
22
- import AddNewTemplatePart from './add-new-template-part';
23
- import { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';
24
- import { unlock } from '../../lock-unlock';
25
-
26
- const { useLocation } = unlock( routerPrivateApis );
27
-
28
- export default function PageTemplateParts() {
29
- const {
30
- params: { didAccessPatternsPage },
31
- } = useLocation();
32
-
33
- const { records: templateParts } = useEntityRecords(
34
- 'postType',
35
- TEMPLATE_PART_POST_TYPE,
36
- {
37
- per_page: -1,
38
- }
39
- );
40
-
41
- const columns = [
42
- {
43
- header: __( 'Template Part' ),
44
- cell: ( templatePart ) => (
45
- <VStack>
46
- <Heading as="h3" level={ 5 }>
47
- <Link
48
- params={ {
49
- postId: templatePart.id,
50
- postType: templatePart.type,
51
- didAccessPatternsPage: !! didAccessPatternsPage
52
- ? 1
53
- : undefined,
54
- } }
55
- state={ {
56
- backPath: '/wp_template_part/all',
57
- } }
58
- >
59
- { decodeEntities(
60
- templatePart.title?.rendered ||
61
- templatePart.slug
62
- ) }
63
- </Link>
64
- </Heading>
65
- </VStack>
66
- ),
67
- maxWidth: 400,
68
- },
69
- {
70
- header: __( 'Added by' ),
71
- cell: ( templatePart ) => (
72
- <AddedBy
73
- postType={ templatePart.type }
74
- postId={ templatePart.id }
75
- />
76
- ),
77
- },
78
- {
79
- header: <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>,
80
- cell: ( templatePart ) => (
81
- <TemplateActions
82
- postType={ templatePart.type }
83
- postId={ templatePart.id }
84
- />
85
- ),
86
- },
87
- ];
88
-
89
- return (
90
- <Page
91
- title={ __( 'Template Parts' ) }
92
- actions={ <AddNewTemplatePart /> }
93
- >
94
- { templateParts && (
95
- <Table data={ templateParts } columns={ columns } />
96
- ) }
97
- </Page>
98
- );
99
- }
@@ -1,13 +0,0 @@
1
- .page-templates-preview-field {
2
- &.is-viewtype-list {
3
- .block-editor-block-preview__container {
4
- height: 120px;
5
- }
6
- }
7
-
8
- &.is-viewtype-grid {
9
- .block-editor-block-preview__container {
10
- height: auto;
11
- }
12
- }
13
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import Editor from '../editor';
5
- import { useInitEditedEntity } from '../sync-state-with-url/use-init-edited-entity-from-url';
6
- import { useIsSiteEditorLoading } from '../layout/hooks';
7
-
8
- export default function PostPreview( { postType, postId } ) {
9
- useInitEditedEntity( {
10
- postId,
11
- postType,
12
- } );
13
- const isEditorLoading = useIsSiteEditorLoading();
14
-
15
- return <Editor isLoading={ isEditorLoading } />;
16
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect, useDispatch } from '@wordpress/data';
5
- import { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';
6
- import { store as preferencesStore } from '@wordpress/preferences';
7
-
8
- export default function EnableFeature( props ) {
9
- const {
10
- scope = 'core/edit-site',
11
- featureName,
12
- onToggle = () => {},
13
- ...remainingProps
14
- } = props;
15
- const isChecked = useSelect(
16
- ( select ) => !! select( preferencesStore ).get( scope, featureName ),
17
- [ scope, featureName ]
18
- );
19
- const { toggle } = useDispatch( preferencesStore );
20
- const onChange = () => {
21
- onToggle();
22
- toggle( scope, featureName );
23
- };
24
- return (
25
- <BaseOption
26
- onChange={ onChange }
27
- isChecked={ isChecked }
28
- { ...remainingProps }
29
- />
30
- );
31
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { compose, ifCondition } from '@wordpress/compose';
5
- import { withSelect, withDispatch } from '@wordpress/data';
6
- import { ___unstablePreferencesModalBaseOption as BaseOption } from '@wordpress/interface';
7
- import { store as editorStore } from '@wordpress/editor';
8
-
9
- export default compose(
10
- withSelect( ( select, { panelName } ) => {
11
- const { isEditorPanelEnabled, isEditorPanelRemoved } =
12
- select( editorStore );
13
- return {
14
- isRemoved: isEditorPanelRemoved( panelName ),
15
- isChecked: isEditorPanelEnabled( panelName ),
16
- };
17
- } ),
18
- ifCondition( ( { isRemoved } ) => ! isRemoved ),
19
- withDispatch( ( dispatch, { panelName } ) => ( {
20
- onChange: () =>
21
- dispatch( editorStore ).toggleEditorPanelEnabled( panelName ),
22
- } ) )
23
- )( BaseOption );