@wordpress/block-library 9.38.0 → 9.39.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 (470) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/block/block.json +2 -1
  3. package/build/breadcrumbs/edit.cjs +15 -5
  4. package/build/breadcrumbs/edit.cjs.map +2 -2
  5. package/build/breadcrumbs/index.cjs +1 -0
  6. package/build/breadcrumbs/index.cjs.map +2 -2
  7. package/build/button/index.cjs +3 -0
  8. package/build/button/index.cjs.map +2 -2
  9. package/build/comment-date/block.json +1 -0
  10. package/build/comment-edit-link/block.json +1 -3
  11. package/build/comment-edit-link/deprecated.cjs +91 -0
  12. package/build/comment-edit-link/deprecated.cjs.map +7 -0
  13. package/build/comment-edit-link/edit.cjs +6 -18
  14. package/build/comment-edit-link/edit.cjs.map +3 -3
  15. package/build/comment-edit-link/index.cjs +2 -0
  16. package/build/comment-edit-link/index.cjs.map +3 -3
  17. package/build/comment-reply-link/block.json +1 -5
  18. package/build/comment-reply-link/deprecated.cjs +84 -0
  19. package/build/comment-reply-link/deprecated.cjs.map +7 -0
  20. package/build/comment-reply-link/edit.cjs +10 -23
  21. package/build/comment-reply-link/edit.cjs.map +3 -3
  22. package/build/comment-reply-link/index.cjs +2 -0
  23. package/build/comment-reply-link/index.cjs.map +3 -3
  24. package/build/comments-title/block.json +1 -3
  25. package/build/comments-title/deprecated.cjs +148 -24
  26. package/build/comments-title/deprecated.cjs.map +3 -3
  27. package/build/comments-title/edit.cjs +17 -31
  28. package/build/comments-title/edit.cjs.map +3 -3
  29. package/build/cover/edit/block-controls.cjs +10 -2
  30. package/build/cover/edit/block-controls.cjs.map +2 -2
  31. package/build/cover/edit/embed-video-url-input.cjs +6 -2
  32. package/build/cover/edit/embed-video-url-input.cjs.map +2 -2
  33. package/build/cover/edit/inspector-controls.cjs +1 -1
  34. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  35. package/build/details/index.cjs +3 -0
  36. package/build/details/index.cjs.map +2 -2
  37. package/build/embed/util.cjs +9 -0
  38. package/build/embed/util.cjs.map +2 -2
  39. package/build/freeform/block.json +2 -1
  40. package/build/heading/index.cjs +3 -0
  41. package/build/heading/index.cjs.map +2 -2
  42. package/build/html/block.json +2 -1
  43. package/build/image/image.cjs +43 -9
  44. package/build/image/image.cjs.map +2 -2
  45. package/build/image/index.cjs +1 -1
  46. package/build/image/index.cjs.map +2 -2
  47. package/build/index.cjs +6 -0
  48. package/build/index.cjs.map +2 -2
  49. package/build/list-item/index.cjs +12 -1
  50. package/build/list-item/index.cjs.map +2 -2
  51. package/build/missing/block.json +2 -1
  52. package/build/more/block.json +2 -1
  53. package/build/more/index.cjs +1 -1
  54. package/build/more/index.cjs.map +2 -2
  55. package/build/navigation/block.json +5 -4
  56. package/build/navigation/deprecated.cjs +133 -5
  57. package/build/navigation/deprecated.cjs.map +2 -2
  58. package/build/navigation/edit/deleted-overlay-warning.cjs +70 -0
  59. package/build/navigation/edit/deleted-overlay-warning.cjs.map +7 -0
  60. package/build/navigation/edit/index.cjs +143 -65
  61. package/build/navigation/edit/index.cjs.map +3 -3
  62. package/build/navigation/edit/overlay-panel.cjs +10 -1
  63. package/build/navigation/edit/overlay-panel.cjs.map +3 -3
  64. package/build/navigation/edit/overlay-preview.cjs +120 -0
  65. package/build/navigation/edit/overlay-preview.cjs.map +7 -0
  66. package/build/navigation/edit/overlay-template-part-selector.cjs +59 -24
  67. package/build/navigation/edit/overlay-template-part-selector.cjs.map +3 -3
  68. package/build/navigation/edit/responsive-wrapper.cjs +12 -1
  69. package/build/navigation/edit/responsive-wrapper.cjs.map +3 -3
  70. package/build/navigation/edit/use-create-overlay.cjs +19 -2
  71. package/build/navigation/edit/use-create-overlay.cjs.map +3 -3
  72. package/build/navigation/utils/get-submenu-visibility.cjs +37 -0
  73. package/build/navigation/utils/get-submenu-visibility.cjs.map +7 -0
  74. package/build/navigation-link/edit.cjs +2 -40
  75. package/build/navigation-link/edit.cjs.map +2 -2
  76. package/build/navigation-link/shared/index.cjs +6 -0
  77. package/build/navigation-link/shared/index.cjs.map +2 -2
  78. package/build/navigation-link/shared/select-label-text.cjs +40 -0
  79. package/build/navigation-link/shared/select-label-text.cjs.map +7 -0
  80. package/build/navigation-link/shared/use-is-dragging-within.cjs +59 -0
  81. package/build/navigation-link/shared/use-is-dragging-within.cjs.map +7 -0
  82. package/build/navigation-submenu/block.json +1 -1
  83. package/build/navigation-submenu/edit.cjs +8 -47
  84. package/build/navigation-submenu/edit.cjs.map +2 -2
  85. package/build/navigation-submenu/index.cjs +2 -2
  86. package/build/navigation-submenu/index.cjs.map +2 -2
  87. package/build/nextpage/block.json +2 -1
  88. package/build/paragraph/block.json +1 -0
  89. package/build/paragraph/index.cjs +1 -1
  90. package/build/paragraph/index.cjs.map +2 -2
  91. package/build/post-excerpt/edit.cjs +1 -1
  92. package/build/post-excerpt/edit.cjs.map +2 -2
  93. package/build/shortcode/block.json +2 -1
  94. package/build/tab/add-tab-toolbar-control.cjs +31 -9
  95. package/build/tab/add-tab-toolbar-control.cjs.map +2 -2
  96. package/build/tab/block.json +18 -4
  97. package/build/tab/controls.cjs +4 -8
  98. package/build/tab/controls.cjs.map +3 -3
  99. package/build/tab/edit.cjs +46 -118
  100. package/build/tab/edit.cjs.map +3 -3
  101. package/build/tab/remove-tab-toolbar-control.cjs +91 -0
  102. package/build/tab/remove-tab-toolbar-control.cjs.map +7 -0
  103. package/build/tab/save.cjs +2 -2
  104. package/build/tab/save.cjs.map +2 -2
  105. package/build/tab-panels/block.json +70 -0
  106. package/build/tab-panels/edit.cjs +63 -0
  107. package/build/tab-panels/edit.cjs.map +7 -0
  108. package/build/tab-panels/icon.cjs +29 -0
  109. package/build/tab-panels/icon.cjs.map +7 -0
  110. package/build/tab-panels/index.cjs +58 -0
  111. package/build/tab-panels/index.cjs.map +7 -0
  112. package/build/tab-panels/save.cjs +33 -0
  113. package/build/tab-panels/save.cjs.map +7 -0
  114. package/build/tabs/block.json +61 -90
  115. package/build/tabs/controls.cjs +19 -221
  116. package/build/tabs/controls.cjs.map +3 -3
  117. package/build/tabs/deprecated.cjs +179 -0
  118. package/build/tabs/deprecated.cjs.map +7 -0
  119. package/build/tabs/edit.cjs +84 -62
  120. package/build/tabs/edit.cjs.map +3 -3
  121. package/build/tabs/index.cjs +3 -1
  122. package/build/tabs/index.cjs.map +3 -3
  123. package/build/tabs/save.cjs +6 -9
  124. package/build/tabs/save.cjs.map +2 -2
  125. package/build/tabs-menu/block.json +77 -0
  126. package/build/tabs-menu/edit.cjs +204 -0
  127. package/build/tabs-menu/edit.cjs.map +7 -0
  128. package/build/tabs-menu/icon.cjs +29 -0
  129. package/build/tabs-menu/icon.cjs.map +7 -0
  130. package/build/tabs-menu/index.cjs +58 -0
  131. package/build/tabs-menu/index.cjs.map +7 -0
  132. package/build/tabs-menu/save.cjs +35 -0
  133. package/build/tabs-menu/save.cjs.map +7 -0
  134. package/build/tabs-menu-item/block.json +98 -0
  135. package/build/tabs-menu-item/controls.cjs +247 -0
  136. package/build/tabs-menu-item/controls.cjs.map +7 -0
  137. package/build/tabs-menu-item/edit.cjs +272 -0
  138. package/build/tabs-menu-item/edit.cjs.map +7 -0
  139. package/build/tabs-menu-item/icon.cjs +29 -0
  140. package/build/tabs-menu-item/icon.cjs.map +7 -0
  141. package/build/tabs-menu-item/index.cjs +58 -0
  142. package/build/tabs-menu-item/index.cjs.map +7 -0
  143. package/build/tabs-menu-item/save.cjs +50 -0
  144. package/build/tabs-menu-item/save.cjs.map +7 -0
  145. package/build/template-part/edit/index.cjs +2 -2
  146. package/build/template-part/edit/index.cjs.map +2 -2
  147. package/build/utils/caption.cjs +4 -6
  148. package/build/utils/caption.cjs.map +3 -3
  149. package/build/verse/block.json +1 -3
  150. package/build/verse/deprecated.cjs +74 -5
  151. package/build/verse/deprecated.cjs.map +3 -3
  152. package/build/verse/edit.cjs +33 -48
  153. package/build/verse/edit.cjs.map +3 -3
  154. package/build/verse/save.cjs +2 -16
  155. package/build/verse/save.cjs.map +3 -3
  156. package/build/video/edit.cjs +4 -2
  157. package/build/video/edit.cjs.map +2 -2
  158. package/build-module/block/block.json +2 -1
  159. package/build-module/breadcrumbs/edit.mjs +15 -5
  160. package/build-module/breadcrumbs/edit.mjs.map +2 -2
  161. package/build-module/breadcrumbs/index.mjs +1 -0
  162. package/build-module/breadcrumbs/index.mjs.map +2 -2
  163. package/build-module/button/index.mjs +3 -0
  164. package/build-module/button/index.mjs.map +2 -2
  165. package/build-module/comment-date/block.json +1 -0
  166. package/build-module/comment-edit-link/block.json +1 -3
  167. package/build-module/comment-edit-link/deprecated.mjs +60 -0
  168. package/build-module/comment-edit-link/deprecated.mjs.map +7 -0
  169. package/build-module/comment-edit-link/edit.mjs +7 -24
  170. package/build-module/comment-edit-link/edit.mjs.map +2 -2
  171. package/build-module/comment-edit-link/index.mjs +2 -0
  172. package/build-module/comment-edit-link/index.mjs.map +2 -2
  173. package/build-module/comment-reply-link/block.json +1 -5
  174. package/build-module/comment-reply-link/deprecated.mjs +53 -0
  175. package/build-module/comment-reply-link/deprecated.mjs.map +7 -0
  176. package/build-module/comment-reply-link/edit.mjs +12 -29
  177. package/build-module/comment-reply-link/edit.mjs.map +2 -2
  178. package/build-module/comment-reply-link/index.mjs +2 -0
  179. package/build-module/comment-reply-link/index.mjs.map +2 -2
  180. package/build-module/comments-title/block.json +1 -3
  181. package/build-module/comments-title/deprecated.mjs +148 -24
  182. package/build-module/comments-title/deprecated.mjs.map +2 -2
  183. package/build-module/comments-title/edit.mjs +17 -32
  184. package/build-module/comments-title/edit.mjs.map +2 -2
  185. package/build-module/cover/edit/block-controls.mjs +11 -3
  186. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  187. package/build-module/cover/edit/embed-video-url-input.mjs +6 -2
  188. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  189. package/build-module/cover/edit/inspector-controls.mjs +1 -1
  190. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  191. package/build-module/details/index.mjs +3 -0
  192. package/build-module/details/index.mjs.map +2 -2
  193. package/build-module/embed/util.mjs +8 -0
  194. package/build-module/embed/util.mjs.map +2 -2
  195. package/build-module/freeform/block.json +2 -1
  196. package/build-module/heading/index.mjs +3 -0
  197. package/build-module/heading/index.mjs.map +2 -2
  198. package/build-module/html/block.json +2 -1
  199. package/build-module/image/image.mjs +43 -9
  200. package/build-module/image/image.mjs.map +2 -2
  201. package/build-module/image/index.mjs +1 -1
  202. package/build-module/image/index.mjs.map +2 -2
  203. package/build-module/index.mjs +6 -0
  204. package/build-module/index.mjs.map +2 -2
  205. package/build-module/list-item/index.mjs +12 -1
  206. package/build-module/list-item/index.mjs.map +2 -2
  207. package/build-module/missing/block.json +2 -1
  208. package/build-module/more/block.json +2 -1
  209. package/build-module/more/index.mjs +1 -1
  210. package/build-module/more/index.mjs.map +2 -2
  211. package/build-module/navigation/block.json +5 -4
  212. package/build-module/navigation/deprecated.mjs +133 -5
  213. package/build-module/navigation/deprecated.mjs.map +2 -2
  214. package/build-module/navigation/edit/deleted-overlay-warning.mjs +49 -0
  215. package/build-module/navigation/edit/deleted-overlay-warning.mjs.map +7 -0
  216. package/build-module/navigation/edit/index.mjs +145 -65
  217. package/build-module/navigation/edit/index.mjs.map +2 -2
  218. package/build-module/navigation/edit/overlay-panel.mjs +10 -1
  219. package/build-module/navigation/edit/overlay-panel.mjs.map +2 -2
  220. package/build-module/navigation/edit/overlay-preview.mjs +99 -0
  221. package/build-module/navigation/edit/overlay-preview.mjs.map +7 -0
  222. package/build-module/navigation/edit/overlay-template-part-selector.mjs +61 -26
  223. package/build-module/navigation/edit/overlay-template-part-selector.mjs.map +2 -2
  224. package/build-module/navigation/edit/responsive-wrapper.mjs +12 -1
  225. package/build-module/navigation/edit/responsive-wrapper.mjs.map +2 -2
  226. package/build-module/navigation/edit/use-create-overlay.mjs +21 -4
  227. package/build-module/navigation/edit/use-create-overlay.mjs.map +2 -2
  228. package/build-module/navigation/utils/get-submenu-visibility.mjs +12 -0
  229. package/build-module/navigation/utils/get-submenu-visibility.mjs.map +7 -0
  230. package/build-module/navigation-link/edit.mjs +4 -40
  231. package/build-module/navigation-link/edit.mjs.map +2 -2
  232. package/build-module/navigation-link/shared/index.mjs +4 -0
  233. package/build-module/navigation-link/shared/index.mjs.map +2 -2
  234. package/build-module/navigation-link/shared/select-label-text.mjs +15 -0
  235. package/build-module/navigation-link/shared/select-label-text.mjs.map +7 -0
  236. package/build-module/navigation-link/shared/use-is-dragging-within.mjs +34 -0
  237. package/build-module/navigation-link/shared/use-is-dragging-within.mjs.map +7 -0
  238. package/build-module/navigation-submenu/block.json +1 -1
  239. package/build-module/navigation-submenu/edit.mjs +10 -47
  240. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  241. package/build-module/navigation-submenu/index.mjs +2 -2
  242. package/build-module/navigation-submenu/index.mjs.map +2 -2
  243. package/build-module/nextpage/block.json +2 -1
  244. package/build-module/paragraph/block.json +1 -0
  245. package/build-module/paragraph/index.mjs +1 -1
  246. package/build-module/paragraph/index.mjs.map +2 -2
  247. package/build-module/post-excerpt/edit.mjs +1 -1
  248. package/build-module/post-excerpt/edit.mjs.map +2 -2
  249. package/build-module/shortcode/block.json +2 -1
  250. package/build-module/tab/add-tab-toolbar-control.mjs +32 -10
  251. package/build-module/tab/add-tab-toolbar-control.mjs.map +2 -2
  252. package/build-module/tab/block.json +18 -4
  253. package/build-module/tab/controls.mjs +4 -8
  254. package/build-module/tab/controls.mjs.map +2 -2
  255. package/build-module/tab/edit.mjs +48 -128
  256. package/build-module/tab/edit.mjs.map +2 -2
  257. package/build-module/tab/remove-tab-toolbar-control.mjs +73 -0
  258. package/build-module/tab/remove-tab-toolbar-control.mjs.map +7 -0
  259. package/build-module/tab/save.mjs +2 -2
  260. package/build-module/tab/save.mjs.map +2 -2
  261. package/build-module/tab-panels/block.json +70 -0
  262. package/build-module/tab-panels/edit.mjs +36 -0
  263. package/build-module/tab-panels/edit.mjs.map +7 -0
  264. package/build-module/tab-panels/icon.mjs +8 -0
  265. package/build-module/tab-panels/icon.mjs.map +7 -0
  266. package/build-module/tab-panels/index.mjs +20 -0
  267. package/build-module/tab-panels/index.mjs.map +7 -0
  268. package/build-module/tab-panels/save.mjs +12 -0
  269. package/build-module/tab-panels/save.mjs.map +7 -0
  270. package/build-module/tabs/block.json +61 -90
  271. package/build-module/tabs/controls.mjs +21 -228
  272. package/build-module/tabs/controls.mjs.map +2 -2
  273. package/build-module/tabs/deprecated.mjs +158 -0
  274. package/build-module/tabs/deprecated.mjs.map +7 -0
  275. package/build-module/tabs/edit.mjs +87 -64
  276. package/build-module/tabs/edit.mjs.map +2 -2
  277. package/build-module/tabs/index.mjs +3 -1
  278. package/build-module/tabs/index.mjs.map +2 -2
  279. package/build-module/tabs/save.mjs +7 -10
  280. package/build-module/tabs/save.mjs.map +2 -2
  281. package/build-module/tabs-menu/block.json +77 -0
  282. package/build-module/tabs-menu/edit.mjs +186 -0
  283. package/build-module/tabs-menu/edit.mjs.map +7 -0
  284. package/build-module/tabs-menu/icon.mjs +8 -0
  285. package/build-module/tabs-menu/icon.mjs.map +7 -0
  286. package/build-module/tabs-menu/index.mjs +20 -0
  287. package/build-module/tabs-menu/index.mjs.map +7 -0
  288. package/build-module/tabs-menu/save.mjs +14 -0
  289. package/build-module/tabs-menu/save.mjs.map +7 -0
  290. package/build-module/tabs-menu-item/block.json +98 -0
  291. package/build-module/tabs-menu-item/controls.mjs +227 -0
  292. package/build-module/tabs-menu-item/controls.mjs.map +7 -0
  293. package/build-module/tabs-menu-item/edit.mjs +253 -0
  294. package/build-module/tabs-menu-item/edit.mjs.map +7 -0
  295. package/build-module/tabs-menu-item/icon.mjs +8 -0
  296. package/build-module/tabs-menu-item/icon.mjs.map +7 -0
  297. package/build-module/tabs-menu-item/index.mjs +20 -0
  298. package/build-module/tabs-menu-item/index.mjs.map +7 -0
  299. package/build-module/tabs-menu-item/save.mjs +29 -0
  300. package/build-module/tabs-menu-item/save.mjs.map +7 -0
  301. package/build-module/template-part/edit/index.mjs +2 -2
  302. package/build-module/template-part/edit/index.mjs.map +2 -2
  303. package/build-module/utils/caption.mjs +1 -3
  304. package/build-module/utils/caption.mjs.map +2 -2
  305. package/build-module/verse/block.json +1 -3
  306. package/build-module/verse/deprecated.mjs +74 -5
  307. package/build-module/verse/deprecated.mjs.map +2 -2
  308. package/build-module/verse/edit.mjs +35 -55
  309. package/build-module/verse/edit.mjs.map +2 -2
  310. package/build-module/verse/save.mjs +2 -6
  311. package/build-module/verse/save.mjs.map +2 -2
  312. package/build-module/video/edit.mjs +4 -2
  313. package/build-module/video/edit.mjs.map +2 -2
  314. package/build-style/editor-rtl.css +64 -21
  315. package/build-style/editor.css +64 -21
  316. package/build-style/gallery/style-rtl.css +1 -1
  317. package/build-style/gallery/style.css +1 -1
  318. package/build-style/media-text/style-rtl.css +2 -0
  319. package/build-style/media-text/style.css +2 -0
  320. package/build-style/navigation/editor-rtl.css +48 -0
  321. package/build-style/navigation/editor.css +48 -0
  322. package/build-style/navigation/style-rtl.css +64 -18
  323. package/build-style/navigation/style.css +64 -18
  324. package/build-style/style-rtl.css +109 -171
  325. package/build-style/style.css +109 -171
  326. package/build-style/tab/style-rtl.css +7 -1
  327. package/build-style/tab/style.css +7 -1
  328. package/build-style/tab-panels/style-rtl.css +4 -0
  329. package/build-style/tab-panels/style.css +4 -0
  330. package/build-style/tabs/style-rtl.css +1 -167
  331. package/build-style/tabs/style.css +1 -167
  332. package/build-style/tabs-menu/editor-rtl.css +4 -0
  333. package/build-style/tabs-menu/editor.css +4 -0
  334. package/build-style/tabs-menu/style-rtl.css +8 -0
  335. package/build-style/tabs-menu/style.css +8 -0
  336. package/build-style/tabs-menu-item/editor-rtl.css +16 -0
  337. package/build-style/tabs-menu-item/editor.css +16 -0
  338. package/build-style/tabs-menu-item/style-rtl.css +34 -0
  339. package/build-style/tabs-menu-item/style.css +34 -0
  340. package/build-style/verse/style-rtl.css +1 -0
  341. package/build-style/verse/style.css +1 -0
  342. package/package.json +37 -37
  343. package/src/block/block.json +2 -1
  344. package/src/breadcrumbs/edit.js +10 -2
  345. package/src/breadcrumbs/index.js +1 -0
  346. package/src/button/index.js +4 -0
  347. package/src/categories/index.php +5 -1
  348. package/src/comment-date/block.json +1 -0
  349. package/src/comment-edit-link/block.json +1 -3
  350. package/src/comment-edit-link/deprecated.js +63 -0
  351. package/src/comment-edit-link/edit.js +7 -31
  352. package/src/comment-edit-link/index.js +2 -0
  353. package/src/comment-reply-link/block.json +1 -5
  354. package/src/comment-reply-link/deprecated.js +56 -0
  355. package/src/comment-reply-link/edit.js +6 -35
  356. package/src/comment-reply-link/index.js +2 -0
  357. package/src/comments-title/block.json +1 -3
  358. package/src/comments-title/deprecated.js +153 -23
  359. package/src/comments-title/edit.js +9 -25
  360. package/src/cover/edit/block-controls.js +14 -3
  361. package/src/cover/edit/embed-video-url-input.js +6 -2
  362. package/src/cover/edit/inspector-controls.js +1 -3
  363. package/src/details/index.js +4 -0
  364. package/src/editor.scss +2 -1
  365. package/src/embed/test/index.js +49 -0
  366. package/src/embed/util.js +21 -0
  367. package/src/freeform/block.json +2 -1
  368. package/src/gallery/style.scss +1 -1
  369. package/src/heading/index.js +4 -0
  370. package/src/html/block.json +2 -1
  371. package/src/image/image.js +63 -11
  372. package/src/image/index.js +4 -1
  373. package/src/index.js +6 -0
  374. package/src/list-item/index.js +16 -0
  375. package/src/media-text/style.scss +2 -0
  376. package/src/missing/block.json +2 -1
  377. package/src/more/block.json +2 -1
  378. package/src/more/index.js +4 -1
  379. package/src/navigation/block.json +5 -4
  380. package/src/navigation/deprecated.js +144 -5
  381. package/src/navigation/edit/deleted-overlay-warning.js +56 -0
  382. package/src/navigation/edit/index.js +181 -70
  383. package/src/navigation/edit/overlay-panel.js +10 -0
  384. package/src/navigation/edit/overlay-preview.js +133 -0
  385. package/src/navigation/edit/overlay-template-part-selector.js +76 -26
  386. package/src/navigation/edit/responsive-wrapper.js +14 -1
  387. package/src/navigation/edit/test/overlay-template-part-selector.js +24 -16
  388. package/src/navigation/edit/test/responsive-wrapper.js +179 -0
  389. package/src/navigation/edit/test/use-create-overlay.js +129 -2
  390. package/src/navigation/edit/use-create-overlay.js +26 -4
  391. package/src/navigation/editor.scss +51 -0
  392. package/src/navigation/index.php +59 -11
  393. package/src/navigation/style.scss +140 -76
  394. package/src/navigation/utils/get-submenu-visibility.js +27 -0
  395. package/src/navigation/utils/test/get-submenu-visibility.js +47 -0
  396. package/src/navigation-link/edit.js +3 -67
  397. package/src/navigation-link/shared/index.js +2 -0
  398. package/src/navigation-link/shared/select-label-text.js +16 -0
  399. package/src/navigation-link/shared/use-is-dragging-within.js +55 -0
  400. package/src/navigation-submenu/block.json +1 -1
  401. package/src/navigation-submenu/edit.js +10 -73
  402. package/src/navigation-submenu/index.js +6 -3
  403. package/src/navigation-submenu/index.php +36 -5
  404. package/src/nextpage/block.json +2 -1
  405. package/src/paragraph/block.json +1 -0
  406. package/src/paragraph/index.js +4 -1
  407. package/src/post-excerpt/edit.js +1 -1
  408. package/src/post-excerpt/index.php +39 -16
  409. package/src/shortcode/block.json +2 -1
  410. package/src/style.scss +3 -0
  411. package/src/tab/add-tab-toolbar-control.js +36 -11
  412. package/src/tab/block.json +18 -4
  413. package/src/tab/controls.js +4 -5
  414. package/src/tab/edit.js +75 -150
  415. package/src/tab/index.php +5 -63
  416. package/src/tab/remove-tab-toolbar-control.js +103 -0
  417. package/src/tab/save.js +1 -3
  418. package/src/tab/style.scss +8 -1
  419. package/src/tab-panels/block.json +70 -0
  420. package/src/tab-panels/edit.js +44 -0
  421. package/src/tab-panels/icon.js +10 -0
  422. package/src/tab-panels/index.js +21 -0
  423. package/src/tab-panels/save.js +11 -0
  424. package/src/tab-panels/style.scss +4 -0
  425. package/src/tabs/block.json +61 -90
  426. package/src/tabs/controls.js +7 -221
  427. package/src/tabs/deprecated.js +214 -0
  428. package/src/tabs/edit.js +108 -68
  429. package/src/tabs/index.js +2 -0
  430. package/src/tabs/index.php +86 -191
  431. package/src/tabs/save.js +6 -13
  432. package/src/tabs/style.scss +1 -187
  433. package/src/tabs-menu/block.json +77 -0
  434. package/src/tabs-menu/edit.js +251 -0
  435. package/src/tabs-menu/editor.scss +6 -0
  436. package/src/tabs-menu/icon.js +10 -0
  437. package/src/tabs-menu/index.js +21 -0
  438. package/src/tabs-menu/index.php +74 -0
  439. package/src/tabs-menu/save.js +18 -0
  440. package/src/tabs-menu/style.scss +8 -0
  441. package/src/tabs-menu-item/block.json +98 -0
  442. package/src/tabs-menu-item/controls.js +262 -0
  443. package/src/tabs-menu-item/edit.js +322 -0
  444. package/src/tabs-menu-item/editor.scss +20 -0
  445. package/src/tabs-menu-item/icon.js +10 -0
  446. package/src/tabs-menu-item/index.js +21 -0
  447. package/src/tabs-menu-item/index.php +82 -0
  448. package/src/tabs-menu-item/save.js +44 -0
  449. package/src/tabs-menu-item/style.scss +42 -0
  450. package/src/template-part/edit/index.js +2 -4
  451. package/src/utils/caption.js +1 -7
  452. package/src/verse/block.json +1 -3
  453. package/src/verse/deprecated.js +83 -4
  454. package/src/verse/edit.js +37 -56
  455. package/src/verse/save.js +2 -11
  456. package/src/verse/style.scss +1 -0
  457. package/src/video/edit.js +4 -2
  458. package/build/tab/tabs-list.cjs +0 -132
  459. package/build/tab/tabs-list.cjs.map +0 -7
  460. package/build/tabs/style-engine.cjs +0 -119
  461. package/build/tabs/style-engine.cjs.map +0 -7
  462. package/build-module/tab/tabs-list.mjs +0 -101
  463. package/build-module/tab/tabs-list.mjs.map +0 -7
  464. package/build-module/tabs/style-engine.mjs +0 -101
  465. package/build-module/tabs/style-engine.mjs.map +0 -7
  466. package/build-style/tabs/editor-rtl.css +0 -26
  467. package/build-style/tabs/editor.css +0 -26
  468. package/src/tab/tabs-list.js +0 -122
  469. package/src/tabs/editor.scss +0 -30
  470. package/src/tabs/style-engine.js +0 -164
