@unicom-cloud/ui 0.8.96 → 0.8.98
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/Affix.js +1 -1
- package/Carousel.js +1 -1
- package/LiquidFill.js +4 -0
- package/OverflowEllipsis.js +1 -1
- package/PageHeader.js +1 -1
- package/QrCode.js +57 -0
- package/Tour.js +63 -0
- package/Trigger.js +1 -1
- package/_virtual/_commonjsHelpers.js +6 -0
- package/_virtual/index.js +7 -0
- package/_virtual/index2.js +4 -0
- package/affix/index.js +70 -72
- package/alert/index.js +56 -56
- package/anchor/Anchor.js +55 -55
- package/anchor/Link.js +34 -34
- package/anchor/util.js +5 -5
- package/auto-complete/index.js +116 -122
- package/avatar/Avatar.js +33 -33
- package/avatar/Group.js +26 -26
- package/back-top/index.js +58 -61
- package/badge/index.js +46 -46
- package/breadcrumb/Item.js +42 -43
- package/breadcrumb/index.js +47 -47
- package/button/Group.js +6 -6
- package/button/index.js +91 -91
- package/calendar/Month.js +75 -75
- package/calendar/Year.js +35 -35
- package/calendar/header/index.js +25 -25
- package/calendar/index.js +103 -103
- package/card/Grid.js +8 -8
- package/card/Meta.js +16 -16
- package/card/index.js +49 -49
- package/carousel/Arrow.js +19 -19
- package/carousel/Indicator.js +26 -26
- package/carousel/index.js +108 -108
- package/cascader/Cascader.js +178 -191
- package/cascader/base/node.js +133 -136
- package/cascader/base/store.js +82 -85
- package/cascader/panel/List.js +125 -129
- package/cascader/panel/Search.js +79 -81
- package/cascader/util.js +13 -13
- package/checkbox/Checkbox.js +94 -96
- package/checkbox/Group.js +54 -56
- package/checkbox/GroupBlock.js +28 -29
- package/collapse/Collapse.js +45 -45
- package/collapse/Item.js +53 -55
- package/color-picker/ControlBar.js +43 -43
- package/color-picker/InputAlpha.js +12 -12
- package/color-picker/InputHex.js +30 -31
- package/color-picker/InputRgb.js +24 -24
- package/color-picker/Palette.js +18 -18
- package/color-picker/Panel.js +122 -125
- package/color-picker/hooks/useColorPicker.js +85 -88
- package/color-picker/hooks/useControlBlock.js +38 -40
- package/color-picker/index.js +47 -47
- package/comment/index.js +29 -29
- package/components/common/higher-order/with-speech-synthesis/index.js +37 -40
- package/components/common/hooks/useId.js +8 -8
- package/components/common/hooks/useInView.js +16 -16
- package/components/common/hooks/useIntersectionObserver.js +1 -1
- package/components/common/hooks/useKeyboardEvent.js +9 -10
- package/components/common/hooks/useOverflowHidden.js +1 -4
- package/components/common/hooks/usePersistCallback.js +7 -7
- package/components/common/hooks/useStateCallback.js +9 -10
- package/components/common/hooks/useWindowSize.js +8 -8
- package/components/common/space/index.js +9 -7
- package/components/common/utils/convertToDurationBasedOnTimeUnits.js +6 -0
- package/components/common/utils/dom.js +27 -29
- package/components/common/utils/findScrollParent.js +17 -0
- package/components/common/utils/intersectionObserver.js +21 -0
- package/components/common/utils/is.js +99 -109
- package/components/common/utils/mutationObserver.js +19 -0
- package/components/common/utils/reactDOM.js +34 -34
- package/components/common/utils/resizeObserver.js +21 -0
- package/copy/index.js +38 -40
- package/date-picker/Picker.js +290 -295
- package/date-picker/RangePicker.js +367 -372
- package/date-picker/index.js +33 -35
- package/date-picker/panel/Body.js +46 -47
- package/date-picker/panel/Header.js +33 -33
- package/date-picker/panel/Shortcut.js +31 -31
- package/date-picker/panel/date/index.js +85 -85
- package/date-picker/panel/month/index.js +59 -59
- package/date-picker/panel/quarter/index.js +67 -70
- package/date-picker/panel/range/index.js +101 -101
- package/date-picker/panel/year/index.js +39 -39
- package/date-picker/util.js +17 -18
- package/descriptions/index.js +62 -62
- package/details/index.js +53 -55
- package/development/index.js +9 -9
- package/dist/tinycolor/chunk/BOzCVdr0.js +1 -1
- package/dist/validate/src/index.js +5 -5
- package/dist/validate/src/util.js +1 -1
- package/divider/index.js +21 -21
- package/draggable/Item.js +35 -35
- package/draggable/index.js +22 -22
- package/drawer/Drawer.js +142 -147
- package/dropdown/Button.js +48 -48
- package/dropdown/index.js +88 -92
- package/empty/index.js +16 -16
- package/form/Control.js +211 -225
- package/form/Form.js +109 -113
- package/form/FormItem.js +118 -120
- package/form/FormList.js +60 -66
- package/form/FormProvider.js +31 -34
- package/form/hook/useContext.js +17 -19
- package/form/hook/useState.js +22 -23
- package/form/hook/useWatch.js +26 -27
- package/form/promisify.js +14 -18
- package/form/store.js +304 -316
- package/form/util.js +14 -15
- package/grid/Col.js +64 -64
- package/grid/Grid.js +51 -51
- package/grid/GridItem.js +48 -48
- package/grid/Row.js +39 -39
- package/hooks/useVerificationCode.js +41 -43
- package/hooks/useWatermark.js +89 -92
- package/icon/index.js +23 -24
- package/icon-hover/index.js +16 -16
- package/icons/file.js +11 -11
- package/image/Image.js +140 -141
- package/image/ImagePreview.js +252 -255
- package/image/ImagePreviewArrow.js +25 -25
- package/image/ImagePreviewGroup.js +62 -62
- package/image/util/getScale.js +25 -28
- package/index.js +684 -675
- package/input/Button.js +48 -50
- package/input/Group.js +9 -9
- package/input/Input.js +145 -154
- package/input/InputElement.js +108 -115
- package/input/Password.js +38 -38
- package/input/Search.js +51 -55
- package/input/Textarea.js +80 -81
- package/input/useComposition.js +23 -23
- package/input-number/decimal.js +59 -62
- package/input-number/index.js +139 -141
- package/input-tag/InputTag.js +222 -230
- package/layout/Content.js +6 -6
- package/layout/Footer.js +8 -8
- package/layout/Header.js +7 -7
- package/layout/Sider.js +88 -90
- package/layout/index.js +30 -30
- package/link/index.js +45 -46
- package/liquid-fill/LiquidFill.js +226 -0
- package/liquid-fill/LiquidFill2.js +3 -0
- package/liquid-fill/index.js +4 -0
- package/list/Item.js +28 -28
- package/list/Meta.js +12 -12
- package/list/index.js +146 -148
- package/mentions/index.js +75 -76
- package/menu/Item.js +58 -58
- package/menu/Menu.js +125 -127
- package/menu/OverflowWrap.js +39 -40
- package/menu/sub-menu/Inline.js +45 -45
- package/menu/util.js +26 -28
- package/message/index.js +96 -99
- package/message/useMessage.js +26 -27
- package/modal/Confirm.js +47 -49
- package/modal/Modal.js +250 -257
- package/modal/use-modal/Hook.js +26 -28
- package/modal/use-modal/index.js +46 -49
- package/notice/index.js +89 -90
- package/notification/index.js +60 -65
- package/notification/withNotification.js +35 -35
- package/overflow-ellipsis/OverflowItem.js +19 -20
- package/overflow-ellipsis/index.js +45 -46
- package/package.json +1 -1
- package/page-header/index.js +45 -45
- package/pagination/PageItem.js +87 -91
- package/pagination/PageJumper.js +40 -41
- package/pagination/PageOption.js +31 -35
- package/pagination/Pagination.js +162 -163
- package/picker/Input.js +90 -96
- package/picker/InputRange.js +115 -122
- package/popconfirm/index.js +98 -100
- package/popover/index.js +28 -28
- package/portal/Portal.js +10 -11
- package/progress/index.js +36 -36
- package/qr-code/index.js +99 -0
- package/qr-code/interface.js +1 -0
- package/radio/Group.js +48 -48
- package/radio/GroupBlock.js +32 -33
- package/radio/Radio.js +62 -64
- package/rate/index.js +88 -88
- package/resize-box/ResizeTrigger.js +39 -39
- package/resize-box/Split.js +92 -96
- package/resize-box/SplitGroup.js +116 -122
- package/resize-box/index.js +112 -115
- package/result/index.js +44 -44
- package/select/Option.js +53 -56
- package/select/Select.js +365 -381
- package/select/util.js +95 -99
- package/select-view/Core.js +159 -160
- package/skeleton/index.js +23 -23
- package/slider/Button.js +84 -92
- package/slider/Input.js +47 -49
- package/slider/Tick.js +28 -31
- package/slider/index.js +107 -107
- package/space/index.js +26 -26
- package/space-/index.js +51 -51
- package/spin/DotLoading.js +8 -8
- package/spin/index.js +47 -47
- package/statistic/Countdown.js +37 -37
- package/statistic/index.js +58 -58
- package/steps/Step.js +42 -42
- package/steps/index.js +54 -54
- package/style.css +1 -1
- package/switch/index.js +77 -78
- package/table/ColGroup.js +36 -37
- package/table/Table.js +447 -450
- package/table/hook/useExpand.js +24 -24
- package/table/hook/useRowSelection.js +62 -62
- package/table/summary/Row.js +16 -17
- package/table/tbody/Td.js +119 -118
- package/table/tbody/Tr.js +119 -121
- package/table/tbody/index.js +62 -63
- package/table/th-resizable/index.js +30 -30
- package/table/thead/Column.js +148 -148
- package/table/thead/index.js +87 -88
- package/tabs/Tab.js +55 -55
- package/tabs/TabContent.js +8 -8
- package/tabs/TabPane.js +15 -15
- package/tabs/hook/useHeaderScroll.js +36 -36
- package/tabs/tab-header/TabInk.js +31 -33
- package/tabs/tab-header/TabNavIcon.js +34 -35
- package/tabs/tab-header/index.js +192 -195
- package/tag/index.js +94 -97
- package/time-picker/Picker.js +167 -172
- package/time-picker/RangePicker.js +28 -28
- package/time-picker/TimePicker.js +146 -146
- package/timeline/Item.js +46 -46
- package/timeline/Timeline.js +52 -52
- package/tooltip/index.js +89 -95
- package/tour/index.js +289 -0
- package/transfer/Item.js +54 -54
- package/transfer/List.js +134 -136
- package/transfer/index.js +91 -91
- package/tree/Animation.js +49 -52
- package/tree/Node.js +114 -122
- package/tree/NodeList.js +51 -51
- package/tree/Tree.js +386 -393
- package/tree-select/List.js +71 -72
- package/tree-select/Select.js +135 -143
- package/tree-select/hook/useKeyCache.js +39 -39
- package/tree-select/hook/useStateValue.js +12 -12
- package/trigger/getPopupStyle.js +60 -61
- package/trigger/index.js +337 -346
- package/types/common/space/interface.d.ts +1 -1
- package/types/common/utils/convertToDurationBasedOnTimeUnits.d.ts +3 -0
- package/types/common/utils/findScrollParent.d.ts +2 -0
- package/types/common/utils/index.d.ts +5 -0
- package/types/common/utils/intersectionObserver.d.ts +2 -0
- package/types/common/utils/mutationObserver.d.ts +2 -0
- package/types/common/utils/resizeObserver.d.ts +2 -0
- package/types/pc/config-provider/interface.d.ts +6 -0
- package/types/pc/index.d.ts +3 -0
- package/types/pc/liquid-fill/LiquidFill.d.ts +115 -0
- package/types/pc/liquid-fill/LiquidFill2.d.ts +1 -0
- package/types/pc/liquid-fill/index.d.ts +2 -0
- package/types/pc/qr-code/index.d.ts +34 -0
- package/types/pc/qr-code/interface.d.ts +39 -0
- package/types/pc/table/interface.d.ts +2 -2
- package/types/pc/tour/index.d.ts +42 -0
- package/types/pc/utils/convertToDurationBasedOnTimeUnits.d.ts +3 -0
- package/types/pc/utils/findScrollParent.d.ts +2 -0
- package/types/pc/utils/index.d.ts +5 -0
- package/types/pc/utils/intersectionObserver.d.ts +2 -0
- package/types/pc/utils/mutationObserver.d.ts +2 -0
- package/types/pc/utils/names.d.ts +18 -0
- package/types/pc/utils/resizeObserver.d.ts +2 -0
- package/typography/Base.js +79 -81
- package/typography/EditContent.js +30 -33
- package/typography/Ellipsis.js +77 -73
- package/typography/Operations.js +50 -52
- package/typography/Paragraph.js +7 -7
- package/typography/Typography.js +7 -7
- package/typography/useEllipsis.js +105 -106
- package/upload/TriggerNode.js +69 -76
- package/upload/Upload.js +84 -87
- package/upload/Uploader.js +115 -118
- package/upload/list/PictureItem.js +61 -71
- package/upload/list/TextItem.js +61 -67
- package/upload/list/UploadProgress.js +42 -49
- package/upload/list/index.js +48 -49
- package/upload/request_.js +37 -38
- package/upload/util.js +39 -39
- package/utils/convertToDurationBasedOnTimeUnits.js +6 -0
- package/utils/findScrollParent.js +4 -0
- package/utils/index.js +281 -278
- package/utils/intersectionObserver.js +4 -0
- package/utils/mutationObserver.js +4 -0
- package/utils/names.js +12 -0
- package/utils/resizeObserver.js +4 -0
- package/verification-code/VerificationCode.js +50 -51
- package/version/index.js +1 -1
- package/virtual-list/VirtualList.js +243 -244
- package/virtual-list/util/item.js +3 -4
- package/watermark/Watermark.js +27 -31
- package/components/common/utils/resizeObserverEffect.js +0 -23
- package/types/common/utils/resizeObserverEffect.d.ts +0 -2
- package/types/pc/utils/resizeObserverEffect.d.ts +0 -2
- package/utils/resizeObserverEffect.js +0 -4
package/cascader/base/node.js
CHANGED
|
@@ -1,142 +1,139 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
a
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
(i || []).forEach((l) => {
|
|
89
|
-
t(l.pathValue, l.children);
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
return t(this.pathValue, this.children), e;
|
|
93
|
-
});
|
|
94
|
-
a(this, "updateHalfState", (e) => {
|
|
95
|
-
this._halfChecked = this._isHalfChecked(), this._checked = this._halfChecked ? !1 : e;
|
|
96
|
-
});
|
|
97
|
-
// 直接设置选中状态
|
|
98
|
-
a(this, "setCheckedProperty", (e) => {
|
|
99
|
-
this._checked = e, this._halfChecked = !1;
|
|
100
|
-
});
|
|
101
|
-
// 设置当前节点选中状态
|
|
102
|
-
a(this, "setCheckedState", (e) => {
|
|
103
|
-
const t = e ? this._checked : !this._checked && !this._halfChecked;
|
|
104
|
-
if (!(this.disabled || t) && (this.setCheckedProperty(e), !this.config.changeOnSelect)) {
|
|
105
|
-
this._setNodeChildrenChecked(e);
|
|
106
|
-
let h = this.parent;
|
|
107
|
-
for (; h && !h.disabled; )
|
|
108
|
-
h.updateHalfState(e), h = h.parent;
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
// 忽略禁用设置选中状态
|
|
112
|
-
a(this, "setCheckedStateIgnoreDisabled", (e) => {
|
|
113
|
-
if (e !== !!this._checked && (this.setCheckedProperty(e), !this.config.changeOnSelect)) {
|
|
114
|
-
this._setNodeChildrenChecked(e, !0);
|
|
115
|
-
let t = this.parent;
|
|
116
|
-
for (; t; )
|
|
117
|
-
t.updateHalfState(e), t = t.parent;
|
|
1
|
+
import n from "lodash/get";
|
|
2
|
+
import { DefaultFieldNames as _ } from "../Cascader.js";
|
|
3
|
+
class u {
|
|
4
|
+
value;
|
|
5
|
+
label;
|
|
6
|
+
// 是否禁用
|
|
7
|
+
disabled;
|
|
8
|
+
_level;
|
|
9
|
+
_index;
|
|
10
|
+
isLeaf;
|
|
11
|
+
disableCheckbox;
|
|
12
|
+
// 是否选中
|
|
13
|
+
_checked;
|
|
14
|
+
/** 是否半选 */
|
|
15
|
+
_halfChecked;
|
|
16
|
+
/** 当前选项节点的父节点 */
|
|
17
|
+
parent;
|
|
18
|
+
/** 当前选项节点路径的所有节点的值 */
|
|
19
|
+
pathValue = [];
|
|
20
|
+
pathLabel = [];
|
|
21
|
+
/** 下一级选项 */
|
|
22
|
+
children;
|
|
23
|
+
/** 是否在加载中 */
|
|
24
|
+
loading;
|
|
25
|
+
/** 是否加载完成 */
|
|
26
|
+
loaded;
|
|
27
|
+
config = {};
|
|
28
|
+
// 保存暴露给外部的属性
|
|
29
|
+
_data;
|
|
30
|
+
constructor(e, t, a) {
|
|
31
|
+
this.config = t || {}, this._initNode(e, a || null);
|
|
32
|
+
}
|
|
33
|
+
_initNode = (e, t = null) => {
|
|
34
|
+
const { showEmptyChildren: a, lazyload: l } = this.config, h = { ..._, ...this.config.fieldNames }, s = n(e, h.children) || e[h.children];
|
|
35
|
+
let r = Array.isArray(s) ? a ? !1 : s.length === 0 : !0;
|
|
36
|
+
l && (h.isLeaf in e ? r = !!n(e, h.isLeaf) || !!e[h.isLeaf] : r = !1);
|
|
37
|
+
const c = n(e, h.value) || e[h.value], f = n(e, h.label) || e[h.label], d = {
|
|
38
|
+
...e,
|
|
39
|
+
value: c,
|
|
40
|
+
label: f,
|
|
41
|
+
isLeaf: r,
|
|
42
|
+
loading: !1,
|
|
43
|
+
loaded: !1,
|
|
44
|
+
disabled: t && t.disabled || n(e, h.disabled) || e[h.disabled],
|
|
45
|
+
parent: t,
|
|
46
|
+
pathValue: t ? [...t.pathValue, c] : [c],
|
|
47
|
+
pathLabel: t ? [...t.pathLabel, f] : [f],
|
|
48
|
+
_level: t ? t._level + 1 : 0,
|
|
49
|
+
_checked: !1,
|
|
50
|
+
_halfChecked: !1
|
|
51
|
+
};
|
|
52
|
+
this._data = {
|
|
53
|
+
...d,
|
|
54
|
+
parent: d.parent && d.parent._data
|
|
55
|
+
}, Object.keys(d).forEach((i) => {
|
|
56
|
+
this[i] = d[i];
|
|
57
|
+
}), s && s.length && (this.children = s.map((i, o) => new u({ ...i, _index: o }, this.config, this)), this._data.children = this.children.map((i) => i._data));
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* 根据this.children 计算是否当前node半选状态
|
|
61
|
+
* 假设半选是 0.5,全选是1,不选是0。
|
|
62
|
+
* 那么只有当前节点的所有children加起来等于children.length,才是全选,否则和大于0,就是半选。
|
|
63
|
+
*/
|
|
64
|
+
_isHalfChecked = () => {
|
|
65
|
+
const e = this.children.reduce((t, a) => {
|
|
66
|
+
const l = a._halfChecked ? 0.5 : a._checked ? 1 : 0;
|
|
67
|
+
return t + l;
|
|
68
|
+
}, 0);
|
|
69
|
+
return e !== this.children.length && e > 0;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @param checked 选中状态
|
|
74
|
+
* @param ignoreDisabled 是否忽略节点禁用设置选中状态,一般在初始化设置选中状态时传参为true
|
|
75
|
+
*/
|
|
76
|
+
_setNodeChildrenChecked = (e, t) => {
|
|
77
|
+
!t && this.disabled || this.children && this.children.length && (this.children.forEach((a) => {
|
|
78
|
+
a.disabled ? t && a.setCheckedStateIgnoreDisabled(e) : a.setCheckedState(e);
|
|
79
|
+
}), this.updateHalfState(e));
|
|
80
|
+
};
|
|
81
|
+
getSelfChildrenValue = () => {
|
|
82
|
+
const e = [], t = (a, l) => {
|
|
83
|
+
if (!l || !l.length) {
|
|
84
|
+
e.push(a);
|
|
85
|
+
return;
|
|
118
86
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
87
|
+
(l || []).forEach((h) => {
|
|
88
|
+
t(h.pathValue, h.children);
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
return t(this.pathValue, this.children), e;
|
|
92
|
+
};
|
|
93
|
+
updateHalfState = (e) => {
|
|
94
|
+
this._halfChecked = this._isHalfChecked(), this._checked = this._halfChecked ? !1 : e;
|
|
95
|
+
};
|
|
96
|
+
// 直接设置选中状态
|
|
97
|
+
setCheckedProperty = (e) => {
|
|
98
|
+
this._checked = e, this._halfChecked = !1;
|
|
99
|
+
};
|
|
100
|
+
// 设置当前节点选中状态
|
|
101
|
+
setCheckedState = (e) => {
|
|
102
|
+
const t = e ? this._checked : !this._checked && !this._halfChecked;
|
|
103
|
+
if (!(this.disabled || t) && (this.setCheckedProperty(e), !this.config.changeOnSelect)) {
|
|
104
|
+
this._setNodeChildrenChecked(e);
|
|
105
|
+
let a = this.parent;
|
|
106
|
+
for (; a && !a.disabled; )
|
|
107
|
+
a.updateHalfState(e), a = a.parent;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
// 忽略禁用设置选中状态
|
|
111
|
+
setCheckedStateIgnoreDisabled = (e) => {
|
|
112
|
+
if (e !== !!this._checked && (this.setCheckedProperty(e), !this.config.changeOnSelect)) {
|
|
113
|
+
this._setNodeChildrenChecked(e, !0);
|
|
128
114
|
let t = this.parent;
|
|
129
115
|
for (; t; )
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
116
|
+
t.updateHalfState(e), t = t.parent;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* 遍历节点的parent,获取当前节点的路径节点。
|
|
121
|
+
* node: { label: '1-1-1', parent: { label: '1-1', parent: { label: '1' }, ... }, ...}
|
|
122
|
+
* @return [node.parent.parent, node.parent, node]
|
|
123
|
+
* @memberof Store
|
|
124
|
+
*/
|
|
125
|
+
getPathNodes = () => {
|
|
126
|
+
const e = [this];
|
|
127
|
+
let t = this.parent;
|
|
128
|
+
for (; t; )
|
|
129
|
+
e.unshift(t), t = t.parent;
|
|
130
|
+
return e;
|
|
131
|
+
};
|
|
132
|
+
getChildren = () => this.children;
|
|
133
|
+
setLoading = (e) => {
|
|
134
|
+
this.loading = e, (e || e === void 0) && (this.loaded = !1), e === !1 && (this.loaded = !0);
|
|
135
|
+
};
|
|
139
136
|
}
|
|
140
137
|
export {
|
|
141
|
-
|
|
138
|
+
u as default
|
|
142
139
|
};
|
package/cascader/base/store.js
CHANGED
|
@@ -1,93 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import n from "lodash/isArray";
|
|
2
|
+
import f from "lodash/isEqualWith";
|
|
3
|
+
import l from "lodash/isFunction";
|
|
4
|
+
import c from "lodash/isString";
|
|
5
|
+
import { transformValuesToSet as d, valueInSet as o } from "../util.js";
|
|
6
|
+
import u from "./node.js";
|
|
7
|
+
class S {
|
|
8
|
+
nodes = [];
|
|
9
|
+
flatNodes = [];
|
|
10
|
+
config = {};
|
|
11
11
|
constructor(e, t, s) {
|
|
12
|
-
a(this, "nodes", []);
|
|
13
|
-
a(this, "flatNodes", []);
|
|
14
|
-
a(this, "config", {});
|
|
15
|
-
// 初始化节点状态,附加状态信息字段: _checked,_halfChecked,parent,disabled
|
|
16
|
-
a(this, "_calcNodes", (e, t) => e ? e.map((s, r) => new p({ ...s, _index: r }, this.config, t)) : []);
|
|
17
|
-
// this.flatNodes 保存所有可能的选中项
|
|
18
|
-
a(this, "_updateFlatNodes", () => {
|
|
19
|
-
const e = !this.config.changeOnSelect;
|
|
20
|
-
this.flatNodes = [];
|
|
21
|
-
const t = (s) => {
|
|
22
|
-
s && ((!e || s.isLeaf) && this.flatNodes.push(s), d(s.children) && s.children.forEach((r) => {
|
|
23
|
-
t(r);
|
|
24
|
-
}));
|
|
25
|
-
};
|
|
26
|
-
this.nodes.forEach((s) => {
|
|
27
|
-
t(s);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
/**
|
|
31
|
-
* values: 全部的选中值
|
|
32
|
-
* 根据values更新节点状态。不包含在values的节点都设置为未选中状态
|
|
33
|
-
* @memberof Store
|
|
34
|
-
*/
|
|
35
|
-
a(this, "setNodeCheckedByValue", (e) => {
|
|
36
|
-
const t = m(e);
|
|
37
|
-
this.flatNodes.forEach((s) => {
|
|
38
|
-
let r = !1;
|
|
39
|
-
this.config.showParent ? s.pathValue.some(
|
|
40
|
-
(o, h, f) => n(t, f.slice(0, h + 1))
|
|
41
|
-
) && (r = !0) : n(t, s.pathValue) && (r = !0), s.setCheckedStateIgnoreDisabled(r);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
/**
|
|
45
|
-
* 为当前节点插入子节点。动态加载时候用到
|
|
46
|
-
*/
|
|
47
|
-
a(this, "appendOptionChildren", (e, t) => {
|
|
48
|
-
if (t && e) {
|
|
49
|
-
const s = this._calcNodes(t, e);
|
|
50
|
-
e.children = s, this._updateFlatNodes(), this.config.changeOnSelect || e.setCheckedState(!1);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
/**
|
|
54
|
-
* 通过 value 查找对应的node节点。
|
|
55
|
-
* value: 是路径节点的value组成的数组
|
|
56
|
-
*/
|
|
57
|
-
a(this, "findNodeByValue", (e) => {
|
|
58
|
-
let t = null;
|
|
59
|
-
return !e || !e.length || this.flatNodes.some((s) => {
|
|
60
|
-
u(s.pathValue, e) && (t = s);
|
|
61
|
-
}), t;
|
|
62
|
-
});
|
|
63
|
-
/**
|
|
64
|
-
* 搜索所有label含有关键字的节点
|
|
65
|
-
*/
|
|
66
|
-
a(this, "searchNodeByLabel", (e) => {
|
|
67
|
-
if (!e)
|
|
68
|
-
return this.flatNodes;
|
|
69
|
-
const { filterOption: t } = this.config, s = N(t) ? t : (r, o) => g(o.label) && o.label.indexOf(r) > -1;
|
|
70
|
-
return this.flatNodes.filter((r) => r.getPathNodes().some((h) => s(e, h._data)));
|
|
71
|
-
});
|
|
72
|
-
/** 获取所有节点 */
|
|
73
|
-
a(this, "getOptions", () => this.nodes);
|
|
74
|
-
/** 获取所有选中状态的节点。 aggregation: 是否聚合节点 */
|
|
75
|
-
a(this, "getCheckedNodes", () => this.config.showParent ? this.getCheckedParentNodes() : this.flatNodes.filter((e) => e._checked));
|
|
76
|
-
// 按照父节点纬度聚合当前所有选中节点。
|
|
77
|
-
a(this, "getCheckedParentNodes", () => {
|
|
78
|
-
const e = /* @__PURE__ */ new Set();
|
|
79
|
-
return this.flatNodes.forEach((t) => {
|
|
80
|
-
t._checked && t.getPathNodes().some((r) => {
|
|
81
|
-
if (r._checked)
|
|
82
|
-
return e.has(r) || e.add(r), !0;
|
|
83
|
-
});
|
|
84
|
-
}), Array.from(e);
|
|
85
|
-
});
|
|
86
12
|
this.config = { ...s };
|
|
87
13
|
const r = Array.isArray(t) ? t : [];
|
|
88
14
|
this.nodes = this._calcNodes(e, null), this._updateFlatNodes(), this.setNodeCheckedByValue(r);
|
|
89
15
|
}
|
|
16
|
+
// 初始化节点状态,附加状态信息字段: _checked,_halfChecked,parent,disabled
|
|
17
|
+
_calcNodes = (e, t) => e ? e.map((s, r) => new u({ ...s, _index: r }, this.config, t)) : [];
|
|
18
|
+
// this.flatNodes 保存所有可能的选中项
|
|
19
|
+
_updateFlatNodes = () => {
|
|
20
|
+
const e = !this.config.changeOnSelect;
|
|
21
|
+
this.flatNodes = [];
|
|
22
|
+
const t = (s) => {
|
|
23
|
+
s && ((!e || s.isLeaf) && this.flatNodes.push(s), n(s.children) && s.children.forEach((r) => {
|
|
24
|
+
t(r);
|
|
25
|
+
}));
|
|
26
|
+
};
|
|
27
|
+
this.nodes.forEach((s) => {
|
|
28
|
+
t(s);
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* values: 全部的选中值
|
|
33
|
+
* 根据values更新节点状态。不包含在values的节点都设置为未选中状态
|
|
34
|
+
* @memberof Store
|
|
35
|
+
*/
|
|
36
|
+
setNodeCheckedByValue = (e) => {
|
|
37
|
+
const t = d(e);
|
|
38
|
+
this.flatNodes.forEach((s) => {
|
|
39
|
+
let r = !1;
|
|
40
|
+
this.config.showParent ? s.pathValue.some(
|
|
41
|
+
(a, i, h) => o(t, h.slice(0, i + 1))
|
|
42
|
+
) && (r = !0) : o(t, s.pathValue) && (r = !0), s.setCheckedStateIgnoreDisabled(r);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* 为当前节点插入子节点。动态加载时候用到
|
|
47
|
+
*/
|
|
48
|
+
appendOptionChildren = (e, t) => {
|
|
49
|
+
if (t && e) {
|
|
50
|
+
const s = this._calcNodes(t, e);
|
|
51
|
+
e.children = s, this._updateFlatNodes(), this.config.changeOnSelect || e.setCheckedState(!1);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* 通过 value 查找对应的node节点。
|
|
56
|
+
* value: 是路径节点的value组成的数组
|
|
57
|
+
*/
|
|
58
|
+
findNodeByValue = (e) => {
|
|
59
|
+
let t = null;
|
|
60
|
+
return !e || !e.length || this.flatNodes.some((s) => {
|
|
61
|
+
f(s.pathValue, e) && (t = s);
|
|
62
|
+
}), t;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* 搜索所有label含有关键字的节点
|
|
66
|
+
*/
|
|
67
|
+
searchNodeByLabel = (e) => {
|
|
68
|
+
if (!e)
|
|
69
|
+
return this.flatNodes;
|
|
70
|
+
const { filterOption: t } = this.config, s = l(t) ? t : (r, a) => c(a.label) && a.label.indexOf(r) > -1;
|
|
71
|
+
return this.flatNodes.filter((r) => r.getPathNodes().some((i) => s(e, i._data)));
|
|
72
|
+
};
|
|
73
|
+
/** 获取所有节点 */
|
|
74
|
+
getOptions = () => this.nodes;
|
|
75
|
+
/** 获取所有选中状态的节点。 aggregation: 是否聚合节点 */
|
|
76
|
+
getCheckedNodes = () => this.config.showParent ? this.getCheckedParentNodes() : this.flatNodes.filter((e) => e._checked);
|
|
77
|
+
// 按照父节点纬度聚合当前所有选中节点。
|
|
78
|
+
getCheckedParentNodes = () => {
|
|
79
|
+
const e = /* @__PURE__ */ new Set();
|
|
80
|
+
return this.flatNodes.forEach((t) => {
|
|
81
|
+
t._checked && t.getPathNodes().some((r) => {
|
|
82
|
+
if (r._checked)
|
|
83
|
+
return e.has(r) || e.add(r), !0;
|
|
84
|
+
});
|
|
85
|
+
}), Array.from(e);
|
|
86
|
+
};
|
|
90
87
|
}
|
|
91
88
|
export {
|
|
92
|
-
|
|
89
|
+
S as default
|
|
93
90
|
};
|