@douyinfe/semi-ui 2.15.0-beta.0 → 2.15.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/datePicker/__test__/datePicker.test.js +1 -0
- package/datePicker/_story/v2/FixTriggerRender.tsx +36 -0
- package/datePicker/_story/v2/index.js +1 -0
- package/dist/css/semi.css +5 -5
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +61 -17
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/tree/index.js +12 -3
- package/lib/cjs/tree/treeNode.js +3 -1
- package/lib/cjs/treeSelect/index.js +12 -3
- package/lib/es/tree/index.js +10 -3
- package/lib/es/tree/treeNode.js +3 -1
- package/lib/es/treeSelect/index.js +10 -3
- package/package.json +8 -8
- package/tree/index.tsx +10 -1
- package/tree/treeNode.tsx +2 -1
- package/treeSelect/_story/treeSelect.stories.js +38 -1
- package/treeSelect/index.tsx +9 -2
package/lib/cjs/tree/index.js
CHANGED
|
@@ -27,6 +27,8 @@ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stabl
|
|
|
27
27
|
|
|
28
28
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
29
29
|
|
|
30
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
31
|
+
|
|
30
32
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
31
33
|
|
|
32
34
|
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
@@ -71,6 +73,8 @@ require("@douyinfe/semi-foundation/lib/cjs/tree/tree.css");
|
|
|
71
73
|
|
|
72
74
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
73
75
|
|
|
76
|
+
var _checkboxGroup = _interopRequireDefault(require("../checkbox/checkboxGroup"));
|
|
77
|
+
|
|
74
78
|
var _interface = require("./interface");
|
|
75
79
|
|
|
76
80
|
_forEachInstanceProperty(_context2 = _Object$keys2(_interface)).call(_context2, function (key) {
|
|
@@ -652,7 +656,9 @@ class Tree extends _baseComponent.default {
|
|
|
652
656
|
inputValue,
|
|
653
657
|
filteredKeys,
|
|
654
658
|
dragOverNodeKey,
|
|
655
|
-
dropPosition
|
|
659
|
+
dropPosition,
|
|
660
|
+
checkedKeys,
|
|
661
|
+
realCheckedKeys
|
|
656
662
|
} = this.state;
|
|
657
663
|
const {
|
|
658
664
|
blockNode,
|
|
@@ -671,7 +677,8 @@ class Tree extends _baseComponent.default {
|
|
|
671
677
|
draggable,
|
|
672
678
|
renderFullLabel,
|
|
673
679
|
labelEllipsis,
|
|
674
|
-
virtualize
|
|
680
|
+
virtualize,
|
|
681
|
+
checkRelation
|
|
675
682
|
} = this.props;
|
|
676
683
|
const wrapperCls = (0, _classnames.default)("".concat(prefixcls, "-wrapper"), className);
|
|
677
684
|
const listCls = (0, _classnames.default)("".concat(prefixcls, "-option-list"), {
|
|
@@ -729,7 +736,9 @@ class Tree extends _baseComponent.default {
|
|
|
729
736
|
style: style
|
|
730
737
|
}, filterTreeNode ? this.renderInput() : null, /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
|
|
731
738
|
className: listCls
|
|
732
|
-
}, ariaAttr), noData ? this.renderEmpty() :
|
|
739
|
+
}, ariaAttr), noData ? this.renderEmpty() : multiple ? /*#__PURE__*/_react.default.createElement(_checkboxGroup.default, {
|
|
740
|
+
value: (0, _from.default)(checkRelation === 'related' ? checkedKeys : realCheckedKeys)
|
|
741
|
+
}, this.renderNodeList()) : this.renderNodeList())));
|
|
733
742
|
}
|
|
734
743
|
|
|
735
744
|
}
|
package/lib/cjs/tree/treeNode.js
CHANGED
|
@@ -342,7 +342,8 @@ class TreeNode extends _react.PureComponent {
|
|
|
342
342
|
renderCheckbox() {
|
|
343
343
|
const {
|
|
344
344
|
checked,
|
|
345
|
-
halfChecked
|
|
345
|
+
halfChecked,
|
|
346
|
+
eventKey
|
|
346
347
|
} = this.props;
|
|
347
348
|
const disabled = this.isDisabled();
|
|
348
349
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -351,6 +352,7 @@ class TreeNode extends _react.PureComponent {
|
|
|
351
352
|
onKeyPress: this.handleCheckEnterPress
|
|
352
353
|
}, /*#__PURE__*/_react.default.createElement(_checkbox.Checkbox, {
|
|
353
354
|
"aria-label": 'Toggle the checked state of checkbox',
|
|
355
|
+
value: eventKey,
|
|
354
356
|
indeterminate: halfChecked,
|
|
355
357
|
checked: checked,
|
|
356
358
|
disabled: Boolean(disabled)
|
|
@@ -28,6 +28,8 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
28
28
|
|
|
29
29
|
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
30
30
|
|
|
31
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
32
|
+
|
|
31
33
|
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
32
34
|
|
|
33
35
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
@@ -96,6 +98,8 @@ var _utils = require("../_utils");
|
|
|
96
98
|
|
|
97
99
|
var _semiIcons = require("@douyinfe/semi-icons");
|
|
98
100
|
|
|
101
|
+
var _checkboxGroup = _interopRequireDefault(require("../checkbox/checkboxGroup"));
|
|
102
|
+
|
|
99
103
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
100
104
|
|
|
101
105
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -875,7 +879,9 @@ class TreeSelect extends _baseComponent.default {
|
|
|
875
879
|
motionType,
|
|
876
880
|
inputValue,
|
|
877
881
|
filteredKeys,
|
|
878
|
-
flattenNodes
|
|
882
|
+
flattenNodes,
|
|
883
|
+
checkedKeys,
|
|
884
|
+
realCheckedKeys
|
|
879
885
|
} = this.state;
|
|
880
886
|
const {
|
|
881
887
|
loadData,
|
|
@@ -892,7 +898,8 @@ class TreeSelect extends _baseComponent.default {
|
|
|
892
898
|
optionListStyle,
|
|
893
899
|
searchPosition,
|
|
894
900
|
renderLabel,
|
|
895
|
-
renderFullLabel
|
|
901
|
+
renderFullLabel,
|
|
902
|
+
checkRelation
|
|
896
903
|
} = this.props;
|
|
897
904
|
const wrapperCls = (0, _classnames.default)("".concat(prefixTree, "-wrapper"));
|
|
898
905
|
const listCls = (0, _classnames.default)("".concat(prefixTree, "-option-list"), {
|
|
@@ -933,7 +940,9 @@ class TreeSelect extends _baseComponent.default {
|
|
|
933
940
|
role: "tree",
|
|
934
941
|
"aria-multiselectable": multiple ? true : false,
|
|
935
942
|
style: optionListStyle
|
|
936
|
-
}, noData ? this.renderEmpty() :
|
|
943
|
+
}, noData ? this.renderEmpty() : multiple ? /*#__PURE__*/_react.default.createElement(_checkboxGroup.default, {
|
|
944
|
+
value: (0, _from.default)(checkRelation === 'related' ? checkedKeys : realCheckedKeys)
|
|
945
|
+
}, this.renderNodeList()) : this.renderNodeList()), outerBottomSlot));
|
|
937
946
|
};
|
|
938
947
|
|
|
939
948
|
this.state = {
|
package/lib/es/tree/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import _Set from "@babel/runtime-corejs3/core-js-stable/set";
|
|
|
7
7
|
import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
8
8
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
9
9
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
10
|
+
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
|
|
10
11
|
|
|
11
12
|
/* eslint-disable max-lines-per-function */
|
|
12
13
|
import React from 'react';
|
|
@@ -27,6 +28,7 @@ import NodeList from './nodeList';
|
|
|
27
28
|
import LocaleConsumer from '../locale/localeConsumer';
|
|
28
29
|
import '@douyinfe/semi-foundation/lib/es/tree/tree.css';
|
|
29
30
|
import { IconSearch } from '@douyinfe/semi-icons';
|
|
31
|
+
import CheckboxGroup from '../checkbox/checkboxGroup';
|
|
30
32
|
export * from './interface';
|
|
31
33
|
const prefixcls = cssClasses.PREFIX;
|
|
32
34
|
|
|
@@ -593,7 +595,9 @@ class Tree extends BaseComponent {
|
|
|
593
595
|
inputValue,
|
|
594
596
|
filteredKeys,
|
|
595
597
|
dragOverNodeKey,
|
|
596
|
-
dropPosition
|
|
598
|
+
dropPosition,
|
|
599
|
+
checkedKeys,
|
|
600
|
+
realCheckedKeys
|
|
597
601
|
} = this.state;
|
|
598
602
|
const {
|
|
599
603
|
blockNode,
|
|
@@ -612,7 +616,8 @@ class Tree extends BaseComponent {
|
|
|
612
616
|
draggable,
|
|
613
617
|
renderFullLabel,
|
|
614
618
|
labelEllipsis,
|
|
615
|
-
virtualize
|
|
619
|
+
virtualize,
|
|
620
|
+
checkRelation
|
|
616
621
|
} = this.props;
|
|
617
622
|
const wrapperCls = cls("".concat(prefixcls, "-wrapper"), className);
|
|
618
623
|
const listCls = cls("".concat(prefixcls, "-option-list"), {
|
|
@@ -670,7 +675,9 @@ class Tree extends BaseComponent {
|
|
|
670
675
|
style: style
|
|
671
676
|
}, filterTreeNode ? this.renderInput() : null, /*#__PURE__*/React.createElement("div", _Object$assign({
|
|
672
677
|
className: listCls
|
|
673
|
-
}, ariaAttr), noData ? this.renderEmpty() :
|
|
678
|
+
}, ariaAttr), noData ? this.renderEmpty() : multiple ? /*#__PURE__*/React.createElement(CheckboxGroup, {
|
|
679
|
+
value: _Array$from(checkRelation === 'related' ? checkedKeys : realCheckedKeys)
|
|
680
|
+
}, this.renderNodeList()) : this.renderNodeList())));
|
|
674
681
|
}
|
|
675
682
|
|
|
676
683
|
}
|
package/lib/es/tree/treeNode.js
CHANGED
|
@@ -303,7 +303,8 @@ export default class TreeNode extends PureComponent {
|
|
|
303
303
|
renderCheckbox() {
|
|
304
304
|
const {
|
|
305
305
|
checked,
|
|
306
|
-
halfChecked
|
|
306
|
+
halfChecked,
|
|
307
|
+
eventKey
|
|
307
308
|
} = this.props;
|
|
308
309
|
const disabled = this.isDisabled();
|
|
309
310
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -312,6 +313,7 @@ export default class TreeNode extends PureComponent {
|
|
|
312
313
|
onKeyPress: this.handleCheckEnterPress
|
|
313
314
|
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
314
315
|
"aria-label": 'Toggle the checked state of checkbox',
|
|
316
|
+
value: eventKey,
|
|
315
317
|
indeterminate: halfChecked,
|
|
316
318
|
checked: checked,
|
|
317
319
|
disabled: Boolean(disabled)
|
|
@@ -11,6 +11,7 @@ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance
|
|
|
11
11
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
12
12
|
import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
|
|
13
13
|
import _Set from "@babel/runtime-corejs3/core-js-stable/set";
|
|
14
|
+
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
|
|
14
15
|
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
15
16
|
import React, { Fragment } from 'react';
|
|
16
17
|
import ReactDOM from 'react-dom';
|
|
@@ -39,6 +40,7 @@ import Trigger from '../trigger';
|
|
|
39
40
|
import TagInput from '../tagInput';
|
|
40
41
|
import { isSemiIcon } from '../_utils';
|
|
41
42
|
import { IconChevronDown, IconClear, IconSearch } from '@douyinfe/semi-icons';
|
|
43
|
+
import CheckboxGroup from '../checkbox/checkboxGroup';
|
|
42
44
|
const prefixcls = cssClasses.PREFIX;
|
|
43
45
|
const prefixTree = cssClasses.PREFIX_TREE;
|
|
44
46
|
const key = 0;
|
|
@@ -821,7 +823,9 @@ class TreeSelect extends BaseComponent {
|
|
|
821
823
|
motionType,
|
|
822
824
|
inputValue,
|
|
823
825
|
filteredKeys,
|
|
824
|
-
flattenNodes
|
|
826
|
+
flattenNodes,
|
|
827
|
+
checkedKeys,
|
|
828
|
+
realCheckedKeys
|
|
825
829
|
} = this.state;
|
|
826
830
|
const {
|
|
827
831
|
loadData,
|
|
@@ -838,7 +842,8 @@ class TreeSelect extends BaseComponent {
|
|
|
838
842
|
optionListStyle,
|
|
839
843
|
searchPosition,
|
|
840
844
|
renderLabel,
|
|
841
|
-
renderFullLabel
|
|
845
|
+
renderFullLabel,
|
|
846
|
+
checkRelation
|
|
842
847
|
} = this.props;
|
|
843
848
|
const wrapperCls = cls("".concat(prefixTree, "-wrapper"));
|
|
844
849
|
const listCls = cls("".concat(prefixTree, "-option-list"), {
|
|
@@ -879,7 +884,9 @@ class TreeSelect extends BaseComponent {
|
|
|
879
884
|
role: "tree",
|
|
880
885
|
"aria-multiselectable": multiple ? true : false,
|
|
881
886
|
style: optionListStyle
|
|
882
|
-
}, noData ? this.renderEmpty() :
|
|
887
|
+
}, noData ? this.renderEmpty() : multiple ? /*#__PURE__*/React.createElement(CheckboxGroup, {
|
|
888
|
+
value: _Array$from(checkRelation === 'related' ? checkedKeys : realCheckedKeys)
|
|
889
|
+
}, this.renderNodeList()) : this.renderNodeList()), outerBottomSlot));
|
|
883
890
|
};
|
|
884
891
|
|
|
885
892
|
this.state = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-ui",
|
|
3
|
-
"version": "2.15.0
|
|
3
|
+
"version": "2.15.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es/index.js",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@babel/runtime-corejs3": "^7.15.4",
|
|
17
17
|
"@douyinfe/semi-animation": "2.12.0",
|
|
18
|
-
"@douyinfe/semi-animation-react": "2.15.0
|
|
19
|
-
"@douyinfe/semi-foundation": "2.15.0
|
|
20
|
-
"@douyinfe/semi-icons": "2.15.0
|
|
21
|
-
"@douyinfe/semi-illustrations": "2.15.0
|
|
22
|
-
"@douyinfe/semi-theme-default": "2.15.0
|
|
18
|
+
"@douyinfe/semi-animation-react": "2.15.0",
|
|
19
|
+
"@douyinfe/semi-foundation": "2.15.0",
|
|
20
|
+
"@douyinfe/semi-icons": "2.15.0",
|
|
21
|
+
"@douyinfe/semi-illustrations": "2.15.0",
|
|
22
|
+
"@douyinfe/semi-theme-default": "2.15.0",
|
|
23
23
|
"@types/react-window": "^1.8.2",
|
|
24
24
|
"async-validator": "^3.5.0",
|
|
25
25
|
"classnames": "^2.2.6",
|
|
@@ -69,13 +69,13 @@
|
|
|
69
69
|
],
|
|
70
70
|
"author": "",
|
|
71
71
|
"license": "MIT",
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "236be8e52864297171e3b08da20475139dadd633",
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
75
75
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
76
76
|
"@babel/preset-env": "^7.15.8",
|
|
77
77
|
"@babel/preset-react": "^7.14.5",
|
|
78
|
-
"@douyinfe/semi-scss-compile": "2.15.0
|
|
78
|
+
"@douyinfe/semi-scss-compile": "2.15.0",
|
|
79
79
|
"@storybook/addon-knobs": "^6.3.1",
|
|
80
80
|
"@types/lodash": "^4.14.176",
|
|
81
81
|
"babel-loader": "^8.2.2",
|
package/tree/index.tsx
CHANGED
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
KeyEntity,
|
|
42
42
|
OptionProps
|
|
43
43
|
} from './interface';
|
|
44
|
+
import CheckboxGroup from '../checkbox/checkboxGroup';
|
|
44
45
|
|
|
45
46
|
export * from './interface';
|
|
46
47
|
export { AutoSizerProps } from './autoSizer';
|
|
@@ -688,6 +689,8 @@ class Tree extends BaseComponent<TreeProps, TreeState> {
|
|
|
688
689
|
filteredKeys,
|
|
689
690
|
dragOverNodeKey,
|
|
690
691
|
dropPosition,
|
|
692
|
+
checkedKeys,
|
|
693
|
+
realCheckedKeys,
|
|
691
694
|
} = this.state;
|
|
692
695
|
|
|
693
696
|
const {
|
|
@@ -708,6 +711,7 @@ class Tree extends BaseComponent<TreeProps, TreeState> {
|
|
|
708
711
|
renderFullLabel,
|
|
709
712
|
labelEllipsis,
|
|
710
713
|
virtualize,
|
|
714
|
+
checkRelation,
|
|
711
715
|
} = this.props;
|
|
712
716
|
const wrapperCls = cls(`${prefixcls}-wrapper`, className);
|
|
713
717
|
const listCls = cls(`${prefixcls}-option-list`, {
|
|
@@ -762,7 +766,12 @@ class Tree extends BaseComponent<TreeProps, TreeState> {
|
|
|
762
766
|
<div aria-label={this.props['aria-label']} className={wrapperCls} style={style}>
|
|
763
767
|
{filterTreeNode ? this.renderInput() : null}
|
|
764
768
|
<div className={listCls} {...ariaAttr}>
|
|
765
|
-
{noData ? this.renderEmpty() :
|
|
769
|
+
{noData ? this.renderEmpty() : (multiple ?
|
|
770
|
+
(<CheckboxGroup value={Array.from(checkRelation === 'related' ? checkedKeys : realCheckedKeys)}>
|
|
771
|
+
{this.renderNodeList()}
|
|
772
|
+
</CheckboxGroup>) :
|
|
773
|
+
this.renderNodeList()
|
|
774
|
+
)}
|
|
766
775
|
</div>
|
|
767
776
|
</div>
|
|
768
777
|
</TreeContext.Provider>
|
package/tree/treeNode.tsx
CHANGED
|
@@ -221,7 +221,7 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
|
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
renderCheckbox() {
|
|
224
|
-
const { checked, halfChecked } = this.props;
|
|
224
|
+
const { checked, halfChecked, eventKey } = this.props;
|
|
225
225
|
const disabled = this.isDisabled();
|
|
226
226
|
return (
|
|
227
227
|
<div
|
|
@@ -231,6 +231,7 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
|
|
|
231
231
|
>
|
|
232
232
|
<Checkbox
|
|
233
233
|
aria-label='Toggle the checked state of checkbox'
|
|
234
|
+
value={eventKey}
|
|
234
235
|
indeterminate={halfChecked}
|
|
235
236
|
checked={checked}
|
|
236
237
|
disabled={Boolean(disabled)}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import { Icon, Button, Form, Popover, Tag, Typography } from '../../index';
|
|
2
|
+
import { Icon, Button, Form, Popover, Tag, Typography, CheckboxGroup } from '../../index';
|
|
3
3
|
import TreeSelect from '../index';
|
|
4
4
|
import { flattenDeep } from 'lodash';
|
|
5
5
|
import CustomTrigger from './CustomTrigger';
|
|
@@ -152,6 +152,43 @@ const treeDataWithoutValue = [
|
|
|
152
152
|
},
|
|
153
153
|
];
|
|
154
154
|
|
|
155
|
+
export const TreeSelectWrapper = () => (
|
|
156
|
+
<div>
|
|
157
|
+
<div>github issue 750 修改测试用例</div>
|
|
158
|
+
<CheckboxGroup>
|
|
159
|
+
<TreeSelect
|
|
160
|
+
showClear={true}
|
|
161
|
+
expandAll
|
|
162
|
+
style={{width: 400}}
|
|
163
|
+
treeData={[
|
|
164
|
+
{
|
|
165
|
+
key: '1',
|
|
166
|
+
label: '所有节点',
|
|
167
|
+
value: '1',
|
|
168
|
+
children: [
|
|
169
|
+
{ key: '20006251', label: 'Semi', value: 'semi@bytedance.com' },
|
|
170
|
+
{ key: '20006248', label: 'Design', value: 'design@bytedance.com' },
|
|
171
|
+
{
|
|
172
|
+
key: '20006205',
|
|
173
|
+
label: 'React',
|
|
174
|
+
value: 'react@bytedance.com',
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
},
|
|
178
|
+
]}
|
|
179
|
+
multiple
|
|
180
|
+
filterTreeNode
|
|
181
|
+
showFilteredOnly={true}
|
|
182
|
+
leafOnly
|
|
183
|
+
/>
|
|
184
|
+
</CheckboxGroup>
|
|
185
|
+
</div>
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
TreeSelectWrapper.story = {
|
|
189
|
+
name: 'treeSelect wrapper',
|
|
190
|
+
};
|
|
191
|
+
|
|
155
192
|
class SimpleTree extends React.Component {
|
|
156
193
|
render() {
|
|
157
194
|
return (
|
package/treeSelect/index.tsx
CHANGED
|
@@ -50,6 +50,7 @@ import { isSemiIcon } from '../_utils';
|
|
|
50
50
|
import { OptionProps, TreeProps, TreeState, FlattenNode, TreeNodeData, TreeNodeProps } from '../tree/interface';
|
|
51
51
|
import { Motion } from '../_base/base';
|
|
52
52
|
import { IconChevronDown, IconClear, IconSearch } from '@douyinfe/semi-icons';
|
|
53
|
+
import CheckboxGroup from '../checkbox/checkboxGroup';
|
|
53
54
|
|
|
54
55
|
export type ExpandAction = false | 'click' | 'doubleClick';
|
|
55
56
|
|
|
@@ -1301,7 +1302,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
1301
1302
|
};
|
|
1302
1303
|
|
|
1303
1304
|
renderTree = () => {
|
|
1304
|
-
const { keyEntities, motionKeys, motionType, inputValue, filteredKeys, flattenNodes } = this.state;
|
|
1305
|
+
const { keyEntities, motionKeys, motionType, inputValue, filteredKeys, flattenNodes, checkedKeys, realCheckedKeys } = this.state;
|
|
1305
1306
|
const {
|
|
1306
1307
|
loadData,
|
|
1307
1308
|
filterTreeNode,
|
|
@@ -1318,6 +1319,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
1318
1319
|
searchPosition,
|
|
1319
1320
|
renderLabel,
|
|
1320
1321
|
renderFullLabel,
|
|
1322
|
+
checkRelation,
|
|
1321
1323
|
} = this.props;
|
|
1322
1324
|
const wrapperCls = cls(`${prefixTree}-wrapper`);
|
|
1323
1325
|
const listCls = cls(`${prefixTree}-option-list`, {
|
|
@@ -1362,7 +1364,12 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
|
|
|
1362
1364
|
this.renderInput()
|
|
1363
1365
|
}
|
|
1364
1366
|
<div className={listCls} role="tree" aria-multiselectable={multiple ? true : false} style={optionListStyle}>
|
|
1365
|
-
{noData ? this.renderEmpty() :
|
|
1367
|
+
{ noData ? this.renderEmpty() : (multiple ?
|
|
1368
|
+
(<CheckboxGroup value={Array.from(checkRelation === 'related' ? checkedKeys : realCheckedKeys)}>
|
|
1369
|
+
{this.renderNodeList()}
|
|
1370
|
+
</CheckboxGroup>) :
|
|
1371
|
+
this.renderNodeList()
|
|
1372
|
+
)}
|
|
1366
1373
|
</div>
|
|
1367
1374
|
{outerBottomSlot}
|
|
1368
1375
|
</div>
|