@wordpress/components 28.4.0 → 28.5.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 (250) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/build/autocomplete/autocompleter-ui.js +2 -0
  3. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  4. package/build/base-control/styles/base-control-styles.js +8 -8
  5. package/build/base-control/styles/base-control-styles.js.map +1 -1
  6. package/build/border-control/styles.js +18 -24
  7. package/build/border-control/styles.js.map +1 -1
  8. package/build/color-palette/index.js +1 -1
  9. package/build/color-palette/index.js.map +1 -1
  10. package/build/custom-select-control/index.js +37 -14
  11. package/build/custom-select-control/index.js.map +1 -1
  12. package/build/custom-select-control/types.js.map +1 -1
  13. package/build/custom-select-control-v2/styles.js +9 -9
  14. package/build/custom-select-control-v2/styles.js.map +1 -1
  15. package/build/date-time/index.js +0 -7
  16. package/build/date-time/index.js.map +1 -1
  17. package/build/date-time/time/index.js +66 -38
  18. package/build/date-time/time/index.js.map +1 -1
  19. package/build/date-time/time/styles.js +11 -11
  20. package/build/date-time/time/styles.js.map +1 -1
  21. package/build/date-time/{time-input → time/time-input}/index.js +7 -7
  22. package/build/date-time/time/time-input/index.js.map +1 -0
  23. package/build/dropdown-menu-v2/styles.js +14 -14
  24. package/build/dropdown-menu-v2/styles.js.map +1 -1
  25. package/build/form-toggle/index.js +24 -24
  26. package/build/form-toggle/index.js.map +1 -1
  27. package/build/guide/index.js +2 -0
  28. package/build/guide/index.js.map +1 -1
  29. package/build/heading/types.js.map +1 -1
  30. package/build/modal/index.js +18 -11
  31. package/build/modal/index.js.map +1 -1
  32. package/build/query-controls/index.js +1 -1
  33. package/build/query-controls/index.js.map +1 -1
  34. package/build/radio-control/index.js +35 -8
  35. package/build/radio-control/index.js.map +1 -1
  36. package/build/radio-control/types.js.map +1 -1
  37. package/build/select-control/index.js +20 -8
  38. package/build/select-control/index.js.map +1 -1
  39. package/build/select-control/types.js.map +1 -1
  40. package/build/text-control/index.js +1 -0
  41. package/build/text-control/index.js.map +1 -1
  42. package/build/toggle-control/index.js +27 -25
  43. package/build/toggle-control/index.js.map +1 -1
  44. package/build/toggle-group-control/toggle-group-control/component.js +6 -1
  45. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  46. package/build/toggle-group-control/toggle-group-control-option/component.js +6 -1
  47. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  48. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +14 -14
  49. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  50. package/build/tooltip/index.js +12 -1
  51. package/build/tooltip/index.js.map +1 -1
  52. package/build/tree-select/index.js +1 -2
  53. package/build/tree-select/index.js.map +1 -1
  54. package/build/utils/config-values.js +6 -0
  55. package/build/utils/config-values.js.map +1 -1
  56. package/build-module/autocomplete/autocompleter-ui.js +2 -0
  57. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  58. package/build-module/base-control/styles/base-control-styles.js +8 -8
  59. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  60. package/build-module/border-control/styles.js +13 -23
  61. package/build-module/border-control/styles.js.map +1 -1
  62. package/build-module/color-palette/index.js +1 -1
  63. package/build-module/color-palette/index.js.map +1 -1
  64. package/build-module/custom-select-control/index.js +38 -14
  65. package/build-module/custom-select-control/index.js.map +1 -1
  66. package/build-module/custom-select-control/types.js.map +1 -1
  67. package/build-module/custom-select-control-v2/styles.js +9 -9
  68. package/build-module/custom-select-control-v2/styles.js.map +1 -1
  69. package/build-module/date-time/index.js +1 -2
  70. package/build-module/date-time/index.js.map +1 -1
  71. package/build-module/date-time/time/index.js +66 -38
  72. package/build-module/date-time/time/index.js.map +1 -1
  73. package/build-module/date-time/time/styles.js +11 -11
  74. package/build-module/date-time/time/styles.js.map +1 -1
  75. package/build-module/date-time/{time-input → time/time-input}/index.js +7 -7
  76. package/build-module/date-time/time/time-input/index.js.map +1 -0
  77. package/build-module/dropdown-menu-v2/styles.js +14 -14
  78. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  79. package/build-module/form-toggle/index.js +23 -22
  80. package/build-module/form-toggle/index.js.map +1 -1
  81. package/build-module/guide/index.js +2 -0
  82. package/build-module/guide/index.js.map +1 -1
  83. package/build-module/heading/types.js.map +1 -1
  84. package/build-module/modal/index.js +17 -11
  85. package/build-module/modal/index.js.map +1 -1
  86. package/build-module/query-controls/index.js +1 -1
  87. package/build-module/query-controls/index.js.map +1 -1
  88. package/build-module/radio-control/index.js +36 -10
  89. package/build-module/radio-control/index.js.map +1 -1
  90. package/build-module/radio-control/types.js.map +1 -1
  91. package/build-module/select-control/index.js +20 -8
  92. package/build-module/select-control/index.js.map +1 -1
  93. package/build-module/select-control/types.js.map +1 -1
  94. package/build-module/text-control/index.js +1 -0
  95. package/build-module/text-control/index.js.map +1 -1
  96. package/build-module/toggle-control/index.js +26 -24
  97. package/build-module/toggle-control/index.js.map +1 -1
  98. package/build-module/toggle-group-control/toggle-group-control/component.js +6 -1
  99. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  100. package/build-module/toggle-group-control/toggle-group-control-option/component.js +6 -1
  101. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  102. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +14 -14
  103. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  104. package/build-module/tooltip/index.js +13 -2
  105. package/build-module/tooltip/index.js.map +1 -1
  106. package/build-module/tree-select/index.js +1 -2
  107. package/build-module/tree-select/index.js.map +1 -1
  108. package/build-module/utils/config-values.js +6 -0
  109. package/build-module/utils/config-values.js.map +1 -1
  110. package/build-style/style-rtl.css +60 -24
  111. package/build-style/style.css +60 -24
  112. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  113. package/build-types/border-control/styles.d.ts.map +1 -1
  114. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  115. package/build-types/color-palette/index.d.ts.map +1 -1
  116. package/build-types/color-palette/styles.d.ts +2 -2
  117. package/build-types/color-picker/styles.d.ts +3 -1
  118. package/build-types/color-picker/styles.d.ts.map +1 -1
  119. package/build-types/custom-select-control/index.d.ts +2 -2
  120. package/build-types/custom-select-control/index.d.ts.map +1 -1
  121. package/build-types/custom-select-control/stories/index.story.d.ts +3 -3
  122. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  123. package/build-types/custom-select-control/types.d.ts +7 -7
  124. package/build-types/custom-select-control/types.d.ts.map +1 -1
  125. package/build-types/custom-select-control-v2/styles.d.ts +16 -28
  126. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
  127. package/build-types/date-time/date/styles.d.ts +2 -2
  128. package/build-types/date-time/index.d.ts +1 -2
  129. package/build-types/date-time/index.d.ts.map +1 -1
  130. package/build-types/date-time/stories/time.story.d.ts +5 -0
  131. package/build-types/date-time/stories/time.story.d.ts.map +1 -1
  132. package/build-types/date-time/time/index.d.ts +3 -0
  133. package/build-types/date-time/time/index.d.ts.map +1 -1
  134. package/build-types/date-time/time/styles.d.ts.map +1 -1
  135. package/build-types/date-time/{time-input → time/time-input}/index.d.ts +1 -1
  136. package/build-types/date-time/time/time-input/index.d.ts.map +1 -0
  137. package/build-types/date-time/time/time-input/test/index.d.ts.map +1 -0
  138. package/build-types/dropdown-menu-v2/styles.d.ts +24 -42
  139. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  140. package/build-types/form-toggle/index.d.ts +2 -5
  141. package/build-types/form-toggle/index.d.ts.map +1 -1
  142. package/build-types/guide/index.d.ts.map +1 -1
  143. package/build-types/heading/component.d.ts +1 -1
  144. package/build-types/heading/types.d.ts +1 -1
  145. package/build-types/heading/types.d.ts.map +1 -1
  146. package/build-types/modal/index.d.ts.map +1 -1
  147. package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
  148. package/build-types/palette-edit/styles.d.ts +2 -2
  149. package/build-types/query-controls/index.d.ts.map +1 -1
  150. package/build-types/radio-control/index.d.ts.map +1 -1
  151. package/build-types/radio-control/stories/index.story.d.ts +1 -0
  152. package/build-types/radio-control/stories/index.story.d.ts.map +1 -1
  153. package/build-types/radio-control/test/index.d.ts +2 -0
  154. package/build-types/radio-control/test/index.d.ts.map +1 -0
  155. package/build-types/radio-control/types.d.ts +4 -0
  156. package/build-types/radio-control/types.d.ts.map +1 -1
  157. package/build-types/select-control/index.d.ts +4 -1
  158. package/build-types/select-control/index.d.ts.map +1 -1
  159. package/build-types/select-control/stories/index.story.d.ts +9 -3
  160. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  161. package/build-types/select-control/types.d.ts +27 -27
  162. package/build-types/select-control/types.d.ts.map +1 -1
  163. package/build-types/tabs/styles.d.ts +8 -14
  164. package/build-types/tabs/styles.d.ts.map +1 -1
  165. package/build-types/text-control/index.d.ts +1 -0
  166. package/build-types/text-control/index.d.ts.map +1 -1
  167. package/build-types/toggle-control/index.d.ts +3 -9
  168. package/build-types/toggle-control/index.d.ts.map +1 -1
  169. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +6 -1
  170. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  171. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +6 -1
  172. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  173. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +14 -14
  174. package/build-types/tooltip/index.d.ts.map +1 -1
  175. package/build-types/tooltip/test/utils/index.d.ts +1 -5
  176. package/build-types/tooltip/test/utils/index.d.ts.map +1 -1
  177. package/build-types/tree-select/index.d.ts +1 -1
  178. package/build-types/tree-select/index.d.ts.map +1 -1
  179. package/build-types/utils/config-values.d.ts +6 -0
  180. package/package.json +20 -20
  181. package/src/alignment-matrix-control/test/index.tsx +1 -3
  182. package/src/autocomplete/autocompleter-ui.tsx +2 -0
  183. package/src/autocomplete/style.scss +0 -6
  184. package/src/base-control/styles/base-control-styles.ts +1 -1
  185. package/src/border-control/styles.ts +0 -5
  186. package/src/button/stories/e2e/index.story.tsx +103 -21
  187. package/src/button/style.scss +49 -21
  188. package/src/button/test/index.tsx +18 -40
  189. package/src/circular-option-picker/test/index.tsx +1 -4
  190. package/src/color-palette/index.tsx +22 -20
  191. package/src/composite/legacy/test/index.tsx +2 -18
  192. package/src/custom-select-control/index.tsx +55 -25
  193. package/src/custom-select-control/test/index.tsx +47 -30
  194. package/src/custom-select-control/types.ts +7 -7
  195. package/src/custom-select-control-v2/styles.ts +7 -6
  196. package/src/custom-select-control-v2/test/index.tsx +15 -19
  197. package/src/date-time/index.ts +1 -2
  198. package/src/date-time/stories/time.story.tsx +17 -0
  199. package/src/date-time/time/index.tsx +46 -16
  200. package/src/date-time/time/styles.ts +1 -0
  201. package/src/date-time/{time-input → time/time-input}/index.tsx +9 -9
  202. package/src/dropdown-menu-v2/styles.ts +18 -17
  203. package/src/dropdown-menu-v2/test/index.tsx +1 -4
  204. package/src/font-size-picker/test/index.tsx +50 -43
  205. package/src/form-toggle/index.tsx +23 -21
  206. package/src/guide/index.tsx +2 -0
  207. package/src/heading/types.ts +1 -4
  208. package/src/modal/index.tsx +21 -20
  209. package/src/placeholder/style.scss +11 -2
  210. package/src/query-controls/index.tsx +5 -1
  211. package/src/radio-control/index.tsx +48 -7
  212. package/src/radio-control/stories/index.story.tsx +23 -0
  213. package/src/radio-control/style.scss +26 -2
  214. package/src/radio-control/test/index.tsx +274 -0
  215. package/src/radio-control/types.ts +4 -0
  216. package/src/select-control/README.md +8 -1
  217. package/src/select-control/index.tsx +33 -22
  218. package/src/select-control/test/select-control.tsx +148 -4
  219. package/src/select-control/types.ts +70 -65
  220. package/src/tab-panel/test/index.tsx +1 -8
  221. package/src/tabs/test/index.tsx +68 -84
  222. package/src/text-control/README.md +1 -0
  223. package/src/text-control/index.tsx +1 -0
  224. package/src/text-control/style.scss +5 -0
  225. package/src/toggle-control/README.md +9 -0
  226. package/src/toggle-control/index.tsx +25 -22
  227. package/src/toggle-control/style.scss +2 -1
  228. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +6 -6
  229. package/src/toggle-group-control/test/index.tsx +0 -6
  230. package/src/toggle-group-control/toggle-group-control/README.md +13 -1
  231. package/src/toggle-group-control/toggle-group-control/component.tsx +6 -1
  232. package/src/toggle-group-control/toggle-group-control-option/README.md +6 -1
  233. package/src/toggle-group-control/toggle-group-control-option/component.tsx +6 -1
  234. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  235. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +14 -14
  236. package/src/tooltip/index.tsx +15 -2
  237. package/src/tooltip/test/index.tsx +0 -5
  238. package/src/tooltip/test/utils/index.tsx +5 -5
  239. package/src/tree-select/index.tsx +1 -2
  240. package/src/utils/config-values.js +6 -0
  241. package/tsconfig.tsbuildinfo +1 -1
  242. package/build/date-time/time-input/index.js.map +0 -1
  243. package/build-module/date-time/time-input/index.js.map +0 -1
  244. package/build-types/date-time/stories/time-input.story.d.ts +0 -12
  245. package/build-types/date-time/stories/time-input.story.d.ts.map +0 -1
  246. package/build-types/date-time/time-input/index.d.ts.map +0 -1
  247. package/build-types/date-time/time-input/test/index.d.ts.map +0 -1
  248. package/src/date-time/stories/time-input.story.tsx +0 -36
  249. /package/build-types/date-time/{time-input → time/time-input}/test/index.d.ts +0 -0
  250. /package/src/date-time/{time-input → time/time-input}/test/index.tsx +0 -0
