@wordpress/block-editor 9.4.0 → 9.7.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 (483) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -8
  3. package/build/components/block-list/block-invalid-warning.native.js +54 -6
  4. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  5. package/build/components/block-list/block.js +14 -4
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/block-list/block.native.js +2 -1
  8. package/build/components/block-list/block.native.js.map +1 -1
  9. package/build/components/block-list/index.native.js +5 -4
  10. package/build/components/block-list/index.native.js.map +1 -1
  11. package/build/components/block-list/layout.js +20 -5
  12. package/build/components/block-list/layout.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-block-class-names.js +5 -2
  14. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  15. package/build/components/block-lock/modal.js +37 -7
  16. package/build/components/block-lock/modal.js.map +1 -1
  17. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  18. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  19. package/build/components/block-mover/mover-description.js +95 -32
  20. package/build/components/block-mover/mover-description.js.map +1 -1
  21. package/build/components/block-pattern-setup/index.js +5 -17
  22. package/build/components/block-pattern-setup/index.js.map +1 -1
  23. package/build/components/block-popover/inbetween.js +2 -2
  24. package/build/components/block-popover/inbetween.js.map +1 -1
  25. package/build/components/block-popover/index.js +1 -1
  26. package/build/components/block-popover/index.js.map +1 -1
  27. package/build/components/block-settings-menu/block-mode-toggle.js +1 -1
  28. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  29. package/build/components/block-settings-menu/block-settings-dropdown.js +4 -1
  30. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  31. package/build/components/block-settings-menu-controls/index.js +1 -1
  32. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  33. package/build/components/block-styles/index.js +3 -6
  34. package/build/components/block-styles/index.js.map +1 -1
  35. package/build/components/block-styles/preview.native.js.map +1 -1
  36. package/build/components/block-switcher/index.js +7 -1
  37. package/build/components/block-switcher/index.js.map +1 -1
  38. package/build/components/block-title/index.js +8 -2
  39. package/build/components/block-title/index.js.map +1 -1
  40. package/build/components/block-title/use-block-display-title.js +12 -5
  41. package/build/components/block-title/use-block-display-title.js.map +1 -1
  42. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  43. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  44. package/build/components/block-tools/block-selection-button.js +1 -7
  45. package/build/components/block-tools/block-selection-button.js.map +1 -1
  46. package/build/components/block-tools/index.js +4 -1
  47. package/build/components/block-tools/index.js.map +1 -1
  48. package/build/components/block-types-list/index.js +1 -1
  49. package/build/components/block-types-list/index.js.map +1 -1
  50. package/build/components/block-types-list/index.native.js +65 -23
  51. package/build/components/block-types-list/index.native.js.map +1 -1
  52. package/build/components/border-radius-control/index.js +5 -1
  53. package/build/components/border-radius-control/index.js.map +1 -1
  54. package/build/components/colors/utils.js +6 -2
  55. package/build/components/colors/utils.js.map +1 -1
  56. package/build/components/colors/with-colors.js +1 -1
  57. package/build/components/colors/with-colors.js.map +1 -1
  58. package/build/components/colors-gradients/control.js +49 -39
  59. package/build/components/colors-gradients/control.js.map +1 -1
  60. package/build/components/colors-gradients/dropdown.js +9 -3
  61. package/build/components/colors-gradients/dropdown.js.map +1 -1
  62. package/build/components/date-format-picker/index.js +1 -1
  63. package/build/components/date-format-picker/index.js.map +1 -1
  64. package/build/components/font-appearance-control/index.js +10 -4
  65. package/build/components/font-appearance-control/index.js.map +1 -1
  66. package/build/components/iframe/index.js +19 -6
  67. package/build/components/iframe/index.js.map +1 -1
  68. package/build/components/image-editor/cropper.js +4 -3
  69. package/build/components/image-editor/cropper.js.map +1 -1
  70. package/build/components/image-editor/index.js +3 -1
  71. package/build/components/image-editor/index.js.map +1 -1
  72. package/build/components/image-size-control/index.js +3 -1
  73. package/build/components/image-size-control/index.js.map +1 -1
  74. package/build/components/index.js +13 -6
  75. package/build/components/index.js.map +1 -1
  76. package/build/components/index.native.js +11 -4
  77. package/build/components/index.native.js.map +1 -1
  78. package/build/components/inserter/block-types-tab.native.js +30 -16
  79. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  80. package/build/components/inserter/index.native.js +8 -3
  81. package/build/components/inserter/index.native.js.map +1 -1
  82. package/build/components/inserter/preview-panel.js +8 -8
  83. package/build/components/inserter/preview-panel.js.map +1 -1
  84. package/build/components/inserter/reusable-blocks-tab.native.js +5 -1
  85. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  86. package/build/components/inserter/search-results.native.js +5 -2
  87. package/build/components/inserter/search-results.native.js.map +1 -1
  88. package/build/components/inserter/utils.native.js +21 -0
  89. package/build/components/inserter/utils.native.js.map +1 -1
  90. package/build/components/inserter-list-item/index.js +7 -20
  91. package/build/components/inserter-list-item/index.js.map +1 -1
  92. package/build/components/letter-spacing-control/index.js +6 -3
  93. package/build/components/letter-spacing-control/index.js.map +1 -1
  94. package/build/components/line-height-control/index.js +6 -3
  95. package/build/components/line-height-control/index.js.map +1 -1
  96. package/build/components/link-control/index.js +1 -1
  97. package/build/components/link-control/index.js.map +1 -1
  98. package/build/components/link-control/is-url-like.js +1 -7
  99. package/build/components/link-control/is-url-like.js.map +1 -1
  100. package/build/components/link-control/use-search-handler.js +1 -7
  101. package/build/components/link-control/use-search-handler.js.map +1 -1
  102. package/build/components/list-view/block-select-button.js +15 -7
  103. package/build/components/list-view/block-select-button.js.map +1 -1
  104. package/build/components/list-view/branch.js +1 -7
  105. package/build/components/list-view/branch.js.map +1 -1
  106. package/build/components/list-view/drop-indicator.js +1 -1
  107. package/build/components/list-view/drop-indicator.js.map +1 -1
  108. package/build/components/list-view/expander.js +3 -1
  109. package/build/components/list-view/expander.js.map +1 -1
  110. package/build/components/media-placeholder/index.js +13 -2
  111. package/build/components/media-placeholder/index.js.map +1 -1
  112. package/build/components/media-replace-flow/index.js +3 -6
  113. package/build/components/media-replace-flow/index.js.map +1 -1
  114. package/build/components/media-upload/index.native.js +8 -3
  115. package/build/components/media-upload/index.native.js.map +1 -1
  116. package/build/components/observe-typing/index.js +22 -8
  117. package/build/components/observe-typing/index.js.map +1 -1
  118. package/build/components/preview-options/index.js +2 -2
  119. package/build/components/preview-options/index.js.map +1 -1
  120. package/build/components/{use-no-recursive-renders → recursion-provider}/index.js +40 -18
  121. package/build/components/recursion-provider/index.js.map +1 -0
  122. package/build/components/rich-text/format-toolbar-container.js +61 -12
  123. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  124. package/build/components/rich-text/index.js +8 -2
  125. package/build/components/rich-text/index.js.map +1 -1
  126. package/build/components/rich-text/index.native.js +3 -1
  127. package/build/components/rich-text/index.native.js.map +1 -1
  128. package/build/components/rich-text/use-before-input-rules.js +110 -0
  129. package/build/components/rich-text/use-before-input-rules.js.map +1 -0
  130. package/build/components/rich-text/use-format-types.js +36 -16
  131. package/build/components/rich-text/use-format-types.js.map +1 -1
  132. package/build/components/text-decoration-control/index.js +3 -1
  133. package/build/components/text-decoration-control/index.js.map +1 -1
  134. package/build/components/text-transform-control/index.js +3 -1
  135. package/build/components/text-transform-control/index.js.map +1 -1
  136. package/build/components/url-popover/image-url-input-ui.js +4 -1
  137. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  138. package/build/components/url-popover/index.js +2 -1
  139. package/build/components/url-popover/index.js.map +1 -1
  140. package/build/components/writing-flow/use-arrow-nav.js +38 -27
  141. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  142. package/build/components/writing-flow/use-drag-selection.js +9 -2
  143. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  144. package/build/components/writing-flow/use-multi-selection.js +3 -47
  145. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  146. package/build/components/writing-flow/use-select-all.js +3 -1
  147. package/build/components/writing-flow/use-select-all.js.map +1 -1
  148. package/build/components/writing-flow/use-selection-observer.js +1 -3
  149. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  150. package/build/components/writing-flow/use-tab-nav.js +1 -1
  151. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  152. package/build/hooks/color.js +2 -4
  153. package/build/hooks/color.js.map +1 -1
  154. package/build/hooks/index.js +8 -0
  155. package/build/hooks/index.js.map +1 -1
  156. package/build/hooks/layout.js +61 -15
  157. package/build/hooks/layout.js.map +1 -1
  158. package/build/hooks/style.js +41 -31
  159. package/build/hooks/style.js.map +1 -1
  160. package/build/hooks/utils.js +5 -3
  161. package/build/hooks/utils.js.map +1 -1
  162. package/build/index.js +7 -0
  163. package/build/index.js.map +1 -1
  164. package/build/layouts/flex.js +40 -36
  165. package/build/layouts/flex.js.map +1 -1
  166. package/build/layouts/flow.js +35 -37
  167. package/build/layouts/flow.js.map +1 -1
  168. package/build/layouts/utils.js +35 -3
  169. package/build/layouts/utils.js.map +1 -1
  170. package/build/store/actions.js +15 -18
  171. package/build/store/actions.js.map +1 -1
  172. package/build/store/index.js +0 -4
  173. package/build/store/index.js.map +1 -1
  174. package/build/store/reducer.js +5 -3
  175. package/build/store/reducer.js.map +1 -1
  176. package/build/store/selectors.js +3 -3
  177. package/build/store/selectors.js.map +1 -1
  178. package/build/utils/block-variation-transforms.js +15 -9
  179. package/build/utils/block-variation-transforms.js.map +1 -1
  180. package/build/utils/pasting.js +9 -1
  181. package/build/utils/pasting.js.map +1 -1
  182. package/build-module/components/block-list/block-invalid-warning.native.js +50 -6
  183. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  184. package/build-module/components/block-list/block.js +15 -5
  185. package/build-module/components/block-list/block.js.map +1 -1
  186. package/build-module/components/block-list/block.native.js +2 -1
  187. package/build-module/components/block-list/block.native.js.map +1 -1
  188. package/build-module/components/block-list/index.native.js +4 -2
  189. package/build-module/components/block-list/index.native.js.map +1 -1
  190. package/build-module/components/block-list/layout.js +19 -4
  191. package/build-module/components/block-list/layout.js.map +1 -1
  192. package/build-module/components/block-list/use-block-props/use-block-class-names.js +5 -2
  193. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  194. package/build-module/components/block-lock/modal.js +39 -8
  195. package/build-module/components/block-lock/modal.js.map +1 -1
  196. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
  197. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  198. package/build-module/components/block-mover/mover-description.js +97 -33
  199. package/build-module/components/block-mover/mover-description.js.map +1 -1
  200. package/build-module/components/block-pattern-setup/index.js +6 -18
  201. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  202. package/build-module/components/block-popover/inbetween.js +2 -2
  203. package/build-module/components/block-popover/inbetween.js.map +1 -1
  204. package/build-module/components/block-popover/index.js +1 -1
  205. package/build-module/components/block-popover/index.js.map +1 -1
  206. package/build-module/components/block-settings-menu/block-mode-toggle.js +1 -1
  207. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  208. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -1
  209. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  210. package/build-module/components/block-settings-menu-controls/index.js +2 -2
  211. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  212. package/build-module/components/block-styles/index.js +4 -7
  213. package/build-module/components/block-styles/index.js.map +1 -1
  214. package/build-module/components/block-styles/preview.native.js.map +1 -1
  215. package/build-module/components/block-switcher/index.js +7 -1
  216. package/build-module/components/block-switcher/index.js.map +1 -1
  217. package/build-module/components/block-title/index.js +8 -2
  218. package/build-module/components/block-title/index.js.map +1 -1
  219. package/build-module/components/block-title/use-block-display-title.js +12 -5
  220. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  221. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  222. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  223. package/build-module/components/block-tools/block-selection-button.js +1 -7
  224. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  225. package/build-module/components/block-tools/index.js +4 -1
  226. package/build-module/components/block-tools/index.js.map +1 -1
  227. package/build-module/components/block-types-list/index.js +1 -1
  228. package/build-module/components/block-types-list/index.js.map +1 -1
  229. package/build-module/components/block-types-list/index.native.js +67 -25
  230. package/build-module/components/block-types-list/index.native.js.map +1 -1
  231. package/build-module/components/border-radius-control/index.js +6 -2
  232. package/build-module/components/border-radius-control/index.js.map +1 -1
  233. package/build-module/components/colors/utils.js +7 -3
  234. package/build-module/components/colors/utils.js.map +1 -1
  235. package/build-module/components/colors/with-colors.js +2 -2
  236. package/build-module/components/colors/with-colors.js.map +1 -1
  237. package/build-module/components/colors-gradients/control.js +50 -40
  238. package/build-module/components/colors-gradients/control.js.map +1 -1
  239. package/build-module/components/colors-gradients/dropdown.js +10 -4
  240. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  241. package/build-module/components/date-format-picker/index.js +1 -1
  242. package/build-module/components/date-format-picker/index.js.map +1 -1
  243. package/build-module/components/font-appearance-control/index.js +7 -4
  244. package/build-module/components/font-appearance-control/index.js.map +1 -1
  245. package/build-module/components/iframe/index.js +19 -6
  246. package/build-module/components/iframe/index.js.map +1 -1
  247. package/build-module/components/image-editor/cropper.js +4 -3
  248. package/build-module/components/image-editor/cropper.js.map +1 -1
  249. package/build-module/components/image-editor/index.js +3 -1
  250. package/build-module/components/image-editor/index.js.map +1 -1
  251. package/build-module/components/image-size-control/index.js +3 -1
  252. package/build-module/components/image-size-control/index.js.map +1 -1
  253. package/build-module/components/index.js +1 -1
  254. package/build-module/components/index.js.map +1 -1
  255. package/build-module/components/index.native.js +1 -1
  256. package/build-module/components/index.native.js.map +1 -1
  257. package/build-module/components/inserter/block-types-tab.native.js +31 -15
  258. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  259. package/build-module/components/inserter/index.native.js +9 -2
  260. package/build-module/components/inserter/index.native.js.map +1 -1
  261. package/build-module/components/inserter/preview-panel.js +9 -9
  262. package/build-module/components/inserter/preview-panel.js.map +1 -1
  263. package/build-module/components/inserter/reusable-blocks-tab.native.js +6 -2
  264. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  265. package/build-module/components/inserter/search-results.native.js +6 -3
  266. package/build-module/components/inserter/search-results.native.js.map +1 -1
  267. package/build-module/components/inserter/utils.native.js +19 -0
  268. package/build-module/components/inserter/utils.native.js.map +1 -1
  269. package/build-module/components/inserter-list-item/index.js +5 -18
  270. package/build-module/components/inserter-list-item/index.js.map +1 -1
  271. package/build-module/components/letter-spacing-control/index.js +5 -3
  272. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  273. package/build-module/components/line-height-control/index.js +5 -3
  274. package/build-module/components/line-height-control/index.js.map +1 -1
  275. package/build-module/components/link-control/index.js +1 -1
  276. package/build-module/components/link-control/index.js.map +1 -1
  277. package/build-module/components/link-control/is-url-like.js +1 -6
  278. package/build-module/components/link-control/is-url-like.js.map +1 -1
  279. package/build-module/components/link-control/use-search-handler.js +1 -6
  280. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  281. package/build-module/components/list-view/block-select-button.js +16 -8
  282. package/build-module/components/list-view/block-select-button.js.map +1 -1
  283. package/build-module/components/list-view/branch.js +1 -6
  284. package/build-module/components/list-view/branch.js.map +1 -1
  285. package/build-module/components/list-view/drop-indicator.js +1 -1
  286. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  287. package/build-module/components/list-view/expander.js +3 -2
  288. package/build-module/components/list-view/expander.js.map +1 -1
  289. package/build-module/components/media-placeholder/index.js +13 -2
  290. package/build-module/components/media-placeholder/index.js.map +1 -1
  291. package/build-module/components/media-replace-flow/index.js +4 -7
  292. package/build-module/components/media-replace-flow/index.js.map +1 -1
  293. package/build-module/components/media-upload/index.native.js +9 -2
  294. package/build-module/components/media-upload/index.native.js.map +1 -1
  295. package/build-module/components/observe-typing/index.js +22 -8
  296. package/build-module/components/observe-typing/index.js.map +1 -1
  297. package/build-module/components/preview-options/index.js +2 -2
  298. package/build-module/components/preview-options/index.js.map +1 -1
  299. package/build-module/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -19
  300. package/build-module/components/recursion-provider/index.js.map +1 -0
  301. package/build-module/components/rich-text/format-toolbar-container.js +58 -12
  302. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  303. package/build-module/components/rich-text/index.js +7 -2
  304. package/build-module/components/rich-text/index.js.map +1 -1
  305. package/build-module/components/rich-text/index.native.js +3 -1
  306. package/build-module/components/rich-text/index.native.js.map +1 -1
  307. package/build-module/components/rich-text/use-before-input-rules.js +96 -0
  308. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -0
  309. package/build-module/components/rich-text/use-format-types.js +37 -18
  310. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  311. package/build-module/components/text-decoration-control/index.js +4 -2
  312. package/build-module/components/text-decoration-control/index.js.map +1 -1
  313. package/build-module/components/text-transform-control/index.js +4 -2
  314. package/build-module/components/text-transform-control/index.js.map +1 -1
  315. package/build-module/components/url-popover/image-url-input-ui.js +4 -1
  316. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  317. package/build-module/components/url-popover/index.js +2 -1
  318. package/build-module/components/url-popover/index.js.map +1 -1
  319. package/build-module/components/writing-flow/use-arrow-nav.js +40 -29
  320. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  321. package/build-module/components/writing-flow/use-drag-selection.js +9 -2
  322. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  323. package/build-module/components/writing-flow/use-multi-selection.js +3 -45
  324. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  325. package/build-module/components/writing-flow/use-select-all.js +3 -1
  326. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  327. package/build-module/components/writing-flow/use-selection-observer.js +1 -3
  328. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  329. package/build-module/components/writing-flow/use-tab-nav.js +1 -1
  330. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  331. package/build-module/hooks/color.js +2 -3
  332. package/build-module/hooks/color.js.map +1 -1
  333. package/build-module/hooks/index.js +1 -0
  334. package/build-module/hooks/index.js.map +1 -1
  335. package/build-module/hooks/layout.js +62 -16
  336. package/build-module/hooks/layout.js.map +1 -1
  337. package/build-module/hooks/style.js +44 -35
  338. package/build-module/hooks/style.js.map +1 -1
  339. package/build-module/hooks/utils.js +5 -2
  340. package/build-module/hooks/utils.js.map +1 -1
  341. package/build-module/index.js +1 -1
  342. package/build-module/index.js.map +1 -1
  343. package/build-module/layouts/flex.js +41 -33
  344. package/build-module/layouts/flex.js.map +1 -1
  345. package/build-module/layouts/flow.js +35 -38
  346. package/build-module/layouts/flow.js.map +1 -1
  347. package/build-module/layouts/utils.js +33 -3
  348. package/build-module/layouts/utils.js.map +1 -1
  349. package/build-module/store/actions.js +9 -10
  350. package/build-module/store/actions.js.map +1 -1
  351. package/build-module/store/index.js +0 -4
  352. package/build-module/store/index.js.map +1 -1
  353. package/build-module/store/reducer.js +5 -2
  354. package/build-module/store/reducer.js.map +1 -1
  355. package/build-module/store/selectors.js +4 -4
  356. package/build-module/store/selectors.js.map +1 -1
  357. package/build-module/utils/block-variation-transforms.js +14 -7
  358. package/build-module/utils/block-variation-transforms.js.map +1 -1
  359. package/build-module/utils/pasting.js +9 -1
  360. package/build-module/utils/pasting.js.map +1 -1
  361. package/build-style/style-rtl.css +72 -14
  362. package/build-style/style.css +72 -14
  363. package/package.json +28 -28
  364. package/src/components/block-list/block-invalid-warning.native.js +42 -7
  365. package/src/components/block-list/block.js +15 -4
  366. package/src/components/block-list/block.native.js +1 -0
  367. package/src/components/block-list/index.native.js +2 -2
  368. package/src/components/block-list/layout.js +15 -3
  369. package/src/components/block-list/style.scss +1 -1
  370. package/src/components/block-list/use-block-props/use-block-class-names.js +5 -1
  371. package/src/components/block-lock/modal.js +47 -9
  372. package/src/components/block-lock/style.scss +10 -0
  373. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  374. package/src/components/block-mover/mover-description.js +131 -48
  375. package/src/components/block-mover/test/mover-description.js +55 -3
  376. package/src/components/block-pattern-setup/index.js +3 -15
  377. package/src/components/block-pattern-setup/style.scss +4 -2
  378. package/src/components/block-popover/inbetween.js +2 -1
  379. package/src/components/block-popover/index.js +1 -1
  380. package/src/components/block-popover/style.scss +25 -2
  381. package/src/components/block-settings-menu/block-mode-toggle.js +1 -0
  382. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  383. package/src/components/block-settings-menu-controls/index.js +2 -2
  384. package/src/components/block-styles/index.js +4 -7
  385. package/src/components/block-styles/preview.native.js +1 -0
  386. package/src/components/block-styles/style.scss +10 -0
  387. package/src/components/block-switcher/index.js +7 -1
  388. package/src/components/block-title/index.js +3 -2
  389. package/src/components/block-title/use-block-display-title.js +11 -5
  390. package/src/components/block-tools/block-contextual-toolbar.js +3 -1
  391. package/src/components/block-tools/block-selection-button.js +0 -5
  392. package/src/components/block-tools/index.js +4 -1
  393. package/src/components/block-types-list/index.js +1 -1
  394. package/src/components/block-types-list/index.native.js +76 -24
  395. package/src/components/block-types-list/style.native.scss +18 -0
  396. package/src/components/border-radius-control/index.js +6 -1
  397. package/src/components/color-palette/test/__snapshots__/control.js.snap +91 -79
  398. package/src/components/colors/test/__snapshots__/with-colors.js.snap +1 -1
  399. package/src/components/colors/test/with-colors.js +1 -1
  400. package/src/components/colors/utils.js +5 -2
  401. package/src/components/colors/with-colors.js +2 -2
  402. package/src/components/colors-gradients/control.js +82 -65
  403. package/src/components/colors-gradients/dropdown.js +14 -3
  404. package/src/components/colors-gradients/style.scss +34 -9
  405. package/src/components/colors-gradients/test/control.js +16 -23
  406. package/src/components/date-format-picker/index.js +1 -0
  407. package/src/components/font-appearance-control/index.js +3 -0
  408. package/src/components/iframe/index.js +25 -6
  409. package/src/components/image-editor/cropper.js +9 -3
  410. package/src/components/image-editor/index.js +2 -0
  411. package/src/components/image-size-control/README.md +7 -0
  412. package/src/components/image-size-control/index.js +2 -0
  413. package/src/components/index.js +4 -1
  414. package/src/components/index.native.js +4 -1
  415. package/src/components/inserter/block-types-tab.native.js +42 -21
  416. package/src/components/inserter/index.native.js +7 -2
  417. package/src/components/inserter/preview-panel.js +6 -14
  418. package/src/components/inserter/reusable-blocks-tab.native.js +4 -2
  419. package/src/components/inserter/search-results.native.js +4 -2
  420. package/src/components/inserter/style.scss +1 -1
  421. package/src/components/inserter/test/block-types-tab.native.js +2 -0
  422. package/src/components/inserter/test/utils.native.js +37 -0
  423. package/src/components/inserter/utils.native.js +11 -0
  424. package/src/components/inserter-list-item/index.js +5 -18
  425. package/src/components/letter-spacing-control/index.js +2 -0
  426. package/src/components/line-height-control/index.js +2 -0
  427. package/src/components/link-control/index.js +1 -0
  428. package/src/components/link-control/is-url-like.js +1 -6
  429. package/src/components/link-control/test/index.js +6 -4
  430. package/src/components/link-control/use-search-handler.js +1 -6
  431. package/src/components/list-view/block-select-button.js +29 -14
  432. package/src/components/list-view/branch.js +1 -6
  433. package/src/components/list-view/drop-indicator.js +1 -1
  434. package/src/components/list-view/expander.js +4 -2
  435. package/src/components/list-view/style.scss +18 -4
  436. package/src/components/media-placeholder/index.js +19 -0
  437. package/src/components/media-replace-flow/index.js +3 -6
  438. package/src/components/media-replace-flow/test/index.js +14 -4
  439. package/src/components/media-upload/index.native.js +7 -3
  440. package/src/components/observe-typing/index.js +17 -14
  441. package/src/components/preview-options/index.js +2 -2
  442. package/src/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -28
  443. package/src/components/{use-no-recursive-renders/test/use-no-recursive-renders.js → recursion-provider/test/index.js} +5 -6
  444. package/src/components/rich-text/README.md +13 -1
  445. package/src/components/rich-text/format-toolbar-container.js +63 -14
  446. package/src/components/rich-text/index.js +3 -0
  447. package/src/components/rich-text/index.native.js +2 -0
  448. package/src/components/rich-text/use-before-input-rules.js +91 -0
  449. package/src/components/rich-text/use-format-types.js +38 -17
  450. package/src/components/text-decoration-control/index.js +4 -2
  451. package/src/components/text-transform-control/index.js +4 -2
  452. package/src/components/url-popover/image-url-input-ui.js +3 -0
  453. package/src/components/url-popover/index.js +1 -0
  454. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -0
  455. package/src/components/writing-flow/use-arrow-nav.js +36 -34
  456. package/src/components/writing-flow/use-drag-selection.js +7 -1
  457. package/src/components/writing-flow/use-multi-selection.js +1 -48
  458. package/src/components/writing-flow/use-select-all.js +2 -1
  459. package/src/components/writing-flow/use-selection-observer.js +2 -3
  460. package/src/components/writing-flow/use-tab-nav.js +1 -1
  461. package/src/hooks/color.js +10 -3
  462. package/src/hooks/index.js +1 -0
  463. package/src/hooks/layout.js +66 -23
  464. package/src/hooks/style.js +46 -39
  465. package/src/hooks/utils.js +7 -3
  466. package/src/index.js +1 -0
  467. package/src/layouts/flex.js +47 -41
  468. package/src/layouts/flow.js +35 -34
  469. package/src/layouts/test/flex.js +21 -0
  470. package/src/layouts/test/flow.js +21 -0
  471. package/src/layouts/test/utils.js +138 -0
  472. package/src/layouts/utils.js +44 -3
  473. package/src/store/actions.js +10 -11
  474. package/src/store/index.js +0 -4
  475. package/src/store/reducer.js +3 -2
  476. package/src/store/selectors.js +3 -4
  477. package/src/utils/block-variation-transforms.js +13 -6
  478. package/src/utils/pasting.js +10 -1
  479. package/src/utils/test/block-variation-transforms.js +24 -0
  480. package/src/utils/test/pasting.js +10 -0
  481. package/tsconfig.json +2 -1
  482. package/build/components/use-no-recursive-renders/index.js.map +0 -1
  483. package/build-module/components/use-no-recursive-renders/index.js.map +0 -1
