@wordpress/block-editor 15.18.1-next.v.202604201441.0 → 15.19.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 (283) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/build/components/autocomplete/index.cjs.map +3 -3
  3. package/build/components/background-image-control/index.cjs +2 -1
  4. package/build/components/background-image-control/index.cjs.map +2 -2
  5. package/build/components/block-allowed-blocks/modal.cjs.map +2 -2
  6. package/build/components/block-bindings/attribute-control.cjs.map +3 -3
  7. package/build/components/block-card/index.cjs +2 -2
  8. package/build/components/block-card/index.cjs.map +3 -3
  9. package/build/components/block-controls/fill.cjs.map +2 -2
  10. package/build/components/block-inspector/edit-contents.cjs +7 -1
  11. package/build/components/block-inspector/edit-contents.cjs.map +2 -2
  12. package/build/components/block-mover/button.cjs +9 -3
  13. package/build/components/block-mover/button.cjs.map +2 -2
  14. package/build/components/block-pattern-setup/index.cjs +3 -2
  15. package/build/components/block-pattern-setup/index.cjs.map +2 -2
  16. package/build/components/block-patterns-list/index.cjs +2 -1
  17. package/build/components/block-patterns-list/index.cjs.map +2 -2
  18. package/build/components/block-patterns-paging/index.cjs.map +3 -3
  19. package/build/components/block-settings-menu/block-settings-dropdown.cjs +2 -2
  20. package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +3 -3
  21. package/build/components/block-settings-menu/index.cjs +2 -2
  22. package/build/components/block-settings-menu/index.cjs.map +3 -3
  23. package/build/components/block-styles/menu-items.cjs.map +3 -3
  24. package/build/components/block-switcher/index.cjs.map +3 -3
  25. package/build/components/block-switcher/pattern-transformations-menu.cjs +2 -1
  26. package/build/components/block-switcher/pattern-transformations-menu.cjs.map +2 -2
  27. package/build/components/block-toolbar/edit-section-button.cjs +7 -1
  28. package/build/components/block-toolbar/edit-section-button.cjs.map +2 -2
  29. package/build/components/block-toolbar/pattern-overrides-dropdown.cjs.map +3 -3
  30. package/build/components/block-variation-transforms/index.cjs +4 -3
  31. package/build/components/block-variation-transforms/index.cjs.map +2 -2
  32. package/build/components/block-visibility/modal.cjs +0 -10
  33. package/build/components/block-visibility/modal.cjs.map +3 -3
  34. package/build/components/block-visibility/viewport-visibility-info.cjs +2 -2
  35. package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
  36. package/build/components/collab/{block-comment-icon-slot.cjs → note-icon-slot.cjs} +8 -8
  37. package/build/components/collab/note-icon-slot.cjs.map +7 -0
  38. package/build/components/collab/{block-comment-icon-toolbar-slot.cjs → note-icon-toolbar-slot.cjs} +9 -9
  39. package/build/components/collab/note-icon-toolbar-slot.cjs.map +7 -0
  40. package/build/components/date-format-picker/index.cjs +2 -1
  41. package/build/components/date-format-picker/index.cjs.map +2 -2
  42. package/build/components/dimensions-tool/scale-tool.cjs +2 -2
  43. package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
  44. package/build/components/global-styles/state-control.cjs +111 -37
  45. package/build/components/global-styles/state-control.cjs.map +3 -3
  46. package/build/components/gradients/use-gradient.cjs +2 -2
  47. package/build/components/gradients/use-gradient.cjs.map +2 -2
  48. package/build/components/grid/grid-item-movers.cjs +2 -1
  49. package/build/components/grid/grid-item-movers.cjs.map +2 -2
  50. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  51. package/build/components/inserter/block-patterns-tab/pattern-category-previews.cjs.map +2 -2
  52. package/build/components/inserter/index.cjs +41 -43
  53. package/build/components/inserter/index.cjs.map +2 -2
  54. package/build/components/inserter/menu.cjs +32 -3
  55. package/build/components/inserter/menu.cjs.map +3 -3
  56. package/build/components/inserter/search-results.cjs +3 -3
  57. package/build/components/inserter/search-results.cjs.map +2 -2
  58. package/build/components/inserter/tips.cjs +1 -1
  59. package/build/components/inserter/tips.cjs.map +2 -2
  60. package/build/components/inspector-popover-header/index.cjs.map +3 -3
  61. package/build/components/link-control/link-preview.cjs +2 -2
  62. package/build/components/link-control/link-preview.cjs.map +2 -2
  63. package/build/components/link-control/settings.cjs +2 -1
  64. package/build/components/link-control/settings.cjs.map +2 -2
  65. package/build/components/link-picker/link-picker.cjs +3 -2
  66. package/build/components/link-picker/link-picker.cjs.map +2 -2
  67. package/build/components/link-picker/link-preview.cjs +2 -2
  68. package/build/components/link-picker/link-preview.cjs.map +2 -2
  69. package/build/components/list-view/block-select-button.cjs +2 -2
  70. package/build/components/list-view/block-select-button.cjs.map +2 -2
  71. package/build/components/list-view/index.cjs +2 -1
  72. package/build/components/list-view/index.cjs.map +2 -2
  73. package/build/components/provider/index.cjs +80 -7
  74. package/build/components/provider/index.cjs.map +2 -2
  75. package/build/components/responsive-block-control/label.cjs +9 -2
  76. package/build/components/responsive-block-control/label.cjs.map +2 -2
  77. package/build/components/rich-text/event-listeners/index.cjs.map +2 -2
  78. package/build/components/rich-text/event-listeners/paste-handler.cjs +12 -5
  79. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  80. package/build/hooks/block-bindings.cjs.map +3 -3
  81. package/build/hooks/custom-css.cjs +1 -1
  82. package/build/hooks/custom-css.cjs.map +2 -2
  83. package/build/layouts/flex.cjs +5 -8
  84. package/build/layouts/flex.cjs.map +3 -3
  85. package/build/layouts/grid.cjs +5 -5
  86. package/build/layouts/grid.cjs.map +2 -2
  87. package/build/private-apis.cjs +5 -4
  88. package/build/private-apis.cjs.map +3 -3
  89. package/build/store/actions.cjs +2 -2
  90. package/build/store/actions.cjs.map +2 -2
  91. package/build/store/private-keys.cjs +3 -0
  92. package/build/store/private-keys.cjs.map +2 -2
  93. package/build/store/reducer.cjs +8 -30
  94. package/build/store/reducer.cjs.map +2 -2
  95. package/build/store/selectors.cjs.map +2 -2
  96. package/build/utils/dom.cjs +3 -1
  97. package/build/utils/dom.cjs.map +2 -2
  98. package/build-module/components/autocomplete/index.mjs +2 -2
  99. package/build-module/components/autocomplete/index.mjs.map +2 -2
  100. package/build-module/components/background-image-control/index.mjs +2 -2
  101. package/build-module/components/background-image-control/index.mjs.map +2 -2
  102. package/build-module/components/block-allowed-blocks/modal.mjs +2 -2
  103. package/build-module/components/block-allowed-blocks/modal.mjs.map +2 -2
  104. package/build-module/components/block-bindings/attribute-control.mjs +3 -3
  105. package/build-module/components/block-bindings/attribute-control.mjs.map +2 -2
  106. package/build-module/components/block-card/index.mjs +4 -4
  107. package/build-module/components/block-card/index.mjs.map +2 -2
  108. package/build-module/components/block-controls/fill.mjs.map +2 -2
  109. package/build-module/components/block-inspector/edit-contents.mjs +7 -1
  110. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  111. package/build-module/components/block-mover/button.mjs +11 -5
  112. package/build-module/components/block-mover/button.mjs.map +2 -2
  113. package/build-module/components/block-pattern-setup/index.mjs +2 -1
  114. package/build-module/components/block-pattern-setup/index.mjs.map +2 -2
  115. package/build-module/components/block-patterns-list/index.mjs +1 -1
  116. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  117. package/build-module/components/block-patterns-paging/index.mjs +3 -3
  118. package/build-module/components/block-patterns-paging/index.mjs.map +2 -2
  119. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs +2 -2
  120. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
  121. package/build-module/components/block-settings-menu/index.mjs +2 -2
  122. package/build-module/components/block-settings-menu/index.mjs.map +2 -2
  123. package/build-module/components/block-styles/menu-items.mjs +2 -2
  124. package/build-module/components/block-styles/menu-items.mjs.map +2 -2
  125. package/build-module/components/block-switcher/index.mjs +2 -2
  126. package/build-module/components/block-switcher/index.mjs.map +2 -2
  127. package/build-module/components/block-switcher/pattern-transformations-menu.mjs +2 -7
  128. package/build-module/components/block-switcher/pattern-transformations-menu.mjs.map +2 -2
  129. package/build-module/components/block-toolbar/edit-section-button.mjs +7 -1
  130. package/build-module/components/block-toolbar/edit-section-button.mjs.map +2 -2
  131. package/build-module/components/block-toolbar/pattern-overrides-dropdown.mjs +2 -2
  132. package/build-module/components/block-toolbar/pattern-overrides-dropdown.mjs.map +2 -2
  133. package/build-module/components/block-variation-transforms/index.mjs +4 -4
  134. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  135. package/build-module/components/block-visibility/modal.mjs +0 -10
  136. package/build-module/components/block-visibility/modal.mjs.map +3 -3
  137. package/build-module/components/block-visibility/viewport-visibility-info.mjs +4 -4
  138. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  139. package/build-module/components/collab/note-icon-slot.mjs +8 -0
  140. package/build-module/components/collab/note-icon-slot.mjs.map +7 -0
  141. package/build-module/components/collab/note-icon-toolbar-slot.mjs +10 -0
  142. package/build-module/components/collab/note-icon-toolbar-slot.mjs.map +7 -0
  143. package/build-module/components/date-format-picker/index.mjs +2 -2
  144. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  145. package/build-module/components/dimensions-tool/scale-tool.mjs +2 -2
  146. package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
  147. package/build-module/components/global-styles/state-control.mjs +119 -40
  148. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  149. package/build-module/components/gradients/use-gradient.mjs +2 -2
  150. package/build-module/components/gradients/use-gradient.mjs.map +2 -2
  151. package/build-module/components/grid/grid-item-movers.mjs +2 -5
  152. package/build-module/components/grid/grid-item-movers.mjs.map +2 -2
  153. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  154. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.mjs +3 -3
  155. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.mjs.map +1 -1
  156. package/build-module/components/inserter/index.mjs +41 -43
  157. package/build-module/components/inserter/index.mjs.map +2 -2
  158. package/build-module/components/inserter/menu.mjs +34 -4
  159. package/build-module/components/inserter/menu.mjs.map +2 -2
  160. package/build-module/components/inserter/search-results.mjs +1 -1
  161. package/build-module/components/inserter/search-results.mjs.map +1 -1
  162. package/build-module/components/inserter/tips.mjs +1 -1
  163. package/build-module/components/inserter/tips.mjs.map +2 -2
  164. package/build-module/components/inspector-popover-header/index.mjs +2 -2
  165. package/build-module/components/inspector-popover-header/index.mjs.map +2 -2
  166. package/build-module/components/link-control/link-preview.mjs +2 -2
  167. package/build-module/components/link-control/link-preview.mjs.map +2 -2
  168. package/build-module/components/link-control/settings.mjs +3 -2
  169. package/build-module/components/link-control/settings.mjs.map +2 -2
  170. package/build-module/components/link-picker/link-picker.mjs +1 -1
  171. package/build-module/components/link-picker/link-picker.mjs.map +2 -2
  172. package/build-module/components/link-picker/link-preview.mjs +2 -2
  173. package/build-module/components/link-picker/link-preview.mjs.map +2 -2
  174. package/build-module/components/list-view/block-select-button.mjs +2 -2
  175. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  176. package/build-module/components/list-view/index.mjs +2 -4
  177. package/build-module/components/list-view/index.mjs.map +2 -2
  178. package/build-module/components/provider/index.mjs +82 -8
  179. package/build-module/components/provider/index.mjs.map +2 -2
  180. package/build-module/components/responsive-block-control/label.mjs +9 -2
  181. package/build-module/components/responsive-block-control/label.mjs.map +2 -2
  182. package/build-module/components/rich-text/event-listeners/index.mjs.map +2 -2
  183. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +12 -5
  184. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  185. package/build-module/hooks/block-bindings.mjs +2 -2
  186. package/build-module/hooks/block-bindings.mjs.map +2 -2
  187. package/build-module/hooks/custom-css.mjs +1 -1
  188. package/build-module/hooks/custom-css.mjs.map +2 -2
  189. package/build-module/layouts/flex.mjs +4 -7
  190. package/build-module/layouts/flex.mjs.map +2 -2
  191. package/build-module/layouts/grid.mjs +4 -4
  192. package/build-module/layouts/grid.mjs.map +2 -2
  193. package/build-module/private-apis.mjs +7 -5
  194. package/build-module/private-apis.mjs.map +2 -2
  195. package/build-module/store/actions.mjs +2 -2
  196. package/build-module/store/actions.mjs.map +2 -2
  197. package/build-module/store/private-keys.mjs +2 -0
  198. package/build-module/store/private-keys.mjs.map +2 -2
  199. package/build-module/store/reducer.mjs +8 -30
  200. package/build-module/store/reducer.mjs.map +2 -2
  201. package/build-module/store/selectors.mjs.map +2 -2
  202. package/build-module/utils/dom.mjs +2 -1
  203. package/build-module/utils/dom.mjs.map +2 -2
  204. package/build-style/content-rtl.css +0 -3
  205. package/build-style/content.css +0 -3
  206. package/build-style/style-rtl.css +29 -3
  207. package/build-style/style.css +29 -3
  208. package/build-types/components/block-context/index.d.ts +9 -16
  209. package/build-types/components/block-context/index.d.ts.map +1 -1
  210. package/build-types/utils/dom.d.ts +13 -6
  211. package/build-types/utils/dom.d.ts.map +1 -1
  212. package/package.json +39 -38
  213. package/src/components/autocomplete/index.js +4 -2
  214. package/src/components/background-image-control/index.js +2 -2
  215. package/src/components/block-allowed-blocks/modal.js +3 -3
  216. package/src/components/block-bindings/attribute-control.js +4 -4
  217. package/src/components/block-card/index.js +5 -5
  218. package/src/components/block-controls/fill.js +1 -0
  219. package/src/components/block-inspector/edit-contents.js +4 -2
  220. package/src/components/block-list/content.scss +0 -4
  221. package/src/components/block-manager/style.scss +3 -2
  222. package/src/components/block-mover/button.js +17 -7
  223. package/src/components/block-pattern-setup/index.js +2 -1
  224. package/src/components/block-patterns-list/index.js +1 -1
  225. package/src/components/block-patterns-paging/index.js +5 -6
  226. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -2
  227. package/src/components/block-settings-menu/index.js +2 -2
  228. package/src/components/block-styles/menu-items.js +3 -3
  229. package/src/components/block-switcher/index.js +3 -3
  230. package/src/components/block-switcher/pattern-transformations-menu.js +2 -7
  231. package/src/components/block-toolbar/edit-section-button.js +5 -1
  232. package/src/components/block-toolbar/pattern-overrides-dropdown.js +2 -2
  233. package/src/components/block-variation-transforms/index.js +4 -4
  234. package/src/components/block-visibility/modal.js +0 -1
  235. package/src/components/block-visibility/viewport-visibility-info.js +5 -5
  236. package/src/components/collab/note-icon-slot.js +8 -0
  237. package/src/components/collab/note-icon-toolbar-slot.js +10 -0
  238. package/src/components/date-format-picker/index.js +4 -2
  239. package/src/components/dimensions-tool/scale-tool.js +2 -2
  240. package/src/components/global-styles/state-control.js +152 -49
  241. package/src/components/global-styles/style.scss +9 -0
  242. package/src/components/gradients/use-gradient.js +3 -1
  243. package/src/components/grid/grid-item-movers.js +2 -5
  244. package/src/components/iframe/use-scale-canvas.js +0 -4
  245. package/src/components/inner-blocks/README.md +5 -1
  246. package/src/components/inner-blocks/index.native.js +1 -1
  247. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +5 -5
  248. package/src/components/inserter/index.js +58 -69
  249. package/src/components/inserter/menu.js +35 -3
  250. package/src/components/inserter/search-results.js +1 -1
  251. package/src/components/inserter/style.scss +18 -3
  252. package/src/components/inserter/tips.js +1 -1
  253. package/src/components/inspector-popover-header/index.js +2 -2
  254. package/src/components/link-control/link-preview.js +3 -3
  255. package/src/components/link-control/settings.js +3 -2
  256. package/src/components/link-picker/link-picker.js +1 -1
  257. package/src/components/link-picker/link-preview.js +3 -3
  258. package/src/components/list-view/block-select-button.js +3 -3
  259. package/src/components/list-view/index.js +2 -4
  260. package/src/components/provider/index.js +149 -8
  261. package/src/components/responsive-block-control/label.js +5 -2
  262. package/src/components/rich-text/event-listeners/index.js +0 -1
  263. package/src/components/rich-text/event-listeners/paste-handler.js +18 -4
  264. package/src/hooks/block-bindings.js +3 -3
  265. package/src/hooks/custom-css.js +1 -8
  266. package/src/layouts/flex.js +7 -9
  267. package/src/layouts/grid.js +7 -4
  268. package/src/private-apis.js +6 -4
  269. package/src/store/actions.js +12 -6
  270. package/src/store/private-keys.js +1 -0
  271. package/src/store/reducer.js +11 -39
  272. package/src/store/selectors.js +6 -0
  273. package/src/store/test/reducer.js +39 -0
  274. package/src/utils/dom.js +3 -3
  275. package/src/utils/test/dom.js +47 -4
  276. package/build/components/collab/block-comment-icon-slot.cjs.map +0 -7
  277. package/build/components/collab/block-comment-icon-toolbar-slot.cjs.map +0 -7
  278. package/build-module/components/collab/block-comment-icon-slot.mjs +0 -8
  279. package/build-module/components/collab/block-comment-icon-slot.mjs.map +0 -7
  280. package/build-module/components/collab/block-comment-icon-toolbar-slot.mjs +0 -10
  281. package/build-module/components/collab/block-comment-icon-toolbar-slot.mjs.map +0 -7
  282. package/src/components/collab/block-comment-icon-slot.js +0 -8
  283. package/src/components/collab/block-comment-icon-toolbar-slot.js +0 -10
