@wordpress/block-editor 8.6.0 → 9.2.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 (466) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +5 -2
  3. package/build/components/block-alignment-control/constants.js +48 -0
  4. package/build/components/block-alignment-control/constants.js.map +1 -0
  5. package/build/components/block-alignment-control/ui.js +9 -40
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +92 -0
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -0
  9. package/build/components/block-alignment-matrix-control/index.js +1 -6
  10. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  11. package/build/components/block-content-overlay/index.js +4 -82
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-draggable/draggable-chip.native.js +65 -0
  14. package/build/components/block-draggable/draggable-chip.native.js.map +1 -0
  15. package/build/components/block-draggable/dropping-insertion-point.native.js +157 -0
  16. package/build/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  17. package/build/components/block-draggable/index.native.js +488 -0
  18. package/build/components/block-draggable/index.native.js.map +1 -0
  19. package/build/components/block-draggable/use-scroll-when-dragging.native.js +130 -0
  20. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  21. package/build/components/block-list/block-list-context.native.js +195 -0
  22. package/build/components/block-list/block-list-context.native.js.map +1 -0
  23. package/build/components/block-list/block-list-item-cell.native.js +67 -0
  24. package/build/components/block-list/block-list-item-cell.native.js.map +1 -0
  25. package/build/components/block-list/block-list-item.native.js +12 -9
  26. package/build/components/block-list/block-list-item.native.js.map +1 -1
  27. package/build/components/block-list/block.native.js +27 -5
  28. package/build/components/block-list/block.native.js.map +1 -1
  29. package/build/components/block-list/index.js +34 -32
  30. package/build/components/block-list/index.js.map +1 -1
  31. package/build/components/block-list/index.native.js +75 -23
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/use-block-props/index.js +8 -4
  34. package/build/components/block-list/use-block-props/index.js.map +1 -1
  35. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -7
  36. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  37. package/build/components/block-list/use-in-between-inserter.js +1 -1
  38. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  39. package/build/components/block-mobile-toolbar/index.native.js +10 -3
  40. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  41. package/build/components/block-mover/index.native.js +17 -4
  42. package/build/components/block-mover/index.native.js.map +1 -1
  43. package/build/components/block-navigation/dropdown.js +11 -5
  44. package/build/components/block-navigation/dropdown.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +19 -8
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +20 -16
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/index.js +1 -1
  50. package/build/components/block-preview/index.js.map +1 -1
  51. package/build/components/block-tools/block-selection-button.js +1 -0
  52. package/build/components/block-tools/block-selection-button.js.map +1 -1
  53. package/build/components/block-tools/selected-block-popover.js +1 -29
  54. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  55. package/build/components/block-variation-transforms/index.js +16 -2
  56. package/build/components/block-variation-transforms/index.js.map +1 -1
  57. package/build/components/border-radius-control/input-controls.js +10 -3
  58. package/build/components/border-radius-control/input-controls.js.map +1 -1
  59. package/build/components/color-style-selector/index.js +9 -0
  60. package/build/components/color-style-selector/index.js.map +1 -1
  61. package/build/components/colors-gradients/dropdown.js +122 -41
  62. package/build/components/colors-gradients/dropdown.js.map +1 -1
  63. package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
  64. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  65. package/build/components/convert-to-group-buttons/toolbar.js +22 -5
  66. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  67. package/build/components/iframe/index.js +51 -50
  68. package/build/components/iframe/index.js.map +1 -1
  69. package/build/components/image-editor/use-save-image.js +3 -1
  70. package/build/components/image-editor/use-save-image.js.map +1 -1
  71. package/build/components/index.js +14 -23
  72. package/build/components/index.js.map +1 -1
  73. package/build/components/inserter/index.js +21 -7
  74. package/build/components/inserter/index.js.map +1 -1
  75. package/build/components/inserter/index.native.js +2 -2
  76. package/build/components/inserter/index.native.js.map +1 -1
  77. package/build/components/inserter/quick-inserter.js +4 -5
  78. package/build/components/inserter/quick-inserter.js.map +1 -1
  79. package/build/components/link-control/constants.js +11 -1
  80. package/build/components/link-control/constants.js.map +1 -1
  81. package/build/components/link-control/search-results.js +4 -3
  82. package/build/components/link-control/search-results.js.map +1 -1
  83. package/build/components/link-control/use-search-handler.js +4 -4
  84. package/build/components/link-control/use-search-handler.js.map +1 -1
  85. package/build/components/list-view/block.js +15 -15
  86. package/build/components/list-view/block.js.map +1 -1
  87. package/build/components/list-view/branch.js +9 -13
  88. package/build/components/list-view/branch.js.map +1 -1
  89. package/build/components/list-view/context.js +1 -4
  90. package/build/components/list-view/context.js.map +1 -1
  91. package/build/components/list-view/drop-indicator.js +0 -1
  92. package/build/components/list-view/drop-indicator.js.map +1 -1
  93. package/build/components/list-view/index.js +15 -32
  94. package/build/components/list-view/index.js.map +1 -1
  95. package/build/components/media-placeholder/index.js +0 -2
  96. package/build/components/media-placeholder/index.js.map +1 -1
  97. package/build/components/media-replace-flow/index.js +0 -2
  98. package/build/components/media-replace-flow/index.js.map +1 -1
  99. package/build/components/media-upload/index.native.js +10 -4
  100. package/build/components/media-upload/index.native.js.map +1 -1
  101. package/build/components/navigable-toolbar/index.js +12 -2
  102. package/build/components/navigable-toolbar/index.js.map +1 -1
  103. package/build/components/plain-text/index.native.js +62 -7
  104. package/build/components/plain-text/index.native.js.map +1 -1
  105. package/build/components/publish-date-time-picker/index.js +55 -0
  106. package/build/components/publish-date-time-picker/index.js.map +1 -0
  107. package/build/components/rich-text/format-toolbar-container.js +0 -1
  108. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  109. package/build/components/rich-text/index.js +2 -2
  110. package/build/components/rich-text/index.js.map +1 -1
  111. package/build/components/rich-text/index.native.js +5 -1
  112. package/build/components/rich-text/index.native.js.map +1 -1
  113. package/build/components/url-input/index.js +11 -4
  114. package/build/components/url-input/index.js.map +1 -1
  115. package/build/components/use-block-drop-zone/index.native.js +167 -0
  116. package/build/components/use-block-drop-zone/index.native.js.map +1 -0
  117. package/build/components/use-on-block-drop/index.native.js +95 -0
  118. package/build/components/use-on-block-drop/index.native.js.map +1 -0
  119. package/build/components/use-setting/index.js +42 -18
  120. package/build/components/use-setting/index.js.map +1 -1
  121. package/build/components/warning/index.js +6 -1
  122. package/build/components/warning/index.js.map +1 -1
  123. package/build/components/writing-flow/use-click-selection.js +1 -3
  124. package/build/components/writing-flow/use-click-selection.js.map +1 -1
  125. package/build/components/writing-flow/use-input.js +15 -0
  126. package/build/components/writing-flow/use-input.js.map +1 -1
  127. package/build/components/writing-flow/use-selection-observer.js +49 -8
  128. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  129. package/build/elements/index.js +9 -0
  130. package/build/elements/index.js.map +1 -0
  131. package/build/hooks/anchor.js.map +1 -1
  132. package/build/hooks/border.js +2 -7
  133. package/build/hooks/border.js.map +1 -1
  134. package/build/hooks/color-panel.js +14 -7
  135. package/build/hooks/color-panel.js.map +1 -1
  136. package/build/hooks/color.js +8 -88
  137. package/build/hooks/color.js.map +1 -1
  138. package/build/hooks/dimensions.js +16 -6
  139. package/build/hooks/dimensions.js.map +1 -1
  140. package/build/hooks/index.js +2 -0
  141. package/build/hooks/index.js.map +1 -1
  142. package/build/hooks/margin.js +64 -12
  143. package/build/hooks/margin.js.map +1 -1
  144. package/build/hooks/padding.js +60 -12
  145. package/build/hooks/padding.js.map +1 -1
  146. package/build/hooks/settings.js +32 -0
  147. package/build/hooks/settings.js.map +1 -0
  148. package/build/hooks/style.js +14 -13
  149. package/build/hooks/style.js.map +1 -1
  150. package/build/hooks/typography.js +6 -2
  151. package/build/hooks/typography.js.map +1 -1
  152. package/build/index.js +14 -0
  153. package/build/index.js.map +1 -1
  154. package/build/layouts/flex.js +5 -2
  155. package/build/layouts/flex.js.map +1 -1
  156. package/build/store/actions.js +14 -0
  157. package/build/store/actions.js.map +1 -1
  158. package/build/store/defaults.js +0 -1
  159. package/build/store/defaults.js.map +1 -1
  160. package/build/store/reducer.js +17 -2
  161. package/build/store/reducer.js.map +1 -1
  162. package/build/store/selectors.js +43 -13
  163. package/build/store/selectors.js.map +1 -1
  164. package/build-module/components/block-alignment-control/constants.js +36 -0
  165. package/build-module/components/block-alignment-control/constants.js.map +1 -0
  166. package/build-module/components/block-alignment-control/ui.js +4 -35
  167. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  168. package/build-module/components/block-alignment-control/ui.native.js +78 -0
  169. package/build-module/components/block-alignment-control/ui.native.js.map +1 -0
  170. package/build-module/components/block-alignment-matrix-control/index.js +1 -6
  171. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  172. package/build-module/components/block-content-overlay/index.js +3 -78
  173. package/build-module/components/block-content-overlay/index.js.map +1 -1
  174. package/build-module/components/block-draggable/draggable-chip.native.js +51 -0
  175. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -0
  176. package/build-module/components/block-draggable/dropping-insertion-point.native.js +137 -0
  177. package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  178. package/build-module/components/block-draggable/index.native.js +453 -0
  179. package/build-module/components/block-draggable/index.native.js.map +1 -0
  180. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +120 -0
  181. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  182. package/build-module/components/block-list/block-list-context.native.js +179 -0
  183. package/build-module/components/block-list/block-list-context.native.js.map +1 -0
  184. package/build-module/components/block-list/block-list-item-cell.native.js +59 -0
  185. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -0
  186. package/build-module/components/block-list/block-list-item.native.js +12 -9
  187. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  188. package/build-module/components/block-list/block.native.js +26 -5
  189. package/build-module/components/block-list/block.native.js.map +1 -1
  190. package/build-module/components/block-list/index.js +35 -33
  191. package/build-module/components/block-list/index.js.map +1 -1
  192. package/build-module/components/block-list/index.native.js +72 -23
  193. package/build-module/components/block-list/index.native.js.map +1 -1
  194. package/build-module/components/block-list/use-block-props/index.js +9 -5
  195. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  196. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -7
  197. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  198. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  199. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  200. package/build-module/components/block-mobile-toolbar/index.native.js +9 -3
  201. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  202. package/build-module/components/block-mover/index.native.js +18 -5
  203. package/build-module/components/block-mover/index.native.js.map +1 -1
  204. package/build-module/components/block-navigation/dropdown.js +10 -5
  205. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  206. package/build-module/components/block-popover/inbetween.js +19 -8
  207. package/build-module/components/block-popover/inbetween.js.map +1 -1
  208. package/build-module/components/block-popover/index.js +21 -15
  209. package/build-module/components/block-popover/index.js.map +1 -1
  210. package/build-module/components/block-preview/index.js +1 -1
  211. package/build-module/components/block-preview/index.js.map +1 -1
  212. package/build-module/components/block-tools/block-selection-button.js +1 -0
  213. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  214. package/build-module/components/block-tools/selected-block-popover.js +2 -29
  215. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  216. package/build-module/components/block-variation-transforms/index.js +13 -2
  217. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  218. package/build-module/components/border-radius-control/input-controls.js +11 -4
  219. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  220. package/build-module/components/color-style-selector/index.js +6 -0
  221. package/build-module/components/color-style-selector/index.js.map +1 -1
  222. package/build-module/components/colors-gradients/dropdown.js +124 -43
  223. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  224. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
  225. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  226. package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
  227. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  228. package/build-module/components/iframe/index.js +52 -51
  229. package/build-module/components/iframe/index.js.map +1 -1
  230. package/build-module/components/image-editor/use-save-image.js +2 -1
  231. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  232. package/build-module/components/index.js +2 -3
  233. package/build-module/components/index.js.map +1 -1
  234. package/build-module/components/inserter/index.js +21 -7
  235. package/build-module/components/inserter/index.js.map +1 -1
  236. package/build-module/components/inserter/index.native.js +2 -2
  237. package/build-module/components/inserter/index.native.js.map +1 -1
  238. package/build-module/components/inserter/quick-inserter.js +4 -5
  239. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  240. package/build-module/components/link-control/constants.js +5 -0
  241. package/build-module/components/link-control/constants.js.map +1 -1
  242. package/build-module/components/link-control/search-results.js +3 -4
  243. package/build-module/components/link-control/search-results.js.map +1 -1
  244. package/build-module/components/link-control/use-search-handler.js +5 -5
  245. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  246. package/build-module/components/list-view/block.js +15 -16
  247. package/build-module/components/list-view/block.js.map +1 -1
  248. package/build-module/components/list-view/branch.js +9 -13
  249. package/build-module/components/list-view/branch.js.map +1 -1
  250. package/build-module/components/list-view/context.js +1 -4
  251. package/build-module/components/list-view/context.js.map +1 -1
  252. package/build-module/components/list-view/drop-indicator.js +0 -1
  253. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  254. package/build-module/components/list-view/index.js +15 -31
  255. package/build-module/components/list-view/index.js.map +1 -1
  256. package/build-module/components/media-placeholder/index.js +0 -2
  257. package/build-module/components/media-placeholder/index.js.map +1 -1
  258. package/build-module/components/media-replace-flow/index.js +0 -2
  259. package/build-module/components/media-replace-flow/index.js.map +1 -1
  260. package/build-module/components/media-upload/index.native.js +8 -3
  261. package/build-module/components/media-upload/index.native.js.map +1 -1
  262. package/build-module/components/navigable-toolbar/index.js +12 -2
  263. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  264. package/build-module/components/plain-text/index.native.js +63 -8
  265. package/build-module/components/plain-text/index.native.js.map +1 -1
  266. package/build-module/components/publish-date-time-picker/index.js +42 -0
  267. package/build-module/components/publish-date-time-picker/index.js.map +1 -0
  268. package/build-module/components/rich-text/format-toolbar-container.js +0 -1
  269. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  270. package/build-module/components/rich-text/index.js +2 -2
  271. package/build-module/components/rich-text/index.js.map +1 -1
  272. package/build-module/components/rich-text/index.native.js +5 -1
  273. package/build-module/components/rich-text/index.native.js.map +1 -1
  274. package/build-module/components/url-input/index.js +11 -4
  275. package/build-module/components/url-input/index.js.map +1 -1
  276. package/build-module/components/use-block-drop-zone/index.native.js +148 -0
  277. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -0
  278. package/build-module/components/use-on-block-drop/index.native.js +83 -0
  279. package/build-module/components/use-on-block-drop/index.native.js.map +1 -0
  280. package/build-module/components/use-setting/index.js +43 -19
  281. package/build-module/components/use-setting/index.js.map +1 -1
  282. package/build-module/components/warning/index.js +6 -1
  283. package/build-module/components/warning/index.js.map +1 -1
  284. package/build-module/components/writing-flow/use-click-selection.js +1 -3
  285. package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
  286. package/build-module/components/writing-flow/use-input.js +15 -0
  287. package/build-module/components/writing-flow/use-input.js.map +1 -1
  288. package/build-module/components/writing-flow/use-selection-observer.js +49 -8
  289. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  290. package/build-module/elements/index.js +2 -0
  291. package/build-module/elements/index.js.map +1 -0
  292. package/build-module/hooks/anchor.js.map +1 -1
  293. package/build-module/hooks/border.js +2 -7
  294. package/build-module/hooks/border.js.map +1 -1
  295. package/build-module/hooks/color-panel.js +11 -6
  296. package/build-module/hooks/color-panel.js.map +1 -1
  297. package/build-module/hooks/color.js +8 -88
  298. package/build-module/hooks/color.js.map +1 -1
  299. package/build-module/hooks/dimensions.js +19 -9
  300. package/build-module/hooks/dimensions.js.map +1 -1
  301. package/build-module/hooks/index.js +1 -0
  302. package/build-module/hooks/index.js.map +1 -1
  303. package/build-module/hooks/margin.js +61 -13
  304. package/build-module/hooks/margin.js.map +1 -1
  305. package/build-module/hooks/padding.js +57 -13
  306. package/build-module/hooks/padding.js.map +1 -1
  307. package/build-module/hooks/settings.js +29 -0
  308. package/build-module/hooks/settings.js.map +1 -0
  309. package/build-module/hooks/style.js +15 -14
  310. package/build-module/hooks/style.js.map +1 -1
  311. package/build-module/hooks/typography.js +6 -2
  312. package/build-module/hooks/typography.js.map +1 -1
  313. package/build-module/index.js +1 -0
  314. package/build-module/index.js.map +1 -1
  315. package/build-module/layouts/flex.js +4 -2
  316. package/build-module/layouts/flex.js.map +1 -1
  317. package/build-module/store/actions.js +12 -0
  318. package/build-module/store/actions.js.map +1 -1
  319. package/build-module/store/defaults.js +0 -1
  320. package/build-module/store/defaults.js.map +1 -1
  321. package/build-module/store/reducer.js +17 -2
  322. package/build-module/store/reducer.js.map +1 -1
  323. package/build-module/store/selectors.js +37 -12
  324. package/build-module/store/selectors.js.map +1 -1
  325. package/build-style/style-rtl.css +100 -225
  326. package/build-style/style.css +100 -225
  327. package/package.json +30 -30
  328. package/src/components/block-alignment-control/constants.js +45 -0
  329. package/src/components/block-alignment-control/ui.js +69 -109
  330. package/src/components/block-alignment-control/ui.native.js +86 -0
  331. package/src/components/block-alignment-matrix-control/index.js +1 -5
  332. package/src/components/block-content-overlay/index.js +8 -95
  333. package/src/components/block-content-overlay/style.scss +2 -12
  334. package/src/components/block-draggable/draggable-chip.native.js +49 -0
  335. package/src/components/block-draggable/dropping-insertion-point.native.js +181 -0
  336. package/src/components/block-draggable/dropping-insertion-point.native.scss +8 -0
  337. package/src/components/block-draggable/index.native.js +462 -0
  338. package/src/components/block-draggable/style.native.scss +19 -0
  339. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
  340. package/src/components/block-draggable/test/helpers.native.js +183 -0
  341. package/src/components/block-draggable/test/index.native.js +496 -0
  342. package/src/components/block-draggable/use-scroll-when-dragging.native.js +135 -0
  343. package/src/components/block-list/block-list-context.native.js +175 -0
  344. package/src/components/block-list/block-list-item-cell.native.js +49 -0
  345. package/src/components/block-list/block-list-item.native.js +7 -11
  346. package/src/components/block-list/block.native.js +37 -8
  347. package/src/components/block-list/index.js +44 -44
  348. package/src/components/block-list/index.native.js +54 -13
  349. package/src/components/block-list/style.scss +7 -18
  350. package/src/components/block-list/test/block-list-context.native.js +253 -0
  351. package/src/components/block-list/test/fixtures/block-list-context.native.js +79 -0
  352. package/src/components/block-list/use-block-props/index.js +10 -5
  353. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -11
  354. package/src/components/block-list/use-in-between-inserter.js +1 -1
  355. package/src/components/block-mobile-toolbar/index.native.js +9 -1
  356. package/src/components/block-mover/index.native.js +22 -6
  357. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -0
  358. package/src/components/block-navigation/dropdown.js +12 -8
  359. package/src/components/block-popover/inbetween.js +21 -8
  360. package/src/components/block-popover/index.js +18 -15
  361. package/src/components/block-popover/style.scss +4 -0
  362. package/src/components/block-preview/index.js +1 -4
  363. package/src/components/block-switcher/style.scss +2 -39
  364. package/src/components/block-tools/block-selection-button.js +1 -0
  365. package/src/components/block-tools/selected-block-popover.js +1 -36
  366. package/src/components/block-tools/style.scss +1 -12
  367. package/src/components/block-variation-transforms/index.js +6 -2
  368. package/src/components/border-radius-control/input-controls.js +16 -8
  369. package/src/components/border-radius-control/style.scss +3 -2
  370. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  371. package/src/components/color-style-selector/index.js +18 -9
  372. package/src/components/colors-gradients/dropdown.js +130 -62
  373. package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
  374. package/src/components/colors-gradients/style.scss +52 -50
  375. package/src/components/convert-to-group-buttons/toolbar.js +30 -13
  376. package/src/components/duotone-control/style.scss +1 -7
  377. package/src/components/iframe/index.js +62 -54
  378. package/src/components/image-editor/use-save-image.js +2 -1
  379. package/src/components/image-size-control/README.md +1 -1
  380. package/src/components/index.js +2 -3
  381. package/src/components/inserter/index.js +20 -0
  382. package/src/components/inserter/index.native.js +2 -2
  383. package/src/components/inserter/quick-inserter.js +3 -11
  384. package/src/components/inserter/style.native.scss +1 -0
  385. package/src/components/inserter/style.scss +2 -1
  386. package/src/components/link-control/constants.js +11 -0
  387. package/src/components/link-control/search-results.js +4 -5
  388. package/src/components/link-control/use-search-handler.js +11 -5
  389. package/src/components/list-view/block.js +24 -34
  390. package/src/components/list-view/branch.js +10 -20
  391. package/src/components/list-view/context.js +1 -4
  392. package/src/components/list-view/drop-indicator.js +0 -1
  393. package/src/components/list-view/index.js +11 -41
  394. package/src/components/list-view/style.scss +2 -1
  395. package/src/components/media-placeholder/index.js +0 -2
  396. package/src/components/media-replace-flow/index.js +0 -2
  397. package/src/components/media-upload/index.native.js +6 -2
  398. package/src/components/media-upload/test/index.native.js +31 -6
  399. package/src/components/navigable-toolbar/index.js +12 -2
  400. package/src/components/plain-text/index.native.js +64 -8
  401. package/src/components/preview-options/style.scss +0 -4
  402. package/src/components/publish-date-time-picker/README.md +52 -0
  403. package/src/components/publish-date-time-picker/index.js +50 -0
  404. package/src/components/publish-date-time-picker/style.scss +20 -0
  405. package/src/components/rich-text/format-toolbar-container.js +0 -1
  406. package/src/components/rich-text/index.js +3 -1
  407. package/src/components/rich-text/index.native.js +4 -0
  408. package/src/components/rich-text/style.scss +2 -8
  409. package/src/components/url-input/index.js +9 -4
  410. package/src/components/use-block-drop-zone/index.native.js +173 -0
  411. package/src/components/use-on-block-drop/index.native.js +119 -0
  412. package/src/components/use-setting/index.js +57 -21
  413. package/src/components/warning/index.js +47 -42
  414. package/src/components/warning/test/__snapshots__/index.js.snap +15 -6
  415. package/src/components/warning/test/index.js +1 -1
  416. package/src/components/writing-flow/use-click-selection.js +1 -4
  417. package/src/components/writing-flow/use-input.js +12 -0
  418. package/src/components/writing-flow/use-selection-observer.js +55 -10
  419. package/src/elements/index.js +1 -0
  420. package/src/hooks/anchor.js +1 -1
  421. package/src/hooks/border.js +2 -11
  422. package/src/hooks/border.scss +0 -48
  423. package/src/hooks/color-panel.js +13 -9
  424. package/src/hooks/color.js +5 -74
  425. package/src/hooks/color.scss +5 -58
  426. package/src/hooks/dimensions.js +55 -41
  427. package/src/hooks/index.js +1 -0
  428. package/src/hooks/margin.js +64 -15
  429. package/src/hooks/padding.js +60 -15
  430. package/src/hooks/padding.scss +12 -0
  431. package/src/hooks/settings.js +32 -0
  432. package/src/hooks/style.js +25 -39
  433. package/src/hooks/test/settings.js +48 -0
  434. package/src/hooks/typography.js +2 -0
  435. package/src/index.js +1 -0
  436. package/src/layouts/flex.js +11 -3
  437. package/src/store/actions.js +12 -0
  438. package/src/store/defaults.js +0 -1
  439. package/src/store/reducer.js +14 -1
  440. package/src/store/selectors.js +42 -12
  441. package/src/store/test/reducer.js +5 -0
  442. package/src/store/test/selectors.js +17 -0
  443. package/src/style.scss +2 -2
  444. package/tsconfig.tsbuildinfo +1 -1
  445. package/build/components/border-style-control/index.js +0 -60
  446. package/build/components/border-style-control/index.js.map +0 -1
  447. package/build/components/colors/color-panel.js +0 -82
  448. package/build/components/colors/color-panel.js.map +0 -1
  449. package/build/components/colors/color-panel.native.js +0 -11
  450. package/build/components/colors/color-panel.native.js.map +0 -1
  451. package/build/components/colors-gradients/tools-panel-color-dropdown.js +0 -89
  452. package/build/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  453. package/build-module/components/border-style-control/index.js +0 -50
  454. package/build-module/components/border-style-control/index.js.map +0 -1
  455. package/build-module/components/colors/color-panel.js +0 -70
  456. package/build-module/components/colors/color-panel.js.map +0 -1
  457. package/build-module/components/colors/color-panel.native.js +0 -4
  458. package/build-module/components/colors/color-panel.native.js.map +0 -1
  459. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js +0 -75
  460. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  461. package/src/components/block-alignment-matrix-control/style.scss +0 -10
  462. package/src/components/border-style-control/index.js +0 -47
  463. package/src/components/border-style-control/style.scss +0 -18
  464. package/src/components/colors/color-panel.js +0 -91
  465. package/src/components/colors/color-panel.native.js +0 -3
  466. package/src/components/colors-gradients/tools-panel-color-dropdown.js +0 -85
