@wordpress/block-library 9.44.0 → 9.45.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 (367) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/edit.cjs +0 -2
  3. package/build/accordion/edit.cjs.map +2 -2
  4. package/build/accordion-item/block.json +1 -0
  5. package/build/button/constants.cjs +1 -1
  6. package/build/button/constants.cjs.map +1 -1
  7. package/build/categories/edit.cjs +5 -1
  8. package/build/categories/edit.cjs.map +2 -2
  9. package/build/embed/edit.cjs +38 -34
  10. package/build/embed/edit.cjs.map +3 -3
  11. package/build/embed/transforms.cjs +3 -1
  12. package/build/embed/transforms.cjs.map +2 -2
  13. package/build/embed/util.cjs +13 -2
  14. package/build/embed/util.cjs.map +2 -2
  15. package/build/form/block.json +1 -1
  16. package/build/form-input/block.json +1 -1
  17. package/build/form-submission-notification/block.json +1 -1
  18. package/build/form-submit-button/block.json +1 -1
  19. package/build/group/block.json +2 -1
  20. package/build/image/constants.cjs +1 -1
  21. package/build/image/constants.cjs.map +2 -2
  22. package/build/image/edit.cjs +2 -4
  23. package/build/image/edit.cjs.map +2 -2
  24. package/build/image/image.cjs +49 -19
  25. package/build/image/image.cjs.map +3 -3
  26. package/build/index.cjs +4 -4
  27. package/build/index.cjs.map +2 -2
  28. package/build/latest-posts/edit.cjs +1 -1
  29. package/build/latest-posts/edit.cjs.map +1 -1
  30. package/build/math/edit.cjs +2 -2
  31. package/build/math/edit.cjs.map +2 -2
  32. package/build/navigation/edit/accessible-description.cjs +2 -2
  33. package/build/navigation/edit/accessible-description.cjs.map +2 -2
  34. package/build/navigation/edit/overlay-template-part-selector.cjs.map +2 -2
  35. package/build/navigation-link/edit.cjs +2 -1
  36. package/build/navigation-link/edit.cjs.map +2 -2
  37. package/build/navigation-link/link-ui/dialog-wrapper.cjs +2 -1
  38. package/build/navigation-link/link-ui/dialog-wrapper.cjs.map +2 -2
  39. package/build/navigation-link/link-ui/index.cjs +2 -1
  40. package/build/navigation-link/link-ui/index.cjs.map +2 -2
  41. package/build/paragraph/use-enter.cjs +12 -23
  42. package/build/paragraph/use-enter.cjs.map +2 -2
  43. package/build/post-author/edit.cjs.map +3 -3
  44. package/build/post-comments-form/edit.cjs +2 -2
  45. package/build/post-comments-form/edit.cjs.map +2 -2
  46. package/build/post-featured-image/edit.cjs +2 -5
  47. package/build/post-featured-image/edit.cjs.map +2 -2
  48. package/build/post-template/edit.cjs +8 -2
  49. package/build/post-template/edit.cjs.map +2 -2
  50. package/build/pullquote/block.json +1 -4
  51. package/build/query/edit/inspector-controls/author-control.cjs +1 -1
  52. package/build/query/edit/inspector-controls/author-control.cjs.map +2 -2
  53. package/build/query/edit/inspector-controls/format-controls.cjs +1 -1
  54. package/build/query/edit/inspector-controls/format-controls.cjs.map +2 -2
  55. package/build/query/edit/inspector-controls/parent-control.cjs +1 -1
  56. package/build/query/edit/inspector-controls/parent-control.cjs.map +2 -2
  57. package/build/query/edit/inspector-controls/taxonomy-controls.cjs +1 -1
  58. package/build/query/edit/inspector-controls/taxonomy-controls.cjs.map +2 -2
  59. package/build/site-logo/edit.cjs +34 -20
  60. package/build/site-logo/edit.cjs.map +2 -2
  61. package/build/tab/block.json +23 -23
  62. package/build/tab/controls.cjs +5 -48
  63. package/build/tab/controls.cjs.map +3 -3
  64. package/build/tab/edit.cjs +76 -92
  65. package/build/tab/edit.cjs.map +3 -3
  66. package/build/tab/save.cjs +3 -3
  67. package/build/tab/save.cjs.map +2 -2
  68. package/{src/tabs-menu → build/tab-list}/block.json +4 -4
  69. package/build/{tabs-menu → tab-list}/edit.cjs +9 -14
  70. package/build/tab-list/edit.cjs.map +7 -0
  71. package/build/{tabs-menu → tab-list}/index.cjs +5 -5
  72. package/build/tab-list/index.cjs.map +7 -0
  73. package/build/{tabs-menu → tab-list}/save.cjs +1 -1
  74. package/build/{tabs-menu → tab-list}/save.cjs.map +1 -1
  75. package/build/{tab → tab-panel}/add-tab-toolbar-control.cjs +16 -16
  76. package/build/tab-panel/add-tab-toolbar-control.cjs.map +7 -0
  77. package/build/tab-panel/block.json +27 -37
  78. package/build/tab-panel/controls.cjs +89 -0
  79. package/build/tab-panel/controls.cjs.map +7 -0
  80. package/build/tab-panel/edit.cjs +88 -18
  81. package/build/tab-panel/edit.cjs.map +3 -3
  82. package/build/tab-panel/index.cjs +1 -1
  83. package/build/tab-panel/index.cjs.map +1 -1
  84. package/build/{tab → tab-panel}/init.cjs +1 -1
  85. package/build/{tab → tab-panel}/init.cjs.map +1 -1
  86. package/build/{tab → tab-panel}/remove-tab-toolbar-control.cjs +16 -16
  87. package/build/tab-panel/remove-tab-toolbar-control.cjs.map +7 -0
  88. package/build/tab-panel/save.cjs +4 -2
  89. package/build/tab-panel/save.cjs.map +2 -2
  90. package/build/tab-panels/block.json +66 -0
  91. package/build/{tabs-menu-item/controls.cjs → tab-panels/edit.cjs} +25 -11
  92. package/build/tab-panels/edit.cjs.map +7 -0
  93. package/build/{tabs-menu-item → tab-panels}/index.cjs +5 -5
  94. package/build/{tabs-menu → tab-panels}/index.cjs.map +2 -2
  95. package/build/{tabs-menu-item → tab-panels}/save.cjs +4 -6
  96. package/build/tab-panels/save.cjs.map +7 -0
  97. package/build/tabs/block.json +1 -2
  98. package/build/tabs/controls.cjs +2 -2
  99. package/build/tabs/controls.cjs.map +1 -1
  100. package/build/tabs/edit.cjs +29 -100
  101. package/build/tabs/edit.cjs.map +3 -3
  102. package/build/tabs/index.cjs +5 -5
  103. package/build/tabs/index.cjs.map +1 -1
  104. package/build/tabs/use-tab-list-sync.cjs +190 -0
  105. package/build/tabs/use-tab-list-sync.cjs.map +7 -0
  106. package/build/terms-query/edit/inspector-controls/include-control.cjs +1 -1
  107. package/build/terms-query/edit/inspector-controls/include-control.cjs.map +2 -2
  108. package/build/video/tracks-editor.cjs +2 -2
  109. package/build/video/tracks-editor.cjs.map +2 -2
  110. package/build-module/accordion/edit.mjs +0 -2
  111. package/build-module/accordion/edit.mjs.map +2 -2
  112. package/build-module/accordion-item/block.json +1 -0
  113. package/build-module/button/constants.mjs +1 -1
  114. package/build-module/button/constants.mjs.map +1 -1
  115. package/build-module/categories/edit.mjs +5 -2
  116. package/build-module/categories/edit.mjs.map +2 -2
  117. package/build-module/embed/edit.mjs +45 -36
  118. package/build-module/embed/edit.mjs.map +2 -2
  119. package/build-module/embed/transforms.mjs +8 -2
  120. package/build-module/embed/transforms.mjs.map +2 -2
  121. package/build-module/embed/util.mjs +11 -1
  122. package/build-module/embed/util.mjs.map +2 -2
  123. package/build-module/form/block.json +1 -1
  124. package/build-module/form-input/block.json +1 -1
  125. package/build-module/form-submission-notification/block.json +1 -1
  126. package/build-module/form-submit-button/block.json +1 -1
  127. package/build-module/group/block.json +2 -1
  128. package/build-module/image/constants.mjs +1 -1
  129. package/build-module/image/constants.mjs.map +2 -2
  130. package/build-module/image/edit.mjs +2 -4
  131. package/build-module/image/edit.mjs.map +2 -2
  132. package/build-module/image/image.mjs +49 -19
  133. package/build-module/image/image.mjs.map +3 -3
  134. package/build-module/index.mjs +4 -4
  135. package/build-module/index.mjs.map +2 -2
  136. package/build-module/latest-posts/edit.mjs +1 -1
  137. package/build-module/latest-posts/edit.mjs.map +1 -1
  138. package/build-module/math/edit.mjs +2 -2
  139. package/build-module/math/edit.mjs.map +2 -2
  140. package/build-module/navigation/edit/accessible-description.mjs +1 -1
  141. package/build-module/navigation/edit/accessible-description.mjs.map +1 -1
  142. package/build-module/navigation/edit/overlay-template-part-selector.mjs +2 -2
  143. package/build-module/navigation/edit/overlay-template-part-selector.mjs.map +1 -1
  144. package/build-module/navigation-link/edit.mjs +2 -5
  145. package/build-module/navigation-link/edit.mjs.map +2 -2
  146. package/build-module/navigation-link/link-ui/dialog-wrapper.mjs +2 -1
  147. package/build-module/navigation-link/link-ui/dialog-wrapper.mjs.map +2 -2
  148. package/build-module/navigation-link/link-ui/index.mjs +1 -1
  149. package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
  150. package/build-module/paragraph/use-enter.mjs +13 -23
  151. package/build-module/paragraph/use-enter.mjs.map +2 -2
  152. package/build-module/post-author/edit.mjs +2 -2
  153. package/build-module/post-author/edit.mjs.map +2 -2
  154. package/build-module/post-comments-form/edit.mjs +1 -1
  155. package/build-module/post-comments-form/edit.mjs.map +2 -2
  156. package/build-module/post-featured-image/edit.mjs +2 -5
  157. package/build-module/post-featured-image/edit.mjs.map +2 -2
  158. package/build-module/post-template/edit.mjs +8 -2
  159. package/build-module/post-template/edit.mjs.map +2 -2
  160. package/build-module/pullquote/block.json +1 -4
  161. package/build-module/query/edit/inspector-controls/author-control.mjs +1 -1
  162. package/build-module/query/edit/inspector-controls/author-control.mjs.map +2 -2
  163. package/build-module/query/edit/inspector-controls/format-controls.mjs +1 -1
  164. package/build-module/query/edit/inspector-controls/format-controls.mjs.map +2 -2
  165. package/build-module/query/edit/inspector-controls/parent-control.mjs +1 -1
  166. package/build-module/query/edit/inspector-controls/parent-control.mjs.map +2 -2
  167. package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs +1 -1
  168. package/build-module/query/edit/inspector-controls/taxonomy-controls.mjs.map +2 -2
  169. package/build-module/site-logo/edit.mjs +34 -20
  170. package/build-module/site-logo/edit.mjs.map +2 -2
  171. package/build-module/tab/block.json +23 -23
  172. package/build-module/tab/controls.mjs +7 -57
  173. package/build-module/tab/controls.mjs.map +2 -2
  174. package/build-module/tab/edit.mjs +80 -96
  175. package/build-module/tab/edit.mjs.map +3 -3
  176. package/build-module/tab/save.mjs +4 -4
  177. package/build-module/tab/save.mjs.map +2 -2
  178. package/build-module/{tabs-menu → tab-list}/block.json +4 -4
  179. package/build-module/{tabs-menu → tab-list}/edit.mjs +9 -14
  180. package/build-module/tab-list/edit.mjs.map +7 -0
  181. package/build-module/{tabs-menu → tab-list}/index.mjs +2 -2
  182. package/build-module/tab-list/index.mjs.map +7 -0
  183. package/build-module/{tabs-menu → tab-list}/save.mjs +1 -1
  184. package/build-module/{tabs-menu → tab-list}/save.mjs.map +1 -1
  185. package/build-module/{tab → tab-panel}/add-tab-toolbar-control.mjs +16 -16
  186. package/build-module/tab-panel/add-tab-toolbar-control.mjs.map +7 -0
  187. package/build-module/tab-panel/block.json +27 -37
  188. package/build-module/tab-panel/controls.mjs +65 -0
  189. package/build-module/tab-panel/controls.mjs.map +7 -0
  190. package/build-module/tab-panel/edit.mjs +90 -20
  191. package/build-module/tab-panel/edit.mjs.map +2 -2
  192. package/build-module/tab-panel/index.mjs +1 -1
  193. package/build-module/tab-panel/index.mjs.map +1 -1
  194. package/build-module/{tab → tab-panel}/init.mjs +1 -1
  195. package/build-module/{tab → tab-panel}/init.mjs.map +1 -1
  196. package/build-module/{tab → tab-panel}/remove-tab-toolbar-control.mjs +16 -16
  197. package/build-module/tab-panel/remove-tab-toolbar-control.mjs.map +7 -0
  198. package/build-module/tab-panel/save.mjs +4 -2
  199. package/build-module/tab-panel/save.mjs.map +2 -2
  200. package/build-module/tab-panels/block.json +66 -0
  201. package/build-module/tab-panels/edit.mjs +33 -0
  202. package/build-module/tab-panels/edit.mjs.map +7 -0
  203. package/build-module/{tabs-menu-item → tab-panels}/index.mjs +2 -2
  204. package/build-module/{tabs-menu → tab-panels}/index.mjs.map +2 -2
  205. package/build-module/tab-panels/save.mjs +12 -0
  206. package/build-module/tab-panels/save.mjs.map +7 -0
  207. package/build-module/tabs/block.json +1 -2
  208. package/build-module/tabs/controls.mjs +2 -2
  209. package/build-module/tabs/controls.mjs.map +1 -1
  210. package/build-module/tabs/edit.mjs +31 -102
  211. package/build-module/tabs/edit.mjs.map +2 -2
  212. package/build-module/tabs/index.mjs +5 -5
  213. package/build-module/tabs/index.mjs.map +1 -1
  214. package/build-module/tabs/use-tab-list-sync.mjs +169 -0
  215. package/build-module/tabs/use-tab-list-sync.mjs.map +7 -0
  216. package/build-module/terms-query/edit/inspector-controls/include-control.mjs +1 -1
  217. package/build-module/terms-query/edit/inspector-controls/include-control.mjs.map +2 -2
  218. package/build-module/video/tracks-editor.mjs +2 -2
  219. package/build-module/video/tracks-editor.mjs.map +2 -2
  220. package/build-style/classic-rtl.css +14 -0
  221. package/build-style/classic.css +14 -0
  222. package/build-style/editor-rtl.css +9 -5
  223. package/build-style/editor.css +9 -5
  224. package/build-style/latest-comments/style-rtl.css +4 -4
  225. package/build-style/latest-comments/style.css +4 -4
  226. package/build-style/post-template/style-rtl.css +1 -1
  227. package/build-style/post-template/style.css +1 -1
  228. package/build-style/style-rtl.css +45 -48
  229. package/build-style/style.css +45 -48
  230. package/build-style/tab/editor-rtl.css +11 -0
  231. package/build-style/tab/editor.css +11 -0
  232. package/build-style/tab/style-rtl.css +29 -16
  233. package/build-style/tab/style.css +29 -16
  234. package/build-style/tab-list/editor-rtl.css +6 -0
  235. package/build-style/tab-list/editor.css +6 -0
  236. package/build-style/tab-panel/style-rtl.css +17 -1
  237. package/build-style/tab-panel/style.css +17 -1
  238. package/build-style/tab-panels/style-rtl.css +4 -0
  239. package/build-style/tab-panels/style.css +4 -0
  240. package/build-style/tabs/style-rtl.css +0 -3
  241. package/build-style/tabs/style.css +0 -3
  242. package/build-style/video/editor-rtl.css +4 -0
  243. package/build-style/video/editor.css +4 -0
  244. package/package.json +39 -38
  245. package/src/accordion/edit.js +0 -2
  246. package/src/accordion-item/block.json +1 -0
  247. package/src/block/test/edit.native.js +1 -1
  248. package/src/button/constants.js +1 -1
  249. package/src/button/test/get-updated-link-attributes.js +6 -10
  250. package/src/categories/edit.js +3 -2
  251. package/src/classic.scss +25 -0
  252. package/src/editor.scss +2 -2
  253. package/src/embed/edit.js +61 -52
  254. package/src/embed/edit.native.js +71 -57
  255. package/src/embed/transforms.js +8 -2
  256. package/src/embed/util.js +17 -0
  257. package/src/form/block.json +1 -1
  258. package/src/form-input/block.json +1 -1
  259. package/src/form-submission-notification/block.json +1 -1
  260. package/src/form-submit-button/block.json +1 -1
  261. package/src/group/block.json +2 -1
  262. package/src/image/constants.js +1 -1
  263. package/src/image/edit.js +5 -3
  264. package/src/image/edit.native.js +3 -3
  265. package/src/image/image.js +63 -27
  266. package/src/image/test/edit.native.js +2 -2
  267. package/src/index.js +4 -4
  268. package/src/latest-comments/style.scss +7 -7
  269. package/src/latest-posts/edit.js +1 -1
  270. package/src/latest-posts/index.php +1 -1
  271. package/src/math/edit.js +3 -3
  272. package/src/navigation/edit/accessible-description.js +1 -1
  273. package/src/navigation/edit/overlay-template-part-selector.js +3 -3
  274. package/src/navigation/edit/test/overlay-template-part-selector.js +1 -0
  275. package/src/navigation-link/edit.js +2 -5
  276. package/src/navigation-link/link-ui/dialog-wrapper.js +2 -1
  277. package/src/navigation-link/link-ui/index.js +1 -1
  278. package/src/paragraph/use-enter.js +18 -24
  279. package/src/post-author/edit.js +3 -5
  280. package/src/post-comments-form/edit.js +1 -1
  281. package/src/post-featured-image/edit.js +2 -9
  282. package/src/post-template/edit.js +7 -1
  283. package/src/post-template/index.php +3 -0
  284. package/src/post-template/style.scss +2 -2
  285. package/src/pullquote/block.json +1 -4
  286. package/src/query/edit/inspector-controls/author-control.js +1 -1
  287. package/src/query/edit/inspector-controls/format-controls.js +1 -1
  288. package/src/query/edit/inspector-controls/parent-control.js +1 -1
  289. package/src/query/edit/inspector-controls/taxonomy-controls.js +1 -1
  290. package/src/site-logo/edit.js +40 -20
  291. package/src/style.scss +1 -1
  292. package/src/tab/block.json +23 -23
  293. package/src/tab/controls.js +6 -52
  294. package/src/tab/edit.js +94 -123
  295. package/src/{tabs-menu-item → tab}/editor.scss +3 -3
  296. package/src/tab/index.php +32 -51
  297. package/src/tab/save.js +4 -4
  298. package/src/tab/style.scss +34 -17
  299. package/{build/tabs-menu → src/tab-list}/block.json +4 -4
  300. package/src/{tabs-menu → tab-list}/edit.js +9 -18
  301. package/src/{tabs-menu → tab-list}/editor.scss +2 -2
  302. package/src/{tabs-menu → tab-list}/index.js +1 -1
  303. package/src/tab-list/index.php +80 -0
  304. package/src/{tab → tab-panel}/add-tab-toolbar-control.js +19 -19
  305. package/src/tab-panel/block.json +27 -37
  306. package/src/tab-panel/controls.js +65 -0
  307. package/src/tab-panel/edit.js +121 -20
  308. package/src/tab-panel/index.js +1 -1
  309. package/src/tab-panel/index.php +88 -0
  310. package/src/{tab → tab-panel}/remove-tab-toolbar-control.js +20 -19
  311. package/src/tab-panel/save.js +4 -2
  312. package/src/tab-panel/style.scss +20 -1
  313. package/src/tab-panels/block.json +66 -0
  314. package/src/tab-panels/edit.js +42 -0
  315. package/src/{tabs-menu-item → tab-panels}/index.js +1 -1
  316. package/src/tab-panels/save.js +11 -0
  317. package/src/tab-panels/style.scss +4 -0
  318. package/src/tabs/block.json +1 -2
  319. package/src/tabs/controls.js +2 -2
  320. package/src/tabs/edit.js +32 -150
  321. package/src/tabs/index.js +5 -5
  322. package/src/tabs/index.php +5 -5
  323. package/src/tabs/style.scss +0 -3
  324. package/src/tabs/use-tab-list-sync.js +237 -0
  325. package/src/terms-query/edit/inspector-controls/include-control.js +1 -1
  326. package/src/video/editor.scss +5 -0
  327. package/src/video/tracks-editor.js +2 -2
  328. package/build/tab/add-tab-toolbar-control.cjs.map +0 -7
  329. package/build/tab/remove-tab-toolbar-control.cjs.map +0 -7
  330. package/build/tab/slug-from-label.cjs +0 -37
  331. package/build/tab/slug-from-label.cjs.map +0 -7
  332. package/build/tabs-menu/edit.cjs.map +0 -7
  333. package/build/tabs-menu-item/block.json +0 -59
  334. package/build/tabs-menu-item/controls.cjs.map +0 -7
  335. package/build/tabs-menu-item/edit.cjs +0 -144
  336. package/build/tabs-menu-item/edit.cjs.map +0 -7
  337. package/build/tabs-menu-item/index.cjs.map +0 -7
  338. package/build/tabs-menu-item/save.cjs.map +0 -7
  339. package/build-module/tab/add-tab-toolbar-control.mjs.map +0 -7
  340. package/build-module/tab/remove-tab-toolbar-control.mjs.map +0 -7
  341. package/build-module/tab/slug-from-label.mjs +0 -16
  342. package/build-module/tab/slug-from-label.mjs.map +0 -7
  343. package/build-module/tabs-menu/edit.mjs.map +0 -7
  344. package/build-module/tabs-menu-item/block.json +0 -59
  345. package/build-module/tabs-menu-item/controls.mjs +0 -15
  346. package/build-module/tabs-menu-item/controls.mjs.map +0 -7
  347. package/build-module/tabs-menu-item/edit.mjs +0 -117
  348. package/build-module/tabs-menu-item/edit.mjs.map +0 -7
  349. package/build-module/tabs-menu-item/index.mjs.map +0 -7
  350. package/build-module/tabs-menu-item/save.mjs +0 -14
  351. package/build-module/tabs-menu-item/save.mjs.map +0 -7
  352. package/build-style/tabs-menu/editor-rtl.css +0 -6
  353. package/build-style/tabs-menu/editor.css +0 -6
  354. package/build-style/tabs-menu-item/editor-rtl.css +0 -11
  355. package/build-style/tabs-menu-item/editor.css +0 -11
  356. package/build-style/tabs-menu-item/style-rtl.css +0 -33
  357. package/build-style/tabs-menu-item/style.css +0 -33
  358. package/src/tab/slug-from-label.js +0 -26
  359. package/src/tabs-menu/index.php +0 -80
  360. package/src/tabs-menu-item/block.json +0 -59
  361. package/src/tabs-menu-item/controls.js +0 -19
  362. package/src/tabs-menu-item/edit.js +0 -150
  363. package/src/tabs-menu-item/index.php +0 -70
  364. package/src/tabs-menu-item/save.js +0 -13
  365. package/src/tabs-menu-item/style.scss +0 -40
  366. /package/src/{tabs-menu → tab-list}/save.js +0 -0
  367. /package/src/{tab → tab-panel}/init.js +0 -0