@@ -7,10 +7,11 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { getBlockType } from '@wordpress/blocks';
10
- import { Button, VisuallyHidden } from '@wordpress/components';
11
- import { useInstanceId } from '@wordpress/compose';
10
+ import { Button } from '@wordpress/components';
11
+ import { VisuallyHidden } from '@wordpress/ui';
12
+ import { useInstanceId, useViewportMatch } from '@wordpress/compose';
12
13
  import { useSelect, useDispatch } from '@wordpress/data';
13
- import { forwardRef } from '@wordpress/element';
14
+ import { forwardRef, useMemo } from '@wordpress/element';
14
15
  import { __, isRTL } from '@wordpress/i18n';
15
16
  import { displayShortcut } from '@wordpress/keycodes';
16
17
 
@@ -62,10 +63,12 @@ const BlockMoverButton = forwardRef(
62
63
  ref
63
64
  ) => {
64
65
  const instanceId = useInstanceId( BlockMoverButton );
65
- const normalizedClientIds = Array.isArray( clientIds )
66
- ? clientIds
67
- : [ clientIds ];
66
+ const normalizedClientIds = useMemo(
67
+ () => ( Array.isArray( clientIds ) ? clientIds : [ clientIds ] ),
68
+ [ clientIds ]
69
+ );
68
70
  const blocksCount = normalizedClientIds.length;
71
+ const isMobileViewport = useViewportMatch( 'small', '<' );
69
72
 
70
73
  const {
71
74
  blockType,
@@ -107,7 +110,7 @@ const BlockMoverButton = forwardRef(
107
110
  orientation: moverOrientation || blockListOrientation,
108
111
  };
109
112
  },
110
- [ clientIds, direction ]
113
+ [ direction, moverOrientation, normalizedClientIds ]
111
114
  );
