@finema/core 1.4.132 → 1.4.133
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/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -67,14 +67,10 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
69
|
<!-- Success State -->
|
|
70
|
-
<div v-if="
|
|
70
|
+
<div v-if="value" :class="[ui.onPreview.wrapper]">
|
|
71
71
|
<div :class="[ui.onPreview.previewImgWrapper]">
|
|
72
|
-
<div v-if="
|
|
73
|
-
<img
|
|
74
|
-
:src="upload.data.value[responseURL || 'url']"
|
|
75
|
-
:class="[ui.onPreview.previewImgClass]"
|
|
76
|
-
alt="img-preview"
|
|
77
|
-
/>
|
|
72
|
+
<div v-if="isImageFromPath(value.path)" class="size-full overflow-hidden">
|
|
73
|
+
<img :src="value.url" :class="[ui.onPreview.previewImgClass]" alt="img-preview" />
|
|
78
74
|
</div>
|
|
79
75
|
<div v-else>
|
|
80
76
|
<Icon
|
|
@@ -85,18 +81,18 @@
|
|
|
85
81
|
</div>
|
|
86
82
|
<div :class="[ui.onPreview.textWrapper]">
|
|
87
83
|
<div class="truncate">
|
|
88
|
-
<h1 class="truncate font-bold">{{
|
|
84
|
+
<h1 class="truncate font-bold">{{ value.name }}</h1>
|
|
89
85
|
<p class="truncate text-sm font-light text-gray-400">
|
|
90
86
|
{{
|
|
91
|
-
|
|
87
|
+
fileAllocateFromPath.isSelectedFileUseMb.value
|
|
92
88
|
? `${fileAllocate.selectedFileSizeMb.value} MB`
|
|
93
|
-
: `${
|
|
89
|
+
: `${fileAllocateFromPath.selectedFileSizeKb.value} KB`
|
|
94
90
|
}}
|
|
95
91
|
</p>
|
|
96
92
|
</div>
|
|
97
93
|
<div :class="[ui.action.wrapper]">
|
|
98
94
|
<Icon
|
|
99
|
-
v-if="
|
|
95
|
+
v-if="isImageFromPath(value.path)"
|
|
100
96
|
:name="ui.action.previewIcon"
|
|
101
97
|
:class="[ui.action.iconClass]"
|
|
102
98
|
title="ดูตัวอย่าง"
|
|
@@ -114,8 +110,8 @@
|
|
|
114
110
|
title="ลบไฟล์"
|
|
115
111
|
@click="handleDeleteFile"
|
|
116
112
|
/>
|
|
117
|
-
<Modal v-model="isPreviewOpen" :title="
|
|
118
|
-
<img :src="
|
|
113
|
+
<Modal v-model="isPreviewOpen" :title="value.name">
|
|
114
|
+
<img :src="value.url" alt="img-preview" />
|
|
119
115
|
</Modal>
|
|
120
116
|
</div>
|
|
121
117
|
</div>
|
|
@@ -173,6 +169,8 @@ import {
|
|
|
173
169
|
downloadFileFromURL,
|
|
174
170
|
useFileAllocate,
|
|
175
171
|
useFileProgress,
|
|
172
|
+
isImageFromPath,
|
|
173
|
+
useFileAllocateFromPath,
|
|
176
174
|
} from '#core/helpers/componentHelper'
|
|
177
175
|
import FieldWrapper from '#core/components/Form/FieldWrapper.vue'
|
|
178
176
|
import { useFieldHOC } from '#core/composables/useForm'
|
|
@@ -223,6 +221,7 @@ const isPreviewOpen = ref<boolean>(false)
|
|
|
223
221
|
|
|
224
222
|
const { onUploadProgress, onDownloadProgress, percent } = useFileProgress()
|
|
225
223
|
const fileAllocate = useFileAllocate(selectedFile, props)
|
|
224
|
+
const fileAllocateFromPath = useFileAllocateFromPath(value, props)
|
|
226
225
|
|
|
227
226
|
const onDrop = (files: File[] | null) => {
|
|
228
227
|
if (props.isDisabled || files?.length === 0 || !files) return
|
|
@@ -306,7 +305,7 @@ const handleCheckFileCondition = (file: File | undefined): boolean => {
|
|
|
306
305
|
}
|
|
307
306
|
|
|
308
307
|
const handleDownloadFile = () => {
|
|
309
|
-
downloadFileFromURL(
|
|
308
|
+
downloadFileFromURL(value.value?.url, value.value?.name)
|
|
310
309
|
}
|
|
311
310
|
|
|
312
311
|
const handleRetryUpload = () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Ref } from 'vue';
|
|
2
|
+
import type { IFileValue } from '#core/components/Form/types';
|
|
2
3
|
export declare const checkMaxSize: (file: File, acceptFileSize?: number) => boolean;
|
|
3
4
|
export declare const checkFileType: (file: File, acceptFileType: string | string[]) => boolean;
|
|
4
5
|
export declare const generateURL: (file: File) => string;
|
|
@@ -16,6 +17,18 @@ export declare const useFileAllocate: (selectedFile: Ref<File | undefined | null
|
|
|
16
17
|
isAcceptFileUseMb: any;
|
|
17
18
|
acceptFile: any;
|
|
18
19
|
};
|
|
20
|
+
export declare const useFileAllocateFromPath: (file: Ref<IFileValue | undefined | null>, props: {
|
|
21
|
+
accept?: string | string[];
|
|
22
|
+
maxSize?: number;
|
|
23
|
+
}) => {
|
|
24
|
+
selectedFileSizeKb: any;
|
|
25
|
+
selectedFileSizeMb: any;
|
|
26
|
+
isSelectedFileUseMb: any;
|
|
27
|
+
acceptFileSizeKb: any;
|
|
28
|
+
acceptFileSizeMb: any;
|
|
29
|
+
isAcceptFileUseMb: any;
|
|
30
|
+
acceptFile: any;
|
|
31
|
+
};
|
|
19
32
|
export declare const useFileSize: (size?: number) => {
|
|
20
33
|
isSelectedFileUseMb: any;
|
|
21
34
|
selectedFileSizeKb: any;
|
|
@@ -65,6 +65,26 @@ export const useFileAllocate = (selectedFile, props) => {
|
|
|
65
65
|
acceptFile
|
|
66
66
|
};
|
|
67
67
|
};
|
|
68
|
+
export const useFileAllocateFromPath = (file, props) => {
|
|
69
|
+
const selectedFileSizeKb = computed(() => ((file.value?.size || 0) / 1e3).toFixed(2));
|
|
70
|
+
const selectedFileSizeMb = computed(() => ((file.value?.size || 0) / 1e3 / 1e3).toFixed(2));
|
|
71
|
+
const isSelectedFileUseMb = computed(() => (file.value?.size || 0) / 1e3 > 1024);
|
|
72
|
+
const acceptFileSizeKb = computed(() => props.maxSize || 0);
|
|
73
|
+
const acceptFileSizeMb = computed(() => ((acceptFileSizeKb.value || 0) / 1024).toFixed(2));
|
|
74
|
+
const isAcceptFileUseMb = computed(() => acceptFileSizeKb.value && acceptFileSizeKb.value > 1024);
|
|
75
|
+
const acceptFile = computed(
|
|
76
|
+
() => typeof props.accept === "string" ? props.accept : props.accept?.join(",")
|
|
77
|
+
);
|
|
78
|
+
return {
|
|
79
|
+
selectedFileSizeKb,
|
|
80
|
+
selectedFileSizeMb,
|
|
81
|
+
isSelectedFileUseMb,
|
|
82
|
+
acceptFileSizeKb,
|
|
83
|
+
acceptFileSizeMb,
|
|
84
|
+
isAcceptFileUseMb,
|
|
85
|
+
acceptFile
|
|
86
|
+
};
|
|
87
|
+
};
|
|
68
88
|
export const useFileSize = (size = 0) => {
|
|
69
89
|
const isSelectedFileUseMb = computed(() => size / 1e3 > 1024);
|
|
70
90
|
const selectedFileSizeKb = computed(() => (size / 1e3).toFixed(2));
|