@wordpress/block-editor 8.5.4 → 9.0.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 (299) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +4 -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-content-overlay/index.js +13 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-list/block.native.js +3 -1
  12. package/build/components/block-list/block.native.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -7
  14. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  15. package/build/components/block-lock/modal.js +34 -4
  16. package/build/components/block-lock/modal.js.map +1 -1
  17. package/build/components/block-lock/toolbar.js +2 -1
  18. package/build/components/block-lock/toolbar.js.map +1 -1
  19. package/build/components/block-lock/use-block-lock.js +4 -1
  20. package/build/components/block-lock/use-block-lock.js.map +1 -1
  21. package/build/components/block-mover/button.js +4 -4
  22. package/build/components/block-mover/button.js.map +1 -1
  23. package/build/components/block-mover/index.js +39 -65
  24. package/build/components/block-mover/index.js.map +1 -1
  25. package/build/components/block-navigation/dropdown.js +11 -5
  26. package/build/components/block-navigation/dropdown.js.map +1 -1
  27. package/build/components/block-popover/inbetween.js +183 -0
  28. package/build/components/block-popover/inbetween.js.map +1 -0
  29. package/build/components/block-popover/index.js +97 -0
  30. package/build/components/block-popover/index.js.map +1 -0
  31. package/build/components/{block-tools → block-popover}/use-popover-scroll.js +4 -1
  32. package/build/components/block-popover/use-popover-scroll.js.map +1 -0
  33. package/build/components/block-styles/index.js +1 -10
  34. package/build/components/block-styles/index.js.map +1 -1
  35. package/build/components/block-tools/back-compat.js +2 -2
  36. package/build/components/block-tools/back-compat.js.map +1 -1
  37. package/build/components/block-tools/block-selection-button.js +4 -2
  38. package/build/components/block-tools/block-selection-button.js.map +1 -1
  39. package/build/components/block-tools/index.js +5 -5
  40. package/build/components/block-tools/index.js.map +1 -1
  41. package/build/components/block-tools/insertion-point.js +14 -121
  42. package/build/components/block-tools/insertion-point.js.map +1 -1
  43. package/build/components/block-tools/{block-popover.js → selected-block-popover.js} +25 -108
  44. package/build/components/block-tools/selected-block-popover.js.map +1 -0
  45. package/build/components/color-style-selector/index.js +9 -0
  46. package/build/components/color-style-selector/index.js.map +1 -1
  47. package/build/components/duotone-control/index.js +5 -1
  48. package/build/components/duotone-control/index.js.map +1 -1
  49. package/build/components/index.js +0 -9
  50. package/build/components/index.js.map +1 -1
  51. package/build/components/inserter/index.native.js +30 -8
  52. package/build/components/inserter/index.native.js.map +1 -1
  53. package/build/components/list-view/block.js +15 -15
  54. package/build/components/list-view/block.js.map +1 -1
  55. package/build/components/list-view/branch.js +9 -13
  56. package/build/components/list-view/branch.js.map +1 -1
  57. package/build/components/list-view/context.js +1 -4
  58. package/build/components/list-view/context.js.map +1 -1
  59. package/build/components/list-view/index.js +15 -32
  60. package/build/components/list-view/index.js.map +1 -1
  61. package/build/components/rich-text/index.js +0 -5
  62. package/build/components/rich-text/index.js.map +1 -1
  63. package/build/components/rich-text/index.native.js +0 -4
  64. package/build/components/rich-text/index.native.js.map +1 -1
  65. package/build/components/url-input/index.js +7 -3
  66. package/build/components/url-input/index.js.map +1 -1
  67. package/build/components/use-block-display-information/index.js +3 -1
  68. package/build/components/use-block-display-information/index.js.map +1 -1
  69. package/build/components/use-setting/index.js +42 -18
  70. package/build/components/use-setting/index.js.map +1 -1
  71. package/build/hooks/border.js +468 -44
  72. package/build/hooks/border.js.map +1 -1
  73. package/build/hooks/dimensions.js +2 -2
  74. package/build/hooks/dimensions.js.map +1 -1
  75. package/build/hooks/index.js +3 -1
  76. package/build/hooks/index.js.map +1 -1
  77. package/build/hooks/margin.js +64 -12
  78. package/build/hooks/margin.js.map +1 -1
  79. package/build/hooks/padding.js +60 -12
  80. package/build/hooks/padding.js.map +1 -1
  81. package/build/hooks/settings.js +32 -0
  82. package/build/hooks/settings.js.map +1 -0
  83. package/build/hooks/use-border-props.js +22 -32
  84. package/build/hooks/use-border-props.js.map +1 -1
  85. package/build/store/actions.js +14 -2
  86. package/build/store/actions.js.map +1 -1
  87. package/build/store/defaults.js +0 -1
  88. package/build/store/defaults.js.map +1 -1
  89. package/build/store/reducer.js +0 -26
  90. package/build/store/reducer.js.map +1 -1
  91. package/build/store/selectors.js +47 -15
  92. package/build/store/selectors.js.map +1 -1
  93. package/build-module/components/block-alignment-control/constants.js +36 -0
  94. package/build-module/components/block-alignment-control/constants.js.map +1 -0
  95. package/build-module/components/block-alignment-control/ui.js +4 -35
  96. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  97. package/build-module/components/block-alignment-control/ui.native.js +78 -0
  98. package/build-module/components/block-alignment-control/ui.native.js.map +1 -0
  99. package/build-module/components/block-content-overlay/index.js +13 -4
  100. package/build-module/components/block-content-overlay/index.js.map +1 -1
  101. package/build-module/components/block-list/block.native.js +3 -1
  102. package/build-module/components/block-list/block.native.js.map +1 -1
  103. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -7
  104. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  105. package/build-module/components/block-lock/modal.js +34 -5
  106. package/build-module/components/block-lock/modal.js.map +1 -1
  107. package/build-module/components/block-lock/toolbar.js +2 -1
  108. package/build-module/components/block-lock/toolbar.js.map +1 -1
  109. package/build-module/components/block-lock/use-block-lock.js +4 -1
  110. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  111. package/build-module/components/block-mover/button.js +5 -5
  112. package/build-module/components/block-mover/button.js.map +1 -1
  113. package/build-module/components/block-mover/index.js +38 -63
  114. package/build-module/components/block-mover/index.js.map +1 -1
  115. package/build-module/components/block-navigation/dropdown.js +10 -5
  116. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  117. package/build-module/components/block-popover/inbetween.js +165 -0
  118. package/build-module/components/block-popover/inbetween.js.map +1 -0
  119. package/build-module/components/block-popover/index.js +83 -0
  120. package/build-module/components/block-popover/index.js.map +1 -0
  121. package/build-module/components/{block-tools → block-popover}/use-popover-scroll.js +3 -1
  122. package/build-module/components/block-popover/use-popover-scroll.js.map +1 -0
  123. package/build-module/components/block-styles/index.js +1 -9
  124. package/build-module/components/block-styles/index.js.map +1 -1
  125. package/build-module/components/block-tools/back-compat.js +1 -1
  126. package/build-module/components/block-tools/back-compat.js.map +1 -1
  127. package/build-module/components/block-tools/block-selection-button.js +3 -2
  128. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  129. package/build-module/components/block-tools/index.js +3 -3
  130. package/build-module/components/block-tools/index.js.map +1 -1
  131. package/build-module/components/block-tools/insertion-point.js +16 -121
  132. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  133. package/build-module/components/block-tools/{block-popover.js → selected-block-popover.js} +25 -105
  134. package/build-module/components/block-tools/selected-block-popover.js.map +1 -0
  135. package/build-module/components/color-style-selector/index.js +6 -0
  136. package/build-module/components/color-style-selector/index.js.map +1 -1
  137. package/build-module/components/duotone-control/index.js +4 -1
  138. package/build-module/components/duotone-control/index.js.map +1 -1
  139. package/build-module/components/index.js +0 -1
  140. package/build-module/components/index.js.map +1 -1
  141. package/build-module/components/inserter/index.native.js +31 -10
  142. package/build-module/components/inserter/index.native.js.map +1 -1
  143. package/build-module/components/list-view/block.js +15 -16
  144. package/build-module/components/list-view/block.js.map +1 -1
  145. package/build-module/components/list-view/branch.js +9 -13
  146. package/build-module/components/list-view/branch.js.map +1 -1
  147. package/build-module/components/list-view/context.js +1 -4
  148. package/build-module/components/list-view/context.js.map +1 -1
  149. package/build-module/components/list-view/index.js +15 -31
  150. package/build-module/components/list-view/index.js.map +1 -1
  151. package/build-module/components/rich-text/index.js +0 -4
  152. package/build-module/components/rich-text/index.js.map +1 -1
  153. package/build-module/components/rich-text/index.native.js +0 -4
  154. package/build-module/components/rich-text/index.native.js.map +1 -1
  155. package/build-module/components/url-input/index.js +7 -3
  156. package/build-module/components/url-input/index.js.map +1 -1
  157. package/build-module/components/use-block-display-information/index.js +3 -1
  158. package/build-module/components/use-block-display-information/index.js.map +1 -1
  159. package/build-module/components/use-setting/index.js +43 -19
  160. package/build-module/components/use-setting/index.js.map +1 -1
  161. package/build-module/hooks/border.js +458 -44
  162. package/build-module/hooks/border.js.map +1 -1
  163. package/build-module/hooks/dimensions.js +5 -5
  164. package/build-module/hooks/dimensions.js.map +1 -1
  165. package/build-module/hooks/index.js +2 -1
  166. package/build-module/hooks/index.js.map +1 -1
  167. package/build-module/hooks/margin.js +61 -13
  168. package/build-module/hooks/margin.js.map +1 -1
  169. package/build-module/hooks/padding.js +57 -13
  170. package/build-module/hooks/padding.js.map +1 -1
  171. package/build-module/hooks/settings.js +29 -0
  172. package/build-module/hooks/settings.js.map +1 -0
  173. package/build-module/hooks/use-border-props.js +21 -30
  174. package/build-module/hooks/use-border-props.js.map +1 -1
  175. package/build-module/store/actions.js +14 -2
  176. package/build-module/store/actions.js.map +1 -1
  177. package/build-module/store/defaults.js +0 -1
  178. package/build-module/store/defaults.js.map +1 -1
  179. package/build-module/store/reducer.js +0 -24
  180. package/build-module/store/reducer.js.map +1 -1
  181. package/build-module/store/selectors.js +44 -15
  182. package/build-module/store/selectors.js.map +1 -1
  183. package/build-style/style-rtl.css +128 -276
  184. package/build-style/style.css +128 -276
  185. package/package.json +28 -28
  186. package/src/components/block-alignment-control/constants.js +45 -0
  187. package/src/components/block-alignment-control/ui.js +69 -109
  188. package/src/components/block-alignment-control/ui.native.js +86 -0
  189. package/src/components/block-content-overlay/index.js +19 -2
  190. package/src/components/block-list/block.native.js +2 -0
  191. package/src/components/block-list/style.scss +7 -18
  192. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -11
  193. package/src/components/block-lock/modal.js +42 -3
  194. package/src/components/block-lock/toolbar.js +2 -2
  195. package/src/components/block-lock/use-block-lock.js +4 -1
  196. package/src/components/block-mover/button.js +5 -7
  197. package/src/components/block-mover/index.js +37 -60
  198. package/src/components/block-mover/stories/index.js +110 -0
  199. package/src/components/block-mover/style.scss +48 -138
  200. package/src/components/block-navigation/dropdown.js +12 -8
  201. package/src/components/block-popover/README.md +41 -0
  202. package/src/components/block-popover/inbetween.js +180 -0
  203. package/src/components/block-popover/index.js +90 -0
  204. package/src/components/block-popover/style.scss +27 -0
  205. package/src/components/{block-tools → block-popover}/use-popover-scroll.js +3 -1
  206. package/src/components/block-styles/index.js +1 -12
  207. package/src/components/block-switcher/style.scss +0 -4
  208. package/src/components/block-toolbar/style.scss +0 -12
  209. package/src/components/block-tools/back-compat.js +1 -1
  210. package/src/components/block-tools/block-selection-button.js +3 -1
  211. package/src/components/block-tools/index.js +6 -4
  212. package/src/components/block-tools/insertion-point.js +19 -152
  213. package/src/components/block-tools/{block-popover.js → selected-block-popover.js} +24 -116
  214. package/src/components/block-tools/style.scss +11 -123
  215. package/src/components/border-radius-control/style.scss +5 -2
  216. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  217. package/src/components/color-style-selector/index.js +18 -9
  218. package/src/components/default-block-appender/style.scss +1 -2
  219. package/src/components/duotone-control/index.js +8 -1
  220. package/src/components/gradients/README.md +29 -0
  221. package/src/components/image-size-control/README.md +1 -1
  222. package/src/components/index.js +0 -1
  223. package/src/components/inserter/index.native.js +60 -25
  224. package/src/components/inserter/style.native.scss +25 -3
  225. package/src/components/list-view/block.js +24 -34
  226. package/src/components/list-view/branch.js +10 -20
  227. package/src/components/list-view/context.js +1 -4
  228. package/src/components/list-view/index.js +11 -41
  229. package/src/components/navigable-toolbar/README.md +16 -0
  230. package/src/components/rich-text/index.js +0 -2
  231. package/src/components/rich-text/index.native.js +0 -4
  232. package/src/components/url-input/index.js +6 -3
  233. package/src/components/use-block-display-information/index.js +2 -0
  234. package/src/components/use-setting/index.js +57 -21
  235. package/src/hooks/border.js +438 -72
  236. package/src/hooks/border.scss +48 -0
  237. package/src/hooks/dimensions.js +44 -38
  238. package/src/hooks/index.js +2 -1
  239. package/src/hooks/margin.js +64 -15
  240. package/src/hooks/padding.js +60 -15
  241. package/src/hooks/padding.scss +12 -0
  242. package/src/hooks/settings.js +32 -0
  243. package/src/hooks/test/settings.js +48 -0
  244. package/src/hooks/use-border-props.js +15 -32
  245. package/src/store/actions.js +14 -2
  246. package/src/store/defaults.js +0 -1
  247. package/src/store/reducer.js +0 -21
  248. package/src/store/selectors.js +46 -15
  249. package/src/store/test/actions.js +0 -18
  250. package/src/store/test/reducer.js +0 -19
  251. package/src/store/test/selectors.js +17 -19
  252. package/src/style.scss +2 -2
  253. package/tsconfig.tsbuildinfo +1 -1
  254. package/build/components/block-mobile-toolbar/index.js +0 -42
  255. package/build/components/block-mobile-toolbar/index.js.map +0 -1
  256. package/build/components/block-tools/block-popover.js.map +0 -1
  257. package/build/components/block-tools/use-popover-scroll.js.map +0 -1
  258. package/build/components/border-style-control/index.js +0 -60
  259. package/build/components/border-style-control/index.js.map +0 -1
  260. package/build/components/list-view/appender.js +0 -93
  261. package/build/components/list-view/appender.js.map +0 -1
  262. package/build/components/list-view/list-item.js +0 -62
  263. package/build/components/list-view/list-item.js.map +0 -1
  264. package/build/components/rich-text/use-caret-in-format.js +0 -43
  265. package/build/components/rich-text/use-caret-in-format.js.map +0 -1
  266. package/build/hooks/border-color.js +0 -302
  267. package/build/hooks/border-color.js.map +0 -1
  268. package/build/hooks/border-style.js +0 -96
  269. package/build/hooks/border-style.js.map +0 -1
  270. package/build/hooks/border-width.js +0 -162
  271. package/build/hooks/border-width.js.map +0 -1
  272. package/build-module/components/block-mobile-toolbar/index.js +0 -31
  273. package/build-module/components/block-mobile-toolbar/index.js.map +0 -1
  274. package/build-module/components/block-tools/block-popover.js.map +0 -1
  275. package/build-module/components/block-tools/use-popover-scroll.js.map +0 -1
  276. package/build-module/components/border-style-control/index.js +0 -50
  277. package/build-module/components/border-style-control/index.js.map +0 -1
  278. package/build-module/components/list-view/appender.js +0 -76
  279. package/build-module/components/list-view/appender.js.map +0 -1
  280. package/build-module/components/list-view/list-item.js +0 -47
  281. package/build-module/components/list-view/list-item.js.map +0 -1
  282. package/build-module/components/rich-text/use-caret-in-format.js +0 -33
  283. package/build-module/components/rich-text/use-caret-in-format.js.map +0 -1
  284. package/build-module/hooks/border-color.js +0 -276
  285. package/build-module/hooks/border-color.js.map +0 -1
  286. package/build-module/hooks/border-style.js +0 -78
  287. package/build-module/hooks/border-style.js.map +0 -1
  288. package/build-module/hooks/border-width.js +0 -143
  289. package/build-module/hooks/border-width.js.map +0 -1
  290. package/src/components/block-mobile-toolbar/index.js +0 -24
  291. package/src/components/block-mobile-toolbar/style.scss +0 -29
  292. package/src/components/border-style-control/index.js +0 -47
  293. package/src/components/border-style-control/style.scss +0 -18
  294. package/src/components/list-view/appender.js +0 -82
  295. package/src/components/list-view/list-item.js +0 -59
  296. package/src/components/rich-text/use-caret-in-format.js +0 -28
  297. package/src/hooks/border-color.js +0 -315
  298. package/src/hooks/border-style.js +0 -64
  299. package/src/hooks/border-width.js +0 -139
