@wordpress/components 19.14.0 → 19.15.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 (506) hide show
  1. package/CHANGELOG.md +51 -12
  2. package/build/autocomplete/get-default-use-items.js +5 -1
  3. package/build/autocomplete/get-default-use-items.js.map +1 -1
  4. package/build/autocomplete/index.js +5 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/border-control/border-control/hook.js.map +1 -1
  7. package/build/box-control/index.js +1 -1
  8. package/build/box-control/index.js.map +1 -1
  9. package/build/color-picker/hex-input.js +5 -4
  10. package/build/color-picker/hex-input.js.map +1 -1
  11. package/build/color-picker/index.native.js +35 -34
  12. package/build/color-picker/index.native.js.map +1 -1
  13. package/build/color-picker/input-with-slider.js +3 -1
  14. package/build/color-picker/input-with-slider.js.map +1 -1
  15. package/build/color-picker/styles.js +31 -43
  16. package/build/color-picker/styles.js.map +1 -1
  17. package/build/color-picker/use-deprecated-props.js +22 -31
  18. package/build/color-picker/use-deprecated-props.js.map +1 -1
  19. package/build/combobox-control/index.js +14 -6
  20. package/build/combobox-control/index.js.map +1 -1
  21. package/build/combobox-control/styles.js +39 -0
  22. package/build/combobox-control/styles.js.map +1 -0
  23. package/build/dropdown-menu/index.js +5 -5
  24. package/build/dropdown-menu/index.js.map +1 -1
  25. package/build/dropdown-menu/index.native.js +5 -5
  26. package/build/dropdown-menu/index.native.js.map +1 -1
  27. package/build/elevation/hook.js +5 -5
  28. package/build/elevation/hook.js.map +1 -1
  29. package/build/external-link/index.js +1 -3
  30. package/build/external-link/index.js.map +1 -1
  31. package/build/focal-point-picker/grid.js +2 -7
  32. package/build/focal-point-picker/grid.js.map +1 -1
  33. package/build/focal-point-picker/index.native.js +8 -8
  34. package/build/focal-point-picker/index.native.js.map +1 -1
  35. package/build/focal-point-picker/tooltip/index.native.js +11 -12
  36. package/build/focal-point-picker/tooltip/index.native.js.map +1 -1
  37. package/build/form-token-field/index.js +22 -7
  38. package/build/form-token-field/index.js.map +1 -1
  39. package/build/form-token-field/styles.js +40 -0
  40. package/build/form-token-field/styles.js.map +1 -0
  41. package/build/form-token-field/suggestions-list.js +2 -7
  42. package/build/form-token-field/suggestions-list.js.map +1 -1
  43. package/build/grid/component.js +7 -8
  44. package/build/grid/component.js.map +1 -1
  45. package/build/grid/hook.js +1 -5
  46. package/build/grid/hook.js.map +1 -1
  47. package/build/grid/index.js.map +1 -1
  48. package/build/grid/utils.js +4 -7
  49. package/build/grid/utils.js.map +1 -1
  50. package/build/h-stack/component.js +5 -9
  51. package/build/h-stack/component.js.map +1 -1
  52. package/build/h-stack/hook.js +8 -10
  53. package/build/h-stack/hook.js.map +1 -1
  54. package/build/h-stack/index.js.map +1 -1
  55. package/build/h-stack/utils.js +7 -18
  56. package/build/h-stack/utils.js.map +1 -1
  57. package/build/icon/index.js.map +1 -1
  58. package/build/menu-item/index.js +1 -3
  59. package/build/menu-item/index.js.map +1 -1
  60. package/build/mobile/focal-point-settings-panel/index.native.js +1 -1
  61. package/build/mobile/focal-point-settings-panel/index.native.js.map +1 -1
  62. package/build/mobile/image/index.native.js +4 -2
  63. package/build/mobile/image/index.native.js.map +1 -1
  64. package/build/modal/index.js +17 -3
  65. package/build/modal/index.js.map +1 -1
  66. package/build/navigation/index.js +4 -1
  67. package/build/navigation/index.js.map +1 -1
  68. package/build/navigation/item/base.js +3 -0
  69. package/build/navigation/item/base.js.map +1 -1
  70. package/build/popover/index.js +4 -4
  71. package/build/popover/index.js.map +1 -1
  72. package/build/range-control/index.js +54 -40
  73. package/build/range-control/index.js.map +1 -1
  74. package/build/range-control/input-range.js +5 -7
  75. package/build/range-control/input-range.js.map +1 -1
  76. package/build/range-control/mark.js +5 -7
  77. package/build/range-control/mark.js.map +1 -1
  78. package/build/range-control/rail.js +10 -16
  79. package/build/range-control/rail.js.map +1 -1
  80. package/build/range-control/styles/range-control-styles.js +62 -62
  81. package/build/range-control/styles/range-control-styles.js.map +1 -1
  82. package/build/range-control/tooltip.js +5 -7
  83. package/build/range-control/tooltip.js.map +1 -1
  84. package/build/range-control/types.js +6 -0
  85. package/build/range-control/types.js.map +1 -0
  86. package/build/range-control/utils.js +22 -29
  87. package/build/range-control/utils.js.map +1 -1
  88. package/build/resizable-box/resize-tooltip/utils.js +2 -7
  89. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  90. package/build/scrollable/component.js +7 -8
  91. package/build/scrollable/component.js.map +1 -1
  92. package/build/scrollable/hook.js +0 -8
  93. package/build/scrollable/hook.js.map +1 -1
  94. package/build/scrollable/index.js.map +1 -1
  95. package/build/scrollable/styles.js +7 -7
  96. package/build/scrollable/styles.js.map +1 -1
  97. package/build/shortcut/index.js +2 -8
  98. package/build/shortcut/index.js.map +1 -1
  99. package/build/slot-fill/index.native.js +6 -8
  100. package/build/slot-fill/index.native.js.map +1 -1
  101. package/build/slot-fill/provider.js +4 -8
  102. package/build/slot-fill/provider.js.map +1 -1
  103. package/build/slot-fill/slot.js +4 -8
  104. package/build/slot-fill/slot.js.map +1 -1
  105. package/build/spacer/component.js.map +1 -1
  106. package/build/spacer/hook.js +2 -2
  107. package/build/spacer/hook.js.map +1 -1
  108. package/build/spacer/index.js.map +1 -1
  109. package/build/text-highlight/index.js +22 -5
  110. package/build/text-highlight/index.js.map +1 -1
  111. package/build/text-highlight/types.js +6 -0
  112. package/build/text-highlight/types.js.map +1 -0
  113. package/build/tip/index.js +5 -11
  114. package/build/tip/index.js.map +1 -1
  115. package/build/tip/types.js +6 -0
  116. package/build/tip/types.js.map +1 -0
  117. package/build/toolbar-group/index.js +3 -3
  118. package/build/toolbar-group/index.js.map +1 -1
  119. package/build/tree-select/index.js +2 -2
  120. package/build/tree-select/index.js.map +1 -1
  121. package/build/ui/utils/get-valid-children.js.map +1 -1
  122. package/build/visually-hidden/component.js +12 -13
  123. package/build/visually-hidden/component.js.map +1 -1
  124. package/build/visually-hidden/index.js.map +1 -1
  125. package/build/visually-hidden/styles.js +3 -1
  126. package/build/visually-hidden/styles.js.map +1 -1
  127. package/build/visually-hidden/types.js +6 -0
  128. package/build/visually-hidden/types.js.map +1 -0
  129. package/build-module/autocomplete/get-default-use-items.js +3 -2
  130. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  131. package/build-module/autocomplete/index.js +3 -2
  132. package/build-module/autocomplete/index.js.map +1 -1
  133. package/build-module/border-control/border-control/hook.js.map +1 -1
  134. package/build-module/box-control/index.js +1 -1
  135. package/build-module/box-control/index.js.map +1 -1
  136. package/build-module/color-picker/hex-input.js +4 -3
  137. package/build-module/color-picker/hex-input.js.map +1 -1
  138. package/build-module/color-picker/index.native.js +36 -35
  139. package/build-module/color-picker/index.native.js.map +1 -1
  140. package/build-module/color-picker/input-with-slider.js +3 -1
  141. package/build-module/color-picker/input-with-slider.js.map +1 -1
  142. package/build-module/color-picker/styles.js +23 -40
  143. package/build-module/color-picker/styles.js.map +1 -1
  144. package/build-module/color-picker/use-deprecated-props.js +22 -31
  145. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  146. package/build-module/combobox-control/index.js +14 -7
  147. package/build-module/combobox-control/index.js.map +1 -1
  148. package/build-module/combobox-control/styles.js +27 -0
  149. package/build-module/combobox-control/styles.js.map +1 -0
  150. package/build-module/dropdown-menu/index.js +5 -4
  151. package/build-module/dropdown-menu/index.js.map +1 -1
  152. package/build-module/dropdown-menu/index.native.js +5 -4
  153. package/build-module/dropdown-menu/index.native.js.map +1 -1
  154. package/build-module/elevation/hook.js +5 -5
  155. package/build-module/elevation/hook.js.map +1 -1
  156. package/build-module/external-link/index.js +1 -2
  157. package/build-module/external-link/index.js.map +1 -1
  158. package/build-module/focal-point-picker/grid.js +2 -6
  159. package/build-module/focal-point-picker/grid.js.map +1 -1
  160. package/build-module/focal-point-picker/index.native.js +8 -8
  161. package/build-module/focal-point-picker/index.native.js.map +1 -1
  162. package/build-module/focal-point-picker/tooltip/index.native.js +11 -12
  163. package/build-module/focal-point-picker/tooltip/index.native.js.map +1 -1
  164. package/build-module/form-token-field/index.js +20 -6
  165. package/build-module/form-token-field/index.js.map +1 -1
  166. package/build-module/form-token-field/styles.js +28 -0
  167. package/build-module/form-token-field/styles.js.map +1 -0
  168. package/build-module/form-token-field/suggestions-list.js +2 -7
  169. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  170. package/build-module/grid/component.js +7 -8
  171. package/build-module/grid/component.js.map +1 -1
  172. package/build-module/grid/hook.js +1 -5
  173. package/build-module/grid/hook.js.map +1 -1
  174. package/build-module/grid/index.js.map +1 -1
  175. package/build-module/grid/utils.js +3 -8
  176. package/build-module/grid/utils.js.map +1 -1
  177. package/build-module/h-stack/component.js +3 -7
  178. package/build-module/h-stack/component.js.map +1 -1
  179. package/build-module/h-stack/hook.js +10 -12
  180. package/build-module/h-stack/hook.js.map +1 -1
  181. package/build-module/h-stack/index.js.map +1 -1
  182. package/build-module/h-stack/utils.js +7 -19
  183. package/build-module/h-stack/utils.js.map +1 -1
  184. package/build-module/icon/index.js.map +1 -1
  185. package/build-module/menu-item/index.js +1 -2
  186. package/build-module/menu-item/index.js.map +1 -1
  187. package/build-module/mobile/focal-point-settings-panel/index.native.js +2 -2
  188. package/build-module/mobile/focal-point-settings-panel/index.native.js.map +1 -1
  189. package/build-module/mobile/image/index.native.js +3 -2
  190. package/build-module/mobile/image/index.native.js.map +1 -1
  191. package/build-module/modal/index.js +19 -5
  192. package/build-module/modal/index.js.map +1 -1
  193. package/build-module/navigation/index.js +4 -1
  194. package/build-module/navigation/index.js.map +1 -1
  195. package/build-module/navigation/item/base.js +3 -0
  196. package/build-module/navigation/item/base.js.map +1 -1
  197. package/build-module/popover/index.js +4 -4
  198. package/build-module/popover/index.js.map +1 -1
  199. package/build-module/range-control/index.js +54 -40
  200. package/build-module/range-control/index.js.map +1 -1
  201. package/build-module/range-control/input-range.js +5 -6
  202. package/build-module/range-control/input-range.js.map +1 -1
  203. package/build-module/range-control/mark.js +5 -6
  204. package/build-module/range-control/mark.js.map +1 -1
  205. package/build-module/range-control/rail.js +10 -15
  206. package/build-module/range-control/rail.js.map +1 -1
  207. package/build-module/range-control/styles/range-control-styles.js +62 -64
  208. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  209. package/build-module/range-control/tooltip.js +5 -6
  210. package/build-module/range-control/tooltip.js.map +1 -1
  211. package/build-module/range-control/types.js +2 -0
  212. package/build-module/range-control/types.js.map +1 -0
  213. package/build-module/range-control/utils.js +22 -29
  214. package/build-module/range-control/utils.js.map +1 -1
  215. package/build-module/resizable-box/resize-tooltip/utils.js +2 -6
  216. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  217. package/build-module/scrollable/component.js +7 -8
  218. package/build-module/scrollable/component.js.map +1 -1
  219. package/build-module/scrollable/hook.js +0 -8
  220. package/build-module/scrollable/hook.js.map +1 -1
  221. package/build-module/scrollable/index.js.map +1 -1
  222. package/build-module/scrollable/styles.js +7 -7
  223. package/build-module/scrollable/styles.js.map +1 -1
  224. package/build-module/shortcut/index.js +2 -7
  225. package/build-module/shortcut/index.js.map +1 -1
  226. package/build-module/slot-fill/index.native.js +6 -7
  227. package/build-module/slot-fill/index.native.js.map +1 -1
  228. package/build-module/slot-fill/provider.js +4 -7
  229. package/build-module/slot-fill/provider.js.map +1 -1
  230. package/build-module/slot-fill/slot.js +4 -7
  231. package/build-module/slot-fill/slot.js.map +1 -1
  232. package/build-module/spacer/component.js.map +1 -1
  233. package/build-module/spacer/hook.js +2 -2
  234. package/build-module/spacer/hook.js.map +1 -1
  235. package/build-module/spacer/index.js.map +1 -1
  236. package/build-module/text-highlight/index.js +23 -6
  237. package/build-module/text-highlight/index.js.map +1 -1
  238. package/build-module/text-highlight/types.js +2 -0
  239. package/build-module/text-highlight/types.js.map +1 -0
  240. package/build-module/tip/index.js +6 -10
  241. package/build-module/tip/index.js.map +1 -1
  242. package/build-module/tip/types.js +2 -0
  243. package/build-module/tip/types.js.map +1 -0
  244. package/build-module/toolbar-group/index.js +3 -2
  245. package/build-module/toolbar-group/index.js.map +1 -1
  246. package/build-module/tree-select/index.js +3 -3
  247. package/build-module/tree-select/index.js.map +1 -1
  248. package/build-module/ui/utils/get-valid-children.js.map +1 -1
  249. package/build-module/visually-hidden/component.js +12 -13
  250. package/build-module/visually-hidden/component.js.map +1 -1
  251. package/build-module/visually-hidden/index.js.map +1 -1
  252. package/build-module/visually-hidden/styles.js +3 -1
  253. package/build-module/visually-hidden/styles.js.map +1 -1
  254. package/build-module/visually-hidden/types.js +2 -0
  255. package/build-module/visually-hidden/types.js.map +1 -0
  256. package/build-style/style-rtl.css +13 -19
  257. package/build-style/style.css +13 -19
  258. package/build-types/border-control/border-control/hook.d.ts +1 -1
  259. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  260. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  261. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  262. package/build-types/color-picker/styles.d.ts +30 -31
  263. package/build-types/color-picker/styles.d.ts.map +1 -1
  264. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  265. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  266. package/build-types/external-link/index.d.ts.map +1 -1
  267. package/build-types/form-token-field/index.d.ts.map +1 -1
  268. package/build-types/form-token-field/styles.d.ts +14 -0
  269. package/build-types/form-token-field/styles.d.ts.map +1 -0
  270. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  271. package/build-types/form-token-field/types.d.ts +7 -0
  272. package/build-types/form-token-field/types.d.ts.map +1 -1
  273. package/build-types/grid/component.d.ts +3 -3
  274. package/build-types/grid/component.d.ts.map +1 -1
  275. package/build-types/grid/hook.d.ts +5 -2
  276. package/build-types/grid/hook.d.ts.map +1 -1
  277. package/build-types/grid/index.d.ts +2 -2
  278. package/build-types/grid/index.d.ts.map +1 -1
  279. package/build-types/grid/stories/index.d.ts +9 -0
  280. package/build-types/grid/stories/index.d.ts.map +1 -0
  281. package/build-types/grid/test/grid.d.ts +2 -0
  282. package/build-types/grid/test/grid.d.ts.map +1 -0
  283. package/build-types/grid/types.d.ts +16 -15
  284. package/build-types/grid/types.d.ts.map +1 -1
  285. package/build-types/grid/utils.d.ts +50 -69
  286. package/build-types/grid/utils.d.ts.map +1 -1
  287. package/build-types/h-stack/component.d.ts +3 -2
  288. package/build-types/h-stack/component.d.ts.map +1 -1
  289. package/build-types/h-stack/hook.d.ts +5 -3
  290. package/build-types/h-stack/hook.d.ts.map +1 -1
  291. package/build-types/h-stack/index.d.ts +2 -2
  292. package/build-types/h-stack/index.d.ts.map +1 -1
  293. package/build-types/h-stack/stories/index.d.ts +9 -0
  294. package/build-types/h-stack/stories/index.d.ts.map +1 -0
  295. package/build-types/h-stack/test/index.d.ts +2 -0
  296. package/build-types/h-stack/test/index.d.ts.map +1 -0
  297. package/build-types/h-stack/utils.d.ts +8 -4
  298. package/build-types/h-stack/utils.d.ts.map +1 -1
  299. package/build-types/icon/index.d.ts +1 -1
  300. package/build-types/icon/index.d.ts.map +1 -1
  301. package/build-types/menu-item/index.d.ts.map +1 -1
  302. package/build-types/popover/index.d.ts.map +1 -1
  303. package/build-types/range-control/index.d.ts +54 -29
  304. package/build-types/range-control/index.d.ts.map +1 -1
  305. package/build-types/range-control/input-range.d.ts +7 -10
  306. package/build-types/range-control/input-range.d.ts.map +1 -1
  307. package/build-types/range-control/mark.d.ts +4 -7
  308. package/build-types/range-control/mark.d.ts.map +1 -1
  309. package/build-types/range-control/rail.d.ts +4 -9
  310. package/build-types/range-control/rail.d.ts.map +1 -1
  311. package/build-types/range-control/stories/index.d.ts +48 -0
  312. package/build-types/range-control/stories/index.d.ts.map +1 -0
  313. package/build-types/range-control/styles/range-control-styles.d.ts +32 -40
  314. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  315. package/build-types/range-control/test/index.d.ts +2 -0
  316. package/build-types/range-control/test/index.d.ts.map +1 -0
  317. package/build-types/range-control/tooltip.d.ts +4 -11
  318. package/build-types/range-control/tooltip.d.ts.map +1 -1
  319. package/build-types/range-control/types.d.ts +302 -0
  320. package/build-types/range-control/types.d.ts.map +1 -0
  321. package/build-types/range-control/utils.d.ts +15 -33
  322. package/build-types/range-control/utils.d.ts.map +1 -1
  323. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  324. package/build-types/scrollable/component.d.ts +3 -3
  325. package/build-types/scrollable/component.d.ts.map +1 -1
  326. package/build-types/scrollable/hook.d.ts +5 -2
  327. package/build-types/scrollable/hook.d.ts.map +1 -1
  328. package/build-types/scrollable/index.d.ts +2 -2
  329. package/build-types/scrollable/index.d.ts.map +1 -1
  330. package/build-types/scrollable/stories/index.d.ts +9 -0
  331. package/build-types/scrollable/stories/index.d.ts.map +1 -0
  332. package/build-types/scrollable/styles.d.ts +7 -7
  333. package/build-types/scrollable/styles.d.ts.map +1 -1
  334. package/build-types/scrollable/test/index.d.ts +2 -0
  335. package/build-types/scrollable/test/index.d.ts.map +1 -0
  336. package/build-types/scrollable/types.d.ts +9 -6
  337. package/build-types/scrollable/types.d.ts.map +1 -1
  338. package/build-types/shortcut/index.d.ts.map +1 -1
  339. package/build-types/slot-fill/provider.d.ts.map +1 -1
  340. package/build-types/slot-fill/slot.d.ts.map +1 -1
  341. package/build-types/spacer/component.d.ts +2 -2
  342. package/build-types/spacer/component.d.ts.map +1 -1
  343. package/build-types/spacer/hook.d.ts +2 -2
  344. package/build-types/spacer/hook.d.ts.map +1 -1
  345. package/build-types/spacer/index.d.ts +1 -1
  346. package/build-types/spacer/index.d.ts.map +1 -1
  347. package/build-types/spacer/test/index.d.ts +2 -0
  348. package/build-types/spacer/test/index.d.ts.map +1 -0
  349. package/build-types/spacer/types.d.ts +41 -29
  350. package/build-types/spacer/types.d.ts.map +1 -1
  351. package/build-types/text-highlight/index.d.ts +23 -0
  352. package/build-types/text-highlight/index.d.ts.map +1 -0
  353. package/build-types/text-highlight/stories/index.d.ts +12 -0
  354. package/build-types/text-highlight/stories/index.d.ts.map +1 -0
  355. package/build-types/text-highlight/test/index.d.ts +2 -0
  356. package/build-types/text-highlight/test/index.d.ts.map +1 -0
  357. package/build-types/text-highlight/types.d.ts +17 -0
  358. package/build-types/text-highlight/types.d.ts.map +1 -0
  359. package/build-types/tip/index.d.ts +5 -14
  360. package/build-types/tip/index.d.ts.map +1 -1
  361. package/build-types/tip/stories/index.d.ts +12 -0
  362. package/build-types/tip/stories/index.d.ts.map +1 -0
  363. package/build-types/tip/types.d.ts +11 -0
  364. package/build-types/tip/types.d.ts.map +1 -0
  365. package/build-types/ui/form-group/form-group.d.ts +1 -1
  366. package/build-types/ui/form-group/types.d.ts +1 -1
  367. package/build-types/ui/form-group/types.d.ts.map +1 -1
  368. package/build-types/ui/form-group/use-form-group.d.ts +3 -3
  369. package/build-types/ui/utils/get-valid-children.d.ts +2 -2
  370. package/build-types/ui/utils/get-valid-children.d.ts.map +1 -1
  371. package/build-types/visually-hidden/component.d.ts +8 -10
  372. package/build-types/visually-hidden/component.d.ts.map +1 -1
  373. package/build-types/visually-hidden/index.d.ts +1 -1
  374. package/build-types/visually-hidden/index.d.ts.map +1 -1
  375. package/build-types/visually-hidden/stories/index.d.ts +14 -0
  376. package/build-types/visually-hidden/stories/index.d.ts.map +1 -0
  377. package/build-types/visually-hidden/styles.d.ts +5 -2
  378. package/build-types/visually-hidden/styles.d.ts.map +1 -1
  379. package/build-types/visually-hidden/test/index.d.ts +2 -0
  380. package/build-types/visually-hidden/test/index.d.ts.map +1 -0
  381. package/build-types/visually-hidden/types.d.ts +11 -0
  382. package/build-types/visually-hidden/types.d.ts.map +1 -0
  383. package/package.json +17 -17
  384. package/src/autocomplete/get-default-use-items.js +3 -2
  385. package/src/autocomplete/index.js +3 -2
  386. package/src/border-control/border-control/hook.ts +1 -1
  387. package/src/box-control/index.js +1 -1
  388. package/src/button/README.md +1 -1
  389. package/src/color-picker/hex-input.tsx +3 -2
  390. package/src/color-picker/index.native.js +20 -27
  391. package/src/color-picker/input-with-slider.tsx +2 -0
  392. package/src/color-picker/styles.ts +0 -5
  393. package/src/color-picker/use-deprecated-props.ts +24 -43
  394. package/src/combobox-control/index.js +15 -7
  395. package/src/combobox-control/stories/index.js +3 -2
  396. package/src/combobox-control/style.scss +1 -1
  397. package/src/combobox-control/styles.ts +27 -0
  398. package/src/dropdown-menu/index.js +3 -4
  399. package/src/dropdown-menu/index.native.js +3 -5
  400. package/src/elevation/hook.js +3 -3
  401. package/src/external-link/index.tsx +10 -4
  402. package/src/focal-point-picker/grid.js +2 -5
  403. package/src/focal-point-picker/index.native.js +8 -8
  404. package/src/focal-point-picker/tooltip/index.native.js +10 -11
  405. package/src/form-token-field/index.tsx +45 -24
  406. package/src/form-token-field/style.scss +2 -7
  407. package/src/form-token-field/styles.ts +32 -0
  408. package/src/form-token-field/suggestions-list.tsx +2 -4
  409. package/src/form-token-field/types.ts +7 -0
  410. package/src/grid/README.md +33 -19
  411. package/src/grid/{component.js → component.tsx} +13 -9
  412. package/src/grid/{hook.js → hook.ts} +5 -5
  413. package/src/grid/{index.js → index.ts} +0 -0
  414. package/src/grid/stories/index.tsx +72 -0
  415. package/src/grid/test/{grid.js → grid.tsx} +4 -4
  416. package/src/grid/types.ts +16 -17
  417. package/src/grid/{utils.js → utils.ts} +9 -7
  418. package/src/guide/style.scss +1 -0
  419. package/src/h-stack/{component.js → component.tsx} +8 -8
  420. package/src/h-stack/{hook.js → hook.tsx} +21 -16
  421. package/src/h-stack/{index.js → index.ts} +0 -0
  422. package/src/h-stack/stories/index.tsx +92 -0
  423. package/src/h-stack/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  424. package/src/h-stack/test/{index.js → index.tsx} +0 -0
  425. package/src/h-stack/{utils.js → utils.ts} +14 -14
  426. package/src/higher-order/navigate-regions/README.md +4 -1
  427. package/src/icon/index.tsx +1 -1
  428. package/src/menu-item/index.js +1 -2
  429. package/src/mobile/focal-point-settings-panel/index.native.js +2 -2
  430. package/src/mobile/image/index.native.js +3 -2
  431. package/src/modal/index.js +21 -2
  432. package/src/modal/stories/index.js +17 -1
  433. package/src/modal/style.scss +9 -18
  434. package/src/navigation/index.js +3 -0
  435. package/src/navigation/item/base.js +2 -1
  436. package/src/popover/README.md +2 -2
  437. package/src/popover/index.js +7 -4
  438. package/src/range-control/README.md +107 -79
  439. package/src/range-control/{index.js → index.tsx} +78 -48
  440. package/src/range-control/{input-range.js → input-range.tsx} +11 -7
  441. package/src/range-control/{mark.js → mark.tsx} +15 -9
  442. package/src/range-control/{rail.js → rail.tsx} +40 -23
  443. package/src/range-control/stories/index.tsx +244 -0
  444. package/src/range-control/styles/{range-control-styles.js → range-control-styles.ts} +28 -24
  445. package/src/range-control/test/index.tsx +311 -0
  446. package/src/range-control/{tooltip.js → tooltip.tsx} +19 -14
  447. package/src/range-control/types.ts +326 -0
  448. package/src/range-control/utils.ts +132 -0
  449. package/src/resizable-box/resize-tooltip/utils.ts +2 -3
  450. package/src/scrollable/README.md +14 -8
  451. package/src/scrollable/{component.js → component.tsx} +13 -10
  452. package/src/scrollable/{hook.js → hook.ts} +5 -7
  453. package/src/scrollable/{index.js → index.ts} +0 -0
  454. package/src/scrollable/stories/{index.js → index.tsx} +29 -34
  455. package/src/scrollable/{styles.js → styles.ts} +0 -0
  456. package/src/scrollable/test/__snapshots__/{index.js.snap → index.tsx.snap} +1 -0
  457. package/src/scrollable/test/index.tsx +34 -0
  458. package/src/scrollable/types.ts +10 -5
  459. package/src/select-control/test/select-control.tsx +22 -15
  460. package/src/shortcut/index.js +2 -7
  461. package/src/slot-fill/index.native.js +2 -7
  462. package/src/slot-fill/provider.js +3 -7
  463. package/src/slot-fill/slot.js +21 -24
  464. package/src/spacer/README.md +43 -37
  465. package/src/spacer/component.tsx +2 -2
  466. package/src/spacer/hook.ts +4 -2
  467. package/src/spacer/index.ts +1 -1
  468. package/src/spacer/test/__snapshots__/{index.js.snap → index.tsx.snap} +1 -0
  469. package/src/spacer/test/index.tsx +149 -0
  470. package/src/spacer/types.ts +41 -29
  471. package/src/tab-panel/README.md +1 -1
  472. package/src/text-highlight/README.md +6 -6
  473. package/src/text-highlight/index.tsx +49 -0
  474. package/src/text-highlight/stories/index.tsx +33 -0
  475. package/src/text-highlight/test/index.tsx +93 -0
  476. package/src/text-highlight/types.ts +16 -0
  477. package/src/tip/index.tsx +22 -0
  478. package/src/tip/stories/index.tsx +33 -0
  479. package/src/tip/types.ts +11 -0
  480. package/src/toolbar-group/index.js +1 -2
  481. package/src/tree-select/index.tsx +3 -3
  482. package/src/ui/form-group/types.ts +1 -1
  483. package/src/ui/utils/get-valid-children.ts +4 -2
  484. package/src/visually-hidden/{component.js → component.tsx} +23 -15
  485. package/src/visually-hidden/{index.js → index.ts} +0 -0
  486. package/src/visually-hidden/stories/index.tsx +66 -0
  487. package/src/visually-hidden/{styles.js → styles.ts} +6 -2
  488. package/src/visually-hidden/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  489. package/src/visually-hidden/test/index.tsx +17 -0
  490. package/src/visually-hidden/types.ts +11 -0
  491. package/tsconfig.json +1 -0
  492. package/tsconfig.tsbuildinfo +1 -1
  493. package/src/grid/stories/index.js +0 -49
  494. package/src/h-stack/stories/index.js +0 -22
  495. package/src/range-control/stories/index.js +0 -180
  496. package/src/range-control/test/index.js +0 -320
  497. package/src/range-control/utils.js +0 -131
  498. package/src/scrollable/test/index.js +0 -31
  499. package/src/spacer/test/index.js +0 -146
  500. package/src/text-highlight/index.js +0 -28
  501. package/src/text-highlight/stories/index.js +0 -28
  502. package/src/text-highlight/test/index.js +0 -120
  503. package/src/tip/index.js +0 -24
  504. package/src/tip/stories/index.js +0 -26
  505. package/src/visually-hidden/stories/index.js +0 -42
  506. package/src/visually-hidden/test/index.js +0 -19
