@wordpress/edit-site 5.25.0 → 5.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/build/components/block-editor/back-button.js +3 -2
  4. package/build/components/block-editor/back-button.js.map +1 -1
  5. package/build/components/block-editor/resizable-editor.js +2 -2
  6. package/build/components/block-editor/resizable-editor.js.map +1 -1
  7. package/build/components/block-editor/use-post-link-props.js +27 -0
  8. package/build/components/block-editor/use-post-link-props.js.map +1 -0
  9. package/build/components/block-editor/use-site-editor-settings.js +7 -24
  10. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  11. package/build/components/create-template-part-modal/index.js +15 -7
  12. package/build/components/create-template-part-modal/index.js.map +1 -1
  13. package/build/components/editor/index.js +15 -16
  14. package/build/components/editor/index.js.map +1 -1
  15. package/build/components/editor-canvas-container/index.js +9 -7
  16. package/build/components/editor-canvas-container/index.js.map +1 -1
  17. package/build/components/global-styles/font-library-modal/collection-font-variant.js +5 -2
  18. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +3 -3
  20. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/context.js +5 -5
  22. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/font-collection.js +8 -4
  24. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/index.js +38 -21
  26. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  28. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/library-font-variant.js +5 -2
  30. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/local-fonts.js +26 -10
  32. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  33. package/build/components/global-styles/font-library-modal/resolvers.js +6 -6
  34. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  35. package/build/components/global-styles/font-library-modal/{tab-layout.js → tab-panel-layout.js} +4 -4
  36. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -0
  37. package/build/components/global-styles/font-library-modal/utils/index.js +35 -38
  38. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  39. package/build/components/global-styles/preview.js +43 -1
  40. package/build/components/global-styles/preview.js.map +1 -1
  41. package/build/components/global-styles/screen-color-palette.js +16 -12
  42. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  43. package/build/components/global-styles/screen-revisions/index.js +52 -52
  44. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  45. package/build/components/global-styles/screen-revisions/revisions-buttons.js +26 -35
  46. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  47. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +40 -22
  48. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  49. package/build/components/global-styles/ui.js +13 -62
  50. package/build/components/global-styles/ui.js.map +1 -1
  51. package/build/components/header-edit-mode/document-tools/index.js +8 -106
  52. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  53. package/build/components/header-edit-mode/index.js +7 -11
  54. package/build/components/header-edit-mode/index.js.map +1 -1
  55. package/build/components/header-edit-mode/mode-switcher/index.js +0 -2
  56. package/build/components/header-edit-mode/mode-switcher/index.js.map +1 -1
  57. package/build/components/header-edit-mode/more-menu/index.js +10 -7
  58. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  59. package/build/components/keyboard-shortcuts/edit-mode.js +0 -23
  60. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  61. package/build/components/keyboard-shortcuts/register.js +0 -36
  62. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  63. package/build/components/layout/index.js +6 -13
  64. package/build/components/layout/index.js.map +1 -1
  65. package/build/components/page-main/index.js +4 -4
  66. package/build/components/page-main/index.js.map +1 -1
  67. package/build/components/page-pages/index.js +84 -37
  68. package/build/components/page-pages/index.js.map +1 -1
  69. package/build/components/page-patterns/dataviews-pattern-actions.js +305 -0
  70. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -0
  71. package/build/components/page-patterns/dataviews-patterns.js +307 -0
  72. package/build/components/page-patterns/dataviews-patterns.js.map +1 -0
  73. package/build/components/page-patterns/duplicate-menu-item.js +1 -1
  74. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  75. package/build/components/page-patterns/grid-item.js +4 -3
  76. package/build/components/page-patterns/grid-item.js.map +1 -1
  77. package/build/components/page-patterns/patterns-list.js +2 -1
  78. package/build/components/page-patterns/patterns-list.js.map +1 -1
  79. package/build/components/page-patterns/use-patterns.js +23 -13
  80. package/build/components/page-patterns/use-patterns.js.map +1 -1
  81. package/build/components/page-templates/index.js +312 -36
  82. package/build/components/page-templates/index.js.map +1 -1
  83. package/build/components/{page-patterns/pagination.js → pagination/index.js} +25 -12
  84. package/build/components/pagination/index.js.map +1 -0
  85. package/build/components/{page-pages/side-editor.js → post-preview/index.js} +8 -4
  86. package/build/components/post-preview/index.js.map +1 -0
  87. package/build/components/preferences-modal/enable-feature.js +3 -2
  88. package/build/components/preferences-modal/enable-feature.js.map +1 -1
  89. package/build/components/preferences-modal/enable-panel-option.js +33 -0
  90. package/build/components/preferences-modal/enable-panel-option.js.map +1 -0
  91. package/build/components/preferences-modal/index.js +57 -9
  92. package/build/components/preferences-modal/index.js.map +1 -1
  93. package/build/components/revisions/index.js +3 -7
  94. package/build/components/revisions/index.js.map +1 -1
  95. package/build/components/routes/link.js +6 -2
  96. package/build/components/routes/link.js.map +1 -1
  97. package/build/components/save-button/index.js +6 -3
  98. package/build/components/save-button/index.js.map +1 -1
  99. package/build/components/sidebar/index.js +3 -11
  100. package/build/components/sidebar/index.js.map +1 -1
  101. package/build/components/sidebar-dataviews/add-new-view.js +2 -2
  102. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  103. package/build/components/sidebar-dataviews/default-views.js +18 -5
  104. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  105. package/build/components/sidebar-dataviews/index.js +3 -3
  106. package/build/components/sidebar-dataviews/index.js.map +1 -1
  107. package/build/components/sidebar-edit-mode/default-sidebar.js +1 -5
  108. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  109. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +62 -10
  110. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  111. package/build/components/sidebar-edit-mode/page-panels/index.js +1 -1
  112. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  113. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +0 -4
  114. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  115. package/build/components/sidebar-edit-mode/template-panel/index.js +4 -13
  116. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  117. package/build/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  118. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  119. package/build/components/sidebar-navigation-screen-global-styles/index.js +5 -2
  120. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  121. package/build/components/sidebar-navigation-screen-page/index.js +4 -1
  122. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  123. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +69 -0
  124. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -0
  125. package/build/components/style-book/index.js +38 -8
  126. package/build/components/style-book/index.js.map +1 -1
  127. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  128. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  129. package/build/hooks/commands/use-edit-mode-commands.js +11 -6
  130. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  131. package/build/index.js +12 -7
  132. package/build/index.js.map +1 -1
  133. package/build/store/actions.js +39 -44
  134. package/build/store/actions.js.map +1 -1
  135. package/build/store/private-actions.js +6 -2
  136. package/build/store/private-actions.js.map +1 -1
  137. package/build/store/reducer.js +0 -46
  138. package/build/store/reducer.js.map +1 -1
  139. package/build/store/selectors.js +32 -41
  140. package/build/store/selectors.js.map +1 -1
  141. package/build/utils/get-is-list-page.js +1 -1
  142. package/build/utils/get-is-list-page.js.map +1 -1
  143. package/build-module/components/block-editor/back-button.js +4 -3
  144. package/build-module/components/block-editor/back-button.js.map +1 -1
  145. package/build-module/components/block-editor/resizable-editor.js +2 -2
  146. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  147. package/build-module/components/block-editor/use-post-link-props.js +20 -0
  148. package/build-module/components/block-editor/use-post-link-props.js.map +1 -0
  149. package/build-module/components/block-editor/use-site-editor-settings.js +8 -25
  150. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  151. package/build-module/components/create-template-part-modal/index.js +14 -7
  152. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  153. package/build-module/components/editor/index.js +16 -17
  154. package/build-module/components/editor/index.js.map +1 -1
  155. package/build-module/components/editor-canvas-container/index.js +9 -7
  156. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  157. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +5 -2
  158. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  159. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +3 -3
  160. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -1
  161. package/build-module/components/global-styles/font-library-modal/context.js +7 -7
  162. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  163. package/build-module/components/global-styles/font-library-modal/font-collection.js +8 -4
  164. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  165. package/build-module/components/global-styles/font-library-modal/index.js +39 -22
  166. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  167. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  168. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  169. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +5 -2
  170. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  171. package/build-module/components/global-styles/font-library-modal/local-fonts.js +27 -11
  172. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  173. package/build-module/components/global-styles/font-library-modal/resolvers.js +5 -5
  174. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  175. package/build-module/components/global-styles/font-library-modal/{tab-layout.js → tab-panel-layout.js} +4 -4
  176. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -0
  177. package/build-module/components/global-styles/font-library-modal/utils/index.js +34 -36
  178. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  179. package/build-module/components/global-styles/preview.js +45 -3
  180. package/build-module/components/global-styles/preview.js.map +1 -1
  181. package/build-module/components/global-styles/screen-color-palette.js +17 -13
  182. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  183. package/build-module/components/global-styles/screen-revisions/index.js +53 -53
  184. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  185. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +27 -36
  186. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  187. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +40 -22
  188. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  189. package/build-module/components/global-styles/ui.js +15 -64
  190. package/build-module/components/global-styles/ui.js.map +1 -1
  191. package/build-module/components/header-edit-mode/document-tools/index.js +13 -110
  192. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  193. package/build-module/components/header-edit-mode/index.js +7 -11
  194. package/build-module/components/header-edit-mode/index.js.map +1 -1
  195. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -2
  196. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +1 -1
  197. package/build-module/components/header-edit-mode/more-menu/index.js +10 -7
  198. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  199. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -23
  200. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  201. package/build-module/components/keyboard-shortcuts/register.js +0 -36
  202. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  203. package/build-module/components/layout/index.js +6 -13
  204. package/build-module/components/layout/index.js.map +1 -1
  205. package/build-module/components/page-main/index.js +4 -4
  206. package/build-module/components/page-main/index.js.map +1 -1
  207. package/build-module/components/page-pages/index.js +83 -36
  208. package/build-module/components/page-pages/index.js.map +1 -1
  209. package/build-module/components/page-patterns/dataviews-pattern-actions.js +292 -0
  210. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -0
  211. package/build-module/components/page-patterns/dataviews-patterns.js +299 -0
  212. package/build-module/components/page-patterns/dataviews-patterns.js.map +1 -0
  213. package/build-module/components/page-patterns/duplicate-menu-item.js +1 -1
  214. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  215. package/build-module/components/page-patterns/grid-item.js +4 -3
  216. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  217. package/build-module/components/page-patterns/patterns-list.js +2 -1
  218. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  219. package/build-module/components/page-patterns/use-patterns.js +23 -13
  220. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  221. package/build-module/components/page-templates/index.js +314 -38
  222. package/build-module/components/page-templates/index.js.map +1 -1
  223. package/build-module/components/{page-patterns/pagination.js → pagination/index.js} +24 -12
  224. package/build-module/components/pagination/index.js.map +1 -0
  225. package/build-module/components/{page-pages/side-editor.js → post-preview/index.js} +7 -3
  226. package/build-module/components/post-preview/index.js.map +1 -0
  227. package/build-module/components/preferences-modal/enable-feature.js +3 -2
  228. package/build-module/components/preferences-modal/enable-feature.js.map +1 -1
  229. package/build-module/components/preferences-modal/enable-panel-option.js +26 -0
  230. package/build-module/components/preferences-modal/enable-panel-option.js.map +1 -0
  231. package/build-module/components/preferences-modal/index.js +57 -9
  232. package/build-module/components/preferences-modal/index.js.map +1 -1
  233. package/build-module/components/revisions/index.js +4 -8
  234. package/build-module/components/revisions/index.js.map +1 -1
  235. package/build-module/components/routes/link.js +5 -2
  236. package/build-module/components/routes/link.js.map +1 -1
  237. package/build-module/components/save-button/index.js +6 -3
  238. package/build-module/components/save-button/index.js.map +1 -1
  239. package/build-module/components/sidebar/index.js +3 -11
  240. package/build-module/components/sidebar/index.js.map +1 -1
  241. package/build-module/components/sidebar-dataviews/add-new-view.js +1 -1
  242. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  243. package/build-module/components/sidebar-dataviews/default-views.js +17 -5
  244. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  245. package/build-module/components/sidebar-dataviews/index.js +2 -2
  246. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  247. package/build-module/components/sidebar-edit-mode/default-sidebar.js +1 -5
  248. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  249. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +64 -12
  250. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  251. package/build-module/components/sidebar-edit-mode/page-panels/index.js +2 -2
  252. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  253. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +0 -4
  254. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  255. package/build-module/components/sidebar-edit-mode/template-panel/index.js +6 -15
  256. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  257. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  258. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  259. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +5 -2
  260. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  261. package/build-module/components/sidebar-navigation-screen-page/index.js +4 -1
  262. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  263. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +61 -0
  264. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -0
  265. package/build-module/components/style-book/index.js +40 -10
  266. package/build-module/components/style-book/index.js.map +1 -1
  267. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  268. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  269. package/build-module/hooks/commands/use-edit-mode-commands.js +11 -6
  270. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  271. package/build-module/index.js +12 -7
  272. package/build-module/index.js.map +1 -1
  273. package/build-module/store/actions.js +36 -41
  274. package/build-module/store/actions.js.map +1 -1
  275. package/build-module/store/private-actions.js +6 -2
  276. package/build-module/store/private-actions.js.map +1 -1
  277. package/build-module/store/reducer.js +0 -44
  278. package/build-module/store/reducer.js.map +1 -1
  279. package/build-module/store/selectors.js +30 -38
  280. package/build-module/store/selectors.js.map +1 -1
  281. package/build-module/utils/get-is-list-page.js +1 -1
  282. package/build-module/utils/get-is-list-page.js.map +1 -1
  283. package/build-style/style-rtl.css +357 -268
  284. package/build-style/style.css +357 -268
  285. package/package.json +42 -42
  286. package/src/components/add-new-template/style.scss +2 -1
  287. package/src/components/block-editor/back-button.js +4 -2
  288. package/src/components/block-editor/resizable-editor.js +1 -1
  289. package/src/components/block-editor/style.scss +1 -2
  290. package/src/components/block-editor/use-post-link-props.js +20 -0
  291. package/src/components/block-editor/use-site-editor-settings.js +10 -41
  292. package/src/components/code-editor/style.scss +0 -4
  293. package/src/components/create-template-part-modal/index.js +83 -82
  294. package/src/components/editor/index.js +24 -31
  295. package/src/components/editor-canvas-container/index.js +8 -6
  296. package/src/components/global-styles/font-library-modal/collection-font-variant.js +7 -2
  297. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +3 -3
  298. package/src/components/global-styles/font-library-modal/context.js +7 -7
  299. package/src/components/global-styles/font-library-modal/font-collection.js +10 -5
  300. package/src/components/global-styles/font-library-modal/index.js +44 -24
  301. package/src/components/global-styles/font-library-modal/installed-fonts.js +3 -3
  302. package/src/components/global-styles/font-library-modal/library-font-variant.js +7 -2
  303. package/src/components/global-styles/font-library-modal/local-fonts.js +53 -26
  304. package/src/components/global-styles/font-library-modal/resolvers.js +5 -5
  305. package/src/components/global-styles/font-library-modal/style.scss +5 -2
  306. package/src/components/global-styles/font-library-modal/{tab-layout.js → tab-panel-layout.js} +9 -3
  307. package/src/components/global-styles/font-library-modal/utils/index.js +21 -23
  308. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +58 -0
  309. package/src/components/global-styles/preview.js +55 -3
  310. package/src/components/global-styles/screen-color-palette.js +16 -26
  311. package/src/components/global-styles/screen-revisions/index.js +91 -92
  312. package/src/components/global-styles/screen-revisions/revisions-buttons.js +37 -38
  313. package/src/components/global-styles/screen-revisions/style.scss +77 -20
  314. package/src/components/global-styles/screen-revisions/test/use-global-styles-revisions.js +67 -0
  315. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +73 -46
  316. package/src/components/global-styles/ui.js +13 -74
  317. package/src/components/header-edit-mode/document-tools/index.js +33 -165
  318. package/src/components/header-edit-mode/index.js +6 -17
  319. package/src/components/header-edit-mode/mode-switcher/index.js +0 -4
  320. package/src/components/header-edit-mode/more-menu/index.js +9 -7
  321. package/src/components/header-edit-mode/style.scss +0 -47
  322. package/src/components/keyboard-shortcuts/edit-mode.js +1 -26
  323. package/src/components/keyboard-shortcuts/register.js +0 -43
  324. package/src/components/layout/index.js +8 -27
  325. package/src/components/layout/style.scss +10 -3
  326. package/src/components/list/style.scss +0 -5
  327. package/src/components/page/style.scss +1 -1
  328. package/src/components/page-main/index.js +8 -8
  329. package/src/components/page-pages/index.js +112 -41
  330. package/src/components/page-pages/style.scss +3 -2
  331. package/src/components/page-patterns/dataviews-pattern-actions.js +329 -0
  332. package/src/components/page-patterns/dataviews-patterns.js +380 -0
  333. package/src/components/page-patterns/duplicate-menu-item.js +1 -1
  334. package/src/components/page-patterns/grid-item.js +3 -2
  335. package/src/components/page-patterns/patterns-list.js +2 -1
  336. package/src/components/page-patterns/style.scss +89 -26
  337. package/src/components/page-patterns/use-patterns.js +24 -15
  338. package/src/components/page-templates/index.js +399 -64
  339. package/src/components/{page-patterns/pagination.js → pagination/index.js} +21 -10
  340. package/src/components/pagination/style.scss +5 -0
  341. package/src/components/post-preview/index.js +16 -0
  342. package/src/components/preferences-modal/enable-feature.js +9 -5
  343. package/src/components/preferences-modal/enable-panel-option.js +23 -0
  344. package/src/components/preferences-modal/index.js +107 -22
  345. package/src/components/revisions/index.js +8 -15
  346. package/src/components/routes/link.js +11 -3
  347. package/src/components/save-button/index.js +16 -3
  348. package/src/components/sidebar/index.js +6 -13
  349. package/src/components/sidebar-dataviews/add-new-view.js +1 -1
  350. package/src/components/sidebar-dataviews/default-views.js +23 -6
  351. package/src/components/sidebar-dataviews/index.js +2 -2
  352. package/src/components/sidebar-edit-mode/default-sidebar.js +0 -12
  353. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +85 -14
  354. package/src/components/sidebar-edit-mode/page-panels/index.js +15 -1
  355. package/src/components/sidebar-edit-mode/plugin-sidebar/index.js +0 -12
  356. package/src/components/sidebar-edit-mode/style.scss +0 -10
  357. package/src/components/sidebar-edit-mode/template-panel/index.js +44 -40
  358. package/src/components/sidebar-edit-mode/template-panel/style.scss +0 -4
  359. package/src/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  360. package/src/components/sidebar-navigation-screen-global-styles/index.js +3 -2
  361. package/src/components/sidebar-navigation-screen-page/index.js +2 -1
  362. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +77 -0
  363. package/src/components/site-hub/style.scss +5 -2
  364. package/src/components/style-book/index.js +65 -21
  365. package/src/components/style-book/style.scss +3 -3
  366. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +4 -1
  367. package/src/hooks/commands/use-edit-mode-commands.js +8 -12
  368. package/src/index.js +11 -5
  369. package/src/store/actions.js +35 -45
  370. package/src/store/private-actions.js +7 -3
  371. package/src/store/reducer.js +0 -44
  372. package/src/store/selectors.js +32 -38
  373. package/src/store/test/actions.js +11 -39
  374. package/src/store/test/reducer.js +1 -82
  375. package/src/store/test/selectors.js +0 -24
  376. package/src/style.scss +1 -1
  377. package/src/utils/get-is-list-page.js +2 -3
  378. package/build/components/global-styles/font-library-modal/tab-layout.js.map +0 -1
  379. package/build/components/global-styles/screen-revisions/get-revision-changes.js +0 -146
  380. package/build/components/global-styles/screen-revisions/get-revision-changes.js.map +0 -1
  381. package/build/components/header-edit-mode/undo-redo/redo.js +0 -41
  382. package/build/components/header-edit-mode/undo-redo/redo.js.map +0 -1
  383. package/build/components/header-edit-mode/undo-redo/undo.js +0 -40
  384. package/build/components/header-edit-mode/undo-redo/undo.js.map +0 -1
  385. package/build/components/page-pages/side-editor.js.map +0 -1
  386. package/build/components/page-patterns/pagination.js.map +0 -1
  387. package/build/components/page-templates/dataviews-templates.js +0 -317
  388. package/build/components/page-templates/dataviews-templates.js.map +0 -1
  389. package/build/components/secondary-sidebar/inserter-sidebar.js +0 -60
  390. package/build/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  391. package/build/components/secondary-sidebar/list-view-sidebar.js +0 -109
  392. package/build/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  393. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js +0 -35
  394. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +0 -1
  395. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +0 -73
  396. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +0 -1
  397. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +0 -219
  398. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +0 -1
  399. package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +0 -1
  400. package/build-module/components/global-styles/screen-revisions/get-revision-changes.js +0 -139
  401. package/build-module/components/global-styles/screen-revisions/get-revision-changes.js.map +0 -1
  402. package/build-module/components/header-edit-mode/undo-redo/redo.js +0 -33
  403. package/build-module/components/header-edit-mode/undo-redo/redo.js.map +0 -1
  404. package/build-module/components/header-edit-mode/undo-redo/undo.js +0 -32
  405. package/build-module/components/header-edit-mode/undo-redo/undo.js.map +0 -1
  406. package/build-module/components/page-pages/side-editor.js.map +0 -1
  407. package/build-module/components/page-patterns/pagination.js.map +0 -1
  408. package/build-module/components/page-templates/dataviews-templates.js +0 -309
  409. package/build-module/components/page-templates/dataviews-templates.js.map +0 -1
  410. package/build-module/components/secondary-sidebar/inserter-sidebar.js +0 -53
  411. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  412. package/build-module/components/secondary-sidebar/list-view-sidebar.js +0 -102
  413. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  414. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js +0 -27
  415. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +0 -1
  416. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +0 -65
  417. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +0 -1
  418. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +0 -209
  419. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +0 -1
  420. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +0 -62
  421. package/src/components/global-styles/font-library-modal/utils/test/wpKebabCase.spec.js +0 -28
  422. package/src/components/global-styles/screen-revisions/get-revision-changes.js +0 -171
  423. package/src/components/global-styles/screen-revisions/test/get-revision-changes.js +0 -191
  424. package/src/components/header-edit-mode/undo-redo/redo.js +0 -38
  425. package/src/components/header-edit-mode/undo-redo/undo.js +0 -34
  426. package/src/components/page-pages/side-editor.js +0 -14
  427. package/src/components/page-templates/dataviews-templates.js +0 -360
  428. package/src/components/secondary-sidebar/inserter-sidebar.js +0 -66
  429. package/src/components/secondary-sidebar/list-view-sidebar.js +0 -123
  430. package/src/components/secondary-sidebar/style.scss +0 -65
  431. package/src/components/sidebar-edit-mode/sidebar-fixed-bottom.js +0 -26
  432. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +0 -82
  433. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +0 -279
