@wordpress/components 23.6.0 → 23.8.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 (484) hide show
  1. package/CHANGELOG.md +43 -4
  2. package/build/angle-picker-control/angle-circle.js +1 -4
  3. package/build/angle-picker-control/angle-circle.js.map +1 -1
  4. package/build/angle-picker-control/index.js +10 -22
  5. package/build/angle-picker-control/index.js.map +1 -1
  6. package/build/angle-picker-control/styles/angle-picker-control-styles.js +24 -15
  7. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  8. package/build/animate/index.js +27 -19
  9. package/build/animate/index.js.map +1 -1
  10. package/build/animate/types.js.map +1 -0
  11. package/build/box-control/axial-input-controls.js.map +1 -1
  12. package/build/color-picker/color-input.js +0 -4
  13. package/build/color-picker/color-input.js.map +1 -1
  14. package/build/color-picker/component.js +5 -4
  15. package/build/color-picker/component.js.map +1 -1
  16. package/build/color-picker/hex-input.js.map +1 -1
  17. package/build/color-picker/hsl-input.js.map +1 -1
  18. package/build/color-picker/input-with-slider.js.map +1 -1
  19. package/build/color-picker/legacy-adapter.js.map +1 -1
  20. package/build/color-picker/picker.js.map +1 -1
  21. package/build/color-picker/rgb-input.js.map +1 -1
  22. package/build/color-picker/use-deprecated-props.js.map +1 -1
  23. package/build/custom-gradient-picker/constants.js +1 -1
  24. package/build/custom-gradient-picker/constants.js.map +1 -1
  25. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  26. package/build/custom-gradient-picker/gradient-bar/control-points.js +9 -5
  27. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  28. package/build/custom-gradient-picker/gradient-bar/index.js +14 -9
  29. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  30. package/build/custom-gradient-picker/gradient-bar/utils.js +34 -54
  31. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  32. package/build/custom-gradient-picker/index.js +45 -16
  33. package/build/custom-gradient-picker/index.js.map +1 -1
  34. package/build/custom-gradient-picker/serializer.js +10 -4
  35. package/build/custom-gradient-picker/serializer.js.map +1 -1
  36. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  37. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  38. package/build/custom-gradient-picker/types.js +6 -0
  39. package/build/custom-gradient-picker/types.js.map +1 -0
  40. package/build/custom-gradient-picker/utils.js +17 -12
  41. package/build/custom-gradient-picker/utils.js.map +1 -1
  42. package/build/drop-zone/index.js +8 -8
  43. package/build/drop-zone/index.js.map +1 -1
  44. package/build/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  45. package/build/duotone-picker/color-list-picker/index.js.map +1 -0
  46. package/build/duotone-picker/color-list-picker/types.js +6 -0
  47. package/build/duotone-picker/color-list-picker/types.js.map +1 -0
  48. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  49. package/build/duotone-picker/duotone-picker.js +39 -2
  50. package/build/duotone-picker/duotone-picker.js.map +1 -1
  51. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  52. package/build/duotone-picker/index.js.map +1 -1
  53. package/build/duotone-picker/types.js +6 -0
  54. package/build/duotone-picker/types.js.map +1 -0
  55. package/build/duotone-picker/utils.js +13 -11
  56. package/build/duotone-picker/utils.js.map +1 -1
  57. package/build/form-token-field/index.js +9 -3
  58. package/build/form-token-field/index.js.map +1 -1
  59. package/build/gradient-picker/index.js +61 -9
  60. package/build/gradient-picker/index.js.map +1 -1
  61. package/build/gradient-picker/types.js +6 -0
  62. package/build/gradient-picker/types.js.map +1 -0
  63. package/build/index.js.map +1 -1
  64. package/build/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  65. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  66. package/build/mobile/keyboard-aware-flat-list/index.ios.js +100 -55
  67. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  68. package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +82 -0
  69. package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
  70. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +85 -0
  71. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
  72. package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +44 -0
  73. package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
  74. package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +53 -0
  75. package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
  76. package/build/navigator/navigator-provider/component.js +4 -2
  77. package/build/navigator/navigator-provider/component.js.map +1 -1
  78. package/build/navigator/navigator-screen/component.js +4 -3
  79. package/build/navigator/navigator-screen/component.js.map +1 -1
  80. package/build/palette-edit/index.js +1 -2
  81. package/build/palette-edit/index.js.map +1 -1
  82. package/build/private-apis.js.map +1 -1
  83. package/build/query-controls/author-select.js +2 -1
  84. package/build/query-controls/author-select.js.map +1 -1
  85. package/build/query-controls/category-select.js +3 -1
  86. package/build/query-controls/category-select.js.map +1 -1
  87. package/build/query-controls/index.js +7 -1
  88. package/build/query-controls/index.js.map +1 -1
  89. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  90. package/build/sandbox/index.native.js +129 -93
  91. package/build/sandbox/index.native.js.map +1 -1
  92. package/build/tab-panel/index.js +1 -1
  93. package/build/tab-panel/index.js.map +1 -1
  94. package/build/tools-panel/tools-panel/hook.js +45 -6
  95. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  96. package/build/utils/input/input-control.js +1 -1
  97. package/build/utils/input/input-control.js.map +1 -1
  98. package/build-module/angle-picker-control/angle-circle.js +1 -4
  99. package/build-module/angle-picker-control/angle-circle.js.map +1 -1
  100. package/build-module/angle-picker-control/index.js +12 -21
  101. package/build-module/angle-picker-control/index.js.map +1 -1
  102. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +20 -13
  103. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  104. package/build-module/animate/index.js +25 -17
  105. package/build-module/animate/index.js.map +1 -1
  106. package/build-module/box-control/axial-input-controls.js.map +1 -1
  107. package/build-module/color-picker/color-input.js +0 -4
  108. package/build-module/color-picker/color-input.js.map +1 -1
  109. package/build-module/color-picker/component.js +3 -3
  110. package/build-module/color-picker/component.js.map +1 -1
  111. package/build-module/color-picker/hex-input.js.map +1 -1
  112. package/build-module/color-picker/hsl-input.js.map +1 -1
  113. package/build-module/color-picker/input-with-slider.js.map +1 -1
  114. package/build-module/color-picker/legacy-adapter.js.map +1 -1
  115. package/build-module/color-picker/picker.js +4 -0
  116. package/build-module/color-picker/picker.js.map +1 -1
  117. package/build-module/color-picker/rgb-input.js.map +1 -1
  118. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  119. package/build-module/custom-gradient-picker/constants.js +1 -1
  120. package/build-module/custom-gradient-picker/constants.js.map +1 -1
  121. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  122. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +9 -4
  123. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  124. package/build-module/custom-gradient-picker/gradient-bar/index.js +14 -8
  125. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  126. package/build-module/custom-gradient-picker/gradient-bar/utils.js +34 -54
  127. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  128. package/build-module/custom-gradient-picker/index.js +44 -17
  129. package/build-module/custom-gradient-picker/index.js.map +1 -1
  130. package/build-module/custom-gradient-picker/serializer.js +10 -4
  131. package/build-module/custom-gradient-picker/serializer.js.map +1 -1
  132. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  133. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  134. package/build-module/custom-gradient-picker/types.js +2 -0
  135. package/build-module/custom-gradient-picker/utils.js +17 -12
  136. package/build-module/custom-gradient-picker/utils.js.map +1 -1
  137. package/build-module/drop-zone/index.js +8 -8
  138. package/build-module/drop-zone/index.js.map +1 -1
  139. package/build-module/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  140. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -0
  141. package/build-module/duotone-picker/color-list-picker/types.js +2 -0
  142. package/build-module/duotone-picker/color-list-picker/types.js.map +1 -0
  143. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  144. package/build-module/duotone-picker/duotone-picker.js +38 -2
  145. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  146. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  147. package/build-module/duotone-picker/index.js.map +1 -1
  148. package/build-module/duotone-picker/types.js +2 -0
  149. package/build-module/duotone-picker/types.js.map +1 -0
  150. package/build-module/duotone-picker/utils.js +17 -11
  151. package/build-module/duotone-picker/utils.js.map +1 -1
  152. package/build-module/form-token-field/index.js +9 -4
  153. package/build-module/form-token-field/index.js.map +1 -1
  154. package/build-module/gradient-picker/index.js +61 -10
  155. package/build-module/gradient-picker/index.js.map +1 -1
  156. package/build-module/gradient-picker/types.js +2 -0
  157. package/build-module/gradient-picker/types.js.map +1 -0
  158. package/build-module/index.js.map +1 -1
  159. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  160. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  161. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +97 -54
  162. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  163. package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +73 -0
  164. package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
  165. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +76 -0
  166. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
  167. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +33 -0
  168. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
  169. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +40 -0
  170. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
  171. package/build-module/navigator/navigator-provider/component.js +4 -2
  172. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  173. package/build-module/navigator/navigator-screen/component.js +4 -3
  174. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  175. package/build-module/palette-edit/index.js +1 -2
  176. package/build-module/palette-edit/index.js.map +1 -1
  177. package/build-module/private-apis.js.map +1 -1
  178. package/build-module/query-controls/author-select.js +2 -1
  179. package/build-module/query-controls/author-select.js.map +1 -1
  180. package/build-module/query-controls/category-select.js +3 -1
  181. package/build-module/query-controls/category-select.js.map +1 -1
  182. package/build-module/query-controls/index.js +7 -2
  183. package/build-module/query-controls/index.js.map +1 -1
  184. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  185. package/build-module/sandbox/index.native.js +121 -87
  186. package/build-module/sandbox/index.native.js.map +1 -1
  187. package/build-module/tab-panel/index.js +2 -2
  188. package/build-module/tab-panel/index.js.map +1 -1
  189. package/build-module/tools-panel/tools-panel/hook.js +45 -6
  190. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  191. package/build-module/utils/input/input-control.js +1 -1
  192. package/build-module/utils/input/input-control.js.map +1 -1
  193. package/build-style/style-rtl.css +41 -29
  194. package/build-style/style.css +43 -29
  195. package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
  196. package/build-types/angle-picker-control/index.d.ts.map +1 -1
  197. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +6 -1
  198. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
  199. package/build-types/animate/index.d.ts +27 -22
  200. package/build-types/animate/index.d.ts.map +1 -1
  201. package/build-types/animate/stories/index.d.ts +18 -0
  202. package/build-types/animate/stories/index.d.ts.map +1 -0
  203. package/build-types/animate/types.d.ts +30 -0
  204. package/build-types/animate/types.d.ts.map +1 -0
  205. package/build-types/border-box-control/border-box-control/hook.d.ts +2 -2
  206. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  207. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -2
  208. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  209. package/build-types/border-control/border-control/hook.d.ts +2 -2
  210. package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -2
  211. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  212. package/build-types/box-control/styles/box-control-styles.d.ts +5 -5
  213. package/build-types/button/deprecated.d.ts +2 -2
  214. package/build-types/card/card/hook.d.ts +2 -2
  215. package/build-types/card/card-body/hook.d.ts +2 -2
  216. package/build-types/card/card-divider/hook.d.ts +2 -2
  217. package/build-types/card/card-footer/hook.d.ts +2 -2
  218. package/build-types/card/card-header/hook.d.ts +2 -2
  219. package/build-types/card/card-media/hook.d.ts +2 -2
  220. package/build-types/color-palette/styles.d.ts +1 -1
  221. package/build-types/color-picker/color-input.d.ts +1 -11
  222. package/build-types/color-picker/color-input.d.ts.map +1 -1
  223. package/build-types/color-picker/component.d.ts +8 -9
  224. package/build-types/color-picker/component.d.ts.map +1 -1
  225. package/build-types/color-picker/hex-input.d.ts +1 -10
  226. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  227. package/build-types/color-picker/hsl-input.d.ts +1 -10
  228. package/build-types/color-picker/hsl-input.d.ts.map +1 -1
  229. package/build-types/color-picker/input-with-slider.d.ts +1 -9
  230. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  231. package/build-types/color-picker/legacy-adapter.d.ts +1 -3
  232. package/build-types/color-picker/legacy-adapter.d.ts.map +1 -1
  233. package/build-types/color-picker/picker.d.ts +4 -7
  234. package/build-types/color-picker/picker.d.ts.map +1 -1
  235. package/build-types/color-picker/rgb-input.d.ts +1 -10
  236. package/build-types/color-picker/rgb-input.d.ts.map +1 -1
  237. package/build-types/color-picker/stories/index.d.ts +19 -0
  238. package/build-types/color-picker/stories/index.d.ts.map +1 -0
  239. package/build-types/color-picker/styles.d.ts +5 -5
  240. package/build-types/color-picker/test/index.d.ts +2 -0
  241. package/build-types/color-picker/test/index.d.ts.map +1 -0
  242. package/build-types/color-picker/types.d.ts +105 -1
  243. package/build-types/color-picker/types.d.ts.map +1 -1
  244. package/build-types/color-picker/use-deprecated-props.d.ts +1 -44
  245. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  246. package/build-types/combobox-control/styles.d.ts +1 -1
  247. package/build-types/custom-gradient-picker/constants.d.ts +8 -8
  248. package/build-types/custom-gradient-picker/constants.d.ts.map +1 -1
  249. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts +7 -7
  250. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts.map +1 -1
  251. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts +5 -22
  252. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  253. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts +3 -9
  254. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
  255. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts +2 -0
  256. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts.map +1 -0
  257. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts +44 -92
  258. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts.map +1 -1
  259. package/build-types/custom-gradient-picker/index.d.ts +27 -6
  260. package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
  261. package/build-types/custom-gradient-picker/serializer.d.ts +9 -16
  262. package/build-types/custom-gradient-picker/serializer.d.ts.map +1 -1
  263. package/build-types/custom-gradient-picker/stories/index.d.ts +12 -0
  264. package/build-types/custom-gradient-picker/stories/index.d.ts.map +1 -0
  265. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +3 -2
  266. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts.map +1 -1
  267. package/build-types/custom-gradient-picker/test/serializer.d.ts +2 -0
  268. package/build-types/custom-gradient-picker/test/serializer.d.ts.map +1 -0
  269. package/build-types/custom-gradient-picker/types.d.ts +118 -0
  270. package/build-types/custom-gradient-picker/types.d.ts.map +1 -0
  271. package/build-types/custom-gradient-picker/utils.d.ts +12 -4
  272. package/build-types/custom-gradient-picker/utils.d.ts.map +1 -1
  273. package/build-types/date-time/date/styles.d.ts +2 -2
  274. package/build-types/date-time/date-time/styles.d.ts +1 -1
  275. package/build-types/date-time/time/styles.d.ts +8 -8
  276. package/build-types/drop-zone/index.d.ts.map +1 -1
  277. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -0
  278. package/build-types/{color-list-picker → duotone-picker/color-list-picker}/types.d.ts +2 -2
  279. package/build-types/duotone-picker/color-list-picker/types.d.ts.map +1 -0
  280. package/build-types/duotone-picker/custom-duotone-bar.d.ts +6 -0
  281. package/build-types/duotone-picker/custom-duotone-bar.d.ts.map +1 -0
  282. package/build-types/duotone-picker/duotone-picker.d.ts +38 -0
  283. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -0
  284. package/build-types/duotone-picker/duotone-swatch.d.ts +5 -0
  285. package/build-types/duotone-picker/duotone-swatch.d.ts.map +1 -0
  286. package/build-types/duotone-picker/index.d.ts +3 -0
  287. package/build-types/duotone-picker/index.d.ts.map +1 -0
  288. package/build-types/duotone-picker/stories/duotone-picker.d.ts +12 -0
  289. package/build-types/duotone-picker/stories/duotone-picker.d.ts.map +1 -0
  290. package/build-types/duotone-picker/stories/duotone-swatch.d.ts +14 -0
  291. package/build-types/duotone-picker/stories/duotone-swatch.d.ts.map +1 -0
  292. package/build-types/duotone-picker/types.d.ts +60 -0
  293. package/build-types/duotone-picker/types.d.ts.map +1 -0
  294. package/build-types/duotone-picker/utils.d.ts +52 -0
  295. package/build-types/duotone-picker/utils.d.ts.map +1 -0
  296. package/build-types/elevation/hook.d.ts +2 -2
  297. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  298. package/build-types/flex/flex/hook.d.ts +2 -2
  299. package/build-types/flex/flex-block/hook.d.ts +2 -2
  300. package/build-types/flex/flex-item/hook.d.ts +2 -2
  301. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
  302. package/build-types/form-token-field/index.d.ts.map +1 -1
  303. package/build-types/form-token-field/styles.d.ts +1 -1
  304. package/build-types/form-token-field/types.d.ts +6 -0
  305. package/build-types/form-token-field/types.d.ts.map +1 -1
  306. package/build-types/gradient-picker/index.d.ts +49 -11
  307. package/build-types/gradient-picker/index.d.ts.map +1 -1
  308. package/build-types/gradient-picker/stories/index.d.ts +14 -0
  309. package/build-types/gradient-picker/stories/index.d.ts.map +1 -0
  310. package/build-types/gradient-picker/types.d.ts +87 -0
  311. package/build-types/gradient-picker/types.d.ts.map +1 -0
  312. package/build-types/grid/hook.d.ts +2 -2
  313. package/build-types/h-stack/hook.d.ts +2 -2
  314. package/build-types/heading/hook.d.ts +2 -2
  315. package/build-types/index.d.ts +128 -0
  316. package/build-types/index.d.ts.map +1 -0
  317. package/build-types/input-control/styles/input-control-styles.d.ts +2 -2
  318. package/build-types/item-group/item/hook.d.ts +2 -2
  319. package/build-types/item-group/item-group/hook.d.ts +2 -2
  320. package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
  321. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
  322. package/build-types/navigator/navigator-button/hook.d.ts +2 -2
  323. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  324. package/build-types/navigator/navigator-screen/component.d.ts +1 -1
  325. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  326. package/build-types/navigator/stories/index.d.ts +1 -0
  327. package/build-types/navigator/stories/index.d.ts.map +1 -1
  328. package/build-types/navigator/types.d.ts +2 -2
  329. package/build-types/navigator/types.d.ts.map +1 -1
  330. package/build-types/number-control/index.d.ts +2 -2
  331. package/build-types/number-control/stories/index.d.ts +2 -2
  332. package/build-types/palette-edit/index.d.ts.map +1 -1
  333. package/build-types/palette-edit/styles.d.ts +3 -3
  334. package/build-types/popover/index.d.ts +1 -1
  335. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  336. package/build-types/private-apis.d.ts +2 -3
  337. package/build-types/private-apis.d.ts.map +1 -1
  338. package/build-types/query-controls/author-select.d.ts.map +1 -1
  339. package/build-types/query-controls/category-select.d.ts.map +1 -1
  340. package/build-types/query-controls/index.d.ts.map +1 -1
  341. package/build-types/range-control/index.d.ts +1 -1
  342. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  343. package/build-types/resizable-box/index.d.ts +1 -1
  344. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  345. package/build-types/resizable-box/resize-tooltip/utils.d.ts +1 -1
  346. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  347. package/build-types/resizable-box/stories/index.d.ts +2 -2
  348. package/build-types/scrollable/hook.d.ts +2 -2
  349. package/build-types/search-control/index.d.ts +1 -1
  350. package/build-types/search-control/stories/index.d.ts +2 -2
  351. package/build-types/spacer/hook.d.ts +2 -2
  352. package/build-types/spinner/index.d.ts +1 -1
  353. package/build-types/surface/hook.d.ts +2 -2
  354. package/build-types/tab-panel/index.d.ts.map +1 -1
  355. package/build-types/text/hook.d.ts +2 -2
  356. package/build-types/text-control/index.d.ts +1 -1
  357. package/build-types/toolbar/toolbar-button/index.d.ts +2 -2
  358. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  359. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  360. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  361. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  362. package/build-types/tools-panel/types.d.ts +1 -0
  363. package/build-types/tools-panel/types.d.ts.map +1 -1
  364. package/build-types/truncate/hook.d.ts +2 -2
  365. package/build-types/ui/control-group/hook.d.ts +2 -2
  366. package/build-types/ui/control-label/hook.d.ts +2 -2
  367. package/build-types/ui/form-group/form-group.d.ts +2 -2
  368. package/build-types/ui/form-group/use-form-group.d.ts +2 -2
  369. package/build-types/unit-control/index.d.ts +1 -1
  370. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  371. package/build-types/utils/input/input-control.d.ts.map +1 -1
  372. package/build-types/v-stack/hook.d.ts +2 -2
  373. package/package.json +20 -19
  374. package/src/angle-picker-control/angle-circle.tsx +0 -1
  375. package/src/angle-picker-control/index.tsx +14 -27
  376. package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +16 -9
  377. package/src/animate/index.tsx +75 -0
  378. package/src/animate/stories/index.tsx +102 -0
  379. package/src/animate/types.ts +32 -0
  380. package/src/border-box-control/stories/index.tsx +1 -1
  381. package/src/box-control/axial-input-controls.tsx +1 -1
  382. package/src/circular-option-picker/style.scss +10 -0
  383. package/src/color-indicator/style.scss +1 -0
  384. package/src/color-picker/README.md +2 -2
  385. package/src/color-picker/color-input.tsx +1 -12
  386. package/src/color-picker/component.tsx +9 -18
  387. package/src/color-picker/hex-input.tsx +2 -7
  388. package/src/color-picker/hsl-input.tsx +2 -7
  389. package/src/color-picker/input-with-slider.tsx +1 -9
  390. package/src/color-picker/legacy-adapter.tsx +1 -2
  391. package/src/color-picker/picker.tsx +5 -6
  392. package/src/color-picker/rgb-input.tsx +2 -7
  393. package/src/color-picker/stories/index.tsx +51 -0
  394. package/src/color-picker/test/{index.js → index.tsx} +36 -18
  395. package/src/color-picker/types.ts +128 -1
  396. package/src/color-picker/use-deprecated-props.ts +2 -53
  397. package/src/combobox-control/stories/index.tsx +1 -1
  398. package/src/custom-gradient-picker/{constants.js → constants.ts} +2 -2
  399. package/src/custom-gradient-picker/gradient-bar/{control-points.js → control-points.tsx} +171 -134
  400. package/src/custom-gradient-picker/gradient-bar/{index.js → index.tsx} +32 -10
  401. package/src/custom-gradient-picker/gradient-bar/test/{utils.js → utils.ts} +58 -31
  402. package/src/custom-gradient-picker/gradient-bar/utils.ts +193 -0
  403. package/src/custom-gradient-picker/{index.js → index.tsx} +63 -22
  404. package/src/custom-gradient-picker/serializer.ts +78 -0
  405. package/src/custom-gradient-picker/stories/index.tsx +45 -0
  406. package/src/custom-gradient-picker/style.scss +25 -4
  407. package/src/custom-gradient-picker/test/{serializer.js → serializer.ts} +39 -33
  408. package/src/custom-gradient-picker/types.ts +119 -0
  409. package/src/custom-gradient-picker/{utils.js → utils.ts} +37 -22
  410. package/src/custom-select-control/test/index.js +6 -4
  411. package/src/drop-zone/index.tsx +12 -8
  412. package/src/drop-zone/style.scss +1 -1
  413. package/src/{color-list-picker → duotone-picker/color-list-picker}/index.tsx +7 -6
  414. package/src/{color-list-picker → duotone-picker/color-list-picker}/types.ts +2 -2
  415. package/src/duotone-picker/{custom-duotone-bar.js → custom-duotone-bar.tsx} +7 -1
  416. package/src/duotone-picker/{duotone-picker.js → duotone-picker.tsx} +39 -2
  417. package/src/duotone-picker/{duotone-swatch.js → duotone-swatch.tsx} +2 -1
  418. package/src/duotone-picker/stories/{duotone-picker.js → duotone-picker.tsx} +15 -8
  419. package/src/duotone-picker/stories/{duotone-swatch.js → duotone-swatch.tsx} +9 -3
  420. package/src/duotone-picker/types.ts +61 -0
  421. package/src/duotone-picker/{utils.js → utils.ts} +29 -14
  422. package/src/flex/flex-item/README.md +1 -1
  423. package/src/form-token-field/README.md +1 -0
  424. package/src/form-token-field/index.tsx +10 -3
  425. package/src/form-token-field/style.scss +0 -7
  426. package/src/form-token-field/test/index.tsx +1 -0
  427. package/src/form-token-field/types.ts +6 -0
  428. package/src/gradient-picker/README.md +16 -23
  429. package/src/gradient-picker/{index.js → index.tsx} +70 -16
  430. package/src/gradient-picker/stories/{index.js → index.tsx} +19 -8
  431. package/src/gradient-picker/types.ts +89 -0
  432. package/src/item-group/test/index.js +5 -3
  433. package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  434. package/src/mobile/keyboard-aware-flat-list/index.ios.js +118 -67
  435. package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +203 -0
  436. package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-text-input.native.js +140 -0
  437. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +82 -0
  438. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +147 -0
  439. package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +87 -0
  440. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +105 -0
  441. package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +36 -0
  442. package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +54 -0
  443. package/src/navigator/navigator-provider/component.tsx +2 -0
  444. package/src/navigator/navigator-screen/component.tsx +5 -2
  445. package/src/navigator/stories/index.tsx +68 -0
  446. package/src/navigator/test/index.tsx +52 -0
  447. package/src/navigator/types.ts +2 -1
  448. package/src/palette-edit/index.tsx +4 -5
  449. package/src/query-controls/author-select.tsx +1 -0
  450. package/src/query-controls/category-select.tsx +1 -0
  451. package/src/query-controls/index.tsx +4 -2
  452. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  453. package/src/sandbox/index.native.js +139 -112
  454. package/src/slot-fill/test/slot.js +8 -6
  455. package/src/style.scss +1 -1
  456. package/src/tab-panel/index.tsx +7 -2
  457. package/src/tools-panel/test/index.tsx +86 -0
  458. package/src/tools-panel/tools-panel/hook.ts +44 -4
  459. package/src/tools-panel/types.ts +1 -0
  460. package/src/tooltip/test/index.js +251 -301
  461. package/src/utils/input/input-control.js +1 -0
  462. package/tsconfig.json +1 -3
  463. package/tsconfig.tsbuildinfo +1 -1
  464. package/build/color-list-picker/index.js.map +0 -1
  465. package/build-module/color-list-picker/index.js.map +0 -1
  466. package/build-types/color-list-picker/index.d.ts.map +0 -1
  467. package/build-types/color-list-picker/types.d.ts.map +0 -1
  468. package/src/animate/index.js +0 -60
  469. package/src/animate/stories/index.js +0 -53
  470. package/src/color-picker/stories/index.js +0 -41
  471. package/src/custom-gradient-picker/gradient-bar/utils.js +0 -189
  472. package/src/custom-gradient-picker/serializer.js +0 -48
  473. package/src/custom-gradient-picker/stories/index.js +0 -33
  474. /package/build/{color-list-picker → animate}/types.js +0 -0
  475. /package/build-module/{color-list-picker → animate}/types.js +0 -0
  476. /package/build-module/{color-list-picker → animate}/types.js.map +0 -0
  477. /package/{build/color-list-picker → build-module/custom-gradient-picker}/types.js.map +0 -0
  478. /package/build-types/{color-list-picker → duotone-picker/color-list-picker}/index.d.ts +0 -0
  479. /package/src/custom-gradient-picker/gradient-bar/{constants.js → constants.ts} +0 -0
  480. /package/src/custom-gradient-picker/styles/{custom-gradient-picker-styles.js → custom-gradient-picker-styles.tsx} +0 -0
  481. /package/src/{color-list-picker → duotone-picker/color-list-picker}/style.scss +0 -0
  482. /package/src/duotone-picker/{index.js → index.ts} +0 -0
  483. /package/src/{index.js → index.ts} +0 -0
  484. /package/src/{private-apis.js → private-apis.ts} +0 -0