@@ -9,11 +9,9 @@ import classnames from 'classnames';
9
9
  */
10
10
  import { useState, useRef, useEffect } from '@wordpress/element';
11
11
  import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';
12
- import { Popover } from '@wordpress/components';
13
12
  import { useDispatch, useSelect } from '@wordpress/data';
14
13
  import { useShortcut } from '@wordpress/keyboard-shortcuts';
15
14
  import { useViewportMatch } from '@wordpress/compose';
16
- import { getScrollContainer } from '@wordpress/dom';
17
15
 
18
16
  /**
19
17
  * Internal dependencies
@@ -22,8 +20,7 @@ import BlockSelectionButton from './block-selection-button';
22
20
  import BlockContextualToolbar from './block-contextual-toolbar';
23
21
  import Inserter from '../inserter';
24
22
  import { store as blockEditorStore } from '../../store';
25
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
26
- import { usePopoverScroll } from './use-popover-scroll';
23
+ import BlockPopover from '../block-popover';
27
24
 
28
25
  function selector( select ) {
29
26
  const {
@@ -31,7 +28,6 @@ function selector( select ) {
31
28
  isMultiSelecting,
32
29
  hasMultiSelection,
33
30
  isTyping,
34
- isCaretWithinFormattedText,
35
31
  getSettings,
36
32
  getLastMultiSelectedBlockClientId,
37
33
  } = select( blockEditorStore );
@@ -39,17 +35,16 @@ function selector( select ) {
39
35
  isNavigationMode: isNavigationMode(),
40
36
  isMultiSelecting: isMultiSelecting(),
41
37
  isTyping: isTyping(),
42
- isCaretWithinFormattedText: isCaretWithinFormattedText(),
43
- hasMultiSelection: hasMultiSelection(),
44
38
  hasFixedToolbar: getSettings().hasFixedToolbar,
45
- lastClientId: getLastMultiSelectedBlockClientId(),
39
+ lastClientId: hasMultiSelection()
40
+ ? getLastMultiSelectedBlockClientId()
41
+ : null,
46
42
  };
47
43
  }
48
44
 
49
- function BlockPopover( {
45
+ function SelectedBlockPopover( {
50
46
  clientId,
51
47
  rootClientId,
52
- isValid,
53
48
  isEmptyDefaultBlock,
54
49
  capturingClientId,
55
50
  __unstablePopoverSlot,
@@ -59,8 +54,6 @@ function BlockPopover( {
59
54
  isNavigationMode,
60
55
  isMultiSelecting,
61
56
  isTyping,
62
- isCaretWithinFormattedText,
63
- hasMultiSelection,
64
57
  hasFixedToolbar,
65
58
  lastClientId,
66
59
  } = useSelect( selector, [] );
@@ -83,22 +76,20 @@ function BlockPopover( {
83
76
  [ clientId ]
84
77
  );
85
78
  const isLargeViewport = useViewportMatch( 'medium' );
86
- const [ isToolbarForced, setIsToolbarForced ] = useState( false );
79
+ const isToolbarForced = useRef( false );
87
80
  const [ isInserterShown, setIsInserterShown ] = useState( false );
88
81
  const { stopTyping } = useDispatch( blockEditorStore );
89
82
 
90
- // Controls when the side inserter on empty lines should
91
- // be shown, including writing and selection modes.
92
83
  const showEmptyBlockSideInserter =
93
- ! isTyping && ! isNavigationMode && isEmptyDefaultBlock && isValid;
84
+ ! isTyping && ! isNavigationMode && isEmptyDefaultBlock;
94
85
  const shouldShowBreadcrumb = isNavigationMode;
95
86
  const shouldShowContextualToolbar =
96
87
  ! isNavigationMode &&
97
88
  ! hasFixedToolbar &&
98
89
  isLargeViewport &&
99
- ! showEmptyBlockSideInserter &&
100
90
  ! isMultiSelecting &&
101
- ( ! isTyping || isCaretWithinFormattedText );
91
+ ! showEmptyBlockSideInserter &&
92
+ ! isTyping;
102
93
  const canFocusHiddenToolbar =
103
94
  ! isNavigationMode &&
104
95
  ! shouldShowContextualToolbar &&
@@ -108,7 +99,7 @@ function BlockPopover( {
108
99
  useShortcut(
109
100
  'core/block-editor/focus-toolbar',
110
101
  () => {
111
- setIsToolbarForced( true );
102
+ isToolbarForced.current = true;
112
103
  stopTyping( true );
113
104
  },
114
105
  {
@@ -117,55 +108,17 @@ function BlockPopover( {
117
108
  );
118
109
 
119
110
  useEffect( () => {
120
- if ( ! shouldShowContextualToolbar ) {
121
- setIsToolbarForced( false );
122
- }
123
- }, [ shouldShowContextualToolbar ] );
111
+ isToolbarForced.current = false;
112
+ } );
124
113
 
125
114
  // Stores the active toolbar item index so the block toolbar can return focus
126
115
  // to it when re-mounting.
127
116
  const initialToolbarItemIndexRef = useRef();
128
117
 
129
- const selectedElement = useBlockElement( clientId );
130
- const lastSelectedElement = useBlockElement( lastClientId );
131
- const capturingElement = useBlockElement( capturingClientId );
132
-
133
- const popoverScrollRef = usePopoverScroll( __unstableContentRef );
134
-
135
- if (
136
- ! shouldShowBreadcrumb &&
137
- ! shouldShowContextualToolbar &&
138
- ! isToolbarForced &&
139
- ! showEmptyBlockSideInserter
140
- ) {
118
+ if ( ! shouldShowBreadcrumb && ! shouldShowContextualToolbar ) {
141
119
  return null;
142
120
  }
143
121
 
144
- let node = selectedElement;
145
-
146
- if ( ! node ) {
147
- return null;
148
- }
149
-
150
- if ( capturingClientId ) {
151
- node = capturingElement;
152
- }
153
-
154
- let anchorRef = node;
155
-
156
- if ( hasMultiSelection ) {
157
- // Wait to render the popover until the bottom reference is available
158
- // as well.
159
- if ( ! lastSelectedElement ) {
160
- return null;
161
- }
162
-
163
- anchorRef = {
164
- top: node,
165
- bottom: lastSelectedElement,
166
- };
167
- }
168
-
169
122
  function onFocus() {
170
123
  setIsInserterShown( true );
171
124
  }
@@ -174,48 +127,17 @@ function BlockPopover( {
174
127
  setIsInserterShown( false );
175
128
  }
176
129
 
177
- // Position above the anchor, pop out towards the right, and position in the
178
- // left corner. For the side inserter, pop out towards the left, and
179
- // position in the right corner.
180
- // To do: refactor `Popover` to make this prop clearer.
181
- const popoverPosition = showEmptyBlockSideInserter
182
- ? 'top left right'
183
- : 'top right left';
184
- const { ownerDocument } = node;
185
- const stickyBoundaryElement = showEmptyBlockSideInserter
186
- ? undefined
187
- : // The sticky boundary element should be the boundary at which the
188
- // the block toolbar becomes sticky when the block scolls out of view.
189
- // In case of an iframe, this should be the iframe boundary, otherwise
190
- // the scroll container.
191
- ownerDocument.defaultView.frameElement ||
192
- getScrollContainer( node ) ||
193
- ownerDocument.body;
194
-
195
130
  return (
196
- <Popover
197
- ref={ popoverScrollRef }
198
- noArrow
199
- animate={ false }
200
- position={ popoverPosition }
201
- focusOnMount={ false }
202
- anchorRef={ anchorRef }
131
+ <BlockPopover
132
+ clientId={ capturingClientId || clientId }
133
+ bottomClientId={ lastClientId }
203
134
  className={ classnames( 'block-editor-block-list__block-popover', {
204
135
  'is-insertion-point-visible': isInsertionPointVisible,
205
136
  } ) }
206
- __unstableStickyBoundaryElement={ stickyBoundaryElement }
207
- // Render in the old slot if needed for backward compatibility,
208
- // otherwise render in place (not in the the default popover slot).
209
- __unstableSlotName={ __unstablePopoverSlot || null }
210
- __unstableBoundaryParent
211
- // Observe movement for block animations (especially horizontal).
212
- __unstableObserveElement={ node }
213
- shouldAnchorIncludePadding
214
- // Used to safeguard sticky position behavior against cases where it would permanently
215
- // obscure specific sections of a block.
216
- __unstableEditorCanvasWrapper={ __unstableContentRef?.current }
137
+ __unstablePopoverSlot={ __unstablePopoverSlot }
138
+ __unstableContentRef={ __unstableContentRef }
217
139
  >
218
- { ( shouldShowContextualToolbar || isToolbarForced ) && (
140
+ { shouldShowContextualToolbar && (
219
141
  <div
220
142
  onFocus={ onFocus }
221
143
  onBlur={ onBlur }
@@ -240,11 +162,11 @@ function BlockPopover( {
240
162
  />
241
163
  </div>
242
164
  ) }
243
- { ( shouldShowContextualToolbar || isToolbarForced ) && (
165
+ { shouldShowContextualToolbar && (
244
166
  <BlockContextualToolbar
245
167
  // If the toolbar is being shown because of being forced
246
168
  // it should focus the toolbar right after the mount.
247
- focusOnMount={ isToolbarForced }
169
+ focusOnMount={ isToolbarForced.current }
248
170
  __experimentalInitialIndex={
249
171
  initialToolbarItemIndexRef.current
250
172
  }
@@ -260,20 +182,9 @@ function BlockPopover( {
260
182
  <BlockSelectionButton
261
183
  clientId={ clientId }
262
184
  rootClientId={ rootClientId }
263
- blockElement={ node }
264
185
  />
265
186
  ) }
266
- { showEmptyBlockSideInserter && (
267
- <div className="block-editor-block-list__empty-block-inserter">
268
- <Inserter
269
- position="bottom right"
270
- rootClientId={ rootClientId }
271
- clientId={ clientId }
272
- __experimentalIsQuick
273
- />
274
- </div>
275
- ) }
276
- </Popover>
187
+ </BlockPopover>
277
188
  );
278
189
  }
279
190
 
@@ -294,7 +205,7 @@ function wrapperSelector( select ) {
294
205
  return;
295
206
  }
296
207
 
297
- const { name, attributes = {}, isValid } = getBlock( clientId ) || {};
208
+ const { name, attributes = {} } = getBlock( clientId ) || {};
298
209
  const blockParentsClientIds = getBlockParents( clientId );
299
210
 
300
211
  // Get Block List Settings for all ancestors of the current Block clientId.
@@ -314,7 +225,6 @@ function wrapperSelector( select ) {
314
225
  clientId,
315
226
  rootClientId: getBlockRootClientId( clientId ),
316
227
  name,
317
- isValid,
318
228
  isEmptyDefaultBlock:
319
229
  name && isUnmodifiedDefaultBlock( { name, attributes } ),
320
230
  capturingClientId,
@@ -335,7 +245,6 @@ export default function WrappedBlockPopover( {
335
245
  clientId,
336
246
  rootClientId,
337
247
  name,
338
- isValid,
339
248
  isEmptyDefaultBlock,
340
249
  capturingClientId,
341
250
  } = selected;
@@ -345,10 +254,9 @@ export default function WrappedBlockPopover( {
345
254
  }
346
255
 
347
256
  return (
348
- <BlockPopover
257
+ <SelectedBlockPopover
349
258
  clientId={ clientId }
350
259
  rootClientId={ rootClientId }
351
- isValid={ isValid }
352
260
  isEmptyDefaultBlock={ isEmptyDefaultBlock }
353
261
  capturingClientId={ capturingClientId }
354
262
  __unstablePopoverSlot={ __unstablePopoverSlot }
@@ -4,6 +4,10 @@
4
4
 
5
5
  .block-editor-block-list__insertion-point {
6
6
  position: absolute;
7
+ top: 0;
8
+ bottom: 0;
9
+ left: 0;
10
+ right: 0;
7
11
  }
8
12
 
9
13
  .block-editor-block-list__insertion-point-indicator {
@@ -49,7 +53,6 @@
49
53
  }
50
54
 
51
55
  // Sibling inserter / "inbetweenserter".
52
- .block-editor-block-list__empty-block-inserter,
53
56
  .block-editor-default-block-appender,
54
57
  .block-editor-block-list__insertion-point-inserter,
55
58
  .block-editor-block-list__block-popover-inserter {
@@ -98,7 +101,7 @@
98
101
  position: sticky;
99
102
  top: 0;
100
103
  width: 100%;
101
- z-index: z-index(".block-editor-block-list__block-popover");
104
+ z-index: z-index(".block-editor-block-popover");
102
105
  // Fill up when empty
103
106
  min-height: $block-toolbar-height;
104
107
  display: block;
@@ -112,42 +115,6 @@
112
115
  border-right-color: $gray-200;
113
116
  }
114
117
  }
115
-
116
- .block-editor-block-mover-button {
117
- overflow: hidden;
118
- }
119
-
120
- // Extra specificity to override standard toolbar button styles.
121
- .block-editor-block-mover.is-horizontal .block-editor-block-mover-button.block-editor-block-mover-button {
122
- min-width: $block-toolbar-height*0.5;
123
- width: $block-toolbar-height*0.5;
124
-
125
- svg {
126
- min-width: $block-toolbar-height*0.5;
127
- }
128
- }
129
- }
130
-
131
- // Position mover arrows for both toolbars.
132
- .block-editor-block-contextual-toolbar .block-editor-block-mover:not(.is-horizontal) {
133
- // Position SVGs.
134
- .block-editor-block-mover-button {
135
- &:focus::before {
136
- left: 0 !important;
137
- min-width: 0;
138
- width: 100%;
139
- }
140
- }
141
-
142
- @include break-small() {
143
- .block-editor-block-mover-button.is-up-button svg {
144
- top: 5px;
145
- }
146
-
147
- .block-editor-block-mover-button.is-down-button svg {
148
- bottom: 5px;
149
- }
150
- }
151
118
  }
152
119
 
153
120
  /**
@@ -217,37 +184,6 @@
217
184
  }
218
185
  }
219
186
 
220
- /**
221
- * Popovers.
222
- */
223
-
224
- .block-editor-block-list__insertion-point-popover.is-without-arrow {
225
- z-index: z-index(".block-editor-block-list__insertion-point-popover");
226
- position: absolute;
227
- pointer-events: none;
228
-
229
- * {
230
- pointer-events: none;
231
- }
232
-
233
- .is-with-inserter {
234
- pointer-events: all;
235
-
236
- * {
237
- pointer-events: all;
238
- }
239
- }
240
-
241
- .components-popover__content.components-popover__content {
242
- // Needs specificity.
243
- background: none;
244
- border: none;
245
- box-shadow: none;
246
- overflow-y: visible;
247
- margin-left: 0;
248
- }
249
- }
250
-
251
187
  // Hide the popover block editor list while dragging.
