@wordpress/block-library 8.9.0 → 8.11.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 (502) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/block/edit.native.js +17 -10
  3. package/build/block/edit.native.js.map +1 -1
  4. package/build/code/index.js +1 -0
  5. package/build/code/index.js.map +1 -1
  6. package/build/column/index.js +1 -1
  7. package/build/columns/transforms.js +1 -5
  8. package/build/columns/transforms.js.map +1 -1
  9. package/build/comment-author-name/edit.js +1 -1
  10. package/build/comment-author-name/edit.js.map +1 -1
  11. package/build/comment-edit-link/edit.js +1 -1
  12. package/build/comment-edit-link/edit.js.map +1 -1
  13. package/build/cover/edit/inspector-controls.js +1 -1
  14. package/build/cover/edit/inspector-controls.js.map +1 -1
  15. package/build/cover/edit/resizable-cover-popover.js +3 -3
  16. package/build/cover/edit/resizable-cover-popover.js.map +1 -1
  17. package/build/cover/index.js +1 -1
  18. package/build/cover/variations.js +1 -1
  19. package/build/cover/variations.js.map +1 -1
  20. package/build/details/edit.js +19 -5
  21. package/build/details/edit.js.map +1 -1
  22. package/build/details/index.js +14 -10
  23. package/build/details/index.js.map +1 -1
  24. package/build/details/save.js +4 -1
  25. package/build/details/save.js.map +1 -1
  26. package/build/embed/variations.js +2 -2
  27. package/build/embed/variations.js.map +1 -1
  28. package/build/file/interactivity.js +19 -0
  29. package/build/file/interactivity.js.map +1 -0
  30. package/build/file/{utils.js → utils/index.js} +1 -1
  31. package/build/file/utils/index.js.map +1 -0
  32. package/build/file/view.js +1 -1
  33. package/build/file/view.js.map +1 -1
  34. package/build/freeform/modal.js +20 -17
  35. package/build/freeform/modal.js.map +1 -1
  36. package/build/gallery/edit.js +2 -8
  37. package/build/gallery/edit.js.map +1 -1
  38. package/build/gallery/v1/edit.js +1 -7
  39. package/build/gallery/v1/edit.js.map +1 -1
  40. package/build/gallery/v1/gallery-image.native.js +1 -3
  41. package/build/gallery/v1/gallery-image.native.js.map +1 -1
  42. package/build/group/transforms.js +0 -5
  43. package/build/group/transforms.js.map +1 -1
  44. package/build/image/deprecated.js +2 -4
  45. package/build/image/deprecated.js.map +1 -1
  46. package/build/image/edit.js +13 -11
  47. package/build/image/edit.js.map +1 -1
  48. package/build/image/image.js +7 -12
  49. package/build/image/image.js.map +1 -1
  50. package/build/image/index.js +3 -0
  51. package/build/image/index.js.map +1 -1
  52. package/build/image/interactivity.js +102 -0
  53. package/build/image/interactivity.js.map +1 -0
  54. package/build/image/save.js +2 -4
  55. package/build/image/save.js.map +1 -1
  56. package/build/image/utils.js +10 -18
  57. package/build/image/utils.js.map +1 -1
  58. package/build/index.js +0 -6
  59. package/build/index.js.map +1 -1
  60. package/build/index.native.js +1 -1
  61. package/build/index.native.js.map +1 -1
  62. package/build/latest-posts/edit.native.js +1 -3
  63. package/build/latest-posts/edit.native.js.map +1 -1
  64. package/build/list/edit.js +1 -1
  65. package/build/list/edit.js.map +1 -1
  66. package/build/list-item/edit.native.js +1 -1
  67. package/build/list-item/edit.native.js.map +1 -1
  68. package/build/list-item/transforms.js +4 -1
  69. package/build/list-item/transforms.js.map +1 -1
  70. package/build/list-item/utils.js +5 -1
  71. package/build/list-item/utils.js.map +1 -1
  72. package/build/loginout/index.js +11 -1
  73. package/build/loginout/index.js.map +1 -1
  74. package/build/media-text/deprecated.js +4 -6
  75. package/build/media-text/deprecated.js.map +1 -1
  76. package/build/media-text/edit.js +13 -11
  77. package/build/media-text/edit.js.map +1 -1
  78. package/build/media-text/media-container.js +3 -3
  79. package/build/media-text/media-container.js.map +1 -1
  80. package/build/media-text/save.js +1 -3
  81. package/build/media-text/save.js.map +1 -1
  82. package/build/navigation/constants.js +15 -0
  83. package/build/navigation/constants.js.map +1 -0
  84. package/build/navigation/edit/index.js +16 -26
  85. package/build/navigation/edit/index.js.map +1 -1
  86. package/build/navigation/edit/inner-blocks.js +5 -7
  87. package/build/navigation/edit/inner-blocks.js.map +1 -1
  88. package/build/navigation/edit/leaf-more-menu.js +148 -0
  89. package/build/navigation/edit/leaf-more-menu.js.map +1 -0
  90. package/build/navigation/edit/menu-inspector-controls.js +53 -8
  91. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  92. package/build/navigation/edit/navigation-menu-delete-control.js +6 -6
  93. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  94. package/build/navigation/edit/unsaved-inner-blocks.js +12 -25
  95. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  96. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  97. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  98. package/build/navigation/interactivity.js +157 -0
  99. package/build/navigation/interactivity.js.map +1 -0
  100. package/build/navigation-link/edit.js +7 -5
  101. package/build/navigation-link/edit.js.map +1 -1
  102. package/build/navigation-link/update-attributes.js +5 -5
  103. package/build/navigation-link/update-attributes.js.map +1 -1
  104. package/build/navigation-submenu/edit.js +7 -5
  105. package/build/navigation-submenu/edit.js.map +1 -1
  106. package/build/paragraph/index.js +5 -1
  107. package/build/paragraph/index.js.map +1 -1
  108. package/build/paragraph/transforms.js +5 -1
  109. package/build/paragraph/transforms.js.map +1 -1
  110. package/build/pattern/edit.js +42 -8
  111. package/build/pattern/edit.js.map +1 -1
  112. package/build/pattern/index.js +12 -5
  113. package/build/pattern/index.js.map +1 -1
  114. package/build/pattern/v1/edit.js +57 -0
  115. package/build/pattern/v1/edit.js.map +1 -0
  116. package/build/post-author-name/edit.js +1 -1
  117. package/build/post-author-name/edit.js.map +1 -1
  118. package/build/post-featured-image/edit.js +1 -2
  119. package/build/post-featured-image/edit.js.map +1 -1
  120. package/build/post-featured-image/overlay.js +5 -0
  121. package/build/post-featured-image/overlay.js.map +1 -1
  122. package/build/post-title/edit.js +24 -7
  123. package/build/post-title/edit.js.map +1 -1
  124. package/build/preformatted/edit.native.js +3 -2
  125. package/build/preformatted/edit.native.js.map +1 -1
  126. package/build/quote/transforms.js +23 -37
  127. package/build/quote/transforms.js.map +1 -1
  128. package/build/read-more/edit.js +1 -1
  129. package/build/read-more/edit.js.map +1 -1
  130. package/build/search/edit.js +9 -1
  131. package/build/search/edit.js.map +1 -1
  132. package/build/site-title/edit/index.js +1 -1
  133. package/build/site-title/edit/index.js.map +1 -1
  134. package/build/social-link/edit.js +21 -4
  135. package/build/social-link/edit.js.map +1 -1
  136. package/build/social-links/edit.js +2 -2
  137. package/build/social-links/edit.js.map +1 -1
  138. package/build/template-part/edit/index.js +1 -7
  139. package/build/template-part/edit/index.js.map +1 -1
  140. package/build/template-part/edit/utils/hooks.js +2 -2
  141. package/build/template-part/edit/utils/hooks.js.map +1 -1
  142. package/build/utils/interactivity/constants.js +9 -0
  143. package/build/utils/interactivity/constants.js.map +1 -0
  144. package/build/utils/interactivity/directives.js +236 -0
  145. package/build/utils/interactivity/directives.js.map +1 -0
  146. package/build/utils/interactivity/hooks.js +176 -0
  147. package/build/utils/interactivity/hooks.js.map +1 -0
  148. package/build/utils/interactivity/hydration.js +34 -0
  149. package/build/utils/interactivity/hydration.js.map +1 -0
  150. package/build/utils/interactivity/index.js +34 -0
  151. package/build/utils/interactivity/index.js.map +1 -0
  152. package/build/utils/interactivity/portals.js +108 -0
  153. package/build/utils/interactivity/portals.js.map +1 -0
  154. package/build/utils/interactivity/store.js +67 -0
  155. package/build/utils/interactivity/store.js.map +1 -0
  156. package/build/utils/interactivity/utils.js +87 -0
  157. package/build/utils/interactivity/utils.js.map +1 -0
  158. package/build/utils/interactivity/vdom.js +109 -0
  159. package/build/utils/interactivity/vdom.js.map +1 -0
  160. package/build-module/block/edit.native.js +7 -1
  161. package/build-module/block/edit.native.js.map +1 -1
  162. package/build-module/code/index.js +1 -0
  163. package/build-module/code/index.js.map +1 -1
  164. package/build-module/column/index.js +1 -1
  165. package/build-module/columns/transforms.js +1 -5
  166. package/build-module/columns/transforms.js.map +1 -1
  167. package/build-module/comment-author-name/edit.js +1 -1
  168. package/build-module/comment-author-name/edit.js.map +1 -1
  169. package/build-module/comment-edit-link/edit.js +1 -1
  170. package/build-module/comment-edit-link/edit.js.map +1 -1
  171. package/build-module/cover/edit/inspector-controls.js +1 -1
  172. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  173. package/build-module/cover/edit/resizable-cover-popover.js +3 -3
  174. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
  175. package/build-module/cover/index.js +1 -1
  176. package/build-module/cover/variations.js +1 -1
  177. package/build-module/cover/variations.js.map +1 -1
  178. package/build-module/details/edit.js +20 -6
  179. package/build-module/details/edit.js.map +1 -1
  180. package/build-module/details/index.js +14 -10
  181. package/build-module/details/index.js.map +1 -1
  182. package/build-module/details/save.js +5 -2
  183. package/build-module/details/save.js.map +1 -1
  184. package/build-module/embed/variations.js +2 -2
  185. package/build-module/embed/variations.js.map +1 -1
  186. package/build-module/file/interactivity.js +15 -0
  187. package/build-module/file/interactivity.js.map +1 -0
  188. package/build-module/file/{utils.js → utils/index.js} +1 -1
  189. package/build-module/file/utils/index.js.map +1 -0
  190. package/build-module/file/view.js +1 -1
  191. package/build-module/file/view.js.map +1 -1
  192. package/build-module/freeform/modal.js +19 -18
  193. package/build-module/freeform/modal.js.map +1 -1
  194. package/build-module/gallery/edit.js +2 -8
  195. package/build-module/gallery/edit.js.map +1 -1
  196. package/build-module/gallery/v1/edit.js +1 -6
  197. package/build-module/gallery/v1/edit.js.map +1 -1
  198. package/build-module/gallery/v1/gallery-image.native.js +1 -2
  199. package/build-module/gallery/v1/gallery-image.native.js.map +1 -1
  200. package/build-module/group/transforms.js +0 -5
  201. package/build-module/group/transforms.js.map +1 -1
  202. package/build-module/image/deprecated.js +2 -3
  203. package/build-module/image/deprecated.js.map +1 -1
  204. package/build-module/image/edit.js +12 -11
  205. package/build-module/image/edit.js.map +1 -1
  206. package/build-module/image/image.js +7 -11
  207. package/build-module/image/image.js.map +1 -1
  208. package/build-module/image/index.js +3 -0
  209. package/build-module/image/index.js.map +1 -1
  210. package/build-module/image/interactivity.js +99 -0
  211. package/build-module/image/interactivity.js.map +1 -0
  212. package/build-module/image/save.js +2 -3
  213. package/build-module/image/save.js.map +1 -1
  214. package/build-module/image/utils.js +10 -17
  215. package/build-module/image/utils.js.map +1 -1
  216. package/build-module/index.js +0 -4
  217. package/build-module/index.js.map +1 -1
  218. package/build-module/index.native.js +1 -1
  219. package/build-module/index.native.js.map +1 -1
  220. package/build-module/latest-posts/edit.native.js +1 -2
  221. package/build-module/latest-posts/edit.native.js.map +1 -1
  222. package/build-module/list/edit.js +1 -1
  223. package/build-module/list/edit.js.map +1 -1
  224. package/build-module/list-item/edit.native.js +1 -1
  225. package/build-module/list-item/edit.native.js.map +1 -1
  226. package/build-module/list-item/transforms.js +5 -2
  227. package/build-module/list-item/transforms.js.map +1 -1
  228. package/build-module/list-item/utils.js +5 -1
  229. package/build-module/list-item/utils.js.map +1 -1
  230. package/build-module/loginout/index.js +11 -1
  231. package/build-module/loginout/index.js.map +1 -1
  232. package/build-module/media-text/deprecated.js +4 -5
  233. package/build-module/media-text/deprecated.js.map +1 -1
  234. package/build-module/media-text/edit.js +13 -12
  235. package/build-module/media-text/edit.js.map +1 -1
  236. package/build-module/media-text/media-container.js +3 -3
  237. package/build-module/media-text/media-container.js.map +1 -1
  238. package/build-module/media-text/save.js +1 -2
  239. package/build-module/media-text/save.js.map +1 -1
  240. package/build-module/navigation/constants.js +6 -0
  241. package/build-module/navigation/constants.js.map +1 -0
  242. package/build-module/navigation/edit/index.js +18 -27
  243. package/build-module/navigation/edit/index.js.map +1 -1
  244. package/build-module/navigation/edit/inner-blocks.js +2 -4
  245. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  246. package/build-module/navigation/edit/leaf-more-menu.js +132 -0
  247. package/build-module/navigation/edit/leaf-more-menu.js.map +1 -0
  248. package/build-module/navigation/edit/menu-inspector-controls.js +52 -9
  249. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  250. package/build-module/navigation/edit/navigation-menu-delete-control.js +7 -7
  251. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  252. package/build-module/navigation/edit/unsaved-inner-blocks.js +9 -20
  253. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  254. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  255. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  256. package/build-module/navigation/interactivity.js +154 -0
  257. package/build-module/navigation/interactivity.js.map +1 -0
  258. package/build-module/navigation-link/edit.js +7 -5
  259. package/build-module/navigation-link/edit.js.map +1 -1
  260. package/build-module/navigation-link/update-attributes.js +4 -4
  261. package/build-module/navigation-link/update-attributes.js.map +1 -1
  262. package/build-module/navigation-submenu/edit.js +7 -5
  263. package/build-module/navigation-submenu/edit.js.map +1 -1
  264. package/build-module/paragraph/index.js +5 -1
  265. package/build-module/paragraph/index.js.map +1 -1
  266. package/build-module/paragraph/transforms.js +5 -1
  267. package/build-module/paragraph/transforms.js.map +1 -1
  268. package/build-module/pattern/edit.js +42 -9
  269. package/build-module/pattern/edit.js.map +1 -1
  270. package/build-module/pattern/index.js +12 -3
  271. package/build-module/pattern/index.js.map +1 -1
  272. package/build-module/pattern/v1/edit.js +48 -0
  273. package/build-module/pattern/v1/edit.js.map +1 -0
  274. package/build-module/post-author-name/edit.js +1 -1
  275. package/build-module/post-author-name/edit.js.map +1 -1
  276. package/build-module/post-featured-image/edit.js +1 -2
  277. package/build-module/post-featured-image/edit.js.map +1 -1
  278. package/build-module/post-featured-image/overlay.js +5 -0
  279. package/build-module/post-featured-image/overlay.js.map +1 -1
  280. package/build-module/post-title/edit.js +23 -7
  281. package/build-module/post-title/edit.js.map +1 -1
  282. package/build-module/preformatted/edit.native.js +3 -2
  283. package/build-module/preformatted/edit.native.js.map +1 -1
  284. package/build-module/quote/transforms.js +23 -37
  285. package/build-module/quote/transforms.js.map +1 -1
  286. package/build-module/read-more/edit.js +1 -1
  287. package/build-module/read-more/edit.js.map +1 -1
  288. package/build-module/search/edit.js +9 -1
  289. package/build-module/search/edit.js.map +1 -1
  290. package/build-module/site-title/edit/index.js +1 -1
  291. package/build-module/site-title/edit/index.js.map +1 -1
  292. package/build-module/social-link/edit.js +20 -5
  293. package/build-module/social-link/edit.js.map +1 -1
  294. package/build-module/social-links/edit.js +2 -2
  295. package/build-module/social-links/edit.js.map +1 -1
  296. package/build-module/template-part/edit/index.js +1 -6
  297. package/build-module/template-part/edit/index.js.map +1 -1
  298. package/build-module/template-part/edit/utils/hooks.js +1 -1
  299. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  300. package/build-module/utils/interactivity/constants.js +2 -0
  301. package/build-module/utils/interactivity/constants.js.map +1 -0
  302. package/build-module/utils/interactivity/directives.js +220 -0
  303. package/build-module/utils/interactivity/directives.js.map +1 -0
  304. package/build-module/utils/interactivity/hooks.js +162 -0
  305. package/build-module/utils/interactivity/hooks.js.map +1 -0
  306. package/build-module/utils/interactivity/hydration.js +21 -0
  307. package/build-module/utils/interactivity/hydration.js.map +1 -0
  308. package/build-module/utils/interactivity/index.js +17 -0
  309. package/build-module/utils/interactivity/index.js.map +1 -0
  310. package/build-module/utils/interactivity/portals.js +100 -0
  311. package/build-module/utils/interactivity/portals.js.map +1 -0
  312. package/build-module/utils/interactivity/store.js +56 -0
  313. package/build-module/utils/interactivity/store.js.map +1 -0
  314. package/build-module/utils/interactivity/utils.js +75 -0
  315. package/build-module/utils/interactivity/utils.js.map +1 -0
  316. package/build-module/utils/interactivity/vdom.js +97 -0
  317. package/build-module/utils/interactivity/vdom.js.map +1 -0
  318. package/build-style/common-rtl.css +1 -1
  319. package/build-style/common.css +1 -1
  320. package/build-style/cover/style-rtl.css +3 -2
  321. package/build-style/cover/style.css +3 -2
  322. package/build-style/{details-summary → details}/editor-rtl.css +1 -1
  323. package/build-style/{details-summary → details}/editor.css +1 -1
  324. package/build-style/details/style-rtl.css +14 -0
  325. package/build-style/details/style.css +14 -0
  326. package/build-style/editor-rtl.css +71 -5
  327. package/build-style/editor.css +71 -5
  328. package/build-style/file/editor-rtl.css +3 -0
  329. package/build-style/file/editor.css +3 -0
  330. package/build-style/freeform/editor-rtl.css +29 -0
  331. package/build-style/freeform/editor.css +29 -0
  332. package/build-style/gallery/editor-rtl.css +0 -4
  333. package/build-style/gallery/editor.css +0 -4
  334. package/build-style/gallery/style-rtl.css +2 -4
  335. package/build-style/gallery/style.css +2 -4
  336. package/build-style/image/style-rtl.css +98 -0
  337. package/build-style/image/style.css +98 -0
  338. package/build-style/navigation/editor-rtl.css +36 -0
  339. package/build-style/navigation/editor.css +36 -0
  340. package/build-style/post-comments-form/style-rtl.css +1 -1
  341. package/build-style/post-comments-form/style.css +1 -1
  342. package/build-style/search/editor-rtl.css +1 -0
  343. package/build-style/search/editor.css +1 -0
  344. package/build-style/site-logo/editor-rtl.css +1 -0
  345. package/build-style/site-logo/editor.css +1 -0
  346. package/build-style/style-rtl.css +116 -10
  347. package/build-style/style.css +116 -10
  348. package/build-style/video/style-rtl.css +1 -2
  349. package/build-style/video/style.css +1 -2
  350. package/package.json +37 -33
  351. package/src/block/edit.native.js +18 -4
  352. package/src/buttons/test/edit.native.js +0 -9
  353. package/src/code/block.json +1 -0
  354. package/src/column/block.json +1 -1
  355. package/src/columns/test/__snapshots__/transforms.native.js.snap +1 -1
  356. package/src/columns/test/transforms.native.js +3 -5
  357. package/src/columns/transforms.js +2 -8
  358. package/src/comment-author-name/edit.js +1 -1
  359. package/src/comment-edit-link/edit.js +1 -1
  360. package/src/comment-template/index.php +8 -7
  361. package/src/comments/index.php +1 -6
  362. package/src/cover/block.json +1 -1
  363. package/src/cover/edit/inspector-controls.js +56 -54
  364. package/src/cover/edit/resizable-cover-popover.js +2 -1
  365. package/src/cover/style.scss +5 -0
  366. package/src/cover/test/edit.js +56 -2
  367. package/src/cover/variations.js +1 -3
  368. package/src/details/block.json +8 -6
  369. package/src/details/edit.js +27 -5
  370. package/src/details/editor.scss +3 -0
  371. package/src/details/index.js +10 -5
  372. package/src/details/save.js +5 -1
  373. package/src/details/style.scss +16 -0
  374. package/src/editor.scss +1 -1
  375. package/src/embed/variations.js +2 -2
  376. package/src/file/editor.scss +4 -0
  377. package/src/file/interactivity.js +15 -0
  378. package/src/file/view.js +4 -1
  379. package/src/freeform/editor.scss +45 -0
  380. package/src/freeform/modal.js +22 -19
  381. package/src/gallery/edit.js +5 -8
  382. package/src/gallery/editor.scss +0 -6
  383. package/src/gallery/test/index.native.js +48 -3
  384. package/src/gallery/v1/edit.js +1 -6
  385. package/src/gallery/v1/gallery-image.native.js +1 -2
  386. package/src/group/test/__snapshots__/transforms.native.js.snap +1 -1
  387. package/src/group/test/transforms.native.js +3 -5
  388. package/src/group/transforms.js +0 -7
  389. package/src/image/block.json +3 -0
  390. package/src/image/deprecated.js +2 -3
  391. package/src/image/edit.js +18 -18
  392. package/src/image/image.js +8 -11
  393. package/src/image/index.php +75 -2
  394. package/src/image/interactivity.js +113 -0
  395. package/src/image/save.js +4 -3
  396. package/src/image/style.scss +113 -0
  397. package/src/image/test/edit.native.js +38 -16
  398. package/src/image/utils.js +11 -18
  399. package/src/index.js +0 -4
  400. package/src/index.native.js +1 -0
  401. package/src/latest-posts/edit.native.js +1 -4
  402. package/src/list/edit.js +1 -1
  403. package/src/list/test/edit.native.js +80 -1
  404. package/src/list-item/edit.native.js +1 -1
  405. package/src/list-item/transforms.js +4 -2
  406. package/src/loginout/block.json +11 -1
  407. package/src/media-text/deprecated.js +4 -5
  408. package/src/media-text/edit.js +12 -10
  409. package/src/media-text/media-container.js +3 -3
  410. package/src/media-text/save.js +1 -2
  411. package/src/navigation/constants.js +21 -0
  412. package/src/navigation/edit/index.js +71 -83
  413. package/src/navigation/edit/inner-blocks.js +6 -16
  414. package/src/navigation/edit/leaf-more-menu.js +170 -0
  415. package/src/navigation/edit/menu-inspector-controls.js +78 -10
  416. package/src/navigation/edit/navigation-menu-delete-control.js +29 -29
  417. package/src/navigation/edit/unsaved-inner-blocks.js +12 -40
  418. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  419. package/src/navigation/editor.scss +10 -0
  420. package/src/navigation/index.php +213 -204
  421. package/src/navigation/interactivity.js +151 -0
  422. package/src/navigation-link/edit.js +9 -3
  423. package/src/navigation-link/update-attributes.js +2 -2
  424. package/src/navigation-submenu/edit.js +9 -3
  425. package/src/paragraph/block.json +5 -1
  426. package/src/pattern/block.json +4 -0
  427. package/src/pattern/edit.js +53 -16
  428. package/src/pattern/index.js +5 -4
  429. package/src/pattern/index.php +14 -1
  430. package/src/pattern/v1/edit.js +57 -0
  431. package/src/post-author-name/edit.js +1 -1
  432. package/src/post-comments-form/style.scss +3 -1
  433. package/src/post-featured-image/edit.js +1 -1
  434. package/src/post-featured-image/index.php +1 -1
  435. package/src/post-featured-image/overlay.js +4 -0
  436. package/src/post-terms/index.php +2 -2
  437. package/src/post-title/edit.js +57 -44
  438. package/src/preformatted/edit.native.js +1 -3
  439. package/src/quote/test/__snapshots__/transforms.native.js.snap +1 -1
  440. package/src/quote/test/transforms.native.js +3 -5
  441. package/src/quote/transforms.js +9 -19
  442. package/src/read-more/edit.js +1 -1
  443. package/src/search/edit.js +9 -4
  444. package/src/search/editor.scss +1 -0
  445. package/src/site-logo/editor.scss +2 -1
  446. package/src/site-title/edit/index.js +1 -1
  447. package/src/social-link/edit.js +51 -26
  448. package/src/social-links/edit.js +33 -31
  449. package/src/style.scss +0 -1
  450. package/src/template-part/edit/index.js +4 -6
  451. package/src/template-part/edit/utils/hooks.js +1 -1
  452. package/src/template-part/index.php +22 -7
  453. package/src/utils/interactivity/constants.js +1 -0
  454. package/src/utils/interactivity/directives.js +200 -0
  455. package/src/utils/interactivity/hooks.js +145 -0
  456. package/src/utils/interactivity/hydration.js +22 -0
  457. package/src/utils/interactivity/index.js +17 -0
  458. package/src/utils/interactivity/portals.js +98 -0
  459. package/src/utils/interactivity/store.js +45 -0
  460. package/src/utils/interactivity/utils.js +66 -0
  461. package/src/utils/interactivity/vdom.js +94 -0
  462. package/tsconfig.json +1 -0
  463. package/tsconfig.tsbuildinfo +1 -1
  464. package/build/details-content/edit.js +0 -34
  465. package/build/details-content/edit.js.map +0 -1
  466. package/build/details-content/index.js +0 -94
  467. package/build/details-content/index.js.map +0 -1
  468. package/build/details-content/save.js +0 -20
  469. package/build/details-content/save.js.map +0 -1
  470. package/build/details-summary/edit.js +0 -42
  471. package/build/details-summary/edit.js.map +0 -1
  472. package/build/details-summary/index.js +0 -97
  473. package/build/details-summary/index.js.map +0 -1
  474. package/build/details-summary/save.js +0 -24
  475. package/build/details-summary/save.js.map +0 -1
  476. package/build/file/utils.js.map +0 -1
  477. package/build-module/details-content/edit.js +0 -23
  478. package/build-module/details-content/edit.js.map +0 -1
  479. package/build-module/details-content/index.js +0 -76
  480. package/build-module/details-content/index.js.map +0 -1
  481. package/build-module/details-content/save.js +0 -11
  482. package/build-module/details-content/save.js.map +0 -1
  483. package/build-module/details-summary/edit.js +0 -30
  484. package/build-module/details-summary/edit.js.map +0 -1
  485. package/build-module/details-summary/index.js +0 -79
  486. package/build-module/details-summary/index.js.map +0 -1
  487. package/build-module/details-summary/save.js +0 -16
  488. package/build-module/details-summary/save.js.map +0 -1
  489. package/build-module/file/utils.js.map +0 -1
  490. package/build-style/details-summary/style-rtl.css +0 -91
  491. package/build-style/details-summary/style.css +0 -91
  492. package/src/details-content/block.json +0 -50
  493. package/src/details-content/edit.js +0 -29
  494. package/src/details-content/index.js +0 -23
  495. package/src/details-content/save.js +0 -12
  496. package/src/details-summary/block.json +0 -53
  497. package/src/details-summary/edit.js +0 -27
  498. package/src/details-summary/editor.scss +0 -3
  499. package/src/details-summary/index.js +0 -23
  500. package/src/details-summary/save.js +0 -13
  501. package/src/details-summary/style.scss +0 -3
  502. /package/src/file/{utils.js → utils/index.js} +0 -0
