@wordpress/block-editor 8.0.13 → 8.1.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 (441) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +12 -1
  4. package/build/components/block-caption/index.native.js +14 -3
  5. package/build/components/block-caption/index.native.js.map +1 -1
  6. package/build/components/block-edit/index.js +9 -0
  7. package/build/components/block-edit/index.js.map +1 -1
  8. package/build/components/block-inspector/index.js +8 -20
  9. package/build/components/block-inspector/index.js.map +1 -1
  10. package/build/components/block-list-appender/index.js +3 -11
  11. package/build/components/block-list-appender/index.js.map +1 -1
  12. package/build/components/block-media-update-progress/index.native.js +2 -1
  13. package/build/components/block-media-update-progress/index.native.js.map +1 -1
  14. package/build/components/block-preview/auto.js +30 -6
  15. package/build/components/block-preview/auto.js.map +1 -1
  16. package/build/components/block-settings/container.native.js +2 -1
  17. package/build/components/block-settings/container.native.js.map +1 -1
  18. package/build/components/block-styles/index.js +110 -134
  19. package/build/components/block-styles/index.js.map +1 -1
  20. package/build/components/block-styles/menu-items.js +63 -0
  21. package/build/components/block-styles/menu-items.js.map +1 -0
  22. package/build/components/block-styles/preview-panel.js +45 -0
  23. package/build/components/block-styles/preview-panel.js.map +1 -0
  24. package/build/components/block-styles/preview.native.js +2 -2
  25. package/build/components/block-styles/preview.native.js.map +1 -1
  26. package/build/components/block-styles/use-styles-for-block.js +119 -0
  27. package/build/components/block-styles/use-styles-for-block.js.map +1 -0
  28. package/build/components/block-styles/utils.js +39 -0
  29. package/build/components/block-styles/utils.js.map +1 -1
  30. package/build/components/block-switcher/block-styles-menu.js +3 -23
  31. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  32. package/build/components/block-tools/back-compat.js +2 -1
  33. package/build/components/block-tools/back-compat.js.map +1 -1
  34. package/build/components/block-tools/block-selection-button.js +5 -1
  35. package/build/components/block-tools/block-selection-button.js.map +1 -1
  36. package/build/components/block-tools/insertion-point.js +11 -1
  37. package/build/components/block-tools/insertion-point.js.map +1 -1
  38. package/build/components/block-types-list/index.native.js +2 -2
  39. package/build/components/block-types-list/index.native.js.map +1 -1
  40. package/build/components/button-block-appender/index.js +2 -1
  41. package/build/components/button-block-appender/index.js.map +1 -1
  42. package/build/components/colors-gradients/dropdown.js +88 -0
  43. package/build/components/colors-gradients/dropdown.js.map +1 -0
  44. package/build/components/colors-gradients/panel-color-gradient-settings.js +6 -5
  45. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  46. package/build/components/colors-gradients/panel-color-gradient-settings.native.js +6 -3
  47. package/build/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
  48. package/build/components/contrast-checker/index.js +34 -9
  49. package/build/components/contrast-checker/index.js.map +1 -1
  50. package/build/components/contrast-checker/index.native.js +108 -0
  51. package/build/components/contrast-checker/index.native.js.map +1 -0
  52. package/build/components/default-block-appender/index.js +16 -19
  53. package/build/components/default-block-appender/index.js.map +1 -1
  54. package/build/components/default-style-picker/index.js +18 -3
  55. package/build/components/default-style-picker/index.js.map +1 -1
  56. package/build/components/font-appearance-control/index.js +11 -11
  57. package/build/components/font-appearance-control/index.js.map +1 -1
  58. package/build/components/iframe/index.js +6 -9
  59. package/build/components/iframe/index.js.map +1 -1
  60. package/build/components/index.js +18 -9
  61. package/build/components/index.js.map +1 -1
  62. package/build/components/index.native.js +9 -0
  63. package/build/components/index.native.js.map +1 -1
  64. package/build/components/inner-blocks/default-block-appender.js +2 -4
  65. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  66. package/build/components/inner-blocks/use-nested-settings-update.js +16 -14
  67. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  68. package/build/components/inserter/index.js +61 -3
  69. package/build/components/inserter/index.js.map +1 -1
  70. package/build/components/inserter/index.native.js +1 -1
  71. package/build/components/inserter/index.native.js.map +1 -1
  72. package/build/components/inserter/library.js +5 -3
  73. package/build/components/inserter/library.js.map +1 -1
  74. package/build/components/inserter/menu.js +11 -3
  75. package/build/components/inserter/menu.js.map +1 -1
  76. package/build/components/inserter/tabs.native.js +7 -4
  77. package/build/components/inserter/tabs.native.js.map +1 -1
  78. package/build/components/inspector-controls/block-support-slot-container.js +2 -1
  79. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  80. package/build/components/inspector-controls/block-support-tools-panel.js +11 -43
  81. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  82. package/build/components/inspector-controls/fill.native.js +3 -5
  83. package/build/components/inspector-controls/fill.native.js.map +1 -1
  84. package/build/components/inspector-controls/groups.js +2 -0
  85. package/build/components/inspector-controls/groups.js.map +1 -1
  86. package/build/components/inspector-controls/slot.js +1 -3
  87. package/build/components/inspector-controls/slot.js.map +1 -1
  88. package/build/components/letter-spacing-control/index.js +6 -6
  89. package/build/components/letter-spacing-control/index.js.map +1 -1
  90. package/build/components/link-control/link-preview.js +1 -1
  91. package/build/components/link-control/link-preview.js.map +1 -1
  92. package/build/components/link-control/search-item.js +11 -1
  93. package/build/components/link-control/search-item.js.map +1 -1
  94. package/build/components/link-control/search-results.js +2 -1
  95. package/build/components/link-control/search-results.js.map +1 -1
  96. package/build/components/link-control/use-search-handler.js +18 -5
  97. package/build/components/link-control/use-search-handler.js.map +1 -1
  98. package/build/components/list-view/block-select-button.js +23 -3
  99. package/build/components/list-view/block-select-button.js.map +1 -1
  100. package/build/components/list-view/block.js +8 -0
  101. package/build/components/list-view/block.js.map +1 -1
  102. package/build/components/media-placeholder/index.js +2 -0
  103. package/build/components/media-placeholder/index.js.map +1 -1
  104. package/build/components/media-replace-flow/index.js +32 -6
  105. package/build/components/media-replace-flow/index.js.map +1 -1
  106. package/build/components/media-upload-progress/index.native.js +2 -1
  107. package/build/components/media-upload-progress/index.native.js.map +1 -1
  108. package/build/components/panel-color-settings/index.js +7 -3
  109. package/build/components/panel-color-settings/index.js.map +1 -1
  110. package/build/components/provider/block-refs-provider.js +4 -1
  111. package/build/components/provider/block-refs-provider.js.map +1 -1
  112. package/build/components/rich-text/file-paste-handler.js +1 -1
  113. package/build/components/rich-text/file-paste-handler.js.map +1 -1
  114. package/build/components/rich-text/prevent-event-discovery.js +33 -0
  115. package/build/components/rich-text/prevent-event-discovery.js.map +1 -0
  116. package/build/components/rich-text/use-input-rules.js +3 -1
  117. package/build/components/rich-text/use-input-rules.js.map +1 -1
  118. package/build/components/selection-scroll-into-view/index.js +2 -1
  119. package/build/components/selection-scroll-into-view/index.js.map +1 -1
  120. package/build/components/use-display-block-controls/index.native.js +45 -0
  121. package/build/components/use-display-block-controls/index.native.js.map +1 -0
  122. package/build/components/use-on-block-drop/index.js +7 -3
  123. package/build/components/use-on-block-drop/index.js.map +1 -1
  124. package/build/components/writing-flow/use-multi-selection.js +3 -1
  125. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  126. package/build/hooks/border-color.js +74 -10
  127. package/build/hooks/border-color.js.map +1 -1
  128. package/build/hooks/border-radius.js +47 -0
  129. package/build/hooks/border-radius.js.map +1 -1
  130. package/build/hooks/border-style.js +41 -0
  131. package/build/hooks/border-style.js.map +1 -1
  132. package/build/hooks/border-width.js +70 -31
  133. package/build/hooks/border-width.js.map +1 -1
  134. package/build/hooks/border.js +81 -11
  135. package/build/hooks/border.js.map +1 -1
  136. package/build/hooks/color-panel.js +4 -1
  137. package/build/hooks/color-panel.js.map +1 -1
  138. package/build/hooks/color-panel.native.js +77 -0
  139. package/build/hooks/color-panel.native.js.map +1 -0
  140. package/build/hooks/color.js +6 -5
  141. package/build/hooks/color.js.map +1 -1
  142. package/build/hooks/index.native.js +2 -0
  143. package/build/hooks/index.native.js.map +1 -1
  144. package/build/hooks/layout.native.js +20 -0
  145. package/build/hooks/layout.native.js.map +1 -0
  146. package/build/hooks/letter-spacing.js +1 -1
  147. package/build/hooks/letter-spacing.js.map +1 -1
  148. package/build/hooks/typography.js +1 -1
  149. package/build/hooks/typography.js.map +1 -1
  150. package/build/store/actions.js +1 -2
  151. package/build/store/actions.js.map +1 -1
  152. package/build/store/defaults.js +5 -1
  153. package/build/store/defaults.js.map +1 -1
  154. package/build/store/defaults.native.js +2 -6
  155. package/build/store/defaults.native.js.map +1 -1
  156. package/build/store/selectors.js +10 -5
  157. package/build/store/selectors.js.map +1 -1
  158. package/build/utils/get-paste-event-data.js +1 -1
  159. package/build/utils/get-paste-event-data.js.map +1 -1
  160. package/build/utils/parse-css-unit-to-px.js +1 -1
  161. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  162. package/build-module/components/block-caption/index.native.js +13 -3
  163. package/build-module/components/block-caption/index.native.js.map +1 -1
  164. package/build-module/components/block-edit/index.js +9 -0
  165. package/build-module/components/block-edit/index.js.map +1 -1
  166. package/build-module/components/block-inspector/index.js +8 -20
  167. package/build-module/components/block-inspector/index.js.map +1 -1
  168. package/build-module/components/block-list-appender/index.js +3 -10
  169. package/build-module/components/block-list-appender/index.js.map +1 -1
  170. package/build-module/components/block-media-update-progress/index.native.js +2 -1
  171. package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
  172. package/build-module/components/block-preview/auto.js +31 -6
  173. package/build-module/components/block-preview/auto.js.map +1 -1
  174. package/build-module/components/block-settings/container.native.js +2 -1
  175. package/build-module/components/block-settings/container.native.js.map +1 -1
  176. package/build-module/components/block-styles/index.js +112 -133
  177. package/build-module/components/block-styles/index.js.map +1 -1
  178. package/build-module/components/block-styles/menu-items.js +50 -0
  179. package/build-module/components/block-styles/menu-items.js.map +1 -0
  180. package/build-module/components/block-styles/preview-panel.js +35 -0
  181. package/build-module/components/block-styles/preview-panel.js.map +1 -0
  182. package/build-module/components/block-styles/preview.native.js +2 -2
  183. package/build-module/components/block-styles/preview.native.js.map +1 -1
  184. package/build-module/components/block-styles/use-styles-for-block.js +107 -0
  185. package/build-module/components/block-styles/use-styles-for-block.js.map +1 -0
  186. package/build-module/components/block-styles/utils.js +34 -0
  187. package/build-module/components/block-styles/utils.js.map +1 -1
  188. package/build-module/components/block-switcher/block-styles-menu.js +3 -21
  189. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  190. package/build-module/components/block-tools/back-compat.js +2 -1
  191. package/build-module/components/block-tools/back-compat.js.map +1 -1
  192. package/build-module/components/block-tools/block-selection-button.js +5 -1
  193. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  194. package/build-module/components/block-tools/insertion-point.js +11 -1
  195. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  196. package/build-module/components/block-types-list/index.native.js +2 -2
  197. package/build-module/components/block-types-list/index.native.js.map +1 -1
  198. package/build-module/components/button-block-appender/index.js +2 -1
  199. package/build-module/components/button-block-appender/index.js.map +1 -1
  200. package/build-module/components/colors-gradients/dropdown.js +75 -0
  201. package/build-module/components/colors-gradients/dropdown.js.map +1 -0
  202. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +8 -7
  203. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  204. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js +7 -4
  205. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
  206. package/build-module/components/contrast-checker/index.js +34 -9
  207. package/build-module/components/contrast-checker/index.js.map +1 -1
  208. package/build-module/components/contrast-checker/index.native.js +90 -0
  209. package/build-module/components/contrast-checker/index.native.js.map +1 -0
  210. package/build-module/components/default-block-appender/index.js +15 -18
  211. package/build-module/components/default-block-appender/index.js.map +1 -1
  212. package/build-module/components/default-style-picker/index.js +17 -3
  213. package/build-module/components/default-style-picker/index.js.map +1 -1
  214. package/build-module/components/font-appearance-control/index.js +12 -12
  215. package/build-module/components/font-appearance-control/index.js.map +1 -1
  216. package/build-module/components/iframe/index.js +6 -9
  217. package/build-module/components/iframe/index.js.map +1 -1
  218. package/build-module/components/index.js +2 -1
  219. package/build-module/components/index.js.map +1 -1
  220. package/build-module/components/index.native.js +1 -0
  221. package/build-module/components/index.native.js.map +1 -1
  222. package/build-module/components/inner-blocks/default-block-appender.js +2 -4
  223. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  224. package/build-module/components/inner-blocks/use-nested-settings-update.js +16 -14
  225. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  226. package/build-module/components/inserter/index.js +61 -3
  227. package/build-module/components/inserter/index.js.map +1 -1
  228. package/build-module/components/inserter/index.native.js +2 -2
  229. package/build-module/components/inserter/index.native.js.map +1 -1
  230. package/build-module/components/inserter/library.js +5 -3
  231. package/build-module/components/inserter/library.js.map +1 -1
  232. package/build-module/components/inserter/menu.js +11 -4
  233. package/build-module/components/inserter/menu.js.map +1 -1
  234. package/build-module/components/inserter/tabs.native.js +7 -4
  235. package/build-module/components/inserter/tabs.native.js.map +1 -1
  236. package/build-module/components/inspector-controls/block-support-slot-container.js +2 -1
  237. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  238. package/build-module/components/inspector-controls/block-support-tools-panel.js +12 -43
  239. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  240. package/build-module/components/inspector-controls/fill.native.js +3 -5
  241. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  242. package/build-module/components/inspector-controls/groups.js +2 -0
  243. package/build-module/components/inspector-controls/groups.js.map +1 -1
  244. package/build-module/components/inspector-controls/slot.js +1 -3
  245. package/build-module/components/inspector-controls/slot.js.map +1 -1
  246. package/build-module/components/letter-spacing-control/index.js +6 -6
  247. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  248. package/build-module/components/link-control/link-preview.js +1 -1
  249. package/build-module/components/link-control/link-preview.js.map +1 -1
  250. package/build-module/components/link-control/search-item.js +11 -1
  251. package/build-module/components/link-control/search-item.js.map +1 -1
  252. package/build-module/components/link-control/search-results.js +2 -1
  253. package/build-module/components/link-control/search-results.js.map +1 -1
  254. package/build-module/components/link-control/use-search-handler.js +18 -5
  255. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  256. package/build-module/components/list-view/block-select-button.js +22 -3
  257. package/build-module/components/list-view/block-select-button.js.map +1 -1
  258. package/build-module/components/list-view/block.js +6 -0
  259. package/build-module/components/list-view/block.js.map +1 -1
  260. package/build-module/components/media-placeholder/index.js +2 -0
  261. package/build-module/components/media-placeholder/index.js.map +1 -1
  262. package/build-module/components/media-replace-flow/index.js +32 -6
  263. package/build-module/components/media-replace-flow/index.js.map +1 -1
  264. package/build-module/components/media-upload-progress/index.native.js +2 -1
  265. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  266. package/build-module/components/panel-color-settings/index.js +7 -3
  267. package/build-module/components/panel-color-settings/index.js.map +1 -1
  268. package/build-module/components/provider/block-refs-provider.js +4 -1
  269. package/build-module/components/provider/block-refs-provider.js.map +1 -1
  270. package/build-module/components/rich-text/file-paste-handler.js +1 -1
  271. package/build-module/components/rich-text/file-paste-handler.js.map +1 -1
  272. package/build-module/components/rich-text/prevent-event-discovery.js +25 -0
  273. package/build-module/components/rich-text/prevent-event-discovery.js.map +1 -0
  274. package/build-module/components/rich-text/use-input-rules.js +2 -1
  275. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  276. package/build-module/components/selection-scroll-into-view/index.js +2 -1
  277. package/build-module/components/selection-scroll-into-view/index.js.map +1 -1
  278. package/build-module/components/use-display-block-controls/index.native.js +34 -0
  279. package/build-module/components/use-display-block-controls/index.native.js.map +1 -0
  280. package/build-module/components/use-on-block-drop/index.js +7 -3
  281. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  282. package/build-module/components/writing-flow/use-multi-selection.js +3 -4
  283. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  284. package/build-module/hooks/border-color.js +72 -12
  285. package/build-module/hooks/border-color.js.map +1 -1
  286. package/build-module/hooks/border-radius.js +42 -0
  287. package/build-module/hooks/border-radius.js.map +1 -1
  288. package/build-module/hooks/border-style.js +36 -0
  289. package/build-module/hooks/border-style.js.map +1 -1
  290. package/build-module/hooks/border-width.js +66 -32
  291. package/build-module/hooks/border-width.js.map +1 -1
  292. package/build-module/hooks/border.js +80 -12
  293. package/build-module/hooks/border.js.map +1 -1
  294. package/build-module/hooks/color-panel.js +4 -1
  295. package/build-module/hooks/color-panel.js.map +1 -1
  296. package/build-module/hooks/color-panel.native.js +62 -0
  297. package/build-module/hooks/color-panel.native.js.map +1 -0
  298. package/build-module/hooks/color.js +6 -5
  299. package/build-module/hooks/color.js.map +1 -1
  300. package/build-module/hooks/index.native.js +1 -0
  301. package/build-module/hooks/index.native.js.map +1 -1
  302. package/build-module/hooks/layout.native.js +16 -0
  303. package/build-module/hooks/layout.native.js.map +1 -0
  304. package/build-module/hooks/letter-spacing.js +1 -1
  305. package/build-module/hooks/letter-spacing.js.map +1 -1
  306. package/build-module/hooks/typography.js +1 -1
  307. package/build-module/hooks/typography.js.map +1 -1
  308. package/build-module/store/actions.js +1 -2
  309. package/build-module/store/actions.js.map +1 -1
  310. package/build-module/store/defaults.js +5 -1
  311. package/build-module/store/defaults.js.map +1 -1
  312. package/build-module/store/defaults.native.js +2 -5
  313. package/build-module/store/defaults.native.js.map +1 -1
  314. package/build-module/store/selectors.js +10 -5
  315. package/build-module/store/selectors.js.map +1 -1
  316. package/build-module/utils/get-paste-event-data.js +1 -1
  317. package/build-module/utils/get-paste-event-data.js.map +1 -1
  318. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  319. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  320. package/build-style/style-rtl.css +226 -181
  321. package/build-style/style.css +226 -181
  322. package/package.json +31 -27
  323. package/src/components/block-caption/index.native.js +22 -4
  324. package/src/components/block-card/README.md +1 -1
  325. package/src/components/block-edit/index.js +8 -0
  326. package/src/components/block-edit/test/edit.native.js +10 -9
  327. package/src/components/block-inspector/index.js +9 -16
  328. package/src/components/block-list-appender/index.js +5 -21
  329. package/src/components/block-media-update-progress/index.native.js +1 -1
  330. package/src/components/block-media-update-progress/test/index.native.js +136 -93
  331. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +108 -47
  332. package/src/components/block-mover/test/index.native.js +5 -5
  333. package/src/components/block-preview/README.md +14 -26
  334. package/src/components/block-preview/auto.js +33 -3
  335. package/src/components/block-preview/test/index.js +2 -0
  336. package/src/components/block-settings/container.native.js +1 -0
  337. package/src/components/block-styles/index.js +125 -145
  338. package/src/components/block-styles/menu-items.js +49 -0
  339. package/src/components/block-styles/preview-panel.js +36 -0
  340. package/src/components/block-styles/preview.native.js +5 -2
  341. package/src/components/block-styles/style.scss +59 -51
  342. package/src/components/block-styles/test/{index.js → utils.js} +60 -1
  343. package/src/components/block-styles/use-styles-for-block.js +99 -0
  344. package/src/components/block-styles/utils.js +39 -0
  345. package/src/components/block-switcher/block-styles-menu.js +3 -38
  346. package/src/components/block-tools/back-compat.js +1 -0
  347. package/src/components/block-tools/block-selection-button.js +7 -1
  348. package/src/components/block-tools/insertion-point.js +10 -1
  349. package/src/components/block-types-list/index.native.js +5 -2
  350. package/src/components/border-radius-control/style.scss +1 -1
  351. package/src/components/border-style-control/style.scss +0 -1
  352. package/src/components/button-block-appender/index.js +1 -0
  353. package/src/components/color-palette/test/__snapshots__/control.js.snap +9 -4
  354. package/src/components/colors-gradients/dropdown.js +96 -0
  355. package/src/components/colors-gradients/panel-color-gradient-settings.js +23 -19
  356. package/src/components/colors-gradients/panel-color-gradient-settings.native.js +13 -2
  357. package/src/components/colors-gradients/style.scss +59 -5
  358. package/src/components/contrast-checker/README.md +3 -1
  359. package/src/components/contrast-checker/index.js +48 -20
  360. package/src/components/contrast-checker/index.native.js +113 -0
  361. package/src/components/contrast-checker/style.native.scss +26 -0
  362. package/src/components/contrast-checker/test/index.js +65 -0
  363. package/src/components/default-block-appender/index.js +17 -24
  364. package/src/components/default-block-appender/style.scss +4 -0
  365. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +12 -24
  366. package/src/components/default-block-appender/test/index.js +4 -14
  367. package/src/components/default-style-picker/index.js +18 -6
  368. package/src/components/font-appearance-control/index.js +12 -12
  369. package/src/components/iframe/index.js +10 -10
  370. package/src/components/index.js +2 -1
  371. package/src/components/index.native.js +1 -0
  372. package/src/components/inner-blocks/README.md +2 -0
  373. package/src/components/inner-blocks/default-block-appender.js +2 -7
  374. package/src/components/inner-blocks/use-nested-settings-update.js +16 -14
  375. package/src/components/inserter/index.js +77 -5
  376. package/src/components/inserter/index.native.js +2 -2
  377. package/src/components/inserter/library.js +17 -12
  378. package/src/components/inserter/menu.js +31 -13
  379. package/src/components/inserter/tabs.native.js +5 -4
  380. package/src/components/inserter/test/block-types-tab.native.js +9 -10
  381. package/src/components/inserter/test/index.native.js +3 -7
  382. package/src/components/inserter/test/reusable-blocks-tab.native.js +8 -10
  383. package/src/components/inspector-controls/block-support-slot-container.js +3 -1
  384. package/src/components/inspector-controls/block-support-tools-panel.js +39 -58
  385. package/src/components/inspector-controls/fill.native.js +4 -3
  386. package/src/components/inspector-controls/groups.js +2 -0
  387. package/src/components/inspector-controls/slot.js +2 -7
  388. package/src/components/letter-spacing-control/index.js +6 -6
  389. package/src/components/link-control/README.md +1 -1
  390. package/src/components/link-control/link-preview.js +1 -1
  391. package/src/components/link-control/search-item.js +11 -2
  392. package/src/components/link-control/search-results.js +1 -0
  393. package/src/components/link-control/style.scss +2 -1
  394. package/src/components/link-control/test/index.js +4 -0
  395. package/src/components/link-control/use-search-handler.js +25 -4
  396. package/src/components/list-view/block-select-button.js +20 -1
  397. package/src/components/list-view/block.js +10 -0
  398. package/src/components/media-placeholder/index.js +2 -0
  399. package/src/components/media-replace-flow/index.js +35 -5
  400. package/src/components/media-upload/test/index.native.js +28 -47
  401. package/src/components/media-upload-progress/index.native.js +1 -0
  402. package/src/components/media-upload-progress/test/index.native.js +60 -47
  403. package/src/components/panel-color-settings/index.js +8 -4
  404. package/src/components/provider/block-refs-provider.js +4 -1
  405. package/src/components/rich-text/file-paste-handler.js +3 -1
  406. package/src/components/rich-text/prevent-event-discovery.js +23 -0
  407. package/src/components/rich-text/use-input-rules.js +2 -1
  408. package/src/components/selection-scroll-into-view/index.js +1 -0
  409. package/src/components/url-input/README.md +5 -0
  410. package/src/components/use-display-block-controls/index.native.js +38 -0
  411. package/src/components/use-on-block-drop/index.js +7 -3
  412. package/src/components/writing-flow/test/use-multi-selection.js +36 -0
  413. package/src/components/writing-flow/use-multi-selection.js +12 -9
  414. package/src/hooks/border-color.js +69 -9
  415. package/src/hooks/border-radius.js +32 -0
  416. package/src/hooks/border-style.js +26 -0
  417. package/src/hooks/border-width.js +56 -32
  418. package/src/hooks/border.js +115 -20
  419. package/src/hooks/border.scss +3 -17
  420. package/src/hooks/color-panel.js +3 -0
  421. package/src/hooks/color-panel.native.js +63 -0
  422. package/src/hooks/color.js +8 -7
  423. package/src/hooks/dimensions.scss +5 -0
  424. package/src/hooks/index.native.js +1 -0
  425. package/src/hooks/layout.native.js +23 -0
  426. package/src/hooks/letter-spacing.js +1 -1
  427. package/src/hooks/typography.js +1 -1
  428. package/src/store/actions.js +1 -2
  429. package/src/store/defaults.js +2 -0
  430. package/src/store/defaults.native.js +2 -6
  431. package/src/store/selectors.js +10 -5
  432. package/src/style.scss +4 -3
  433. package/src/utils/get-paste-event-data.js +1 -1
  434. package/src/utils/parse-css-unit-to-px.js +1 -1
  435. package/src/utils/test/parse-css-unit-to-px.js +3 -0
  436. package/tsconfig.tsbuildinfo +1 -1
  437. package/build/components/use-canvas-click-redirect/index.js +0 -66
  438. package/build/components/use-canvas-click-redirect/index.js.map +0 -1
  439. package/build-module/components/use-canvas-click-redirect/index.js +0 -54
  440. package/build-module/components/use-canvas-click-redirect/index.js.map +0 -1
  441. package/src/components/use-canvas-click-redirect/index.js +0 -57