@@ -1,123 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
5
- import { Button } from '@wordpress/components';
6
- import { useFocusOnMount, useMergeRefs } from '@wordpress/compose';
7
- import { useDispatch } from '@wordpress/data';
8
- import { useCallback, useRef, useState } from '@wordpress/element';
9
- import { __ } from '@wordpress/i18n';
10
- import { closeSmall } from '@wordpress/icons';
11
- import { ESCAPE } from '@wordpress/keycodes';
12
- import { focus } from '@wordpress/dom';
13
- import { useShortcut } from '@wordpress/keyboard-shortcuts';
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
- import { store as editSiteStore } from '../../store';
19
- import { unlock } from '../../lock-unlock';
20
-
21
- const { PrivateListView } = unlock( blockEditorPrivateApis );
22
-
23
- export default function ListViewSidebar( { listViewToggleElement } ) {
24
- const { setIsListViewOpened } = useDispatch( editSiteStore );
25
-
26
- // This hook handles focus when the sidebar first renders.
27
- const focusOnMountRef = useFocusOnMount( 'firstElement' );
28
-
29
- // When closing the list view, focus should return to the toggle button.
30
- const closeListView = useCallback( () => {
31
- setIsListViewOpened( false );
32
- listViewToggleElement?.focus();
33
- }, [ listViewToggleElement, setIsListViewOpened ] );
34
-
35
- const closeOnEscape = useCallback(
36
- ( event ) => {
37
- if ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {
38
- event.preventDefault();
39
- closeListView();
40
- }
41
- },
42
- [ closeListView ]
43
- );
44
-
45
- // Use internal state instead of a ref to make sure that the component
46
- // re-renders when the dropZoneElement updates.
47
- const [ dropZoneElement, setDropZoneElement ] = useState( null );
48
-
49
- // This ref refers to the sidebar as a whole.
50
- const sidebarRef = useRef();
51
- // This ref refers to the close button.
52
- const sidebarCloseButtonRef = useRef();
53
- // This ref refers to the list view application area.
54
- const listViewRef = useRef();
55
-
56
- /*
57
- * Callback function to handle list view or close button focus.
58
- *
59
- * @return void
60
- */
61
- function handleSidebarFocus() {
62
- // Either focus the list view or the sidebar close button. Must have a fallback because the list view does not render when there are no blocks.
63
- const listViewApplicationFocus = focus.tabbable.find(
64
- listViewRef.current
65
- )[ 0 ];
66
- const listViewFocusArea = sidebarRef.current.contains(
67
- listViewApplicationFocus
68
- )
69
- ? listViewApplicationFocus
70
- : sidebarCloseButtonRef.current;
71
- listViewFocusArea.focus();
72
- }
73
-
74
- const handleToggleListViewShortcut = useCallback( () => {
75
- // If the sidebar has focus, it is safe to close.
76
- if (
77
- sidebarRef.current.contains(
78
- sidebarRef.current.ownerDocument.activeElement
79
- )
80
- ) {
81
- closeListView();
82
- } else {
83
- // If the list view or close button does not have focus, focus should be moved to it.
84
- handleSidebarFocus();
85
- }
86
- }, [ closeListView ] );
87
-
88
- // This only fires when the sidebar is open because of the conditional rendering.
89
- // It is the same shortcut to open but that is defined as a global shortcut and only fires when the sidebar is closed.
90
- useShortcut(
91
- 'core/edit-site/toggle-list-view',
92
- handleToggleListViewShortcut
93
- );
94
-
95
- return (
96
- // eslint-disable-next-line jsx-a11y/no-static-element-interactions
97
- <div
98
- className="edit-site-editor__list-view-panel"
99
- onKeyDown={ closeOnEscape }
100
- ref={ sidebarRef }
101
- >
102
- <div className="edit-site-editor__list-view-panel-header">
103
- <strong>{ __( 'List View' ) }</strong>
104
- <Button
105
- icon={ closeSmall }
106
- label={ __( 'Close' ) }
107
- onClick={ closeListView }
108
- ref={ sidebarCloseButtonRef }
109
- />
110
- </div>
111
- <div
112
- className="edit-site-editor__list-view-panel-content"
113
- ref={ useMergeRefs( [
114
- focusOnMountRef,
115
- setDropZoneElement,
116
- listViewRef,
117
- ] ) }
118
- >
119
- <PrivateListView dropZoneElement={ dropZoneElement } />
120
- </div>
121
- </div>
122
- );
123
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * Note that this CSS file should be in sync with its counterpart in the other editor:
3
- * packages/edit-post/src/components/secondary-sidebar/style.scss
4
- */
5
-
6
- .edit-site-editor__inserter-panel,
7
- .edit-site-editor__list-view-panel {
8
- height: 100%;
9
- display: flex;
10
- flex-direction: column;
11
- }
12
-
13
- .edit-site-editor__list-view-panel {
14
- @include break-medium() {
15
- // Same width as the Inserter.
16
- // @see packages/block-editor/src/components/inserter/style.scss
17
- width: 350px;
18
- }
19
- }
20
-
21
- .edit-site-editor__inserter-panel-header {
22
- padding-top: $grid-unit-10;
23
- padding-right: $grid-unit-10;
24
- display: flex;
25
- justify-content: flex-end;
26
- }
27
-
28
- .edit-site-editor__inserter-panel-content,
29
- .edit-site-editor__list-view-panel-content {
30
- // Leave space for the close button
31
- height: calc(100% - #{$button-size} - #{$grid-unit-10});
32
- }
33
-
34
-
35
- .edit-site-editor__inserter-panel-content {
36
- @include break-medium() {
37
- height: 100%;
38
- }
39
- }
40
-
41
- .edit-site-editor__list-view-panel-header {
42
- align-items: center;
43
- border-bottom: $border-width solid $gray-300;
44
- display: flex;
45
- justify-content: space-between;
46
- height: $grid-unit-60;
47
- padding-left: $grid-unit-20;
48
- padding-right: $grid-unit-05;
49
- }
50
-
51
- .edit-site-editor__list-view-panel-content {
52
- height: 100%;
53
-
54
- // Include custom scrollbars, invisible until hovered.
55
- @include custom-scrollbars-on-hover(transparent, $gray-600);
56
- overflow: auto;
57
-
58
- // Only reserve space for scrollbars when there is content to scroll.
59
- // This allows items in the list view to have equidistant padding left and right
60
- // right up until a scrollbar is present.
61
- scrollbar-gutter: auto;
62
-
63
- // The table cells use an extra pixels of space left and right. We compensate for that here.
64
- padding: $grid-unit-10 ($grid-unit-10 - $border-width - $border-width);
65
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { privateApis as componentsPrivateApis } from '@wordpress/components';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import { unlock } from '../../lock-unlock';
10
-
11
- const { createPrivateSlotFill } = unlock( componentsPrivateApis );
12
- const SIDEBAR_FIXED_BOTTOM_SLOT_FILL_NAME = 'SidebarFixedBottom';
13
- const { Slot: SidebarFixedBottomSlot, Fill: SidebarFixedBottomFill } =
14
- createPrivateSlotFill( SIDEBAR_FIXED_BOTTOM_SLOT_FILL_NAME );
15
-
16
- export default function SidebarFixedBottom( { children } ) {
17
- return (
18
- <SidebarFixedBottomFill>
19
- <div className="edit-site-sidebar-fixed-bottom-slot">
20
- { children }
21
- </div>
22
- </SidebarFixedBottomFill>
23
- );
24
- }
25
-
26
- export { SidebarFixedBottomSlot };
@@ -1,82 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { Button, PanelRow } from '@wordpress/components';
5
- import { sprintf, _n, __ } from '@wordpress/i18n';
6
- import { backup } from '@wordpress/icons';
7
- import { addQueryArgs } from '@wordpress/url';
8
- import { PostTypeSupportCheck } from '@wordpress/editor';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import useEditedEntityRecord from '../../use-edited-entity-record';
14
-
15
- const useRevisionData = () => {
16
- const { record: currentTemplate } = useEditedEntityRecord();
17
-
18
- const lastRevisionId =
19
- currentTemplate?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id ?? null;
20
-
21
- const revisionsCount =
22
- currentTemplate?._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;
23
-
24
- return {
25
- currentTemplate,
26
- lastRevisionId,
27
- revisionsCount,
28
- };
29
- };
30
-
31
- function PostLastRevisionCheck( { children } ) {
32
- const { lastRevisionId, revisionsCount } = useRevisionData();
33
-
34
- if ( ! process.env.IS_GUTENBERG_PLUGIN ) {
35
- return null;
36
- }
37
-
38
- if ( ! lastRevisionId || revisionsCount < 2 ) {
39
- return null;
40
- }
41
-
42
- return (
43
- <PostTypeSupportCheck supportKeys="revisions">
44
- { children }
45
- </PostTypeSupportCheck>
46
- );
47
- }
48
-
49
- const PostLastRevision = () => {
50
- const { lastRevisionId, revisionsCount } = useRevisionData();
51
-
52
- return (
53
- <PostLastRevisionCheck>
54
- <PanelRow
55
- header={ __( 'Editing history' ) }
56
- className="edit-site-template-revisions"
57
- >
58
- <Button
59
- href={ addQueryArgs( 'revision.php', {
60
- revision: lastRevisionId,
61
- } ) }
62
- className="edit-site-template-last-revision__title"
63
- icon={ backup }
64
- >
65
- { sprintf(
66
- /* translators: %d: number of revisions */
67
- _n( '%d Revision', '%d Revisions', revisionsCount ),
68
- revisionsCount
69
- ) }
70
- </Button>
71
- </PanelRow>
72
- </PostLastRevisionCheck>
73
- );
74
- };
75
-
76
- export default function LastRevision() {
77
- return (
78
- <PostLastRevisionCheck>
79
- <PostLastRevision />
80
- </PostLastRevisionCheck>
81
- );
82
- }
@@ -1,279 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __, _x, sprintf } from '@wordpress/i18n';
5
- import { useEffect, useMemo, useState } from '@wordpress/element';
6
- import { FormTokenField, FlexBlock, PanelRow } from '@wordpress/components';
7
- import { useSelect, useDispatch } from '@wordpress/data';
8
- import { store as coreStore } from '@wordpress/core-data';
9
- import { useDebounce } from '@wordpress/compose';
10
- import { store as noticesStore } from '@wordpress/notices';
11
- import { decodeEntities } from '@wordpress/html-entities';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import { PATTERN_TYPES } from '../../../utils/constants';
17
-
18
- export const unescapeString = ( arg ) => {
19
- return decodeEntities( arg );
20
- };
21
-
22
- /**
23
- * Returns a term object with name unescaped.
24
- *
25
- * @param {Object} term The term object to unescape.
26
- *
27
- * @return {Object} Term object with name property unescaped.
28
- */
29
- export const unescapeTerm = ( term ) => {
30
- return {
31
- ...term,
32
- name: unescapeString( term.name ),
33
- };
34
- };
35
-
36
- /**
37
- * Shared reference to an empty array for cases where it is important to avoid
38
- * returning a new array reference on every invocation.
39
- *
40
- * @type {Array<any>}
41
- */
42
- const EMPTY_ARRAY = [];
43
-
44
- /**
45
- * Module constants
46
- */
47
- const MAX_TERMS_SUGGESTIONS = 20;
48
- const DEFAULT_QUERY = {
49
- per_page: MAX_TERMS_SUGGESTIONS,
50
- _fields: 'id,name',
51
- context: 'view',
52
- };
53
-
54
- const isSameTermName = ( termA, termB ) =>
55
- unescapeString( termA ).toLowerCase() ===
56
- unescapeString( termB ).toLowerCase();
57
-
58
- const termNamesToIds = ( names, terms ) => {
59
- return names.map(
60
- ( termName ) =>
61
- terms.find( ( term ) => isSameTermName( term.name, termName ) ).id
62
- );
63
- };
64
-
65
- export default function PatternCategories( { post } ) {
66
- const slug = 'wp_pattern_category';
67
- const [ values, setValues ] = useState( [] );
68
- const [ search, setSearch ] = useState( '' );
69
- const debouncedSearch = useDebounce( setSearch, 500 );
70
-
71
- const {
72
- terms,
73
- taxonomy,
74
- hasAssignAction,
75
- hasCreateAction,
76
- hasResolvedTerms,
77
- } = useSelect(
78
- ( select ) => {
79
- const { getEntityRecords, getTaxonomy, hasFinishedResolution } =
80
- select( coreStore );
81
- const _taxonomy = getTaxonomy( slug );
82
- const _termIds =
83
- post?.wp_pattern_category?.length > 0
84
- ? post?.wp_pattern_category
85
- : EMPTY_ARRAY;
86
- const query = {
87
- ...DEFAULT_QUERY,
88
- include: _termIds?.join( ',' ),
89
- per_page: -1,
90
- };
91
-
92
- return {
93
- hasCreateAction: _taxonomy
94
- ? post._links?.[
95
- 'wp:action-create-' + _taxonomy.rest_base
96
- ] ?? false
97
- : false,
98
- hasAssignAction: _taxonomy
99
- ? post._links?.[
100
- 'wp:action-assign-' + _taxonomy.rest_base
101
- ] ?? false
102
- : false,
103
- taxonomy: _taxonomy,
104
- termIds: _termIds,
105
- terms: _termIds?.length
106
- ? getEntityRecords( 'taxonomy', slug, query )
107
- : EMPTY_ARRAY,
108
- hasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [
109
- 'taxonomy',
110
- slug,
111
- query,
112
- ] ),
113
- };
114
- },
115
- [ slug, post ]
116
- );
117
-
118
- const { searchResults } = useSelect(
119
- ( select ) => {
120
- const { getEntityRecords } = select( coreStore );
121
-
122
- return {
123
- searchResults: !! search
124
- ? getEntityRecords( 'taxonomy', slug, {
125
- ...DEFAULT_QUERY,
126
- search,
127
- } )
128
- : EMPTY_ARRAY,
129
- };
130
- },
131
- [ search, slug ]
132
- );
133
-
134
- // Update terms state only after the selectors are resolved.
135
- // We're using this to avoid terms temporarily disappearing on slow networks
136
- // while core data makes REST API requests.
137
- useEffect( () => {
138
- if ( hasResolvedTerms ) {
139
- const newValues = ( terms ?? [] ).map( ( term ) =>
140
- unescapeString( term.name )
141
- );
142
-
143
- setValues( newValues );
144
- }
145
- }, [ terms, hasResolvedTerms ] );
146
-
147
- const suggestions = useMemo( () => {
148
- return ( searchResults ?? [] ).map( ( term ) =>
149
- unescapeString( term.name )
150
- );
151
- }, [ searchResults ] );
152
-
153
- const { saveEntityRecord, editEntityRecord, invalidateResolution } =
154
- useDispatch( coreStore );
155
- const { createErrorNotice } = useDispatch( noticesStore );
156
-
157
- if ( ! hasAssignAction ) {
158
- return null;
159
- }
160
-
161
- async function findOrCreateTerm( term ) {
162
- try {
163
- const newTerm = await saveEntityRecord( 'taxonomy', slug, term, {
164
- throwOnError: true,
165
- } );
166
- invalidateResolution( 'getUserPatternCategories' );
167
- return unescapeTerm( newTerm );
168
- } catch ( error ) {
169
- if ( error.code !== 'term_exists' ) {
170
- throw error;
171
- }
172
-
173
- return {
174
- id: error.data.term_id,
175
- name: term.name,
176
- };
177
- }
178
- }
179
-
180
- function onUpdateTerms( newTermIds ) {
181
- editEntityRecord( 'postType', PATTERN_TYPES.user, post.id, {
182
- wp_pattern_category: newTermIds,
183
- } );
184
- }
185
-
186
- function onChange( termNames ) {
187
- const availableTerms = [
188
- ...( terms ?? [] ),
189
- ...( searchResults ?? [] ),
190
- ];
191
- const uniqueTerms = termNames.reduce( ( acc, name ) => {
192
- if (
193
- ! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )
194
- ) {
195
- acc.push( name );
196
- }
197
- return acc;
198
- }, [] );
199
-
200
- const newTermNames = uniqueTerms.filter(
201
- ( termName ) =>
202
- ! availableTerms.find( ( term ) =>
203
- isSameTermName( term.name, termName )
204
- )
205
- );
206
-
207
- // Optimistically update term values.
208
- // The selector will always re-fetch terms later.
209
- setValues( uniqueTerms );
210
-
211
- if ( newTermNames.length === 0 ) {
212
- return onUpdateTerms(
213
- termNamesToIds( uniqueTerms, availableTerms )
214
- );
215
- }
216
-
217
- if ( ! hasCreateAction ) {
218
- return;
219
- }
220
-
221
- Promise.all(
222
- newTermNames.map( ( termName ) =>
223
- findOrCreateTerm( { name: termName } )
224
- )
225
- )
226
- .then( ( newTerms ) => {
227
- const newAvailableTerms = availableTerms.concat( newTerms );
228
- return onUpdateTerms(
229
- termNamesToIds( uniqueTerms, newAvailableTerms )
230
- );
231
- } )
232
- .catch( ( error ) => {
233
- createErrorNotice( error.message, {
234
- type: 'snackbar',
235
- } );
236
- } );
237
- }
238
-
239
- const singularName =
240
- taxonomy?.labels?.singular_name ??
241
- ( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );
242
- const termAddedLabel = sprintf(
243
- /* translators: %s: term name. */
244
- _x( '%s added', 'term' ),
245
- singularName
246
- );
247
- const termRemovedLabel = sprintf(
248
- /* translators: %s: term name. */
249
- _x( '%s removed', 'term' ),
250
- singularName
251
- );
252
- const removeTermLabel = sprintf(
253
- /* translators: %s: term name. */
254
- _x( 'Remove %s', 'term' ),
255
- singularName
256
- );
257
-
258
- return (
259
- <PanelRow initialOpen={ true } title={ __( 'Categories' ) }>
260
- <FlexBlock>
261
- <FormTokenField
262
- __next40pxDefaultSize
263
- value={ values }
264
- suggestions={ suggestions }
265
- onChange={ onChange }
266
- onInputChange={ debouncedSearch }
267
- maxSuggestions={ MAX_TERMS_SUGGESTIONS }
268
- label={ __( 'Pattern categories' ) }
269
- messages={ {
270
- added: termAddedLabel,
271
- removed: termRemovedLabel,
272
- remove: removeTermLabel,
273
- } }
274
- tokenizeOnBlur
275
- />
276
- </FlexBlock>
277
- </PanelRow>
278
- );
279
- }