@@ -4,10 +4,13 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
4
4
  .emotion-0 {
5
5
  font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;
6
6
  font-size: 13px;
7
+ box-sizing: border-box;
7
8
  }
8
9
 
9
- .emotion-2 {
10
- margin-bottom: calc(4px * 2);
10
+ .emotion-0 *,
11
+ .emotion-0 *::before,
12
+ .emotion-0 *::after {
13
+ box-sizing: inherit;
11
14
  }
12
15
 
13
16
  .components-panel__row .emotion-2 {
@@ -40,8 +43,13 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
40
43
  }
41
44
 
42
45
  .emotion-6 {
46
+ font-size: 11px;
47
+ font-weight: 500;
48
+ line-height: 1.4;
49
+ text-transform: uppercase;
43
50
  display: inline-block;
44
51
  margin-bottom: calc(4px * 2);
52
+ padding: 0;
45
53
  }
46
54
 
47
55
  .emotion-8 {
@@ -144,100 +152,104 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
144
152
  </div>
145
153
  </legend>
146
154
  <div
147
- className="components-flex components-h-stack components-v-stack emotion-8 emotion-5"
148
- data-wp-c16t={true}
149
- data-wp-component="VStack"
155
+ className="block-editor-color-gradient-control__panel"
150
156
  >
151
157
  <div
152
- className="components-dropdown"
153
- tabIndex="-1"
158
+ className="components-flex components-h-stack components-v-stack emotion-8 emotion-5"
159
+ data-wp-c16t={true}
160
+ data-wp-component="VStack"
154
161
  >
155
- <button
156
- aria-expanded={false}
157
- aria-haspopup="true"
158
- aria-label="Custom color picker. The currently selected color is called \\"red\\" and has a value of \\"f00\\"."
159
- className="components-flex components-color-palette__custom-color emotion-10 emotion-5"
160
- data-wp-c16t={true}
161
- data-wp-component="Flex"
162
- onClick={[Function]}
163
- style={
164
- Object {
165
- "background": "#f00",
166
- "color": "#000",
167
- }
168
- }
162
+ <div
163
+ className="components-dropdown"
164
+ tabIndex="-1"
169
165
  >
170
- <span
171
- className="components-truncate components-flex-item components-color-palette__custom-color-name emotion-5 emotion-13 emotion-5"
172
- data-wp-c16t={true}
173
- data-wp-component="FlexItem"
174
- >
175
- red
176
- </span>
177
- <span
178
- className="components-flex-item components-color-palette__custom-color-value emotion-15 emotion-5"
166
+ <button
167
+ aria-expanded={false}
168
+ aria-haspopup="true"
169
+ aria-label="Custom color picker. The currently selected color is called \\"red\\" and has a value of \\"f00\\"."
170
+ className="components-flex components-color-palette__custom-color emotion-10 emotion-5"
179
171
  data-wp-c16t={true}
180
- data-wp-component="FlexItem"
172
+ data-wp-component="Flex"
173
+ onClick={[Function]}
174
+ style={
175
+ Object {
176
+ "background": "#f00",
177
+ "color": "#000",
178
+ }
179
+ }
181
180
  >
182
- f00
183
- </span>
184
- </button>
185
- </div>
186
- <div
187
- className="components-circular-option-picker"
188
- >
181
+ <span
182
+ className="components-truncate components-flex-item components-color-palette__custom-color-name emotion-5 emotion-13 emotion-5"
183
+ data-wp-c16t={true}
184
+ data-wp-component="FlexItem"
185
+ >
186
+ red
187
+ </span>
188
+ <span
189
+ className="components-flex-item components-color-palette__custom-color-value emotion-15 emotion-5"
190
+ data-wp-c16t={true}
191
+ data-wp-component="FlexItem"
192
+ >
193
+ f00
194
+ </span>
195
+ </button>
196
+ </div>
189
197
  <div
190
- className="components-circular-option-picker__swatches"
198
+ className="components-circular-option-picker"
191
199
  >
192
200
  <div
193
- className="components-circular-option-picker__option-wrapper"
201
+ className="components-circular-option-picker__swatches"
202
+ >
203
+ <div
204
+ className="components-circular-option-picker__option-wrapper"
205
+ >
206
+ <button
207
+ aria-describedby={null}
208
+ aria-label="Color: red"
209
+ aria-pressed={true}
210
+ className="components-button components-circular-option-picker__option is-pressed"
211
+ onBlur={[Function]}
212
+ onClick={[Function]}
213
+ onFocus={[Function]}
214
+ onMouseDown={[Function]}
215
+ onMouseEnter={[Function]}
216
+ onMouseLeave={[Function]}
217
+ style={
218
+ Object {
219
+ "backgroundColor": "#f00",
220
+ "color": "#f00",
221
+ }
222
+ }
223
+ type="button"
224
+ />
225
+ <svg
226
+ aria-hidden={true}
227
+ fill="#000"
228
+ focusable={false}
229
+ height={24}
230
+ viewBox="0 0 24 24"
231
+ width={24}
232
+ xmlns="http://www.w3.org/2000/svg"
233
+ >
234
+ <path
235
+ d="M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
236
+ />
237
+ </svg>
238
+ </div>
239
+ </div>
240
+ <div
241
+ className="components-circular-option-picker__custom-clear-wrapper"
194
242
  >
195
243
  <button
196
244
  aria-describedby={null}
197
- aria-label="Color: red"
198
- aria-pressed={true}
199
- className="components-button components-circular-option-picker__option is-pressed"
200
- onBlur={[Function]}
245
+ className="components-button components-circular-option-picker__clear is-tertiary"
201
246
  onClick={[Function]}
202
- onFocus={[Function]}
203
- onMouseDown={[Function]}
204
- onMouseEnter={[Function]}
205
- onMouseLeave={[Function]}
206
- style={
207
- Object {
208
- "backgroundColor": "#f00",
209
- "color": "#f00",
210
- }
211
- }
212
247
  type="button"
213
- />
214
- <svg
215
- aria-hidden={true}
216
- fill="#000"
217
- focusable={false}
218
- height={24}
219
- viewBox="0 0 24 24"
220
- width={24}
221
- xmlns="http://www.w3.org/2000/svg"
222
248
  >
223
- <path
224
- d="M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
225
- />
226
- </svg>
249
+ Clear
250
+ </button>
227
251
  </div>
228
252
  </div>
229
- <div
230
- className="components-circular-option-picker__custom-clear-wrapper"
231
- >
232
- <button
233
- aria-describedby={null}
234
- className="components-button components-circular-option-picker__clear is-tertiary"
235
- onClick={[Function]}
236
- type="button"
237
- >
238
- Clear
239
- </button>
240
- </div>
241
253
  </div>
242
254
  </div>
243
255
  </div>
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`createCustomColorsHOC provides the the wrapped component with color values and setter functions as props 1`] = `
3
+ exports[`createCustomColorsHOC provides the wrapped component with color values and setter functions as props 1`] = `
4
4
  <Component
5
5
  attributes={
6
6
  Object {
@@ -9,7 +9,7 @@ import { shallow, mount } from 'enzyme';
9
9
  import { createCustomColorsHOC } from '../with-colors';
10
10
 
11
11
  describe( 'createCustomColorsHOC', () => {
12
- it( 'provides the the wrapped component with color values and setter functions as props', () => {
12
+ it( 'provides the wrapped component with color values and setter functions as props', () => {
13
13
  const withCustomColors = createCustomColorsHOC( [
14
14
  { name: 'Red', slug: 'red', color: 'ff0000' },
15
15
  ] );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find, kebabCase, maxBy } from 'lodash';
4
+ import { find, kebabCase } from 'lodash';
5
5
  import { colord, extend } from 'colord';
6
6
  import namesPlugin from 'colord/plugins/names';
7
7
  import a11yPlugin from 'colord/plugins/a11y';
@@ -77,6 +77,9 @@ export function getColorClassName( colorContextName, colorSlug ) {
77
77
  */
78
78
  export function getMostReadableColor( colors, colorValue ) {
79
79
  const colordColor = colord( colorValue );
80
- return maxBy( colors, ( { color } ) => colordColor.contrast( color ) )
80
+ const getColorContrast = ( { color } ) => colordColor.contrast( color );
81
+
82
+ const maxContrast = Math.max( ...colors.map( getColorContrast ) );
83
+ return colors.find( ( color ) => getColorContrast( color ) === maxContrast )
81
84
  .color;
82
85
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isString, kebabCase, reduce, upperFirst } from 'lodash';
4
+ import { kebabCase, reduce, upperFirst } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -78,7 +78,7 @@ function createColorHOC( colorTypes, withColorPalette ) {
78
78
  ( colorObject, colorType ) => {
79
79
  return {
80
80
  ...colorObject,
81
- ...( isString( colorType )
81
+ ...( typeof colorType === 'string'
82
82
  ? { [ colorType ]: kebabCase( colorType ) }
83
83
  : colorType ),
84
84
  };
@@ -7,16 +7,13 @@ import { every, isEmpty } from 'lodash';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { useState } from '@wordpress/element';
11
10
  import {
12
11
  BaseControl,
13
12
  __experimentalVStack as VStack,
14
- __experimentalToggleGroupControl as ToggleGroupControl,
15
- __experimentalToggleGroupControlOption as ToggleGroupControlOption,
13
+ TabPanel,
16
14
  ColorPalette,
17
15
  GradientPicker,
18
16
  } from '@wordpress/components';
19
- import { __ } from '@wordpress/i18n';
20
17
 
21
18
  /**
22
19
  * Internal dependencies
@@ -30,6 +27,19 @@ const colorsAndGradientKeys = [
30
27
  'disableCustomGradients',
31
28
  ];
32
29
 
30
+ const TAB_COLOR = {
31
+ name: 'color',
32
+ title: 'Solid',
33
+ value: 'color',
34
+ };
35
+ const TAB_GRADIENT = {
36
+ name: 'gradient',
37
+ title: 'Gradient',
38
+ value: 'gradient',
39
+ };
40
+
41
+ const TABS_SETTINGS = [ TAB_COLOR, TAB_GRADIENT ];
42
+
33
43
  function ColorGradientControlInner( {
34
44
  colors,
35
45
  gradients,
@@ -52,15 +62,66 @@ function ColorGradientControlInner( {
52
62
  const canChooseAGradient =
53
63
  onGradientChange &&
54
64
  ( ! isEmpty( gradients ) || ! disableCustomGradients );
55
- const [ currentTab, setCurrentTab ] = useState(
56
- gradientValue ? 'gradient' : !! canChooseAColor && 'color'
57
- );
58
65
 
59
66
  if ( ! canChooseAColor && ! canChooseAGradient ) {
60
67
  return null;
61
68
  }
69
+
70
+ const tabPanels = {
71
+ [ TAB_COLOR.value ]: (
72
+ <ColorPalette
73
+ value={ colorValue }
74
+ onChange={
75
+ canChooseAGradient
76
+ ? ( newColor ) => {
77
+ onColorChange( newColor );
78
+ onGradientChange();
79
+ }
80
+ : onColorChange
81
+ }
82
+ { ...{ colors, disableCustomColors } }
83
+ __experimentalHasMultipleOrigins={
84
+ __experimentalHasMultipleOrigins
85
+ }
86
+ __experimentalIsRenderedInSidebar={
87
+ __experimentalIsRenderedInSidebar
88
+ }
89
+ clearable={ clearable }
90
+ enableAlpha={ enableAlpha }
91
+ />
92
+ ),
93
+ [ TAB_GRADIENT.value ]: (
94
+ <GradientPicker
95
+ value={ gradientValue }
96
+ onChange={
97
+ canChooseAColor
98
+ ? ( newGradient ) => {
99
+ onGradientChange( newGradient );
100
+ onColorChange();
101
+ }
102
+ : onGradientChange
103
+ }
104
+ { ...{ gradients, disableCustomGradients } }
105
+ __experimentalHasMultipleOrigins={
106
+ __experimentalHasMultipleOrigins
107
+ }
108
+ __experimentalIsRenderedInSidebar={
109
+ __experimentalIsRenderedInSidebar
110
+ }
111
+ clearable={ clearable }
112
+ />
113
+ ),
114
+ };
115
+
116
+ const renderPanelType = ( type ) => (
117
+ <div className="block-editor-color-gradient-control__panel">
118
+ { tabPanels[ type ] }
119
+ </div>
120
+ );
121
+
62
122
  return (
63
123
  <BaseControl
124
+ __nextHasNoMarginBottom
64
125
  className={ classnames(
65
126
  'block-editor-color-gradient-control',
66
127
  className
@@ -78,66 +139,22 @@ function ColorGradientControlInner( {
78
139
  </legend>
79
140
  ) }
80
141
  { canChooseAColor && canChooseAGradient && (
81
- <ToggleGroupControl
82
- value={ currentTab }
83
- onChange={ setCurrentTab }
84
- label={ __( 'Select color type' ) }
85
- hideLabelFromVision
86
- isBlock
87
- >
88
- <ToggleGroupControlOption
89
- value="color"
90
- label={ __( 'Solid' ) }
91
- />
92
- <ToggleGroupControlOption
93
- value="gradient"
94
- label={ __( 'Gradient' ) }
95
- />
96
- </ToggleGroupControl>
97
- ) }
98
- { ( currentTab === 'color' || ! canChooseAGradient ) && (
99
- <ColorPalette
100
- value={ colorValue }
101
- onChange={
102
- canChooseAGradient
103
- ? ( newColor ) => {
104
- onColorChange( newColor );
105
- onGradientChange();
106
- }
107
- : onColorChange
108
- }
109
- { ...{ colors, disableCustomColors } }
110
- __experimentalHasMultipleOrigins={
111
- __experimentalHasMultipleOrigins
112
- }
113
- __experimentalIsRenderedInSidebar={
114
- __experimentalIsRenderedInSidebar
115
- }
116
- clearable={ clearable }
117
- enableAlpha={ enableAlpha }
118
- />
119
- ) }
120
- { ( currentTab === 'gradient' || ! canChooseAColor ) && (
121
- <GradientPicker
122
- value={ gradientValue }
123
- onChange={
124
- canChooseAColor
125
- ? ( newGradient ) => {
126
- onGradientChange( newGradient );
127
- onColorChange();
128
- }
129
- : onGradientChange
130
- }
131
- { ...{ gradients, disableCustomGradients } }
132
- __experimentalHasMultipleOrigins={
133
- __experimentalHasMultipleOrigins
142
+ <TabPanel
143
+ className="block-editor-color-gradient-control__tabs"
144
+ tabs={ TABS_SETTINGS }
145
+ initialTabName={
146
+ gradientValue
147
+ ? TAB_GRADIENT.value
148
+ : !! canChooseAColor && TAB_COLOR.value
134
149
  }
135
- __experimentalIsRenderedInSidebar={
136
- __experimentalIsRenderedInSidebar
137
- }
138
- clearable={ clearable }
139
- />
150
+ >
151
+ { ( tab ) => renderPanelType( tab.value ) }
152
+ </TabPanel>
140
153
  ) }
154
+ { ! canChooseAGradient &&
155
+ renderPanelType( TAB_COLOR.value ) }
156
+ { ! canChooseAColor &&
157
+ renderPanelType( TAB_GRADIENT.value ) }
141
158
  </VStack>
142
159
  </fieldset>
143
160
  </BaseControl>
@@ -11,6 +11,7 @@ import {
11
11
  ColorIndicator,
12
12
  Dropdown,
13
13
  FlexItem,
14
+ __experimentalDropdownContentWrapper as DropdownContentWrapper,
14
15
  __experimentalHStack as HStack,
15
16
  __experimentalToolsPanelItem as ToolsPanelItem,
16
17
  } from '@wordpress/components';
@@ -60,7 +61,12 @@ const LabeledColorIndicator = ( { colorValue, label } ) => (
60
61
  className="block-editor-panel-color-gradient-settings__color-indicator"
61
62
  colorValue={ colorValue }
62
63
  />
63
- <FlexItem>{ label }</FlexItem>
64
+ <FlexItem
65
+ className="block-editor-panel-color-gradient-settings__color-name"
66
+ title={ label }
67
+ >
68
+ { label }
69
+ </FlexItem>
64
70
  </HStack>
65
71
  );
66
72
 
@@ -155,10 +161,15 @@ export default function ColorGradientSettingsDropdown( {
155
161
  <Dropdown
156
162
  popoverProps={ popoverProps }
157
163
  className="block-editor-tools-panel-color-gradient-settings__dropdown"
158
- contentClassName="block-editor-panel-color-gradient-settings__dropdown-content"
159
164
  renderToggle={ renderToggle( toggleSettings ) }
160
165
  renderContent={ () => (
161
- <ColorGradientControl { ...controlProps } />
166
+ <DropdownContentWrapper paddingSize="none">
167
+ <div className="block-editor-panel-color-gradient-settings__dropdown-content">
168
+ <ColorGradientControl
169
+ { ...controlProps }
170
+ />
171
+ </div>
172
+ </DropdownContentWrapper>
162
173
  ) }
163
174
  />
164
175
  </WithToolsPanelItem>
@@ -1,3 +1,8 @@
1
+ // Must equal $color-palette-circle-size from:
2
+ // @wordpress/components/src/circular-option-picker/style.scss
3
+ $swatch-size: 28px;
4
+ $swatch-gap: 12px;
5
+
1
6
  .block-editor-color-gradient-control {
2
7
  .block-editor-color-gradient-control__color-indicator {
3
8
  margin-bottom: $grid-unit-15;
@@ -10,6 +15,12 @@
10
15
  min-width: 0;
11
16
  }
12
17
 
18
+ .block-editor-color-gradient-control__tabs {
19
+ .block-editor-color-gradient-control__panel {
20
+ padding: $grid-unit-20;
21
+ }
22
+ }
23
+
13
24
  .block-editor-panel-color-gradient-settings.block-editor-panel-color-gradient-settings {
14
25
  &,
15
26
  & > div:not(:first-of-type) {
@@ -18,11 +29,6 @@
18
29
  }
19
30
 
20
31
  .block-editor-panel-color-gradient-settings {
21
-
22
- // Must equal $color-palette-circle-size from:
23
- // @wordpress/components/src/circular-option-picker/style.scss
24
- $swatch-size: 28px;
25
-
26
32
  @media screen and (min-width: $break-medium) {
27
33
  .components-circular-option-picker__swatches {
28
34
  display: grid;
@@ -40,10 +46,15 @@
40
46
 
41
47
  }
42
48
 
43
- .block-editor-panel-color-gradient-settings__dropdown-content .components-popover__content {
44
- width: $sidebar-width;
45
- }
49
+ .block-editor-panel-color-gradient-settings__dropdown-content {
50
+ .block-editor-color-gradient-control__panel {
51
+ $panelPadding: $grid-unit-20;
46
52
 
53
+ // Ensure the popover perfectly wraps the swatches.
54
+ width: ( $swatch-size * 6 ) + ( $swatch-gap * 5 ) + ( $panelPadding * 2 );
55
+ padding: $panelPadding;
56
+ }
57
+ }
47
58
 
48
59
  .block-editor-panel-color-gradient-settings__color-indicator {
49
60
  // Show a diagonal line (crossed out) for empty swatches.
@@ -59,6 +70,7 @@
59
70
  */
60
71
  .block-editor-tools-panel-color-gradient-settings__item {
61
72
  padding: 0;
73
+ max-width: 100%;
62
74
 
63
75
  // Border styles.
64
76
  border-left: 1px solid rgba(0, 0, 0, 0.1);
@@ -88,15 +100,28 @@
88
100
  padding: 0;
89
101
 
90
102
  > button {
91
- height: 46px;
103
+ height: auto;
104
+ padding-top: $grid-unit * 1.25;
105
+ padding-bottom: $grid-unit * 1.25;
106
+ text-align: left;
92
107
 
93
108
  &.is-open {
94
109
  background: $gray-100;
95
110
  color: var(--wp-admin-theme-color);
96
111
  }
97
112
  }
113
+
114
+ .block-editor-panel-color-gradient-settings__color-name {
115
+ white-space: nowrap;
116
+ overflow: hidden;
117
+ text-overflow: ellipsis;
118
+ }
98
119
  }
99
120
 
100
121
  .block-editor-panel-color-gradient-settings__dropdown {
101
122
  width: 100%;
123
+
124
+ .component-color-indicator {
125
+ flex-shrink: 0;
126
+ }
102
127
  }
@@ -20,17 +20,6 @@ const getButtonWithAriaLabelStartPredicate =
20
20
  );
21
21
  };
22
22
 
23
- const getTabWithTestPredicate = ( text ) => ( element ) => {
24
- return (
25
- element.type === 'button' &&
26
- element.props[ 'aria-label' ] &&
27
- element.props[ 'aria-label' ] === text
28
- );
29
- };
30
-
31
- const colorTabButtonPredicate = getTabWithTestPredicate( 'Solid' );
32
- const gradientTabButtonPredicate = getTabWithTestPredicate( 'Gradient' );
33
-
34
23
  describe( 'ColorPaletteControl', () => {
35
24
  it( 'renders tabs if it is possible to select a color and a gradient rendering a color picker at the start', async () => {
36
25
  render(
@@ -63,8 +52,12 @@ describe( 'ColorPaletteControl', () => {
63
52
  );
64
53
 
65
54
  // Is showing the two tab buttons.
66
- expect( screen.queryByLabelText( 'Solid' ) ).toBeInTheDocument();
67
- expect( screen.queryByLabelText( 'Gradient' ) ).toBeInTheDocument();
55
+ expect(
56
+ screen.getByRole( 'tab', { name: 'Solid' } )
57
+ ).toBeInTheDocument();
58
+ expect(
59
+ screen.getByRole( 'tab', { name: 'Gradient' } )
60
+ ).toBeInTheDocument();
68
61
 
69
62
  // Is showing the two predefined Colors.
70
63
  expect( screen.getAllByLabelText( /^Color:/ ) ).toHaveLength( 2 );
@@ -92,12 +85,12 @@ describe( 'ColorPaletteControl', () => {
92
85
  } );
93
86
 
94
87
  // Is not showing the two tab buttons.
95
- expect( wrapper.root.findAll( colorTabButtonPredicate ) ).toHaveLength(
96
- 0
97
- );
98
88
  expect(
99
- wrapper.root.findAll( gradientTabButtonPredicate )
100
- ).toHaveLength( 0 );
89
+ screen.queryByRole( 'tab', { name: 'Solid' } )
90
+ ).not.toBeInTheDocument();
91
+ expect(
92
+ screen.queryByRole( 'tab', { name: 'Gradient' } )
93
+ ).not.toBeInTheDocument();
101
94
 
102
95
  // Is showing the two predefined Colors.
103
96
  expect(
@@ -139,12 +132,12 @@ describe( 'ColorPaletteControl', () => {
139
132
  } );
140
133
 
141
134
  // Is not showing the two tab buttons.
142
- expect( wrapper.root.findAll( colorTabButtonPredicate ) ).toHaveLength(
143
- 0
144
- );
145
135
  expect(
146
- wrapper.root.findAll( gradientTabButtonPredicate )
147
- ).toHaveLength( 0 );
136
+ screen.queryByRole( 'tab', { name: 'Solid' } )
137
+ ).not.toBeInTheDocument();
138
+ expect(
139
+ screen.queryByRole( 'tab', { name: 'Gradient' } )
140
+ ).not.toBeInTheDocument();
148
141
 
149
142
  // Is showing the two predefined Gradients.
150
143
  expect(
@@ -90,6 +90,7 @@ function NonDefaultControls( { format, onChange } ) {
90
90
  _x( 'M j, Y', 'medium date format' ),
91
91
  _x( 'M j, Y g:i A', 'medium date format with time' ),
92
92
  _x( 'F j, Y', 'long date format' ),
93
+ _x( 'M j', 'short date format without the year' ),
93
94
  ] );
94
95
 
95
96
  const suggestedOptions = suggestedFormats.map(
@@ -88,6 +88,7 @@ export default function FontAppearanceControl( props ) {
88
88
  hasFontStyles = true,
89
89
  hasFontWeights = true,
90
90
  value: { fontStyle, fontWeight },
91
+ ...otherProps
91
92
  } = props;
92
93
  const hasStylesOrWeights = hasFontStyles || hasFontWeights;
93
94
  const label = getFontAppearanceLabel( hasFontStyles, hasFontWeights );
@@ -205,6 +206,7 @@ export default function FontAppearanceControl( props ) {
205
206
  return (
206
207
  hasStylesOrWeights && (
207
208
  <CustomSelectControl
209
+ { ...otherProps }
208
210
  className="components-font-appearance-control"
209
211
  label={ label }
210
212
  describedBy={ getDescribedBy() }
@@ -213,6 +215,7 @@ export default function FontAppearanceControl( props ) {
213
215
  onChange={ ( { selectedItem } ) =>
214
216
  onChange( selectedItem.style )
215
217
  }
218
+ __nextUnconstrainedWidth
216
219
  />
217
220
  )
218
221
  );