252
188
  // Using a hacky animation to delay hiding the element.
253
189
  // It's needed because if we hide the element immediately upon dragging,
@@ -262,33 +198,12 @@
262
198
  }
263
199
 
264
200
  .components-popover.block-editor-block-list__block-popover {
265
- z-index: z-index(".block-editor-block-list__block-popover");
266
- position: absolute;
267
-
268
- .components-popover__content {
269
- margin: 0 !important;
270
- min-width: auto;
271
- width: max-content;
272
- background: none;
273
- border: none;
274
- box-shadow: none;
275
- overflow-y: visible;
276
-
277
- // Allow clicking through the toolbar holder.
278
- pointer-events: none;
279
-
280
- .block-editor-block-list__block-selection-button,
281
- .block-editor-block-contextual-toolbar,
282
- .block-editor-block-list__empty-block-inserter {
283
- pointer-events: all;
284
- }
285
-
286
- // Position the block toolbar.
287
- .block-editor-block-list__block-selection-button,
288
- .block-editor-block-contextual-toolbar {
289
- margin-top: $grid-unit-15;
290
- margin-bottom: $grid-unit-15;
291
- }
201
+ // Position the block toolbar.
202
+ .block-editor-block-list__block-selection-button,
203
+ .block-editor-block-contextual-toolbar {
204
+ pointer-events: all;
205
+ margin-top: $grid-unit-15;
206
+ margin-bottom: $grid-unit-15;
292
207
  }
293
208
 
294
209
  // Hide the block toolbar if the insertion point is shown.
@@ -307,30 +222,3 @@
307
222
  .is-dragging-components-draggable .components-tooltip {
308
223
  display: none;
309
224
  }
310
-
311
-
312
- // Size multiple sequential buttons to be optically balanced.
313
- // Icons are 36px, as set by a 24px icon and 12px padding.
314
- .block-editor-block-toolbar > .components-toolbar > .block-editor-block-toolbar__slot, // When a plugin adds to a slot, the segment has a `components-toolbar` class.
315
- .block-editor-block-toolbar > .block-editor-block-toolbar__slot > .components-toolbar, // The nesting order is sometimes reversed.
316
- .block-editor-block-toolbar > .block-editor-block-toolbar__slot > .components-dropdown, // Targets unique markup for the "Replace" button.
317
- .block-editor-block-toolbar .components-toolbar-group {
318
- padding-left: $grid-unit-15 * 0.5; // 6px.
319
- padding-right: $grid-unit-15 * 0.5;
320
-
321
- .components-button,
322
- .components-button.has-icon.has-icon {
323
- min-width: $block-toolbar-height - $grid-unit-15;
324
- padding-left: $grid-unit-15 * 0.5; // 6px.
325
- padding-right: $grid-unit-15 * 0.5;
326
-
327
- svg {
328
- min-width: $button-size-small; // This is the optimal icon size, and we size the whole button after this.
329
- }
330
-
331
- &::before {
332
- left: 2px;
333
- right: 2px;
334
- }
335
- }
336
- }
@@ -11,12 +11,14 @@
11
11
  align-items: flex-start;
12
12
 
13
13
  > .components-unit-control-wrapper {
14
- width: calc(50% - 26px);
14
+ width: 110px;
15
15
  margin-bottom: 0;
16
+ margin-right: #{ $grid-unit-10 };
17
+ flex-shrink: 0;
16
18
  }
17
19
 
18
20
  .components-range-control {
19
- width: calc(50% - 26px);
21
+ flex: 1;
20
22
  margin-bottom: 0;
21
23
 
22
24
  .components-base-control__field {
@@ -49,6 +51,7 @@
49
51
  .component-border-radius-control__linked-button.has-icon {
50
52
  display: flex;
51
53
  justify-content: center;
54
+ margin-left: 2px;
52
55
 
53
56
  svg {
54
57
  margin-right: 0;
@@ -231,7 +231,7 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
231
231
  >
232
232
  <button
233
233
  aria-describedby={null}
234
- className="components-button components-circular-option-picker__clear is-secondary is-small"
234
+ className="components-button components-circular-option-picker__clear is-tertiary"
235
235
  onClick={[Function]}
236
236
  type="button"
237
237
  >
@@ -10,6 +10,7 @@ import {
10
10
  } from '@wordpress/components';
11
11
  import { __ } from '@wordpress/i18n';
12
12
  import { DOWN } from '@wordpress/keycodes';
13
+ import deprecated from '@wordpress/deprecated';
13
14
 
14
15
  const ColorSelectorSVGIcon = () => (
15
16
  <SVG xmlns="https://www.w3.org/2000/svg" viewBox="0 0 20 20">
@@ -78,14 +79,22 @@ const renderToggleComponent = ( { TextColor, BackgroundColor } ) => ( {
78
79
  );
79
80
  };
80
81
 
81
- const BlockColorsStyleSelector = ( { children, ...other } ) => (
82
- <Dropdown
83
- position="bottom right"
84
- className="block-library-colors-selector"
85
- contentClassName="block-library-colors-selector__popover"
86
- renderToggle={ renderToggleComponent( other ) }
87
- renderContent={ () => children }
88
- />
89
- );
82
+ const BlockColorsStyleSelector = ( { children, ...other } ) => {
83
+ deprecated( `wp.blockEditor.BlockColorsStyleSelector`, {
84
+ alternative: 'block supports API',
85
+ since: '6.1',
86
+ version: '6.3',
87
+ } );
88
+
89
+ return (
90
+ <Dropdown
91
+ position="bottom right"
92
+ className="block-library-colors-selector"
93
+ contentClassName="block-library-colors-selector__popover"
94
+ renderToggle={ renderToggleComponent( other ) }
95
+ renderContent={ () => children }
96
+ />
97
+ );
98
+ };
90
99
 
91
100
  export default BlockColorsStyleSelector;
@@ -34,8 +34,7 @@
34
34
 
35
35
  // The black plus that shows up on the right side of an empty paragraph block, or the initial appender
36
36
  // that exists only on empty documents.
37
- .block-editor-default-block-appender .block-editor-inserter,
38
- .block-editor-block-list__empty-block-inserter.block-editor-block-list__empty-block-inserter { // This needs specificity to override inherited popover styles.
37
+ .block-editor-default-block-appender .block-editor-inserter {
39
38
  position: absolute;
40
39
  top: 0;
41
40
  right: 0;
@@ -10,6 +10,7 @@ import {
10
10
  } from '@wordpress/components';
11
11
  import { __ } from '@wordpress/i18n';
12
12
  import { DOWN } from '@wordpress/keycodes';
13
+ import { Icon, filter } from '@wordpress/icons';
13
14
 
14
15
  function DuotoneControl( {
15
16
  colorPalette,
@@ -41,7 +42,13 @@ function DuotoneControl( {
41
42
  aria-expanded={ isOpen }
42
43
  onKeyDown={ openOnArrowDown }
43
44
  label={ __( 'Apply duotone filter' ) }
44
- icon={ <DuotoneSwatch values={ value } /> }
45
+ icon={
46
+ value ? (
47
+ <DuotoneSwatch values={ value } />
48
+ ) : (
49
+ <Icon icon={ filter } />
50
+ )
51
+ }
45
52
  />
46
53
  );
47
54
  } }
@@ -0,0 +1,29 @@
1
+ # Gradients
2
+
3
+ The `Gradients` component exposes tools for working with gradients
4
+
5
+ <a name="getGradientSlugByValue" href="#getGradientSlugByValue">#</a> **getGradientSlugByValue**
6
+
7
+ Retrieves the gradient slug per slug.
8
+
9
+ _Parameters_
10
+
11
+ - _gradients_ `Array`: Gradient Palette
12
+ - _value_ `string`: Gradient value
13
+
14
+ _Returns_
15
+
16
+ - `string`: Gradient slug.
17
+
18
+ <a name="getGradientValueBySlug" href="#getGradientValueBySlug">#</a> **getGradientValueBySlug**
19
+
20
+ Retrieves the gradient value per slug.
21
+
22
+ _Parameters_
23
+
24
+ - _gradients_ `Array`: Gradient Palette
25
+ - _slug_ `string`: Gradient slug
26
+
27
+ _Returns_
28
+
29
+ - `string`: Gradient value.
@@ -25,7 +25,7 @@ const MyImageSizeControl = () => {
25
25
  imageHeight={ imageHeight }
26
26
  />
27
27
  );
28
- } );
28
+ }
29
29
  ```
30
30
 
31
31
  ## Props
@@ -33,7 +33,6 @@ export {
33
33
  BlockVerticalAlignmentControl,
34
34
  } from './block-vertical-alignment-control';
35
35
  export { default as __experimentalBorderRadiusControl } from './border-radius-control';
36
- export { default as __experimentalBorderStyleControl } from './border-style-control';
37
36
  export {
38
37
  // This is a typo, but kept here for back-compat.
39
38
  ButtonBlockerAppender,