@@ -1,373 +1,323 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen, act, waitFor } from '@testing-library/react';
4
+ import { render, screen, waitFor } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
10
  import Tooltip from '../';
11
+ import Button from '../../button';
12
+ import { TOOLTIP_DELAY } from '../index.js';
13
+
11
14
  /**
12
15
  * WordPress dependencies
13
16
  */
14
- import { TOOLTIP_DELAY } from '../index.js';
17
+ import { shortcutAriaLabel } from '@wordpress/keycodes';
15
18
 
16
- jest.useFakeTimers();
19
+ const props = {
20
+ text: 'tooltip text',
21
+ delay: TOOLTIP_DELAY,
22
+ };
17
23
 
18
24
  function getWrappingPopoverElement( element ) {
19
25
  return element.closest( '.components-popover' );
20
26
  }
21
27
 
22
28
  describe( 'Tooltip', () => {
23
- describe( '#render()', () => {
24
- it( 'should not render the tooltip if multiple children are passed', () => {
25
- render(
26
- <Tooltip text="Help text">
27
- <button>Button 1</button>
28
- <button>Button 2</button>
29
- </Tooltip>
30
- );
29
+ it( 'should not render the tooltip if multiple children are passed', async () => {
30
+ const user = userEvent.setup();
31
31
 
32
- const button = screen.getByText( 'Button 1' );
33
- act( () => button.focus() );
34
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
35
- } );
32
+ render(
33
+ <Tooltip { ...props }>
34
+ <Button>Button 1</Button>
35
+ <Button>Button 2</Button>
36
+ </Tooltip>
37
+ );
36
38
 
37
- it( 'should render children', () => {
38
- render(
39
- <Tooltip text="Help text">
40
- <button>Hover Me!</button>
41
- </Tooltip>
42
- );
39
+ await user.tab();
43
40
 
44
- expect(
45
- screen.getByRole( 'button', { name: 'Hover Me!' } )
46
- ).toBeVisible();
47
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
48
- } );
41
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
42
+ } );
49
43
 
50
- it( 'should render children with additional tooltip when focused', async () => {
51
- const mockOnFocus = jest.fn();
44
+ it( 'should not render the tooltip if there is no focus', () => {
45
+ render(
46
+ <Tooltip { ...props }>
47
+ <Button>Hover Me!</Button>
48
+ </Tooltip>
49
+ );
50
+
51
+ expect(
52
+ screen.getByRole( 'button', { name: 'Hover Me!' } )
53
+ ).toBeVisible();
54
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
55
+ } );
52
56
 
53
- render(
54
- <Tooltip text="Help text">
55
- <button onFocus={ mockOnFocus }>Hover Me!</button>
56
- </Tooltip>
57
- );
58
-
59
- const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
60
- expect( button ).toBeVisible();
61
-
62
- // Before focus, the tooltip is not shown.
63
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
64
-
65
- act( () => button.focus() );
66
-
67
- // Tooltip is shown after focusing the anchor.
68
- const tooltip = screen.getByText( 'Help text' );
69
- expect( tooltip ).toBeVisible();
70
- expect( mockOnFocus ).toHaveBeenCalledWith(
71
- expect.objectContaining( {
72
- type: 'focus',
73
- } )
74
- );
75
-
76
- // Wait for the tooltip element to be positioned (aligned with the button)
77
- await waitFor( () =>
78
- expect(
79
- getWrappingPopoverElement( tooltip )
80
- ).toBePositionedPopover()
81
- );
82
- } );
83
-
84
- it( 'should render children with additional tooltip when hovered', async () => {
85
- const user = userEvent.setup( {
86
- advanceTimers: jest.advanceTimersByTime,
87
- } );
88
-
89
- render(
90
- <Tooltip text="Help text">
91
- <button>Hover Me!</button>
92
- </Tooltip>
93
- );
57
+ it( 'should render the tooltip when focusing the tooltip anchor via tab', async () => {
58
+ const user = userEvent.setup();
94
59
 
95
- const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
96
- expect( button ).toBeVisible();
60
+ render(
61
+ <Tooltip { ...props }>
62
+ <Button>Hover Me!</Button>
63
+ </Tooltip>
64
+ );
97
65
 
98
- await user.hover( button );
66
+ await user.tab();
99
67
 
100
- // Tooltip hasn't appeared yet
101
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
68
+ expect(
69
+ screen.getByRole( 'button', { name: /Hover me!/i } )
70
+ ).toHaveFocus();
102
71
 
103
- act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
72
+ await waitFor( () =>
73
+ expect( screen.getByText( 'tooltip text' ) ).toBeVisible()
74
+ );
104
75
 
105
- // Tooltip shows after the delay
106
- const tooltip = screen.getByText( 'Help text' );
107
- expect( tooltip ).toBeVisible();
76
+ // Wait for the tooltip element to be positioned (aligned with the button)
77
+ await waitFor( () =>
78
+ expect(
79
+ getWrappingPopoverElement( screen.getByText( 'tooltip text' ) )
80
+ ).toBePositionedPopover()
81
+ );
82
+ } );
108
83
 
109
- // Wait for the tooltip element to be positioned (aligned with the button)
110
- await waitFor( () =>
111
- expect(
112
- getWrappingPopoverElement( tooltip )
113
- ).toBePositionedPopover()
114
- );
115
- } );
84
+ it( 'should render the tooltip when the tooltip anchor is hovered', async () => {
85
+ const user = userEvent.setup();
116
86
 
117
- it( 'should not show tooltip on focus as result of mouse click', async () => {
118
- const user = userEvent.setup( {
119
- advanceTimers: jest.advanceTimersByTime,
120
- } );
121
- const mockOnFocus = jest.fn();
87
+ render(
88
+ <Tooltip { ...props }>
89
+ <Button>Hover Me!</Button>
90
+ </Tooltip>
91
+ );
122
92
 
123
- render(
124
- <Tooltip text="Help text">
125
- <button onFocus={ mockOnFocus }>Hover Me!</button>
126
- </Tooltip>
127
- );
93
+ const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
128
94
 
129
- const button = screen.getByRole( 'button', { text: 'Hover Me!' } );
130
- expect( button ).toBeVisible();
95
+ await user.hover( button );
131
96
 
132
- await user.click( button );
97
+ await waitFor( () =>
98
+ expect( screen.getByText( 'tooltip text' ) ).toBeVisible()
99
+ );
133
100
 
134
- // Tooltip hasn't appeared yet
135
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
101
+ // Wait for the tooltip element to be positioned (aligned with the button)
102
+ await waitFor( () =>
103
+ expect(
104
+ getWrappingPopoverElement( screen.getByText( 'tooltip text' ) )
105
+ ).toBePositionedPopover()
106
+ );
136
107
 
137
- act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
108
+ await user.unhover( button );
138
109
 
139
- // Tooltip still hasn't appeared yet, even though the component was focused
140
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
141
- expect( mockOnFocus ).toHaveBeenCalledWith(
142
- expect.objectContaining( {
143
- type: 'focus',
144
- } )
145
- );
146
- } );
110
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
111
+ } );
147
112
 
148
- it( 'should respect custom delay prop when showing tooltip', async () => {
149
- const user = userEvent.setup( {
150
- advanceTimers: jest.advanceTimersByTime,
151
- } );
113
+ it( 'should not show tooltip on focus as result of mouse click', async () => {
114
+ const user = userEvent.setup();
152
115
 
153
- const TEST_DELAY = TOOLTIP_DELAY * 2;
154
- const mockOnMouseEnter = jest.fn();
155
- const mockOnFocus = jest.fn();
116
+ render(
117
+ <Tooltip { ...props }>
118
+ <Button>Hover Me!</Button>
119
+ </Tooltip>
120
+ );
156
121
 
157
- render(
158
- <Tooltip text="Help text" delay={ TEST_DELAY }>
159
- <button
160
- onMouseEnter={ mockOnMouseEnter }
161
- onFocus={ mockOnFocus }
162
- >
163
- <span>Hover Me!</span>
164
- </button>
165
- </Tooltip>
166
- );
122
+ await user.click( screen.getByRole( 'button', { text: 'Hover Me!' } ) );
167
123
 
168
- const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
169
- expect( button ).toBeVisible();
124
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
125
+ } );
170
126
 
171
- await user.hover( button );
127
+ it( 'should respect custom delay prop when showing tooltip', async () => {
128
+ const user = userEvent.setup( { delay: TOOLTIP_DELAY } );
129
+ const CUSTOM_DELAY = TOOLTIP_DELAY + 25;
172
130
 
173
- // Tooltip hasn't appeared yet
174
- expect( mockOnMouseEnter ).toHaveBeenCalledTimes( 1 );
131
+ render(
132
+ <Tooltip { ...props } delay={ CUSTOM_DELAY }>
133
+ <Button>Hover Me!</Button>
134
+ </Tooltip>
135
+ );
175
136
 
176
- // Advance by the usual TOOLTIP_DELAY
177
- act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
137
+ const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
178
138
 
179
- // Tooltip hasn't appeared yet after the usual delay
180
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
139
+ await user.hover( button );
181
140
 
182
- // Advance time again, so that we reach the full TEST_DELAY time
183
- act( () => jest.advanceTimersByTime( TEST_DELAY - TOOLTIP_DELAY ) );
141
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
184
142
 
185
- // Tooltip shows after TEST_DELAY time
186
- const tooltip = screen.getByText( 'Help text' );
187
- expect( tooltip ).toBeVisible();
143
+ await waitFor( () =>
144
+ expect( screen.getByText( 'tooltip text' ) ).toBeVisible()
145
+ );
188
146
 
189
- expect( mockOnFocus ).not.toHaveBeenCalled();
147
+ // Wait for the tooltip element to be positioned (aligned with the button)
148
+ await waitFor( () =>
149
+ expect(
150
+ getWrappingPopoverElement( screen.getByText( 'tooltip text' ) )
151
+ ).toBePositionedPopover()
152
+ );
153
+ } );
190
154
 
191
- // Wait for the tooltip element to be positioned (aligned with the button)
192
- await waitFor( () =>
193
- expect(
194
- getWrappingPopoverElement( tooltip )
195
- ).toBePositionedPopover()
196
- );
197
- } );
155
+ it( 'should show tooltip when an element is disabled', async () => {
156
+ const user = userEvent.setup();
198
157
 
199
- it( 'should show tooltip when an element is disabled', async () => {
200
- const user = userEvent.setup( {
201
- advanceTimers: jest.advanceTimersByTime,
202
- } );
158
+ render(
159
+ <Tooltip { ...props }>
160
+ <Button disabled>Click me</Button>
161
+ </Tooltip>
162
+ );
203
163
 
204
- const { container } = render(
205
- <Tooltip text="Show helpful text here">
206
- <button disabled>Click me</button>
207
- </Tooltip>
208
- );
164
+ const button = screen.getByRole( 'button', { name: /Click me/i } );
209
165
 
210
- const button = screen.getByRole( 'button', { name: 'Click me' } );
211
- expect( button ).toBeVisible();
212
- expect( button ).toBeDisabled();
166
+ expect( button ).toBeVisible();
167
+ expect( button ).toBeDisabled();
213
168
 
214
- // Note: this is testing for implementation details,
215
- // but couldn't find a better way.
216
- const buttonRect = button.getBoundingClientRect();
217
- // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
218
- const eventCatcher = container.querySelector( '.event-catcher' );
219
- const eventCatcherRect = eventCatcher.getBoundingClientRect();
220
- expect( buttonRect ).toEqual( eventCatcherRect );
169
+ await user.hover( button );
221
170
 
222
- await user.hover( eventCatcher );
171
+ await waitFor( () =>
172
+ expect( screen.getByText( 'tooltip text' ) ).toBeVisible()
173
+ );
223
174
 
224
- // Tooltip hasn't appeared yet
175
+ // Wait for the tooltip element to be positioned (aligned with the button)
176
+ await waitFor( () =>
225
177
  expect(
226
- screen.queryByText( 'Show helpful text here' )
227
- ).not.toBeInTheDocument();
228
-
229
- act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
230
-
231
- // Tooltip shows after the delay
232
- const tooltip = screen.getByText( 'Show helpful text here' );
233
- expect( tooltip ).toBeVisible();
234
-
235
- // Wait for the tooltip element to be positioned (aligned with the button)
236
- await waitFor( () =>
237
- expect(
238
- getWrappingPopoverElement( tooltip )
239
- ).toBePositionedPopover()
240
- );
241
- } );
242
-
243
- it( 'should not emit events back to children when they are disabled', async () => {
244
- const user = userEvent.setup( {
245
- advanceTimers: jest.advanceTimersByTime,
246
- } );
247
-
248
- const onClickMock = jest.fn();
249
- const { container } = render(
250
- <Tooltip text="Show helpful text here">
251
- <button disabled onClick={ onClickMock }>
252
- Click me
253
- </button>
178
+ getWrappingPopoverElement( screen.getByText( 'tooltip text' ) )
179
+ ).toBePositionedPopover()
180
+ );
181
+ } );
182
+
183
+ it( 'should not emit events back to children when they are disabled', async () => {
184
+ const user = userEvent.setup();
185
+ const onClickMock = jest.fn();
186
+
187
+ const { container } = render(
188
+ <Tooltip { ...props }>
189
+ <Button disabled onClick={ onClickMock }>
190
+ Click me
191
+ </Button>
192
+ </Tooltip>
193
+ );
194
+
195
+ // Note: this is testing for implementation details,
196
+ // but couldn't find a better way.
197
+ const buttonRect = screen
198
+ .getByRole( 'button', { name: 'Click me' } )
199
+ .getBoundingClientRect();
200
+ // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
201
+ const eventCatcher = container.querySelector( '.event-catcher' );
202
+ await user.click( eventCatcher );
203
+ expect( onClickMock ).not.toHaveBeenCalled();
204
+
205
+ const eventCatcherRect = eventCatcher.getBoundingClientRect();
206
+ expect( buttonRect ).toEqual( eventCatcherRect );
207
+ } );
208
+
209
+ it( 'should not show tooltip if the mouse leaves the tooltip anchor before set delay', async () => {
210
+ const user = userEvent.setup();
211
+ const onMouseEnterMock = jest.fn();
212
+ const onMouseLeaveMock = jest.fn();
213
+ const MOUSE_LEAVE_DELAY = TOOLTIP_DELAY - 200;
214
+
215
+ render(
216
+ <>
217
+ <Tooltip { ...props }>
218
+ <Button
219
+ onMouseEnter={ onMouseEnterMock }
220
+ onMouseLeave={ onMouseLeaveMock }
221
+ >
222
+ Hover Me!
223
+ </Button>
254
224
  </Tooltip>
255
- );
256
-
257
- // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
258
- const eventCatcher = container.querySelector( '.event-catcher' );
259
- await user.click( eventCatcher );
260
- expect( onClickMock ).not.toHaveBeenCalled();
261
- } );
262
-
263
- it( 'should not show tooltip if the mouse leaves the anchor before the tooltip has shown', async () => {
264
- const user = userEvent.setup( {
265
- advanceTimers: jest.advanceTimersByTime,
266
- } );
267
-
268
- const MOUSE_LEAVE_DELAY = TOOLTIP_DELAY - 200;
269
- const onMouseEnterMock = jest.fn();
270
- const onMouseLeaveMock = jest.fn();
271
-
272
- render(
273
- <>
274
- <Tooltip text="Help text">
275
- <button
276
- onMouseEnter={ onMouseEnterMock }
277
- onMouseLeave={ onMouseLeaveMock }
278
- >
279
- Hover Me!
280
- </button>
281
- </Tooltip>
282
- <button>Hover me instead!</button>
283
- </>
284
- );
285
-
286
- const externalButton = screen.getByRole( 'button', {
287
- name: 'Hover me instead!',
288
- } );
289
- const tooltipButton = screen.getByRole( 'button', {
225
+ <Button>Hover me instead!</Button>
226
+ </>
227
+ );
228
+
229
+ await user.hover(
230
+ screen.getByRole( 'button', {
290
231
  name: 'Hover Me!',
291
- } );
232
+ } )
233
+ );
292
234
 
293
- await user.hover( tooltipButton );
235
+ // Tooltip hasn't appeared yet
236
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
237
+ expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
294
238
 
295
- // Tooltip hasn't appeared yet
296
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
297
- expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
239
+ // Advance time by MOUSE_LEAVE_DELAY time
240
+ await new Promise( ( resolve ) =>
241
+ setTimeout( resolve, MOUSE_LEAVE_DELAY )
242
+ );
298
243
 
299
- // Advance time by MOUSE_LEAVE_DELAY time
300
- act( () => jest.advanceTimersByTime( MOUSE_LEAVE_DELAY ) );
244
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
301
245
 
302
- // Hover the other button, meaning that the mouse will leave the tooltip anchor
303
- await user.hover( externalButton );
246
+ // Hover the other button, meaning that the mouse will leave the tooltip anchor
247
+ await user.hover(
248
+ screen.getByRole( 'button', {
249
+ name: 'Hover me instead!',
250
+ } )
251
+ );
304
252
 
305
- // Tooltip still hasn't appeared yet
306
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
307
- expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
308
- expect( onMouseLeaveMock ).toHaveBeenCalledTimes( 1 );
253
+ // Tooltip still hasn't appeared yet
254
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
255
+ expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
256
+ expect( onMouseLeaveMock ).toHaveBeenCalledTimes( 1 );
309
257
 
310
- // Advance time again, so that we reach the full TOOLTIP_DELAY time
311
- act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
258
+ // Advance time again, so that we reach the full TOOLTIP_DELAY time
259
+ await new Promise( ( resolve ) =>
260
+ setTimeout( resolve, TOOLTIP_DELAY )
261
+ );
312
262
 
313
- // Tooltip won't show, since the mouse has left the anchor
314
- expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
315
- } );
263
+ // Tooltip won't show, since the mouse has left the tooltip anchor
264
+ expect( screen.queryByText( 'tooltip text' ) ).not.toBeInTheDocument();
265
+ } );
316
266
 
317
- it( 'should render the shortcut display text when a string is passed as the shortcut', async () => {
318
- const user = userEvent.setup( {
319
- advanceTimers: jest.advanceTimersByTime,
320
- } );
267
+ it( 'should render the shortcut display text when a string is passed as the shortcut', async () => {
268
+ const user = userEvent.setup();
321
269
 
322
- render(
323
- <Tooltip text="Help text" shortcut="shortcut text">
324
- <button>Hover Me!</button>
325
- </Tooltip>
326
- );
327
-
328
- const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
329
- await user.hover( button );
330
-
331
- const tooltip = await screen.findByText( 'shortcut text' );
332
- expect( tooltip ).toBeVisible();
333
-
334
- // Wait for the tooltip element to be positioned (aligned with the button)
335
- await waitFor( () =>
336
- expect(
337
- getWrappingPopoverElement( tooltip )
338
- ).toBePositionedPopover()
339
- );
340
- } );
341
-
342
- it( 'should render the shortcut display text and aria-label when an object is passed as the shortcut with the correct properties', async () => {
343
- const user = userEvent.setup( {
344
- advanceTimers: jest.advanceTimersByTime,
345
- } );
346
-
347
- render(
348
- <Tooltip
349
- text="Help text"
350
- shortcut={ {
351
- display: 'shortcut text',
352
- ariaLabel: 'shortcut label',
353
- } }
354
- >
355
- <button>Hover Me!</button>
356
- </Tooltip>
357
- );
270
+ render(
271
+ <Tooltip { ...props } shortcut="shortcut text">
272
+ <Button>Hover Me!</Button>
273
+ </Tooltip>
274
+ );
358
275
 
359
- const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
360
- await user.hover( button );
276
+ await user.hover( screen.getByRole( 'button', { name: 'Hover Me!' } ) );
361
277
 
362
- const tooltip = await screen.findByLabelText( 'shortcut label' );
363
- expect( tooltip ).toHaveTextContent( 'shortcut text' );
278
+ await waitFor( () =>
279
+ expect( screen.getByText( 'shortcut text' ) ).toBeVisible()
280
+ );
364
281
 
365
- // Wait for the tooltip element to be positioned (aligned with the button)
366
- await waitFor( () =>
367
- expect(
368
- getWrappingPopoverElement( tooltip )
369
- ).toBePositionedPopover()
370
- );
371
- } );
282
+ // Wait for the tooltip element to be positioned (aligned with the button)
283
+ await waitFor( () =>
284
+ expect(
285
+ getWrappingPopoverElement( screen.getByText( 'shortcut text' ) )
286
+ ).toBePositionedPopover()
287
+ );
288
+ } );
289
+
290
+ it( 'should render the shortcut display text and aria-label when an object is passed as the shortcut with the correct properties', async () => {
291
+ const user = userEvent.setup();
292
+
293
+ render(
294
+ <Tooltip
295
+ { ...props }
296
+ shortcut={ {
297
+ display: '⇧⌘,',
298
+ ariaLabel: shortcutAriaLabel.primaryShift( ',' ),
299
+ } }
300
+ >
301
+ <Button>Hover Me!</Button>
302
+ </Tooltip>
303
+ );
304
+
305
+ await user.hover( screen.getByRole( 'button', { name: 'Hover Me!' } ) );
306
+
307
+ await waitFor( () =>
308
+ expect( screen.getByText( '⇧⌘,' ) ).toBeVisible()
309
+ );
310
+
311
+ expect( screen.getByText( '⇧⌘,' ) ).toHaveAttribute(
312
+ 'aria-label',
313
+ 'Control + Shift + Comma'
314
+ );
315
+
316
+ // Wait for the tooltip element to be positioned (aligned with the button)
317
+ await waitFor( () =>
318
+ expect(
319
+ getWrappingPopoverElement( screen.getByText( '⇧⌘,' ) )
320
+ ).toBePositionedPopover()
321
+ );
372
322
  } );
373
323
  } );
@@ -12,6 +12,7 @@ import { COLORS } from '../colors-values';
12
12
  import { breakpoint } from '../breakpoint';
13
13
 
14
14
  export const inputControl = css`
15
+ display: block;
15
16
  font-family: ${ font( 'default.fontFamily' ) };
16
17
  padding: 6px 8px;
17
18
  ${ inputStyleNeutral };
package/tsconfig.json CHANGED
@@ -43,8 +43,6 @@
43
43
  "src/**/*.native.js",
44
44
  "src/**/react-native-*",
45
45
  "src/**/stories/**/*.js", // only exclude js files, tsx files should be checked
46
- "src/**/test/**/*.js", // only exclude js files, ts{x} files should be checked
47
- "src/index.js",
48
- "src/duotone-picker"
46
+ "src/**/test/**/*.js" // only exclude js files, ts{x} files should be checked
49
47
  ]
50
48
  }