@workday/canvas-kit-react 9.0.0-alpha.418-next.20 → 9.0.0-alpha.420-next.22
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.
- package/breadcrumbs/lib/BreadcrumbsItem.tsx +1 -1
- package/collection/index.ts +2 -0
- package/collection/lib/ListBox.tsx +12 -10
- package/collection/lib/useBaseListModel.tsx +6 -4
- package/collection/lib/useCursorListModel.tsx +1 -1
- package/collection/lib/useListActiveDescendant.ts +24 -0
- package/collection/lib/useListItemAllowChildStrings.ts +2 -1
- package/collection/lib/useListItemRegister.tsx +10 -3
- package/collection/lib/useListItemSelect.tsx +1 -1
- package/collection/lib/useListKeyboardHandler.ts +28 -0
- package/collection/lib/useListLoader.ts +116 -54
- package/collection/lib/useOverflowListItemMeasure.tsx +2 -2
- package/collection/lib/useOverflowListMeasure.ts +11 -13
- package/collection/lib/useOverflowListTarget.tsx +28 -30
- package/collection/lib/useSelectionListModel.tsx +1 -0
- package/combobox/LICENSE +52 -0
- package/combobox/README.md +7 -0
- package/combobox/index.ts +8 -0
- package/combobox/lib/Combobox.tsx +32 -0
- package/combobox/lib/ComboboxCard.tsx +33 -0
- package/combobox/lib/ComboboxInput.tsx +104 -0
- package/combobox/lib/ComboboxMenu.tsx +67 -0
- package/combobox/lib/ComboboxMenuItem.tsx +74 -0
- package/combobox/lib/ComboboxMenuList.tsx +45 -0
- package/combobox/lib/useComboboxInputOpenWithArrowKeys.ts +21 -0
- package/combobox/lib/useComboboxLoader.ts +72 -0
- package/combobox/lib/useComboboxModel.tsx +85 -0
- package/combobox/package.json +6 -0
- package/common/lib/utils/components.ts +20 -16
- package/common/lib/utils/models.ts +2 -2
- package/dist/commonjs/action-bar/lib/ActionBar.d.ts +2 -2
- package/dist/commonjs/action-bar/lib/ActionBarList.d.ts +1 -1
- package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts +2 -2
- package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts +2 -2
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.d.ts +1 -1
- package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +2 -2
- package/dist/commonjs/collection/index.d.ts +2 -0
- package/dist/commonjs/collection/index.d.ts.map +1 -1
- package/dist/commonjs/collection/index.js +2 -0
- package/dist/commonjs/collection/lib/ListBox.d.ts +7 -6
- package/dist/commonjs/collection/lib/ListBox.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/ListBox.js +5 -3
- package/dist/commonjs/collection/lib/useBaseListModel.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useBaseListModel.js +4 -4
- package/dist/commonjs/collection/lib/useCursorListModel.d.ts +0 -34
- package/dist/commonjs/collection/lib/useCursorListModel.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useCursorListModel.js +1 -1
- package/dist/commonjs/collection/lib/useListActiveDescendant.d.ts +68 -0
- package/dist/commonjs/collection/lib/useListActiveDescendant.d.ts.map +1 -0
- package/dist/commonjs/collection/lib/useListActiveDescendant.js +25 -0
- package/dist/commonjs/collection/lib/useListItemAllowChildStrings.d.ts +2 -1
- package/dist/commonjs/collection/lib/useListItemAllowChildStrings.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListItemAllowChildStrings.js +2 -1
- package/dist/commonjs/collection/lib/useListItemRegister.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListItemRegister.js +5 -1
- package/dist/commonjs/collection/lib/useListKeyboardHandler.d.ts +66 -0
- package/dist/commonjs/collection/lib/useListKeyboardHandler.d.ts.map +1 -0
- package/dist/commonjs/collection/lib/useListKeyboardHandler.js +27 -0
- package/dist/commonjs/collection/lib/useListLoader.d.ts +46 -7
- package/dist/commonjs/collection/lib/useListLoader.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListLoader.js +61 -35
- package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts +1 -1
- package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts +5 -2
- package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListTarget.js +1 -1
- package/dist/commonjs/collection/lib/useSelectionListModel.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useSelectionListModel.js +1 -0
- package/dist/commonjs/combobox/index.d.ts +9 -0
- package/dist/commonjs/combobox/index.d.ts.map +1 -0
- package/dist/commonjs/combobox/index.js +19 -0
- package/dist/commonjs/combobox/lib/Combobox.d.ts +2075 -0
- package/dist/commonjs/combobox/lib/Combobox.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/Combobox.js +29 -0
- package/dist/commonjs/combobox/lib/ComboboxCard.d.ts +166 -0
- package/dist/commonjs/combobox/lib/ComboboxCard.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/ComboboxCard.js +25 -0
- package/dist/commonjs/combobox/lib/ComboboxInput.d.ts +186 -0
- package/dist/commonjs/combobox/lib/ComboboxInput.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/ComboboxInput.js +84 -0
- package/dist/commonjs/combobox/lib/ComboboxMenu.d.ts +428 -0
- package/dist/commonjs/combobox/lib/ComboboxMenu.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/ComboboxMenu.js +63 -0
- package/dist/commonjs/combobox/lib/ComboboxMenuItem.d.ts +178 -0
- package/dist/commonjs/combobox/lib/ComboboxMenuItem.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/ComboboxMenuItem.js +50 -0
- package/dist/commonjs/combobox/lib/ComboboxMenuList.d.ts +164 -0
- package/dist/commonjs/combobox/lib/ComboboxMenuList.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/ComboboxMenuList.js +31 -0
- package/dist/commonjs/combobox/lib/useComboboxInputOpenWithArrowKeys.d.ts +84 -0
- package/dist/commonjs/combobox/lib/useComboboxInputOpenWithArrowKeys.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/useComboboxInputOpenWithArrowKeys.js +20 -0
- package/dist/commonjs/combobox/lib/useComboboxLoader.d.ts +28 -0
- package/dist/commonjs/combobox/lib/useComboboxLoader.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/useComboboxLoader.js +65 -0
- package/dist/commonjs/combobox/lib/useComboboxModel.d.ts +1998 -0
- package/dist/commonjs/combobox/lib/useComboboxModel.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/useComboboxModel.js +82 -0
- package/dist/commonjs/common/lib/utils/components.d.ts +9 -23
- package/dist/commonjs/common/lib/utils/components.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/components.js +6 -2
- package/dist/commonjs/common/lib/utils/models.js +2 -2
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +1 -0
- package/dist/commonjs/menu/index.d.ts +1 -1
- package/dist/commonjs/menu/index.d.ts.map +1 -1
- package/dist/commonjs/menu/index.js +2 -1
- package/dist/commonjs/menu/lib/Menu.d.ts +7 -5
- package/dist/commonjs/menu/lib/Menu.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/Menu.js +6 -4
- package/dist/commonjs/menu/lib/MenuContextTarget.d.ts +2 -2
- package/dist/commonjs/menu/lib/MenuItem.d.ts +7 -1
- package/dist/commonjs/menu/lib/MenuItem.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/MenuItem.js +9 -11
- package/dist/commonjs/menu/lib/MenuList.d.ts +3 -3
- package/dist/commonjs/menu/lib/MenuList.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/MenuList.js +3 -2
- package/dist/commonjs/menu/lib/MenuPopper.d.ts +1 -1
- package/dist/commonjs/menu/lib/MenuTarget.d.ts +2 -2
- package/dist/commonjs/menu/lib/useMenuModel.d.ts +2 -2
- package/dist/commonjs/menu/lib/useMenuModel.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/useMenuModel.js +3 -5
- package/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupTargetContext.d.ts +1 -1
- package/dist/commonjs/tabs/lib/Tabs.d.ts +18 -120
- package/dist/commonjs/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +0 -1
- package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.js +0 -1
- package/dist/commonjs/tabs/lib/TabsList.d.ts +1 -1
- package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +1 -1
- package/dist/commonjs/tabs/lib/TabsPanel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts +8 -20
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/useTabsModel.js +1 -0
- package/dist/commonjs/text-input/index.d.ts +1 -1
- package/dist/commonjs/text-input/index.d.ts.map +1 -1
- package/dist/commonjs/text-input/index.js +2 -1
- package/dist/commonjs/text-input/lib/InputGroup.d.ts +94 -9
- package/dist/commonjs/text-input/lib/InputGroup.d.ts.map +1 -1
- package/dist/commonjs/text-input/lib/InputGroup.js +129 -63
- package/dist/es6/action-bar/lib/ActionBar.d.ts +2 -2
- package/dist/es6/action-bar/lib/ActionBarList.d.ts +1 -1
- package/dist/es6/action-bar/lib/useActionBarModel.d.ts +2 -2
- package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts +2 -2
- package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.d.ts +1 -1
- package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +2 -2
- package/dist/es6/collection/index.d.ts +2 -0
- package/dist/es6/collection/index.d.ts.map +1 -1
- package/dist/es6/collection/index.js +2 -0
- package/dist/es6/collection/lib/ListBox.d.ts +7 -6
- package/dist/es6/collection/lib/ListBox.d.ts.map +1 -1
- package/dist/es6/collection/lib/ListBox.js +6 -4
- package/dist/es6/collection/lib/useBaseListModel.d.ts.map +1 -1
- package/dist/es6/collection/lib/useBaseListModel.js +4 -4
- package/dist/es6/collection/lib/useCursorListModel.d.ts +0 -34
- package/dist/es6/collection/lib/useCursorListModel.d.ts.map +1 -1
- package/dist/es6/collection/lib/useCursorListModel.js +1 -1
- package/dist/es6/collection/lib/useListActiveDescendant.d.ts +68 -0
- package/dist/es6/collection/lib/useListActiveDescendant.d.ts.map +1 -0
- package/dist/es6/collection/lib/useListActiveDescendant.js +22 -0
- package/dist/es6/collection/lib/useListItemAllowChildStrings.d.ts +2 -1
- package/dist/es6/collection/lib/useListItemAllowChildStrings.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListItemAllowChildStrings.js +2 -1
- package/dist/es6/collection/lib/useListItemRegister.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListItemRegister.js +5 -1
- package/dist/es6/collection/lib/useListKeyboardHandler.d.ts +66 -0
- package/dist/es6/collection/lib/useListKeyboardHandler.d.ts.map +1 -0
- package/dist/es6/collection/lib/useListKeyboardHandler.js +24 -0
- package/dist/es6/collection/lib/useListLoader.d.ts +46 -7
- package/dist/es6/collection/lib/useListLoader.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListLoader.js +61 -35
- package/dist/es6/collection/lib/useOverflowListMeasure.d.ts +1 -1
- package/dist/es6/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListTarget.d.ts +5 -2
- package/dist/es6/collection/lib/useOverflowListTarget.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListTarget.js +1 -1
- package/dist/es6/collection/lib/useSelectionListModel.d.ts.map +1 -1
- package/dist/es6/collection/lib/useSelectionListModel.js +1 -0
- package/dist/es6/combobox/index.d.ts +9 -0
- package/dist/es6/combobox/index.d.ts.map +1 -0
- package/dist/es6/combobox/index.js +8 -0
- package/dist/es6/combobox/lib/Combobox.d.ts +2075 -0
- package/dist/es6/combobox/lib/Combobox.d.ts.map +1 -0
- package/dist/es6/combobox/lib/Combobox.js +23 -0
- package/dist/es6/combobox/lib/ComboboxCard.d.ts +166 -0
- package/dist/es6/combobox/lib/ComboboxCard.d.ts.map +1 -0
- package/dist/es6/combobox/lib/ComboboxCard.js +19 -0
- package/dist/es6/combobox/lib/ComboboxInput.d.ts +186 -0
- package/dist/es6/combobox/lib/ComboboxInput.d.ts.map +1 -0
- package/dist/es6/combobox/lib/ComboboxInput.js +78 -0
- package/dist/es6/combobox/lib/ComboboxMenu.d.ts +428 -0
- package/dist/es6/combobox/lib/ComboboxMenu.d.ts.map +1 -0
- package/dist/es6/combobox/lib/ComboboxMenu.js +57 -0
- package/dist/es6/combobox/lib/ComboboxMenuItem.d.ts +178 -0
- package/dist/es6/combobox/lib/ComboboxMenuItem.d.ts.map +1 -0
- package/dist/es6/combobox/lib/ComboboxMenuItem.js +44 -0
- package/dist/es6/combobox/lib/ComboboxMenuList.d.ts +164 -0
- package/dist/es6/combobox/lib/ComboboxMenuList.d.ts.map +1 -0
- package/dist/es6/combobox/lib/ComboboxMenuList.js +25 -0
- package/dist/es6/combobox/lib/useComboboxInputOpenWithArrowKeys.d.ts +84 -0
- package/dist/es6/combobox/lib/useComboboxInputOpenWithArrowKeys.d.ts.map +1 -0
- package/dist/es6/combobox/lib/useComboboxInputOpenWithArrowKeys.js +17 -0
- package/dist/es6/combobox/lib/useComboboxLoader.d.ts +28 -0
- package/dist/es6/combobox/lib/useComboboxLoader.d.ts.map +1 -0
- package/dist/es6/combobox/lib/useComboboxLoader.js +58 -0
- package/dist/es6/combobox/lib/useComboboxModel.d.ts +1998 -0
- package/dist/es6/combobox/lib/useComboboxModel.d.ts.map +1 -0
- package/dist/es6/combobox/lib/useComboboxModel.js +76 -0
- package/dist/es6/common/lib/utils/components.d.ts +9 -23
- package/dist/es6/common/lib/utils/components.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/components.js +6 -2
- package/dist/es6/common/lib/utils/models.js +2 -2
- package/dist/es6/index.d.ts +1 -0
- package/dist/es6/index.d.ts.map +1 -1
- package/dist/es6/index.js +1 -0
- package/dist/es6/menu/index.d.ts +1 -1
- package/dist/es6/menu/index.d.ts.map +1 -1
- package/dist/es6/menu/index.js +1 -1
- package/dist/es6/menu/lib/Menu.d.ts +7 -5
- package/dist/es6/menu/lib/Menu.d.ts.map +1 -1
- package/dist/es6/menu/lib/Menu.js +6 -4
- package/dist/es6/menu/lib/MenuContextTarget.d.ts +2 -2
- package/dist/es6/menu/lib/MenuItem.d.ts +7 -1
- package/dist/es6/menu/lib/MenuItem.d.ts.map +1 -1
- package/dist/es6/menu/lib/MenuItem.js +8 -10
- package/dist/es6/menu/lib/MenuList.d.ts +3 -3
- package/dist/es6/menu/lib/MenuList.d.ts.map +1 -1
- package/dist/es6/menu/lib/MenuList.js +4 -3
- package/dist/es6/menu/lib/MenuPopper.d.ts +1 -1
- package/dist/es6/menu/lib/MenuTarget.d.ts +2 -2
- package/dist/es6/menu/lib/useMenuModel.d.ts +2 -2
- package/dist/es6/menu/lib/useMenuModel.d.ts.map +1 -1
- package/dist/es6/menu/lib/useMenuModel.js +4 -6
- package/dist/es6/popup/lib/hooks/usePopupPopper.d.ts +1 -1
- package/dist/es6/popup/lib/hooks/usePopupTarget.d.ts +1 -1
- package/dist/es6/popup/lib/hooks/usePopupTargetContext.d.ts +1 -1
- package/dist/es6/tabs/lib/Tabs.d.ts +18 -120
- package/dist/es6/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsItem.d.ts +0 -1
- package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsItem.js +0 -1
- package/dist/es6/tabs/lib/TabsList.d.ts +1 -1
- package/dist/es6/tabs/lib/TabsMenuPopper.d.ts +1 -1
- package/dist/es6/tabs/lib/TabsPanel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/useTabsModel.d.ts +8 -20
- package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/useTabsModel.js +1 -0
- package/dist/es6/text-input/index.d.ts +1 -1
- package/dist/es6/text-input/index.d.ts.map +1 -1
- package/dist/es6/text-input/index.js +1 -1
- package/dist/es6/text-input/lib/InputGroup.d.ts +94 -9
- package/dist/es6/text-input/lib/InputGroup.d.ts.map +1 -1
- package/dist/es6/text-input/lib/InputGroup.js +129 -63
- package/index.ts +1 -0
- package/menu/index.ts +1 -1
- package/menu/lib/Menu.tsx +6 -4
- package/menu/lib/MenuItem.tsx +9 -12
- package/menu/lib/MenuList.tsx +16 -10
- package/menu/lib/useMenuModel.tsx +4 -7
- package/modal/lib/hooks/useModalHeading.ts +2 -2
- package/package.json +3 -3
- package/tabs/lib/TabsItem.tsx +10 -13
- package/tabs/lib/TabsPanel.tsx +1 -5
- package/tabs/lib/useTabsModel.tsx +1 -0
- package/text-input/index.ts +1 -1
- package/text-input/lib/InputGroup.tsx +177 -95
|
@@ -1,9 +1,64 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export declare const useInputGroupModel: (<TT_Special_Generic>(config?: (Partial<{}> & {} & {}) | undefined) => {
|
|
3
|
+
state: {
|
|
4
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
5
|
+
};
|
|
6
|
+
events: {};
|
|
7
|
+
}) & import("@workday/canvas-kit-react/common").ModelExtras<{}, {}, {
|
|
8
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
9
|
+
}, {}, {
|
|
10
|
+
state: {
|
|
11
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
12
|
+
};
|
|
13
|
+
events: {};
|
|
14
|
+
}>;
|
|
15
|
+
export declare const InputGroupInnerStart: import("@workday/canvas-kit-react/common").ElementComponentM<"div", Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps, {
|
|
16
|
+
state: {
|
|
17
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
18
|
+
};
|
|
19
|
+
events: {};
|
|
20
|
+
}>;
|
|
21
|
+
export declare const InputGroupInnerEnd: import("@workday/canvas-kit-react/common").ElementComponentM<"div", Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps, {
|
|
22
|
+
state: {
|
|
23
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
24
|
+
};
|
|
25
|
+
events: {};
|
|
26
|
+
}>;
|
|
27
|
+
export declare const InputGroupInput: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"input", import("./TextInput").TextInputProps> & {
|
|
5
28
|
ErrorType: typeof import("@workday/canvas-kit-react/common").ErrorType;
|
|
6
|
-
}, Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps
|
|
29
|
+
}, Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps, {
|
|
30
|
+
state: {
|
|
31
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
32
|
+
};
|
|
33
|
+
events: {};
|
|
34
|
+
}>;
|
|
35
|
+
export declare const useClearButton: import("@workday/canvas-kit-react/common").BehaviorHook<{
|
|
36
|
+
state: {
|
|
37
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
38
|
+
};
|
|
39
|
+
events: {};
|
|
40
|
+
}, {
|
|
41
|
+
readonly role: "presentation";
|
|
42
|
+
readonly tabIndex: -1;
|
|
43
|
+
readonly icon: import("@workday/design-assets-types").CanvasSystemIcon;
|
|
44
|
+
readonly size: "small";
|
|
45
|
+
readonly transition: "opacity 300ms ease";
|
|
46
|
+
readonly onMouseDown: (event: React.MouseEvent) => void;
|
|
47
|
+
readonly onClick: () => void;
|
|
48
|
+
readonly style: {
|
|
49
|
+
readonly opacity: 0 | 1;
|
|
50
|
+
readonly pointerEvents: "none" | "auto";
|
|
51
|
+
};
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* A clear input button. This can be a component later.
|
|
55
|
+
*/
|
|
56
|
+
export declare const ClearButton: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"button", import("@workday/canvas-kit-react/button").TertiaryButtonProps>, import("@workday/canvas-kit-react/button").TertiaryButtonProps, {
|
|
57
|
+
state: {
|
|
58
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
59
|
+
};
|
|
60
|
+
events: {};
|
|
61
|
+
}>;
|
|
7
62
|
/**
|
|
8
63
|
* An `InputGroup` is a container around a {@link TextInput} with optional inner start and end
|
|
9
64
|
* elements. The inner start and end elements are usually icons or icon buttons visually represented
|
|
@@ -24,27 +79,57 @@ export declare const InputGroupInput: import("@workday/canvas-kit-react/common")
|
|
|
24
79
|
* </InputGroup>
|
|
25
80
|
* ```
|
|
26
81
|
*/
|
|
27
|
-
export declare const InputGroup: import("@workday/canvas-kit-react/common").
|
|
82
|
+
export declare const InputGroup: import("@workday/canvas-kit-react/common").ElementComponentM<"div", Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps & Partial<{}> & {} & {}, {
|
|
83
|
+
state: {
|
|
84
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
85
|
+
};
|
|
86
|
+
events: {};
|
|
87
|
+
}> & {
|
|
28
88
|
/**
|
|
29
89
|
* A component to show inside and at the start of the input. The input's padding will be
|
|
30
90
|
* adjusted to not overlap with this element. Use `width` (number of pixels only) to adjust the
|
|
31
91
|
* width offset. The width defaults to 40px which is the correct width for icons or icon
|
|
32
92
|
* buttons.
|
|
33
93
|
*/
|
|
34
|
-
InnerStart: import("@workday/canvas-kit-react/common").
|
|
94
|
+
InnerStart: import("@workday/canvas-kit-react/common").ElementComponentM<"div", Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps, {
|
|
95
|
+
state: {
|
|
96
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
97
|
+
};
|
|
98
|
+
events: {};
|
|
99
|
+
}>;
|
|
35
100
|
/**
|
|
36
101
|
* The input to render. By default, this is a {@link TextInput}. Use the `as` prop to change the
|
|
37
102
|
* component to be rendered.
|
|
38
103
|
*/
|
|
39
|
-
Input: import("@workday/canvas-kit-react/common").
|
|
104
|
+
Input: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"input", import("./TextInput").TextInputProps> & {
|
|
40
105
|
ErrorType: typeof import("@workday/canvas-kit-react/common").ErrorType;
|
|
41
|
-
}, Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps
|
|
106
|
+
}, Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps, {
|
|
107
|
+
state: {
|
|
108
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
109
|
+
};
|
|
110
|
+
events: {};
|
|
111
|
+
}>;
|
|
42
112
|
/**
|
|
43
113
|
* A component to show inside and at the end of the input. The input's padding will be adjusted
|
|
44
114
|
* to not overlap with this element. Use `width` (number of pixels only) to adjust the width
|
|
45
115
|
* offset. The width defaults to 40px which is the correct width for icons or icon buttons
|
|
46
116
|
* within the input.
|
|
47
117
|
*/
|
|
48
|
-
InnerEnd: import("@workday/canvas-kit-react/common").
|
|
118
|
+
InnerEnd: import("@workday/canvas-kit-react/common").ElementComponentM<"div", Omit<import("@workday/canvas-kit-react/layout").BoxProps, "display"> & import("@workday/canvas-kit-react/layout").FlexStyleProps, {
|
|
119
|
+
state: {
|
|
120
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
121
|
+
};
|
|
122
|
+
events: {};
|
|
123
|
+
}>;
|
|
124
|
+
/**
|
|
125
|
+
* A component that can be added to an input group that will clear the input. It will only render
|
|
126
|
+
* when the input has a value and will fade when a value is entered.
|
|
127
|
+
*/
|
|
128
|
+
ClearButton: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"button", import("@workday/canvas-kit-react/button").TertiaryButtonProps>, import("@workday/canvas-kit-react/button").TertiaryButtonProps, {
|
|
129
|
+
state: {
|
|
130
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
131
|
+
};
|
|
132
|
+
events: {};
|
|
133
|
+
}>;
|
|
49
134
|
};
|
|
50
135
|
//# sourceMappingURL=InputGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputGroup.d.ts","sourceRoot":"","sources":["../../../../text-input/lib/InputGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"InputGroup.d.ts","sourceRoot":"","sources":["../../../../text-input/lib/InputGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAS7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;EAc/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;EAc7B,CAAC;AAUH,eAAO,MAAM,eAAe;;;;;;;EAK1B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;kCAwBJ,gBAAgB;;;;;;EAYrC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;EAKtB,CAAC;AAmBH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,UAAU;;;;;;IAInB;;;;;OAKG;;;;;;;IAEH;;;OAGG;;;;;;;;;IAEH;;;;;OAKG;;;;;;;IAEH;;;OAGG;;;;;;;CA6DL,CAAC"}
|
|
@@ -1,22 +1,83 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { space } from '@workday/canvas-kit-react/tokens';
|
|
3
|
-
import {
|
|
3
|
+
import { createContainer, createElemPropsHook, createModelHook, createSubcomponent, dispatchInputEvent, useForkRef, useIsRTL, } from '@workday/canvas-kit-react/common';
|
|
4
4
|
import { Flex } from '@workday/canvas-kit-react/layout';
|
|
5
|
+
import { TertiaryButton } from '@workday/canvas-kit-react/button';
|
|
6
|
+
import { xSmallIcon } from '@workday/canvas-system-icons-web';
|
|
5
7
|
import { TextInput } from './TextInput';
|
|
6
|
-
export const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export const useInputGroupModel = createModelHook({})(() => {
|
|
9
|
+
const inputRef = React.useRef(null);
|
|
10
|
+
return {
|
|
11
|
+
state: {
|
|
12
|
+
inputRef,
|
|
13
|
+
},
|
|
14
|
+
events: {},
|
|
15
|
+
};
|
|
10
16
|
});
|
|
11
|
-
export const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
17
|
+
export const InputGroupInnerStart = createSubcomponent('div')({
|
|
18
|
+
modelHook: useInputGroupModel,
|
|
19
|
+
})((elemProps, Element) => {
|
|
20
|
+
return (React.createElement(Flex, Object.assign({ as: Element, position: "absolute", alignItems: "center", justifyContent: "center", height: "xl", width: "xl" }, elemProps)));
|
|
15
21
|
});
|
|
16
|
-
export const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
},
|
|
22
|
+
export const InputGroupInnerEnd = createSubcomponent('div')({
|
|
23
|
+
modelHook: useInputGroupModel,
|
|
24
|
+
})((elemProps, Element) => {
|
|
25
|
+
return (React.createElement(Flex, Object.assign({ as: Element, position: "absolute", alignItems: "center", justifyContent: "center", height: "xl", width: "xl" }, elemProps)));
|
|
26
|
+
});
|
|
27
|
+
const useInputGroupInput = createElemPropsHook(useInputGroupModel)((model, ref) => {
|
|
28
|
+
const elementRef = useForkRef(ref, model.state.inputRef);
|
|
29
|
+
return {
|
|
30
|
+
ref: elementRef,
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
export const InputGroupInput = createSubcomponent(TextInput)({
|
|
34
|
+
modelHook: useInputGroupModel,
|
|
35
|
+
elemPropsHook: useInputGroupInput,
|
|
36
|
+
})((elemProps, Element) => {
|
|
37
|
+
return React.createElement(Flex, Object.assign({ as: Element, width: "100%" }, elemProps));
|
|
38
|
+
});
|
|
39
|
+
export const useClearButton = createElemPropsHook(useInputGroupModel)(model => {
|
|
40
|
+
const [inputHasValue, setInputHasValue] = React.useState(false);
|
|
41
|
+
React.useLayoutEffect(() => {
|
|
42
|
+
const input = model.state.inputRef.current;
|
|
43
|
+
if (input) {
|
|
44
|
+
input.addEventListener('input', () => {
|
|
45
|
+
setInputHasValue(!!input.value);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}, [model.state.inputRef]);
|
|
49
|
+
return {
|
|
50
|
+
// This element does not need to be accessible via screen reader. The user can already clear
|
|
51
|
+
// an input
|
|
52
|
+
role: 'presentation',
|
|
53
|
+
// A clear input button doesn't need focus. There's already keyboard keys to clear an input
|
|
54
|
+
tabIndex: -1,
|
|
55
|
+
icon: xSmallIcon,
|
|
56
|
+
// "small" is needed to render correctly within a `TextInput`
|
|
57
|
+
size: 'small',
|
|
58
|
+
transition: 'opacity 300ms ease',
|
|
59
|
+
// prevent a focus change to the button. Focus should stay in the input.
|
|
60
|
+
onMouseDown(event) {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
},
|
|
63
|
+
onClick() {
|
|
64
|
+
// This will clear the input's value
|
|
65
|
+
dispatchInputEvent(model.state.inputRef.current, '');
|
|
66
|
+
},
|
|
67
|
+
style: {
|
|
68
|
+
opacity: inputHasValue ? 1 : 0,
|
|
69
|
+
pointerEvents: inputHasValue ? 'auto' : 'none',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* A clear input button. This can be a component later.
|
|
75
|
+
*/
|
|
76
|
+
export const ClearButton = createSubcomponent(TertiaryButton)({
|
|
77
|
+
modelHook: useInputGroupModel,
|
|
78
|
+
elemPropsHook: useClearButton,
|
|
79
|
+
})((elemProps, Element) => {
|
|
80
|
+
return React.createElement(Element, Object.assign({}, elemProps));
|
|
20
81
|
});
|
|
21
82
|
// make sure we always use pixels if the input is a number - this is required for `calc`
|
|
22
83
|
const toPx = (input) => {
|
|
@@ -53,57 +114,9 @@ const wrapInCalc = (values) => {
|
|
|
53
114
|
* </InputGroup>
|
|
54
115
|
* ```
|
|
55
116
|
*/
|
|
56
|
-
export const InputGroup =
|
|
117
|
+
export const InputGroup = createContainer('div')({
|
|
57
118
|
displayName: 'InputGroup',
|
|
58
|
-
|
|
59
|
-
const isRTL = useIsRTL();
|
|
60
|
-
const offsetsStart = [];
|
|
61
|
-
const offsetsEnd = [];
|
|
62
|
-
// Collect the widths of the `InnerStart` and `InnerEnd` components into `offsetStart` and
|
|
63
|
-
// `offsetEnd` arrays
|
|
64
|
-
React.Children.forEach(children, child => {
|
|
65
|
-
if (React.isValidElement(child) && child.type === InputGroupInnerStart) {
|
|
66
|
-
const width = child.props.width || space.xl;
|
|
67
|
-
offsetsStart.push(width);
|
|
68
|
-
}
|
|
69
|
-
if (React.isValidElement(child) && child.type === InputGroupInnerEnd) {
|
|
70
|
-
const width = child.props.width || space.xl;
|
|
71
|
-
offsetsEnd.push(width);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
// keep track of the index offsets to make sure we calculate the correct position offset
|
|
75
|
-
let indexStart = 0;
|
|
76
|
-
let indexEnd = 0;
|
|
77
|
-
// Loop over all the children and set the correct padding and positions
|
|
78
|
-
const mappedChildren = React.Children.map(children, child => {
|
|
79
|
-
if (React.isValidElement(child)) {
|
|
80
|
-
if (child.type === InputGroupInput) {
|
|
81
|
-
return React.cloneElement(child, {
|
|
82
|
-
paddingInlineStart: wrapInCalc(offsetsStart),
|
|
83
|
-
paddingInlineEnd: wrapInCalc(offsetsEnd),
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
if (child.type === InputGroupInnerStart) {
|
|
87
|
-
const offset = wrapInCalc(offsetsStart.slice(0, indexStart)) || 0;
|
|
88
|
-
indexStart++;
|
|
89
|
-
return React.cloneElement(child, {
|
|
90
|
-
left: isRTL ? undefined : offset,
|
|
91
|
-
right: isRTL ? offset : undefined,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
if (child.type === InputGroupInnerEnd) {
|
|
95
|
-
const offset = wrapInCalc(offsetsEnd.slice(indexEnd, -1)) || 0;
|
|
96
|
-
indexEnd++;
|
|
97
|
-
return React.cloneElement(child, {
|
|
98
|
-
left: isRTL ? offset : undefined,
|
|
99
|
-
right: isRTL ? undefined : offset,
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return child;
|
|
104
|
-
});
|
|
105
|
-
return (React.createElement(Flex, Object.assign({ ref: ref, as: Element, position: "relative" }, elemProps), mappedChildren));
|
|
106
|
-
},
|
|
119
|
+
modelHook: useInputGroupModel,
|
|
107
120
|
subComponents: {
|
|
108
121
|
/**
|
|
109
122
|
* A component to show inside and at the start of the input. The input's padding will be
|
|
@@ -124,5 +137,58 @@ export const InputGroup = createComponent('div')({
|
|
|
124
137
|
* within the input.
|
|
125
138
|
*/
|
|
126
139
|
InnerEnd: InputGroupInnerEnd,
|
|
140
|
+
/**
|
|
141
|
+
* A component that can be added to an input group that will clear the input. It will only render
|
|
142
|
+
* when the input has a value and will fade when a value is entered.
|
|
143
|
+
*/
|
|
144
|
+
ClearButton: ClearButton,
|
|
127
145
|
},
|
|
146
|
+
})(({ children, ...elemProps }, Element) => {
|
|
147
|
+
const isRTL = useIsRTL();
|
|
148
|
+
const offsetsStart = [];
|
|
149
|
+
const offsetsEnd = [];
|
|
150
|
+
// Collect the widths of the `InnerStart` and `InnerEnd` components into `offsetStart` and
|
|
151
|
+
// `offsetEnd` arrays
|
|
152
|
+
React.Children.forEach(children, child => {
|
|
153
|
+
if (React.isValidElement(child) && child.type === InputGroupInnerStart) {
|
|
154
|
+
const width = child.props.width || space.xl;
|
|
155
|
+
offsetsStart.push(width);
|
|
156
|
+
}
|
|
157
|
+
if (React.isValidElement(child) && child.type === InputGroupInnerEnd) {
|
|
158
|
+
const width = child.props.width || space.xl;
|
|
159
|
+
offsetsEnd.push(width);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
// keep track of the index offsets to make sure we calculate the correct position offset
|
|
163
|
+
let indexStart = 0;
|
|
164
|
+
let indexEnd = 0;
|
|
165
|
+
// Loop over all the children and set the correct padding and positions
|
|
166
|
+
const mappedChildren = React.Children.map(children, child => {
|
|
167
|
+
if (React.isValidElement(child)) {
|
|
168
|
+
if (child.type === InputGroupInput) {
|
|
169
|
+
return React.cloneElement(child, {
|
|
170
|
+
paddingInlineStart: wrapInCalc(offsetsStart),
|
|
171
|
+
paddingInlineEnd: wrapInCalc(offsetsEnd),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
if (child.type === InputGroupInnerStart) {
|
|
175
|
+
const offset = wrapInCalc(offsetsStart.slice(0, indexStart)) || 0;
|
|
176
|
+
indexStart++;
|
|
177
|
+
return React.cloneElement(child, {
|
|
178
|
+
left: isRTL ? undefined : offset,
|
|
179
|
+
right: isRTL ? offset : undefined,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
if (child.type === InputGroupInnerEnd) {
|
|
183
|
+
const offset = wrapInCalc(offsetsEnd.slice(indexEnd, -1)) || 0;
|
|
184
|
+
indexEnd++;
|
|
185
|
+
return React.cloneElement(child, {
|
|
186
|
+
left: isRTL ? offset : undefined,
|
|
187
|
+
right: isRTL ? undefined : offset,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return child;
|
|
192
|
+
});
|
|
193
|
+
return (React.createElement(Flex, Object.assign({ as: Element, position: "relative" }, elemProps), mappedChildren));
|
|
128
194
|
});
|
package/index.ts
CHANGED
package/menu/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ export {useMenuModel} from './lib/useMenuModel';
|
|
|
2
2
|
export {Menu} from './lib/Menu';
|
|
3
3
|
|
|
4
4
|
export {useMenuCard} from './lib/MenuCard';
|
|
5
|
-
export {useMenuItem} from './lib/MenuItem';
|
|
5
|
+
export {useMenuItem, StyledMenuItem} from './lib/MenuItem';
|
|
6
6
|
export {useMenuList} from './lib/MenuList';
|
|
7
7
|
export {useMenuPopper} from './lib/MenuPopper';
|
|
8
8
|
export {useMenuTarget, useMenuTargetContext} from './lib/MenuTarget';
|
package/menu/lib/Menu.tsx
CHANGED
|
@@ -83,7 +83,7 @@ export const Menu = createContainer()({
|
|
|
83
83
|
* return (
|
|
84
84
|
* <Menu model={model}>
|
|
85
85
|
* <Menu.List>
|
|
86
|
-
* {(item) => <Menu.Item
|
|
86
|
+
* {(item) => <Menu.Item data-id={item.id}>{item.text}</Menu.Item>}
|
|
87
87
|
* </Menu.List>
|
|
88
88
|
* </Menu>
|
|
89
89
|
* )
|
|
@@ -92,9 +92,11 @@ export const Menu = createContainer()({
|
|
|
92
92
|
*/
|
|
93
93
|
List: MenuList,
|
|
94
94
|
/**
|
|
95
|
-
* A
|
|
96
|
-
* passed to the optional `onSelect` callback of the
|
|
97
|
-
* HTML. If more complex HTML is provided,
|
|
95
|
+
* A `Menu.Item` has an optional `data-id` prop that identifies the item in the `Menu.List` and
|
|
96
|
+
* will be passed to the optional `onSelect` callback of the `Menu` model. A `Menu.Item` can
|
|
97
|
+
* contain any HTML. If more complex HTML is provided, add `data-text` to the `Menu.Item`
|
|
98
|
+
* component if using the static API. If you're using the dynamic API, pass `getTextValue` to
|
|
99
|
+
* the model.
|
|
98
100
|
*/
|
|
99
101
|
Item: MenuItem,
|
|
100
102
|
Divider: MenuDivider,
|
package/menu/lib/MenuItem.tsx
CHANGED
|
@@ -40,7 +40,7 @@ export interface MenuItemProps {
|
|
|
40
40
|
'aria-disabled'?: boolean;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const
|
|
43
|
+
export const StyledMenuItem = styled(Box.as('button'))<StyledType>(
|
|
44
44
|
({theme}) => {
|
|
45
45
|
return {
|
|
46
46
|
...type.levels.subtext.large,
|
|
@@ -65,7 +65,7 @@ const StyledItem = styled(Box.as('button'))<StyledType>(
|
|
|
65
65
|
fill: iconColors.hover,
|
|
66
66
|
},
|
|
67
67
|
},
|
|
68
|
-
'&:focus': {
|
|
68
|
+
'&:focus, &.focus': {
|
|
69
69
|
outline: 'none',
|
|
70
70
|
backgroundColor: theme.canvas.palette.primary.main,
|
|
71
71
|
color: typeColors.inverse,
|
|
@@ -89,7 +89,7 @@ const StyledItem = styled(Box.as('button'))<StyledType>(
|
|
|
89
89
|
fill: iconColors.hover,
|
|
90
90
|
},
|
|
91
91
|
},
|
|
92
|
-
'&:focus': {
|
|
92
|
+
'&:focus, &.focus': {
|
|
93
93
|
'.wd-icon-background ~ .wd-icon-accent, .wd-icon-background ~ .wd-icon-accent2': {
|
|
94
94
|
fill: iconColors.hover,
|
|
95
95
|
},
|
|
@@ -102,7 +102,7 @@ const StyledItem = styled(Box.as('button'))<StyledType>(
|
|
|
102
102
|
'.wd-icon-fill, .wd-icon-accent, .wd-icon-accent2': {
|
|
103
103
|
fill: iconColors.disabled,
|
|
104
104
|
},
|
|
105
|
-
'&:focus': {
|
|
105
|
+
'&:focus, &.focus': {
|
|
106
106
|
backgroundColor: colors.blueberry200,
|
|
107
107
|
'.wd-icon-background ~ .wd-icon-accent, .wd-icon-background ~ .wd-icon-accent2': {
|
|
108
108
|
fill: iconColors.disabled,
|
|
@@ -133,7 +133,7 @@ const StyledItem = styled(Box.as('button'))<StyledType>(
|
|
|
133
133
|
export const useMenuItem = composeHooks(
|
|
134
134
|
createElemPropsHook(useMenuModel)(
|
|
135
135
|
(model, ref, elemProps: {'data-id': string} = {'data-id': ''}) => {
|
|
136
|
-
const {localRef, elementRef} = useLocalRef(ref);
|
|
136
|
+
const {localRef, elementRef} = useLocalRef(ref as React.Ref<HTMLElement>);
|
|
137
137
|
const id = elemProps['data-id'];
|
|
138
138
|
|
|
139
139
|
// focus on the item with the cursor
|
|
@@ -142,14 +142,11 @@ export const useMenuItem = composeHooks(
|
|
|
142
142
|
if (model.state.cursorId === id) {
|
|
143
143
|
// delay focus changes to allow PopperJS to position
|
|
144
144
|
requestAnimationFrame(() => {
|
|
145
|
-
localRef.current
|
|
145
|
+
localRef.current?.focus();
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
// this is run, the id will be blank
|
|
151
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
152
|
-
}, [id, model.state.cursorId]);
|
|
149
|
+
}, [id, localRef, model.state.cursorId, model.state.mode]);
|
|
153
150
|
|
|
154
151
|
return {
|
|
155
152
|
ref: elementRef,
|
|
@@ -182,9 +179,9 @@ export const MenuItem = createSubcomponent('button')({
|
|
|
182
179
|
})<MenuItemProps>(({children, ...elemProps}, Element) => {
|
|
183
180
|
return (
|
|
184
181
|
<OverflowTooltip placement="left">
|
|
185
|
-
<
|
|
182
|
+
<StyledMenuItem minHeight={space.xl} as={Element} {...elemProps}>
|
|
186
183
|
{children}
|
|
187
|
-
</
|
|
184
|
+
</StyledMenuItem>
|
|
188
185
|
</OverflowTooltip>
|
|
189
186
|
);
|
|
190
187
|
});
|
package/menu/lib/MenuList.tsx
CHANGED
|
@@ -5,25 +5,31 @@ import {
|
|
|
5
5
|
createSubcomponent,
|
|
6
6
|
createElemPropsHook,
|
|
7
7
|
ExtractProps,
|
|
8
|
+
composeHooks,
|
|
8
9
|
} from '@workday/canvas-kit-react/common';
|
|
9
|
-
import {ListBox} from '@workday/canvas-kit-react/collection';
|
|
10
|
-
import {
|
|
10
|
+
import {ListBox, ListProps} from '@workday/canvas-kit-react/collection';
|
|
11
|
+
import {useReturnFocus, useFocusRedirect} from '@workday/canvas-kit-react/popup';
|
|
11
12
|
|
|
12
13
|
import {useMenuModel} from './useMenuModel';
|
|
13
14
|
|
|
14
|
-
export interface MenuListProps<T = any>
|
|
15
|
+
export interface MenuListProps<T = any>
|
|
16
|
+
extends Omit<ExtractProps<typeof ListBox, never>, 'children'> {
|
|
15
17
|
/**
|
|
16
18
|
* The label text of the MenuList.
|
|
17
19
|
*/
|
|
18
|
-
children:
|
|
20
|
+
children: ListProps<T>['children'];
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
export const useMenuList =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
23
|
+
export const useMenuList = composeHooks(
|
|
24
|
+
createElemPropsHook(useMenuModel)(model => {
|
|
25
|
+
return {
|
|
26
|
+
role: 'menu',
|
|
27
|
+
'aria-labelledby': model.state.id,
|
|
28
|
+
};
|
|
29
|
+
}),
|
|
30
|
+
useReturnFocus,
|
|
31
|
+
useFocusRedirect
|
|
32
|
+
);
|
|
27
33
|
|
|
28
34
|
export const MenuList = createSubcomponent('div')({
|
|
29
35
|
displayName: 'Menu.List',
|
|
@@ -2,9 +2,7 @@ import {createModelHook} from '@workday/canvas-kit-react/common';
|
|
|
2
2
|
import {
|
|
3
3
|
useAlwaysCloseOnOutsideClick,
|
|
4
4
|
useCloseOnEscape,
|
|
5
|
-
useFocusRedirect,
|
|
6
5
|
usePopupModel,
|
|
7
|
-
useReturnFocus,
|
|
8
6
|
} from '@workday/canvas-kit-react/popup';
|
|
9
7
|
import {
|
|
10
8
|
multiSelectionManager,
|
|
@@ -18,16 +16,17 @@ export const useMenuModel = createModelHook({
|
|
|
18
16
|
...usePopupModel.defaultConfig,
|
|
19
17
|
/** Determines the default selection manager used as well as if the menu closes when an item is selected */
|
|
20
18
|
mode: 'single' as 'single' | 'multiple',
|
|
19
|
+
// don't virtualize menus by default to avoid oddities with card width
|
|
20
|
+
|
|
21
|
+
shouldVirtualize: false,
|
|
21
22
|
},
|
|
22
23
|
requiredConfig: {
|
|
23
24
|
...useListModel.requiredConfig,
|
|
24
25
|
...usePopupModel.requiredConfig,
|
|
25
26
|
},
|
|
26
27
|
})(config => {
|
|
27
|
-
// don't virtualize menus by default to avoid oddities with card width
|
|
28
28
|
const list = useListModel(
|
|
29
29
|
useListModel.mergeConfig(config, {
|
|
30
|
-
shouldVirtualize: false,
|
|
31
30
|
selection: config.mode === 'single' ? singleSelectionManager : multiSelectionManager,
|
|
32
31
|
})
|
|
33
32
|
);
|
|
@@ -43,8 +42,6 @@ export const useMenuModel = createModelHook({
|
|
|
43
42
|
|
|
44
43
|
useAlwaysCloseOnOutsideClick(popup);
|
|
45
44
|
useCloseOnEscape(popup);
|
|
46
|
-
useReturnFocus(popup);
|
|
47
|
-
useFocusRedirect(popup);
|
|
48
45
|
|
|
49
46
|
const state = {mode: config.mode, ...list.state, ...popup.state};
|
|
50
47
|
|
|
@@ -53,5 +50,5 @@ export const useMenuModel = createModelHook({
|
|
|
53
50
|
...popup.events,
|
|
54
51
|
};
|
|
55
52
|
|
|
56
|
-
return {...list, state, events};
|
|
53
|
+
return {...list, ...popup, state, events};
|
|
57
54
|
});
|
|
@@ -10,8 +10,8 @@ import {usePopupHeading, usePopupModel} from '@workday/canvas-kit-react/popup';
|
|
|
10
10
|
|
|
11
11
|
export const useModalHeading = composeHooks(
|
|
12
12
|
usePopupHeading,
|
|
13
|
-
createElemPropsHook(usePopupModel)((_, ref
|
|
14
|
-
const {elementRef, localRef} = useLocalRef(ref);
|
|
13
|
+
createElemPropsHook(usePopupModel)((_, ref) => {
|
|
14
|
+
const {elementRef, localRef} = useLocalRef(ref as React.Ref<HTMLElement>);
|
|
15
15
|
|
|
16
16
|
useMountLayout(() => {
|
|
17
17
|
if (localRef.current?.parentElement?.querySelector('button')?.textContent) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workday/canvas-kit-react",
|
|
3
|
-
"version": "9.0.0-alpha.
|
|
3
|
+
"version": "9.0.0-alpha.420-next.22+87587db5",
|
|
4
4
|
"description": "The parent module that contains all Workday Canvas Kit React components",
|
|
5
5
|
"author": "Workday, Inc. (https://www.workday.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@emotion/styled": "^11.6.0",
|
|
50
50
|
"@popperjs/core": "^2.5.4",
|
|
51
51
|
"@workday/canvas-colors-web": "^2.0.0",
|
|
52
|
-
"@workday/canvas-kit-popup-stack": "^9.0.0-alpha.
|
|
52
|
+
"@workday/canvas-kit-popup-stack": "^9.0.0-alpha.420-next.22+87587db5",
|
|
53
53
|
"@workday/canvas-system-icons-web": "^3.0.0",
|
|
54
54
|
"@workday/design-assets-types": "^0.2.8",
|
|
55
55
|
"chroma-js": "^2.1.0",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"@workday/canvas-accent-icons-web": "^3.0.0",
|
|
67
67
|
"@workday/canvas-applet-icons-web": "^2.0.0"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "87587db5b8bc197a9b1a544d8851b884848647e9"
|
|
70
70
|
}
|
package/tabs/lib/TabsItem.tsx
CHANGED
|
@@ -170,21 +170,18 @@ export const StyledTabItem = styled(Box.as('button'))<StyledType & Pick<TabsItem
|
|
|
170
170
|
);
|
|
171
171
|
|
|
172
172
|
export const useTabsItem = composeHooks(
|
|
173
|
-
createElemPropsHook(useTabsModel)(
|
|
174
|
-
|
|
175
|
-
const name = elemProps['data-id'] || '';
|
|
173
|
+
createElemPropsHook(useTabsModel)(({state}, _, elemProps: {'data-id'?: string} = {}) => {
|
|
174
|
+
const name = elemProps['data-id'] || '';
|
|
176
175
|
|
|
177
|
-
|
|
176
|
+
const selected = !!elemProps['data-id'] && isSelected(name, state);
|
|
178
177
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
),
|
|
178
|
+
return {
|
|
179
|
+
type: 'button' as const,
|
|
180
|
+
role: 'tab' as const,
|
|
181
|
+
'aria-selected': selected,
|
|
182
|
+
'aria-controls': `tabpanel-${state.id}-${name}`,
|
|
183
|
+
};
|
|
184
|
+
}),
|
|
188
185
|
useListItemSelect,
|
|
189
186
|
useOverflowListItemMeasure,
|
|
190
187
|
useListItemRovingFocus,
|
package/tabs/lib/TabsPanel.tsx
CHANGED
|
@@ -39,11 +39,7 @@ export interface TabPanelProps extends ExtractProps<typeof Box, never> {
|
|
|
39
39
|
const StyledTabsPanel = styled(Box)<StyledType>(hideMouseFocus);
|
|
40
40
|
|
|
41
41
|
export const useTabsPanel = createElemPropsHook(useTabsModel)(
|
|
42
|
-
(
|
|
43
|
-
{state, events},
|
|
44
|
-
_?: React.Ref<HTMLElement>,
|
|
45
|
-
elemProps: {'data-id'?: string; item?: Item<any>} = {}
|
|
46
|
-
) => {
|
|
42
|
+
({state, events}, _, elemProps: {'data-id'?: string; item?: Item<any>} = {}) => {
|
|
47
43
|
const [localId, setLocalId] = React.useState(elemProps['data-id'] || elemProps.item?.id || '');
|
|
48
44
|
|
|
49
45
|
useMountLayout(() => {
|
|
@@ -48,6 +48,7 @@ export const useTabsModel = createModelHook({
|
|
|
48
48
|
menuConfig: {} as typeof useMenuModel.TConfig,
|
|
49
49
|
},
|
|
50
50
|
requiredConfig: useOverflowListModel.requiredConfig,
|
|
51
|
+
contextOverride: useOverflowListModel.Context,
|
|
51
52
|
})(config => {
|
|
52
53
|
const initialSelectedRef = React.useRef(config.initialTab);
|
|
53
54
|
const getId = config.getId || defaultGetId;
|