@workday/canvas-kit-react 12.1.0-945-next.0 → 12.1.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 (451) hide show
  1. package/collection/index.ts +3 -0
  2. package/collection/lib/focusOnCurrentCursor.ts +55 -0
  3. package/collection/lib/listItemRemove.ts +21 -0
  4. package/collection/lib/useListItemRemoveOnDeleteKey.tsx +40 -0
  5. package/collection/lib/useListItemRovingFocus.tsx +8 -34
  6. package/collection/lib/useListLoader.ts +2 -0
  7. package/collection/lib/useListResetCursorOnBlur.tsx +16 -2
  8. package/collection/lib/useSelectionListModel.tsx +10 -0
  9. package/combobox/lib/hooks/useComboboxInput.ts +7 -10
  10. package/dist/commonjs/action-bar/lib/ActionBar.d.ts +224 -0
  11. package/dist/commonjs/action-bar/lib/ActionBar.d.ts.map +1 -1
  12. package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts +15 -0
  13. package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts.map +1 -1
  14. package/dist/commonjs/action-bar/lib/ActionBarList.d.ts +15 -0
  15. package/dist/commonjs/action-bar/lib/ActionBarList.d.ts.map +1 -1
  16. package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts +20 -0
  17. package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts.map +1 -1
  18. package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts +97 -0
  19. package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts.map +1 -1
  20. package/dist/commonjs/avatar/lib/Avatar.js +21 -21
  21. package/dist/commonjs/badge/lib/CountBadge.js +3 -3
  22. package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts +234 -0
  23. package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts.map +1 -1
  24. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +20 -0
  25. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts.map +1 -1
  26. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts +15 -0
  27. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts.map +1 -1
  28. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts +10 -0
  29. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts.map +1 -1
  30. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.d.ts +112 -0
  31. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.d.ts.map +1 -1
  32. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +20 -0
  33. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts.map +1 -1
  34. package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +97 -0
  35. package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts.map +1 -1
  36. package/dist/commonjs/button/lib/BaseButton.js +21 -21
  37. package/dist/commonjs/button/lib/DeleteButton.js +1 -1
  38. package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
  39. package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
  40. package/dist/commonjs/button/lib/TertiaryButton.js +18 -18
  41. package/dist/commonjs/card/lib/Card.js +1 -1
  42. package/dist/commonjs/card/lib/CardBody.js +1 -1
  43. package/dist/commonjs/card/lib/CardHeading.js +1 -1
  44. package/dist/commonjs/checkbox/lib/CheckBackground.js +3 -3
  45. package/dist/commonjs/checkbox/lib/CheckboxCheck.js +5 -5
  46. package/dist/commonjs/checkbox/lib/CheckboxContainer.js +1 -1
  47. package/dist/commonjs/checkbox/lib/CheckboxInput.js +5 -5
  48. package/dist/commonjs/checkbox/lib/CheckboxRipple.js +1 -1
  49. package/dist/commonjs/collection/index.d.ts +3 -0
  50. package/dist/commonjs/collection/index.d.ts.map +1 -1
  51. package/dist/commonjs/collection/index.js +3 -0
  52. package/dist/commonjs/collection/lib/ListBox.d.ts +78 -0
  53. package/dist/commonjs/collection/lib/ListBox.d.ts.map +1 -1
  54. package/dist/commonjs/collection/lib/ListBox.js +3 -3
  55. package/dist/commonjs/collection/lib/focusOnCurrentCursor.d.ts +3 -0
  56. package/dist/commonjs/collection/lib/focusOnCurrentCursor.d.ts.map +1 -0
  57. package/dist/commonjs/collection/lib/focusOnCurrentCursor.js +45 -0
  58. package/dist/commonjs/collection/lib/listItemRemove.d.ts +3 -0
  59. package/dist/commonjs/collection/lib/listItemRemove.d.ts.map +1 -0
  60. package/dist/commonjs/collection/lib/listItemRemove.js +19 -0
  61. package/dist/commonjs/collection/lib/useGridModel.d.ts +73 -0
  62. package/dist/commonjs/collection/lib/useGridModel.d.ts.map +1 -1
  63. package/dist/commonjs/collection/lib/useListItemAllowChildStrings.d.ts +5 -0
  64. package/dist/commonjs/collection/lib/useListItemAllowChildStrings.d.ts.map +1 -1
  65. package/dist/commonjs/collection/lib/useListItemRegister.d.ts +5 -0
  66. package/dist/commonjs/collection/lib/useListItemRegister.d.ts.map +1 -1
  67. package/dist/commonjs/collection/lib/useListItemRemoveOnDeleteKey.d.ts +86 -0
  68. package/dist/commonjs/collection/lib/useListItemRemoveOnDeleteKey.d.ts.map +1 -0
  69. package/dist/commonjs/collection/lib/useListItemRemoveOnDeleteKey.js +40 -0
  70. package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts +1 -1
  71. package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
  72. package/dist/commonjs/collection/lib/useListItemRovingFocus.js +6 -29
  73. package/dist/commonjs/collection/lib/useListItemSelect.d.ts +5 -0
  74. package/dist/commonjs/collection/lib/useListItemSelect.d.ts.map +1 -1
  75. package/dist/commonjs/collection/lib/useListLoader.d.ts.map +1 -1
  76. package/dist/commonjs/collection/lib/useListLoader.js +2 -0
  77. package/dist/commonjs/collection/lib/useListModel.d.ts +73 -0
  78. package/dist/commonjs/collection/lib/useListModel.d.ts.map +1 -1
  79. package/dist/commonjs/collection/lib/useListResetCursorOnBlur.d.ts +5 -0
  80. package/dist/commonjs/collection/lib/useListResetCursorOnBlur.d.ts.map +1 -1
  81. package/dist/commonjs/collection/lib/useListResetCursorOnBlur.js +13 -1
  82. package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts +5 -0
  83. package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts.map +1 -1
  84. package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts +5 -0
  85. package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
  86. package/dist/commonjs/collection/lib/useOverflowListModel.d.ts +99 -0
  87. package/dist/commonjs/collection/lib/useOverflowListModel.d.ts.map +1 -1
  88. package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts +5 -0
  89. package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts.map +1 -1
  90. package/dist/commonjs/collection/lib/useSelectionListModel.d.ts +94 -0
  91. package/dist/commonjs/collection/lib/useSelectionListModel.d.ts.map +1 -1
  92. package/dist/commonjs/collection/lib/useSelectionListModel.js +10 -0
  93. package/dist/commonjs/combobox/lib/Combobox.d.ts +113 -0
  94. package/dist/commonjs/combobox/lib/Combobox.d.ts.map +1 -1
  95. package/dist/commonjs/combobox/lib/ComboboxCard.d.ts +10 -0
  96. package/dist/commonjs/combobox/lib/ComboboxCard.d.ts.map +1 -1
  97. package/dist/commonjs/combobox/lib/ComboboxInput.d.ts +5 -0
  98. package/dist/commonjs/combobox/lib/ComboboxInput.d.ts.map +1 -1
  99. package/dist/commonjs/combobox/lib/ComboboxMenu.d.ts +25 -0
  100. package/dist/commonjs/combobox/lib/ComboboxMenu.d.ts.map +1 -1
  101. package/dist/commonjs/combobox/lib/ComboboxMenuItem.d.ts +5 -0
  102. package/dist/commonjs/combobox/lib/ComboboxMenuItem.d.ts.map +1 -1
  103. package/dist/commonjs/combobox/lib/ComboboxMenuList.d.ts +10 -0
  104. package/dist/commonjs/combobox/lib/ComboboxMenuList.d.ts.map +1 -1
  105. package/dist/commonjs/combobox/lib/ComboboxMenuList.js +1 -1
  106. package/dist/commonjs/combobox/lib/ComboboxPopper.d.ts +5 -0
  107. package/dist/commonjs/combobox/lib/ComboboxPopper.d.ts.map +1 -1
  108. package/dist/commonjs/combobox/lib/hooks/useComboboxInput.d.ts +5 -0
  109. package/dist/commonjs/combobox/lib/hooks/useComboboxInput.d.ts.map +1 -1
  110. package/dist/commonjs/combobox/lib/hooks/useComboboxInput.js +5 -9
  111. package/dist/commonjs/combobox/lib/hooks/useComboboxInputArbitrary.d.ts +5 -0
  112. package/dist/commonjs/combobox/lib/hooks/useComboboxInputArbitrary.d.ts.map +1 -1
  113. package/dist/commonjs/combobox/lib/hooks/useComboboxInputConstrained.d.ts +5 -0
  114. package/dist/commonjs/combobox/lib/hooks/useComboboxInputConstrained.d.ts.map +1 -1
  115. package/dist/commonjs/combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.d.ts +5 -0
  116. package/dist/commonjs/combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.d.ts.map +1 -1
  117. package/dist/commonjs/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts +5 -0
  118. package/dist/commonjs/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts.map +1 -1
  119. package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts +5 -0
  120. package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -1
  121. package/dist/commonjs/combobox/lib/hooks/useComboboxModel.d.ts +101 -0
  122. package/dist/commonjs/combobox/lib/hooks/useComboboxModel.d.ts.map +1 -1
  123. package/dist/commonjs/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts +5 -0
  124. package/dist/commonjs/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts.map +1 -1
  125. package/dist/commonjs/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts +5 -0
  126. package/dist/commonjs/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts.map +1 -1
  127. package/dist/commonjs/combobox/lib/hooks/useSetPopupWidth.d.ts +5 -0
  128. package/dist/commonjs/combobox/lib/hooks/useSetPopupWidth.d.ts.map +1 -1
  129. package/dist/commonjs/common/lib/AccessibleHide.js +1 -1
  130. package/dist/commonjs/common/lib/CanvasProvider.js +1 -1
  131. package/dist/commonjs/form-field/lib/FormFieldContainer.js +1 -1
  132. package/dist/commonjs/form-field/lib/FormFieldField.js +1 -1
  133. package/dist/commonjs/form-field/lib/FormFieldGroupLabel.js +5 -5
  134. package/dist/commonjs/form-field/lib/FormFieldGroupList.js +3 -3
  135. package/dist/commonjs/form-field/lib/FormFieldHint.js +3 -3
  136. package/dist/commonjs/form-field/lib/FormFieldLabel.js +6 -6
  137. package/dist/commonjs/form-field/lib/formFieldStencil.js +8 -8
  138. package/dist/commonjs/icon/lib/AccentIcon.js +2 -2
  139. package/dist/commonjs/icon/lib/AppletIcon.js +1 -1
  140. package/dist/commonjs/icon/lib/Graphic.js +2 -2
  141. package/dist/commonjs/icon/lib/Svg.js +2 -2
  142. package/dist/commonjs/icon/lib/SystemIcon.d.ts +3 -1
  143. package/dist/commonjs/icon/lib/SystemIcon.d.ts.map +1 -1
  144. package/dist/commonjs/icon/lib/SystemIcon.js +3 -3
  145. package/dist/commonjs/icon/lib/SystemIconCircle.js +1 -1
  146. package/dist/commonjs/loading-dots/lib/LoadingDots.js +2 -2
  147. package/dist/commonjs/menu/lib/Menu.d.ts +112 -0
  148. package/dist/commonjs/menu/lib/Menu.d.ts.map +1 -1
  149. package/dist/commonjs/menu/lib/MenuCard.d.ts +10 -0
  150. package/dist/commonjs/menu/lib/MenuCard.d.ts.map +1 -1
  151. package/dist/commonjs/menu/lib/MenuCard.js +1 -1
  152. package/dist/commonjs/menu/lib/MenuContextTarget.d.ts +15 -0
  153. package/dist/commonjs/menu/lib/MenuContextTarget.d.ts.map +1 -1
  154. package/dist/commonjs/menu/lib/MenuItem.d.ts +11 -1
  155. package/dist/commonjs/menu/lib/MenuItem.d.ts.map +1 -1
  156. package/dist/commonjs/menu/lib/MenuItem.js +1 -1
  157. package/dist/commonjs/menu/lib/MenuList.d.ts +10 -0
  158. package/dist/commonjs/menu/lib/MenuList.d.ts.map +1 -1
  159. package/dist/commonjs/menu/lib/MenuList.js +3 -3
  160. package/dist/commonjs/menu/lib/MenuOption.d.ts +10 -0
  161. package/dist/commonjs/menu/lib/MenuOption.d.ts.map +1 -1
  162. package/dist/commonjs/menu/lib/MenuOption.js +1 -1
  163. package/dist/commonjs/menu/lib/MenuPopper.d.ts +5 -0
  164. package/dist/commonjs/menu/lib/MenuPopper.d.ts.map +1 -1
  165. package/dist/commonjs/menu/lib/MenuTarget.d.ts +25 -0
  166. package/dist/commonjs/menu/lib/MenuTarget.d.ts.map +1 -1
  167. package/dist/commonjs/menu/lib/useMenuModel.d.ts +87 -0
  168. package/dist/commonjs/menu/lib/useMenuModel.d.ts.map +1 -1
  169. package/dist/commonjs/modal/lib/ModalBody.js +1 -1
  170. package/dist/commonjs/modal/lib/ModalCard.js +1 -1
  171. package/dist/commonjs/modal/lib/ModalHeading.js +1 -1
  172. package/dist/commonjs/modal/lib/ModalOverflowOverlay.js +1 -1
  173. package/dist/commonjs/modal/lib/ModalOverlay.js +2 -2
  174. package/dist/commonjs/popup/lib/PopupBody.js +1 -1
  175. package/dist/commonjs/popup/lib/PopupCard.js +2 -2
  176. package/dist/commonjs/popup/lib/PopupCloseIcon.js +1 -1
  177. package/dist/commonjs/popup/lib/PopupHeading.js +1 -1
  178. package/dist/commonjs/select/lib/Select.d.ts +118 -0
  179. package/dist/commonjs/select/lib/Select.d.ts.map +1 -1
  180. package/dist/commonjs/select/lib/SelectCard.d.ts +10 -0
  181. package/dist/commonjs/select/lib/SelectCard.d.ts.map +1 -1
  182. package/dist/commonjs/select/lib/SelectCard.js +1 -1
  183. package/dist/commonjs/select/lib/SelectInput.d.ts +5 -0
  184. package/dist/commonjs/select/lib/SelectInput.d.ts.map +1 -1
  185. package/dist/commonjs/select/lib/SelectInput.js +3 -3
  186. package/dist/commonjs/select/lib/SelectItem.d.ts +10 -0
  187. package/dist/commonjs/select/lib/SelectItem.d.ts.map +1 -1
  188. package/dist/commonjs/select/lib/hooks/useSelectCard.d.ts +5 -0
  189. package/dist/commonjs/select/lib/hooks/useSelectCard.d.ts.map +1 -1
  190. package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts +5 -0
  191. package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts.map +1 -1
  192. package/dist/commonjs/select/lib/hooks/useSelectModel.d.ts +93 -0
  193. package/dist/commonjs/select/lib/hooks/useSelectModel.d.ts.map +1 -1
  194. package/dist/commonjs/switch/lib/Switch.js +7 -7
  195. package/dist/commonjs/table/lib/Table.js +1 -1
  196. package/dist/commonjs/table/lib/TableBody.js +1 -1
  197. package/dist/commonjs/table/lib/TableCaption.js +1 -1
  198. package/dist/commonjs/table/lib/TableCell.js +1 -1
  199. package/dist/commonjs/table/lib/TableFooter.js +1 -1
  200. package/dist/commonjs/table/lib/TableHead.js +1 -1
  201. package/dist/commonjs/table/lib/TableHeader.js +1 -1
  202. package/dist/commonjs/table/lib/TableRow.js +1 -1
  203. package/dist/commonjs/tabs/lib/Tabs.d.ts +327 -0
  204. package/dist/commonjs/tabs/lib/Tabs.d.ts.map +1 -1
  205. package/dist/commonjs/tabs/lib/TabsItem.d.ts +21 -1
  206. package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
  207. package/dist/commonjs/tabs/lib/TabsList.d.ts +20 -0
  208. package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -1
  209. package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +5 -0
  210. package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts.map +1 -1
  211. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +20 -0
  212. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
  213. package/dist/commonjs/tabs/lib/TabsPanel.d.ts +20 -0
  214. package/dist/commonjs/tabs/lib/TabsPanel.d.ts.map +1 -1
  215. package/dist/commonjs/tabs/lib/TabsPanels.d.ts +10 -0
  216. package/dist/commonjs/tabs/lib/TabsPanels.d.ts.map +1 -1
  217. package/dist/commonjs/tabs/lib/useTabsModel.d.ts +263 -0
  218. package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
  219. package/dist/commonjs/text/lib/LabelText.js +6 -6
  220. package/dist/commonjs/text/lib/Text.js +16 -16
  221. package/dist/commonjs/text/lib/TypeLevelComponents.js +4 -4
  222. package/dist/commonjs/text-area/lib/TextArea.js +5 -5
  223. package/dist/commonjs/text-input/lib/InputGroup.js +6 -6
  224. package/dist/commonjs/text-input/lib/TextInput.js +5 -5
  225. package/dist/commonjs/toast/lib/Toast.js +1 -1
  226. package/dist/commonjs/toast/lib/ToastBody.js +1 -1
  227. package/dist/commonjs/toast/lib/ToastCloseIcon.js +1 -1
  228. package/dist/commonjs/toast/lib/ToastIcon.js +1 -1
  229. package/dist/commonjs/toast/lib/ToastMessage.js +1 -1
  230. package/dist/es6/action-bar/lib/ActionBar.d.ts +224 -0
  231. package/dist/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
  232. package/dist/es6/action-bar/lib/ActionBarItem.d.ts +15 -0
  233. package/dist/es6/action-bar/lib/ActionBarItem.d.ts.map +1 -1
  234. package/dist/es6/action-bar/lib/ActionBarList.d.ts +15 -0
  235. package/dist/es6/action-bar/lib/ActionBarList.d.ts.map +1 -1
  236. package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts +20 -0
  237. package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts.map +1 -1
  238. package/dist/es6/action-bar/lib/useActionBarModel.d.ts +97 -0
  239. package/dist/es6/action-bar/lib/useActionBarModel.d.ts.map +1 -1
  240. package/dist/es6/avatar/lib/Avatar.js +21 -21
  241. package/dist/es6/badge/lib/CountBadge.js +3 -3
  242. package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts +234 -0
  243. package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts.map +1 -1
  244. package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +20 -0
  245. package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts.map +1 -1
  246. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts +15 -0
  247. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts.map +1 -1
  248. package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts +10 -0
  249. package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts.map +1 -1
  250. package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.d.ts +112 -0
  251. package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.d.ts.map +1 -1
  252. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +20 -0
  253. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts.map +1 -1
  254. package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +97 -0
  255. package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts.map +1 -1
  256. package/dist/es6/button/lib/BaseButton.js +21 -21
  257. package/dist/es6/button/lib/DeleteButton.js +1 -1
  258. package/dist/es6/button/lib/PrimaryButton.js +2 -2
  259. package/dist/es6/button/lib/SecondaryButton.js +2 -2
  260. package/dist/es6/button/lib/TertiaryButton.js +18 -18
  261. package/dist/es6/card/lib/Card.js +1 -1
  262. package/dist/es6/card/lib/CardBody.js +1 -1
  263. package/dist/es6/card/lib/CardHeading.js +1 -1
  264. package/dist/es6/checkbox/lib/CheckBackground.js +3 -3
  265. package/dist/es6/checkbox/lib/CheckboxCheck.js +5 -5
  266. package/dist/es6/checkbox/lib/CheckboxContainer.js +1 -1
  267. package/dist/es6/checkbox/lib/CheckboxInput.js +5 -5
  268. package/dist/es6/checkbox/lib/CheckboxRipple.js +1 -1
  269. package/dist/es6/collection/index.d.ts +3 -0
  270. package/dist/es6/collection/index.d.ts.map +1 -1
  271. package/dist/es6/collection/index.js +3 -0
  272. package/dist/es6/collection/lib/ListBox.d.ts +78 -0
  273. package/dist/es6/collection/lib/ListBox.d.ts.map +1 -1
  274. package/dist/es6/collection/lib/ListBox.js +3 -3
  275. package/dist/es6/collection/lib/focusOnCurrentCursor.d.ts +3 -0
  276. package/dist/es6/collection/lib/focusOnCurrentCursor.d.ts.map +1 -0
  277. package/dist/es6/collection/lib/focusOnCurrentCursor.js +41 -0
  278. package/dist/es6/collection/lib/listItemRemove.d.ts +3 -0
  279. package/dist/es6/collection/lib/listItemRemove.d.ts.map +1 -0
  280. package/dist/es6/collection/lib/listItemRemove.js +15 -0
  281. package/dist/es6/collection/lib/useGridModel.d.ts +73 -0
  282. package/dist/es6/collection/lib/useGridModel.d.ts.map +1 -1
  283. package/dist/es6/collection/lib/useListItemAllowChildStrings.d.ts +5 -0
  284. package/dist/es6/collection/lib/useListItemAllowChildStrings.d.ts.map +1 -1
  285. package/dist/es6/collection/lib/useListItemRegister.d.ts +5 -0
  286. package/dist/es6/collection/lib/useListItemRegister.d.ts.map +1 -1
  287. package/dist/es6/collection/lib/useListItemRemoveOnDeleteKey.d.ts +86 -0
  288. package/dist/es6/collection/lib/useListItemRemoveOnDeleteKey.d.ts.map +1 -0
  289. package/dist/es6/collection/lib/useListItemRemoveOnDeleteKey.js +37 -0
  290. package/dist/es6/collection/lib/useListItemRovingFocus.d.ts +1 -1
  291. package/dist/es6/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
  292. package/dist/es6/collection/lib/useListItemRovingFocus.js +6 -29
  293. package/dist/es6/collection/lib/useListItemSelect.d.ts +5 -0
  294. package/dist/es6/collection/lib/useListItemSelect.d.ts.map +1 -1
  295. package/dist/es6/collection/lib/useListLoader.d.ts.map +1 -1
  296. package/dist/es6/collection/lib/useListLoader.js +2 -0
  297. package/dist/es6/collection/lib/useListModel.d.ts +73 -0
  298. package/dist/es6/collection/lib/useListModel.d.ts.map +1 -1
  299. package/dist/es6/collection/lib/useListResetCursorOnBlur.d.ts +5 -0
  300. package/dist/es6/collection/lib/useListResetCursorOnBlur.d.ts.map +1 -1
  301. package/dist/es6/collection/lib/useListResetCursorOnBlur.js +14 -2
  302. package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts +5 -0
  303. package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts.map +1 -1
  304. package/dist/es6/collection/lib/useOverflowListMeasure.d.ts +5 -0
  305. package/dist/es6/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
  306. package/dist/es6/collection/lib/useOverflowListModel.d.ts +99 -0
  307. package/dist/es6/collection/lib/useOverflowListModel.d.ts.map +1 -1
  308. package/dist/es6/collection/lib/useOverflowListTarget.d.ts +5 -0
  309. package/dist/es6/collection/lib/useOverflowListTarget.d.ts.map +1 -1
  310. package/dist/es6/collection/lib/useSelectionListModel.d.ts +94 -0
  311. package/dist/es6/collection/lib/useSelectionListModel.d.ts.map +1 -1
  312. package/dist/es6/collection/lib/useSelectionListModel.js +10 -0
  313. package/dist/es6/combobox/lib/Combobox.d.ts +113 -0
  314. package/dist/es6/combobox/lib/Combobox.d.ts.map +1 -1
  315. package/dist/es6/combobox/lib/ComboboxCard.d.ts +10 -0
  316. package/dist/es6/combobox/lib/ComboboxCard.d.ts.map +1 -1
  317. package/dist/es6/combobox/lib/ComboboxInput.d.ts +5 -0
  318. package/dist/es6/combobox/lib/ComboboxInput.d.ts.map +1 -1
  319. package/dist/es6/combobox/lib/ComboboxMenu.d.ts +25 -0
  320. package/dist/es6/combobox/lib/ComboboxMenu.d.ts.map +1 -1
  321. package/dist/es6/combobox/lib/ComboboxMenuItem.d.ts +5 -0
  322. package/dist/es6/combobox/lib/ComboboxMenuItem.d.ts.map +1 -1
  323. package/dist/es6/combobox/lib/ComboboxMenuList.d.ts +10 -0
  324. package/dist/es6/combobox/lib/ComboboxMenuList.d.ts.map +1 -1
  325. package/dist/es6/combobox/lib/ComboboxMenuList.js +1 -1
  326. package/dist/es6/combobox/lib/ComboboxPopper.d.ts +5 -0
  327. package/dist/es6/combobox/lib/ComboboxPopper.d.ts.map +1 -1
  328. package/dist/es6/combobox/lib/hooks/useComboboxInput.d.ts +5 -0
  329. package/dist/es6/combobox/lib/hooks/useComboboxInput.d.ts.map +1 -1
  330. package/dist/es6/combobox/lib/hooks/useComboboxInput.js +5 -9
  331. package/dist/es6/combobox/lib/hooks/useComboboxInputArbitrary.d.ts +5 -0
  332. package/dist/es6/combobox/lib/hooks/useComboboxInputArbitrary.d.ts.map +1 -1
  333. package/dist/es6/combobox/lib/hooks/useComboboxInputConstrained.d.ts +5 -0
  334. package/dist/es6/combobox/lib/hooks/useComboboxInputConstrained.d.ts.map +1 -1
  335. package/dist/es6/combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.d.ts +5 -0
  336. package/dist/es6/combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.d.ts.map +1 -1
  337. package/dist/es6/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts +5 -0
  338. package/dist/es6/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts.map +1 -1
  339. package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts +5 -0
  340. package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -1
  341. package/dist/es6/combobox/lib/hooks/useComboboxModel.d.ts +101 -0
  342. package/dist/es6/combobox/lib/hooks/useComboboxModel.d.ts.map +1 -1
  343. package/dist/es6/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts +5 -0
  344. package/dist/es6/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts.map +1 -1
  345. package/dist/es6/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts +5 -0
  346. package/dist/es6/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts.map +1 -1
  347. package/dist/es6/combobox/lib/hooks/useSetPopupWidth.d.ts +5 -0
  348. package/dist/es6/combobox/lib/hooks/useSetPopupWidth.d.ts.map +1 -1
  349. package/dist/es6/common/lib/AccessibleHide.js +1 -1
  350. package/dist/es6/common/lib/CanvasProvider.js +1 -1
  351. package/dist/es6/form-field/lib/FormFieldContainer.js +1 -1
  352. package/dist/es6/form-field/lib/FormFieldField.js +1 -1
  353. package/dist/es6/form-field/lib/FormFieldGroupLabel.js +5 -5
  354. package/dist/es6/form-field/lib/FormFieldGroupList.js +3 -3
  355. package/dist/es6/form-field/lib/FormFieldHint.js +3 -3
  356. package/dist/es6/form-field/lib/FormFieldLabel.js +6 -6
  357. package/dist/es6/form-field/lib/formFieldStencil.js +8 -8
  358. package/dist/es6/icon/lib/AccentIcon.js +2 -2
  359. package/dist/es6/icon/lib/AppletIcon.js +1 -1
  360. package/dist/es6/icon/lib/Graphic.js +2 -2
  361. package/dist/es6/icon/lib/Svg.js +2 -2
  362. package/dist/es6/icon/lib/SystemIcon.d.ts +3 -1
  363. package/dist/es6/icon/lib/SystemIcon.d.ts.map +1 -1
  364. package/dist/es6/icon/lib/SystemIcon.js +4 -4
  365. package/dist/es6/icon/lib/SystemIconCircle.js +1 -1
  366. package/dist/es6/loading-dots/lib/LoadingDots.js +2 -2
  367. package/dist/es6/menu/lib/Menu.d.ts +112 -0
  368. package/dist/es6/menu/lib/Menu.d.ts.map +1 -1
  369. package/dist/es6/menu/lib/MenuCard.d.ts +10 -0
  370. package/dist/es6/menu/lib/MenuCard.d.ts.map +1 -1
  371. package/dist/es6/menu/lib/MenuCard.js +1 -1
  372. package/dist/es6/menu/lib/MenuContextTarget.d.ts +15 -0
  373. package/dist/es6/menu/lib/MenuContextTarget.d.ts.map +1 -1
  374. package/dist/es6/menu/lib/MenuItem.d.ts +11 -1
  375. package/dist/es6/menu/lib/MenuItem.d.ts.map +1 -1
  376. package/dist/es6/menu/lib/MenuItem.js +1 -1
  377. package/dist/es6/menu/lib/MenuList.d.ts +10 -0
  378. package/dist/es6/menu/lib/MenuList.d.ts.map +1 -1
  379. package/dist/es6/menu/lib/MenuList.js +3 -3
  380. package/dist/es6/menu/lib/MenuOption.d.ts +10 -0
  381. package/dist/es6/menu/lib/MenuOption.d.ts.map +1 -1
  382. package/dist/es6/menu/lib/MenuOption.js +1 -1
  383. package/dist/es6/menu/lib/MenuPopper.d.ts +5 -0
  384. package/dist/es6/menu/lib/MenuPopper.d.ts.map +1 -1
  385. package/dist/es6/menu/lib/MenuTarget.d.ts +25 -0
  386. package/dist/es6/menu/lib/MenuTarget.d.ts.map +1 -1
  387. package/dist/es6/menu/lib/useMenuModel.d.ts +87 -0
  388. package/dist/es6/menu/lib/useMenuModel.d.ts.map +1 -1
  389. package/dist/es6/modal/lib/ModalBody.js +1 -1
  390. package/dist/es6/modal/lib/ModalCard.js +1 -1
  391. package/dist/es6/modal/lib/ModalHeading.js +1 -1
  392. package/dist/es6/modal/lib/ModalOverflowOverlay.js +1 -1
  393. package/dist/es6/modal/lib/ModalOverlay.js +2 -2
  394. package/dist/es6/popup/lib/PopupBody.js +1 -1
  395. package/dist/es6/popup/lib/PopupCard.js +2 -2
  396. package/dist/es6/popup/lib/PopupCloseIcon.js +1 -1
  397. package/dist/es6/popup/lib/PopupHeading.js +1 -1
  398. package/dist/es6/select/lib/Select.d.ts +118 -0
  399. package/dist/es6/select/lib/Select.d.ts.map +1 -1
  400. package/dist/es6/select/lib/SelectCard.d.ts +10 -0
  401. package/dist/es6/select/lib/SelectCard.d.ts.map +1 -1
  402. package/dist/es6/select/lib/SelectCard.js +1 -1
  403. package/dist/es6/select/lib/SelectInput.d.ts +5 -0
  404. package/dist/es6/select/lib/SelectInput.d.ts.map +1 -1
  405. package/dist/es6/select/lib/SelectInput.js +3 -3
  406. package/dist/es6/select/lib/SelectItem.d.ts +10 -0
  407. package/dist/es6/select/lib/SelectItem.d.ts.map +1 -1
  408. package/dist/es6/select/lib/hooks/useSelectCard.d.ts +5 -0
  409. package/dist/es6/select/lib/hooks/useSelectCard.d.ts.map +1 -1
  410. package/dist/es6/select/lib/hooks/useSelectInput.d.ts +5 -0
  411. package/dist/es6/select/lib/hooks/useSelectInput.d.ts.map +1 -1
  412. package/dist/es6/select/lib/hooks/useSelectModel.d.ts +93 -0
  413. package/dist/es6/select/lib/hooks/useSelectModel.d.ts.map +1 -1
  414. package/dist/es6/switch/lib/Switch.js +7 -7
  415. package/dist/es6/table/lib/Table.js +1 -1
  416. package/dist/es6/table/lib/TableBody.js +1 -1
  417. package/dist/es6/table/lib/TableCaption.js +1 -1
  418. package/dist/es6/table/lib/TableCell.js +1 -1
  419. package/dist/es6/table/lib/TableFooter.js +1 -1
  420. package/dist/es6/table/lib/TableHead.js +1 -1
  421. package/dist/es6/table/lib/TableHeader.js +1 -1
  422. package/dist/es6/table/lib/TableRow.js +1 -1
  423. package/dist/es6/tabs/lib/Tabs.d.ts +327 -0
  424. package/dist/es6/tabs/lib/Tabs.d.ts.map +1 -1
  425. package/dist/es6/tabs/lib/TabsItem.d.ts +21 -1
  426. package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
  427. package/dist/es6/tabs/lib/TabsList.d.ts +20 -0
  428. package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -1
  429. package/dist/es6/tabs/lib/TabsMenuPopper.d.ts +5 -0
  430. package/dist/es6/tabs/lib/TabsMenuPopper.d.ts.map +1 -1
  431. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +20 -0
  432. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
  433. package/dist/es6/tabs/lib/TabsPanel.d.ts +20 -0
  434. package/dist/es6/tabs/lib/TabsPanel.d.ts.map +1 -1
  435. package/dist/es6/tabs/lib/TabsPanels.d.ts +10 -0
  436. package/dist/es6/tabs/lib/TabsPanels.d.ts.map +1 -1
  437. package/dist/es6/tabs/lib/useTabsModel.d.ts +263 -0
  438. package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
  439. package/dist/es6/text/lib/LabelText.js +6 -6
  440. package/dist/es6/text/lib/Text.js +16 -16
  441. package/dist/es6/text/lib/TypeLevelComponents.js +4 -4
  442. package/dist/es6/text-area/lib/TextArea.js +5 -5
  443. package/dist/es6/text-input/lib/InputGroup.js +6 -6
  444. package/dist/es6/text-input/lib/TextInput.js +5 -5
  445. package/dist/es6/toast/lib/Toast.js +1 -1
  446. package/dist/es6/toast/lib/ToastBody.js +1 -1
  447. package/dist/es6/toast/lib/ToastCloseIcon.js +1 -1
  448. package/dist/es6/toast/lib/ToastIcon.js +1 -1
  449. package/dist/es6/toast/lib/ToastMessage.js +1 -1
  450. package/icon/lib/SystemIcon.tsx +6 -2
  451. package/package.json +4 -4
