rsuite 5.19.0 → 5.19.1
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/CHANGELOG.md +19 -0
- package/cjs/Animation/Transition.d.ts +2 -2
- package/cjs/Cascader/Cascader.js +10 -5
- package/cjs/Cascader/utils.d.ts +1 -0
- package/cjs/Cascader/utils.js +11 -1
- package/cjs/CheckTreePicker/CheckTreePicker.js +32 -36
- package/cjs/CheckTreePicker/utils.d.ts +2 -2
- package/cjs/CheckTreePicker/utils.js +9 -10
- package/cjs/DOMHelper/index.d.ts +3 -2
- package/cjs/DatePicker/PredefinedRanges.js +5 -0
- package/cjs/DateRangePicker/DateRangePicker.js +9 -7
- package/cjs/MultiCascader/MultiCascader.js +10 -5
- package/cjs/MultiCascader/utils.d.ts +1 -0
- package/cjs/MultiCascader/utils.js +10 -0
- package/cjs/TreePicker/TreePicker.d.ts +0 -1
- package/cjs/TreePicker/TreePicker.js +13 -14
- package/cjs/locales/fr_FR.d.ts +105 -0
- package/cjs/locales/fr_FR.js +84 -0
- package/cjs/locales/index.d.ts +1 -0
- package/cjs/locales/index.js +6 -2
- package/cjs/utils/treeUtils.d.ts +7 -1
- package/cjs/utils/treeUtils.js +24 -5
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.js +14 -14
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Animation/Transition.d.ts +2 -2
- package/esm/Cascader/Cascader.js +10 -5
- package/esm/Cascader/utils.d.ts +1 -0
- package/esm/Cascader/utils.js +11 -1
- package/esm/CheckTreePicker/CheckTreePicker.js +34 -37
- package/esm/CheckTreePicker/utils.d.ts +2 -2
- package/esm/CheckTreePicker/utils.js +11 -12
- package/esm/DOMHelper/index.d.ts +3 -2
- package/esm/DatePicker/PredefinedRanges.js +5 -0
- package/esm/DateRangePicker/DateRangePicker.js +9 -7
- package/esm/MultiCascader/MultiCascader.js +10 -5
- package/esm/MultiCascader/utils.d.ts +1 -0
- package/esm/MultiCascader/utils.js +10 -0
- package/esm/TreePicker/TreePicker.d.ts +0 -1
- package/esm/TreePicker/TreePicker.js +13 -13
- package/esm/locales/fr_FR.d.ts +105 -0
- package/esm/locales/fr_FR.js +74 -0
- package/esm/locales/index.d.ts +1 -0
- package/esm/locales/index.js +2 -1
- package/esm/utils/treeUtils.d.ts +7 -1
- package/esm/utils/treeUtils.js +22 -5
- package/locales/fr_FR/package.json +7 -0
- package/package.json +5 -5
|
@@ -36,7 +36,7 @@ interface TransitionState {
|
|
|
36
36
|
}
|
|
37
37
|
export declare const transitionPropTypes: {
|
|
38
38
|
animation: PropTypes.Requireable<boolean>;
|
|
39
|
-
children: PropTypes.Requireable<string | number | boolean |
|
|
39
|
+
children: PropTypes.Requireable<string | number | boolean | ((...args: any[]) => any) | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
40
40
|
className: PropTypes.Requireable<string>;
|
|
41
41
|
in: PropTypes.Requireable<boolean>;
|
|
42
42
|
unmountOnExit: PropTypes.Requireable<boolean>;
|
|
@@ -59,7 +59,7 @@ declare type EventToken = {
|
|
|
59
59
|
declare class Transition extends React.Component<TransitionProps, TransitionState> {
|
|
60
60
|
static propTypes: {
|
|
61
61
|
animation: PropTypes.Requireable<boolean>;
|
|
62
|
-
children: PropTypes.Requireable<string | number | boolean |
|
|
62
|
+
children: PropTypes.Requireable<string | number | boolean | ((...args: any[]) => any) | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
63
63
|
className: PropTypes.Requireable<string>;
|
|
64
64
|
in: PropTypes.Requireable<boolean>;
|
|
65
65
|
unmountOnExit: PropTypes.Requireable<boolean>;
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -94,6 +94,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
94
94
|
valueToPaths = _usePaths.valueToPaths,
|
|
95
95
|
columnData = _usePaths.columnData,
|
|
96
96
|
addColumn = _usePaths.addColumn,
|
|
97
|
+
romoveColumnByIndex = _usePaths.romoveColumnByIndex,
|
|
97
98
|
setValueToPaths = _usePaths.setValueToPaths,
|
|
98
99
|
setColumnData = _usePaths.setColumnData,
|
|
99
100
|
setSelectedPaths = _usePaths.setSelectedPaths,
|
|
@@ -257,9 +258,10 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
257
258
|
var handleSelect = function handleSelect(node, cascadePaths, isLeafNode, event) {
|
|
258
259
|
var _node$childrenKey, _node$childrenKey2, _triggerRef$current2;
|
|
259
260
|
|
|
260
|
-
var nextValue = node[valueKey];
|
|
261
261
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
262
|
-
setSelectedPaths(cascadePaths);
|
|
262
|
+
setSelectedPaths(cascadePaths);
|
|
263
|
+
var nextValue = node[valueKey];
|
|
264
|
+
var columnIndex = cascadePaths.length; // Lazy load node's children
|
|
263
265
|
|
|
264
266
|
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
|
|
265
267
|
node.loading = true;
|
|
@@ -271,16 +273,19 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
271
273
|
node[childrenKey] = data;
|
|
272
274
|
|
|
273
275
|
if (targetRef.current) {
|
|
274
|
-
addColumn(data,
|
|
276
|
+
addColumn(data, columnIndex);
|
|
275
277
|
}
|
|
276
278
|
});
|
|
277
279
|
} else {
|
|
278
280
|
node.loading = false;
|
|
279
281
|
node[childrenKey] = children;
|
|
280
|
-
addColumn(children,
|
|
282
|
+
addColumn(children, columnIndex);
|
|
281
283
|
}
|
|
282
284
|
} else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
|
|
283
|
-
addColumn(node[childrenKey],
|
|
285
|
+
addColumn(node[childrenKey], columnIndex);
|
|
286
|
+
} else {
|
|
287
|
+
// Removes subsequent columns of the current column when the clicked node is a leaf node.
|
|
288
|
+
romoveColumnByIndex(columnIndex);
|
|
284
289
|
}
|
|
285
290
|
|
|
286
291
|
if (isLeafNode) {
|
package/esm/Cascader/utils.d.ts
CHANGED
|
@@ -14,4 +14,5 @@ export declare function usePaths(props: CascaderProps): {
|
|
|
14
14
|
setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[][]>>;
|
|
15
15
|
setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[]>>;
|
|
16
16
|
addColumn: (column: ItemDataType[], index: number) => void;
|
|
17
|
+
romoveColumnByIndex: (index: number) => void;
|
|
17
18
|
};
|
package/esm/Cascader/utils.js
CHANGED
|
@@ -111,6 +111,15 @@ export function usePaths(props) {
|
|
|
111
111
|
function addColumn(column, index) {
|
|
112
112
|
setColumnData([].concat(slice(columnData, 0, index), [column]));
|
|
113
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Remove subsequent columns of the specified column
|
|
116
|
+
* @param index
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
function romoveColumnByIndex(index) {
|
|
121
|
+
setColumnData([].concat(slice(columnData, 0, index)));
|
|
122
|
+
}
|
|
114
123
|
/**
|
|
115
124
|
* Enforce update of columns and paths.
|
|
116
125
|
* @param nextValue Selected value
|
|
@@ -146,6 +155,7 @@ export function usePaths(props) {
|
|
|
146
155
|
setValueToPaths: setValueToPaths,
|
|
147
156
|
setColumnData: setColumnData,
|
|
148
157
|
setSelectedPaths: setSelectedPaths,
|
|
149
|
-
addColumn: addColumn
|
|
158
|
+
addColumn: addColumn,
|
|
159
|
+
romoveColumnByIndex: romoveColumnByIndex
|
|
150
160
|
};
|
|
151
161
|
}
|
|
@@ -6,18 +6,17 @@ import _omit from "lodash/omit";
|
|
|
6
6
|
import _isFunction from "lodash/isFunction";
|
|
7
7
|
import _pick from "lodash/pick";
|
|
8
8
|
import _isNil from "lodash/isNil";
|
|
9
|
-
import React, { useState, useRef, useEffect, useCallback, useContext } from 'react';
|
|
9
|
+
import React, { useState, useRef, useEffect, useCallback, useContext, useMemo } from 'react';
|
|
10
10
|
import PropTypes from 'prop-types';
|
|
11
11
|
import classNames from 'classnames';
|
|
12
12
|
import { List, AutoSizer } from '../Picker/VirtualizedList';
|
|
13
13
|
import CheckTreeNode from './CheckTreeNode';
|
|
14
14
|
import TreeContext from '../Tree/TreeContext';
|
|
15
15
|
import { getTreeNodeIndent } from '../utils/treeUtils';
|
|
16
|
-
import { createChainedFunction, useCustom, useClassNames, useControlled, KEY_VALUES, mergeRefs
|
|
16
|
+
import { createChainedFunction, useCustom, useClassNames, useControlled, KEY_VALUES, mergeRefs } from '../utils';
|
|
17
17
|
import { PickerToggle, onMenuKeyDown as _onMenuKeyDown, PickerOverlay, SearchBar, SelectedElement, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, usePublicMethods, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes, useToggleKeyDownEvent } from '../Picker';
|
|
18
18
|
import { isEveryChildChecked, isSomeNodeHasChildren, isAllSiblingNodeUncheckable, isEveryFirstLevelNodeUncheckable, getFormattedTree, getDisabledState, getCheckTreePickerDefaultValue, getSelectedItems, isNodeUncheckable } from './utils';
|
|
19
19
|
import { hasVisibleChildren, getExpandWhenSearching, useTreeSearch, useTreeNodeRefs, getDefaultExpandItemValues, useFlattenTreeData, focusNextItem, getFocusableItems, focusPreviousItem, toggleExpand, getActiveItem, useGetTreeNodeChildren, focusToActiveTreeNode, focusTreeNode, leftArrowHandler, rightArrowHandler, isSearching } from '../utils/treeUtils';
|
|
20
|
-
import { maxTreeHeight } from '../TreePicker/TreePicker';
|
|
21
20
|
var emptyArray = [];
|
|
22
21
|
var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
23
22
|
var _props$as = props.as,
|
|
@@ -60,6 +59,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
60
59
|
defaultExpandItemValues = _props$defaultExpandI === void 0 ? emptyArray : _props$defaultExpandI,
|
|
61
60
|
_props$height = props.height,
|
|
62
61
|
height = _props$height === void 0 ? 360 : _props$height,
|
|
62
|
+
_props$menuMaxHeight = props.menuMaxHeight,
|
|
63
|
+
menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
|
|
63
64
|
menuStyle = props.menuStyle,
|
|
64
65
|
_props$searchable = props.searchable,
|
|
65
66
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
@@ -91,7 +92,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
91
92
|
renderValue = props.renderValue,
|
|
92
93
|
renderTreeIcon = props.renderTreeIcon,
|
|
93
94
|
renderTreeNode = props.renderTreeNode,
|
|
94
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "data", "style", "appearance", "cleanable", "countable", "searchBy", "toggleAs", "searchKeyword", "showIndentLine", "locale", "cascade", "disabled", "valueKey", "labelKey", "placement", "childrenKey", "placeholder", "value", "defaultValue", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "height", "menuStyle", "searchable", "virtualized", "className", "classPrefix", "menuClassName", "menuAutoWidth", "uncheckableItemValues", "id", "listProps", "renderMenu", "getChildren", "renderExtraFooter", "onEntered", "onChange", "onClean", "onClose", "onExited", "onSearch", "onSelect", "onOpen", "onScroll", "onExpand", "renderValue", "renderTreeIcon", "renderTreeNode"]);
|
|
95
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "data", "style", "appearance", "cleanable", "countable", "searchBy", "toggleAs", "searchKeyword", "showIndentLine", "locale", "cascade", "disabled", "valueKey", "labelKey", "placement", "childrenKey", "placeholder", "value", "defaultValue", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "height", "menuMaxHeight", "menuStyle", "searchable", "virtualized", "className", "classPrefix", "menuClassName", "menuAutoWidth", "uncheckableItemValues", "id", "listProps", "renderMenu", "getChildren", "renderExtraFooter", "onEntered", "onChange", "onClean", "onClose", "onExited", "onSearch", "onSelect", "onOpen", "onScroll", "onExpand", "renderValue", "renderTreeIcon", "renderTreeNode"]);
|
|
95
96
|
|
|
96
97
|
var _useContext = useContext(TreeContext),
|
|
97
98
|
inline = _useContext.inline;
|
|
@@ -221,11 +222,11 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
221
222
|
value: node[valueKey],
|
|
222
223
|
label: node[labelKey],
|
|
223
224
|
layer: layer,
|
|
224
|
-
focus:
|
|
225
|
+
focus: focusItemValue === node[valueKey],
|
|
225
226
|
expand: node.expand,
|
|
226
227
|
visible: node.visible,
|
|
227
228
|
loading: loadingNodeValues.some(function (item) {
|
|
228
|
-
return
|
|
229
|
+
return item === node[valueKey];
|
|
229
230
|
}),
|
|
230
231
|
disabled: getDisabledState(flattenNodes, node, {
|
|
231
232
|
disabledItemValues: disabledItemValues,
|
|
@@ -363,18 +364,6 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
363
364
|
onChange === null || onChange === void 0 ? void 0 : onChange(selectedValues, event);
|
|
364
365
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, selectedValues, event);
|
|
365
366
|
}, [cascade, valueKey, flattenNodes, isControlled, uncheckableItemValues, setValue, onChange, onSelect, toggleChecked, unSerializeList]);
|
|
366
|
-
|
|
367
|
-
var hasValue = function hasValue() {
|
|
368
|
-
var selectedValues = Object.keys(flattenNodes).map(function (refKey) {
|
|
369
|
-
return flattenNodes[refKey][valueKey];
|
|
370
|
-
}).filter(function (item) {
|
|
371
|
-
return value.some(function (v) {
|
|
372
|
-
return shallowEqual(v, item);
|
|
373
|
-
});
|
|
374
|
-
});
|
|
375
|
-
return !!selectedValues.length;
|
|
376
|
-
};
|
|
377
|
-
|
|
378
367
|
var handleOpen = useCallback(function () {
|
|
379
368
|
var _triggerRef$current, _triggerRef$current$o;
|
|
380
369
|
|
|
@@ -426,22 +415,26 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
426
415
|
var handleClean = useCallback(function (event) {
|
|
427
416
|
var target = event.target; // exclude searchBar
|
|
428
417
|
|
|
429
|
-
if (target.matches('div[role="searchbox"] > input')) {
|
|
418
|
+
if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
|
|
430
419
|
return;
|
|
431
420
|
}
|
|
432
421
|
|
|
433
422
|
setActiveNode(null);
|
|
434
|
-
setValue([]);
|
|
435
423
|
setFocusItemValue(null);
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
424
|
+
|
|
425
|
+
if (!isControlled) {
|
|
426
|
+
setValue([]);
|
|
427
|
+
unSerializeList({
|
|
428
|
+
nodes: flattenNodes,
|
|
429
|
+
key: 'check',
|
|
430
|
+
value: [],
|
|
431
|
+
cascade: cascade,
|
|
432
|
+
uncheckableItemValues: uncheckableItemValues
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
|
|
443
436
|
onChange === null || onChange === void 0 ? void 0 : onChange([], event);
|
|
444
|
-
}, [cascade, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues]);
|
|
437
|
+
}, [cascade, cleanable, disabled, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues, isControlled]);
|
|
445
438
|
var handleFocusItem = useCallback(function (key) {
|
|
446
439
|
var focusableItems = getFocusableItems(filteredData, {
|
|
447
440
|
disabledItemValues: disabledItemValues,
|
|
@@ -567,7 +560,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
567
560
|
|
|
568
561
|
var nodeProps = _extends({}, getTreeNodeProps(_extends({}, node, {
|
|
569
562
|
/**
|
|
570
|
-
* spread operator
|
|
563
|
+
* spread operator don't copy unenumerable properties
|
|
571
564
|
* so we need to copy them manually
|
|
572
565
|
*/
|
|
573
566
|
parent: node.parent,
|
|
@@ -620,6 +613,11 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
620
613
|
var expand = getExpandWhenSearching(searchKeywordState, expandItemValues.includes(node[valueKey]));
|
|
621
614
|
|
|
622
615
|
var nodeProps = _extends({}, getTreeNodeProps(_extends({}, node, {
|
|
616
|
+
/**
|
|
617
|
+
* spread operator don't copy unenumerable properties
|
|
618
|
+
* so we need to copy them manually
|
|
619
|
+
*/
|
|
620
|
+
parent: node.parent,
|
|
623
621
|
expand: expand
|
|
624
622
|
}), layer), {
|
|
625
623
|
hasChildren: node.hasChildren
|
|
@@ -665,7 +663,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
665
663
|
}, /*#__PURE__*/React.createElement("div", {
|
|
666
664
|
className: treeNodesClass
|
|
667
665
|
}, virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
|
|
668
|
-
defaultHeight: inline ? height :
|
|
666
|
+
defaultHeight: inline ? height : menuMaxHeight,
|
|
669
667
|
style: {
|
|
670
668
|
width: 'auto',
|
|
671
669
|
height: 'auto'
|
|
@@ -696,13 +694,10 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
696
694
|
top: top
|
|
697
695
|
});
|
|
698
696
|
|
|
699
|
-
var styles = virtualized ? _extends({
|
|
700
|
-
height: height
|
|
701
|
-
}, mergedMenuStyle) : _extends({}, mergedMenuStyle);
|
|
702
697
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
703
698
|
autoWidth: menuAutoWidth,
|
|
704
699
|
className: classes,
|
|
705
|
-
style:
|
|
700
|
+
style: mergedMenuStyle,
|
|
706
701
|
ref: mergeRefs(overlayRef, speakerRef),
|
|
707
702
|
onKeyDown: onPickerKeydown,
|
|
708
703
|
target: triggerRef
|
|
@@ -713,16 +708,18 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
713
708
|
inputRef: searchInputRef
|
|
714
709
|
}) : null, renderMenu ? renderMenu(renderCheckTree()) : renderCheckTree(), renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
|
|
715
710
|
};
|
|
711
|
+
|
|
712
|
+
var selectedItems = useMemo(function () {
|
|
713
|
+
return getSelectedItems(flattenNodes, value);
|
|
714
|
+
}, [flattenNodes, value]);
|
|
716
715
|
/**
|
|
717
716
|
* 1.Have a value and the value is valid.
|
|
718
717
|
* 2.Regardless of whether the value is valid, as long as renderValue is set, it is judged to have a value.
|
|
719
718
|
*/
|
|
720
719
|
|
|
721
|
-
|
|
722
|
-
var hasValidValue = hasValue() || value.length > 0 && _isFunction(renderValue);
|
|
720
|
+
var hasValidValue = selectedItems.length > 0 || value.length > 0 && _isFunction(renderValue);
|
|
723
721
|
|
|
724
722
|
var selectedElement = placeholder;
|
|
725
|
-
var selectedItems = getSelectedItems(flattenNodes, value, valueKey);
|
|
726
723
|
|
|
727
724
|
if (hasValidValue) {
|
|
728
725
|
selectedElement = /*#__PURE__*/React.createElement(SelectedElement, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { CheckTreePickerProps } from './CheckTreePicker';
|
|
2
|
+
import { CheckTreePickerProps, ValueType } from './CheckTreePicker';
|
|
3
3
|
import { CheckStateType } from '../utils';
|
|
4
4
|
export interface TreeNodeType {
|
|
5
5
|
uncheckable?: boolean;
|
|
@@ -40,5 +40,5 @@ export declare function isNodeUncheckable(node: any, props: Required<Pick<CheckT
|
|
|
40
40
|
export declare function getFormattedTree(data: any[], nodes: TreeNodesType, props: Required<Pick<CheckTreePickerProps, 'childrenKey' | 'cascade'>>): any[];
|
|
41
41
|
export declare function getDisabledState(nodes: TreeNodesType, node: TreeNodeType, props: Required<Pick<CheckTreePickerProps, 'disabledItemValues' | 'valueKey'>>): boolean;
|
|
42
42
|
export declare function getCheckTreePickerDefaultValue(value: any[], uncheckableItemValues: any[]): any[];
|
|
43
|
-
export declare function getSelectedItems(nodes: TreeNodesType,
|
|
43
|
+
export declare function getSelectedItems(nodes: TreeNodesType, values: ValueType): TreeNodeType[];
|
|
44
44
|
export declare function getNodeCheckState({ nodes, node, cascade, childrenKey }: any): CheckStateType;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _isUndefined from "lodash/isUndefined";
|
|
3
3
|
import _isNil from "lodash/isNil";
|
|
4
|
-
import {
|
|
5
|
-
import { getChildrenByFlattenNodes } from '../utils/treeUtils';
|
|
4
|
+
import { CHECK_STATE } from '../utils';
|
|
5
|
+
import { getChildrenByFlattenNodes, getNodeFormattedRefKey } from '../utils/treeUtils';
|
|
6
6
|
import { attachParent } from '../utils/attachParent';
|
|
7
7
|
export function isEveryChildChecked(nodes, parent) {
|
|
8
8
|
if (_isNil(parent.refKey) || _isNil(nodes[parent.refKey])) {
|
|
@@ -98,7 +98,7 @@ export function isNodeUncheckable(node, props) {
|
|
|
98
98
|
uncheckableItemValues = _props$uncheckableIte === void 0 ? [] : _props$uncheckableIte,
|
|
99
99
|
valueKey = props.valueKey;
|
|
100
100
|
return uncheckableItemValues.some(function (value) {
|
|
101
|
-
return
|
|
101
|
+
return node[valueKey] === value;
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
export function getFormattedTree(data, nodes, props) {
|
|
@@ -142,7 +142,7 @@ export function getDisabledState(nodes, node, props) {
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
return disabledItemValues.some(function (value) {
|
|
145
|
-
return node.refKey &&
|
|
145
|
+
return node.refKey && nodes[node.refKey][valueKey] === value;
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
export function getCheckTreePickerDefaultValue(value, uncheckableItemValues) {
|
|
@@ -154,18 +154,17 @@ export function getCheckTreePickerDefaultValue(value, uncheckableItemValues) {
|
|
|
154
154
|
|
|
155
155
|
return [];
|
|
156
156
|
}
|
|
157
|
-
export function getSelectedItems(nodes,
|
|
158
|
-
var
|
|
159
|
-
|
|
157
|
+
export function getSelectedItems(nodes, values) {
|
|
158
|
+
var checkedItems = [];
|
|
159
|
+
values.forEach(function (value) {
|
|
160
|
+
var refKey = getNodeFormattedRefKey(value);
|
|
160
161
|
var node = nodes[refKey];
|
|
161
162
|
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
})) {
|
|
165
|
-
checkItems.push(node);
|
|
163
|
+
if (!_isNil(node)) {
|
|
164
|
+
checkedItems.push(node);
|
|
166
165
|
}
|
|
167
166
|
});
|
|
168
|
-
return
|
|
167
|
+
return checkedItems;
|
|
169
168
|
}
|
|
170
169
|
export function getNodeCheckState(_ref) {
|
|
171
170
|
var nodes = _ref.nodes,
|
package/esm/DOMHelper/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import * as helpers from 'dom-lib';
|
|
2
3
|
export * from 'dom-lib';
|
|
3
4
|
declare const DOMHelper: {
|
|
@@ -10,8 +11,8 @@ declare const DOMHelper: {
|
|
|
10
11
|
removeClass: (target: Element, className: string) => Element;
|
|
11
12
|
hasClass: (target: Element, className: string) => boolean;
|
|
12
13
|
toggleClass: (target: Element, className: string) => Element;
|
|
13
|
-
cancelAnimationFramePolyfill: typeof clearTimeout;
|
|
14
|
-
requestAnimationFramePolyfill: typeof requestAnimationFrame;
|
|
14
|
+
cancelAnimationFramePolyfill: typeof cancelAnimationFrame | typeof clearTimeout;
|
|
15
|
+
requestAnimationFramePolyfill: typeof requestAnimationFrame | ((callback: (t: number) => void) => NodeJS.Timeout);
|
|
15
16
|
getAnimationEnd: typeof helpers.getAnimationEnd;
|
|
16
17
|
ownerDocument: (node: Element | null) => Document;
|
|
17
18
|
ownerWindow: (componentOrElement: Element) => Window;
|
|
@@ -29,6 +29,11 @@ var PredefinedRanges = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
29
29
|
return item.label === key;
|
|
30
30
|
});
|
|
31
31
|
}, [calendarDate]);
|
|
32
|
+
|
|
33
|
+
if (ranges.length === 0) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
32
37
|
return /*#__PURE__*/React.createElement(Stack, _extends({
|
|
33
38
|
className: className,
|
|
34
39
|
ref: ref,
|
|
@@ -573,6 +573,12 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
573
573
|
onToggleMeridian: handleToggleMeridian,
|
|
574
574
|
renderTitle: renderTitle
|
|
575
575
|
};
|
|
576
|
+
var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
577
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
578
|
+
})) || [];
|
|
579
|
+
var bottomRanges = ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
580
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
581
|
+
});
|
|
576
582
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
577
583
|
role: "dialog",
|
|
578
584
|
className: classes,
|
|
@@ -583,13 +589,11 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
583
589
|
className: panelClasses
|
|
584
590
|
}, /*#__PURE__*/React.createElement(Stack, {
|
|
585
591
|
alignItems: "flex-start"
|
|
586
|
-
}, /*#__PURE__*/React.createElement(PredefinedRanges, {
|
|
592
|
+
}, sideRanges.length > 0 && /*#__PURE__*/React.createElement(PredefinedRanges, {
|
|
587
593
|
direction: "column",
|
|
588
594
|
spacing: 0,
|
|
589
595
|
className: prefix('daterange-predefined'),
|
|
590
|
-
ranges:
|
|
591
|
-
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
592
|
-
})) || [],
|
|
596
|
+
ranges: sideRanges,
|
|
593
597
|
calendarDate: calendarDate,
|
|
594
598
|
locale: locale,
|
|
595
599
|
disabledShortcut: disabledShortcutButton,
|
|
@@ -612,9 +616,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
612
616
|
hideOkBtn: oneTap,
|
|
613
617
|
onOk: handleOK,
|
|
614
618
|
onClickShortcut: handleShortcutPageDate,
|
|
615
|
-
ranges:
|
|
616
|
-
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
617
|
-
})
|
|
619
|
+
ranges: bottomRanges
|
|
618
620
|
})))));
|
|
619
621
|
};
|
|
620
622
|
|
|
@@ -103,6 +103,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
103
103
|
columnData = _useColumnData.columnData,
|
|
104
104
|
setColumnData = _useColumnData.setColumnData,
|
|
105
105
|
addColumn = _useColumnData.addColumn,
|
|
106
|
+
romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
|
|
106
107
|
enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
|
|
107
108
|
|
|
108
109
|
useUpdateEffect(function () {
|
|
@@ -186,7 +187,8 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
186
187
|
var _node$childrenKey, _node$childrenKey2, _triggerRef$current, _triggerRef$current$u;
|
|
187
188
|
|
|
188
189
|
setSelectedPaths(cascadePaths);
|
|
189
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
190
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
191
|
+
var columnIndex = cascadePaths.length; // Lazy load node's children
|
|
190
192
|
|
|
191
193
|
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
|
|
192
194
|
node.loading = true;
|
|
@@ -199,21 +201,24 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
199
201
|
|
|
200
202
|
if (targetRef.current) {
|
|
201
203
|
addFlattenData(data, node);
|
|
202
|
-
addColumn(data,
|
|
204
|
+
addColumn(data, columnIndex);
|
|
203
205
|
}
|
|
204
206
|
});
|
|
205
207
|
} else {
|
|
206
208
|
node.loading = false;
|
|
207
209
|
node[childrenKey] = children;
|
|
208
210
|
addFlattenData(children, node);
|
|
209
|
-
addColumn(children,
|
|
211
|
+
addColumn(children, columnIndex);
|
|
210
212
|
}
|
|
211
213
|
} else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
|
|
212
|
-
addColumn(node[childrenKey],
|
|
214
|
+
addColumn(node[childrenKey], columnIndex);
|
|
215
|
+
} else {
|
|
216
|
+
// Removes subsequent columns of the current column when the clicked node is a leaf node.
|
|
217
|
+
romoveColumnByIndex(columnIndex);
|
|
213
218
|
}
|
|
214
219
|
|
|
215
220
|
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
|
|
216
|
-
}, [onSelect, getChildren, childrenKey, addColumn,
|
|
221
|
+
}, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
|
|
217
222
|
var handleCheck = useCallback(function (node, event, checked) {
|
|
218
223
|
var nodeValue = node[valueKey];
|
|
219
224
|
var nextValue = [];
|
|
@@ -48,6 +48,7 @@ export declare function useFlattenData(data: ItemDataType[], itemKeys: ItemKeys)
|
|
|
48
48
|
export declare function useColumnData(flattenData: ItemType[]): {
|
|
49
49
|
columnData: ItemDataType<string | number>[][];
|
|
50
50
|
addColumn: (column: ItemDataType[], index: number) => void;
|
|
51
|
+
romoveColumnByIndex: (index: number) => void;
|
|
51
52
|
setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[][]>>;
|
|
52
53
|
enforceUpdateColumnData: (nextData: ItemDataType[]) => void;
|
|
53
54
|
};
|
|
@@ -203,6 +203,15 @@ export function useColumnData(flattenData) {
|
|
|
203
203
|
function addColumn(column, index) {
|
|
204
204
|
setColumnData([].concat(slice(columnData, 0, index), [column]));
|
|
205
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Remove subsequent columns of the specified column
|
|
208
|
+
* @param index
|
|
209
|
+
*/
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
function romoveColumnByIndex(index) {
|
|
213
|
+
setColumnData([].concat(slice(columnData, 0, index)));
|
|
214
|
+
}
|
|
206
215
|
|
|
207
216
|
function enforceUpdateColumnData(nextData) {
|
|
208
217
|
var nextFlattenData = flattenTree(nextData);
|
|
@@ -214,6 +223,7 @@ export function useColumnData(flattenData) {
|
|
|
214
223
|
return {
|
|
215
224
|
columnData: columnData,
|
|
216
225
|
addColumn: addColumn,
|
|
226
|
+
romoveColumnByIndex: romoveColumnByIndex,
|
|
217
227
|
setColumnData: setColumnData,
|
|
218
228
|
enforceUpdateColumnData: enforceUpdateColumnData
|
|
219
229
|
};
|
|
@@ -3,7 +3,6 @@ import { PickerLocale } from '../locales';
|
|
|
3
3
|
import { PickerComponent, PickerToggleProps } from '../Picker';
|
|
4
4
|
import { TreeDragProps, TreeBaseProps } from '../Tree/Tree';
|
|
5
5
|
import { FormControlPickerProps, ItemDataType } from '../@types/common';
|
|
6
|
-
export declare const maxTreeHeight = 320;
|
|
7
6
|
export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, ItemDataType>, TreeDragProps, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs'> {
|
|
8
7
|
/** The height of Dropdown */
|
|
9
8
|
height?: number;
|
|
@@ -13,9 +13,7 @@ import { getTreeNodeIndent } from '../utils/treeUtils';
|
|
|
13
13
|
import { createChainedFunction, useClassNames, useCustom, useControlled, TREE_NODE_DROP_POSITION, KEY_VALUES, mergeRefs, shallowEqual } from '../utils';
|
|
14
14
|
import { getExpandWhenSearching, hasVisibleChildren, getDragNodeKeys, calDropNodePosition, createUpdateTreeDataFunction, useTreeDrag, useFlattenTreeData, getTreeActiveNode, getDefaultExpandItemValues, useTreeNodeRefs, useTreeSearch, focusPreviousItem, getFocusableItems, focusNextItem, getActiveItem, toggleExpand, useGetTreeNodeChildren, focusToActiveTreeNode, leftArrowHandler, focusTreeNode, rightArrowHandler, isSearching } from '../utils/treeUtils';
|
|
15
15
|
import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, onMenuKeyDown as _onMenuKeyDown, usePublicMethods, listPickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, useToggleKeyDownEvent } from '../Picker';
|
|
16
|
-
import TreeContext from '../Tree/TreeContext';
|
|
17
|
-
|
|
18
|
-
export var maxTreeHeight = 320;
|
|
16
|
+
import TreeContext from '../Tree/TreeContext';
|
|
19
17
|
var emptyArray = [];
|
|
20
18
|
var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
21
19
|
var _props$as = props.as,
|
|
@@ -30,13 +28,15 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
30
28
|
overrideLocale = props.locale,
|
|
31
29
|
_props$height = props.height,
|
|
32
30
|
height = _props$height === void 0 ? 360 : _props$height,
|
|
31
|
+
_props$menuMaxHeight = props.menuMaxHeight,
|
|
32
|
+
menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
|
|
33
|
+
menuStyle = props.menuStyle,
|
|
33
34
|
className = props.className,
|
|
34
35
|
disabled = props.disabled,
|
|
35
36
|
_props$placement = props.placement,
|
|
36
37
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
37
38
|
_props$cleanable = props.cleanable,
|
|
38
39
|
cleanable = _props$cleanable === void 0 ? true : _props$cleanable,
|
|
39
|
-
menuStyle = props.menuStyle,
|
|
40
40
|
_props$searchable = props.searchable,
|
|
41
41
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
42
42
|
_props$virtualized = props.virtualized,
|
|
@@ -89,7 +89,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
89
89
|
renderExtraFooter = props.renderExtraFooter,
|
|
90
90
|
renderMenu = props.renderMenu,
|
|
91
91
|
renderValue = props.renderValue,
|
|
92
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "className", "disabled", "placement", "cleanable", "
|
|
92
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "menuMaxHeight", "menuStyle", "className", "disabled", "placement", "cleanable", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "listProps", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue"]);
|
|
93
93
|
|
|
94
94
|
var triggerRef = useRef(null);
|
|
95
95
|
var targetRef = useRef(null);
|
|
@@ -478,13 +478,16 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
478
478
|
var nullValue = null;
|
|
479
479
|
var target = event.target; // exclude searchBar
|
|
480
480
|
|
|
481
|
-
if (target.matches('div[role="searchbox"] > input')) {
|
|
481
|
+
if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
|
|
482
482
|
return;
|
|
483
483
|
}
|
|
484
484
|
|
|
485
|
-
|
|
485
|
+
if (!isControlled) {
|
|
486
|
+
setValue(null);
|
|
487
|
+
}
|
|
488
|
+
|
|
486
489
|
onChange === null || onChange === void 0 ? void 0 : onChange(nullValue, event);
|
|
487
|
-
}, [onChange, setValue]);
|
|
490
|
+
}, [cleanable, disabled, onChange, setValue, isControlled]);
|
|
488
491
|
var onPickerKeydown = useToggleKeyDownEvent(_extends({
|
|
489
492
|
toggle: !activeNode || !active,
|
|
490
493
|
triggerRef: triggerRef,
|
|
@@ -622,7 +625,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
622
625
|
}, /*#__PURE__*/React.createElement("div", {
|
|
623
626
|
className: treePrefix('nodes')
|
|
624
627
|
}, virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
|
|
625
|
-
defaultHeight: inline ? height :
|
|
628
|
+
defaultHeight: inline ? height : menuMaxHeight,
|
|
626
629
|
style: {
|
|
627
630
|
width: 'auto',
|
|
628
631
|
height: 'auto'
|
|
@@ -653,13 +656,10 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
653
656
|
top: top
|
|
654
657
|
});
|
|
655
658
|
|
|
656
|
-
var styles = virtualized ? _extends({
|
|
657
|
-
height: height
|
|
658
|
-
}, mergedMenuStyle) : _extends({}, mergedMenuStyle);
|
|
659
659
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
660
660
|
autoWidth: menuAutoWidth,
|
|
661
661
|
className: classes,
|
|
662
|
-
style:
|
|
662
|
+
style: mergedMenuStyle,
|
|
663
663
|
ref: mergeRefs(overlayRef, speakerRef),
|
|
664
664
|
onKeyDown: onPickerKeydown,
|
|
665
665
|
target: triggerRef
|