fast-element-plus 2.0.17 → 2.0.18
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 +7 -0
- package/CONTRIBUTING.md +8 -0
- package/dist/component.d.ts +10 -16
- package/dist/components/avatar/src/avatar.d.ts +4 -4
- package/dist/components/image/src/image.d.ts +1 -1
- package/dist/components/table/src/tableColumn.d.ts +6 -6
- package/dist/components/uploadImage/src/uploadImage.d.ts +3 -15
- package/dist/components/uploadImage/src/uploadImage.mjs +0 -5
- package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
- package/dist/index.global.min.js +4 -4
- package/dist/index.global.min.js.map +1 -1
- package/dist/utils/async/index.mjs.map +1 -1
- package/dist/utils/date/index.mjs.map +1 -1
- package/dist/utils/object/index.d.ts +28 -6
- package/dist/utils/object/index.mjs +142 -96
- package/dist/utils/object/index.mjs.map +1 -1
- package/dist/utils/string/index.mjs.map +1 -1
- package/dist/utils/vue/emits.mjs.map +1 -1
- package/dist/utils/vue/install.mjs.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Fast.Element.Plus are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [2.0.18] - 2026-09-15
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Disabled drag-and-drop upload by default for `FaUploadImage`; callers can still enable it with `drag`.
|
|
10
|
+
|
|
5
11
|
## [2.0.17] - 2026-09-12
|
|
6
12
|
|
|
7
13
|
### Changed
|
|
@@ -191,6 +197,7 @@ All notable changes to Fast.Element.Plus are documented in this file.
|
|
|
191
197
|
- Scoped Table styles and added responsive IconSelector styling.
|
|
192
198
|
- Improved dialogs, drawers, tables, forms, trees, selectors, car-number input, images, and uploads for dark mode, touch input, and narrow viewports.
|
|
193
199
|
|
|
200
|
+
[2.0.18]: https://gitee.com/FastDotnet/fast.element.plus/releases/tag/v2.0.18
|
|
194
201
|
[2.0.17]: https://gitee.com/FastDotnet/fast.element.plus/releases/tag/v2.0.17
|
|
195
202
|
[2.0.16]: https://gitee.com/FastDotnet/fast.element.plus/releases/tag/v2.0.16
|
|
196
203
|
[2.0.15]: https://gitee.com/FastDotnet/fast.element.plus/releases/tag/v2.0.15
|
package/CONTRIBUTING.md
CHANGED
|
@@ -57,6 +57,14 @@ pnpm format:check
|
|
|
57
57
|
pnpm --config.ignore-scripts=true pack --dry-run
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
## Documentation review
|
|
61
|
+
|
|
62
|
+
Use one release flow: change code → update the package version → review and synchronize affected documentation → update the reviewed documentation version → run tests and the documentation build.
|
|
63
|
+
|
|
64
|
+
The single reviewed documentation version is `docReviewVersion` in the frontmatter of `docs/index.md`. It means the documentation has been checked against that package version; it is not the version in which a component or property was introduced. Before updating it, compare the release changes with source and verify the affected Props, Events, Slots, Exposes, `v-model` contracts, defaults, types, behavior, and examples. Update the field after the review even when no documentation text needs to change. If the change scope is uncertain, widen the review instead of assuming that no documentation update is required.
|
|
65
|
+
|
|
66
|
+
`pnpm test:docs` checks the package/documentation version match, public component API-page coverage, required API references, and Markdown example paths. These stable checks do not prove that every semantic description or example is correct, so never update only `docReviewVersion` to make the test pass.
|
|
67
|
+
|
|
60
68
|
## Dependencies
|
|
61
69
|
|
|
62
70
|
Development tools use reviewed caret ranges and are resolved exactly by `pnpm-lock.yaml`. Before changing a dependency:
|
package/dist/component.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** 默认安装器注册的全部 Fast.Element.Plus 组件。 */
|
|
2
2
|
declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
3
|
fit: {
|
|
4
|
-
type: import("vue").PropType<"
|
|
4
|
+
type: import("vue").PropType<"fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down">;
|
|
5
5
|
default: string;
|
|
6
6
|
};
|
|
7
7
|
icon: {
|
|
@@ -34,7 +34,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
34
34
|
error: (evt: Event) => boolean;
|
|
35
35
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
36
36
|
fit: {
|
|
37
|
-
type: import("vue").PropType<"
|
|
37
|
+
type: import("vue").PropType<"fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down">;
|
|
38
38
|
default: string;
|
|
39
39
|
};
|
|
40
40
|
icon: {
|
|
@@ -65,7 +65,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
65
65
|
onError?: ((evt: Event) => any) | undefined;
|
|
66
66
|
}>, {
|
|
67
67
|
small: boolean;
|
|
68
|
-
fit: "
|
|
68
|
+
fit: "fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down";
|
|
69
69
|
icon: string | import("vue").Component;
|
|
70
70
|
base64: boolean;
|
|
71
71
|
original: boolean;
|
|
@@ -1705,7 +1705,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
1705
1705
|
onShow?: (() => any) | undefined;
|
|
1706
1706
|
}>, {
|
|
1707
1707
|
small: boolean;
|
|
1708
|
-
fit: import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "
|
|
1708
|
+
fit: import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "fill" | "cover" | "none" | "contain" | "scale-down", unknown>;
|
|
1709
1709
|
base64: boolean;
|
|
1710
1710
|
original: boolean;
|
|
1711
1711
|
normal: boolean;
|
|
@@ -2846,7 +2846,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
2846
2846
|
};
|
|
2847
2847
|
renderHeader: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["renderHeader"]>;
|
|
2848
2848
|
sortable: {
|
|
2849
|
-
type: (
|
|
2849
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
2850
2850
|
default: boolean;
|
|
2851
2851
|
};
|
|
2852
2852
|
sortMethod: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["sortMethod"]>;
|
|
@@ -2861,7 +2861,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
2861
2861
|
default: undefined;
|
|
2862
2862
|
};
|
|
2863
2863
|
tooltipFormatter: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["tooltipFormatter"]>;
|
|
2864
|
-
fixed: (
|
|
2864
|
+
fixed: (StringConstructor | BooleanConstructor)[];
|
|
2865
2865
|
formatter: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["formatter"]>;
|
|
2866
2866
|
selectable: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["selectable"]>;
|
|
2867
2867
|
reserveSelection: BooleanConstructor;
|
|
@@ -2969,7 +2969,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
2969
2969
|
};
|
|
2970
2970
|
renderHeader: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["renderHeader"]>;
|
|
2971
2971
|
sortable: {
|
|
2972
|
-
type: (
|
|
2972
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
2973
2973
|
default: boolean;
|
|
2974
2974
|
};
|
|
2975
2975
|
sortMethod: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["sortMethod"]>;
|
|
@@ -2984,7 +2984,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
2984
2984
|
default: undefined;
|
|
2985
2985
|
};
|
|
2986
2986
|
tooltipFormatter: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["tooltipFormatter"]>;
|
|
2987
|
-
fixed: (
|
|
2987
|
+
fixed: (StringConstructor | BooleanConstructor)[];
|
|
2988
2988
|
formatter: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["formatter"]>;
|
|
2989
2989
|
selectable: import("vue").PropType<import("element-plus").TableColumnCtx<import("./components").DefaultRow>["selectable"]>;
|
|
2990
2990
|
reserveSelection: BooleanConstructor;
|
|
@@ -5914,10 +5914,6 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
5914
5914
|
directory: boolean;
|
|
5915
5915
|
maxSize: string | number;
|
|
5916
5916
|
}, import("./utils").TypedSlotsDeclaration<import("./components").FaUploadSlots>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>> | import("./utils").TSXWithInstall<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
5917
|
-
drag: {
|
|
5918
|
-
type: BooleanConstructor;
|
|
5919
|
-
default: boolean;
|
|
5920
|
-
};
|
|
5921
5917
|
accept: {
|
|
5922
5918
|
type: StringConstructor;
|
|
5923
5919
|
default: () => string;
|
|
@@ -6046,6 +6042,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
6046
6042
|
method: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
|
|
6047
6043
|
data: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (((new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>))) | null)[], unknown, unknown, () => import("element-plus/es/utils/typescript.mjs").Mutable<{}>, boolean>;
|
|
6048
6044
|
name: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
|
|
6045
|
+
drag: BooleanConstructor;
|
|
6049
6046
|
withCredentials: BooleanConstructor;
|
|
6050
6047
|
fileList: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus").UploadUserFile[]) | (() => import("element-plus").UploadUserFile[]) | (((new (...args: any[]) => import("element-plus").UploadUserFile[]) | (() => import("element-plus").UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
|
|
6051
6048
|
autoUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
@@ -6075,10 +6072,6 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
6075
6072
|
"update:modelValue": (value: string | null) => boolean;
|
|
6076
6073
|
"update:fileList": (value: import("element-plus").UploadUserFile[]) => boolean;
|
|
6077
6074
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
6078
|
-
drag: {
|
|
6079
|
-
type: BooleanConstructor;
|
|
6080
|
-
default: boolean;
|
|
6081
|
-
};
|
|
6082
6075
|
accept: {
|
|
6083
6076
|
type: StringConstructor;
|
|
6084
6077
|
default: () => string;
|
|
@@ -6207,6 +6200,7 @@ declare const _default: (import("./utils").TSXWithInstall<import("vue").DefineCo
|
|
|
6207
6200
|
method: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
|
|
6208
6201
|
data: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (((new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>))) | null)[], unknown, unknown, () => import("element-plus/es/utils/typescript.mjs").Mutable<{}>, boolean>;
|
|
6209
6202
|
name: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
|
|
6203
|
+
drag: BooleanConstructor;
|
|
6210
6204
|
withCredentials: BooleanConstructor;
|
|
6211
6205
|
fileList: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus").UploadUserFile[]) | (() => import("element-plus").UploadUserFile[]) | (((new (...args: any[]) => import("element-plus").UploadUserFile[]) | (() => import("element-plus").UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
|
|
6212
6206
|
autoUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
@@ -3,7 +3,7 @@ import type { Component } from "vue";
|
|
|
3
3
|
export declare const faAvatarProps: {
|
|
4
4
|
/** @description set how the image fit its container for an image avatar. */
|
|
5
5
|
fit: {
|
|
6
|
-
type: import("vue").PropType<"
|
|
6
|
+
type: import("vue").PropType<"fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down">;
|
|
7
7
|
default: string;
|
|
8
8
|
};
|
|
9
9
|
/** @description representation type to icon, more info on icon component. */
|
|
@@ -51,7 +51,7 @@ export interface FaAvatarSlots extends Record<string, unknown> {
|
|
|
51
51
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
52
52
|
/** @description set how the image fit its container for an image avatar. */
|
|
53
53
|
fit: {
|
|
54
|
-
type: import("vue").PropType<"
|
|
54
|
+
type: import("vue").PropType<"fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down">;
|
|
55
55
|
default: string;
|
|
56
56
|
};
|
|
57
57
|
/** @description representation type to icon, more info on icon component. */
|
|
@@ -92,7 +92,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
92
92
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
93
93
|
/** @description set how the image fit its container for an image avatar. */
|
|
94
94
|
fit: {
|
|
95
|
-
type: import("vue").PropType<"
|
|
95
|
+
type: import("vue").PropType<"fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down">;
|
|
96
96
|
default: string;
|
|
97
97
|
};
|
|
98
98
|
/** @description representation type to icon, more info on icon component. */
|
|
@@ -129,7 +129,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
129
129
|
onError?: ((evt: Event) => any) | undefined;
|
|
130
130
|
}>, {
|
|
131
131
|
small: boolean;
|
|
132
|
-
fit: "
|
|
132
|
+
fit: "fill" | "cover" | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "none" | "contain" | "scale-down";
|
|
133
133
|
icon: string | Component;
|
|
134
134
|
base64: boolean;
|
|
135
135
|
original: boolean;
|
|
@@ -254,7 +254,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
254
254
|
onShow?: (() => any) | undefined;
|
|
255
255
|
}>, {
|
|
256
256
|
small: boolean;
|
|
257
|
-
fit: import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "
|
|
257
|
+
fit: import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "fill" | "cover" | "none" | "contain" | "scale-down", unknown>;
|
|
258
258
|
base64: boolean;
|
|
259
259
|
original: boolean;
|
|
260
260
|
normal: boolean;
|
|
@@ -53,7 +53,7 @@ export declare const tableColumnProps: {
|
|
|
53
53
|
* @description whether column can be sorted. Remote sorting can be done by setting this attribute to 'custom' and listening to the `sort-change` event of Table
|
|
54
54
|
*/
|
|
55
55
|
sortable: {
|
|
56
|
-
type: (
|
|
56
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
57
57
|
default: boolean;
|
|
58
58
|
};
|
|
59
59
|
/**
|
|
@@ -95,7 +95,7 @@ export declare const tableColumnProps: {
|
|
|
95
95
|
/**
|
|
96
96
|
* @description whether column is fixed at left / right. Will be fixed at left if `true`
|
|
97
97
|
*/
|
|
98
|
-
fixed: (
|
|
98
|
+
fixed: (StringConstructor | BooleanConstructor)[];
|
|
99
99
|
/**
|
|
100
100
|
* @description function that formats cell content
|
|
101
101
|
*/
|
|
@@ -314,7 +314,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
314
314
|
* @description whether column can be sorted. Remote sorting can be done by setting this attribute to 'custom' and listening to the `sort-change` event of Table
|
|
315
315
|
*/
|
|
316
316
|
sortable: {
|
|
317
|
-
type: (
|
|
317
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
318
318
|
default: boolean;
|
|
319
319
|
};
|
|
320
320
|
/**
|
|
@@ -348,7 +348,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
348
348
|
/**
|
|
349
349
|
* @description whether column is fixed at left / right. Will be fixed at left if `true`
|
|
350
350
|
*/
|
|
351
|
-
fixed: (
|
|
351
|
+
fixed: (StringConstructor | BooleanConstructor)[];
|
|
352
352
|
/**
|
|
353
353
|
* @description function that formats cell content
|
|
354
354
|
*/
|
|
@@ -544,7 +544,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
544
544
|
* @description whether column can be sorted. Remote sorting can be done by setting this attribute to 'custom' and listening to the `sort-change` event of Table
|
|
545
545
|
*/
|
|
546
546
|
sortable: {
|
|
547
|
-
type: (
|
|
547
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
548
548
|
default: boolean;
|
|
549
549
|
};
|
|
550
550
|
/**
|
|
@@ -578,7 +578,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
578
578
|
/**
|
|
579
579
|
* @description whether column is fixed at left / right. Will be fixed at left if `true`
|
|
580
580
|
*/
|
|
581
|
-
fixed: (
|
|
581
|
+
fixed: (StringConstructor | BooleanConstructor)[];
|
|
582
582
|
/**
|
|
583
583
|
* @description function that formats cell content
|
|
584
584
|
*/
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import type { UploadFile, UploadUserFile } from "element-plus";
|
|
2
2
|
/** FaUploadImage 的运行时 Props 定义。 */
|
|
3
3
|
export declare const faUploadImageProps: {
|
|
4
|
-
/** @description whether to activate drag and drop mode */
|
|
5
|
-
drag: {
|
|
6
|
-
type: BooleanConstructor;
|
|
7
|
-
default: boolean;
|
|
8
|
-
};
|
|
9
4
|
/** @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */
|
|
10
5
|
accept: {
|
|
11
6
|
type: StringConstructor;
|
|
@@ -144,6 +139,7 @@ export declare const faUploadImageProps: {
|
|
|
144
139
|
method: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
|
|
145
140
|
data: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (((new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>))) | null)[], unknown, unknown, () => import("element-plus/es/utils/typescript.mjs").Mutable<{}>, boolean>;
|
|
146
141
|
name: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
|
|
142
|
+
drag: BooleanConstructor;
|
|
147
143
|
withCredentials: BooleanConstructor;
|
|
148
144
|
fileList: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | (((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
|
|
149
145
|
autoUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
@@ -173,11 +169,6 @@ export interface FaUploadImageSlots extends Record<string, unknown> {
|
|
|
173
169
|
default: never;
|
|
174
170
|
}
|
|
175
171
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
176
|
-
/** @description whether to activate drag and drop mode */
|
|
177
|
-
drag: {
|
|
178
|
-
type: BooleanConstructor;
|
|
179
|
-
default: boolean;
|
|
180
|
-
};
|
|
181
172
|
/** @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */
|
|
182
173
|
accept: {
|
|
183
174
|
type: StringConstructor;
|
|
@@ -316,6 +307,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
316
307
|
method: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
|
|
317
308
|
data: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (((new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>))) | null)[], unknown, unknown, () => import("element-plus/es/utils/typescript.mjs").Mutable<{}>, boolean>;
|
|
318
309
|
name: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
|
|
310
|
+
drag: BooleanConstructor;
|
|
319
311
|
withCredentials: BooleanConstructor;
|
|
320
312
|
fileList: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | (((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
|
|
321
313
|
autoUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
@@ -356,11 +348,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
356
348
|
/** @description v-model:fileList 回调 */
|
|
357
349
|
"update:fileList": (value: UploadUserFile[]) => boolean;
|
|
358
350
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
359
|
-
/** @description whether to activate drag and drop mode */
|
|
360
|
-
drag: {
|
|
361
|
-
type: BooleanConstructor;
|
|
362
|
-
default: boolean;
|
|
363
|
-
};
|
|
364
351
|
/** @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */
|
|
365
352
|
accept: {
|
|
366
353
|
type: StringConstructor;
|
|
@@ -499,6 +486,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
499
486
|
method: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
|
|
500
487
|
data: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (((new (...args: any[]) => import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>> | Promise<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>)) | (() => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus/es/utils/typescript.mjs").Mutable<Record<string, any>>> | ((rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.mjs").Awaitable<import("element-plus").UploadData>))) | null)[], unknown, unknown, () => import("element-plus/es/utils/typescript.mjs").Mutable<{}>, boolean>;
|
|
501
488
|
name: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
|
|
489
|
+
drag: BooleanConstructor;
|
|
502
490
|
withCredentials: BooleanConstructor;
|
|
503
491
|
fileList: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | (((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
|
|
504
492
|
autoUpload: import("element-plus/es/utils/vue/props/types.mjs").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
@@ -14,11 +14,6 @@ import { ElIcon, ElImageViewer, ElUpload, uploadProps } from "element-plus";
|
|
|
14
14
|
/** FaUploadImage 的运行时 Props 定义。 */
|
|
15
15
|
const faUploadImageProps = {
|
|
16
16
|
...uploadProps,
|
|
17
|
-
/** @description whether to activate drag and drop mode */
|
|
18
|
-
drag: {
|
|
19
|
-
type: Boolean,
|
|
20
|
-
default: true
|
|
21
|
-
},
|
|
22
17
|
/** @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */
|
|
23
18
|
accept: {
|
|
24
19
|
type: String,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadImage.mjs","names":["update:modelValue","update:fileList"],"sources":["../../../../src/components/uploadImage/src/uploadImage.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, reactive, shallowRef, withModifiers } from \"vue\";\nimport { Delete, Edit, UploadFilled, ZoomIn } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElImageViewer, ElUpload, uploadProps } from \"element-plus\";\nimport { FaMimeType } from \"../../../constants\";\nimport { addCssUnit, definePropType, makeSlots, randomString, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport { useUpload } from \"../../upload/src/useUpload\";\nimport type { UploadFile, UploadInstance, UploadProps, UploadUserFile } from \"element-plus\";\n\n/** FaUploadImage 的运行时 Props 定义。 */\nexport const faUploadImageProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...uploadProps,\n\t/** @description whether to activate drag and drop mode */\n\tdrag: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */\n\taccept: {\n\t\ttype: String,\n\t\tdefault: () => FaMimeType.Image,\n\t},\n\t/** @description type of file list */\n\tlistType: {\n\t\ttype: definePropType<NonNullable<UploadProps[\"listType\"]>>(String),\n\t\tdefault: \"picture\",\n\t},\n\t/** @description whether uploading multiple files is permitted */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t\tvalidator: (value: boolean) => {\n\t\t\tif (value) {\n\t\t\t\tconsole.warn(\"[Fast:FaUploadImage]\", \"'multiple' 属性固定为 false,外部设置不会生效。\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t},\n\t/** @description whether to show the uploaded file list */\n\tshowFileList: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: definePropType<string | null>(String),\n\t/** @description 大小限制,单位kb */\n\tmaxSize: {\n\t\ttype: [String, Number],\n\t\tdefault: 2048,\n\t},\n\t/** @description 图片上传接口,优先级最高 */\n\tuploadApi: {\n\t\ttype: definePropType<(formData: FormData) => Promise<string>>(Function),\n\t},\n\t/** @description 图片上传地址 */\n\tuploadUrl: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n\t/** @description 高度 */\n\theight: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n};\n\n/** FaUploadImage 的运行时 Emits 定义。 */\nexport const faUploadImageEmits = {\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | null) => typeof value === \"string\" || value === null,\n\t/** @description v-model:fileList 回调 */\n\t\"update:fileList\": (value: UploadUserFile[]) => Array.isArray(value),\n};\n\n/** FaUploadImage 的插槽参数。 */\nexport interface FaUploadImageSlots extends Record<string, unknown> {\n\t/** @description 默认内容插槽 */\n\tdefault: never;\n}\n\nexport default defineComponent({\n\tname: \"FaUploadImage\",\n\tprops: faUploadImageProps,\n\temits: faUploadImageEmits,\n\tslots: makeSlots<FaUploadImageSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst {\n\t\t\tfileList,\n\t\t\tloading,\n\t\t\tformContext,\n\t\t\tmaxSizeMB,\n\t\t\thandleHttpRequest,\n\t\t\thandleOnSuccess,\n\t\t\thandleOnError,\n\t\t\thandleOnRemove,\n\t\t\thandleOnExceed,\n\t\t\thandleOnUpload,\n\t\t\thandleOnChange,\n\t\t} = useUpload<string>(\"FaUploadImage\", \"图片\", props, emit, {\n\t\t\tget maxSize() {\n\t\t\t\treturn props.maxSize;\n\t\t\t},\n\t\t\tget uploadApi() {\n\t\t\t\treturn props.uploadApi;\n\t\t\t},\n\t\t\tget uploadUrl() {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要与 Element Plus 2.x 的运行时默认 action 比较。\n\t\t\t\treturn props.uploadUrl || (props.action === uploadProps.action.default ? undefined : props.action);\n\t\t\t},\n\t\t});\n\n\t\tconst uploadRef = shallowRef<UploadInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tuploadKey: `fa-upload-image__${randomString(8)}`,\n\t\t\tpreview: false,\n\t\t\tpreviewList: withDefineType<string[]>([]),\n\t\t});\n\n\t\tconst disabled = computed(() => {\n\t\t\treturn props.disabled === true || formContext?.disabled === true;\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要识别 Element Plus 2.x 注入的默认请求实现。\n\t\tconst httpRequest = computed(() => (props.httpRequest === uploadProps.httpRequest.default ? handleHttpRequest : props.httpRequest));\n\n\t\tconst handleEdit = () => {\n\t\t\tconst uploadInputEl = document.querySelector(`.${state.uploadKey} .el-upload__input`);\n\t\t\tuploadInputEl?.dispatchEvent(new MouseEvent(\"click\"));\n\t\t};\n\n\t\tconst handlePreview = () => {\n\t\t\tconst fileUrl = fileList.value[0]?.url;\n\t\t\tif (!fileUrl) return;\n\t\t\tstate.previewList = [fileUrl];\n\t\t\tstate.preview = true;\n\t\t};\n\n\t\tconst handleRemove = () => {\n\t\t\tconst file = fileList.value[0];\n\t\t\tif (file) uploadRef.value?.handleRemove(file as UploadFile);\n\t\t};\n\n\t\tconst handleBeforeUpload: UploadProps[\"beforeUpload\"] = (rawFile) => {\n\t\t\tif (!handleOnUpload(rawFile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn props.beforeUpload(rawFile);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elUploadProps = useProps(props, uploadProps, [\n\t\t\t\"fileList\",\n\t\t\t\"disabled\",\n\t\t\t\"httpRequest\",\n\t\t\t\"beforeUpload\",\n\t\t\t\"onExceed\",\n\t\t\t\"onSuccess\",\n\t\t\t\"onError\",\n\t\t\t\"onRemove\",\n\t\t\t\"onChange\",\n\t\t]);\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t<ElUpload\n\t\t\t\t\t{...elUploadProps.value}\n\t\t\t\t\tref={uploadRef}\n\t\t\t\t\tclass={[\"fa-upload-image\", state.uploadKey]}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"--width\": addCssUnit(props.width),\n\t\t\t\t\t\t\"--height\": addCssUnit(props.height),\n\t\t\t\t\t}}\n\t\t\t\t\tvLoading={loading.value}\n\t\t\t\t\tvModel:fileList={fileList.value}\n\t\t\t\t\tmultiple={false}\n\t\t\t\t\tdisabled={disabled.value}\n\t\t\t\t\thttpRequest={httpRequest.value}\n\t\t\t\t\tbeforeUpload={handleBeforeUpload}\n\t\t\t\t\tonExceed={handleOnExceed}\n\t\t\t\t\tonSuccess={handleOnSuccess}\n\t\t\t\t\tonError={handleOnError}\n\t\t\t\t\tonRemove={handleOnRemove}\n\t\t\t\t\tonChange={handleOnChange}\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\tfileList.value.length > 0 ? (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<img class=\"el-upload-list__item-thumbnail\" src={fileList.value[0]?.url} />\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclass=\"el-upload-list__item-actions\"\n\t\t\t\t\t\t\t\t\t\tonClick={withModifiers(() => {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}, [\"stop\"])}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handlePreview} title=\"查看\">\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<ZoomIn />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{!disabled.value && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleEdit} title=\"编辑\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Edit />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleRemove} title=\"删除\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Delete />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t) : slots.default ? (\n\t\t\t\t\t\t\t\tslots.default()\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElIcon class=\"el-icon--upload\">\n\t\t\t\t\t\t\t\t\t\t<UploadFilled />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t<div class=\"el-upload__text\">\n\t\t\t\t\t\t\t\t\t\tDrop file here <br />\n\t\t\t\t\t\t\t\t\t\t<em>click to upload</em>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\ttip: () => <div class=\"el-upload__tip\">file with a size less than {maxSizeMB.value.toString()}MB</div>,\n\t\t\t\t\t}}\n\t\t\t\t</ElUpload>\n\t\t\t\t{state.preview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tonClose={() => (state.preview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 取消上传请求 */\n\t\t\tabort: computed(() => uploadRef.value?.abort),\n\t\t\t/** @description 手动上传文件列表 */\n\t\t\tsubmit: computed(() => uploadRef.value?.submit),\n\t\t\t/** @description 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */\n\t\t\tclearFiles: computed(() => uploadRef.value?.clearFiles),\n\t\t\t/** @description 手动选择文件 */\n\t\t\thandleStart: computed(() => uploadRef.value?.handleStart),\n\t\t\t/** @description 手动移除文件。file 和 rawFile 已被合并。 */\n\t\t\thandleRemove: computed(() => uploadRef.value?.handleRemove),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading,\n\t\t\t/** @description 文件集合 */\n\t\t\tfileList,\n\t\t\t/** @description 预览 */\n\t\t\tpreview: computed(() => state.preview),\n\t\t\t/** @description 预览集合 */\n\t\t\tpreviewList: computed(() => state.previewList),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uploadImage.mjs","names":["update:modelValue","update:fileList"],"sources":["../../../../src/components/uploadImage/src/uploadImage.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, reactive, shallowRef, withModifiers } from \"vue\";\nimport { Delete, Edit, UploadFilled, ZoomIn } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElImageViewer, ElUpload, uploadProps } from \"element-plus\";\nimport { FaMimeType } from \"../../../constants\";\nimport { addCssUnit, definePropType, makeSlots, randomString, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport { useUpload } from \"../../upload/src/useUpload\";\nimport type { UploadFile, UploadInstance, UploadProps, UploadUserFile } from \"element-plus\";\n\n/** FaUploadImage 的运行时 Props 定义。 */\nexport const faUploadImageProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...uploadProps,\n\t/** @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */\n\taccept: {\n\t\ttype: String,\n\t\tdefault: () => FaMimeType.Image,\n\t},\n\t/** @description type of file list */\n\tlistType: {\n\t\ttype: definePropType<NonNullable<UploadProps[\"listType\"]>>(String),\n\t\tdefault: \"picture\",\n\t},\n\t/** @description whether uploading multiple files is permitted */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t\tvalidator: (value: boolean) => {\n\t\t\tif (value) {\n\t\t\t\tconsole.warn(\"[Fast:FaUploadImage]\", \"'multiple' 属性固定为 false,外部设置不会生效。\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t},\n\t/** @description whether to show the uploaded file list */\n\tshowFileList: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: definePropType<string | null>(String),\n\t/** @description 大小限制,单位kb */\n\tmaxSize: {\n\t\ttype: [String, Number],\n\t\tdefault: 2048,\n\t},\n\t/** @description 图片上传接口,优先级最高 */\n\tuploadApi: {\n\t\ttype: definePropType<(formData: FormData) => Promise<string>>(Function),\n\t},\n\t/** @description 图片上传地址 */\n\tuploadUrl: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n\t/** @description 高度 */\n\theight: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n};\n\n/** FaUploadImage 的运行时 Emits 定义。 */\nexport const faUploadImageEmits = {\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | null) => typeof value === \"string\" || value === null,\n\t/** @description v-model:fileList 回调 */\n\t\"update:fileList\": (value: UploadUserFile[]) => Array.isArray(value),\n};\n\n/** FaUploadImage 的插槽参数。 */\nexport interface FaUploadImageSlots extends Record<string, unknown> {\n\t/** @description 默认内容插槽 */\n\tdefault: never;\n}\n\nexport default defineComponent({\n\tname: \"FaUploadImage\",\n\tprops: faUploadImageProps,\n\temits: faUploadImageEmits,\n\tslots: makeSlots<FaUploadImageSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst {\n\t\t\tfileList,\n\t\t\tloading,\n\t\t\tformContext,\n\t\t\tmaxSizeMB,\n\t\t\thandleHttpRequest,\n\t\t\thandleOnSuccess,\n\t\t\thandleOnError,\n\t\t\thandleOnRemove,\n\t\t\thandleOnExceed,\n\t\t\thandleOnUpload,\n\t\t\thandleOnChange,\n\t\t} = useUpload<string>(\"FaUploadImage\", \"图片\", props, emit, {\n\t\t\tget maxSize() {\n\t\t\t\treturn props.maxSize;\n\t\t\t},\n\t\t\tget uploadApi() {\n\t\t\t\treturn props.uploadApi;\n\t\t\t},\n\t\t\tget uploadUrl() {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要与 Element Plus 2.x 的运行时默认 action 比较。\n\t\t\t\treturn props.uploadUrl || (props.action === uploadProps.action.default ? undefined : props.action);\n\t\t\t},\n\t\t});\n\n\t\tconst uploadRef = shallowRef<UploadInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tuploadKey: `fa-upload-image__${randomString(8)}`,\n\t\t\tpreview: false,\n\t\t\tpreviewList: withDefineType<string[]>([]),\n\t\t});\n\n\t\tconst disabled = computed(() => {\n\t\t\treturn props.disabled === true || formContext?.disabled === true;\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要识别 Element Plus 2.x 注入的默认请求实现。\n\t\tconst httpRequest = computed(() => (props.httpRequest === uploadProps.httpRequest.default ? handleHttpRequest : props.httpRequest));\n\n\t\tconst handleEdit = () => {\n\t\t\tconst uploadInputEl = document.querySelector(`.${state.uploadKey} .el-upload__input`);\n\t\t\tuploadInputEl?.dispatchEvent(new MouseEvent(\"click\"));\n\t\t};\n\n\t\tconst handlePreview = () => {\n\t\t\tconst fileUrl = fileList.value[0]?.url;\n\t\t\tif (!fileUrl) return;\n\t\t\tstate.previewList = [fileUrl];\n\t\t\tstate.preview = true;\n\t\t};\n\n\t\tconst handleRemove = () => {\n\t\t\tconst file = fileList.value[0];\n\t\t\tif (file) uploadRef.value?.handleRemove(file as UploadFile);\n\t\t};\n\n\t\tconst handleBeforeUpload: UploadProps[\"beforeUpload\"] = (rawFile) => {\n\t\t\tif (!handleOnUpload(rawFile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn props.beforeUpload(rawFile);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elUploadProps = useProps(props, uploadProps, [\n\t\t\t\"fileList\",\n\t\t\t\"disabled\",\n\t\t\t\"httpRequest\",\n\t\t\t\"beforeUpload\",\n\t\t\t\"onExceed\",\n\t\t\t\"onSuccess\",\n\t\t\t\"onError\",\n\t\t\t\"onRemove\",\n\t\t\t\"onChange\",\n\t\t]);\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t<ElUpload\n\t\t\t\t\t{...elUploadProps.value}\n\t\t\t\t\tref={uploadRef}\n\t\t\t\t\tclass={[\"fa-upload-image\", state.uploadKey]}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"--width\": addCssUnit(props.width),\n\t\t\t\t\t\t\"--height\": addCssUnit(props.height),\n\t\t\t\t\t}}\n\t\t\t\t\tvLoading={loading.value}\n\t\t\t\t\tvModel:fileList={fileList.value}\n\t\t\t\t\tmultiple={false}\n\t\t\t\t\tdisabled={disabled.value}\n\t\t\t\t\thttpRequest={httpRequest.value}\n\t\t\t\t\tbeforeUpload={handleBeforeUpload}\n\t\t\t\t\tonExceed={handleOnExceed}\n\t\t\t\t\tonSuccess={handleOnSuccess}\n\t\t\t\t\tonError={handleOnError}\n\t\t\t\t\tonRemove={handleOnRemove}\n\t\t\t\t\tonChange={handleOnChange}\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\tfileList.value.length > 0 ? (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<img class=\"el-upload-list__item-thumbnail\" src={fileList.value[0]?.url} />\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclass=\"el-upload-list__item-actions\"\n\t\t\t\t\t\t\t\t\t\tonClick={withModifiers(() => {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}, [\"stop\"])}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handlePreview} title=\"查看\">\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<ZoomIn />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{!disabled.value && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleEdit} title=\"编辑\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Edit />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleRemove} title=\"删除\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Delete />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t) : slots.default ? (\n\t\t\t\t\t\t\t\tslots.default()\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElIcon class=\"el-icon--upload\">\n\t\t\t\t\t\t\t\t\t\t<UploadFilled />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t<div class=\"el-upload__text\">\n\t\t\t\t\t\t\t\t\t\tDrop file here <br />\n\t\t\t\t\t\t\t\t\t\t<em>click to upload</em>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\ttip: () => <div class=\"el-upload__tip\">file with a size less than {maxSizeMB.value.toString()}MB</div>,\n\t\t\t\t\t}}\n\t\t\t\t</ElUpload>\n\t\t\t\t{state.preview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tonClose={() => (state.preview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 取消上传请求 */\n\t\t\tabort: computed(() => uploadRef.value?.abort),\n\t\t\t/** @description 手动上传文件列表 */\n\t\t\tsubmit: computed(() => uploadRef.value?.submit),\n\t\t\t/** @description 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */\n\t\t\tclearFiles: computed(() => uploadRef.value?.clearFiles),\n\t\t\t/** @description 手动选择文件 */\n\t\t\thandleStart: computed(() => uploadRef.value?.handleStart),\n\t\t\t/** @description 手动移除文件。file 和 rawFile 已被合并。 */\n\t\t\thandleRemove: computed(() => uploadRef.value?.handleRemove),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading,\n\t\t\t/** @description 文件集合 */\n\t\t\tfileList,\n\t\t\t/** @description 预览 */\n\t\t\tpreview: computed(() => state.preview),\n\t\t\t/** @description 预览集合 */\n\t\t\tpreviewList: computed(() => state.previewList),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|