@@ -23,27 +23,7 @@ import { HStack } from '../h-stack';
23
23
  import { useCx } from '../utils';
24
24
  import { space } from '../utils/space';
25
25
 
26
- /**
27
- * ToggleControl is used to generate a toggle user interface.
28
- *
29
- * ```jsx
30
- * import { ToggleControl } from '@wordpress/components';
31
- * import { useState } from '@wordpress/element';
32
- *
33
- * const MyToggleControl = () => {
34
- * const [ value, setValue ] = useState( false );
35
- *
36
- * return (
37
- * <ToggleControl
38
- * label="Fixed Background"
39
- * checked={ value }
40
- * onChange={ () => setValue( ( state ) => ! state ) }
41
- * />
42
- * );
43
- * };
44
- * ```
45
- */
46
- export function ToggleControl(
26
+ function UnforwardedToggleControl(
47
27
  {
48
28
  __nextHasNoMarginBottom,
49
29
  label,
@@ -121,4 +101,27 @@ export function ToggleControl(
121
101
  );
122
102
  }
123
103
 
124
- export default forwardRef( ToggleControl );
104
+ /**
105
+ * ToggleControl is used to generate a toggle user interface.
106
+ *
107
+ * ```jsx
108
+ * import { ToggleControl } from '@wordpress/components';
109
+ * import { useState } from '@wordpress/element';
110
+ *
111
+ * const MyToggleControl = () => {
112
+ * const [ value, setValue ] = useState( false );
113
+ *
114
+ * return (
115
+ * <ToggleControl
116
+ * __nextHasNoMarginBottom
117
+ * label="Fixed Background"
118
+ * checked={ value }
119
+ * onChange={ () => setValue( ( state ) => ! state ) }
120
+ * />
121
+ * );
122
+ * };
123
+ * ```
124
+ */
125
+ export const ToggleControl = forwardRef( UnforwardedToggleControl );
126
+
127
+ export default ToggleControl;
@@ -7,5 +7,6 @@
7
7
  }
8
8
 
9
9
  .components-toggle-control__help {
10
- margin-left: $toggle-width + $grid-unit-10;
10
+ display: inline-block;
11
+ margin-inline-start: $toggle-width + $grid-unit-10;
11
12
  }
@@ -33,7 +33,7 @@ exports[`ToggleGroupControl controlled should render correctly with icons 1`] =
33
33
  font-weight: 500;
34
34
  line-height: 1.4;
35
35
  text-transform: uppercase;
36
- display: inline-block;
36
+ display: block;
37
37
  margin-bottom: calc(4px * 2);
38
38
  padding: 0;
39
39
  }
