fast-element-plus 2.0.19 → 2.0.21
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 +47 -20
- package/CONTRIBUTING.md +3 -4
- package/README.md +80 -27
- package/README.zh.md +66 -27
- package/dist/component.d.ts +110 -110
- package/dist/components/avatar/src/avatar.d.ts +26 -26
- package/dist/components/avatar/src/avatar.mjs +10 -10
- package/dist/components/avatar/src/avatar.mjs.map +1 -1
- package/dist/components/button/src/button.d.ts +32 -27
- package/dist/components/button/src/button.mjs +57 -36
- package/dist/components/button/src/button.mjs.map +1 -1
- package/dist/components/carNumber/src/carNumber.d.ts +8 -8
- package/dist/components/carNumber/src/carNumber.mjs +5 -5
- package/dist/components/carNumber/src/carNumber.mjs.map +1 -1
- package/dist/components/contextMenu/src/contextMenu.d.ts +6 -6
- package/dist/components/contextMenu/src/contextMenu.mjs +5 -5
- package/dist/components/contextMenu/src/contextMenu.mjs.map +1 -1
- package/dist/components/contextMenu/src/contextMenu.type.d.ts +7 -7
- package/dist/components/dialog/src/dialog.d.ts +74 -74
- package/dist/components/dialog/src/dialog.mjs +31 -31
- package/dist/components/dialog/src/dialog.mjs.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +57 -57
- package/dist/components/drawer/src/drawer.mjs +24 -24
- package/dist/components/drawer/src/drawer.mjs.map +1 -1
- package/dist/components/form/src/form.d.ts +30 -30
- package/dist/components/form/src/form.mjs +16 -16
- package/dist/components/form/src/form.mjs.map +1 -1
- package/dist/components/form/src/formItem.d.ts +30 -30
- package/dist/components/form/src/formItem.mjs +13 -13
- package/dist/components/form/src/formItem.mjs.map +1 -1
- package/dist/components/formItemTip/src/formItemTip.d.ts +9 -9
- package/dist/components/formItemTip/src/formItemTip.mjs +3 -3
- package/dist/components/formItemTip/src/formItemTip.mjs.map +1 -1
- package/dist/components/icon/src/icon.d.ts +10 -10
- package/dist/components/icon/src/icon.mjs +4 -4
- package/dist/components/icon/src/icon.mjs.map +1 -1
- package/dist/components/iconSelector/src/iconSelector.d.ts +6 -6
- package/dist/components/iconSelector/src/iconSelector.mjs +4 -4
- package/dist/components/iconSelector/src/iconSelector.mjs.map +1 -1
- package/dist/components/image/src/image.d.ts +36 -36
- package/dist/components/image/src/image.mjs +11 -11
- package/dist/components/image/src/image.mjs.map +1 -1
- package/dist/components/inputDialogPage/src/inputDialogPage.d.ts +37 -37
- package/dist/components/inputDialogPage/src/inputDialogPage.mjs +16 -16
- package/dist/components/inputDialogPage/src/inputDialogPage.mjs.map +1 -1
- package/dist/components/layoutGrid/src/layoutGrid.d.ts +12 -12
- package/dist/components/layoutGrid/src/layoutGrid.mjs +6 -6
- package/dist/components/layoutGrid/src/layoutGrid.mjs.map +1 -1
- package/dist/components/layoutGrid/src/layoutGridItem.d.ts +18 -18
- package/dist/components/layoutGrid/src/layoutGridItem.mjs +8 -8
- package/dist/components/layoutGrid/src/layoutGridItem.mjs.map +1 -1
- package/dist/components/select/src/select.d.ts +88 -88
- package/dist/components/select/src/select.mjs +28 -28
- package/dist/components/select/src/select.mjs.map +1 -1
- package/dist/components/select/src/selectOption.d.ts +13 -13
- package/dist/components/select/src/selectOption.mjs +6 -6
- package/dist/components/select/src/selectOption.mjs.map +1 -1
- package/dist/components/selectPage/src/selectPage.d.ts +78 -84
- package/dist/components/selectPage/src/selectPage.mjs +49 -35
- package/dist/components/selectPage/src/selectPage.mjs.map +1 -1
- package/dist/components/selectV2/index.mjs +2 -1
- package/dist/components/selectV2/index.mjs.map +1 -1
- package/dist/components/selectV2/src/selectV2.d.ts +160 -851
- package/dist/components/selectV2/src/selectV2.mjs +30 -338
- package/dist/components/selectV2/src/selectV2.mjs.map +1 -1
- package/dist/components/table/index.mjs +3 -2
- package/dist/components/table/index.mjs.map +1 -1
- package/dist/components/table/src/page.type.d.ts +1 -1
- package/dist/components/table/src/table.d.ts +211 -744
- package/dist/components/table/src/table.mjs +131 -327
- package/dist/components/table/src/table.mjs.map +1 -1
- package/dist/components/table/src/table.state.d.ts +3 -3
- package/dist/components/table/src/table.type.d.ts +1 -9
- package/dist/components/table/src/table.type.mjs.map +1 -1
- package/dist/components/table/src/tableColumn.d.ts +102 -399
- package/dist/components/table/src/tableColumn.mjs +62 -213
- package/dist/components/table/src/tableColumn.mjs.map +1 -1
- package/dist/components/table/src/tableColumnSettingDialog.d.ts +4 -4
- package/dist/components/table/src/tableColumnSettingDialog.mjs +3 -3
- package/dist/components/table/src/tableColumnSettingDialog.mjs.map +1 -1
- package/dist/components/table/src/tablePagination.d.ts +4 -4
- package/dist/components/table/src/tablePagination.mjs +3 -3
- package/dist/components/table/src/tablePagination.mjs.map +1 -1
- package/dist/components/table/src/tableSearchForm.d.ts +12 -12
- package/dist/components/table/src/tableSearchForm.mjs +6 -6
- package/dist/components/table/src/tableSearchForm.mjs.map +1 -1
- package/dist/components/table/src/tableSearchFormItem.d.ts +4 -4
- package/dist/components/table/src/tableSearchFormItem.mjs +2 -2
- package/dist/components/table/src/tableSearchFormItem.mjs.map +1 -1
- package/dist/components/table/src/useTable.d.ts +1 -0
- package/dist/components/table/src/useTable.mjs +109 -65
- package/dist/components/table/src/useTable.mjs.map +1 -1
- package/dist/components/table/utils/table.d.ts +4 -4
- package/dist/components/table/utils/table.mjs +6 -6
- package/dist/components/table/utils/table.mjs.map +1 -1
- package/dist/components/tree/src/tree.d.ts +86 -86
- package/dist/components/tree/src/tree.mjs +46 -46
- package/dist/components/tree/src/tree.mjs.map +1 -1
- package/dist/components/treeSelect/src/treeSelect.d.ts +144 -150
- package/dist/components/treeSelect/src/treeSelect.mjs +55 -55
- package/dist/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/dist/components/upload/src/upload.d.ts +36 -36
- package/dist/components/upload/src/upload.mjs +17 -17
- package/dist/components/upload/src/upload.mjs.map +1 -1
- package/dist/components/uploadImage/src/uploadImage.d.ts +47 -47
- package/dist/components/uploadImage/src/uploadImage.mjs +23 -23
- package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
- package/dist/components/uploadImages/src/uploadImages.d.ts +41 -41
- package/dist/components/uploadImages/src/uploadImages.mjs +21 -21
- package/dist/components/uploadImages/src/uploadImages.mjs.map +1 -1
- package/dist/directives/click-debounce/index.mjs +19 -11
- package/dist/directives/click-debounce/index.mjs.map +1 -1
- package/dist/directives/click-throttle/index.d.ts +4 -2
- package/dist/directives/click-throttle/index.mjs +21 -11
- package/dist/directives/click-throttle/index.mjs.map +1 -1
- package/dist/index.global.min.js +4 -4
- package/dist/index.global.min.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/internal/props.d.ts +685 -0
- package/dist/internal/props.mjs +683 -0
- package/dist/internal/props.mjs.map +1 -0
- package/dist/utils/loading-tasks.d.ts +5 -0
- package/dist/utils/loading-tasks.mjs +32 -0
- package/dist/utils/loading-tasks.mjs.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +5 -10
|
@@ -10,7 +10,7 @@ import { computed, createVNode, defineComponent, mergeProps, onMounted, reactive
|
|
|
10
10
|
import { ElTreeSelect, selectEmits, selectProps, treeEmits, treeProps } from "element-plus";
|
|
11
11
|
//#region src/components/treeSelect/src/treeSelect.tsx
|
|
12
12
|
const ElTreeSelectRuntime = ElTreeSelect;
|
|
13
|
-
/** FaTreeSelect 的运行时 Props
|
|
13
|
+
/** FaTreeSelect 的运行时 Props 定义 */
|
|
14
14
|
const faTreeSelectProps = {
|
|
15
15
|
...selectProps,
|
|
16
16
|
...treeProps,
|
|
@@ -18,38 +18,38 @@ const faTreeSelectProps = {
|
|
|
18
18
|
filterNodeMethod: { type: definePropType(Function) },
|
|
19
19
|
/**
|
|
20
20
|
* 懒加载节点的缓存数据,结构与数据相同,用于获取未加载数据的标签
|
|
21
|
-
*
|
|
21
|
+
* The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data
|
|
22
22
|
*/
|
|
23
23
|
cacheData: {
|
|
24
24
|
type: definePropType(Array),
|
|
25
25
|
default: () => []
|
|
26
26
|
},
|
|
27
|
-
/**
|
|
27
|
+
/** 是否禁用选择器;未指定时继承 ElForm 的禁用状态。 */
|
|
28
28
|
disabled: {
|
|
29
29
|
type: Boolean,
|
|
30
30
|
default: void 0
|
|
31
31
|
},
|
|
32
|
-
/**
|
|
32
|
+
/** 远程数据加载时显示的文本;默认显示“加载中...”。 */
|
|
33
33
|
loadingText: {
|
|
34
34
|
type: String,
|
|
35
35
|
default: "加载中..."
|
|
36
36
|
},
|
|
37
|
-
/**
|
|
37
|
+
/** 筛选结果为空时显示的文本,也可通过 empty 插槽替换。 */
|
|
38
38
|
noMatchText: {
|
|
39
39
|
type: String,
|
|
40
40
|
default: "暂无匹配的数据"
|
|
41
41
|
},
|
|
42
|
-
/**
|
|
42
|
+
/** 没有可选数据时显示的文本,也可通过 empty 插槽替换。 */
|
|
43
43
|
noDataText: {
|
|
44
44
|
type: String,
|
|
45
45
|
default: "暂无数据"
|
|
46
46
|
},
|
|
47
|
-
/**
|
|
47
|
+
/** 多选时是否折叠已选标签 */
|
|
48
48
|
collapseTags: {
|
|
49
49
|
type: Boolean,
|
|
50
50
|
default: true
|
|
51
51
|
},
|
|
52
|
-
/**
|
|
52
|
+
/** 悬停折叠标签时是否显示全部选项;仅在 collapse-tags 开启时有效。 */
|
|
53
53
|
collapseTagsTooltip: {
|
|
54
54
|
type: Boolean,
|
|
55
55
|
default: true
|
|
@@ -59,26 +59,26 @@ const faTreeSelectProps = {
|
|
|
59
59
|
type: String,
|
|
60
60
|
default: "value"
|
|
61
61
|
},
|
|
62
|
-
/**
|
|
62
|
+
/** 是否默认展开所有节点 */
|
|
63
63
|
defaultExpandAll: {
|
|
64
64
|
type: Boolean,
|
|
65
65
|
default: true
|
|
66
66
|
},
|
|
67
|
-
/**
|
|
67
|
+
/** 是否在点击节点的时候选中节点 */
|
|
68
68
|
checkOnClickNode: {
|
|
69
69
|
type: Boolean,
|
|
70
70
|
default: true
|
|
71
71
|
},
|
|
72
|
-
/**
|
|
72
|
+
/** 是否高亮当前选中节点 */
|
|
73
73
|
highlightCurrent: {
|
|
74
74
|
type: Boolean,
|
|
75
75
|
default: true
|
|
76
76
|
},
|
|
77
|
-
/**
|
|
77
|
+
/** 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 */
|
|
78
78
|
expandOnClickNode: Boolean,
|
|
79
|
-
/**
|
|
79
|
+
/** 点击折叠节点,需要开启 'expandOnClickNode' */
|
|
80
80
|
collapseOnClickNode: Boolean,
|
|
81
|
-
/**
|
|
81
|
+
/** v-model 绑定值 */
|
|
82
82
|
modelValue: {
|
|
83
83
|
type: definePropType([
|
|
84
84
|
String,
|
|
@@ -89,23 +89,23 @@ const faTreeSelectProps = {
|
|
|
89
89
|
]),
|
|
90
90
|
default: void 0
|
|
91
91
|
},
|
|
92
|
-
/**
|
|
92
|
+
/** v-model:label 绑定值 */
|
|
93
93
|
label: definePropType([String, Array]),
|
|
94
|
-
/**
|
|
94
|
+
/** 宽度 */
|
|
95
95
|
width: {
|
|
96
96
|
type: [String, Number],
|
|
97
97
|
default: "100%"
|
|
98
98
|
},
|
|
99
|
-
/**
|
|
99
|
+
/** 插槽使用的附加状态 */
|
|
100
100
|
moreDetail: Boolean,
|
|
101
|
-
/**
|
|
101
|
+
/** 是否延迟加载远程数据;开启后在首次打开下拉框时请求。 */
|
|
102
102
|
lazy: {
|
|
103
103
|
type: Boolean,
|
|
104
104
|
default: true
|
|
105
105
|
},
|
|
106
|
-
/**
|
|
106
|
+
/** 是否默认选中;不能与懒加载同时使用。 */
|
|
107
107
|
defaultSelected: Boolean,
|
|
108
|
-
/**
|
|
108
|
+
/** 配置选项 */
|
|
109
109
|
props: {
|
|
110
110
|
type: definePropType(Object),
|
|
111
111
|
default: () => ({
|
|
@@ -115,12 +115,12 @@ const faTreeSelectProps = {
|
|
|
115
115
|
children: "children"
|
|
116
116
|
})
|
|
117
117
|
},
|
|
118
|
-
/**
|
|
118
|
+
/** 下拉框数据 */
|
|
119
119
|
data: {
|
|
120
120
|
type: definePropType(Array),
|
|
121
121
|
default: () => []
|
|
122
122
|
},
|
|
123
|
-
/**
|
|
123
|
+
/** 请求数据的函数 */
|
|
124
124
|
requestApi: { type: definePropType(Function) },
|
|
125
125
|
/** 初始化参数 */
|
|
126
126
|
initParam: definePropType([
|
|
@@ -129,19 +129,19 @@ const faTreeSelectProps = {
|
|
|
129
129
|
Object
|
|
130
130
|
])
|
|
131
131
|
};
|
|
132
|
-
/** FaTreeSelect 的运行时 Emits
|
|
132
|
+
/** FaTreeSelect 的运行时 Emits 定义 */
|
|
133
133
|
const faTreeSelectEmits = {
|
|
134
134
|
...selectEmits,
|
|
135
135
|
...treeEmits,
|
|
136
|
-
/**
|
|
136
|
+
/** v-model 回调 */
|
|
137
137
|
"update:modelValue": (value) => typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "object" && value !== null || value == null,
|
|
138
|
-
/**
|
|
138
|
+
/** 选中数据改变 */
|
|
139
139
|
change: (_data, _value) => true,
|
|
140
|
-
/**
|
|
140
|
+
/** v-model:label 回调 */
|
|
141
141
|
"update:label": (value) => typeof value === "string" || Array.isArray(value) || value === null,
|
|
142
|
-
/**
|
|
142
|
+
/** 数据改变 */
|
|
143
143
|
dataChange: (data) => Array.isArray(data),
|
|
144
|
-
/**
|
|
144
|
+
/** 节点点击 */
|
|
145
145
|
"node-click": (_data, _node, _instance) => true
|
|
146
146
|
};
|
|
147
147
|
var treeSelect_default = defineComponent({
|
|
@@ -400,59 +400,59 @@ var treeSelect_default = defineComponent({
|
|
|
400
400
|
}) ?? [] }
|
|
401
401
|
}));
|
|
402
402
|
return useExpose(expose, {
|
|
403
|
-
/**
|
|
403
|
+
/** 使选择器的输入框获取焦点。 */
|
|
404
404
|
focus: computed(() => treeSelectRef.value?.focus),
|
|
405
|
-
/**
|
|
405
|
+
/** 使选择器的输入框失去焦点,并隐藏下拉框。 */
|
|
406
406
|
blur: computed(() => treeSelectRef.value?.blur),
|
|
407
|
-
/**
|
|
407
|
+
/** 获取当前选中的标签。 */
|
|
408
408
|
selectedLabel: computed(() => treeSelectRef.value?.selectedLabel),
|
|
409
|
-
/**
|
|
409
|
+
/** 过滤所有树节点,过滤后的节点将被隐藏。 */
|
|
410
410
|
filter: computed(() => treeSelectRef.value?.filter),
|
|
411
|
-
/**
|
|
411
|
+
/** 为节点设置新数据,只有设置 node-key 时可用。 */
|
|
412
412
|
updateKeyChildren: computed(() => treeSelectRef.value?.updateKeyChildren),
|
|
413
|
-
/**
|
|
413
|
+
/** 获取当前选中的节点。 */
|
|
414
414
|
getCheckedNodes: computed(() => treeSelectRef.value?.getCheckedNodes),
|
|
415
|
-
/**
|
|
415
|
+
/** 设置当前选中的节点。 */
|
|
416
416
|
setCheckedNodes: computed(() => treeSelectRef.value?.setCheckedNodes),
|
|
417
|
-
/**
|
|
417
|
+
/** 获取当前选中的节点 Key。 */
|
|
418
418
|
getCheckedKeys: computed(() => treeSelectRef.value?.getCheckedKeys),
|
|
419
|
-
/**
|
|
419
|
+
/** 设置当前选中的节点 Key。 */
|
|
420
420
|
setCheckedKeys: computed(() => treeSelectRef.value?.setCheckedKeys),
|
|
421
|
-
/**
|
|
421
|
+
/** 设置节点选中状态。 */
|
|
422
422
|
setChecked: computed(() => treeSelectRef.value?.setChecked),
|
|
423
|
-
/**
|
|
423
|
+
/** 获取当前半选中的节点。 */
|
|
424
424
|
getHalfCheckedNodes: computed(() => treeSelectRef.value?.getHalfCheckedNodes),
|
|
425
|
-
/**
|
|
425
|
+
/** 获取当前半选中的节点 Key。 */
|
|
426
426
|
getHalfCheckedKeys: computed(() => treeSelectRef.value?.getHalfCheckedKeys),
|
|
427
|
-
/**
|
|
427
|
+
/** 获取当前节点 Key。 */
|
|
428
428
|
getCurrentKey: computed(() => treeSelectRef.value?.getCurrentKey),
|
|
429
|
-
/**
|
|
429
|
+
/** 获取当前节点。 */
|
|
430
430
|
getCurrentNode: computed(() => treeSelectRef.value?.getCurrentNode),
|
|
431
|
-
/**
|
|
431
|
+
/** 设置当前节点 Key。 */
|
|
432
432
|
setCurrentKey: computed(() => treeSelectRef.value?.setCurrentKey),
|
|
433
|
-
/**
|
|
433
|
+
/** 设置当前节点。 */
|
|
434
434
|
setCurrentNode: computed(() => treeSelectRef.value?.setCurrentNode),
|
|
435
|
-
/**
|
|
435
|
+
/** 根据数据或 Key 获取节点。 */
|
|
436
436
|
getNode: computed(() => treeSelectRef.value?.getNode),
|
|
437
|
-
/**
|
|
437
|
+
/** 删除节点。 */
|
|
438
438
|
remove: computed(() => treeSelectRef.value?.remove),
|
|
439
|
-
/**
|
|
439
|
+
/** 追加子节点。 */
|
|
440
440
|
append: computed(() => treeSelectRef.value?.append),
|
|
441
|
-
/**
|
|
441
|
+
/** 在指定节点前插入节点。 */
|
|
442
442
|
insertBefore: computed(() => treeSelectRef.value?.insertBefore),
|
|
443
|
-
/**
|
|
443
|
+
/** 在指定节点后插入节点。 */
|
|
444
444
|
insertAfter: computed(() => treeSelectRef.value?.insertAfter),
|
|
445
|
-
/**
|
|
445
|
+
/** Element Plus Tree 实例。 */
|
|
446
446
|
treeRef: computed(() => treeSelectRef.value?.treeRef),
|
|
447
|
-
/**
|
|
447
|
+
/** Element Plus Select 实例。 */
|
|
448
448
|
selectRef: computed(() => treeSelectRef.value?.selectRef),
|
|
449
|
-
/**
|
|
449
|
+
/** 加载状态 */
|
|
450
450
|
loading: toRef(state, "loading"),
|
|
451
|
-
/**
|
|
451
|
+
/** 刷新 */
|
|
452
452
|
refresh: loadData,
|
|
453
|
-
/**
|
|
453
|
+
/** 设置选择 */
|
|
454
454
|
setSelection: (value) => handleModelValueUpdate(value),
|
|
455
|
-
/**
|
|
455
|
+
/** 清除选择 */
|
|
456
456
|
clearSelection: () => handleModelValueUpdate(props.multiple ? [] : void 0)
|
|
457
457
|
});
|
|
458
458
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeSelect.mjs","names":["update:modelValue","update:label","node-click"],"sources":["../../../../src/components/treeSelect/src/treeSelect.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, shallowRef, toRef, useModel, watch } from \"vue\";\nimport { ElTreeSelect, selectEmits, selectProps, treeEmits, treeProps } from \"element-plus\";\nimport { addCssUnit, definePropType, isEqual, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport type { FilterValue, SelectInstance, TreeInstance, TreeNodeData } from \"element-plus\";\nimport type { ComponentInternalInstance } from \"vue\";\nimport type { ElSelectorModelValue, ElSelectorOutput, ElSelectorValue } from \"../../select\";\nimport type { SelectComponentProps } from \"../../select/src/select\";\nimport type { PagedInput } from \"../../table\";\nimport type { FilterNodeMethodFunction, TreeNode } from \"../../tree/src/tree.props\";\n\n/** 补充 Element Plus TreeSelect 运行时支持但类型声明缺失的事件。 */\ntype ElTreeSelectRuntimeType = typeof ElTreeSelect &\n\t(new () => {\n\t\t$props: InstanceType<typeof ElTreeSelect>[\"$props\"] & {\n\t\t\tonNodeClick?: (data: ElSelectorOutput, node: TreeNode, instance: ComponentInternalInstance | null) => void;\n\t\t\tonChange?: (value: ElSelectorModelValue) => void;\n\t\t\t\"onUpdate:modelValue\"?: (value: ElSelectorModelValue) => void;\n\t\t};\n\t});\n\nconst ElTreeSelectRuntime = ElTreeSelect as ElTreeSelectRuntimeType;\n\n/** Element Plus TreeSelect 运行时实际暴露的方法集合。 */\ntype ElTreeSelectExposes = Pick<SelectInstance, \"focus\" | \"blur\" | \"selectedLabel\"> &\n\tPick<\n\t\tTreeInstance,\n\t\t| \"filter\"\n\t\t| \"updateKeyChildren\"\n\t\t| \"getCheckedNodes\"\n\t\t| \"setCheckedNodes\"\n\t\t| \"getCheckedKeys\"\n\t\t| \"setCheckedKeys\"\n\t\t| \"setChecked\"\n\t\t| \"getHalfCheckedNodes\"\n\t\t| \"getHalfCheckedKeys\"\n\t\t| \"getCurrentKey\"\n\t\t| \"getCurrentNode\"\n\t\t| \"setCurrentKey\"\n\t\t| \"setCurrentNode\"\n\t\t| \"getNode\"\n\t\t| \"remove\"\n\t\t| \"append\"\n\t\t| \"insertBefore\"\n\t\t| \"insertAfter\"\n\t> & {\n\t\ttreeRef: TreeInstance;\n\t\tselectRef: SelectInstance;\n\t};\n\n/** FaTreeSelect 的运行时 Props 定义。 */\nexport const faTreeSelectProps = {\n\t...selectProps,\n\t...treeProps,\n\t/** 树节点筛选方法。 */\n\tfilterNodeMethod: {\n\t\ttype: definePropType<FilterNodeMethodFunction>(Function),\n\t},\n\t/**\n\t * 懒加载节点的缓存数据,结构与数据相同,用于获取未加载数据的标签\n\t * @description The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data\n\t */\n\tcacheData: {\n\t\ttype: definePropType<\n\t\t\t{\n\t\t\t\tvalue: string | number | boolean | object;\n\t\t\t\tcurrentLabel: string | number;\n\t\t\t\tisDisabled: boolean;\n\t\t\t}[]\n\t\t>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 */\n\texpandOnClickNode: Boolean,\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<ElSelectorModelValue>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[] | null>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 懒加载远程数据,默认 true。当下拉框第一次显示的时候才会加载远程数据*/\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 默认选中。不能和懒加载一起使用 */\n\tdefaultSelected: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: () => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 下拉框数据 */\n\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: string | number | PagedInput) => Promise<ElSelectorOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n};\n\n/** FaTreeSelect 的运行时 Emits 定义。 */\nexport const faTreeSelectEmits = {\n\t...selectEmits,\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: ElSelectorModelValue) =>\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"boolean\" ||\n\t\t(typeof value === \"object\" && value !== null) ||\n\t\tvalue == null,\n\t/** @description 选中数据改变 */\n\tchange: (_data: ElSelectorOutput | ElSelectorOutput[] | null, _value?: ElSelectorModelValue) => true,\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[] | null) => typeof value === \"string\" || Array.isArray(value) || value === null,\n\n\t/** @description 数据改变 */\n\tdataChange: (data: ElSelectorOutput[]) => Array.isArray(data),\n\t/** @description 节点点击 */\n\t\"node-click\": (_data: ElSelectorOutput, _node: TreeNode, _instance: ComponentInternalInstance | null) => true,\n};\n\n/** FaTreeSelect 的插槽参数。 */\nexport interface FaTreeSelectSlots extends Record<string, unknown> {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: TreeNode; data: ElSelectorOutput };\n\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n}\n\nexport default defineComponent({\n\tname: \"FaTreeSelect\",\n\tprops: faTreeSelectProps,\n\temits: faTreeSelectEmits,\n\tslots: makeSlots<FaTreeSelectSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst selectedLabel = useModel(props, \"label\");\n\n\t\tconst treeSelectRef = shallowRef<ElTreeSelectExposes | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<ElSelectorModelValue>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tlet requestVersion = 0;\n\n\t\tconst handleData = (data: ElSelectorOutput[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t.map((item) => {\n\t\t\t\t\tconst value: unknown = item[props.nodeKey];\n\t\t\t\t\tconst label: unknown = typeof props.props.label === \"function\" ? props.props.label(item) : item[props.props.label ?? \"label\"];\n\t\t\t\t\tconst hide: unknown = typeof props.props.hide === \"function\" ? props.props.hide(item) : item[props.props.hide ?? \"hide\"];\n\t\t\t\t\tconst disabled: unknown =\n\t\t\t\t\t\ttypeof props.props.disabled === \"function\" ? props.props.disabled(item) : item[props.props.disabled ?? \"disabled\"];\n\t\t\t\t\tconst children: unknown = item[props.props.children ?? \"children\"];\n\t\t\t\t\tconst selectorValue: ElSelectorValue | undefined =\n\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t(typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"object\")\n\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tchildren: Array.isArray(children) ? handleData(children as ElSelectorOutput[]) : [],\n\t\t\t\t\t\tdisabled: typeof disabled === \"boolean\" ? disabled : undefined,\n\t\t\t\t\t\thide: typeof hide === \"boolean\" ? hide : undefined,\n\t\t\t\t\t\tlabel: typeof label === \"string\" ? label : undefined,\n\t\t\t\t\t\tvalue: selectorValue,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.filter((item) => item.hide !== true);\n\t\t};\n\n\t\tconst handleModelValueUpdate = (value: ElSelectorModelValue) => {\n\t\t\tstate.value = value;\n\t\t\temit(\"update:modelValue\", value);\n\t\t};\n\n\t\tconst loadData = async () => {\n\t\t\tconst currentRequestVersion = ++requestVersion;\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = props.initParam ?? {};\n\t\t\t\ttry {\n\t\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\t// 这里不允许回显了\n\t\t\t\t\tstate.echo = false;\n\t\t\t\t\tstate.selectorData = handleData(resData);\n\t\t\t\t\temit(\"dataChange\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.selectorData = handleData(props.data);\n\t\t\t}\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: TreeNode) => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level && parentNode) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst filterText = typeof value === \"string\" || typeof value === \"number\" ? String(value) : \"\";\n\t\t\tconst result = labels.some((label) => label.includes(filterText));\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElSelectorOutput, node: TreeNode, instance: ComponentInternalInstance | null) => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/custom-event-name-casing -- Element Plus 的公开事件名为 node-click,需要保持原始名称透传。\n\t\t\temit(\"node-click\", data, node, instance);\n\t\t};\n\n\t\t/**\n\t\t * 下拉框出现/隐藏时触发\n\t\t */\n\t\tconst handleVisibleChange = async (visible: boolean) => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\t// 懒加载\n\t\t\t\t\tprops.lazy && (await loadData());\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/custom-event-name-casing -- Element Plus 的公开事件名为 visible-change,需要保持原始名称透传。\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\tconst flattenOptions = (data: ElSelectorOutput[]): ElSelectorOutput[] =>\n\t\t\tdata.flatMap((item) => [item, ...flattenOptions(item.children ?? [])]);\n\n\t\tconst handleChange = (value?: ElSelectorModelValue) => {\n\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\tif (props.multiple) {\n\t\t\t\tconst valueList = Array.isArray(value) ? value : [];\n\t\t\t\tif (valueList.length === 0) {\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = valueList\n\t\t\t\t\t.map((item) => selectorData.find((option) => option.value !== undefined && isEqual(option.value, item)))\n\t\t\t\t\t.filter((item) => item !== undefined);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\temit(\"change\", null, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = selectorData.find((item) => item.value !== undefined && isEqual(item.value, value));\n\t\t\temit(\"change\", data ?? null, value);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && newValue != null) {\n\t\t\t\t\tconst hasLabel = props.label != null;\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\t// 判断是否为数组\n\t\t\t\t\t\tif (!Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当启用 multiple 时,传入的 modelValue 必须是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当启用 multiple 时,传入的 modelValue:label 必须是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => {\n\t\t\t\t\t\t\t\tconst value: unknown = item;\n\t\t\t\t\t\t\t\tconst label: unknown = Array.isArray(props.label) ? props.label[index] : undefined;\n\t\t\t\t\t\t\t\tconst selectorValue: ElSelectorValue | undefined =\n\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t(typeof value === \"string\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"boolean\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"object\")\n\t\t\t\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: selectorValue,\n\t\t\t\t\t\t\t\t\tlabel: hasLabel && typeof label === \"string\" ? label : undefined,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当禁用 multiple 时,传入的 modelValue 不能是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当禁用 multiple 时,传入的 modelValue:label 不能是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\t\tlabel: typeof props.label === \"string\" ? props.label : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t[() => state.value, () => state.selectorData],\n\t\t\t([value]) => {\n\t\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\n\t\t\t\tif (props.multiple) {\n\t\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tselectedLabel.value = value.map((item, index) => {\n\t\t\t\t\t\tconst data = selectorData.find((option) => option.value !== undefined && isEqual(option.value, item));\n\n\t\t\t\t\t\treturn data?.label ?? (Array.isArray(props.label) ? (props.label[index] ?? \"\") : \"\");\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselectedLabel.value =\n\t\t\t\t\tselectorData.find((item) => item.value !== undefined && isEqual(item.value, value))?.label ??\n\t\t\t\t\t(typeof props.label === \"string\" ? props.label : null);\n\t\t\t},\n\t\t\t{\n\t\t\t\tdeep: true,\n\t\t\t\tflush: \"sync\",\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t(newValue, oldValue) => {\n\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\tif (state.value != null) {\n\t\t\t\t\t\thandleModelValueUpdate(props.multiple ? [] : undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\treturn loadData();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data.length,\n\t\t\t(length) => {\n\t\t\t\tif (state.debut) state.echo = length === 0;\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tconst firstItem = state.selectorData[0];\n\t\t\t\tif (firstItem?.value !== undefined) {\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\thandleModelValueUpdate([firstItem.value]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleModelValueUpdate(firstItem.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否为本地数据\n\t\t\telse if (!props.requestApi && props.data.length > 0) {\n\t\t\t\tstate.debut = false;\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\t// 判断是否非默认选中,且未启用懒加载\n\t\t\telse if (!props.lazy) {\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t});\n\n\t\tconst elTreeSelectProps = useProps(props, { ...selectProps, ...treeProps }, [\n\t\t\t\"modelValue\",\n\t\t\t\"popperClass\",\n\t\t\t\"lazy\",\n\t\t\t\"loading\",\n\t\t\t\"expandOnClickNode\",\n\t\t\t\"filterNodeMethod\",\n\t\t\t\"props\",\n\t\t]);\n\t\tconst elTreeSelectEmits = useEmits({ ...selectEmits, ...treeEmits }, emit, [\"update:modelValue\", \"change\", \"visible-change\", \"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElTreeSelectRuntime\n\t\t\t\t{...elTreeSelectProps.value}\n\t\t\t\t{...elTreeSelectEmits.value}\n\t\t\t\tref={treeSelectRef}\n\t\t\t\tclass=\"fa-tree-select\"\n\t\t\t\tpopperClass={[\"fa-tree-select-dropdown\", props.popperClass]}\n\t\t\t\tstyle={{ width: addCssUnit(props.width) }}\n\t\t\t\tmodelValue={state.value}\n\t\t\t\tonUpdate:modelValue={handleModelValueUpdate}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tlazy={false}\n\t\t\t\tloading={state.loading}\n\t\t\t\tdata={state.selectorData}\n\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\tfilterNodeMethod={handleFilterNode as typeof props.filterNodeMethod}\n\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\tonVisible-change={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\t...(slots.default && {\n\t\t\t\t\t\tdefault: ({ node, data }: { node: TreeNode; data: ElSelectorOutput }) => slots.default?.({ node, data }) ?? [],\n\t\t\t\t\t}),\n\t\t\t\t\t...(slots.header && { header: () => slots.header?.() ?? [] }),\n\t\t\t\t\t...(slots.footer && { footer: () => slots.footer?.() ?? [] }),\n\t\t\t\t\t...(slots.prefix && { prefix: () => slots.prefix?.() ?? [] }),\n\t\t\t\t\t...(slots.empty && { empty: () => slots.empty?.() ?? [] }),\n\t\t\t\t\t...(slots.tag && { tag: () => slots.tag?.() ?? [] }),\n\t\t\t\t\t...(slots.loading && { loading: () => slots.loading?.() ?? [] }),\n\t\t\t\t\t...(slots.label && {\n\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }) =>\n\t\t\t\t\t\t\tslots.label?.({ label, value }) ?? [],\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElTreeSelectRuntime>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点。 */\n\t\t\tfocus: computed(() => treeSelectRef.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框。 */\n\t\t\tblur: computed(() => treeSelectRef.value?.blur),\n\t\t\t/** @description 获取当前选中的标签。 */\n\t\t\tselectedLabel: computed(() => treeSelectRef.value?.selectedLabel),\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏。 */\n\t\t\tfilter: computed(() => treeSelectRef.value?.filter),\n\t\t\t/** @description 为节点设置新数据,只有设置 node-key 时可用。 */\n\t\t\tupdateKeyChildren: computed(() => treeSelectRef.value?.updateKeyChildren),\n\t\t\t/** @description 获取当前选中的节点。 */\n\t\t\tgetCheckedNodes: computed(() => treeSelectRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置当前选中的节点。 */\n\t\t\tsetCheckedNodes: computed(() => treeSelectRef.value?.setCheckedNodes),\n\t\t\t/** @description 获取当前选中的节点 Key。 */\n\t\t\tgetCheckedKeys: computed(() => treeSelectRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置当前选中的节点 Key。 */\n\t\t\tsetCheckedKeys: computed(() => treeSelectRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点选中状态。 */\n\t\t\tsetChecked: computed(() => treeSelectRef.value?.setChecked),\n\t\t\t/** @description 获取当前半选中的节点。 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeSelectRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 获取当前半选中的节点 Key。 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeSelectRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 获取当前节点 Key。 */\n\t\t\tgetCurrentKey: computed(() => treeSelectRef.value?.getCurrentKey),\n\t\t\t/** @description 获取当前节点。 */\n\t\t\tgetCurrentNode: computed(() => treeSelectRef.value?.getCurrentNode),\n\t\t\t/** @description 设置当前节点 Key。 */\n\t\t\tsetCurrentKey: computed(() => treeSelectRef.value?.setCurrentKey),\n\t\t\t/** @description 设置当前节点。 */\n\t\t\tsetCurrentNode: computed(() => treeSelectRef.value?.setCurrentNode),\n\t\t\t/** @description 根据数据或 Key 获取节点。 */\n\t\t\tgetNode: computed(() => treeSelectRef.value?.getNode),\n\t\t\t/** @description 删除节点。 */\n\t\t\tremove: computed(() => treeSelectRef.value?.remove),\n\t\t\t/** @description 追加子节点。 */\n\t\t\tappend: computed(() => treeSelectRef.value?.append),\n\t\t\t/** @description 在指定节点前插入节点。 */\n\t\t\tinsertBefore: computed(() => treeSelectRef.value?.insertBefore),\n\t\t\t/** @description 在指定节点后插入节点。 */\n\t\t\tinsertAfter: computed(() => treeSelectRef.value?.insertAfter),\n\t\t\t/** @description Element Plus Tree 实例。 */\n\t\t\ttreeRef: computed(() => treeSelectRef.value?.treeRef),\n\t\t\t/** @description Element Plus Select 实例。 */\n\t\t\tselectRef: computed(() => treeSelectRef.value?.selectRef),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: toRef(state, \"loading\"),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: Exclude<ElSelectorModelValue, null | undefined>) => handleModelValueUpdate(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleModelValueUpdate(props.multiple ? [] : undefined),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"treeSelect.mjs","names":["update:modelValue","update:label","node-click"],"sources":["../../../../src/components/treeSelect/src/treeSelect.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, shallowRef, toRef, useModel, watch } from \"vue\";\nimport { ElTreeSelect, selectEmits, selectProps, treeEmits, treeProps } from \"element-plus\";\nimport { addCssUnit, definePropType, isEqual, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport type { FilterValue, SelectInstance, TreeInstance, TreeNodeData } from \"element-plus\";\nimport type { ComponentInternalInstance } from \"vue\";\nimport type { ElSelectorModelValue, ElSelectorOutput, ElSelectorValue } from \"../../select\";\nimport type { SelectComponentProps } from \"../../select/src/select\";\nimport type { PagedInput } from \"../../table\";\nimport type { FilterNodeMethodFunction, TreeNode } from \"../../tree/src/tree.props\";\n\n/** 补充 Element Plus TreeSelect 运行时支持但类型声明缺失的事件。 */\ntype ElTreeSelectRuntimeType = typeof ElTreeSelect &\n\t(new () => {\n\t\t$props: InstanceType<typeof ElTreeSelect>[\"$props\"] & {\n\t\t\tonNodeClick?: (data: ElSelectorOutput, node: TreeNode, instance: ComponentInternalInstance | null) => void;\n\t\t\tonChange?: (value: ElSelectorModelValue) => void;\n\t\t\t\"onUpdate:modelValue\"?: (value: ElSelectorModelValue) => void;\n\t\t};\n\t});\n\nconst ElTreeSelectRuntime = ElTreeSelect as ElTreeSelectRuntimeType;\n\n/** Element Plus TreeSelect 运行时实际暴露的方法集合。 */\ntype ElTreeSelectExposes = Pick<SelectInstance, \"focus\" | \"blur\" | \"selectedLabel\"> &\n\tPick<\n\t\tTreeInstance,\n\t\t| \"filter\"\n\t\t| \"updateKeyChildren\"\n\t\t| \"getCheckedNodes\"\n\t\t| \"setCheckedNodes\"\n\t\t| \"getCheckedKeys\"\n\t\t| \"setCheckedKeys\"\n\t\t| \"setChecked\"\n\t\t| \"getHalfCheckedNodes\"\n\t\t| \"getHalfCheckedKeys\"\n\t\t| \"getCurrentKey\"\n\t\t| \"getCurrentNode\"\n\t\t| \"setCurrentKey\"\n\t\t| \"setCurrentNode\"\n\t\t| \"getNode\"\n\t\t| \"remove\"\n\t\t| \"append\"\n\t\t| \"insertBefore\"\n\t\t| \"insertAfter\"\n\t> & {\n\t\ttreeRef: TreeInstance;\n\t\tselectRef: SelectInstance;\n\t};\n\n/** FaTreeSelect 的运行时 Props 定义 */\nexport const faTreeSelectProps = {\n\t...selectProps,\n\t...treeProps,\n\t/** 树节点筛选方法。 */\n\tfilterNodeMethod: {\n\t\ttype: definePropType<FilterNodeMethodFunction>(Function),\n\t},\n\t/**\n\t * 懒加载节点的缓存数据,结构与数据相同,用于获取未加载数据的标签\n\t * The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data\n\t */\n\tcacheData: {\n\t\ttype: definePropType<\n\t\t\t{\n\t\t\t\tvalue: string | number | boolean | object;\n\t\t\t\tcurrentLabel: string | number;\n\t\t\t\tisDisabled: boolean;\n\t\t\t}[]\n\t\t>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** 是否禁用选择器;未指定时继承 ElForm 的禁用状态。 */\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 远程数据加载时显示的文本;默认显示“加载中...”。 */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** 筛选结果为空时显示的文本,也可通过 empty 插槽替换。 */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** 没有可选数据时显示的文本,也可通过 empty 插槽替换。 */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** 多选时是否折叠已选标签 */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 悬停折叠标签时是否显示全部选项;仅在 collapse-tags 开启时有效。 */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 */\n\texpandOnClickNode: Boolean,\n\t/** 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** v-model 绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<ElSelectorModelValue>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** v-model:label 绑定值 */\n\tlabel: definePropType<string | string[] | null>([String, Array]),\n\t/** 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** 插槽使用的附加状态 */\n\tmoreDetail: Boolean,\n\t/** 是否延迟加载远程数据;开启后在首次打开下拉框时请求。 */\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 是否默认选中;不能与懒加载同时使用。 */\n\tdefaultSelected: Boolean,\n\t/** 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: () => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** 下拉框数据 */\n\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** 请求数据的函数 */\n\trequestApi: {\n\t\ttype: definePropType<(params?: string | number | PagedInput) => Promise<ElSelectorOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n};\n\n/** FaTreeSelect 的运行时 Emits 定义 */\nexport const faTreeSelectEmits = {\n\t...selectEmits,\n\t...treeEmits,\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: ElSelectorModelValue) =>\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"boolean\" ||\n\t\t(typeof value === \"object\" && value !== null) ||\n\t\tvalue == null,\n\t/** 选中数据改变 */\n\tchange: (_data: ElSelectorOutput | ElSelectorOutput[] | null, _value?: ElSelectorModelValue) => true,\n\t/** v-model:label 回调 */\n\t\"update:label\": (value: string | string[] | null) => typeof value === \"string\" || Array.isArray(value) || value === null,\n\n\t/** 数据改变 */\n\tdataChange: (data: ElSelectorOutput[]) => Array.isArray(data),\n\t/** 节点点击 */\n\t\"node-click\": (_data: ElSelectorOutput, _node: TreeNode, _instance: ComponentInternalInstance | null) => true,\n};\n\n/** FaTreeSelect 的插槽参数 */\nexport interface FaTreeSelectSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: { node: TreeNode; data: ElSelectorOutput };\n\n\t/** 下拉列表顶部的内容 */\n\theader: never;\n\t/** 下拉列表底部的内容 */\n\tfooter: never;\n\t/** Select 组件头部内容 */\n\tprefix: never;\n\t/** 无选项时的列表 */\n\tempty: never;\n\t/** select 组件自定义标签内容 */\n\ttag: never;\n\t/** Select 组件自定义加载内容 */\n\tloading: never;\n\t/** select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n}\n\nexport default defineComponent({\n\tname: \"FaTreeSelect\",\n\tprops: faTreeSelectProps,\n\temits: faTreeSelectEmits,\n\tslots: makeSlots<FaTreeSelectSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst selectedLabel = useModel(props, \"label\");\n\n\t\tconst treeSelectRef = shallowRef<ElTreeSelectExposes | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<ElSelectorModelValue>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tlet requestVersion = 0;\n\n\t\tconst handleData = (data: ElSelectorOutput[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t.map((item) => {\n\t\t\t\t\tconst value: unknown = item[props.nodeKey];\n\t\t\t\t\tconst label: unknown = typeof props.props.label === \"function\" ? props.props.label(item) : item[props.props.label ?? \"label\"];\n\t\t\t\t\tconst hide: unknown = typeof props.props.hide === \"function\" ? props.props.hide(item) : item[props.props.hide ?? \"hide\"];\n\t\t\t\t\tconst disabled: unknown =\n\t\t\t\t\t\ttypeof props.props.disabled === \"function\" ? props.props.disabled(item) : item[props.props.disabled ?? \"disabled\"];\n\t\t\t\t\tconst children: unknown = item[props.props.children ?? \"children\"];\n\t\t\t\t\tconst selectorValue: ElSelectorValue | undefined =\n\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t(typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"object\")\n\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tchildren: Array.isArray(children) ? handleData(children as ElSelectorOutput[]) : [],\n\t\t\t\t\t\tdisabled: typeof disabled === \"boolean\" ? disabled : undefined,\n\t\t\t\t\t\thide: typeof hide === \"boolean\" ? hide : undefined,\n\t\t\t\t\t\tlabel: typeof label === \"string\" ? label : undefined,\n\t\t\t\t\t\tvalue: selectorValue,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.filter((item) => item.hide !== true);\n\t\t};\n\n\t\tconst handleModelValueUpdate = (value: ElSelectorModelValue) => {\n\t\t\tstate.value = value;\n\t\t\temit(\"update:modelValue\", value);\n\t\t};\n\n\t\tconst loadData = async () => {\n\t\t\tconst currentRequestVersion = ++requestVersion;\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = props.initParam ?? {};\n\t\t\t\ttry {\n\t\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\t// 这里不允许回显了\n\t\t\t\t\tstate.echo = false;\n\t\t\t\t\tstate.selectorData = handleData(resData);\n\t\t\t\t\temit(\"dataChange\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.selectorData = handleData(props.data);\n\t\t\t}\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: TreeNode) => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level && parentNode) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst filterText = typeof value === \"string\" || typeof value === \"number\" ? String(value) : \"\";\n\t\t\tconst result = labels.some((label) => label.includes(filterText));\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElSelectorOutput, node: TreeNode, instance: ComponentInternalInstance | null) => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/custom-event-name-casing -- Element Plus 的公开事件名为 node-click,需要保持原始名称透传。\n\t\t\temit(\"node-click\", data, node, instance);\n\t\t};\n\n\t\t/**\n\t\t * 下拉框出现/隐藏时触发\n\t\t */\n\t\tconst handleVisibleChange = async (visible: boolean) => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\t// 懒加载\n\t\t\t\t\tprops.lazy && (await loadData());\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/custom-event-name-casing -- Element Plus 的公开事件名为 visible-change,需要保持原始名称透传。\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\tconst flattenOptions = (data: ElSelectorOutput[]): ElSelectorOutput[] =>\n\t\t\tdata.flatMap((item) => [item, ...flattenOptions(item.children ?? [])]);\n\n\t\tconst handleChange = (value?: ElSelectorModelValue) => {\n\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\tif (props.multiple) {\n\t\t\t\tconst valueList = Array.isArray(value) ? value : [];\n\t\t\t\tif (valueList.length === 0) {\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = valueList\n\t\t\t\t\t.map((item) => selectorData.find((option) => option.value !== undefined && isEqual(option.value, item)))\n\t\t\t\t\t.filter((item) => item !== undefined);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\temit(\"change\", null, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = selectorData.find((item) => item.value !== undefined && isEqual(item.value, value));\n\t\t\temit(\"change\", data ?? null, value);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && newValue != null) {\n\t\t\t\t\tconst hasLabel = props.label != null;\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\t// 判断是否为数组\n\t\t\t\t\t\tif (!Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当启用 multiple 时,传入的 modelValue 必须是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当启用 multiple 时,传入的 modelValue:label 必须是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => {\n\t\t\t\t\t\t\t\tconst value: unknown = item;\n\t\t\t\t\t\t\t\tconst label: unknown = Array.isArray(props.label) ? props.label[index] : undefined;\n\t\t\t\t\t\t\t\tconst selectorValue: ElSelectorValue | undefined =\n\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t(typeof value === \"string\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"boolean\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"object\")\n\t\t\t\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: selectorValue,\n\t\t\t\t\t\t\t\t\tlabel: hasLabel && typeof label === \"string\" ? label : undefined,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当禁用 multiple 时,传入的 modelValue 不能是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast:FaTreeSelect]\", \"当禁用 multiple 时,传入的 modelValue:label 不能是 Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\t\tlabel: typeof props.label === \"string\" ? props.label : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t[() => state.value, () => state.selectorData],\n\t\t\t([value]) => {\n\t\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\n\t\t\t\tif (props.multiple) {\n\t\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tselectedLabel.value = value.map((item, index) => {\n\t\t\t\t\t\tconst data = selectorData.find((option) => option.value !== undefined && isEqual(option.value, item));\n\n\t\t\t\t\t\treturn data?.label ?? (Array.isArray(props.label) ? (props.label[index] ?? \"\") : \"\");\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselectedLabel.value =\n\t\t\t\t\tselectorData.find((item) => item.value !== undefined && isEqual(item.value, value))?.label ??\n\t\t\t\t\t(typeof props.label === \"string\" ? props.label : null);\n\t\t\t},\n\t\t\t{\n\t\t\t\tdeep: true,\n\t\t\t\tflush: \"sync\",\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t(newValue, oldValue) => {\n\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\tif (state.value != null) {\n\t\t\t\t\t\thandleModelValueUpdate(props.multiple ? [] : undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\treturn loadData();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data.length,\n\t\t\t(length) => {\n\t\t\t\tif (state.debut) state.echo = length === 0;\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tconst firstItem = state.selectorData[0];\n\t\t\t\tif (firstItem?.value !== undefined) {\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\thandleModelValueUpdate([firstItem.value]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleModelValueUpdate(firstItem.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否为本地数据\n\t\t\telse if (!props.requestApi && props.data.length > 0) {\n\t\t\t\tstate.debut = false;\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\t// 判断是否非默认选中,且未启用懒加载\n\t\t\telse if (!props.lazy) {\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t});\n\n\t\tconst elTreeSelectProps = useProps(props, { ...selectProps, ...treeProps }, [\n\t\t\t\"modelValue\",\n\t\t\t\"popperClass\",\n\t\t\t\"lazy\",\n\t\t\t\"loading\",\n\t\t\t\"expandOnClickNode\",\n\t\t\t\"filterNodeMethod\",\n\t\t\t\"props\",\n\t\t]);\n\t\tconst elTreeSelectEmits = useEmits({ ...selectEmits, ...treeEmits }, emit, [\"update:modelValue\", \"change\", \"visible-change\", \"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElTreeSelectRuntime\n\t\t\t\t{...elTreeSelectProps.value}\n\t\t\t\t{...elTreeSelectEmits.value}\n\t\t\t\tref={treeSelectRef}\n\t\t\t\tclass=\"fa-tree-select\"\n\t\t\t\tpopperClass={[\"fa-tree-select-dropdown\", props.popperClass]}\n\t\t\t\tstyle={{ width: addCssUnit(props.width) }}\n\t\t\t\tmodelValue={state.value}\n\t\t\t\tonUpdate:modelValue={handleModelValueUpdate}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tlazy={false}\n\t\t\t\tloading={state.loading}\n\t\t\t\tdata={state.selectorData}\n\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\tfilterNodeMethod={handleFilterNode as typeof props.filterNodeMethod}\n\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\tonVisible-change={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\t...(slots.default && {\n\t\t\t\t\t\tdefault: ({ node, data }: { node: TreeNode; data: ElSelectorOutput }) => slots.default?.({ node, data }) ?? [],\n\t\t\t\t\t}),\n\t\t\t\t\t...(slots.header && { header: () => slots.header?.() ?? [] }),\n\t\t\t\t\t...(slots.footer && { footer: () => slots.footer?.() ?? [] }),\n\t\t\t\t\t...(slots.prefix && { prefix: () => slots.prefix?.() ?? [] }),\n\t\t\t\t\t...(slots.empty && { empty: () => slots.empty?.() ?? [] }),\n\t\t\t\t\t...(slots.tag && { tag: () => slots.tag?.() ?? [] }),\n\t\t\t\t\t...(slots.loading && { loading: () => slots.loading?.() ?? [] }),\n\t\t\t\t\t...(slots.label && {\n\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }) =>\n\t\t\t\t\t\t\tslots.label?.({ label, value }) ?? [],\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElTreeSelectRuntime>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 使选择器的输入框获取焦点。 */\n\t\t\tfocus: computed(() => treeSelectRef.value?.focus),\n\t\t\t/** 使选择器的输入框失去焦点,并隐藏下拉框。 */\n\t\t\tblur: computed(() => treeSelectRef.value?.blur),\n\t\t\t/** 获取当前选中的标签。 */\n\t\t\tselectedLabel: computed(() => treeSelectRef.value?.selectedLabel),\n\t\t\t/** 过滤所有树节点,过滤后的节点将被隐藏。 */\n\t\t\tfilter: computed(() => treeSelectRef.value?.filter),\n\t\t\t/** 为节点设置新数据,只有设置 node-key 时可用。 */\n\t\t\tupdateKeyChildren: computed(() => treeSelectRef.value?.updateKeyChildren),\n\t\t\t/** 获取当前选中的节点。 */\n\t\t\tgetCheckedNodes: computed(() => treeSelectRef.value?.getCheckedNodes),\n\t\t\t/** 设置当前选中的节点。 */\n\t\t\tsetCheckedNodes: computed(() => treeSelectRef.value?.setCheckedNodes),\n\t\t\t/** 获取当前选中的节点 Key。 */\n\t\t\tgetCheckedKeys: computed(() => treeSelectRef.value?.getCheckedKeys),\n\t\t\t/** 设置当前选中的节点 Key。 */\n\t\t\tsetCheckedKeys: computed(() => treeSelectRef.value?.setCheckedKeys),\n\t\t\t/** 设置节点选中状态。 */\n\t\t\tsetChecked: computed(() => treeSelectRef.value?.setChecked),\n\t\t\t/** 获取当前半选中的节点。 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeSelectRef.value?.getHalfCheckedNodes),\n\t\t\t/** 获取当前半选中的节点 Key。 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeSelectRef.value?.getHalfCheckedKeys),\n\t\t\t/** 获取当前节点 Key。 */\n\t\t\tgetCurrentKey: computed(() => treeSelectRef.value?.getCurrentKey),\n\t\t\t/** 获取当前节点。 */\n\t\t\tgetCurrentNode: computed(() => treeSelectRef.value?.getCurrentNode),\n\t\t\t/** 设置当前节点 Key。 */\n\t\t\tsetCurrentKey: computed(() => treeSelectRef.value?.setCurrentKey),\n\t\t\t/** 设置当前节点。 */\n\t\t\tsetCurrentNode: computed(() => treeSelectRef.value?.setCurrentNode),\n\t\t\t/** 根据数据或 Key 获取节点。 */\n\t\t\tgetNode: computed(() => treeSelectRef.value?.getNode),\n\t\t\t/** 删除节点。 */\n\t\t\tremove: computed(() => treeSelectRef.value?.remove),\n\t\t\t/** 追加子节点。 */\n\t\t\tappend: computed(() => treeSelectRef.value?.append),\n\t\t\t/** 在指定节点前插入节点。 */\n\t\t\tinsertBefore: computed(() => treeSelectRef.value?.insertBefore),\n\t\t\t/** 在指定节点后插入节点。 */\n\t\t\tinsertAfter: computed(() => treeSelectRef.value?.insertAfter),\n\t\t\t/** Element Plus Tree 实例。 */\n\t\t\ttreeRef: computed(() => treeSelectRef.value?.treeRef),\n\t\t\t/** Element Plus Select 实例。 */\n\t\t\tselectRef: computed(() => treeSelectRef.value?.selectRef),\n\t\t\t/** 加载状态 */\n\t\t\tloading: toRef(state, \"loading\"),\n\t\t\t/** 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** 设置选择 */\n\t\t\tsetSelection: (value: Exclude<ElSelectorModelValue, null | undefined>) => handleModelValueUpdate(value),\n\t\t\t/** 清除选择 */\n\t\t\tclearSelection: () => handleModelValueUpdate(props.multiple ? [] : undefined),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import type { UploadFile, UploadUserFile } from "element-plus";
|
|
2
|
-
/** FaUpload 的运行时 Props
|
|
2
|
+
/** FaUpload 的运行时 Props 定义 */
|
|
3
3
|
export declare const faUploadProps: {
|
|
4
|
-
/**
|
|
4
|
+
/** whether to activate drag and drop mode */
|
|
5
5
|
drag: {
|
|
6
6
|
type: BooleanConstructor;
|
|
7
7
|
default: boolean;
|
|
8
8
|
};
|
|
9
|
-
/**
|
|
9
|
+
/** maximum number of uploads allowed */
|
|
10
10
|
limit: {
|
|
11
11
|
type: NumberConstructor;
|
|
12
12
|
default: number;
|
|
13
13
|
};
|
|
14
|
-
/**
|
|
14
|
+
/** v-model 绑定值 */
|
|
15
15
|
modelValue: import("vue").PropType<string | string[] | null>;
|
|
16
|
-
/**
|
|
16
|
+
/** 大小限制,单位kb */
|
|
17
17
|
maxSize: {
|
|
18
18
|
type: import("vue").PropType<string | number>;
|
|
19
19
|
default: number;
|
|
20
20
|
};
|
|
21
|
-
/**
|
|
21
|
+
/** 图片上传接口,优先级最高 */
|
|
22
22
|
uploadApi: {
|
|
23
23
|
type: import("vue").PropType<(formData: FormData) => Promise<string>>;
|
|
24
24
|
};
|
|
25
|
-
/**
|
|
25
|
+
/** 图片上传地址 */
|
|
26
26
|
uploadUrl: StringConstructor;
|
|
27
27
|
beforeUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>) | {
|
|
28
28
|
(): (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>;
|
|
@@ -137,50 +137,50 @@ export declare const faUploadProps: {
|
|
|
137
137
|
disabled: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
|
|
138
138
|
directory: BooleanConstructor;
|
|
139
139
|
};
|
|
140
|
-
/** FaUpload 的运行时 Emits
|
|
140
|
+
/** FaUpload 的运行时 Emits 定义 */
|
|
141
141
|
export declare const faUploadEmits: {
|
|
142
|
-
/**
|
|
142
|
+
/** v-model 回调 */
|
|
143
143
|
"update:modelValue": (value: string | string[] | null) => boolean;
|
|
144
|
-
/**
|
|
144
|
+
/** v-model:fileList 回调 */
|
|
145
145
|
"update:fileList": (value: UploadUserFile[]) => boolean;
|
|
146
146
|
};
|
|
147
|
-
/** FaUpload
|
|
147
|
+
/** FaUpload 的插槽参数 */
|
|
148
148
|
export interface FaUploadSlots extends Record<string, unknown> {
|
|
149
|
-
/**
|
|
149
|
+
/** 默认内容插槽 */
|
|
150
150
|
default: never;
|
|
151
|
-
/**
|
|
151
|
+
/** 触发文件选择框的内容 */
|
|
152
152
|
trigger: never;
|
|
153
|
-
/**
|
|
153
|
+
/** 提示说明文字 */
|
|
154
154
|
tip: never;
|
|
155
|
-
/**
|
|
155
|
+
/** 缩略图模板的内容 */
|
|
156
156
|
file: {
|
|
157
157
|
file: UploadFile;
|
|
158
158
|
index: number;
|
|
159
159
|
};
|
|
160
160
|
}
|
|
161
161
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
162
|
-
/**
|
|
162
|
+
/** whether to activate drag and drop mode */
|
|
163
163
|
drag: {
|
|
164
164
|
type: BooleanConstructor;
|
|
165
165
|
default: boolean;
|
|
166
166
|
};
|
|
167
|
-
/**
|
|
167
|
+
/** maximum number of uploads allowed */
|
|
168
168
|
limit: {
|
|
169
169
|
type: NumberConstructor;
|
|
170
170
|
default: number;
|
|
171
171
|
};
|
|
172
|
-
/**
|
|
172
|
+
/** v-model 绑定值 */
|
|
173
173
|
modelValue: import("vue").PropType<string | string[] | null>;
|
|
174
|
-
/**
|
|
174
|
+
/** 大小限制,单位kb */
|
|
175
175
|
maxSize: {
|
|
176
176
|
type: import("vue").PropType<string | number>;
|
|
177
177
|
default: number;
|
|
178
178
|
};
|
|
179
|
-
/**
|
|
179
|
+
/** 图片上传接口,优先级最高 */
|
|
180
180
|
uploadApi: {
|
|
181
181
|
type: import("vue").PropType<(formData: FormData) => Promise<string>>;
|
|
182
182
|
};
|
|
183
|
-
/**
|
|
183
|
+
/** 图片上传地址 */
|
|
184
184
|
uploadUrl: StringConstructor;
|
|
185
185
|
beforeUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>) | {
|
|
186
186
|
(): (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>;
|
|
@@ -295,48 +295,48 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
295
295
|
disabled: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
|
|
296
296
|
directory: BooleanConstructor;
|
|
297
297
|
}>, {
|
|
298
|
-
/**
|
|
298
|
+
/** 取消上传请求 */
|
|
299
299
|
abort: import("vue").ComputedRef<((file?: UploadFile) => void) | undefined>;
|
|
300
|
-
/**
|
|
300
|
+
/** 手动上传文件列表 */
|
|
301
301
|
submit: import("vue").ComputedRef<(() => void) | undefined>;
|
|
302
|
-
/**
|
|
302
|
+
/** 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */
|
|
303
303
|
clearFiles: import("vue").ComputedRef<((states?: import("element-plus").UploadStatus[]) => void) | undefined>;
|
|
304
|
-
/**
|
|
304
|
+
/** 手动选择文件 */
|
|
305
305
|
handleStart: import("vue").ComputedRef<((rawFile: import("element-plus").UploadRawFile) => void) | undefined>;
|
|
306
|
-
/**
|
|
306
|
+
/** 手动移除文件。file 和 rawFile 已被合并。 */
|
|
307
307
|
handleRemove: import("vue").ComputedRef<((file: UploadFile | import("element-plus").UploadRawFile) => void) | undefined>;
|
|
308
|
-
/**
|
|
308
|
+
/** 加载状态 */
|
|
309
309
|
loading: import("vue").Ref<boolean, boolean>;
|
|
310
|
-
/**
|
|
310
|
+
/** 文件集合 */
|
|
311
311
|
fileList: import("vue").WritableComputedRef<UploadUserFile[], UploadUserFile[]>;
|
|
312
312
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
313
|
-
/**
|
|
313
|
+
/** v-model 回调 */
|
|
314
314
|
"update:modelValue": (value: string | string[] | null) => boolean;
|
|
315
|
-
/**
|
|
315
|
+
/** v-model:fileList 回调 */
|
|
316
316
|
"update:fileList": (value: UploadUserFile[]) => boolean;
|
|
317
317
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
318
|
-
/**
|
|
318
|
+
/** whether to activate drag and drop mode */
|
|
319
319
|
drag: {
|
|
320
320
|
type: BooleanConstructor;
|
|
321
321
|
default: boolean;
|
|
322
322
|
};
|
|
323
|
-
/**
|
|
323
|
+
/** maximum number of uploads allowed */
|
|
324
324
|
limit: {
|
|
325
325
|
type: NumberConstructor;
|
|
326
326
|
default: number;
|
|
327
327
|
};
|
|
328
|
-
/**
|
|
328
|
+
/** v-model 绑定值 */
|
|
329
329
|
modelValue: import("vue").PropType<string | string[] | null>;
|
|
330
|
-
/**
|
|
330
|
+
/** 大小限制,单位kb */
|
|
331
331
|
maxSize: {
|
|
332
332
|
type: import("vue").PropType<string | number>;
|
|
333
333
|
default: number;
|
|
334
334
|
};
|
|
335
|
-
/**
|
|
335
|
+
/** 图片上传接口,优先级最高 */
|
|
336
336
|
uploadApi: {
|
|
337
337
|
type: import("vue").PropType<(formData: FormData) => Promise<string>>;
|
|
338
338
|
};
|
|
339
|
-
/**
|
|
339
|
+
/** 图片上传地址 */
|
|
340
340
|
uploadUrl: StringConstructor;
|
|
341
341
|
beforeUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>) | {
|
|
342
342
|
(): (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<void | undefined | null | boolean | File | Blob>;
|