@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
@@ -0,0 +1,251 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { __ } from '@wordpress/i18n';
10
+ import {
11
+ useBlockProps,
12
+ useInnerBlocksProps,
13
+ BlockContextProvider,
14
+ __experimentalUseBlockPreview as useBlockPreview,
15
+ store as blockEditorStore,
16
+ useBlockEditContext,
17
+ } from '@wordpress/block-editor';
18
+ import { useSelect, useDispatch } from '@wordpress/data';
19
+ import {
20
+ memo,
21
+ useMemo,
22
+ useState,
23
+ useEffect,
24
+ useCallback,
25
+ } from '@wordpress/element';
26
+
27
+ /**
28
+ * Internal dependencies
29
+ */
30
+ import AddTabToolbarControl from '../tab/add-tab-toolbar-control';
31
+ import RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';
32
+
33
+ const TABS_MENU_ITEM_TEMPLATE = [ [ 'core/tabs-menu-item', {} ] ];
34
+
35
+ /**
36
+ * Preview component for non-active tab menu items.
37
+ * Uses useBlockPreview to cache the rendering.
38
+ *
39
+ * @param {Object} props Component props.
40
+ * @param {Array} props.blocks The blocks to preview.
41
+ * @param {string} props.blockContextId The context ID for this block.
42
+ * @param {boolean} props.isHidden Whether the preview is hidden.
43
+ * @param {Function} props.setActiveBlockContextId Callback to set the active context ID.
44
+ */
45
+ function TabsMenuItemPreview( {
46
+ blocks,
47
+ blockContextId,
48
+ isHidden,
49
+ setActiveBlockContextId,
50
+ } ) {
51
+ const blockPreviewProps = useBlockPreview( { blocks } );
52
+
53
+ const handleOnClick = () => {
54
+ setActiveBlockContextId( blockContextId );
55
+ };
56
+
57
+ const style = {
58
+ display: isHidden ? 'none' : 'flex',
59
+ };
60
+
61
+ return (
62
+ <div
63
+ { ...blockPreviewProps }
64
+ tabIndex={ 0 }
65
+ role="button"
66
+ onClick={ handleOnClick }
67
+ onKeyDown={ handleOnClick }
68
+ style={ style }
69
+ />
70
+ );
71
+ }
72
+
73
+ const MemoizedTabsMenuItemPreview = memo( TabsMenuItemPreview );
74
+
75
+ /**
76
+ * The actual editable inner blocks for the active tab item.
77
+ *
78
+ * @param {Object} props Component props.
79
+ * @param {Object} props.wrapperProps Props to pass to the wrapper element.
80
+ * @param {Object} props.layout The layout object to pass to inner blocks.
81
+ */
82
+ function TabsMenuItemTemplateBlocks( { wrapperProps = {}, layout } ) {
83
+ const innerBlocksProps = useInnerBlocksProps( wrapperProps, {
84
+ template: TABS_MENU_ITEM_TEMPLATE,
85
+ templateLock: 'all',
86
+ renderAppender: false,
87
+ layout,
88
+ } );
89
+ return innerBlocksProps.children;
90
+ }
91
+
92
+ function Edit( {
93
+ context,
94
+ clientId,
95
+ __unstableLayoutClassNames: layoutClassNames,
96
+ } ) {
97
+ // Get the layout from block edit context to pass to inner blocks.
98
+ // This ensures the correct orientation is used from the start.
99
+ const { layout } = useBlockEditContext();
100
+
101
+ const tabsId = context[ 'core/tabs-id' ] || null;
102
+ const tabsList = context[ 'core/tabs-list' ] || [];
103
+ const activeTabIndex = context[ 'core/tabs-activeTabIndex' ] ?? 0;
104
+ const editorActiveTabIndex = context[ 'core/tabs-editorActiveTabIndex' ];
105
+
106
+ // Memoize effectiveActiveIndex to ensure it updates when context changes
107
+ const effectiveActiveIndex = useMemo( () => {
108
+ return editorActiveTabIndex ?? activeTabIndex;
109
+ }, [ editorActiveTabIndex, activeTabIndex ] );
110
+
111
+ const { __unstableMarkNextChangeAsNotPersistent } =
112
+ useDispatch( blockEditorStore );
113
+ const { updateBlockAttributes } = useDispatch( blockEditorStore );
114
+
115
+ // Track which tab context is "active" for editing (shows real inner blocks)
116
+ const [ activeBlockContextId, setActiveBlockContextId ] = useState( null );
117
+
118
+ // Get the inner blocks (the single tabs-menu-item template)
119
+ const { blocks, tabsClientId } = useSelect(
120
+ ( select ) => {
121
+ const { getBlocks, getBlockRootClientId } =
122
+ select( blockEditorStore );
123
+ return {
124
+ blocks: getBlocks( clientId ),
125
+ tabsClientId: getBlockRootClientId( clientId ),
126
+ };
127
+ },
128
+ [ clientId ]
129
+ );
130
+
131
+ // Build block contexts for each tab
132
+ const blockContexts = useMemo( () => {
133
+ return tabsList.map( ( tab, index ) => ( {
134
+ 'core/tabs-menu-item-index': index,
135
+ 'core/tabs-menu-item-id': tab.id || `tab-${ index }`,
136
+ 'core/tabs-menu-item-label': tab.label || '',
137
+ 'core/tabs-menu-item-clientId': tab.clientId,
138
+ // Pass through parent context
139
+ 'core/tabs-id': tabsId,
140
+ 'core/tabs-list': tabsList,
141
+ 'core/tabs-activeTabIndex': activeTabIndex,
142
+ 'core/tabs-editorActiveTabIndex': editorActiveTabIndex,
143
+ } ) );
144
+ }, [ tabsList, tabsId, activeTabIndex, editorActiveTabIndex ] );
145
+
146
+ // Generate a unique ID for each block context
147
+ const getContextId = useCallback( ( blockContext ) => {
148
+ return `tab-context-${ blockContext[ 'core/tabs-menu-item-index' ] }`;
149
+ }, [] );
150
+
151
+ // Set the first tab as active by default
152
+ useEffect( () => {
153
+ if ( blockContexts.length > 0 && activeBlockContextId === null ) {
154
+ setActiveBlockContextId( getContextId( blockContexts[ 0 ] ) );
155
+ }
156
+ }, [ blockContexts, activeBlockContextId, getContextId ] );
157
+
158
+ // Update active context when editorActiveTabIndex changes
159
+ useEffect( () => {
160
+ if (
161
+ blockContexts.length > 0 &&
162
+ effectiveActiveIndex < blockContexts.length
163
+ ) {
164
+ const newContextId = getContextId(
165
+ blockContexts[ effectiveActiveIndex ]
166
+ );
167
+ setActiveBlockContextId( ( prevId ) =>
168
+ prevId !== newContextId ? newContextId : prevId
169
+ );
170
+ }
171
+ }, [ effectiveActiveIndex, blockContexts, getContextId ] );
172
+
173
+ // Handle tab click to update parent tabs block's editorActiveTabIndex
174
+ const handleTabContextClick = useCallback(
175
+ ( index ) => {
176
+ if ( tabsClientId && index !== effectiveActiveIndex ) {
177
+ __unstableMarkNextChangeAsNotPersistent();
178
+ updateBlockAttributes( tabsClientId, {
179
+ editorActiveTabIndex: index,
180
+ } );
181
+ }
182
+ },
183
+ [
184
+ tabsClientId,
185
+ effectiveActiveIndex,
186
+ updateBlockAttributes,
187
+ __unstableMarkNextChangeAsNotPersistent,
188
+ ]
189
+ );
190
+
191
+ const blockProps = useBlockProps( {
192
+ className: clsx( layoutClassNames ),
193
+ role: 'tablist',
194
+ } );
195
+
196
+ // If no tabs exist yet, show placeholder
197
+ if ( tabsList.length === 0 ) {
198
+ return (
199
+ <>
200
+ <AddTabToolbarControl tabsClientId={ tabsClientId } />
201
+ <RemoveTabToolbarControl tabsClientId={ tabsClientId } />
202
+ <div { ...blockProps }>
203
+ <span className="tabs__tab-label tabs__tab-label--placeholder">
204
+ { __( 'Add tabs to display menu' ) }
205
+ </span>
206
+ </div>
207
+ </>
208
+ );
209
+ }
210
+
211
+ return (
212
+ <>
213
+ <AddTabToolbarControl tabsClientId={ tabsClientId } />
214
+ <RemoveTabToolbarControl tabsClientId={ tabsClientId } />
215
+ <div { ...blockProps }>
216
+ { blockContexts.map( ( blockContext, index ) => {
217
+ const contextId = getContextId( blockContext );
218
+ const isVisible = contextId === activeBlockContextId;
219
+
220
+ return (
221
+ <BlockContextProvider
222
+ key={ contextId }
223
+ value={ blockContext }
224
+ >
225
+ { isVisible ? (
226
+ <TabsMenuItemTemplateBlocks
227
+ wrapperProps={ {
228
+ onClick: () =>
229
+ handleTabContextClick( index ),
230
+ } }
231
+ layout={ layout }
232
+ />
233
+ ) : null }
234
+ <MemoizedTabsMenuItemPreview
235
+ blocks={ blocks }
236
+ blockContextId={ contextId }
237
+ setActiveBlockContextId={ ( id ) => {
238
+ setActiveBlockContextId( id );
239
+ handleTabContextClick( index );
240
+ } }
241
+ isHidden={ isVisible }
242
+ />
243
+ </BlockContextProvider>
244
+ );
245
+ } ) }
246
+ </div>
247
+ </>
248
+ );
249
+ }
250
+
251
+ export default Edit;
@@ -0,0 +1,6 @@
1
+ .wp-block-tabs-menu {
2
+ .tabs__tab-label--placeholder {
3
+ opacity: 0.5;
4
+ font-style: italic;
5
+ }
6
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { SVG, Path } from '@wordpress/primitives';
5
+
6
+ export default (
7
+ <SVG xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
8
+ <Path d="M4 5.5H20V7H4V5.5ZM4 11.5H12V13H4V11.5ZM20 11.5H14V13H20V11.5ZM4 17.5H20V19H4V17.5Z" />
9
+ </SVG>
10
+ );
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import initBlock from '../utils/init-block';
5
+ import edit from './edit';
6
+ import save from './save';
7
+ import icon from './icon';
8
+
9
+ import metadata from './block.json';
10
+
11
+ const { name } = metadata;
12
+
13
+ export { metadata, name };
14
+
15
+ export const settings = {
16
+ icon,
17
+ edit,
18
+ save,
19
+ };
20
+
21
+ export const init = () => initBlock( { name, metadata, settings } );
@@ -0,0 +1,74 @@
1
+ <?php
2
+ /**
3
+ * Tabs Menu Block
4
+ *
5
+ * @package WordPress
6
+ */
7
+
8
+ /**
9
+ * Render callback for core/tabs-menu.
10
+ *
11
+ * @param array $attributes Block attributes.
12
+ * @param string $content Block content (contains the tabs-menu-item template).
13
+ * @param \WP_Block $block WP_Block instance.
14
+ *
15
+ * @return string Updated HTML.
16
+ */
17
+ function block_core_tabs_menu_render_callback( array $attributes, string $content, \WP_Block $block ): string {
18
+ $tabs_list = $block->context['core/tabs-list'] ?? array();
19
+
20
+ if ( empty( $tabs_list ) ) {
21
+ return '';
22
+ }
23
+
24
+ // Get the first inner block as template (tabs-menu-item)
25
+ $inner_blocks = $block->parsed_block['innerBlocks'] ?? array();
26
+ if ( empty( $inner_blocks ) ) {
27
+ return '';
28
+ }
29
+ $template_block = $inner_blocks[0];
30
+
31
+ // Build rendered tab items
32
+ $tabs_markup = '';
33
+ foreach ( $tabs_list as $index => $tab ) {
34
+ // Create context for this specific tab
35
+ $tab_context = array_merge(
36
+ $block->context,
37
+ array(
38
+ 'core/tabs-menu-item-index' => $index,
39
+ 'core/tabs-menu-item-id' => $tab['id'] ?? '',
40
+ 'core/tabs-menu-item-label' => $tab['label'] ?? '',
41
+ )
42
+ );
43
+
44
+ // Create new WP_Block instance with template and context
45
+ $tab_block = new WP_Block( $template_block, $tab_context );
46
+
47
+ // Render the block
48
+ $tabs_markup .= $tab_block->render();
49
+ }
50
+
51
+ // Find the template block and replace it in $content with $tabs_markup
52
+ $content = preg_replace(
53
+ '/<a\b[^>]*\bwp-block-tabs-menu-item__template\b[^>]*>.*?<\/a>/si',
54
+ $tabs_markup,
55
+ $content
56
+ );
57
+
58
+ return $content;
59
+ }
60
+
61
+ /**
62
+ * Registers the `core/tabs-menu` block on the server.
63
+ *
64
+ * @since 6.9.0
65
+ */
66
+ function register_block_core_tabs_menu() {
67
+ register_block_type_from_metadata(
68
+ __DIR__ . '/tabs-menu',
69
+ array(
70
+ 'render_callback' => 'block_core_tabs_menu_render_callback',
71
+ )
72
+ );
73
+ }
74
+ add_action( 'init', 'register_block_core_tabs_menu' );
@@ -0,0 +1,18 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+ import { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';
9
+
10
+ export default function save() {
11
+ const blockProps = useBlockProps.save( {
12
+ role: 'tablist',
13
+ } );
14
+
15
+ const innerBlocksProps = useInnerBlocksProps.save( blockProps );
16
+
17
+ return <div { ...innerBlocksProps } />;
18
+ }
@@ -0,0 +1,8 @@
1
+ .wp-block-tabs-menu {
2
+ display: flex;
3
+ align-items: flex-end;
4
+ min-width: fit-content;
5
+ border-bottom-width: 1px; // A default border divider between the tabs-menu and the tab-panels
6
+ border-bottom-style: solid;
7
+ border-bottom-color: #000;
8
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "$schema": "https://schemas.wp.org/trunk/block.json",
3
+ "__experimental": true,
4
+ "apiVersion": 3,
5
+ "name": "core/tabs-menu-item",
6
+ "title": "Tab Menu Item",
7
+ "description": "A single tab button in the tabs menu. Used as a template for styling all tab buttons.",
8
+ "version": "1.0.0",
9
+ "category": "design",
10
+ "textdomain": "default",
11
+ "parent": [
12
+ "core/tabs-menu"
13
+ ],
14
+ "usesContext": [
15
+ "core/tabs-menu-item-index",
16
+ "core/tabs-menu-item-id",
17
+ "core/tabs-menu-item-label",
18
+ "core/tabs-menu-item-clientId",
19
+ "core/tabs-list",
20
+ "core/tabs-activeTabIndex",
21
+ "core/tabs-editorActiveTabIndex"
22
+ ],
23
+ "attributes": {
24
+ "activeBackgroundColor": {
25
+ "type": "string"
26
+ },
27
+ "customActiveBackgroundColor": {
28
+ "type": "string"
29
+ },
30
+ "activeTextColor": {
31
+ "type": "string"
32
+ },
33
+ "customActiveTextColor": {
34
+ "type": "string"
35
+ },
36
+ "hoverBackgroundColor": {
37
+ "type": "string"
38
+ },
39
+ "customHoverBackgroundColor": {
40
+ "type": "string"
41
+ },
42
+ "hoverTextColor": {
43
+ "type": "string"
44
+ },
45
+ "customHoverTextColor": {
46
+ "type": "string"
47
+ }
48
+ },
49
+ "supports": {
50
+ "html": false,
51
+ "reusable": false,
52
+ "lock": false,
53
+ "color": {
54
+ "background": true,
55
+ "text": true,
56
+ "__experimentalDefaultControls": {
57
+ "background": true,
58
+ "text": true
59
+ }
60
+ },
61
+ "shadow": true,
62
+ "typography": {
63
+ "fontSize": true,
64
+ "__experimentalFontFamily": true,
65
+ "textAlign": true,
66
+ "__experimentalDefaultControls": {
67
+ "fontSize": true
68
+ }
69
+ },
70
+ "layout": {
71
+ "default": {
72
+ "type": "flex",
73
+ "orientation": "vertical",
74
+ "flexWrap": "nowrap"
75
+ },
76
+ "allowVerticalAlignment": true,
77
+ "allowJustification": true,
78
+ "allowSwitching": false,
79
+ "allowOrientation": false,
80
+ "allowWrap": false
81
+ },
82
+ "spacing": {
83
+ "padding": true,
84
+ "__experimentalDefaultControls": {
85
+ "padding": true
86
+ }
87
+ },
88
+ "__experimentalBorder": {
89
+ "radius": true,
90
+ "color": true,
91
+ "width": true,
92
+ "style": true
93
+ }
94
+ },
95
+ "editorScript": "file:./index.js",
96
+ "editorStyle": "file:./editor.css",
97
+ "style": "file:./style-index.css"
98
+ }