@@ -258,7 +258,7 @@ exports[`ToggleGroupControl controlled should render correctly with icons 1`] =
258
258
  aria-checked="true"
259
259
  aria-label="Uppercase"
260
260
  class="emotion-12 components-toggle-group-control-option-base"
261
- data-active-item=""
261
+ data-active-item="true"
262
262
  data-value="uppercase"
263
263
  data-wp-c16t="true"
264
264
  data-wp-component="ToggleGroupControlOptionBase"
@@ -369,7 +369,7 @@ exports[`ToggleGroupControl controlled should render correctly with text options
369
369
  font-weight: 500;
370
370
  line-height: 1.4;
371
371
  text-transform: uppercase;
372
- display: inline-block;
372
+ display: block;
373
373
  margin-bottom: calc(4px * 2);
374
374
  padding: 0;
375
375
  }
@@ -593,7 +593,7 @@ exports[`ToggleGroupControl uncontrolled should render correctly with icons 1`]
593
593
  font-weight: 500;
594
594
  line-height: 1.4;
595
595
  text-transform: uppercase;
596
- display: inline-block;
596
+ display: block;
597
597
  margin-bottom: calc(4px * 2);
598
598
  padding: 0;
599
599
  }
@@ -818,7 +818,7 @@ exports[`ToggleGroupControl uncontrolled should render correctly with icons 1`]
818
818
  aria-checked="true"
819
819
  aria-label="Uppercase"
820
820
  class="emotion-12 components-toggle-group-control-option-base"
821
- data-active-item=""
821
+ data-active-item="true"
822
822
  data-value="uppercase"
823
823
  data-wp-c16t="true"
824
824
  data-wp-component="ToggleGroupControlOptionBase"
@@ -923,7 +923,7 @@ exports[`ToggleGroupControl uncontrolled should render correctly with text optio
923
923
  font-weight: 500;
924
924
  line-height: 1.4;
925
925
  text-transform: uppercase;
926
- display: inline-block;
926
+ display: block;
927
927
  margin-bottom: calc(4px * 2);
928
928
  padding: 0;
929
929
  }