112
115
 
113
116
  const { moveBlocksDown, moveBlocksUp } =
@@ -138,6 +141,13 @@ const BlockMoverButton = forwardRef(
138
141
  direction,
139
142
  orientation
140
143
  ) }
144
+ tooltipPosition={
145
+ ! isMobileViewport &&
146
+ direction === 'down' &&
147
+ orientation === 'vertical'
148
+ ? 'bottom'
149
+ : 'top'
150
+ }
141
151
  aria-describedby={ descriptionId }
142
152
  { ...props }
143
153
  onClick={ isDisabled ? null : onClick }
@@ -3,7 +3,8 @@
3
3
  */
4
4
  import { useDispatch } from '@wordpress/data';
5
5
  import { cloneBlock } from '@wordpress/blocks';
6
- import { Composite, VisuallyHidden } from '@wordpress/components';
6
+ import { Composite } from '@wordpress/components';
7
+ import { VisuallyHidden } from '@wordpress/ui';
7
8
 
8
9
  import { useState } from '@wordpress/element';
9
10
  import { useInstanceId } from '@wordpress/compose';
@@ -10,10 +10,10 @@ import { cloneBlock } from '@wordpress/blocks';
10
10
  import { useEffect, useState, forwardRef, useMemo } from '@wordpress/element';
