chore: export some types (#8309)

This commit is contained in:
neverland
2021-03-08 17:14:55 +08:00
committed by GitHub
parent ae40d40c24
commit 8bae9ca0ed
23 changed files with 68 additions and 26 deletions
+15 -9
View File
@@ -9,9 +9,9 @@ import {
isOversize,
filterFiles,
isImageFile,
FileListItem,
readFileContent,
UploaderResultType,
UploaderFileListItem,
} from './utils';
// Composables
@@ -38,7 +38,7 @@ export type UploaderBeforeRead = (
) => PromiseOrNot<File | File[] | undefined>;
export type UploaderAfterRead = (
items: FileListItem | FileListItem[],
items: UploaderFileListItem | UploaderFileListItem[],
detail: {
name: string | number;
index: number;
@@ -68,7 +68,7 @@ export default defineComponent({
default: 'image/*',
},
modelValue: {
type: Array as PropType<FileListItem[]>,
type: Array as PropType<UploaderFileListItem[]>,
default: () => [],
},
maxSize: {
@@ -131,7 +131,9 @@ export default defineComponent({
}
};
const onAfterRead = (items: FileListItem | FileListItem[]) => {
const onAfterRead = (
items: UploaderFileListItem | UploaderFileListItem[]
) => {
resetInput();
if (isOversize(items, props.maxSize)) {
@@ -170,7 +172,11 @@ export default defineComponent({
files.map((file) => readFileContent(file, resultType))
).then((contents) => {
const fileList = (files as File[]).map((file, index) => {
const result: FileListItem = { file, status: '', message: '' };
const result: UploaderFileListItem = {
file,
status: '',
message: '',
};
if (contents[index]) {
result.content = contents[index] as string;
@@ -183,7 +189,7 @@ export default defineComponent({
});
} else {
readFileContent(files, resultType).then((content) => {
const result: FileListItem = {
const result: UploaderFileListItem = {
file: files as File,
status: '',
message: '',
@@ -237,7 +243,7 @@ export default defineComponent({
const onClosePreview = () => emit('close-preview');
const previewImage = (item: FileListItem) => {
const previewImage = (item: UploaderFileListItem) => {
if (props.previewFullImage) {
const imageFiles = props.modelValue.filter(isImageFile);
const images = imageFiles
@@ -259,7 +265,7 @@ export default defineComponent({
}
};
const deleteFile = (item: FileListItem, index: number) => {
const deleteFile = (item: UploaderFileListItem, index: number) => {
const fileList = props.modelValue.slice(0);
fileList.splice(index, 1);
@@ -267,7 +273,7 @@ export default defineComponent({
emit('delete', item, getDetail(index));
};
const renderPreviewItem = (item: FileListItem, index: number) => {
const renderPreviewItem = (item: UploaderFileListItem, index: number) => {
const needPickData = [
'imageFit',
'deletable',
+2 -2
View File
@@ -1,7 +1,7 @@
import { PropType, defineComponent } from 'vue';
// Utils
import { bem, isImageFile, FileListItem } from './utils';
import { bem, isImageFile, UploaderFileListItem } from './utils';
import { isDef, getSizeStyle } from '../utils';
import { callInterceptor, Interceptor } from '../utils/interceptor';
@@ -20,7 +20,7 @@ export default defineComponent({
previewSize: [Number, String],
beforeDelete: Function as PropType<Interceptor>,
item: {
type: Object as PropType<FileListItem>,
type: Object as PropType<UploaderFileListItem>,
required: true,
},
},
+4 -4
View File
@@ -56,7 +56,7 @@
<script lang="ts">
import { reactive, toRefs } from 'vue';
import { useTranslate } from '@demo/use-translate';
import { FileListItem } from '../utils';
import { UploaderFileListItem } from '../utils';
import Toast from '../../toast';
const i18n = {
@@ -155,11 +155,11 @@ export default {
return true;
};
const afterRead = (file: FileListItem, detail: unknown) => {
const afterRead = (file: UploaderFileListItem, detail: unknown) => {
console.log(file, detail);
};
const afterReadFailed = (item: FileListItem) => {
const afterReadFailed = (item: UploaderFileListItem) => {
item.status = 'uploading';
item.message = t('uploading');
@@ -169,7 +169,7 @@ export default {
}, 1000);
};
const onOversize = (file: FileListItem, detail: unknown) => {
const onOversize = (file: UploaderFileListItem, detail: unknown) => {
console.log(file, detail);
Toast(t('overSizeTip'));
};
+1
View File
@@ -5,3 +5,4 @@ const Uploader = withInstall<typeof _Uploader>(_Uploader);
export default Uploader;
export { Uploader };
export type { UploaderResultType, UploaderFileListItem } from './utils';
+9 -6
View File
@@ -8,7 +8,7 @@ export { name, bem };
export type UploaderResultType = 'dataUrl' | 'text' | 'file';
export type FileListItem = {
export type UploaderFileListItem = {
url?: string;
file?: File;
content?: string;
@@ -51,15 +51,18 @@ export function readFileContent(file: File, resultType: UploaderResultType) {
}
export function isOversize(
items: FileListItem | FileListItem[],
items: UploaderFileListItem | UploaderFileListItem[],
maxSize: number | string
): boolean {
return toArray(items).some((item) => item.file && item.file.size > maxSize);
}
export function filterFiles(items: FileListItem[], maxSize: number | string) {
const valid: FileListItem[] = [];
const invalid: FileListItem[] = [];
export function filterFiles(
items: UploaderFileListItem[],
maxSize: number | string
) {
const valid: UploaderFileListItem[] = [];
const invalid: UploaderFileListItem[] = [];
items.forEach((item) => {
if (item.file && item.file.size > maxSize) {
@@ -78,7 +81,7 @@ export function isImageUrl(url: string): boolean {
return IMAGE_REGEXP.test(url);
}
export function isImageFile(item: FileListItem): boolean {
export function isImageFile(item: UploaderFileListItem): boolean {
// some special urls cannot be recognized
// user can add `isImage` flag to mark it as an image url
if (item.isImage) {