@workday/canvas-kit-react 9.0.0-alpha.414-next.16 → 9.0.0-alpha.416-next.18

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 (111) hide show
  1. package/collection/index.ts +2 -1
  2. package/collection/lib/useCursorListModel.tsx +0 -15
  3. package/collection/lib/useListItemAllowChildStrings.ts +37 -0
  4. package/collection/lib/useListItemRovingFocus.tsx +7 -0
  5. package/dist/commonjs/action-bar/lib/ActionBar.d.ts +124 -124
  6. package/dist/commonjs/action-bar/lib/ActionBar.d.ts.map +1 -1
  7. package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts +12 -12
  8. package/dist/commonjs/action-bar/lib/ActionBarList.d.ts +12 -12
  9. package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts +16 -16
  10. package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts +52 -52
  11. package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts +136 -136
  12. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +16 -16
  13. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts +12 -12
  14. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts +8 -8
  15. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.d.ts +64 -64
  16. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +16 -16
  17. package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +52 -52
  18. package/dist/commonjs/collection/index.d.ts +2 -1
  19. package/dist/commonjs/collection/index.d.ts.map +1 -1
  20. package/dist/commonjs/collection/index.js +1 -0
  21. package/dist/commonjs/collection/lib/ListBox.d.ts +48 -48
  22. package/dist/commonjs/collection/lib/useCursorListModel.d.ts +44 -56
  23. package/dist/commonjs/collection/lib/useCursorListModel.d.ts.map +1 -1
  24. package/dist/commonjs/collection/lib/useCursorListModel.js +2 -15
  25. package/dist/commonjs/collection/lib/useGridModel.d.ts +44 -44
  26. package/dist/commonjs/collection/lib/useListItemAllowChildStrings.d.ts +84 -0
  27. package/dist/commonjs/collection/lib/useListItemAllowChildStrings.d.ts.map +1 -0
  28. package/dist/commonjs/collection/lib/useListItemAllowChildStrings.js +36 -0
  29. package/dist/commonjs/collection/lib/useListItemRegister.d.ts +4 -4
  30. package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts +4 -4
  31. package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
  32. package/dist/commonjs/collection/lib/useListItemRovingFocus.js +6 -0
  33. package/dist/commonjs/collection/lib/useListItemSelect.d.ts +4 -4
  34. package/dist/commonjs/collection/lib/useListModel.d.ts +44 -44
  35. package/dist/commonjs/collection/lib/useListResetCursorOnBlur.d.ts +4 -4
  36. package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts +4 -4
  37. package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts +4 -4
  38. package/dist/commonjs/collection/lib/useOverflowListModel.d.ts +44 -44
  39. package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts +4 -4
  40. package/dist/commonjs/collection/lib/useSelectionListModel.d.ts +44 -44
  41. package/dist/commonjs/menu/lib/Menu.d.ts +60 -60
  42. package/dist/commonjs/menu/lib/MenuCard.d.ts +8 -8
  43. package/dist/commonjs/menu/lib/MenuContextTarget.d.ts +12 -12
  44. package/dist/commonjs/menu/lib/MenuItem.d.ts +8 -8
  45. package/dist/commonjs/menu/lib/MenuList.d.ts +8 -8
  46. package/dist/commonjs/menu/lib/MenuPopper.d.ts +4 -4
  47. package/dist/commonjs/menu/lib/MenuTarget.d.ts +20 -20
  48. package/dist/commonjs/menu/lib/useMenuModel.d.ts +44 -44
  49. package/dist/commonjs/tabs/lib/Tabs.d.ts +176 -176
  50. package/dist/commonjs/tabs/lib/TabsItem.d.ts +16 -16
  51. package/dist/commonjs/tabs/lib/TabsList.d.ts +16 -16
  52. package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +4 -4
  53. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +16 -16
  54. package/dist/commonjs/tabs/lib/TabsPanel.d.ts +16 -16
  55. package/dist/commonjs/tabs/lib/TabsPanels.d.ts +8 -8
  56. package/dist/commonjs/tabs/lib/useTabsModel.d.ts +116 -116
  57. package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
  58. package/dist/es6/action-bar/lib/ActionBar.d.ts +124 -124
  59. package/dist/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
  60. package/dist/es6/action-bar/lib/ActionBarItem.d.ts +12 -12
  61. package/dist/es6/action-bar/lib/ActionBarList.d.ts +12 -12
  62. package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts +16 -16
  63. package/dist/es6/action-bar/lib/useActionBarModel.d.ts +52 -52
  64. package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts +136 -136
  65. package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +16 -16
  66. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts +12 -12
  67. package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts +8 -8
  68. package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.d.ts +64 -64
  69. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +16 -16
  70. package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +52 -52
  71. package/dist/es6/collection/index.d.ts +2 -1
  72. package/dist/es6/collection/index.d.ts.map +1 -1
  73. package/dist/es6/collection/index.js +1 -0
  74. package/dist/es6/collection/lib/ListBox.d.ts +48 -48
  75. package/dist/es6/collection/lib/useCursorListModel.d.ts +44 -56
  76. package/dist/es6/collection/lib/useCursorListModel.d.ts.map +1 -1
  77. package/dist/es6/collection/lib/useCursorListModel.js +2 -15
  78. package/dist/es6/collection/lib/useGridModel.d.ts +44 -44
  79. package/dist/es6/collection/lib/useListItemAllowChildStrings.d.ts +84 -0
  80. package/dist/es6/collection/lib/useListItemAllowChildStrings.d.ts.map +1 -0
  81. package/dist/es6/collection/lib/useListItemAllowChildStrings.js +33 -0
  82. package/dist/es6/collection/lib/useListItemRegister.d.ts +4 -4
  83. package/dist/es6/collection/lib/useListItemRovingFocus.d.ts +4 -4
  84. package/dist/es6/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
  85. package/dist/es6/collection/lib/useListItemRovingFocus.js +6 -0
  86. package/dist/es6/collection/lib/useListItemSelect.d.ts +4 -4
  87. package/dist/es6/collection/lib/useListModel.d.ts +44 -44
  88. package/dist/es6/collection/lib/useListResetCursorOnBlur.d.ts +4 -4
  89. package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts +4 -4
  90. package/dist/es6/collection/lib/useOverflowListMeasure.d.ts +4 -4
  91. package/dist/es6/collection/lib/useOverflowListModel.d.ts +44 -44
  92. package/dist/es6/collection/lib/useOverflowListTarget.d.ts +4 -4
  93. package/dist/es6/collection/lib/useSelectionListModel.d.ts +44 -44
  94. package/dist/es6/menu/lib/Menu.d.ts +60 -60
  95. package/dist/es6/menu/lib/MenuCard.d.ts +8 -8
  96. package/dist/es6/menu/lib/MenuContextTarget.d.ts +12 -12
  97. package/dist/es6/menu/lib/MenuItem.d.ts +8 -8
  98. package/dist/es6/menu/lib/MenuList.d.ts +8 -8
  99. package/dist/es6/menu/lib/MenuPopper.d.ts +4 -4
  100. package/dist/es6/menu/lib/MenuTarget.d.ts +20 -20
  101. package/dist/es6/menu/lib/useMenuModel.d.ts +44 -44
  102. package/dist/es6/tabs/lib/Tabs.d.ts +176 -176
  103. package/dist/es6/tabs/lib/TabsItem.d.ts +16 -16
  104. package/dist/es6/tabs/lib/TabsList.d.ts +16 -16
  105. package/dist/es6/tabs/lib/TabsMenuPopper.d.ts +4 -4
  106. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +16 -16
  107. package/dist/es6/tabs/lib/TabsPanel.d.ts +16 -16
  108. package/dist/es6/tabs/lib/TabsPanels.d.ts +8 -8
  109. package/dist/es6/tabs/lib/useTabsModel.d.ts +116 -116
  110. package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
  111. package/package.json +3 -3
