@wordpress/block-library 8.7.0 → 8.9.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 (416) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/column/index.js +2 -1
  3. package/build/column/index.js.map +1 -1
  4. package/build/columns/edit.js +24 -6
  5. package/build/columns/edit.js.map +1 -1
  6. package/build/columns/index.js +2 -1
  7. package/build/columns/index.js.map +1 -1
  8. package/build/columns/utils.js +4 -9
  9. package/build/columns/utils.js.map +1 -1
  10. package/build/cover/edit/index.js +46 -50
  11. package/build/cover/edit/index.js.map +1 -1
  12. package/build/cover/edit/{resizable-cover.js → resizable-cover-popover.js} +32 -6
  13. package/build/cover/edit/resizable-cover-popover.js.map +1 -0
  14. package/build/cover/index.js +12 -0
  15. package/build/cover/index.js.map +1 -1
  16. package/build/cover/transforms.js +10 -7
  17. package/build/cover/transforms.js.map +1 -1
  18. package/build/details/edit.js +67 -0
  19. package/build/details/edit.js.map +1 -0
  20. package/build/details/index.js +110 -0
  21. package/build/details/index.js.map +1 -0
  22. package/build/details/save.js +33 -0
  23. package/build/details/save.js.map +1 -0
  24. package/build/details-content/edit.js +34 -0
  25. package/build/details-content/edit.js.map +1 -0
  26. package/build/details-content/index.js +94 -0
  27. package/build/details-content/index.js.map +1 -0
  28. package/build/details-content/save.js +20 -0
  29. package/build/details-content/save.js.map +1 -0
  30. package/build/details-summary/edit.js +42 -0
  31. package/build/details-summary/edit.js.map +1 -0
  32. package/build/details-summary/index.js +97 -0
  33. package/build/details-summary/index.js.map +1 -0
  34. package/build/details-summary/save.js +24 -0
  35. package/build/details-summary/save.js.map +1 -0
  36. package/build/embed/deprecated.js +4 -1
  37. package/build/embed/deprecated.js.map +1 -1
  38. package/build/embed/embed-link-settings.native.js +1 -1
  39. package/build/embed/embed-link-settings.native.js.map +1 -1
  40. package/build/embed/embed-placeholder.js +1 -1
  41. package/build/embed/embed-placeholder.js.map +1 -1
  42. package/build/embed/index.js +4 -1
  43. package/build/embed/index.js.map +1 -1
  44. package/build/embed/transforms.js +4 -1
  45. package/build/embed/transforms.js.map +1 -1
  46. package/build/embed/util.js +4 -1
  47. package/build/embed/util.js.map +1 -1
  48. package/build/file/edit.native.js +0 -2
  49. package/build/file/edit.native.js.map +1 -1
  50. package/build/gallery/use-get-media.native.js +2 -1
  51. package/build/gallery/use-get-media.native.js.map +1 -1
  52. package/build/group/edit.js +3 -1
  53. package/build/group/edit.js.map +1 -1
  54. package/build/group/index.js +3 -0
  55. package/build/group/index.js.map +1 -1
  56. package/build/image/edit.js +16 -13
  57. package/build/image/edit.js.map +1 -1
  58. package/build/image/index.js +5 -3
  59. package/build/image/index.js.map +1 -1
  60. package/build/index.js +24 -6
  61. package/build/index.js.map +1 -1
  62. package/build/index.native.js +9 -5
  63. package/build/index.native.js.map +1 -1
  64. package/build/media-text/edit.js +4 -2
  65. package/build/media-text/edit.js.map +1 -1
  66. package/build/media-text/index.js +3 -0
  67. package/build/media-text/index.js.map +1 -1
  68. package/build/media-text/media-container.js +2 -6
  69. package/build/media-text/media-container.js.map +1 -1
  70. package/build/media-text/media-container.native.js +3 -3
  71. package/build/media-text/media-container.native.js.map +1 -1
  72. package/build/navigation/deprecated.js +8 -11
  73. package/build/navigation/deprecated.js.map +1 -1
  74. package/build/navigation/edit/index.js +32 -64
  75. package/build/navigation/edit/index.js.map +1 -1
  76. package/build/navigation/edit/unsaved-inner-blocks.js +1 -14
  77. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  78. package/build/post-author/index.js +0 -1
  79. package/build/post-author/index.js.map +1 -1
  80. package/build/post-date/edit.js +4 -2
  81. package/build/post-date/edit.js.map +1 -1
  82. package/build/post-excerpt/edit.js +2 -2
  83. package/build/post-excerpt/edit.js.map +1 -1
  84. package/build/post-featured-image/dimension-controls.js +2 -1
  85. package/build/post-featured-image/dimension-controls.js.map +1 -1
  86. package/build/post-featured-image/edit.js +16 -27
  87. package/build/post-featured-image/edit.js.map +1 -1
  88. package/build/post-time-to-read/edit.js +1 -1
  89. package/build/post-time-to-read/edit.js.map +1 -1
  90. package/build/post-time-to-read/index.js +7 -0
  91. package/build/post-time-to-read/index.js.map +1 -1
  92. package/build/query/deprecated.js +8 -6
  93. package/build/query/deprecated.js.map +1 -1
  94. package/build/query/edit/inspector-controls/create-new-post-link.js +41 -0
  95. package/build/query/edit/inspector-controls/create-new-post-link.js.map +1 -0
  96. package/build/query/edit/inspector-controls/index.js +14 -6
  97. package/build/query/edit/inspector-controls/index.js.map +1 -1
  98. package/build/query/edit/pattern-selection-modal.js +2 -1
  99. package/build/query/edit/pattern-selection-modal.js.map +1 -1
  100. package/build/query/index.js +5 -12
  101. package/build/query/index.js.map +1 -1
  102. package/build/site-logo/edit.js +114 -16
  103. package/build/site-logo/edit.js.map +1 -1
  104. package/build/site-logo/index.js +1 -1
  105. package/build/social-link/icons/chain.js +1 -1
  106. package/build/social-link/icons/chain.js.map +1 -1
  107. package/build/social-link/icons/mail.js +1 -1
  108. package/build/social-link/icons/mail.js.map +1 -1
  109. package/build/spacer/controls.js +25 -6
  110. package/build/spacer/controls.js.map +1 -1
  111. package/build/spacer/edit.js +129 -13
  112. package/build/spacer/edit.js.map +1 -1
  113. package/build/spacer/save.js +2 -2
  114. package/build/spacer/save.js.map +1 -1
  115. package/build/table/state.js +35 -35
  116. package/build/table/state.js.map +1 -1
  117. package/build/template-part/edit/index.js +2 -1
  118. package/build/template-part/edit/index.js.map +1 -1
  119. package/build/template-part/edit/utils/hooks.js +2 -2
  120. package/build/template-part/edit/utils/hooks.js.map +1 -1
  121. package/build/term-description/index.js +1 -2
  122. package/build/term-description/index.js.map +1 -1
  123. package/build/utils/migrate-font-family.js +12 -5
  124. package/build/utils/migrate-font-family.js.map +1 -1
  125. package/build/video/edit.native.js +4 -3
  126. package/build/video/edit.native.js.map +1 -1
  127. package/build-module/column/index.js +2 -1
  128. package/build-module/column/index.js.map +1 -1
  129. package/build-module/columns/edit.js +24 -6
  130. package/build-module/columns/edit.js.map +1 -1
  131. package/build-module/columns/index.js +2 -1
  132. package/build-module/columns/index.js.map +1 -1
  133. package/build-module/columns/utils.js +4 -8
  134. package/build-module/columns/utils.js.map +1 -1
  135. package/build-module/cover/edit/index.js +48 -52
  136. package/build-module/cover/edit/index.js.map +1 -1
  137. package/build-module/cover/edit/{resizable-cover.js → resizable-cover-popover.js} +31 -6
  138. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -0
  139. package/build-module/cover/index.js +12 -0
  140. package/build-module/cover/index.js.map +1 -1
  141. package/build-module/cover/transforms.js +5 -1
  142. package/build-module/cover/transforms.js.map +1 -1
  143. package/build-module/details/edit.js +52 -0
  144. package/build-module/details/edit.js.map +1 -0
  145. package/build-module/details/index.js +91 -0
  146. package/build-module/details/index.js.map +1 -0
  147. package/build-module/details/save.js +20 -0
  148. package/build-module/details/save.js.map +1 -0
  149. package/build-module/details-content/edit.js +23 -0
  150. package/build-module/details-content/edit.js.map +1 -0
  151. package/build-module/details-content/index.js +76 -0
  152. package/build-module/details-content/index.js.map +1 -0
  153. package/build-module/details-content/save.js +11 -0
  154. package/build-module/details-content/save.js.map +1 -0
  155. package/build-module/details-summary/edit.js +30 -0
  156. package/build-module/details-summary/edit.js.map +1 -0
  157. package/build-module/details-summary/index.js +79 -0
  158. package/build-module/details-summary/index.js.map +1 -0
  159. package/build-module/details-summary/save.js +16 -0
  160. package/build-module/details-summary/save.js.map +1 -0
  161. package/build-module/embed/deprecated.js +4 -1
  162. package/build-module/embed/deprecated.js.map +1 -1
  163. package/build-module/embed/embed-link-settings.native.js +1 -1
  164. package/build-module/embed/embed-link-settings.native.js.map +1 -1
  165. package/build-module/embed/embed-placeholder.js +1 -1
  166. package/build-module/embed/embed-placeholder.js.map +1 -1
  167. package/build-module/embed/index.js +4 -1
  168. package/build-module/embed/index.js.map +1 -1
  169. package/build-module/embed/transforms.js +4 -1
  170. package/build-module/embed/transforms.js.map +1 -1
  171. package/build-module/embed/util.js +4 -1
  172. package/build-module/embed/util.js.map +1 -1
  173. package/build-module/file/edit.native.js +0 -2
  174. package/build-module/file/edit.native.js.map +1 -1
  175. package/build-module/gallery/use-get-media.native.js +2 -1
  176. package/build-module/gallery/use-get-media.native.js.map +1 -1
  177. package/build-module/group/edit.js +3 -1
  178. package/build-module/group/edit.js.map +1 -1
  179. package/build-module/group/index.js +3 -0
  180. package/build-module/group/index.js.map +1 -1
  181. package/build-module/image/edit.js +16 -13
  182. package/build-module/image/edit.js.map +1 -1
  183. package/build-module/image/index.js +5 -3
  184. package/build-module/image/index.js.map +1 -1
  185. package/build-module/index.js +21 -6
  186. package/build-module/index.js.map +1 -1
  187. package/build-module/index.native.js +9 -5
  188. package/build-module/index.native.js.map +1 -1
  189. package/build-module/media-text/edit.js +4 -2
  190. package/build-module/media-text/edit.js.map +1 -1
  191. package/build-module/media-text/index.js +3 -0
  192. package/build-module/media-text/index.js.map +1 -1
  193. package/build-module/media-text/media-container.js +1 -5
  194. package/build-module/media-text/media-container.js.map +1 -1
  195. package/build-module/media-text/media-container.native.js +1 -1
  196. package/build-module/media-text/media-container.native.js.map +1 -1
  197. package/build-module/navigation/deprecated.js +8 -10
  198. package/build-module/navigation/deprecated.js.map +1 -1
  199. package/build-module/navigation/edit/index.js +31 -63
  200. package/build-module/navigation/edit/index.js.map +1 -1
  201. package/build-module/navigation/edit/unsaved-inner-blocks.js +1 -14
  202. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  203. package/build-module/post-author/index.js +0 -1
  204. package/build-module/post-author/index.js.map +1 -1
  205. package/build-module/post-date/edit.js +4 -2
  206. package/build-module/post-date/edit.js.map +1 -1
  207. package/build-module/post-excerpt/edit.js +2 -2
  208. package/build-module/post-excerpt/edit.js.map +1 -1
  209. package/build-module/post-featured-image/dimension-controls.js +2 -1
  210. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  211. package/build-module/post-featured-image/edit.js +16 -27
  212. package/build-module/post-featured-image/edit.js.map +1 -1
  213. package/build-module/post-time-to-read/edit.js +1 -1
  214. package/build-module/post-time-to-read/edit.js.map +1 -1
  215. package/build-module/post-time-to-read/index.js +7 -0
  216. package/build-module/post-time-to-read/index.js.map +1 -1
  217. package/build-module/query/deprecated.js +5 -2
  218. package/build-module/query/deprecated.js.map +1 -1
  219. package/build-module/query/edit/inspector-controls/create-new-post-link.js +33 -0
  220. package/build-module/query/edit/inspector-controls/create-new-post-link.js.map +1 -0
  221. package/build-module/query/edit/inspector-controls/index.js +12 -7
  222. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  223. package/build-module/query/edit/pattern-selection-modal.js +2 -1
  224. package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
  225. package/build-module/query/index.js +5 -10
  226. package/build-module/query/index.js.map +1 -1
  227. package/build-module/site-logo/edit.js +115 -18
  228. package/build-module/site-logo/edit.js.map +1 -1
  229. package/build-module/site-logo/index.js +1 -1
  230. package/build-module/social-link/icons/chain.js +1 -1
  231. package/build-module/social-link/icons/chain.js.map +1 -1
  232. package/build-module/social-link/icons/mail.js +1 -1
  233. package/build-module/social-link/icons/mail.js.map +1 -1
  234. package/build-module/spacer/controls.js +27 -9
  235. package/build-module/spacer/controls.js.map +1 -1
  236. package/build-module/spacer/edit.js +129 -14
  237. package/build-module/spacer/edit.js.map +1 -1
  238. package/build-module/spacer/save.js +3 -3
  239. package/build-module/spacer/save.js.map +1 -1
  240. package/build-module/table/state.js +35 -33
  241. package/build-module/table/state.js.map +1 -1
  242. package/build-module/template-part/edit/index.js +2 -1
  243. package/build-module/template-part/edit/index.js.map +1 -1
  244. package/build-module/template-part/edit/utils/hooks.js +2 -2
  245. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  246. package/build-module/term-description/index.js +1 -2
  247. package/build-module/term-description/index.js.map +1 -1
  248. package/build-module/utils/migrate-font-family.js +9 -1
  249. package/build-module/utils/migrate-font-family.js.map +1 -1
  250. package/build-module/video/edit.native.js +4 -3
  251. package/build-module/video/edit.native.js.map +1 -1
  252. package/build-style/columns/style-rtl.css +4 -1
  253. package/build-style/columns/style.css +4 -1
  254. package/build-style/common-rtl.css +1 -1
  255. package/build-style/common.css +1 -1
  256. package/build-style/cover/editor-rtl.css +9 -10
  257. package/build-style/cover/editor.css +9 -10
  258. package/build-style/cover/style-rtl.css +1 -1
  259. package/build-style/cover/style.css +1 -1
  260. package/build-style/details/style-rtl.css +91 -0
  261. package/build-style/details/style.css +91 -0
  262. package/build-style/details-summary/editor-rtl.css +91 -0
  263. package/build-style/details-summary/editor.css +91 -0
  264. package/build-style/details-summary/style-rtl.css +91 -0
  265. package/build-style/details-summary/style.css +91 -0
  266. package/build-style/editor-rtl.css +97 -74
  267. package/build-style/editor.css +97 -74
  268. package/build-style/file/style-rtl.css +4 -3
  269. package/build-style/file/style.css +4 -3
  270. package/build-style/html/editor-rtl.css +2 -2
  271. package/build-style/html/editor.css +2 -2
  272. package/build-style/image/editor-rtl.css +1 -1
  273. package/build-style/image/editor.css +1 -1
  274. package/build-style/post-excerpt/style-rtl.css +1 -1
  275. package/build-style/post-excerpt/style.css +1 -1
  276. package/build-style/pullquote/style-rtl.css +4 -1
  277. package/build-style/pullquote/style.css +4 -1
  278. package/build-style/query/editor-rtl.css +8 -12
  279. package/build-style/query/editor.css +8 -12
  280. package/build-style/search/style-rtl.css +2 -0
  281. package/build-style/search/style.css +2 -0
  282. package/build-style/shortcode/editor-rtl.css +15 -35
  283. package/build-style/shortcode/editor.css +15 -35
  284. package/build-style/site-logo/editor-rtl.css +46 -0
  285. package/build-style/site-logo/editor.css +46 -0
  286. package/build-style/spacer/editor-rtl.css +4 -2
  287. package/build-style/spacer/editor.css +4 -2
  288. package/build-style/style-rtl.css +25 -8
  289. package/build-style/style.css +25 -8
  290. package/build-style/template-part/editor-rtl.css +8 -12
  291. package/build-style/template-part/editor.css +8 -12
  292. package/package.json +31 -31
  293. package/src/buttons/test/__snapshots__/edit.native.js.snap +18 -0
  294. package/src/buttons/test/edit.native.js +123 -2
  295. package/src/column/block.json +2 -1
  296. package/src/columns/block.json +2 -1
  297. package/src/columns/edit.js +33 -9
  298. package/src/columns/style.scss +5 -1
  299. package/src/columns/utils.js +8 -9
  300. package/src/common.scss +1 -1
  301. package/src/cover/block.json +12 -0
  302. package/src/cover/edit/index.js +44 -37
  303. package/src/cover/edit/resizable-cover-popover.js +82 -0
  304. package/src/cover/editor.scss +20 -13
  305. package/src/cover/index.php +9 -10
  306. package/src/cover/style.scss +1 -1
  307. package/src/cover/test/edit.js +1 -1
  308. package/src/cover/transforms.js +4 -1
  309. package/src/details/block.json +54 -0
  310. package/src/details/edit.js +59 -0
  311. package/src/details/index.js +35 -0
  312. package/src/details/save.js +15 -0
  313. package/src/details/style.scss +3 -0
  314. package/src/details-content/block.json +50 -0
  315. package/src/details-content/edit.js +29 -0
  316. package/src/details-content/index.js +23 -0
  317. package/src/details-content/save.js +12 -0
  318. package/src/details-summary/block.json +53 -0
  319. package/src/details-summary/edit.js +27 -0
  320. package/src/details-summary/editor.scss +3 -0
  321. package/src/details-summary/index.js +23 -0
  322. package/src/details-summary/save.js +13 -0
  323. package/src/details-summary/style.scss +3 -0
  324. package/src/editor.scss +1 -0
  325. package/src/embed/block.json +4 -1
  326. package/src/embed/embed-link-settings.native.js +1 -1
  327. package/src/embed/embed-placeholder.js +1 -1
  328. package/src/file/edit.native.js +0 -2
  329. package/src/file/style.scss +5 -2
  330. package/src/gallery/test/index.native.js +4 -4
  331. package/src/gallery/test/use-get-media.native.js +24 -0
  332. package/src/gallery/use-get-media.native.js +1 -1
  333. package/src/group/block.json +3 -0
  334. package/src/group/edit.js +8 -2
  335. package/src/heading/test/__snapshots__/index.native.js.snap +12 -0
  336. package/src/heading/test/index.native.js +71 -0
  337. package/src/html/editor.scss +2 -21
  338. package/src/image/block.json +5 -3
  339. package/src/image/edit.js +21 -17
  340. package/src/image/editor.scss +1 -1
  341. package/src/index.js +13 -3
  342. package/src/index.native.js +9 -5
  343. package/src/list/test/edit.native.js +7 -7
  344. package/src/media-text/block.json +3 -0
  345. package/src/media-text/edit.js +2 -1
  346. package/src/media-text/media-container.js +1 -5
  347. package/src/media-text/media-container.native.js +1 -1
  348. package/src/navigation/deprecated.js +15 -19
  349. package/src/navigation/edit/index.js +32 -106
  350. package/src/navigation/edit/unsaved-inner-blocks.js +34 -46
  351. package/src/navigation/index.php +15 -12
  352. package/src/paragraph/test/edit.native.js +616 -1
  353. package/src/post-author/block.json +0 -1
  354. package/src/post-date/edit.js +4 -0
  355. package/src/post-date/index.php +17 -8
  356. package/src/post-excerpt/edit.js +1 -1
  357. package/src/post-excerpt/index.php +3 -3
  358. package/src/post-excerpt/style.scss +2 -1
  359. package/src/post-featured-image/dimension-controls.js +5 -1
  360. package/src/post-featured-image/edit.js +14 -34
  361. package/src/post-featured-image/index.php +1 -1
  362. package/src/post-time-to-read/block.json +7 -0
  363. package/src/post-time-to-read/edit.js +1 -1
  364. package/src/post-time-to-read/index.php +3 -3
  365. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -2
  366. package/src/preformatted/test/edit.native.js +42 -2
  367. package/src/pullquote/style.scss +5 -1
  368. package/src/pullquote/test/edit.native.js +65 -0
  369. package/src/query/deprecated.js +4 -1
  370. package/src/query/edit/inspector-controls/create-new-post-link.js +26 -0
  371. package/src/query/edit/inspector-controls/index.js +13 -6
  372. package/src/query/edit/pattern-selection-modal.js +1 -0
  373. package/src/query/editor.scss +8 -11
  374. package/src/query/index.js +1 -7
  375. package/src/quote/test/edit.native.js +88 -0
  376. package/src/search/index.php +1 -1
  377. package/src/search/style.scss +3 -0
  378. package/src/shortcode/editor.scss +6 -5
  379. package/src/site-logo/block.json +1 -1
  380. package/src/site-logo/edit.js +123 -9
  381. package/src/site-logo/editor.scss +57 -0
  382. package/src/social-link/icons/chain.js +1 -1
  383. package/src/social-link/icons/mail.js +1 -1
  384. package/src/social-link/index.php +2 -2
  385. package/src/spacer/controls.js +42 -17
  386. package/src/spacer/edit.js +176 -18
  387. package/src/spacer/editor.scss +2 -1
  388. package/src/spacer/save.js +3 -3
  389. package/src/style.scss +2 -0
  390. package/src/table/state.js +83 -66
  391. package/src/template-part/edit/index.js +1 -0
  392. package/src/template-part/edit/utils/hooks.js +2 -2
  393. package/src/template-part/editor.scss +9 -11
  394. package/src/term-description/block.json +1 -2
  395. package/src/utils/migrate-font-family.js +8 -1
  396. package/src/verse/test/edit.native.js +28 -0
  397. package/src/video/edit.native.js +2 -2
  398. package/tsconfig.json +1 -0
  399. package/build/cover/edit/resizable-cover.js.map +0 -1
  400. package/build/media-text/media-container-icon.js +0 -27
  401. package/build/media-text/media-container-icon.js.map +0 -1
  402. package/build/query/hooks.js +0 -72
  403. package/build/query/hooks.js.map +0 -1
  404. package/build/utils/clean-empty-object.js +0 -34
  405. package/build/utils/clean-empty-object.js.map +0 -1
  406. package/build-module/cover/edit/resizable-cover.js.map +0 -1
  407. package/build-module/media-text/media-container-icon.js +0 -17
  408. package/build-module/media-text/media-container-icon.js.map +0 -1
  409. package/build-module/query/hooks.js +0 -59
  410. package/build-module/query/hooks.js.map +0 -1
  411. package/build-module/utils/clean-empty-object.js +0 -25
  412. package/build-module/utils/clean-empty-object.js.map +0 -1
  413. package/src/cover/edit/resizable-cover.js +0 -61
  414. package/src/media-text/media-container-icon.js +0 -12
  415. package/src/query/hooks.js +0 -53
  416. package/src/utils/clean-empty-object.js +0 -28
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "8.7.0",
3
+ "version": "8.9.0",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -31,35 +31,35 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/a11y": "^3.30.0",
35
- "@wordpress/api-fetch": "^6.27.0",
36
- "@wordpress/autop": "^3.30.0",
37
- "@wordpress/blob": "^3.30.0",
38
- "@wordpress/block-editor": "^11.7.0",
39
- "@wordpress/blocks": "^12.7.0",
40
- "@wordpress/components": "^23.7.0",
41
- "@wordpress/compose": "^6.7.0",
42
- "@wordpress/core-data": "^6.7.0",
43
- "@wordpress/data": "^9.0.0",
44
- "@wordpress/date": "^4.30.0",
45
- "@wordpress/deprecated": "^3.30.0",
46
- "@wordpress/dom": "^3.30.0",
47
- "@wordpress/element": "^5.7.0",
48
- "@wordpress/escape-html": "^2.30.0",
49
- "@wordpress/hooks": "^3.30.0",
50
- "@wordpress/html-entities": "^3.30.0",
51
- "@wordpress/i18n": "^4.30.0",
52
- "@wordpress/icons": "^9.21.0",
53
- "@wordpress/keycodes": "^3.30.0",
54
- "@wordpress/notices": "^3.30.0",
55
- "@wordpress/primitives": "^3.28.0",
56
- "@wordpress/private-apis": "^0.12.0",
57
- "@wordpress/reusable-blocks": "^4.7.0",
58
- "@wordpress/rich-text": "^6.7.0",
59
- "@wordpress/server-side-render": "^4.7.0",
60
- "@wordpress/url": "^3.31.0",
61
- "@wordpress/viewport": "^5.7.0",
62
- "@wordpress/wordcount": "^3.30.0",
34
+ "@wordpress/a11y": "^3.32.0",
35
+ "@wordpress/api-fetch": "^6.29.0",
36
+ "@wordpress/autop": "^3.32.0",
37
+ "@wordpress/blob": "^3.32.0",
38
+ "@wordpress/block-editor": "^12.0.0",
39
+ "@wordpress/blocks": "^12.9.0",
40
+ "@wordpress/components": "^23.9.0",
41
+ "@wordpress/compose": "^6.9.0",
42
+ "@wordpress/core-data": "^6.9.0",
43
+ "@wordpress/data": "^9.2.0",
44
+ "@wordpress/date": "^4.32.0",
45
+ "@wordpress/deprecated": "^3.32.0",
46
+ "@wordpress/dom": "^3.32.0",
47
+ "@wordpress/element": "^5.9.0",
48
+ "@wordpress/escape-html": "^2.32.0",
49
+ "@wordpress/hooks": "^3.32.0",
50
+ "@wordpress/html-entities": "^3.32.0",
51
+ "@wordpress/i18n": "^4.32.0",
52
+ "@wordpress/icons": "^9.23.0",
53
+ "@wordpress/keycodes": "^3.32.0",
54
+ "@wordpress/notices": "^4.0.0",
55
+ "@wordpress/primitives": "^3.30.0",
56
+ "@wordpress/private-apis": "^0.14.0",
57
+ "@wordpress/reusable-blocks": "^4.9.0",
58
+ "@wordpress/rich-text": "^6.9.0",
59
+ "@wordpress/server-side-render": "^4.9.0",
60
+ "@wordpress/url": "^3.33.0",
61
+ "@wordpress/viewport": "^5.9.0",
62
+ "@wordpress/wordcount": "^3.32.0",
63
63
  "change-case": "^4.1.2",
