@wordpress/components 19.4.1 → 19.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/CONTRIBUTING.md +69 -2
  3. package/build/box-control/unit-control.js +2 -2
  4. package/build/box-control/unit-control.js.map +1 -1
  5. package/build/card/card/component.js +2 -2
  6. package/build/card/card/component.js.map +1 -1
  7. package/build/card/card-body/component.js +1 -1
  8. package/build/card/card-body/component.js.map +1 -1
  9. package/build/card/card-divider/component.js +1 -1
  10. package/build/card/card-divider/component.js.map +1 -1
  11. package/build/card/card-footer/component.js +1 -1
  12. package/build/card/card-footer/component.js.map +1 -1
  13. package/build/card/card-header/component.js +1 -1
  14. package/build/card/card-header/component.js.map +1 -1
  15. package/build/card/card-media/component.js +1 -1
  16. package/build/card/card-media/component.js.map +1 -1
  17. package/build/color-palette/index.native.js +35 -30
  18. package/build/color-palette/index.native.js.map +1 -1
  19. package/build/color-picker/component.js.map +1 -1
  20. package/build/color-picker/hex-input.js +6 -9
  21. package/build/color-picker/hex-input.js.map +1 -1
  22. package/build/confirm-dialog/component.js.map +1 -1
  23. package/build/divider/component.js.map +1 -1
  24. package/build/elevation/component.js +1 -1
  25. package/build/elevation/component.js.map +1 -1
  26. package/build/flex/flex/component.js +1 -1
  27. package/build/flex/flex/component.js.map +1 -1
  28. package/build/flex/flex-block/component.js +1 -1
  29. package/build/flex/flex-block/component.js.map +1 -1
  30. package/build/flex/flex-item/component.js +1 -1
  31. package/build/flex/flex-item/component.js.map +1 -1
  32. package/build/flyout/flyout/component.js +1 -1
  33. package/build/flyout/flyout/component.js.map +1 -1
  34. package/build/flyout/flyout-content/component.js +1 -1
  35. package/build/flyout/flyout-content/component.js.map +1 -1
  36. package/build/focal-point-picker/index.js +18 -12
  37. package/build/focal-point-picker/index.js.map +1 -1
  38. package/build/font-size-picker/index.js +0 -1
  39. package/build/font-size-picker/index.js.map +1 -1
  40. package/build/grid/component.js +1 -1
  41. package/build/grid/component.js.map +1 -1
  42. package/build/h-stack/component.js +1 -1
  43. package/build/h-stack/component.js.map +1 -1
  44. package/build/heading/component.js.map +1 -1
  45. package/build/index.js +12 -0
  46. package/build/index.js.map +1 -1
  47. package/build/index.native.js +15 -1
  48. package/build/index.native.js.map +1 -1
  49. package/build/input-control/index.js.map +1 -1
  50. package/build/input-control/input-base.js.map +1 -1
  51. package/build/input-control/input-field.js +7 -7
  52. package/build/input-control/input-field.js.map +1 -1
  53. package/build/input-control/reducer/reducer.js +3 -0
  54. package/build/input-control/reducer/reducer.js.map +1 -1
  55. package/build/item-group/item/component.js.map +1 -1
  56. package/build/item-group/item-group/component.js.map +1 -1
  57. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  58. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  59. package/build/mobile/color-settings/palette.screen.native.js +26 -9
  60. package/build/mobile/color-settings/palette.screen.native.js.map +1 -1
  61. package/build/mobile/global-styles-context/utils.native.js +63 -9
  62. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  63. package/build/navigator/index.js +16 -0
  64. package/build/navigator/index.js.map +1 -1
  65. package/build/navigator/navigator-back-button/component.js +72 -0
  66. package/build/navigator/navigator-back-button/component.js.map +1 -0
  67. package/build/navigator/navigator-back-button/hook.js +49 -0
  68. package/build/navigator/navigator-back-button/hook.js.map +1 -0
  69. package/build/navigator/navigator-back-button/index.js +16 -0
  70. package/build/navigator/navigator-back-button/index.js.map +1 -0
  71. package/build/navigator/navigator-button/component.js +71 -0
  72. package/build/navigator/navigator-button/component.js.map +1 -0
  73. package/build/navigator/navigator-button/hook.js +59 -0
  74. package/build/navigator/navigator-button/hook.js.map +1 -0
  75. package/build/navigator/navigator-button/index.js +16 -0
  76. package/build/navigator/navigator-button/index.js.map +1 -0
  77. package/build/navigator/navigator-provider/component.js +11 -21
  78. package/build/navigator/navigator-provider/component.js.map +1 -1
  79. package/build/navigator/navigator-screen/component.js +14 -22
  80. package/build/navigator/navigator-screen/component.js.map +1 -1
  81. package/build/resizable-box/index.js.map +1 -1
  82. package/build/resizable-box/resize-tooltip/index.js.map +1 -1
  83. package/build/resizable-box/resize-tooltip/label.js.map +1 -1
  84. package/build/scrollable/component.js +1 -1
  85. package/build/scrollable/component.js.map +1 -1
  86. package/build/select-control/index.js.map +1 -1
  87. package/build/spacer/component.js.map +1 -1
  88. package/build/surface/component.js +1 -1
  89. package/build/surface/component.js.map +1 -1
  90. package/build/text/component.js +1 -1
  91. package/build/text/component.js.map +1 -1
  92. package/build/text-control/index.js +2 -2
  93. package/build/text-control/index.js.map +1 -1
  94. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  95. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  96. package/build/tools-panel/tools-panel/component.js.map +1 -1
  97. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  98. package/build/tools-panel/tools-panel-item/component.js.map +1 -1
  99. package/build/tree-grid/index.js +50 -6
  100. package/build/tree-grid/index.js.map +1 -1
  101. package/build/truncate/component.js +1 -1
  102. package/build/truncate/component.js.map +1 -1
  103. package/build/ui/control-group/component.js +1 -1
  104. package/build/ui/control-group/component.js.map +1 -1
  105. package/build/ui/control-label/component.js +1 -1
  106. package/build/ui/control-label/component.js.map +1 -1
  107. package/build/ui/form-group/form-group.js +1 -1
  108. package/build/ui/form-group/form-group.js.map +1 -1
  109. package/build/ui/shortcut/component.js.map +1 -1
  110. package/build/ui/spinner/component.js +1 -1
  111. package/build/ui/spinner/component.js.map +1 -1
  112. package/build/ui/tooltip/component.js +1 -1
  113. package/build/ui/tooltip/component.js.map +1 -1
  114. package/build/ui/tooltip/content.js +1 -1
  115. package/build/ui/tooltip/content.js.map +1 -1
  116. package/build/unit-control/index.js.map +1 -1
  117. package/build/v-stack/component.js +1 -1
  118. package/build/v-stack/component.js.map +1 -1
  119. package/build/visually-hidden/component.js +1 -1
  120. package/build/visually-hidden/component.js.map +1 -1
  121. package/build/z-stack/component.js.map +1 -1
  122. package/build-module/box-control/unit-control.js +1 -1
  123. package/build-module/box-control/unit-control.js.map +1 -1
  124. package/build-module/card/card/component.js +2 -2
  125. package/build-module/card/card/component.js.map +1 -1
  126. package/build-module/card/card-body/component.js +1 -1
  127. package/build-module/card/card-body/component.js.map +1 -1
  128. package/build-module/card/card-divider/component.js +1 -1
  129. package/build-module/card/card-divider/component.js.map +1 -1
  130. package/build-module/card/card-footer/component.js +1 -1
  131. package/build-module/card/card-footer/component.js.map +1 -1
  132. package/build-module/card/card-header/component.js +1 -1
  133. package/build-module/card/card-header/component.js.map +1 -1
  134. package/build-module/card/card-media/component.js +1 -1
  135. package/build-module/card/card-media/component.js.map +1 -1
  136. package/build-module/color-palette/index.native.js +36 -31
  137. package/build-module/color-palette/index.native.js.map +1 -1
  138. package/build-module/color-picker/component.js.map +1 -1
  139. package/build-module/color-picker/hex-input.js +6 -9
  140. package/build-module/color-picker/hex-input.js.map +1 -1
  141. package/build-module/confirm-dialog/component.js.map +1 -1
  142. package/build-module/divider/component.js.map +1 -1
  143. package/build-module/elevation/component.js +1 -1
  144. package/build-module/elevation/component.js.map +1 -1
  145. package/build-module/flex/flex/component.js +1 -1
  146. package/build-module/flex/flex/component.js.map +1 -1
  147. package/build-module/flex/flex-block/component.js +1 -1
  148. package/build-module/flex/flex-block/component.js.map +1 -1
  149. package/build-module/flex/flex-item/component.js +1 -1
  150. package/build-module/flex/flex-item/component.js.map +1 -1
  151. package/build-module/flyout/flyout/component.js +1 -1
  152. package/build-module/flyout/flyout/component.js.map +1 -1
  153. package/build-module/flyout/flyout-content/component.js +1 -1
  154. package/build-module/flyout/flyout-content/component.js.map +1 -1
  155. package/build-module/focal-point-picker/index.js +18 -12
  156. package/build-module/focal-point-picker/index.js.map +1 -1
  157. package/build-module/font-size-picker/index.js +0 -1
  158. package/build-module/font-size-picker/index.js.map +1 -1
  159. package/build-module/grid/component.js +1 -1
  160. package/build-module/grid/component.js.map +1 -1
  161. package/build-module/h-stack/component.js +1 -1
  162. package/build-module/h-stack/component.js.map +1 -1
  163. package/build-module/heading/component.js.map +1 -1
  164. package/build-module/index.js +1 -1
  165. package/build-module/index.js.map +1 -1
  166. package/build-module/index.native.js +1 -1
  167. package/build-module/index.native.js.map +1 -1
  168. package/build-module/input-control/index.js.map +1 -1
  169. package/build-module/input-control/input-base.js.map +1 -1
  170. package/build-module/input-control/input-field.js +6 -6
  171. package/build-module/input-control/input-field.js.map +1 -1
  172. package/build-module/input-control/reducer/reducer.js +3 -0
  173. package/build-module/input-control/reducer/reducer.js.map +1 -1
  174. package/build-module/item-group/item/component.js.map +1 -1
  175. package/build-module/item-group/item-group/component.js.map +1 -1
  176. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  177. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  178. package/build-module/mobile/color-settings/palette.screen.native.js +27 -10
  179. package/build-module/mobile/color-settings/palette.screen.native.js.map +1 -1
  180. package/build-module/mobile/global-styles-context/utils.native.js +60 -10
  181. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  182. package/build-module/navigator/index.js +2 -0
  183. package/build-module/navigator/index.js.map +1 -1
  184. package/build-module/navigator/navigator-back-button/component.js +59 -0
  185. package/build-module/navigator/navigator-back-button/component.js.map +1 -0
  186. package/build-module/navigator/navigator-back-button/hook.js +36 -0
  187. package/build-module/navigator/navigator-back-button/hook.js.map +1 -0
  188. package/build-module/navigator/navigator-back-button/index.js +2 -0
  189. package/build-module/navigator/navigator-back-button/index.js.map +1 -0
  190. package/build-module/navigator/navigator-button/component.js +58 -0
  191. package/build-module/navigator/navigator-button/component.js.map +1 -0
  192. package/build-module/navigator/navigator-button/hook.js +46 -0
  193. package/build-module/navigator/navigator-button/hook.js.map +1 -0
  194. package/build-module/navigator/navigator-button/index.js +2 -0
  195. package/build-module/navigator/navigator-button/index.js.map +1 -0
  196. package/build-module/navigator/navigator-provider/component.js +11 -21
  197. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  198. package/build-module/navigator/navigator-screen/component.js +13 -22
  199. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  200. package/build-module/resizable-box/index.js.map +1 -1
  201. package/build-module/resizable-box/resize-tooltip/index.js.map +1 -1
  202. package/build-module/resizable-box/resize-tooltip/label.js.map +1 -1
  203. package/build-module/scrollable/component.js +1 -1
  204. package/build-module/scrollable/component.js.map +1 -1
  205. package/build-module/select-control/index.js +1 -1
  206. package/build-module/select-control/index.js.map +1 -1
  207. package/build-module/spacer/component.js.map +1 -1
  208. package/build-module/surface/component.js +1 -1
  209. package/build-module/surface/component.js.map +1 -1
  210. package/build-module/text/component.js +1 -1
  211. package/build-module/text/component.js.map +1 -1
  212. package/build-module/text-control/index.js +2 -2
  213. package/build-module/text-control/index.js.map +1 -1
  214. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  215. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  216. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  217. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  218. package/build-module/tools-panel/tools-panel-item/component.js.map +1 -1
  219. package/build-module/tree-grid/index.js +51 -7
  220. package/build-module/tree-grid/index.js.map +1 -1
  221. package/build-module/truncate/component.js +1 -1
  222. package/build-module/truncate/component.js.map +1 -1
  223. package/build-module/ui/control-group/component.js +1 -1
  224. package/build-module/ui/control-group/component.js.map +1 -1
  225. package/build-module/ui/control-label/component.js +1 -1
  226. package/build-module/ui/control-label/component.js.map +1 -1
  227. package/build-module/ui/form-group/form-group.js +1 -1
  228. package/build-module/ui/form-group/form-group.js.map +1 -1
  229. package/build-module/ui/shortcut/component.js.map +1 -1
  230. package/build-module/ui/spinner/component.js +1 -1
  231. package/build-module/ui/spinner/component.js.map +1 -1
  232. package/build-module/ui/tooltip/component.js +1 -1
  233. package/build-module/ui/tooltip/component.js.map +1 -1
  234. package/build-module/ui/tooltip/content.js +1 -1
  235. package/build-module/ui/tooltip/content.js.map +1 -1
  236. package/build-module/unit-control/index.js.map +1 -1
  237. package/build-module/v-stack/component.js +1 -1
  238. package/build-module/v-stack/component.js.map +1 -1
  239. package/build-module/visually-hidden/component.js +1 -1
  240. package/build-module/visually-hidden/component.js.map +1 -1
  241. package/build-module/z-stack/component.js.map +1 -1
  242. package/build-types/card/card-divider/hook.d.ts +0 -1
  243. package/build-types/card/card-divider/hook.d.ts.map +1 -1
  244. package/build-types/color-picker/styles.d.ts +2 -4
  245. package/build-types/color-picker/styles.d.ts.map +1 -1
  246. package/build-types/confirm-dialog/component.d.ts +2 -6
  247. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  248. package/build-types/flyout/flyout/hook.d.ts +0 -1
  249. package/build-types/flyout/flyout/hook.d.ts.map +1 -1
  250. package/build-types/input-control/index.d.ts +3 -3
  251. package/build-types/input-control/index.d.ts.map +1 -1
  252. package/build-types/input-control/input-base.d.ts +2 -2
  253. package/build-types/input-control/input-base.d.ts.map +1 -1
  254. package/build-types/input-control/input-field.d.ts +1 -3
  255. package/build-types/input-control/input-field.d.ts.map +1 -1
  256. package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
  257. package/build-types/input-control/types.d.ts +1 -1
  258. package/build-types/input-control/types.d.ts.map +1 -1
  259. package/build-types/navigator/index.d.ts +2 -0
  260. package/build-types/navigator/index.d.ts.map +1 -1
  261. package/build-types/navigator/navigator-back-button/component.d.ts +38 -0
  262. package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -0
  263. package/build-types/navigator/navigator-back-button/hook.d.ts +282 -0
  264. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -0
  265. package/build-types/navigator/navigator-back-button/index.d.ts +2 -0
  266. package/build-types/navigator/navigator-back-button/index.d.ts.map +1 -0
  267. package/build-types/navigator/navigator-button/component.d.ts +37 -0
  268. package/build-types/navigator/navigator-button/component.d.ts.map +1 -0
  269. package/build-types/navigator/navigator-button/hook.d.ts +282 -0
  270. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -0
  271. package/build-types/navigator/navigator-button/index.d.ts +2 -0
  272. package/build-types/navigator/navigator-button/index.d.ts.map +1 -0
  273. package/build-types/navigator/navigator-provider/component.d.ts +10 -20
  274. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  275. package/build-types/navigator/navigator-screen/component.d.ts +10 -20
  276. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  277. package/build-types/navigator/types.d.ts +21 -0
  278. package/build-types/navigator/types.d.ts.map +1 -1
  279. package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
  280. package/build-types/resizable-box/index.d.ts +2 -2
  281. package/build-types/resizable-box/index.d.ts.map +1 -1
  282. package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
  283. package/build-types/select-control/index.d.ts +1 -3
  284. package/build-types/select-control/index.d.ts.map +1 -1
  285. package/build-types/ui/context/wordpress-component.d.ts +2 -6
  286. package/build-types/ui/context/wordpress-component.d.ts.map +1 -1
  287. package/build-types/unit-control/index.d.ts +1 -3
  288. package/build-types/unit-control/index.d.ts.map +1 -1
  289. package/build-types/z-stack/component.d.ts.map +1 -1
  290. package/package.json +8 -7
  291. package/src/alignment-matrix-control/README.md +4 -0
  292. package/src/alignment-matrix-control/stories/index.js +1 -1
  293. package/src/base-control/stories/index.js +65 -22
  294. package/src/box-control/stories/index.js +4 -1
  295. package/src/box-control/unit-control.js +1 -1
  296. package/src/card/card/component.js +1 -1
  297. package/src/card/card-body/component.js +1 -1
  298. package/src/card/card-divider/component.js +1 -1
  299. package/src/card/card-footer/component.js +1 -1
  300. package/src/card/card-header/component.js +1 -1
  301. package/src/card/card-media/component.js +1 -1
  302. package/src/color-palette/index.native.js +92 -75
  303. package/src/color-palette/style.native.scss +10 -5
  304. package/src/color-picker/component.tsx +2 -2
  305. package/src/color-picker/hex-input.tsx +9 -9
  306. package/src/confirm-dialog/component.tsx +2 -2
  307. package/src/divider/component.tsx +2 -2
  308. package/src/elevation/component.js +1 -1
  309. package/src/flex/flex/component.js +1 -1
  310. package/src/flex/flex-block/component.js +1 -1
  311. package/src/flex/flex-item/component.js +1 -1
  312. package/src/flyout/flyout/component.js +1 -1
  313. package/src/flyout/flyout-content/component.js +1 -1
  314. package/src/focal-point-picker/README.md +7 -0
  315. package/src/focal-point-picker/index.js +12 -7
  316. package/src/focal-point-picker/stories/index.js +30 -0
  317. package/src/focal-point-picker/test/index.js +44 -0
  318. package/src/font-size-picker/index.js +0 -1
  319. package/src/form-file-upload/README.md +1 -1
  320. package/src/form-file-upload/stories/index.js +51 -0
  321. package/src/grid/component.js +1 -1
  322. package/src/h-stack/component.js +1 -1
  323. package/src/heading/component.tsx +2 -2
  324. package/src/index.js +2 -0
  325. package/src/index.native.js +5 -1
  326. package/src/input-control/index.tsx +2 -2
  327. package/src/input-control/input-base.tsx +2 -2
  328. package/src/input-control/input-field.tsx +4 -6
  329. package/src/input-control/reducer/reducer.ts +3 -0
  330. package/src/input-control/stories/index.js +1 -1
  331. package/src/input-control/types.ts +1 -1
  332. package/src/item-group/item/component.tsx +2 -2
  333. package/src/item-group/item-group/component.tsx +2 -2
  334. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +10 -1
  335. package/src/mobile/color-settings/palette.screen.native.js +39 -9
  336. package/src/mobile/color-settings/style.native.scss +4 -0
  337. package/src/mobile/global-styles-context/test/fixtures/theme.native.js +27 -0
  338. package/src/mobile/global-styles-context/test/utils.native.js +2 -2
  339. package/src/mobile/global-styles-context/utils.native.js +75 -6
  340. package/src/navigation/stories/index.js +1 -1
  341. package/src/navigator/index.ts +2 -0
  342. package/src/navigator/navigator-back-button/README.md +31 -0
  343. package/src/navigator/navigator-back-button/component.tsx +62 -0
  344. package/src/navigator/navigator-back-button/hook.ts +40 -0
  345. package/src/navigator/navigator-back-button/index.ts +1 -0
  346. package/src/navigator/navigator-button/README.md +38 -0
  347. package/src/navigator/navigator-button/component.tsx +61 -0
  348. package/src/navigator/navigator-button/hook.ts +55 -0
  349. package/src/navigator/navigator-button/index.ts +1 -0
  350. package/src/navigator/navigator-provider/README.md +20 -33
  351. package/src/navigator/navigator-provider/component.tsx +12 -22
  352. package/src/navigator/navigator-screen/README.md +1 -1
  353. package/src/navigator/navigator-screen/component.tsx +14 -23
  354. package/src/navigator/stories/index.js +24 -37
  355. package/src/navigator/test/index.js +89 -34
  356. package/src/navigator/types.ts +26 -0
  357. package/src/number-control/stories/index.js +1 -1
  358. package/src/radio/stories/index.js +1 -1
  359. package/src/radio-group/stories/index.js +4 -1
  360. package/src/resizable-box/index.tsx +2 -2
  361. package/src/resizable-box/resize-tooltip/index.tsx +2 -2
  362. package/src/resizable-box/resize-tooltip/label.tsx +2 -2
  363. package/src/scrollable/component.js +1 -1
  364. package/src/select-control/index.tsx +2 -3
  365. package/src/spacer/component.tsx +2 -2
  366. package/src/surface/component.js +1 -1
  367. package/src/text/component.js +1 -1
  368. package/src/text-control/index.js +2 -2
  369. package/src/toggle-group-control/stories/index.js +1 -1
  370. package/src/toggle-group-control/toggle-group-control/component.tsx +2 -2
  371. package/src/toggle-group-control/toggle-group-control-option/component.tsx +2 -2
  372. package/src/tools-panel/stories/index.js +0 -1
  373. package/src/tools-panel/tools-panel/component.tsx +2 -2
  374. package/src/tools-panel/tools-panel-header/component.tsx +2 -2
  375. package/src/tools-panel/tools-panel-item/component.tsx +2 -2
  376. package/src/tree-grid/README.md +24 -1
  377. package/src/tree-grid/index.js +66 -7
  378. package/src/tree-grid/stories/index.js +4 -1
  379. package/src/tree-grid/test/__snapshots__/index.js.snap +1 -14
  380. package/src/tree-grid/test/index.js +226 -7
  381. package/src/truncate/component.js +1 -1
  382. package/src/ui/context/wordpress-component.ts +2 -2
  383. package/src/ui/control-group/component.js +1 -1
  384. package/src/ui/control-label/component.js +1 -1
  385. package/src/ui/form-group/form-group.js +1 -1
  386. package/src/ui/shortcut/component.tsx +2 -2
  387. package/src/ui/spinner/component.js +1 -1
  388. package/src/ui/tooltip/component.js +1 -1
  389. package/src/ui/tooltip/content.js +1 -1
  390. package/src/unit-control/index.tsx +2 -2
  391. package/src/unit-control/stories/index.js +1 -1
  392. package/src/v-stack/component.js +1 -1
  393. package/src/visually-hidden/component.js +1 -1
  394. package/src/z-stack/component.tsx +2 -2
  395. package/tsconfig.tsbuildinfo +1 -1
  396. package/src/tools-panel/stories/typography-panel.js +0 -215