@@ -7,13 +7,17 @@ import { every, isEmpty } from 'lodash';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { PanelBody, ColorIndicator } from '@wordpress/components';
10
+ import {
11
+ __experimentalSpacer as Spacer,
12
+ ColorIndicator,
13
+ PanelBody,
14
+ } from '@wordpress/components';
11
15
  import { sprintf, __ } from '@wordpress/i18n';
12
16
 
13
17
  /**
14
18
  * Internal dependencies
15
19
  */
16
- import ColorGradientControl from './control';
20
+ import ColorGradientSettingsDropdown from './dropdown';
17
21
  import { getColorObjectByColorValue } from '../colors';
18
22
  import { __experimentalGetGradientObjectByGradientValue } from '../gradients';
19
23
  import useSetting from '../use-setting';
@@ -136,23 +140,23 @@ export const PanelColorGradientSettingsInner = ( {
136
140
  title={ showTitle ? titleElement : undefined }
137
141
  { ...props }
138
142
  >
139
- { settings.map( ( setting, index ) => (
140
- <ColorGradientControl
141
- showTitle={ showTitle }
142
- key={ index }
143
- { ...{
144
- colors,
145
- gradients,
146
- disableCustomColors,
147
- disableCustomGradients,
148
- __experimentalHasMultipleOrigins,
149
- __experimentalIsRenderedInSidebar,
150
- enableAlpha,
151
- ...setting,
152
- } }
153
- />
154
- ) ) }
155
- { children }
143
+ <ColorGradientSettingsDropdown
144
+ settings={ settings }
145
+ { ...{
146
+ colors,
147
+ gradients,
148
+ disableCustomColors,
149
+ disableCustomGradients,
150
+ __experimentalHasMultipleOrigins,
151
+ __experimentalIsRenderedInSidebar,
152
+ enableAlpha,
153
+ } }
154
+ />
155
+ { !! children && (
156
+ <>
157
+ <Spacer marginY={ 4 } /> { children }
158
+ </>
159
+ ) }
156
160
  </PanelBody>
157
161
  );
158
162
  };
