@wordpress/block-library 7.17.0 → 7.19.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 (374) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/audio/edit.js +44 -4
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/button/deprecated.js +16 -2
  5. package/build/button/deprecated.js.map +1 -1
  6. package/build/button/edit.js +14 -8
  7. package/build/button/edit.js.map +1 -1
  8. package/build/button/index.js +4 -1
  9. package/build/button/index.js.map +1 -1
  10. package/build/button/save.js +2 -0
  11. package/build/button/save.js.map +1 -1
  12. package/build/buttons/edit.native.js +1 -1
  13. package/build/buttons/edit.native.js.map +1 -1
  14. package/build/columns/transforms.js +5 -0
  15. package/build/columns/transforms.js.map +1 -1
  16. package/build/comment-template/index.js +6 -2
  17. package/build/comment-template/index.js.map +1 -1
  18. package/build/cover/edit/index.js +3 -1
  19. package/build/cover/edit/index.js.map +1 -1
  20. package/build/cover/edit/inspector-controls.js +3 -7
  21. package/build/cover/edit/inspector-controls.js.map +1 -1
  22. package/build/embed/deprecated.js +43 -4
  23. package/build/embed/deprecated.js.map +1 -1
  24. package/build/file/deprecated.js +108 -4
  25. package/build/file/deprecated.js.map +1 -1
  26. package/build/file/transforms.js +3 -9
  27. package/build/file/transforms.js.map +1 -1
  28. package/build/gallery/deprecated.js +148 -23
  29. package/build/gallery/deprecated.js.map +1 -1
  30. package/build/gallery/gallery.js +3 -2
  31. package/build/gallery/gallery.js.map +1 -1
  32. package/build/gallery/use-image-sizes.js +2 -1
  33. package/build/gallery/use-image-sizes.js.map +1 -1
  34. package/build/gallery/v1/edit.js +6 -3
  35. package/build/gallery/v1/edit.js.map +1 -1
  36. package/build/group/edit.js +105 -48
  37. package/build/group/edit.js.map +1 -1
  38. package/build/group/index.js +3 -0
  39. package/build/group/index.js.map +1 -1
  40. package/build/group/placeholder.js +168 -0
  41. package/build/group/placeholder.js.map +1 -0
  42. package/build/group/variations.js +3 -3
  43. package/build/group/variations.js.map +1 -1
  44. package/build/image/edit.native.js +1 -1
  45. package/build/image/edit.native.js.map +1 -1
  46. package/build/image/image.js +6 -9
  47. package/build/image/image.js.map +1 -1
  48. package/build/latest-comments/edit.js +2 -1
  49. package/build/latest-comments/edit.js.map +1 -1
  50. package/build/latest-comments/index.js +5 -1
  51. package/build/latest-comments/index.js.map +1 -1
  52. package/build/latest-posts/deprecated.js +13 -0
  53. package/build/latest-posts/deprecated.js.map +1 -1
  54. package/build/latest-posts/edit.js +1 -1
  55. package/build/latest-posts/edit.js.map +1 -1
  56. package/build/latest-posts/index.js +13 -0
  57. package/build/latest-posts/index.js.map +1 -1
  58. package/build/list/utils.js +4 -8
  59. package/build/list/utils.js.map +1 -1
  60. package/build/list-item/edit.js +2 -1
  61. package/build/list-item/edit.js.map +1 -1
  62. package/build/list-item/hooks/use-outdent-list-item.js +5 -7
  63. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  64. package/build/navigation/edit/index.js +94 -103
  65. package/build/navigation/edit/index.js.map +1 -1
  66. package/build/navigation/edit/manage-menus-button.js +36 -0
  67. package/build/navigation/edit/manage-menus-button.js.map +1 -0
  68. package/build/navigation/edit/navigation-menu-selector.js +12 -5
  69. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  70. package/build/navigation/edit/responsive-wrapper.js +2 -6
  71. package/build/navigation/edit/responsive-wrapper.js.map +1 -1
  72. package/build/navigation/edit/unsaved-inner-blocks.js +5 -17
  73. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  74. package/build/navigation-link/edit.js +14 -3
  75. package/build/navigation-link/edit.js.map +1 -1
  76. package/build/navigation-submenu/edit.js +4 -4
  77. package/build/navigation-submenu/edit.js.map +1 -1
  78. package/build/page-list/edit.js +29 -10
  79. package/build/page-list/edit.js.map +1 -1
  80. package/build/post-author/edit.js +35 -20
  81. package/build/post-author/edit.js.map +1 -1
  82. package/build/post-comments-count/index.js +4 -0
  83. package/build/post-comments-count/index.js.map +1 -1
  84. package/build/post-comments-form/index.js +4 -0
  85. package/build/post-comments-form/index.js.map +1 -1
  86. package/build/post-comments-link/index.js +4 -0
  87. package/build/post-comments-link/index.js.map +1 -1
  88. package/build/post-content/edit.js +14 -6
  89. package/build/post-content/edit.js.map +1 -1
  90. package/build/post-content/index.js +3 -0
  91. package/build/post-content/index.js.map +1 -1
  92. package/build/pullquote/deprecated.js +6 -6
  93. package/build/pullquote/deprecated.js.map +1 -1
  94. package/build/search/edit.js +1 -3
  95. package/build/search/edit.js.map +1 -1
  96. package/build/site-logo/edit.js +2 -2
  97. package/build/site-logo/edit.js.map +1 -1
  98. package/build/site-tagline/edit.js +21 -9
  99. package/build/site-tagline/edit.js.map +1 -1
  100. package/build/site-title/edit/index.js +20 -8
  101. package/build/site-title/edit/index.js.map +1 -1
  102. package/build/social-link/edit.js +11 -2
  103. package/build/social-link/edit.js.map +1 -1
  104. package/build/social-link/index.js +3 -0
  105. package/build/social-link/index.js.map +1 -1
  106. package/build/spacer/controls.js +3 -7
  107. package/build/spacer/controls.js.map +1 -1
  108. package/build/table/deprecated.js +282 -27
  109. package/build/table/deprecated.js.map +1 -1
  110. package/build/table/state.js +1 -1
  111. package/build/table/state.js.map +1 -1
  112. package/build/template-part/variations.js +5 -0
  113. package/build/template-part/variations.js.map +1 -1
  114. package/build/utils/clean-empty-object.js +5 -4
  115. package/build/utils/clean-empty-object.js.map +1 -1
  116. package/build/video/deprecated.js +159 -0
  117. package/build/video/deprecated.js.map +1 -0
  118. package/build/video/edit.js +41 -5
  119. package/build/video/edit.js.map +1 -1
  120. package/build/video/index.js +3 -0
  121. package/build/video/index.js.map +1 -1
  122. package/build/video/tracks-editor.js +3 -28
  123. package/build/video/tracks-editor.js.map +1 -1
  124. package/build-module/audio/edit.js +46 -7
  125. package/build-module/audio/edit.js.map +1 -1
  126. package/build-module/button/deprecated.js +16 -2
  127. package/build-module/button/deprecated.js.map +1 -1
  128. package/build-module/button/edit.js +16 -10
  129. package/build-module/button/edit.js.map +1 -1
  130. package/build-module/button/index.js +4 -1
  131. package/build-module/button/index.js.map +1 -1
  132. package/build-module/button/save.js +2 -0
  133. package/build-module/button/save.js.map +1 -1
  134. package/build-module/buttons/edit.native.js +1 -1
  135. package/build-module/buttons/edit.native.js.map +1 -1
  136. package/build-module/columns/transforms.js +5 -0
  137. package/build-module/columns/transforms.js.map +1 -1
  138. package/build-module/comment-template/index.js +6 -2
  139. package/build-module/comment-template/index.js.map +1 -1
  140. package/build-module/cover/edit/index.js +3 -1
  141. package/build-module/cover/edit/index.js.map +1 -1
  142. package/build-module/cover/edit/inspector-controls.js +4 -8
  143. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  144. package/build-module/embed/deprecated.js +44 -5
  145. package/build-module/embed/deprecated.js.map +1 -1
  146. package/build-module/file/deprecated.js +108 -4
  147. package/build-module/file/deprecated.js.map +1 -1
  148. package/build-module/file/transforms.js +3 -8
  149. package/build-module/file/transforms.js.map +1 -1
  150. package/build-module/gallery/deprecated.js +147 -25
  151. package/build-module/gallery/deprecated.js.map +1 -1
  152. package/build-module/gallery/gallery.js +3 -2
  153. package/build-module/gallery/gallery.js.map +1 -1
  154. package/build-module/gallery/use-image-sizes.js +3 -2
  155. package/build-module/gallery/use-image-sizes.js.map +1 -1
  156. package/build-module/gallery/v1/edit.js +7 -4
  157. package/build-module/gallery/v1/edit.js.map +1 -1
  158. package/build-module/group/edit.js +101 -48
  159. package/build-module/group/edit.js.map +1 -1
  160. package/build-module/group/index.js +3 -0
  161. package/build-module/group/index.js.map +1 -1
  162. package/build-module/group/placeholder.js +154 -0
  163. package/build-module/group/placeholder.js.map +1 -0
  164. package/build-module/group/variations.js +3 -3
  165. package/build-module/group/variations.js.map +1 -1
  166. package/build-module/image/edit.native.js +1 -1
  167. package/build-module/image/edit.native.js.map +1 -1
  168. package/build-module/image/image.js +8 -11
  169. package/build-module/image/image.js.map +1 -1
  170. package/build-module/latest-comments/edit.js +2 -1
  171. package/build-module/latest-comments/edit.js.map +1 -1
  172. package/build-module/latest-comments/index.js +5 -1
  173. package/build-module/latest-comments/index.js.map +1 -1
  174. package/build-module/latest-posts/deprecated.js +13 -0
  175. package/build-module/latest-posts/deprecated.js.map +1 -1
  176. package/build-module/latest-posts/edit.js +2 -2
  177. package/build-module/latest-posts/edit.js.map +1 -1
  178. package/build-module/latest-posts/index.js +13 -0
  179. package/build-module/latest-posts/index.js.map +1 -1
  180. package/build-module/list/utils.js +5 -9
  181. package/build-module/list/utils.js.map +1 -1
  182. package/build-module/list-item/edit.js +2 -1
  183. package/build-module/list-item/edit.js.map +1 -1
  184. package/build-module/list-item/hooks/use-outdent-list-item.js +5 -6
  185. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  186. package/build-module/navigation/edit/index.js +96 -105
  187. package/build-module/navigation/edit/index.js.map +1 -1
  188. package/build-module/navigation/edit/manage-menus-button.js +26 -0
  189. package/build-module/navigation/edit/manage-menus-button.js.map +1 -0
  190. package/build-module/navigation/edit/navigation-menu-selector.js +13 -6
  191. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  192. package/build-module/navigation/edit/responsive-wrapper.js +2 -6
  193. package/build-module/navigation/edit/responsive-wrapper.js.map +1 -1
  194. package/build-module/navigation/edit/unsaved-inner-blocks.js +7 -18
  195. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  196. package/build-module/navigation-link/edit.js +14 -4
  197. package/build-module/navigation-link/edit.js.map +1 -1
  198. package/build-module/navigation-submenu/edit.js +4 -4
  199. package/build-module/navigation-submenu/edit.js.map +1 -1
  200. package/build-module/page-list/edit.js +29 -10
  201. package/build-module/page-list/edit.js.map +1 -1
  202. package/build-module/post-author/edit.js +35 -21
  203. package/build-module/post-author/edit.js.map +1 -1
  204. package/build-module/post-comments-count/index.js +4 -0
  205. package/build-module/post-comments-count/index.js.map +1 -1
  206. package/build-module/post-comments-form/index.js +4 -0
  207. package/build-module/post-comments-form/index.js.map +1 -1
  208. package/build-module/post-comments-link/index.js +4 -0
  209. package/build-module/post-comments-link/index.js.map +1 -1
  210. package/build-module/post-content/edit.js +14 -6
  211. package/build-module/post-content/edit.js.map +1 -1
  212. package/build-module/post-content/index.js +3 -0
  213. package/build-module/post-content/index.js.map +1 -1
  214. package/build-module/pullquote/deprecated.js +7 -7
  215. package/build-module/pullquote/deprecated.js.map +1 -1
  216. package/build-module/search/edit.js +1 -3
  217. package/build-module/search/edit.js.map +1 -1
  218. package/build-module/site-logo/edit.js +3 -3
  219. package/build-module/site-logo/edit.js.map +1 -1
  220. package/build-module/site-tagline/edit.js +23 -11
  221. package/build-module/site-tagline/edit.js.map +1 -1
  222. package/build-module/site-title/edit/index.js +22 -10
  223. package/build-module/site-title/edit/index.js.map +1 -1
  224. package/build-module/social-link/edit.js +11 -2
  225. package/build-module/social-link/edit.js.map +1 -1
  226. package/build-module/social-link/index.js +3 -0
  227. package/build-module/social-link/index.js.map +1 -1
  228. package/build-module/spacer/controls.js +4 -8
  229. package/build-module/spacer/controls.js.map +1 -1
  230. package/build-module/table/deprecated.js +282 -27
  231. package/build-module/table/deprecated.js.map +1 -1
  232. package/build-module/table/state.js +1 -1
  233. package/build-module/table/state.js.map +1 -1
  234. package/build-module/template-part/variations.js +5 -0
  235. package/build-module/template-part/variations.js.map +1 -1
  236. package/build-module/utils/clean-empty-object.js +5 -5
  237. package/build-module/utils/clean-empty-object.js.map +1 -1
  238. package/build-module/video/deprecated.js +147 -0
  239. package/build-module/video/deprecated.js.map +1 -0
  240. package/build-module/video/edit.js +45 -9
  241. package/build-module/video/edit.js.map +1 -1
  242. package/build-module/video/index.js +2 -0
  243. package/build-module/video/index.js.map +1 -1
  244. package/build-module/video/tracks-editor.js +4 -29
  245. package/build-module/video/tracks-editor.js.map +1 -1
  246. package/build-style/button/style-rtl.css +1 -0
  247. package/build-style/button/style.css +1 -0
  248. package/build-style/comment-template/style-rtl.css +1 -0
  249. package/build-style/comment-template/style.css +1 -0
  250. package/build-style/editor-rtl.css +80 -5
  251. package/build-style/editor.css +80 -5
  252. package/build-style/group/editor-rtl.css +44 -0
  253. package/build-style/group/editor.css +44 -0
  254. package/build-style/latest-comments/style-rtl.css +1 -0
  255. package/build-style/latest-comments/style.css +1 -0
  256. package/build-style/latest-posts/style-rtl.css +3 -0
  257. package/build-style/latest-posts/style.css +3 -0
  258. package/build-style/navigation/editor-rtl.css +27 -4
  259. package/build-style/navigation/editor.css +27 -4
  260. package/build-style/navigation/style-rtl.css +13 -1
  261. package/build-style/navigation/style.css +13 -1
  262. package/build-style/navigation-link/editor-rtl.css +8 -1
  263. package/build-style/navigation-link/editor.css +8 -1
  264. package/build-style/post-comments-form/style-rtl.css +3 -0
  265. package/build-style/post-comments-form/style.css +3 -0
  266. package/build-style/query/editor-rtl.css +1 -1
  267. package/build-style/query/editor.css +1 -1
  268. package/build-style/query-pagination/style-rtl.css +1 -1
  269. package/build-style/query-pagination/style.css +1 -1
  270. package/build-style/style-rtl.css +28 -2
  271. package/build-style/style.css +28 -2
  272. package/build-style/table/editor-rtl.css +1 -0
  273. package/build-style/table/editor.css +1 -0
  274. package/build-style/table/style-rtl.css +5 -0
  275. package/build-style/table/style.css +5 -0
  276. package/build-style/table/theme-rtl.css +1 -3
  277. package/build-style/table/theme.css +1 -3
  278. package/build-style/theme-rtl.css +1 -3
  279. package/build-style/theme.css +1 -3
  280. package/package.json +29 -28
  281. package/src/audio/edit.js +79 -24
  282. package/src/avatar/index.php +1 -1
  283. package/src/block/test/edit.native.js +8 -8
  284. package/src/button/block.json +4 -1
  285. package/src/button/deprecated.js +18 -2
  286. package/src/button/edit.js +12 -10
  287. package/src/button/save.js +12 -2
  288. package/src/button/style.scss +2 -0
  289. package/src/buttons/edit.native.js +1 -1
  290. package/src/buttons/test/edit.native.js +19 -19
  291. package/src/columns/test/edit.native.js +32 -32
  292. package/src/columns/transforms.js +8 -0
  293. package/src/comment-template/block.json +6 -2
  294. package/src/comment-template/style.scss +2 -0
  295. package/src/cover/edit/index.js +3 -1
  296. package/src/cover/edit/inspector-controls.js +11 -13
  297. package/src/cover/test/edit.native.js +26 -26
  298. package/src/embed/deprecated.js +53 -26
  299. package/src/embed/test/index.native.js +43 -43
  300. package/src/file/deprecated.js +130 -2
  301. package/src/file/transforms.js +3 -8
  302. package/src/gallery/deprecated.js +129 -4
  303. package/src/gallery/gallery.js +2 -0
  304. package/src/gallery/index.php +19 -10
  305. package/src/gallery/test/index.native.js +11 -11
  306. package/src/gallery/use-image-sizes.js +3 -2
  307. package/src/gallery/v1/edit.js +21 -25
  308. package/src/group/block.json +3 -0
  309. package/src/group/edit.js +105 -46
  310. package/src/group/editor.scss +48 -0
  311. package/src/group/placeholder.js +187 -0
  312. package/src/group/test/edit.native.js +3 -3
  313. package/src/group/test/placeholder.js +78 -0
  314. package/src/group/variations.js +3 -3
  315. package/src/image/edit.native.js +1 -1
  316. package/src/image/image.js +22 -10
  317. package/src/image/test/edit.native.js +17 -17
  318. package/src/latest-comments/block.json +5 -1
  319. package/src/latest-comments/edit.js +1 -0
  320. package/src/latest-comments/style.scss +3 -0
  321. package/src/latest-posts/block.json +13 -0
  322. package/src/latest-posts/edit.js +2 -2
  323. package/src/latest-posts/style.scss +3 -0
  324. package/src/list/test/edit.native.js +36 -36
  325. package/src/list/utils.js +3 -11
  326. package/src/list-item/edit.js +1 -0
  327. package/src/list-item/hooks/use-outdent-list-item.js +3 -6
  328. package/src/missing/test/edit-integration.native.js +5 -5
  329. package/src/navigation/edit/index.js +186 -161
  330. package/src/navigation/edit/manage-menus-button.js +21 -0
  331. package/src/navigation/edit/navigation-menu-selector.js +20 -5
  332. package/src/navigation/edit/responsive-wrapper.js +2 -10
  333. package/src/navigation/edit/unsaved-inner-blocks.js +5 -22
  334. package/src/navigation/editor.scss +29 -4
  335. package/src/navigation/style.scss +19 -1
  336. package/src/navigation-link/edit.js +13 -4
  337. package/src/navigation-link/editor.scss +8 -0
  338. package/src/navigation-submenu/edit.js +7 -5
  339. package/src/page-list/edit.js +36 -22
  340. package/src/post-author/edit.js +44 -20
  341. package/src/post-comments-count/block.json +4 -0
  342. package/src/post-comments-form/block.json +4 -0
  343. package/src/post-comments-form/style.scss +3 -0
  344. package/src/post-comments-link/block.json +4 -0
  345. package/src/post-content/block.json +3 -0
  346. package/src/post-content/edit.js +8 -4
  347. package/src/pullquote/deprecated.js +7 -7
  348. package/src/query/editor.scss +1 -1
  349. package/src/query-pagination/style.scss +1 -1
  350. package/src/read-more/index.php +9 -2
  351. package/src/search/edit.js +1 -1
  352. package/src/shortcode/test/edit.native.js +5 -5
  353. package/src/site-logo/edit.js +3 -3
  354. package/src/site-tagline/edit.js +25 -18
  355. package/src/site-title/edit/index.js +26 -12
  356. package/src/social-link/block.json +3 -0
  357. package/src/social-link/edit.js +8 -1
  358. package/src/social-link/index.php +11 -7
  359. package/src/social-link/test/index.native.js +10 -10
  360. package/src/social-links/test/edit.native.js +4 -4
  361. package/src/spacer/controls.js +10 -12
  362. package/src/spacer/test/index.native.js +17 -17
  363. package/src/table/deprecated.js +587 -348
  364. package/src/table/editor.scss +1 -0
  365. package/src/table/state.js +1 -1
  366. package/src/table/style.scss +7 -0
  367. package/src/table/theme.scss +1 -3
  368. package/src/template-part/index.php +5 -0
  369. package/src/template-part/variations.js +4 -0
  370. package/src/utils/clean-empty-object.js +5 -6
  371. package/src/video/deprecated.js +57 -0
  372. package/src/video/edit.js +71 -23
  373. package/src/video/index.js +2 -0
  374. package/src/video/tracks-editor.js +12 -28