@@ -0,0 +1,132 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { MouseEventHandler } from 'react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useCallback, useRef, useEffect, useState } from '@wordpress/element';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { useControlledState } from '../utils/hooks';
15
+ import { clamp } from '../utils/math';
16
+
17
+ import type {
18
+ UseControlledRangeValueArgs,
19
+ UseDebouncedHoverInteractionArgs,
20
+ } from './types';
21
+
22
+ const noop = () => {};
23
+
24
+ /**
25
+ * A float supported clamp function for a specific value.
26
+ *
27
+ * @param value The value to clamp.
28
+ * @param min The minimum value.
29
+ * @param max The maximum value.
30
+ *
31
+ * @return A (float) number
32
+ */
33
+ export function floatClamp( value: number | null, min: number, max: number ) {
34
+ if ( typeof value !== 'number' ) {
35
+ return null;
36
+ }
37
+
38
+ return parseFloat( `${ clamp( value, min, max ) }` );
39
+ }
40
+
41
+ /**
42
+ * Hook to store a clamped value, derived from props.
43
+ *
44
+ * @param settings
45
+ * @return The controlled value and the value setter.
46
+ */
47
+ export function useControlledRangeValue(
48
+ settings: UseControlledRangeValueArgs
49
+ ) {
50
+ const { min, max, value: valueProp, initial } = settings;
51
+ const [ state, setInternalState ] = useControlledState(
52
+ floatClamp( valueProp, min, max ),
53
+ { initial, fallback: null }
54
+ );
55
+
56
+ const setState = useCallback(
57
+ ( nextValue: number | null ) => {
58
+ if ( nextValue === null ) {
59
+ setInternalState( null );
60
+ } else {
61
+ setInternalState( floatClamp( nextValue, min, max ) );
62
+ }
63
+ },
64
+ [ min, max ]
65
+ );
66
+
67
+ // `state` can't be an empty string because we specified a fallback value of
68
+ // `null` in `useControlledState`
69
+ return [ state as Exclude< typeof state, '' >, setState ] as const;
70
+ }
71
+
72
+ /**
73
+ * Hook to encapsulate the debouncing "hover" to better handle the showing
74
+ * and hiding of the Tooltip.
75
+ *
76
+ * @param settings
77
+ * @return Bound properties for use on a React.Node.
78
+ */
79
+ export function useDebouncedHoverInteraction(
80
+ settings: UseDebouncedHoverInteractionArgs
81
+ ) {
82
+ const {
83
+ onHide = noop,
84
+ onMouseLeave = noop as MouseEventHandler,
85
+ onMouseMove = noop as MouseEventHandler,
86
+ onShow = noop,
87
+ timeout = 300,
88
+ } = settings;
89
+
90
+ const [ show, setShow ] = useState( false );
91
+ const timeoutRef = useRef< number | undefined >();
92
+
93
+ const setDebouncedTimeout = useCallback(
94
+ ( callback ) => {
95
+ window.clearTimeout( timeoutRef.current );
96
+
97
+ timeoutRef.current = window.setTimeout( callback, timeout );
98
+ },
99
+ [ timeout ]
100
+ );
101
+
102
+ const handleOnMouseMove = useCallback( ( event ) => {
103
+ onMouseMove( event );
104
+
105
+ setDebouncedTimeout( () => {
106
+ if ( ! show ) {
107
+ setShow( true );
108
+ onShow();
109
+ }
110
+ } );
111
+ }, [] );
112
+
113
+ const handleOnMouseLeave = useCallback( ( event ) => {
114
+ onMouseLeave( event );
115
+
116
+ setDebouncedTimeout( () => {
117
+ setShow( false );
118
+ onHide();
119
+ } );
120
+ }, [] );
121
+
122
+ useEffect( () => {
123
+ return () => {
124
+ window.clearTimeout( timeoutRef.current );
125
+ };
126
+ } );
127
+
128
+ return {
129
+ onMouseMove: handleOnMouseMove,
130
+ onMouseLeave: handleOnMouseLeave,
131
+ };
132
+ }
@@ -4,7 +4,6 @@
4
4
  import { useEffect, useRef, useState } from '@wordpress/element';