@@ -14,13 +14,18 @@ import { useMemo } from '@wordpress/element';
14
14
  */
15
15
  import { blockSettingsScreens } from '../block-settings';
16
16
 
17
- export default function PanelColorGradientSettings( { settings, title } ) {
17
+ export default function PanelColorGradientSettings( {
18
+ settings,
19
+ title,
20
+ children,
21
+ } ) {
18
22
  const navigation = useNavigation();
19
23
 
20
24
  const mappedSettings = useMemo( () => {
21
25
  return settings.map(
22
26
  ( {
23
27
  onColorChange,
28
+ onColorCleared,
24
29
  colorValue,
25
30
  onGradientChange,
26
31
  gradientValue,
@@ -33,6 +38,7 @@ export default function PanelColorGradientSettings( { settings, title } ) {
33
38
  colorValue: gradientValue || colorValue,
34
39
  gradientValue,
35
40
  onGradientChange,
41
+ onColorCleared,
36
42
  label,
37
43
  } );
38
44
  } }
@@ -44,5 +50,10 @@ export default function PanelColorGradientSettings( { settings, title } ) {
44
50
  );
45
51
  }, [ settings ] );
46
52
 
47
- return <PanelBody title={ title }>{ mappedSettings }</PanelBody>;
53
+ return (
54
+ <>
55
+ <PanelBody title={ title }>{ mappedSettings }</PanelBody>
56
+ <PanelBody>{ children }</PanelBody>
57
+ </>
58
+ );
48
59
  }
@@ -5,13 +5,18 @@
5
5
  }
