feffery_antd_components 0.1.16 → 0.2.0-rc1
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/DESCRIPTION +1 -1
- package/NAMESPACE +1 -0
- package/Project.toml +1 -1
- package/README-en_US.md +51 -0
- package/README.md +14 -5
- package/build/lib/feffery_antd_components/AntdAccordion.py +66 -0
- package/build/lib/feffery_antd_components/AntdAccordionItem.py +60 -0
- package/build/lib/feffery_antd_components/AntdAffix.py +58 -0
- package/build/lib/feffery_antd_components/AntdAlert.py +64 -0
- package/build/lib/feffery_antd_components/AntdAnchor.py +64 -0
- package/build/lib/feffery_antd_components/AntdAvatar.py +83 -0
- package/build/lib/feffery_antd_components/AntdBackTop.py +56 -0
- package/build/lib/feffery_antd_components/AntdBadge.py +74 -0
- package/build/lib/feffery_antd_components/AntdBreadcrumb.py +78 -0
- package/build/lib/feffery_antd_components/AntdButton.py +76 -0
- package/build/lib/feffery_antd_components/AntdCalendar.py +79 -0
- package/build/lib/feffery_antd_components/AntdCard.py +90 -0
- package/build/lib/feffery_antd_components/AntdCardGrid.py +56 -0
- package/build/lib/feffery_antd_components/AntdCarousel.py +60 -0
- package/build/lib/feffery_antd_components/AntdCascader.py +103 -0
- package/build/lib/feffery_antd_components/AntdCheckCard.py +64 -0
- package/build/lib/feffery_antd_components/AntdCheckCardGroup.py +64 -0
- package/build/lib/feffery_antd_components/AntdCheckbox.py +75 -0
- package/build/lib/feffery_antd_components/AntdCheckboxGroup.py +83 -0
- package/build/lib/feffery_antd_components/AntdCol.py +150 -0
- package/build/lib/feffery_antd_components/AntdCollapse.py +85 -0
- package/build/lib/feffery_antd_components/AntdComment.py +90 -0
- package/build/lib/feffery_antd_components/AntdContent.py +54 -0
- package/build/lib/feffery_antd_components/AntdCopyText.py +58 -0
- package/build/lib/feffery_antd_components/AntdCountdown.py +76 -0
- package/build/lib/feffery_antd_components/AntdCustomSkeleton.py +64 -0
- package/build/lib/feffery_antd_components/AntdDatePicker.py +107 -0
- package/build/lib/feffery_antd_components/AntdDateRangePicker.py +109 -0
- package/build/lib/feffery_antd_components/AntdDescriptionItem.py +62 -0
- package/build/lib/feffery_antd_components/AntdDescriptions.py +80 -0
- package/build/lib/feffery_antd_components/AntdDivider.py +66 -0
- package/build/lib/feffery_antd_components/AntdDraggerUpload.py +126 -0
- package/build/lib/feffery_antd_components/AntdDrawer.py +78 -0
- package/build/lib/feffery_antd_components/AntdDropdown.py +90 -0
- package/build/lib/feffery_antd_components/AntdEmpty.py +60 -0
- package/build/lib/feffery_antd_components/AntdFooter.py +54 -0
- package/build/lib/feffery_antd_components/AntdForm.py +76 -0
- package/build/lib/feffery_antd_components/AntdFormItem.py +88 -0
- package/build/lib/feffery_antd_components/AntdHeader.py +54 -0
- package/build/lib/feffery_antd_components/AntdIcon.py +56 -0
- package/build/lib/feffery_antd_components/AntdImage.py +66 -0
- package/build/lib/feffery_antd_components/AntdInput.py +121 -0
- package/build/lib/feffery_antd_components/AntdInputNumber.py +109 -0
- package/build/lib/feffery_antd_components/AntdLayout.py +54 -0
- package/build/lib/feffery_antd_components/AntdMentions.py +80 -0
- package/build/lib/feffery_antd_components/AntdMenu.py +85 -0
- package/build/lib/feffery_antd_components/AntdMessage.py +60 -0
- package/build/lib/feffery_antd_components/AntdModal.py +94 -0
- package/build/lib/feffery_antd_components/AntdNotification.py +64 -0
- package/build/lib/feffery_antd_components/AntdPageHeader.py +66 -0
- package/build/lib/feffery_antd_components/AntdPagination.py +99 -0
- package/build/lib/feffery_antd_components/AntdParagraph.py +74 -0
- package/build/lib/feffery_antd_components/AntdPasteImage.py +56 -0
- package/build/lib/feffery_antd_components/AntdPictureUpload.py +148 -0
- package/build/lib/feffery_antd_components/AntdPopconfirm.py +86 -0
- package/build/lib/feffery_antd_components/AntdPopover.py +78 -0
- package/build/lib/feffery_antd_components/AntdPopupCard.py +72 -0
- package/build/lib/feffery_antd_components/AntdProgress.py +92 -0
- package/{feffery_antd_components → build/lib/feffery_antd_components}/AntdRadio.py +0 -0
- package/build/lib/feffery_antd_components/AntdRadioGroup.py +93 -0
- package/build/lib/feffery_antd_components/AntdRate.py +64 -0
- package/build/lib/feffery_antd_components/AntdResult.py +58 -0
- package/build/lib/feffery_antd_components/AntdRibbon.py +58 -0
- package/build/lib/feffery_antd_components/AntdRow.py +76 -0
- package/build/lib/feffery_antd_components/AntdSegmented.py +91 -0
- package/build/lib/feffery_antd_components/AntdSegmentedColoring.py +86 -0
- package/build/lib/feffery_antd_components/AntdSelect.py +127 -0
- package/build/lib/feffery_antd_components/AntdSider.py +72 -0
- package/build/lib/feffery_antd_components/AntdSkeleton.py +90 -0
- package/build/lib/feffery_antd_components/AntdSkeletonAvatar.py +50 -0
- package/build/lib/feffery_antd_components/AntdSkeletonButton.py +52 -0
- package/build/lib/feffery_antd_components/AntdSkeletonImage.py +44 -0
- package/build/lib/feffery_antd_components/AntdSkeletonInput.py +48 -0
- package/build/lib/feffery_antd_components/AntdSlider.py +74 -0
- package/build/lib/feffery_antd_components/AntdSpace.py +64 -0
- package/build/lib/feffery_antd_components/AntdSpin.py +72 -0
- package/build/lib/feffery_antd_components/AntdStatistic.py +78 -0
- package/build/lib/feffery_antd_components/AntdSteps.py +76 -0
- package/build/lib/feffery_antd_components/AntdSwitch.py +81 -0
- package/build/lib/feffery_antd_components/AntdTabPane.py +68 -0
- package/build/lib/feffery_antd_components/AntdTable.py +361 -0
- package/build/lib/feffery_antd_components/AntdTabs.py +97 -0
- package/build/lib/feffery_antd_components/AntdTag.py +58 -0
- package/{feffery_antd_components → build/lib/feffery_antd_components}/AntdTestLink.py +0 -0
- package/build/lib/feffery_antd_components/AntdText.py +76 -0
- package/build/lib/feffery_antd_components/AntdTimePicker.py +99 -0
- package/build/lib/feffery_antd_components/AntdTimeRangePicker.py +99 -0
- package/build/lib/feffery_antd_components/AntdTimeline.py +72 -0
- package/build/lib/feffery_antd_components/AntdTitle.py +78 -0
- package/build/lib/feffery_antd_components/AntdTooltip.py +68 -0
- package/build/lib/feffery_antd_components/AntdTransfer.py +103 -0
- package/build/lib/feffery_antd_components/AntdTree.py +109 -0
- package/build/lib/feffery_antd_components/AntdTreeSelect.py +115 -0
- package/{feffery_antd_components → build/lib/feffery_antd_components}/AntdTypography.py +0 -0
- package/build/lib/feffery_antd_components/AntdUpload.py +124 -0
- package/build/lib/feffery_antd_components/AntdWatermark.py +68 -0
- package/{feffery_antd_components → build/lib/feffery_antd_components}/Link.py +0 -0
- package/build/lib/feffery_antd_components/__init__.py +53 -0
- package/build/lib/feffery_antd_components/_imports_.py +189 -0
- package/build/lib/feffery_antd_components/feffery_antd_components.min.js +1 -0
- package/build/lib/feffery_antd_components/metadata.json +19958 -0
- package/build/lib/feffery_antd_components/package-info.json +89 -0
- package/feffery_antd_components/AntdAlert.py +1 -1
- package/feffery_antd_components/AntdAnchor.py +1 -1
- package/feffery_antd_components/AntdAvatar.py +1 -1
- package/feffery_antd_components/AntdBackTop.py +1 -1
- package/feffery_antd_components/AntdButton.py +10 -6
- package/feffery_antd_components/AntdCarousel.py +1 -1
- package/feffery_antd_components/AntdCascader.py +9 -5
- package/feffery_antd_components/AntdCol.py +1 -1
- package/feffery_antd_components/AntdContent.py +1 -1
- package/feffery_antd_components/AntdCustomSkeleton.py +1 -1
- package/feffery_antd_components/AntdDraggerUpload.py +1 -1
- package/feffery_antd_components/AntdDrawer.py +1 -1
- package/feffery_antd_components/AntdFooter.py +1 -1
- package/feffery_antd_components/AntdHeader.py +1 -1
- package/feffery_antd_components/AntdIcon.py +8 -4
- package/feffery_antd_components/AntdImage.py +1 -1
- package/feffery_antd_components/AntdInput.py +16 -8
- package/feffery_antd_components/AntdInputNumber.py +11 -7
- package/feffery_antd_components/AntdLayout.py +1 -1
- package/feffery_antd_components/AntdModal.py +10 -4
- package/feffery_antd_components/AntdParagraph.py +1 -1
- package/feffery_antd_components/AntdPasteImage.py +1 -1
- package/feffery_antd_components/AntdPopupCard.py +72 -0
- package/feffery_antd_components/AntdRibbon.py +3 -3
- package/feffery_antd_components/AntdRow.py +1 -1
- package/feffery_antd_components/AntdSegmented.py +5 -3
- package/feffery_antd_components/AntdSegmentedColoring.py +7 -3
- package/feffery_antd_components/AntdSider.py +1 -1
- package/feffery_antd_components/AntdSkeleton.py +1 -1
- package/feffery_antd_components/AntdSpace.py +1 -1
- package/feffery_antd_components/AntdSpin.py +2 -2
- package/feffery_antd_components/AntdStatistic.py +1 -1
- package/feffery_antd_components/AntdTabPane.py +1 -1
- package/feffery_antd_components/AntdTable.py +55 -7
- package/feffery_antd_components/AntdTag.py +1 -1
- package/feffery_antd_components/AntdText.py +1 -1
- package/feffery_antd_components/AntdTitle.py +1 -1
- package/feffery_antd_components/AntdTree.py +6 -4
- package/feffery_antd_components/AntdTreeSelect.py +8 -6
- package/feffery_antd_components/_imports_.py +2 -0
- package/feffery_antd_components/feffery_antd_components.min.js +1 -1
- package/feffery_antd_components/metadata.json +1042 -93
- package/feffery_antd_components/package-info.json +6 -2
- package/git-operations.md +0 -1
- package/images//345/233/275/351/231/205/345/214/226/347/244/272/344/276/213.png +0 -0
- package/package.json +6 -2
- package/setup.py +0 -1
- package/src/FefferyAntdComponents.jl +4 -3
- package/src/jl/'feffery'_antdalert.jl +1 -1
- package/src/jl/'feffery'_antdanchor.jl +1 -1
- package/src/jl/'feffery'_antdavatar.jl +1 -1
- package/src/jl/'feffery'_antdbacktop.jl +1 -1
- package/src/jl/'feffery'_antdbutton.jl +4 -2
- package/src/jl/'feffery'_antdcarousel.jl +1 -1
- package/src/jl/'feffery'_antdcascader.jl +4 -2
- package/src/jl/'feffery'_antdcol.jl +1 -1
- package/src/jl/'feffery'_antdcontent.jl +1 -1
- package/src/jl/'feffery'_antdcustomskeleton.jl +1 -1
- package/src/jl/'feffery'_antddraggerupload.jl +1 -1
- package/src/jl/'feffery'_antddrawer.jl +1 -1
- package/src/jl/'feffery'_antdfooter.jl +1 -1
- package/src/jl/'feffery'_antdheader.jl +1 -1
- package/src/jl/'feffery'_antdicon.jl +4 -2
- package/src/jl/'feffery'_antdimage.jl +1 -1
- package/src/jl/'feffery'_antdinput.jl +8 -4
- package/src/jl/'feffery'_antdinputnumber.jl +5 -3
- package/src/jl/'feffery'_antdlayout.jl +1 -1
- package/src/jl/'feffery'_antdmodal.jl +5 -2
- package/src/jl/'feffery'_antdparagraph.jl +1 -1
- package/src/jl/'feffery'_antdpasteimage.jl +1 -1
- package/src/jl/'feffery'_antdpopupcard.jl +43 -0
- package/src/jl/'feffery'_antdribbon.jl +1 -1
- package/src/jl/'feffery'_antdrow.jl +1 -1
- package/src/jl/'feffery'_antdsegmented.jl +5 -4
- package/src/jl/'feffery'_antdsegmentedcoloring.jl +3 -1
- package/src/jl/'feffery'_antdsider.jl +1 -1
- package/src/jl/'feffery'_antdskeleton.jl +1 -1
- package/src/jl/'feffery'_antdspace.jl +1 -1
- package/src/jl/'feffery'_antdspin.jl +2 -2
- package/src/jl/'feffery'_antdstatistic.jl +1 -1
- package/src/jl/'feffery'_antdtable.jl +31 -4
- package/src/jl/'feffery'_antdtabpane.jl +1 -1
- package/src/jl/'feffery'_antdtag.jl +1 -1
- package/src/jl/'feffery'_antdtext.jl +1 -1
- package/src/jl/'feffery'_antdtitle.jl +1 -1
- package/src/jl/'feffery'_antdtree.jl +3 -2
- package/src/jl/'feffery'_antdtreeselect.jl +3 -2
- package/src/lib/components/AntdAlert.react.js +64 -50
- package/src/lib/components/AntdAnchor.react.js +79 -70
- package/src/lib/components/AntdAvatar.react.js +92 -76
- package/src/lib/components/AntdBackTop.react.js +37 -28
- package/src/lib/components/AntdButton.react.js +82 -54
- package/src/lib/components/AntdCarousel.react.js +43 -34
- package/src/lib/components/AntdCascader.react.js +128 -82
- package/src/lib/components/AntdCheckboxGroup.react.js +2 -0
- package/src/lib/components/AntdDrawer.react.js +68 -59
- package/src/lib/components/AntdIcon.react.js +70 -37
- package/src/lib/components/AntdImage.react.js +16 -3
- package/src/lib/components/AntdInput.react.js +212 -175
- package/src/lib/components/AntdInputNumber.react.js +12 -2
- package/src/lib/components/AntdModal.react.js +22 -1
- package/src/lib/components/AntdPasteImage.react.js +11 -2
- package/src/lib/components/AntdPopupCard.react.js +241 -0
- package/src/lib/components/AntdRibbon.react.js +1 -1
- package/src/lib/components/AntdSegmented.react.js +19 -4
- package/src/lib/components/AntdSegmentedColoring.react.js +107 -82
- package/src/lib/components/AntdSelect.react.js +5 -0
- package/src/lib/components/AntdSpace.react.js +63 -46
- package/src/lib/components/AntdSpin.react.js +21 -6
- package/src/lib/components/AntdStatistic.react.js +68 -59
- package/src/lib/components/AntdTable.react.js +252 -18
- package/src/lib/components/AntdTag.react.js +38 -28
- package/src/lib/components/AntdTree.react.js +182 -136
- package/src/lib/components/AntdTreeSelect.react.js +144 -101
- package/src/lib/components/grid/AntdCol.react.js +61 -52
- package/src/lib/components/grid/AntdRow.react.js +46 -37
- package/src/lib/components/layout/AntdContent.react.js +35 -26
- package/src/lib/components/layout/AntdFooter.react.js +36 -27
- package/src/lib/components/layout/AntdHeader.react.js +35 -26
- package/src/lib/components/layout/AntdLayout.react.js +35 -26
- package/src/lib/components/layout/AntdSider.react.js +61 -52
- package/src/lib/components/skeleton/AntdCustomSkeleton.react.js +11 -3
- package/src/lib/components/skeleton/AntdSkeleton.react.js +11 -2
- package/src/lib/components/styles.css +4 -0
- package/src/lib/components/tabs/AntdTabPane.react.js +46 -37
- package/src/lib/components/typography/AntdParagraph.react.js +59 -50
- package/src/lib/components/typography/AntdText.react.js +61 -52
- package/src/lib/components/typography/AntdTitle.react.js +63 -54
- package/src/lib/components/upload/AntdDraggerUpload.react.js +11 -2
- package/src/lib/components/utils.js +17 -2
- package/src/lib/index.js +24 -1
- package/tests/DebounceTest/app.py +89 -0
- package/tests/SegmentedColoringTest/app.py +106 -0
- package/tests/TableCellClickTest/app.py +67 -0
- package/tests/TableCellRowMergeTest/app.py +88 -0
- package/tests/TableEmptyContentTest/app.py +37 -0
- package/tests/TableMiniChartAdvanceTest/app.py +85 -0
- package/tests/TreeNodeStyleTest/app.py +73 -0
- package/tests/TreeTest/app.py +96 -0
- package/tests/VirtualClassNameTest/app.py +49 -0
- package/usage.py +11 -82
- package/webpack.config.js +45 -11
- package/tests/UploadTest/app.py +0 -70
|
@@ -1,165 +1,168 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { useEffect, useMemo } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { Tree } from 'antd';
|
|
4
4
|
import AntdIcon from './AntdIcon.react';
|
|
5
5
|
import { omitBy, isUndefined } from 'lodash';
|
|
6
|
+
import { flatToTree } from './utils';
|
|
6
7
|
import 'antd/dist/antd.css';
|
|
7
8
|
import './styles.css'
|
|
8
9
|
|
|
9
|
-
// 定义树形控件AntdTree,api参数参考https://ant.design/components/tree-cn/
|
|
10
|
-
export default class AntdTree extends Component {
|
|
11
|
-
|
|
12
|
-
constructor(props) {
|
|
13
|
-
super(props)
|
|
14
|
-
// 初始化expandedKeys
|
|
15
|
-
if (props.defaultExpandedKeys && !props.expandedKeys) {
|
|
16
|
-
// 当defaultExpandedKeys不为空时,为expandedKeys初始化defaultExpandedKeys对应的expandedKeys值
|
|
17
|
-
props.setProps({ expandedKeys: props.defaultExpandedKeys })
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// 初始化selectedKeys
|
|
21
|
-
if (props.defaultSelectedKeys && !props.selectedKeys) {
|
|
22
|
-
// 当defaultSelectedKeys不为空时,为selectedKeys初始化defaultSelectedKeys对应的selectedKeys值
|
|
23
|
-
props.setProps({ selectedKeys: props.defaultSelectedKeys })
|
|
24
|
-
}
|
|
25
10
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
// 定义树形控件AntdTree,api参数参考https://ant.design/components/tree-cn/
|
|
12
|
+
const AntdTree = (props) => {
|
|
13
|
+
|
|
14
|
+
// 取得必要属性或参数
|
|
15
|
+
let {
|
|
16
|
+
id,
|
|
17
|
+
className,
|
|
18
|
+
setProps,
|
|
19
|
+
style,
|
|
20
|
+
key,
|
|
21
|
+
checkable,
|
|
22
|
+
selectable,
|
|
23
|
+
selectedKeys,
|
|
24
|
+
expandedKeys,
|
|
25
|
+
checkedKeys,
|
|
26
|
+
defaultExpandAll,
|
|
27
|
+
defaultExpandedKeys,
|
|
28
|
+
defaultExpandParent,
|
|
29
|
+
checkStrictly,
|
|
30
|
+
defaultCheckedKeys,
|
|
31
|
+
defaultSelectedKeys,
|
|
32
|
+
multiple,
|
|
33
|
+
showLine,
|
|
34
|
+
showIcon,
|
|
35
|
+
height,
|
|
36
|
+
persistence,
|
|
37
|
+
persisted_props,
|
|
38
|
+
persistence_type,
|
|
39
|
+
loading_state
|
|
40
|
+
} = props;
|
|
41
|
+
|
|
42
|
+
if (showLine) {
|
|
43
|
+
showLine = { 'showLeafIcon': false }
|
|
31
44
|
}
|
|
32
45
|
|
|
33
|
-
|
|
34
|
-
// 取得必要属性或参数
|
|
35
|
-
let {
|
|
36
|
-
id,
|
|
37
|
-
className,
|
|
38
|
-
setProps,
|
|
39
|
-
style,
|
|
40
|
-
key,
|
|
41
|
-
checkable,
|
|
42
|
-
selectable,
|
|
43
|
-
selectedKeys,
|
|
44
|
-
expandedKeys,
|
|
45
|
-
checkedKeys,
|
|
46
|
-
defaultExpandAll,
|
|
47
|
-
defaultExpandedKeys,
|
|
48
|
-
defaultExpandParent,
|
|
49
|
-
checkStrictly,
|
|
50
|
-
defaultCheckedKeys,
|
|
51
|
-
defaultSelectedKeys,
|
|
52
|
-
multiple,
|
|
53
|
-
showLine,
|
|
54
|
-
showIcon,
|
|
55
|
-
height,
|
|
56
|
-
persistence,
|
|
57
|
-
persisted_props,
|
|
58
|
-
persistence_type,
|
|
59
|
-
loading_state
|
|
60
|
-
} = this.props;
|
|
61
|
-
|
|
62
|
-
if (showLine) {
|
|
63
|
-
showLine = { 'showLeafIcon': false }
|
|
64
|
-
}
|
|
46
|
+
let { treeData, treeDataMode } = props;
|
|
65
47
|
|
|
66
|
-
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
setProps({
|
|
50
|
+
expandedKeys: defaultExpandedKeys && !expandedKeys ? defaultExpandedKeys : expandedKeys,
|
|
51
|
+
selectedKeys: defaultSelectedKeys && !selectedKeys ? defaultSelectedKeys : selectedKeys,
|
|
52
|
+
checkedKeys: defaultCheckedKeys && !checkedKeys ? defaultCheckedKeys : checkedKeys
|
|
53
|
+
})
|
|
54
|
+
}, [])
|
|
67
55
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
56
|
+
const flatToTreeData = useMemo(() => {
|
|
57
|
+
return flatToTree(treeData);
|
|
58
|
+
}, [treeData])
|
|
71
59
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
60
|
+
// 根据treeDataMode对treeData进行预处理
|
|
61
|
+
if (treeDataMode === 'flat') {
|
|
62
|
+
treeData = flatToTreeData
|
|
63
|
+
}
|
|
76
64
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
65
|
+
// 用于以递归的方式将节点icon属性替换成相应的icon对象
|
|
66
|
+
const add_leaf_node_icon = (inputTreeData) => {
|
|
67
|
+
if (typeof inputTreeData === typeof {}) {
|
|
80
68
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
69
|
+
if (inputTreeData.hasOwnProperty('children')) {
|
|
70
|
+
if (typeof inputTreeData.icon === typeof "") {
|
|
71
|
+
inputTreeData.icon = <AntdIcon icon={inputTreeData.icon} />
|
|
85
72
|
}
|
|
86
|
-
}
|
|
87
73
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
74
|
+
for (var i = 0; i < inputTreeData.children.length; i++) {
|
|
75
|
+
inputTreeData.children[i] = add_leaf_node_icon(inputTreeData.children[i])
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
} else {
|
|
79
|
+
if (typeof inputTreeData.icon === typeof "") {
|
|
80
|
+
inputTreeData.icon = <AntdIcon icon={inputTreeData.icon} />
|
|
91
81
|
}
|
|
92
82
|
}
|
|
83
|
+
}
|
|
93
84
|
|
|
94
|
-
|
|
85
|
+
if (typeof inputTreeData == typeof []) {
|
|
86
|
+
for (var i = 0; i < inputTreeData.length; i++) {
|
|
87
|
+
inputTreeData[i] = add_leaf_node_icon(inputTreeData[i])
|
|
88
|
+
}
|
|
95
89
|
}
|
|
96
90
|
|
|
97
|
-
|
|
91
|
+
return inputTreeData;
|
|
92
|
+
}
|
|
98
93
|
|
|
99
|
-
|
|
100
|
-
setProps({ selectedKeys: e })
|
|
101
|
-
}
|
|
94
|
+
treeData = add_leaf_node_icon(treeData)
|
|
102
95
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
setProps({
|
|
107
|
-
checkedKeys: checkedKeys.checked,
|
|
108
|
-
halfCheckedKeys: checkedKeys.halfChecked
|
|
109
|
-
})
|
|
110
|
-
} else {
|
|
111
|
-
setProps({
|
|
112
|
-
checkedKeys: checkedKeys,
|
|
113
|
-
halfCheckedKeys: e.halfCheckedKeys
|
|
114
|
-
})
|
|
115
|
-
}
|
|
116
|
-
}
|
|
96
|
+
const listenSelect = (e) => {
|
|
97
|
+
setProps({ selectedKeys: e })
|
|
98
|
+
}
|
|
117
99
|
|
|
118
|
-
|
|
119
|
-
|
|
100
|
+
const listenCheck = (checkedKeys, e) => {
|
|
101
|
+
if (checkStrictly) {
|
|
102
|
+
setProps({
|
|
103
|
+
checkedKeys: checkedKeys.checked,
|
|
104
|
+
halfCheckedKeys: checkedKeys.halfChecked
|
|
105
|
+
})
|
|
106
|
+
} else {
|
|
107
|
+
setProps({
|
|
108
|
+
checkedKeys: checkedKeys,
|
|
109
|
+
halfCheckedKeys: e.halfCheckedKeys
|
|
110
|
+
})
|
|
120
111
|
}
|
|
112
|
+
}
|
|
121
113
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
114
|
+
const listenExpand = (e) => {
|
|
115
|
+
setProps({ expandedKeys: e })
|
|
116
|
+
}
|
|
125
117
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return (
|
|
129
|
-
<Tree
|
|
130
|
-
id={id}
|
|
131
|
-
className={className}
|
|
132
|
-
style={style}
|
|
133
|
-
key={key}
|
|
134
|
-
treeData={add_leaf_node_icon(treeData)}
|
|
135
|
-
selectedKeys={selectedKeys}
|
|
136
|
-
checkedKeys={checkedKeys}
|
|
137
|
-
selectable={selectable}
|
|
138
|
-
checkable={checkable}
|
|
139
|
-
defaultExpandAll={defaultExpandAll}
|
|
140
|
-
defaultExpandedKeys={defaultExpandedKeys}
|
|
141
|
-
defaultExpandParent={defaultExpandParent}
|
|
142
|
-
defaultCheckedKeys={defaultCheckedKeys}
|
|
143
|
-
defaultSelectedKeys={defaultSelectedKeys}
|
|
144
|
-
checkStrictly={checkStrictly}
|
|
145
|
-
multiple={multiple}
|
|
146
|
-
showLine={showLine}
|
|
147
|
-
onSelect={listenSelect}
|
|
148
|
-
onCheck={listenCheck}
|
|
149
|
-
onExpand={listenExpand}
|
|
150
|
-
showIcon={showIcon}
|
|
151
|
-
height={height}
|
|
152
|
-
showLeafIcon={false}
|
|
153
|
-
persistence={persistence}
|
|
154
|
-
persisted_props={persisted_props}
|
|
155
|
-
persistence_type={persistence_type}
|
|
156
|
-
data-dash-is-loading={
|
|
157
|
-
(loading_state && loading_state.is_loading) || undefined
|
|
158
|
-
}
|
|
159
|
-
{...config}
|
|
160
|
-
/>
|
|
161
|
-
);
|
|
118
|
+
let config = {
|
|
119
|
+
expandedKeys
|
|
162
120
|
}
|
|
121
|
+
|
|
122
|
+
config = omitBy(config, isUndefined)
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<Tree
|
|
126
|
+
id={id}
|
|
127
|
+
className={className}
|
|
128
|
+
style={style}
|
|
129
|
+
key={key}
|
|
130
|
+
treeData={add_leaf_node_icon(treeData)}
|
|
131
|
+
selectedKeys={selectedKeys}
|
|
132
|
+
checkedKeys={checkedKeys}
|
|
133
|
+
selectable={selectable}
|
|
134
|
+
checkable={checkable}
|
|
135
|
+
defaultExpandAll={defaultExpandAll}
|
|
136
|
+
defaultExpandedKeys={defaultExpandedKeys}
|
|
137
|
+
defaultExpandParent={defaultExpandParent}
|
|
138
|
+
defaultCheckedKeys={defaultCheckedKeys}
|
|
139
|
+
defaultSelectedKeys={defaultSelectedKeys}
|
|
140
|
+
checkStrictly={checkStrictly}
|
|
141
|
+
multiple={multiple}
|
|
142
|
+
showLine={showLine}
|
|
143
|
+
onSelect={listenSelect}
|
|
144
|
+
onCheck={listenCheck}
|
|
145
|
+
onExpand={listenExpand}
|
|
146
|
+
showIcon={showIcon}
|
|
147
|
+
height={height}
|
|
148
|
+
titleRender={(nodeData) => {
|
|
149
|
+
return (
|
|
150
|
+
<span className={"ant-tree-title"}
|
|
151
|
+
style={nodeData.style}>
|
|
152
|
+
{nodeData.title}
|
|
153
|
+
</span>
|
|
154
|
+
);
|
|
155
|
+
}}
|
|
156
|
+
showLeafIcon={false}
|
|
157
|
+
persistence={persistence}
|
|
158
|
+
persisted_props={persisted_props}
|
|
159
|
+
persistence_type={persistence_type}
|
|
160
|
+
data-dash-is-loading={
|
|
161
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
162
|
+
}
|
|
163
|
+
{...config}
|
|
164
|
+
/>
|
|
165
|
+
);
|
|
163
166
|
}
|
|
164
167
|
|
|
165
168
|
// 定义递归PropTypes
|
|
@@ -185,12 +188,44 @@ const PropTreeNodeShape = {
|
|
|
185
188
|
// 可选,设置对应节点是否可选
|
|
186
189
|
selectable: PropTypes.bool,
|
|
187
190
|
|
|
191
|
+
// 设置当前节点css样式
|
|
192
|
+
style: PropTypes.object
|
|
188
193
|
};
|
|
189
194
|
|
|
190
195
|
const PropTreeNode = PropTypes.shape(PropTreeNodeShape);
|
|
191
196
|
PropTreeNodeShape.children = PropTypes.arrayOf(PropTreeNode);
|
|
192
197
|
const treeDataPropTypes = PropTypes.arrayOf(PropTreeNode);
|
|
193
198
|
|
|
199
|
+
// 定义偏平结构节点类型
|
|
200
|
+
const PropFlatNodeShape = {
|
|
201
|
+
// 标题
|
|
202
|
+
title: PropTypes.string.isRequired,
|
|
203
|
+
|
|
204
|
+
// 唯一识别id
|
|
205
|
+
key: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
|
206
|
+
|
|
207
|
+
// 可选,设置是否禁用
|
|
208
|
+
disabled: PropTypes.bool,
|
|
209
|
+
|
|
210
|
+
// 可选,设置节点对应icon
|
|
211
|
+
icon: PropTypes.node,
|
|
212
|
+
|
|
213
|
+
// 可选,当树为checkable时,设置对应节点是否展示checkbox
|
|
214
|
+
checkable: PropTypes.bool,
|
|
215
|
+
|
|
216
|
+
// 可选,设置是否禁用checkbox
|
|
217
|
+
disableCheckbox: PropTypes.bool,
|
|
218
|
+
|
|
219
|
+
// 可选,设置对应节点是否可选
|
|
220
|
+
selectable: PropTypes.bool,
|
|
221
|
+
|
|
222
|
+
// 可选,设置对应节点的父节点key值
|
|
223
|
+
parent: PropTypes.string,
|
|
224
|
+
|
|
225
|
+
// 设置当前节点css样式
|
|
226
|
+
style: PropTypes.object
|
|
227
|
+
};
|
|
228
|
+
|
|
194
229
|
// 定义参数或属性
|
|
195
230
|
AntdTree.propTypes = {
|
|
196
231
|
// 组件id
|
|
@@ -206,7 +241,15 @@ AntdTree.propTypes = {
|
|
|
206
241
|
key: PropTypes.string,
|
|
207
242
|
|
|
208
243
|
// 组织树形结构的json结构数据
|
|
209
|
-
treeData:
|
|
244
|
+
treeData: PropTypes.oneOfType([
|
|
245
|
+
// 树结构
|
|
246
|
+
treeDataPropTypes,
|
|
247
|
+
// 偏平结构
|
|
248
|
+
PropTypes.arrayOf(PropFlatNodeShape)
|
|
249
|
+
]),
|
|
250
|
+
|
|
251
|
+
// 设置treeData模式,可选的有'tree'、'flat',默认为'tree'
|
|
252
|
+
treeDataMode: PropTypes.oneOf(['tree', 'flat']),
|
|
210
253
|
|
|
211
254
|
// 设置是否渲染icon,默认为true
|
|
212
255
|
showIcon: PropTypes.bool,
|
|
@@ -312,5 +355,8 @@ AntdTree.defaultProps = {
|
|
|
312
355
|
showLine: { 'showLeafIcon': false },
|
|
313
356
|
showIcon: true,
|
|
314
357
|
persisted_props: ['selectedKeys', 'checkedKeys', 'expandedKeys'],
|
|
315
|
-
persistence_type: 'local'
|
|
316
|
-
|
|
358
|
+
persistence_type: 'local',
|
|
359
|
+
treeDataMode: 'tree'
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export default AntdTree;
|
|
@@ -1,126 +1,128 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { useEffect, useMemo } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { TreeSelect, ConfigProvider } from 'antd';
|
|
4
4
|
import { str2Locale } from './locales.react';
|
|
5
|
+
import { flatToTree } from './utils';
|
|
5
6
|
import 'antd/dist/antd.css';
|
|
6
7
|
|
|
7
8
|
const { SHOW_ALL } = TreeSelect;
|
|
8
9
|
|
|
9
10
|
// 定义树选择组件AntdTreeSelect,api参数参考https://ant.design/components/tree-select-cn/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const AntdTreeSelect = (props) => {
|
|
12
|
+
// 取得必要属性或参数
|
|
13
|
+
let {
|
|
14
|
+
id,
|
|
15
|
+
style,
|
|
16
|
+
className,
|
|
17
|
+
key,
|
|
18
|
+
locale,
|
|
19
|
+
treeData,
|
|
20
|
+
treeDataMode,
|
|
21
|
+
allowClear,
|
|
22
|
+
bordered,
|
|
23
|
+
treeLine,
|
|
24
|
+
listHeight,
|
|
25
|
+
placeholder,
|
|
26
|
+
value,
|
|
27
|
+
defaultValue,
|
|
28
|
+
maxTagCount,
|
|
29
|
+
multiple,
|
|
30
|
+
size,
|
|
31
|
+
treeCheckable,
|
|
32
|
+
treeCheckStrictly,
|
|
33
|
+
treeDefaultExpandAll,
|
|
34
|
+
treeDefaultExpandedKeys,
|
|
35
|
+
treeExpandedKeys,
|
|
36
|
+
virtual,
|
|
37
|
+
disabled,
|
|
38
|
+
placement,
|
|
39
|
+
status,
|
|
40
|
+
treeNodeFilterProp,
|
|
41
|
+
setProps,
|
|
42
|
+
persistence,
|
|
43
|
+
persisted_props,
|
|
44
|
+
persistence_type,
|
|
45
|
+
loading_state
|
|
46
|
+
} = props;
|
|
47
|
+
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!value && defaultValue) {
|
|
50
|
+
setProps({ value: defaultValue })
|
|
16
51
|
}
|
|
17
|
-
}
|
|
52
|
+
}, [])
|
|
18
53
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
id,
|
|
23
|
-
style,
|
|
24
|
-
className,
|
|
25
|
-
key,
|
|
26
|
-
locale,
|
|
27
|
-
treeData,
|
|
28
|
-
allowClear,
|
|
29
|
-
bordered,
|
|
30
|
-
treeLine,
|
|
31
|
-
listHeight,
|
|
32
|
-
placeholder,
|
|
33
|
-
value,
|
|
34
|
-
defaultValue,
|
|
35
|
-
maxTagCount,
|
|
36
|
-
multiple,
|
|
37
|
-
size,
|
|
38
|
-
treeCheckable,
|
|
39
|
-
treeCheckStrictly,
|
|
40
|
-
treeDefaultExpandAll,
|
|
41
|
-
treeDefaultExpandedKeys,
|
|
42
|
-
treeExpandedKeys,
|
|
43
|
-
virtual,
|
|
44
|
-
disabled,
|
|
45
|
-
placement,
|
|
46
|
-
status,
|
|
47
|
-
treeNodeFilterProp,
|
|
48
|
-
setProps,
|
|
49
|
-
persistence,
|
|
50
|
-
persisted_props,
|
|
51
|
-
persistence_type,
|
|
52
|
-
loading_state
|
|
53
|
-
} = this.props;
|
|
54
|
-
|
|
55
|
-
// 用于获取用户已选择值的回调函数
|
|
56
|
-
const updateSelectedValue = (value) => {
|
|
57
|
-
|
|
58
|
-
if (treeCheckStrictly) {
|
|
59
|
-
setProps({ value: value.map(item => item.value) })
|
|
60
|
-
} else {
|
|
61
|
-
setProps({ value: value })
|
|
62
|
-
}
|
|
54
|
+
const flatToTreeData = useMemo(() => {
|
|
55
|
+
return flatToTree(treeData);
|
|
56
|
+
}, [treeData])
|
|
63
57
|
|
|
58
|
+
// 用于获取用户已选择值的回调函数
|
|
59
|
+
const updateSelectedValue = (value) => {
|
|
60
|
+
|
|
61
|
+
if (treeCheckStrictly) {
|
|
62
|
+
setProps({ value: value.map(item => item.value) })
|
|
63
|
+
} else {
|
|
64
|
+
setProps({ value: value })
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
// 返回定制化的前端组件
|
|
67
|
-
return (
|
|
68
|
-
<ConfigProvider locale={str2Locale.get(locale)}>
|
|
69
|
-
<TreeSelect
|
|
70
|
-
id={id}
|
|
71
|
-
className={className}
|
|
72
|
-
style={{ ...{ width: '100%' }, ...style }}
|
|
73
|
-
key={key}
|
|
74
|
-
treeData={treeData}
|
|
75
|
-
allowClear={allowClear}
|
|
76
|
-
bordered={bordered}
|
|
77
|
-
treeLine={treeLine}
|
|
78
|
-
listHeight={listHeight}
|
|
79
|
-
placeholder={placeholder}
|
|
80
|
-
value={value}
|
|
81
|
-
defaultValue={defaultValue}
|
|
82
|
-
maxTagCount={maxTagCount}
|
|
83
|
-
multiple={multiple}
|
|
84
|
-
size={size}
|
|
85
|
-
treeCheckable={treeCheckable}
|
|
86
|
-
showCheckedStrategy={SHOW_ALL}
|
|
87
|
-
treeCheckStrictly={treeCheckStrictly}
|
|
88
|
-
treeDefaultExpandAll={treeDefaultExpandAll}
|
|
89
|
-
treeDefaultExpandedKeys={treeDefaultExpandedKeys}
|
|
90
|
-
treeExpandedKeys={treeExpandedKeys}
|
|
91
|
-
onChange={updateSelectedValue}
|
|
92
|
-
showSearch={true}
|
|
93
|
-
virtual={virtual}
|
|
94
|
-
disabled={disabled}
|
|
95
|
-
placement={placement}
|
|
96
|
-
status={status}
|
|
97
|
-
treeNodeFilterProp={treeNodeFilterProp}
|
|
98
|
-
persistence={persistence}
|
|
99
|
-
persisted_props={persisted_props}
|
|
100
|
-
persistence_type={persistence_type}
|
|
101
|
-
data-dash-is-loading={
|
|
102
|
-
(loading_state && loading_state.is_loading) || undefined
|
|
103
|
-
}
|
|
104
|
-
getPopupContainer={(triggerNode) => triggerNode.parentNode}
|
|
105
|
-
/>
|
|
106
|
-
</ConfigProvider>
|
|
107
|
-
);
|
|
108
67
|
}
|
|
68
|
+
|
|
69
|
+
// 返回定制化的前端组件
|
|
70
|
+
return (
|
|
71
|
+
<ConfigProvider locale={str2Locale.get(locale)}>
|
|
72
|
+
<TreeSelect
|
|
73
|
+
id={id}
|
|
74
|
+
className={className}
|
|
75
|
+
style={{ ...{ width: '100%' }, ...style }}
|
|
76
|
+
key={key}
|
|
77
|
+
treeData={treeDataMode === 'flat' ? flatToTreeData : treeData}
|
|
78
|
+
allowClear={allowClear}
|
|
79
|
+
bordered={bordered}
|
|
80
|
+
treeLine={treeLine}
|
|
81
|
+
listHeight={listHeight}
|
|
82
|
+
placeholder={placeholder}
|
|
83
|
+
value={value}
|
|
84
|
+
defaultValue={defaultValue}
|
|
85
|
+
maxTagCount={maxTagCount}
|
|
86
|
+
multiple={multiple}
|
|
87
|
+
size={size}
|
|
88
|
+
treeCheckable={treeCheckable}
|
|
89
|
+
showCheckedStrategy={SHOW_ALL}
|
|
90
|
+
treeCheckStrictly={treeCheckStrictly}
|
|
91
|
+
treeDefaultExpandAll={treeDefaultExpandAll}
|
|
92
|
+
treeDefaultExpandedKeys={treeDefaultExpandedKeys}
|
|
93
|
+
treeExpandedKeys={treeExpandedKeys}
|
|
94
|
+
onChange={updateSelectedValue}
|
|
95
|
+
showSearch={true}
|
|
96
|
+
virtual={virtual}
|
|
97
|
+
disabled={disabled}
|
|
98
|
+
placement={placement}
|
|
99
|
+
status={status}
|
|
100
|
+
treeNodeFilterProp={treeNodeFilterProp}
|
|
101
|
+
persistence={persistence}
|
|
102
|
+
persisted_props={persisted_props}
|
|
103
|
+
persistence_type={persistence_type}
|
|
104
|
+
data-dash-is-loading={
|
|
105
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
106
|
+
}
|
|
107
|
+
getPopupContainer={(triggerNode) => triggerNode.parentNode}
|
|
108
|
+
/>
|
|
109
|
+
</ConfigProvider>
|
|
110
|
+
);
|
|
109
111
|
}
|
|
110
112
|
|
|
111
113
|
// 定义递归PropTypes
|
|
112
114
|
const PropTreeNodeShape = {
|
|
113
115
|
// 标题
|
|
114
|
-
title: PropTypes.string,
|
|
116
|
+
title: PropTypes.string.isRequired,
|
|
115
117
|
|
|
116
118
|
// 唯一识别id
|
|
117
|
-
key: PropTypes.string,
|
|
119
|
+
key: PropTypes.string.isRequired,
|
|
118
120
|
|
|
119
121
|
// 节点对应的值,供搜索筛选时进行匹配使用(具有唯一性)
|
|
120
122
|
value: PropTypes.oneOfType([
|
|
121
123
|
PropTypes.string,
|
|
122
124
|
PropTypes.number
|
|
123
|
-
]),
|
|
125
|
+
]).isRequired,
|
|
124
126
|
|
|
125
127
|
// 可选,设置是否禁用
|
|
126
128
|
disabled: PropTypes.bool,
|
|
@@ -132,13 +134,43 @@ const PropTreeNodeShape = {
|
|
|
132
134
|
disableCheckbox: PropTypes.bool,
|
|
133
135
|
|
|
134
136
|
// 可选,设置对应节点是否可选
|
|
135
|
-
selectable: PropTypes.bool
|
|
137
|
+
selectable: PropTypes.bool
|
|
136
138
|
};
|
|
137
139
|
|
|
138
140
|
const PropTreeNode = PropTypes.shape(PropTreeNodeShape);
|
|
139
141
|
PropTreeNodeShape.children = PropTypes.arrayOf(PropTreeNode);
|
|
140
142
|
const treeDataPropTypes = PropTypes.arrayOf(PropTreeNode);
|
|
141
143
|
|
|
144
|
+
// 定义扁平结构节点类型
|
|
145
|
+
const PropFlatNodeShape = {
|
|
146
|
+
// 标题
|
|
147
|
+
title: PropTypes.string.isRequired,
|
|
148
|
+
|
|
149
|
+
// 唯一识别id
|
|
150
|
+
key: PropTypes.string.isRequired,
|
|
151
|
+
|
|
152
|
+
// 节点对应的值,供搜索筛选时进行匹配使用(具有唯一性)
|
|
153
|
+
value: PropTypes.oneOfType([
|
|
154
|
+
PropTypes.string,
|
|
155
|
+
PropTypes.number
|
|
156
|
+
]).isRequired,
|
|
157
|
+
|
|
158
|
+
// 可选,设置是否禁用
|
|
159
|
+
disabled: PropTypes.bool,
|
|
160
|
+
|
|
161
|
+
// 可选,当树为treeCheckable时,设置对应节点是否展示checkbox
|
|
162
|
+
checkable: PropTypes.bool,
|
|
163
|
+
|
|
164
|
+
// 可选,设置是否禁用checkbox
|
|
165
|
+
disableCheckbox: PropTypes.bool,
|
|
166
|
+
|
|
167
|
+
// 可选,设置对应节点是否可选
|
|
168
|
+
selectable: PropTypes.bool,
|
|
169
|
+
|
|
170
|
+
// 可选,设置对应节点的父节点key值
|
|
171
|
+
parent: PropTypes.string
|
|
172
|
+
};
|
|
173
|
+
|
|
142
174
|
// 定义参数或属性
|
|
143
175
|
AntdTreeSelect.propTypes = {
|
|
144
176
|
// 组件id
|
|
@@ -157,7 +189,15 @@ AntdTreeSelect.propTypes = {
|
|
|
157
189
|
locale: PropTypes.oneOf(['zh-cn', 'en-us']),
|
|
158
190
|
|
|
159
191
|
// 组织树形结构的json结构数据
|
|
160
|
-
treeData:
|
|
192
|
+
treeData: PropTypes.oneOfType([
|
|
193
|
+
// 树形结构
|
|
194
|
+
treeDataPropTypes,
|
|
195
|
+
// 扁平结构
|
|
196
|
+
PropTypes.arrayOf(PropFlatNodeShape)
|
|
197
|
+
]).isRequired,
|
|
198
|
+
|
|
199
|
+
// 设置treeData模式,可选的有'tree'、'flat',默认为'tree'
|
|
200
|
+
treeDataMode: PropTypes.oneOf(['tree', 'flat']),
|
|
161
201
|
|
|
162
202
|
// 设置是否渲染内容清空按钮,默认为true
|
|
163
203
|
allowClear: PropTypes.bool,
|
|
@@ -292,10 +332,13 @@ AntdTreeSelect.propTypes = {
|
|
|
292
332
|
// 设置默认参数
|
|
293
333
|
AntdTreeSelect.defaultProps = {
|
|
294
334
|
listHeight: 256,
|
|
295
|
-
virtual:
|
|
335
|
+
virtual: true,
|
|
296
336
|
allowClear: true,
|
|
297
337
|
persisted_props: ['value'],
|
|
298
338
|
persistence_type: 'local',
|
|
299
339
|
locale: 'zh-cn',
|
|
300
|
-
treeNodeFilterProp: 'value'
|
|
340
|
+
treeNodeFilterProp: 'value',
|
|
341
|
+
treeDataMode: 'tree'
|
|
301
342
|
}
|
|
343
|
+
|
|
344
|
+
export default AntdTreeSelect;
|