sard-uniapp
Version:
sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
91 lines (90 loc) • 2.87 kB
TypeScript
import { type StyleValue } from 'vue';
import { type DefaultProps } from '../config';
export type UploadStatus = 'pending' | 'uploading' | 'failed' | 'done';
export interface UploadFile {
type: 'image' | 'video';
size: number;
path: string;
duration: number;
width: number;
height: number;
name: string;
}
export interface UploadFileItem {
file?: UploadFile;
url?: string;
isImage?: boolean;
isVideo?: boolean;
status?: UploadStatus;
name?: string;
message?: string;
[key: PropertyKey]: any;
}
export interface UploadSelectOptions {
sourceType?: ('album' | 'camera')[];
}
export interface UploadProps {
rootStyle?: StyleValue;
rootClass?: string;
accept?: 'image' | 'video' | ('image' | 'video')[];
multiple?: boolean;
sourceType?: ('album' | 'camera')[];
sizeType?: ('original' | 'compressed')[];
maxDuration?: number;
camera?: 'back' | 'front';
modelValue?: UploadFileItem[];
maxCount?: number;
maxSize?: number | ((file: UploadFile) => boolean);
overSize?: (fileItem: UploadFileItem[]) => void;
disabled?: boolean;
readonly?: boolean;
beforeChoose?: (fileList: UploadFileItem[], next: (allowed: boolean | UploadSelectOptions) => void) => void;
beforeRead?: (file: UploadFile) => boolean | Promise<UploadFile>;
afterRead?: (fileItem: UploadFileItem) => void;
removable?: boolean;
beforeRemove?: (index: number, fileItem: UploadFileItem) => boolean | Promise<void>;
validateEvent?: boolean;
}
export declare const defaultUploadProps: () => DefaultProps<UploadProps>;
export interface UploadSlots {
default?(props: {
list: UploadFileItem[];
onSelect: () => void;
onRemove: (index: number, item: UploadFileItem) => void;
onImageClick: (index: number) => void;
}): any;
select?(props: Record<string, never>): any;
}
export interface UploadEmits {
(e: 'update:model-value', value: UploadFileItem[]): void;
(e: 'change', value: UploadFileItem[]): void;
(e: 'remove', index: number, item: UploadFileItem): void;
(e: 'item-click', item: UploadFileItem, index: number): void;
}
export interface UploadExpose {
select: () => void;
}
export interface ChainNode {
(data: any, next: (...args: any[]) => void): void;
}
export interface UploadPreviewProps {
rootStyle?: StyleValue;
rootClass?: string;
file?: UploadFile;
url?: string;
isImage?: boolean;
isVideo?: boolean;
status?: UploadStatus;
name?: string;
message?: string;
removable?: boolean;
index: number;
disabled?: boolean;
readonly?: boolean;
}
export declare const defaultUploadPreviewProps: () => DefaultProps<UploadPreviewProps>;
export interface UploadPreviewEmits {
(e: 'image-click'): void;
(e: 'remove'): void;
(e: 'click'): void;
}