@@ -110,7 +110,6 @@ export default function ListViewDropIndicator( {
110
110
 
111
111
  return (
112
112
  <Popover
113
- noArrow
114
113
  animate={ false }
115
114
  getAnchorRect={ getAnchorRect }
116
115
  focusOnMount={ false }
@@ -48,33 +48,17 @@ const expanded = ( state, action ) => {
48
48
  export const BLOCK_LIST_ITEM_HEIGHT = 36;
49
49
 
50
50
  /**
51
- * Wrap `ListViewRows` with `TreeGrid`. ListViewRows is a
52
- * recursive component (it renders itself), so this ensures TreeGrid is only
53
- * present at the very top of the navigation grid.
51
+ * Show a hierarchical list of blocks.
54
52
  *
55
- * @param {Object} props Components props.
56
- * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
57
- * @param {boolean} props.showNestedBlocks Flag to enable displaying nested blocks.
58
- * @param {boolean} props.showBlockMovers Flag to enable block movers
59
- * @param {boolean} props.__experimentalFeatures Flag to enable experimental features.
60
- * @param {boolean} props.__experimentalPersistentListViewFeatures Flag to enable features for the Persistent List View experiment.
61
- * @param {boolean} props.__experimentalHideContainerBlockActions Flag to hide actions of top level blocks (like core/widget-area)
62
- * @param {string} props.id Unique identifier for the root list element (primarily for a11y purposes).
63
- * @param {boolean} props.expandNested Flag to determine whether nested levels are expanded by default.
64
- * @param {Object} ref Forwarded ref
53
+ * @param {Object} props Components props.
54
+ * @param {string} props.id An HTML element id for the root element of ListView.
55
+ * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
56
+ * @param {boolean} props.showBlockMovers Flag to enable block movers
57
+ * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
58
+ * @param {Object} ref Forwarded ref
65
59
  */
66
60
  function ListView(
67
- {
68
- blocks,
69
- __experimentalFeatures,
70
- __experimentalPersistentListViewFeatures,
71
- __experimentalHideContainerBlockActions,
72
- showNestedBlocks,
73
- showBlockMovers,
74
- id,
75
- expandNested = false,
76
- ...props
77
- },
61
+ { id, blocks, showBlockMovers = false, isExpanded = false },
78
62
  ref
79
63
  ) {
80
64
  const {
@@ -131,7 +115,7 @@ function ListView(
131
115
  BLOCK_LIST_ITEM_HEIGHT,
132
116
  visibleBlockCount,
133
117
  {
134
- useWindowing: __experimentalPersistentListViewFeatures,
118
+ useWindowing: true,
135
119
  windowOverscan: 40,
136
120
  }
137
121
  );
@@ -181,25 +165,13 @@ function ListView(
181
165
 
182
166
  const contextValue = useMemo(
183
167
  () => ( {
184
- __experimentalFeatures,
185
- __experimentalPersistentListViewFeatures,
186
- __experimentalHideContainerBlockActions,
187
168
  isTreeGridMounted: isMounted.current,
188
169
  draggedClientIds,
189
170
  expandedState,
190
171
  expand,
191
172
  collapse,
192
173
  } ),
193
- [
194
- __experimentalFeatures,
195
- __experimentalPersistentListViewFeatures,
196
- __experimentalHideContainerBlockActions,
197
- isMounted.current,
198
- draggedClientIds,
199
- expandedState,
200
- expand,
201
- collapse,
202
- ]
174
+ [ isMounted.current, draggedClientIds, expandedState, expand, collapse ]
203
175
  );
204
176
 
205
177
  return (
@@ -221,12 +193,10 @@ function ListView(
221
193
  <ListViewBranch
222
194
  blocks={ clientIdsTree }
223
195
  selectBlock={ selectEditorBlock }
224
- showNestedBlocks={ showNestedBlocks }
225
196
  showBlockMovers={ showBlockMovers }
226
197
  fixedListWindow={ fixedListWindow }
227
198
  selectedClientIds={ selectedClientIds }
228
- expandNested={ expandNested }
229
- { ...props }
199
+ isExpanded={ isExpanded }
230
200
  />
231
201
  </ListViewContext.Provider>
232
202
  </TreeGrid>
@@ -396,10 +396,11 @@ $block-navigation-max-indent: 8;
396
396
  }
397
397
 
398
398
  // Reset some popover defaults for the drop indicator.
399
- .block-editor-list-view-drop-indicator:not([data-y-axis="middle"][data-x-axis="right"]) > .components-popover__content {
399
+ .block-editor-list-view-drop-indicator > .components-popover__content {
400
400
  margin-left: 0;
401
401
  border: none;
402
402
  box-shadow: none;
403
+ outline: none;
403
404
  }
404
405
 
405
406
  .block-editor-list-view-placeholder {
@@ -73,7 +73,6 @@ export function MediaPlaceholder( {
73
73
  onDoubleClick,
74
74
  onFilesPreUpload = noop,
75
75
  onHTMLDrop = noop,
76
- onClose = noop,
77
76
  children,
78
77
  mediaLibraryButton,
79
78
  placeholder,
@@ -327,7 +326,6 @@ export function MediaPlaceholder( {
327
326
  gallery={ multiple && onlyAllowsImages() }
328
327
  multiple={ multiple }
329
328
  onSelect={ onSelect }
330
- onClose={ onClose }
331
329
  allowedTypes={ allowedTypes }
332
330
  value={
333
331
  Array.isArray( value )
@@ -42,7 +42,6 @@ const MediaReplaceFlow = ( {
42
42
  onSelect,
43
43
  onSelectURL,
44
44
  onFilesUpload = noop,
45
- onCloseModal = noop,
46
45
  name = __( 'Replace' ),
47
46
  createNotice,
48
47
  removeNotice,
@@ -158,7 +157,6 @@ const MediaReplaceFlow = ( {
158
157
  selectMedia( media, onClose )
159
158
  }
160
159
  allowedTypes={ allowedTypes }
161
- onClose={ onCloseModal }
162
160
  render={ ( { open } ) => (
163
161
  <MenuItem icon={ mediaIcon } onClick={ open }>
164
162
  { __( 'Open Media Library' ) }
@@ -39,6 +39,7 @@ export const OPTION_TAKE_VIDEO = __( 'Take a Video' );
39
39
  export const OPTION_TAKE_PHOTO = __( 'Take a Photo' );
40
40
  export const OPTION_TAKE_PHOTO_OR_VIDEO = __( 'Take a Photo or Video' );
41
41
  export const OPTION_INSERT_FROM_URL = __( 'Insert from URL' );
42
+ export const OPTION_WORDPRESS_MEDIA_LIBRARY = __( 'WordPress Media Library' );
42
43
 
43
44
  const URL_MEDIA_SOURCE = 'URL';
44
45
 
@@ -78,6 +79,8 @@ export class MediaUpload extends Component {
78
79
  }
79
80
 
80
81
  getAllSources() {
82
+ const { onSelectURL } = this.props;
83
+
81
84
  const cameraImageSource = {
82
85
  id: mediaSources.deviceCamera, // ID is the value sent to native.
83
86
  value: mediaSources.deviceCamera + '-IMAGE', // This is needed to diferenciate image-camera from video-camera sources.
@@ -124,16 +127,17 @@ export class MediaUpload extends Component {
124
127
  id: URL_MEDIA_SOURCE,
125
128
  value: URL_MEDIA_SOURCE,
126
129
  label: __( 'Insert from URL' ),
127
- types: [ MEDIA_TYPE_AUDIO ],
130
+ types: [ MEDIA_TYPE_AUDIO, MEDIA_TYPE_IMAGE ],
128
131
  icon: globe,
129
132
  };
130
133
 
134
+ // Only include `urlSource` option if `onSelectURL` prop is present, in order to match the web behavior.
131
135
  const internalSources = [
132
136
  deviceLibrarySource,
133
137
  cameraImageSource,
134
138
  cameraVideoSource,
135
139
  siteLibrarySource,
136
- urlSource,
140
+ ...( onSelectURL ? [ urlSource ] : [] ),
137
141
  ];
138
142
 
139
143
  return internalSources.concat( this.state.otherMediaOptions );
@@ -20,6 +20,7 @@ import {
20
20
  OPTION_TAKE_VIDEO,
21
21
  OPTION_TAKE_PHOTO,
22
22
  OPTION_INSERT_FROM_URL,
23
+ OPTION_WORDPRESS_MEDIA_LIBRARY,
23
24
  } from '../index';
24
25
 
25
26
  const MEDIA_URL = 'http://host.media.type';
@@ -33,8 +34,11 @@ describe( 'MediaUpload component', () => {
33
34
  expect( wrapper ).toBeTruthy();
34
35
  } );
35
36
 
36
- it( 'shows right media capture option for media type', () => {
37
- const expectOptionForMediaType = ( mediaType, expectedOption ) => {
37
+ describe( 'Media capture options for different media block types', () => {
38
+ const expectOptionForMediaType = async (
39
+ mediaType,
40
+ expectedOptions
41
+ ) => {
38
42
  const wrapper = render(
39
43
  <MediaUpload
40
44
  allowedTypes={ [ mediaType ] }
@@ -52,11 +56,32 @@ describe( 'MediaUpload component', () => {
52
56
  );
53
57
  fireEvent.press( wrapper.getByText( 'Open Picker' ) );
54
58
 
55
- wrapper.getByText( expectedOption );
59
+ expectedOptions.forEach( ( item ) => {
60
+ const option = wrapper.getByText( item );
61
+ expect( option ).toBeVisible();
62
+ } );
56
63
  };
57
- expectOptionForMediaType( MEDIA_TYPE_IMAGE, OPTION_TAKE_PHOTO );
58
- expectOptionForMediaType( MEDIA_TYPE_VIDEO, OPTION_TAKE_VIDEO );
59
- expectOptionForMediaType( MEDIA_TYPE_AUDIO, OPTION_INSERT_FROM_URL );
64
+
65
+ it( 'shows the correct media capture options for the Image block', () => {
66
+ expectOptionForMediaType( MEDIA_TYPE_IMAGE, [
67
+ OPTION_TAKE_PHOTO,
68
+ OPTION_WORDPRESS_MEDIA_LIBRARY,
69
+ OPTION_INSERT_FROM_URL,
70
+ ] );
71
+ } );
72
+
73
+ it( 'shows the correct media capture options for the Video block', () => {
74
+ expectOptionForMediaType( MEDIA_TYPE_VIDEO, [
75
+ OPTION_TAKE_VIDEO,
76
+ OPTION_WORDPRESS_MEDIA_LIBRARY,
77
+ ] );
78
+ } );
79
+
80
+ it( 'shows the correct media capture options for the Audio block', () => {
81
+ expectOptionForMediaType( MEDIA_TYPE_AUDIO, [
82
+ OPTION_INSERT_FROM_URL,
83
+ ] );
84
+ } );
60
85
  } );
61
86
 
62
87
  const expectMediaPickerForOption = (
@@ -29,7 +29,12 @@ function hasFocusWithin( container ) {
29
29
  function focusFirstTabbableIn( container ) {
30
30
  const [ firstTabbable ] = focus.tabbable.find( container );
31
31
  if ( firstTabbable ) {
32
- firstTabbable.focus();
32
+ firstTabbable.focus( {
33
+ // When focusing newly mounted toolbars,
34
+ // the position of the popover is often not right on the first render
35
+ // This prevents the layout shifts when focusing the dialogs.
36
+ preventScroll: true,
37
+ } );
33
38
  }
34
39
  }
35
40
 
@@ -119,7 +124,12 @@ function useToolbarFocus(
119
124
  const items = getAllToolbarItemsIn( ref.current );
120
125
  const index = initialIndex || 0;
121
126
  if ( items[ index ] && hasFocusWithin( ref.current ) ) {
122
- items[ index ].focus();
127
+ items[ index ].focus( {
128
+ // When focusing newly mounted toolbars,
129
+ // the position of the popover is often not right on the first render
130
+ // This prevents the layout shifts when focusing the dialogs.
131
+ preventScroll: true,
132
+ } );
123
133
  }
124
134
  } );
125
135
  }
@@ -7,7 +7,7 @@ import { TextInput, Platform, Dimensions } from 'react-native';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { Component } from '@wordpress/element';
10
- import { getPxFromCssUnit } from '@wordpress/block-editor';
10
+ import { RichText, getPxFromCssUnit } from '@wordpress/block-editor';
11
11
 
12
12
  /**
13
13
  * Internal dependencies
@@ -18,6 +18,9 @@ export default class PlainText extends Component {
18
18
  constructor() {
19
19
  super( ...arguments );
20
20
  this.isAndroid = Platform.OS === 'android';
21
+
22
+ this.onChangeTextInput = this.onChangeTextInput.bind( this );
23
+ this.onChangeRichText = this.onChangeRichText.bind( this );
21
24
  }
22
25
 
23
26
  componentDidMount() {
@@ -44,7 +47,7 @@ export default class PlainText extends Component {
44
47
 
45
48
  componentDidUpdate( prevProps ) {
46
49
  if ( ! this.props.isSelected && prevProps.isSelected ) {
47
- this._input.blur();
50
+ this._input?.blur();
48
51
  }
49
52
  }
50
53
 
@@ -55,11 +58,11 @@ export default class PlainText extends Component {
55
58
  }
56
59
 
57
60
  focus() {
58
- this._input.focus();
61
+ this._input?.focus();
59
62
  }
60
63
 
61
64
  blur() {
62
- this._input.blur();
65
+ this._input?.blur();
63
66
  }
64
67
 
65
68
  getFontSize() {
@@ -79,20 +82,73 @@ export default class PlainText extends Component {
79
82
  };
80
83
  }
81
84
 
85
+ replaceLineBreakTags( value ) {
86
+ return value?.replace( RegExp( '<br>', 'gim' ), '\n' );
87
+ }
88
+
89
+ onChangeTextInput( event ) {
90
+ const { onChange } = this.props;
91
+ onChange( event.nativeEvent.text );
92
+ }
93
+
94
+ onChangeRichText( value ) {
95
+ const { onChange } = this.props;
96
+ // The <br> tags have to be replaced with new line characters
97
+ // as the content of plain text shouldn't contain HTML tags.
98
+ onChange( this.replaceLineBreakTags( value ) );
99
+ }
100
+
82
101
  render() {
83
- const { style } = this.props;
102
+ const {
103
+ style,
104
+ __experimentalVersion,
105
+ onFocus,
106
+ ...otherProps
107
+ } = this.props;
84
108
  const textStyles = [
85
109
  style || styles[ 'block-editor-plain-text' ],
86
110
  this.getFontSize(),
87
111
  ];
88
112
 
113
+ if ( __experimentalVersion === 2 ) {
114
+ const disableFormattingProps = {
115
+ withoutInteractiveFormatting: true,
116
+ disableEditingMenu: true,
117
+ __unstableDisableFormats: true,
118
+ disableSuggestions: true,
119
+ };
120
+
121
+ const forcePlainTextProps = {
122
+ preserveWhiteSpace: true,
123
+ __unstablePastePlainText: true,
124
+ multiline: false,
125
+ };
126
+
127
+ const fontProps = {
128
+ fontFamily: style?.fontFamily,
129
+ fontSize: style?.fontSize,
130
+ fontWeight: style?.fontWeight,
131
+ };
132
+
133
+ return (
134
+ <RichText
135
+ { ...otherProps }
136
+ { ...disableFormattingProps }
137
+ { ...forcePlainTextProps }
138
+ { ...fontProps }
139
+ identifier="content"
140
+ style={ style }
141
+ onChange={ this.onChangeRichText }
142
+ unstableOnFocus={ onFocus }
143
+ />
144
+ );
145
+ }
146
+
89
147
  return (
90
148
  <TextInput
91
149
  { ...this.props }
92
150
  ref={ ( x ) => ( this._input = x ) }
93
- onChange={ ( event ) => {
94
- this.props.onChange( event.nativeEvent.text );
95
- } }
151
+ onChange={ this.onChangeTextInput }
96
152
  onFocus={ this.props.onFocus } // Always assign onFocus as a props.
97
153
  onBlur={ this.props.onBlur } // Always assign onBlur as a props.
98
154
  fontFamily={
@@ -11,10 +11,6 @@
11
11
  }
12
12
 
13
13
  .block-editor-post-preview__dropdown-content {
14
- .components-popover__content {
15
- overflow-y: visible;
16
- }
17
-
18
14
  &.edit-post-post-preview-dropdown {
19
15
  .components-menu-group {
20
16
  &:first-child {
@@ -0,0 +1,52 @@
1
+ # `PublishDateTimePicker`
2
+
3
+ `<PublishDateTimePicker />` is a component used to select the date and time that
4
+ a post will be published. It wraps the `<DateTimePicker />` component found in
5
+ `@wordpress/components` and adds additional post-specific controls.
6
+
7
+ See [the documentation for DateTimePicker](/packages/components/src/date-time)
8
+ for more information.
9
+
10
+ ## Usage
11
+
12
+ ```jsx
13
+ import { Dropdown, Button } from '@wordpress/components';
14
+ import { __experimentalPublishDateTimePicker as PublishDateTimePicker } from '@wordpress/block-editor';
15
+ import { useState } from '@wordpress/element';
16
+
17
+ const MyDateTimePicker = () => {
18
+ const [ date, setDate ] = useState( new Date() );
19
+
20
+ return (
21
+ <Dropdown
22
+ renderToggle={ ( { isOpen, onToggle } ) => (
23
+ <Button
24
+ onClick={ onToggle }
25
+ aria-expanded={ isOpen }
26
+ >
27
+ Select post date
28
+ </Button>
29
+ ) }
30
+ renderContent={ ( { onClose } ) => (
31
+ <PublishDateTimePicker
32
+ currentDate={ date }
33
+ onChange={ ( newDate ) => setDate( newDate ) }
34
+ onClose={ onClose }
35
+ />
36
+ ) }
37
+ />
38
+ );
39
+ };
40
+ ```
41
+
42
+ ## Props
43
+
44
+ `PublishDateTimePicker` supports all of the props that
45
+ [`DateTimePicker`](/packages/components/src/date-time#Props) supports, plus:
46
+
47
+ ### onClose
48
+
49
+ Called when the user presses the close button.
50
+
51
+ - Type: `Function`
52
+ - Required: Yes
@@ -0,0 +1,50 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ DateTimePicker,
6
+ __experimentalHStack as HStack,
7
+ __experimentalSpacer as Spacer,
8
+ Button,
9
+ } from '@wordpress/components';
10
+ import { closeSmall } from '@wordpress/icons';
11
+ import { __ } from '@wordpress/i18n';
12
+ import { forwardRef } from '@wordpress/element';
13
+
14
+ function PublishDateTimePicker(
15
+ { onClose, onChange, ...additionalProps },
16
+ ref
17
+ ) {
18
+ return (
19
+ <div ref={ ref } className="block-editor-publish-date-time-picker">
20
+ { /* TODO: This header is essentially the same as the one in <PostVisiblity />. DRY it up. */ }
21
+ <HStack className="block-editor-publish-date-time-picker__header">
22
+ <h2 className="block-editor-publish-date-time-picker__heading">
23
+ { __( 'Publish' ) }
24
+ </h2>
25
+ <Spacer />
26
+ <Button
27
+ className="block-editor-publish-date-time-picker__reset"
28
+ variant="tertiary"
29
+ onClick={ () => onChange?.( null ) }
30
+ >
31
+ { __( 'Now' ) }
32
+ </Button>
33
+ <Button
34
+ className="block-editor-publish-date-time-picker__close"
35
+ icon={ closeSmall }
36
+ label={ __( 'Close' ) }
37
+ onClick={ onClose }
38
+ />
39
+ </HStack>
40
+ <DateTimePicker
41
+ __nextRemoveHelpButton
42
+ __nextRemoveResetButton
43
+ onChange={ onChange }
44
+ { ...additionalProps }
45
+ />
46
+ </div>
47
+ );
48
+ }
49
+
50
+ export default forwardRef( PublishDateTimePicker );
@@ -0,0 +1,20 @@
1
+ .block-editor-publish-date-time-picker__header {
2
+ margin-bottom: 1em;
3
+ }
4
+
5
+ .block-editor-publish-date-time-picker__heading {
6
+ font-size: $default-font-size;
7
+ margin: 0;
8
+ }
9
+
10
+ .block-editor-publish-date-time-picker__reset {
11
+ height: $icon-size;
12
+ margin: 0;
13
+ text-decoration: underline;
14
+ }
15
+
16
+ [class].block-editor-publish-date-time-picker__close {
17
+ height: $icon-size;
18
+ min-width: $icon-size;
19
+ padding: 0;
20
+ }
@@ -14,7 +14,6 @@ const FormatToolbarContainer = ( { inline, anchorRef } ) => {
14
14
  // Render in popover.
15
15
  return (
16
16
  <Popover
17
- noArrow
18
17
  position="top center"
19
18
  focusOnMount={ false }
20
19
  anchorRef={ anchorRef }
@@ -76,6 +76,8 @@ function removeNativeProps( props ) {
76
76
  'minWidth',
77
77
  'maxWidth',
78
78
  'setRef',
79
+ 'disableSuggestions',
80
+ 'disableAutocorrection',
79
81
  ] );
80
82
  }
81
83
 
@@ -338,7 +340,7 @@ function RichTextWrapper(
338
340
  { isSelected && hasFormats && (
339
341
  <FormatToolbarContainer
340
342
  inline={ inlineToolbar }
341
- anchorRef={ anchorRef.current }
343
+ anchorRef={ anchorRef }
342
344
  />
343
345
  ) }
344
346
  <TagName
@@ -111,6 +111,8 @@ function RichTextWrapper(
111
111
  maxWidth,
112
112
  onBlur,
113
113
  setRef,
114
+ disableSuggestions,
115
+ disableAutocorrection,
114
116
  ...props
115
117
  },
116
118
  forwardedRef
@@ -635,6 +637,8 @@ function RichTextWrapper(
635
637
  maxWidth={ maxWidth }
636
638
  onBlur={ onBlur }
637
639
  setRef={ setRef }
640
+ disableSuggestions={ disableSuggestions }
641
+ disableAutocorrection={ disableAutocorrection }
638
642
  // Props to be set on the editable container are destructured on the
639
643
  // element itself for web (see below), but passed through rich text
640
644
  // for native.
@@ -42,17 +42,11 @@ figcaption.block-editor-rich-text__editable [data-rich-text-placeholder]::before
42
42
  min-width: auto;
43
43
  margin-bottom: $grid-unit-10;
44
44
  box-shadow: none;
45
-
46
- // Block UI appearance.
47
- border: $border-width solid $gray-900;
48
- border-radius: $radius-block-ui;
49
- background-color: $white;
45
+ outline: none;
50
46
  }
51
47
 
52
- .components-toolbar-group,
53
48
  .components-toolbar {
54
- // The popover already provides a border.
55
- border: none;
49
+ border-radius: $radius-block-ui;
56
50
  }
57
51
 
58
52
  .components-toolbar__control,
@@ -303,6 +303,7 @@ class URLInput extends Component {
303
303
 
304
304
  // Submitting while loading should trigger onSubmit.
305
305
  case ENTER: {
306
+ event.preventDefault();
306
307
  if ( this.props.onSubmit ) {
307
308
  this.props.onSubmit( null, event );
308
309
  }
@@ -350,6 +351,7 @@ class URLInput extends Component {
350
351
  break;
351
352
  }
352
353
  case ENTER: {
354
+ event.preventDefault();
353
355
  if ( this.state.selectedSuggestion !== null ) {
354
356
  this.selectLink( suggestion );
355
357
 
@@ -418,7 +420,7 @@ class URLInput extends Component {
418
420
 
419
421
  renderControl() {
420
422
  const {
421
- label,
423
+ label = null,
422
424
  className,
423
425
  isFullWidth,
424
426
  instanceId,
@@ -435,8 +437,10 @@ class URLInput extends Component {
435
437
  suggestionOptionIdPrefix,
436
438
  } = this.state;
437
439
 
440
+ const inputId = `url-input-control-${ instanceId }`;
441
+
438
442
  const controlProps = {
439
- id: `url-input-control-${ instanceId }`,
443
+ id: inputId, // Passes attribute to label for the for attribute
440
444
  label,
441
445
  className: classnames( 'block-editor-url-input', className, {
442
446
  'is-full-width': isFullWidth,
@@ -444,6 +448,7 @@ class URLInput extends Component {
444
448
  };
445
449
 
446
450
  const inputProps = {
451
+ id: inputId,
447
452
  value,
448
453
  required: true,
449
454
  className: 'block-editor-url-input__input',
@@ -453,7 +458,7 @@ class URLInput extends Component {
453
458
  placeholder,
454
459
  onKeyDown: this.onKeyDown,
455
460
  role: 'combobox',
456
- 'aria-label': __( 'URL' ),
461
+ 'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label
457
462
  'aria-expanded': showSuggestions,
458
463
  'aria-autocomplete': 'list',
459
464
  'aria-owns': suggestionsListboxId,
@@ -533,7 +538,7 @@ class URLInput extends Component {
533
538
  !! suggestions.length
534
539
  ) {
535
540
  return (
536
- <Popover position="bottom" noArrow focusOnMount={ false }>
541
+ <Popover position="bottom" focusOnMount={ false }>
537
542
  <div
538
543
  { ...suggestionsListProps }
539
544
  className={ classnames(