@workday/canvas-kit-react 10.0.0-alpha.540-next.0 → 10.0.0-alpha.546-next.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.
- package/collection/index.ts +1 -0
- package/collection/lib/useBaseListModel.tsx +3 -3
- package/collection/lib/useListItemRegister.tsx +1 -1
- package/collection/lib/useListRenderItem.tsx +2 -2
- package/combobox/index.ts +11 -4
- package/combobox/lib/Combobox.tsx +1 -1
- package/combobox/lib/ComboboxCard.tsx +1 -1
- package/combobox/lib/ComboboxInput.tsx +2 -90
- package/combobox/lib/ComboboxMenu.tsx +4 -3
- package/combobox/lib/ComboboxMenuItem.tsx +9 -8
- package/combobox/lib/ComboboxMenuList.tsx +1 -1
- package/combobox/lib/ComboboxPopper.tsx +20 -0
- package/combobox/lib/hooks/index.ts +9 -0
- package/combobox/lib/hooks/useComboboxInput.ts +88 -0
- package/combobox/lib/hooks/useComboboxKeyboardTypeAhead.ts +127 -0
- package/combobox/lib/hooks/useComboboxListKeyboardHandler.ts +23 -0
- package/combobox/lib/{useComboboxModel.tsx → hooks/useComboboxModel.tsx} +6 -2
- package/combobox/lib/hooks/useComboboxMoveCursorToSelected.tsx +27 -0
- package/combobox/lib/hooks/useComboboxResetCursorToSelected.tsx +18 -0
- package/combobox/lib/hooks/useSetPopupWidth.ts +16 -0
- package/common/lib/utils/components.ts +284 -274
- package/common/lib/utils/models.ts +67 -84
- package/dist/commonjs/collection/index.d.ts +1 -0
- package/dist/commonjs/collection/index.d.ts.map +1 -1
- package/dist/commonjs/collection/index.js +3 -1
- package/dist/commonjs/collection/lib/useBaseListModel.d.ts +1 -1
- package/dist/commonjs/collection/lib/useBaseListModel.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useBaseListModel.js +2 -2
- package/dist/commonjs/collection/lib/useListItemRegister.js +2 -2
- package/dist/commonjs/collection/lib/useListRenderItem.js +2 -2
- package/dist/commonjs/combobox/index.d.ts +1 -4
- package/dist/commonjs/combobox/index.d.ts.map +1 -1
- package/dist/commonjs/combobox/index.js +11 -9
- package/dist/commonjs/combobox/lib/Combobox.d.ts +9 -3
- package/dist/commonjs/combobox/lib/Combobox.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/Combobox.js +2 -2
- package/dist/commonjs/combobox/lib/ComboboxCard.js +3 -3
- package/dist/commonjs/combobox/lib/ComboboxInput.d.ts +1 -106
- package/dist/commonjs/combobox/lib/ComboboxInput.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/ComboboxInput.js +4 -71
- package/dist/commonjs/combobox/lib/ComboboxMenu.d.ts +9 -3
- package/dist/commonjs/combobox/lib/ComboboxMenu.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/ComboboxMenu.js +5 -4
- package/dist/commonjs/combobox/lib/ComboboxMenuItem.d.ts +7 -1
- package/dist/commonjs/combobox/lib/ComboboxMenuItem.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/ComboboxMenuItem.js +7 -7
- package/dist/commonjs/combobox/lib/ComboboxMenuList.js +2 -2
- package/dist/commonjs/combobox/lib/ComboboxPopper.d.ts +97 -0
- package/dist/commonjs/combobox/lib/ComboboxPopper.d.ts.map +1 -0
- package/dist/commonjs/{select/lib/SelectOption.js → combobox/lib/ComboboxPopper.js} +12 -8
- package/dist/commonjs/combobox/lib/hooks/index.d.ts +10 -0
- package/dist/commonjs/combobox/lib/hooks/index.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/index.js +21 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxInput.d.ts +107 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxInput.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxInput.js +74 -0
- package/dist/{es6/combobox/lib → commonjs/combobox/lib/hooks}/useComboboxInputOpenWithArrowKeys.d.ts +6 -6
- package/dist/commonjs/combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts +101 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxKeyboardTypeAhead.js +109 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts +84 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.js +22 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxLoader.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/{useComboboxModel.d.ts → hooks/useComboboxModel.d.ts} +196 -196
- package/dist/commonjs/combobox/lib/hooks/useComboboxModel.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/{useComboboxModel.js → hooks/useComboboxModel.js} +3 -2
- package/dist/commonjs/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts +82 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxMoveCursorToSelected.js +33 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts +82 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useComboboxResetCursorToSelected.js +23 -0
- package/dist/commonjs/combobox/lib/hooks/useSetPopupWidth.d.ts +82 -0
- package/dist/commonjs/combobox/lib/hooks/useSetPopupWidth.d.ts.map +1 -0
- package/dist/commonjs/combobox/lib/hooks/useSetPopupWidth.js +22 -0
- package/dist/commonjs/common/lib/utils/components.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/models.d.ts +4 -4
- package/dist/commonjs/common/lib/utils/models.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/models.js +7 -8
- package/dist/commonjs/form-field/lib/FormField.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/FormField.js +3 -2
- package/dist/commonjs/menu/lib/MenuPopper.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/MenuPopper.js +10 -1
- package/dist/commonjs/popup/lib/PopupPopper.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/PopupPopper.js +10 -1
- package/dist/commonjs/select/index.d.ts +1 -1
- package/dist/commonjs/select/index.d.ts.map +1 -1
- package/dist/commonjs/select/index.js +1 -1
- package/dist/commonjs/select/lib/Select.d.ts +2634 -18
- package/dist/commonjs/select/lib/Select.d.ts.map +1 -1
- package/dist/commonjs/select/lib/Select.js +141 -84
- package/dist/commonjs/select/lib/hooks/index.d.ts +4 -0
- package/dist/commonjs/select/lib/hooks/index.d.ts.map +1 -0
- package/dist/commonjs/select/lib/hooks/index.js +15 -0
- package/dist/commonjs/select/lib/hooks/useSelectCard.d.ts +83 -0
- package/dist/commonjs/select/lib/hooks/useSelectCard.d.ts.map +1 -0
- package/dist/commonjs/select/lib/hooks/useSelectCard.js +13 -0
- package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts +112 -0
- package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts.map +1 -0
- package/dist/commonjs/select/lib/hooks/useSelectInput.js +49 -0
- package/dist/commonjs/select/lib/hooks/useSelectModel.d.ts +1779 -0
- package/dist/commonjs/select/lib/hooks/useSelectModel.d.ts.map +1 -0
- package/dist/commonjs/select/lib/hooks/useSelectModel.js +32 -0
- package/dist/es6/collection/index.d.ts +1 -0
- package/dist/es6/collection/index.d.ts.map +1 -1
- package/dist/es6/collection/index.js +1 -0
- package/dist/es6/collection/lib/useBaseListModel.d.ts +1 -1
- package/dist/es6/collection/lib/useBaseListModel.d.ts.map +1 -1
- package/dist/es6/collection/lib/useBaseListModel.js +2 -2
- package/dist/es6/collection/lib/useListItemRegister.js +2 -2
- package/dist/es6/collection/lib/useListRenderItem.js +2 -2
- package/dist/es6/combobox/index.d.ts +1 -4
- package/dist/es6/combobox/index.d.ts.map +1 -1
- package/dist/es6/combobox/index.js +1 -4
- package/dist/es6/combobox/lib/Combobox.d.ts +9 -3
- package/dist/es6/combobox/lib/Combobox.d.ts.map +1 -1
- package/dist/es6/combobox/lib/Combobox.js +1 -1
- package/dist/es6/combobox/lib/ComboboxCard.js +1 -1
- package/dist/es6/combobox/lib/ComboboxInput.d.ts +1 -106
- package/dist/es6/combobox/lib/ComboboxInput.d.ts.map +1 -1
- package/dist/es6/combobox/lib/ComboboxInput.js +2 -69
- package/dist/es6/combobox/lib/ComboboxMenu.d.ts +9 -3
- package/dist/es6/combobox/lib/ComboboxMenu.d.ts.map +1 -1
- package/dist/es6/combobox/lib/ComboboxMenu.js +4 -3
- package/dist/es6/combobox/lib/ComboboxMenuItem.d.ts +7 -1
- package/dist/es6/combobox/lib/ComboboxMenuItem.d.ts.map +1 -1
- package/dist/es6/combobox/lib/ComboboxMenuItem.js +7 -7
- package/dist/es6/combobox/lib/ComboboxMenuList.js +1 -1
- package/dist/es6/combobox/lib/ComboboxPopper.d.ts +97 -0
- package/dist/es6/combobox/lib/ComboboxPopper.d.ts.map +1 -0
- package/dist/es6/combobox/lib/ComboboxPopper.js +12 -0
- package/dist/es6/combobox/lib/hooks/index.d.ts +10 -0
- package/dist/es6/combobox/lib/hooks/index.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/index.js +9 -0
- package/dist/es6/combobox/lib/hooks/useComboboxInput.d.ts +107 -0
- package/dist/es6/combobox/lib/hooks/useComboboxInput.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useComboboxInput.js +68 -0
- package/dist/{commonjs/combobox/lib → es6/combobox/lib/hooks}/useComboboxInputOpenWithArrowKeys.d.ts +6 -6
- package/dist/es6/combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts +101 -0
- package/dist/es6/combobox/lib/hooks/useComboboxKeyboardTypeAhead.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useComboboxKeyboardTypeAhead.js +103 -0
- package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts +84 -0
- package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.js +19 -0
- package/dist/es6/combobox/lib/hooks/useComboboxLoader.d.ts.map +1 -0
- package/dist/es6/combobox/lib/{useComboboxModel.d.ts → hooks/useComboboxModel.d.ts} +196 -196
- package/dist/es6/combobox/lib/hooks/useComboboxModel.d.ts.map +1 -0
- package/dist/es6/combobox/lib/{useComboboxModel.js → hooks/useComboboxModel.js} +3 -2
- package/dist/es6/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts +82 -0
- package/dist/es6/combobox/lib/hooks/useComboboxMoveCursorToSelected.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useComboboxMoveCursorToSelected.js +27 -0
- package/dist/es6/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts +82 -0
- package/dist/es6/combobox/lib/hooks/useComboboxResetCursorToSelected.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useComboboxResetCursorToSelected.js +17 -0
- package/dist/es6/combobox/lib/hooks/useSetPopupWidth.d.ts +82 -0
- package/dist/es6/combobox/lib/hooks/useSetPopupWidth.d.ts.map +1 -0
- package/dist/es6/combobox/lib/hooks/useSetPopupWidth.js +16 -0
- package/dist/es6/common/lib/utils/components.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/models.d.ts +4 -4
- package/dist/es6/common/lib/utils/models.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/models.js +7 -8
- package/dist/es6/form-field/lib/FormField.d.ts.map +1 -1
- package/dist/es6/form-field/lib/FormField.js +3 -2
- package/dist/es6/menu/lib/MenuPopper.d.ts.map +1 -1
- package/dist/es6/menu/lib/MenuPopper.js +10 -1
- package/dist/es6/popup/lib/PopupPopper.d.ts.map +1 -1
- package/dist/es6/popup/lib/PopupPopper.js +10 -1
- package/dist/es6/select/index.d.ts +1 -1
- package/dist/es6/select/index.d.ts.map +1 -1
- package/dist/es6/select/index.js +1 -1
- package/dist/es6/select/lib/Select.d.ts +2634 -18
- package/dist/es6/select/lib/Select.d.ts.map +1 -1
- package/dist/es6/select/lib/Select.js +139 -66
- package/dist/es6/select/lib/hooks/index.d.ts +4 -0
- package/dist/es6/select/lib/hooks/index.d.ts.map +1 -0
- package/dist/es6/select/lib/hooks/index.js +3 -0
- package/dist/es6/select/lib/hooks/useSelectCard.d.ts +83 -0
- package/dist/es6/select/lib/hooks/useSelectCard.d.ts.map +1 -0
- package/dist/es6/select/lib/hooks/useSelectCard.js +10 -0
- package/dist/es6/select/lib/hooks/useSelectInput.d.ts +112 -0
- package/dist/es6/select/lib/hooks/useSelectInput.d.ts.map +1 -0
- package/dist/es6/select/lib/hooks/useSelectInput.js +46 -0
- package/dist/es6/select/lib/hooks/useSelectModel.d.ts +1779 -0
- package/dist/es6/select/lib/hooks/useSelectModel.d.ts.map +1 -0
- package/dist/es6/select/lib/hooks/useSelectModel.js +29 -0
- package/form-field/lib/FormField.tsx +8 -2
- package/menu/lib/MenuPopper.tsx +14 -1
- package/package.json +4 -4
- package/popup/lib/Popper.tsx +1 -1
- package/popup/lib/PopupPopper.tsx +17 -1
- package/select/index.ts +1 -1
- package/select/lib/Select.tsx +175 -111
- package/select/lib/hooks/index.ts +3 -0
- package/select/lib/hooks/useSelectCard.ts +11 -0
- package/select/lib/hooks/useSelectInput.ts +74 -0
- package/select/lib/hooks/useSelectModel.tsx +30 -0
- package/dist/commonjs/combobox/lib/useComboboxInputOpenWithArrowKeys.d.ts.map +0 -1
- package/dist/commonjs/combobox/lib/useComboboxLoader.d.ts.map +0 -1
- package/dist/commonjs/combobox/lib/useComboboxModel.d.ts.map +0 -1
- package/dist/commonjs/select/lib/SelectOption.d.ts +0 -20
- package/dist/commonjs/select/lib/SelectOption.d.ts.map +0 -1
- package/dist/es6/combobox/lib/useComboboxInputOpenWithArrowKeys.d.ts.map +0 -1
- package/dist/es6/combobox/lib/useComboboxLoader.d.ts.map +0 -1
- package/dist/es6/combobox/lib/useComboboxModel.d.ts.map +0 -1
- package/dist/es6/select/lib/SelectOption.d.ts +0 -20
- package/dist/es6/select/lib/SelectOption.d.ts.map +0 -1
- package/dist/es6/select/lib/SelectOption.js +0 -7
- package/select/lib/SelectOption.tsx +0 -33
- /package/combobox/lib/{useComboboxInputOpenWithArrowKeys.ts → hooks/useComboboxInputOpenWithArrowKeys.ts} +0 -0
- /package/combobox/lib/{useComboboxLoader.ts → hooks/useComboboxLoader.ts} +0 -0
- /package/dist/commonjs/combobox/lib/{useComboboxInputOpenWithArrowKeys.js → hooks/useComboboxInputOpenWithArrowKeys.js} +0 -0
- /package/dist/commonjs/combobox/lib/{useComboboxLoader.d.ts → hooks/useComboboxLoader.d.ts} +0 -0
- /package/dist/commonjs/combobox/lib/{useComboboxLoader.js → hooks/useComboboxLoader.js} +0 -0
- /package/dist/es6/combobox/lib/{useComboboxInputOpenWithArrowKeys.js → hooks/useComboboxInputOpenWithArrowKeys.js} +0 -0
- /package/dist/es6/combobox/lib/{useComboboxLoader.d.ts → hooks/useComboboxLoader.d.ts} +0 -0
- /package/dist/es6/combobox/lib/{useComboboxLoader.js → hooks/useComboboxLoader.js} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useComboboxInput = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const common_1 = require("@workday/canvas-kit-react/common");
|
|
9
|
+
const popup_1 = require("@workday/canvas-kit-react/popup");
|
|
10
|
+
const collection_1 = require("@workday/canvas-kit-react/collection");
|
|
11
|
+
const index_1 = require("./index");
|
|
12
|
+
/**
|
|
13
|
+
* `useComboboxInput` Adds all attributes necessary to start with a {@link ComboboxInput Combobox.Input}. It opens the
|
|
14
|
+
* menu with arrow keys, uses {@link useListActiveDescendant}, and handles keyboard arrows to
|
|
15
|
+
* navigate items of the menu. You may also compose this hook to add more specific behaviors for
|
|
16
|
+
* your {@link ComboboxInput Combobox.Input}.
|
|
17
|
+
*/
|
|
18
|
+
exports.useComboboxInput = common_1.composeHooks(common_1.createElemPropsHook(index_1.useComboboxModel)((model, ref) => {
|
|
19
|
+
const elementRef = common_1.useForkRef(ref, model.state.inputRef);
|
|
20
|
+
react_1.default.useEffect(() => {
|
|
21
|
+
var _a;
|
|
22
|
+
if (model.state.cursorId && model.state.visibility === 'visible') {
|
|
23
|
+
const item = model.navigation.getItem(model.state.cursorId, model);
|
|
24
|
+
if (model.state.isVirtualized && item) {
|
|
25
|
+
model.state.UNSTABLE_virtual.scrollToIndex(item.index);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const listboxId = (_a = model.state.inputRef.current) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-controls');
|
|
29
|
+
if (listboxId) {
|
|
30
|
+
const menuItem = document.querySelector(`[id="${listboxId}"] [data-id="${model.state.cursorId}"]`);
|
|
31
|
+
if (menuItem) {
|
|
32
|
+
requestAnimationFrame(() => {
|
|
33
|
+
menuItem.scrollIntoView({ block: 'nearest' });
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// we only want to run this effect if the cursor, visibility and selectedIds change and not any other time
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
+
}, [model.state.cursorId, model.state.selectedIds, model.state.visibility]);
|
|
42
|
+
return {
|
|
43
|
+
onKeyDown(event) {
|
|
44
|
+
if (event.key === 'Enter' && !event.metaKey && model.state.visibility === 'visible') {
|
|
45
|
+
const element = document.querySelector(`[data-id="${model.state.cursorId}"]`);
|
|
46
|
+
if (element && (element === null || element === void 0 ? void 0 : element.getAttribute('aria-disabled')) !== 'true') {
|
|
47
|
+
model.events.select({ id: model.state.cursorId });
|
|
48
|
+
if (model.state.mode === 'single') {
|
|
49
|
+
model.events.hide(event);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// We don't want to submit forms while the combobox is open
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
onBlur(event) {
|
|
57
|
+
model.events.hide(event);
|
|
58
|
+
},
|
|
59
|
+
onChange: model.onChange,
|
|
60
|
+
onClick(event) {
|
|
61
|
+
if (model.state.visibility === 'hidden') {
|
|
62
|
+
model.events.setWidth(event.currentTarget.clientWidth);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
value: model.state.value,
|
|
66
|
+
role: 'combobox',
|
|
67
|
+
'aria-haspopup': true,
|
|
68
|
+
'aria-expanded': model.state.visibility === 'visible',
|
|
69
|
+
'aria-autocomplete': 'list',
|
|
70
|
+
'aria-controls': `${model.state.id}-list`,
|
|
71
|
+
id: model.state.id,
|
|
72
|
+
ref: elementRef,
|
|
73
|
+
};
|
|
74
|
+
}), index_1.useSetPopupWidth, index_1.useComboboxInputOpenWithArrowKeys, collection_1.useListActiveDescendant, index_1.useComboboxListKeyboardHandler, popup_1.usePopupTarget);
|
package/dist/{es6/combobox/lib → commonjs/combobox/lib/hooks}/useComboboxInputOpenWithArrowKeys.d.ts
RENAMED
|
@@ -20,10 +20,10 @@ export declare const useComboboxInputOpenWithArrowKeys: import("@workday/canvas-
|
|
|
20
20
|
readonly current: number;
|
|
21
21
|
};
|
|
22
22
|
UNSTABLE_virtual: {
|
|
23
|
-
virtualItems: import("
|
|
23
|
+
virtualItems: import("../../../collection/lib/react-virtual").VirtualItem[];
|
|
24
24
|
totalSize: number;
|
|
25
|
-
scrollToOffset: (index: number, options?: import("
|
|
26
|
-
scrollToIndex: (index: number, options?: import("
|
|
25
|
+
scrollToOffset: (index: number, options?: import("../../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
|
|
26
|
+
scrollToIndex: (index: number, options?: import("../../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
|
|
27
27
|
measure: () => void;
|
|
28
28
|
};
|
|
29
29
|
UNSTABLE_defaultItemHeight: number;
|
|
@@ -32,7 +32,7 @@ export declare const useComboboxInputOpenWithArrowKeys: import("@workday/canvas-
|
|
|
32
32
|
indexRef: import("react").MutableRefObject<number>;
|
|
33
33
|
nonInteractiveIds: string[];
|
|
34
34
|
isVirtualized: boolean;
|
|
35
|
-
items: import("
|
|
35
|
+
items: import("../../..").Item<any>[];
|
|
36
36
|
mode: "multiple" | "single";
|
|
37
37
|
value: string | undefined;
|
|
38
38
|
inputRef: import("react").RefObject<HTMLInputElement>;
|
|
@@ -75,8 +75,8 @@ export declare const useComboboxInputOpenWithArrowKeys: import("@workday/canvas-
|
|
|
75
75
|
}): void;
|
|
76
76
|
};
|
|
77
77
|
onChange: (event: import("react").ChangeEvent<HTMLInputElement>) => void;
|
|
78
|
-
selection: import("
|
|
79
|
-
navigation: import("
|
|
78
|
+
selection: import("../../../collection/lib/useSelectionListModel").SelectionManager;
|
|
79
|
+
navigation: import("../../../collection/lib/useCursorListModel").NavigationManager;
|
|
80
80
|
getId: (item: any) => string;
|
|
81
81
|
}, {
|
|
82
82
|
onKeyDown(event: React.KeyboardEvent): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComboboxInputOpenWithArrowKeys.d.ts","sourceRoot":"","sources":["../../../../../combobox/lib/hooks/useComboboxInputOpenWithArrowKeys.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAEzB,mBAAmB;EAUtC,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* `useComboboxKeyboardTypeAhead` handles type-ahead. It will try and find a matching item in the list. It also returns the keys types so far.
|
|
4
|
+
* This hook is best used when composing hooks and in conjunction with `useComboboxInput`.
|
|
5
|
+
*
|
|
6
|
+
* ```tsx
|
|
7
|
+
* // Example for a `Select` input
|
|
8
|
+
* export const useSelectInput = composeHooks(
|
|
9
|
+
* createElemPropsHook(useComboboxModel)((model, ref, elemProps: {keySofar?: string} = {}) => {
|
|
10
|
+
* return {
|
|
11
|
+
* onKeyDown(event: React.KeyboardEvent) {
|
|
12
|
+
* // onKeyDown logic ...
|
|
13
|
+
* },
|
|
14
|
+
* } as const;
|
|
15
|
+
* }),
|
|
16
|
+
* useComboboxKeyboardTypeAhead,
|
|
17
|
+
* useComboboxInput
|
|
18
|
+
* );
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const useComboboxKeyboardTypeAhead: import("@workday/canvas-kit-react/common").BehaviorHook<{
|
|
22
|
+
state: {
|
|
23
|
+
stackRef: React.RefObject<HTMLDivElement>;
|
|
24
|
+
targetRef: React.RefObject<HTMLButtonElement>;
|
|
25
|
+
initialFocusRef: React.RefObject<any> | undefined;
|
|
26
|
+
returnFocusRef: React.RefObject<any> | undefined;
|
|
27
|
+
placement: import("@popperjs/core").Placement;
|
|
28
|
+
id: string;
|
|
29
|
+
visibility: "hidden" | "visible";
|
|
30
|
+
selectedIds: string[] | "all";
|
|
31
|
+
unselectedIds: string[];
|
|
32
|
+
cursorId: string;
|
|
33
|
+
columnCount: number;
|
|
34
|
+
pageSizeRef: React.MutableRefObject<number>;
|
|
35
|
+
cursorIndexRef: {
|
|
36
|
+
readonly current: number;
|
|
37
|
+
};
|
|
38
|
+
UNSTABLE_virtual: {
|
|
39
|
+
virtualItems: import("../../../collection/lib/react-virtual").VirtualItem[];
|
|
40
|
+
totalSize: number;
|
|
41
|
+
scrollToOffset: (index: number, options?: import("../../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
|
|
42
|
+
scrollToIndex: (index: number, options?: import("../../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
|
|
43
|
+
measure: () => void;
|
|
44
|
+
};
|
|
45
|
+
UNSTABLE_defaultItemHeight: number;
|
|
46
|
+
containerRef: React.RefObject<HTMLDivElement>;
|
|
47
|
+
orientation: "horizontal" | "vertical";
|
|
48
|
+
indexRef: React.MutableRefObject<number>;
|
|
49
|
+
nonInteractiveIds: string[];
|
|
50
|
+
isVirtualized: boolean;
|
|
51
|
+
items: import("../../..").Item<any>[];
|
|
52
|
+
mode: "multiple" | "single";
|
|
53
|
+
value: string | undefined;
|
|
54
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
55
|
+
width: number;
|
|
56
|
+
};
|
|
57
|
+
events: {
|
|
58
|
+
setWidth(width: number): void;
|
|
59
|
+
updatePlacement(data: {
|
|
60
|
+
placement: import("@popperjs/core").Placement;
|
|
61
|
+
}): void;
|
|
62
|
+
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
|
|
63
|
+
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
|
|
64
|
+
select(data: {
|
|
65
|
+
id: string;
|
|
66
|
+
}): void;
|
|
67
|
+
selectAll(): void;
|
|
68
|
+
unselectAll(): void;
|
|
69
|
+
goTo(data: {
|
|
70
|
+
id: string;
|
|
71
|
+
}): void;
|
|
72
|
+
goToNext(): void;
|
|
73
|
+
goToPrevious(): void;
|
|
74
|
+
goToPreviousRow(): void;
|
|
75
|
+
goToNextRow(): void;
|
|
76
|
+
goToFirst(): void;
|
|
77
|
+
goToLast(): void;
|
|
78
|
+
goToFirstOfRow(): void;
|
|
79
|
+
goToLastOfRow(): void;
|
|
80
|
+
goToNextPage(): void;
|
|
81
|
+
goToPreviousPage(): void;
|
|
82
|
+
registerItem(data: {
|
|
83
|
+
item: any;
|
|
84
|
+
textValue: string;
|
|
85
|
+
}): void;
|
|
86
|
+
unregisterItem(data: {
|
|
87
|
+
id: string;
|
|
88
|
+
}): void;
|
|
89
|
+
updateItemHeight(data: {
|
|
90
|
+
value: number;
|
|
91
|
+
}): void;
|
|
92
|
+
};
|
|
93
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
94
|
+
selection: import("../../../collection/lib/useSelectionListModel").SelectionManager;
|
|
95
|
+
navigation: import("../../../collection/lib/useCursorListModel").NavigationManager;
|
|
96
|
+
getId: (item: any) => string;
|
|
97
|
+
}, {
|
|
98
|
+
onKeyDown(event: React.KeyboardEvent): void;
|
|
99
|
+
keySofar: string;
|
|
100
|
+
}>;
|
|
101
|
+
//# sourceMappingURL=useComboboxKeyboardTypeAhead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComboboxKeyboardTypeAhead.d.ts","sourceRoot":"","sources":["../../../../../combobox/lib/hooks/useComboboxKeyboardTypeAhead.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA0EpB,mBAAmB;;EA6BtC,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useComboboxKeyboardTypeAhead = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const common_1 = require("@workday/canvas-kit-react/common");
|
|
9
|
+
const useComboboxModel_1 = require("./useComboboxModel");
|
|
10
|
+
/**
|
|
11
|
+
* `useComboboxKeyboardTypeAhead` handles type-ahead. It will try and find a matching item in the list. It also returns the keys types so far.
|
|
12
|
+
* This hook is best used when composing hooks and in conjunction with `useComboboxInput`.
|
|
13
|
+
*
|
|
14
|
+
* ```tsx
|
|
15
|
+
* // Example for a `Select` input
|
|
16
|
+
* export const useSelectInput = composeHooks(
|
|
17
|
+
* createElemPropsHook(useComboboxModel)((model, ref, elemProps: {keySofar?: string} = {}) => {
|
|
18
|
+
* return {
|
|
19
|
+
* onKeyDown(event: React.KeyboardEvent) {
|
|
20
|
+
* // onKeyDown logic ...
|
|
21
|
+
* },
|
|
22
|
+
* } as const;
|
|
23
|
+
* }),
|
|
24
|
+
* useComboboxKeyboardTypeAhead,
|
|
25
|
+
* useComboboxInput
|
|
26
|
+
* );
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
exports.useComboboxKeyboardTypeAhead = common_1.createElemPropsHook(useComboboxModel_1.useComboboxModel)(model => {
|
|
30
|
+
const keySofar = react_1.default.useRef('');
|
|
31
|
+
const timer = react_1.default.useRef();
|
|
32
|
+
const [keyTypedSofar, setKeyTypedSofar] = react_1.default.useState(keySofar.current);
|
|
33
|
+
const startClearKeysSoFarTimer = () => {
|
|
34
|
+
if (timer.current) {
|
|
35
|
+
clearTimeout(timer.current);
|
|
36
|
+
}
|
|
37
|
+
timer.current = setTimeout(() => {
|
|
38
|
+
keySofar.current = '';
|
|
39
|
+
setKeyTypedSofar(keySofar.current);
|
|
40
|
+
}, 500);
|
|
41
|
+
};
|
|
42
|
+
// Based on the the key typed, this will try and find an index in the array where it matches the string
|
|
43
|
+
// so if a user types `de` it will try and find an index in the array whose id matches `de` like denver
|
|
44
|
+
const getIndexByStartString = (startIndex, startString, endIndex = model.state.items.length, ignoreDisabled = true) => {
|
|
45
|
+
for (let i = startIndex; i < endIndex; i++) {
|
|
46
|
+
const label = model.state.items[i].textValue.toLowerCase();
|
|
47
|
+
if (label.startsWith(startString.toLowerCase()) &&
|
|
48
|
+
(!ignoreDisabled ||
|
|
49
|
+
(ignoreDisabled && !model.state.nonInteractiveIds.includes(model.state.items[i].id)))) {
|
|
50
|
+
return i;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return -1;
|
|
54
|
+
};
|
|
55
|
+
const currentItem = model.navigation.getItem(model.state.cursorId, model);
|
|
56
|
+
const cursorFocusedIndex = currentItem.index;
|
|
57
|
+
const handleKeyboardTypeAhead = (key, numOptions) => {
|
|
58
|
+
// If the starting point is beyond the list of options, reset it
|
|
59
|
+
// to the beginning of the list
|
|
60
|
+
const startNumber = keySofar.current.length === 0 ? cursorFocusedIndex + 1 : cursorFocusedIndex;
|
|
61
|
+
const start = startNumber === numOptions ? 0 : startNumber;
|
|
62
|
+
// Keeps track of the current key types and adds to it
|
|
63
|
+
// if you type `de` vs `d` for denver
|
|
64
|
+
keySofar.current += key;
|
|
65
|
+
setKeyTypedSofar(keySofar.current);
|
|
66
|
+
startClearKeysSoFarTimer();
|
|
67
|
+
// First, look for a match from start to end
|
|
68
|
+
let matchIndex = getIndexByStartString(start, keySofar.current);
|
|
69
|
+
getIndexByStartString(start, keySofar.current);
|
|
70
|
+
// If a match isn't found between start and end, wrap the search
|
|
71
|
+
// around and search again from the beginning (0) to start
|
|
72
|
+
if (matchIndex === -1) {
|
|
73
|
+
matchIndex = getIndexByStartString(0, keySofar.current, start);
|
|
74
|
+
}
|
|
75
|
+
// A match was found...
|
|
76
|
+
if (matchIndex > -1) {
|
|
77
|
+
model.events.goTo({ id: model.state.items[matchIndex].id });
|
|
78
|
+
if (model.state.visibility === 'hidden') {
|
|
79
|
+
// If the menu is closed, fire the change event
|
|
80
|
+
// go to that item and select based on its id
|
|
81
|
+
model.events.select({ id: model.state.items[matchIndex].id });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
onKeyDown(event) {
|
|
87
|
+
// Call type ahead excluding backspace
|
|
88
|
+
if (event.key.length === 1 && event.key.match(/\S/)) {
|
|
89
|
+
handleKeyboardTypeAhead(event.key, model.state.items.length);
|
|
90
|
+
}
|
|
91
|
+
// If spacebar is typed
|
|
92
|
+
if ((event.key === 'Spacebar' || event.key === ' ') &&
|
|
93
|
+
model.state.visibility === 'visible' &&
|
|
94
|
+
keySofar.current !== '') {
|
|
95
|
+
// If the user is in the middle of typing a string, treat
|
|
96
|
+
// space key as type-ahead rather than option selection
|
|
97
|
+
handleKeyboardTypeAhead(' ', model.state.items.length);
|
|
98
|
+
}
|
|
99
|
+
if ((event.key === 'Spacebar' || event.key === ' ') &&
|
|
100
|
+
model.state.visibility === 'hidden' &&
|
|
101
|
+
keySofar.current !== '') {
|
|
102
|
+
// If the user is in the middle of typing a string, treat
|
|
103
|
+
// space key as type-ahead rather than option selection
|
|
104
|
+
handleKeyboardTypeAhead(' ', model.state.items.length);
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
keySofar: keyTypedSofar,
|
|
108
|
+
};
|
|
109
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* `useComboboxListKeyboardHandler` handle calling keyboard events like ArrowUp and ArrowDown only when the menu is visible.
|
|
4
|
+
*/
|
|
5
|
+
export declare const useComboboxListKeyboardHandler: import("@workday/canvas-kit-react/common").BehaviorHook<{
|
|
6
|
+
state: {
|
|
7
|
+
stackRef: React.RefObject<HTMLDivElement>;
|
|
8
|
+
targetRef: React.RefObject<HTMLButtonElement>;
|
|
9
|
+
initialFocusRef: React.RefObject<any> | undefined;
|
|
10
|
+
returnFocusRef: React.RefObject<any> | undefined;
|
|
11
|
+
placement: import("@popperjs/core").Placement;
|
|
12
|
+
id: string;
|
|
13
|
+
visibility: "hidden" | "visible";
|
|
14
|
+
selectedIds: string[] | "all";
|
|
15
|
+
unselectedIds: string[];
|
|
16
|
+
cursorId: string;
|
|
17
|
+
columnCount: number;
|
|
18
|
+
pageSizeRef: React.MutableRefObject<number>;
|
|
19
|
+
cursorIndexRef: {
|
|
20
|
+
readonly current: number;
|
|
21
|
+
};
|
|
22
|
+
UNSTABLE_virtual: {
|
|
23
|
+
virtualItems: import("../../../collection/lib/react-virtual").VirtualItem[];
|
|
24
|
+
totalSize: number;
|
|
25
|
+
scrollToOffset: (index: number, options?: import("../../../collection/lib/react-virtual").ScrollToOffsetOptions | undefined) => void;
|
|
26
|
+
scrollToIndex: (index: number, options?: import("../../../collection/lib/react-virtual").ScrollToIndexOptions | undefined) => void;
|
|
27
|
+
measure: () => void;
|
|
28
|
+
};
|
|
29
|
+
UNSTABLE_defaultItemHeight: number;
|
|
30
|
+
containerRef: React.RefObject<HTMLDivElement>;
|
|
31
|
+
orientation: "horizontal" | "vertical";
|
|
32
|
+
indexRef: React.MutableRefObject<number>;
|
|
33
|
+
nonInteractiveIds: string[];
|
|
34
|
+
isVirtualized: boolean;
|
|
35
|
+
items: import("@workday/canvas-kit-react/collection").Item<any>[];
|
|
36
|
+
mode: "multiple" | "single";
|
|
37
|
+
value: string | undefined;
|
|
38
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
39
|
+
width: number;
|
|
40
|
+
};
|
|
41
|
+
events: {
|
|
42
|
+
setWidth(width: number): void;
|
|
43
|
+
updatePlacement(data: {
|
|
44
|
+
placement: import("@popperjs/core").Placement;
|
|
45
|
+
}): void;
|
|
46
|
+
show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
|
|
47
|
+
hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
|
|
48
|
+
select(data: {
|
|
49
|
+
id: string;
|
|
50
|
+
}): void;
|
|
51
|
+
selectAll(): void;
|
|
52
|
+
unselectAll(): void;
|
|
53
|
+
goTo(data: {
|
|
54
|
+
id: string;
|
|
55
|
+
}): void;
|
|
56
|
+
goToNext(): void;
|
|
57
|
+
goToPrevious(): void;
|
|
58
|
+
goToPreviousRow(): void;
|
|
59
|
+
goToNextRow(): void;
|
|
60
|
+
goToFirst(): void;
|
|
61
|
+
goToLast(): void;
|
|
62
|
+
goToFirstOfRow(): void;
|
|
63
|
+
goToLastOfRow(): void;
|
|
64
|
+
goToNextPage(): void;
|
|
65
|
+
goToPreviousPage(): void;
|
|
66
|
+
registerItem(data: {
|
|
67
|
+
item: any;
|
|
68
|
+
textValue: string;
|
|
69
|
+
}): void;
|
|
70
|
+
unregisterItem(data: {
|
|
71
|
+
id: string;
|
|
72
|
+
}): void;
|
|
73
|
+
updateItemHeight(data: {
|
|
74
|
+
value: number;
|
|
75
|
+
}): void;
|
|
76
|
+
};
|
|
77
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
78
|
+
selection: import("../../../collection/lib/useSelectionListModel").SelectionManager;
|
|
79
|
+
navigation: import("../../../collection/lib/useCursorListModel").NavigationManager;
|
|
80
|
+
getId: (item: any) => string;
|
|
81
|
+
}, {
|
|
82
|
+
onKeyDown(event: React.KeyboardEvent): void;
|
|
83
|
+
}>;
|
|
84
|
+
//# sourceMappingURL=useComboboxListKeyboardHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComboboxListKeyboardHandler.d.ts","sourceRoot":"","sources":["../../../../../combobox/lib/hooks/useComboboxListKeyboardHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAItB,mBAAmB;EAStC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useComboboxListKeyboardHandler = void 0;
|
|
4
|
+
const common_1 = require("@workday/canvas-kit-react/common");
|
|
5
|
+
const collection_1 = require("@workday/canvas-kit-react/collection");
|
|
6
|
+
const index_1 = require("./index");
|
|
7
|
+
/**
|
|
8
|
+
* `useComboboxListKeyboardHandler` handle calling keyboard events like ArrowUp and ArrowDown only when the menu is visible.
|
|
9
|
+
*/
|
|
10
|
+
exports.useComboboxListKeyboardHandler = common_1.createElemPropsHook(index_1.useComboboxModel)(model => {
|
|
11
|
+
const isRTL = common_1.useIsRTL();
|
|
12
|
+
return {
|
|
13
|
+
onKeyDown(event) {
|
|
14
|
+
if (model.state.visibility === 'visible') {
|
|
15
|
+
const handled = collection_1.keyboardEventToCursorEvents(event, model, isRTL);
|
|
16
|
+
if (handled) {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComboboxLoader.d.ts","sourceRoot":"","sources":["../../../../../combobox/lib/hooks/useComboboxLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,sCAAsC,CAAC;AAuBnE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,aAqBtC,CAAC"}
|