rsuite 6.0.1 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Accordion/styles/index.scss +3 -0
- package/Animation/styles/_animation.scss +95 -0
- package/Animation/styles/_bounce.scss +36 -0
- package/Animation/styles/_collapse.scss +23 -0
- package/Animation/styles/_fade.scss +10 -0
- package/Animation/styles/_mixin.scss +15 -0
- package/Animation/styles/_slide.scss +34 -0
- package/Animation/styles/_variables.scss +4 -0
- package/Animation/styles/index.scss +8 -0
- package/AutoComplete/styles/index.scss +43 -0
- package/Avatar/styles/index.scss +48 -0
- package/AvatarGroup/styles/index.scss +27 -0
- package/Badge/styles/_variables.scss +48 -0
- package/Badge/styles/index.scss +111 -0
- package/Box/styles/index.scss +1 -0
- package/Breadcrumb/styles/index.scss +50 -0
- package/Button/styles/_mixin.scss +83 -0
- package/Button/styles/_variables.scss +38 -0
- package/Button/styles/index.scss +374 -0
- package/ButtonGroup/styles/index.scss +96 -0
- package/ButtonToolbar/styles/index.scss +9 -0
- package/CHANGELOG.md +20 -0
- package/Calendar/styles/_variables.scss +16 -0
- package/Calendar/styles/index.scss +673 -0
- package/Card/styles/index.scss +63 -0
- package/CardGroup/styles/index.scss +10 -0
- package/Carousel/styles/index.scss +204 -0
- package/CascadeTree/styles/_search.scss +39 -0
- package/CascadeTree/styles/index.scss +83 -0
- package/Cascader/styles/index.scss +5 -0
- package/Center/styles/index.scss +11 -0
- package/CheckPicker/styles/index.scss +23 -0
- package/CheckTree/styles/_variables.scss +5 -0
- package/CheckTree/styles/index.scss +121 -0
- package/CheckTreePicker/styles/index.scss +20 -0
- package/Checkbox/styles/_mixin.scss +5 -0
- package/Checkbox/styles/_variables.scss +4 -0
- package/Checkbox/styles/index.scss +158 -0
- package/CheckboxGroup/styles/index.scss +14 -0
- package/Col/styles/index.scss +2 -0
- package/Container/stories/styles.scss +23 -0
- package/Container/styles/index.scss +16 -0
- package/Content/styles/index.scss +6 -0
- package/DateInput/styles/index.scss +1 -0
- package/DatePicker/styles/_mixin.scss +10 -0
- package/DatePicker/styles/index.scss +171 -0
- package/DateRangeInput/styles/index.scss +1 -0
- package/DateRangePicker/styles/index.scss +151 -0
- package/Divider/styles/index.scss +85 -0
- package/Drawer/styles/_mixin.scss +23 -0
- package/Drawer/styles/_variables.scss +18 -0
- package/Drawer/styles/index.scss +244 -0
- package/Dropdown/styles/_mixin.scss +4 -0
- package/Dropdown/styles/_variables.scss +12 -0
- package/Dropdown/styles/index.scss +334 -0
- package/FlexboxGrid/styles/index.scss +82 -0
- package/Footer/styles/index.scss +5 -0
- package/Form/styles/index.scss +3 -0
- package/FormControl/styles/_variables.scss +4 -0
- package/FormControl/styles/index.scss +82 -0
- package/FormControlLabel/styles/index.scss +7 -0
- package/FormErrorMessage/styles/_animation.scss +43 -0
- package/FormErrorMessage/styles/_variables.scss +7 -0
- package/FormErrorMessage/styles/index.scss +146 -0
- package/FormGroup/styles/index.scss +75 -0
- package/FormHelpText/styles/index.scss +21 -0
- package/FormStack/styles/index.scss +15 -0
- package/Grid/styles/_columns.scss +23 -0
- package/Grid/styles/_mixin.scss +110 -0
- package/Grid/styles/_row.scss +44 -0
- package/Grid/styles/_variables.scss +6 -0
- package/Grid/styles/index.scss +115 -0
- package/Header/styles/index.scss +5 -0
- package/Heading/styles/_variables.scss +19 -0
- package/Heading/styles/index.scss +42 -0
- package/HeadingGroup/styles/index.scss +5 -0
- package/Highlight/styles/index.scss +9 -0
- package/IconButton/styles/index.scss +90 -0
- package/Image/styles/index.scss +36 -0
- package/InlineEdit/styles/index.scss +51 -0
- package/Input/styles/_mixin.scss +39 -0
- package/Input/styles/_variables.scss +27 -0
- package/Input/styles/index.scss +23 -0
- package/InputGroup/styles/index.scss +264 -0
- package/InputNumber/styles/index.scss +1 -0
- package/InputPicker/styles/_mixin.scss +7 -0
- package/InputPicker/styles/index.scss +64 -0
- package/Kbd/styles/_mixin.scss +24 -0
- package/Kbd/styles/_variables.scss +13 -0
- package/Kbd/styles/index.scss +21 -0
- package/Link/styles/index.scss +41 -0
- package/List/styles/index.scss +111 -0
- package/Loader/styles/_mixin.scss +37 -0
- package/Loader/styles/_variables.scss +19 -0
- package/Loader/styles/index.scss +120 -0
- package/Menu/styles/index.scss +109 -0
- package/Message/styles/index.scss +189 -0
- package/Modal/styles/_animation.scss +15 -0
- package/Modal/styles/_variables.scss +16 -0
- package/Modal/styles/index.scss +186 -0
- package/MultiCascadeTree/styles/index.scss +35 -0
- package/MultiCascader/styles/index.scss +3 -0
- package/Nav/styles/index.scss +383 -0
- package/Navbar/styles/index.scss +253 -0
- package/Notification/styles/index.scss +116 -0
- package/NumberInput/styles/_mixin.scss +11 -0
- package/NumberInput/styles/index.scss +78 -0
- package/Pagination/styles/_pagination-group.scss +52 -0
- package/Pagination/styles/index.scss +77 -0
- package/Panel/styles/index.scss +122 -0
- package/PanelGroup/styles/index.scss +34 -0
- package/PasswordInput/styles/index.scss +3 -0
- package/PasswordStrengthMeter/styles/index.scss +41 -0
- package/PinInput/styles/index.scss +93 -0
- package/Placeholder/styles/_mixin.scss +9 -0
- package/Placeholder/styles/index.scss +155 -0
- package/Popover/styles/index.scss +224 -0
- package/Popover/styles/mixins.scss +54 -0
- package/Progress/styles/_animation.scss +69 -0
- package/Progress/styles/_mixins.scss +6 -0
- package/Progress/styles/_progress-line.scss +343 -0
- package/Progress/styles/index.scss +3 -0
- package/ProgressCircle/styles/index.scss +2 -0
- package/ProgressCircle/styles/progress-circle.scss +49 -0
- package/Radio/styles/_mixin.scss +5 -0
- package/Radio/styles/_variables.scss +5 -0
- package/Radio/styles/index.scss +147 -0
- package/RadioGroup/styles/_variables.scss +10 -0
- package/RadioGroup/styles/index.scss +83 -0
- package/RadioTile/styles/index.scss +80 -0
- package/RadioTileGroup/styles/index.scss +1 -0
- package/RangeSlider/styles/index.scss +4 -0
- package/Rate/styles/index.scss +141 -0
- package/Row/styles/index.scss +2 -0
- package/SegmentedControl/styles/_mixin.scss +7 -0
- package/SegmentedControl/styles/_variables.scss +43 -0
- package/SegmentedControl/styles/index.scss +147 -0
- package/SelectPicker/styles/index.scss +44 -0
- package/Sidebar/styles/index.scss +17 -0
- package/Sidenav/styles/index.scss +635 -0
- package/Sidenav/styles/mixin.scss +23 -0
- package/Slider/styles/index.scss +298 -0
- package/Stack/styles/_variables.scss +11 -0
- package/Stack/styles/index.scss +79 -0
- package/Stat/styles/index.scss +126 -0
- package/StatGroup/styles/index.scss +10 -0
- package/Steps/styles/index.scss +222 -0
- package/Table/styles/index.scss +473 -0
- package/Table/styles/mixin.scss +8 -0
- package/Tabs/styles/index.scss +24 -0
- package/Tag/styles/_variables.scss +13 -0
- package/Tag/styles/index.scss +62 -0
- package/TagGroup/styles/index.scss +14 -0
- package/TagInput/styles/index.scss +5 -0
- package/TagPicker/styles/index.scss +141 -0
- package/Text/styles/index.scss +142 -0
- package/Text/styles/variables.scss +9 -0
- package/Textarea/styles/index.scss +9 -0
- package/TimePicker/styles/index.scss +1 -0
- package/TimeRangePicker/styles/index.scss +1 -0
- package/Timeline/stories/styles.scss +29 -0
- package/Timeline/styles/_mixin.scss +13 -0
- package/Timeline/styles/index.scss +187 -0
- package/Toggle/styles/index.scss +284 -0
- package/Tooltip/styles/index.scss +160 -0
- package/Tooltip/styles/mixins.scss +56 -0
- package/Tree/styles/_indent-line.scss +8 -0
- package/Tree/styles/_toggle.scss +32 -0
- package/Tree/styles/_variables.scss +8 -0
- package/Tree/styles/index.scss +184 -0
- package/TreePicker/styles/index.scss +16 -0
- package/Uploader/styles/_mixin.scss +11 -0
- package/Uploader/styles/index.scss +491 -0
- package/VisuallyHidden/styles/index.scss +11 -0
- package/cjs/Breadcrumb/BreadcrumbItem.js +12 -7
- package/cjs/CheckTree/CheckTree.js +3 -0
- package/cjs/CheckTree/CheckTreeView.js +7 -3
- package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +1 -0
- package/cjs/CheckTree/hooks/useTreeCheckState.js +54 -3
- package/cjs/CheckTree/utils.d.ts +9 -2
- package/cjs/CheckTree/utils.js +70 -11
- package/cjs/CheckTreePicker/CheckTreePicker.js +1 -0
- package/cjs/Checkbox/Checkbox.js +2 -1
- package/cjs/Checkbox/hooks/useIndeterminateCheckbox.d.ts +19 -0
- package/cjs/Checkbox/hooks/useIndeterminateCheckbox.js +32 -0
- package/cjs/DateInput/DateInput.js +24 -0
- package/cjs/DateInput/hooks/useKeyboardInputEvent.d.ts +2 -1
- package/cjs/DateInput/hooks/useKeyboardInputEvent.js +14 -0
- package/cjs/DateRangeInput/DateRangeInput.js +24 -0
- package/cjs/Form/Form.js +5 -1
- package/cjs/Rate/Rate.d.ts +8 -0
- package/cjs/Rate/Rate.js +3 -1
- package/cjs/Tree/hooks/useFlattenTree.d.ts +4 -0
- package/cjs/Tree/hooks/useFlattenTree.js +22 -1
- package/cjs/Tree/hooks/useFocusTree.js +19 -1
- package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +1 -0
- package/cjs/Tree/hooks/useVirtualizedTreeData.js +5 -2
- package/cjs/Tree/utils/focusableTree.d.ts +8 -0
- package/cjs/Tree/utils/focusableTree.js +40 -2
- package/cjs/Tree/utils/index.d.ts +1 -1
- package/cjs/Tree/utils/index.js +3 -1
- package/cjs/internals/Picker/utils.d.ts +2 -0
- package/cjs/internals/Picker/utils.js +13 -1
- package/cjs/internals/StyledBox/StyledBox.d.ts +1 -1
- package/cjs/internals/StyledBox/StyledBox.js +2 -2
- package/dist/rsuite.js +34 -23
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Breadcrumb/BreadcrumbItem.js +10 -5
- package/esm/CheckTree/CheckTree.js +3 -0
- package/esm/CheckTree/CheckTreeView.js +7 -3
- package/esm/CheckTree/hooks/useTreeCheckState.d.ts +1 -0
- package/esm/CheckTree/hooks/useTreeCheckState.js +55 -4
- package/esm/CheckTree/utils.d.ts +9 -2
- package/esm/CheckTree/utils.js +71 -12
- package/esm/CheckTreePicker/CheckTreePicker.js +1 -0
- package/esm/Checkbox/Checkbox.js +3 -2
- package/esm/Checkbox/hooks/useIndeterminateCheckbox.d.ts +19 -0
- package/esm/Checkbox/hooks/useIndeterminateCheckbox.js +29 -0
- package/esm/DateInput/DateInput.js +24 -0
- package/esm/DateInput/hooks/useKeyboardInputEvent.d.ts +2 -1
- package/esm/DateInput/hooks/useKeyboardInputEvent.js +14 -0
- package/esm/DateRangeInput/DateRangeInput.js +24 -0
- package/esm/Form/Form.js +5 -1
- package/esm/Rate/Rate.d.ts +8 -0
- package/esm/Rate/Rate.js +3 -1
- package/esm/Tree/hooks/useFlattenTree.d.ts +4 -0
- package/esm/Tree/hooks/useFlattenTree.js +22 -1
- package/esm/Tree/hooks/useFocusTree.js +20 -2
- package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +1 -0
- package/esm/Tree/hooks/useVirtualizedTreeData.js +5 -2
- package/esm/Tree/utils/focusableTree.d.ts +8 -0
- package/esm/Tree/utils/focusableTree.js +36 -0
- package/esm/Tree/utils/index.d.ts +1 -1
- package/esm/Tree/utils/index.js +1 -1
- package/esm/internals/Picker/utils.d.ts +2 -0
- package/esm/internals/Picker/utils.js +13 -1
- package/esm/internals/StyledBox/StyledBox.d.ts +1 -1
- package/esm/internals/StyledBox/StyledBox.js +2 -2
- package/internals/Box/styles/index.scss +31 -0
- package/internals/Burger/styles/index.scss +72 -0
- package/internals/CloseButton/styles/index.scss +14 -0
- package/internals/Picker/styles/_mixin.scss +219 -0
- package/internals/Picker/styles/_variables.scss +9 -0
- package/internals/Picker/styles/index.scss +476 -0
- package/internals/Ripple/styles/_mixins.scss +10 -0
- package/internals/Ripple/styles/index.scss +40 -0
- package/internals/ScrollView/styles/index.scss +77 -0
- package/internals/SearchBox/styles/index.scss +7 -0
- package/package.json +4 -4
- package/styles/_base.scss +37 -0
- package/styles/_css-reset.scss +345 -0
- package/styles/_themes.scss +132 -0
- package/styles/_variables.scss +48 -0
- package/styles/color-modes/_dark.scss +458 -0
- package/styles/color-modes/_high-contrast.scss +469 -0
- package/styles/color-modes/_light.scss +475 -0
- package/styles/colors/_colors-base.scss +39 -0
- package/styles/colors/_dark.scss +114 -0
- package/styles/colors/_high-contrast.scss +114 -0
- package/styles/colors/_light.scss +115 -0
- package/styles/colors/_palette.scss +413 -0
- package/styles/components.scss +114 -0
- package/styles/index.scss +2 -0
- package/styles/mixins/_color-modes.scss +20 -0
- package/styles/mixins/_combobox.scss +6 -0
- package/styles/mixins/_hacks.scss +33 -0
- package/styles/mixins/_input.scss +30 -0
- package/styles/mixins/_listbox.scss +70 -0
- package/styles/mixins/_menu.scss +12 -0
- package/styles/mixins/_utilities.scss +130 -0
- package/toaster/styles/animation.scss +54 -0
- package/toaster/styles/index.scss +109 -0
- package/useToaster/styles/index.scss +1 -0
|
@@ -28,6 +28,10 @@ interface UseFlattenTreeOptions {
|
|
|
28
28
|
* An array of item values that should not be selectable.
|
|
29
29
|
*/
|
|
30
30
|
uncheckableItemValues?: any[];
|
|
31
|
+
/**
|
|
32
|
+
* An array of item values that should be disabled.
|
|
33
|
+
*/
|
|
34
|
+
disabledItemValues?: any[];
|
|
31
35
|
/**
|
|
32
36
|
* A callback function that will be called when the tree nodes change.
|
|
33
37
|
* It receives a map of the tree nodes.
|
|
@@ -21,6 +21,7 @@ function useFlattenTree(data, options) {
|
|
|
21
21
|
valueKey,
|
|
22
22
|
childrenKey,
|
|
23
23
|
uncheckableItemValues = [],
|
|
24
|
+
disabledItemValues = [],
|
|
24
25
|
cascade,
|
|
25
26
|
multiple,
|
|
26
27
|
callback
|
|
@@ -32,6 +33,26 @@ function useFlattenTree(data, options) {
|
|
|
32
33
|
// Reset values to false
|
|
33
34
|
Object.keys(flattenedNodes.current).forEach(refKey => {
|
|
34
35
|
const node = flattenedNodes.current[refKey];
|
|
36
|
+
|
|
37
|
+
// Check if this node or any of its parents is disabled
|
|
38
|
+
const isNodeDisabled = disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(node[valueKey], disabledValue));
|
|
39
|
+
let hasDisabledParent = false;
|
|
40
|
+
let currentNode = node;
|
|
41
|
+
while (currentNode.parent && !hasDisabledParent) {
|
|
42
|
+
const parentRefKey = currentNode.parent.refKey;
|
|
43
|
+
if (parentRefKey && flattenedNodes.current[parentRefKey]) {
|
|
44
|
+
const parentValue = flattenedNodes.current[parentRefKey][valueKey];
|
|
45
|
+
if (disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(parentValue, disabledValue))) {
|
|
46
|
+
hasDisabledParent = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
currentNode = currentNode.parent;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Skip disabled nodes - they should not be affected by cascade or value changes
|
|
53
|
+
if (isNodeDisabled || hasDisabledParent) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
35
56
|
if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {
|
|
36
57
|
node.check = flattenedNodes.current[node.parent.refKey].check;
|
|
37
58
|
} else {
|
|
@@ -43,7 +64,7 @@ function useFlattenTree(data, options) {
|
|
|
43
64
|
}
|
|
44
65
|
});
|
|
45
66
|
});
|
|
46
|
-
}, [cascade, uncheckableItemValues, valueKey]);
|
|
67
|
+
}, [cascade, uncheckableItemValues, disabledItemValues, valueKey]);
|
|
47
68
|
const flattenTreeData = (0, _react.useCallback)((treeData, parent, layer = 1) => {
|
|
48
69
|
if (!Array.isArray(treeData) || treeData.length === 0) {
|
|
49
70
|
return [];
|
|
@@ -104,12 +104,30 @@ function useFocusTree(props) {
|
|
|
104
104
|
onFocusItem
|
|
105
105
|
});
|
|
106
106
|
});
|
|
107
|
+
const handleHomeKey = (0, _hooks.useEventCallback)(() => {
|
|
108
|
+
const focusProps = getFocusProps();
|
|
109
|
+
const focusedValue = (0, _utils.focusFirstItem)(focusProps);
|
|
110
|
+
if (focusedValue) {
|
|
111
|
+
setFocusItemValue(focusedValue);
|
|
112
|
+
onFocused === null || onFocused === void 0 || onFocused(focusedValue);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
const handleEndKey = (0, _hooks.useEventCallback)(() => {
|
|
116
|
+
const focusProps = getFocusProps();
|
|
117
|
+
const focusedValue = (0, _utils.focusLastItem)(focusProps);
|
|
118
|
+
if (focusedValue) {
|
|
119
|
+
setFocusItemValue(focusedValue);
|
|
120
|
+
onFocused === null || onFocused === void 0 || onFocused(focusedValue);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
107
123
|
const onTreeKeydown = (0, _hooks.useEventCallback)(event => {
|
|
108
124
|
(0, _Picker.onMenuKeyDown)(event, {
|
|
109
125
|
down: () => handleFocusItem(_constants.KEY_VALUES.DOWN),
|
|
110
126
|
up: () => handleFocusItem(_constants.KEY_VALUES.UP),
|
|
111
127
|
left: rtl ? handleRightArrowEvent : handleLeftArrowEvent,
|
|
112
|
-
right: rtl ? handleLeftArrowEvent : handleRightArrowEvent
|
|
128
|
+
right: rtl ? handleLeftArrowEvent : handleRightArrowEvent,
|
|
129
|
+
home: handleHomeKey,
|
|
130
|
+
end: handleEndKey
|
|
113
131
|
});
|
|
114
132
|
});
|
|
115
133
|
const focusTreeFirstNode = (0, _hooks.useEventCallback)(() => {
|
|
@@ -3,5 +3,6 @@ declare function useVirtualizedTreeData(nodes: TreeNodeMap, data: TreeNode[], op
|
|
|
3
3
|
expandItemValues: (string | number)[];
|
|
4
4
|
cascade?: boolean;
|
|
5
5
|
searchKeyword?: string;
|
|
6
|
+
disabledItemValues?: (string | number)[];
|
|
6
7
|
}): () => TreeNode[];
|
|
7
8
|
export default useVirtualizedTreeData;
|
|
@@ -35,7 +35,8 @@ function useVirtualizedTreeData(nodes, data, options) {
|
|
|
35
35
|
const {
|
|
36
36
|
cascade,
|
|
37
37
|
searchKeyword,
|
|
38
|
-
expandItemValues
|
|
38
|
+
expandItemValues,
|
|
39
|
+
disabledItemValues = []
|
|
39
40
|
} = options;
|
|
40
41
|
return (0, _flattenTree.UNSAFE_flattenTree)(data, childrenKey, node => {
|
|
41
42
|
let formatted = {};
|
|
@@ -59,7 +60,9 @@ function useVirtualizedTreeData(nodes, data, options) {
|
|
|
59
60
|
const checkState = !(0, _isUndefined.default)(cascade) ? (0, _utils.getNodeCheckState)(curNode, {
|
|
60
61
|
cascade,
|
|
61
62
|
nodes,
|
|
62
|
-
childrenKey
|
|
63
|
+
childrenKey,
|
|
64
|
+
disabledItemValues,
|
|
65
|
+
valueKey
|
|
63
66
|
}) : undefined;
|
|
64
67
|
formatted = {
|
|
65
68
|
...node,
|
|
@@ -35,6 +35,14 @@ export declare const focusNextItem: (props: FocusItemProps) => any;
|
|
|
35
35
|
* Focuses on the previous item in a tree.
|
|
36
36
|
*/
|
|
37
37
|
export declare const focusPreviousItem: (props: FocusItemProps) => any;
|
|
38
|
+
/**
|
|
39
|
+
* Focuses on the first item in a tree.
|
|
40
|
+
*/
|
|
41
|
+
export declare const focusFirstItem: (props: FocusItemProps) => any;
|
|
42
|
+
/**
|
|
43
|
+
* Focuses on the last item in a tree.
|
|
44
|
+
*/
|
|
45
|
+
export declare const focusLastItem: (props: FocusItemProps) => any;
|
|
38
46
|
interface ScrollToActiveTreeNodeProps {
|
|
39
47
|
value: any;
|
|
40
48
|
valueKey: string;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
4
|
exports.__esModule = true;
|
|
5
|
-
exports.getFocusableItems = exports.getActiveItem = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusCurrentItem = void 0;
|
|
5
|
+
exports.getFocusableItems = exports.getActiveItem = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusLastItem = exports.focusFirstItem = exports.focusCurrentItem = void 0;
|
|
6
6
|
exports.scrollToActiveTreeNode = scrollToActiveTreeNode;
|
|
7
7
|
var _utils = require("../../internals/utils");
|
|
8
8
|
// Active tree node selector
|
|
@@ -118,9 +118,47 @@ const focusPreviousItem = props => {
|
|
|
118
118
|
};
|
|
119
119
|
|
|
120
120
|
/**
|
|
121
|
-
*
|
|
121
|
+
* Focuses on the first item in a tree.
|
|
122
122
|
*/
|
|
123
123
|
exports.focusPreviousItem = focusPreviousItem;
|
|
124
|
+
const focusFirstItem = props => {
|
|
125
|
+
const {
|
|
126
|
+
focusableItems,
|
|
127
|
+
treeNodesRefs,
|
|
128
|
+
valueKey
|
|
129
|
+
} = props;
|
|
130
|
+
if (focusableItems.length === 0) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const firstItem = focusableItems[0];
|
|
134
|
+
const value = firstItem[valueKey];
|
|
135
|
+
focusTreeNode(firstItem.refKey, treeNodesRefs);
|
|
136
|
+
return value;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Focuses on the last item in a tree.
|
|
141
|
+
*/
|
|
142
|
+
exports.focusFirstItem = focusFirstItem;
|
|
143
|
+
const focusLastItem = props => {
|
|
144
|
+
const {
|
|
145
|
+
focusableItems,
|
|
146
|
+
treeNodesRefs,
|
|
147
|
+
valueKey
|
|
148
|
+
} = props;
|
|
149
|
+
if (focusableItems.length === 0) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const lastItem = focusableItems[focusableItems.length - 1];
|
|
153
|
+
const value = lastItem[valueKey];
|
|
154
|
+
focusTreeNode(lastItem.refKey, treeNodesRefs);
|
|
155
|
+
return value;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Returns the index of the first visible node in the tree that matches the given value.
|
|
160
|
+
*/
|
|
161
|
+
exports.focusLastItem = focusLastItem;
|
|
124
162
|
const getScrollToIndex = (nodes, value, valueKey) => {
|
|
125
163
|
return nodes.filter(n => n.visible).findIndex(item => item[valueKey] === value);
|
|
126
164
|
};
|
|
@@ -7,5 +7,5 @@ export { formatNodeRefKey } from './formatNodeRefKey';
|
|
|
7
7
|
export { indentTreeNode } from './indentTreeNode';
|
|
8
8
|
export { isSearching } from './isSearching';
|
|
9
9
|
export { isExpand } from './isExpand';
|
|
10
|
-
export { getFocusableItems, getActiveItem, focusNextItem, focusPreviousItem, focusTreeNode, focusCurrentItem } from './focusableTree';
|
|
10
|
+
export { getFocusableItems, getActiveItem, focusNextItem, focusPreviousItem, focusFirstItem, focusLastItem, focusTreeNode, focusCurrentItem } from './focusableTree';
|
|
11
11
|
export { handleLeftArrow, handleRightArrow } from './treeKeyboardInteractions';
|
package/cjs/Tree/utils/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
4
|
exports.__esModule = true;
|
|
5
|
-
exports.isSearching = exports.isExpand = exports.indentTreeNode = exports.hasVisibleChildren = exports.handleRightArrow = exports.handleLeftArrow = exports.getTreeActiveNode = exports.getNodeParentKeys = exports.getFocusableItems = exports.getExpandItemValues = exports.getActiveItem = exports.formatNodeRefKey = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusCurrentItem = exports.flattenTree = exports.WalkTreeStrategy = exports.UNSAFE_flattenTree = void 0;
|
|
5
|
+
exports.isSearching = exports.isExpand = exports.indentTreeNode = exports.hasVisibleChildren = exports.handleRightArrow = exports.handleLeftArrow = exports.getTreeActiveNode = exports.getNodeParentKeys = exports.getFocusableItems = exports.getExpandItemValues = exports.getActiveItem = exports.formatNodeRefKey = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusLastItem = exports.focusFirstItem = exports.focusCurrentItem = exports.flattenTree = exports.WalkTreeStrategy = exports.UNSAFE_flattenTree = void 0;
|
|
6
6
|
var _getNodeParentKeys = require("./getNodeParentKeys");
|
|
7
7
|
exports.getNodeParentKeys = _getNodeParentKeys.getNodeParentKeys;
|
|
8
8
|
var _flattenTree = require("./flattenTree");
|
|
@@ -28,6 +28,8 @@ exports.getFocusableItems = _focusableTree.getFocusableItems;
|
|
|
28
28
|
exports.getActiveItem = _focusableTree.getActiveItem;
|
|
29
29
|
exports.focusNextItem = _focusableTree.focusNextItem;
|
|
30
30
|
exports.focusPreviousItem = _focusableTree.focusPreviousItem;
|
|
31
|
+
exports.focusFirstItem = _focusableTree.focusFirstItem;
|
|
32
|
+
exports.focusLastItem = _focusableTree.focusLastItem;
|
|
31
33
|
exports.focusTreeNode = _focusableTree.focusTreeNode;
|
|
32
34
|
exports.focusCurrentItem = _focusableTree.focusCurrentItem;
|
|
33
35
|
var _treeKeyboardInteractions = require("./treeKeyboardInteractions");
|
|
@@ -13,6 +13,8 @@ export interface KeyboardEvents {
|
|
|
13
13
|
esc?: React.KeyboardEventHandler;
|
|
14
14
|
right?: React.KeyboardEventHandler;
|
|
15
15
|
left?: React.KeyboardEventHandler;
|
|
16
|
+
home?: React.KeyboardEventHandler;
|
|
17
|
+
end?: React.KeyboardEventHandler;
|
|
16
18
|
}
|
|
17
19
|
/**
|
|
18
20
|
* Handling keyboard events...
|
|
@@ -54,7 +54,9 @@ function onMenuKeyDown(event, events) {
|
|
|
54
54
|
del,
|
|
55
55
|
esc,
|
|
56
56
|
right,
|
|
57
|
-
left
|
|
57
|
+
left,
|
|
58
|
+
home,
|
|
59
|
+
end
|
|
58
60
|
} = events;
|
|
59
61
|
switch (event.key) {
|
|
60
62
|
// down
|
|
@@ -89,6 +91,16 @@ function onMenuKeyDown(event, events) {
|
|
|
89
91
|
case _constants.KEY_VALUES.RIGHT:
|
|
90
92
|
right === null || right === void 0 || right(event);
|
|
91
93
|
break;
|
|
94
|
+
// home
|
|
95
|
+
case _constants.KEY_VALUES.HOME:
|
|
96
|
+
home === null || home === void 0 || home(event);
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
break;
|
|
99
|
+
// end
|
|
100
|
+
case _constants.KEY_VALUES.END:
|
|
101
|
+
end === null || end === void 0 || end(event);
|
|
102
|
+
event.preventDefault();
|
|
103
|
+
break;
|
|
92
104
|
default:
|
|
93
105
|
}
|
|
94
106
|
}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { BoxProps } from '../Box';
|
|
3
3
|
import type { Size, Color } from '../types';
|
|
4
4
|
export interface StyledBoxProps extends BoxProps {
|
|
5
|
-
/**
|
|
5
|
+
/** Component identifier for CSS variable generation */
|
|
6
6
|
name: string;
|
|
7
7
|
/** Size of the Box */
|
|
8
8
|
size?: Size | number | string;
|
|
@@ -12,12 +12,12 @@ const StyledBox = (0, _utils.forwardRef)((props, ref) => {
|
|
|
12
12
|
const {
|
|
13
13
|
as,
|
|
14
14
|
color,
|
|
15
|
-
name,
|
|
15
|
+
name: componentName,
|
|
16
16
|
style,
|
|
17
17
|
size,
|
|
18
18
|
...rest
|
|
19
19
|
} = props;
|
|
20
|
-
const boxStyle = (0, _utils.mergeStyles)(style, (0, _utils.getSizeStyle)(size,
|
|
20
|
+
const boxStyle = (0, _utils.mergeStyles)(style, (0, _utils.getSizeStyle)(size, componentName), (0, _utils.getColorStyle)(color, componentName));
|
|
21
21
|
return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
|
|
22
22
|
as: as,
|
|
23
23
|
ref: ref,
|