@@ -0,0 +1,170 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createBlock } from '@wordpress/blocks';
5
+ import {
6
+ addSubmenu,
7
+ chevronUp,
8
+ chevronDown,
9
+ moreVertical,
10
+ } from '@wordpress/icons';
11
+ import { DropdownMenu, MenuItem, MenuGroup } from '@wordpress/components';
12
+ import { useDispatch, useSelect } from '@wordpress/data';
13
+ import { __, sprintf } from '@wordpress/i18n';
14
+ import { BlockTitle, store as blockEditorStore } from '@wordpress/block-editor';
15
+
16
+ const POPOVER_PROPS = {
17
+ className: 'block-editor-block-settings-menu__popover',
18
+ position: 'bottom right',
19
+ variant: 'toolbar',
20
+ };
21
+
22
+ const BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU = [
23
+ 'core/navigation-link',
24
+ 'core/navigation-submenu',
25
+ ];
26
+
27
+ function AddSubmenuItem( {
28
+ block,
29
+ onClose,
30
+ expandedState,
31
+ expand,
32
+ setInsertedBlock,
33
+ } ) {
34
+ const { insertBlock, replaceBlock, replaceInnerBlocks } =
35
+ useDispatch( blockEditorStore );
36
+
37
+ const clientId = block.clientId;
38
+ const isDisabled = ! BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU.includes(
39
+ block.name
40
+ );
41
+ return (
42
+ <MenuItem
43
+ icon={ addSubmenu }
44
+ disabled={ isDisabled }
45
+ onClick={ () => {
46
+ const updateSelectionOnInsert = false;
47
+ const newLink = createBlock( 'core/navigation-link' );
48
+
49
+ if ( block.name === 'core/navigation-submenu' ) {
50
+ insertBlock(
51
+ newLink,
52
+ block.innerBlocks.length,
53
+ clientId,
54
+ updateSelectionOnInsert
55
+ );
56
+ } else {
57
+ // Convert to a submenu if the block currently isn't one.
58
+ const newSubmenu = createBlock(
59
+ 'core/navigation-submenu',
60
+ block.attributes,
61
+ block.innerBlocks
62
+ );
63
+
64
+ // The following must happen as two independent actions.
65
+ // Why? Because the offcanvas editor relies on the getLastInsertedBlocksClientIds
66
+ // selector to determine which block is "active". As the UX needs the newLink to be
67
+ // the "active" block it must be the last block to be inserted.
68
+ // Therefore the Submenu is first created and **then** the newLink is inserted
69
+ // thus ensuring it is the last inserted block.
70
+ replaceBlock( clientId, newSubmenu );
71
+
72
+ replaceInnerBlocks(
73
+ newSubmenu.clientId,
74
+ [ newLink ],
75
+ updateSelectionOnInsert
76
+ );
77
+ }
78
+
79
+ // This call sets the local List View state for the "last inserted block".
80
+ // This is required for the Nav Block to determine whether or not to display
81
+ // the Link UI for this new block.
82
+ setInsertedBlock( newLink );
83
+
84
+ if ( ! expandedState[ block.clientId ] ) {
85
+ expand( block.clientId );
86
+ }
87
+ onClose();
88
+ } }
89
+ >
90
+ { __( 'Add submenu link' ) }
91
+ </MenuItem>
92
+ );
93
+ }
94
+
95
+ export default function LeafMoreMenu( props ) {
96
+ const { block } = props;
97
+ const { clientId } = block;
98
+
99
+ const { moveBlocksDown, moveBlocksUp, removeBlocks } =
100
+ useDispatch( blockEditorStore );
101
+
102
+ const removeLabel = sprintf(
103
+ /* translators: %s: block name */
104
+ __( 'Remove %s' ),
105
+ BlockTitle( { clientId, maximumLength: 25 } )
106
+ );
107
+
108
+ const rootClientId = useSelect(
109
+ ( select ) => {
110
+ const { getBlockRootClientId } = select( blockEditorStore );
111
+
112
+ return getBlockRootClientId( clientId );
113
+ },
114
+ [ clientId ]
115
+ );
116
+
117
+ return (
118
+ <DropdownMenu
119
+ icon={ moreVertical }
120
+ label={ __( 'Options' ) }
121
+ className="block-editor-block-settings-menu"
122
+ popoverProps={ POPOVER_PROPS }
123
+ noIcons
124
+ { ...props }
125
+ >
126
+ { ( { onClose } ) => (
127
+ <>
128
+ <MenuGroup>
129
+ <MenuItem
130
+ icon={ chevronUp }
131
+ onClick={ () => {
132
+ moveBlocksUp( [ clientId ], rootClientId );
133
+ onClose();
134
+ } }
135
+ >
136
+ { __( 'Move up' ) }
137
+ </MenuItem>
138
+ <MenuItem
139
+ icon={ chevronDown }
140
+ onClick={ () => {
141
+ moveBlocksDown( [ clientId ], rootClientId );
142
+ onClose();
143
+ } }
144
+ >
145
+ { __( 'Move down' ) }
146
+ </MenuItem>
147
+ <AddSubmenuItem
148
+ block={ block }
149
+ onClose={ onClose }
150
+ expanded
151
+ expandedState={ props.expandedState }
152
+ expand={ props.expand }
153
+ setInsertedBlock={ props.setInsertedBlock }
154
+ />
155
+ </MenuGroup>
156
+ <MenuGroup>
157
+ <MenuItem
158
+ onClick={ () => {
159
+ removeBlocks( [ clientId ], false );
160
+ onClose();
161
+ } }
162
+ >
163
+ { removeLabel }
164
+ </MenuItem>
165
+ </MenuGroup>
166
+ </>
167
+ ) }
168
+ </DropdownMenu>
169
+ );
170
+ }
@@ -12,7 +12,7 @@ import {
12
12
  __experimentalHeading as Heading,
13
13
  Spinner,
14
14
  } from '@wordpress/components';
