@wordpress/components 19.5.0 → 19.6.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 (633) hide show
  1. package/CHANGELOG.md +23 -5
  2. package/build/alignment-matrix-control/utils.js +1 -1
  3. package/build/alignment-matrix-control/utils.js.map +1 -1
  4. package/build/angle-picker-control/angle-circle.js +1 -1
  5. package/build/angle-picker-control/angle-circle.js.map +1 -1
  6. package/build/animation/index.js +0 -6
  7. package/build/animation/index.js.map +1 -1
  8. package/build/autocomplete/get-default-use-items.js +3 -3
  9. package/build/autocomplete/get-default-use-items.js.map +1 -1
  10. package/build/base-field/hook.js +1 -1
  11. package/build/base-field/hook.js.map +1 -1
  12. package/build/box-control/icon.js +1 -1
  13. package/build/box-control/icon.js.map +1 -1
  14. package/build/box-control/index.js +4 -4
  15. package/build/box-control/index.js.map +1 -1
  16. package/build/box-control/utils.js +12 -8
  17. package/build/box-control/utils.js.map +1 -1
  18. package/build/button/index.js +5 -5
  19. package/build/button/index.js.map +1 -1
  20. package/build/button/index.native.js +7 -7
  21. package/build/button/index.native.js.map +1 -1
  22. package/build/color-picker/color-display.js +1 -1
  23. package/build/color-picker/color-display.js.map +1 -1
  24. package/build/color-picker/styles.js +8 -8
  25. package/build/color-picker/styles.js.map +1 -1
  26. package/build/combobox-control/index.js +1 -1
  27. package/build/combobox-control/index.js.map +1 -1
  28. package/build/confirm-dialog/component.js +4 -2
  29. package/build/confirm-dialog/component.js.map +1 -1
  30. package/build/date-time/time.js +7 -4
  31. package/build/date-time/time.js.map +1 -1
  32. package/build/divider/component.js +5 -4
  33. package/build/divider/component.js.map +1 -1
  34. package/build/draggable/index.js +3 -3
  35. package/build/draggable/index.js.map +1 -1
  36. package/build/focal-point-picker/index.native.js +7 -7
  37. package/build/focal-point-picker/index.native.js.map +1 -1
  38. package/build/focal-point-picker/tooltip/index.native.js +1 -1
  39. package/build/focal-point-picker/tooltip/index.native.js.map +1 -1
  40. package/build/font-size-picker/index.js +1 -1
  41. package/build/font-size-picker/index.js.map +1 -1
  42. package/build/form-token-field/index.js +6 -6
  43. package/build/form-token-field/index.js.map +1 -1
  44. package/build/form-token-field/suggestions-list.js +2 -2
  45. package/build/form-token-field/suggestions-list.js.map +1 -1
  46. package/build/heading/component.js +6 -5
  47. package/build/heading/component.js.map +1 -1
  48. package/build/heading/hook.js +1 -1
  49. package/build/heading/hook.js.map +1 -1
  50. package/build/higher-order/with-notices/index.js +1 -1
  51. package/build/higher-order/with-notices/index.js.map +1 -1
  52. package/build/index.js +2 -2
  53. package/build/index.js.map +1 -1
  54. package/build/index.native.js.map +1 -1
  55. package/build/input-control/input-base.js +1 -1
  56. package/build/input-control/input-base.js.map +1 -1
  57. package/build/input-control/input-field.js +12 -10
  58. package/build/input-control/input-field.js.map +1 -1
  59. package/build/input-control/styles/input-control-styles.js +25 -25
  60. package/build/input-control/styles/input-control-styles.js.map +1 -1
  61. package/build/isolated-event-container/index.js +1 -1
  62. package/build/isolated-event-container/index.js.map +1 -1
  63. package/build/mobile/bottom-sheet/bottom-sheet-context.native.js +4 -4
  64. package/build/mobile/bottom-sheet/bottom-sheet-context.native.js.map +1 -1
  65. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +1 -1
  66. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js.map +1 -1
  67. package/build/mobile/bottom-sheet/cell.native.js +1 -1
  68. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  69. package/build/mobile/bottom-sheet/index.native.js +11 -11
  70. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  71. package/build/mobile/bottom-sheet/link-cell.native.js +1 -1
  72. package/build/mobile/bottom-sheet/link-cell.native.js.map +1 -1
  73. package/build/mobile/bottom-sheet/link-suggestion-item-cell.native.js +1 -1
  74. package/build/mobile/bottom-sheet/link-suggestion-item-cell.native.js.map +1 -1
  75. package/build/mobile/bottom-sheet/nav-bar/back-button.native.js +1 -1
  76. package/build/mobile/bottom-sheet/nav-bar/back-button.native.js.map +1 -1
  77. package/build/mobile/global-styles-context/utils.native.js +10 -10
  78. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  79. package/build/mobile/gradient/index.native.js +2 -2
  80. package/build/mobile/gradient/index.native.js.map +1 -1
  81. package/build/mobile/html-text-input/container.ios.js +3 -3
  82. package/build/mobile/html-text-input/container.ios.js.map +1 -1
  83. package/build/mobile/html-text-input/index.native.js +1 -1
  84. package/build/mobile/html-text-input/index.native.js.map +1 -1
  85. package/build/mobile/image/index.native.js +1 -1
  86. package/build/mobile/image/index.native.js.map +1 -1
  87. package/build/mobile/keyboard-aware-flat-list/index.android.js +1 -1
  88. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  89. package/build/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  90. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  91. package/build/mobile/link-picker/index.native.js +3 -3
  92. package/build/mobile/link-picker/index.native.js.map +1 -1
  93. package/build/mobile/link-picker/link-picker-results.native.js +8 -8
  94. package/build/mobile/link-picker/link-picker-results.native.js.map +1 -1
  95. package/build/mobile/link-settings/image-link-destinations-screen.native.js +2 -2
  96. package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -1
  97. package/build/mobile/link-settings/index.native.js +1 -1
  98. package/build/mobile/link-settings/index.native.js.map +1 -1
  99. package/build/modal/aria-helper.js +1 -1
  100. package/build/modal/aria-helper.js.map +1 -1
  101. package/build/modal/index.js +2 -2
  102. package/build/modal/index.js.map +1 -1
  103. package/build/navigable-container/container.js +2 -2
  104. package/build/navigable-container/container.js.map +1 -1
  105. package/build/navigable-container/tabbable.js +1 -1
  106. package/build/navigable-container/tabbable.js.map +1 -1
  107. package/build/navigation/item/index.js +1 -1
  108. package/build/navigation/item/index.js.map +1 -1
  109. package/build/navigation/menu/index.js +1 -1
  110. package/build/navigation/menu/index.js.map +1 -1
  111. package/build/navigator/navigator-provider/component.js +2 -2
  112. package/build/navigator/navigator-provider/component.js.map +1 -1
  113. package/build/navigator/navigator-screen/component.js +1 -1
  114. package/build/navigator/navigator-screen/component.js.map +1 -1
  115. package/build/number-control/index.js +1 -1
  116. package/build/number-control/index.js.map +1 -1
  117. package/build/panel/body.js +2 -2
  118. package/build/panel/body.js.map +1 -1
  119. package/build/popover/index.js +3 -3
  120. package/build/popover/index.js.map +1 -1
  121. package/build/popover/utils.js +6 -6
  122. package/build/popover/utils.js.map +1 -1
  123. package/build/radio-group/index.js +1 -1
  124. package/build/radio-group/index.js.map +1 -1
  125. package/build/range-control/styles/range-control-styles.js +29 -29
  126. package/build/range-control/styles/range-control-styles.js.map +1 -1
  127. package/build/sandbox/index.js +5 -5
  128. package/build/sandbox/index.js.map +1 -1
  129. package/build/sandbox/index.native.js +1 -1
  130. package/build/sandbox/index.native.js.map +1 -1
  131. package/build/select-control/index.js +1 -1
  132. package/build/select-control/index.js.map +1 -1
  133. package/build/select-control/styles/select-control-styles.js +5 -5
  134. package/build/select-control/styles/select-control-styles.js.map +1 -1
  135. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  136. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  137. package/build/slot-fill/bubbles-virtually/slot.js +1 -1
  138. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  139. package/build/slot-fill/fill.js +1 -1
  140. package/build/slot-fill/fill.js.map +1 -1
  141. package/build/slot-fill/provider.js +1 -1
  142. package/build/slot-fill/provider.js.map +1 -1
  143. package/build/snackbar/index.js +1 -1
  144. package/build/snackbar/index.js.map +1 -1
  145. package/build/snackbar/list.js +1 -1
  146. package/build/snackbar/list.js.map +1 -1
  147. package/build/style-provider/index.js +2 -2
  148. package/build/style-provider/index.js.map +1 -1
  149. package/build/toggle-group-control/toggle-group-control/component.js +2 -2
  150. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  151. package/build/toggle-group-control/toggle-group-control-option/component.js +1 -4
  152. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  153. package/build/toggle-group-control/toggle-group-control-option/styles.js +12 -19
  154. package/build/toggle-group-control/toggle-group-control-option/styles.js.map +1 -1
  155. package/build/toolbar/index.js +1 -1
  156. package/build/toolbar/index.js.map +1 -1
  157. package/build/tooltip/index.js +3 -3
  158. package/build/tooltip/index.js.map +1 -1
  159. package/build/tooltip/index.native.js +7 -7
  160. package/build/tooltip/index.native.js.map +1 -1
  161. package/build/tree-grid/index.js +4 -1
  162. package/build/tree-grid/index.js.map +1 -1
  163. package/build/truncate/utils.js +1 -1
  164. package/build/truncate/utils.js.map +1 -1
  165. package/build/ui/context/context-connect.js +8 -15
  166. package/build/ui/context/context-connect.js.map +1 -1
  167. package/build/ui/context/context-system-provider.js +2 -2
  168. package/build/ui/context/context-system-provider.js.map +1 -1
  169. package/build/ui/context/index.js.map +1 -1
  170. package/build/ui/utils/colors.js +2 -2
  171. package/build/ui/utils/colors.js.map +1 -1
  172. package/build/ui/utils/space.js +2 -2
  173. package/build/ui/utils/space.js.map +1 -1
  174. package/build/unit-control/index.js +38 -29
  175. package/build/unit-control/index.js.map +1 -1
  176. package/build/unit-control/index.native.js +4 -2
  177. package/build/unit-control/index.native.js.map +1 -1
  178. package/build/unit-control/unit-select-control.js +1 -1
  179. package/build/unit-control/unit-select-control.js.map +1 -1
  180. package/build/unit-control/utils.js +96 -104
  181. package/build/unit-control/utils.js.map +1 -1
  182. package/build/utils/breakpoint-values.js +1 -1
  183. package/build/utils/breakpoint-values.js.map +1 -1
  184. package/build/utils/colors-values.js +1 -1
  185. package/build/utils/colors-values.js.map +1 -1
  186. package/build-module/alignment-matrix-control/utils.js +1 -1
  187. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  188. package/build-module/angle-picker-control/angle-circle.js +1 -1
  189. package/build-module/angle-picker-control/angle-circle.js.map +1 -1
  190. package/build-module/animation/index.js +1 -1
  191. package/build-module/animation/index.js.map +1 -1
  192. package/build-module/autocomplete/get-default-use-items.js +3 -3
  193. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  194. package/build-module/base-field/hook.js +1 -1
  195. package/build-module/base-field/hook.js.map +1 -1
  196. package/build-module/box-control/icon.js +1 -1
  197. package/build-module/box-control/icon.js.map +1 -1
  198. package/build-module/box-control/index.js +5 -5
  199. package/build-module/box-control/index.js.map +1 -1
  200. package/build-module/box-control/utils.js +13 -9
  201. package/build-module/box-control/utils.js.map +1 -1
  202. package/build-module/button/index.js +5 -5
  203. package/build-module/button/index.js.map +1 -1
  204. package/build-module/button/index.native.js +7 -7
  205. package/build-module/button/index.native.js.map +1 -1
  206. package/build-module/color-picker/color-display.js +1 -1
  207. package/build-module/color-picker/color-display.js.map +1 -1
  208. package/build-module/color-picker/styles.js +8 -8
  209. package/build-module/color-picker/styles.js.map +1 -1
  210. package/build-module/combobox-control/index.js +1 -1
  211. package/build-module/combobox-control/index.js.map +1 -1
  212. package/build-module/confirm-dialog/component.js +4 -5
  213. package/build-module/confirm-dialog/component.js.map +1 -1
  214. package/build-module/date-time/time.js +7 -4
  215. package/build-module/date-time/time.js.map +1 -1
  216. package/build-module/divider/component.js +3 -3
  217. package/build-module/divider/component.js.map +1 -1
  218. package/build-module/draggable/index.js +3 -3
  219. package/build-module/draggable/index.js.map +1 -1
  220. package/build-module/focal-point-picker/index.native.js +7 -7
  221. package/build-module/focal-point-picker/index.native.js.map +1 -1
  222. package/build-module/focal-point-picker/tooltip/index.native.js +1 -1
  223. package/build-module/focal-point-picker/tooltip/index.native.js.map +1 -1
  224. package/build-module/font-size-picker/index.js +1 -1
  225. package/build-module/font-size-picker/index.js.map +1 -1
  226. package/build-module/form-token-field/index.js +6 -6
  227. package/build-module/form-token-field/index.js.map +1 -1
  228. package/build-module/form-token-field/suggestions-list.js +2 -2
  229. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  230. package/build-module/heading/component.js +4 -4
  231. package/build-module/heading/component.js.map +1 -1
  232. package/build-module/heading/hook.js +1 -1
  233. package/build-module/heading/hook.js.map +1 -1
  234. package/build-module/higher-order/with-notices/index.js +1 -1
  235. package/build-module/higher-order/with-notices/index.js.map +1 -1
  236. package/build-module/index.js +4 -4
  237. package/build-module/index.js.map +1 -1
  238. package/build-module/index.native.js +4 -4
  239. package/build-module/index.native.js.map +1 -1
  240. package/build-module/input-control/input-base.js +1 -1
  241. package/build-module/input-control/input-base.js.map +1 -1
  242. package/build-module/input-control/input-field.js +13 -10
  243. package/build-module/input-control/input-field.js.map +1 -1
  244. package/build-module/input-control/styles/input-control-styles.js +25 -25
  245. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  246. package/build-module/isolated-event-container/index.js +1 -1
  247. package/build-module/isolated-event-container/index.js.map +1 -1
  248. package/build-module/mobile/bottom-sheet/bottom-sheet-context.native.js +4 -4
  249. package/build-module/mobile/bottom-sheet/bottom-sheet-context.native.js.map +1 -1
  250. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +1 -1
  251. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js.map +1 -1
  252. package/build-module/mobile/bottom-sheet/cell.native.js +1 -1
  253. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  254. package/build-module/mobile/bottom-sheet/index.native.js +11 -11
  255. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  256. package/build-module/mobile/bottom-sheet/link-cell.native.js +1 -1
  257. package/build-module/mobile/bottom-sheet/link-cell.native.js.map +1 -1
  258. package/build-module/mobile/bottom-sheet/link-suggestion-item-cell.native.js +1 -1
  259. package/build-module/mobile/bottom-sheet/link-suggestion-item-cell.native.js.map +1 -1
  260. package/build-module/mobile/bottom-sheet/nav-bar/back-button.native.js +1 -1
  261. package/build-module/mobile/bottom-sheet/nav-bar/back-button.native.js.map +1 -1
  262. package/build-module/mobile/global-styles-context/utils.native.js +10 -10
  263. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  264. package/build-module/mobile/gradient/index.native.js +2 -2
  265. package/build-module/mobile/gradient/index.native.js.map +1 -1
  266. package/build-module/mobile/html-text-input/container.ios.js +3 -3
  267. package/build-module/mobile/html-text-input/container.ios.js.map +1 -1
  268. package/build-module/mobile/html-text-input/index.native.js +1 -1
  269. package/build-module/mobile/html-text-input/index.native.js.map +1 -1
  270. package/build-module/mobile/image/index.native.js +1 -1
  271. package/build-module/mobile/image/index.native.js.map +1 -1
  272. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +1 -1
  273. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  274. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  275. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  276. package/build-module/mobile/link-picker/index.native.js +3 -3
  277. package/build-module/mobile/link-picker/index.native.js.map +1 -1
  278. package/build-module/mobile/link-picker/link-picker-results.native.js +8 -8
  279. package/build-module/mobile/link-picker/link-picker-results.native.js.map +1 -1
  280. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js +2 -2
  281. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -1
  282. package/build-module/mobile/link-settings/index.native.js +1 -1
  283. package/build-module/mobile/link-settings/index.native.js.map +1 -1
  284. package/build-module/modal/aria-helper.js +1 -1
  285. package/build-module/modal/aria-helper.js.map +1 -1
  286. package/build-module/modal/index.js +2 -2
  287. package/build-module/modal/index.js.map +1 -1
  288. package/build-module/navigable-container/container.js +2 -2
  289. package/build-module/navigable-container/container.js.map +1 -1
  290. package/build-module/navigable-container/tabbable.js +1 -1
  291. package/build-module/navigable-container/tabbable.js.map +1 -1
  292. package/build-module/navigation/item/index.js +1 -1
  293. package/build-module/navigation/item/index.js.map +1 -1
  294. package/build-module/navigation/menu/index.js +1 -1
  295. package/build-module/navigation/menu/index.js.map +1 -1
  296. package/build-module/navigator/navigator-provider/component.js +2 -2
  297. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  298. package/build-module/navigator/navigator-screen/component.js +1 -1
  299. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  300. package/build-module/number-control/index.js +1 -1
  301. package/build-module/number-control/index.js.map +1 -1
  302. package/build-module/panel/body.js +2 -2
  303. package/build-module/panel/body.js.map +1 -1
  304. package/build-module/popover/index.js +3 -3
  305. package/build-module/popover/index.js.map +1 -1
  306. package/build-module/popover/utils.js +6 -6
  307. package/build-module/popover/utils.js.map +1 -1
  308. package/build-module/radio-group/index.js +1 -1
  309. package/build-module/radio-group/index.js.map +1 -1
  310. package/build-module/range-control/styles/range-control-styles.js +29 -29
  311. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  312. package/build-module/sandbox/index.js +5 -5
  313. package/build-module/sandbox/index.js.map +1 -1
  314. package/build-module/sandbox/index.native.js +1 -1
  315. package/build-module/sandbox/index.native.js.map +1 -1
  316. package/build-module/select-control/index.js +1 -1
  317. package/build-module/select-control/index.js.map +1 -1
  318. package/build-module/select-control/styles/select-control-styles.js +5 -5
  319. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  320. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  321. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  322. package/build-module/slot-fill/bubbles-virtually/slot.js +1 -1
  323. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  324. package/build-module/slot-fill/fill.js +1 -1
  325. package/build-module/slot-fill/fill.js.map +1 -1
  326. package/build-module/slot-fill/provider.js +1 -1
  327. package/build-module/slot-fill/provider.js.map +1 -1
  328. package/build-module/snackbar/index.js +1 -1
  329. package/build-module/snackbar/index.js.map +1 -1
  330. package/build-module/snackbar/list.js +1 -1
  331. package/build-module/snackbar/list.js.map +1 -1
  332. package/build-module/style-provider/index.js +2 -2
  333. package/build-module/style-provider/index.js.map +1 -1
  334. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -2
  335. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  336. package/build-module/toggle-group-control/toggle-group-control-option/component.js +1 -4
  337. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  338. package/build-module/toggle-group-control/toggle-group-control-option/styles.js +11 -17
  339. package/build-module/toggle-group-control/toggle-group-control-option/styles.js.map +1 -1
  340. package/build-module/toolbar/index.js +1 -1
  341. package/build-module/toolbar/index.js.map +1 -1
  342. package/build-module/tooltip/index.js +3 -3
  343. package/build-module/tooltip/index.js.map +1 -1
  344. package/build-module/tooltip/index.native.js +7 -7
  345. package/build-module/tooltip/index.native.js.map +1 -1
  346. package/build-module/tree-grid/index.js +4 -1
  347. package/build-module/tree-grid/index.js.map +1 -1
  348. package/build-module/truncate/utils.js +1 -1
  349. package/build-module/truncate/utils.js.map +1 -1
  350. package/build-module/ui/context/context-connect.js +9 -16
  351. package/build-module/ui/context/context-connect.js.map +1 -1
  352. package/build-module/ui/context/context-system-provider.js +2 -2
  353. package/build-module/ui/context/context-system-provider.js.map +1 -1
  354. package/build-module/ui/context/index.js.map +1 -1
  355. package/build-module/ui/utils/colors.js +2 -2
  356. package/build-module/ui/utils/colors.js.map +1 -1
  357. package/build-module/ui/utils/space.js +2 -2
  358. package/build-module/ui/utils/space.js.map +1 -1
  359. package/build-module/unit-control/index.js +39 -30
  360. package/build-module/unit-control/index.js.map +1 -1
  361. package/build-module/unit-control/index.native.js +5 -3
  362. package/build-module/unit-control/index.native.js.map +1 -1
  363. package/build-module/unit-control/unit-select-control.js +1 -1
  364. package/build-module/unit-control/unit-select-control.js.map +1 -1
  365. package/build-module/unit-control/utils.js +92 -100
  366. package/build-module/unit-control/utils.js.map +1 -1
  367. package/build-module/utils/breakpoint-values.js +1 -1
  368. package/build-module/utils/breakpoint-values.js.map +1 -1
  369. package/build-module/utils/colors-values.js +1 -1
  370. package/build-module/utils/colors-values.js.map +1 -1
  371. package/build-style/style-rtl.css +8 -0
  372. package/build-style/style.css +8 -0
  373. package/build-types/base-field/hook.d.ts +2 -1
  374. package/build-types/base-field/hook.d.ts.map +1 -1
  375. package/build-types/card/card/hook.d.ts +2 -1
  376. package/build-types/card/card/hook.d.ts.map +1 -1
  377. package/build-types/card/card-body/hook.d.ts +2 -1
  378. package/build-types/card/card-body/hook.d.ts.map +1 -1
  379. package/build-types/card/card-divider/hook.d.ts +2 -2
  380. package/build-types/card/card-footer/hook.d.ts +2 -1
  381. package/build-types/card/card-footer/hook.d.ts.map +1 -1
  382. package/build-types/card/card-header/hook.d.ts +2 -1
  383. package/build-types/card/card-header/hook.d.ts.map +1 -1
  384. package/build-types/card/card-media/hook.d.ts +2 -1
  385. package/build-types/card/card-media/hook.d.ts.map +1 -1
  386. package/build-types/color-picker/styles.d.ts +2 -2
  387. package/build-types/confirm-dialog/component.d.ts +8 -0
  388. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  389. package/build-types/confirm-dialog/types.d.ts +2 -0
  390. package/build-types/confirm-dialog/types.d.ts.map +1 -1
  391. package/build-types/divider/component.d.ts +2 -2
  392. package/build-types/divider/component.d.ts.map +1 -1
  393. package/build-types/divider/stories/index.d.ts +10 -0
  394. package/build-types/divider/stories/index.d.ts.map +1 -0
  395. package/build-types/divider/types.d.ts +1 -1
  396. package/build-types/divider/types.d.ts.map +1 -1
  397. package/build-types/elevation/hook.d.ts +2 -1
  398. package/build-types/elevation/hook.d.ts.map +1 -1
  399. package/build-types/flex/flex/hook.d.ts +2 -1
  400. package/build-types/flex/flex/hook.d.ts.map +1 -1
  401. package/build-types/flex/flex-block/hook.d.ts +2 -1
  402. package/build-types/flex/flex-block/hook.d.ts.map +1 -1
  403. package/build-types/flex/flex-item/hook.d.ts +2 -1
  404. package/build-types/flex/flex-item/hook.d.ts.map +1 -1
  405. package/build-types/flyout/flyout/hook.d.ts +2 -1
  406. package/build-types/flyout/flyout/hook.d.ts.map +1 -1
  407. package/build-types/grid/hook.d.ts +2 -1
  408. package/build-types/grid/hook.d.ts.map +1 -1
  409. package/build-types/h-stack/hook.d.ts +3 -2
  410. package/build-types/h-stack/hook.d.ts.map +1 -1
  411. package/build-types/heading/component.d.ts +3 -3
  412. package/build-types/heading/component.d.ts.map +1 -1
  413. package/build-types/heading/hook.d.ts +2 -1
  414. package/build-types/heading/hook.d.ts.map +1 -1
  415. package/build-types/heading/stories/index.d.ts +12 -0
  416. package/build-types/heading/stories/index.d.ts.map +1 -0
  417. package/build-types/input-control/index.d.ts +1 -1
  418. package/build-types/input-control/index.d.ts.map +1 -1
  419. package/build-types/input-control/input-field.d.ts +1 -1
  420. package/build-types/input-control/input-field.d.ts.map +1 -1
  421. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  422. package/build-types/item-group/item/hook.d.ts +2 -1
  423. package/build-types/item-group/item/hook.d.ts.map +1 -1
  424. package/build-types/item-group/item-group/hook.d.ts +2 -1
  425. package/build-types/item-group/item-group/hook.d.ts.map +1 -1
  426. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -1
  427. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  428. package/build-types/navigator/navigator-button/hook.d.ts +2 -1
  429. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  430. package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
  431. package/build-types/scrollable/hook.d.ts +2 -1
  432. package/build-types/scrollable/hook.d.ts.map +1 -1
  433. package/build-types/select-control/index.d.ts +1 -1
  434. package/build-types/select-control/index.d.ts.map +1 -1
  435. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  436. package/build-types/spacer/hook.d.ts +2 -1
  437. package/build-types/spacer/hook.d.ts.map +1 -1
  438. package/build-types/surface/hook.d.ts +2 -1
  439. package/build-types/surface/hook.d.ts.map +1 -1
  440. package/build-types/text/hook.d.ts +2 -1
  441. package/build-types/text/hook.d.ts.map +1 -1
  442. package/build-types/text/types.d.ts +1 -2
  443. package/build-types/text/types.d.ts.map +1 -1
  444. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  445. package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts +0 -4
  446. package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts.map +1 -1
  447. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -1
  448. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  449. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -1
  450. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  451. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -1
  452. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  453. package/build-types/truncate/hook.d.ts +2 -1
  454. package/build-types/truncate/hook.d.ts.map +1 -1
  455. package/build-types/ui/context/context-connect.d.ts +18 -16
  456. package/build-types/ui/context/context-connect.d.ts.map +1 -1
  457. package/build-types/ui/context/index.d.ts +4 -4
  458. package/build-types/ui/context/index.d.ts.map +1 -1
  459. package/build-types/ui/context/wordpress-component.d.ts +1 -0
  460. package/build-types/ui/context/wordpress-component.d.ts.map +1 -1
  461. package/build-types/ui/control-group/hook.d.ts +2 -1
  462. package/build-types/ui/control-group/hook.d.ts.map +1 -1
  463. package/build-types/ui/control-label/hook.d.ts +2 -1
  464. package/build-types/ui/control-label/hook.d.ts.map +1 -1
  465. package/build-types/ui/form-group/use-form-group.d.ts +6 -4
  466. package/build-types/ui/form-group/use-form-group.d.ts.map +1 -1
  467. package/build-types/unit-control/index.d.ts +3 -3
  468. package/build-types/unit-control/index.d.ts.map +1 -1
  469. package/build-types/unit-control/types.d.ts +4 -6
  470. package/build-types/unit-control/types.d.ts.map +1 -1
  471. package/build-types/unit-control/utils.d.ts +47 -38
  472. package/build-types/unit-control/utils.d.ts.map +1 -1
  473. package/build-types/v-stack/hook.d.ts +2 -1
  474. package/build-types/v-stack/hook.d.ts.map +1 -1
  475. package/package.json +18 -18
  476. package/src/alignment-matrix-control/utils.js +1 -1
  477. package/src/angle-picker-control/angle-circle.js +1 -1
  478. package/src/animation/index.js +0 -1
  479. package/src/autocomplete/get-default-use-items.js +3 -3
  480. package/src/base-field/hook.js +1 -1
  481. package/src/box-control/icon.js +1 -1
  482. package/src/box-control/index.js +5 -5
  483. package/src/box-control/test/index.js +27 -7
  484. package/src/box-control/utils.js +13 -9
  485. package/src/button/index.js +5 -5
  486. package/src/button/index.native.js +7 -7
  487. package/src/button/style.scss +1 -0
  488. package/src/color-palette/style.scss +1 -0
  489. package/src/color-picker/color-display.tsx +1 -1
  490. package/src/color-picker/styles.ts +1 -1
  491. package/src/color-picker/test/index.js +1 -1
  492. package/src/combobox-control/index.js +1 -1
  493. package/src/combobox-control/style.scss +1 -0
  494. package/src/confirm-dialog/README.md +56 -45
  495. package/src/confirm-dialog/component.tsx +4 -2
  496. package/src/confirm-dialog/stories/index.js +19 -0
  497. package/src/confirm-dialog/test/index.js +28 -0
  498. package/src/confirm-dialog/types.ts +2 -0
  499. package/src/date-time/style.scss +4 -0
  500. package/src/date-time/time.js +16 -5
  501. package/src/dimension-control/test/index.test.js +1 -1
  502. package/src/disabled/test/index.js +1 -1
  503. package/src/divider/component.tsx +3 -3
  504. package/src/divider/stories/index.tsx +70 -0
  505. package/src/divider/types.ts +3 -1
  506. package/src/draggable/index.js +3 -3
  507. package/src/draggable/stories/index.js +1 -1
  508. package/src/flyout/flyout/README.md +1 -1
  509. package/src/flyout/test/index.js +1 -1
  510. package/src/focal-point-picker/index.native.js +7 -7
  511. package/src/focal-point-picker/tooltip/index.native.js +1 -1
  512. package/src/font-size-picker/README.md +1 -2
  513. package/src/font-size-picker/index.js +1 -1
  514. package/src/font-size-picker/stories/index.js +87 -108
  515. package/src/font-size-picker/test/index.js +0 -2
  516. package/src/form-token-field/index.js +6 -6
  517. package/src/form-token-field/style.scss +1 -0
  518. package/src/form-token-field/suggestions-list.js +2 -2
  519. package/src/form-token-field/test/index.js +6 -6
  520. package/src/heading/component.tsx +4 -4
  521. package/src/heading/hook.ts +1 -1
  522. package/src/heading/stories/index.tsx +37 -0
  523. package/src/higher-order/with-filters/test/index.js +1 -1
  524. package/src/higher-order/with-focus-outside/test/index.js +1 -1
  525. package/src/higher-order/with-notices/index.js +1 -1
  526. package/src/higher-order/with-notices/test/index.js +3 -3
  527. package/src/index.js +4 -4
  528. package/src/index.native.js +4 -4
  529. package/src/input-control/input-base.tsx +1 -1
  530. package/src/input-control/input-field.tsx +12 -9
  531. package/src/input-control/styles/input-control-styles.tsx +1 -0
  532. package/src/input-control/test/index.js +4 -4
  533. package/src/isolated-event-container/index.js +1 -1
  534. package/src/item-group/test/index.js +0 -1
  535. package/src/mobile/bottom-sheet/bottom-sheet-context.native.js +4 -4
  536. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +1 -1
  537. package/src/mobile/bottom-sheet/cell.native.js +1 -1
  538. package/src/mobile/bottom-sheet/index.native.js +11 -11
  539. package/src/mobile/bottom-sheet/link-cell.native.js +1 -1
  540. package/src/mobile/bottom-sheet/link-suggestion-item-cell.native.js +1 -1
  541. package/src/mobile/bottom-sheet/nav-bar/back-button.native.js +1 -1
  542. package/src/mobile/global-styles-context/utils.native.js +10 -10
  543. package/src/mobile/gradient/index.native.js +2 -2
  544. package/src/mobile/html-text-input/container.ios.js +3 -3
  545. package/src/mobile/html-text-input/index.native.js +1 -1
  546. package/src/mobile/html-text-input/test/index.native.js +14 -14
  547. package/src/mobile/image/index.native.js +1 -1
  548. package/src/mobile/image/style.native.scss +1 -0
  549. package/src/mobile/keyboard-aware-flat-list/index.android.js +1 -1
  550. package/src/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  551. package/src/mobile/link-picker/index.native.js +3 -3
  552. package/src/mobile/link-picker/link-picker-results.native.js +8 -8
  553. package/src/mobile/link-settings/image-link-destinations-screen.native.js +2 -2
  554. package/src/mobile/link-settings/index.native.js +1 -2
  555. package/src/mobile/link-settings/test/edit.native.js +15 -15
  556. package/src/modal/aria-helper.js +1 -1
  557. package/src/modal/index.js +2 -2
  558. package/src/navigable-container/container.js +2 -2
  559. package/src/navigable-container/tabbable.js +1 -1
  560. package/src/navigable-container/test/menu.js +5 -5
  561. package/src/navigable-container/test/tabbable.js +2 -2
  562. package/src/navigation/item/index.js +1 -1
  563. package/src/navigation/menu/index.js +1 -1
  564. package/src/navigation/stories/controlled-state.js +2 -2
  565. package/src/navigator/navigator-provider/component.tsx +1 -1
  566. package/src/navigator/navigator-screen/component.tsx +2 -2
  567. package/src/navigator/test/index.js +18 -19
  568. package/src/navigator/types.ts +1 -1
  569. package/src/number-control/index.js +1 -1
  570. package/src/panel/body.js +2 -2
  571. package/src/popover/index.js +3 -3
  572. package/src/popover/utils.js +6 -6
  573. package/src/radio-group/index.js +1 -1
  574. package/src/range-control/stories/index.js +1 -1
  575. package/src/range-control/styles/range-control-styles.js +1 -1
  576. package/src/range-control/test/index.js +2 -2
  577. package/src/sandbox/index.js +5 -5
  578. package/src/sandbox/index.native.js +1 -1
  579. package/src/select-control/index.tsx +1 -1
  580. package/src/select-control/styles/select-control-styles.ts +1 -0
  581. package/src/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  582. package/src/slot-fill/bubbles-virtually/slot.js +1 -2
  583. package/src/slot-fill/fill.js +1 -1
  584. package/src/slot-fill/provider.js +1 -1
  585. package/src/snackbar/index.js +1 -1
  586. package/src/snackbar/list.js +1 -1
  587. package/src/style-provider/index.js +2 -2
  588. package/src/tab-panel/test/index.js +1 -1
  589. package/src/text/test/index.js +2 -2
  590. package/src/text/types.ts +6 -8
  591. package/src/text-highlight/test/index.js +4 -4
  592. package/src/toggle-control/test/index.js +3 -3
  593. package/src/toggle-group-control/test/__snapshots__/index.js.snap +1 -27
  594. package/src/toggle-group-control/toggle-group-control/component.tsx +2 -2
  595. package/src/toggle-group-control/toggle-group-control-option/component.tsx +1 -4
  596. package/src/toggle-group-control/toggle-group-control-option/styles.ts +1 -12
  597. package/src/toolbar/index.js +1 -1
  598. package/src/toolbar-group/test/index.js +2 -2
  599. package/src/tooltip/index.js +3 -3
  600. package/src/tooltip/index.native.js +7 -7
  601. package/src/tooltip/test/index.js +2 -2
  602. package/src/tooltip/test/index.native.js +2 -2
  603. package/src/tree-grid/README.md +1 -1
  604. package/src/tree-grid/index.js +4 -0
  605. package/src/tree-grid/test/__snapshots__/index.js.snap +1 -1
  606. package/src/tree-grid/test/index.js +128 -52
  607. package/src/truncate/utils.js +1 -1
  608. package/src/ui/context/{context-connect.js → context-connect.ts} +27 -16
  609. package/src/ui/context/context-system-provider.js +2 -2
  610. package/src/ui/context/{index.js → index.ts} +0 -0
  611. package/src/ui/context/wordpress-component.ts +1 -0
  612. package/src/ui/tooltip/test/index.js +4 -4
  613. package/src/ui/utils/colors.js +2 -2
  614. package/src/ui/utils/space.ts +2 -2
  615. package/src/unit-control/README.md +1 -1
  616. package/src/unit-control/index.native.js +5 -3
  617. package/src/unit-control/index.tsx +64 -35
  618. package/src/unit-control/test/index.js +102 -3
  619. package/src/unit-control/test/utils.js +56 -15
  620. package/src/unit-control/types.ts +5 -8
  621. package/src/unit-control/unit-select-control.tsx +1 -1
  622. package/src/unit-control/utils.ts +128 -125
  623. package/src/utils/breakpoint-values.js +1 -1
  624. package/src/utils/colors-values.js +1 -1
  625. package/src/utils/hooks/test/use-controlled-state.js +1 -1
  626. package/src/utils/hooks/test/use-controlled-value.js +3 -3
  627. package/src/utils/hooks/test/use-latest-ref.js +1 -1
  628. package/src/utils/test/math.js +2 -2
  629. package/src/utils/test/rtl.js +12 -12
  630. package/tsconfig.json +1 -1
  631. package/tsconfig.tsbuildinfo +1 -1
  632. package/src/divider/stories/index.js +0 -64
  633. package/src/heading/stories/index.js +0 -24