@@ -304,16 +304,39 @@ export default function Image( {
304
304
  const setRefs = useMergeRefs( [ setImageElement, setResizeObserved ] );
305
305
  const { allowResize = true } = context;
306
306
 
307
- const image = useSelect(
308
- ( select ) =>
309
- id && isSingleSelected
310
- ? select( coreStore ).getEntityRecord(
311
- 'postType',
312
- 'attachment',
313
- id,
314
- { context: 'view' }
315
- )
316
- : null,
307
+ const { image, canUserEdit } = useSelect(
308
+ ( select ) => {
309
+ const imageRecord =
310
+ id && isSingleSelected
311
+ ? select( coreStore ).getEntityRecord(
312
+ 'postType',
313
+ 'attachment',
314
+ id,
315
+ { context: 'view' }
316
+ )
317
+ : null;
318
+
319
+ // Check edit permissions. When the media editor experiment is enabled,
320
+ // use getEntityRecordPermissions which checks via canUser API.
321
+ // Only check when the image is selected to avoid unnecessary API requests.
322
+ let canEdit = false;
323
+ if ( id && isSingleSelected && window?.__experimentalMediaEditor ) {
324
+ const { getEntityRecordPermissions } = unlock(
325
+ select( coreStore )
326
+ );
327
+ const permissions = getEntityRecordPermissions(
328
+ 'postType',
329
+ 'attachment',
330
+ id
331
+ );
332
+ canEdit = permissions?.update || false;
333
+ }
334
+
335
+ return {
336
+ image: imageRecord,
337
+ canUserEdit: canEdit,
338
+ };
339
+ },
317
340
  [ id, isSingleSelected ]
318
341
  );
319
342
 
@@ -338,6 +361,7 @@ export default function Image( {
338
361
  [ clientId ]
339
362
  );
340
363
  const { getBlock, getSettings } = useSelect( blockEditorStore );
364
+ const onNavigateToEntityRecord = getSettings().onNavigateToEntityRecord;
341
365
 
342
366
  const { replaceBlocks, toggleSelection } = useDispatch( blockEditorStore );
343
367
  const { createErrorNotice, createSuccessNotice } =
@@ -355,6 +379,7 @@ export default function Image( {
355
379
  const [ hasImageErrored, setHasImageErrored ] = useState( false );
356
380
  const hasNonContentControls = blockEditingMode === 'default';
357
381
  const isContentOnlyMode = blockEditingMode === 'contentOnly';
382
+ const showDimensionsControls = allowResize && hasNonContentControls;
358
383
  const isResizable =
359
384
  allowResize &&
360
385
  hasNonContentControls &&
@@ -558,7 +583,7 @@ export default function Image( {
558
583
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
559
584
 
560
585
  const dimensionsControl =
561
- isResizable &&
586
+ showDimensionsControls &&
562
587
  ( SIZED_LAYOUTS.includes( parentLayoutType ) ? (
563
588
  <DimensionsTool
564
589
  panelId={ clientId }
@@ -600,6 +625,11 @@ export default function Image( {
600
625
  defaultAspectRatio="auto"
601
626
  scaleOptions={ scaleOptions }
602
627
  unitsOptions={ dimensionsUnitsOptions }
628
+ tools={
629
+ isWideAligned
630
+ ? [ 'aspectRatio', 'scale' ]
631
+ : [ 'aspectRatio', 'widthHeight', 'scale' ]
632
+ }
603
633
  />
604
634
  ) );
605
635
 
@@ -726,6 +756,27 @@ export default function Image( {
726
756
  const hasDataFormBlockFields =
727
757
  window?.__experimentalContentOnlyInspectorFields;
728
758
 
759
+ const editMediaButton = window?.__experimentalMediaEditor &&
760
+ id &&
761
+ isSingleSelected &&
762
+ canUserEdit &&
763
+ ! isExternalImage( id, url ) &&
764
+ ! isEditingImage &&
765
+ onNavigateToEntityRecord && (
766
+ <BlockControls group="other">
767
+ <ToolbarButton
768
+ onClick={ () => {
769
+ onNavigateToEntityRecord( {
770
+ postId: id,
771
+ postType: 'attachment',
772
+ } );
773
+ } }
774
+ >
775
+ { __( 'Edit media' ) }
776
+ </ToolbarButton>
777
+ </BlockControls>
778
+ );
779
+
729
780
  const controls = (
730
781
  <>
731
782
  { showBlockControls && (
@@ -1199,6 +1250,7 @@ export default function Image( {
1199
1250
 
1200
1251
  return (
1201
1252
  <>
1253
+ { editMediaButton }
1202
1254
  { mediaReplaceFlow }
1203
1255
  { controls }
1204
1256
  { featuredImageControl }
@@ -35,7 +35,10 @@ export const settings = {
35
35
  __experimentalLabel( attributes, { context } ) {
36
36
  const customName = attributes?.metadata?.name;
37
37
 
38
- if ( context === 'list-view' && customName ) {
38
+ if (
39
+ ( context === 'list-view' || context === 'breadcrumb' ) &&
40
+ customName
41
+ ) {
39
42
  return customName;
40
43
  }
41
44
 
package/src/index.js CHANGED
@@ -133,9 +133,12 @@ import * as socialLink from './social-link';
133
133
  import * as socialLinks from './social-links';
134
134
  import * as spacer from './spacer';
135
135
  import * as tab from './tab';
136
+ import * as tabPanels from './tab-panels';
136
137
  import * as table from './table';
137
138
  import * as tableOfContents from './table-of-contents';
138
139
  import * as tabs from './tabs';
140
+ import * as tabsMenu from './tabs-menu';
141
+ import * as tabsMenuItem from './tabs-menu-item';
139
142
  import * as tagCloud from './tag-cloud';
140
143
  import * as templatePart from './template-part';
141
144
  import * as termCount from './term-count';
@@ -274,6 +277,9 @@ const getAllBlocks = () => {
274
277
  if ( window?.__experimentalEnableBlockExperiments ) {
275
278
  blocks.push( tab );
276
279
  blocks.push( tabs );
280
+ blocks.push( tabsMenu );
281
+ blocks.push( tabsMenuItem );
282
+ blocks.push( tabPanels );
277
283
  }
278
284
 
279
285
  if ( window?.__experimentalEnableFormBlocks ) {
@@ -34,6 +34,22 @@ export const settings = {
34
34
  },
35
35
  transforms,
36
36
  [ unlock( privateApis ).requiresWrapperOnCopy ]: true,
37
+ __experimentalLabel( attributes, { context } ) {
38
+ const { content } = attributes;
39
+
40
+ const customName = attributes?.metadata?.name;
41
+ const hasContent = content?.trim().length > 0;
42
+
43
+ // In the list view, use the block's content as the label.
44
+ // If the content is empty, fall back to the default label.
45
+ if ( context === 'list-view' && ( customName || hasContent ) ) {
46
+ return customName || content;
47
+ }
48
+
49
+ if ( context === 'breadcrumb' && customName ) {
50
+ return customName;
51
+ }
52
+ },
37
53
  };
38
54
 
39
55
  if ( window.__experimentalContentOnlyInspectorFields ) {
@@ -108,6 +108,7 @@
108
108
 
109
109
  /* Image fill for versions 8 and onwards */
110
110
  .wp-block-media-text.is-image-fill-element > .wp-block-media-text__media {
111
+ position: relative;
111
112
  height: 100%;
112
113
  min-height: 250px;
113
114
  }
@@ -118,6 +119,7 @@
118
119
  }
119
120
 
120
121
  .wp-block-media-text.is-image-fill-element > .wp-block-media-text__media img {
122
+ position: absolute;
121
123
  width: 100%;
122
124
  height: 100%;
123
125
  object-fit: cover;
@@ -29,6 +29,7 @@
29
29
  "visibility": false,
30
30
  "interactivity": {
31
31
  "clientNavigation": true
32
- }
32
+ },
33
+ "customCSS": false
33
34
  }
34
35
  }
@@ -26,7 +26,8 @@
26
26
  "visibility": false,
27
27
  "interactivity": {
28
28
  "clientNavigation": true
29
- }
29
+ },
30
+ "customCSS": false
30
31
  },
31
32
  "editorStyle": "wp-block-more-editor"
32
33
  }
package/src/more/index.js CHANGED
@@ -27,7 +27,10 @@ export const settings = {
27
27
  __experimentalLabel( attributes, { context } ) {
28
28
  const customName = attributes?.metadata?.name;
29
29
 
30
- if ( context === 'list-view' && customName ) {
30
+ if (
31
+ ( context === 'list-view' || context === 'breadcrumb' ) &&
32
+ customName
33
+ ) {
31
34
  return customName;
32
35
  }
33
36
 
@@ -46,9 +46,10 @@
46
46
  "type": "boolean",
47
47
  "default": true
48
48
  },
49
- "openSubmenusOnClick": {
50
- "type": "boolean",
51
- "default": false
49
+ "submenuVisibility": {
50
+ "type": "string",
51
+ "enum": [ "hover", "click", "always" ],
52
+ "default": "hover"
52
53
  },
53
54
  "overlayMenu": {
54
55
  "type": "string",
@@ -101,7 +102,7 @@
101
102
  "fontSize": "fontSize",
102
103
  "customFontSize": "customFontSize",
103
104
  "showSubmenuIcon": "showSubmenuIcon",
104
- "openSubmenusOnClick": "openSubmenusOnClick",
105
+ "submenuVisibility": "submenuVisibility",
105
106
  "style": "style",
106
107
  "maxNestingLevel": "maxNestingLevel"
107
108
  },
@@ -46,9 +46,28 @@ const migrateWithLayout = ( attributes ) => {
46
46
  return updatedAttributes;
47
47
  };
48
48
 
49
- const v6 = {
49
+ const migrateOpenSubmenusOnClick = ( attributes ) => {
50
+ const { openSubmenusOnClick, ...restAttributes } = attributes;
51
+
52
+ // Don't migrate if openSubmenusOnClick doesn't exist
53
+ if ( openSubmenusOnClick === null || openSubmenusOnClick === undefined ) {
54
+ return attributes;
55
+ }
56
+
57
+ // Always remove openSubmenusOnClick
58
+ // If submenuVisibility already exists, keep it; otherwise set based on openSubmenusOnClick
59
+ return {
60
+ ...restAttributes,
61
+ submenuVisibility:
62
+ restAttributes.submenuVisibility ??
63
+ ( openSubmenusOnClick ? 'click' : 'hover' ),
64
+ };
65
+ };
66
+
67
+ // v7: Migrate openSubmenusOnClick to submenuVisibility
68
+ const v7 = {
50
69
  attributes: {
51
- navigationMenuId: {
70
+ ref: {
52
71
  type: 'number',
53
72
  },
54
73
  textColor: {
@@ -81,6 +100,115 @@ const v6 = {
81
100
  type: 'string',
82
101
  default: 'mobile',
83
102
  },
103
+ icon: {
104
+ type: 'string',
105
+ default: 'handle',
106
+ },
107
+ hasIcon: {
108
+ type: 'boolean',
109
+ default: true,
110
+ },
111
+ __unstableLocation: {
112
+ type: 'string',
113
+ },
114
+ overlayBackgroundColor: {
115
+ type: 'string',
116
+ },
117
+ customOverlayBackgroundColor: {
118
+ type: 'string',
119
+ },
120
+ overlayTextColor: {
121
+ type: 'string',
122
+ },
123
+ customOverlayTextColor: {
124
+ type: 'string',
125
+ },
126
+ maxNestingLevel: {
127
+ type: 'number',
128
+ default: 5,
129
+ },
130
+ templateLock: {
131
+ type: [ 'string', 'boolean' ],
132
+ enum: [ 'all', 'insert', 'contentOnly', false ],
133
+ },
134
+ },
135
+ supports: {
136
+ align: [ 'wide', 'full' ],
137
+ anchor: true,
138
+ html: false,
139
+ inserter: true,
140
+ typography: {
141
+ fontSize: true,
142
+ lineHeight: true,
143
+ __experimentalFontStyle: true,
144
+ __experimentalFontWeight: true,
145
+ __experimentalTextTransform: true,
146
+ __experimentalFontFamily: true,
147
+ __experimentalLetterSpacing: true,
148
+ __experimentalTextDecoration: true,
149
+ __experimentalSkipSerialization: [ 'textDecoration' ],
150
+ __experimentalDefaultControls: {
151
+ fontSize: true,
152
+ },
153
+ },
154
+ spacing: {
155
+ blockGap: true,
156
+ units: [ 'px', 'em', 'rem', 'vh', 'vw' ],
157
+ __experimentalDefaultControls: {
158
+ blockGap: true,
159
+ },
160
+ },
161
+ layout: {
162
+ allowSwitching: false,
163
+ allowInheriting: false,
164
+ allowVerticalAlignment: false,
165
+ allowSizingOnChildren: true,
166
+ default: {
167
+ type: 'flex',
168
+ },
169
+ },
170
+ interactivity: true,
171
+ renaming: false,
172
+ },
173
+ save() {
174
+ return <InnerBlocks.Content />;
175
+ },
176
+ isEligible: ( { openSubmenusOnClick } ) =>
177
+ openSubmenusOnClick !== null && openSubmenusOnClick !== undefined,
178
+ migrate: migrateOpenSubmenusOnClick,
179
+ };
180
+
181
+ const v6 = {
182
+ attributes: {
183
+ navigationMenuId: {
184
+ type: 'number',
185
+ },
186
+ textColor: {
187
+ type: 'string',
188
+ },
189
+ customTextColor: {
190
+ type: 'string',
191
+ },
192
+ rgbTextColor: {
193
+ type: 'string',
194
+ },
195
+ backgroundColor: {
196
+ type: 'string',
197
+ },
198
+ customBackgroundColor: {
199
+ type: 'string',
200
+ },
201
+ rgbBackgroundColor: {
202
+ type: 'string',
203
+ },
204
+ showSubmenuIcon: {
205
+ type: 'boolean',
206
+ default: true,
207
+ },
208
+ overlayMenu: {
209
+ type: 'string',
210
+ default: 'mobile',
211
+ },
84
212
  __unstableLocation: {
85
213
  type: 'string',
86
214
  },
@@ -224,7 +352,11 @@ const v5 = {
224
352
  },
225
353
  isEligible: ( { itemsJustification, orientation } ) =>
226
354
  !! itemsJustification || !! orientation,
227
- migrate: compose( migrateIdToRef, migrateWithLayout ),
355
+ migrate: compose(
356
+ migrateIdToRef,
357
+ migrateWithLayout,
358
+ migrateOpenSubmenusOnClick
359
+ ),
228
360
  };
229
361
 
230
362
  const v4 = {
@@ -307,7 +439,12 @@ const v4 = {
307
439
  save() {
308
440
  return <InnerBlocks.Content />;
309
441
  },
310
- migrate: compose( migrateIdToRef, migrateWithLayout, migrateFontFamily ),
442
+ migrate: compose(
443
+ migrateIdToRef,
444
+ migrateWithLayout,
445
+ migrateFontFamily,
446
+ migrateOpenSubmenusOnClick
447
+ ),
311
448
  isEligible( { style } ) {
312
449
  return style?.typography?.fontFamily;
313
450
  },
@@ -349,6 +486,7 @@ const migrateTypographyPresets = function ( attributes ) {
349
486
  };
350
487
 
351
488
  const deprecated = [
489
+ v7,
352
490
  v6,
353
491
  v5,
354
492
  v4,
@@ -430,7 +568,8 @@ const deprecated = [
430
568
  migrateIdToRef,
431
569
  migrateWithLayout,
432
570
  migrateFontFamily,
433
- migrateIsResponsive
571
+ migrateIsResponsive,
572
+ migrateOpenSubmenusOnClick
434
573
  ),
435
574
  save() {
436
575
  return <InnerBlocks.Content />;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Notice, Button } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { createInterpolateElement } from '@wordpress/element';
7
+
8
+ /**
9
+ * Warning displayed when a selected overlay template part has been deleted.
10
+ *
11
+ * @param {Object} props Component props.
12
+ * @param {Function} props.onClear Callback to clear the overlay selection.
13
+ * @param {Function} props.onCreate Callback to create a new overlay.
14
+ * @param {boolean} props.isCreating Whether a new overlay is being created.
15
+ * @return {JSX.Element} The deleted overlay warning component.
16
+ */
17
+ function DeletedOverlayWarning( { onClear, onCreate, isCreating = false } ) {
18
+ const message = createInterpolateElement(
19
+ __(
20
+ 'The selected overlay template part is missing or has been deleted. <clearButton>Reset to default overlay</clearButton> or <createButton>create a new overlay</createButton>.'
21
+ ),
22
+ {
23
+ clearButton: (
24
+ <Button
25
+ __next40pxDefaultSize
26
+ onClick={ onClear }
27
+ variant="link"
28
+ disabled={ isCreating }
29
+ accessibleWhenDisabled
30
+ />
31
+ ),
32
+ createButton: (
33
+ <Button
34
+ __next40pxDefaultSize
35
+ onClick={ onCreate }
36
+ variant="link"
37
+ disabled={ isCreating }
38
+ accessibleWhenDisabled
39
+ isBusy={ isCreating }
40
+ />
41
+ ),
42
+ }
43
+ );
44
+
45
+ return (
46
+ <Notice
47
+ status="warning"
48
+ isDismissible={ false }
49
+ className="wp-block-navigation__deleted-overlay-warning"
50
+ >
51
+ { message }
52
+ </Notice>
53
+ );
54
+ }
55
+
56
+ export default DeletedOverlayWarning;