@@ -43,3 +43,29 @@ export type NavigatorScreenProps = {
43
43
  */
44
44
  children: ReactNode;
45
45
  };
46
+
47
+ type ButtonProps = {
48
+ // TODO: should also extend `Button` prop types once the `Button` component
49
+ // is refactored to TypeScript.
50
+ };
51
+ export type NavigatorBackButtonProps = Omit< ButtonProps, 'href' > & {
52
+ /**
53
+ * The children elements.
54
+ */
55
+ children: ReactNode;
56
+ };
57
+
58
+ export type NavigatorButtonProps = NavigatorBackButtonProps & {
59
+ /**
60
+ * The path of the screen to navigate to. The value of this prop needs to be
61
+ * a valid value for an HTML attribute.
62
+ */
63
+ path: string;
64
+ /**
65
+ * The HTML attribute used to identify the `NavigatorButton`, which is used
66
+ * by `Navigator` to restore focus.
67
+ *
68
+ * @default 'id'
69
+ */
70
+ attributeName?: string;
71
+ };
@@ -14,7 +14,7 @@ import { useState } from '@wordpress/element';
14
14
  import NumberControl from '../';
15
15
 
16
16
  export default {
17
- title: 'Components/NumberControl',
17
+ title: 'Components (Experimental)/NumberControl',
18
18
  component: NumberControl,
19
19
  parameters: {
20
20
  knobs: { disable: false },
@@ -4,7 +4,7 @@
4
4
  import RadioGroup from '../../radio-group';
5
5
  import Radio from '../';
6
6
 
7
- export default { title: 'Components/Radio', component: Radio };
7
+ export default { title: 'Components (Experimental)/Radio', component: Radio };
8
8
 
9
9
  export const _default = () => {
10
10
  // Radio components must be a descendent of a RadioGroup component.
@@ -9,7 +9,10 @@ import { useState } from '@wordpress/element';
9
9
  import Radio from '../../radio';
10
10
  import RadioGroup from '../';
11
11
 
12
- export default { title: 'Components/RadioGroup', component: RadioGroup };
12
+ export default {
13
+ title: 'Components (Experimental)/RadioGroup',
14
+ component: RadioGroup,
15
+ };
13
16
 
14
17
  export const _default = () => {
15
18
  /* eslint-disable no-restricted-syntax */
@@ -9,7 +9,7 @@ import { forwardRef } from '@wordpress/element';
9
9
  import classnames from 'classnames';
10
10
  import { Resizable } from 're-resizable';
11
11
  import type { ResizableProps } from 're-resizable';
12
- import type { ReactNode, Ref } from 'react';
12
+ import type { ReactNode, ForwardedRef } from 'react';
13
13
 
14
14
  /**
15
15
  * Internal dependencies
@@ -104,7 +104,7 @@ function ResizableBox(
104
104
  __experimentalTooltipProps: tooltipProps = {},
105
105
  ...props
106
106
  }: ResizableBoxProps,
107
- ref: Ref< Resizable >
107
+ ref: ForwardedRef< Resizable >
108
108
  ): JSX.Element {
109
109
  return (
110
110
  <Resizable
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { noop } from 'lodash';
5
5
  import classnames from 'classnames';
6
- import type { Ref } from 'react';
6
+ import type { Ref, ForwardedRef } from 'react';
7
7
 
8
8
  /**
9
9
  * WordPress dependencies
@@ -43,7 +43,7 @@ function ResizeTooltip(
43
43
  zIndex = 1000,
44
44
  ...props
45
45
  }: ResizeTooltipProps,
46
- ref: Ref< HTMLDivElement >
46
+ ref: ForwardedRef< HTMLDivElement >
47
47
  ): JSX.Element | null {
48
48
  const { label, resizeListener } = useResizeLabel( {
49
49
  axis,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -33,7 +33,7 @@ type LabelProps = React.DetailedHTMLProps<
33
33
 
34
34
  function Label(
35
35
  { label, position = POSITIONS.corner, zIndex = 1000, ...props }: LabelProps,
36
- ref: Ref< HTMLDivElement >
36
+ ref: ForwardedRef< HTMLDivElement >
37
37
  ): JSX.Element | null {
38
38
  const showLabel = !! label;
39
39
 
@@ -7,7 +7,7 @@ import { useScrollable } from './hook';
7
7
 
8
8
  /**
9
9
  * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'div'>} props
10
- * @param {import('react').Ref<any>} forwardedRef
10
+ * @param {import('react').ForwardedRef<any>} forwardedRef
11
11
  */
12
12
  function Scrollable( props, forwardedRef ) {
13
13
  const scrollableProps = useScrollable( props );
@@ -3,8 +3,7 @@
3
3
  */
4
4
  import { isEmpty, noop } from 'lodash';
5
5
  import classNames from 'classnames';
6
- // eslint-disable-next-line no-restricted-imports
7
- import type { ChangeEvent, FocusEvent, ReactNode, Ref } from 'react';
6
+ import type { ChangeEvent, FocusEvent, ReactNode, ForwardedRef } from 'react';
8
7
 
9
8
  /**
10
9
  * WordPress dependencies
@@ -74,7 +73,7 @@ function SelectControl(
74
73
  suffix,
75
74
  ...props
76
75
  }: WordPressComponentProps< SelectControlProps, 'select', false >,
77
- ref: Ref< HTMLSelectElement >
76
+ ref: ForwardedRef< HTMLSelectElement >
78
77
  ) {
79
78
  const [ isFocused, setIsFocused ] = useState( false );
80
79
  const id = useUniqueId( idProp );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -13,7 +13,7 @@ import type { Props } from './types';
13
13
 
14
14
  function Spacer(
15
15
  props: WordPressComponentProps< Props, 'div' >,
16
- forwardedRef: Ref< any >
16
+ forwardedRef: ForwardedRef< any >
17
17
  ) {
18
18
  const spacerProps = useSpacer( props );
19
19
 
@@ -7,7 +7,7 @@ import { useSurface } from './hook';
7
7
 
8
8
  /**
9
9
  * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'div'>} props
10
- * @param {import('react').Ref<any>} forwardedRef
10
+ * @param {import('react').ForwardedRef<any>} forwardedRef
11
11
  */
12
12
  function Surface( props, forwardedRef ) {
13
13
  const surfaceProps = useSurface( props );
@@ -7,7 +7,7 @@ import useText from './hook';
7
7
 
8
8
  /**
9
9
  * @param {import('../ui/context').WordPressComponentProps<import('./types').Props, 'span'>} props
10
- * @param {import('react').Ref<any>} forwardedRef
10
+ * @param {import('react').ForwardedRef<any>} forwardedRef
11
11
  */
12
12
  function Text( props, forwardedRef ) {
13
13
  const textProps = useText( props );
@@ -24,8 +24,8 @@ import BaseControl from '../base-control';
24
24
 
25
25
  /**
26
26
  *
27
- * @param {Props} props Props
28
- * @param {import('react').Ref<HTMLInputElement>} [ref]
27
+ * @param {Props} props Props
28
+ * @param {import('react').ForwardedRef<HTMLInputElement>} ref
29
29
  */
30
30
  function TextControl(
31
31
  {
@@ -17,7 +17,7 @@ import Button from '../../button';
17
17
 
18
18
  export default {
19
19
  component: ToggleGroupControl,
20
- title: 'Components/ToggleGroupControl',
20
+ title: 'Components (Experimental)/ToggleGroupControl',
21
21
  parameters: {
22
22
  knobs: { disable: false },
23
23
  },
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
  // eslint-disable-next-line no-restricted-imports
6
6
  import { RadioGroup, useRadioState } from 'reakit';
7
7
 
@@ -31,7 +31,7 @@ const noop = () => {};
31
31
 
32
32
  function ToggleGroupControl(
33
33
  props: WordPressComponentProps< ToggleGroupControlProps, 'input' >,
34
- forwardedRef: Ref< any >
34
+ forwardedRef: ForwardedRef< any >
35
35
  ) {
36
36
  const {
37
37
  className,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
  // eslint-disable-next-line no-restricted-imports
6
6
  import { Radio } from 'reakit';
7
7
 
@@ -39,7 +39,7 @@ const WithToolTip = ( { showTooltip, text, children }: WithToolTipProps ) => {
39
39
 
40
40
  function ToggleGroupControlOption(
41
41
  props: WordPressComponentProps< ToggleGroupControlOptionProps, 'button' >,
42
- forwardedRef: Ref< any >
42
+ forwardedRef: ForwardedRef< any >
43
43
  ) {
44
44
  const toggleGroupControlContext = useToggleGroupControlContext();
45
45
  const id = useInstanceId(
@@ -467,7 +467,6 @@ export const WithConditionallyRenderedControl = () => {
467
467
  );
468
468
  };
469
469
 
470
- export { TypographyPanel } from './typography-panel';
471
470
  export { ToolsPanelWithItemGroupSlot } from './tools-panel-with-item-group-slot';
472
471
 
473
472
  const PanelWrapperView = styled.div`
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -15,7 +15,7 @@ import type { ToolsPanelProps } from '../types';
15
15
 
16
16
  const ToolsPanel = (
17
17
  props: WordPressComponentProps< ToolsPanelProps, 'div' >,
18
- forwardedRef: Ref< any >
18
+ forwardedRef: ForwardedRef< any >
19
19
  ) => {
20
20
  const {
21
21
  children,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -114,7 +114,7 @@ const OptionalControlsGroup = ( {
114
114
 
115
115
  const ToolsPanelHeader = (
116
116
  props: WordPressComponentProps< ToolsPanelHeaderProps, 'h2' >,
117
- forwardedRef: Ref< any >
117
+ forwardedRef: ForwardedRef< any >
118
118
  ) => {
119
119
  const {
120
120
  areAllOptionalControlsHidden,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Ref } from 'react';
4
+ import type { ForwardedRef } from 'react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -15,7 +15,7 @@ import type { ToolsPanelItemProps } from '../types';
15
15
  // prevents props being applied to HTML elements that would make them invalid.
16
16
  const ToolsPanelItem = (
17
17
  props: WordPressComponentProps< ToolsPanelItemProps, 'div' >,
18
- forwardedRef: Ref< any >
18
+ forwardedRef: ForwardedRef< any >
19
19
  ) => {
20
20
  const {
21
21
  children,
@@ -108,10 +108,33 @@ function TreeMenu() {
108
108
 
109
109
  ##### Props
110
110
 
111
- `TreeGrid` accepts no specific props. Any props specified will be passed to the `table` element rendered by `TreeGrid`.
111
+ Aside from the documented callback functions, any props specified will be passed to the `table` element rendered by `TreeGrid`.
112
112
 
113
113
  `TreeGrid` should always have children.
114
114
 
115
+ ###### onFocusRow( event: Event, startRow: HTMLElement, destinationRow: HTMLElement )
116
+
117
+ Callback that fires when focus is shifted from one row to another via the UP and DOWN keys.
118
+ The callback is passed the event, the start row element that the focus was on originally, and
119
+ the destination row element after the focus has moved.
120
+
121
+ - Type: `Function`
122
+ - Required: No
123
+
124
+ ###### onCollapseRow( row: HTMLElement )
125
+
126
+ A callback that passes in the row element to be collapsed.
127
+
128
+ - Type: `Function`
129
+ - Required: No
130
+
131
+ ###### onExpandRow( row: HTMLElement )
132
+
133
+ A callback that passes in the row element to be expanded.
134
+
135
+ - Type: `Function`
136
+ - Required: No
137
+
115
138
  #### TreeGridRow
116
139
 
117
140
  ##### Props
@@ -8,7 +8,7 @@ import { includes } from 'lodash';
8
8
  */
9
9
  import { focus } from '@wordpress/dom';
10
10
  import { forwardRef, useCallback } from '@wordpress/element';
11
- import { UP, DOWN, LEFT, RIGHT } from '@wordpress/keycodes';
11
+ import { UP, DOWN, LEFT, RIGHT, HOME, END } from '@wordpress/keycodes';
12
12
 
13
13
  /**
14
14
  * Internal dependencies
@@ -45,22 +45,30 @@ function getRowFocusables( rowElement ) {
45
45
  * @param {WPElement} props.children Children to be rendered.
46
46
  * @param {Function} props.onExpandRow Callback to fire when row is expanded.
47
47
  * @param {Function} props.onCollapseRow Callback to fire when row is collapsed.
48
+ * @param {Function} props.onFocusRow Callback to fire when moving focus to a different row.
48
49
  * @param {Object} ref A ref to the underlying DOM table element.
49
50
  */
50
51
  function TreeGrid(
51
- { children, onExpandRow = () => {}, onCollapseRow = () => {}, ...props },
52
+ {
53
+ children,
54
+ onExpandRow = () => {},
55
+ onCollapseRow = () => {},
56
+ onFocusRow = () => {},
57
+ ...props
58
+ },
52
59
  ref
53
60
  ) {
54
61
  const onKeyDown = useCallback(
55
62
  ( event ) => {
56
- const { keyCode, metaKey, ctrlKey, altKey, shiftKey } = event;
63
+ const { keyCode, metaKey, ctrlKey, altKey } = event;
57
64
 
58
- const hasModifierKeyPressed =
59
- metaKey || ctrlKey || altKey || shiftKey;
65
+ // The shift key is intentionally absent from the following list,
66
+ // to enable shift + up/down to select items from the list.
67
+ const hasModifierKeyPressed = metaKey || ctrlKey || altKey;
60
68
 
61
69
  if (
62
70
  hasModifierKeyPressed ||
63
- ! includes( [ UP, DOWN, LEFT, RIGHT ], keyCode )
71
+ ! includes( [ UP, DOWN, LEFT, RIGHT, HOME, END ], keyCode )
64
72
  ) {
65
73
  return;
66
74
  }
@@ -216,12 +224,63 @@ function TreeGrid(
216
224
  );
217
225
  focusablesInNextRow[ nextIndex ].focus();
218
226
 
227
+ // Let consumers know the row that was originally focused,
228
+ // and the row that is now in focus.
229
+ onFocusRow( event, activeRow, rows[ nextRowIndex ] );
230
+
231
+ // Prevent key use for anything else. This ensures Voiceover
232
+ // doesn't try to handle key navigation.
233
+ event.preventDefault();
234
+ } else if ( includes( [ HOME, END ], keyCode ) ) {
235
+ // Calculate the rowIndex of the next row.
236
+ const rows = Array.from(
237
+ treeGridElement.querySelectorAll( '[role="row"]' )
238
+ );
239
+ const currentRowIndex = rows.indexOf( activeRow );
240
+ let nextRowIndex;
241
+
242
+ if ( keyCode === HOME ) {
243
+ nextRowIndex = 0;
244
+ } else {
245
+ nextRowIndex = rows.length - 1;
246
+ }
247
+
248
+ // Focus is either at the top or bottom edge of the grid. Do nothing.
249
+ if ( nextRowIndex === currentRowIndex ) {
250
+ // Prevent key use for anything else. For example, Voiceover
251
+ // will start navigating horizontally when reaching the vertical
252
+ // bounds of a table.
253
+ event.preventDefault();
254
+ return;
255
+ }
256
+
257
+ // Get the focusables in the next row.
258
+ const focusablesInNextRow = getRowFocusables(
259
+ rows[ nextRowIndex ]
260
+ );
261
+
262
+ // If for some reason there are no focusables in the next row, do nothing.
263
+ if ( ! focusablesInNextRow || ! focusablesInNextRow.length ) {
264
+ // Prevent key use for anything else. For example, Voiceover
265
+ // will still focus text when using arrow keys, while this
266
+ // component should limit navigation to focusables.
267
+ event.preventDefault();
268
+ return;
269
+ }
270
+
271
+ // Try to focus the element in the next row that's at a similar column to the activeElement.
272
+ const nextIndex = Math.min(
273
+ currentColumnIndex,
274
+ focusablesInNextRow.length - 1
275
+ );
276
+ focusablesInNextRow[ nextIndex ].focus();
277
+
219
278
  // Prevent key use for anything else. This ensures Voiceover
220
279
  // doesn't try to handle key navigation.
221
280
  event.preventDefault();
222
281
  }
223
282
  },
224
- [ onExpandRow, onCollapseRow ]
283
+ [ onExpandRow, onCollapseRow, onFocusRow ]
225
284
  );
226
285
 
227
286
  /* Disable reason: A treegrid is implemented using a table element. */
@@ -9,7 +9,10 @@ import { Fragment } from '@wordpress/element';
9
9
  import TreeGrid, { TreeGridRow, TreeGridCell } from '../';
10
10
  import { Button } from '../../';
11
11
 
12
- export default { title: 'Components/TreeGrid', component: TreeGrid };
12
+ export default {
13
+ title: 'Components (Experimental)/TreeGrid',
14
+ component: TreeGrid,
15
+ };
13
16
 
14
17
  const groceries = [
15
18
  {
@@ -1,16 +1,3 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`TreeGrid renders a table, tbody and any child elements 1`] = `
4
- <table
5
- onKeyDown={[Function]}
6
- role="treegrid"
7
- >
8
- <tbody>
9
- <tr>
10
- <td>
11
- Test
12
- </td>
13
- </tr>
14
- </tbody>
15
- </table>
16
- `;
3
+ exports[`TreeGrid simple rendering renders a table, tbody and any child elements 1`] = `"<table role=\\"treegrid\\"><tbody><tr><td>Test</td></tr></tbody></table>"`;