@workday/canvas-kit-react 5.3.0 → 5.3.4

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 (660) hide show
  1. package/action-bar/lib/ActionBar.tsx +30 -43
  2. package/button/lib/PrimaryButton.tsx +32 -110
  3. package/button/lib/SecondaryButton.tsx +16 -31
  4. package/button/lib/TertiaryButton.tsx +36 -45
  5. package/button/lib/parts/ButtonContainer.tsx +5 -18
  6. package/button/lib/parts/ButtonLabelIcon.tsx +14 -34
  7. package/button/lib/types.ts +0 -11
  8. package/common/index.ts +0 -1
  9. package/common/lib/styles/accessibleHide.ts +2 -2
  10. package/common/lib/theming/README.md +25 -189
  11. package/common/lib/theming/breakpoints.ts +16 -296
  12. package/common/lib/theming/types.ts +1 -191
  13. package/common/lib/utils/components.ts +23 -50
  14. package/common/lib/utils/index.ts +0 -1
  15. package/common/lib/utils/mergeProps.ts +0 -4
  16. package/common/lib/utils/useUniqueId.ts +3 -4
  17. package/cookie-banner/README.md +10 -15
  18. package/cookie-banner/index.ts +3 -3
  19. package/cookie-banner/lib/CookieBanner.tsx +4 -29
  20. package/dist/commonjs/action-bar/lib/ActionBar.d.ts.map +1 -1
  21. package/dist/commonjs/action-bar/lib/ActionBar.js +27 -35
  22. package/dist/commonjs/button/lib/PrimaryButton.d.ts +6 -80
  23. package/dist/commonjs/button/lib/PrimaryButton.d.ts.map +1 -1
  24. package/dist/commonjs/button/lib/PrimaryButton.js +26 -80
  25. package/dist/commonjs/button/lib/SecondaryButton.d.ts +5 -8
  26. package/dist/commonjs/button/lib/SecondaryButton.d.ts.map +1 -1
  27. package/dist/commonjs/button/lib/SecondaryButton.js +12 -22
  28. package/dist/commonjs/button/lib/TertiaryButton.d.ts +4 -8
  29. package/dist/commonjs/button/lib/TertiaryButton.d.ts.map +1 -1
  30. package/dist/commonjs/button/lib/TertiaryButton.js +20 -24
  31. package/dist/commonjs/button/lib/parts/ButtonContainer.d.ts +3 -5
  32. package/dist/commonjs/button/lib/parts/ButtonContainer.d.ts.map +1 -1
  33. package/dist/commonjs/button/lib/parts/ButtonContainer.js +9 -7
  34. package/dist/commonjs/button/lib/parts/ButtonLabel.d.ts +1 -1
  35. package/dist/commonjs/button/lib/parts/ButtonLabel.d.ts.map +1 -1
  36. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +4 -7
  37. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
  38. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +13 -28
  39. package/dist/commonjs/button/lib/types.d.ts +0 -9
  40. package/dist/commonjs/button/lib/types.d.ts.map +1 -1
  41. package/dist/commonjs/common/index.d.ts +0 -1
  42. package/dist/commonjs/common/index.d.ts.map +1 -1
  43. package/dist/commonjs/common/index.js +0 -1
  44. package/dist/commonjs/common/lib/styles/accessibleHide.d.ts +2 -2
  45. package/dist/commonjs/common/lib/styles/accessibleHide.d.ts.map +1 -1
  46. package/dist/commonjs/common/lib/theming/breakpoints.d.ts +6 -287
  47. package/dist/commonjs/common/lib/theming/breakpoints.d.ts.map +1 -1
  48. package/dist/commonjs/common/lib/theming/breakpoints.js +10 -192
  49. package/dist/commonjs/common/lib/theming/types.d.ts +1 -191
  50. package/dist/commonjs/common/lib/theming/types.d.ts.map +1 -1
  51. package/dist/commonjs/common/lib/utils/components.d.ts +9 -19
  52. package/dist/commonjs/common/lib/utils/components.d.ts.map +1 -1
  53. package/dist/commonjs/common/lib/utils/components.js +2 -12
  54. package/dist/commonjs/common/lib/utils/index.d.ts +0 -1
  55. package/dist/commonjs/common/lib/utils/index.d.ts.map +1 -1
  56. package/dist/commonjs/common/lib/utils/index.js +0 -1
  57. package/dist/commonjs/common/lib/utils/mergeProps.d.ts.map +1 -1
  58. package/dist/commonjs/common/lib/utils/mergeProps.js +0 -5
  59. package/dist/commonjs/common/lib/utils/useUniqueId.d.ts.map +1 -1
  60. package/dist/commonjs/common/lib/utils/useUniqueId.js +10 -3
  61. package/dist/commonjs/cookie-banner/index.d.ts +3 -3
  62. package/dist/commonjs/cookie-banner/index.d.ts.map +1 -1
  63. package/dist/commonjs/cookie-banner/index.js +1 -1
  64. package/dist/commonjs/cookie-banner/lib/CookieBanner.d.ts +2 -19
  65. package/dist/commonjs/cookie-banner/lib/CookieBanner.d.ts.map +1 -1
  66. package/dist/commonjs/cookie-banner/lib/CookieBanner.js +8 -19
  67. package/dist/commonjs/dialog/lib/hooks/useDialogCard.d.ts +16 -4
  68. package/dist/commonjs/dialog/lib/hooks/useDialogCard.d.ts.map +1 -1
  69. package/dist/commonjs/dialog/lib/hooks/useDialogPopper.d.ts +2 -5
  70. package/dist/commonjs/dialog/lib/hooks/useDialogPopper.d.ts.map +1 -1
  71. package/dist/commonjs/loading-animation/lib/LoadingDots.js +3 -6
  72. package/dist/commonjs/modal/lib/ModalOverlay.d.ts +2 -4
  73. package/dist/commonjs/modal/lib/ModalOverlay.d.ts.map +1 -1
  74. package/dist/commonjs/modal/lib/hooks/useModalCard.d.ts +16 -4
  75. package/dist/commonjs/modal/lib/hooks/useModalCard.d.ts.map +1 -1
  76. package/dist/commonjs/modal/lib/hooks/useModalHeading.d.ts +17 -5
  77. package/dist/commonjs/modal/lib/hooks/useModalHeading.d.ts.map +1 -1
  78. package/dist/commonjs/page-header/index.d.ts +3 -3
  79. package/dist/commonjs/page-header/index.d.ts.map +1 -1
  80. package/dist/commonjs/page-header/index.js +1 -1
  81. package/dist/commonjs/page-header/lib/PageHeader.d.ts +2 -19
  82. package/dist/commonjs/page-header/lib/PageHeader.d.ts.map +1 -1
  83. package/dist/commonjs/page-header/lib/PageHeader.js +7 -18
  84. package/dist/commonjs/pagination/lib/Pagination/PageList.d.ts +1 -1
  85. package/dist/commonjs/pagination/lib/Pagination/PageList.d.ts.map +1 -1
  86. package/dist/commonjs/pagination/lib/Pagination/Pagination.d.ts +5 -5
  87. package/dist/commonjs/pagination/lib/Pagination/common/List.d.ts +1 -1
  88. package/dist/commonjs/pagination/lib/Pagination/common/List.d.ts.map +1 -1
  89. package/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
  90. package/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.d.ts.map +1 -1
  91. package/dist/commonjs/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
  92. package/dist/commonjs/popup/lib/PopupCard.d.ts.map +1 -1
  93. package/dist/commonjs/popup/lib/PopupCard.js +3 -2
  94. package/dist/commonjs/popup/lib/hooks/usePopupCard.d.ts +2 -5
  95. package/dist/commonjs/popup/lib/hooks/usePopupCard.d.ts.map +1 -1
  96. package/dist/commonjs/popup/lib/hooks/usePopupCloseButton.d.ts +2 -4
  97. package/dist/commonjs/popup/lib/hooks/usePopupCloseButton.d.ts.map +1 -1
  98. package/dist/commonjs/popup/lib/hooks/usePopupHeading.d.ts +2 -5
  99. package/dist/commonjs/popup/lib/hooks/usePopupHeading.d.ts.map +1 -1
  100. package/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts +2 -4
  101. package/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts.map +1 -1
  102. package/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts +2 -4
  103. package/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts.map +1 -1
  104. package/dist/commonjs/tabs/index.d.ts +0 -5
  105. package/dist/commonjs/tabs/index.d.ts.map +1 -1
  106. package/dist/commonjs/tabs/index.js +0 -11
  107. package/dist/commonjs/tabs/lib/Tab.d.ts +49 -0
  108. package/dist/commonjs/tabs/lib/Tab.d.ts.map +1 -0
  109. package/dist/commonjs/tabs/lib/Tab.js +95 -0
  110. package/dist/{es6/tabs/lib/TabsPanels.d.ts → commonjs/tabs/lib/TabList.d.ts} +5 -5
  111. package/dist/commonjs/tabs/lib/TabList.d.ts.map +1 -0
  112. package/dist/commonjs/tabs/lib/{TabsMenuPopper.js → TabList.js} +19 -7
  113. package/dist/{es6/tabs/lib/TabsPanel.d.ts → commonjs/tabs/lib/TabPanel.d.ts} +5 -15
  114. package/dist/commonjs/tabs/lib/TabPanel.d.ts.map +1 -0
  115. package/dist/commonjs/tabs/lib/TabPanel.js +56 -0
  116. package/dist/commonjs/tabs/lib/Tabs.d.ts +7 -35
  117. package/dist/commonjs/tabs/lib/Tabs.d.ts.map +1 -1
  118. package/dist/commonjs/tabs/lib/Tabs.js +7 -28
  119. package/dist/commonjs/tabs/lib/cursor/hooks.d.ts +39 -0
  120. package/dist/commonjs/tabs/lib/cursor/hooks.d.ts.map +1 -0
  121. package/dist/commonjs/tabs/lib/cursor/{useRovingFocus.js → hooks.js} +50 -26
  122. package/dist/commonjs/tabs/lib/cursor/index.d.ts +1 -1
  123. package/dist/commonjs/tabs/lib/cursor/index.d.ts.map +1 -1
  124. package/dist/commonjs/tabs/lib/cursor/index.js +1 -1
  125. package/dist/commonjs/tabs/lib/cursor/useCursorModel.d.ts +13 -23
  126. package/dist/commonjs/tabs/lib/cursor/useCursorModel.d.ts.map +1 -1
  127. package/dist/commonjs/tabs/lib/cursor/useCursorModel.js +49 -50
  128. package/dist/commonjs/tabs/lib/hooks.d.ts +10 -0
  129. package/dist/commonjs/tabs/lib/hooks.d.ts.map +1 -0
  130. package/dist/commonjs/tabs/lib/{selection/useResetCursorOnBlur.js → hooks.js} +9 -8
  131. package/dist/commonjs/tabs/lib/list/hooks.d.ts +11 -0
  132. package/dist/commonjs/tabs/lib/list/hooks.d.ts.map +1 -0
  133. package/dist/commonjs/tabs/lib/list/hooks.js +39 -0
  134. package/dist/commonjs/tabs/lib/list/index.d.ts +1 -2
  135. package/dist/commonjs/tabs/lib/list/index.d.ts.map +1 -1
  136. package/dist/commonjs/tabs/lib/list/index.js +1 -2
  137. package/dist/commonjs/tabs/lib/list/useListModel.d.ts +13 -25
  138. package/dist/commonjs/tabs/lib/list/useListModel.d.ts.map +1 -1
  139. package/dist/commonjs/tabs/lib/list/useListModel.js +7 -20
  140. package/dist/commonjs/tabs/lib/useTabsModel.d.ts +38 -39
  141. package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
  142. package/dist/commonjs/tabs/lib/useTabsModel.js +37 -50
  143. package/dist/commonjs/tokens/index.d.ts +20 -3
  144. package/dist/commonjs/tokens/index.d.ts.map +1 -1
  145. package/dist/commonjs/tokens/index.js +6 -3
  146. package/dist/commonjs/tokens/lib/depth.d.ts +3 -109
  147. package/dist/commonjs/tokens/lib/depth.d.ts.map +1 -1
  148. package/dist/commonjs/tokens/lib/depth.js +5 -40
  149. package/dist/commonjs/tooltip/lib/Tooltip.d.ts +9 -1
  150. package/dist/commonjs/tooltip/lib/Tooltip.d.ts.map +1 -1
  151. package/dist/commonjs/tooltip/lib/Tooltip.js +7 -2
  152. package/dist/commonjs/tooltip/lib/useTooltip.d.ts +10 -2
  153. package/dist/commonjs/tooltip/lib/useTooltip.d.ts.map +1 -1
  154. package/dist/commonjs/tooltip/lib/useTooltip.js +13 -8
  155. package/dist/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
  156. package/dist/es6/action-bar/lib/ActionBar.js +22 -33
  157. package/dist/es6/button/lib/PrimaryButton.d.ts +6 -80
  158. package/dist/es6/button/lib/PrimaryButton.d.ts.map +1 -1
  159. package/dist/es6/button/lib/PrimaryButton.js +27 -81
  160. package/dist/es6/button/lib/SecondaryButton.d.ts +5 -8
  161. package/dist/es6/button/lib/SecondaryButton.d.ts.map +1 -1
  162. package/dist/es6/button/lib/SecondaryButton.js +12 -22
  163. package/dist/es6/button/lib/TertiaryButton.d.ts +4 -8
  164. package/dist/es6/button/lib/TertiaryButton.d.ts.map +1 -1
  165. package/dist/es6/button/lib/TertiaryButton.js +21 -25
  166. package/dist/es6/button/lib/parts/ButtonContainer.d.ts +3 -5
  167. package/dist/es6/button/lib/parts/ButtonContainer.d.ts.map +1 -1
  168. package/dist/es6/button/lib/parts/ButtonContainer.js +9 -7
  169. package/dist/es6/button/lib/parts/ButtonLabel.d.ts +1 -1
  170. package/dist/es6/button/lib/parts/ButtonLabel.d.ts.map +1 -1
  171. package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +4 -7
  172. package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
  173. package/dist/es6/button/lib/parts/ButtonLabelIcon.js +13 -28
  174. package/dist/es6/button/lib/types.d.ts +0 -9
  175. package/dist/es6/button/lib/types.d.ts.map +1 -1
  176. package/dist/es6/common/index.d.ts +0 -1
  177. package/dist/es6/common/index.d.ts.map +1 -1
  178. package/dist/es6/common/index.js +0 -1
  179. package/dist/es6/common/lib/styles/accessibleHide.d.ts +2 -2
  180. package/dist/es6/common/lib/styles/accessibleHide.d.ts.map +1 -1
  181. package/dist/es6/common/lib/theming/breakpoints.d.ts +6 -287
  182. package/dist/es6/common/lib/theming/breakpoints.d.ts.map +1 -1
  183. package/dist/es6/common/lib/theming/breakpoints.js +10 -192
  184. package/dist/es6/common/lib/theming/types.d.ts +1 -191
  185. package/dist/es6/common/lib/theming/types.d.ts.map +1 -1
  186. package/dist/es6/common/lib/utils/components.d.ts +9 -19
  187. package/dist/es6/common/lib/utils/components.d.ts.map +1 -1
  188. package/dist/es6/common/lib/utils/components.js +2 -12
  189. package/dist/es6/common/lib/utils/index.d.ts +0 -1
  190. package/dist/es6/common/lib/utils/index.d.ts.map +1 -1
  191. package/dist/es6/common/lib/utils/index.js +0 -1
  192. package/dist/es6/common/lib/utils/mergeProps.d.ts.map +1 -1
  193. package/dist/es6/common/lib/utils/mergeProps.js +0 -5
  194. package/dist/es6/common/lib/utils/useUniqueId.d.ts.map +1 -1
  195. package/dist/es6/common/lib/utils/useUniqueId.js +3 -3
  196. package/dist/es6/cookie-banner/index.d.ts +3 -3
  197. package/dist/es6/cookie-banner/index.d.ts.map +1 -1
  198. package/dist/es6/cookie-banner/index.js +3 -3
  199. package/dist/es6/cookie-banner/lib/CookieBanner.d.ts +2 -19
  200. package/dist/es6/cookie-banner/lib/CookieBanner.d.ts.map +1 -1
  201. package/dist/es6/cookie-banner/lib/CookieBanner.js +8 -19
  202. package/dist/es6/dialog/lib/hooks/useDialogCard.d.ts +16 -4
  203. package/dist/es6/dialog/lib/hooks/useDialogCard.d.ts.map +1 -1
  204. package/dist/es6/dialog/lib/hooks/useDialogPopper.d.ts +2 -5
  205. package/dist/es6/dialog/lib/hooks/useDialogPopper.d.ts.map +1 -1
  206. package/dist/es6/loading-animation/lib/LoadingDots.js +1 -1
  207. package/dist/es6/modal/lib/ModalOverlay.d.ts +2 -4
  208. package/dist/es6/modal/lib/ModalOverlay.d.ts.map +1 -1
  209. package/dist/es6/modal/lib/hooks/useModalCard.d.ts +16 -4
  210. package/dist/es6/modal/lib/hooks/useModalCard.d.ts.map +1 -1
  211. package/dist/es6/modal/lib/hooks/useModalHeading.d.ts +17 -5
  212. package/dist/es6/modal/lib/hooks/useModalHeading.d.ts.map +1 -1
  213. package/dist/es6/page-header/index.d.ts +3 -3
  214. package/dist/es6/page-header/index.d.ts.map +1 -1
  215. package/dist/es6/page-header/index.js +3 -3
  216. package/dist/es6/page-header/lib/PageHeader.d.ts +2 -19
  217. package/dist/es6/page-header/lib/PageHeader.d.ts.map +1 -1
  218. package/dist/es6/page-header/lib/PageHeader.js +7 -18
  219. package/dist/es6/pagination/lib/Pagination/PageList.d.ts +1 -1
  220. package/dist/es6/pagination/lib/Pagination/PageList.d.ts.map +1 -1
  221. package/dist/es6/pagination/lib/Pagination/Pagination.d.ts +5 -5
  222. package/dist/es6/pagination/lib/Pagination/common/List.d.ts +1 -1
  223. package/dist/es6/pagination/lib/Pagination/common/List.d.ts.map +1 -1
  224. package/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
  225. package/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.d.ts.map +1 -1
  226. package/dist/es6/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
  227. package/dist/es6/popup/lib/PopupCard.d.ts.map +1 -1
  228. package/dist/es6/popup/lib/PopupCard.js +4 -3
  229. package/dist/es6/popup/lib/hooks/usePopupCard.d.ts +2 -5
  230. package/dist/es6/popup/lib/hooks/usePopupCard.d.ts.map +1 -1
  231. package/dist/es6/popup/lib/hooks/usePopupCloseButton.d.ts +2 -4
  232. package/dist/es6/popup/lib/hooks/usePopupCloseButton.d.ts.map +1 -1
  233. package/dist/es6/popup/lib/hooks/usePopupHeading.d.ts +2 -5
  234. package/dist/es6/popup/lib/hooks/usePopupHeading.d.ts.map +1 -1
  235. package/dist/es6/popup/lib/hooks/usePopupPopper.d.ts +2 -4
  236. package/dist/es6/popup/lib/hooks/usePopupPopper.d.ts.map +1 -1
  237. package/dist/es6/popup/lib/hooks/usePopupTarget.d.ts +2 -4
  238. package/dist/es6/popup/lib/hooks/usePopupTarget.d.ts.map +1 -1
  239. package/dist/es6/tabs/index.d.ts +0 -5
  240. package/dist/es6/tabs/index.d.ts.map +1 -1
  241. package/dist/es6/tabs/index.js +0 -5
  242. package/dist/es6/tabs/lib/Tab.d.ts +49 -0
  243. package/dist/es6/tabs/lib/Tab.d.ts.map +1 -0
  244. package/dist/es6/tabs/lib/Tab.js +86 -0
  245. package/dist/{commonjs/tabs/lib/TabsPanels.d.ts → es6/tabs/lib/TabList.d.ts} +5 -5
  246. package/dist/es6/tabs/lib/TabList.d.ts.map +1 -0
  247. package/dist/es6/tabs/lib/{TabsMenuPopper.js → TabList.js} +20 -8
  248. package/dist/{commonjs/tabs/lib/TabsPanel.d.ts → es6/tabs/lib/TabPanel.d.ts} +5 -15
  249. package/dist/es6/tabs/lib/TabPanel.d.ts.map +1 -0
  250. package/dist/es6/tabs/lib/TabPanel.js +51 -0
  251. package/dist/es6/tabs/lib/Tabs.d.ts +7 -35
  252. package/dist/es6/tabs/lib/Tabs.d.ts.map +1 -1
  253. package/dist/es6/tabs/lib/Tabs.js +7 -28
  254. package/dist/es6/tabs/lib/cursor/hooks.d.ts +39 -0
  255. package/dist/es6/tabs/lib/cursor/hooks.d.ts.map +1 -0
  256. package/dist/es6/tabs/lib/cursor/hooks.js +108 -0
  257. package/dist/es6/tabs/lib/cursor/index.d.ts +1 -1
  258. package/dist/es6/tabs/lib/cursor/index.d.ts.map +1 -1
  259. package/dist/es6/tabs/lib/cursor/index.js +1 -1
  260. package/dist/es6/tabs/lib/cursor/useCursorModel.d.ts +13 -23
  261. package/dist/es6/tabs/lib/cursor/useCursorModel.d.ts.map +1 -1
  262. package/dist/es6/tabs/lib/cursor/useCursorModel.js +50 -51
  263. package/dist/es6/tabs/lib/hooks.d.ts +10 -0
  264. package/dist/es6/tabs/lib/hooks.d.ts.map +1 -0
  265. package/dist/es6/tabs/lib/{selection/useResetCursorOnBlur.js → hooks.js} +9 -8
  266. package/dist/es6/tabs/lib/list/hooks.d.ts +11 -0
  267. package/dist/es6/tabs/lib/list/hooks.d.ts.map +1 -0
  268. package/dist/es6/tabs/lib/list/hooks.js +34 -0
  269. package/dist/es6/tabs/lib/list/index.d.ts +1 -2
  270. package/dist/es6/tabs/lib/list/index.d.ts.map +1 -1
  271. package/dist/es6/tabs/lib/list/index.js +1 -2
  272. package/dist/es6/tabs/lib/list/useListModel.d.ts +13 -25
  273. package/dist/es6/tabs/lib/list/useListModel.d.ts.map +1 -1
  274. package/dist/es6/tabs/lib/list/useListModel.js +8 -21
  275. package/dist/es6/tabs/lib/useTabsModel.d.ts +38 -39
  276. package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
  277. package/dist/es6/tabs/lib/useTabsModel.js +37 -50
  278. package/dist/es6/tokens/index.d.ts +20 -3
  279. package/dist/es6/tokens/index.d.ts.map +1 -1
  280. package/dist/es6/tokens/index.js +1 -1
  281. package/dist/es6/tokens/lib/depth.d.ts +3 -109
  282. package/dist/es6/tokens/lib/depth.d.ts.map +1 -1
  283. package/dist/es6/tokens/lib/depth.js +2 -40
  284. package/dist/es6/tooltip/lib/Tooltip.d.ts +9 -1
  285. package/dist/es6/tooltip/lib/Tooltip.d.ts.map +1 -1
  286. package/dist/es6/tooltip/lib/Tooltip.js +7 -2
  287. package/dist/es6/tooltip/lib/useTooltip.d.ts +10 -2
  288. package/dist/es6/tooltip/lib/useTooltip.d.ts.map +1 -1
  289. package/dist/es6/tooltip/lib/useTooltip.js +13 -8
  290. package/loading-animation/lib/LoadingDots.tsx +1 -1
  291. package/package.json +6 -7
  292. package/page-header/README.md +6 -11
  293. package/page-header/index.ts +3 -3
  294. package/page-header/lib/PageHeader.tsx +3 -28
  295. package/popup/lib/PopupCard.tsx +2 -3
  296. package/tabs/index.ts +0 -6
  297. package/tabs/lib/Tab.tsx +170 -0
  298. package/tabs/lib/TabList.tsx +59 -0
  299. package/tabs/lib/{TabsPanel.tsx → TabPanel.tsx} +31 -33
  300. package/tabs/lib/Tabs.tsx +9 -34
  301. package/tabs/lib/cursor/hooks.tsx +122 -0
  302. package/tabs/lib/cursor/index.ts +1 -1
  303. package/tabs/lib/cursor/useCursorModel.tsx +65 -78
  304. package/tabs/lib/hooks.tsx +31 -0
  305. package/tabs/lib/list/hooks.tsx +45 -0
  306. package/tabs/lib/list/index.ts +1 -2
  307. package/tabs/lib/list/useListModel.tsx +23 -48
  308. package/tabs/lib/useTabsModel.tsx +78 -93
  309. package/tokens/README.md +12 -5
  310. package/tokens/index.ts +2 -2
  311. package/tokens/lib/depth.ts +3 -125
  312. package/tooltip/lib/Tooltip.tsx +16 -1
  313. package/tooltip/lib/useTooltip.tsx +21 -6
  314. package/ts3.5/dist/commonjs/button/lib/PrimaryButton.d.ts +6 -80
  315. package/ts3.5/dist/commonjs/button/lib/SecondaryButton.d.ts +5 -8
  316. package/ts3.5/dist/commonjs/button/lib/TertiaryButton.d.ts +4 -8
  317. package/ts3.5/dist/commonjs/button/lib/parts/ButtonContainer.d.ts +3 -5
  318. package/ts3.5/dist/commonjs/button/lib/parts/ButtonLabel.d.ts +1 -1
  319. package/ts3.5/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +4 -7
  320. package/ts3.5/dist/commonjs/button/lib/types.d.ts +0 -9
  321. package/ts3.5/dist/commonjs/common/index.d.ts +0 -1
  322. package/ts3.5/dist/commonjs/common/lib/styles/accessibleHide.d.ts +2 -2
  323. package/ts3.5/dist/commonjs/common/lib/theming/breakpoints.d.ts +6 -287
  324. package/ts3.5/dist/commonjs/common/lib/theming/types.d.ts +1 -191
  325. package/ts3.5/dist/commonjs/common/lib/utils/components.d.ts +9 -19
  326. package/ts3.5/dist/commonjs/common/lib/utils/index.d.ts +0 -1
  327. package/ts3.5/dist/commonjs/cookie-banner/index.d.ts +3 -3
  328. package/ts3.5/dist/commonjs/cookie-banner/lib/CookieBanner.d.ts +2 -19
  329. package/ts3.5/dist/commonjs/dialog/lib/hooks/useDialogCard.d.ts +16 -4
  330. package/ts3.5/dist/commonjs/dialog/lib/hooks/useDialogPopper.d.ts +2 -5
  331. package/ts3.5/dist/commonjs/modal/lib/ModalOverlay.d.ts +2 -4
  332. package/ts3.5/dist/commonjs/modal/lib/hooks/useModalCard.d.ts +16 -4
  333. package/ts3.5/dist/commonjs/modal/lib/hooks/useModalHeading.d.ts +17 -5
  334. package/ts3.5/dist/commonjs/page-header/index.d.ts +3 -3
  335. package/ts3.5/dist/commonjs/page-header/lib/PageHeader.d.ts +2 -19
  336. package/ts3.5/dist/commonjs/pagination/lib/Pagination/PageList.d.ts +1 -1
  337. package/ts3.5/dist/commonjs/pagination/lib/Pagination/Pagination.d.ts +5 -5
  338. package/ts3.5/dist/commonjs/pagination/lib/Pagination/common/List.d.ts +1 -1
  339. package/ts3.5/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
  340. package/ts3.5/dist/commonjs/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
  341. package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupCard.d.ts +2 -5
  342. package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupCloseButton.d.ts +2 -4
  343. package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupHeading.d.ts +2 -5
  344. package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts +2 -4
  345. package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts +2 -4
  346. package/ts3.5/dist/commonjs/tabs/index.d.ts +0 -5
  347. package/ts3.5/dist/commonjs/tabs/lib/Tab.d.ts +49 -0
  348. package/ts3.5/dist/commonjs/tabs/lib/{TabsPanels.d.ts → TabList.d.ts} +5 -5
  349. package/ts3.5/dist/commonjs/tabs/lib/{TabsPanel.d.ts → TabPanel.d.ts} +5 -15
  350. package/ts3.5/dist/commonjs/tabs/lib/Tabs.d.ts +7 -35
  351. package/ts3.5/dist/commonjs/tabs/lib/cursor/hooks.d.ts +39 -0
  352. package/ts3.5/dist/commonjs/tabs/lib/cursor/index.d.ts +1 -1
  353. package/ts3.5/dist/commonjs/tabs/lib/cursor/useCursorModel.d.ts +13 -23
  354. package/ts3.5/dist/commonjs/tabs/lib/hooks.d.ts +10 -0
  355. package/ts3.5/dist/commonjs/tabs/lib/list/hooks.d.ts +11 -0
  356. package/ts3.5/dist/commonjs/tabs/lib/list/index.d.ts +1 -2
  357. package/ts3.5/dist/commonjs/tabs/lib/list/useListModel.d.ts +13 -25
  358. package/ts3.5/dist/commonjs/tabs/lib/useTabsModel.d.ts +38 -39
  359. package/ts3.5/dist/commonjs/tokens/index.d.ts +20 -3
  360. package/ts3.5/dist/commonjs/tokens/lib/depth.d.ts +3 -109
  361. package/ts3.5/dist/commonjs/tooltip/lib/Tooltip.d.ts +9 -1
  362. package/ts3.5/dist/commonjs/tooltip/lib/useTooltip.d.ts +10 -2
  363. package/ts3.5/dist/es6/button/lib/PrimaryButton.d.ts +6 -80
  364. package/ts3.5/dist/es6/button/lib/SecondaryButton.d.ts +5 -8
  365. package/ts3.5/dist/es6/button/lib/TertiaryButton.d.ts +4 -8
  366. package/ts3.5/dist/es6/button/lib/parts/ButtonContainer.d.ts +3 -5
  367. package/ts3.5/dist/es6/button/lib/parts/ButtonLabel.d.ts +1 -1
  368. package/ts3.5/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +4 -7
  369. package/ts3.5/dist/es6/button/lib/types.d.ts +0 -9
  370. package/ts3.5/dist/es6/common/index.d.ts +0 -1
  371. package/ts3.5/dist/es6/common/lib/styles/accessibleHide.d.ts +2 -2
  372. package/ts3.5/dist/es6/common/lib/theming/breakpoints.d.ts +6 -287
  373. package/ts3.5/dist/es6/common/lib/theming/types.d.ts +1 -191
  374. package/ts3.5/dist/es6/common/lib/utils/components.d.ts +9 -19
  375. package/ts3.5/dist/es6/common/lib/utils/index.d.ts +0 -1
  376. package/ts3.5/dist/es6/cookie-banner/index.d.ts +3 -3
  377. package/ts3.5/dist/es6/cookie-banner/lib/CookieBanner.d.ts +2 -19
  378. package/ts3.5/dist/es6/dialog/lib/hooks/useDialogCard.d.ts +16 -4
  379. package/ts3.5/dist/es6/dialog/lib/hooks/useDialogPopper.d.ts +2 -5
  380. package/ts3.5/dist/es6/modal/lib/ModalOverlay.d.ts +2 -4
  381. package/ts3.5/dist/es6/modal/lib/hooks/useModalCard.d.ts +16 -4
  382. package/ts3.5/dist/es6/modal/lib/hooks/useModalHeading.d.ts +17 -5
  383. package/ts3.5/dist/es6/page-header/index.d.ts +3 -3
  384. package/ts3.5/dist/es6/page-header/lib/PageHeader.d.ts +2 -19
  385. package/ts3.5/dist/es6/pagination/lib/Pagination/PageList.d.ts +1 -1
  386. package/ts3.5/dist/es6/pagination/lib/Pagination/Pagination.d.ts +5 -5
  387. package/ts3.5/dist/es6/pagination/lib/Pagination/common/List.d.ts +1 -1
  388. package/ts3.5/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
  389. package/ts3.5/dist/es6/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
  390. package/ts3.5/dist/es6/popup/lib/hooks/usePopupCard.d.ts +2 -5
  391. package/ts3.5/dist/es6/popup/lib/hooks/usePopupCloseButton.d.ts +2 -4
  392. package/ts3.5/dist/es6/popup/lib/hooks/usePopupHeading.d.ts +2 -5
  393. package/ts3.5/dist/es6/popup/lib/hooks/usePopupPopper.d.ts +2 -4
  394. package/ts3.5/dist/es6/popup/lib/hooks/usePopupTarget.d.ts +2 -4
  395. package/ts3.5/dist/es6/tabs/index.d.ts +0 -5
  396. package/ts3.5/dist/es6/tabs/lib/Tab.d.ts +49 -0
  397. package/ts3.5/dist/es6/tabs/lib/{TabsPanels.d.ts → TabList.d.ts} +5 -5
  398. package/ts3.5/dist/es6/tabs/lib/{TabsPanel.d.ts → TabPanel.d.ts} +5 -15
  399. package/ts3.5/dist/es6/tabs/lib/Tabs.d.ts +7 -35
  400. package/ts3.5/dist/es6/tabs/lib/cursor/hooks.d.ts +39 -0
  401. package/ts3.5/dist/es6/tabs/lib/cursor/index.d.ts +1 -1
  402. package/ts3.5/dist/es6/tabs/lib/cursor/useCursorModel.d.ts +13 -23
  403. package/ts3.5/dist/es6/tabs/lib/hooks.d.ts +10 -0
  404. package/ts3.5/dist/es6/tabs/lib/list/hooks.d.ts +11 -0
  405. package/ts3.5/dist/es6/tabs/lib/list/index.d.ts +1 -2
  406. package/ts3.5/dist/es6/tabs/lib/list/useListModel.d.ts +13 -25
  407. package/ts3.5/dist/es6/tabs/lib/useTabsModel.d.ts +38 -39
  408. package/ts3.5/dist/es6/tokens/index.d.ts +20 -3
  409. package/ts3.5/dist/es6/tokens/lib/depth.d.ts +3 -109
  410. package/ts3.5/dist/es6/tooltip/lib/Tooltip.d.ts +9 -1
  411. package/ts3.5/dist/es6/tooltip/lib/useTooltip.d.ts +10 -2
  412. package/common/lib/EllipsisText.tsx +0 -11
  413. package/common/lib/utils/useConstant.ts +0 -18
  414. package/common/lib/utils/useResizeObserver.ts +0 -29
  415. package/dist/commonjs/common/lib/EllipsisText.d.ts +0 -5
  416. package/dist/commonjs/common/lib/EllipsisText.d.ts.map +0 -1
  417. package/dist/commonjs/common/lib/EllipsisText.js +0 -13
  418. package/dist/commonjs/common/lib/utils/useConstant.d.ts +0 -9
  419. package/dist/commonjs/common/lib/utils/useConstant.d.ts.map +0 -1
  420. package/dist/commonjs/common/lib/utils/useConstant.js +0 -18
  421. package/dist/commonjs/common/lib/utils/useResizeObserver.d.ts +0 -3
  422. package/dist/commonjs/common/lib/utils/useResizeObserver.d.ts.map +0 -1
  423. package/dist/commonjs/common/lib/utils/useResizeObserver.js +0 -42
  424. package/dist/commonjs/tabs/lib/TabsItem.d.ts +0 -107
  425. package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +0 -1
  426. package/dist/commonjs/tabs/lib/TabsItem.js +0 -140
  427. package/dist/commonjs/tabs/lib/TabsList.d.ts +0 -43
  428. package/dist/commonjs/tabs/lib/TabsList.d.ts.map +0 -1
  429. package/dist/commonjs/tabs/lib/TabsList.js +0 -53
  430. package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +0 -21
  431. package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts.map +0 -1
  432. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +0 -31
  433. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +0 -1
  434. package/dist/commonjs/tabs/lib/TabsOverflowButton.js +0 -57
  435. package/dist/commonjs/tabs/lib/TabsPanel.d.ts.map +0 -1
  436. package/dist/commonjs/tabs/lib/TabsPanel.js +0 -64
  437. package/dist/commonjs/tabs/lib/TabsPanels.d.ts.map +0 -1
  438. package/dist/commonjs/tabs/lib/TabsPanels.js +0 -21
  439. package/dist/commonjs/tabs/lib/cursor/useRovingFocus.d.ts +0 -37
  440. package/dist/commonjs/tabs/lib/cursor/useRovingFocus.d.ts.map +0 -1
  441. package/dist/commonjs/tabs/lib/list/renderItem.d.ts +0 -4
  442. package/dist/commonjs/tabs/lib/list/renderItem.d.ts.map +0 -1
  443. package/dist/commonjs/tabs/lib/list/renderItem.js +0 -18
  444. package/dist/commonjs/tabs/lib/list/useListRegisterItem.d.ts +0 -14
  445. package/dist/commonjs/tabs/lib/list/useListRegisterItem.d.ts.map +0 -1
  446. package/dist/commonjs/tabs/lib/list/useListRegisterItem.js +0 -46
  447. package/dist/commonjs/tabs/lib/menu/Menu.d.ts +0 -80
  448. package/dist/commonjs/tabs/lib/menu/Menu.d.ts.map +0 -1
  449. package/dist/commonjs/tabs/lib/menu/Menu.js +0 -94
  450. package/dist/commonjs/tabs/lib/menu/MenuCard.d.ts +0 -17
  451. package/dist/commonjs/tabs/lib/menu/MenuCard.d.ts.map +0 -1
  452. package/dist/commonjs/tabs/lib/menu/MenuCard.js +0 -82
  453. package/dist/commonjs/tabs/lib/menu/MenuItem.d.ts +0 -62
  454. package/dist/commonjs/tabs/lib/menu/MenuItem.d.ts.map +0 -1
  455. package/dist/commonjs/tabs/lib/menu/MenuItem.js +0 -145
  456. package/dist/commonjs/tabs/lib/menu/MenuList.d.ts +0 -23
  457. package/dist/commonjs/tabs/lib/menu/MenuList.d.ts.map +0 -1
  458. package/dist/commonjs/tabs/lib/menu/MenuList.js +0 -52
  459. package/dist/commonjs/tabs/lib/menu/MenuPopper.d.ts +0 -21
  460. package/dist/commonjs/tabs/lib/menu/MenuPopper.d.ts.map +0 -1
  461. package/dist/commonjs/tabs/lib/menu/MenuPopper.js +0 -45
  462. package/dist/commonjs/tabs/lib/menu/MenuTarget.d.ts +0 -21
  463. package/dist/commonjs/tabs/lib/menu/MenuTarget.d.ts.map +0 -1
  464. package/dist/commonjs/tabs/lib/menu/MenuTarget.js +0 -60
  465. package/dist/commonjs/tabs/lib/menu/index.d.ts +0 -8
  466. package/dist/commonjs/tabs/lib/menu/index.d.ts.map +0 -1
  467. package/dist/commonjs/tabs/lib/menu/index.js +0 -18
  468. package/dist/commonjs/tabs/lib/menu/useMenuModel.d.ts +0 -35
  469. package/dist/commonjs/tabs/lib/menu/useMenuModel.d.ts.map +0 -1
  470. package/dist/commonjs/tabs/lib/menu/useMenuModel.js +0 -33
  471. package/dist/commonjs/tabs/lib/overflow/index.d.ts +0 -5
  472. package/dist/commonjs/tabs/lib/overflow/index.d.ts.map +0 -1
  473. package/dist/commonjs/tabs/lib/overflow/index.js +0 -9
  474. package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +0 -8
  475. package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.d.ts.map +0 -1
  476. package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.js +0 -22
  477. package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.d.ts +0 -10
  478. package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.d.ts.map +0 -1
  479. package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.js +0 -32
  480. package/dist/commonjs/tabs/lib/overflow/useOverflowModel.d.ts +0 -69
  481. package/dist/commonjs/tabs/lib/overflow/useOverflowModel.d.ts.map +0 -1
  482. package/dist/commonjs/tabs/lib/overflow/useOverflowModel.js +0 -117
  483. package/dist/commonjs/tabs/lib/overflow/useOverflowTarget.d.ts +0 -11
  484. package/dist/commonjs/tabs/lib/overflow/useOverflowTarget.d.ts.map +0 -1
  485. package/dist/commonjs/tabs/lib/overflow/useOverflowTarget.js +0 -35
  486. package/dist/commonjs/tabs/lib/selection/index.d.ts +0 -4
  487. package/dist/commonjs/tabs/lib/selection/index.d.ts.map +0 -1
  488. package/dist/commonjs/tabs/lib/selection/index.js +0 -8
  489. package/dist/commonjs/tabs/lib/selection/useResetCursorOnBlur.d.ts +0 -13
  490. package/dist/commonjs/tabs/lib/selection/useResetCursorOnBlur.d.ts.map +0 -1
  491. package/dist/commonjs/tabs/lib/selection/useSelectionItem.d.ts +0 -8
  492. package/dist/commonjs/tabs/lib/selection/useSelectionItem.d.ts.map +0 -1
  493. package/dist/commonjs/tabs/lib/selection/useSelectionItem.js +0 -16
  494. package/dist/commonjs/tabs/lib/selection/useSelectionModel.d.ts +0 -62
  495. package/dist/commonjs/tabs/lib/selection/useSelectionModel.d.ts.map +0 -1
  496. package/dist/commonjs/tabs/lib/selection/useSelectionModel.js +0 -80
  497. package/dist/es6/common/lib/EllipsisText.d.ts +0 -5
  498. package/dist/es6/common/lib/EllipsisText.d.ts.map +0 -1
  499. package/dist/es6/common/lib/EllipsisText.js +0 -8
  500. package/dist/es6/common/lib/utils/useConstant.d.ts +0 -9
  501. package/dist/es6/common/lib/utils/useConstant.d.ts.map +0 -1
  502. package/dist/es6/common/lib/utils/useConstant.js +0 -15
  503. package/dist/es6/common/lib/utils/useResizeObserver.d.ts +0 -3
  504. package/dist/es6/common/lib/utils/useResizeObserver.d.ts.map +0 -1
  505. package/dist/es6/common/lib/utils/useResizeObserver.js +0 -37
  506. package/dist/es6/tabs/lib/TabsItem.d.ts +0 -107
  507. package/dist/es6/tabs/lib/TabsItem.d.ts.map +0 -1
  508. package/dist/es6/tabs/lib/TabsItem.js +0 -131
  509. package/dist/es6/tabs/lib/TabsList.d.ts +0 -43
  510. package/dist/es6/tabs/lib/TabsList.d.ts.map +0 -1
  511. package/dist/es6/tabs/lib/TabsList.js +0 -44
  512. package/dist/es6/tabs/lib/TabsMenuPopper.d.ts +0 -21
  513. package/dist/es6/tabs/lib/TabsMenuPopper.d.ts.map +0 -1
  514. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +0 -31
  515. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +0 -1
  516. package/dist/es6/tabs/lib/TabsOverflowButton.js +0 -48
  517. package/dist/es6/tabs/lib/TabsPanel.d.ts.map +0 -1
  518. package/dist/es6/tabs/lib/TabsPanel.js +0 -59
  519. package/dist/es6/tabs/lib/TabsPanels.d.ts.map +0 -1
  520. package/dist/es6/tabs/lib/TabsPanels.js +0 -12
  521. package/dist/es6/tabs/lib/cursor/useRovingFocus.d.ts +0 -37
  522. package/dist/es6/tabs/lib/cursor/useRovingFocus.d.ts.map +0 -1
  523. package/dist/es6/tabs/lib/cursor/useRovingFocus.js +0 -84
  524. package/dist/es6/tabs/lib/list/renderItem.d.ts +0 -4
  525. package/dist/es6/tabs/lib/list/renderItem.d.ts.map +0 -1
  526. package/dist/es6/tabs/lib/list/renderItem.js +0 -12
  527. package/dist/es6/tabs/lib/list/useListRegisterItem.d.ts +0 -14
  528. package/dist/es6/tabs/lib/list/useListRegisterItem.d.ts.map +0 -1
  529. package/dist/es6/tabs/lib/list/useListRegisterItem.js +0 -41
  530. package/dist/es6/tabs/lib/menu/Menu.d.ts +0 -80
  531. package/dist/es6/tabs/lib/menu/Menu.d.ts.map +0 -1
  532. package/dist/es6/tabs/lib/menu/Menu.js +0 -89
  533. package/dist/es6/tabs/lib/menu/MenuCard.d.ts +0 -17
  534. package/dist/es6/tabs/lib/menu/MenuCard.d.ts.map +0 -1
  535. package/dist/es6/tabs/lib/menu/MenuCard.js +0 -73
  536. package/dist/es6/tabs/lib/menu/MenuItem.d.ts +0 -62
  537. package/dist/es6/tabs/lib/menu/MenuItem.d.ts.map +0 -1
  538. package/dist/es6/tabs/lib/menu/MenuItem.js +0 -136
  539. package/dist/es6/tabs/lib/menu/MenuList.d.ts +0 -23
  540. package/dist/es6/tabs/lib/menu/MenuList.d.ts.map +0 -1
  541. package/dist/es6/tabs/lib/menu/MenuList.js +0 -43
  542. package/dist/es6/tabs/lib/menu/MenuPopper.d.ts +0 -21
  543. package/dist/es6/tabs/lib/menu/MenuPopper.d.ts.map +0 -1
  544. package/dist/es6/tabs/lib/menu/MenuPopper.js +0 -36
  545. package/dist/es6/tabs/lib/menu/MenuTarget.d.ts +0 -21
  546. package/dist/es6/tabs/lib/menu/MenuTarget.d.ts.map +0 -1
  547. package/dist/es6/tabs/lib/menu/MenuTarget.js +0 -51
  548. package/dist/es6/tabs/lib/menu/index.d.ts +0 -8
  549. package/dist/es6/tabs/lib/menu/index.d.ts.map +0 -1
  550. package/dist/es6/tabs/lib/menu/index.js +0 -7
  551. package/dist/es6/tabs/lib/menu/useMenuModel.d.ts +0 -35
  552. package/dist/es6/tabs/lib/menu/useMenuModel.d.ts.map +0 -1
  553. package/dist/es6/tabs/lib/menu/useMenuModel.js +0 -31
  554. package/dist/es6/tabs/lib/overflow/index.d.ts +0 -5
  555. package/dist/es6/tabs/lib/overflow/index.d.ts.map +0 -1
  556. package/dist/es6/tabs/lib/overflow/index.js +0 -4
  557. package/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +0 -8
  558. package/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.d.ts.map +0 -1
  559. package/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.js +0 -13
  560. package/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.d.ts +0 -10
  561. package/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.d.ts.map +0 -1
  562. package/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.js +0 -30
  563. package/dist/es6/tabs/lib/overflow/useOverflowModel.d.ts +0 -69
  564. package/dist/es6/tabs/lib/overflow/useOverflowModel.d.ts.map +0 -1
  565. package/dist/es6/tabs/lib/overflow/useOverflowModel.js +0 -111
  566. package/dist/es6/tabs/lib/overflow/useOverflowTarget.d.ts +0 -11
  567. package/dist/es6/tabs/lib/overflow/useOverflowTarget.d.ts.map +0 -1
  568. package/dist/es6/tabs/lib/overflow/useOverflowTarget.js +0 -30
  569. package/dist/es6/tabs/lib/selection/index.d.ts +0 -4
  570. package/dist/es6/tabs/lib/selection/index.d.ts.map +0 -1
  571. package/dist/es6/tabs/lib/selection/index.js +0 -3
  572. package/dist/es6/tabs/lib/selection/useResetCursorOnBlur.d.ts +0 -13
  573. package/dist/es6/tabs/lib/selection/useResetCursorOnBlur.d.ts.map +0 -1
  574. package/dist/es6/tabs/lib/selection/useSelectionItem.d.ts +0 -8
  575. package/dist/es6/tabs/lib/selection/useSelectionItem.d.ts.map +0 -1
  576. package/dist/es6/tabs/lib/selection/useSelectionItem.js +0 -14
  577. package/dist/es6/tabs/lib/selection/useSelectionModel.d.ts +0 -62
  578. package/dist/es6/tabs/lib/selection/useSelectionModel.d.ts.map +0 -1
  579. package/dist/es6/tabs/lib/selection/useSelectionModel.js +0 -75
  580. package/tabs/lib/TabsItem.tsx +0 -250
  581. package/tabs/lib/TabsList.tsx +0 -67
  582. package/tabs/lib/TabsMenuPopper.tsx +0 -27
  583. package/tabs/lib/TabsOverflowButton.tsx +0 -58
  584. package/tabs/lib/TabsPanels.tsx +0 -28
  585. package/tabs/lib/cursor/useRovingFocus.tsx +0 -94
  586. package/tabs/lib/list/renderItem.tsx +0 -19
  587. package/tabs/lib/list/useListRegisterItem.tsx +0 -53
  588. package/tabs/lib/menu/Menu.tsx +0 -95
  589. package/tabs/lib/menu/MenuCard.tsx +0 -96
  590. package/tabs/lib/menu/MenuItem.tsx +0 -195
  591. package/tabs/lib/menu/MenuList.tsx +0 -59
  592. package/tabs/lib/menu/MenuPopper.tsx +0 -31
  593. package/tabs/lib/menu/MenuTarget.tsx +0 -52
  594. package/tabs/lib/menu/index.ts +0 -8
  595. package/tabs/lib/menu/useMenuModel.tsx +0 -67
  596. package/tabs/lib/overflow/index.ts +0 -4
  597. package/tabs/lib/overflow/spec/tsconfig.json +0 -3
  598. package/tabs/lib/overflow/spec/useOverflowModel.spec.tsx +0 -46
  599. package/tabs/lib/overflow/useOverflowMeasureContainer.ts +0 -20
  600. package/tabs/lib/overflow/useOverflowMeasureItem.tsx +0 -40
  601. package/tabs/lib/overflow/useOverflowModel.tsx +0 -185
  602. package/tabs/lib/overflow/useOverflowTarget.tsx +0 -42
  603. package/tabs/lib/selection/index.ts +0 -3
  604. package/tabs/lib/selection/useResetCursorOnBlur.tsx +0 -29
  605. package/tabs/lib/selection/useSelectionItem.tsx +0 -26
  606. package/tabs/lib/selection/useSelectionModel.tsx +0 -133
  607. package/ts3.5/dist/commonjs/common/lib/EllipsisText.d.ts +0 -5
  608. package/ts3.5/dist/commonjs/common/lib/utils/useConstant.d.ts +0 -9
  609. package/ts3.5/dist/commonjs/common/lib/utils/useResizeObserver.d.ts +0 -3
  610. package/ts3.5/dist/commonjs/tabs/lib/TabsItem.d.ts +0 -107
  611. package/ts3.5/dist/commonjs/tabs/lib/TabsList.d.ts +0 -43
  612. package/ts3.5/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +0 -21
  613. package/ts3.5/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +0 -31
  614. package/ts3.5/dist/commonjs/tabs/lib/cursor/useRovingFocus.d.ts +0 -37
  615. package/ts3.5/dist/commonjs/tabs/lib/list/renderItem.d.ts +0 -4
  616. package/ts3.5/dist/commonjs/tabs/lib/list/useListRegisterItem.d.ts +0 -14
  617. package/ts3.5/dist/commonjs/tabs/lib/menu/Menu.d.ts +0 -80
  618. package/ts3.5/dist/commonjs/tabs/lib/menu/MenuCard.d.ts +0 -17
  619. package/ts3.5/dist/commonjs/tabs/lib/menu/MenuItem.d.ts +0 -62
  620. package/ts3.5/dist/commonjs/tabs/lib/menu/MenuList.d.ts +0 -23
  621. package/ts3.5/dist/commonjs/tabs/lib/menu/MenuPopper.d.ts +0 -21
  622. package/ts3.5/dist/commonjs/tabs/lib/menu/MenuTarget.d.ts +0 -21
  623. package/ts3.5/dist/commonjs/tabs/lib/menu/index.d.ts +0 -8
  624. package/ts3.5/dist/commonjs/tabs/lib/menu/useMenuModel.d.ts +0 -35
  625. package/ts3.5/dist/commonjs/tabs/lib/overflow/index.d.ts +0 -5
  626. package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +0 -8
  627. package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.d.ts +0 -10
  628. package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowModel.d.ts +0 -69
  629. package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowTarget.d.ts +0 -11
  630. package/ts3.5/dist/commonjs/tabs/lib/selection/index.d.ts +0 -4
  631. package/ts3.5/dist/commonjs/tabs/lib/selection/useResetCursorOnBlur.d.ts +0 -13
  632. package/ts3.5/dist/commonjs/tabs/lib/selection/useSelectionItem.d.ts +0 -8
  633. package/ts3.5/dist/commonjs/tabs/lib/selection/useSelectionModel.d.ts +0 -62
  634. package/ts3.5/dist/es6/common/lib/EllipsisText.d.ts +0 -5
  635. package/ts3.5/dist/es6/common/lib/utils/useConstant.d.ts +0 -9
  636. package/ts3.5/dist/es6/common/lib/utils/useResizeObserver.d.ts +0 -3
  637. package/ts3.5/dist/es6/tabs/lib/TabsItem.d.ts +0 -107
  638. package/ts3.5/dist/es6/tabs/lib/TabsList.d.ts +0 -43
  639. package/ts3.5/dist/es6/tabs/lib/TabsMenuPopper.d.ts +0 -21
  640. package/ts3.5/dist/es6/tabs/lib/TabsOverflowButton.d.ts +0 -31
  641. package/ts3.5/dist/es6/tabs/lib/cursor/useRovingFocus.d.ts +0 -37
  642. package/ts3.5/dist/es6/tabs/lib/list/renderItem.d.ts +0 -4
  643. package/ts3.5/dist/es6/tabs/lib/list/useListRegisterItem.d.ts +0 -14
  644. package/ts3.5/dist/es6/tabs/lib/menu/Menu.d.ts +0 -80
  645. package/ts3.5/dist/es6/tabs/lib/menu/MenuCard.d.ts +0 -17
  646. package/ts3.5/dist/es6/tabs/lib/menu/MenuItem.d.ts +0 -62
  647. package/ts3.5/dist/es6/tabs/lib/menu/MenuList.d.ts +0 -23
  648. package/ts3.5/dist/es6/tabs/lib/menu/MenuPopper.d.ts +0 -21
  649. package/ts3.5/dist/es6/tabs/lib/menu/MenuTarget.d.ts +0 -21
  650. package/ts3.5/dist/es6/tabs/lib/menu/index.d.ts +0 -8
  651. package/ts3.5/dist/es6/tabs/lib/menu/useMenuModel.d.ts +0 -35
  652. package/ts3.5/dist/es6/tabs/lib/overflow/index.d.ts +0 -5
  653. package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +0 -8
  654. package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.d.ts +0 -10
  655. package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowModel.d.ts +0 -69
  656. package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowTarget.d.ts +0 -11
  657. package/ts3.5/dist/es6/tabs/lib/selection/index.d.ts +0 -4
  658. package/ts3.5/dist/es6/tabs/lib/selection/useResetCursorOnBlur.d.ts +0 -13
  659. package/ts3.5/dist/es6/tabs/lib/selection/useSelectionItem.d.ts +0 -8
  660. package/ts3.5/dist/es6/tabs/lib/selection/useSelectionModel.d.ts +0 -62
