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
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
## [5.19.1](https://github.com/rsuite/rsuite/compare/v5.19.0...v5.19.1) (2022-10-13)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **Cascader,MultiCascader:** fix sub-columns not being removed when a leaf node is selected ([#2792](https://github.com/rsuite/rsuite/issues/2792)) ([619c7de](https://github.com/rsuite/rsuite/commit/619c7debfca63a58622a1ae4a4776544bebf3405))
|
|
6
|
+
- **CheckTreePicker:** fix children node can't uncheck when setting virtualized ([#2782](https://github.com/rsuite/rsuite/issues/2782)) ([#2783](https://github.com/rsuite/rsuite/issues/2783)) ([50f7b89](https://github.com/rsuite/rsuite/commit/50f7b89dbe1a2b59c212e021e1bc42c50e9ebb37))
|
|
7
|
+
- **DateRangePicker:** fix predefined range affecting calendar height ([#2794](https://github.com/rsuite/rsuite/issues/2794)) ([957ce4e](https://github.com/rsuite/rsuite/commit/957ce4e197355ecbb9a0aea6cb6c5906ab1e1a2a))
|
|
8
|
+
- **TreePicker, CheckTreePicker:** ignore backspace when setting cleanable=false or disabled=true ([#2798](https://github.com/rsuite/rsuite/issues/2798)) ([eefe0eb](https://github.com/rsuite/rsuite/commit/eefe0ebc396ee1764243a1e2c8ec432dc6ce39a5))
|
|
9
|
+
- **TreePicker,CheckTreePicker:** fix `renderExtraFooter` causing the … ([#2745](https://github.com/rsuite/rsuite/issues/2745)) ([d7279d1](https://github.com/rsuite/rsuite/commit/d7279d14877e4b3b0ac74abdfeb56836b3a07780)), closes [#2758](https://github.com/rsuite/rsuite/issues/2758)
|
|
10
|
+
- **TreePicker,CheckTreePicker:** fix value being cleared internally when value is controlled ([#2788](https://github.com/rsuite/rsuite/issues/2788)) ([4521a27](https://github.com/rsuite/rsuite/commit/4521a2730a7311b7fe095d85e39966a1d56f5d9d)), closes [#2784](https://github.com/rsuite/rsuite/issues/2784)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **i18n:** add fr_FR locale ([#2735](https://github.com/rsuite/rsuite/issues/2735)) ([087cfc8](https://github.com/rsuite/rsuite/commit/087cfc885252d764864e075b086f5d980f94db94))
|
|
15
|
+
|
|
16
|
+
### Performance Improvements
|
|
17
|
+
|
|
18
|
+
- **CheckTreePicker:** improve performance when using large data ([#2767](https://github.com/rsuite/rsuite/issues/2767)) ([651a8a1](https://github.com/rsuite/rsuite/commit/651a8a1ebb0bf1c1e07e1541ca1f0a61a96a3df4))
|
|
19
|
+
|
|
1
20
|
# [5.19.0](https://github.com/rsuite/rsuite/compare/v5.18.1...v5.19.0) (2022-09-23)
|
|
2
21
|
|
|
3
22
|
### Bug Fixes
|
|
@@ -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/cjs/Cascader/Cascader.js
CHANGED
|
@@ -117,6 +117,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
117
117
|
valueToPaths = _usePaths.valueToPaths,
|
|
118
118
|
columnData = _usePaths.columnData,
|
|
119
119
|
addColumn = _usePaths.addColumn,
|
|
120
|
+
romoveColumnByIndex = _usePaths.romoveColumnByIndex,
|
|
120
121
|
setValueToPaths = _usePaths.setValueToPaths,
|
|
121
122
|
setColumnData = _usePaths.setColumnData,
|
|
122
123
|
setSelectedPaths = _usePaths.setSelectedPaths,
|
|
@@ -280,9 +281,10 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
280
281
|
var handleSelect = function handleSelect(node, cascadePaths, isLeafNode, event) {
|
|
281
282
|
var _node$childrenKey, _node$childrenKey2, _triggerRef$current2;
|
|
282
283
|
|
|
283
|
-
var nextValue = node[valueKey];
|
|
284
284
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
285
|
-
setSelectedPaths(cascadePaths);
|
|
285
|
+
setSelectedPaths(cascadePaths);
|
|
286
|
+
var nextValue = node[valueKey];
|
|
287
|
+
var columnIndex = cascadePaths.length; // Lazy load node's children
|
|
286
288
|
|
|
287
289
|
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
|
|
288
290
|
node.loading = true;
|
|
@@ -294,16 +296,19 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
294
296
|
node[childrenKey] = data;
|
|
295
297
|
|
|
296
298
|
if (targetRef.current) {
|
|
297
|
-
addColumn(data,
|
|
299
|
+
addColumn(data, columnIndex);
|
|
298
300
|
}
|
|
299
301
|
});
|
|
300
302
|
} else {
|
|
301
303
|
node.loading = false;
|
|
302
304
|
node[childrenKey] = children;
|
|
303
|
-
addColumn(children,
|
|
305
|
+
addColumn(children, columnIndex);
|
|
304
306
|
}
|
|
305
307
|
} else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
|
|
306
|
-
addColumn(node[childrenKey],
|
|
308
|
+
addColumn(node[childrenKey], columnIndex);
|
|
309
|
+
} else {
|
|
310
|
+
// Removes subsequent columns of the current column when the clicked node is a leaf node.
|
|
311
|
+
romoveColumnByIndex(columnIndex);
|
|
307
312
|
}
|
|
308
313
|
|
|
309
314
|
if (isLeafNode) {
|
package/cjs/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/cjs/Cascader/utils.js
CHANGED
|
@@ -125,6 +125,15 @@ function usePaths(props) {
|
|
|
125
125
|
function addColumn(column, index) {
|
|
126
126
|
setColumnData([].concat((0, _slice.default)(columnData, 0, index), [column]));
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Remove subsequent columns of the specified column
|
|
130
|
+
* @param index
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
function romoveColumnByIndex(index) {
|
|
135
|
+
setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
|
|
136
|
+
}
|
|
128
137
|
/**
|
|
129
138
|
* Enforce update of columns and paths.
|
|
130
139
|
* @param nextValue Selected value
|
|
@@ -160,6 +169,7 @@ function usePaths(props) {
|
|
|
160
169
|
setValueToPaths: setValueToPaths,
|
|
161
170
|
setColumnData: setColumnData,
|
|
162
171
|
setSelectedPaths: setSelectedPaths,
|
|
163
|
-
addColumn: addColumn
|
|
172
|
+
addColumn: addColumn,
|
|
173
|
+
romoveColumnByIndex: romoveColumnByIndex
|
|
164
174
|
};
|
|
165
175
|
}
|
|
@@ -43,8 +43,6 @@ var _Picker = require("../Picker");
|
|
|
43
43
|
|
|
44
44
|
var _utils2 = require("./utils");
|
|
45
45
|
|
|
46
|
-
var _TreePicker = require("../TreePicker/TreePicker");
|
|
47
|
-
|
|
48
46
|
var emptyArray = [];
|
|
49
47
|
|
|
50
48
|
var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
@@ -88,6 +86,8 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
88
86
|
defaultExpandItemValues = _props$defaultExpandI === void 0 ? emptyArray : _props$defaultExpandI,
|
|
89
87
|
_props$height = props.height,
|
|
90
88
|
height = _props$height === void 0 ? 360 : _props$height,
|
|
89
|
+
_props$menuMaxHeight = props.menuMaxHeight,
|
|
90
|
+
menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
|
|
91
91
|
menuStyle = props.menuStyle,
|
|
92
92
|
_props$searchable = props.searchable,
|
|
93
93
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
@@ -119,7 +119,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
119
119
|
renderValue = props.renderValue,
|
|
120
120
|
renderTreeIcon = props.renderTreeIcon,
|
|
121
121
|
renderTreeNode = props.renderTreeNode,
|
|
122
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
|
|
122
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
|
|
123
123
|
|
|
124
124
|
var _useContext = (0, _react.useContext)(_TreeContext.default),
|
|
125
125
|
inline = _useContext.inline;
|
|
@@ -249,11 +249,11 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
249
249
|
value: node[valueKey],
|
|
250
250
|
label: node[labelKey],
|
|
251
251
|
layer: layer,
|
|
252
|
-
focus:
|
|
252
|
+
focus: focusItemValue === node[valueKey],
|
|
253
253
|
expand: node.expand,
|
|
254
254
|
visible: node.visible,
|
|
255
255
|
loading: loadingNodeValues.some(function (item) {
|
|
256
|
-
return
|
|
256
|
+
return item === node[valueKey];
|
|
257
257
|
}),
|
|
258
258
|
disabled: (0, _utils2.getDisabledState)(flattenNodes, node, {
|
|
259
259
|
disabledItemValues: disabledItemValues,
|
|
@@ -390,18 +390,6 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
390
390
|
onChange === null || onChange === void 0 ? void 0 : onChange(selectedValues, event);
|
|
391
391
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, selectedValues, event);
|
|
392
392
|
}, [cascade, valueKey, flattenNodes, isControlled, uncheckableItemValues, setValue, onChange, onSelect, toggleChecked, unSerializeList]);
|
|
393
|
-
|
|
394
|
-
var hasValue = function hasValue() {
|
|
395
|
-
var selectedValues = Object.keys(flattenNodes).map(function (refKey) {
|
|
396
|
-
return flattenNodes[refKey][valueKey];
|
|
397
|
-
}).filter(function (item) {
|
|
398
|
-
return value.some(function (v) {
|
|
399
|
-
return (0, _utils.shallowEqual)(v, item);
|
|
400
|
-
});
|
|
401
|
-
});
|
|
402
|
-
return !!selectedValues.length;
|
|
403
|
-
};
|
|
404
|
-
|
|
405
393
|
var handleOpen = (0, _react.useCallback)(function () {
|
|
406
394
|
var _triggerRef$current, _triggerRef$current$o;
|
|
407
395
|
|
|
@@ -453,22 +441,26 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
453
441
|
var handleClean = (0, _react.useCallback)(function (event) {
|
|
454
442
|
var target = event.target; // exclude searchBar
|
|
455
443
|
|
|
456
|
-
if (target.matches('div[role="searchbox"] > input')) {
|
|
444
|
+
if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
|
|
457
445
|
return;
|
|
458
446
|
}
|
|
459
447
|
|
|
460
448
|
setActiveNode(null);
|
|
461
|
-
setValue([]);
|
|
462
449
|
setFocusItemValue(null);
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
450
|
+
|
|
451
|
+
if (!isControlled) {
|
|
452
|
+
setValue([]);
|
|
453
|
+
unSerializeList({
|
|
454
|
+
nodes: flattenNodes,
|
|
455
|
+
key: 'check',
|
|
456
|
+
value: [],
|
|
457
|
+
cascade: cascade,
|
|
458
|
+
uncheckableItemValues: uncheckableItemValues
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
|
|
470
462
|
onChange === null || onChange === void 0 ? void 0 : onChange([], event);
|
|
471
|
-
}, [cascade, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues]);
|
|
463
|
+
}, [cascade, cleanable, disabled, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues, isControlled]);
|
|
472
464
|
var handleFocusItem = (0, _react.useCallback)(function (key) {
|
|
473
465
|
var focusableItems = (0, _treeUtils.getFocusableItems)(filteredData, {
|
|
474
466
|
disabledItemValues: disabledItemValues,
|
|
@@ -593,7 +585,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
593
585
|
var visibleChildren = (0, _isUndefined2.default)(searchKeywordState) || searchKeywordState.length === 0 ? !!children : (0, _treeUtils.hasVisibleChildren)(node, childrenKey);
|
|
594
586
|
var nodeProps = (0, _extends2.default)({}, getTreeNodeProps((0, _extends2.default)({}, node, {
|
|
595
587
|
/**
|
|
596
|
-
* spread operator
|
|
588
|
+
* spread operator don't copy unenumerable properties
|
|
597
589
|
* so we need to copy them manually
|
|
598
590
|
*/
|
|
599
591
|
parent: node.parent,
|
|
@@ -645,6 +637,11 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
645
637
|
visible = node.visible;
|
|
646
638
|
var expand = (0, _treeUtils.getExpandWhenSearching)(searchKeywordState, expandItemValues.includes(node[valueKey]));
|
|
647
639
|
var nodeProps = (0, _extends2.default)({}, getTreeNodeProps((0, _extends2.default)({}, node, {
|
|
640
|
+
/**
|
|
641
|
+
* spread operator don't copy unenumerable properties
|
|
642
|
+
* so we need to copy them manually
|
|
643
|
+
*/
|
|
644
|
+
parent: node.parent,
|
|
648
645
|
expand: expand
|
|
649
646
|
}), layer), {
|
|
650
647
|
hasChildren: node.hasChildren
|
|
@@ -689,7 +686,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
689
686
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
690
687
|
className: treeNodesClass
|
|
691
688
|
}, virtualized ? /*#__PURE__*/_react.default.createElement(_VirtualizedList.AutoSizer, {
|
|
692
|
-
defaultHeight: inline ? height :
|
|
689
|
+
defaultHeight: inline ? height : menuMaxHeight,
|
|
693
690
|
style: {
|
|
694
691
|
width: 'auto',
|
|
695
692
|
height: 'auto'
|
|
@@ -718,13 +715,10 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
718
715
|
left: left,
|
|
719
716
|
top: top
|
|
720
717
|
});
|
|
721
|
-
var styles = virtualized ? (0, _extends2.default)({
|
|
722
|
-
height: height
|
|
723
|
-
}, mergedMenuStyle) : (0, _extends2.default)({}, mergedMenuStyle);
|
|
724
718
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
725
719
|
autoWidth: menuAutoWidth,
|
|
726
720
|
className: classes,
|
|
727
|
-
style:
|
|
721
|
+
style: mergedMenuStyle,
|
|
728
722
|
ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
|
|
729
723
|
onKeyDown: onPickerKeydown,
|
|
730
724
|
target: triggerRef
|
|
@@ -735,15 +729,17 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
735
729
|
inputRef: searchInputRef
|
|
736
730
|
}) : null, renderMenu ? renderMenu(renderCheckTree()) : renderCheckTree(), renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
|
|
737
731
|
};
|
|
732
|
+
|
|
733
|
+
var selectedItems = (0, _react.useMemo)(function () {
|
|
734
|
+
return (0, _utils2.getSelectedItems)(flattenNodes, value);
|
|
735
|
+
}, [flattenNodes, value]);
|
|
738
736
|
/**
|
|
739
737
|
* 1.Have a value and the value is valid.
|
|
740
738
|
* 2.Regardless of whether the value is valid, as long as renderValue is set, it is judged to have a value.
|
|
741
739
|
*/
|
|
742
740
|
|
|
743
|
-
|
|
744
|
-
var hasValidValue = hasValue() || value.length > 0 && (0, _isFunction2.default)(renderValue);
|
|
741
|
+
var hasValidValue = selectedItems.length > 0 || value.length > 0 && (0, _isFunction2.default)(renderValue);
|
|
745
742
|
var selectedElement = placeholder;
|
|
746
|
-
var selectedItems = (0, _utils2.getSelectedItems)(flattenNodes, value, valueKey);
|
|
747
743
|
|
|
748
744
|
if (hasValidValue) {
|
|
749
745
|
selectedElement = /*#__PURE__*/_react.default.createElement(_Picker.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;
|
|
@@ -126,7 +126,7 @@ function isNodeUncheckable(node, props) {
|
|
|
126
126
|
uncheckableItemValues = _props$uncheckableIte === void 0 ? [] : _props$uncheckableIte,
|
|
127
127
|
valueKey = props.valueKey;
|
|
128
128
|
return uncheckableItemValues.some(function (value) {
|
|
129
|
-
return
|
|
129
|
+
return node[valueKey] === value;
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -171,7 +171,7 @@ function getDisabledState(nodes, node, props) {
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
return disabledItemValues.some(function (value) {
|
|
174
|
-
return node.refKey &&
|
|
174
|
+
return node.refKey && nodes[node.refKey][valueKey] === value;
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -185,18 +185,17 @@ function getCheckTreePickerDefaultValue(value, uncheckableItemValues) {
|
|
|
185
185
|
return [];
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
function getSelectedItems(nodes,
|
|
189
|
-
var
|
|
190
|
-
|
|
188
|
+
function getSelectedItems(nodes, values) {
|
|
189
|
+
var checkedItems = [];
|
|
190
|
+
values.forEach(function (value) {
|
|
191
|
+
var refKey = (0, _treeUtils.getNodeFormattedRefKey)(value);
|
|
191
192
|
var node = nodes[refKey];
|
|
192
193
|
|
|
193
|
-
if (
|
|
194
|
-
|
|
195
|
-
})) {
|
|
196
|
-
checkItems.push(node);
|
|
194
|
+
if (!(0, _isNil2.default)(node)) {
|
|
195
|
+
checkedItems.push(node);
|
|
197
196
|
}
|
|
198
197
|
});
|
|
199
|
-
return
|
|
198
|
+
return checkedItems;
|
|
200
199
|
}
|
|
201
200
|
|
|
202
201
|
function getNodeCheckState(_ref) {
|
package/cjs/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;
|
|
@@ -45,6 +45,11 @@ var PredefinedRanges = /*#__PURE__*/_react.default.forwardRef(function (props, r
|
|
|
45
45
|
return item.label === key;
|
|
46
46
|
});
|
|
47
47
|
}, [calendarDate]);
|
|
48
|
+
|
|
49
|
+
if (ranges.length === 0) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
48
53
|
return /*#__PURE__*/_react.default.createElement(_Stack.default, (0, _extends2.default)({
|
|
49
54
|
className: className,
|
|
50
55
|
ref: ref,
|
|
@@ -601,6 +601,12 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
601
601
|
onToggleMeridian: handleToggleMeridian,
|
|
602
602
|
renderTitle: renderTitle
|
|
603
603
|
};
|
|
604
|
+
var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
605
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
606
|
+
})) || [];
|
|
607
|
+
var bottomRanges = ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
608
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
609
|
+
});
|
|
604
610
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
605
611
|
role: "dialog",
|
|
606
612
|
className: classes,
|
|
@@ -611,13 +617,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
611
617
|
className: panelClasses
|
|
612
618
|
}, /*#__PURE__*/_react.default.createElement(_Stack.default, {
|
|
613
619
|
alignItems: "flex-start"
|
|
614
|
-
}, /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
|
|
620
|
+
}, sideRanges.length > 0 && /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
|
|
615
621
|
direction: "column",
|
|
616
622
|
spacing: 0,
|
|
617
623
|
className: prefix('daterange-predefined'),
|
|
618
|
-
ranges:
|
|
619
|
-
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
620
|
-
})) || [],
|
|
624
|
+
ranges: sideRanges,
|
|
621
625
|
calendarDate: calendarDate,
|
|
622
626
|
locale: locale,
|
|
623
627
|
disabledShortcut: disabledShortcutButton,
|
|
@@ -640,9 +644,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
640
644
|
hideOkBtn: oneTap,
|
|
641
645
|
onOk: handleOK,
|
|
642
646
|
onClickShortcut: handleShortcutPageDate,
|
|
643
|
-
ranges:
|
|
644
|
-
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
645
|
-
})
|
|
647
|
+
ranges: bottomRanges
|
|
646
648
|
})))));
|
|
647
649
|
};
|
|
648
650
|
|
|
@@ -127,6 +127,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
127
127
|
columnData = _useColumnData.columnData,
|
|
128
128
|
setColumnData = _useColumnData.setColumnData,
|
|
129
129
|
addColumn = _useColumnData.addColumn,
|
|
130
|
+
romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
|
|
130
131
|
enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
|
|
131
132
|
|
|
132
133
|
(0, _utils3.useUpdateEffect)(function () {
|
|
@@ -210,7 +211,8 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
210
211
|
var _node$childrenKey, _node$childrenKey2, _triggerRef$current, _triggerRef$current$u;
|
|
211
212
|
|
|
212
213
|
setSelectedPaths(cascadePaths);
|
|
213
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
214
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
215
|
+
var columnIndex = cascadePaths.length; // Lazy load node's children
|
|
214
216
|
|
|
215
217
|
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
|
|
216
218
|
node.loading = true;
|
|
@@ -223,21 +225,24 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
223
225
|
|
|
224
226
|
if (targetRef.current) {
|
|
225
227
|
addFlattenData(data, node);
|
|
226
|
-
addColumn(data,
|
|
228
|
+
addColumn(data, columnIndex);
|
|
227
229
|
}
|
|
228
230
|
});
|
|
229
231
|
} else {
|
|
230
232
|
node.loading = false;
|
|
231
233
|
node[childrenKey] = children;
|
|
232
234
|
addFlattenData(children, node);
|
|
233
|
-
addColumn(children,
|
|
235
|
+
addColumn(children, columnIndex);
|
|
234
236
|
}
|
|
235
237
|
} else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
|
|
236
|
-
addColumn(node[childrenKey],
|
|
238
|
+
addColumn(node[childrenKey], columnIndex);
|
|
239
|
+
} else {
|
|
240
|
+
// Removes subsequent columns of the current column when the clicked node is a leaf node.
|
|
241
|
+
romoveColumnByIndex(columnIndex);
|
|
237
242
|
}
|
|
238
243
|
|
|
239
244
|
(_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);
|
|
240
|
-
}, [onSelect, getChildren, childrenKey, addColumn,
|
|
245
|
+
}, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
|
|
241
246
|
var handleCheck = (0, _react.useCallback)(function (node, event, checked) {
|
|
242
247
|
var nodeValue = node[valueKey];
|
|
243
248
|
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
|
};
|
|
@@ -234,6 +234,15 @@ function useColumnData(flattenData) {
|
|
|
234
234
|
function addColumn(column, index) {
|
|
235
235
|
setColumnData([].concat((0, _slice.default)(columnData, 0, index), [column]));
|
|
236
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Remove subsequent columns of the specified column
|
|
239
|
+
* @param index
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
function romoveColumnByIndex(index) {
|
|
244
|
+
setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
|
|
245
|
+
}
|
|
237
246
|
|
|
238
247
|
function enforceUpdateColumnData(nextData) {
|
|
239
248
|
var nextFlattenData = (0, _treeUtils.flattenTree)(nextData);
|
|
@@ -245,6 +254,7 @@ function useColumnData(flattenData) {
|
|
|
245
254
|
return {
|
|
246
255
|
columnData: columnData,
|
|
247
256
|
addColumn: addColumn,
|
|
257
|
+
romoveColumnByIndex: romoveColumnByIndex,
|
|
248
258
|
setColumnData: setColumnData,
|
|
249
259
|
enforceUpdateColumnData: enforceUpdateColumnData
|
|
250
260
|
};
|
|
@@ -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;
|
|
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
6
|
|
|
7
7
|
exports.__esModule = true;
|
|
8
|
-
exports.default =
|
|
8
|
+
exports.default = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -37,9 +37,6 @@ var _Picker = require("../Picker");
|
|
|
37
37
|
|
|
38
38
|
var _TreeContext = _interopRequireDefault(require("../Tree/TreeContext"));
|
|
39
39
|
|
|
40
|
-
// default value for virtualized
|
|
41
|
-
var maxTreeHeight = 320;
|
|
42
|
-
exports.maxTreeHeight = maxTreeHeight;
|
|
43
40
|
var emptyArray = [];
|
|
44
41
|
|
|
45
42
|
var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
@@ -55,13 +52,15 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
55
52
|
overrideLocale = props.locale,
|
|
56
53
|
_props$height = props.height,
|
|
57
54
|
height = _props$height === void 0 ? 360 : _props$height,
|
|
55
|
+
_props$menuMaxHeight = props.menuMaxHeight,
|
|
56
|
+
menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
|
|
57
|
+
menuStyle = props.menuStyle,
|
|
58
58
|
className = props.className,
|
|
59
59
|
disabled = props.disabled,
|
|
60
60
|
_props$placement = props.placement,
|
|
61
61
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
62
62
|
_props$cleanable = props.cleanable,
|
|
63
63
|
cleanable = _props$cleanable === void 0 ? true : _props$cleanable,
|
|
64
|
-
menuStyle = props.menuStyle,
|
|
65
64
|
_props$searchable = props.searchable,
|
|
66
65
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
67
66
|
_props$virtualized = props.virtualized,
|
|
@@ -114,7 +113,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
114
113
|
renderExtraFooter = props.renderExtraFooter,
|
|
115
114
|
renderMenu = props.renderMenu,
|
|
116
115
|
renderValue = props.renderValue,
|
|
117
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "className", "disabled", "placement", "cleanable", "
|
|
116
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
|
|
118
117
|
var triggerRef = (0, _react.useRef)(null);
|
|
119
118
|
var targetRef = (0, _react.useRef)(null);
|
|
120
119
|
var listRef = (0, _react.useRef)(null);
|
|
@@ -502,13 +501,16 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
502
501
|
var nullValue = null;
|
|
503
502
|
var target = event.target; // exclude searchBar
|
|
504
503
|
|
|
505
|
-
if (target.matches('div[role="searchbox"] > input')) {
|
|
504
|
+
if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
|
|
506
505
|
return;
|
|
507
506
|
}
|
|
508
507
|
|
|
509
|
-
|
|
508
|
+
if (!isControlled) {
|
|
509
|
+
setValue(null);
|
|
510
|
+
}
|
|
511
|
+
|
|
510
512
|
onChange === null || onChange === void 0 ? void 0 : onChange(nullValue, event);
|
|
511
|
-
}, [onChange, setValue]);
|
|
513
|
+
}, [cleanable, disabled, onChange, setValue, isControlled]);
|
|
512
514
|
var onPickerKeydown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
|
|
513
515
|
toggle: !activeNode || !active,
|
|
514
516
|
triggerRef: triggerRef,
|
|
@@ -644,7 +646,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
644
646
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
645
647
|
className: treePrefix('nodes')
|
|
646
648
|
}, virtualized ? /*#__PURE__*/_react.default.createElement(_VirtualizedList.AutoSizer, {
|
|
647
|
-
defaultHeight: inline ? height :
|
|
649
|
+
defaultHeight: inline ? height : menuMaxHeight,
|
|
648
650
|
style: {
|
|
649
651
|
width: 'auto',
|
|
650
652
|
height: 'auto'
|
|
@@ -673,13 +675,10 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
673
675
|
left: left,
|
|
674
676
|
top: top
|
|
675
677
|
});
|
|
676
|
-
var styles = virtualized ? (0, _extends2.default)({
|
|
677
|
-
height: height
|
|
678
|
-
}, mergedMenuStyle) : (0, _extends2.default)({}, mergedMenuStyle);
|
|
679
678
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
680
679
|
autoWidth: menuAutoWidth,
|
|
681
680
|
className: classes,
|
|
682
|
-
style:
|
|
681
|
+
style: mergedMenuStyle,
|
|
683
682
|
ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
|
|
684
683
|
onKeyDown: onPickerKeydown,
|
|
685
684
|
target: triggerRef
|