@@ -147,17 +147,17 @@ const insertEmbedBlock = async ( blockTitle = 'Embed' ) => {
147
147
  const editor = await initializeEditor( {
148
148
  initialHtml: '',
149
149
  } );
150
- const { getByA11yLabel, getByText } = editor;
150
+ const { getByLabelText, getByText } = editor;
151
151
 
152
152
  // Open inserter menu.
153
- fireEvent.press( await waitFor( () => getByA11yLabel( 'Add block' ) ) );
153
+ fireEvent.press( await waitFor( () => getByLabelText( 'Add block' ) ) );
154
154
 
155
155
  // Insert embed block.
156
156
  fireEvent.press( await waitFor( () => getByText( blockTitle ) ) );
157
157
 
158
158
  // Return the embed block.
159
159
  const block = await waitFor( () =>
160
- getByA11yLabel( /Embed Block\. Row 1/ )
160
+ getByLabelText( /Embed Block\. Row 1/ )
161
161
  );
162
162
 
163
163
  return { ...editor, block };
@@ -165,10 +165,10 @@ const insertEmbedBlock = async ( blockTitle = 'Embed' ) => {
165
165
 
166
166
  const initializeWithEmbedBlock = async ( initialHtml, selectBlock = true ) => {
167
167
  const editor = await initializeEditor( { initialHtml } );
168
- const { getByA11yLabel } = editor;
168
+ const { getByLabelText } = editor;
169
169
 
170
170
  const block = await waitFor( () =>
171
- getByA11yLabel( /Embed Block\. Row 1/ )
171
+ getByLabelText( /Embed Block\. Row 1/ )
172
172
  );
173
173
 
174
174
  if ( selectBlock ) {
@@ -270,7 +270,7 @@ describe( 'Embed block', () => {
270
270
  // Get Twitter link field.
271
271
  const twitterLinkField = within(
272
272
  blockSettingsModal
273
- ).getByA11yLabel( `Twitter link, ${ expectedURL }` );
273
+ ).getByLabelText( `Twitter link, ${ expectedURL }` );
274
274
 
275
275
  expect( twitterLinkField ).toBeDefined();
276
276
  expect( getEditorHtml() ).toMatchSnapshot();
@@ -303,7 +303,7 @@ describe( 'Embed block', () => {
303
303
  // Get Twitter link field.
304
304
  const twitterLinkField = within(
305
305
  blockSettingsModal
306
- ).getByA11yLabel( `Twitter link, ${ clipboardURL }` );
306
+ ).getByLabelText( `Twitter link, ${ clipboardURL }` );
307
307
 
308
308
  expect( autopastedLinkField ).toBeDefined();
309
309
  expect( twitterLinkField ).toBeDefined();
@@ -361,7 +361,7 @@ describe( 'Embed block', () => {
361
361
  // Get Twitter link field.
362
362
  const twitterLinkField = within(
363
363
  blockSettingsModal
364
- ).getByA11yLabel( `Twitter link, ${ expectedURL }` );
364
+ ).getByLabelText( `Twitter link, ${ expectedURL }` );
365
365
 
366
366
  expect( twitterLinkField ).toBeDefined();
367
367
  expect( getEditorHtml() ).toMatchSnapshot();
@@ -397,7 +397,7 @@ describe( 'Embed block', () => {
397
397
  // Get Twitter link field.
398
398
  const twitterLinkField = within(
399
399
  blockSettingsModal
400
- ).getByA11yLabel( `Twitter link, ${ clipboardURL }` );
400
+ ).getByLabelText( `Twitter link, ${ clipboardURL }` );
401
401
 
402
402
  expect( embedLink ).toBeDefined();
403
403
  expect( twitterLinkField ).toBeDefined();
@@ -409,12 +409,12 @@ describe( 'Embed block', () => {
409
409
 
410
410
  describe( 'edit URL', () => {
411
411
  it( 'keeps the previous URL if no URL is set', async () => {
412
- const { getByA11yLabel, getByTestId } =
412
+ const { getByLabelText, getByTestId } =
413
413
  await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
414
414
 
415
415
  // Open Block Settings.
416
416
  fireEvent.press(
417
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
417
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
418
418
  );
419
419
 
420
420
  // Wait for Block Settings to be visible.
@@ -432,12 +432,12 @@ describe( 'Embed block', () => {
432
432
  const initialURL = 'https://twitter.com/notnownikki';
433
433
  const expectedURL = 'https://www.youtube.com/watch?v=lXMskKTw3Bc';
434
434
 
435
- const { getByA11yLabel, getByDisplayValue, getByTestId } =
435
+ const { getByLabelText, getByDisplayValue, getByTestId } =
436
436
  await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
437
437
 
438
438
  // Open Block Settings.
439
439
  fireEvent.press(
440
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
440
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
441
441
  );
442
442
 
443
443
  // Wait for Block Settings to be visible.
@@ -446,7 +446,7 @@ describe( 'Embed block', () => {
446
446
 
447
447
  // Start editing link.
448
448
  fireEvent.press(
449
- within( blockSettingsModal ).getByA11yLabel(
449
+ within( blockSettingsModal ).getByLabelText(
450
450
  `Twitter link, ${ initialURL }`
451
451
  )
452
452
  );
@@ -462,7 +462,7 @@ describe( 'Embed block', () => {
462
462
 
463
463
  // Get YouTube link field.
464
464
  const youtubeLinkField = await waitFor( () =>
465
- within( blockSettingsModal ).getByA11yLabel(
465
+ within( blockSettingsModal ).getByLabelText(
466
466
  `YouTube link, ${ expectedURL }`
467
467
  )
468
468
  );
@@ -476,7 +476,7 @@ describe( 'Embed block', () => {
476
476
  const invalidURL = 'http://';
477
477
 
478
478
  const {
479
- getByA11yLabel,
479
+ getByLabelText,
480
480
  getByDisplayValue,
481
481
  getByTestId,
482
482
  getByText,
@@ -484,7 +484,7 @@ describe( 'Embed block', () => {
484
484
 
485
485
  // Open Block Settings.
486
486
  fireEvent.press(
487
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
487
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
488
488
  );
489
489
 
490
490
  // Wait for Block Settings to be visible.
@@ -493,7 +493,7 @@ describe( 'Embed block', () => {
493
493
 
494
494
  // Start editing link.
495
495
  fireEvent.press(
496
- within( blockSettingsModal ).getByA11yLabel(
496
+ within( blockSettingsModal ).getByLabelText(
497
497
  `Twitter link, ${ previousURL }`
498
498
  )
499
499
  );
@@ -519,7 +519,7 @@ describe( 'Embed block', () => {
519
519
  const previousURL = 'https://twitter.com/notnownikki';
520
520
 
521
521
  const {
522
- getByA11yLabel,
522
+ getByLabelText,
523
523
  getByDisplayValue,
524
524
  getByTestId,
525
525
  getByPlaceholderText,
@@ -527,7 +527,7 @@ describe( 'Embed block', () => {
527
527
 
528
528
  // Open Block Settings.
529
529
  fireEvent.press(
530
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
530
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
531
531
  );
532
532
 
533
533
  // Get Block Settings modal.
@@ -535,7 +535,7 @@ describe( 'Embed block', () => {
535
535
 
536
536
  // Start editing link.
537
537
  fireEvent.press(
538
- within( blockSettingsModal ).getByA11yLabel(
538
+ within( blockSettingsModal ).getByLabelText(
539
539
  `Twitter link, ${ previousURL }`
540
540
  )
541
541
  );
@@ -600,7 +600,7 @@ describe( 'Embed block', () => {
600
600
  const expectedURL = 'https://twitter.com/notnownikki';
601
601
 
602
602
  const {
603
- getByA11yLabel,
603
+ getByLabelText,
604
604
  getByDisplayValue,
605
605
  getByPlaceholderText,
606
606
  getByTestId,
@@ -621,7 +621,7 @@ describe( 'Embed block', () => {
621
621
 
622
622
  // Open Block Settings.
623
623
  fireEvent.press(
624
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
624
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
625
625
  );
626
626
 
627
627
  // Wait for Block Settings to be visible.
@@ -630,7 +630,7 @@ describe( 'Embed block', () => {
630
630
 
631
631
  // Start editing link.
632
632
  fireEvent.press(
633
- within( blockSettingsModal ).getByA11yLabel(
633
+ within( blockSettingsModal ).getByLabelText(
634
634
  `Embed link, ${ badURL }`
635
635
  )
636
636
  );
@@ -646,7 +646,7 @@ describe( 'Embed block', () => {
646
646
 
647
647
  // Get Twitter link field.
648
648
  const twitterLinkField = await waitFor( () =>
649
- within( blockSettingsModal ).getByA11yLabel(
649
+ within( blockSettingsModal ).getByLabelText(
650
650
  `Twitter link, ${ expectedURL }`
651
651
  )
652
652
  );
@@ -665,12 +665,12 @@ describe( 'Embed block', () => {
665
665
  'Full width',
666
666
  ].forEach( ( alignmentOption ) =>
667
667
  it( `sets ${ alignmentOption } option`, async () => {
668
- const { getByA11yLabel, getByText } =
668
+ const { getByLabelText, getByText } =
669
669
  await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
670
670
 
671
671
  // Open alignment options.
672
672
  fireEvent.press(
673
- await waitFor( () => getByA11yLabel( 'Align' ) )
673
+ await waitFor( () => getByLabelText( 'Align' ) )
674
674
  );
675
675
 
676
676
  // Select alignment option.
@@ -721,7 +721,7 @@ describe( 'Embed block', () => {
721
721
  // Get Twitter link field.
722
722
  const twitterLinkField = within(
723
723
  blockSettingsModal
724
- ).getByA11yLabel( `Twitter link, ${ expectedURL }` );
724
+ ).getByLabelText( `Twitter link, ${ expectedURL }` );
725
725
 
726
726
  expect( twitterLinkField ).toBeDefined();
727
727
  expect( getEditorHtml() ).toMatchSnapshot();
@@ -739,7 +739,7 @@ describe( 'Embed block', () => {
739
739
  );
740
740
  } );
741
741
 
742
- const { getByA11yLabel, getByText } =
742
+ const { getByLabelText, getByText } =
743
743
  await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
744
744
 
745
745
  // Convert embed to link.
@@ -748,7 +748,7 @@ describe( 'Embed block', () => {
748
748
 
749
749
  // Get paragraph block where the link is created.
750
750
  const paragraphBlock = await waitFor( () =>
751
- getByA11yLabel( /Paragraph Block\. Row 1/ )
751
+ getByLabelText( /Paragraph Block\. Row 1/ )
752
752
  );
753
753
 
754
754
  expect( paragraphBlock ).toBeDefined();
@@ -780,7 +780,7 @@ describe( 'Embed block', () => {
780
780
  } );
781
781
 
782
782
  const {
783
- getByA11yLabel,
783
+ getByLabelText,
784
784
  getByText,
785
785
  getByTestId,
786
786
  getByDisplayValue,
@@ -790,7 +790,7 @@ describe( 'Embed block', () => {
790
790
  fireEvent.press( getByText( 'Edit link' ) );
791
791
 
792
792
  // Start editing link.
793
- fireEvent.press( getByA11yLabel( `WordPress link, ${ failURL }` ) );
793
+ fireEvent.press( getByLabelText( `WordPress link, ${ failURL }` ) );
794
794
 
795
795
  // Set an URL.
796
796
  const linkTextInput = getByDisplayValue( failURL );
@@ -808,7 +808,7 @@ describe( 'Embed block', () => {
808
808
  // Get Twitter link field.
809
809
  const twitterLinkField = within(
810
810
  blockSettingsModal
811
- ).getByA11yLabel( `Twitter link, ${ successURL }` );
811
+ ).getByLabelText( `Twitter link, ${ successURL }` );
812
812
 
813
813
  expect( twitterLinkField ).toBeDefined();
814
814
  expect( getEditorHtml() ).toMatchSnapshot();
@@ -865,7 +865,7 @@ describe( 'Embed block', () => {
865
865
  const expectedURL = 'https://www.youtube.com/watch?v=lXMskKTw3Bc';
866
866
 
867
867
  const {
868
- getByA11yLabel,
868
+ getByLabelText,
869
869
  getByPlaceholderText,
870
870
  getByTestId,
871
871
  getByText,
@@ -897,7 +897,7 @@ describe( 'Embed block', () => {
897
897
 
898
898
  // Get the created embed block.
899
899
  const embedBlock = await waitFor( () =>
900
- getByA11yLabel( /Embed Block\. Row 1/ )
900
+ getByLabelText( /Embed Block\. Row 1/ )
901
901
  );
902
902
 
903
903
  expect( embedBlock ).toBeDefined();
@@ -953,7 +953,7 @@ describe( 'Embed block', () => {
953
953
  describe( 'insert via slash inserter', () => {
954
954
  it( 'insert generic embed block', async () => {
955
955
  const embedBlockSlashInserter = '/Embed';
956
- const { getByPlaceholderText, getByA11yLabel, getByText } =
956
+ const { getByPlaceholderText, getByLabelText, getByText } =
957
957
  await initializeEditor( { initialHtml: EMPTY_PARAGRAPH_HTML } );
958
958
 
959
959
  const paragraphText = getByPlaceholderText( 'Start writing…' );
@@ -980,7 +980,7 @@ describe( 'Embed block', () => {
980
980
  fireEvent.press( await waitFor( () => getByText( 'Embed' ) ) );
981
981
 
982
982
  const block = await waitFor( () =>
983
- getByA11yLabel( /Embed Block\. Row 1/ )
983
+ getByLabelText( /Embed Block\. Row 1/ )
984
984
  );
985
985
 
986
986
  const blockName = within( block ).getByText( 'Embed' );
@@ -992,7 +992,7 @@ describe( 'Embed block', () => {
992
992
  MOST_USED_PROVIDERS.forEach( ( { title } ) =>
993
993
  it( `inserts ${ title } embed block`, async () => {
994
994
  const embedBlockSlashInserter = `/${ title }`;
995
- const { getByPlaceholderText, getByA11yLabel, getByText } =
995
+ const { getByPlaceholderText, getByLabelText, getByText } =
996
996
  await initializeEditor( {
997
997
  initialHtml: EMPTY_PARAGRAPH_HTML,
998
998
  } );
@@ -1021,7 +1021,7 @@ describe( 'Embed block', () => {
1021
1021
  fireEvent.press( await waitFor( () => getByText( title ) ) );
1022
1022
 
1023
1023
  const block = await waitFor( () =>
1024
- getByA11yLabel( /Embed Block\. Row 1/ )
1024
+ getByLabelText( /Embed Block\. Row 1/ )
1025
1025
  );
1026
1026
 
1027
1027
  const blockName = within( block ).getByText( title );
@@ -1080,12 +1080,12 @@ describe( 'Embed block', () => {
1080
1080
 
1081
1081
  describe( 'block settings', () => {
1082
1082
  it( 'toggles resize for smaller devices media settings', async () => {
1083
- const { getByA11yLabel, getByText } =
1083
+ const { getByLabelText, getByText } =
1084
1084
  await initializeWithEmbedBlock( RICH_TEXT_EMBED_HTML );
1085
1085
 
1086
1086
  // Open Block Settings.
1087
1087
  fireEvent.press(
1088
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
1088
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
1089
1089
  );
1090
1090
 
1091
1091
  // Untoggle resize for smaller devices.
@@ -1097,12 +1097,12 @@ describe( 'Embed block', () => {
1097
1097
  } );
1098
1098
 
1099
1099
  it( 'does not show media settings panel if responsive is not supported', async () => {
1100
- const { getByA11yLabel, getByText } =
1100
+ const { getByLabelText, getByText } =
1101
1101
  await initializeWithEmbedBlock( WP_EMBED_HTML );
1102
1102
 
1103
1103
  // Open Block Settings.
1104
1104
  fireEvent.press(
1105
- await waitFor( () => getByA11yLabel( 'Open Settings' ) )
1105
+ await waitFor( () => getByLabelText( 'Open Settings' ) )
1106
1106
  );
1107
1107
 
1108
1108
  // Wait for media settings panel.
@@ -14,7 +14,7 @@ import {
14
14
  import { __, sprintf } from '@wordpress/i18n';
15
15
 
16
16
  // Version of the file block without PR#43050 removing the translated aria-label.
17
- const v2 = {
17
+ const v3 = {
18
18
  attributes: {
19
19
  id: {
20
20
  type: 'number',
@@ -143,6 +143,134 @@ const v2 = {
143
143
  },
144
144
  };
145
145
 
146
+ // In #41239 the button was made an element button which added a `wp-element-button` classname
147
+ // to the download link element.
148
+ const v2 = {
149
+ attributes: {
150
+ id: {
151
+ type: 'number',
152
+ },
153
+ href: {
154
+ type: 'string',
155
+ },
156
+ fileId: {
157
+ type: 'string',
158
+ source: 'attribute',
159
+ selector: 'a:not([download])',
160
+ attribute: 'id',
161
+ },
162
+ fileName: {
163
+ type: 'string',
164
+ source: 'html',
165
+ selector: 'a:not([download])',
166
+ },
167
+ textLinkHref: {
168
+ type: 'string',
169
+ source: 'attribute',
170
+ selector: 'a:not([download])',
171
+ attribute: 'href',
172
+ },
173
+ textLinkTarget: {
174
+ type: 'string',
175
+ source: 'attribute',
176
+ selector: 'a:not([download])',
177
+ attribute: 'target',
178
+ },
179
+ showDownloadButton: {
180
+ type: 'boolean',
181
+ default: true,
182
+ },
183
+ downloadButtonText: {
184
+ type: 'string',
185
+ source: 'html',
186
+ selector: 'a[download]',
187
+ },
188
+ displayPreview: {
189
+ type: 'boolean',
190
+ },
191
+ previewHeight: {
192
+ type: 'number',
193
+ default: 600,
194
+ },
195
+ },
196
+ supports: {
197
+ anchor: true,
198
+ align: true,
199
+ },
200
+ save( { attributes } ) {
201
+ const {
202
+ href,
203
+ fileId,
204
+ fileName,
205
+ textLinkHref,
206
+ textLinkTarget,
207
+ showDownloadButton,
208
+ downloadButtonText,
209
+ displayPreview,
210
+ previewHeight,
211
+ } = attributes;
212
+
213
+ const pdfEmbedLabel = RichText.isEmpty( fileName )
214
+ ? __( 'PDF embed' )
215
+ : sprintf(
216
+ /* translators: %s: filename. */
217
+ __( 'Embed of %s.' ),
218
+ fileName
219
+ );
220
+
221
+ const hasFilename = ! RichText.isEmpty( fileName );
222
+
223
+ // Only output an `aria-describedby` when the element it's referring to is
224
+ // actually rendered.
225
+ const describedById = hasFilename ? fileId : undefined;
226
+
227
+ return (
228
+ href && (
229
+ <div { ...useBlockProps.save() }>
230
+ { displayPreview && (
231
+ <>
232
+ <object
233
+ className="wp-block-file__embed"
234
+ data={ href }
235
+ type="application/pdf"
236
+ style={ {
237
+ width: '100%',
238
+ height: `${ previewHeight }px`,
239
+ } }
240
+ aria-label={ pdfEmbedLabel }
241
+ />
242
+ </>
243
+ ) }
244
+ { hasFilename && (
245
+ <a
246
+ id={ describedById }
247
+ href={ textLinkHref }
248
+ target={ textLinkTarget }
249
+ rel={
250
+ textLinkTarget
251
+ ? 'noreferrer noopener'
252
+ : undefined
253
+ }
254
+ >
255
+ <RichText.Content value={ fileName } />
256
+ </a>
257
+ ) }
258
+ { showDownloadButton && (
259
+ <a
260
+ href={ href }
261
+ className="wp-block-file__button"
262
+ download={ true }
263
+ aria-describedby={ describedById }
264
+ >
265
+ <RichText.Content value={ downloadButtonText } />
266
+ </a>
267
+ ) }
268
+ </div>
269
+ )
270
+ );
271
+ },
272
+ };
273
+
146
274
  // Version of the file block without PR#28062 accessibility fix.
147
275
  const v1 = {
148
276
  attributes: {
@@ -255,6 +383,6 @@ const v1 = {
255
383
  },
256
384
  };
257
385
 
258
- const deprecated = [ v2, v1 ];
386
+ const deprecated = [ v3, v2, v1 ];
259
387
 
260
388
  export default deprecated;
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { includes } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -92,7 +87,7 @@ const transforms = {
92
87
  }
93
88
  const { getMedia } = select( coreStore );
94
89
  const media = getMedia( id );
95
- return !! media && includes( media.mime_type, 'audio' );
90
+ return !! media && media.mime_type.includes( 'audio' );
96
91
  },
97
92
  transform: ( attributes ) => {
98
93
  return createBlock( 'core/audio', {
@@ -112,7 +107,7 @@ const transforms = {
112
107
  }
113
108
  const { getMedia } = select( coreStore );
114
109
  const media = getMedia( id );
115
- return !! media && includes( media.mime_type, 'video' );
110
+ return !! media && media.mime_type.includes( 'video' );
116
111
  },
117
112
  transform: ( attributes ) => {
118
113
  return createBlock( 'core/video', {
@@ -132,7 +127,7 @@ const transforms = {
132
127
  }
133
128
  const { getMedia } = select( coreStore );
134
129
  const media = getMedia( id );
135
- return !! media && includes( media.mime_type, 'image' );
130
+ return !! media && media.mime_type.includes( 'image' );
136
131
  },
137
132
  transform: ( attributes ) => {
138
133
  return createBlock( 'core/image', {
@@ -2,12 +2,16 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { map, some } from 'lodash';
5
+ import { map } from 'lodash';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { RichText, useBlockProps } from '@wordpress/block-editor';
10
+ import {
11
+ RichText,
12
+ useBlockProps,
13
+ useInnerBlocksProps,
14
+ } from '@wordpress/block-editor';
11
15
 
12
16
  import { createBlock } from '@wordpress/blocks';
13
17
 
@@ -127,6 +131,127 @@ export function getImageBlock( image, sizeSlug, linkTo ) {
127
131
  } );
128
132
  }
129
133
 
134
+ // In #41140 support was added to global styles for caption elements which added a `wp-element-caption` classname
135
+ // to the gallery figcaption element.
136
+ const v7 = {
137
+ attributes: {
138
+ images: {
139
+ type: 'array',
140
+ default: [],
141
+ source: 'query',
142
+ selector: '.blocks-gallery-item',
143
+ query: {
144
+ url: {
145
+ type: 'string',
146
+ source: 'attribute',
147
+ selector: 'img',
148
+ attribute: 'src',
149
+ },
150
+ fullUrl: {
151
+ type: 'string',
152
+ source: 'attribute',
153
+ selector: 'img',
154
+ attribute: 'data-full-url',
155
+ },
156
+ link: {
157
+ type: 'string',
158
+ source: 'attribute',
159
+ selector: 'img',
160
+ attribute: 'data-link',
161
+ },
162
+ alt: {
163
+ type: 'string',
164
+ source: 'attribute',
165
+ selector: 'img',
166
+ attribute: 'alt',
167
+ default: '',
168
+ },
169
+ id: {
170
+ type: 'string',
171
+ source: 'attribute',
172
+ selector: 'img',
173
+ attribute: 'data-id',
174
+ },
175
+ caption: {
176
+ type: 'string',
177
+ source: 'html',
178
+ selector: '.blocks-gallery-item__caption',
179
+ },
180
+ },
181
+ },
182
+ ids: {
183
+ type: 'array',
184
+ items: {
185
+ type: 'number',
186
+ },
187
+ default: [],
188
+ },
189
+ shortCodeTransforms: {
190
+ type: 'array',
191
+ default: [],
192
+ items: {
193
+ type: 'object',
194
+ },
195
+ },
196
+ columns: {
197
+ type: 'number',
198
+ minimum: 1,
199
+ maximum: 8,
200
+ },
201
+ caption: {
202
+ type: 'string',
203
+ source: 'html',
204
+ selector: '.blocks-gallery-caption',
205
+ },
206
+ imageCrop: {
207
+ type: 'boolean',
208
+ default: true,
209
+ },
210
+ fixedHeight: {
211
+ type: 'boolean',
212
+ default: true,
213
+ },
214
+ linkTarget: {
215
+ type: 'string',
216
+ },
217
+ linkTo: {
218
+ type: 'string',
219
+ },
220
+ sizeSlug: {
221
+ type: 'string',
222
+ default: 'large',
223
+ },
224
+ allowResize: {
225
+ type: 'boolean',
226
+ default: false,
227
+ },
228
+ },
229
+ save( { attributes } ) {
230
+ const { caption, columns, imageCrop } = attributes;
231
+
232
+ const className = classnames( 'has-nested-images', {
233
+ [ `columns-${ columns }` ]: columns !== undefined,
234
+ [ `columns-default` ]: columns === undefined,
235
+ 'is-cropped': imageCrop,
236
+ } );
237
+ const blockProps = useBlockProps.save( { className } );
238
+ const innerBlocksProps = useInnerBlocksProps.save( blockProps );
239
+
240
+ return (
241
+ <figure { ...innerBlocksProps }>
242
+ { innerBlocksProps.children }
243
+ { ! RichText.isEmpty( caption ) && (
244
+ <RichText.Content
245
+ tagName="figcaption"
246
+ className="blocks-gallery-caption"
247
+ value={ caption }
248
+ />
249
+ ) }
250
+ </figure>
251
+ );
252
+ },
253
+ };
254
+
130
255
  const v6 = {
131
256
  attributes: {
132
257
  images: {
@@ -803,7 +928,7 @@ const v2 = {
803
928
  images.length > 0 &&
804
929
  ( ( ! ids && images ) ||
805
930
  ( ids && images && ids.length !== images.length ) ||
806
- some( images, ( id, index ) => {
931
+ images.some( ( id, index ) => {
807
932
  if ( ! id && ids[ index ] !== null ) {
808
933
  return true;
809
934
  }
@@ -984,4 +1109,4 @@ const v1 = {
984
1109
  },
985
1110
  };
986
1111
 
987
- export default [ v6, v5, v4, v3, v2, v1 ];
1112
+ export default [ v7, v6, v5, v4, v3, v2, v1 ];