@@ -0,0 +1,122 @@
1
+ import React from 'react';
2
+ import {mergeProps, useIsRTL, useMount} from '@workday/canvas-kit-react/common';
3
+
4
+ import {CursorModel, getItem, getNext} from './useCursorModel';
5
+
6
+ export const orientationKeyMap = {
7
+ horizontal: {
8
+ ArrowLeft: 'previous',
9
+ Left: 'previous',
10
+ ArrowRight: 'next',
11
+ Right: 'next',
12
+ Home: 'first',
13
+ End: 'last',
14
+ },
15
+ vertical: {
16
+ ArrowUp: 'previous',
17
+ Up: 'previous',
18
+ ArrowDown: 'next',
19
+ Down: 'next',
20
+ Home: 'first',
21
+ End: 'last',
22
+ },
23
+ } as const;
24
+
25
+ const rightToLeftMap = {
26
+ ArrowLeft: 'ArrowRight',
27
+ Left: 'Right',
28
+ ArrowRight: 'ArrowLeft',
29
+ Right: 'Left',
30
+ Home: 'End',
31
+ End: 'Home',
32
+ } as const;
33
+
34
+ /**
35
+ * Handles the roving focus behavior of a Cursor model. It should be added to the element
36
+ * representing the list. It does not handle the tabIndex.
37
+ *
38
+ * @see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex
39
+ */
40
+ export const useRovingFocusList = (model: CursorModel, elemProps = {}) => {
41
+ const {state, events} = model;
42
+ const stateRef = React.useRef(state);
43
+ stateRef.current = state;
44
+ // keep track of intentional focus changes. Without this state tracking, all changes to
45
+ // `state.cursorId` or `state.items` would result in focus changes. That is definitely not what
46
+ // we want.
47
+ const keyDownRef = React.useRef(false);
48
+ const isRTL = useIsRTL();
49
+
50
+ React.useEffect(() => {
51
+ if (keyDownRef.current) {
52
+ const item = getItem(state.cursorId, state.items);
53
+ item.ref.current?.focus();
54
+
55
+ keyDownRef.current = false;
56
+ }
57
+ }, [state.cursorId, state.items]);
58
+
59
+ return mergeProps(
60
+ {
61
+ onKeyDown(event: React.KeyboardEvent) {
62
+ (Object.keys(
63
+ orientationKeyMap[state.orientation]
64
+ ) as (keyof typeof orientationKeyMap[typeof state.orientation])[]).forEach(key => {
65
+ if (isRTL ? event.key === rightToLeftMap[key] : event.key === key) {
66
+ const event = orientationKeyMap[state.orientation][key];
67
+ keyDownRef.current = true;
68
+ events[event]?.();
69
+ }
70
+ });
71
+ },
72
+ },
73
+ elemProps
74
+ );
75
+ };
76
+
77
+ /**
78
+ * Handles the roving focus behavior of a Cursor model. It should be added to the element
79
+ * representing a list item. It does not handle the tabIndex.
80
+ *
81
+ * @see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex
82
+ */
83
+ export const useRovingFocusItem = ({state}: CursorModel, elemProps = {}) => {
84
+ // Tracks when this element has focus. If this item is removed while still focused, we have to
85
+ // inform the model to move the cursor to the next item.
86
+ const focusRef = React.useRef(false);
87
+
88
+ // Create a ref out of state. We don't want to watch state on unmount, so we use a ref to get the
89
+ // current value at the time of unmounting. Otherwise, `state.items` would be a cached value of an
90
+ // empty array
91
+ const stateRef = React.useRef(state);
92
+ stateRef.current = state;
93
+
94
+ useMount(() => {
95
+ return () => {
96
+ if (focusRef.current && stateRef.current.items.length) {
97
+ // Unmount is called before state updates are flushed and we'll never get the last state
98
+ // update, so use `getNext` instead of `getItem`
99
+ const item = getNext(stateRef.current.cursorId, stateRef.current.items);
100
+
101
+ // If we call `focus` right away, there seems to be a timing issue where the focus handler
102
+ // never gets called. Waiting until just before a frame is rendered seems to ensure the
103
+ // focus handler is called correctly. Removing will make deleting multiple items fail.
104
+ requestAnimationFrame(() => {
105
+ item.ref.current?.focus();
106
+ });
107
+ }
108
+ };
109
+ });
110
+
111
+ return mergeProps(
112
+ {
113
+ onFocus(event: React.FocusEvent) {
114
+ focusRef.current = true;
115
+ },
116
+ onBlur(event: React.FocusEvent) {
117
+ focusRef.current = false;
118
+ },
119
+ },
120
+ elemProps
121
+ );
122
+ };
@@ -1,2 +1,2 @@
1
- export * from './useRovingFocus';
1
+ export * from './hooks';
2
2
  export * from './useCursorModel';
