fast-element-plus 2.0.27 → 2.0.29
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 +31 -0
- package/README.md +6 -6
- package/README.zh.md +6 -6
- package/dist/component.d.ts +46 -35
- package/dist/components/avatar/src/avatar.d.ts +4 -4
- package/dist/components/button/src/button.d.ts +3 -3
- package/dist/components/carNumber/src/carNumber.d.ts +17 -6
- package/dist/components/carNumber/src/carNumber.mjs +16 -1
- package/dist/components/carNumber/src/carNumber.mjs.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +4 -4
- package/dist/components/form/src/formItem.d.ts +9 -3
- package/dist/components/form/src/formItem.mjs +5 -3
- package/dist/components/form/src/formItem.mjs.map +1 -1
- package/dist/components/image/src/image.d.ts +6 -1
- package/dist/components/image/src/image.mjs +7 -2
- package/dist/components/image/src/image.mjs.map +1 -1
- package/dist/components/select/src/select.d.ts +13 -7
- package/dist/components/select/src/select.mjs +4 -6
- package/dist/components/select/src/select.mjs.map +1 -1
- package/dist/components/select/src/selectOption.d.ts +5 -0
- package/dist/components/select/src/selectOption.mjs +3 -0
- package/dist/components/select/src/selectOption.mjs.map +1 -1
- package/dist/components/selectPage/src/selectPage.d.ts +16 -10
- package/dist/components/selectPage/src/selectPage.mjs +6 -8
- package/dist/components/selectPage/src/selectPage.mjs.map +1 -1
- package/dist/components/selectV2/src/selectV2.d.ts +7 -2
- package/dist/components/selectV2/src/selectV2.mjs +2 -5
- package/dist/components/selectV2/src/selectV2.mjs.map +1 -1
- package/dist/components/table/src/page.type.d.ts +4 -0
- package/dist/components/table/src/table.mjs +5 -4
- package/dist/components/table/src/table.mjs.map +1 -1
- package/dist/components/table/src/tableColumn.d.ts +1 -0
- package/dist/components/table/src/tableColumn.mjs +33 -19
- package/dist/components/table/src/tableColumn.mjs.map +1 -1
- package/dist/components/tree/src/tree.d.ts +1 -1
- package/dist/components/treeSelect/src/treeSelect.d.ts +33 -27
- package/dist/components/treeSelect/src/treeSelect.mjs +14 -12
- package/dist/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/dist/components/uploadImage/src/uploadImage.d.ts +9 -0
- package/dist/components/uploadImage/src/uploadImage.mjs +13 -6
- package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
- package/dist/components/uploadImages/src/uploadImages.d.ts +9 -0
- package/dist/components/uploadImages/src/uploadImages.mjs +7 -5
- package/dist/components/uploadImages/src/uploadImages.mjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.global.min.js +3 -3
- package/dist/index.global.min.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -547,7 +547,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
547
547
|
onCheck?: ((data: any, checkedInfo: import("element-plus").CheckedInfo) => any) | undefined;
|
|
548
548
|
"onNode-drag-start"?: ((node: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
549
549
|
"onNode-drag-end"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default | null, dropType: import("element-plus").NodeDropType, evt: DragEvent) => any) | undefined;
|
|
550
|
-
"onNode-drop"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropType: "
|
|
550
|
+
"onNode-drop"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropType: "after" | "before" | "inner", evt: DragEvent) => any) | undefined;
|
|
551
551
|
"onNode-drag-leave"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, oldDropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
552
552
|
"onNode-drag-enter"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
553
553
|
"onNode-drag-over"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
@@ -15,7 +15,7 @@ export declare const faTreeSelectProps: {
|
|
|
15
15
|
* The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data
|
|
16
16
|
*/
|
|
17
17
|
cacheData: {
|
|
18
|
-
type: import("vue").PropType<{
|
|
18
|
+
type: import("vue").PropType<ElSelectorOutput<ElSelectorValue, any>[] | {
|
|
19
19
|
value: string | number | boolean | object;
|
|
20
20
|
currentLabel: string | number;
|
|
21
21
|
isDisabled: boolean;
|
|
@@ -176,7 +176,9 @@ export declare const faTreeSelectProps: {
|
|
|
176
176
|
accordion: BooleanConstructor;
|
|
177
177
|
indent: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, 18, boolean>;
|
|
178
178
|
icon: {
|
|
179
|
-
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (
|
|
179
|
+
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (
|
|
180
|
+
/** 配置选项 */
|
|
181
|
+
...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | (((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component)) | null)[], unknown, unknown>>;
|
|
180
182
|
readonly required: false;
|
|
181
183
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
182
184
|
__epPropKey: true;
|
|
@@ -194,16 +196,14 @@ export declare const faTreeSelectProps: {
|
|
|
194
196
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
195
197
|
__epPropKey: true;
|
|
196
198
|
};
|
|
197
|
-
effect: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (
|
|
198
|
-
/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */
|
|
199
|
-
...args: any[]) => string) | (() => import("element-plus").PopperEffect) | (((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect)) | null)[], unknown, unknown, string, boolean>;
|
|
199
|
+
effect: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string) | (() => import("element-plus").PopperEffect) | (((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect)) | null)[], unknown, unknown, string, boolean>;
|
|
200
200
|
clearable: BooleanConstructor;
|
|
201
201
|
filterable: BooleanConstructor;
|
|
202
202
|
allowCreate: BooleanConstructor;
|
|
203
203
|
loading: BooleanConstructor;
|
|
204
204
|
popperClass: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | import("element-plus/es/utils/typescript.mjs").ClassValue[]) | (() => import("element-plus/es/utils/typescript.mjs").ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | import("element-plus/es/utils/typescript.mjs").ClassValue[]) | (() => import("element-plus/es/utils/typescript.mjs").ClassValue)) | null)[], unknown, unknown, string, boolean>;
|
|
205
205
|
popperStyle: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string | false | import("vue").CSSProperties | import("vue").StyleValue[]) | (() => import("vue").StyleValue) | (((new (...args: any[]) => string | false | import("vue").CSSProperties | import("vue").StyleValue[]) | (() => import("vue").StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
206
|
-
popperOptions: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...
|
|
206
|
+
popperOptions: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>) | (((new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>)) | null)[], unknown, unknown, () => Partial<import("element-plus").Options>, boolean>;
|
|
207
207
|
remote: BooleanConstructor;
|
|
208
208
|
debounce: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
|
|
209
209
|
remoteMethod: {
|
|
@@ -238,7 +238,7 @@ export declare const faTreeSelectProps: {
|
|
|
238
238
|
suffixIcon: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | (((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component)) | null)[], unknown, unknown, import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, boolean>;
|
|
239
239
|
tagType: {
|
|
240
240
|
default: string;
|
|
241
|
-
type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "
|
|
241
|
+
type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "primary" | "success" | "warning" | "info" | "danger", unknown>>;
|
|
242
242
|
required: false;
|
|
243
243
|
validator: ((val: unknown) => boolean) | undefined;
|
|
244
244
|
__epPropKey: true;
|
|
@@ -256,7 +256,7 @@ export declare const faTreeSelectProps: {
|
|
|
256
256
|
offset: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
|
|
257
257
|
placement: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => "auto" | "left" | "right" | "bottom" | "top" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | (((new (...args: any[]) => "auto" | "left" | "right" | "bottom" | "top" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement)) | null)[], import("element-plus").Placement, unknown, string, boolean>;
|
|
258
258
|
fallbackPlacements: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus").Placement[]) | (() => import("element-plus").Placement[]) | (((new (...args: any[]) => import("element-plus").Placement[]) | (() => import("element-plus").Placement[])) | null)[], unknown, unknown, string[], boolean>;
|
|
259
|
-
tabindex: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(
|
|
259
|
+
tabindex: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(NumberConstructor | StringConstructor)[], unknown, unknown, number, boolean>;
|
|
260
260
|
appendTo: {
|
|
261
261
|
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement) | (((new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement)) | null)[], unknown, unknown>>;
|
|
262
262
|
readonly required: false;
|
|
@@ -311,6 +311,7 @@ export interface FaTreeSelectSlots extends Record<string, unknown> {
|
|
|
311
311
|
default: {
|
|
312
312
|
node: TreeNode;
|
|
313
313
|
data: ElSelectorOutput;
|
|
314
|
+
store: TreeInstance["store"];
|
|
314
315
|
};
|
|
315
316
|
/** 下拉列表顶部的内容 */
|
|
316
317
|
header: never;
|
|
@@ -321,13 +322,18 @@ export interface FaTreeSelectSlots extends Record<string, unknown> {
|
|
|
321
322
|
/** 无选项时的列表 */
|
|
322
323
|
empty: never;
|
|
323
324
|
/** select 组件自定义标签内容 */
|
|
324
|
-
tag:
|
|
325
|
+
tag: {
|
|
326
|
+
data: SelectInstance["states"]["selected"];
|
|
327
|
+
deleteTag: SelectInstance["deleteTag"];
|
|
328
|
+
selectDisabled: boolean;
|
|
329
|
+
};
|
|
325
330
|
/** Select 组件自定义加载内容 */
|
|
326
331
|
loading: never;
|
|
327
332
|
/** select 组件自定义标签内容 */
|
|
328
333
|
label: {
|
|
329
334
|
label: string;
|
|
330
335
|
value: string | number | boolean | object;
|
|
336
|
+
index?: number;
|
|
331
337
|
};
|
|
332
338
|
}
|
|
333
339
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
@@ -340,7 +346,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
340
346
|
* The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data
|
|
341
347
|
*/
|
|
342
348
|
cacheData: {
|
|
343
|
-
type: import("vue").PropType<{
|
|
349
|
+
type: import("vue").PropType<ElSelectorOutput<ElSelectorValue, any>[] | {
|
|
344
350
|
value: string | number | boolean | object;
|
|
345
351
|
currentLabel: string | number;
|
|
346
352
|
isDisabled: boolean;
|
|
@@ -501,7 +507,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
501
507
|
accordion: BooleanConstructor;
|
|
502
508
|
indent: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, 18, boolean>;
|
|
503
509
|
icon: {
|
|
504
|
-
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (
|
|
510
|
+
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (
|
|
511
|
+
/** 配置选项 */
|
|
512
|
+
...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | (((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component)) | null)[], unknown, unknown>>;
|
|
505
513
|
readonly required: false;
|
|
506
514
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
507
515
|
__epPropKey: true;
|
|
@@ -519,16 +527,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
519
527
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
520
528
|
__epPropKey: true;
|
|
521
529
|
};
|
|
522
|
-
effect: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (
|
|
523
|
-
/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */
|
|
524
|
-
...args: any[]) => string) | (() => import("element-plus").PopperEffect) | (((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect)) | null)[], unknown, unknown, string, boolean>;
|
|
530
|
+
effect: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string) | (() => import("element-plus").PopperEffect) | (((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect)) | null)[], unknown, unknown, string, boolean>;
|
|
525
531
|
clearable: BooleanConstructor;
|
|
526
532
|
filterable: BooleanConstructor;
|
|
527
533
|
allowCreate: BooleanConstructor;
|
|
528
534
|
loading: BooleanConstructor;
|
|
529
535
|
popperClass: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | import("element-plus/es/utils/typescript.mjs").ClassValue[]) | (() => import("element-plus/es/utils/typescript.mjs").ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | import("element-plus/es/utils/typescript.mjs").ClassValue[]) | (() => import("element-plus/es/utils/typescript.mjs").ClassValue)) | null)[], unknown, unknown, string, boolean>;
|
|
530
536
|
popperStyle: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string | false | import("vue").CSSProperties | import("vue").StyleValue[]) | (() => import("vue").StyleValue) | (((new (...args: any[]) => string | false | import("vue").CSSProperties | import("vue").StyleValue[]) | (() => import("vue").StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
531
|
-
popperOptions: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...
|
|
537
|
+
popperOptions: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>) | (((new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>)) | null)[], unknown, unknown, () => Partial<import("element-plus").Options>, boolean>;
|
|
532
538
|
remote: BooleanConstructor;
|
|
533
539
|
debounce: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
|
|
534
540
|
remoteMethod: {
|
|
@@ -563,7 +569,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
563
569
|
suffixIcon: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | (((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component)) | null)[], unknown, unknown, import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, boolean>;
|
|
564
570
|
tagType: {
|
|
565
571
|
default: string;
|
|
566
|
-
type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "
|
|
572
|
+
type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "primary" | "success" | "warning" | "info" | "danger", unknown>>;
|
|
567
573
|
required: false;
|
|
568
574
|
validator: ((val: unknown) => boolean) | undefined;
|
|
569
575
|
__epPropKey: true;
|
|
@@ -581,7 +587,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
581
587
|
offset: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
|
|
582
588
|
placement: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => "auto" | "left" | "right" | "bottom" | "top" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | (((new (...args: any[]) => "auto" | "left" | "right" | "bottom" | "top" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement)) | null)[], import("element-plus").Placement, unknown, string, boolean>;
|
|
583
589
|
fallbackPlacements: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus").Placement[]) | (() => import("element-plus").Placement[]) | (((new (...args: any[]) => import("element-plus").Placement[]) | (() => import("element-plus").Placement[])) | null)[], unknown, unknown, string[], boolean>;
|
|
584
|
-
tabindex: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(
|
|
590
|
+
tabindex: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(NumberConstructor | StringConstructor)[], unknown, unknown, number, boolean>;
|
|
585
591
|
appendTo: {
|
|
586
592
|
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement) | (((new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement)) | null)[], unknown, unknown>>;
|
|
587
593
|
readonly required: false;
|
|
@@ -692,7 +698,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
692
698
|
* The cached data of the lazy node, the structure is the same as the data, used to get the label of the unloaded data
|
|
693
699
|
*/
|
|
694
700
|
cacheData: {
|
|
695
|
-
type: import("vue").PropType<{
|
|
701
|
+
type: import("vue").PropType<ElSelectorOutput<ElSelectorValue, any>[] | {
|
|
696
702
|
value: string | number | boolean | object;
|
|
697
703
|
currentLabel: string | number;
|
|
698
704
|
isDisabled: boolean;
|
|
@@ -853,7 +859,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
853
859
|
accordion: BooleanConstructor;
|
|
854
860
|
indent: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, 18, boolean>;
|
|
855
861
|
icon: {
|
|
856
|
-
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (
|
|
862
|
+
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (
|
|
863
|
+
/** 配置选项 */
|
|
864
|
+
...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | (((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component)) | null)[], unknown, unknown>>;
|
|
857
865
|
readonly required: false;
|
|
858
866
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
859
867
|
__epPropKey: true;
|
|
@@ -871,16 +879,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
871
879
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
872
880
|
__epPropKey: true;
|
|
873
881
|
};
|
|
874
|
-
effect: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (
|
|
875
|
-
/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */
|
|
876
|
-
...args: any[]) => string) | (() => import("element-plus").PopperEffect) | (((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect)) | null)[], unknown, unknown, string, boolean>;
|
|
882
|
+
effect: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string) | (() => import("element-plus").PopperEffect) | (((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect)) | null)[], unknown, unknown, string, boolean>;
|
|
877
883
|
clearable: BooleanConstructor;
|
|
878
884
|
filterable: BooleanConstructor;
|
|
879
885
|
allowCreate: BooleanConstructor;
|
|
880
886
|
loading: BooleanConstructor;
|
|
881
887
|
popperClass: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | import("element-plus/es/utils/typescript.mjs").ClassValue[]) | (() => import("element-plus/es/utils/typescript.mjs").ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | import("element-plus/es/utils/typescript.mjs").ClassValue[]) | (() => import("element-plus/es/utils/typescript.mjs").ClassValue)) | null)[], unknown, unknown, string, boolean>;
|
|
882
888
|
popperStyle: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => string | false | import("vue").CSSProperties | import("vue").StyleValue[]) | (() => import("vue").StyleValue) | (((new (...args: any[]) => string | false | import("vue").CSSProperties | import("vue").StyleValue[]) | (() => import("vue").StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
883
|
-
popperOptions: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...
|
|
889
|
+
popperOptions: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>) | (((new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>)) | null)[], unknown, unknown, () => Partial<import("element-plus").Options>, boolean>;
|
|
884
890
|
remote: BooleanConstructor;
|
|
885
891
|
debounce: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
|
|
886
892
|
remoteMethod: {
|
|
@@ -915,7 +921,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
915
921
|
suffixIcon: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | (((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component)) | null)[], unknown, unknown, import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, boolean>;
|
|
916
922
|
tagType: {
|
|
917
923
|
default: string;
|
|
918
|
-
type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "
|
|
924
|
+
type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "primary" | "success" | "warning" | "info" | "danger", unknown>>;
|
|
919
925
|
required: false;
|
|
920
926
|
validator: ((val: unknown) => boolean) | undefined;
|
|
921
927
|
__epPropKey: true;
|
|
@@ -933,7 +939,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
933
939
|
offset: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
|
|
934
940
|
placement: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => "auto" | "left" | "right" | "bottom" | "top" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | (((new (...args: any[]) => "auto" | "left" | "right" | "bottom" | "top" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement)) | null)[], import("element-plus").Placement, unknown, string, boolean>;
|
|
935
941
|
fallbackPlacements: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus").Placement[]) | (() => import("element-plus").Placement[]) | (((new (...args: any[]) => import("element-plus").Placement[]) | (() => import("element-plus").Placement[])) | null)[], unknown, unknown, string[], boolean>;
|
|
936
|
-
tabindex: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(
|
|
942
|
+
tabindex: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(NumberConstructor | StringConstructor)[], unknown, unknown, number, boolean>;
|
|
937
943
|
appendTo: {
|
|
938
944
|
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<(new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement) | (((new (...args: any[]) => string | HTMLElement) | (() => string | HTMLElement)) | null)[], unknown, unknown>>;
|
|
939
945
|
readonly required: false;
|
|
@@ -970,7 +976,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
970
976
|
onCheck?: ((data: any, checkedInfo: import("element-plus").CheckedInfo) => any) | undefined;
|
|
971
977
|
"onNode-drag-start"?: ((node: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
972
978
|
"onNode-drag-end"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default | null, dropType: import("element-plus").NodeDropType, evt: DragEvent) => any) | undefined;
|
|
973
|
-
"onNode-drop"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropType: "
|
|
979
|
+
"onNode-drop"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropType: "after" | "before" | "inner", evt: DragEvent) => any) | undefined;
|
|
974
980
|
"onNode-drag-leave"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, oldDropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
975
981
|
"onNode-drag-enter"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
976
982
|
"onNode-drag-over"?: ((draggingNode: import("element-plus/es/components/tree/src/model/node.mjs").default, dropNode: import("element-plus/es/components/tree/src/model/node.mjs").default, evt: DragEvent) => any) | undefined;
|
|
@@ -1037,7 +1043,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
1037
1043
|
autoExpandParent: import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
1038
1044
|
showCheckbox: boolean;
|
|
1039
1045
|
accordion: boolean;
|
|
1040
|
-
cacheData: {
|
|
1046
|
+
cacheData: ElSelectorOutput<ElSelectorValue, any>[] | {
|
|
1041
1047
|
value: string | number | boolean | object;
|
|
1042
1048
|
currentLabel: string | number;
|
|
1043
1049
|
isDisabled: boolean;
|
|
@@ -246,22 +246,29 @@ var treeSelect_default = defineComponent({
|
|
|
246
246
|
emit("visible-change", visible);
|
|
247
247
|
};
|
|
248
248
|
const flattenOptions = (data) => data.flatMap((item) => [item, ...flattenOptions(item.children ?? [])]);
|
|
249
|
+
const nodeLazy = computed(() => !props.requestApi && typeof props.load === "function");
|
|
249
250
|
const handleChange = (value) => {
|
|
250
251
|
const selectorData = flattenOptions(state.selectorData);
|
|
252
|
+
const findOption = (key) => {
|
|
253
|
+
const option = selectorData.find((item) => item.value !== void 0 && isEqual(item.value, key));
|
|
254
|
+
if (option || !nodeLazy.value || typeof key !== "number" && typeof key !== "string") return option;
|
|
255
|
+
const node = treeSelectRef.value?.getNode(key);
|
|
256
|
+
return node ? handleData([node.data])[0] : void 0;
|
|
257
|
+
};
|
|
251
258
|
if (props.multiple) {
|
|
252
259
|
const valueList = Array.isArray(value) ? value : [];
|
|
253
260
|
if (valueList.length === 0) {
|
|
254
261
|
emit("change", null, null);
|
|
255
262
|
return;
|
|
256
263
|
}
|
|
257
|
-
emit("change", valueList.map(
|
|
264
|
+
emit("change", valueList.map(findOption).filter((item) => item !== void 0), value);
|
|
258
265
|
return;
|
|
259
266
|
}
|
|
260
267
|
if (value == null || Array.isArray(value)) {
|
|
261
268
|
emit("change", null, null);
|
|
262
269
|
return;
|
|
263
270
|
}
|
|
264
|
-
emit("change",
|
|
271
|
+
emit("change", findOption(value) ?? null, value);
|
|
265
272
|
};
|
|
266
273
|
watch(() => props.modelValue, (newValue) => {
|
|
267
274
|
if (state.echo && newValue != null) {
|
|
@@ -376,28 +383,23 @@ var treeSelect_default = defineComponent({
|
|
|
376
383
|
"modelValue": state.value,
|
|
377
384
|
"onUpdate:modelValue": handleModelValueUpdate,
|
|
378
385
|
"onChange": handleChange,
|
|
379
|
-
"lazy":
|
|
386
|
+
"lazy": nodeLazy.value,
|
|
380
387
|
"loading": state.loading,
|
|
381
388
|
"data": state.selectorData,
|
|
389
|
+
"cacheData": props.cacheData,
|
|
382
390
|
"expandOnClickNode": props.checkOnClickNode ? false : props.expandOnClickNode,
|
|
383
391
|
"filterNodeMethod": handleFilterNode,
|
|
384
392
|
"onNodeClick": handleNodeClick,
|
|
385
393
|
"onVisible-change": handleVisibleChange
|
|
386
394
|
}), {
|
|
387
|
-
...slots.default && { default:
|
|
388
|
-
node,
|
|
389
|
-
data
|
|
390
|
-
}) ?? [] },
|
|
395
|
+
...slots.default && { default: slots.default },
|
|
391
396
|
...slots.header && { header: () => slots.header?.() ?? [] },
|
|
392
397
|
...slots.footer && { footer: () => slots.footer?.() ?? [] },
|
|
393
398
|
...slots.prefix && { prefix: () => slots.prefix?.() ?? [] },
|
|
394
399
|
...slots.empty && { empty: () => slots.empty?.() ?? [] },
|
|
395
|
-
...slots.tag && { tag:
|
|
400
|
+
...slots.tag && { tag: slots.tag },
|
|
396
401
|
...slots.loading && { loading: () => slots.loading?.() ?? [] },
|
|
397
|
-
...slots.label && { label:
|
|
398
|
-
label,
|
|
399
|
-
value
|
|
400
|
-
}) ?? [] }
|
|
402
|
+
...slots.label && { label: slots.label }
|
|
401
403
|
}));
|
|
402
404
|
return useExpose(expose, {
|
|
403
405
|
/** 使选择器的输入框获取焦点。 */
|
|
@@ -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 * 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
|
+
{"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\t\tvalue: string | number | boolean | object;\n\t\t\t\t\tcurrentLabel: string | number;\n\t\t\t\t\tisDisabled: boolean;\n\t\t\t }[]\n\t\t\t| ElSelectorOutput[]\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; store: TreeInstance[\"store\"] };\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: { data: SelectInstance[\"states\"][\"selected\"]; deleteTag: SelectInstance[\"deleteTag\"]; selectDisabled: boolean };\n\t/** Select 组件自定义加载内容 */\n\tloading: never;\n\t/** select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object; index?: number };\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 nodeLazy = computed(() => !props.requestApi && typeof props.load === \"function\");\n\n\t\tconst handleChange = (value?: ElSelectorModelValue) => {\n\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\tconst findOption = (key: ElSelectorValue) => {\n\t\t\t\tconst option = selectorData.find((item) => item.value !== undefined && isEqual(item.value, key));\n\t\t\t\tif (option || !nodeLazy.value || (typeof key !== \"number\" && typeof key !== \"string\")) return option;\n\t\t\t\tconst node = treeSelectRef.value?.getNode(key);\n\t\t\t\treturn node ? handleData([node.data])[0] : undefined;\n\t\t\t};\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.map(findOption).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 = findOption(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={nodeLazy.value}\n\t\t\t\tloading={state.loading}\n\t\t\t\tdata={state.selectorData}\n\t\t\t\tcacheData={props.cacheData}\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 && { default: slots.default }),\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 && { label: slots.label }),\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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"}
|
|
@@ -167,6 +167,15 @@ export declare const faUploadImageEmits: {
|
|
|
167
167
|
export interface FaUploadImageSlots extends Record<string, unknown> {
|
|
168
168
|
/** 默认内容插槽 */
|
|
169
169
|
default: never;
|
|
170
|
+
/** 文件选择触发器 */
|
|
171
|
+
trigger: never;
|
|
172
|
+
/** 上传提示 */
|
|
173
|
+
tip: never;
|
|
174
|
+
/** 文件列表项,开启 showFileList 时使用 */
|
|
175
|
+
file: {
|
|
176
|
+
file: UploadFile;
|
|
177
|
+
index: number;
|
|
178
|
+
};
|
|
170
179
|
}
|
|
171
180
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
172
181
|
/** accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */
|
|
@@ -101,9 +101,14 @@ var uploadImage_default = defineComponent({
|
|
|
101
101
|
document.querySelector(`.${state.uploadKey} .el-upload__input`)?.dispatchEvent(new MouseEvent("click"));
|
|
102
102
|
};
|
|
103
103
|
const handlePreview = () => {
|
|
104
|
-
const
|
|
105
|
-
if (!
|
|
106
|
-
|
|
104
|
+
const file = fileList.value[0];
|
|
105
|
+
if (!file?.url) return;
|
|
106
|
+
if (file.uid !== void 0 && file.status !== void 0) props.onPreview({
|
|
107
|
+
...file,
|
|
108
|
+
uid: file.uid,
|
|
109
|
+
status: file.status
|
|
110
|
+
});
|
|
111
|
+
state.previewList = [file.url];
|
|
107
112
|
state.preview = true;
|
|
108
113
|
};
|
|
109
114
|
const handleRemove = () => {
|
|
@@ -144,6 +149,8 @@ var uploadImage_default = defineComponent({
|
|
|
144
149
|
"onRemove": handleOnRemove,
|
|
145
150
|
"onChange": handleOnChange
|
|
146
151
|
}), {
|
|
152
|
+
...slots.trigger && { trigger: slots.trigger },
|
|
153
|
+
...slots.file && { file: slots.file },
|
|
147
154
|
default: () => fileList.value.length > 0 ? createVNode(Fragment, null, [createVNode("img", {
|
|
148
155
|
"class": "el-upload-list__item-thumbnail",
|
|
149
156
|
"src": fileList.value[0]?.url
|
|
@@ -162,12 +169,12 @@ var uploadImage_default = defineComponent({
|
|
|
162
169
|
"class": "el-upload-list__item-icon",
|
|
163
170
|
"onClick": handleRemove,
|
|
164
171
|
"title": "删除"
|
|
165
|
-
}, [createVNode(ElIcon, null, { default: () => [createVNode(Delete, null, null)] })])])])]) : slots.default ? slots.default() : createVNode(Fragment, null, [createVNode(ElIcon, { "class": "el-icon--upload" }, { default: () => [createVNode(UploadFilled, null, null)] }), createVNode("div", { "class": "el-upload__text" }, [props.drag && createVNode(Fragment, null, [createTextVNode("Drop file here "), createVNode("br", null, null)]), createVNode("em", null, [createTextVNode("click to upload")])])]),
|
|
166
|
-
tip: () => createVNode("div", { "class": "el-upload__tip" }, [
|
|
172
|
+
}, [createVNode(ElIcon, null, { default: () => [createVNode(Delete, null, null)] })])])])]) : slots.default ? slots.default() : slots.trigger ? null : createVNode(Fragment, null, [createVNode(ElIcon, { "class": "el-icon--upload" }, { default: () => [createVNode(UploadFilled, null, null)] }), createVNode("div", { "class": "el-upload__text" }, [props.drag && createVNode(Fragment, null, [createTextVNode("Drop file here "), createVNode("br", null, null)]), createVNode("em", null, [createTextVNode("click to upload")])])]),
|
|
173
|
+
tip: slots.tip ?? (() => createVNode("div", { "class": "el-upload__tip" }, [
|
|
167
174
|
createTextVNode("file with a size less than "),
|
|
168
175
|
maxSizeMB.value.toString(),
|
|
169
176
|
createTextVNode("MB")
|
|
170
|
-
])
|
|
177
|
+
]))
|
|
171
178
|
}), [[resolveDirective("loading"), loading.value]]), state.preview && createVNode(ElImageViewer, {
|
|
172
179
|
"closeOnPressEscape": true,
|
|
173
180
|
"hideOnClickModal": true,
|