64
64
  "classnames": "^2.3.1",
65
65
  "colord": "^2.7.0",
@@ -78,5 +78,5 @@
78
78
  "publishConfig": {
79
79
  "access": "public"
80
80
  },
81
- "gitHead": "d5c28a67b11e91e3e4b8e90346bfcb90909364d6"
81
+ "gitHead": "6df0c62d43b8901414ccd22ffbe56eaa99d012a6"
82
82
  }
@@ -1,5 +1,23 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`Buttons block color customization sets a background color 1`] = `
4
+ "<!-- wp:buttons -->
5
+ <div class="wp-block-buttons"><!-- wp:button {"backgroundColor":"luminous-vivid-amber"} /--></div>
6
+ <!-- /wp:buttons -->"
7
+ `;
8
+
9
+ exports[`Buttons block color customization sets a gradient background color 1`] = `
10
+ "<!-- wp:buttons -->
11
+ <div class="wp-block-buttons"><!-- wp:button {"gradient":"light-green-cyan-to-vivid-green-cyan"} /--></div>
12
+ <!-- /wp:buttons -->"
13
+ `;
14
+
15
+ exports[`Buttons block color customization sets a text color 1`] = `
16
+ "<!-- wp:buttons -->
17
+ <div class="wp-block-buttons"><!-- wp:button {"textColor":"pale-pink"} /--></div>
18
+ <!-- /wp:buttons -->"
19
+ `;
20
+
3
21
  exports[`Buttons block justify content sets Justify items center option 1`] = `
4
22
  "<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
5
23
  <div class="wp-block-buttons"><!-- wp:button /--></div>
@@ -2,12 +2,15 @@
2
2
  * External dependencies
3
3
  */
4
4
  import {
5
+ addBlock,
5
6
  fireEvent,
6
7
  getEditorHtml,
7
8
  within,
8
9
  getBlock,
9
10
  initializeEditor,
10
- changeTextOfRichText,
11
+ triggerBlockListLayout,
12
+ typeInRichText,
13
+ waitFor,
11
14
  } from 'test/helpers';
12
15
 
13
16
  /**
@@ -196,7 +199,7 @@ describe( 'Buttons block', () => {
196
199
  within( secondButtonBlock ).getByLabelText(
197
200
  'Text input. Empty'
198
201
  );
199
- changeTextOfRichText( secondButtonInput, 'Hello!' );
202
+ typeInRichText( secondButtonInput, 'Hello!' );
200
203
 
201
204
  expect( getEditorHtml() ).toMatchSnapshot();
202
205
  } );
@@ -271,4 +274,122 @@ describe( 'Buttons block', () => {
271
274
  } )
272
275
  );
273
276
  } );
277
+
278
+ describe( 'color customization', () => {
279
+ it( 'sets a text color', async () => {
280
+ // Arrange
281
+ const screen = await initializeEditor();
282
+ await addBlock( screen, 'Buttons' );
283
+
284
+ // Act
285
+ const buttonsBlock = getBlock( screen, 'Buttons' );
286
+ fireEvent.press( buttonsBlock );
287
+
288
+ // Trigger onLayout for the list
289
+ await triggerBlockListLayout( buttonsBlock );
290
+
291
+ const buttonBlock = await getBlock( screen, 'Button' );
292
+ fireEvent.press( buttonBlock );
293
+
294
+ // Open Block Settings.
295
+ fireEvent.press( screen.getByLabelText( 'Open Settings' ) );
296
+
297
+ // Wait for Block Settings to be visible.
298
+ const blockSettingsModal = screen.getByTestId(
299
+ 'block-settings-modal'
300
+ );
301
+ await waitFor( () => blockSettingsModal.props.isVisible );
302
+
303
+ // Open Text color settings
304
+ fireEvent.press( screen.getByLabelText( 'Text, Default' ) );
305
+
306
+ // Tap one color
307
+ fireEvent.press( screen.getByLabelText( 'Pale pink' ) );
308
+
309
+ // Dismiss the Block Settings modal.
310
+ fireEvent( blockSettingsModal, 'backdropPress' );
311
+
312
+ // Assert
313
+ expect( getEditorHtml() ).toMatchSnapshot();
314
+ } );
315
+
316
+ it( 'sets a background color', async () => {
317
+ // Arrange
318
+ const screen = await initializeEditor();
319
+ await addBlock( screen, 'Buttons' );
320
+
321
+ // Act
322
+ const buttonsBlock = getBlock( screen, 'Buttons' );
323
+ fireEvent.press( buttonsBlock );
324
+
325
+ // Trigger onLayout for the list
326
+ await triggerBlockListLayout( buttonsBlock );
327
+
328
+ const buttonBlock = await getBlock( screen, 'Button' );
329
+ fireEvent.press( buttonBlock );
330
+
331
+ // Open Block Settings.
332
+ fireEvent.press( screen.getByLabelText( 'Open Settings' ) );
333
+
334
+ // Wait for Block Settings to be visible.
335
+ const blockSettingsModal = screen.getByTestId(
336
+ 'block-settings-modal'
337
+ );
338
+ await waitFor( () => blockSettingsModal.props.isVisible );
339
+
340
+ // Open Text color settings
341
+ fireEvent.press( screen.getByLabelText( 'Background, Default' ) );
342
+
343
+ // Tap one color
344
+ fireEvent.press( screen.getByLabelText( 'Luminous vivid amber' ) );
345
+
346
+ // Dismiss the Block Settings modal.
347
+ fireEvent( blockSettingsModal, 'backdropPress' );
348
+
349
+ // Assert
350
+ expect( getEditorHtml() ).toMatchSnapshot();
351
+ } );
352
+
353
+ it( 'sets a gradient background color', async () => {
354
+ // Arrange
355
+ const screen = await initializeEditor();
356
+ await addBlock( screen, 'Buttons' );
357
+
358
+ // Act
359
+ const buttonsBlock = getBlock( screen, 'Buttons' );
360
+ fireEvent.press( buttonsBlock );
361
+
362
+ // Trigger onLayout for the list
363
+ await triggerBlockListLayout( buttonsBlock );
364
+
365
+ const buttonBlock = await getBlock( screen, 'Button' );
366
+ fireEvent.press( buttonBlock );
367
+
368
+ // Open Block Settings.
369
+ fireEvent.press( screen.getByLabelText( 'Open Settings' ) );
370
+
371
+ // Wait for Block Settings to be visible.
372
+ const blockSettingsModal = screen.getByTestId(
373
+ 'block-settings-modal'
374
+ );
375
+ await waitFor( () => blockSettingsModal.props.isVisible );
376
+
377
+ // Open Text color settings
378
+ fireEvent.press( screen.getByLabelText( 'Background, Default' ) );
379
+
380
+ // Tap on the gradient segment
381
+ fireEvent.press( screen.getByLabelText( 'Gradient' ) );
382
+
383
+ // Tap one gradient color
384
+ fireEvent.press(
385
+ screen.getByLabelText( 'Light green cyan to vivid green cyan' )
386
+ );
387
+
388
+ // Dismiss the Block Settings modal.
389
+ fireEvent( blockSettingsModal, 'backdropPress' );
390
+
391
+ // Assert
392
+ expect( getEditorHtml() ).toMatchSnapshot();
393
+ } );
394
+ } );
274
395
  } );
@@ -38,7 +38,8 @@
38
38
  "blockGap": true,
39
39
  "padding": true,
40
40
  "__experimentalDefaultControls": {
41
- "padding": true
41
+ "padding": true,
42
+ "blockGap": true
42
43
  }
43
44
  },
44
45
  "__experimentalBorder": {
@@ -39,7 +39,8 @@
39
39
  "margin": [ "top", "bottom" ],
40
40
  "padding": true,
41
41
  "__experimentalDefaultControls": {
42
- "padding": true
42
+ "padding": true,
43
+ "blockGap": true
43
44
  }
44
45
  },
45
46
  "__experimentalLayout": {
@@ -60,13 +60,35 @@ function ColumnsEditContainer( {
60
60
  } ) {
61
61
  const { isStackedOnMobile, verticalAlignment, templateLock } = attributes;
62
62
 
63
- const { count, canInsertColumnBlock } = useSelect(
63
+ const { count, canInsertColumnBlock, minCount } = useSelect(
64
64
  ( select ) => {
65
+ const {
66
+ canInsertBlockType,
67
+ canRemoveBlock,
68
+ getBlocks,
69
+ getBlockCount,
70
+ } = select( blockEditorStore );
71
+ const innerBlocks = getBlocks( clientId );
72
+
73
+ // Get the indexes of columns for which removal is prevented.
74
+ // The highest index will be used to determine the minimum column count.
75
+ const preventRemovalBlockIndexes = innerBlocks.reduce(
76
+ ( acc, block, index ) => {
77
+ if ( ! canRemoveBlock( block.clientId ) ) {
78
+ acc.push( index );
79
+ }
80
+ return acc;
81
+ },
82
+ []
83
+ );
84
+
65
85
  return {
66
- count: select( blockEditorStore ).getBlockCount( clientId ),
67
- canInsertColumnBlock: select(
68
- blockEditorStore
69
- ).canInsertBlockType( 'core/column', clientId ),
86
+ count: getBlockCount( clientId ),
87
+ canInsertColumnBlock: canInsertBlockType(
88
+ 'core/column',
89
+ clientId
90
+ ),
91
+ minCount: Math.max( ...preventRemovalBlockIndexes ) + 1,
70
92
  };
71
93
  },
72
94
  [ clientId ]
@@ -104,9 +126,12 @@ function ColumnsEditContainer( {
104
126
  label={ __( 'Columns' ) }
105
127
  value={ count }
106
128
  onChange={ ( value ) =>
107
- updateColumns( count, value )
129
+ updateColumns(
130
+ count,
131
+ Math.max( minCount, value )
132
+ )
108
133
  }
109
- min={ 1 }
134
+ min={ Math.max( 1, minCount ) }
110
135
  max={ Math.max( 6, count ) }
111
136
  />
112
137
  { count > 6 && (
@@ -214,13 +239,12 @@ const ColumnsEditContainerWrapper = withDispatch(
214
239
  return createBlock( 'core/column' );
215
240
  } ),
216
241
  ];
217
- } else {
242
+ } else if ( newColumns < previousColumns ) {
218
243
  // The removed column will be the last of the inner blocks.
219
244
  innerBlocks = innerBlocks.slice(
220
245
  0,
221
246
  -( previousColumns - newColumns )
222
247
  );
223
-
224
248
  if ( hasExplicitWidths ) {
225
249
  // Redistribute as if block is already removed.
226
250
  const widths = getRedistributedColumnWidths(
@@ -1,6 +1,5 @@
1
1
  .wp-block-columns {
2
2
  display: flex;
3
- margin-bottom: 1.75em;
4
3
  box-sizing: border-box;
5
4
 
6
5
  // Responsiveness: Allow wrapping on mobile.
@@ -73,6 +72,11 @@
73
72
  }
74
73
  }
75
74
 
75
+ // Lower specificity of margin styles so they don't override the Layout block support.
76
+ :where(.wp-block-columns) {
77
+ margin-bottom: 1.75em;
78
+ }
79
+
76
80
  // Add low specificity default padding to columns blocks with backgrounds.
77
81
  :where(.wp-block-columns.has-background) {
78
82
  // Matches paragraph block padding.
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { mapValues } from 'lodash';
5
-
6
1
  /**
7
2
  * Returns a column width attribute value rounded to standard precision.
8
3
  * Returns `undefined` if the value is not a valid finite number.
@@ -86,10 +81,14 @@ export function getRedistributedColumnWidths(
86
81
  ) {
87
82
  const totalWidth = getTotalColumnsWidth( blocks, totalBlockCount );
88
83
 
89
- return mapValues( getColumnWidths( blocks, totalBlockCount ), ( width ) => {
90
- const newWidth = ( availableWidth * width ) / totalWidth;
91
- return toWidthPrecision( newWidth );
92
- } );
84
+ return Object.fromEntries(
85
+ Object.entries( getColumnWidths( blocks, totalBlockCount ) ).map(
86
+ ( [ clientId, width ] ) => {
87
+ const newWidth = ( availableWidth * width ) / totalWidth;
88
+ return [ clientId, toWidthPrecision( newWidth ) ];
89
+ }
90
+ )
91
+ );
93
92
  }
94
93
 
95
94
  /**
package/src/common.scss CHANGED
@@ -158,7 +158,7 @@ html :where(img[class*="wp-image-"]) {
158
158
  /**
159
159
  * Reset user agent styles for figure element margins.
160
160
  */
161
- figure {
161
+ :where(figure) {
162
162
  margin: 0 0 1em 0;
163
163
  }
164
164
 
@@ -94,6 +94,18 @@
94
94
  "blockGap": true
95
95
  }
96
96
  },
97
+ "__experimentalBorder": {
98
+ "color": true,
99
+ "radius": true,
100
+ "style": true,
101
+ "width": true,
102
+ "__experimentalDefaultControls": {
103
+ "color": true,
104
+ "radius": true,
105
+ "style": true,
106
+ "width": true
107
+ }
108
+ },
97
109
  "color": {
98
110
  "__experimentalDuotone": "> .wp-block-cover__image-background, > .wp-block-cover__video-background",
99
111
  "text": true,
@@ -9,9 +9,9 @@ import namesPlugin from 'colord/plugins/names';
9
9
  * WordPress dependencies
10
10
  */
11
11
  import { useEntityProp, store as coreStore } from '@wordpress/core-data';
12
- import { useEffect, useRef } from '@wordpress/element';
12
+ import { useEffect, useMemo, useRef } from '@wordpress/element';
13
13
  import { Placeholder, Spinner } from '@wordpress/components';
14
- import { compose } from '@wordpress/compose';
14
+ import { compose, useResizeObserver } from '@wordpress/compose';
15
15
  import {
16
16
  withColors,
17
17
  ColorPalette,
@@ -42,7 +42,7 @@ import useCoverIsDark from './use-cover-is-dark';
42
42
  import CoverInspectorControls from './inspector-controls';
43
43
  import CoverBlockControls from './block-controls';
44
44
  import CoverPlaceholder from './cover-placeholder';
45
- import ResizableCover from './resizable-cover';
45
+ import ResizableCoverPopover from './resizable-cover-popover';
46
46
 
47
47
  extend( [ namesPlugin ] );
48
48
 
@@ -146,6 +146,14 @@ function CoverEdit( {
146
146
  const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;
147
147
  const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;
148
148
 
149
+ const [ resizeListener, { height, width } ] = useResizeObserver();
150
+ const resizableBoxDimensions = useMemo( () => {
151
+ return {
152
+ height: minHeightUnit === 'px' ? minHeight : 'auto',
153
+ width: 'auto',
154
+ };
155
+ }, [ minHeight, minHeightUnit ] );
156
+
149
157
  const minHeightWithUnit =
150
158
  minHeight && minHeightUnit
151
159
  ? `${ minHeight }${ minHeightUnit }`
@@ -246,24 +254,50 @@ function CoverEdit( {
246
254
  />
247
255
  );
248
256
 
257
+ const resizableCoverProps = {
258
+ className: 'block-library-cover__resize-container',
259
+ clientId,
260
+ height,
261
+ minHeight: minHeightWithUnit,
262
+ onResizeStart: () => {
263
+ setAttributes( { minHeightUnit: 'px' } );
264
+ toggleSelection( false );
265
+ },
266
+ onResize: ( value ) => {
267
+ setAttributes( { minHeight: value } );
268
+ },
269
+ onResizeStop: ( newMinHeight ) => {
270
+ toggleSelection( true );
271
+ setAttributes( { minHeight: newMinHeight } );
272
+ },
273
+ showHandle: true,
274
+ size: resizableBoxDimensions,
275
+ width,
276
+ };
277
+
249
278
  if ( ! useFeaturedImage && ! hasInnerBlocks && ! hasBackground ) {
250
279
  return (
251
280
  <>
252
281
  { blockControls }
253
282
  { inspectorControls }
283
+ { isSelected && (
284
+ <ResizableCoverPopover { ...resizableCoverProps } />
285
+ ) }
254
286
  <TagName
255
287
  { ...blockProps }
256
288
  className={ classnames(
257
289
  'is-placeholder',
258
290
  blockProps.className
259
291
  ) }
292
+ style={ {
293
+ ...blockProps.style,
294
+ minHeight: minHeightWithUnit || undefined,
295
+ } }
260
296
  >
297
+ { resizeListener }
261
298
  <CoverPlaceholder
262
299
  onSelectMedia={ onSelectMedia }
263
300
  onError={ onUploadError }
264
- style={ {
265
- minHeight: minHeightWithUnit || undefined,
266
- } }
267
301
  toggleUseFeaturedImage={ toggleUseFeaturedImage }
268
302
  >
269
303
  <div className="wp-block-cover__placeholder-background-options">
@@ -275,21 +309,6 @@ function CoverEdit( {
275
309
  />
276
310
  </div>
277
311
  </CoverPlaceholder>
278
- <ResizableCover
279
- className="block-library-cover__resize-container"
280
- onResizeStart={ () => {
281
- setAttributes( { minHeightUnit: 'px' } );
282
- toggleSelection( false );
283
- } }
284
- onResize={ ( value ) => {
285
- setAttributes( { minHeight: value } );
286
- } }
287
- onResizeStop={ ( newMinHeight ) => {
288
- toggleSelection( true );
289
- setAttributes( { minHeight: newMinHeight } );
290
- } }
291
- showHandle={ isSelected }
292
- />
293
312
  </TagName>
294
313
  </>
295
314
  );
@@ -318,22 +337,7 @@ function CoverEdit( {
318
337
  style={ { ...style, ...blockProps.style } }
319
338
  data-url={ url }
320
339
  >
321
- <ResizableCover
322
- className="block-library-cover__resize-container"
323
- onResizeStart={ () => {
324
- setAttributes( { minHeightUnit: 'px' } );
325
- toggleSelection( false );
326
- } }
327
- onResize={ ( value ) => {
328
- setAttributes( { minHeight: value } );
329
- } }
330
- onResizeStop={ ( newMinHeight ) => {
331
- toggleSelection( true );
332
- setAttributes( { minHeight: newMinHeight } );
333
- } }
334
- showHandle={ isSelected }
335
- />
336
-
340
+ { resizeListener }
337
341
  { ( ! useFeaturedImage || url ) && (
338
342
  <span
339
343
  aria-hidden="true"
@@ -404,6 +408,9 @@ function CoverEdit( {
404
408
  />
405
409
  <div { ...innerBlocksProps } />
406
410
  </TagName>
411
+ { isSelected && (
412
+ <ResizableCoverPopover { ...resizableCoverProps } />
413
+ ) }
407
414
  </>
408
415
  );
409
416
  }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useMemo, useState } from '@wordpress/element';
10
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { unlock } from '../../private-apis';
16
+
17
+ const RESIZABLE_BOX_ENABLE_OPTION = {
18
+ top: false,
19
+ right: false,
20
+ bottom: true,
21
+ left: false,
22
+ topRight: false,
23
+ bottomRight: false,
24
+ bottomLeft: false,
25
+ topLeft: false,
26
+ };
27
+
28
+ export default function ResizableCoverPopover( {
29
+ className,
30
+ height,
31
+ minHeight,
32
+ onResize,
33
+ onResizeStart,
34
+ onResizeStop,
35
+ showHandle,
36
+ size,
37
+ width,
38
+ ...props
39
+ } ) {
40
+ const { ResizableBoxPopover } = unlock( blockEditorPrivateApis );
41
+ const [ isResizing, setIsResizing ] = useState( false );
42
+ const dimensions = useMemo(
43
+ () => ( { height, minHeight, width } ),
44
+ [ minHeight, height, width ]
45
+ );
46
+
47
+ const resizableBoxProps = {
48
+ className: classnames( className, { 'is-resizing': isResizing } ),
49
+ enable: RESIZABLE_BOX_ENABLE_OPTION,
50
+ onResizeStart: ( _event, _direction, elt ) => {
51
+ onResizeStart( elt.clientHeight );
52
+ onResize( elt.clientHeight );
53
+ },
54
+ onResize: ( _event, _direction, elt ) => {
55
+ onResize( elt.clientHeight );
56
+ if ( ! isResizing ) {
57
+ setIsResizing( true );
58
+ }
59
+ },
60
+ onResizeStop: ( _event, _direction, elt ) => {
61
+ onResizeStop( elt.clientHeight );
62
+ setIsResizing( false );
63
+ },
64
+ showHandle,
65
+ size,
66
+ __experimentalShowTooltip: true,
67
+ __experimentalTooltipProps: {
68
+ axis: 'y',
69
+ position: 'bottom',
70
+ isVisible: isResizing,
71
+ },
72
+ };
73
+
74
+ return (
75
+ <ResizableBoxPopover
76
+ className="block-library-cover__resizable-box-popover"
77
+ __unstableRefreshSize={ dimensions }
78
+ resizableBoxProps={ resizableBoxProps }
79
+ { ...props }
80
+ />
81
+ );
82
+ }