@@ -1,16 +0,0 @@
1
- // packages/block-library/src/tab/slug-from-label.js
2
- import { cleanForSlug } from "@wordpress/url";
3
- function slugFromLabel(label, tabIndex) {
4
- const htmlDocument = new window.DOMParser().parseFromString(
5
- label,
6
- "text/html"
7
- );
8
- if (htmlDocument.body?.textContent) {
9
- return cleanForSlug(htmlDocument.body.textContent);
10
- }
11
- return `tab-panel-${tabIndex}`;
12
- }
13
- export {
14
- slugFromLabel as default
15
- };
16
- //# sourceMappingURL=slug-from-label.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tab/slug-from-label.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { cleanForSlug } from '@wordpress/url';\n\n/**\n * Generates a slug from a tab's text label.\n *\n * @param {string} label Tab label RichText value.\n * @param {number} tabIndex Tab index value.\n *\n * @return {string} The generated slug with HTML stripped out.\n */\nexport default function slugFromLabel( label, tabIndex ) {\n\t// Get just the text content, filtering out any HTML tags from the RichText value.\n\tconst htmlDocument = new window.DOMParser().parseFromString(\n\t\tlabel,\n\t\t'text/html'\n\t);\n\tif ( htmlDocument.body?.textContent ) {\n\t\treturn cleanForSlug( htmlDocument.body.textContent );\n\t}\n\n\t// Fall back to using the tab index if the label is empty.\n\treturn `tab-panel-${ tabIndex }`;\n}\n"],
5
- "mappings": ";AAGA,SAAS,oBAAoB;AAUd,SAAR,cAAgC,OAAO,UAAW;AAExD,QAAM,eAAe,IAAI,OAAO,UAAU,EAAE;AAAA,IAC3C;AAAA,IACA;AAAA,EACD;AACA,MAAK,aAAa,MAAM,aAAc;AACrC,WAAO,aAAc,aAAa,KAAK,WAAY;AAAA,EACpD;AAGA,SAAO,aAAc,QAAS;AAC/B;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tabs-menu/edit.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';\n\nfunction Edit( { clientId, __unstableLayoutClassNames: layoutClassNames } ) {\n\tconst { tabsClientId } = useSelect(\n\t\t( select ) => ( {\n\t\t\ttabsClientId:\n\t\t\t\tselect( blockEditorStore ).getBlockRootClientId( clientId ),\n\t\t} ),\n\t\t[ clientId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( layoutClassNames ),\n\t\trole: 'tablist',\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/tabs-menu-item' ],\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<AddTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
5
- "mappings": ";AAGA,OAAO,UAAU;AAKjB;AAAA,EACC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,iBAAiB;AAK1B,OAAO,0BAA0B;AACjC,OAAO,6BAA6B;AAuBlC,mBACC,KADD;AArBF,SAAS,KAAM,EAAE,UAAU,4BAA4B,iBAAiB,GAAI;AAC3E,QAAM,EAAE,aAAa,IAAI;AAAA,IACxB,CAAE,YAAc;AAAA,MACf,cACC,OAAQ,gBAAiB,EAAE,qBAAsB,QAAS;AAAA,IAC5D;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,aAAa,cAAe;AAAA,IACjC,WAAW,KAAM,gBAAiB;AAAA,IAClC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,mBAAmB,oBAAqB,YAAY;AAAA,IACzD,eAAe,CAAE,qBAAsB;AAAA,IACvC,aAAa;AAAA,IACb,gBAAgB;AAAA,EACjB,CAAE;AAEF,SACC,iCACC;AAAA,wBAAC,wBAAqB,cAA8B;AAAA,IACpD,oBAAC,2BAAwB,cAA8B;AAAA,IACvD,oBAAC,SAAM,GAAG,kBAAmB;AAAA,KAC9B;AAEF;AAEA,IAAO,eAAQ;",
6
- "names": []
7
- }
@@ -1,59 +0,0 @@
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.",
8
- "version": "1.0.0",
9
- "category": "design",
10
- "textdomain": "default",
11
- "parent": [ "core/tabs-menu" ],
12
- "usesContext": [
13
- "core/tabs-list",
14
- "core/tabs-activeTabIndex",
15
- "core/tabs-editorActiveTabIndex",
16
- "core/tabs-menu-item-index",
17
- "core/tabs-menu-item-id",
18
- "core/tabs-menu-item-label"
19
- ],
20
- "supports": {
21
- "html": false,
22
- "reusable": false,
23
- "lock": false,
24
- "color": {
25
- "background": true,
26
- "text": true,
27
- "__experimentalDefaultControls": {
28
- "background": true,
29
- "text": true
30
- }
31
- },
32
- "typography": {
33
- "fontSize": true,
34
- "__experimentalFontFamily": true,
35
- "textAlign": true,
36
- "__experimentalDefaultControls": {
37
- "fontSize": true
38
- }
39
- },
40
- "spacing": {
41
- "padding": true,
42
- "__experimentalDefaultControls": {
43
- "padding": true
44
- }
45
- },
46
- "__experimentalBorder": {
47
- "radius": true,
48
- "color": true,
49
- "width": true,
50
- "style": true
51
- },
52
- "layout": {
53
- "allowEditing": false
54
- }
55
- },
56
- "editorScript": "file:./index.js",
57
- "editorStyle": "file:./editor.css",
58
- "style": "file:./style-index.css"
59
- }
@@ -1,15 +0,0 @@
1
- // packages/block-library/src/tabs-menu-item/controls.js
2
- import { BlockControls } from "@wordpress/block-editor";
3
- import AddTabToolbarControl from "../tab/add-tab-toolbar-control.mjs";
4
- import RemoveTabToolbarControl from "../tab/remove-tab-toolbar-control.mjs";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
- function Controls({ tabsClientId }) {
7
- return /* @__PURE__ */ jsxs(BlockControls, { children: [
8
- /* @__PURE__ */ jsx(AddTabToolbarControl, { tabsClientId }),
9
- /* @__PURE__ */ jsx(RemoveTabToolbarControl, { tabsClientId })
10
- ] });
11
- }
12
- export {
13
- Controls as default
14
- };
15
- //# sourceMappingURL=controls.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tabs-menu-item/controls.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { BlockControls } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';\n\nexport default function Controls( { tabsClientId } ) {\n\treturn (\n\t\t<BlockControls>\n\t\t\t<AddTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t</BlockControls>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,qBAAqB;AAK9B,OAAO,0BAA0B;AACjC,OAAO,6BAA6B;AAIlC,SACC,KADD;AAFa,SAAR,SAA2B,EAAE,aAAa,GAAI;AACpD,SACC,qBAAC,iBACA;AAAA,wBAAC,wBAAqB,cAA8B;AAAA,IACpD,oBAAC,2BAAwB,cAA8B;AAAA,KACxD;AAEF;",
6
- "names": []
7
- }
@@ -1,117 +0,0 @@
1
- // packages/block-library/src/tabs-menu-item/edit.js
2
- import clsx from "clsx";
3
- import { __ } from "@wordpress/i18n";
4
- import {
5
- useBlockProps,
6
- store as blockEditorStore,
7
- RichText
8
- } from "@wordpress/block-editor";
9
- import { useSelect, useDispatch } from "@wordpress/data";
10
- import { useMemo, useCallback } from "@wordpress/element";
11
- import Controls from "./controls.mjs";
12
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
- var EMPTY_ARRAY = [];
14
- function Edit({
15
- context,
16
- clientId,
17
- __unstableLayoutClassNames: layoutClassNames
18
- }) {
19
- const tabsList = context["core/tabs-list"] || EMPTY_ARRAY;
20
- const activeTabIndex = context["core/tabs-activeTabIndex"] ?? 0;
21
- const editorActiveTabIndex = context["core/tabs-editorActiveTabIndex"];
22
- const effectiveActiveIndex = useMemo(() => {
23
- return editorActiveTabIndex ?? activeTabIndex;
24
- }, [editorActiveTabIndex, activeTabIndex]);
25
- const { menuItemIndex, tabsClientId, selectedTabClientId } = useSelect(
26
- (select) => {
27
- const {
28
- getBlockOrder,
29
- getBlockRootClientId,
30
- getSelectedBlockClientIds,
31
- hasSelectedInnerBlock
32
- } = select(blockEditorStore);
33
- const _tabsMenuClientId = getBlockRootClientId(clientId);
34
- const _tabsClientId = _tabsMenuClientId ? getBlockRootClientId(_tabsMenuClientId) : null;
35
- const siblings = getBlockOrder(_tabsMenuClientId);
36
- const _menuItemIndex = siblings.indexOf(clientId);
37
- const selectedIds = getSelectedBlockClientIds();
38
- let _selectedTabClientId = null;
39
- for (const tab2 of tabsList) {
40
- if (selectedIds.includes(tab2.clientId) || hasSelectedInnerBlock(tab2.clientId, true)) {
41
- _selectedTabClientId = tab2.clientId;
42
- break;
43
- }
44
- }
45
- return {
46
- menuItemIndex: _menuItemIndex,
47
- tabsClientId: _tabsClientId,
48
- selectedTabClientId: _selectedTabClientId
49
- };
50
- },
51
- [clientId, tabsList]
52
- );
53
- const tab = tabsList[menuItemIndex] || {};
54
- const tabListIndex = tab.index ?? menuItemIndex;
55
- const tabId = tab.id || `tab-${menuItemIndex}`;
56
- const tabClientId = tab.clientId || "";
57
- const label = tab.label || "";
58
- const isActive = tabListIndex === effectiveActiveIndex;
59
- const isSelected = tabClientId === selectedTabClientId;
60
- const { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } = useDispatch(blockEditorStore);
61
- const handleTabClick = useCallback(
62
- (event) => {
63
- event.preventDefault();
64
- if (tabsClientId && tabListIndex !== effectiveActiveIndex) {
65
- __unstableMarkNextChangeAsNotPersistent();
66
- updateBlockAttributes(tabsClientId, {
67
- editorActiveTabIndex: tabListIndex
68
- });
69
- }
70
- },
71
- [
72
- tabsClientId,
73
- tabListIndex,
74
- effectiveActiveIndex,
75
- updateBlockAttributes,
76
- __unstableMarkNextChangeAsNotPersistent
77
- ]
78
- );
79
- const handleLabelChange = useCallback(
80
- (newLabel) => {
81
- if (tabClientId) {
82
- updateBlockAttributes(tabClientId, { label: newLabel });
83
- }
84
- },
85
- [tabClientId, updateBlockAttributes]
86
- );
87
- const blockProps = useBlockProps({
88
- className: clsx(layoutClassNames, {
89
- "is-active": isActive,
90
- "is-selected": isSelected
91
- }),
92
- "aria-controls": tabId,
93
- "aria-selected": isActive,
94
- id: `${tabId}--tab`,
95
- role: "tab",
96
- tabIndex: -1,
97
- onClick: handleTabClick
98
- });
99
- return /* @__PURE__ */ jsxs(Fragment, { children: [
100
- /* @__PURE__ */ jsx(Controls, { tabsClientId }),
101
- /* @__PURE__ */ jsx("button", { ...blockProps, type: "button", children: /* @__PURE__ */ jsx(
102
- RichText,
103
- {
104
- tagName: "span",
105
- withoutInteractiveFormatting: true,
106
- placeholder: __("Tab title"),
107
- value: label,
108
- onChange: handleLabelChange
109
- }
110
- ) })
111
- ] });
112
- }
113
- var edit_default = Edit;
114
- export {
115
- edit_default as default
116
- };
117
- //# sourceMappingURL=edit.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tabs-menu-item/edit.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Controls from './controls';\n\nconst EMPTY_ARRAY = [];\n\nfunction Edit( {\n\tcontext,\n\tclientId,\n\t__unstableLayoutClassNames: layoutClassNames,\n} ) {\n\tconst tabsList = context[ 'core/tabs-list' ] || EMPTY_ARRAY;\n\tconst activeTabIndex = context[ 'core/tabs-activeTabIndex' ] ?? 0;\n\tconst editorActiveTabIndex = context[ 'core/tabs-editorActiveTabIndex' ];\n\n\tconst effectiveActiveIndex = useMemo( () => {\n\t\treturn editorActiveTabIndex ?? activeTabIndex;\n\t}, [ editorActiveTabIndex, activeTabIndex ] );\n\n\tconst { menuItemIndex, tabsClientId, selectedTabClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _tabsMenuClientId = getBlockRootClientId( clientId );\n\t\t\tconst _tabsClientId = _tabsMenuClientId\n\t\t\t\t? getBlockRootClientId( _tabsMenuClientId )\n\t\t\t\t: null;\n\n\t\t\tconst siblings = getBlockOrder( _tabsMenuClientId );\n\t\t\tconst _menuItemIndex = siblings.indexOf( clientId );\n\n\t\t\t// Find which tab panel block is currently selected.\n\t\t\tconst selectedIds = getSelectedBlockClientIds();\n\t\t\tlet _selectedTabClientId = null;\n\t\t\tfor ( const tab of tabsList ) {\n\t\t\t\tif (\n\t\t\t\t\tselectedIds.includes( tab.clientId ) ||\n\t\t\t\t\thasSelectedInnerBlock( tab.clientId, true )\n\t\t\t\t) {\n\t\t\t\t\t_selectedTabClientId = tab.clientId;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tmenuItemIndex: _menuItemIndex,\n\t\t\t\ttabsClientId: _tabsClientId,\n\t\t\t\tselectedTabClientId: _selectedTabClientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId, tabsList ]\n\t);\n\n\tconst tab = tabsList[ menuItemIndex ] || {};\n\n\t// tabListIndex is the tab's position in tabsList, used for active-state\n\t// checks and click handling.\n\tconst tabListIndex = tab.index ?? menuItemIndex;\n\n\tconst tabId = tab.id || `tab-${ menuItemIndex }`;\n\tconst tabClientId = tab.clientId || '';\n\tconst label = tab.label || '';\n\n\tconst isActive = tabListIndex === effectiveActiveIndex;\n\tconst isSelected = tabClientId === selectedTabClientId;\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst handleTabClick = useCallback(\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\t\t\tif ( tabsClientId && tabListIndex !== effectiveActiveIndex ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\t\teditorActiveTabIndex: tabListIndex,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttabsClientId,\n\t\t\ttabListIndex,\n\t\t\teffectiveActiveIndex,\n\t\t\tupdateBlockAttributes,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t]\n\t);\n\n\tconst handleLabelChange = useCallback(\n\t\t( newLabel ) => {\n\t\t\tif ( tabClientId ) {\n\t\t\t\tupdateBlockAttributes( tabClientId, { label: newLabel } );\n\t\t\t}\n\t\t},\n\t\t[ tabClientId, updateBlockAttributes ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( layoutClassNames, {\n\t\t\t'is-active': isActive,\n\t\t\t'is-selected': isSelected,\n\t\t} ),\n\t\t'aria-controls': tabId,\n\t\t'aria-selected': isActive,\n\t\tid: `${ tabId }--tab`,\n\t\trole: 'tab',\n\t\ttabIndex: -1,\n\t\tonClick: handleTabClick,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<Controls tabsClientId={ tabsClientId } />\n\t\t\t<button { ...blockProps } type=\"button\">\n\t\t\t\t<RichText\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tplaceholder={ __( 'Tab title' ) }\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ handleLabelChange }\n\t\t\t\t/>\n\t\t\t</button>\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
5
- "mappings": "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",
6
- "names": ["tab"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tabs-menu-item/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { tabsMenuItem as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
- "mappings": ";AAGA,SAAS,gBAAgB,YAAY;AAKrC,OAAO,eAAe;AACtB,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,cAAc;AAErB,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
6
- "names": []
7
- }
@@ -1,14 +0,0 @@
1
- // packages/block-library/src/tabs-menu-item/save.js
2
- import { useBlockProps } from "@wordpress/block-editor";
3
- import { jsx } from "react/jsx-runtime";
4
- function save() {
5
- const blockProps = useBlockProps.save({
6
- type: "button",
7
- role: "tab"
8
- });
9
- return /* @__PURE__ */ jsx("button", { ...blockProps });
10
- }
11
- export {
12
- save as default
13
- };
14
- //# sourceMappingURL=save.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tabs-menu-item/save.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nexport default function save() {\n\tconst blockProps = useBlockProps.save( {\n\t\ttype: 'button',\n\t\trole: 'tab',\n\t} );\n\n\treturn <button { ...blockProps } />;\n}\n"],
5
- "mappings": ";AAGA,SAAS,qBAAqB;AAQtB;AANO,SAAR,OAAwB;AAC9B,QAAM,aAAa,cAAc,KAAM;AAAA,IACtC,MAAM;AAAA,IACN,MAAM;AAAA,EACP,CAAE;AAEF,SAAO,oBAAC,YAAS,GAAG,YAAa;AAClC;",
6
- "names": []
7
- }
@@ -1,6 +0,0 @@
1
- .wp-block-tabs-menu > .block-editor-block-list__layout {
2
- display: contents;
3
- }
4
- .wp-block-tabs-menu .block-editor-block-list__block:has(> .wp-block-tabs-menu-item) {
5
- display: contents;
6
- }
@@ -1,6 +0,0 @@
1
- .wp-block-tabs-menu > .block-editor-block-list__layout {
2
- display: contents;
3
- }
4
- .wp-block-tabs-menu .block-editor-block-list__block:has(> .wp-block-tabs-menu-item) {
5
- display: contents;
6
- }
@@ -1,11 +0,0 @@
1
- .wp-block-tabs-menu-item.is-selected {
2
- outline-offset: 2px;
3
- }
4
-
5
- .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item) {
6
- flex-basis: inherit !important;
7
- flex-grow: inherit !important;
8
- }
9
- .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item) .wp-block-tabs-menu-item {
10
- flex-basis: 100% !important;
11
- }
@@ -1,11 +0,0 @@
1
- .wp-block-tabs-menu-item.is-selected {
2
- outline-offset: 2px;
3
- }
4
-
5
- .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item) {
6
- flex-basis: inherit !important;
7
- flex-grow: inherit !important;
8
- }
9
- .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item) .wp-block-tabs-menu-item {
10
- flex-basis: 100% !important;
11
- }
@@ -1,33 +0,0 @@
1
- .wp-block-tabs-menu-item {
2
- box-sizing: border-box;
3
- color: inherit;
4
- display: block;
5
- width: max-content;
6
- text-decoration: none;
7
- cursor: pointer;
8
- flex-basis: inherit !important;
9
- flex-grow: inherit !important;
10
- position: relative;
11
- border: none;
12
- background: none;
13
- appearance: none;
14
- -webkit-appearance: none;
15
- margin: 0;
16
- padding: var(--wp--preset--spacing--20, 0.5em) var(--wp--preset--spacing--30, 1em);
17
- font-size: inherit;
18
- font-family: inherit;
19
- font-weight: inherit;
20
- line-height: inherit;
21
- letter-spacing: inherit;
22
- text-transform: inherit;
23
- text-align: inherit;
24
- }
25
- .wp-block-tabs-menu-item[aria-selected=true]::before, .wp-block-tabs-menu-item.is-active::before {
26
- content: "";
27
- position: absolute;
28
- border-bottom: 2px solid currentColor;
29
- pointer-events: none;
30
- right: 0;
31
- width: 100%;
32
- bottom: 0;
33
- }
@@ -1,33 +0,0 @@
1
- .wp-block-tabs-menu-item {
2
- box-sizing: border-box;
3
- color: inherit;
4
- display: block;
5
- width: max-content;
6
- text-decoration: none;
7
- cursor: pointer;
8
- flex-basis: inherit !important;
9
- flex-grow: inherit !important;
10
- position: relative;
11
- border: none;
12
- background: none;
13
- appearance: none;
14
- -webkit-appearance: none;
15
- margin: 0;
16
- padding: var(--wp--preset--spacing--20, 0.5em) var(--wp--preset--spacing--30, 1em);
17
- font-size: inherit;
18
- font-family: inherit;
19
- font-weight: inherit;
20
- line-height: inherit;
21
- letter-spacing: inherit;
22
- text-transform: inherit;
23
- text-align: inherit;
24
- }
25
- .wp-block-tabs-menu-item[aria-selected=true]::before, .wp-block-tabs-menu-item.is-active::before {
26
- content: "";
27
- position: absolute;
28
- border-bottom: 2px solid currentColor;
29
- pointer-events: none;
30
- left: 0;
31
- width: 100%;
32
- bottom: 0;
33
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { cleanForSlug } from '@wordpress/url';
5
-
6
- /**
7
- * Generates a slug from a tab's text label.
8
- *
9
- * @param {string} label Tab label RichText value.
10
- * @param {number} tabIndex Tab index value.
11
- *
12
- * @return {string} The generated slug with HTML stripped out.
13
- */
14
- export default function slugFromLabel( label, tabIndex ) {
15
- // Get just the text content, filtering out any HTML tags from the RichText value.
16
- const htmlDocument = new window.DOMParser().parseFromString(
17
- label,
18
- 'text/html'
19
- );
20
- if ( htmlDocument.body?.textContent ) {
21
- return cleanForSlug( htmlDocument.body.textContent );
22
- }
23
-
24
- // Fall back to using the tab index if the label is empty.
25
- return `tab-panel-${ tabIndex }`;
26
- }
@@ -1,80 +0,0 @@
1
- <?php
2
- /**
3
- * Tabs Menu Block
4
- *
5
- * @package WordPress
6
- */
7
-
8
- /**
9
- * Render callback for core/tabs-menu.
10
- *
11
- * Re-renders each tabs-menu-item inner block with per-item context (index, id,
12
- * label) injected from the tabs-list, so the tabs-menu-item render callback
13
- * can add the correct IAPI directives for each button.
14
- *
15
- * @since 7.0.0
16
- *
17
- * @param array $attributes Block attributes.
18
- * @param string $content Block content (rendered inner blocks from save.js).
19
- * @param \WP_Block $block WP_Block instance.
20
- *
21
- * @return string Updated HTML.
22
- */
23
- function block_core_tabs_menu_render_callback( array $attributes, string $content, \WP_Block $block ): string {
24
- $tabs_list = $block->context['core/tabs-list'] ?? array();
25
-
26
- if ( empty( $tabs_list ) ) {
27
- return $content;
28
- }
29
-
30
- // Re-render each tabs-menu-item with per-item context (index, id, label).
31
- // Match by position so items align with their corresponding tabs.
32
- $buttons_html = '';
33
- $menu_item_position = 0;
34
-
35
- foreach ( $block->parsed_block['innerBlocks'] ?? array() as $parsed_menu_item ) {
36
- if ( 'core/tabs-menu-item' !== ( $parsed_menu_item['blockName'] ?? '' ) ) {
37
- continue;
38
- }
39
-
40
- $tab = $tabs_list[ $menu_item_position ] ?? null;
41
- $tab_index = $menu_item_position;
42
- ++$menu_item_position;
43
-
44
- // Skip menu items with no matching tab.
45
- if ( null === $tab ) {
46
- continue;
47
- }
48
-
49
- $item_context = array_merge(
50
- $block->context,
51
- array(
52
- 'core/tabs-menu-item-index' => $tab_index,
53
- 'core/tabs-menu-item-id' => $tab['id'] ?? '',
54
- 'core/tabs-menu-item-label' => $tab['label'] ?? '',
55
- )
56
- );
57
-
58
- $menu_item_block = new WP_Block( $parsed_menu_item, $item_context );
59
- $buttons_html .= $menu_item_block->render();
60
- }
61
-
62
- // Rebuild the wrapper using get_block_wrapper_attributes().
63
- $wrapper_attributes = get_block_wrapper_attributes( array( 'role' => 'tablist' ) );
64
- return sprintf( '<div %s>%s</div>', $wrapper_attributes, $buttons_html );
65
- }
66
-
67
- /**
68
- * Registers the `core/tabs-menu` block on the server.
69
- *
70
- * @since 7.0.0
71
- */
72
- function register_block_core_tabs_menu() {
73
- register_block_type_from_metadata(
74
- __DIR__ . '/tabs-menu',
75
- array(
76
- 'render_callback' => 'block_core_tabs_menu_render_callback',
77
- )
78
- );
79
- }
80
- add_action( 'init', 'register_block_core_tabs_menu' );
@@ -1,59 +0,0 @@
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.",
8
- "version": "1.0.0",
9
- "category": "design",
10
- "textdomain": "default",
11
- "parent": [ "core/tabs-menu" ],
12
- "usesContext": [
13
- "core/tabs-list",
14
- "core/tabs-activeTabIndex",
15
- "core/tabs-editorActiveTabIndex",
16
- "core/tabs-menu-item-index",
17
- "core/tabs-menu-item-id",
18
- "core/tabs-menu-item-label"
19
- ],
20
- "supports": {
21
- "html": false,
22
- "reusable": false,
23
- "lock": false,
24
- "color": {
25
- "background": true,
26
- "text": true,
27
- "__experimentalDefaultControls": {
28
- "background": true,
29
- "text": true
30
- }
31
- },
32
- "typography": {
33
- "fontSize": true,
34
- "__experimentalFontFamily": true,
35
- "textAlign": true,
36
- "__experimentalDefaultControls": {
37
- "fontSize": true
38
- }
39
- },
40
- "spacing": {
41
- "padding": true,
42
- "__experimentalDefaultControls": {
43
- "padding": true
44
- }
45
- },
46
- "__experimentalBorder": {
47
- "radius": true,
48
- "color": true,
49
- "width": true,
50
- "style": true
51
- },
52
- "layout": {
53
- "allowEditing": false
54
- }
55
- },
56
- "editorScript": "file:./index.js",
57
- "editorStyle": "file:./editor.css",
58
- "style": "file:./style-index.css"
59
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { BlockControls } from '@wordpress/block-editor';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import AddTabToolbarControl from '../tab/add-tab-toolbar-control';
10
- import RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';
11
-
12
- export default function Controls( { tabsClientId } ) {
13
- return (
14
- <BlockControls>
15
- <AddTabToolbarControl tabsClientId={ tabsClientId } />
16
- <RemoveTabToolbarControl tabsClientId={ tabsClientId } />
17
- </BlockControls>
18
- );
19
- }