@@ -1,5 +1,11 @@
1
1
  import React from 'react';
2
- import {createEventMap, ToModelConfig, useEventMap, assert} from '@workday/canvas-kit-react/common';
2
+ import {
3
+ createEventMap,
4
+ Model,
5
+ ToModelConfig,
6
+ useEventMap,
7
+ assert,
8
+ } from '@workday/canvas-kit-react/common';
3
9
 
4
10
  import {
5
11
  ListState,
@@ -7,13 +13,13 @@ import {
7
13
  BaseListModelConfig,
8
14
  listEventMap,
9
15
  useListModel,
16
+ Item,
10
17
  ListModelConfig,
11
- ListModel,
12
18
  } from '../list/useListModel';
13
19
 
14
20
  export type Orientation = 'horizontal' | 'vertical';
15
21
 
16
- export type CursorState<T = unknown> = ListState<T> & {
22
+ export type CursorState = ListState & {
17
23
  /** Orientation of the list. This property determines what "next" and "previous" mean. This should
18
24
  * be set to match the layout of UI components */
19
25
  orientation: Orientation;
@@ -21,7 +27,7 @@ export type CursorState<T = unknown> = ListState<T> & {
21
27
  cursorId: string;
22
28
  };
23
29
 
24
- export type CursorEvents<T = unknown> = ListEvents<T> & {
30
+ export type CursorEvents = ListEvents & {
25
31
  /** Directly sets the cursor to the list item by its identifier. */
26
32
  goTo(data: {id: string}): void;
27
33
  /** Set the cursor to the "next" item in the list. If the end of the list is detected, it will
@@ -36,10 +42,7 @@ export type CursorEvents<T = unknown> = ListEvents<T> & {
36
42
  last(): void;
37
43
  };
38
44
 
39
- export interface CursorModel<T = unknown> extends ListModel<T> {
40
- state: CursorState<T>;
41
- events: CursorEvents<T>;
42
- }
45
+ export type CursorModel = Model<CursorState, CursorEvents>;
43
46
 
44
47
  export const cursorEventMap = createEventMap<CursorEvents>()({
45
48
  guards: {
@@ -58,114 +61,98 @@ export const cursorEventMap = createEventMap<CursorEvents>()({
58
61
  },
59
62
  });
60
63
 
61
- export type BaseCursorModelConfig<T> = BaseListModelConfig<T> & {
64
+ export type BaseCursorModelConfig = BaseListModelConfig & {
62
65
  /**
63
66
  * The orientation of a list of items. Values are either `vertical` or `horizontal`. This value will
64
- * effect which ids activate progression through a list. For example, `horizontal` will activate with
67
+ * effect which keys activate progression through a list. For example, `horizontal` will activate with
65
68
  * left and right arrows while `vertical` will activate with up and down arrows.
66
69
  * @default 'vertical'
67
70
  */
68
71
  orientation?: Orientation;
69
- /**
70
- * Initial cursor position. If not provided, the cursor will point to the first item in the list
71
- */
72
- initialCursorId?: string;
73
72
  };
74
73
 
75
- export type CursorModelConfig<T> = BaseCursorModelConfig<T> &
76
- Partial<ToModelConfig<CursorState<T>, CursorEvents<T>, typeof cursorEventMap>>;
77
-
78
- export const useCursorNavigation = <T extends unknown>(
79
- state: CursorState<T>,
80
- getId: ListModel<T>['getId']
81
- ) => {
82
- // refs for performance so that new functions aren't created every render
83
- const getIdRef = React.useRef(getId);
84
- const itemsRef = React.useRef(state.items);
85
- const nonInteractiveIdsRef = React.useRef(state.nonInteractiveIds);
86
-
87
- itemsRef.current = state.items;
88
- nonInteractiveIdsRef.current = state.nonInteractiveIds;
89
-
90
- // return a memoized function to prevent recreation of functions every render
91
- return React.useMemo(() => {
92
- const getFirst = () => itemsRef.current[0];
93
- const getLast = () => itemsRef.current[itemsRef.current.length - 1];
94
-
95
- const getItem = (id: string): T => {
96
- const item = id ? itemsRef.current.find(item => getIdRef.current(item) === id) : getFirst(); // no id, return first item
97
- assert(item, `Item not found: ${id}`);
98
- return item;
99
- };
100
-
101
- const getOffsetItem = (offset: number) => (id: string, tries = itemsRef.current.length): T => {
102
- const items = itemsRef.current;
103
- const item = getItem(id);
104
-
105
- const getId = getIdRef.current;
106
- const currentIndex = items.findIndex(i => getId(item) === getId(i));
107
- let nextIndex = currentIndex + offset;
108
- if (nextIndex < 0) {
109
- nextIndex = items.length - 1;
110
- } else if (nextIndex >= items.length) {
111
- nextIndex = 0;
112
- }
74
+ export type CursorModelConfig = BaseCursorModelConfig &
75
+ Partial<ToModelConfig<CursorState, CursorEvents, typeof cursorEventMap>>;
113
76
 
114
- if (nonInteractiveIdsRef.current.includes(getId(items[nextIndex])) && tries > 0) {
115
- // The next item is disabled, try again, but only if we haven't already tried everything.
116
- // Avoid an infinite loop with `tries`
117
- return getOffsetItem(offset)(getId(items[nextIndex]), tries - 1);
118
- }
77
+ const getFirst = (items: Item[]): Item => {
78
+ return items[0];
79
+ };
119
80
 
120
- return items[nextIndex];
121
- };
81
+ const getLast = (items: Item[]): Item => {
82
+ return items[items.length - 1];
83
+ };
122
84
 
123
- const getNext = getOffsetItem(1);
124
- const getPrevious = getOffsetItem(-1);
85
+ export const getItem = (id: string, items: Item[]): Item => {
86
+ const item = id ? items.find(item => item.id === id) : getFirst(items); // no id, return first item
87
+ assert(item, `Item not found: ${id}`);
88
+ return item;
89
+ };
125
90
 
126
- return {getFirst, getLast, getItem, getNext, getPrevious};
127
- }, []);
91
+ const getOffsetItem = (offset: number) => (id: string, items: Item[]): Item => {
92
+ const item = getItem(id, items);
93
+ const currentIndex = items.findIndex(({id}) => item.id === id);
94
+ let nextIndex = currentIndex + offset;
95
+ if (nextIndex < 0) {
96
+ nextIndex = items.length - 1;
97
+ } else if (nextIndex >= items.length) {
98
+ nextIndex = 0;
99
+ }
100
+
101
+ const disabledAttribute = items[nextIndex].ref.current?.getAttribute('disabled');
102
+ if (disabledAttribute !== null || disabledAttribute === 'false') {
103
+ // The next item is disabled, try again
104
+ return getOffsetItem(offset)(items[nextIndex].id, items);
105
+ }
106
+
107
+ return items[nextIndex];
128
108
  };
129
109
 
130
- export const useCursorModel = <T extends unknown>(
131
- config: CursorModelConfig<T> = {}
132
- ): CursorModel<T> => {
110
+ export const hasItems = (items: Item[]) => items.some(item => item.ref.current);
111
+
112
+ export const getNext = getOffsetItem(1);
113
+ export const getPrevious = getOffsetItem(-1);
114
+
115
+ export const useCursorModel = (config: CursorModelConfig = {}): CursorModel => {
133
116
  const [orientation] = React.useState(config.orientation || 'vertical');
134
117
  const [cursorId, setCursorId] = React.useState('');
135
- const list = useListModel(config as ListModelConfig<T>);
136
- const initialCurrentRef = React.useRef(
137
- config.initialCursorId || config.items?.length ? list.getId(config.items![0]) : ''
138
- );
118
+ const initialCurrentRef = React.useRef('');
119
+ const list = useListModel(config as ListModelConfig);
139
120
 
140
121
  const state = {...list.state, orientation, cursorId};
141
- const navigation = useCursorNavigation(state, list.getId);
142
122
 
143
123
  const events = useEventMap(cursorEventMap, state, config, {
144
124
  ...list.events,
145
125
  registerItem(data) {
146
126
  // point the cursor at the first item
147
127
  if (!initialCurrentRef.current) {
148
- initialCurrentRef.current = list.getId(data.item);
128
+ initialCurrentRef.current = data.item.id;
149
129
  setCursorId(initialCurrentRef.current);
150
130
  }
151
131
  list.events.registerItem(data);
152
132
  },
133
+ unregisterItem(data) {
134
+ // move the cursor forward if the the cursor is pointing to an item that is being removed
135
+ if (state.cursorId === data.id && state.items.some(i => i.ref.current !== null)) {
136
+ events.next();
137
+ }
138
+ list.events.unregisterItem(data);
139
+ },
153
140
  goTo({id}) {
154
141
  setCursorId(id);
155
142
  },
156
143
  next() {
157
- setCursorId(list.getId(navigation.getNext(state.cursorId)));
144
+ setCursorId(getNext(state.cursorId, state.items).id);
158
145
  },
159
146
  previous() {
160
- setCursorId(list.getId(navigation.getPrevious(state.cursorId)));
147
+ setCursorId(getPrevious(state.cursorId, state.items).id);
161
148
  },
162
149
  first() {
163
- setCursorId(list.getId(navigation.getFirst()));
150
+ setCursorId(getFirst(state.items).id);
164
151
  },
165
152
  last() {
166
- setCursorId(list.getId(navigation.getLast()));
153
+ setCursorId(getLast(state.items).id);
167
154
  },
168
- } as CursorEvents<T>);
155
+ });
169
156
 
170
- return {state, events, getId: list.getId};
157
+ return {state, events};
171
158
  };
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import {mergeProps} from '@workday/canvas-kit-react/common';
3
+
4
+ import {orientationKeyMap} from './cursor/hooks';
5
+ import {TabsModel} from './useTabsModel';
6
+
7
+ /**
8
+ * Reset the cursor to the active tab when the tab list looses focus
9
+ */
10
+ export const useResetCursorOnBlur = ({state, events}: TabsModel, elemProps = {}) => {
11
+ const programmaticFocusRef = React.useRef(false);
12
+ return mergeProps(
13
+ {
14
+ onKeyDown(event: React.KeyboardEvent) {
15
+ // Programmatic focus only on any focus change via keyboard
16
+ if (Object.keys(orientationKeyMap[state.orientation]).indexOf(event.key) !== -1) {
17
+ programmaticFocusRef.current = true;
18
+ }
19
+ },
20
+ onFocus() {
21
+ programmaticFocusRef.current = false;
22
+ },
23
+ onBlur() {
24
+ if (!programmaticFocusRef.current) {
25
+ events.goTo({id: state.activeTab});
26
+ }
27
+ },
28
+ },
29
+ elemProps
30
+ );
31
+ };
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+
3
+ import {useMountLayout} from '@workday/canvas-kit-react/common';
4
+
5
+ import {ListModel} from './useListModel';
6
+
7
+ /**
8
+ * Handle list registration. Returns an identifier used to identify this item in the list
9
+ * @param model A ListModel
10
+ * @param localRef A RefObject that will be used to register an item
11
+ * @param id Desired identifier for the List Model. If not provided, it will fall back to the index
12
+ * in the list
13
+ * @param index (Optional) Specify the position of the item if the order is expected to change
14
+ */
15
+ export const useRegisterItem = (
16
+ {state, events}: ListModel,
17
+ localRef: React.RefObject<any>,
18
+ id = '',
19
+ index?: number
20
+ ): string => {
21
+ const [localId, setLocalId] = React.useState(id);
22
+ const firstRender = React.useRef(true);
23
+
24
+ React.useLayoutEffect(() => {
25
+ if (index !== undefined && !firstRender.current) {
26
+ events.updateItemPosition({id: localId, index});
27
+ }
28
+ // we only care about the index changing
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ }, [index]);
31
+
32
+ useMountLayout(() => {
33
+ const defaultId = state.indexRef.current;
34
+ const itemId = id || String(defaultId);
35
+ events.registerItem({item: {id: itemId, ref: localRef}, index});
36
+ setLocalId(itemId);
37
+ firstRender.current = false;
38
+
39
+ return () => {
40
+ events.unregisterItem({id: itemId});
41
+ };
42
+ });
43
+
44
+ return localId;
45
+ };
@@ -1,3 +1,2 @@
1
- export * from './useListRegisterItem';
1
+ export * from './hooks';
2
2
  export * from './useListModel';
3
- export * from './renderItem';
@@ -5,42 +5,34 @@ import {
5
5
  ToModelConfig,
6
6
  useEventMap,
7
7
  useUniqueId,
8
- assert,
9
8
  } from '@workday/canvas-kit-react/common';
10
9
 
11
- export type ListState<T = unknown> = {
10
+ export type Item = {
11
+ /** IDREF of the list. Children ids can be derived from this id */
12
+ id: string;
13
+ ref: React.RefObject<HTMLElement>;
14
+ };
15
+
16
+ export type ListState = {
12
17
  /** IDREF of the list. Children ids can be derived from this id */
13
18
  id: string;
14
19
  /** Used as an auto-incrementing ID for accessibility */
15
20
  indexRef: React.RefObject<number>;
16
- items: T[];
17
- /**
18
- * An array of ids of non-interactive elements. Non-interactive elements usually have `disabled`
19
- * applied to them and thus are not focusable by the browser. Lists need to know about these so
20
- * that keyboard navigation properly skips over these items. Interactive elements that are
21
- * disabled should use `[aria-disabled]` instead and should still receive focus.
22
- * @see https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_disabled_controls
23
- */
24
- nonInteractiveIds: string[];
21
+ items: Item[];
25
22
  };
26
23
 
27
- export type ListEvents<T = unknown> = {
24
+ export type ListEvents = {
28
25
  /** Register an item to the list. Takes in an identifier, a React.Ref and an optional index. This should be called on
29
26
  * component mount */
30
- registerItem(data: {item: T; index?: number}): void;
27
+ registerItem(data: {item: Item; index?: number}): void;
31
28
  /** Unregister an item by its identifier. This should be called when the component is unmounted */
32
29
  unregisterItem(data: {id: string}): void;
33
30
  /** Updates the position of a tab within the list. This should be called when a tab's index is updated */
34
31
  updateItemPosition(data: {id: string; index: number}): void;
35
32
  };
36
33
 
37
- export interface ListModel<T = unknown> extends Model<ListState<T>, ListEvents<T>> {
38
- getId: (item: T) => string;
39
- }
34
+ export type ListModel = Model<ListState, ListEvents>;
40
35
 
41
- // We don't have a way of knowing what the generic could be, so we leave it as `unknown`. It will
42
- // probably need to be cast to the generic in use inside extending models. This will not effect the
43
- // use of the model in an application, only in models composing this model.
44
36
  export const listEventMap = createEventMap<ListEvents>()({
45
37
  guards: {
46
38
  /**
@@ -84,37 +76,20 @@ export const listEventMap = createEventMap<ListEvents>()({
84
76
  },
85
77
  });
86
78
 
87
- export type BaseListModelConfig<T = unknown> = {
79
+ export type BaseListModelConfig = {
88
80
  /** IDREF of the list. Children ids can be derived from this id */
89
81
  id?: string;
90
- items?: T[];
91
- getId?: (item: T) => string;
92
- /**
93
- * Array of all ids which are currently disabled
94
- */
95
- nonInteractiveIds?: string[];
96
82
  };
97
83
 
98
- export type ListModelConfig<T> = BaseListModelConfig<T> &
99
- Partial<ToModelConfig<ListState<T>, ListEvents<T>, typeof listEventMap>>;
100
-
101
- export const defaultGetId = (item: any): string => {
102
- assert(item.id, 'A list item must have an `id` field or a `getId` function defined');
103
- return item.id;
104
- };
84
+ export type ListModelConfig = BaseListModelConfig &
85
+ Partial<ToModelConfig<ListState, ListEvents, typeof listEventMap>>;
105
86
 
106
- export const useListModel = <T extends unknown>(config: ListModelConfig<T> = {}): ListModel<T> => {
87
+ export const useListModel = (config: ListModelConfig = {}): ListModel => {
107
88
  const id = useUniqueId(config.id);
108
89
  const indexRef = React.useRef(0);
109
- const [items, setItems] = React.useState(config.items || []);
110
- const getId = config.getId || defaultGetId;
90
+ const [items, setItems] = React.useState([] as Item[]);
111
91
 
112
- const state = {
113
- id,
114
- items: config.items || items,
115
- indexRef,
116
- nonInteractiveIds: config.nonInteractiveIds || [],
117
- };
92
+ const state = {id, items, indexRef};
118
93
 
119
94
  const events = useEventMap(listEventMap, state, config, {
120
95
  registerItem({item, index}) {
@@ -130,8 +105,8 @@ export const useListModel = <T extends unknown>(config: ListModelConfig<T> = {})
130
105
  },
131
106
  unregisterItem({id}) {
132
107
  setItems(items => {
133
- if (items.find(item => getId(item) === id)) {
134
- return items.filter(item => getId(item) !== id);
108
+ if (items.find(item => item.id === id)) {
109
+ return items.filter(item => item.id !== id);
135
110
  } else {
136
111
  return items;
137
112
  }
@@ -139,12 +114,12 @@ export const useListModel = <T extends unknown>(config: ListModelConfig<T> = {})
139
114
  },
140
115
  updateItemPosition({id, index}) {
141
116
  setItems(items => {
142
- const copy = items.filter(item => getId(item) !== id);
143
- copy.splice(index, 0, items.find(item => getId(item) === id)!);
117
+ const copy = items.filter(item => item.id !== id);
118
+ copy.splice(index, 0, items.find(item => item.id === id)!);
144
119
  return copy;
145
120
  });
146
121
  },
147
- } as ListEvents<T>);
122
+ });
148
123
 
149
- return {state, events, getId};
124
+ return {state, events};
150
125
  };