@wordpress/block-library 8.18.1-next.5a1d1283.0 → 8.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 (381) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/block/edit.js +53 -2
  4. package/build/block/edit.js.map +1 -1
  5. package/build/button/edit.js +7 -4
  6. package/build/button/edit.js.map +1 -1
  7. package/build/button/index.js +11 -2
  8. package/build/button/index.js.map +1 -1
  9. package/build/button/save.js +10 -4
  10. package/build/button/save.js.map +1 -1
  11. package/build/buttons/edit.js +12 -3
  12. package/build/buttons/edit.js.map +1 -1
  13. package/build/code/edit.js +8 -2
  14. package/build/code/edit.js.map +1 -1
  15. package/build/code/index.js +7 -1
  16. package/build/code/index.js.map +1 -1
  17. package/build/column/index.js +1 -0
  18. package/build/column/index.js.map +1 -1
  19. package/build/columns/index.js +2 -0
  20. package/build/columns/index.js.map +1 -1
  21. package/build/file/edit.native.js +1 -1
  22. package/build/file/edit.native.js.map +1 -1
  23. package/build/file/index.js +2 -1
  24. package/build/file/index.js.map +1 -1
  25. package/build/file/utils/index.js +1 -15
  26. package/build/file/utils/index.js.map +1 -1
  27. package/build/file/view.js +14 -1
  28. package/build/file/view.js.map +1 -1
  29. package/build/footnotes/edit.js +12 -2
  30. package/build/footnotes/edit.js.map +1 -1
  31. package/build/gallery/edit.js +1 -1
  32. package/build/gallery/edit.js.map +1 -1
  33. package/build/group/edit.js +0 -1
  34. package/build/group/edit.js.map +1 -1
  35. package/build/group/index.js +4 -0
  36. package/build/group/index.js.map +1 -1
  37. package/build/heading/edit.js +0 -1
  38. package/build/heading/edit.js.map +1 -1
  39. package/build/heading/index.js +2 -0
  40. package/build/heading/index.js.map +1 -1
  41. package/build/heading/transforms.js +3 -6
  42. package/build/heading/transforms.js.map +1 -1
  43. package/build/image/deprecated.js +191 -7
  44. package/build/image/deprecated.js.map +1 -1
  45. package/build/image/edit.js +27 -12
  46. package/build/image/edit.js.map +1 -1
  47. package/build/image/image.js +75 -40
  48. package/build/image/image.js.map +1 -1
  49. package/build/image/index.js +7 -4
  50. package/build/image/index.js.map +1 -1
  51. package/build/image/{view-interactivity.js → view.js} +1 -1
  52. package/build/image/view.js.map +1 -0
  53. package/build/list/deprecated.js +93 -1
  54. package/build/list/deprecated.js.map +1 -1
  55. package/build/list/edit.js +10 -10
  56. package/build/list/edit.js.map +1 -1
  57. package/build/list/ordered-list-settings.js +10 -10
  58. package/build/list/ordered-list-settings.js.map +1 -1
  59. package/build/list/save.js +4 -2
  60. package/build/list/save.js.map +1 -1
  61. package/build/list/utils.js +21 -2
  62. package/build/list/utils.js.map +1 -1
  63. package/build/navigation/constants.js +1 -1
  64. package/build/navigation/constants.js.map +1 -1
  65. package/build/navigation/index.js +4 -2
  66. package/build/navigation/index.js.map +1 -1
  67. package/build/navigation/view.js +168 -82
  68. package/build/navigation/view.js.map +1 -1
  69. package/build/navigation-link/edit.js +3 -9
  70. package/build/navigation-link/edit.js.map +1 -1
  71. package/build/navigation-link/transforms.js +24 -0
  72. package/build/navigation-link/transforms.js.map +1 -1
  73. package/build/page-list/edit.js +2 -1
  74. package/build/page-list/edit.js.map +1 -1
  75. package/build/post-comments-form/edit.js +10 -2
  76. package/build/post-comments-form/edit.js.map +1 -1
  77. package/build/post-comments-form/form.js +5 -3
  78. package/build/post-comments-form/form.js.map +1 -1
  79. package/build/post-content/edit.js +8 -7
  80. package/build/post-content/edit.js.map +1 -1
  81. package/build/post-content/index.js +3 -0
  82. package/build/post-content/index.js.map +1 -1
  83. package/build/post-featured-image/overlay.js +2 -1
  84. package/build/post-featured-image/overlay.js.map +1 -1
  85. package/build/preformatted/edit.js +4 -1
  86. package/build/preformatted/edit.js.map +1 -1
  87. package/build/preformatted/index.js +1 -1
  88. package/build/preformatted/index.js.map +1 -1
  89. package/build/pullquote/deprecated.js +6 -7
  90. package/build/pullquote/deprecated.js.map +1 -1
  91. package/build/query/edit/enhanced-pagination-modal.js +56 -0
  92. package/build/query/edit/enhanced-pagination-modal.js.map +1 -0
  93. package/build/query/edit/inspector-controls/enhanced-pagination-control.js +42 -0
  94. package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -0
  95. package/build/query/edit/inspector-controls/index.js +8 -25
  96. package/build/query/edit/inspector-controls/index.js.map +1 -1
  97. package/build/query/edit/query-content.js +8 -2
  98. package/build/query/edit/query-content.js.map +1 -1
  99. package/build/query/utils.js +19 -0
  100. package/build/query/utils.js.map +1 -1
  101. package/build/query/view.js +4 -5
  102. package/build/query/view.js.map +1 -1
  103. package/build/search/index.js +1 -0
  104. package/build/search/index.js.map +1 -1
  105. package/build/search/view.js +81 -150
  106. package/build/search/view.js.map +1 -1
  107. package/build/social-link/edit.native.js +3 -1
  108. package/build/social-link/edit.native.js.map +1 -1
  109. package/build/table/edit.js +7 -7
  110. package/build/table/edit.js.map +1 -1
  111. package/build/table-of-contents/edit.js +2 -130
  112. package/build/table-of-contents/edit.js.map +1 -1
  113. package/build/table-of-contents/hooks.js +145 -0
  114. package/build/table-of-contents/hooks.js.map +1 -0
  115. package/build/table-of-contents/index.js +2 -1
  116. package/build/table-of-contents/index.js.map +1 -1
  117. package/build/verse/edit.js +4 -1
  118. package/build/verse/edit.js.map +1 -1
  119. package/build/verse/index.js +1 -1
  120. package/build/verse/index.js.map +1 -1
  121. package/build-module/block/edit.js +54 -3
  122. package/build-module/block/edit.js.map +1 -1
  123. package/build-module/button/edit.js +7 -4
  124. package/build-module/button/edit.js.map +1 -1
  125. package/build-module/button/index.js +11 -2
  126. package/build-module/button/index.js.map +1 -1
  127. package/build-module/button/save.js +10 -4
  128. package/build-module/button/save.js.map +1 -1
  129. package/build-module/buttons/edit.js +12 -3
  130. package/build-module/buttons/edit.js.map +1 -1
  131. package/build-module/code/edit.js +8 -2
  132. package/build-module/code/edit.js.map +1 -1
  133. package/build-module/code/index.js +7 -1
  134. package/build-module/code/index.js.map +1 -1
  135. package/build-module/column/index.js +1 -0
  136. package/build-module/column/index.js.map +1 -1
  137. package/build-module/columns/index.js +2 -0
  138. package/build-module/columns/index.js.map +1 -1
  139. package/build-module/file/edit.native.js +1 -1
  140. package/build-module/file/edit.native.js.map +1 -1
  141. package/build-module/file/index.js +2 -1
  142. package/build-module/file/index.js.map +1 -1
  143. package/build-module/file/utils/index.js +0 -13
  144. package/build-module/file/utils/index.js.map +1 -1
  145. package/build-module/file/view.js +14 -2
  146. package/build-module/file/view.js.map +1 -1
  147. package/build-module/footnotes/edit.js +12 -2
  148. package/build-module/footnotes/edit.js.map +1 -1
  149. package/build-module/gallery/edit.js +1 -1
  150. package/build-module/gallery/edit.js.map +1 -1
  151. package/build-module/group/edit.js +0 -1
  152. package/build-module/group/edit.js.map +1 -1
  153. package/build-module/group/index.js +4 -0
  154. package/build-module/group/index.js.map +1 -1
  155. package/build-module/heading/edit.js +0 -1
  156. package/build-module/heading/edit.js.map +1 -1
  157. package/build-module/heading/index.js +2 -0
  158. package/build-module/heading/index.js.map +1 -1
  159. package/build-module/heading/transforms.js +3 -6
  160. package/build-module/heading/transforms.js.map +1 -1
  161. package/build-module/image/deprecated.js +191 -7
  162. package/build-module/image/deprecated.js.map +1 -1
  163. package/build-module/image/edit.js +27 -12
  164. package/build-module/image/edit.js.map +1 -1
  165. package/build-module/image/image.js +77 -42
  166. package/build-module/image/image.js.map +1 -1
  167. package/build-module/image/index.js +7 -4
  168. package/build-module/image/index.js.map +1 -1
  169. package/build-module/image/{view-interactivity.js → view.js} +1 -1
  170. package/build-module/image/view.js.map +1 -0
  171. package/build-module/list/deprecated.js +95 -3
  172. package/build-module/list/deprecated.js.map +1 -1
  173. package/build-module/list/edit.js +10 -10
  174. package/build-module/list/edit.js.map +1 -1
  175. package/build-module/list/ordered-list-settings.js +10 -10
  176. package/build-module/list/ordered-list-settings.js.map +1 -1
  177. package/build-module/list/save.js +4 -2
  178. package/build-module/list/save.js.map +1 -1
  179. package/build-module/list/utils.js +20 -2
  180. package/build-module/list/utils.js.map +1 -1
  181. package/build-module/navigation/constants.js +1 -1
  182. package/build-module/navigation/constants.js.map +1 -1
  183. package/build-module/navigation/index.js +4 -2
  184. package/build-module/navigation/index.js.map +1 -1
  185. package/build-module/navigation/view.js +168 -83
  186. package/build-module/navigation/view.js.map +1 -1
  187. package/build-module/navigation-link/edit.js +3 -9
  188. package/build-module/navigation-link/edit.js.map +1 -1
  189. package/build-module/navigation-link/transforms.js +24 -0
  190. package/build-module/navigation-link/transforms.js.map +1 -1
  191. package/build-module/page-list/edit.js +2 -1
  192. package/build-module/page-list/edit.js.map +1 -1
  193. package/build-module/post-comments-form/edit.js +10 -2
  194. package/build-module/post-comments-form/edit.js.map +1 -1
  195. package/build-module/post-comments-form/form.js +5 -3
  196. package/build-module/post-comments-form/form.js.map +1 -1
  197. package/build-module/post-content/edit.js +8 -7
  198. package/build-module/post-content/edit.js.map +1 -1
  199. package/build-module/post-content/index.js +3 -0
  200. package/build-module/post-content/index.js.map +1 -1
  201. package/build-module/post-featured-image/overlay.js +2 -1
  202. package/build-module/post-featured-image/overlay.js.map +1 -1
  203. package/build-module/preformatted/edit.js +4 -1
  204. package/build-module/preformatted/edit.js.map +1 -1
  205. package/build-module/preformatted/index.js +1 -1
  206. package/build-module/preformatted/index.js.map +1 -1
  207. package/build-module/pullquote/deprecated.js +6 -7
  208. package/build-module/pullquote/deprecated.js.map +1 -1
  209. package/build-module/query/edit/enhanced-pagination-modal.js +50 -0
  210. package/build-module/query/edit/enhanced-pagination-modal.js.map +1 -0
  211. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +35 -0
  212. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -0
  213. package/build-module/query/edit/inspector-controls/index.js +9 -26
  214. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  215. package/build-module/query/edit/query-content.js +8 -2
  216. package/build-module/query/edit/query-content.js.map +1 -1
  217. package/build-module/query/utils.js +17 -0
  218. package/build-module/query/utils.js.map +1 -1
  219. package/build-module/query/view.js +4 -5
  220. package/build-module/query/view.js.map +1 -1
  221. package/build-module/search/index.js +1 -0
  222. package/build-module/search/index.js.map +1 -1
  223. package/build-module/search/view.js +81 -151
  224. package/build-module/search/view.js.map +1 -1
  225. package/build-module/social-link/edit.native.js +3 -1
  226. package/build-module/social-link/edit.native.js.map +1 -1
  227. package/build-module/table/edit.js +7 -7
  228. package/build-module/table/edit.js.map +1 -1
  229. package/build-module/table-of-contents/edit.js +3 -131
  230. package/build-module/table-of-contents/edit.js.map +1 -1
  231. package/build-module/table-of-contents/hooks.js +137 -0
  232. package/build-module/table-of-contents/hooks.js.map +1 -0
  233. package/build-module/table-of-contents/index.js +2 -1
  234. package/build-module/table-of-contents/index.js.map +1 -1
  235. package/build-module/verse/edit.js +4 -1
  236. package/build-module/verse/edit.js.map +1 -1
  237. package/build-module/verse/index.js +1 -1
  238. package/build-module/verse/index.js.map +1 -1
  239. package/build-style/cover/style-rtl.css +9 -0
  240. package/build-style/cover/style.css +9 -0
  241. package/build-style/editor-rtl.css +15 -9
  242. package/build-style/editor.css +15 -9
  243. package/build-style/file/style-rtl.css +5 -0
  244. package/build-style/file/style.css +5 -0
  245. package/build-style/heading/style-rtl.css +13 -0
  246. package/build-style/heading/style.css +13 -0
  247. package/build-style/navigation-link/editor-rtl.css +0 -9
  248. package/build-style/navigation-link/editor.css +0 -9
  249. package/build-style/paragraph/editor-rtl.css +5 -0
  250. package/build-style/paragraph/editor.css +5 -0
  251. package/build-style/paragraph/style-rtl.css +5 -0
  252. package/build-style/paragraph/style.css +5 -0
  253. package/build-style/post-navigation-link/style-rtl.css +3 -0
  254. package/build-style/post-navigation-link/style.css +3 -0
  255. package/build-style/query/editor-rtl.css +10 -0
  256. package/build-style/query/editor.css +10 -0
  257. package/build-style/query/style-rtl.css +1 -1
  258. package/build-style/query/style.css +1 -1
  259. package/build-style/reset-rtl.css +27 -27
  260. package/build-style/reset.css +27 -27
  261. package/build-style/style-rtl.css +35 -0
  262. package/build-style/style.css +35 -0
  263. package/package.json +32 -33
  264. package/src/audio/test/__snapshots__/edit.native.js.snap +78 -106
  265. package/src/avatar/index.php +2 -2
  266. package/src/block/edit.js +58 -2
  267. package/src/block/test/edit.native.js +2 -3
  268. package/src/button/block.json +11 -2
  269. package/src/button/edit.js +27 -11
  270. package/src/button/save.js +10 -4
  271. package/src/buttons/edit.js +13 -3
  272. package/src/buttons/test/edit.native.js +28 -24
  273. package/src/calendar/index.php +2 -2
  274. package/src/code/block.json +2 -1
  275. package/src/code/edit.js +13 -1
  276. package/src/code/index.js +5 -0
  277. package/src/column/block.json +1 -0
  278. package/src/columns/block.json +2 -0
  279. package/src/comment-template/index.php +1 -1
  280. package/src/comments-pagination-next/index.php +1 -1
  281. package/src/comments-pagination-previous/index.php +1 -1
  282. package/src/cover/style.scss +12 -1
  283. package/src/cover/test/edit.js +7 -7
  284. package/src/cover/test/edit.native.js +18 -27
  285. package/src/embed/test/index.native.js +30 -45
  286. package/src/file/block.json +2 -1
  287. package/src/file/edit.native.js +1 -1
  288. package/src/file/index.php +19 -21
  289. package/src/file/style.scss +6 -1
  290. package/src/file/test/__snapshots__/edit.native.js.snap +162 -218
  291. package/src/file/utils/index.js +0 -15
  292. package/src/file/view.js +14 -5
  293. package/src/footnotes/edit.js +13 -1
  294. package/src/gallery/edit.js +1 -1
  295. package/src/gallery/index.php +1 -1
  296. package/src/group/block.json +4 -0
  297. package/src/group/edit.js +0 -1
  298. package/src/heading/block.json +2 -0
  299. package/src/heading/edit.js +0 -1
  300. package/src/heading/style.scss +4 -0
  301. package/src/heading/transforms.js +1 -6
  302. package/src/image/block.json +7 -4
  303. package/src/image/deprecated.js +210 -7
  304. package/src/image/edit.js +43 -29
  305. package/src/image/image.js +86 -43
  306. package/src/image/index.php +251 -28
  307. package/src/latest-posts/index.php +1 -1
  308. package/src/list/deprecated.js +84 -3
  309. package/src/list/edit.js +6 -3
  310. package/src/list/ordered-list-settings.js +20 -5
  311. package/src/list/save.js +10 -1
  312. package/src/list/test/edit.native.js +2 -4
  313. package/src/list/utils.js +22 -1
  314. package/src/navigation/block.json +4 -2
  315. package/src/navigation/constants.js +1 -0
  316. package/src/navigation/index.php +85 -123
  317. package/src/navigation/view.js +192 -96
  318. package/src/navigation-link/edit.js +21 -36
  319. package/src/navigation-link/editor.scss +0 -8
  320. package/src/navigation-link/transforms.js +22 -0
  321. package/src/page-list/edit.js +2 -1
  322. package/src/paragraph/editor.scss +5 -0
  323. package/src/paragraph/style.scss +5 -0
  324. package/src/pattern/index.php +2 -2
  325. package/src/post-comments-form/edit.js +10 -0
  326. package/src/post-comments-form/form.js +7 -1
  327. package/src/post-content/block.json +3 -0
  328. package/src/post-content/edit.js +14 -6
  329. package/src/post-excerpt/index.php +2 -2
  330. package/src/post-featured-image/index.php +2 -2
  331. package/src/post-featured-image/overlay.js +1 -0
  332. package/src/post-navigation-link/index.php +0 -5
  333. package/src/post-navigation-link/style.scss +4 -0
  334. package/src/post-template/index.php +1 -1
  335. package/src/post-terms/index.php +5 -2
  336. package/src/preformatted/edit.js +5 -0
  337. package/src/preformatted/index.js +1 -1
  338. package/src/pullquote/deprecated.js +8 -13
  339. package/src/query/edit/enhanced-pagination-modal.js +65 -0
  340. package/src/query/edit/inspector-controls/enhanced-pagination-control.js +49 -0
  341. package/src/query/edit/inspector-controls/index.js +9 -45
  342. package/src/query/edit/query-content.js +8 -0
  343. package/src/query/editor.scss +10 -0
  344. package/src/query/index.php +29 -16
  345. package/src/query/style.scss +2 -2
  346. package/src/query/utils.js +22 -0
  347. package/src/query/view.js +5 -5
  348. package/src/query-pagination-next/index.php +1 -1
  349. package/src/query-pagination-previous/index.php +1 -1
  350. package/src/reset.scss +1 -1
  351. package/src/search/block.json +1 -0
  352. package/src/search/index.php +45 -4
  353. package/src/search/test/__snapshots__/edit.native.js.snap +265 -363
  354. package/src/search/view.js +70 -169
  355. package/src/social-link/edit.native.js +1 -1
  356. package/src/social-link/editor.native.scss +4 -0
  357. package/src/table/edit.js +21 -19
  358. package/src/table-of-contents/block.json +2 -1
  359. package/src/table-of-contents/edit.js +5 -162
  360. package/src/table-of-contents/hooks.js +156 -0
  361. package/src/verse/edit.js +5 -0
  362. package/src/verse/index.js +1 -1
  363. package/src/verse/test/edit.native.js +2 -3
  364. package/build/file/view-interactivity.js +0 -22
  365. package/build/file/view-interactivity.js.map +0 -1
  366. package/build/image/view-interactivity.js.map +0 -1
  367. package/build/navigation/view-interactivity.js +0 -172
  368. package/build/navigation/view-interactivity.js.map +0 -1
  369. package/build/navigation/view-modal.js +0 -115
  370. package/build/navigation/view-modal.js.map +0 -1
  371. package/build-module/file/view-interactivity.js +0 -18
  372. package/build-module/file/view-interactivity.js.map +0 -1
  373. package/build-module/image/view-interactivity.js.map +0 -1
  374. package/build-module/navigation/view-interactivity.js +0 -169
  375. package/build-module/navigation/view-interactivity.js.map +0 -1
  376. package/build-module/navigation/view-modal.js +0 -112
  377. package/build-module/navigation/view-modal.js.map +0 -1
  378. package/src/file/view-interactivity.js +0 -18
  379. package/src/navigation/view-interactivity.js +0 -196
  380. package/src/navigation/view-modal.js +0 -127
  381. /package/src/image/{view-interactivity.js → view.js} +0 -0