@@ -341,11 +341,9 @@ describe.each( [
341
341
  name: 'R',
342
342
  } );
343
343
 
344
- await sleep();
345
344
  await press.Tab();
346
345
  expect( rigas ).toHaveFocus();
347
346
 
348
- await sleep();
349
347
  await press.Tab();
350
348
 
351
349
  // When in controlled mode, there is an additional "Reset" button.
@@ -372,7 +370,6 @@ describe.each( [
372
370
  </Component>
373
371
  );
374
372
 
375
- await sleep();
376
373
  await press.Tab();
377
374
 
378
375
  expect(
@@ -448,7 +445,6 @@ describe.each( [
448
445
  </Component>
449
446
  );
450
447
 
451
- await sleep();
452
448
  await press.Tab();
453
449
  expect(
454
450
  screen.getByRole( 'button', {
@@ -457,7 +453,6 @@ describe.each( [
457
453
  } )
458
454
  ).toHaveFocus();
459
455
 
460
- await sleep();
461
456
  await press.Tab();
462
457
  expect(
463
458
  screen.getByRole( 'button', {
@@ -490,7 +485,6 @@ describe.each( [
490
485
  </Component>
491
486
  );
492
487
 
493
- await sleep();
494
488
  await press.Tab();
495
489
 
496
490
  expect(
@@ -20,7 +20,12 @@ import {
20
20
 
21
21
  function Example() {
22
22
  return (
23
- <ToggleGroupControl label="my label" value="vertical" isBlock>
23
+ <ToggleGroupControl
24
+ label="my label"
25
+ value="vertical"
26
+ isBlock
27
+ __nextHasNoMarginBottom
28
+ >
24
29
  <ToggleGroupControlOption value="horizontal" label="Horizontal" />
25
30
  <ToggleGroupControlOption value="vertical" label="Vertical" />
26
31
  </ToggleGroupControl>
@@ -82,3 +87,10 @@ Callback when a segment is selected.
82
87
  The value of the `ToggleGroupControl`.
83
88
 
84
89
  - Required: No
90
+
91
+ ### `__nextHasNoMarginBottom`: `boolean`
92
+
93
+ Start opting into the new margin-free styles that will become the default in a future version.
94
+
95
+ - Required: No
96
+ - Default: `false`
@@ -115,7 +115,12 @@ function UnconnectedToggleGroupControl(
115
115
  *
116
116
  * function Example() {
117
117
  * return (
118
- * <ToggleGroupControl label="my label" value="vertical" isBlock>
118
+ * <ToggleGroupControl
119
+ * label="my label"
120
+ * value="vertical"
121
+ * isBlock
122
+ * __nextHasNoMarginBottom
123
+ * >
119
124
  * <ToggleGroupControlOption value="horizontal" label="Horizontal" />
120
125
  * <ToggleGroupControlOption value="vertical" label="Vertical" />
121
126
  * </ToggleGroupControl>
@@ -17,7 +17,12 @@ import {
17
17
 
18
18
  function Example() {
19
19
  return (
20
- <ToggleGroupControl label="my label" value="vertical" isBlock>
20
+ <ToggleGroupControl
21
+ label="my label"
22
+ value="vertical"
23
+ isBlock
24
+ __nextHasNoMarginBottom
25
+ >
21
26
  <ToggleGroupControlOption
22
27
  value="horizontal"
23
28
  label="Horizontal"
@@ -48,7 +48,12 @@ function UnforwardedToggleGroupControlOption(
48
48
  *
49
49
  * function Example() {
50
50
  * return (
51
- * <ToggleGroupControl label="my label" value="vertical" isBlock>
51
+ * <ToggleGroupControl
52
+ * label="my label"
53
+ * value="vertical"
54
+ * isBlock
55
+ * __nextHasNoMarginBottom
56
+ * >
52
57
  * <ToggleGroupControlOption value="horizontal" label="Horizontal" />
53
58
  * <ToggleGroupControlOption value="vertical" label="Vertical" />
54
59
  * </ToggleGroupControl>
@@ -17,7 +17,7 @@ import { formatLowercase, formatUppercase } from '@wordpress/icons';
17
17
 
18
18
  function Example() {
19
19
  return (
20
- <ToggleGroupControl>
20
+ <ToggleGroupControl __nextHasNoMarginBottom>
21
21
  <ToggleGroupControlOptionIcon
22
22
  value="uppercase"
23
23
  icon={ formatUppercase }
@@ -51,20 +51,20 @@ function UnforwardedToggleGroupControlOptionIcon(
51
51
  * import { formatLowercase, formatUppercase } from '@wordpress/icons';
52
52
  *
53
53
  * function Example() {
54
- * return (
55
- * <ToggleGroupControl>
56
- * <ToggleGroupControlOptionIcon
57
- * value="uppercase"
58
- * label="Uppercase"
59
- * icon={ formatUppercase }
60
- * />
61
- * <ToggleGroupControlOptionIcon
62
- * value="lowercase"
63
- * label="Lowercase"
64
- * icon={ formatLowercase }
65
- * />
66
- * </ToggleGroupControl>
67
- * );
54
+ * return (
55
+ * <ToggleGroupControl __nextHasNoMarginBottom>
56
+ * <ToggleGroupControlOptionIcon
57
+ * value="uppercase"
58
+ * label="Uppercase"
59
+ * icon={ formatUppercase }
60
+ * />
61
+ * <ToggleGroupControlOptionIcon
62
+ * value="lowercase"
63
+ * label="Lowercase"
64
+ * icon={ formatLowercase }
65
+ * />
66
+ * </ToggleGroupControl>
67
+ * );
68
68
  * }
69
69
  * ```
70
70
  */
@@ -13,6 +13,7 @@ import {
13
13
  useContext,
14
14
  createContext,
15
15
  forwardRef,
16
+ cloneElement,
16
17
  } from '@wordpress/element';
17
18
  import deprecated from '@wordpress/deprecated';
18
19
 
@@ -92,6 +93,7 @@ function UnforwardedTooltip(
92
93
  placement: computedPlacement,
93
94
  showTimeout: delay,
94
95
  } );
96
+ const mounted = tooltipStore.useState( 'mounted' );
95
97
 
96
98
  if ( isNestedInTooltip ) {
97
99
  return isOnlyChild ? (
@@ -101,12 +103,24 @@ function UnforwardedTooltip(
101
103
  );
102
104
  }
103
105
 
106
+ // TODO: this is a temporary workaround to minimize the effects of the
107
+ // Ariakit upgrade. Ariakit doesn't pass the `aria-describedby` prop to
108
+ // the tooltip anchor anymore since 0.4.0, so we need to add it manually.
109
+ // See: https://github.com/WordPress/gutenberg/pull/64066
110
+ function addDescribedById( element: React.ReactElement ) {
111
+ return describedById && mounted
112
+ ? cloneElement( element, { 'aria-describedby': describedById } )
113
+ : element;
114
+ }
115
+
104
116
  return (
105
117
  <TooltipInternalContext.Provider value={ CONTEXT_VALUE }>
106
118
  <Ariakit.TooltipAnchor
107
119
  onClick={ hideOnClick ? tooltipStore.hide : undefined }
108
120
  store={ tooltipStore }
109
- render={ isOnlyChild ? children : undefined }
121
+ render={
122
+ isOnlyChild ? addDescribedById( children ) : undefined
123
+ }
110
124
  ref={ ref }
111
125
  >
112
126
  { isOnlyChild ? undefined : children }
@@ -135,7 +149,6 @@ function UnforwardedTooltip(
135
149
  </TooltipInternalContext.Provider>
136
150
  );
137
151
  }
138
-
139
152
  export const Tooltip = forwardRef( UnforwardedTooltip );
140
153
 
141
154
  export default Tooltip;
@@ -59,7 +59,6 @@ describe( 'Tooltip', () => {
59
59
  screen.getByRole( 'button', { name: 'Second button' } )
60
60
  ).toBeVisible();
61
61
 
62
- await sleep();
63
62
  await press.Tab();
64
63
 
65
64
  expectTooltipToBeHidden();
@@ -145,7 +144,6 @@ describe( 'Tooltip', () => {
145
144
  );
146
145
 
147
146
  // Focus the anchor, tooltip should show
148
- await sleep();
149
147
  await press.Tab();
150
148
  expect(
151
149
  screen.getByRole( 'button', { name: 'Tooltip anchor' } )
@@ -153,7 +151,6 @@ describe( 'Tooltip', () => {
153
151
  await waitExpectTooltipToShow();
154
152
 
155
153
  // Focus the other button, tooltip should hide
156
- await sleep();
157
154
  await press.Tab();
158
155
  expect(
159
156
  screen.getByRole( 'button', { name: 'Focus me' } )
@@ -179,13 +176,11 @@ describe( 'Tooltip', () => {
179
176
  expect( anchor ).toHaveAttribute( 'aria-disabled', 'true' );
180
177
 
181
178
  // Focus anchor, tooltip should show
182
- await sleep();
183
179
  await press.Tab();
184
180
  expect( anchor ).toHaveFocus();
185
181
  await waitExpectTooltipToShow();
186
182
 
187
183
  // Focus another button, tooltip should hide
188
- await sleep();
189
184
  await press.Tab();
190
185
  expect(
191
186
  screen.getByRole( 'button', {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { UserEvent } from '@testing-library/user-event/dist/types/setup/setup';
4
+ import { click, press } from '@ariakit/test';
5
5
 
6
6
  // TODO: may need to be tested with Playwright; further context:
7
7
  // https://github.com/WordPress/gutenberg/pull/52133#issuecomment-1613691258
@@ -13,8 +13,8 @@ import type { UserEvent } from '@testing-library/user-event/dist/types/setup/set
13
13
  * to avoid leaking into other tests
14
14
  *
15
15
  */
16
- export default async function cleanupTooltip( user: UserEvent ) {
17
- await user.tab();
18
- await user.tab();
19
- await user.click( document.body );
16
+ export default async function cleanupTooltip() {
17
+ await press.Tab();
18
+ await press.Tab();
19
+ await click( document.body );
20
20
  }
@@ -37,7 +37,7 @@ function getSelectOptions(
37
37
  *
38
38
  * return (
39
39
  * <TreeSelect
40
- * __nextHasNoMarginBottom
40
+ * __nextHasNoMarginBottom
41
41
  * label="Parent page"
42
42
  * noOptionLabel="No parent page"
43
43
  * onChange={ ( newPage ) => setPage( newPage ) }
@@ -73,7 +73,6 @@ function getSelectOptions(
73
73
  * }
74
74
  * ```
75
75
  */
76
-
77
76
  export function TreeSelect( props: TreeSelectProps ) {
78
77
  const {
79
78
  label,
@@ -42,6 +42,12 @@ export default Object.assign( {}, CONTROL_PROPS, TOGGLE_GROUP_CONTROL_PROPS, {
42
42
  colorScrollbarThumbHover: 'rgba(0, 0, 0, 0.5)',
43
43
  colorScrollbarTrack: 'rgba(0, 0, 0, 0.04)',
44
44
  elevationIntensity: 1,
45
+ radiusXSmall: '1px',
46
+ radiusSmall: '2px',
47
+ radiusMedium: '4px',
48
+ radiusLarge: '8px',
49
+ radiusFull: '9999px',
50
+ radiusRound: '50%',
45
51
  radiusBlockUi: '2px',
46
52
  borderWidth: '1px',
47
53
  borderWidthFocus: '1.5px',