fast-element-plus 2.0.19 → 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 +40 -20
- package/CONTRIBUTING.md +3 -4
- package/README.md +80 -27
- package/README.zh.md +66 -27
- package/dist/component.d.ts +110 -110
- package/dist/components/avatar/src/avatar.d.ts +26 -26
- package/dist/components/avatar/src/avatar.mjs +10 -10
- package/dist/components/avatar/src/avatar.mjs.map +1 -1
- package/dist/components/button/src/button.d.ts +32 -27
- package/dist/components/button/src/button.mjs +57 -36
- package/dist/components/button/src/button.mjs.map +1 -1
- package/dist/components/carNumber/src/carNumber.d.ts +8 -8
- package/dist/components/carNumber/src/carNumber.mjs +5 -5
- package/dist/components/carNumber/src/carNumber.mjs.map +1 -1
- package/dist/components/contextMenu/src/contextMenu.d.ts +6 -6
- package/dist/components/contextMenu/src/contextMenu.mjs +5 -5
- package/dist/components/contextMenu/src/contextMenu.mjs.map +1 -1
- package/dist/components/contextMenu/src/contextMenu.type.d.ts +7 -7
- package/dist/components/dialog/src/dialog.d.ts +74 -74
- package/dist/components/dialog/src/dialog.mjs +31 -31
- package/dist/components/dialog/src/dialog.mjs.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +57 -57
- package/dist/components/drawer/src/drawer.mjs +24 -24
- package/dist/components/drawer/src/drawer.mjs.map +1 -1
- package/dist/components/form/src/form.d.ts +30 -30
- package/dist/components/form/src/form.mjs +16 -16
- package/dist/components/form/src/form.mjs.map +1 -1
- package/dist/components/form/src/formItem.d.ts +30 -30
- package/dist/components/form/src/formItem.mjs +13 -13
- package/dist/components/form/src/formItem.mjs.map +1 -1
- package/dist/components/formItemTip/src/formItemTip.d.ts +9 -9
- package/dist/components/formItemTip/src/formItemTip.mjs +3 -3
- package/dist/components/formItemTip/src/formItemTip.mjs.map +1 -1
- package/dist/components/icon/src/icon.d.ts +10 -10
- package/dist/components/icon/src/icon.mjs +4 -4
- package/dist/components/icon/src/icon.mjs.map +1 -1
- package/dist/components/iconSelector/src/iconSelector.d.ts +6 -6
- package/dist/components/iconSelector/src/iconSelector.mjs +4 -4
- package/dist/components/iconSelector/src/iconSelector.mjs.map +1 -1
- package/dist/components/image/src/image.d.ts +36 -36
- package/dist/components/image/src/image.mjs +11 -11
- package/dist/components/image/src/image.mjs.map +1 -1
- package/dist/components/inputDialogPage/src/inputDialogPage.d.ts +37 -37
- package/dist/components/inputDialogPage/src/inputDialogPage.mjs +16 -16
- package/dist/components/inputDialogPage/src/inputDialogPage.mjs.map +1 -1
- package/dist/components/layoutGrid/src/layoutGrid.d.ts +12 -12
- package/dist/components/layoutGrid/src/layoutGrid.mjs +6 -6
- package/dist/components/layoutGrid/src/layoutGrid.mjs.map +1 -1
- package/dist/components/layoutGrid/src/layoutGridItem.d.ts +18 -18
- package/dist/components/layoutGrid/src/layoutGridItem.mjs +8 -8
- package/dist/components/layoutGrid/src/layoutGridItem.mjs.map +1 -1
- package/dist/components/select/src/select.d.ts +88 -88
- package/dist/components/select/src/select.mjs +28 -28
- package/dist/components/select/src/select.mjs.map +1 -1
- package/dist/components/select/src/selectOption.d.ts +13 -13
- package/dist/components/select/src/selectOption.mjs +6 -6
- package/dist/components/select/src/selectOption.mjs.map +1 -1
- package/dist/components/selectPage/src/selectPage.d.ts +78 -84
- package/dist/components/selectPage/src/selectPage.mjs +49 -35
- package/dist/components/selectPage/src/selectPage.mjs.map +1 -1
- package/dist/components/selectV2/index.mjs +2 -1
- package/dist/components/selectV2/index.mjs.map +1 -1
- package/dist/components/selectV2/src/selectV2.d.ts +160 -851
- package/dist/components/selectV2/src/selectV2.mjs +30 -338
- package/dist/components/selectV2/src/selectV2.mjs.map +1 -1
- package/dist/components/table/index.mjs +3 -2
- package/dist/components/table/index.mjs.map +1 -1
- package/dist/components/table/src/page.type.d.ts +1 -1
- package/dist/components/table/src/table.d.ts +211 -744
- package/dist/components/table/src/table.mjs +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 +86 -86
- package/dist/components/tree/src/tree.mjs +46 -46
- package/dist/components/tree/src/tree.mjs.map +1 -1
- package/dist/components/treeSelect/src/treeSelect.d.ts +144 -150
- package/dist/components/treeSelect/src/treeSelect.mjs +55 -55
- package/dist/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/dist/components/upload/src/upload.d.ts +36 -36
- package/dist/components/upload/src/upload.mjs +17 -17
- package/dist/components/upload/src/upload.mjs.map +1 -1
- package/dist/components/uploadImage/src/uploadImage.d.ts +47 -47
- package/dist/components/uploadImage/src/uploadImage.mjs +23 -23
- package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
- package/dist/components/uploadImages/src/uploadImages.d.ts +41 -41
- package/dist/components/uploadImages/src/uploadImages.mjs +21 -21
- package/dist/components/uploadImages/src/uploadImages.mjs.map +1 -1
- package/dist/directives/click-debounce/index.mjs +19 -11
- package/dist/directives/click-debounce/index.mjs.map +1 -1
- package/dist/directives/click-throttle/index.d.ts +4 -2
- package/dist/directives/click-throttle/index.mjs +21 -11
- package/dist/directives/click-throttle/index.mjs.map +1 -1
- package/dist/index.global.min.js +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
|
@@ -7,15 +7,15 @@ import { computed, createVNode, defineComponent, mergeProps, reactive } from "vu
|
|
|
7
7
|
import { Picture } from "@element-plus/icons-vue";
|
|
8
8
|
import { ElAvatar, avatarEmits, avatarProps } from "element-plus";
|
|
9
9
|
//#region src/components/avatar/src/avatar.tsx
|
|
10
|
-
/** FaAvatar 的运行时 Props
|
|
10
|
+
/** FaAvatar 的运行时 Props 定义 */
|
|
11
11
|
const faAvatarProps = {
|
|
12
12
|
...avatarProps,
|
|
13
|
-
/**
|
|
13
|
+
/** set how the image fit its container for an image avatar. */
|
|
14
14
|
fit: {
|
|
15
15
|
type: definePropType(String),
|
|
16
16
|
default: "cover"
|
|
17
17
|
},
|
|
18
|
-
/**
|
|
18
|
+
/** representation type to icon, more info on icon component. */
|
|
19
19
|
icon: {
|
|
20
20
|
type: definePropType([
|
|
21
21
|
String,
|
|
@@ -24,18 +24,18 @@ const faAvatarProps = {
|
|
|
24
24
|
]),
|
|
25
25
|
default: () => Picture
|
|
26
26
|
},
|
|
27
|
-
/**
|
|
27
|
+
/** Base64图片 */
|
|
28
28
|
base64: Boolean,
|
|
29
|
-
/**
|
|
29
|
+
/** 原图 */
|
|
30
30
|
original: Boolean,
|
|
31
|
-
/**
|
|
31
|
+
/** 标准 */
|
|
32
32
|
normal: Boolean,
|
|
33
|
-
/**
|
|
33
|
+
/** 小图 */
|
|
34
34
|
small: Boolean,
|
|
35
|
-
/**
|
|
35
|
+
/** 缩略图 */
|
|
36
36
|
thumb: Boolean
|
|
37
37
|
};
|
|
38
|
-
/** FaAvatar 的运行时 Emits
|
|
38
|
+
/** FaAvatar 的运行时 Emits 定义 */
|
|
39
39
|
const faAvatarEmits = { ...avatarEmits };
|
|
40
40
|
var avatar_default = defineComponent({
|
|
41
41
|
name: "FaAvatar",
|
|
@@ -59,7 +59,7 @@ var avatar_default = defineComponent({
|
|
|
59
59
|
"src": state.src
|
|
60
60
|
}), { default: () => [slots.default?.({ src: state.src })] }));
|
|
61
61
|
return useExpose(expose, {
|
|
62
|
-
/**
|
|
62
|
+
/** 图片路径 */
|
|
63
63
|
src: state.src });
|
|
64
64
|
}
|
|
65
65
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.mjs","names":[],"sources":["../../../../src/components/avatar/src/avatar.tsx"],"sourcesContent":["import { computed, defineComponent, reactive } from \"vue\";\nimport { Picture } from \"@element-plus/icons-vue\";\nimport { ElAvatar, avatarEmits, avatarProps } from \"element-plus\";\nimport { definePropType, makeSlots, useEmits, useExpose, useProps, useRender } from \"../../../utils\";\nimport type { Component } from \"vue\";\n\n/** FaAvatar 的运行时 Props
|
|
1
|
+
{"version":3,"file":"avatar.mjs","names":[],"sources":["../../../../src/components/avatar/src/avatar.tsx"],"sourcesContent":["import { computed, defineComponent, reactive } from \"vue\";\nimport { Picture } from \"@element-plus/icons-vue\";\nimport { ElAvatar, avatarEmits, avatarProps } from \"element-plus\";\nimport { definePropType, makeSlots, useEmits, useExpose, useProps, useRender } from \"../../../utils\";\nimport type { Component } from \"vue\";\n\n/** FaAvatar 的运行时 Props 定义 */\nexport const faAvatarProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...avatarProps,\n\t/** set how the image fit its container for an image avatar. */\n\tfit: {\n\t\ttype: definePropType<\n\t\t\t\"fill\" | \"-moz-initial\" | \"inherit\" | \"initial\" | \"revert\" | \"revert-layer\" | \"unset\" | \"none\" | \"contain\" | \"cover\" | \"scale-down\"\n\t\t>(String),\n\t\tdefault: \"cover\",\n\t},\n\t/** representation type to icon, more info on icon component. */\n\ticon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: () => Picture,\n\t},\n\t/** Base64图片 */\n\tbase64: Boolean,\n\t/** 原图 */\n\toriginal: Boolean,\n\t/** 标准 */\n\tnormal: Boolean,\n\t/** 小图 */\n\tsmall: Boolean,\n\t/** 缩略图 */\n\tthumb: Boolean,\n};\n\n/** FaAvatar 的运行时 Emits 定义 */\nexport const faAvatarEmits = {\n\t...avatarEmits,\n};\n\n/** FaAvatar 的插槽参数 */\nexport interface FaAvatarSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: { src?: string };\n}\n\nexport default defineComponent({\n\tname: \"FaAvatar\",\n\tprops: faAvatarProps,\n\temits: faAvatarEmits,\n\tslots: makeSlots<FaAvatarSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst state = reactive({\n\t\t\tsrc: computed(() => {\n\t\t\t\tif (!props.src) return undefined;\n\t\t\t\tif (props.base64) {\n\t\t\t\t\treturn `data:image/png;base64,${props.src}`;\n\t\t\t\t} else if (props.original) {\n\t\t\t\t\treturn props.src;\n\t\t\t\t} else if (props.normal) {\n\t\t\t\t\treturn `${props.src}@!normal`;\n\t\t\t\t} else if (props.small) {\n\t\t\t\t\treturn `${props.src}@!small`;\n\t\t\t\t} else if (props.thumb) {\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t} else {\n\t\t\t\t\t// 默认使用缩略图\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t}\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 elAvatarProps = useProps(props, avatarProps, [\"src\"]);\n\t\tconst elAvatarEmits = useEmits(avatarEmits, emit);\n\n\t\tuseRender(() => (\n\t\t\t<ElAvatar {...elAvatarProps.value} {...elAvatarEmits.value} class=\"fa-avatar\" src={state.src}>\n\t\t\t\t{slots.default?.({ src: state.src })}\n\t\t\t</ElAvatar>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 图片路径 */\n\t\t\tsrc: state.src,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;AAOA,MAAa,gBAAgB;CAE5B,GAAG;;CAEH,KAAK;EACJ,MAAM,eAEJ,MAAM;EACR,SAAS;CACV;;CAEA,MAAM;EACL,MAAM,eAAmC;GAAC;GAAQ;GAAQ;EAAQ,CAAC;EACnE,eAAe;CAChB;;CAEA,QAAQ;;CAER,UAAU;;CAEV,QAAQ;;CAER,OAAO;;CAEP,OAAO;AACR;;AAGA,MAAa,gBAAgB,EAC5B,GAAG,YACJ;AAQA,IAAA,iBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAAyB;CAChC,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,QAAQ,SAAS,EACtB,KAAK,eAAe;GACnB,IAAI,CAAC,MAAM,KAAK,OAAO,KAAA;GACvB,IAAI,MAAM,QACT,OAAO,yBAAyB,MAAM;QAChC,IAAI,MAAM,UAChB,OAAO,MAAM;QACP,IAAI,MAAM,QAChB,OAAO,GAAG,MAAM,IAAG;QACb,IAAI,MAAM,OAChB,OAAO,GAAG,MAAM,IAAG;QACb,IAAI,MAAM,OAChB,OAAO,GAAG,MAAM,IAAG;QAGnB,OAAO,GAAG,MAAM,IAAG;EAErB,CAAC,EACF,CAAC;EAGD,MAAM,gBAAgB,SAAS,OAAO,aAAa,CAAC,KAAK,CAAC;EAC1D,MAAM,gBAAgB,SAAS,aAAa,IAAI;EAEhD,gBAAU,YAAA,UAAA,WACK,cAAc,OAAW,cAAc,OAAK;GAAA,SAAA;GAAA,OAAyB,MAAM;EAAG,CAAA,GAAA,EAAA,eAAA,CAC1F,MAAM,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,EAAA,CAAA,CAErC;EAED,OAAO,UAAU,QAAQ;;AAExB,KAAK,MAAM,IACZ,CAAC;CACF;AACD,CAAC"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { Component } from "vue";
|
|
2
|
-
/** FaButton 的运行时 Props
|
|
2
|
+
/** FaButton 的运行时 Props 定义 */
|
|
3
3
|
export declare const faButtonProps: {
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* 自定义加载图标
|
|
6
|
+
*
|
|
7
|
+
* 未指定时使用 `Eleme`。
|
|
7
8
|
*/
|
|
8
9
|
loadingIcon: {
|
|
9
10
|
type: import("vue").PropType<string | Component>;
|
|
10
11
|
default: () => import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
11
12
|
};
|
|
12
|
-
/**
|
|
13
|
+
/** 禁用加载 */
|
|
13
14
|
disabledLoading: BooleanConstructor;
|
|
14
15
|
size: {
|
|
15
16
|
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
|
|
@@ -40,33 +41,35 @@ export declare const faButtonProps: {
|
|
|
40
41
|
autoInsertSpace: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
|
|
41
42
|
tag: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown, "button", boolean>;
|
|
42
43
|
};
|
|
43
|
-
/** FaButton 的运行时 Emits
|
|
44
|
+
/** FaButton 的运行时 Emits 定义 */
|
|
44
45
|
export declare const faButtonEmits: {
|
|
45
46
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param
|
|
47
|
+
* 点击事件;未禁用内部加载时,调用方完成后应调用 done。
|
|
48
|
+
* @param event - 鼠标事件
|
|
49
|
+
* @param done - 完成本次交互并隐藏内部加载状态的回调
|
|
48
50
|
*/
|
|
49
51
|
click: (event: MouseEvent, done?: () => void) => boolean;
|
|
50
52
|
};
|
|
51
|
-
/** FaButton
|
|
53
|
+
/** FaButton 的插槽参数 */
|
|
52
54
|
export interface FaButtonSlots extends Record<string, unknown> {
|
|
53
|
-
/**
|
|
55
|
+
/** 默认内容插槽 */
|
|
54
56
|
default: never;
|
|
55
|
-
/**
|
|
57
|
+
/** 自定义加载中组件 */
|
|
56
58
|
loading: never;
|
|
57
|
-
/**
|
|
59
|
+
/** 自定义图标组件 */
|
|
58
60
|
icon: never;
|
|
59
61
|
}
|
|
60
62
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
61
63
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
+
* 自定义加载图标
|
|
65
|
+
*
|
|
66
|
+
* 未指定时使用 `Eleme`。
|
|
64
67
|
*/
|
|
65
68
|
loadingIcon: {
|
|
66
69
|
type: import("vue").PropType<string | Component>;
|
|
67
70
|
default: () => import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
68
71
|
};
|
|
69
|
-
/**
|
|
72
|
+
/** 禁用加载 */
|
|
70
73
|
disabledLoading: BooleanConstructor;
|
|
71
74
|
size: {
|
|
72
75
|
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
|
|
@@ -97,36 +100,38 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
97
100
|
autoInsertSpace: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
|
|
98
101
|
tag: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown, "button", boolean>;
|
|
99
102
|
}>, {
|
|
100
|
-
/**
|
|
103
|
+
/** 按钮 html 元素 */
|
|
101
104
|
ref: import("vue").ComputedRef<HTMLButtonElement | undefined>;
|
|
102
|
-
/**
|
|
105
|
+
/** 按钮尺寸 */
|
|
103
106
|
size: import("vue").ComputedRef<"" | "small" | "default" | "large" | undefined>;
|
|
104
|
-
/**
|
|
107
|
+
/** 按钮类型 */
|
|
105
108
|
type: import("vue").ComputedRef<"" | "default" | "text" | "primary" | "success" | "warning" | "info" | "danger" | undefined>;
|
|
106
|
-
/**
|
|
109
|
+
/** 按钮已禁用 */
|
|
107
110
|
disabled: import("vue").ComputedRef<boolean | undefined>;
|
|
108
|
-
/**
|
|
111
|
+
/** 是否在两个字符之间插入空格 */
|
|
109
112
|
shouldAddSpace: import("vue").ComputedRef<boolean | undefined>;
|
|
110
|
-
/**
|
|
111
|
-
loading: import("vue").
|
|
112
|
-
/**
|
|
113
|
+
/** 聚合加载状态;手动写入只管理手动任务,不关闭仍在执行的内部任务。 */
|
|
114
|
+
loading: import("vue").WritableComputedRef<boolean, boolean>;
|
|
115
|
+
/** 执行独立的加载任务;并发调用分别完成,卸载后不再启动新任务。 */
|
|
113
116
|
doLoading: (loadingFunction: () => void | Promise<void>) => Promise<void>;
|
|
114
117
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
115
118
|
/**
|
|
116
|
-
*
|
|
117
|
-
* @param
|
|
119
|
+
* 点击事件;未禁用内部加载时,调用方完成后应调用 done。
|
|
120
|
+
* @param event - 鼠标事件
|
|
121
|
+
* @param done - 完成本次交互并隐藏内部加载状态的回调
|
|
118
122
|
*/
|
|
119
123
|
click: (event: MouseEvent, done?: () => void) => boolean;
|
|
120
124
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
121
125
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
126
|
+
* 自定义加载图标
|
|
127
|
+
*
|
|
128
|
+
* 未指定时使用 `Eleme`。
|
|
124
129
|
*/
|
|
125
130
|
loadingIcon: {
|
|
126
131
|
type: import("vue").PropType<string | Component>;
|
|
127
132
|
default: () => import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
128
133
|
};
|
|
129
|
-
/**
|
|
134
|
+
/** 禁用加载 */
|
|
130
135
|
disabledLoading: BooleanConstructor;
|
|
131
136
|
size: {
|
|
132
137
|
readonly type: import("vue").PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
|
|
@@ -4,16 +4,18 @@ import { definePropType, useProps } from "../../../utils/vue/props.mjs";
|
|
|
4
4
|
import { useRender } from "../../../utils/vue/render.mjs";
|
|
5
5
|
import { makeSlots } from "../../../utils/vue/slots.mjs";
|
|
6
6
|
import { useOverlay } from "../../../hooks/use-overlay/index.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { createLoadingTasks } from "../../../utils/loading-tasks.mjs";
|
|
8
|
+
import { computed, createVNode, defineComponent, mergeProps, onBeforeUnmount, reactive, shallowRef, watch, withModifiers } from "vue";
|
|
8
9
|
import { Eleme } from "@element-plus/icons-vue";
|
|
9
10
|
import { ElButton, buttonEmits, buttonProps } from "element-plus";
|
|
10
11
|
//#region src/components/button/src/button.tsx
|
|
11
|
-
/** FaButton 的运行时 Props
|
|
12
|
+
/** FaButton 的运行时 Props 定义 */
|
|
12
13
|
const faButtonProps = {
|
|
13
14
|
...buttonProps,
|
|
14
15
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
16
|
+
* 自定义加载图标
|
|
17
|
+
*
|
|
18
|
+
* 未指定时使用 `Eleme`。
|
|
17
19
|
*/
|
|
18
20
|
loadingIcon: {
|
|
19
21
|
type: definePropType([
|
|
@@ -23,15 +25,16 @@ const faButtonProps = {
|
|
|
23
25
|
]),
|
|
24
26
|
default: () => Eleme
|
|
25
27
|
},
|
|
26
|
-
/**
|
|
28
|
+
/** 禁用加载 */
|
|
27
29
|
disabledLoading: Boolean
|
|
28
30
|
};
|
|
29
|
-
/** FaButton 的运行时 Emits
|
|
31
|
+
/** FaButton 的运行时 Emits 定义 */
|
|
30
32
|
const faButtonEmits = {
|
|
31
33
|
...buttonEmits,
|
|
32
34
|
/**
|
|
33
|
-
*
|
|
34
|
-
* @param
|
|
35
|
+
* 点击事件;未禁用内部加载时,调用方完成后应调用 done。
|
|
36
|
+
* @param event - 鼠标事件
|
|
37
|
+
* @param done - 完成本次交互并隐藏内部加载状态的回调
|
|
35
38
|
*/
|
|
36
39
|
click: (event, done = () => void 0) => event instanceof MouseEvent && typeof done === "function"
|
|
37
40
|
};
|
|
@@ -43,37 +46,55 @@ var button_default = defineComponent({
|
|
|
43
46
|
setup(props, { slots, emit, expose }) {
|
|
44
47
|
const buttonRef = shallowRef(null);
|
|
45
48
|
const state = reactive({ loading: false });
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
state.loading =
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
let ownsOverlay = false;
|
|
50
|
+
let disposed = false;
|
|
51
|
+
let releaseExternal;
|
|
52
|
+
let releaseManual;
|
|
53
|
+
const loadingTasks = createLoadingTasks((loading) => {
|
|
54
|
+
state.loading = loading;
|
|
55
|
+
if (loading && !ownsOverlay) {
|
|
56
|
+
useOverlay.show(0);
|
|
57
|
+
ownsOverlay = true;
|
|
58
|
+
} else if (!loading && ownsOverlay) {
|
|
59
|
+
ownsOverlay = false;
|
|
60
|
+
useOverlay.hide();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const manualLoading = computed({
|
|
64
|
+
get: () => state.loading,
|
|
65
|
+
set: (value) => {
|
|
66
|
+
if (value) releaseManual ??= loadingTasks.begin();
|
|
67
|
+
else {
|
|
68
|
+
releaseManual?.();
|
|
69
|
+
releaseManual = void 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
54
73
|
const handleLoading = async (loadingFunction) => {
|
|
55
|
-
|
|
74
|
+
if (disposed) return;
|
|
75
|
+
const done = loadingTasks.begin();
|
|
56
76
|
try {
|
|
57
77
|
await callOptionalFunction(loadingFunction);
|
|
58
78
|
} finally {
|
|
59
|
-
|
|
79
|
+
done();
|
|
60
80
|
}
|
|
61
81
|
};
|
|
62
82
|
const handleClick = (event) => {
|
|
83
|
+
if (disposed) return;
|
|
63
84
|
if (props.disabledLoading) emit("click", event);
|
|
85
|
+
else emit("click", event, loadingTasks.begin());
|
|
86
|
+
};
|
|
87
|
+
watch([() => props.loading, () => props.disabledLoading], ([loading, disabledLoading]) => {
|
|
88
|
+
if (loading && !disabledLoading) releaseExternal ??= loadingTasks.begin();
|
|
64
89
|
else {
|
|
65
|
-
|
|
66
|
-
|
|
90
|
+
releaseExternal?.();
|
|
91
|
+
releaseExternal = void 0;
|
|
67
92
|
}
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* 监听外部 loading 的值
|
|
71
|
-
*/
|
|
72
|
-
watch(() => props.loading, (newValue) => {
|
|
73
|
-
if (props.disabledLoading) return;
|
|
74
|
-
if (newValue) showLoading();
|
|
75
|
-
else hideLoading();
|
|
76
93
|
}, { immediate: true });
|
|
94
|
+
onBeforeUnmount(() => {
|
|
95
|
+
disposed = true;
|
|
96
|
+
loadingTasks.dispose();
|
|
97
|
+
});
|
|
77
98
|
const elButtonProps = useProps(props, buttonProps, ["loading"]);
|
|
78
99
|
useRender(() => createVNode(ElButton, mergeProps(elButtonProps.value, {
|
|
79
100
|
"ref": buttonRef,
|
|
@@ -86,19 +107,19 @@ var button_default = defineComponent({
|
|
|
86
107
|
...slots.icon && { icon: () => slots.icon?.() ?? [] }
|
|
87
108
|
}));
|
|
88
109
|
return useExpose(expose, {
|
|
89
|
-
/**
|
|
110
|
+
/** 按钮 html 元素 */
|
|
90
111
|
ref: computed(() => buttonRef.value?.ref),
|
|
91
|
-
/**
|
|
112
|
+
/** 按钮尺寸 */
|
|
92
113
|
size: computed(() => buttonRef.value?.size),
|
|
93
|
-
/**
|
|
114
|
+
/** 按钮类型 */
|
|
94
115
|
type: computed(() => buttonRef.value?.type),
|
|
95
|
-
/**
|
|
116
|
+
/** 按钮已禁用 */
|
|
96
117
|
disabled: computed(() => buttonRef.value?.disabled),
|
|
97
|
-
/**
|
|
118
|
+
/** 是否在两个字符之间插入空格 */
|
|
98
119
|
shouldAddSpace: computed(() => buttonRef.value?.shouldAddSpace),
|
|
99
|
-
/**
|
|
100
|
-
loading:
|
|
101
|
-
/**
|
|
120
|
+
/** 聚合加载状态;手动写入只管理手动任务,不关闭仍在执行的内部任务。 */
|
|
121
|
+
loading: manualLoading,
|
|
122
|
+
/** 执行独立的加载任务;并发调用分别完成,卸载后不再启动新任务。 */
|
|
102
123
|
doLoading: handleLoading
|
|
103
124
|
});
|
|
104
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.mjs","names":[],"sources":["../../../../src/components/button/src/button.tsx"],"sourcesContent":["import { computed, defineComponent, reactive, shallowRef,
|
|
1
|
+
{"version":3,"file":"button.mjs","names":[],"sources":["../../../../src/components/button/src/button.tsx"],"sourcesContent":["import { computed, defineComponent, onBeforeUnmount, reactive, shallowRef, watch, withModifiers } from \"vue\";\nimport { Eleme } from \"@element-plus/icons-vue\";\nimport { ElButton, buttonEmits, buttonProps } from \"element-plus\";\nimport { useOverlay } from \"../../../hooks\";\nimport { callOptionalFunction, definePropType, makeSlots, useExpose, useProps, useRender } from \"../../../utils\";\nimport { createLoadingTasks } from \"../../../utils/loading-tasks\";\nimport type { ButtonInstance } from \"element-plus\";\nimport type { Component } from \"vue\";\n\n/** FaButton 的运行时 Props 定义 */\nexport const faButtonProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...buttonProps,\n\t/**\n\t * 自定义加载图标\n\t *\n\t * 未指定时使用 `Eleme`。\n\t */\n\tloadingIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: () => Eleme,\n\t},\n\t/** 禁用加载 */\n\tdisabledLoading: Boolean,\n};\n\n/** FaButton 的运行时 Emits 定义 */\nexport const faButtonEmits = {\n\t...buttonEmits,\n\t/**\n\t * 点击事件;未禁用内部加载时,调用方完成后应调用 done。\n\t * @param event - 鼠标事件\n\t * @param done - 完成本次交互并隐藏内部加载状态的回调\n\t */\n\tclick: (event: MouseEvent, done: () => void = () => undefined) => event instanceof MouseEvent && typeof done === \"function\",\n};\n\n/** FaButton 的插槽参数 */\nexport interface FaButtonSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: never;\n\t/** 自定义加载中组件 */\n\tloading: never;\n\t/** 自定义图标组件 */\n\ticon: never;\n}\n\nexport default defineComponent({\n\tname: \"FaButton\",\n\tprops: faButtonProps,\n\temits: faButtonEmits,\n\tslots: makeSlots<FaButtonSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst buttonRef = shallowRef<ButtonInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tloading: false,\n\t\t});\n\n\t\t// 组件只持有一个遮罩,所有内部任务结束后才释放。\n\t\tlet ownsOverlay = false;\n\t\tlet disposed = false;\n\t\tlet releaseExternal: (() => void) | undefined;\n\t\tlet releaseManual: (() => void) | undefined;\n\n\t\tconst loadingTasks = createLoadingTasks((loading) => {\n\t\t\tstate.loading = loading;\n\t\t\tif (loading && !ownsOverlay) {\n\t\t\t\tuseOverlay.show(0);\n\t\t\t\townsOverlay = true;\n\t\t\t} else if (!loading && ownsOverlay) {\n\t\t\t\townsOverlay = false;\n\t\t\t\tuseOverlay.hide();\n\t\t\t}\n\t\t});\n\n\t\t// 手动关闭只释放手动任务,不能结束内部异步任务。\n\t\tconst manualLoading = computed({\n\t\t\tget: () => state.loading,\n\t\t\tset: (value: boolean) => {\n\t\t\t\tif (value) {\n\t\t\t\t\treleaseManual ??= loadingTasks.begin();\n\t\t\t\t} else {\n\t\t\t\t\treleaseManual?.();\n\t\t\t\t\treleaseManual = undefined;\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\tconst handleLoading = async (loadingFunction: () => void | Promise<void>) => {\n\t\t\tif (disposed) return;\n\t\t\tconst done = loadingTasks.begin();\n\t\t\ttry {\n\t\t\t\tawait callOptionalFunction(loadingFunction);\n\t\t\t} finally {\n\t\t\t\tdone();\n\t\t\t}\n\t\t};\n\n\t\tconst handleClick = (event: MouseEvent) => {\n\t\t\tif (disposed) return;\n\t\t\tif (props.disabledLoading) {\n\t\t\t\temit(\"click\", event);\n\t\t\t} else {\n\t\t\t\tconst done = loadingTasks.begin();\n\t\t\t\temit(\"click\", event, done);\n\t\t\t}\n\t\t};\n\n\t\t// 外部受控状态与内部任务独立;false 只能释放外部持有的 Loading。\n\t\twatch(\n\t\t\t[() => props.loading, () => props.disabledLoading],\n\t\t\t([loading, disabledLoading]) => {\n\t\t\t\tif (loading && !disabledLoading) {\n\t\t\t\t\treleaseExternal ??= loadingTasks.begin();\n\t\t\t\t} else {\n\t\t\t\t\treleaseExternal?.();\n\t\t\t\t\treleaseExternal = undefined;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t);\n\t\tonBeforeUnmount(() => {\n\t\t\tdisposed = true;\n\t\t\tloadingTasks.dispose();\n\t\t});\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elButtonProps = useProps(props, buttonProps, [\"loading\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElButton\n\t\t\t\t{...elButtonProps.value}\n\t\t\t\tref={buttonRef}\n\t\t\t\tclass=\"fa-button\"\n\t\t\t\tloading={state.loading}\n\t\t\t\tonClick={withModifiers((event: Event) => handleClick(event as MouseEvent), [\"prevent\"])}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\tdefault: () => slots.default?.(),\n\t\t\t\t\t...(slots.loading && { loading: () => slots.loading?.() ?? [] }),\n\t\t\t\t\t...(slots.icon && { icon: () => slots.icon?.() ?? [] }),\n\t\t\t\t}}\n\t\t\t</ElButton>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 按钮 html 元素 */\n\t\t\tref: computed(() => buttonRef.value?.ref),\n\t\t\t/** 按钮尺寸 */\n\t\t\tsize: computed(() => buttonRef.value?.size),\n\t\t\t/** 按钮类型 */\n\t\t\ttype: computed(() => buttonRef.value?.type),\n\t\t\t/** 按钮已禁用 */\n\t\t\tdisabled: computed(() => buttonRef.value?.disabled),\n\t\t\t/** 是否在两个字符之间插入空格 */\n\t\t\tshouldAddSpace: computed(() => buttonRef.value?.shouldAddSpace),\n\t\t\t/** 聚合加载状态;手动写入只管理手动任务,不关闭仍在执行的内部任务。 */\n\t\t\tloading: manualLoading,\n\t\t\t/** 执行独立的加载任务;并发调用分别完成,卸载后不再启动新任务。 */\n\t\t\tdoLoading: handleLoading,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;;;AAUA,MAAa,gBAAgB;CAE5B,GAAG;;;;;;CAMH,aAAa;EACZ,MAAM,eAAmC;GAAC;GAAQ;GAAQ;EAAQ,CAAC;EACnE,eAAe;CAChB;;CAEA,iBAAiB;AAClB;;AAGA,MAAa,gBAAgB;CAC5B,GAAG;;;;;;CAMH,QAAQ,OAAmB,aAAyB,KAAA,MAAc,iBAAiB,cAAc,OAAO,SAAS;AAClH;AAYA,IAAA,iBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAAyB;CAChC,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,YAAY,WAAkC,IAAI;EAExD,MAAM,QAAQ,SAAS,EACtB,SAAS,MACV,CAAC;EAGD,IAAI,cAAc;EAClB,IAAI,WAAW;EACf,IAAI;EACJ,IAAI;EAEJ,MAAM,eAAe,oBAAoB,YAAY;GACpD,MAAM,UAAU;GAChB,IAAI,WAAW,CAAC,aAAa;IAC5B,WAAW,KAAK,CAAC;IACjB,cAAc;GACf,OAAO,IAAI,CAAC,WAAW,aAAa;IACnC,cAAc;IACd,WAAW,KAAK;GACjB;EACD,CAAC;EAGD,MAAM,gBAAgB,SAAS;GAC9B,WAAW,MAAM;GACjB,MAAM,UAAmB;IACxB,IAAI,OACH,kBAAkB,aAAa,MAAM;SAC/B;KACN,gBAAgB;KAChB,gBAAgB,KAAA;IACjB;GACD;EACD,CAAC;EAED,MAAM,gBAAgB,OAAO,oBAAgD;GAC5E,IAAI,UAAU;GACd,MAAM,OAAO,aAAa,MAAM;GAChC,IAAI;IACH,MAAM,qBAAqB,eAAe;GAC3C,UAAU;IACT,KAAK;GACN;EACD;EAEA,MAAM,eAAe,UAAsB;GAC1C,IAAI,UAAU;GACd,IAAI,MAAM,iBACT,KAAK,SAAS,KAAK;QAGnB,KAAK,SAAS,OADD,aAAa,MACL,CAAI;EAE3B;EAGA,MACC,OAAO,MAAM,eAAe,MAAM,eAAe,IAChD,CAAC,SAAS,qBAAqB;GAC/B,IAAI,WAAW,CAAC,iBACf,oBAAoB,aAAa,MAAM;QACjC;IACN,kBAAkB;IAClB,kBAAkB,KAAA;GACnB;EACD,GACA,EAAE,WAAW,KAAK,CACnB;EACA,sBAAsB;GACrB,WAAW;GACX,aAAa,QAAQ;EACtB,CAAC;EAGD,MAAM,gBAAgB,SAAS,OAAO,aAAa,CAAC,SAAS,CAAC;EAE9D,gBAAU,YAAA,UAAA,WAEJ,cAAc,OAAK;GAAA,OAClB;GAAS,SAAA;GAAA,WAEL,MAAM;GAAO,WACb,eAAe,UAAiB,YAAY,KAAmB,GAAG,CAAC,SAAS,CAAC;EAAC,CAAA,GAAA;GAGtF,eAAe,MAAM,UAAU;GAC/B,GAAI,MAAM,WAAW,EAAE,eAAe,MAAM,UAAU,KAAK,CAAA,EAAG;GAC9D,GAAI,MAAM,QAAQ,EAAE,YAAY,MAAM,OAAO,KAAK,CAAA,EAAG;EAAE,CAAA,CAGzD;EAED,OAAO,UAAU,QAAQ;;GAExB,KAAK,eAAe,UAAU,OAAO,GAAG;;GAExC,MAAM,eAAe,UAAU,OAAO,IAAI;;GAE1C,MAAM,eAAe,UAAU,OAAO,IAAI;;GAE1C,UAAU,eAAe,UAAU,OAAO,QAAQ;;GAElD,gBAAgB,eAAe,UAAU,OAAO,cAAc;;GAE9D,SAAS;;GAET,WAAW;EACZ,CAAC;CACF;AACD,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
-
/**
|
|
2
|
+
/** value conversion function */
|
|
3
3
|
parser: {
|
|
4
4
|
type: import("vue").PropType<(value: string) => string>;
|
|
5
5
|
required: false;
|
|
6
6
|
validator: ((val: unknown) => boolean) | undefined;
|
|
7
7
|
__epPropKey: true;
|
|
8
8
|
};
|
|
9
|
-
/**
|
|
9
|
+
/** v-model 绑定值 */
|
|
10
10
|
modelValue: {
|
|
11
11
|
type: import("vue").PropType<string | null>;
|
|
12
12
|
default: undefined;
|
|
13
13
|
};
|
|
14
|
-
/**
|
|
14
|
+
/** placeholder */
|
|
15
15
|
placeholder: {
|
|
16
16
|
type: StringConstructor;
|
|
17
17
|
default: string;
|
|
@@ -98,24 +98,24 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
98
98
|
autofocus: BooleanConstructor;
|
|
99
99
|
rows: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<NumberConstructor, unknown, unknown, 2, boolean>;
|
|
100
100
|
}>, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
101
|
-
/**
|
|
101
|
+
/** v-model 回调 */
|
|
102
102
|
"update:modelValue": (value: string | null) => boolean;
|
|
103
|
-
/**
|
|
103
|
+
/** 改变 */
|
|
104
104
|
change: (value: string | null) => boolean;
|
|
105
105
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
106
|
-
/**
|
|
106
|
+
/** value conversion function */
|
|
107
107
|
parser: {
|
|
108
108
|
type: import("vue").PropType<(value: string) => string>;
|
|
109
109
|
required: false;
|
|
110
110
|
validator: ((val: unknown) => boolean) | undefined;
|
|
111
111
|
__epPropKey: true;
|
|
112
112
|
};
|
|
113
|
-
/**
|
|
113
|
+
/** v-model 绑定值 */
|
|
114
114
|
modelValue: {
|
|
115
115
|
type: import("vue").PropType<string | null>;
|
|
116
116
|
default: undefined;
|
|
117
117
|
};
|
|
118
|
-
/**
|
|
118
|
+
/** placeholder */
|
|
119
119
|
placeholder: {
|
|
120
120
|
type: StringConstructor;
|
|
121
121
|
default: string;
|
|
@@ -13,26 +13,26 @@ var carNumber_default = defineComponent({
|
|
|
13
13
|
name: "FaCarNumber",
|
|
14
14
|
props: {
|
|
15
15
|
...inputProps,
|
|
16
|
-
/**
|
|
16
|
+
/** value conversion function */
|
|
17
17
|
parser: {
|
|
18
18
|
...inputProps.parser,
|
|
19
19
|
type: definePropType(Function)
|
|
20
20
|
},
|
|
21
|
-
/**
|
|
21
|
+
/** v-model 绑定值 */
|
|
22
22
|
modelValue: {
|
|
23
23
|
type: definePropType(String),
|
|
24
24
|
default: void 0
|
|
25
25
|
},
|
|
26
|
-
/**
|
|
26
|
+
/** placeholder */
|
|
27
27
|
placeholder: {
|
|
28
28
|
type: String,
|
|
29
29
|
default: "请选择"
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
emits: {
|
|
33
|
-
/**
|
|
33
|
+
/** v-model 回调 */
|
|
34
34
|
"update:modelValue": (value) => typeof value === "string" || value === null,
|
|
35
|
-
/**
|
|
35
|
+
/** 改变 */
|
|
36
36
|
change: (value) => typeof value === "string" || value === null
|
|
37
37
|
},
|
|
38
38
|
setup(props, { emit }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carNumber.mjs","names":["update:modelValue"],"sources":["../../../../src/components/carNumber/src/carNumber.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, inject, reactive, shallowRef, useModel } from \"vue\";\nimport { Back } from \"@element-plus/icons-vue\";\nimport { ElButton, ElInput, ElMessage, ElPopover, formContextKey, formItemContextKey, inputProps } from \"element-plus\";\nimport { RegExps } from \"../../../constants\";\nimport { definePropType, useProps, useRender } from \"../../../utils\";\nimport { CarNumberArea, CarNumberDigit, CarNumberLetter } from \"./common\";\nimport type { PopoverInstance } from \"element-plus\";\n\nexport default defineComponent({\n\tname: \"FaCarNumber\",\n\tprops: {\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t\t...inputProps,\n\t\t/**
|
|
1
|
+
{"version":3,"file":"carNumber.mjs","names":["update:modelValue"],"sources":["../../../../src/components/carNumber/src/carNumber.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, inject, reactive, shallowRef, useModel } from \"vue\";\nimport { Back } from \"@element-plus/icons-vue\";\nimport { ElButton, ElInput, ElMessage, ElPopover, formContextKey, formItemContextKey, inputProps } from \"element-plus\";\nimport { RegExps } from \"../../../constants\";\nimport { definePropType, useProps, useRender } from \"../../../utils\";\nimport { CarNumberArea, CarNumberDigit, CarNumberLetter } from \"./common\";\nimport type { PopoverInstance } from \"element-plus\";\n\nexport default defineComponent({\n\tname: \"FaCarNumber\",\n\tprops: {\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t\t...inputProps,\n\t\t/** value conversion function */\n\t\tparser: {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 保留 Element Plus 2.x parser 的运行时约束。\n\t\t\t...inputProps.parser,\n\t\t\ttype: definePropType<(value: string) => string>(Function),\n\t\t},\n\t\t/** v-model 绑定值 */\n\t\tmodelValue: {\n\t\t\ttype: definePropType<string | null>(String),\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/** placeholder */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: \"请选择\",\n\t\t},\n\t},\n\temits: {\n\t\t/** v-model 回调 */\n\t\t\"update:modelValue\": (value: string | null) => typeof value === \"string\" || value === null,\n\t\t/** 改变 */\n\t\tchange: (value: string | null) => typeof value === \"string\" || value === null,\n\t},\n\tsetup(props, { emit }) {\n\t\tconst modelValue = useModel(props, \"modelValue\");\n\n\t\tconst popoverRef = shallowRef<PopoverInstance | null>(null);\n\t\t// 获取 el-form 组件上下文\n\t\tconst formContext = inject(formContextKey, undefined);\n\t\t// 获取 el-form-item 组件上下文\n\t\tconst formItemContext = inject(formItemContextKey, undefined);\n\n\t\tconst state = reactive({\n\t\t\tswitchLetter: computed(() => {\n\t\t\t\tif ((modelValue.value?.length ?? 0) >= 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}),\n\t\t\tdisabledButton: computed(() => {\n\t\t\t\tif ((modelValue.value?.length ?? 0) >= 8) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}),\n\t\t});\n\n\t\tconst handleInputFormatter = (value: string) => {\n\t\t\tif (value.length === 2) {\n\t\t\t\treturn `${value} ● `;\n\t\t\t} else if (value.length > 2) {\n\t\t\t\treturn `${value.slice(0, 2)} ● ${value.slice(2)}`;\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\n\t\tconst handleSelectCarNumber = (value: string) => {\n\t\t\tmodelValue.value ??= \"\";\n\t\t\tmodelValue.value += value;\n\t\t};\n\n\t\tconst handleBackClick = () => {\n\t\t\tconst value = modelValue.value ?? \"\";\n\t\t\tif (value.length === 0) return;\n\t\t\tmodelValue.value = value.substring(0, value.length - 1);\n\t\t};\n\n\t\tconst handleConfirmClick = () => {\n\t\t\tlet success = false;\n\t\t\tconst value = modelValue.value ?? \"\";\n\t\t\tif (value.length === 7) {\n\t\t\t\tsuccess = RegExps.CarNumber.test(value);\n\t\t\t} else if (value.length === 8) {\n\t\t\t\tsuccess = RegExps.NewEnergyCarNumber.test(value);\n\t\t\t}\n\t\t\tif (success) {\n\t\t\t\temit(\"change\", value);\n\t\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\t\tif (formItemContext?.prop) formContext?.validateField([formItemContext.prop]);\n\t\t\t} else {\n\t\t\t\tif (formItemContext?.prop && formContext) {\n\t\t\t\t\temit(\"change\", value);\n\t\t\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\t\t\tformContext.validateField([formItemContext.prop]);\n\t\t\t\t} else {\n\t\t\t\t\tElMessage.error(\"车牌号格式不正确\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tpopoverRef.value?.hide();\n\t\t};\n\n\t\tconst handleClearClick = () => {\n\t\t\tmodelValue.value = null;\n\t\t\temit(\"change\", null);\n\t\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\t\tif (formItemContext?.prop) formContext?.validateField([formItemContext.prop]);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elInputProps = useProps(props, inputProps, [\"modelValue\", \"readonly\", \"formatter\"]);\n\n\t\tuseRender(() => (\n\t\t\t<ElPopover\n\t\t\t\tref={popoverRef}\n\t\t\t\twidth=\"auto\"\n\t\t\t\tpopperClass=\"fa-car-number__popover\"\n\t\t\t\ttrigger=\"click\"\n\t\t\t\tshowArrow={false}\n\t\t\t\tshowAfter={0}\n\t\t\t\thideAfter={0}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\treference: () => (\n\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t{...elInputProps.value}\n\t\t\t\t\t\t\tclass=\"fa-car-number__input\"\n\t\t\t\t\t\t\tvModel={modelValue.value}\n\t\t\t\t\t\t\treadonly\n\t\t\t\t\t\t\tformatter={handleInputFormatter}\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<div class={[\"fa-car-number__popover__area\", state.switchLetter ? \"fa-car-number__popover__hide\" : \"\"]}>\n\t\t\t\t\t\t\t\t{CarNumberArea.map((area) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(area)}>\n\t\t\t\t\t\t\t\t\t\t{area}\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</div>\n\t\t\t\t\t\t\t<div class={[\"fa-car-number__popover__digit-letter\", state.switchLetter ? \"\" : \"fa-car-number__popover__hide\"]}>\n\t\t\t\t\t\t\t\t{CarNumberDigit.map((digit) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(digit)}>\n\t\t\t\t\t\t\t\t\t\t{digit}\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{CarNumberLetter.map((letter) => (\n\t\t\t\t\t\t\t\t\t<ElButton disabled={state.disabledButton} onClick={() => handleSelectCarNumber(letter)}>\n\t\t\t\t\t\t\t\t\t\t{letter}\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</div>\n\t\t\t\t\t\t\t<div class=\"fa-car-number__popover__btn\">\n\t\t\t\t\t\t\t\t<ElButton class=\"fa-car-number__popover__btn__clear\" disabled={!modelValue.value} onClick={handleClearClick}>\n\t\t\t\t\t\t\t\t\t清除\n\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__back\"\n\t\t\t\t\t\t\t\t\ttype=\"danger\"\n\t\t\t\t\t\t\t\t\ticon={Back}\n\t\t\t\t\t\t\t\t\tdisabled={!modelValue.value}\n\t\t\t\t\t\t\t\t\tonClick={handleBackClick}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\tclass=\"fa-car-number__popover__btn__confirm\"\n\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\tdisabled={!modelValue.value || modelValue.value.length < 7}\n\t\t\t\t\t\t\t\t\tonClick={handleConfirmClick}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t确认\n\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t}}\n\t\t\t</ElPopover>\n\t\t));\n\t},\n});\n"],"mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type { FaContextMenuData } from "./contextMenu.type";
|
|
2
2
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
-
/**
|
|
3
|
+
/** 数据 */
|
|
4
4
|
data: {
|
|
5
5
|
type: import("vue").PropType<FaContextMenuData<any>[]>;
|
|
6
6
|
default: () => never[];
|
|
7
7
|
};
|
|
8
8
|
}>, {
|
|
9
|
-
/**
|
|
9
|
+
/** 是否显示 */
|
|
10
10
|
visible: import("vue").Ref<boolean, boolean>;
|
|
11
|
-
/**
|
|
11
|
+
/** 打开菜单 */
|
|
12
12
|
open: (axis?: {
|
|
13
13
|
x: number;
|
|
14
14
|
y: number;
|
|
15
15
|
}) => void;
|
|
16
|
-
/**
|
|
16
|
+
/** 关闭菜单 */
|
|
17
17
|
close: () => void;
|
|
18
18
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
19
|
-
/**
|
|
19
|
+
/** 点击事件 */
|
|
20
20
|
click: (event: MouseEvent, data: FaContextMenuData | null) => boolean;
|
|
21
21
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
22
|
-
/**
|
|
22
|
+
/** 数据 */
|
|
23
23
|
data: {
|
|
24
24
|
type: import("vue").PropType<FaContextMenuData<any>[]>;
|
|
25
25
|
default: () => never[];
|
|
@@ -8,13 +8,13 @@ import { useGlobalSize } from "element-plus";
|
|
|
8
8
|
var contextMenu_default = defineComponent({
|
|
9
9
|
name: "FaContextMenu",
|
|
10
10
|
props: {
|
|
11
|
-
/**
|
|
11
|
+
/** 数据 */
|
|
12
12
|
data: {
|
|
13
13
|
type: definePropType(Array),
|
|
14
14
|
default: () => []
|
|
15
15
|
} },
|
|
16
16
|
emits: {
|
|
17
|
-
/**
|
|
17
|
+
/** 点击事件 */
|
|
18
18
|
click: (event, data) => event instanceof MouseEvent && typeof data === "object" && data !== null },
|
|
19
19
|
setup(props, { emit, expose }) {
|
|
20
20
|
const globalSize = useGlobalSize();
|
|
@@ -65,11 +65,11 @@ click: (event, data) => event instanceof MouseEvent && typeof data === "object"
|
|
|
65
65
|
}
|
|
66
66
|
}, [item.icon ? createVNode(FaIcon, { "name": item.icon }, null) : null, createVNode("span", null, [item.label])]))])]), [[vShow, state.visible]])] }));
|
|
67
67
|
return useExpose(expose, {
|
|
68
|
-
/**
|
|
68
|
+
/** 是否显示 */
|
|
69
69
|
visible: toRef(state, "visible"),
|
|
70
|
-
/**
|
|
70
|
+
/** 打开菜单 */
|
|
71
71
|
open,
|
|
72
|
-
/**
|
|
72
|
+
/** 关闭菜单 */
|
|
73
73
|
close
|
|
74
74
|
});
|
|
75
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextMenu.mjs","names":[],"sources":["../../../../src/components/contextMenu/src/contextMenu.tsx"],"sourcesContent":["import { Transition, defineComponent, onBeforeUnmount, onMounted, reactive, toRef } from \"vue\";\nimport { useGlobalSize } from \"element-plus\";\nimport { definePropType, useExpose, useRender } from \"../../../utils\";\nimport { FaIcon } from \"../../icon\";\nimport type { FaContextMenuData } from \"./contextMenu.type\";\n\nexport default defineComponent({\n\tname: \"FaContextMenu\",\n\tprops: {\n\t\t/**
|
|
1
|
+
{"version":3,"file":"contextMenu.mjs","names":[],"sources":["../../../../src/components/contextMenu/src/contextMenu.tsx"],"sourcesContent":["import { Transition, defineComponent, onBeforeUnmount, onMounted, reactive, toRef } from \"vue\";\nimport { useGlobalSize } from \"element-plus\";\nimport { definePropType, useExpose, useRender } from \"../../../utils\";\nimport { FaIcon } from \"../../icon\";\nimport type { FaContextMenuData } from \"./contextMenu.type\";\n\nexport default defineComponent({\n\tname: \"FaContextMenu\",\n\tprops: {\n\t\t/** 数据 */\n\t\tdata: {\n\t\t\ttype: definePropType<FaContextMenuData[]>(Array),\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\temits: {\n\t\t/** 点击事件 */\n\t\tclick: (event: MouseEvent, data: FaContextMenuData | null) => event instanceof MouseEvent && typeof data === \"object\" && data !== null,\n\t},\n\tsetup(props, { emit, expose }) {\n\t\tconst globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvisible: false,\n\t\t\taxis: {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t},\n\t\t});\n\n\t\tconst handleClick = (event: MouseEvent, data: FaContextMenuData | null) => {\n\t\t\tif (data?.disabled) return;\n\t\t\tdata?.click?.(event, data);\n\t\t\temit(\"click\", event, data);\n\t\t};\n\n\t\tconst open = (axis: { x: number; y: number } = { x: 0, y: 0 }) => {\n\t\t\tstate.axis = axis;\n\t\t\tstate.visible = true;\n\t\t};\n\n\t\tconst close = () => {\n\t\t\tstate.visible = false;\n\t\t};\n\n\t\tonMounted(() => {\n\t\t\tdocument.addEventListener(\"click\", close);\n\t\t});\n\n\t\tonBeforeUnmount(() => {\n\t\t\tdocument.removeEventListener(\"click\", close);\n\t\t});\n\n\t\tuseRender(() => (\n\t\t\t<Transition name=\"el-zoom-in-top\">\n\t\t\t\t<div\n\t\t\t\t\tclass={[\"fa-context-menu\", `fa-context-menu-${globalSize.value}`, \"el-popper el-dropdown__popper\"]}\n\t\t\t\t\tstyle={{ top: `${state.axis.y + 5}px`, left: `${state.axis.x + 14}px` }}\n\t\t\t\t\tvShow={state.visible}\n\t\t\t\t\tkey={Math.random()}\n\t\t\t\t>\n\t\t\t\t\t<ul class=\"el-dropdown-menu\">\n\t\t\t\t\t\t{props.data\n\t\t\t\t\t\t\t.filter((f) => !f.hide)\n\t\t\t\t\t\t\t.map((item) => (\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tclass={[\"el-dropdown-menu__item\", item.disabled === true ? \"is-disabled\" : \"\"]}\n\t\t\t\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\t\t\t\tonClick={(event: MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\thandleClick(event, item);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.icon ? <FaIcon name={item.icon} /> : null}\n\t\t\t\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</Transition>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 是否显示 */\n\t\t\tvisible: toRef(state, \"visible\"),\n\t\t\t/** 打开菜单 */\n\t\t\topen,\n\t\t\t/** 关闭菜单 */\n\t\t\tclose,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;AAMA,IAAA,sBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;;AAEN,MAAM;EACL,MAAM,eAAoC,KAAK;EAC/C,eAAe,CAAA;CAChB,EACD;CACA,OAAO;;AAEN,QAAQ,OAAmB,SAAmC,iBAAiB,cAAc,OAAO,SAAS,YAAY,SAAS,KACnI;CACA,MAAM,OAAO,EAAE,MAAM,UAAU;EAC9B,MAAM,aAAa,cAAc;EAEjC,MAAM,QAAQ,SAAS;GACtB,SAAS;GACT,MAAM;IACL,GAAG;IACH,GAAG;GACJ;EACD,CAAC;EAED,MAAM,eAAe,OAAmB,SAAmC;GAC1E,IAAI,MAAM,UAAU;GACpB,MAAM,QAAQ,OAAO,IAAI;GACzB,KAAK,SAAS,OAAO,IAAI;EAC1B;EAEA,MAAM,QAAQ,OAAiC;GAAE,GAAG;GAAG,GAAG;EAAE,MAAM;GACjE,MAAM,OAAO;GACb,MAAM,UAAU;EACjB;EAEA,MAAM,cAAc;GACnB,MAAM,UAAU;EACjB;EAEA,gBAAgB;GACf,SAAS,iBAAiB,SAAS,KAAK;EACzC,CAAC;EAED,sBAAsB;GACrB,SAAS,oBAAoB,SAAS,KAAK;EAC5C,CAAC;EAED,gBAAU,YAAA,YAAA,EAAA,QAAA,iBAAA,GAAA,EAAA,eAAA,CAAA,eAAA,YAAA,OAAA;GAAA,SAGA;IAAC;IAAmB,mBAAmB,WAAW;IAAS;GAA+B;GAAC,SAC3F;IAAE,KAAK,GAAG,MAAM,KAAK,IAAI,EAAC;IAAM,MAAM,GAAG,MAAM,KAAK,IAAI,GAAE;GAAK;GAAC,OAElE,KAAK,OAAO;EAAC,GAAA,CAAA,YAAA,MAAA,EAAA,SAAA,mBAAA,GAAA,CAGhB,MAAM,KACL,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,CACtB,KAAK,SAAI,YAAA,MAAA;GAAA,SAED,CAAC,0BAA0B,KAAK,aAAa,OAAO,gBAAgB,EAAE;GAAC,YAAA;GAAA,YAEpE,UAAsB;IAC/B,YAAY,OAAO,IAAI;GACxB;EAAC,GAAA,CAEA,KAAK,OAAI,YAAA,QAAA,EAAA,QAAiB,KAAK,KAAI,GAAA,IAAA,IAAO,MAAI,YAAA,QAAA,MAAA,CACxC,KAAK,KAAK,CAAA,CAAA,CAAA,CAElB,CAAC,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,OAjBG,MAAM,OAAO,CAAA,CAAA,CAAA,EAAA,CAAA,CAqBtB;EAED,OAAO,UAAU,QAAQ;;GAExB,SAAS,MAAM,OAAO,SAAS;;GAE/B;;GAEA;EACD,CAAC;CACF;AACD,CAAC"}
|