@@ -133,7 +133,7 @@ exports[`Audio block renders audio block error state without crashing 1`] = `
133
133
  ]
134
134
  }
135
135
  >
136
- <View
136
+ <RCTAztecView
137
137
  accessibilityState={
138
138
  {
139
139
  "busy": undefined,
@@ -143,73 +143,59 @@ exports[`Audio block renders audio block error state without crashing 1`] = `
143
143
  "selected": undefined,
144
144
  }
145
145
  }
146
- accessibilityValue={
146
+ accessible={true}
147
+ activeFormats={[]}
148
+ blockType={
147
149
  {
148
- "max": undefined,
149
- "min": undefined,
150
- "now": undefined,
151
- "text": undefined,
150
+ "tag": "p",
152
151
  }
153
152
  }
154
- accessible={false}
155
- collapsable={false}
153
+ deleteEnter={true}
154
+ disableEditingMenu={false}
156
155
  focusable={true}
156
+ fontFamily="serif"
157
+ fontSize={14}
158
+ isMultiline={false}
159
+ maxImagesWidth={200}
160
+ onBackspace={[Function]}
157
161
  onBlur={[Function]}
162
+ onChange={[Function]}
158
163
  onClick={[Function]}
164
+ onContentSizeChange={[Function]}
165
+ onEnter={[Function]}
159
166
  onFocus={[Function]}
167
+ onHTMLContentWithCursor={[Function]}
168
+ onKeyDown={[Function]}
169
+ onPaste={[Function]}
160
170
  onResponderGrant={[Function]}
161
171
  onResponderMove={[Function]}
162
172
  onResponderRelease={[Function]}
163
173
  onResponderTerminate={[Function]}
164
174
  onResponderTerminationRequest={[Function]}
175
+ onSelectionChange={[Function]}
165
176
  onStartShouldSetResponder={[Function]}
166
- >
167
- <RCTAztecView
168
- activeFormats={[]}
169
- blockType={
170
- {
171
- "tag": "p",
172
- }
173
- }
174
- deleteEnter={true}
175
- disableEditingMenu={false}
176
- fontFamily="serif"
177
- fontSize={14}
178
- isMultiline={false}
179
- maxImagesWidth={200}
180
- onBackspace={[Function]}
181
- onBlur={[Function]}
182
- onChange={[Function]}
183
- onContentSizeChange={[Function]}
184
- onEnter={[Function]}
185
- onFocus={[Function]}
186
- onHTMLContentWithCursor={[Function]}
187
- onKeyDown={[Function]}
188
- onPaste={[Function]}
189
- onSelectionChange={[Function]}
190
- placeholder="Add caption"
191
- placeholderTextColor="gray"
192
- selectionColor="black"
193
- style={
194
- {
195
- "backgroundColor": undefined,
196
- "maxWidth": undefined,
197
- "minHeight": 0,
198
- }
177
+ placeholder="Add caption"
178
+ placeholderTextColor="gray"
179
+ selectionColor="black"
180
+ style={
181
+ {
182
+ "backgroundColor": undefined,
183
+ "maxWidth": undefined,
184
+ "minHeight": 0,
199
185
  }
200
- text={
201
- {
202
- "eventCount": undefined,
203
- "linkTextColor": undefined,
204
- "selection": null,
205
- "tag": "p",
206
- "text": "",
207
- }
186
+ }
187
+ text={
188
+ {
189
+ "eventCount": undefined,
190
+ "linkTextColor": undefined,
191
+ "selection": null,
192
+ "tag": "p",
193
+ "text": "",
208
194
  }
209
- textAlign="center"
210
- triggerKeyCodes={[]}
211
- />
212
- </View>
195
+ }
196
+ textAlign="center"
197
+ triggerKeyCodes={[]}
198
+ />
213
199
  </View>
214
200
  </View>
215
201
  </View>
@@ -373,7 +359,7 @@ exports[`Audio block renders audio file without crashing 1`] = `
373
359
  ]
374
360
  }
375
361
  >
376
- <View
362
+ <RCTAztecView
377
363
  accessibilityState={
378
364
  {
379
365
  "busy": undefined,
@@ -383,73 +369,59 @@ exports[`Audio block renders audio file without crashing 1`] = `
383
369
  "selected": undefined,
384
370
  }
385
371
  }
386
- accessibilityValue={
372
+ accessible={true}
373
+ activeFormats={[]}
374
+ blockType={
387
375
  {
388
- "max": undefined,
389
- "min": undefined,
390
- "now": undefined,
391
- "text": undefined,
376
+ "tag": "p",
392
377
  }
393
378
  }
394
- accessible={false}
395
- collapsable={false}
379
+ deleteEnter={true}
380
+ disableEditingMenu={false}
396
381
  focusable={true}
382
+ fontFamily="serif"
383
+ fontSize={14}
384
+ isMultiline={false}
385
+ maxImagesWidth={200}
386
+ onBackspace={[Function]}
397
387
  onBlur={[Function]}
388
+ onChange={[Function]}
398
389
  onClick={[Function]}
390
+ onContentSizeChange={[Function]}
391
+ onEnter={[Function]}
399
392
  onFocus={[Function]}
393
+ onHTMLContentWithCursor={[Function]}
394
+ onKeyDown={[Function]}
395
+ onPaste={[Function]}
400
396
  onResponderGrant={[Function]}
401
397
  onResponderMove={[Function]}
402
398
  onResponderRelease={[Function]}
403
399
  onResponderTerminate={[Function]}
404
400
  onResponderTerminationRequest={[Function]}
401
+ onSelectionChange={[Function]}
405
402
  onStartShouldSetResponder={[Function]}
406
- >
407
- <RCTAztecView
408
- activeFormats={[]}
409
- blockType={
410
- {
411
- "tag": "p",
412
- }
413
- }
414
- deleteEnter={true}
415
- disableEditingMenu={false}
416
- fontFamily="serif"
417
- fontSize={14}
418
- isMultiline={false}
419
- maxImagesWidth={200}
420
- onBackspace={[Function]}
421
- onBlur={[Function]}
422
- onChange={[Function]}
423
- onContentSizeChange={[Function]}
424
- onEnter={[Function]}
425
- onFocus={[Function]}
426
- onHTMLContentWithCursor={[Function]}
427
- onKeyDown={[Function]}
428
- onPaste={[Function]}
429
- onSelectionChange={[Function]}
430
- placeholder="Add caption"
431
- placeholderTextColor="gray"
432
- selectionColor="black"
433
- style={
434
- {
435
- "backgroundColor": undefined,
436
- "maxWidth": undefined,
437
- "minHeight": 0,
438
- }
403
+ placeholder="Add caption"
404
+ placeholderTextColor="gray"
405
+ selectionColor="black"
406
+ style={
407
+ {
408
+ "backgroundColor": undefined,
409
+ "maxWidth": undefined,
410
+ "minHeight": 0,
439
411
  }
440
- text={
441
- {
442
- "eventCount": undefined,
443
- "linkTextColor": undefined,
444
- "selection": null,
445
- "tag": "p",
446
- "text": "",
447
- }
412
+ }
413
+ text={
414
+ {
415
+ "eventCount": undefined,
416
+ "linkTextColor": undefined,
417
+ "selection": null,
418
+ "tag": "p",
419
+ "text": "",
448
420
  }
449
- textAlign="center"
450
- triggerKeyCodes={[]}
451
- />
452
- </View>
421
+ }
422
+ textAlign="center"
423
+ triggerKeyCodes={[]}
424
+ />
453
425
  </View>
454
426
  </View>
455
427
  </View>
@@ -112,12 +112,12 @@ function get_block_core_avatar_border_attributes( $attributes ) {
112
112
 
113
113
  // Border color.
114
114
  $preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null;
115
- $custom_color = _wp_array_get( $attributes, array( 'style', 'border', 'color' ), null );
115
+ $custom_color = $attributes['style']['border']['color'] ?? null;
116
116
  $border_styles['color'] = $preset_color ? $preset_color : $custom_color;
117
117
 
118
118
  // Individual border styles e.g. top, left etc.
119
119
  foreach ( $sides as $side ) {
120
- $border = _wp_array_get( $attributes, array( 'style', 'border', $side ), null );
120
+ $border = $attributes['style']['border'][ $side ] ?? null;
121
121
  $border_styles[ $side ] = array(
122
122
  'color' => isset( $border['color'] ) ? $border['color'] : null,
123
123
  'style' => isset( $border['style'] ) ? $border['style'] : null,
package/src/block/edit.js CHANGED
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -21,9 +26,52 @@ import {
21
26
  InspectorControls,
22
27
  useBlockProps,
23
28
  Warning,
29
+ privateApis as blockEditorPrivateApis,
24
30
  } from '@wordpress/block-editor';
31
+ import { useRef, useMemo } from '@wordpress/element';
32
+
33
+ /**
34
+ * Internal dependencies
35
+ */
36
+ import { unlock } from '../lock-unlock';
37
+
38
+ const fullAlignments = [ 'full', 'wide', 'left', 'right' ];
39
+
40
+ const useInferredLayout = ( blocks, parentLayout ) => {
41
+ const initialInferredAlignmentRef = useRef();
25
42
 
26
- export default function ReusableBlockEdit( { attributes: { ref } } ) {
43
+ return useMemo( () => {
44
+ // Exit early if the pattern's blocks haven't loaded yet.
45
+ if ( ! blocks?.length ) {
46
+ return {};
47
+ }
48
+
49
+ let alignment = initialInferredAlignmentRef.current;
50
+
51
+ // Only track the initial alignment so that temporarily removed
52
+ // alignments can be reapplied.
53
+ if ( alignment === undefined ) {
54
+ const isConstrained = parentLayout?.type === 'constrained';
55
+ const hasFullAlignment = blocks.some( ( block ) =>
56
+ fullAlignments.includes( block.attributes.align )
57
+ );
58
+
59
+ alignment = isConstrained && hasFullAlignment ? 'full' : null;
60
+ initialInferredAlignmentRef.current = alignment;
61
+ }
62
+
63
+ const layout = alignment ? parentLayout : undefined;
64
+
65
+ return { alignment, layout };
66
+ }, [ blocks, parentLayout ] );
67
+ };
68
+
69
+ export default function ReusableBlockEdit( {
70
+ name,
71
+ attributes: { ref },
72
+ __unstableParentLayout: parentLayout,
73
+ } ) {
74
+ const { useLayoutClasses } = unlock( blockEditorPrivateApis );
27
75
  const hasAlreadyRendered = useHasRecursion( ref );
28
76
  const { record, hasResolved } = useEntityRecord(
29
77
  'postType',
@@ -45,12 +93,20 @@ export default function ReusableBlockEdit( { attributes: { ref } } ) {
45
93
  ref
46
94
  );
47
95
 
96
+ const { alignment, layout } = useInferredLayout( blocks, parentLayout );
97
+ const layoutClasses = useLayoutClasses( { layout }, name );
98
+
48
99
  const blockProps = useBlockProps( {
49
- className: 'block-library-block__reusable-block-container',
100
+ className: classnames(
101
+ 'block-library-block__reusable-block-container',
102
+ layout && layoutClasses,
103
+ { [ `align${ alignment }` ]: alignment }
104
+ ),
50
105
  } );
51
106
 
52
107
  const innerBlocksProps = useInnerBlocksProps( blockProps, {
53
108
  value: blocks,
109
+ layout,
54
110
  onInput,
55
111
  onChange,
56
112
  renderAppender: blocks?.length
@@ -165,9 +165,8 @@ describe( 'Synced patterns', () => {
165
165
  /Pattern Block\. Row 1/
166
166
  );
167
167
 
168
- const innerBlockListWrapper = await within(
169
- reusableBlock
170
- ).findByTestId( 'block-list-wrapper' );
168
+ const innerBlockListWrapper =
169
+ await within( reusableBlock ).findByTestId( 'block-list-wrapper' );
171
170
 
172
171
  // onLayout event has to be explicitly dispatched in BlockList component,
173
172
  // otherwise the inner blocks are not rendered.
@@ -9,6 +9,15 @@
9
9
  "keywords": [ "link" ],
10
10
  "textdomain": "default",
11
11
  "attributes": {
12
+ "tagName": {
13
+ "type": "string",
14
+ "enum": [ "a", "button" ],
15
+ "default": "a"
16
+ },
17
+ "type": {
18
+ "type": "string",
19
+ "default": "button"
20
+ },
12
21
  "textAlign": {
13
22
  "type": "string"
14
23
  },
@@ -22,14 +31,14 @@
22
31
  "title": {
23
32
  "type": "string",
24
33
  "source": "attribute",
25
- "selector": "a",
34
+ "selector": "a,button",
26
35
  "attribute": "title",
27
36
  "__experimentalRole": "content"
28
37
  },
29
38
  "text": {
30
39
  "type": "string",
31
40
  "source": "html",
32
- "selector": "a",
41
+ "selector": "a,button",
33
42
  "__experimentalRole": "content"
34
43
  },
35
44
  "linkTarget": {
@@ -78,8 +78,19 @@ function ButtonEdit( props ) {
78
78
  onReplace,
79
79
  mergeBlocks,
80
80
  } = props;
81
- const { textAlign, linkTarget, placeholder, rel, style, text, url, width } =
82
- attributes;
81
+ const {
82
+ tagName,
83
+ textAlign,
84
+ linkTarget,
85
+ placeholder,
86
+ rel,
87
+ style,
88
+ text,
89
+ url,
90
+ width,
91
+ } = attributes;
92
+
93
+ const TagName = tagName || 'a';
83
94
 
84
95
  function onToggleOpenInNewTab( value ) {
85
96
  const newLinkTarget = value ? '_blank' : undefined;
@@ -128,6 +139,7 @@ function ButtonEdit( props ) {
128
139
  const [ isEditingURL, setIsEditingURL ] = useState( false );
129
140
  const isURLSet = !! url;
130
141
  const opensInNewTab = linkTarget === '_blank';
142
+ const isLinkTag = 'a' === TagName;
131
143
 
132
144
  function startEditing( event ) {
133
145
  event.preventDefault();
@@ -209,7 +221,7 @@ function ButtonEdit( props ) {
209
221
  setAttributes( { textAlign: nextAlign } );
210
222
  } }
211
223
  />
212
- { ! isURLSet && (
224
+ { ! isURLSet && isLinkTag && (
213
225
  <ToolbarButton
214
226
  name="link"
215
227
  icon={ link }
@@ -218,7 +230,7 @@ function ButtonEdit( props ) {
218
230
  onClick={ startEditing }
219
231
  />
220
232
  ) }
221
- { isURLSet && (
233
+ { isURLSet && isLinkTag && (
222
234
  <ToolbarButton
223
235
  name="link"
224
236
  icon={ linkOff }
@@ -229,7 +241,7 @@ function ButtonEdit( props ) {
229
241
  />
230
242
  ) }
231
243
  </BlockControls>
232
- { isSelected && ( isEditingURL || isURLSet ) && (
244
+ { isLinkTag && isSelected && ( isEditingURL || isURLSet ) && (
233
245
  <Popover
234
246
  placement="bottom"
235
247
  onClose={ () => {
@@ -268,12 +280,16 @@ function ButtonEdit( props ) {
268
280
  />
269
281
  </InspectorControls>
270
282
  <InspectorControls group="advanced">
271
- <TextControl
272
- __nextHasNoMarginBottom
273
- label={ __( 'Link rel' ) }
274
- value={ rel || '' }
275
- onChange={ ( newRel ) => setAttributes( { rel: newRel } ) }
276
- />
283
+ { isLinkTag && (
284
+ <TextControl
285
+ __nextHasNoMarginBottom
286
+ label={ __( 'Link rel' ) }
287
+ value={ rel || '' }
288
+ onChange={ ( newRel ) =>
289
+ setAttributes( { rel: newRel } )
290
+ }
291
+ />
292
+ ) }
277
293
  </InspectorControls>
278
294
  </>
279
295
  );
@@ -17,6 +17,8 @@ import {
17
17
 
18
18
  export default function save( { attributes, className } ) {
19
19
  const {
20
+ tagName,
21
+ type,
20
22
  textAlign,
21
23
  fontSize,
22
24
  linkTarget,
@@ -32,6 +34,9 @@ export default function save( { attributes, className } ) {
32
34
  return null;
33
35
  }
34
36
 
37
+ const TagName = tagName || 'a';
38
+ const isButtonTag = 'button' === TagName;
39
+ const buttonType = type || 'button';
35
40
  const borderProps = getBorderClassesAndStyles( attributes );
36
41
  const colorProps = getColorClassesAndStyles( attributes );
37
42
  const spacingProps = getSpacingClassesAndStyles( attributes );
@@ -65,14 +70,15 @@ export default function save( { attributes, className } ) {
65
70
  return (
66
71
  <div { ...useBlockProps.save( { className: wrapperClasses } ) }>
67
72
  <RichText.Content
68
- tagName="a"
73
+ tagName={ TagName }
74
+ type={ isButtonTag ? buttonType : null }
69
75
  className={ buttonClasses }
70
- href={ url }
76
+ href={ isButtonTag ? null : url }
71
77
  title={ title }
72
78
  style={ buttonStyle }
73
79
  value={ text }
74
- target={ linkTarget }
75
- rel={ rel }
80
+ target={ isButtonTag ? null : linkTarget }
81
+ rel={ isButtonTag ? null : rel }
76
82
  />
77
83
  </div>
78
84
  );
@@ -12,6 +12,7 @@ import {
12
12
  store as blockEditorStore,
13
13
  } from '@wordpress/block-editor';
14
14
  import { useSelect } from '@wordpress/data';
15
+ import { store as blocksStore } from '@wordpress/blocks';
15
16
 
16
17
  /**
17
18
  * Internal dependencies
@@ -42,17 +43,26 @@ function ButtonsEdit( { attributes, className } ) {
42
43
  'has-custom-font-size': fontSize || style?.typography?.fontSize,
43
44
  } ),
44
45
  } );
45
- const preferredStyle = useSelect( ( select ) => {
46
+ const { preferredStyle, hasButtonVariations } = useSelect( ( select ) => {
46
47
  const preferredStyleVariations =
47
48
  select( blockEditorStore ).getSettings()
48
49
  .__experimentalPreferredStyleVariations;
49
- return preferredStyleVariations?.value?.[ buttonBlockName ];
50
+ const buttonVariations = select( blocksStore ).getBlockVariations(
51
+ buttonBlockName,
52
+ 'inserter'
53
+ );
54
+ return {
55
+ preferredStyle:
56
+ preferredStyleVariations?.value?.[ buttonBlockName ],
57
+ hasButtonVariations: buttonVariations.length > 0,
58
+ };
50
59
  }, [] );
51
60
 
52
61
  const innerBlocksProps = useInnerBlocksProps( blockProps, {
53
62
  allowedBlocks: ALLOWED_BLOCKS,
54
63
  defaultBlock: DEFAULT_BLOCK,
55
- directInsert: true,
64
+ // This check should be handled by the `Inserter` internally to be consistent across all blocks that use it.
65
+ directInsert: ! hasButtonVariations,
56
66
  template: [
57
67
  [
58
68
  buttonBlockName,
@@ -55,9 +55,10 @@ describe( 'Buttons block', () => {
55
55
 
56
56
  // onLayout event has to be explicitly dispatched in BlockList component,
57
57
  // otherwise the inner blocks are not rendered.
58
- const innerBlockListWrapper = await within(
59
- buttonsBlock
60
- ).findByTestId( 'block-list-wrapper' );
58
+ const innerBlockListWrapper =
59
+ await within( buttonsBlock ).findByTestId(
60
+ 'block-list-wrapper'
61
+ );
61
62
  fireEvent( innerBlockListWrapper, 'layout', {
62
63
  nativeEvent: {
63
64
  layout: {
@@ -66,19 +67,18 @@ describe( 'Buttons block', () => {
66
67
  },
67
68
  } );
68
69
 
69
- const [ buttonInnerBlock ] = await within(
70
- buttonsBlock
71
- ).findAllByLabelText( /Button Block\. Row 1/ );
70
+ const [ buttonInnerBlock ] =
71
+ await within( buttonsBlock ).findAllByLabelText(
72
+ /Button Block\. Row 1/
73
+ );
72
74
  fireEvent.press( buttonInnerBlock );
73
75
 
74
- const settingsButton = await editor.findByLabelText(
75
- 'Open Settings'
76
- );
76
+ const settingsButton =
77
+ await editor.findByLabelText( 'Open Settings' );
77
78
  fireEvent.press( settingsButton );
78
79
 
79
- const radiusStepper = await editor.findByLabelText(
80
- /Border Radius/
81
- );
80
+ const radiusStepper =
81
+ await editor.findByLabelText( /Border Radius/ );
82
82
 
83
83
  const incrementButton = await within( radiusStepper ).findByTestId(
84
84
  'Increment',
@@ -98,9 +98,10 @@ describe( 'Buttons block', () => {
98
98
  const buttonsBlock = await getBlock( screen, 'Buttons' );
99
99
 
100
100
  // Trigger inner blocks layout
101
- const innerBlockListWrapper = await within(
102
- buttonsBlock
103
- ).findByTestId( 'block-list-wrapper' );
101
+ const innerBlockListWrapper =
102
+ await within( buttonsBlock ).findByTestId(
103
+ 'block-list-wrapper'
104
+ );
104
105
  fireEvent( innerBlockListWrapper, 'layout', {
105
106
  nativeEvent: {
106
107
  layout: {
@@ -119,9 +120,10 @@ describe( 'Buttons block', () => {
119
120
  fireEvent.press( appenderButton );
120
121
 
121
122
  // Check for new button
122
- const [ secondButtonBlock ] = await within(
123
- buttonsBlock
124
- ).findAllByLabelText( /Button Block\. Row 2/ );
123
+ const [ secondButtonBlock ] =
124
+ await within( buttonsBlock ).findAllByLabelText(
125
+ /Button Block\. Row 2/
126
+ );
125
127
  expect( secondButtonBlock ).toBeVisible();
126
128
 
127
129
  // Add a Paragraph block using the empty placeholder at the bottom
@@ -148,9 +150,10 @@ describe( 'Buttons block', () => {
148
150
  fireEvent.press( buttonsBlock );
149
151
 
150
152
  // Trigger inner blocks layout
151
- const innerBlockListWrapper = await within(
152
- buttonsBlock
153
- ).findByTestId( 'block-list-wrapper' );
153
+ const innerBlockListWrapper =
154
+ await within( buttonsBlock ).findByTestId(
155
+ 'block-list-wrapper'
156
+ );
154
157
  fireEvent( innerBlockListWrapper, 'layout', {
155
158
  nativeEvent: {
156
159
  layout: {
@@ -207,9 +210,10 @@ describe( 'Buttons block', () => {
207
210
  const buttonsBlock = await getBlock( screen, 'Buttons' );
208
211
 
209
212
  // Trigger inner blocks layout
210
- const innerBlockListWrapper = await within(
211
- buttonsBlock
212
- ).findByTestId( 'block-list-wrapper' );
213
+ const innerBlockListWrapper =
214
+ await within( buttonsBlock ).findByTestId(
215
+ 'block-list-wrapper'
216
+ );
213
217
  fireEvent( innerBlockListWrapper, 'layout', {
214
218
  nativeEvent: {
215
219
  layout: {
@@ -44,12 +44,12 @@ function render_block_core_calendar( $attributes ) {
44
44
 
45
45
  // Text color.
46
46
  $preset_text_color = array_key_exists( 'textColor', $attributes ) ? "var:preset|color|{$attributes['textColor']}" : null;
47
- $custom_text_color = _wp_array_get( $attributes, array( 'style', 'color', 'text' ), null );
47
+ $custom_text_color = $attributes['style']['color']['text'] ?? null;
48
48
  $color_block_styles['text'] = $preset_text_color ? $preset_text_color : $custom_text_color;
49
49
 
50
50
  // Background Color.
51
51
  $preset_background_color = array_key_exists( 'backgroundColor', $attributes ) ? "var:preset|color|{$attributes['backgroundColor']}" : null;
52
- $custom_background_color = _wp_array_get( $attributes, array( 'style', 'color', 'background' ), null );
52
+ $custom_background_color = $attributes['style']['color']['background'] ?? null;
53
53
  $color_block_styles['background'] = $preset_background_color ? $preset_background_color : $custom_background_color;
54
54
 
55
55
  // Generate color styles and classes.
@@ -10,7 +10,8 @@
10
10
  "content": {
11
11
  "type": "string",
12
12
  "source": "html",
13
- "selector": "code"
13
+ "selector": "code",
14
+ "__unstablePreserveWhiteSpace": true
14
15
  }
15
16
  },
16
17
  "supports": {