6
6
 
7
7
  .block-editor-panel-color-gradient-settings {
8
- .component-color-indicator {
9
- vertical-align: text-bottom;
10
- }
8
+ .block-editor-panel-color-gradient-settings__panel-title {
9
+ display: flex;
10
+ gap: $grid-unit-10;
11
11
 
12
- &__panel-title {
13
12
  .component-color-indicator {
14
- display: inline-block;
13
+ width: $grid-unit-15;
14
+ height: $grid-unit-15;
15
+ align-self: center;
16
+
17
+ &:first-child {
18
+ margin-left: $grid-unit-15;
19
+ }
15
20
  }
16
21
  }
17
22
 
@@ -37,4 +42,53 @@
37
42
  .block-editor-block-inspector & .components-base-control {
38
43
  margin-bottom: inherit;
39
44
  }
45
+
46
+ .block-editor-panel-color-gradient-settings__dropdown {
47
+ display: block;
48
+ }
40
49
  }
50
+
51
+ .block-editor-panel-color-gradient-settings__dropdown {
52
+ width: 100%;
53
+ }
54
+
55
+ .block-editor-panel-color-gradient-settings__dropdown-content .components-popover__content {
56
+ & > div {
57
+ width: $sidebar-width;
58
+ }
59
+ }
60
+
61
+ @include break-medium() {
62
+ .block-editor-panel-color-gradient-settings__dropdown-content {
63
+ .components-popover__content {
64
+ margin-right: #{ math.div($sidebar-width, 2) + $grid-unit-20 } !important;
65
+ }
66
+
67
+ &.is-from-top .components-popover__content {
68
+ margin-top: #{ -($grid-unit-60 + $grid-unit-15) } !important;
69
+ }
70
+
71
+ &.is-from-bottom .components-popover__content {
72
+ margin-bottom: #{ -($grid-unit-60 + $grid-unit-15) } !important;
73
+ }
74
+ }
75
+ }
76
+
77
+ .block-editor-panel-color-gradient-settings__dropdown:last-child > div {
78
+ border-bottom-width: 0;
79
+ }
80
+
81
+ .block-editor-panel-color-gradient-settings__item {
82
+ padding-top: $grid-unit-15 !important;
83
+ padding-bottom: $grid-unit-15 !important;
84
+ .block-editor-panel-color-gradient-settings__color-indicator {
85
+ // Show a diagonal line (crossed out) for empty swatches.
86
+ background: linear-gradient(-45deg, transparent 48%, $gray-300 48%, $gray-300 52%, transparent 52%);
87
+ }
88
+
89
+ &.is-open {
90
+ background: $gray-100;
91
+ color: var(--wp-admin-theme-color);
92
+ }
93
+ }
94
+
@@ -1,6 +1,8 @@
1
1
  # ContrastChecker
2
2
 
3
- ContrastChecker component determines if contrast for text styles is sufficient (WCAG 2.0 AA) when used with a given background color. ContrastCheker also accounts for background color transparency (alpha) as well as font sizes.
3
+ ContrastChecker component determines if contrast for text styles is sufficient (WCAG 2.0 AA) when used with a given background color.
4
+
5
+ ContrastChecker also accounts for font sizes.
4
6
 
5
7
  A notice will be rendered if the color combination of text and background colors are low.
6
8
 
@@ -20,22 +20,31 @@ function ContrastCheckerMessage( {
20
20
  colordTextColor,
21
21
  backgroundColor,
22
22
  textColor,
23
+ shouldShowTransparencyWarning,
23
24
  } ) {
24
- const msg =
25
- colordBackgroundColor.brightness() < colordTextColor.brightness()
26
- ? __(
27
- 'This color combination may be hard for people to read. Try using a darker background color and/or a brighter text color.'
28
- )
29
- : __(
30
- 'This color combination may be hard for people to read. Try using a brighter background color and/or a darker text color.'
31
- );
25
+ let msg = '';
26
+ if ( shouldShowTransparencyWarning ) {
27
+ msg = __( 'Transparent text may be hard for people to read.' );
28
+ } else {
29
+ msg =
30
+ colordBackgroundColor.brightness() < colordTextColor.brightness()
31
+ ? __(
32
+ 'This color combination may be hard for people to read. Try using a darker background color and/or a brighter text color.'
33
+ )
34
+ : __(
35
+ 'This color combination may be hard for people to read. Try using a brighter background color and/or a darker text color.'
36
+ );
37
+ }
32
38
 
33
39
  // Note: The `Notice` component can speak messages via its `spokenMessage`
34
40
  // prop, but the contrast checker requires granular control over when the
35
41
  // announcements are made. Notably, the message will be re-announced if a
36
42
  // new color combination is selected and the contrast is still insufficient.
37
43
  useEffect( () => {
38
- speak( __( 'This color combination may be hard for people to read.' ) );
44
+ const speakMsg = shouldShowTransparencyWarning
45
+ ? __( 'Transparent text may be hard for people to read.' )
46
+ : __( 'This color combination may be hard for people to read.' );
47
+ speak( speakMsg );
39
48
  }, [ backgroundColor, textColor ] );
40
49
 
41
50
  return (
@@ -58,6 +67,7 @@ function ContrastChecker( {
58
67
  fontSize, // font size value in pixels
59
68
  isLargeText,
60
69
  textColor,
70
+ enableAlphaChecker = false,
61
71
  } ) {
62
72
  if (
63
73
  ! ( backgroundColor || fallbackBackgroundColor ) ||
@@ -69,28 +79,46 @@ function ContrastChecker( {
69
79
  backgroundColor || fallbackBackgroundColor
70
80
  );
71
81
  const colordTextColor = colord( textColor || fallbackTextColor );
82
+ const textColorHasTransparency = colordTextColor.alpha() < 1;
83
+ const backgroundColorHasTransparency = colordBackgroundColor.alpha() < 1;
72
84
  const hasTransparency =
73
- colordBackgroundColor.alpha() !== 1 || colordTextColor.alpha() !== 1;
85
+ textColorHasTransparency || backgroundColorHasTransparency;
86
+ const isReadable = colordTextColor.isReadable( colordBackgroundColor, {
87
+ level: 'AA',
88
+ size:
89
+ isLargeText || ( isLargeText !== false && fontSize >= 24 )
90
+ ? 'large'
91
+ : 'small',
92
+ } );
74
93
 
75
- if (
76
- hasTransparency ||
77
- colordTextColor.isReadable( colordBackgroundColor, {
78
- level: 'AA',
79
- size:
80
- isLargeText || ( isLargeText !== false && fontSize >= 24 )
81
- ? 'large'
82
- : 'small',
83
- } )
84
- ) {
94
+ // Don't show the message if the text is readable AND there's no transparency.
95
+ // This is the default.
96
+ if ( isReadable && ! hasTransparency ) {
85
97
  return null;
86
98
  }
87
99
 
100
+ if ( hasTransparency ) {
101
+ if (
102
+ // If there's transparency, don't show the message if the alpha checker is disabled.
103
+ ! enableAlphaChecker ||
104
+ // If the alpha checker is enabled, we only show the warning if the text has transparency.
105
+ ( isReadable && ! textColorHasTransparency )
106
+ ) {
107
+ return null;
108
+ }
109
+ }
110
+
88
111
  return (
89
112
  <ContrastCheckerMessage
90
113
  backgroundColor={ backgroundColor }
91
114
  textColor={ textColor }
92
115
  colordBackgroundColor={ colordBackgroundColor }
93
116
  colordTextColor={ colordTextColor }
117
+ // Flag to warn about transparency only if the text is otherwise readable according to colord
118
+ // to ensure the readability warnings take precedence.
119
+ shouldShowTransparencyWarning={
120
+ isReadable && textColorHasTransparency
121
+ }
94
122
  />
95
123
  );
96
124
  }
@@ -0,0 +1,113 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { Text, View } from 'react-native';
5
+ import { colord, extend } from 'colord';
6
+ import namesPlugin from 'colord/plugins/names';
7
+ import a11yPlugin from 'colord/plugins/a11y';
8
+
9
+ /**
10
+ * WordPress dependencies
11
+ */
12
+ import { speak } from '@wordpress/a11y';
13
+ import { __ } from '@wordpress/i18n';
14
+ import { useEffect } from '@wordpress/element';
15
+ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
16
+ import { Icon, warning } from '@wordpress/icons';
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+ import styles from './style.scss';
21
+
22
+ extend( [ namesPlugin, a11yPlugin ] );
23
+
24
+ function ContrastCheckerMessage( {
25
+ colordBackgroundColor,
26
+ colordTextColor,
27
+ backgroundColor,
28
+ textColor,
29
+ msgStyle,
30
+ } ) {
31
+ const msg =
32
+ colordBackgroundColor.brightness() < colordTextColor.brightness()
33
+ ? __(
34
+ 'This color combination may be hard for people to read. Try using a darker background color and/or a brighter text color.'
35
+ )
36
+ : __(
37
+ 'This color combination may be hard for people to read. Try using a brighter background color and/or a darker text color.'
38
+ );
39
+
40
+ // Note: The `Notice` component can speak messages via its `spokenMessage`
41
+ // prop, but the contrast checker requires granular control over when the
42
+ // announcements are made. Notably, the message will be re-announced if a
43
+ // new color combination is selected and the contrast is still insufficient.
44
+ useEffect( () => {
45
+ speak( __( 'This color combination may be hard for people to read.' ) );
46
+ }, [ backgroundColor, textColor ] );
47
+
48
+ const iconStyle = usePreferredColorSchemeStyle(
49
+ styles[ 'block-editor-contrast-checker__icon' ],
50
+ styles[ 'block-editor-contrast-checker__icon-dark' ]
51
+ );
52
+
53
+ return (
54
+ <View style={ styles[ 'block-editor-contrast-checker' ] }>
55
+ <Icon style={ iconStyle } icon={ warning } />
56
+ <Text style={ msgStyle }>{ msg }</Text>
57
+ </View>
58
+ );
59
+ }
60
+
61
+ function ContrastChecker( {
62
+ backgroundColor,
63
+ fallbackBackgroundColor,
64
+ fallbackTextColor,
65
+ fontSize, // font size value in pixels
66
+ isLargeText,
67
+ textColor,
68
+ } ) {
69
+ const msgStyle = usePreferredColorSchemeStyle(
70
+ styles[ 'block-editor-contrast-checker__notice' ],
71
+ styles[ 'block-editor-contrast-checker__notice-dark' ]
72
+ );
73
+
74
+ if (
75
+ ! ( backgroundColor || fallbackBackgroundColor ) ||
76
+ ! ( textColor || fallbackTextColor )
77
+ ) {
78
+ return null;
79
+ }
80
+
81
+ const colordBackgroundColor = colord(
82
+ backgroundColor || fallbackBackgroundColor
83
+ );
84
+ const colordTextColor = colord( textColor || fallbackTextColor );
85
+
86
+ const hasTransparency =
87
+ colordBackgroundColor.alpha() !== 1 || colordTextColor.alpha() !== 1;
88
+
89
+ if (
90
+ hasTransparency ||
91
+ colordTextColor.isReadable( colordBackgroundColor, {
92
+ level: 'AA',
93
+ size:
94
+ isLargeText || ( isLargeText !== false && fontSize >= 24 )
95
+ ? 'large'
96
+ : 'small',
97
+ } )
98
+ ) {
99
+ return null;
100
+ }
101
+
102
+ return (
103
+ <ContrastCheckerMessage
104
+ backgroundColor={ backgroundColor }
105
+ textColor={ textColor }
106
+ colordBackgroundColor={ colordBackgroundColor }
107
+ colordTextColor={ colordTextColor }
108
+ msgStyle={ msgStyle }
109
+ />
110
+ );
111
+ }
112
+
113
+ export default ContrastChecker;
@@ -0,0 +1,26 @@
1
+ .block-editor-contrast-checker {
2
+ flex-direction: row;
3
+ align-items: center;
4
+ padding: 8px 0;
5
+ justify-content: space-between;
6
+ }
7
+
8
+ .block-editor-contrast-checker__notice {
9
+ font-size: 11px;
10
+ font-weight: 500;
11
+ color: $yellow-50;
12
+ flex: 1;
13
+ }
14
+
15
+ .block-editor-contrast-checker__notice-dark {
16
+ color: $yellow-30;
17
+ }
18
+
19
+ .block-editor-contrast-checker__icon {
20
+ color: $yellow-50;
21
+ margin-right: 5px;
22
+ }
23
+
24
+ .block-editor-contrast-checker__icon-dark {
25
+ color: $yellow-30;
26
+ }
@@ -50,6 +50,20 @@ describe( 'ContrastChecker', () => {
50
50
  expect( wrapper.html() ).toBeNull();
51
51
  } );
52
52
 
53
+ test( 'should render null when the colors meet AA WCAG guidelines and alpha checker enabled.', () => {
54
+ const wrapper = mount(
55
+ <ContrastChecker
56
+ backgroundColor={ backgroundColor }
57
+ textColor={ textColor }
58
+ isLargeText={ isLargeText }
59
+ enableAlphaChecker={ true }
60
+ />
61
+ );
62
+
63
+ expect( speak ).not.toHaveBeenCalled();
64
+ expect( wrapper.html() ).toBeNull();
65
+ } );
66
+
53
67
  test( 'should render component when the colors do not meet AA WCAG guidelines.', () => {
54
68
  const wrapper = mount(
55
69
  <ContrastChecker
@@ -258,4 +272,55 @@ describe( 'ContrastChecker', () => {
258
272
 
259
273
  expect( speak ).toHaveBeenCalledTimes( 2 );
260
274
  } );
275
+
276
+ // enableAlphaChecker tests
277
+ test( 'should render component when the colors meet AA WCAG guidelines but the text color only has alpha transparency with alpha checker enabled.', () => {
278
+ const wrapper = mount(
279
+ <ContrastChecker
280
+ backgroundColor={ backgroundColor }
281
+ textColor={ 'rgba(0,0,0,0.9)' }
282
+ isLargeText={ isLargeText }
283
+ enableAlphaChecker={ true }
284
+ />
285
+ );
286
+
287
+ expect( speak ).toHaveBeenCalledWith(
288
+ 'Transparent text may be hard for people to read.'
289
+ );
290
+ expect( wrapper.find( Notice ).children().text() ).toBe(
291
+ 'Transparent text may be hard for people to read.'
292
+ );
293
+ } );
294
+
295
+ test( 'should render null when the colors meet AA WCAG guidelines but the background color only has alpha transparency with alpha checker enabled.', () => {
296
+ const wrapper = mount(
297
+ <ContrastChecker
298
+ backgroundColor={ 'rgba(255,255,255,0.7)' }
299
+ textColor={ textColor }
300
+ isLargeText={ isLargeText }
301
+ enableAlphaChecker={ true }
302
+ />
303
+ );
304
+
305
+ expect( speak ).not.toHaveBeenCalled();
306
+ expect( wrapper.html() ).toBeNull();
307
+ } );
308
+
309
+ test( 'should render component when the colors meet AA WCAG guidelines but all colors have alpha transparency with alpha checker enabled.', () => {
310
+ const wrapper = mount(
311
+ <ContrastChecker
312
+ backgroundColor={ 'rgba(255,255,255,0.7)' }
313
+ textColor={ 'rgba(0,0,0,0.7)' }
314
+ isLargeText={ isLargeText }
315
+ enableAlphaChecker={ true }
316
+ />
317
+ );
318
+
319
+ expect( speak ).toHaveBeenCalledWith(
320
+ 'Transparent text may be hard for people to read.'
321
+ );
322
+ expect( wrapper.find( Notice ).children().text() ).toBe(
323
+ 'Transparent text may be hard for people to read.'
324
+ );
325
+ } );
261
326
  } );
@@ -8,9 +8,9 @@ import classnames from 'classnames';
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
10
  import { compose } from '@wordpress/compose';
11
- import { getDefaultBlockName } from '@wordpress/blocks';
12
11
  import { decodeEntities } from '@wordpress/html-entities';
13
12
  import { withSelect, withDispatch } from '@wordpress/data';
13
+ import { ENTER, SPACE } from '@wordpress/keycodes';
14
14
 
15
15
  /**
16
16
  * Internal dependencies
@@ -26,13 +26,12 @@ export const ZWNBSP = '\ufeff';
26
26
 
27
27
  export function DefaultBlockAppender( {
28
28
  isLocked,
29
- isVisible,
30
29
  onAppend,
31
30
  showPrompt,
32
31
  placeholder,
33
32
  rootClientId,
34
33
  } ) {
35
- if ( isLocked || ! isVisible ) {
34
+ if ( isLocked ) {
36
35
  return null;
37
36
  }
38
37
 
@@ -48,20 +47,23 @@ export function DefaultBlockAppender( {
48
47
  >
49
48
  <p
50
49
  tabIndex="0"
51
- // Only necessary for `useCanvasClickRedirect` to consider it
52
- // as a target. Ideally it should consider any tabbable target,
53
- // but the inserter is rendered in place while it should be
54
- // rendered in a popover, just like it does for an empty
55
- // paragraph block.
56
- contentEditable
57
- suppressContentEditableWarning
58
50
  // We want this element to be styled as a paragraph by themes.
59
51
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role
60
52
  role="button"
61
- aria-label={ __( 'Add block' ) }
53
+ aria-label={ __( 'Add default block' ) }
62
54
  // A wrapping container for this one already has the wp-block className.
63
55
  className="block-editor-default-block-appender__content"
64
- onFocus={ onAppend }
56
+ onKeyDown={ ( event ) => {
57
+ if ( ENTER === event.keyCode || SPACE === event.keyCode ) {
58
+ onAppend();
59
+ }
60
+ } }
61
+ onClick={ () => onAppend() }
62
+ onFocus={ () => {
63
+ if ( showPrompt ) {
64
+ onAppend();
65
+ }
66
+ } }
65
67
  >
66
68
  { showPrompt ? value : ZWNBSP }
67
69
  </p>
@@ -77,23 +79,14 @@ export function DefaultBlockAppender( {
77
79
 
78
80
  export default compose(
79
81
  withSelect( ( select, ownProps ) => {
80
- const {
81
- getBlockCount,
82
- getBlockName,
83
- isBlockValid,
84
- getSettings,
85
- getTemplateLock,
86
- } = select( blockEditorStore );
82
+ const { getBlockCount, getSettings, getTemplateLock } = select(
83
+ blockEditorStore
84
+ );
87
85
 
88
86
  const isEmpty = ! getBlockCount( ownProps.rootClientId );
89
- const isLastBlockDefault =
90
- getBlockName( ownProps.lastBlockClientId ) ===
91
- getDefaultBlockName();
92
- const isLastBlockValid = isBlockValid( ownProps.lastBlockClientId );
93
87
  const { bodyPlaceholder } = getSettings();
94
88
 
95
89
  return {
96
- isVisible: isEmpty || ! isLastBlockDefault || ! isLastBlockValid,
97
90
  showPrompt: isEmpty,
98
91
  isLocked: !! getTemplateLock( ownProps.rootClientId ),
99
92
  placeholder: bodyPlaceholder,
@@ -126,3 +126,7 @@
126
126
  display: flex;
127
127
  }
128
128
  }
129
+
130
+ .block-editor-default-block-appender__content {
131
+ cursor: text;
132
+ }
@@ -6,24 +6,12 @@ exports[`DefaultBlockAppender should append a default block when input focused 1
6
6
  data-root-client-id=""
7
7
  >
8
8
  <p
9
- aria-label="Add block"
9
+ aria-label="Add default block"
10
10
  className="block-editor-default-block-appender__content"
11
- contentEditable={true}
12
- onFocus={
13
- [MockFunction] {
14
- "calls": Array [
15
- Array [],
16
- ],
17
- "results": Array [
18
- Object {
19
- "type": "return",
20
- "value": undefined,
21
- },
22
- ],
23
- }
24
- }
11
+ onClick={[Function]}
12
+ onFocus={[Function]}
13
+ onKeyDown={[Function]}
25
14
  role="button"
26
- suppressContentEditableWarning={true}
27
15
  tabIndex="0"
28
16
  >
29
17
  Type / to choose a block
@@ -42,12 +30,12 @@ exports[`DefaultBlockAppender should match snapshot 1`] = `
42
30
  data-root-client-id=""
43
31
  >
44
32
  <p
45
- aria-label="Add block"
33
+ aria-label="Add default block"
46
34
  className="block-editor-default-block-appender__content"
47
- contentEditable={true}
48
- onFocus={[MockFunction]}
35
+ onClick={[Function]}
36
+ onFocus={[Function]}
37
+ onKeyDown={[Function]}
49
38
  role="button"
50
- suppressContentEditableWarning={true}
51
39
  tabIndex="0"
52
40
  >
53
41
  Type / to choose a block
@@ -66,12 +54,12 @@ exports[`DefaultBlockAppender should optionally show without prompt 1`] = `
66
54
  data-root-client-id=""
67
55
  >
68
56
  <p
69
- aria-label="Add block"
57
+ aria-label="Add default block"
70
58
  className="block-editor-default-block-appender__content"
71
- contentEditable={true}
72
- onFocus={[MockFunction]}
59
+ onClick={[Function]}
60
+ onFocus={[Function]}
61
+ onKeyDown={[Function]}
73
62
  role="button"
74
- suppressContentEditableWarning={true}
75
63
  tabIndex="0"
76
64
  >
77
65