fast-element-plus 2.0.18 → 2.0.20
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 +52 -19
- package/CONTRIBUTING.md +3 -4
- package/README.md +80 -27
- package/README.zh.md +66 -27
- package/dist/component.d.ts +123 -123
- 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 +7 -7
- package/dist/components/contextMenu/src/contextMenu.mjs +7 -7
- 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 +76 -76
- package/dist/components/dialog/src/dialog.mjs +34 -34
- package/dist/components/dialog/src/dialog.mjs.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +59 -59
- package/dist/components/drawer/src/drawer.mjs +27 -27
- 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 +19 -19
- package/dist/components/layoutGrid/src/layoutGridItem.mjs +9 -9
- package/dist/components/layoutGrid/src/layoutGridItem.mjs.map +1 -1
- package/dist/components/select/src/select.d.ts +89 -89
- package/dist/components/select/src/select.mjs +30 -30
- 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 +76 -76
- package/dist/components/selectPage/src/selectPage.mjs +50 -36
- 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 +161 -852
- package/dist/components/selectV2/src/selectV2.mjs +32 -340
- 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 +111 -307
- 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 +28 -185
- 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 +4 -4
- package/dist/components/table/utils/table.mjs.map +1 -1
- package/dist/components/tree/src/tree.d.ts +87 -87
- package/dist/components/tree/src/tree.mjs +48 -48
- package/dist/components/tree/src/tree.mjs.map +1 -1
- package/dist/components/treeSelect/src/treeSelect.d.ts +139 -133
- package/dist/components/treeSelect/src/treeSelect.mjs +57 -57
- 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 +19 -19
- 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 +24 -28
- 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.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/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
|
@@ -5,95 +5,95 @@ import { definePropType, useProps } from "../../../utils/vue/props.mjs";
|
|
|
5
5
|
import { useRender } from "../../../utils/vue/render.mjs";
|
|
6
6
|
import { makeSlots } from "../../../utils/vue/slots.mjs";
|
|
7
7
|
import { FullScreen, FullScreenExit } from "@fast-element-plus/icons-vue";
|
|
8
|
-
import { Fragment, computed, createVNode, defineComponent, mergeProps, nextTick, reactive, resolveDirective, shallowRef, watch, withDirectives } from "vue";
|
|
8
|
+
import { Fragment, computed, createVNode, defineComponent, mergeProps, nextTick, reactive, resolveDirective, shallowRef, toRef, watch, withDirectives } from "vue";
|
|
9
9
|
import { Close, Eleme, Refresh } from "@element-plus/icons-vue";
|
|
10
10
|
import { ElButton, ElDialog, ElIcon, ElMessage, ElMessageBox, ElScrollbar, dialogEmits, dialogProps, useGlobalSize } from "element-plus";
|
|
11
11
|
//#region src/components/dialog/src/dialog.tsx
|
|
12
|
-
/** FaDialog 的运行时 Props
|
|
12
|
+
/** FaDialog 的运行时 Props 定义 */
|
|
13
13
|
const faDialogProps = {
|
|
14
14
|
...dialogProps,
|
|
15
|
-
/**
|
|
15
|
+
/** whether to align the dialog both horizontally and vertically */
|
|
16
16
|
alignCenter: {
|
|
17
17
|
type: Boolean,
|
|
18
18
|
default: true
|
|
19
19
|
},
|
|
20
|
-
/**
|
|
20
|
+
/** whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */
|
|
21
21
|
appendToBody: {
|
|
22
22
|
type: Boolean,
|
|
23
23
|
default: true
|
|
24
24
|
},
|
|
25
|
-
/**
|
|
25
|
+
/** enable dragging feature for Dialog */
|
|
26
26
|
draggable: {
|
|
27
27
|
type: Boolean,
|
|
28
28
|
default: true
|
|
29
29
|
},
|
|
30
|
-
/**
|
|
30
|
+
/** destroy elements in Dialog when closed */
|
|
31
31
|
destroyOnClose: {
|
|
32
32
|
type: Boolean,
|
|
33
33
|
default: true
|
|
34
34
|
},
|
|
35
|
-
/**
|
|
35
|
+
/** draggable Dialog can overflow the viewport */
|
|
36
36
|
overflow: {
|
|
37
37
|
type: Boolean,
|
|
38
38
|
default: true
|
|
39
39
|
},
|
|
40
|
-
/**
|
|
40
|
+
/** value for `margin-top` of Dialog CSS, default is 15vh */
|
|
41
41
|
top: {
|
|
42
42
|
type: String,
|
|
43
43
|
default: "5vh"
|
|
44
44
|
},
|
|
45
|
-
/**
|
|
45
|
+
/** width of Dialog, default is 50% */
|
|
46
46
|
width: {
|
|
47
47
|
type: [String, Number],
|
|
48
48
|
default: "90%"
|
|
49
49
|
},
|
|
50
|
-
/**
|
|
50
|
+
/** 显示刷新按钮 */
|
|
51
51
|
showRefresh: {
|
|
52
52
|
type: Boolean,
|
|
53
53
|
default: true
|
|
54
54
|
},
|
|
55
|
-
/**
|
|
55
|
+
/** 显示全屏图标 */
|
|
56
56
|
showFullscreen: {
|
|
57
57
|
type: Boolean,
|
|
58
58
|
default: true
|
|
59
59
|
},
|
|
60
|
-
/**
|
|
60
|
+
/** 显示关闭按钮 */
|
|
61
61
|
showCloseButton: {
|
|
62
62
|
type: Boolean,
|
|
63
63
|
default: true
|
|
64
64
|
},
|
|
65
|
-
/**
|
|
65
|
+
/** 显示确认按钮 */
|
|
66
66
|
showConfirmButton: {
|
|
67
67
|
type: Boolean,
|
|
68
68
|
default: true
|
|
69
69
|
},
|
|
70
|
-
/**
|
|
70
|
+
/** 禁用确认按钮 */
|
|
71
71
|
disabledConfirmButton: Boolean,
|
|
72
|
-
/**
|
|
72
|
+
/** 关闭按钮文字,默认取消 */
|
|
73
73
|
closeButtonText: {
|
|
74
74
|
type: String,
|
|
75
75
|
default: "取消"
|
|
76
76
|
},
|
|
77
|
-
/**
|
|
77
|
+
/** 确认按钮文字,默认确认 */
|
|
78
78
|
confirmButtonText: {
|
|
79
79
|
type: String,
|
|
80
80
|
default: "确认"
|
|
81
81
|
},
|
|
82
|
-
/**
|
|
82
|
+
/** 隐藏底部操作 */
|
|
83
83
|
hideFooter: Boolean,
|
|
84
|
-
/**
|
|
84
|
+
/** 撑满高度 */
|
|
85
85
|
fullHeight: Boolean,
|
|
86
|
-
/**
|
|
86
|
+
/** 显示关闭回调 */
|
|
87
87
|
showBeforeClose: Boolean,
|
|
88
|
-
/**
|
|
88
|
+
/** 打开之后 */
|
|
89
89
|
afterOpen: { type: definePropType(Function) }
|
|
90
90
|
};
|
|
91
|
-
/** FaDialog 的运行时 Emits
|
|
91
|
+
/** FaDialog 的运行时 Emits 定义 */
|
|
92
92
|
const faDialogEmits = {
|
|
93
93
|
...dialogEmits,
|
|
94
|
-
/**
|
|
94
|
+
/** v-model 回调 */
|
|
95
95
|
"update:modelValue": (value) => typeof value === "boolean",
|
|
96
|
-
/**
|
|
96
|
+
/** 确认按钮点击事件 */
|
|
97
97
|
confirmClick: () => true
|
|
98
98
|
};
|
|
99
99
|
var dialog_default = defineComponent({
|
|
@@ -265,23 +265,23 @@ var dialog_default = defineComponent({
|
|
|
265
265
|
])] }
|
|
266
266
|
}));
|
|
267
267
|
return useExpose(expose, {
|
|
268
|
-
/**
|
|
268
|
+
/** 调用原生关闭流程,并执行 beforeClose。 */
|
|
269
269
|
handleClose: computed(() => dialogRef.value?.handleClose),
|
|
270
|
-
/**
|
|
270
|
+
/** 弹窗内容引用 */
|
|
271
271
|
dialogContentRef: computed(() => dialogRef.value?.dialogContentRef),
|
|
272
|
-
/**
|
|
272
|
+
/** 重置位置 */
|
|
273
273
|
resetPosition: computed(() => dialogRef.value?.resetPosition),
|
|
274
|
-
/**
|
|
275
|
-
loading:
|
|
276
|
-
/**
|
|
277
|
-
visible:
|
|
278
|
-
/**
|
|
274
|
+
/** 加载状态 */
|
|
275
|
+
loading: toRef(state, "loading"),
|
|
276
|
+
/** 是否显示 */
|
|
277
|
+
visible: toRef(state, "visible"),
|
|
278
|
+
/** 打开弹窗 */
|
|
279
279
|
open: handleOpen,
|
|
280
|
-
/**
|
|
280
|
+
/** 关闭弹窗 */
|
|
281
281
|
close: handleClose,
|
|
282
|
-
/**
|
|
282
|
+
/** 刷新弹窗 */
|
|
283
283
|
refresh: handleRefresh,
|
|
284
|
-
/**
|
|
284
|
+
/** 弹窗加载 */
|
|
285
285
|
doLoading: handleLoading
|
|
286
286
|
});
|
|
287
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.mjs","names":["update:modelValue"],"sources":["../../../../src/components/dialog/src/dialog.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, nextTick, reactive, shallowRef, watch } from \"vue\";\nimport { Close, Eleme, Refresh } from \"@element-plus/icons-vue\";\nimport { ElButton, ElDialog, ElIcon, ElMessage, ElMessageBox, ElScrollbar, dialogEmits, dialogProps, useGlobalSize } from \"element-plus\";\nimport { FullScreen, FullScreenExit } from \"@fast-element-plus/icons-vue\";\nimport { callOptionalFunction, definePropType, makeSlots, useEmits, useExpose, useProps, useRender } from \"../../../utils\";\nimport type { DialogInstance } from \"element-plus\";\n\n/** FaDialog 的运行时 Props 定义。 */\nexport const faDialogProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...dialogProps,\n\t/** @description whether to align the dialog both horizontally and vertically*/\n\talignCenter: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description enable dragging feature for Dialog */\n\tdraggable: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description destroy elements in Dialog when closed */\n\tdestroyOnClose: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description draggable Dialog can overflow the viewport */\n\toverflow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description value for `margin-top` of Dialog CSS, default is 15vh */\n\ttop: {\n\t\ttype: String,\n\t\tdefault: \"5vh\",\n\t},\n\t/** @description width of Dialog, default is 50% */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"90%\",\n\t},\n\t/** @description 显示刷新按钮 */\n\tshowRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 显示全屏图标 */\n\tshowFullscreen: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 显示关闭按钮 */\n\tshowCloseButton: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 显示确认按钮 */\n\tshowConfirmButton: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 禁用确认按钮 */\n\tdisabledConfirmButton: Boolean,\n\t/** @description 关闭按钮文字,默认取消 */\n\tcloseButtonText: {\n\t\ttype: String,\n\t\tdefault: \"取消\",\n\t},\n\t/** @description 确认按钮文字,默认确认 */\n\tconfirmButtonText: {\n\t\ttype: String,\n\t\tdefault: \"确认\",\n\t},\n\t/** @description 隐藏底部操作 */\n\thideFooter: Boolean,\n\t/** @description 撑满高度 */\n\tfullHeight: Boolean,\n\t/** @description 显示关闭回调 */\n\tshowBeforeClose: Boolean,\n\t/** @description 打开之后 */\n\tafterOpen: {\n\t\ttype: definePropType<() => void | Promise<void>>(Function),\n\t},\n};\n\n/** FaDialog 的运行时 Emits 定义。 */\nexport const faDialogEmits = {\n\t...dialogEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: boolean) => typeof value === \"boolean\",\n\t/** @description 确认按钮点击事件 */\n\tconfirmClick: () => true,\n};\n\n/** FaDialog 的插槽参数。 */\nexport interface FaDialogSlots extends Record<string, unknown> {\n\t/** @description 默认内容插槽 */\n\tdefault: { loading: boolean };\n\t/** @description 头部插槽 */\n\theader: { loading: boolean; close: () => void; titleId: string; titleClass: string };\n\t/** @description 标题插槽 */\n\ttitle: { loading: boolean; close: () => void; titleId: string; titleClass: string };\n\t/** @description 底部插槽 */\n\tfooter: { loading: boolean; close: () => void };\n}\n\nexport default defineComponent({\n\tname: \"FaDialog\",\n\tprops: faDialogProps,\n\temits: faDialogEmits,\n\tslots: makeSlots<FaDialogSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst globalSize = useGlobalSize();\n\t\tconst dialogRef = shallowRef<DialogInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tloading: false,\n\t\t\tvisible: false,\n\t\t\tfullscreen: false,\n\t\t\trefreshing: false,\n\t\t});\n\n\t\tlet cacheOpenFunction: (() => void | Promise<void>) | undefined;\n\n\t\tconst handleOpen = async (openFunction?: () => void | Promise<void>) => {\n\t\t\tstate.visible = true;\n\t\t\tcacheOpenFunction = openFunction;\n\t\t\tawait nextTick();\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(props.afterOpen ?? openFunction);\n\t\t\t\temit(\"open\");\n\t\t\t} catch (error) {\n\t\t\t\tstate.visible = false;\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleClose = async (closeFunction?: () => void | Promise<void>) => {\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(closeFunction);\n\t\t\t\temit(\"close\");\n\t\t\t\tstate.visible = false;\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleLoading = async (loadingFunction: () => void | Promise<void>) => {\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(loadingFunction);\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleRefresh = async () => {\n\t\t\tif (state.loading) return;\n\t\t\tstate.refreshing = true;\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\t\tsetTimeout(resolve, 500);\n\t\t\t\t});\n\t\t\t\tstate.refreshing = false;\n\t\t\t\tawait handleOpen(cacheOpenFunction);\n\t\t\t\tElMessage.success(\"刷新成功\");\n\t\t\t} finally {\n\t\t\t\tstate.refreshing = false;\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleBeforeClose = (done: () => void) => {\n\t\t\tif (state.loading) return;\n\t\t\t// 解决 image 预览摁下 ese 会关闭弹窗的问题\n\t\t\tif (document.querySelector(\".el-image-viewer__wrapper\")) return;\n\n\t\t\tconst newDone = () => {\n\t\t\t\t// 组件对外约定为无参数完成钩子,不采用 Element Plus 的 done 回调签名。\n\t\t\t\treturn callOptionalFunction(props.beforeClose, done).then(() => {\n\t\t\t\t\temit(\"close\");\n\t\t\t\t\tdone();\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tif (props.showBeforeClose) {\n\t\t\t\t// 用户取消关闭属于正常分支,无需继续执行 beforeClose。\n\t\t\t\tElMessageBox.confirm(\"确定关闭?\", { type: \"warning\" }).then(() => newDone());\n\t\t\t} else {\n\t\t\t\tnewDone();\n\t\t\t}\n\t\t};\n\n\t\tconst handleFullscreen = () => {\n\t\t\tif (state.loading) return;\n\t\t\tstate.fullscreen = !state.fullscreen;\n\t\t};\n\n\t\tconst handleConfirmClick = () => {\n\t\t\tif (state.loading) return;\n\t\t\temit(\"confirmClick\");\n\t\t};\n\n\t\tconst handleCloseClick = () => {\n\t\t\tif (state.loading) return;\n\t\t\thandleClose();\n\t\t};\n\n\t\twatch(\n\t\t\t() => state.visible,\n\t\t\t(newValue) => {\n\t\t\t\temit(\"update:modelValue\", newValue);\n\t\t\t}\n\t\t);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elDialogProps = useProps(props, dialogProps, [\"modelValue\", \"fullscreen\", \"showClose\", \"beforeClose\"]);\n\t\t// open、close 是 Fast 异步业务流程完成事件,不直接透传 Element Plus 的同名生命周期事件。\n\t\tconst elDialogEmits = useEmits(dialogEmits, emit, [\"open\", \"close\", \"update:modelValue\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElDialog\n\t\t\t\t{...elDialogProps.value}\n\t\t\t\t{...elDialogEmits.value}\n\t\t\t\tref={dialogRef}\n\t\t\t\tclass={[\n\t\t\t\t\t\"fa-dialog\",\n\t\t\t\t\t`fa-dialog-${globalSize.value}`,\n\t\t\t\t\t{ \"fa-dialog__full-height\": props.fullHeight, \"fa-dialog__fullscreen\": state.fullscreen },\n\t\t\t\t]}\n\t\t\t\tvModel={state.visible}\n\t\t\t\tfullscreen={state.fullscreen}\n\t\t\t\tshowClose={false}\n\t\t\t\tbeforeClose={handleBeforeClose}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\theader: ({ titleId, titleClass }: { close: () => void; titleId: string; titleClass: string }) => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<div id={titleId} class={[\"fa-dialog__header-title\", titleClass]}>\n\t\t\t\t\t\t\t\t{slots.title?.({ loading: state.loading, close: handleCloseClick, titleId, titleClass }) ?? props.title}\n\t\t\t\t\t\t\t\t{slots.header?.({ loading: state.loading, close: handleCloseClick, titleId, titleClass })}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{props.showRefresh && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\tclass={[\n\t\t\t\t\t\t\t\t\t\t\"fa-dialog__header-icon\",\n\t\t\t\t\t\t\t\t\t\tstate.loading ? \"fa__click__disabled fa__click__disabled__cursor \" : \"fa__hover__twinkle\",\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonClick={handleRefresh}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t<Refresh />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{props.showFullscreen && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\ttitle={state.fullscreen ? \"关闭全屏显示\" : \"全屏显示\"}\n\t\t\t\t\t\t\t\t\tclass={[\n\t\t\t\t\t\t\t\t\t\t\"fa-dialog__header-icon\",\n\t\t\t\t\t\t\t\t\t\tstate.loading ? \"fa__click__disabled fa__click__disabled__cursor \" : \"fa__hover__twinkle\",\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonClick={handleFullscreen}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ElIcon>{state.fullscreen ? <FullScreenExit /> : <FullScreen />}</ElIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{props.showClose && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\ttitle=\"关闭\"\n\t\t\t\t\t\t\t\t\tclass={[\n\t\t\t\t\t\t\t\t\t\t\"fa-dialog__header-icon\",\n\t\t\t\t\t\t\t\t\t\tstate.loading ? \"fa__click__disabled fa__click__disabled__cursor \" : \"fa__hover__twinkle\",\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonClick={handleCloseClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t<Close />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t<ElScrollbar vLoading={state.loading} element-loading-text=\"加载中...\">\n\t\t\t\t\t\t\t{!state.refreshing && slots.default?.(state)}\n\t\t\t\t\t\t</ElScrollbar>\n\t\t\t\t\t),\n\t\t\t\t\t...(!props.hideFooter && {\n\t\t\t\t\t\tfooter: () => [\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{slots.footer?.({ loading: state.loading, close: handleCloseClick })}\n\t\t\t\t\t\t\t\t{props.showCloseButton && (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.loading} onClick={handleCloseClick}>\n\t\t\t\t\t\t\t\t\t\t{props.closeButtonText}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{props.showConfirmButton && (\n\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\tdisabled={props.disabledConfirmButton}\n\t\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={handleConfirmClick}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{state.loading ? \"加载中...\" : props.confirmButtonText}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>,\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElDialog>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 调用原生关闭流程,并执行 beforeClose。 */\n\t\t\thandleClose: computed(() => dialogRef.value?.handleClose),\n\t\t\t/** @description 弹窗内容引用 */\n\t\t\tdialogContentRef: computed<{ resetPosition: () => void; updatePosition: () => void } | undefined>(\n\t\t\t\t() => dialogRef.value?.dialogContentRef as { resetPosition: () => void; updatePosition: () => void } | undefined\n\t\t\t),\n\t\t\t/** @description 重置位置 */\n\t\t\tresetPosition: computed(() => dialogRef.value?.resetPosition),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 是否显示 */\n\t\t\tvisible: computed(() => state.visible),\n\t\t\t/** @description 打开弹窗 */\n\t\t\topen: handleOpen,\n\t\t\t/** @description 关闭弹窗 */\n\t\t\tclose: handleClose,\n\t\t\t/** @description 刷新弹窗 */\n\t\t\trefresh: handleRefresh,\n\t\t\t/** @description 弹窗加载 */\n\t\t\tdoLoading: handleLoading,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog.mjs","names":["update:modelValue"],"sources":["../../../../src/components/dialog/src/dialog.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, nextTick, reactive, shallowRef, toRef, watch } from \"vue\";\nimport { Close, Eleme, Refresh } from \"@element-plus/icons-vue\";\nimport { ElButton, ElDialog, ElIcon, ElMessage, ElMessageBox, ElScrollbar, dialogEmits, dialogProps, useGlobalSize } from \"element-plus\";\nimport { FullScreen, FullScreenExit } from \"@fast-element-plus/icons-vue\";\nimport { callOptionalFunction, definePropType, makeSlots, useEmits, useExpose, useProps, useRender } from \"../../../utils\";\nimport type { DialogInstance } from \"element-plus\";\n\n/** FaDialog 的运行时 Props 定义 */\nexport const faDialogProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...dialogProps,\n\t/** whether to align the dialog both horizontally and vertically */\n\talignCenter: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** enable dragging feature for Dialog */\n\tdraggable: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** destroy elements in Dialog when closed */\n\tdestroyOnClose: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** draggable Dialog can overflow the viewport */\n\toverflow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** value for `margin-top` of Dialog CSS, default is 15vh */\n\ttop: {\n\t\ttype: String,\n\t\tdefault: \"5vh\",\n\t},\n\t/** width of Dialog, default is 50% */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"90%\",\n\t},\n\t/** 显示刷新按钮 */\n\tshowRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 显示全屏图标 */\n\tshowFullscreen: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 显示关闭按钮 */\n\tshowCloseButton: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 显示确认按钮 */\n\tshowConfirmButton: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 禁用确认按钮 */\n\tdisabledConfirmButton: Boolean,\n\t/** 关闭按钮文字,默认取消 */\n\tcloseButtonText: {\n\t\ttype: String,\n\t\tdefault: \"取消\",\n\t},\n\t/** 确认按钮文字,默认确认 */\n\tconfirmButtonText: {\n\t\ttype: String,\n\t\tdefault: \"确认\",\n\t},\n\t/** 隐藏底部操作 */\n\thideFooter: Boolean,\n\t/** 撑满高度 */\n\tfullHeight: Boolean,\n\t/** 显示关闭回调 */\n\tshowBeforeClose: Boolean,\n\t/** 打开之后 */\n\tafterOpen: {\n\t\ttype: definePropType<() => void | Promise<void>>(Function),\n\t},\n};\n\n/** FaDialog 的运行时 Emits 定义 */\nexport const faDialogEmits = {\n\t...dialogEmits,\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: boolean) => typeof value === \"boolean\",\n\t/** 确认按钮点击事件 */\n\tconfirmClick: () => true,\n};\n\n/** FaDialog 的插槽参数 */\nexport interface FaDialogSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: { loading: boolean };\n\t/** 头部插槽 */\n\theader: { loading: boolean; close: () => void; titleId: string; titleClass: string };\n\t/** 标题插槽 */\n\ttitle: { loading: boolean; close: () => void; titleId: string; titleClass: string };\n\t/** 底部插槽 */\n\tfooter: { loading: boolean; close: () => void };\n}\n\nexport default defineComponent({\n\tname: \"FaDialog\",\n\tprops: faDialogProps,\n\temits: faDialogEmits,\n\tslots: makeSlots<FaDialogSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst globalSize = useGlobalSize();\n\t\tconst dialogRef = shallowRef<DialogInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tloading: false,\n\t\t\tvisible: false,\n\t\t\tfullscreen: false,\n\t\t\trefreshing: false,\n\t\t});\n\n\t\tlet cacheOpenFunction: (() => void | Promise<void>) | undefined;\n\n\t\tconst handleOpen = async (openFunction?: () => void | Promise<void>) => {\n\t\t\tstate.visible = true;\n\t\t\tcacheOpenFunction = openFunction;\n\t\t\tawait nextTick();\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(props.afterOpen ?? openFunction);\n\t\t\t\temit(\"open\");\n\t\t\t} catch (error) {\n\t\t\t\tstate.visible = false;\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleClose = async (closeFunction?: () => void | Promise<void>) => {\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(closeFunction);\n\t\t\t\temit(\"close\");\n\t\t\t\tstate.visible = false;\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleLoading = async (loadingFunction: () => void | Promise<void>) => {\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(loadingFunction);\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleRefresh = async () => {\n\t\t\tif (state.loading) return;\n\t\t\tstate.refreshing = true;\n\t\t\tstate.loading = true;\n\t\t\ttry {\n\t\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\t\tsetTimeout(resolve, 500);\n\t\t\t\t});\n\t\t\t\tstate.refreshing = false;\n\t\t\t\tawait handleOpen(cacheOpenFunction);\n\t\t\t\tElMessage.success(\"刷新成功\");\n\t\t\t} finally {\n\t\t\t\tstate.refreshing = false;\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleBeforeClose = (done: () => void) => {\n\t\t\tif (state.loading) return;\n\t\t\t// 解决 image 预览摁下 ese 会关闭弹窗的问题\n\t\t\tif (document.querySelector(\".el-image-viewer__wrapper\")) return;\n\n\t\t\tconst newDone = () => {\n\t\t\t\t// 组件对外约定为无参数完成钩子,不采用 Element Plus 的 done 回调签名。\n\t\t\t\treturn callOptionalFunction(props.beforeClose, done).then(() => {\n\t\t\t\t\temit(\"close\");\n\t\t\t\t\tdone();\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tif (props.showBeforeClose) {\n\t\t\t\t// 用户取消关闭属于正常分支,无需继续执行 beforeClose。\n\t\t\t\tElMessageBox.confirm(\"确定关闭?\", { type: \"warning\" }).then(() => newDone());\n\t\t\t} else {\n\t\t\t\tnewDone();\n\t\t\t}\n\t\t};\n\n\t\tconst handleFullscreen = () => {\n\t\t\tif (state.loading) return;\n\t\t\tstate.fullscreen = !state.fullscreen;\n\t\t};\n\n\t\tconst handleConfirmClick = () => {\n\t\t\tif (state.loading) return;\n\t\t\temit(\"confirmClick\");\n\t\t};\n\n\t\tconst handleCloseClick = () => {\n\t\t\tif (state.loading) return;\n\t\t\thandleClose();\n\t\t};\n\n\t\twatch(\n\t\t\t() => state.visible,\n\t\t\t(newValue) => {\n\t\t\t\temit(\"update:modelValue\", newValue);\n\t\t\t}\n\t\t);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elDialogProps = useProps(props, dialogProps, [\"modelValue\", \"fullscreen\", \"showClose\", \"beforeClose\"]);\n\t\t// open、close 是 Fast 异步业务流程完成事件,不直接透传 Element Plus 的同名生命周期事件。\n\t\tconst elDialogEmits = useEmits(dialogEmits, emit, [\"open\", \"close\", \"update:modelValue\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElDialog\n\t\t\t\t{...elDialogProps.value}\n\t\t\t\t{...elDialogEmits.value}\n\t\t\t\tref={dialogRef}\n\t\t\t\tclass={[\n\t\t\t\t\t\"fa-dialog\",\n\t\t\t\t\t`fa-dialog-${globalSize.value}`,\n\t\t\t\t\t{ \"fa-dialog__full-height\": props.fullHeight, \"fa-dialog__fullscreen\": state.fullscreen },\n\t\t\t\t]}\n\t\t\t\tvModel={state.visible}\n\t\t\t\tfullscreen={state.fullscreen}\n\t\t\t\tshowClose={false}\n\t\t\t\tbeforeClose={handleBeforeClose}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\theader: ({ titleId, titleClass }: { close: () => void; titleId: string; titleClass: string }) => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<div id={titleId} class={[\"fa-dialog__header-title\", titleClass]}>\n\t\t\t\t\t\t\t\t{slots.title?.({ loading: state.loading, close: handleCloseClick, titleId, titleClass }) ?? props.title}\n\t\t\t\t\t\t\t\t{slots.header?.({ loading: state.loading, close: handleCloseClick, titleId, titleClass })}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{props.showRefresh && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\tclass={[\n\t\t\t\t\t\t\t\t\t\t\"fa-dialog__header-icon\",\n\t\t\t\t\t\t\t\t\t\tstate.loading ? \"fa__click__disabled fa__click__disabled__cursor \" : \"fa__hover__twinkle\",\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonClick={handleRefresh}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t<Refresh />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{props.showFullscreen && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\ttitle={state.fullscreen ? \"关闭全屏显示\" : \"全屏显示\"}\n\t\t\t\t\t\t\t\t\tclass={[\n\t\t\t\t\t\t\t\t\t\t\"fa-dialog__header-icon\",\n\t\t\t\t\t\t\t\t\t\tstate.loading ? \"fa__click__disabled fa__click__disabled__cursor \" : \"fa__hover__twinkle\",\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonClick={handleFullscreen}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ElIcon>{state.fullscreen ? <FullScreenExit /> : <FullScreen />}</ElIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{props.showClose && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\ttitle=\"关闭\"\n\t\t\t\t\t\t\t\t\tclass={[\n\t\t\t\t\t\t\t\t\t\t\"fa-dialog__header-icon\",\n\t\t\t\t\t\t\t\t\t\tstate.loading ? \"fa__click__disabled fa__click__disabled__cursor \" : \"fa__hover__twinkle\",\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonClick={handleCloseClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t<Close />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t<ElScrollbar vLoading={state.loading} element-loading-text=\"加载中...\">\n\t\t\t\t\t\t\t{!state.refreshing && slots.default?.(state)}\n\t\t\t\t\t\t</ElScrollbar>\n\t\t\t\t\t),\n\t\t\t\t\t...(!props.hideFooter && {\n\t\t\t\t\t\tfooter: () => [\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{slots.footer?.({ loading: state.loading, close: handleCloseClick })}\n\t\t\t\t\t\t\t\t{props.showCloseButton && (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.loading} onClick={handleCloseClick}>\n\t\t\t\t\t\t\t\t\t\t{props.closeButtonText}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{props.showConfirmButton && (\n\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\tdisabled={props.disabledConfirmButton}\n\t\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={handleConfirmClick}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{state.loading ? \"加载中...\" : props.confirmButtonText}\n\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>,\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElDialog>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 调用原生关闭流程,并执行 beforeClose。 */\n\t\t\thandleClose: computed(() => dialogRef.value?.handleClose),\n\t\t\t/** 弹窗内容引用 */\n\t\t\tdialogContentRef: computed<{ resetPosition: () => void; updatePosition: () => void } | undefined>(\n\t\t\t\t() => dialogRef.value?.dialogContentRef as { resetPosition: () => void; updatePosition: () => void } | undefined\n\t\t\t),\n\t\t\t/** 重置位置 */\n\t\t\tresetPosition: computed(() => dialogRef.value?.resetPosition),\n\t\t\t/** 加载状态 */\n\t\t\tloading: toRef(state, \"loading\"),\n\t\t\t/** 是否显示 */\n\t\t\tvisible: toRef(state, \"visible\"),\n\t\t\t/** 打开弹窗 */\n\t\t\topen: handleOpen,\n\t\t\t/** 关闭弹窗 */\n\t\t\tclose: handleClose,\n\t\t\t/** 刷新弹窗 */\n\t\t\trefresh: handleRefresh,\n\t\t\t/** 弹窗加载 */\n\t\t\tdoLoading: handleLoading,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
/** FaDrawer 的运行时 Props
|
|
1
|
+
/** FaDrawer 的运行时 Props 定义 */
|
|
2
2
|
export declare const faDrawerProps: {
|
|
3
|
-
/**
|
|
3
|
+
/** whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */
|
|
4
4
|
appendToBody: {
|
|
5
5
|
type: BooleanConstructor;
|
|
6
6
|
default: boolean;
|
|
7
7
|
};
|
|
8
|
-
/**
|
|
8
|
+
/** enable dragging feature for Dialog */
|
|
9
9
|
draggable: {
|
|
10
10
|
type: BooleanConstructor;
|
|
11
11
|
default: boolean;
|
|
12
12
|
};
|
|
13
|
-
/**
|
|
13
|
+
/** destroy elements in Dialog when closed */
|
|
14
14
|
destroyOnClose: {
|
|
15
15
|
type: BooleanConstructor;
|
|
16
16
|
default: boolean;
|
|
17
17
|
};
|
|
18
|
-
/**
|
|
18
|
+
/** 显示刷新按钮 */
|
|
19
19
|
showRefresh: {
|
|
20
20
|
type: BooleanConstructor;
|
|
21
21
|
default: boolean;
|
|
22
22
|
};
|
|
23
|
-
/**
|
|
23
|
+
/** 显示全屏图标 */
|
|
24
24
|
showFullscreen: {
|
|
25
25
|
type: BooleanConstructor;
|
|
26
26
|
default: boolean;
|
|
27
27
|
};
|
|
28
|
-
/**
|
|
28
|
+
/** 显示关闭按钮 */
|
|
29
29
|
showCloseButton: {
|
|
30
30
|
type: BooleanConstructor;
|
|
31
31
|
default: boolean;
|
|
32
32
|
};
|
|
33
|
-
/**
|
|
33
|
+
/** 显示确认按钮 */
|
|
34
34
|
showConfirmButton: {
|
|
35
35
|
type: BooleanConstructor;
|
|
36
36
|
default: boolean;
|
|
37
37
|
};
|
|
38
|
-
/**
|
|
38
|
+
/** 禁用确认按钮 */
|
|
39
39
|
disabledConfirmButton: BooleanConstructor;
|
|
40
|
-
/**
|
|
40
|
+
/** 关闭按钮文字,默认取消 */
|
|
41
41
|
closeButtonText: {
|
|
42
42
|
type: StringConstructor;
|
|
43
43
|
default: string;
|
|
44
44
|
};
|
|
45
|
-
/**
|
|
45
|
+
/** 确认按钮文字,默认确认 */
|
|
46
46
|
confirmButtonText: {
|
|
47
47
|
type: StringConstructor;
|
|
48
48
|
default: string;
|
|
49
49
|
};
|
|
50
|
-
/**
|
|
50
|
+
/** 隐藏底部操作 */
|
|
51
51
|
hideFooter: BooleanConstructor;
|
|
52
|
-
/**
|
|
52
|
+
/** 显示关闭回调 */
|
|
53
53
|
showBeforeClose: BooleanConstructor;
|
|
54
|
-
/**
|
|
54
|
+
/** 打开之后 */
|
|
55
55
|
afterOpen: {
|
|
56
56
|
type: import("vue").PropType<() => void | Promise<void>>;
|
|
57
57
|
};
|
|
@@ -114,11 +114,11 @@ export declare const faDrawerProps: {
|
|
|
114
114
|
title: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
115
115
|
ariaLevel: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "2", boolean>;
|
|
116
116
|
};
|
|
117
|
-
/** FaDrawer 的运行时 Emits
|
|
117
|
+
/** FaDrawer 的运行时 Emits 定义 */
|
|
118
118
|
export declare const faDrawerEmits: {
|
|
119
|
-
/**
|
|
119
|
+
/** v-model 回调 */
|
|
120
120
|
"update:modelValue": (value: boolean) => boolean;
|
|
121
|
-
/**
|
|
121
|
+
/** 确认按钮点击事件 */
|
|
122
122
|
confirmClick: () => boolean;
|
|
123
123
|
'resize-start': (evt: MouseEvent, size: number) => boolean;
|
|
124
124
|
resize: (evt: MouseEvent, size: number) => boolean;
|
|
@@ -130,85 +130,85 @@ export declare const faDrawerEmits: {
|
|
|
130
130
|
openAutoFocus: () => boolean;
|
|
131
131
|
closeAutoFocus: () => boolean;
|
|
132
132
|
};
|
|
133
|
-
/** FaDrawer
|
|
133
|
+
/** FaDrawer 的插槽参数 */
|
|
134
134
|
export interface FaDrawerSlots extends Record<string, unknown> {
|
|
135
|
-
/**
|
|
135
|
+
/** 默认内容插槽 */
|
|
136
136
|
default: {
|
|
137
137
|
loading: boolean;
|
|
138
138
|
};
|
|
139
|
-
/**
|
|
139
|
+
/** 头部插槽 */
|
|
140
140
|
header: {
|
|
141
141
|
loading: boolean;
|
|
142
142
|
close: () => void;
|
|
143
143
|
titleId: string;
|
|
144
144
|
titleClass: string;
|
|
145
145
|
};
|
|
146
|
-
/**
|
|
146
|
+
/** 标题插槽 */
|
|
147
147
|
title: {
|
|
148
148
|
loading: boolean;
|
|
149
149
|
close: () => void;
|
|
150
150
|
titleId: string;
|
|
151
151
|
titleClass: string;
|
|
152
152
|
};
|
|
153
|
-
/**
|
|
153
|
+
/** 底部插槽 */
|
|
154
154
|
footer: {
|
|
155
155
|
loading: boolean;
|
|
156
156
|
close: () => void;
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
159
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
160
|
-
/**
|
|
160
|
+
/** whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */
|
|
161
161
|
appendToBody: {
|
|
162
162
|
type: BooleanConstructor;
|
|
163
163
|
default: boolean;
|
|
164
164
|
};
|
|
165
|
-
/**
|
|
165
|
+
/** enable dragging feature for Dialog */
|
|
166
166
|
draggable: {
|
|
167
167
|
type: BooleanConstructor;
|
|
168
168
|
default: boolean;
|
|
169
169
|
};
|
|
170
|
-
/**
|
|
170
|
+
/** destroy elements in Dialog when closed */
|
|
171
171
|
destroyOnClose: {
|
|
172
172
|
type: BooleanConstructor;
|
|
173
173
|
default: boolean;
|
|
174
174
|
};
|
|
175
|
-
/**
|
|
175
|
+
/** 显示刷新按钮 */
|
|
176
176
|
showRefresh: {
|
|
177
177
|
type: BooleanConstructor;
|
|
178
178
|
default: boolean;
|
|
179
179
|
};
|
|
180
|
-
/**
|
|
180
|
+
/** 显示全屏图标 */
|
|
181
181
|
showFullscreen: {
|
|
182
182
|
type: BooleanConstructor;
|
|
183
183
|
default: boolean;
|
|
184
184
|
};
|
|
185
|
-
/**
|
|
185
|
+
/** 显示关闭按钮 */
|
|
186
186
|
showCloseButton: {
|
|
187
187
|
type: BooleanConstructor;
|
|
188
188
|
default: boolean;
|
|
189
189
|
};
|
|
190
|
-
/**
|
|
190
|
+
/** 显示确认按钮 */
|
|
191
191
|
showConfirmButton: {
|
|
192
192
|
type: BooleanConstructor;
|
|
193
193
|
default: boolean;
|
|
194
194
|
};
|
|
195
|
-
/**
|
|
195
|
+
/** 禁用确认按钮 */
|
|
196
196
|
disabledConfirmButton: BooleanConstructor;
|
|
197
|
-
/**
|
|
197
|
+
/** 关闭按钮文字,默认取消 */
|
|
198
198
|
closeButtonText: {
|
|
199
199
|
type: StringConstructor;
|
|
200
200
|
default: string;
|
|
201
201
|
};
|
|
202
|
-
/**
|
|
202
|
+
/** 确认按钮文字,默认确认 */
|
|
203
203
|
confirmButtonText: {
|
|
204
204
|
type: StringConstructor;
|
|
205
205
|
default: string;
|
|
206
206
|
};
|
|
207
|
-
/**
|
|
207
|
+
/** 隐藏底部操作 */
|
|
208
208
|
hideFooter: BooleanConstructor;
|
|
209
|
-
/**
|
|
209
|
+
/** 显示关闭回调 */
|
|
210
210
|
showBeforeClose: BooleanConstructor;
|
|
211
|
-
/**
|
|
211
|
+
/** 打开之后 */
|
|
212
212
|
afterOpen: {
|
|
213
213
|
type: import("vue").PropType<() => void | Promise<void>>;
|
|
214
214
|
};
|
|
@@ -271,24 +271,24 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
271
271
|
title: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
272
272
|
ariaLevel: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "2", boolean>;
|
|
273
273
|
}>, {
|
|
274
|
-
/**
|
|
274
|
+
/** 用于关闭 Drawer, 该方法会调用传入的 before-close 方法 */
|
|
275
275
|
handleClose: import("vue").ComputedRef<(() => void) | undefined>;
|
|
276
|
-
/**
|
|
277
|
-
loading: import("vue").
|
|
278
|
-
/**
|
|
279
|
-
visible: import("vue").
|
|
280
|
-
/**
|
|
276
|
+
/** 加载状态 */
|
|
277
|
+
loading: import("vue").Ref<boolean, boolean>;
|
|
278
|
+
/** 是否显示 */
|
|
279
|
+
visible: import("vue").Ref<boolean, boolean>;
|
|
280
|
+
/** 打开弹窗 */
|
|
281
281
|
open: (openFunction?: () => void | Promise<void>) => Promise<void>;
|
|
282
|
-
/**
|
|
282
|
+
/** 关闭弹窗 */
|
|
283
283
|
close: (closeFunction?: () => void | Promise<void>) => Promise<void>;
|
|
284
|
-
/**
|
|
284
|
+
/** 刷新弹窗 */
|
|
285
285
|
refresh: () => Promise<void>;
|
|
286
|
-
/**
|
|
286
|
+
/** 弹窗加载 */
|
|
287
287
|
doLoading: (loadingFunction: () => void | Promise<void>) => Promise<void>;
|
|
288
288
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
289
|
-
/**
|
|
289
|
+
/** v-model 回调 */
|
|
290
290
|
"update:modelValue": (value: boolean) => boolean;
|
|
291
|
-
/**
|
|
291
|
+
/** 确认按钮点击事件 */
|
|
292
292
|
confirmClick: () => boolean;
|
|
293
293
|
'resize-start': (evt: MouseEvent, size: number) => boolean;
|
|
294
294
|
resize: (evt: MouseEvent, size: number) => boolean;
|
|
@@ -300,58 +300,58 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
300
300
|
openAutoFocus: () => boolean;
|
|
301
301
|
closeAutoFocus: () => boolean;
|
|
302
302
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
303
|
-
/**
|
|
303
|
+
/** whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */
|
|
304
304
|
appendToBody: {
|
|
305
305
|
type: BooleanConstructor;
|
|
306
306
|
default: boolean;
|
|
307
307
|
};
|
|
308
|
-
/**
|
|
308
|
+
/** enable dragging feature for Dialog */
|
|
309
309
|
draggable: {
|
|
310
310
|
type: BooleanConstructor;
|
|
311
311
|
default: boolean;
|
|
312
312
|
};
|
|
313
|
-
/**
|
|
313
|
+
/** destroy elements in Dialog when closed */
|
|
314
314
|
destroyOnClose: {
|
|
315
315
|
type: BooleanConstructor;
|
|
316
316
|
default: boolean;
|
|
317
317
|
};
|
|
318
|
-
/**
|
|
318
|
+
/** 显示刷新按钮 */
|
|
319
319
|
showRefresh: {
|
|
320
320
|
type: BooleanConstructor;
|
|
321
321
|
default: boolean;
|
|
322
322
|
};
|
|
323
|
-
/**
|
|
323
|
+
/** 显示全屏图标 */
|
|
324
324
|
showFullscreen: {
|
|
325
325
|
type: BooleanConstructor;
|
|
326
326
|
default: boolean;
|
|
327
327
|
};
|
|
328
|
-
/**
|
|
328
|
+
/** 显示关闭按钮 */
|
|
329
329
|
showCloseButton: {
|
|
330
330
|
type: BooleanConstructor;
|
|
331
331
|
default: boolean;
|
|
332
332
|
};
|
|
333
|
-
/**
|
|
333
|
+
/** 显示确认按钮 */
|
|
334
334
|
showConfirmButton: {
|
|
335
335
|
type: BooleanConstructor;
|
|
336
336
|
default: boolean;
|
|
337
337
|
};
|
|
338
|
-
/**
|
|
338
|
+
/** 禁用确认按钮 */
|
|
339
339
|
disabledConfirmButton: BooleanConstructor;
|
|
340
|
-
/**
|
|
340
|
+
/** 关闭按钮文字,默认取消 */
|
|
341
341
|
closeButtonText: {
|
|
342
342
|
type: StringConstructor;
|
|
343
343
|
default: string;
|
|
344
344
|
};
|
|
345
|
-
/**
|
|
345
|
+
/** 确认按钮文字,默认确认 */
|
|
346
346
|
confirmButtonText: {
|
|
347
347
|
type: StringConstructor;
|
|
348
348
|
default: string;
|
|
349
349
|
};
|
|
350
|
-
/**
|
|
350
|
+
/** 隐藏底部操作 */
|
|
351
351
|
hideFooter: BooleanConstructor;
|
|
352
|
-
/**
|
|
352
|
+
/** 显示关闭回调 */
|
|
353
353
|
showBeforeClose: BooleanConstructor;
|
|
354
|
-
/**
|
|
354
|
+
/** 打开之后 */
|
|
355
355
|
afterOpen: {
|
|
356
356
|
type: import("vue").PropType<() => void | Promise<void>>;
|
|
357
357
|
};
|
|
@@ -6,73 +6,73 @@ import { useRender } from "../../../utils/vue/render.mjs";
|
|
|
6
6
|
import { makeSlots } from "../../../utils/vue/slots.mjs";
|
|
7
7
|
import { withDefineType } from "../../../utils/vue/with.mjs";
|
|
8
8
|
import { FullScreen, FullScreenExit } from "@fast-element-plus/icons-vue";
|
|
9
|
-
import { Fragment, computed, createVNode, defineComponent, mergeProps, nextTick, onBeforeUnmount, reactive, resolveDirective, shallowRef, watch, withDirectives } from "vue";
|
|
9
|
+
import { Fragment, computed, createVNode, defineComponent, mergeProps, nextTick, onBeforeUnmount, reactive, resolveDirective, shallowRef, toRef, watch, withDirectives } from "vue";
|
|
10
10
|
import { Close, Eleme, Refresh } from "@element-plus/icons-vue";
|
|
11
11
|
import { ElButton, ElDrawer, ElIcon, ElMessage, ElMessageBox, ElScrollbar, drawerEmits, drawerProps, useGlobalSize } from "element-plus";
|
|
12
12
|
//#region src/components/drawer/src/drawer.tsx
|
|
13
|
-
/** FaDrawer 的运行时 Props
|
|
13
|
+
/** FaDrawer 的运行时 Props 定义 */
|
|
14
14
|
const faDrawerProps = {
|
|
15
15
|
...drawerProps,
|
|
16
|
-
/**
|
|
16
|
+
/** whether to append Dialog itself to body. A nested Dialog should have this attribute set to `true` */
|
|
17
17
|
appendToBody: {
|
|
18
18
|
type: Boolean,
|
|
19
19
|
default: true
|
|
20
20
|
},
|
|
21
|
-
/**
|
|
21
|
+
/** enable dragging feature for Dialog */
|
|
22
22
|
draggable: {
|
|
23
23
|
type: Boolean,
|
|
24
24
|
default: true
|
|
25
25
|
},
|
|
26
|
-
/**
|
|
26
|
+
/** destroy elements in Dialog when closed */
|
|
27
27
|
destroyOnClose: {
|
|
28
28
|
type: Boolean,
|
|
29
29
|
default: true
|
|
30
30
|
},
|
|
31
|
-
/**
|
|
31
|
+
/** 显示刷新按钮 */
|
|
32
32
|
showRefresh: {
|
|
33
33
|
type: Boolean,
|
|
34
34
|
default: true
|
|
35
35
|
},
|
|
36
|
-
/**
|
|
36
|
+
/** 显示全屏图标 */
|
|
37
37
|
showFullscreen: {
|
|
38
38
|
type: Boolean,
|
|
39
39
|
default: true
|
|
40
40
|
},
|
|
41
|
-
/**
|
|
41
|
+
/** 显示关闭按钮 */
|
|
42
42
|
showCloseButton: {
|
|
43
43
|
type: Boolean,
|
|
44
44
|
default: true
|
|
45
45
|
},
|
|
46
|
-
/**
|
|
46
|
+
/** 显示确认按钮 */
|
|
47
47
|
showConfirmButton: {
|
|
48
48
|
type: Boolean,
|
|
49
49
|
default: true
|
|
50
50
|
},
|
|
51
|
-
/**
|
|
51
|
+
/** 禁用确认按钮 */
|
|
52
52
|
disabledConfirmButton: Boolean,
|
|
53
|
-
/**
|
|
53
|
+
/** 关闭按钮文字,默认取消 */
|
|
54
54
|
closeButtonText: {
|
|
55
55
|
type: String,
|
|
56
56
|
default: "取消"
|
|
57
57
|
},
|
|
58
|
-
/**
|
|
58
|
+
/** 确认按钮文字,默认确认 */
|
|
59
59
|
confirmButtonText: {
|
|
60
60
|
type: String,
|
|
61
61
|
default: "确认"
|
|
62
62
|
},
|
|
63
|
-
/**
|
|
63
|
+
/** 隐藏底部操作 */
|
|
64
64
|
hideFooter: Boolean,
|
|
65
|
-
/**
|
|
65
|
+
/** 显示关闭回调 */
|
|
66
66
|
showBeforeClose: Boolean,
|
|
67
|
-
/**
|
|
67
|
+
/** 打开之后 */
|
|
68
68
|
afterOpen: { type: definePropType(Function) }
|
|
69
69
|
};
|
|
70
|
-
/** FaDrawer 的运行时 Emits
|
|
70
|
+
/** FaDrawer 的运行时 Emits 定义 */
|
|
71
71
|
const faDrawerEmits = {
|
|
72
72
|
...drawerEmits,
|
|
73
|
-
/**
|
|
73
|
+
/** v-model 回调 */
|
|
74
74
|
"update:modelValue": (value) => typeof value === "boolean",
|
|
75
|
-
/**
|
|
75
|
+
/** 确认按钮点击事件 */
|
|
76
76
|
confirmClick: () => true
|
|
77
77
|
};
|
|
78
78
|
var drawer_default = defineComponent({
|
|
@@ -281,19 +281,19 @@ var drawer_default = defineComponent({
|
|
|
281
281
|
])] }
|
|
282
282
|
}));
|
|
283
283
|
return useExpose(expose, {
|
|
284
|
-
/**
|
|
284
|
+
/** 用于关闭 Drawer, 该方法会调用传入的 before-close 方法 */
|
|
285
285
|
handleClose: computed(() => drawerRef.value?.handleClose),
|
|
286
|
-
/**
|
|
287
|
-
loading:
|
|
288
|
-
/**
|
|
289
|
-
visible:
|
|
290
|
-
/**
|
|
286
|
+
/** 加载状态 */
|
|
287
|
+
loading: toRef(state, "loading"),
|
|
288
|
+
/** 是否显示 */
|
|
289
|
+
visible: toRef(state, "visible"),
|
|
290
|
+
/** 打开弹窗 */
|
|
291
291
|
open: handleOpen,
|
|
292
|
-
/**
|
|
292
|
+
/** 关闭弹窗 */
|
|
293
293
|
close: handleClose,
|
|
294
|
-
/**
|
|
294
|
+
/** 刷新弹窗 */
|
|
295
295
|
refresh: handleRefresh,
|
|
296
|
-
/**
|
|
296
|
+
/** 弹窗加载 */
|
|
297
297
|
doLoading: handleLoading
|
|
298
298
|
});
|
|
299
299
|
}
|