@@ -6,13 +6,15 @@ import { fireEvent, render, screen } from '@testing-library/react';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { LEFT, RIGHT, UP, DOWN } from '@wordpress/keycodes';
9
+ import { LEFT, RIGHT, UP, DOWN, HOME, END } from '@wordpress/keycodes';
10
10
  import { forwardRef } from '@wordpress/element';
11
11
 
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
15
  import TreeGrid from '../';
16
+ import TreeGridRow from '../row';
17
+ import TreeGridCell from '../cell';
16
18
 
17
19
  const TestButton = forwardRef( ( { ...props }, ref ) => (
18
20
  <button { ...props } ref={ ref }></button>
@@ -46,9 +48,9 @@ describe( 'TreeGrid', () => {
46
48
  it( 'renders a table, tbody and any child elements', () => {
47
49
  const { container } = render(
48
50
  <TreeGrid>
49
- <tr>
50
- <td>Test</td>
51
- </tr>
51
+ <TreeGridRow level={ 1 } positionInSet={ 1 } setSize={ 1 }>
52
+ <TreeGridCell withoutGridItem>Test</TreeGridCell>
53
+ </TreeGridRow>
52
54
  </TreeGrid>
53
55
  );
54
56
 
@@ -62,34 +64,49 @@ describe( 'TreeGrid', () => {
62
64
 
63
65
  render(
64
66
  <TreeGrid onExpandRow={ onExpandRow }>
65
- <tr role="row" aria-expanded="true">
66
- <td>
67
- <TestButton>Row 1</TestButton>
68
- </td>
69
- </tr>
70
- <tr role="row" aria-expanded="false">
71
- <td>
67
+ <TreeGridRow
68
+ level={ 1 }
69
+ positionInSet={ 1 }
70
+ setSize={ 3 }
71
+ isExpanded={ false }
72
+ >
73
+ <TreeGridCell withoutGridItem>
74
+ <TestButton aria-expanded="false">Row 1</TestButton>
75
+ </TreeGridCell>
76
+ </TreeGridRow>
77
+ <TreeGridRow
78
+ level={ 1 }
79
+ positionInSet={ 2 }
80
+ setSize={ 3 }
81
+ isExpanded={ false }
82
+ >
83
+ <TreeGridCell withoutGridItem>
72
84
  <TestButton>Row 2</TestButton>
73
- </td>
74
- </tr>
75
- <tr role="row" aria-expanded="true">
76
- <td>
85
+ </TreeGridCell>
86
+ </TreeGridRow>
87
+ <TreeGridRow
88
+ level={ 1 }
89
+ positionInSet={ 3 }
90
+ setSize={ 3 }
91
+ isExpanded={ false }
92
+ >
93
+ <TreeGridCell withoutGridItem>
77
94
  <TestButton>Row 3</TestButton>
78
- </td>
79
- </tr>
95
+ </TreeGridCell>
96
+ </TreeGridRow>
80
97
  </TreeGrid>
81
98
  );
82
99
 
83
- screen.getByText( 'Row 2' ).focus();
84
- const row2Element = screen.getByText( 'Row 2' ).closest( 'tr' );
100
+ screen.getByText( 'Row 1' ).focus();
101
+ const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
85
102
 
86
- fireEvent.keyDown( screen.getByText( 'Row 2' ), {
103
+ fireEvent.keyDown( screen.getByText( 'Row 1' ), {
87
104
  key: 'ArrowRight',
88
105
  keyCode: RIGHT,
89
- currentTarget: row2Element,
106
+ currentTarget: row1Element,
90
107
  } );
91
108
 
92
- expect( onExpandRow ).toHaveBeenCalledWith( row2Element );
109
+ expect( onExpandRow ).toHaveBeenCalledWith( row1Element );
93
110
  } );
94
111
  } );
95
112
 
@@ -99,55 +116,70 @@ describe( 'TreeGrid', () => {
99
116
 
100
117
  render(
101
118
  <TreeGrid onCollapseRow={ onCollapseRow }>
102
- <tr role="row" aria-expanded="false">
103
- <td>
104
- <TestButton>Row 1</TestButton>
105
- </td>
106
- </tr>
107
- <tr role="row" aria-expanded="true">
108
- <td>
119
+ <TreeGridRow
120
+ level={ 1 }
121
+ positionInSet={ 1 }
122
+ setSize={ 3 }
123
+ isExpanded={ true }
124
+ >
125
+ <TreeGridCell withoutGridItem>
126
+ <TestButton aria-expanded="true">Row 1</TestButton>
127
+ </TreeGridCell>
128
+ </TreeGridRow>
129
+ <TreeGridRow
130
+ level={ 1 }
131
+ positionInSet={ 2 }
132
+ setSize={ 3 }
133
+ isExpanded={ false }
134
+ >
135
+ <TreeGridCell withoutGridItem>
109
136
  <TestButton>Row 2</TestButton>
110
- </td>
111
- </tr>
112
- <tr role="row" aria-expanded="false">
113
- <td>
137
+ </TreeGridCell>
138
+ </TreeGridRow>
139
+ <TreeGridRow
140
+ level={ 1 }
141
+ positionInSet={ 3 }
142
+ setSize={ 3 }
143
+ isExpanded={ false }
144
+ >
145
+ <TreeGridCell withoutGridItem>
114
146
  <TestButton>Row 3</TestButton>
115
- </td>
116
- </tr>
147
+ </TreeGridCell>
148
+ </TreeGridRow>
117
149
  </TreeGrid>
118
150
  );
119
151
 
120
- screen.getByText( 'Row 2' ).focus();
121
- const row2Element = screen.getByText( 'Row 2' ).closest( 'tr' );
152
+ screen.getByText( 'Row 1' ).focus();
153
+ const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
122
154
 
123
- fireEvent.keyDown( screen.getByText( 'Row 2' ), {
155
+ fireEvent.keyDown( screen.getByText( 'Row 1' ), {
124
156
  key: 'ArrowLeft',
125
157
  keyCode: LEFT,
126
- currentTarget: row2Element,
158
+ currentTarget: row1Element,
127
159
  } );
128
160
 
129
- expect( onCollapseRow ).toHaveBeenCalledWith( row2Element );
161
+ expect( onCollapseRow ).toHaveBeenCalledWith( row1Element );
130
162
  } );
131
163
  } );
132
164
 
133
165
  describe( 'onFocusRow', () => {
134
166
  const TestTree = ( { onFocusRow } ) => (
135
167
  <TreeGrid onFocusRow={ onFocusRow }>
136
- <tr role="row" aria-expanded="false">
137
- <td>
168
+ <TreeGridRow level={ 1 } positionInSet={ 1 } setSize={ 3 }>
169
+ <TreeGridCell withoutGridItem>
138
170
  <TestButton>Row 1</TestButton>
139
- </td>
140
- </tr>
141
- <tr role="row" aria-expanded="true">
142
- <td>
171
+ </TreeGridCell>
172
+ </TreeGridRow>
173
+ <TreeGridRow level={ 1 } positionInSet={ 2 } setSize={ 3 }>
174
+ <TreeGridCell withoutGridItem>
143
175
  <TestButton>Row 2</TestButton>
144
- </td>
145
- </tr>
146
- <tr role="row" aria-expanded="false">
147
- <td>
176
+ </TreeGridCell>
177
+ </TreeGridRow>
178
+ <TreeGridRow level={ 1 } positionInSet={ 3 } setSize={ 3 }>
179
+ <TreeGridCell withoutGridItem>
148
180
  <TestButton>Row 3</TestButton>
149
- </td>
150
- </tr>
181
+ </TreeGridCell>
182
+ </TreeGridRow>
151
183
  </TreeGrid>
152
184
  );
153
185
 
@@ -173,6 +205,28 @@ describe( 'TreeGrid', () => {
173
205
  );
174
206
  } );
175
207
 
208
+ it( 'should call onFocusRow with event, start and end nodes when pressing End', () => {
209
+ const onFocusRow = jest.fn();
210
+ render( <TestTree onFocusRow={ onFocusRow } /> );
211
+
212
+ screen.getByText( 'Row 1' ).focus();
213
+
214
+ const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
215
+ const row3Element = screen.getByText( 'Row 3' ).closest( 'tr' );
216
+
217
+ fireEvent.keyDown( screen.getByText( 'Row 1' ), {
218
+ key: 'End',
219
+ keyCode: END,
220
+ currentTarget: row1Element,
221
+ } );
222
+
223
+ expect( onFocusRow ).toHaveBeenCalledWith(
224
+ expect.objectContaining( { key: 'End', keyCode: END } ),
225
+ row1Element,
226
+ row3Element
227
+ );
228
+ } );
229
+
176
230
  it( 'should call onFocusRow with event, start and end nodes when pressing Up Arrow', () => {
177
231
  const onFocusRow = jest.fn();
178
232
  render( <TestTree onFocusRow={ onFocusRow } /> );
@@ -195,6 +249,28 @@ describe( 'TreeGrid', () => {
195
249
  );
196
250
  } );
197
251
 
252
+ it( 'should call onFocusRow with event, start and end nodes when pressing Home', () => {
253
+ const onFocusRow = jest.fn();
254
+ render( <TestTree onFocusRow={ onFocusRow } /> );
255
+
256
+ screen.getByText( 'Row 3' ).focus();
257
+
258
+ const row3Element = screen.getByText( 'Row 3' ).closest( 'tr' );
259
+ const row1Element = screen.getByText( 'Row 1' ).closest( 'tr' );
260
+
261
+ fireEvent.keyDown( screen.getByText( 'Row 3' ), {
262
+ key: 'Home',
263
+ keyCode: HOME,
264
+ currentTarget: row3Element,
265
+ } );
266
+
267
+ expect( onFocusRow ).toHaveBeenCalledWith(
268
+ expect.objectContaining( { key: 'Home', keyCode: HOME } ),
269
+ row3Element,
270
+ row1Element
271
+ );
272
+ } );
273
+
198
274
  it( 'should call onFocusRow when shift key is held', () => {
199
275
  const onFocusRow = jest.fn();
200
276
  render( <TestTree onFocusRow={ onFocusRow } /> );
@@ -34,7 +34,7 @@ export function truncateMiddle( word, headLength, tailLength, ellipsis ) {
34
34
  const wordLength = word.length;
35
35
  // Setting default values
36
36
  // eslint-disable-next-line no-bitwise
37
- const frontLength = ~~headLength; // will cast to integer
37
+ const frontLength = ~~headLength; // Will cast to integer
38
38
  // eslint-disable-next-line no-bitwise
39
39
  const backLength = ~~tailLength;
40
40
  /* istanbul ignore next */
@@ -2,6 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { uniq } from 'lodash';
5
+ import type { ForwardedRef, ReactChild, ReactNode } from 'react';
5
6
 
6
7
  /**
7
8
  * WordPress dependencies
@@ -14,8 +15,13 @@ import warn from '@wordpress/warning';
14
15
  */
15
16
  import { CONNECT_STATIC_NAMESPACE } from './constants';
16
17
  import { getStyledClassNameFromKey } from './get-styled-class-name-from-key';
18
+ import type { WordPressComponentFromProps } from '.';
19
+
20
+ type ContextConnectOptions = {
21
+ /** Defaults to `false`. */
22
+ memo?: boolean;
23
+ };
17
24
 
18
- /* eslint-disable jsdoc/valid-types */
19
25
  /**
20
26
  * Forwards ref (React.ForwardRef) and "Connects" (or registers) a component
21
27
  * within the Context system under a specified namespace.
@@ -24,15 +30,16 @@ import { getStyledClassNameFromKey } from './get-styled-class-name-from-key';
24
30
  * The hope is that we can improve render performance by removing functional
25
31
  * component wrappers.
26
32
  *
27
- * @template {import('./wordpress-component').WordPressComponentProps<{}, any, any>} P
28
- * @param {(props: P, ref: import('react').Ref<any>) => JSX.Element | null} Component The component to register into the Context system.
29
- * @param {string} namespace The namespace to register the component under.
30
- * @param {Object} options
31
- * @param {boolean} [options.memo=false]
32
- * @return {import('./wordpress-component').WordPressComponentFromProps<P>} The connected WordPressComponent
33
+ * @param Component The component to register into the Context system.
34
+ * @param namespace The namespace to register the component under.
35
+ * @param options
36
+ * @return The connected WordPressComponent
33
37
  */
34
- export function contextConnect( Component, namespace, options = {} ) {
35
- /* eslint-enable jsdoc/valid-types */
38
+ export function contextConnect< P >(
39
+ Component: ( props: P, ref: ForwardedRef< any > ) => JSX.Element | null,
40
+ namespace: string,
41
+ options: ContextConnectOptions = {}
42
+ ): WordPressComponentFromProps< P > {
36
43
  const { memo: memoProp = false } = options;
37
44
 
38
45
  let WrappedComponent = forwardRef( Component );
@@ -75,10 +82,12 @@ export function contextConnect( Component, namespace, options = {} ) {
75
82
  /**
76
83
  * Attempts to retrieve the connected namespace from a component.
77
84
  *
78
- * @param {import('react').ReactChild | undefined | {}} Component The component to retrieve a namespace from.
79
- * @return {Array<string>} The connected namespaces.
85
+ * @param Component The component to retrieve a namespace from.
86
+ * @return The connected namespaces.
80
87
  */
81
- export function getConnectNamespace( Component ) {
88
+ export function getConnectNamespace(
89
+ Component: ReactChild | undefined | {}
90
+ ): string[] {
82
91
  if ( ! Component ) return [];
83
92
 
84
93
  let namespaces = [];
@@ -101,11 +110,13 @@ export function getConnectNamespace( Component ) {
101
110
  /**
102
111
  * Checks to see if a component is connected within the Context system.
103
112
  *
104
- * @param {import('react').ReactNode} Component The component to retrieve a namespace from.
105
- * @param {Array<string>|string} match The namespace to check.
106
- * @return {boolean} The result.
113
+ * @param Component The component to retrieve a namespace from.
114
+ * @param match The namespace to check.
107
115
  */
108
- export function hasConnectNamespace( Component, match ) {
116
+ export function hasConnectNamespace(
117
+ Component: ReactNode,
118
+ match: string[] | string
119
+ ): boolean {
109
120
  if ( ! Component ) return false;
110
121
 
111
122
  if ( typeof match === 'string' ) {
@@ -54,9 +54,9 @@ function useContextSystemBridge( { value } ) {
54
54
 
55
55
  useUpdateEffect( () => {
56
56
  if (
57
- // objects are equivalent
57
+ // Objects are equivalent.
58
58
  isEqual( valueRef.current, value ) &&
59
- // but not the same reference
59
+ // But not the same reference.
60
60
  valueRef.current !== value
61
61
  ) {
62
62
  warn( `Please memoize your context: ${ JSON.stringify( value ) }` );
File without changes
@@ -18,6 +18,7 @@ export type WordPressComponentProps<
18
18
  Omit< React.ComponentPropsWithRef< T >, 'as' | keyof P | 'children' > &
19
19
  ( IsPolymorphic extends true
20
20
  ? {
21
+ /** The HTML element or React component to render the component as. */
21
22
  as?: T | keyof JSX.IntrinsicElements;
22
23
  }
23
24
  : {} );
@@ -41,11 +41,11 @@ describe( 'props', () => {
41
41
  const invisibleTooltipTrigger = screen.getByText(
42
42
  invisibleTooltipTriggerContent
43
43
  );
44
- // The invisible tooltip should not render
44
+ // The invisible tooltip should not render.
45
45
  expect( tooltips ).toHaveLength( 1 );
46
- // Assert that the rendered tooltip is indeed the base tooltip
46
+ // Assert that the rendered tooltip is indeed the base tooltip.
47
47
  expect( tooltips[ 0 ].id ).toBe( baseTooltipId );
48
- // But the invisible tooltip's trigger still should have rendered
48
+ // But the invisible tooltip's trigger still should have rendered.
49
49
  expect( invisibleTooltipTrigger ).not.toBeUndefined();
50
50
  } );
51
51
 
@@ -71,7 +71,7 @@ describe( 'props', () => {
71
71
  </Tooltip>
72
72
  );
73
73
  const tooltips = screen.getAllByRole( /tooltip/ );
74
- // assert only the base tooltip rendered
74
+ // Assert only the base tooltip rendered.
75
75
  expect( tooltips ).toHaveLength( 1 );
76
76
  expect( tooltips[ 0 ].id ).toBe( baseTooltipId );
77
77
  } );
@@ -61,9 +61,9 @@ function _getComputedBackgroundColor( backgroundColor ) {
61
61
  if ( ! el ) return '';
62
62
 
63
63
  el.style.background = backgroundColor;
64
- // Grab the style
64
+ // Grab the style.
65
65
  const computedColor = window?.getComputedStyle( el ).background;
66
- // Reset
66
+ // Reset.
67
67
  el.style.background = '';
68
68
 
69
69
  return computedColor || '';
@@ -21,14 +21,14 @@ export function space( value?: SpaceInput ): string | undefined {
21
21
  return undefined;
22
22
  }
23
23
 
24
- // handle empty strings, if it's the number 0 this still works
24
+ // Handle empty strings, if it's the number 0 this still works.
25
25
  if ( ! value ) {
26
26
  return '0';
27
27
  }
28
28
 
29
29
  const asInt = typeof value === 'number' ? value : Number( value );
30
30
 
31
- // test if the input has a unit, was NaN, or was one of the named CSS values (like `auto`), in which case just use that value
31
+ // Test if the input has a unit, was NaN, or was one of the named CSS values (like `auto`), in which case just use that value.
32
32
  if (
33
33
  ( typeof window !== 'undefined' &&
34
34
  window.CSS?.supports?.( 'margin', value.toString() ) ) ||
@@ -96,7 +96,7 @@ Example:
96
96
 
97
97
  - Required: No
98
98
 
99
- ### `units`: `WPUnitControlUnitList`
99
+ ### `units`: `WPUnitControlUnit[]`
100
100
 
101
101
  Collection of available units.
102
102
 
@@ -16,7 +16,7 @@ import RangeCell from '../mobile/bottom-sheet/range-cell';
16
16
  import StepperCell from '../mobile/bottom-sheet/stepper-cell';
17
17
  import Picker from '../mobile/picker';
18
18
  import styles from './style.scss';
19
- import { CSS_UNITS, hasUnits, parseA11yLabelForUnit } from './utils';
19
+ import { CSS_UNITS, hasUnits, getAccessibleLabelForUnit } from './utils';
20
20
 
21
21
  /**
22
22
  * WordPress dependencies
@@ -116,6 +116,8 @@ function UnitControl( {
116
116
  };
117
117
 
118
118
  const renderUnitPicker = useCallback( () => {
119
+ // Keeping for legacy reasons, although `false` should not be a valid
120
+ // value for the `units` prop anymore.
119
121
  if ( units === false ) {
120
122
  return null;
121
123
  }
@@ -164,7 +166,7 @@ function UnitControl( {
164
166
  shouldDisplayTextInput
165
167
  decimalNum={ decimalNum }
166
168
  openUnitPicker={ onPickerPresent }
167
- unitLabel={ parseA11yLabelForUnit( unit ) }
169
+ unitLabel={ getAccessibleLabelForUnit( unit ) }
168
170
  { ...props }
169
171
  >
170
172
  { renderUnitPicker() }
@@ -182,7 +184,7 @@ function UnitControl( {
182
184
  separatorType={ separatorType }
183
185
  decimalNum={ decimalNum }
184
186
  openUnitPicker={ onPickerPresent }
185
- unitLabel={ parseA11yLabelForUnit( unit ) }
187
+ unitLabel={ getAccessibleLabelForUnit( unit ) }
186
188
  { ...props }
187
189
  >
188
190
  { renderUnitPicker() }
@@ -6,6 +6,7 @@ import type {
6
6
  KeyboardEvent,
7
7
  ForwardedRef,
8
8
  SyntheticEvent,
9
+ ChangeEvent,
9
10
  } from 'react';
10
11
  import { noop, omit } from 'lodash';
11
12
  import classnames from 'classnames';
@@ -13,7 +14,7 @@ import classnames from 'classnames';
13
14
  /**
14
15
  * WordPress dependencies
15
16
  */
16
- import { forwardRef, useMemo, useRef } from '@wordpress/element';
17
+ import { forwardRef, useMemo, useRef, useEffect } from '@wordpress/element';
17
18
  import { __ } from '@wordpress/i18n';
18
19
  import { ENTER } from '@wordpress/keycodes';
19
20
 
@@ -27,9 +28,9 @@ import { Root, ValueInput } from './styles/unit-control-styles';
27
28
  import UnitSelectControl from './unit-select-control';
28
29
  import {
29
30
  CSS_UNITS,
30
- getParsedValue,
31
+ getParsedQuantityAndUnit,
31
32
  getUnitsWithCurrentUnit,
32
- getValidParsedUnit,
33
+ getValidParsedQuantityAndUnit,
33
34
  } from './utils';
34
35
  import { useControlledState } from '../utils/hooks';
35
36
  import type { UnitControlProps, UnitControlOnChangeCallback } from './types';
@@ -57,29 +58,46 @@ function UnitControl(
57
58
  }: WordPressComponentProps< UnitControlProps, 'input', false >,
58
59
  forwardedRef: ForwardedRef< any >
59
60
  ) {
61
+ // The `value` prop, in theory, should not be `null`, but the following line
62
+ // ensures it fallback to `undefined` in case a consumer of `UnitControl`
63
+ // still passes `null` as a `value`.
64
+ const nonNullValueProp = valueProp ?? undefined;
60
65
  const units = useMemo(
61
- () => getUnitsWithCurrentUnit( valueProp, unitProp, unitsProp ),
62
- [ valueProp, unitProp, unitsProp ]
66
+ () => getUnitsWithCurrentUnit( nonNullValueProp, unitProp, unitsProp ),
67
+ [ nonNullValueProp, unitProp, unitsProp ]
63
68
  );
64
- const [ value, initialUnit ] = getParsedValue( valueProp, unitProp, units );
69
+ const [ parsedQuantity, parsedUnit ] = getParsedQuantityAndUnit(
70
+ nonNullValueProp,
71
+ unitProp,
72
+ units
73
+ );
74
+
65
75
  const [ unit, setUnit ] = useControlledState< string | undefined >(
66
76
  unitProp,
67
77
  {
68
- initial: initialUnit,
78
+ initial: parsedUnit,
69
79
  fallback: '',
70
80
  }
71
81
  );
72
82
 
73
- // Stores parsed value for hand-off in state reducer
74
- const refParsedValue = useRef< string | null >( null );
83
+ useEffect( () => {
84
+ setUnit( parsedUnit );
85
+ }, [ parsedUnit ] );
86
+
87
+ // Stores parsed value for hand-off in state reducer.
88
+ const refParsedQuantity = useRef< number | undefined >( undefined );
75
89
 
76
90
  const classes = classnames( 'components-unit-control', className );
77
91
 
78
- const handleOnChange: UnitControlOnChangeCallback = (
79
- next,
80
- changeProps
92
+ const handleOnQuantityChange = (
93
+ nextQuantityValue: number | string | undefined,
94
+ changeProps: { event: ChangeEvent< HTMLInputElement > }
81
95
  ) => {
82
- if ( next === '' ) {
96
+ if (
97
+ nextQuantityValue === '' ||
98
+ typeof nextQuantityValue === 'undefined' ||
99
+ nextQuantityValue === null
100
+ ) {
83
101
  onChange( '', changeProps );
84
102
  return;
85
103
  }
@@ -88,53 +106,64 @@ function UnitControl(
88
106
  * Customizing the onChange callback.
89
107
  * This allows as to broadcast a combined value+unit to onChange.
90
108
  */
91
- next = getValidParsedUnit( next, units, value, unit ).join( '' );
109
+ const onChangeValue = getValidParsedQuantityAndUnit(
110
+ nextQuantityValue,
111
+ units,
112
+ parsedQuantity,
113
+ unit
114
+ ).join( '' );
92
115
 
93
- onChange( next, changeProps );
116
+ onChange( onChangeValue, changeProps );
94
117
  };
95
118
 
96
119
  const handleOnUnitChange: UnitControlOnChangeCallback = (
97
- next,
120
+ nextUnitValue,
98
121
  changeProps
99
122
  ) => {
100
123
  const { data } = changeProps;
101
124
 
102
- let nextValue = `${ value }${ next }`;
125
+ let nextValue = `${ parsedQuantity ?? '' }${ nextUnitValue }`;
103
126
 
104
127
  if ( isResetValueOnUnitChange && data?.default !== undefined ) {
105
- nextValue = `${ data.default }${ next }`;
128
+ nextValue = `${ data.default }${ nextUnitValue }`;
106
129
  }
107
130
 
108
131
  onChange( nextValue, changeProps );
109
- onUnitChange( next, changeProps );
132
+ onUnitChange( nextUnitValue, changeProps );
110
133
 
111
- setUnit( next );
134
+ setUnit( nextUnitValue );
112
135
  };
113
136
 
114
137
  const mayUpdateUnit = ( event: SyntheticEvent< HTMLInputElement > ) => {
115
138
  if ( ! isNaN( Number( event.currentTarget.value ) ) ) {
116
- refParsedValue.current = null;
139
+ refParsedQuantity.current = undefined;
117
140
  return;
118
141
  }
119
- const [ parsedValue, parsedUnit ] = getValidParsedUnit(
142
+ const [
143
+ validParsedQuantity,
144
+ validParsedUnit,
145
+ ] = getValidParsedQuantityAndUnit(
120
146
  event.currentTarget.value,
121
147
  units,
122
- value,
148
+ parsedQuantity,
123
149
  unit
124
150
  );
125
151
 
126
- refParsedValue.current = parsedValue.toString();
152
+ refParsedQuantity.current = validParsedQuantity;
127
153
 
128
- if ( isPressEnterToChange && parsedUnit !== unit ) {
154
+ if ( isPressEnterToChange && validParsedUnit !== unit ) {
129
155
  const data = Array.isArray( units )
130
- ? units.find( ( option ) => option.value === parsedUnit )
156
+ ? units.find( ( option ) => option.value === validParsedUnit )
131
157
  : undefined;
132
158
  const changeProps = { event, data };
133
159
 
134
- onChange( `${ parsedValue }${ parsedUnit }`, changeProps );
135
- onUnitChange( parsedUnit, changeProps );
160
+ onChange(
161
+ `${ validParsedQuantity ?? '' }${ validParsedUnit }`,
162
+ changeProps
163
+ );
164
+ onUnitChange( validParsedUnit, changeProps );
136
165
 
137
- setUnit( parsedUnit );
166
+ setUnit( validParsedUnit );
138
167
  }
139
168
  };
140
169
 
@@ -163,9 +192,9 @@ function UnitControl(
163
192
  * then use that result to update the state.
164
193
  */
165
194
  if ( action.type === inputControlActionTypes.COMMIT ) {
166
- if ( refParsedValue.current !== null ) {
167
- state.value = refParsedValue.current;
168
- refParsedValue.current = null;
195
+ if ( refParsedQuantity.current !== undefined ) {
196
+ state.value = ( refParsedQuantity.current ?? '' ).toString();
197
+ refParsedQuantity.current = undefined;
169
198
  }
170
199
  }
171
200
 
@@ -209,11 +238,11 @@ function UnitControl(
209
238
  label={ label }
210
239
  onBlur={ handleOnBlur }
211
240
  onKeyDown={ handleOnKeyDown }
212
- onChange={ handleOnChange }
241
+ onChange={ handleOnQuantityChange }
213
242
  ref={ forwardedRef }
214
243
  size={ size }
215
244
  suffix={ inputSuffix }
216
- value={ value }
245
+ value={ parsedQuantity ?? '' }
217
246
  step={ step }
218
247
  __unstableStateReducer={ composeStateReducers(
219
248
  unitControlStateReducer,
@@ -242,5 +271,5 @@ function UnitControl(
242
271
  */
243
272
  const ForwardedUnitControl = forwardRef( UnitControl );
244
273
 
245
- export { parseUnit, useCustomUnits } from './utils';
274
+ export { parseQuantityAndUnitFromRawValue, useCustomUnits } from './utils';
246
275
  export default ForwardedUnitControl;