@@ -15,6 +15,9 @@ export * from './lib/useGridModel';
15
15
  export * from './lib/useListActiveDescendant';
16
16
  export * from './lib/useListItemActiveDescendant';
17
17
  export * from './lib/useListItemAllowChildStrings';
18
+ export * from './lib/useListItemRemoveOnDeleteKey';
19
+ export * from './lib/focusOnCurrentCursor';
20
+ export * from './lib/listItemRemove';
18
21
  export {ListBox, ListBoxProps} from './lib/ListBox';
19
22
  export {keyboardEventToCursorEvents} from './lib/keyUtils';
20
23
  export {
@@ -0,0 +1,55 @@
1
+ import {useCursorListModel} from './useCursorListModel';
2
+
3
+ // retry a function each frame so we don't rely on the timing mechanism of React's render cycle.
4
+ const retryEachFrame = (cb: () => boolean, iterations: number, reject?: (reason?: any) => void) => {
5
+ if (cb() === false && iterations > 1) {
6
+ requestAnimationFrame(() => retryEachFrame(cb, iterations - 1));
7
+ }
8
+ reject?.('Retry timeout');
9
+ };
10
+
11
+ export const focusOnCurrentCursor = (
12
+ model: ReturnType<typeof useCursorListModel>,
13
+ nextId: string,
14
+ /**
15
+ * This can be any element in the list. It is used only to get the client-id from the element in
16
+ * case it is different than the server ID when DOM is hydrated.
17
+ */
18
+ element?: HTMLElement
19
+ ) => {
20
+ return new Promise<HTMLElement | null>((resolve, reject) => {
21
+ // Attempt to extract the ID from the DOM element. This fixes issues where the server and client
22
+ // do not agree on a generated ID
23
+ const clientId = (element?.dataset?.focusId || '').split('-')[0] || model.state.id;
24
+
25
+ const item = model.navigation.getItem(nextId, model);
26
+
27
+ if (item) {
28
+ // If the list is virtualized, we need to manually call out to the virtual list's
29
+ // `scrollToIndex`
30
+ if (model.state.isVirtualized) {
31
+ model.state.UNSTABLE_virtual.scrollToIndex(item.index);
32
+ }
33
+
34
+ const getElement = (id?: string) => {
35
+ return document.querySelector<HTMLElement>(`[data-focus-id="${`${id}-${item.id}`}"]`);
36
+ };
37
+
38
+ // In React concurrent mode, there could be several render attempts before the element we're
39
+ // looking for could be available in the DOM
40
+ retryEachFrame(
41
+ () => {
42
+ const element = getElement(clientId) || getElement(model.state.id);
43
+
44
+ if (element) {
45
+ element.focus();
46
+ resolve(element);
47
+ }
48
+ return !!element;
49
+ },
50
+ 5,
51
+ reject
52
+ ); // 5 should be enough, right?!
53
+ }
54
+ });
55
+ };
@@ -0,0 +1,21 @@
1
+ import {useSelectionListModel} from './useSelectionListModel';
2
+
3
+ export const listItemRemove = (
4
+ id: string,
5
+ model: ReturnType<typeof useSelectionListModel>
6
+ ): string | undefined => {
7
+ // bail early if an ID isn't available
8
+ if (!id) {
9
+ return;
10
+ }
11
+
12
+ const index = model.state.items.findIndex(item => item.id === model.state.cursorId);
13
+ const nextIndex = index === model.state.items.length - 1 ? index - 1 : index + 1;
14
+ const nextId = model.state.items[nextIndex]?.id;
15
+ if (nextId && model.state.cursorId === id) {
16
+ // We're removing the currently focused item. Focus next item
17
+ model.events.goTo({id: nextId});
18
+ }
19
+
20
+ return nextId;
21
+ };
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import {createElemPropsHook} from '@workday/canvas-kit-react/common';
3
+
4
+ import {useSelectionListModel} from './useSelectionListModel';
5
+ import {focusOnCurrentCursor} from './focusOnCurrentCursor';
6
+ import {listItemRemove} from './listItemRemove';
7
+
8
+ /**
9
+ * This elemProps hook is used when a menu item is expected to be removed. It will advance the cursor to
10
+ * another item.
11
+ * This elemProps hook is used for cursor navigation by using [Roving
12
+ * Tabindex](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex). Only a single item in the
13
+ * collection has a tab stop. Pressing an arrow key moves the tab stop to a different item in the
14
+ * corresponding direction. See the [Roving Tabindex](#roving-tabindex) example. This elemProps hook
15
+ * should be applied to an `*.Item` component.
16
+ *
17
+ * ```ts
18
+ * const useMyItem = composeHooks(
19
+ * useListItemRovingFocus, // adds the roving tabindex support
20
+ * useListItemRegister
21
+ * );
22
+ * ```
23
+ */
24
+ export const useListItemRemoveOnDeleteKey = createElemPropsHook(useSelectionListModel)(model => {
25
+ return {
26
+ onKeyDown(event: React.KeyboardEvent<HTMLElement>) {
27
+ if (event.key === 'Backspace' || event.key === 'Delete') {
28
+ const id = event.currentTarget.dataset.id || '';
29
+ const nextId = listItemRemove(id, model);
30
+ model.events.remove({id, nextId, event});
31
+ if (nextId) {
32
+ // use an animation frame to wait for any other model changes that may happen
33
+ requestAnimationFrame(() => {
34
+ focusOnCurrentCursor(model, nextId, event.currentTarget);
35
+ });
36
+ }
37
+ }
38
+ },
39
+ };
40
+ });
@@ -3,13 +3,7 @@ import {useIsRTL, createElemPropsHook} from '@workday/canvas-kit-react/common';
3
3
 
4
4
  import {useCursorListModel} from './useCursorListModel';
5
5
  import {keyboardEventToCursorEvents} from './keyUtils';
6
-
7
- // retry a function each frame so we don't rely on the timing mechanism of React's render cycle.
8
- const retryEachFrame = (cb: () => boolean, iterations: number) => {
9
- if (cb() === false && iterations > 1) {
10
- requestAnimationFrame(() => retryEachFrame(cb, iterations - 1));
11
- }
12
- };
6
+ import {focusOnCurrentCursor} from './focusOnCurrentCursor';
13
7
 
14
8
  /**
15
9
  * This elemProps hook is used for cursor navigation by using [Roving
@@ -33,36 +27,16 @@ export const useListItemRovingFocus = createElemPropsHook(useCursorListModel)(
33
27
  const stateRef = React.useRef(model.state);
34
28
  stateRef.current = model.state;
35
29
 
36
- const keyElementRef = React.useRef<Element | null>(null);
30
+ const keyElementRef = React.useRef<HTMLElement | null>(null);
37
31
  const isRTL = useIsRTL();
38
32
 
39
33
  React.useEffect(() => {
34
+ // If the cursor change was triggered by this hook, we should change focus
40
35
  if (keyElementRef.current) {
41
- const item = model.navigation.getItem(model.state.cursorId, model);
42
- if (item) {
43
- if (model.state.isVirtualized) {
44
- model.state.UNSTABLE_virtual.scrollToIndex(item.index);
45
- }
46
-
47
- const selector = (id?: string) => {
48
- return document.querySelector<HTMLElement>(`[data-focus-id="${`${id}-${item.id}`}"]`);
49
- };
50
-
51
- // In React concurrent mode, there could be several render attempts before the element we're
52
- // looking for could be available in the DOM
53
- retryEachFrame(() => {
54
- // Attempt to extract the ID from the DOM element. This fixes issues where the server and client
55
- // do not agree on a generated ID
56
- const clientId = keyElementRef.current?.getAttribute('data-focus-id')?.split('-')[0];
57
- const element = selector(clientId) || selector(model.state.id);
58
-
59
- element?.focus();
60
- if (element) {
61
- keyElementRef.current = null;
62
- }
63
- return !!element;
64
- }, 5); // 5 should be enough, right?!
65
- }
36
+ focusOnCurrentCursor(model, model.state.cursorId, keyElementRef.current).then(() => {
37
+ // Reset key element since focus was successful
38
+ keyElementRef.current = null;
39
+ });
66
40
  }
67
41
  // we only want to run this effect if the cursor changes and not any other time
68
42
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -76,7 +50,7 @@ export const useListItemRovingFocus = createElemPropsHook(useCursorListModel)(
76
50
  }, [model.state.cursorId, model.state.items, model.events]);
77
51
 
78
52
  return {
79
- onKeyDown(event: React.KeyboardEvent) {
53
+ onKeyDown(event: React.KeyboardEvent<HTMLElement>) {
80
54
  const handled = keyboardEventToCursorEvents(event, model, isRTL);
81
55
  if (handled) {
82
56
  event.preventDefault();
@@ -269,6 +269,8 @@ export function useListLoader<
269
269
 
270
270
  const model = modelHook(
271
271
  modelHook.mergeConfig(config, {
272
+ // Loaders should virtualize by default. If they do not, it is an infinite scroll list
273
+ shouldVirtualize: true,
272
274
  items,
273
275
  shouldGoToNext: shouldLoadIndex('getNext', 'goToNext'),
274
276
  shouldGoToPrevious: shouldLoadIndex('getPrevious', 'goToPrevious'),
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
 
3
- import {createElemPropsHook} from '@workday/canvas-kit-react/common';
3
+ import {createElemPropsHook, useMountLayout} from '@workday/canvas-kit-react/common';
4
4
  import {orientationKeyMap} from './keyUtils';
5
5
  import {useListModel} from './useListModel';
6
6
 
@@ -20,6 +20,15 @@ import {useListModel} from './useListModel';
20
20
  */
21
21
  export const useListResetCursorOnBlur = createElemPropsHook(useListModel)(({state, events}) => {
22
22
  const programmaticFocusRef = React.useRef(false);
23
+ const requestAnimationFrameRef = React.useRef(0);
24
+
25
+ useMountLayout(() => {
26
+ return () => {
27
+ // Cancelling the animation frame prevents React unmount errors
28
+ cancelAnimationFrame(requestAnimationFrameRef.current);
29
+ };
30
+ });
31
+
23
32
  return {
24
33
  onKeyDown(event: React.KeyboardEvent) {
25
34
  // Programmatic focus only on any focus change via keyboard
@@ -32,7 +41,12 @@ export const useListResetCursorOnBlur = createElemPropsHook(useListModel)(({stat
32
41
  },
33
42
  onBlur() {
34
43
  if (!programmaticFocusRef.current) {
35
- events.goTo({id: state.selectedIds[0]});
44
+ // use an animation frame to wait for any other model changes that may happen on a blur
45
+ requestAnimationFrameRef.current = requestAnimationFrame(() => {
46
+ if (state.selectedIds[0] !== state.cursorId) {
47
+ events.goTo({id: state.selectedIds[0]});
48
+ }
49
+ });
36
50
  }
37
51
  },
38
52
  };
@@ -109,6 +109,16 @@ export const useSelectionListModel = createModelHook({
109
109
  setSelectedIds(ids: 'all' | string[]) {
110
110
  setSelectedIds(ids);
111
111
  },
112
+ /**
113
+ * The `remove` event can be called by Behavior Hooks based on user interaction. The `onRemove`
114
+ * can be added to the model config to signal the user wishes to remove the item in the list.
115
+ * The `remove` event requires the dynamic API where `items` are passed to the model. It is up
116
+ * to you to remove the item from the list. Focus redirection should be automatically managed,
117
+ * if necessary.
118
+ */
119
+ remove(data: {id: string; nextId?: string; event?: Event | React.SyntheticEvent}) {
120
+ // nothing to do here. It is a signal event
121
+ },
112
122
  };
113
123
 
114
124
  return {...cursor, state, events, selection};
@@ -26,16 +26,13 @@ export const useComboboxInput = composeHooks(
26
26
  if (model.state.isVirtualized && item) {
27
27
  model.state.UNSTABLE_virtual.scrollToIndex(item.index);
28
28
  } else {
29
- const listboxId = model.state.inputRef.current?.getAttribute('aria-controls');
30
- if (listboxId) {
31
- const menuItem = document.querySelector(
32
- `[id="${listboxId}"] [data-id="${model.state.cursorId}"]`
33
- );
34
- if (menuItem) {
35
- requestAnimationFrame(() => {
36
- menuItem.scrollIntoView({block: 'nearest'});
37
- });
38
- }
29
+ const menuItem = document.querySelector(
30
+ `[id="${model.state.id}-list"] [data-id="${model.state.cursorId}"]`
31
+ );
32
+ if (menuItem) {
33
+ requestAnimationFrame(() => {
34
+ menuItem.scrollIntoView({block: 'nearest'});
35
+ });
39
36
  }
40
37
  }
41
38
  }
@@ -574,6 +574,42 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
574
574
  isVirtualized: boolean;
575
575
  items: import("../..").Item<any>[];
576
576
  }) => void) | undefined;
577
+ onRemove?: ((data: {
578
+ id: string;
579
+ nextId?: string | undefined;
580
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
581
+ }, prevState: {
582
+ hiddenIds: string[];
583
+ nonInteractiveIds: string[];
584
+ orientation: import("../../collection/lib/useBaseListModel").Orientation;
585
+ itemSizeCache: Record<string, number>;
586
+ itemWidthCache: Record<string, number>;
587
+ containerSize: number;
588
+ containerWidth: number;
589
+ containerGap: number;
590
+ overflowTargetWidth: number;
591
+ selectedIds: string[] | "all";
592
+ unselectedIds: string[];
593
+ cursorId: string;
594
+ columnCount: number;
595
+ pageSizeRef: React.MutableRefObject<number>;
596
+ cursorIndexRef: {
597
+ readonly current: number;
598
+ };
599
+ UNSTABLE_virtual: {
600
+ virtualItems: import("../../collection/lib/react-virtual").VirtualItem[];
601
+ totalSize: number;
602
+ scrollToOffset: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
603
+ scrollToIndex: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
604
+ measure: () => void;
605
+ };
606
+ UNSTABLE_defaultItemHeight: number;
607
+ containerRef: React.RefObject<HTMLDivElement>;
608
+ id: string;
609
+ indexRef: React.MutableRefObject<number>;
610
+ isVirtualized: boolean;
611
+ items: import("../..").Item<any>[];
612
+ }) => void) | undefined;
577
613
  onGoTo?: ((data: {
578
614
  id: string;
579
615
  }, prevState: {
@@ -1541,6 +1577,42 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
1541
1577
  isVirtualized: boolean;
1542
1578
  items: import("../..").Item<any>[];
1543
1579
  }) => boolean) | undefined;
1580
+ shouldRemove?: ((data: {
1581
+ id: string;
1582
+ nextId?: string | undefined;
1583
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
1584
+ }, state: {
1585
+ hiddenIds: string[];
1586
+ nonInteractiveIds: string[];
1587
+ orientation: import("../../collection/lib/useBaseListModel").Orientation;
1588
+ itemSizeCache: Record<string, number>;
1589
+ itemWidthCache: Record<string, number>;
1590
+ containerSize: number;
1591
+ containerWidth: number;
1592
+ containerGap: number;
1593
+ overflowTargetWidth: number;
1594
+ selectedIds: string[] | "all";
1595
+ unselectedIds: string[];
1596
+ cursorId: string;
1597
+ columnCount: number;
1598
+ pageSizeRef: React.MutableRefObject<number>;
1599
+ cursorIndexRef: {
1600
+ readonly current: number;
1601
+ };
1602
+ UNSTABLE_virtual: {
1603
+ virtualItems: import("../../collection/lib/react-virtual").VirtualItem[];
1604
+ totalSize: number;
1605
+ scrollToOffset: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
1606
+ scrollToIndex: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
1607
+ measure: () => void;
1608
+ };
1609
+ UNSTABLE_defaultItemHeight: number;
1610
+ containerRef: React.RefObject<HTMLDivElement>;
1611
+ id: string;
1612
+ indexRef: React.MutableRefObject<number>;
1613
+ isVirtualized: boolean;
1614
+ items: import("../..").Item<any>[];
1615
+ }) => boolean) | undefined;
1544
1616
  shouldGoTo?: ((data: {
1545
1617
  id: string;
1546
1618
  }, state: {
@@ -2076,6 +2148,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2076
2148
  selectAll(): void;
2077
2149
  unselectAll(): void;
2078
2150
  setSelectedIds(ids: string[] | "all"): void;
2151
+ remove(data: {
2152
+ id: string;
2153
+ nextId?: string | undefined;
2154
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2155
+ }): void;
2079
2156
  goTo(data: {
2080
2157
  id: string;
2081
2158
  }): void;
@@ -2145,6 +2222,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2145
2222
  selectAll(): void;
2146
2223
  unselectAll(): void;
2147
2224
  setSelectedIds(ids: string[] | "all"): void;
2225
+ remove(data: {
2226
+ id: string;
2227
+ nextId?: string | undefined;
2228
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2229
+ }): void;
2148
2230
  goTo(data: {
2149
2231
  id: string;
2150
2232
  }): void;
@@ -2271,6 +2353,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2271
2353
  selectAll(): void;
2272
2354
  unselectAll(): void;
2273
2355
  setSelectedIds(ids: string[] | "all"): void;
2356
+ remove(data: {
2357
+ id: string;
2358
+ nextId?: string | undefined;
2359
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2360
+ }): void;
2274
2361
  goTo(data: {
2275
2362
  id: string;
2276
2363
  }): void;
@@ -2340,6 +2427,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2340
2427
  selectAll(): void;
2341
2428
  unselectAll(): void;
2342
2429
  setSelectedIds(ids: string[] | "all"): void;
2430
+ remove(data: {
2431
+ id: string;
2432
+ nextId?: string | undefined;
2433
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2434
+ }): void;
2343
2435
  goTo(data: {
2344
2436
  id: string;
2345
2437
  }): void;
@@ -2460,6 +2552,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2460
2552
  selectAll(): void;
2461
2553
  unselectAll(): void;
2462
2554
  setSelectedIds(ids: string[] | "all"): void;
2555
+ remove(data: {
2556
+ id: string;
2557
+ nextId?: string | undefined;
2558
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2559
+ }): void;
2463
2560
  goTo(data: {
2464
2561
  id: string;
2465
2562
  }): void;
@@ -2529,6 +2626,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2529
2626
  selectAll(): void;
2530
2627
  unselectAll(): void;
2531
2628
  setSelectedIds(ids: string[] | "all"): void;
2629
+ remove(data: {
2630
+ id: string;
2631
+ nextId?: string | undefined;
2632
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2633
+ }): void;
2532
2634
  goTo(data: {
2533
2635
  id: string;
2534
2636
  }): void;
@@ -2639,6 +2741,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2639
2741
  selectAll(): void;
2640
2742
  unselectAll(): void;
2641
2743
  setSelectedIds(ids: string[] | "all"): void;
2744
+ remove(data: {
2745
+ id: string;
2746
+ nextId?: string | undefined;
2747
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2748
+ }): void;
2642
2749
  goTo(data: {
2643
2750
  id: string;
2644
2751
  }): void;
@@ -2708,6 +2815,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
2708
2815
  selectAll(): void;
2709
2816
  unselectAll(): void;
2710
2817
  setSelectedIds(ids: string[] | "all"): void;
2818
+ remove(data: {
2819
+ id: string;
2820
+ nextId?: string | undefined;
2821
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
2822
+ }): void;
2711
2823
  goTo(data: {
2712
2824
  id: string;
2713
2825
  }): void;
@@ -3001,6 +3113,42 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
3001
3113
  items: import("../..").Item<any>[];
3002
3114
  mode: "multiple" | "single";
3003
3115
  }) => void) | undefined;
3116
+ onRemove?: ((data: {
3117
+ id: string;
3118
+ nextId?: string | undefined;
3119
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
3120
+ }, prevState: {
3121
+ stackRef: React.RefObject<HTMLDivElement>;
3122
+ targetRef: React.RefObject<HTMLButtonElement>;
3123
+ initialFocusRef: React.RefObject<any> | undefined;
3124
+ returnFocusRef: React.RefObject<any> | undefined;
3125
+ placement: import("@popperjs/core").Placement;
3126
+ id: string;
3127
+ visibility: "hidden" | "visible";
3128
+ selectedIds: string[] | "all";
3129
+ unselectedIds: string[];
3130
+ cursorId: string;
3131
+ columnCount: number;
3132
+ pageSizeRef: React.MutableRefObject<number>;
3133
+ cursorIndexRef: {
3134
+ readonly current: number;
3135
+ };
3136
+ UNSTABLE_virtual: {
3137
+ virtualItems: import("../../collection/lib/react-virtual").VirtualItem[];
3138
+ totalSize: number;
3139
+ scrollToOffset: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
3140
+ scrollToIndex: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
3141
+ measure: () => void;
3142
+ };
3143
+ UNSTABLE_defaultItemHeight: number;
3144
+ containerRef: React.RefObject<HTMLDivElement>;
3145
+ orientation: "horizontal" | "vertical";
3146
+ indexRef: React.MutableRefObject<number>;
3147
+ nonInteractiveIds: string[];
3148
+ isVirtualized: boolean;
3149
+ items: import("../..").Item<any>[];
3150
+ mode: "multiple" | "single";
3151
+ }) => void) | undefined;
3004
3152
  onGoTo?: ((data: {
3005
3153
  id: string;
3006
3154
  }, prevState: {
@@ -3687,6 +3835,42 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
3687
3835
  items: import("../..").Item<any>[];
3688
3836
  mode: "multiple" | "single";
3689
3837
  }) => boolean) | undefined;
3838
+ shouldRemove?: ((data: {
3839
+ id: string;
3840
+ nextId?: string | undefined;
3841
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
3842
+ }, state: {
3843
+ stackRef: React.RefObject<HTMLDivElement>;
3844
+ targetRef: React.RefObject<HTMLButtonElement>;
3845
+ initialFocusRef: React.RefObject<any> | undefined;
3846
+ returnFocusRef: React.RefObject<any> | undefined;
3847
+ placement: import("@popperjs/core").Placement;
3848
+ id: string;
3849
+ visibility: "hidden" | "visible";
3850
+ selectedIds: string[] | "all";
3851
+ unselectedIds: string[];
3852
+ cursorId: string;
3853
+ columnCount: number;
3854
+ pageSizeRef: React.MutableRefObject<number>;
3855
+ cursorIndexRef: {
3856
+ readonly current: number;
3857
+ };
3858
+ UNSTABLE_virtual: {
3859
+ virtualItems: import("../../collection/lib/react-virtual").VirtualItem[];
3860
+ totalSize: number;
3861
+ scrollToOffset: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
3862
+ scrollToIndex: (index: number, options?: import("../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
3863
+ measure: () => void;
3864
+ };
3865
+ UNSTABLE_defaultItemHeight: number;
3866
+ containerRef: React.RefObject<HTMLDivElement>;
3867
+ orientation: "horizontal" | "vertical";
3868
+ indexRef: React.MutableRefObject<number>;
3869
+ nonInteractiveIds: string[];
3870
+ isVirtualized: boolean;
3871
+ items: import("../..").Item<any>[];
3872
+ mode: "multiple" | "single";
3873
+ }) => boolean) | undefined;
3690
3874
  shouldGoTo?: ((data: {
3691
3875
  id: string;
3692
3876
  }, state: {
@@ -4189,6 +4373,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4189
4373
  selectAll(): void;
4190
4374
  unselectAll(): void;
4191
4375
  setSelectedIds(ids: string[] | "all"): void;
4376
+ remove(data: {
4377
+ id: string;
4378
+ nextId?: string | undefined;
4379
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4380
+ }): void;
4192
4381
  goTo(data: {
4193
4382
  id: string;
4194
4383
  }): void;
@@ -4262,6 +4451,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4262
4451
  selectAll(): void;
4263
4452
  unselectAll(): void;
4264
4453
  setSelectedIds(ids: string[] | "all"): void;
4454
+ remove(data: {
4455
+ id: string;
4456
+ nextId?: string | undefined;
4457
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4458
+ }): void;
4265
4459
  goTo(data: {
4266
4460
  id: string;
4267
4461
  }): void;
@@ -4335,6 +4529,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4335
4529
  selectAll(): void;
4336
4530
  unselectAll(): void;
4337
4531
  setSelectedIds(ids: string[] | "all"): void;
4532
+ remove(data: {
4533
+ id: string;
4534
+ nextId?: string | undefined;
4535
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4536
+ }): void;
4338
4537
  goTo(data: {
4339
4538
  id: string;
4340
4539
  }): void;
@@ -4408,6 +4607,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4408
4607
  selectAll(): void;
4409
4608
  unselectAll(): void;
4410
4609
  setSelectedIds(ids: string[] | "all"): void;
4610
+ remove(data: {
4611
+ id: string;
4612
+ nextId?: string | undefined;
4613
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4614
+ }): void;
4411
4615
  goTo(data: {
4412
4616
  id: string;
4413
4617
  }): void;
@@ -4481,6 +4685,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4481
4685
  selectAll(): void;
4482
4686
  unselectAll(): void;
4483
4687
  setSelectedIds(ids: string[] | "all"): void;
4688
+ remove(data: {
4689
+ id: string;
4690
+ nextId?: string | undefined;
4691
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4692
+ }): void;
4484
4693
  goTo(data: {
4485
4694
  id: string;
4486
4695
  }): void;
@@ -4559,6 +4768,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4559
4768
  selectAll(): void;
4560
4769
  unselectAll(): void;
4561
4770
  setSelectedIds(ids: string[] | "all"): void;
4771
+ remove(data: {
4772
+ id: string;
4773
+ nextId?: string | undefined;
4774
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4775
+ }): void;
4562
4776
  goTo(data: {
4563
4777
  id: string;
4564
4778
  }): void;
@@ -4638,6 +4852,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4638
4852
  selectAll(): void;
4639
4853
  unselectAll(): void;
4640
4854
  setSelectedIds(ids: string[] | "all"): void;
4855
+ remove(data: {
4856
+ id: string;
4857
+ nextId?: string | undefined;
4858
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4859
+ }): void;
4641
4860
  goTo(data: {
4642
4861
  id: string;
4643
4862
  }): void;
@@ -4711,6 +4930,11 @@ export declare const ActionBar: import("@workday/canvas-kit-react/common").Compo
4711
4930
  selectAll(): void;
4712
4931
  unselectAll(): void;
4713
4932
  setSelectedIds(ids: string[] | "all"): void;
4933
+ remove(data: {
4934
+ id: string;
4935
+ nextId?: string | undefined;
4936
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
4937
+ }): void;
4714
4938
  goTo(data: {
4715
4939
  id: string;
4716
4940
  }): void;