5
5
  import { useResizeObserver } from '@wordpress/compose';
6
6
 
7
- const { clearTimeout, setTimeout } = window;
8
7
  const noop = () => {};
9
8
 
10
9
  export type Axis = 'x' | 'y';
@@ -97,10 +96,10 @@ export function useResizeLabel( {
97
96
 
98
97
  const debounceUnsetMoveXY = () => {
99
98
  if ( moveTimeoutRef.current ) {
100
- clearTimeout( moveTimeoutRef.current );
99
+ window.clearTimeout( moveTimeoutRef.current );
101
100
  }
102
101
 
103
- moveTimeoutRef.current = setTimeout( unsetMoveXY, fadeTimeout );
102
+ moveTimeoutRef.current = window.setTimeout( unsetMoveXY, fadeTimeout );
104
103
  };
105
104
 
106
105
  useEffect( () => {
@@ -9,7 +9,7 @@ This feature is still experimental. “Experimental” means this is an early im
9
9
  ## Usage
10
10
 
11
11
  ```jsx
12
- import {__experimentalScrollable as Scrollable } from '@wordpress/components';
12
+ import { __experimentalScrollable as Scrollable } from '@wordpress/components';
13
13
 
14
14
  function Example() {
15
15
  return (
@@ -22,17 +22,23 @@ function Example() {
22
22
 
23
23
  ## Props
24
24
 
25
- ### `scrollDirection`: `string`
25
+ ### `children`: `ReactNode`
26
+
27
+ The children elements.
26
28
 
27
- - Required: No
28
- - Default: `y`
29
- - Allowed values: `x`, `y`, `auto`
29
+ - Required: Yes
30
+
31
+ ### `scrollDirection`: `string`
30
32
 
31
33
  Renders a scrollbar for a specific axis when content overflows.
32
34
 
33
- ### `smoothScroll`: `boolean`
35
+ - Required: No
36
+ - Default: `y`
37
+ - Allowed values: `x`, `y`, `auto`
34
38
 
35
- - Required: No
36
- - Default: `false`
39
+ ### `smoothScroll`: `boolean`
37
40
 
38
41
  Enables (CSS) smooth scrolling.
42
+
43
+ - Required: No
44
+ - Default: `false`
@@ -1,15 +1,20 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ForwardedRef } from 'react';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
4
- import { contextConnect } from '../ui/context';
9
+ import { contextConnect, WordPressComponentProps } from '../ui/context';
5
10
  import { View } from '../view';
6
11
  import { useScrollable } from './hook';
12
+ import type { ScrollableProps } from './types';
7
13
 
8
- /**
9
- * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'div'>} props
10
- * @param {import('react').ForwardedRef<any>} forwardedRef
11
- */
12
- function Scrollable( props, forwardedRef ) {
14
+ function UnconnectedScrollable(
15
+ props: WordPressComponentProps< ScrollableProps, 'div' >,
16
+ forwardedRef: ForwardedRef< any >
17
+ ) {
13
18
  const scrollableProps = useScrollable( props );
14
19
 
15
20
  return <View { ...scrollableProps } ref={ forwardedRef } />;
@@ -18,7 +23,6 @@ function Scrollable( props, forwardedRef ) {
18
23
  /**
19
24
  * `Scrollable` is a layout component that content in a scrollable container.
20
25
  *
21
- * @example
22
26
  * ```jsx
23
27
  * import { __experimentalScrollable as Scrollable } from `@wordpress/components`;
24
28
  *
@@ -31,7 +35,6 @@ function Scrollable( props, forwardedRef ) {
31
35
  * }
32
36
  * ```
33
37
  */
38
+ export const Scrollable = contextConnect( UnconnectedScrollable, 'Scrollable' );
34
39
 
35
- const ConnectedScrollable = contextConnect( Scrollable, 'Scrollable' );
36
-
37
- export default ConnectedScrollable;
40
+ export default Scrollable;
@@ -6,16 +6,14 @@ import { useMemo } from '@wordpress/element';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import { useContextSystem } from '../ui/context';
9
+ import { useContextSystem, WordPressComponentProps } from '../ui/context';
10
10
  import * as styles from './styles';
11
11
  import { useCx } from '../utils/hooks/use-cx';
12
+ import type { ScrollableProps } from './types';
12
13
 
13
- /* eslint-disable jsdoc/valid-types */
14
- /**
15
- * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'div'>} props
16
- */
17
- /* eslint-enable jsdoc/valid-types */
18
- export function useScrollable( props ) {
14
+ export function useScrollable(
15
+ props: WordPressComponentProps< ScrollableProps, 'div' >
16
+ ) {
19
17
  const {
20
18
  className,
21
19
  scrollDirection = 'y',
File without changes
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { boolean, select } from '@storybook/addon-knobs';
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -12,58 +12,49 @@ import { useRef } from '@wordpress/element';
12
12
  * Internal dependencies
13
13
  */
14
14
  import { View } from '../../view';
15
- import { Scrollable } from '../';
15
+ import { Scrollable } from '..';
16
16
 
17
- export default {
17
+ const meta: ComponentMeta< typeof Scrollable > = {
18
18
  component: Scrollable,
19
19
  title: 'Components (Experimental)/Scrollable',
20
+ argTypes: {
21
+ as: {
22
+ control: { type: 'text' },
23
+ },
24
+ children: {
25
+ control: { type: null },
26
+ },
27
+ },
20
28
  parameters: {
21
- knobs: { disable: false },
29
+ controls: {
30
+ expanded: true,
31
+ },
32
+ docs: { source: { state: 'open' } },
22
33
  },
23
34
  };
35
+ export default meta;
24
36
 
25
- export const _default = () => {
26
- const targetRef = useRef( null );
37
+ const Template: ComponentStory< typeof Scrollable > = ( { ...args } ) => {
38
+ const targetRef = useRef< HTMLInputElement >( null );
27
39
 
28
40
  const onButtonClick = () => {
29
41
  targetRef.current?.focus();
30
42
  };
31
43
 
32
- const otherProps = {
33
- smoothScroll: boolean(
34
- 'Scrollable: smoothScroll (hint: move focus in the scrollable container)',
35
- false
36
- ),
37
- scrollDirection: select(
38
- 'Scrollable: scrollDirection',
39
- {
40
- x: 'x',
41
- y: 'y',
42
- auto: 'auto',
43
- },
44
- 'y'
45
- ),
46
- };
47
-
48
44
  const containerWidth = 300;
49
45
  const containerHeight = 400;
50
46
 
51
47
  return (
52
48
  <Scrollable
53
49
  style={ { height: containerHeight, width: containerWidth } }
54
- { ...otherProps }
50
+ { ...args }
55
51
  >
56
52
  <View
57
53
  style={ {
58
54
  backgroundColor: '#eee',
59
55
  height:
60
- otherProps.scrollDirection === 'x'
61
- ? containerHeight
62
- : 1000,
63
- width:
64
- otherProps.scrollDirection === 'y'
65
- ? containerWidth
66
- : 1000,
56
+ args.scrollDirection === 'x' ? containerHeight : 1000,
57
+ width: args.scrollDirection === 'y' ? containerWidth : 1000,
67
58
  position: 'relative',
68
59
  } }
69
60
  >
@@ -74,10 +65,8 @@ export const _default = () => {
74
65
  ref={ targetRef }
75
66
  style={ {
76
67
  position: 'absolute',
77
- bottom:
78
- otherProps.scrollDirection === 'x' ? 'initial' : 0,
79
- right:
80
- otherProps.scrollDirection === 'y' ? 'initial' : 0,
68
+ bottom: args.scrollDirection === 'x' ? 'initial' : 0,
69
+ right: 0,
81
70
  } }
82
71
  type="text"
83
72
  value="Focus me"
@@ -86,3 +75,9 @@ export const _default = () => {
86
75
  </Scrollable>
87
76
  );
88
77
  };
78
+
79
+ export const Default: ComponentStory< typeof Scrollable > = Template.bind( {} );
80
+ Default.args = {
81
+ smoothScroll: false,
82
+ scrollDirection: 'y',
83
+ };
File without changes
@@ -37,6 +37,7 @@ exports[`props should render correctly 1`] = `
37
37
 
38
38
  <div
39
39
  class="components-scrollable emotion-0 emotion-1"
40
+ data-testid="scrollable"
40
41
  data-wp-c16t="true"
41
42
  data-wp-component="Scrollable"
42
43
  >
@@ -0,0 +1,34 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render, screen } from '@testing-library/react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { Scrollable } from '../index';
10
+
11
+ describe( 'props', () => {
12
+ beforeEach( () => {
13
+ render(
14
+ <Scrollable data-testid="scrollable">
15
+ WordPress.org - Code is Poetry
16
+ </Scrollable>
17
+ );
18
+ } );
19
+
20
+ test( 'should render correctly', () => {
21
+ expect( screen.getByTestId( 'scrollable' ) ).toMatchSnapshot();
22
+ } );
23
+
24
+ test( 'should render smoothScroll', () => {
25
+ render(
26
+ <Scrollable smoothScroll data-testid="smooth-scrollable">
27
+ WordPress.org - Code is Poetry
28
+ </Scrollable>
29
+ );
30
+ expect(
31
+ screen.getByTestId( 'smooth-scrollable' )
32
+ ).toMatchStyleDiffSnapshot( screen.getByTestId( 'scrollable' ) );
33
+ } );
34
+ } );
@@ -1,6 +1,15 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ReactNode } from 'react';
5
+
1
6
  export type ScrollableDirection = 'x' | 'y' | 'auto';
2
7
 
3
- export type Props = {
8
+ export type ScrollableProps = {
9
+ /**
10
+ * The children elements.
11
+ */
12
+ children: ReactNode;
4
13
  /**
5
14
  * Renders a scrollbar for a specific axis when content overflows.
6
15
  *
@@ -13,8 +22,4 @@ export type Props = {
13
22
  * @default false
14
23
  */
15
24
  smoothScroll?: boolean;
16
- /**
17
- * The children elements.
18
- */
19
- children: React.ReactNode;
20
25
  };
@@ -1,21 +1,29 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen, fireEvent } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
8
9
  */
9
10
  import SelectControl from '..';
10
11
 
12
+ const setupUser = () =>
13
+ userEvent.setup( {
14
+ advanceTimers: jest.advanceTimersByTime,
15
+ } );
16
+
11
17
  describe( 'SelectControl', () => {
12
18
  it( 'should not render when no options or children are provided', () => {
13
- const { container } = render( <SelectControl /> );
19
+ render( <SelectControl /> );
14
20
 
15
- expect( container.firstChild ).toBeNull();
21
+ // use `queryByRole` to avoid throwing an error with `getByRole`
22
+ expect( screen.queryByRole( 'combobox' ) ).not.toBeInTheDocument();
16
23
  } );
17
24
 
18
25
  it( 'should not render its children', async () => {
26
+ const user = setupUser();
19
27
  const handleChangeMock = jest.fn();
20
28
 
21
29
  render(
@@ -30,13 +38,12 @@ describe( 'SelectControl', () => {
30
38
  </SelectControl>
31
39
  );
32
40
 
33
- expect( screen.getByText( 'Option 1' ) ).toBeInTheDocument();
41
+ expect(
42
+ screen.getByRole( 'option', { name: 'Option 1' } )
43
+ ).toBeInTheDocument();
34
44
 
35
- const selectElement = screen.getByLabelText( 'Select' );
36
-
37
- fireEvent.change( selectElement, {
38
- target: { value: 'option-group-option-1' },
39
- } );
45
+ const selectElement = screen.getByRole( 'combobox' );
46
+ await user.selectOptions( selectElement, 'option-group-option-1' );
40
47
 
41
48
  expect( handleChangeMock ).toHaveBeenCalledWith(
42
49
  'option-group-option-1',
@@ -45,6 +52,7 @@ describe( 'SelectControl', () => {
45
52
  } );
46
53
 
47
54
  it( 'should not render its options', async () => {
55
+ const user = setupUser();
48
56
  const handleChangeMock = jest.fn();
49
57
 
50
58
  render(
@@ -66,13 +74,12 @@ describe( 'SelectControl', () => {
66
74
  />
67
75
  );
68
76
 
69
- expect( screen.getByText( 'Option 1' ) ).toBeInTheDocument();
70
-
71
- const selectElement = screen.getByLabelText( 'Select' );
77
+ expect(
78
+ screen.getByRole( 'option', { name: 'Option 1' } )
79
+ ).toBeInTheDocument();
72
80
 
73
- fireEvent.change( selectElement, {
74
- target: { value: 'option-2' },
75
- } );
81
+ const selectElement = screen.getByRole( 'combobox' );
82
+ await user.selectOptions( selectElement, 'option-2' );
76
83
 
77
84
  expect( handleChangeMock ).toHaveBeenCalledWith(
78
85
  'option-2',
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { isString, isObject } from 'lodash';
5
-
6
1
  /** @typedef {string | { display: string, ariaLabel: string }} Shortcut */
7
2
  /**
8
3
  * @typedef Props
@@ -22,11 +17,11 @@ function Shortcut( { shortcut, className } ) {
22
17
  let displayText;
23
18
  let ariaLabel;
24
19
 
25
- if ( isString( shortcut ) ) {
20
+ if ( typeof shortcut === 'string' ) {
26
21
  displayText = shortcut;
27
22
  }
28
23
 
29
- if ( isObject( shortcut ) ) {
24
+ if ( shortcut !== null && typeof shortcut === 'object' ) {
30
25
  displayText = shortcut.display;
31
26
  ariaLabel = shortcut.ariaLabel;
32
27
  }
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { omit } from 'lodash';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -12,8 +7,8 @@ import Provider from './provider';
12
7
 
13
8
  export { Fill, Provider };
14
9
 
15
- export function Slot( props ) {
16
- return <BaseSlot { ...omit( props, 'bubblesVirtually' ) } />;
10
+ export function Slot( { bubblesVirtually, ...restProps } ) {
11
+ return <BaseSlot { ...restProps } />;
17
12
  }
18
13
 
19
14
  export function createSlotFill( name ) {
@@ -1,9 +1,4 @@
1
1
  // @ts-nocheck
2
- /**
3
- * External dependencies
4
- */
5
- import { without } from 'lodash';
6
-
7
2
  /**
8
3
  * WordPress dependencies
9
4
  */
@@ -78,7 +73,8 @@ export default class SlotFillProvider extends Component {
78
73
  }
79
74
 
80
75
  unregisterFill( name, instance ) {
81
- this.fills[ name ] = without( this.fills[ name ], instance );
76
+ this.fills[ name ] =
77
+ this.fills[ name ]?.filter( ( fill ) => fill !== instance ) ?? [];
82
78
  this.forceUpdateSlot( name );
83
79
  }
84
80
 
@@ -115,7 +111,7 @@ export default class SlotFillProvider extends Component {
115
111
  this.listeners.push( listener );
116
112
 
117
113
  return () => {
118
- this.listeners = without( this.listeners, listener );
114
+ this.listeners = this.listeners.filter( ( l ) => l !== listener );
119
115
  };
120
116
  }
121
117
 
@@ -1,9 +1,4 @@
1
1
  // @ts-nocheck
2
- /**
3
- * External dependencies
4
- */
5
- import { isString, map } from 'lodash';
6
-
7
2
  /**
8
3
  * WordPress dependencies
9
4
  */
@@ -72,25 +67,27 @@ class SlotComponent extends Component {
72
67
  render() {
73
68
  const { children, name, fillProps = {}, getFills } = this.props;
74
69
 
75
- const fills = map( getFills( name, this ), ( fill ) => {
76
- const fillChildren = isFunction( fill.children )
77
- ? fill.children( fillProps )
78
- : fill.children;
79
-
80
- return Children.map( fillChildren, ( child, childIndex ) => {
81
- if ( ! child || isString( child ) ) {
82
- return child;
83
- }
84
-
85
- const childKey = child.key || childIndex;
86
- return cloneElement( child, { key: childKey } );
87
- } );
88
- } ).filter(
89
- // In some cases fills are rendered only when some conditions apply.
90
- // This ensures that we only use non-empty fills when rendering, i.e.,
91
- // it allows us to render wrappers only when the fills are actually present.
92
- ( element ) => ! isEmptyElement( element )
93
- );
70
+ const fills = ( getFills( name, this ) ?? [] )
71
+ .map( ( fill ) => {
72
+ const fillChildren = isFunction( fill.children )
73
+ ? fill.children( fillProps )
74
+ : fill.children;
75
+
76
+ return Children.map( fillChildren, ( child, childIndex ) => {
77
+ if ( ! child || typeof child === 'string' ) {
78
+ return child;
79
+ }
80
+
81
+ const childKey = child.key || childIndex;
82
+ return cloneElement( child, { key: childKey } );
83
+ } );
84
+ } )
85
+ .filter(
86
+ // In some cases fills are rendered only when some conditions apply.
87
+ // This ensures that we only use non-empty fills when rendering, i.e.,
88
+ // it allows us to render wrappers only when the fills are actually present.
89
+ ( element ) => ! isEmptyElement( element )
90
+ );
94
91
 
95
92
  return <>{ isFunction( children ) ? children( fills ) : fills }</>;
96
93
  }