15
- import { useSelect } from '@wordpress/data';
15
+ import { useSelect, useDispatch } from '@wordpress/data';
16
16
  import { __, sprintf } from '@wordpress/i18n';
17
17
 
18
18
  /**
@@ -22,9 +22,16 @@ import NavigationMenuSelector from './navigation-menu-selector';
22
22
  import { unlock } from '../../private-apis';
23
23
  import DeletedNavigationWarning from './deleted-navigation-warning';
24
24
  import useNavigationMenu from '../use-navigation-menu';
25
+ import LeafMoreMenu from './leaf-more-menu';
26
+ import { updateAttributes } from '../../navigation-link/update-attributes';
27
+ import { LinkUI } from '../../navigation-link/link-ui';
25
28
 
26
29
  /* translators: %s: The name of a menu. */
27
30
  const actionLabel = __( "Switch to '%s'" );
31
+ const BLOCKS_WITH_LINK_UI_SUPPORT = [
32
+ 'core/navigation-link',
33
+ 'core/navigation-submenu',
34
+ ];
28
35
 
29
36
  const MainContent = ( {
30
37
  clientId,
@@ -33,7 +40,8 @@ const MainContent = ( {
33
40
  isNavigationMenuMissing,
34
41
  onCreateNew,
35
42
  } ) => {
36
- const { OffCanvasEditor, LeafMoreMenu } = unlock( blockEditorPrivateApis );
43
+ const { PrivateListView } = unlock( blockEditorPrivateApis );
44
+
37
45
  // Provide a hierarchy of clientIds for the given Navigation block (clientId).
38
46
  // This is required else the list view will display the entire block tree.
39
47
  const clientIdsTree = useSelect(
@@ -43,6 +51,15 @@ const MainContent = ( {
43
51
  },
44
52
  [ clientId ]
45
53
  );
54
+
55
+ const { updateBlockAttributes } = useDispatch( blockEditorStore );
56
+
57
+ const setInsertedBlockAttributes =
58
+ ( _insertedBlockClientId ) => ( _updatedAttributes ) => {
59
+ if ( ! _insertedBlockClientId ) return;
60
+ updateBlockAttributes( _insertedBlockClientId, _updatedAttributes );
61
+ };
62
+
46
63
  const { navigationMenu } = useNavigationMenu( currentMenuId );
47
64
 
48
65
  if ( currentMenuId && isNavigationMenuMissing ) {
@@ -57,19 +74,70 @@ const MainContent = ( {
57
74
  ? sprintf(
58
75
  /* translators: %s: The name of a menu. */
59
76
  __( 'Structure for navigation menu: %s' ),
60
- navigationMenu?.title || __( 'Untitled menu' )
77
+ navigationMenu?.title?.rendered || __( 'Untitled menu' )
61
78
  )
62
79
  : __(
63
80
  'You have not yet created any menus. Displaying a list of your Pages'
64
81
  );
82
+
83
+ const renderLinkUI = (
84
+ currentBlock,
85
+ lastInsertedBlock,
86
+ setLastInsertedBlock
87
+ ) => {
88
+ const blockSupportsLinkUI = BLOCKS_WITH_LINK_UI_SUPPORT?.includes(
89
+ lastInsertedBlock?.name
90
+ );
91
+ const currentBlockWasJustInserted =
92
+ lastInsertedBlock?.clientId === currentBlock.clientId;
93
+
94
+ const shouldShowLinkUIForBlock =
95
+ blockSupportsLinkUI && currentBlockWasJustInserted;
96
+
97
+ return (
98
+ shouldShowLinkUIForBlock && (
99
+ <LinkUI
100
+ clientId={ lastInsertedBlock?.clientId }
101
+ link={ lastInsertedBlock?.attributes }
102
+ onClose={ () => {
103
+ setLastInsertedBlock( null );
104
+ } }
105
+ hasCreateSuggestion={ false }
106
+ onChange={ ( updatedValue ) => {
107
+ updateAttributes(
108
+ updatedValue,
109
+ setInsertedBlockAttributes(
110
+ lastInsertedBlock?.clientId
111
+ ),
112
+ lastInsertedBlock?.attributes
113
+ );
114
+ setLastInsertedBlock( null );
115
+ } }
116
+ onCancel={ () => {
117
+ setLastInsertedBlock( null );
118
+ } }
119
+ />
120
+ )
121
+ );
122
+ };
123
+
65
124
  return (
66
- <OffCanvasEditor
67
- blocks={ clientIdsTree }
68
- parentClientId={ clientId }
69
- isExpanded={ true }
70
- LeafMoreMenu={ LeafMoreMenu }
71
- description={ description }
72
- />
125
+ <div className="wp-block-navigation__menu-inspector-controls">
126
+ { clientIdsTree.length === 0 && (
127
+ <p className="wp-block-navigation__menu-inspector-controls__empty-message">
128
+ { __( 'This navigation menu is empty.' ) }
129
+ </p>
130
+ ) }
131
+ <PrivateListView
132
+ blocks={ clientIdsTree }
133
+ rootClientId={ clientId }
134
+ isExpanded
135
+ description={ description }
136
+ showAppender
137
+ blockSettingsMenu={ LeafMoreMenu }
138
+ renderAdditionalBlockUI={ renderLinkUI }
139
+ />
140
+ </div>
73
141
  );
74
142
  };
75
143
 
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { Button, Flex, FlexItem, Modal } from '@wordpress/components';
4
+ import {
5
+ Button,
6
+ Modal,
7
+ __experimentalHStack as HStack,
8
+ } from '@wordpress/components';
5
9
  import {
6
10
  store as coreStore,
7
11
  useEntityId,
@@ -44,34 +48,30 @@ export default function NavigationMenuDeleteControl( { onDelete } ) {
44
48
  'Are you sure you want to delete this navigation menu?'
45
49
  ) }
46
50
  </p>
47
- <Flex justify="flex-end">
48
- <FlexItem>
49
- <Button
50
- variant="secondary"
51
- onClick={ () => {
52
- setIsConfirmModalVisible( false );
53
- } }
54
- >
55
- { __( 'Cancel' ) }
56
- </Button>
57
- </FlexItem>
58
- <FlexItem>
59
- <Button
60
- variant="primary"
61
- onClick={ () => {
62
- deleteEntityRecord(
63
- 'postType',
64
- 'wp_navigation',
65
- id,
66
- { force: true }
67
- );
68
- onDelete( title );
69
- } }
70
- >
71
- { __( 'Confirm' ) }
72
- </Button>
73
- </FlexItem>
74
- </Flex>
51
+ <HStack justify="right">
52
+ <Button
53
+ variant="tertiary"
54
+ onClick={ () => {
55
+ setIsConfirmModalVisible( false );
56
+ } }
57
+ >
58
+ { __( 'Cancel' ) }
59
+ </Button>
60
+ <Button
61
+ variant="primary"
62
+ onClick={ () => {
63
+ deleteEntityRecord(
64
+ 'postType',
65
+ 'wp_navigation',
66
+ id,
67
+ { force: true }
68
+ );
69
+ onDelete( title );
70
+ } }
71
+ >
72
+ { __( 'Confirm' ) }
73
+ </Button>
74
+ </HStack>
75
75
  </Modal>
76
76
  ) }
77
77
  </>
@@ -10,31 +10,10 @@ import { useContext, useEffect, useRef, useMemo } from '@wordpress/element';
10
10
  /**
11
11
  * Internal dependencies
12
12
  */
13
- import useNavigationMenu from '../use-navigation-menu';
14
13
  import { areBlocksDirty } from './are-blocks-dirty';
14
+ import { DEFAULT_BLOCK, ALLOWED_BLOCKS } from '../constants';
15
15
 
16
16
  const EMPTY_OBJECT = {};
17
- const DRAFT_MENU_PARAMS = [
18
- 'postType',
19
- 'wp_navigation',
20
- { status: 'draft', per_page: -1 },
21
- ];
22
-
23
- const DEFAULT_BLOCK = {
24
- name: 'core/navigation-link',
25
- };
26
-
27
- const ALLOWED_BLOCKS = [
28
- 'core/navigation-link',
29
- 'core/search',
30
- 'core/social-links',
31
- 'core/page-list',
32
- 'core/spacer',
33
- 'core/home-link',
34
- 'core/site-title',
35
- 'core/site-logo',
36
- 'core/navigation-submenu',
37
- ];
38
17
 
39
18
  export default function UnsavedInnerBlocks( {
40
19
  blocks,
@@ -90,35 +69,30 @@ export default function UnsavedInnerBlocks( {
90
69
  }
91
70
  );
92
71
 
93
- const { isSaving, hasResolvedDraftNavigationMenus } = useSelect(
72
+ const { isSaving, hasResolvedAllNavigationMenus } = useSelect(
94
73
  ( select ) => {
95
74
  if ( isDisabled ) {
96
75
  return EMPTY_OBJECT;
97
76
  }
98
77
 
99
- const {
100
- getEntityRecords,
101
- hasFinishedResolution,
102
- isSavingEntityRecord,
103
- } = select( coreStore );
78
+ const { hasFinishedResolution, isSavingEntityRecord } =
79
+ select( coreStore );
104
80
 
105
81
  return {
106
82
  isSaving: isSavingEntityRecord( 'postType', 'wp_navigation' ),
107
- draftNavigationMenus: getEntityRecords(
108
- // This is needed so that hasResolvedDraftNavigationMenus gives the correct status.
109
- ...DRAFT_MENU_PARAMS
110
- ),
111
- hasResolvedDraftNavigationMenus: hasFinishedResolution(
83
+ hasResolvedAllNavigationMenus: hasFinishedResolution(
112
84
  'getEntityRecords',
113
- DRAFT_MENU_PARAMS
85
+ [
86
+ 'postType',
87
+ 'wp_navigation',
88
+ { per_page: -1, status: [ 'publish', 'draft' ] },
89
+ ]
114
90
  ),
115
91
  };
116
92
  },
117
93
  [ isDisabled ]
118
94
  );
119
95
 
120
- const { hasResolvedNavigationMenus } = useNavigationMenu();
121
-
122
96
  // Automatically save the uncontrolled blocks.
123
97
  useEffect( () => {
124
98
  // The block will be disabled when used in a BlockPreview.
@@ -136,8 +110,7 @@ export default function UnsavedInnerBlocks( {
136
110
  if (
137
111
  isDisabled ||
138
112
  isSaving ||
139
- ! hasResolvedDraftNavigationMenus ||
140
- ! hasResolvedNavigationMenus ||
113
+ ! hasResolvedAllNavigationMenus ||
141
114
  ! hasSelection ||
142
115
  ! innerBlocksAreDirty
143
116
  ) {
@@ -150,8 +123,7 @@ export default function UnsavedInnerBlocks( {
150
123
  createNavigationMenu,
151
124
  isDisabled,
152
125
  isSaving,
153
- hasResolvedDraftNavigationMenus,
154
- hasResolvedNavigationMenus,
126
+ hasResolvedAllNavigationMenus,
155
127
  innerBlocksAreDirty,
156
128
  hasSelection,
157
129
  ] );
@@ -97,7 +97,7 @@ function useConvertClassicToBlockMenu( clientId ) {
97
97
  'wp_navigation',
98
98
  navigationMenu.id,
99
99
  {
100
- status: postStatus,
100
+ status: 'publish',
101
101
  },
102
102
  { throwOnError: true }
103
103
  );
@@ -657,3 +657,13 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
657
657
  .wp-block-navigation__responsive-container-open.components-button {
658
658
  opacity: 1;
659
659
  }
660
+
661
+ .wp-block-navigation__menu-inspector-controls {
662
+ overflow-x: auto;
663
+
664
+ @include custom-scrollbars-on-hover(transparent, $gray-600);
665
+ }
666
+
667
+ .wp-block-navigation__menu-inspector-controls__empty-message {
668
+ margin-left: 24px;
669
+ }