11
11
  import {
12
12
  Composite,
13
- VisuallyHidden,
14
13
  Tooltip,
15
14
  __experimentalHStack as HStack,
16
15
  } from '@wordpress/components';
16
+ import { VisuallyHidden } from '@wordpress/ui';
17
17
  import { useInstanceId } from '@wordpress/compose';
18
18
  import { __ } from '@wordpress/i18n';
19
19
  import { Icon, symbol } from '@wordpress/icons';
@@ -4,7 +4,7 @@
4
4
  import {
5
5
  __experimentalVStack as VStack,
6
6
  __experimentalHStack as HStack,
7
- __experimentalText as Text,
7
+ __experimentalText as WCText,
8
8
  Button,
9
9
  } from '@wordpress/components';
10
10
  import { __, _x, _n, sprintf } from '@wordpress/i18n';
@@ -17,14 +17,13 @@ export default function Pagination( {
17
17
  } ) {
18
18
  return (
19
19
  <VStack className="block-editor-patterns__grid-pagination-wrapper">
20
- <Text variant="muted">
20
+ <WCText variant="muted">
21
21
  { sprintf(
22
22
  // translators: %s: Total number of patterns.
23
23
  _n( '%s item', '%s items', totalItems ),
24
24
  totalItems
25
25
  ) }
26
- </Text>
27
-
26
+ </WCText>
28
27
  { numPages > 1 && (
29
28
  <HStack
30
29
  expanded={ false }
@@ -60,14 +59,14 @@ export default function Pagination( {
60
59
  <span>‹</span>
61
60
  </Button>
62
61
  </HStack>
63
- <Text variant="muted">
62
+ <WCText variant="muted">
64
63
  { sprintf(
65
64
  // translators: 1: Current page number. 2: Total number of pages.
66
65
  _x( '%1$s of %2$s', 'paging' ),
67
66
  currentPage,
68
67
  numPages
69
68
  ) }
70
- </Text>
69
+ </WCText>
71
70
  <HStack
72
71
  expanded={ false }
73
72
  spacing={ 1 }
@@ -18,7 +18,7 @@ import { pipe, useCopyToClipboard } from '@wordpress/compose';
18
18
  * Internal dependencies
19
19
  */
20
20
  import BlockActions from '../block-actions';
21
- import CommentIconSlotFill from '../../components/collab/block-comment-icon-slot';
21
+ import NoteIconSlotFill from '../../components/collab/note-icon-slot';
22
22
  import BlockHTMLConvertButton from './block-html-convert-button';
23
23
  import __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';
24
24
  import BlockSettingsMenuControls from '../block-settings-menu-controls';
@@ -349,7 +349,7 @@ export function BlockSettingsDropdown( {
349
349
  </>
350
350
  ) }
351
351
  { canEdit && count === 1 && (
352
- <CommentIconSlotFill.Slot
352
+ <NoteIconSlotFill.Slot
353
353
  fillProps={ {
354
354
  clientId: firstBlockClientId,
355
355
  onClose,
@@ -7,12 +7,12 @@ import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
7
7
  * Internal dependencies
8
8
  */
9
9
  import BlockSettingsDropdown from './block-settings-dropdown';
10
- import CommentIconToolbarSlotFill from '../../components/collab/block-comment-icon-toolbar-slot';
10
+ import NoteIconToolbarSlotFill from '../../components/collab/note-icon-toolbar-slot';
11
11
 
12
12
  export function BlockSettingsMenu( { clientIds, ...props } ) {
13
13
  return (
14
14
  <ToolbarGroup>
15
- <CommentIconToolbarSlotFill.Slot />
15
+ <NoteIconToolbarSlotFill.Slot />
16
16
 
17
17
  <ToolbarItem>
18
18
  { ( toggleProps ) => (
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { MenuItem, __experimentalText as Text } from '@wordpress/components';
4
+ import { MenuItem, __experimentalText as WCText } from '@wordpress/components';
5
5
  import { check } from '@wordpress/icons';
6
6
 
7
7
  const noop = () => {};
@@ -29,14 +29,14 @@ export default function BlockStylesMenuItems( {
29
29
  onMouseEnter={ () => onHoverStyle( style ) }
30
30
  onMouseLeave={ () => onHoverStyle( null ) }
31
31
  >
32
- <Text
32
+ <WCText
33
33
  as="span"
34
34
  limit={ 18 }
35
35
  ellipsizeMode="tail"
36
36
  truncate
37
37
  >
38
38
  { menuItemText }
39
- </Text>
39
+ </WCText>
40
40
  </MenuItem>
41
41
  );
42
42
  } ) }
@@ -6,7 +6,7 @@ import {
6
6
  DropdownMenu,
7
7
  ToolbarGroup,
8
8
  ToolbarItem,
9
- __experimentalText as Text,
9
+ __experimentalText as WCText,
10
10
  MenuGroup,
11
11
  } from '@wordpress/components';
12
12
  import {
@@ -184,9 +184,9 @@ function BlockSwitcherDropdownMenuContents( { onClose, clientIds } ) {
184
184
  ) }
185
185
  { isUsingBindings && (
186
186
  <MenuGroup>
187
- <Text className="block-editor-block-switcher__binding-indicator">
187
+ <WCText className="block-editor-block-switcher__binding-indicator">
188
188
  { connectedBlockDescription }
189
- </Text>
189
+ </WCText>
190
190
  </MenuGroup>
191
191
  ) }
192
192
  </div>
@@ -6,13 +6,8 @@ import { useState } from '@wordpress/element';
6
6
  import { useInstanceId, useViewportMatch } from '@wordpress/compose';
7
7
  import { chevronRight } from '@wordpress/icons';
8
8
 
9
- import {
10
- Composite,
11
- MenuGroup,
12
- MenuItem,
13
- Popover,
14
- VisuallyHidden,
15
- } from '@wordpress/components';
9
+ import { Composite, MenuGroup, MenuItem, Popover } from '@wordpress/components';
10
+ import { VisuallyHidden } from '@wordpress/ui';
16
11
 
17
12
  /**
18
13
  * Internal dependencies
@@ -58,7 +58,11 @@ export default function EditSectionButton( { clientId } ) {
58
58
  return (
59
59
  <ToolbarGroup>
60
60
  <ToolbarButton onClick={ handleClick }>
61
- { isEditing ? __( 'Exit pattern' ) : __( 'Edit pattern' ) }
61
+ { isEditing
62
+ ? /* translators: Button label to leave pattern editing mode. */
63
+ __( 'Exit pattern' )
64
+ : /* translators: Button label to enter pattern editing mode. */
65
+ __( 'Edit pattern' ) }
62
66
  </ToolbarButton>
63
67
  </ToolbarGroup>
64
68
  );
@@ -4,7 +4,7 @@
4
4
  import {
5
5
  Popover,
6
6
  ToolbarButton,
7
- __experimentalText as Text,
7
+ __experimentalText as WCText,
8
8
  } from '@wordpress/components';
9
9
  import { __, sprintf } from '@wordpress/i18n';
10
10
  import { useState, useRef } from '@wordpress/element';
@@ -48,7 +48,7 @@ function PatternOverridesPopoverContent( { clientIds, blockTitle } ) {
48
48
  description = __( 'These blocks are editable using overrides.' );
49
49
  }
50
50
 
51
- return <Text>{ description }</Text>;
51
+ return <WCText>{ description }</WCText>;
52
52
  }
53
53
 
54
54
  /**
@@ -7,9 +7,9 @@ import {
7
7
  Button,
8
8
  __experimentalToggleGroupControl as ToggleGroupControl,
9
9
  __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
10
- VisuallyHidden,
11
10
  privateApis as componentsPrivateApis,
12
11
  } from '@wordpress/components';
12
+ import { VisuallyHidden } from '@wordpress/ui';
13
13
  import { useSelect, useDispatch } from '@wordpress/data';
14
14
  import { useMemo } from '@wordpress/element';
15
15
 
@@ -30,7 +30,7 @@ function VariationsButtons( {
30
30
  } ) {
31
31
  return (
32
32
  <fieldset className={ className }>
33
- <VisuallyHidden as="legend">
33
+ <VisuallyHidden render={ <legend /> }>
34
34
  { __( 'Transform to variation' ) }
35
35
  </VisuallyHidden>
36
36
  { variations.map( ( variation ) => (
@@ -144,7 +144,7 @@ function VariationsToggleGroupControl( {
144
144
  );
145
145
  }
146
146
 
147
- function __experimentalBlockVariationTransforms( { blockClientId } ) {
147
+ function BlockVariationTransforms( { blockClientId } ) {
148
148
  const { updateBlockAttributes } = useDispatch( blockEditorStore );
149
149
  const {
150
150
  activeBlockVariation,
@@ -235,4 +235,4 @@ function __experimentalBlockVariationTransforms( { blockClientId } ) {
235
235
  );
236
236
  }
237
237
 
238
- export default __experimentalBlockVariationTransforms;
238
+ export default BlockVariationTransforms;
@@ -38,7 +38,6 @@ import {
38
38
  getViewportCheckboxState,
39
39
  getHideEverywhereCheckboxState,
40
40
  } from './utils';
41
- import './style.scss';
42
41
 
43
42
  const DEFAULT_VIEWPORT_CHECKBOX_VALUES = {
44
43
  [ BLOCK_VISIBILITY_VIEWPORTS.mobile.key ]: false,
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import {
5
5
  Icon,
6
- __experimentalText as Text,
6
+ __experimentalText as WCText,
7
7
  __experimentalHStack as HStack,
8
8
  privateApis as componentsPrivateApis,
9
9
  } from '@wordpress/components';
@@ -21,7 +21,7 @@ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
21
21
  import { deviceTypeKey } from '../../store/private-keys';
22
22
  import { BLOCK_VISIBILITY_VIEWPORTS } from './constants';
23
23
 
24
- const { Badge } = unlock( componentsPrivateApis );
24
+ const { Badge: WCBadge } = unlock( componentsPrivateApis );
25
25
  const DEFAULT_VISIBILITY_STATE = {
26
26
  currentBlockVisibility: undefined,
27
27
  hasParentHiddenEverywhere: false,
@@ -128,11 +128,11 @@ export default function ViewportVisibilityInfo( { clientId } ) {
128
128
  }
129
129
 
130
130
  return (
131
- <Badge className="block-editor-block-visibility-info">
131
+ <WCBadge className="block-editor-block-visibility-info">
132
132
  <HStack spacing={ 2 } justify="start">
133
133
  <Icon icon={ unseen } />
134
- <Text>{ label }</Text>
134
+ <WCText>{ label }</WCText>
135
135
  </HStack>
136
- </Badge>
136
+ </WCBadge>
137
137
  );
138
138
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createSlotFill } from '@wordpress/components';
5
+
6
+ const NoteIconSlotFill = createSlotFill( Symbol( 'NoteIconSlotFill' ) );
7
+
8
+ export default NoteIconSlotFill;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createSlotFill } from '@wordpress/components';
5
+
6
+ const NoteIconToolbarSlotFill = createSlotFill(
7
+ Symbol( 'NoteIconToolbarSlotFill' )
8
+ );
9
+
10
+ export default NoteIconToolbarSlotFill;
@@ -7,11 +7,11 @@ import { useState, createInterpolateElement } from '@wordpress/element';
7
7
  import {
8
8
  TextControl,
9
9
  ExternalLink,
10
- VisuallyHidden,
11
10
  ToggleControl,
12
11
  __experimentalVStack as VStack,
13
12
  CustomSelectControl,
14
13
  } from '@wordpress/components';
14
+ import { VisuallyHidden } from '@wordpress/ui';
15
15
 
16
16
  // So that we illustrate the different formats in the dropdown properly, show a date that is
17
17
  // somewhat recent, has a day greater than 12, and a month with more than three letters.
@@ -45,7 +45,9 @@ export default function DateFormatPicker( {
45
45
  spacing={ 4 }
46
46
  className="block-editor-date-format-picker"
47
47
  >
48
- <VisuallyHidden as="legend">{ __( 'Date format' ) }</VisuallyHidden>
48
+ <VisuallyHidden render={ <legend /> }>
49
+ { __( 'Date format' ) }
50
+ </VisuallyHidden>
49
51
  <ToggleControl
50
52
  label={ __( 'Default format' ) }
51
53
  help={ `${ __( 'Example:' ) } ${ dateI18n(
@@ -98,14 +98,14 @@ export default function ScaleTool( {
98
98
 
99
99
  return (
100
100
  <ToolsPanelItem
101
- label={ __( 'Scale' ) }
101
+ label={ _x( 'Scale', 'Image scaling options' ) }
102
102
  isShownByDefault={ isShownByDefault }
103
103
  hasValue={ () => displayValue !== defaultValue }
104
104
  onDeselect={ () => onChange( defaultValue ) }
105
105
  panelId={ panelId }
106
106
  >
107
107
  <ToggleGroupControl
108
- label={ __( 'Scale' ) }
108
+ label={ _x( 'Scale', 'Image scaling options' ) }
109
109
  isBlock
110
110
  help={ scaleHelp[ displayValue ] }
111
111
  value={ displayValue }
@@ -1,75 +1,178 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __, sprintf } from '@wordpress/i18n';
4
+ import { __ } from '@wordpress/i18n';
5
5
  import { check, chevronDown } from '@wordpress/icons';
6
- import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
6
+ import {
7
+ DropdownMenu,
8
+ MenuGroup,
9
+ MenuItem,
10
+ privateApis as componentsPrivateApis,
11
+ } from '@wordpress/components';
12
+ import { Stack } from '@wordpress/ui';
7
13
 
8
14
  /**
9
- * State control for managing block state styles (hover, focus, etc.).
10
- * Displays a dropdown menu to select between different states.
15
+ * Internal dependencies
16
+ */
17
+ import { unlock } from '../../lock-unlock';
18
+
19
+ const { Badge: WCBadge } = unlock( componentsPrivateApis );
20
+
21
+ /**
22
+ * State control for managing viewport and pseudo-state styles.
23
+ * Displays a dropdown menu with separate groups for each selector.
11
24
  *
12
- * @param {Object} props Component props.
13
- * @param {Array} props.states Array of available states with value and label.
14
- * @param {string} props.value Currently selected state value.
15
- * @param {Function} props.onChange Callback when selection changes.
25
+ * @param {Object} props Component props.
26
+ * @param {Array} props.viewportStates Array of available viewport states.
27
+ * @param {Array} props.pseudoStates Array of available pseudo states.
28
+ * @param {string} props.viewportValue Currently selected viewport value.
29
+ * @param {string} props.pseudoStateValue Currently selected pseudo state value.
30
+ * @param {Function} props.onChangeViewport Callback when viewport selection changes.
31
+ * @param {Function} props.onChangePseudoState Callback when pseudo state selection changes.
16
32
  * @return {Element|null} State control component.
17
33
  */
18
34
  export default function StateControl( {
19
- states = [],
20
- value = 'default',
21
- onChange,
35
+ viewportStates = [],
36
+ pseudoStates = [],
37
+ viewportValue = 'default',
38
+ pseudoStateValue = 'default',
39
+ onChangeViewport,
40
+ onChangePseudoState,
22
41
  } ) {
23
- if ( ! states || states.length === 0 ) {
42
+ if ( ! viewportStates.length && ! pseudoStates.length ) {
24
43
  return null;
25
44
  }
26
45
 
27
- const stateOptions = [
46
+ const viewportOptions = [
47
+ { label: __( 'Default' ), value: 'default' },
48
+ ...viewportStates.map( ( state ) => ( {
49
+ label: state.label,
50
+ value: state.value,
51
+ } ) ),
52
+ ];
53
+ const pseudoStateOptions = [
28
54
  { label: __( 'Default' ), value: 'default' },
29
- ...states.map( ( state ) => ( {
55
+ ...pseudoStates.map( ( state ) => ( {
30
56
  label: state.label,
31
57
  value: state.value,
32
58
  } ) ),
33
59
  ];
34
60
 
35
- const getCurrentStateLabel = () => {
36
- const currentOption = stateOptions.find(
37
- ( option ) => option.value === value
61
+ const hasViewportOptions = viewportStates.length > 0;
62
+ const hasPseudoStateOptions = pseudoStates.length > 0;
63
+ const triggerLabel = __( 'States' );
64
+ const activeStates = [];
65
+
66
+ if ( hasViewportOptions && viewportValue !== 'default' ) {
67
+ const selectedViewport = viewportOptions.find(
68
+ ( option ) => option.value === viewportValue
69
+ );
70
+
71
+ if ( selectedViewport ) {
72
+ activeStates.push( {
73
+ key: `viewport-${ selectedViewport.value }`,
74
+ label: selectedViewport.label,
75
+ } );
76
+ }
77
+ }
78
+
79
+ if ( hasPseudoStateOptions && pseudoStateValue !== 'default' ) {
80
+ const selectedPseudoState = pseudoStateOptions.find(
81
+ ( option ) => option.value === pseudoStateValue
38
82
  );
39
- return currentOption?.label || __( 'Default' );
40
- };
83
+
84
+ if ( selectedPseudoState ) {
85
+ activeStates.push( {
86
+ key: `pseudo-${ selectedPseudoState.value }`,
87
+ label: selectedPseudoState.label,
88
+ } );
89
+ }
90
+ }
41
91
 
42
92
  return (
43
- <DropdownMenu
44
- icon={ chevronDown }
45
- label={ sprintf(
46
- /* translators: %s: Current state (e.g. "Hover", "Focus") */
47
- __( 'State: %s' ),
48
- getCurrentStateLabel()
49
- ) }
50
- text={ getCurrentStateLabel() }
51
- toggleProps={ {
52
- size: 'compact',
53
- variant: 'tertiary',
54
- iconPosition: 'right',
55
- } }
93
+ <Stack
94
+ direction="column"
95
+ gap="sm"
96
+ align="flex-end"
97
+ className="block-editor-global-styles-state-control"
56
98
  >
57
- { ( { onClose } ) => (
58
- <MenuGroup label={ __( 'State' ) }>
59
- { stateOptions.map( ( option ) => (
60
- <MenuItem
61
- key={ option.value }
62
- onClick={ () => {
63
- onChange( option.value );
64
- onClose();
65
- } }
66
- icon={ value === option.value ? check : null }
67
- >
68
- { option.label }
69
- </MenuItem>
70
- ) ) }
71
- </MenuGroup>
72
- ) }
73
- </DropdownMenu>
99
+ <DropdownMenu
100
+ icon={ chevronDown }
101
+ label={ triggerLabel }
102
+ popoverProps={ {
103
+ placement: 'right-start',
104
+ } }
105
+ text={ triggerLabel }
106
+ toggleProps={ {
107
+ size: 'compact',
108
+ variant: 'tertiary',
109
+ iconPosition: 'right',
110
+ } }
111
+ >
112
+ { ( { onClose } ) => (
113
+ <>
114
+ { hasViewportOptions && (
115
+ <MenuGroup label={ __( 'Viewport' ) }>
116
+ { viewportOptions.map( ( option ) => (
117
+ <MenuItem
118
+ key={ `viewport-${ option.value }` }
119
+ onClick={ () => {
120
+ onChangeViewport?.( option.value );
121
+ if ( ! hasPseudoStateOptions ) {
122
+ onClose();
123
+ }
124
+ } }
125
+ icon={
126
+ viewportValue === option.value
127
+ ? check
128
+ : null
129
+ }
130
+ >
131
+ { option.label }
132
+ </MenuItem>
133
+ ) ) }
134
+ </MenuGroup>
135
+ ) }
136
+ { hasPseudoStateOptions && (
137
+ <MenuGroup label={ __( 'Pseudo state' ) }>
138
+ { pseudoStateOptions.map( ( option ) => (
139
+ <MenuItem
140
+ key={ `pseudo-${ option.value }` }
141
+ onClick={ () => {
142
+ onChangePseudoState?.(
143
+ option.value
144
+ );
145
+ if ( ! hasViewportOptions ) {
146
+ onClose();
147
+ }
148
+ } }
149
+ icon={
150
+ pseudoStateValue === option.value
151
+ ? check
152
+ : null
153
+ }
154
+ >
155
+ { option.label }
156
+ </MenuItem>
157
+ ) ) }
158
+ </MenuGroup>
159
+ ) }
160
+ </>
161
+ ) }
162
+ </DropdownMenu>
163
+ <Stack
164
+ className="block-editor-global-styles-state-control__badges"
165
+ direction="row"
166
+ justify="flex-start"
167
+ gap="xs"
168
+ wrap="wrap"
169
+ >
170
+ { activeStates.map( ( activeState ) => (
171
+ <WCBadge key={ activeState.key } intent="info">
172
+ { activeState.label }
173
+ </WCBadge>
174
+ ) ) }
175
+ </Stack>
176
+ </Stack>
74
177
  );
75
178
  }
@@ -23,6 +23,15 @@
23
23
  text-align: right;
24
24
  }
25
25
 
26
+ .block-editor-global-styles-state-control {
27
+ // Ensure alignment with block heading.
28
+ margin-top: -$grid-unit-05;
29
+ }
30
+
31
+ .block-editor-global-styles-state-control__badges {
32
+ min-height: $grid-unit-30;
33
+ }
34
+
26
35
  .block-editor-global-styles-filters-panel__dropdown,
27
36
  .block-editor-global-styles__shadow-dropdown {
28
37
  display: block;
@@ -54,7 +54,7 @@ export function getGradientSlugByValue( gradients, value ) {
54
54
  return gradient && gradient.slug;
55
55
  }
56
56
 
57
- export function __experimentalUseGradient( {
57
+ function useGradient( {
58
58
  gradientAttribute = 'gradient',
59
59
  customGradientAttribute = 'customGradient',
60
60
  } = {} ) {
@@ -120,3 +120,5 @@ export function __experimentalUseGradient( {
120
120
  }
121
121
  return { gradientClass, gradientValue, setGradient };
122
122
  }
123
+
124
+ export { useGradient as __experimentalUseGradient };
@@ -7,11 +7,8 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __, isRTL } from '@wordpress/i18n';
10
- import {
11
- VisuallyHidden,
12
- ToolbarButton,
13
- ToolbarGroup,
14
- } from '@wordpress/components';
10
+ import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
11
+ import { VisuallyHidden } from '@wordpress/ui';
15
12
  import {
16
13
  chevronLeft,
17
14
  chevronUp,