@@ -10,7 +10,8 @@ export * from './lib/useListItemRovingFocus';
10
10
  export * from './lib/useListItemSelect';
11
11
  export * from './lib/useListModel';
12
12
  export * from './lib/useGridModel';
13
- export {ListBox} from './lib/ListBox';
13
+ export * from './lib/useListItemAllowChildStrings';
14
+ export {ListBox, ListBoxProps} from './lib/ListBox';
14
15
  export {
15
16
  singleSelectionManager,
16
17
  multiSelectionManager,
@@ -322,9 +322,6 @@ export const useCursorListModel = createModelHook({
322
322
  const pageSizeRef = React.useRef(config.pageSize);
323
323
  const columnCount = config.columnCount || 0;
324
324
  const list = useBaseListModel(config);
325
- const initialCurrentRef = React.useRef(
326
- config.initialCursorId || (config.items?.length ? list.state.items![0].id : '')
327
- );
328
325
  const navigation = config.navigation;
329
326
  const cursorIndexRef = React.useRef(-1);
330
327
  const setCursor = (index: number) => {
@@ -358,18 +355,6 @@ export const useCursorListModel = createModelHook({
358
355
 
359
356
  const events = {
360
357
  ...list.events,
361
- /**
362
- * Register an item to the list. Takes in an identifier, a React.Ref and an optional index. This
363
- * should be called on component mount
364
- */
365
- registerItem(data: Parameters<typeof list.events.registerItem>[0]) {
366
- // point the cursor at the first item
367
- if (!initialCurrentRef.current) {
368
- initialCurrentRef.current = list.getId(data.item);
369
- setCursorId(initialCurrentRef.current);
370
- }
371
- list.events.registerItem(data);
372
- },
373
358
  /** Directly sets the cursor to the list item by its identifier. */
374
359
  goTo(data: {id: string}) {
375
360
  const index = state.items.findIndex(item => item.id === data.id);
@@ -0,0 +1,37 @@
1
+ import {createElemPropsHook} from '@workday/canvas-kit-react/common';
2
+ import {useListModel} from '@workday/canvas-kit-react/collection';
3
+
4
+ /**
5
+ * This elemProps hook allows for children values to be considered identifiers if the children
6
+ * are strings. This can be useful for autocomplete or select components that allow string values.
7
+ * This hook must be defined _before_ {@link useListItemRegister} because it sets the `data-id`
8
+ * attribute if one hasn't been defined by the application.
9
+ *
10
+ * An example might look like:
11
+ * ```tsx
12
+ * const useMyListItem = composeHooks(
13
+ * // any other hooks here
14
+ * useListItemSelect,
15
+ * useListItemRegister,
16
+ * useListItemAllowChildStrings
17
+ * )
18
+ *
19
+ *
20
+ * <MyList onSelect={({id}) => {
21
+ * console.log(id) // will be "First" or "Second"
22
+ * }}>
23
+ * <MyList.Item>First</MyList.Item>
24
+ * <MyList.Item>Second</MyList.Item>
25
+ * </MyList>
26
+ * ```
27
+ */
28
+ export const useListItemAllowChildStrings = createElemPropsHook(useListModel)(
29
+ (_, __, elemProps: {'data-id'?: string; children?: React.ReactNode} = {}) => {
30
+ const props: {'data-id'?: string} = {};
31
+ if (!elemProps['data-id'] && typeof elemProps.children === 'string') {
32
+ props['data-id'] = elemProps.children;
33
+ }
34
+
35
+ return props;
36
+ }
37
+ );
@@ -47,6 +47,13 @@ export const useListItemRovingFocus = createElemPropsHook(useCursorListModel)(
47
47
  // eslint-disable-next-line react-hooks/exhaustive-deps
48
48
  }, [model.state.cursorId]);
49
49
 
50
+ // Roving focus must always have a focus stop to function correctly
51
+ React.useEffect(() => {
52
+ if (!model.state.cursorId && model.state.items.length) {
53
+ model.events.goTo({id: model.state.items[0].id});
54
+ }
55
+ }, [model.state.cursorId, model.state.items, model.events]);
56
+
50
57
  return {
51
58
  onKeyDown(event: React.KeyboardEvent) {
52
59
  const handled = keyboardEventToCursorEvents(event, model, isRTL);