import { SemanticClassNamesType, SemanticStylesType } from "../_util/hooks/useMergeSemantic.js"; import "../_util/hooks/index.js"; import { ProgressAriaProps, ProgressProps } from "../progress/progress.js"; import "../progress/index.js"; import { CSSProperties, ImgHTMLAttributes, VNodeChild } from "vue"; import { AcceptConfig, UploadRequestOption, VcFile as VcFile$1 } from "@v-c/upload"; //#region src/upload/interface.d.ts type UploadFileStatus = 'error' | 'done' | 'uploading' | 'removed'; interface HttpRequestHeader { [key: string]: string; } interface VcFile extends VcFile$1 { readonly lastModifiedDate: Date; } interface UploadFile extends ProgressAriaProps { uid: string; size?: number; name: string; fileName?: string; lastModified?: number; lastModifiedDate?: Date; url?: string; status?: UploadFileStatus; percent?: number; thumbUrl?: string; crossorigin?: ImgHTMLAttributes['crossorigin']; originFileObj?: VcFile; response?: T; error?: any; linkProps?: any; type?: string; xhr?: T; preview?: string; } interface InternalUploadFile extends UploadFile { originFileObj: VcFile; } interface UploadChangeParam { file: T; fileList: T[]; event?: { percent: number; }; } interface ShowUploadListInterface { extra?: VNodeChild | ((file: UploadFile) => VNodeChild); showRemoveIcon?: boolean | ((file: UploadFile) => boolean); showPreviewIcon?: boolean | ((file: UploadFile) => boolean); showDownloadIcon?: boolean | ((file: UploadFile) => boolean); removeIcon?: VNodeChild | ((file: UploadFile) => VNodeChild); downloadIcon?: VNodeChild | ((file: UploadFile) => VNodeChild); previewIcon?: VNodeChild | ((file: UploadFile) => VNodeChild); } interface UploadLocale { uploading?: string; removeFile?: string; downloadFile?: string; uploadError?: string; previewFile?: string; } type UploadType = 'drag' | 'select'; type UploadListType = 'text' | 'picture' | 'picture-card' | 'picture-circle'; type UploadListProgressProps = Omit; type ItemRender = (originNode: VNodeChild, file: UploadFile, fileList: Array>, actions: { download: () => void; preview: () => void; remove: () => void; }) => VNodeChild; type PreviewFileHandler = (file: File | Blob) => PromiseLike; type BeforeUploadValueType = void | boolean | string | Blob | File; type UploadSemanticName = keyof UploadSemanticClassNames & keyof UploadSemanticStyles; interface UploadSemanticClassNames { root?: string; list?: string; item?: string; trigger?: string; } interface UploadSemanticStyles { root?: CSSProperties; list?: CSSProperties; item?: CSSProperties; trigger?: CSSProperties; } type UploadClassNamesType = SemanticClassNamesType, UploadSemanticClassNames>; type UploadStylesType = SemanticStylesType, UploadSemanticStyles>; interface UploadProps { type?: UploadType; name?: string; defaultFileList?: Array>; fileList?: Array>; action?: string | ((file: VcFile) => string) | ((file: VcFile) => PromiseLike); directory?: boolean; data?: Record | ((file: UploadFile) => Record | Promise>); method?: 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch'; headers?: HttpRequestHeader; showUploadList?: boolean | ShowUploadListInterface; multiple?: boolean; accept?: string | AcceptConfig; beforeUpload?: (file: VcFile, fileList: VcFile[]) => BeforeUploadValueType | Promise; listType?: UploadListType; classes?: UploadClassNamesType; styles?: UploadStylesType; rootClass?: string; supportServerRender?: boolean; disabled?: boolean; prefixCls?: string; customRequest?: (options: UploadRequestOption, info: { /** * @since 5.28.0 */ defaultRequest: (option: UploadRequestOption) => void; }) => void; withCredentials?: boolean; openFileDialogOnClick?: boolean; locale?: UploadLocale; id?: string; previewFile?: PreviewFileHandler; iconRender?: (file: UploadFile, listType?: UploadListType) => VNodeChild; isImageUrl?: (file: UploadFile) => boolean; progress?: UploadListProgressProps; itemRender?: ItemRender; /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */ maxCount?: number; onRemove?: (file: UploadFile) => void | boolean | Promise; onPreview?: (file: UploadFile) => void; onDownload?: (file: UploadFile) => void; capture?: string | boolean; hasControlInside?: boolean; pastable?: boolean; } interface UploadEmits { 'change': (info: UploadChangeParam>) => void; 'drop': (event: DragEvent) => void; 'update:fileList': (fileList: UploadFile[]) => void; } interface UploadSlots { default?: () => any; iconRender?: (props: { file: UploadFile; listType?: UploadListType; }) => VNodeChild; itemRender?: (props: { originNode: VNodeChild; file: UploadFile; fileList: Array>; actions: { download: () => void; preview: () => void; remove: () => void; }; }) => VNodeChild; } interface UploadState { fileList: UploadFile[]; dragState: string; } interface UploadListProps { classes?: UploadClassNamesType; styles?: UploadStylesType; listType?: UploadListType; items?: Array>; progress?: UploadListProgressProps; prefixCls?: string; showRemoveIcon?: boolean | ((file: UploadFile) => boolean); showDownloadIcon?: boolean | ((file: UploadFile) => boolean); showPreviewIcon?: boolean | ((file: UploadFile) => boolean); removeIcon?: VNodeChild | ((file: UploadFile) => VNodeChild); downloadIcon?: VNodeChild | ((file: UploadFile) => VNodeChild); previewIcon?: VNodeChild | ((file: UploadFile) => VNodeChild); extra?: VNodeChild | ((file: UploadFile) => VNodeChild); locale: UploadLocale; previewFile?: PreviewFileHandler; iconRender?: (file: UploadFile, listType?: UploadListType) => VNodeChild; isImageUrl?: (file: UploadFile) => boolean; appendAction?: any; appendActionVisible?: boolean; itemRender?: ItemRender; /** * @internal Only the internal remove button is provided for use */ disabled?: boolean; onRemove?: (file: UploadFile) => void | boolean; onPreview?: (file: UploadFile) => void; onDownload?: (file: UploadFile) => void; } interface UploadListEmits {} interface UploadListSlots { iconRender?: (props: { file: UploadFile; listType?: UploadListType; }) => VNodeChild; itemRender?: (props: { originNode: VNodeChild; file: UploadFile; fileList: Array>; actions: { download: () => void; preview: () => void; remove: () => void; }; }) => VNodeChild; removeIcon?: (props: { file: UploadFile; }) => VNodeChild; downloadIcon?: (props: { file: UploadFile; }) => VNodeChild; previewIcon?: (props: { file: UploadFile; }) => VNodeChild; } //#endregion export { HttpRequestHeader, InternalUploadFile, ItemRender, ShowUploadListInterface, UploadChangeParam, UploadClassNamesType, UploadEmits, UploadFile, UploadFileStatus, UploadListEmits, UploadListProgressProps, UploadListProps, UploadListSlots, UploadListType, UploadLocale, UploadProps, UploadSemanticClassNames, UploadSemanticName, UploadSemanticStyles, UploadSlots, UploadState, UploadStylesType, UploadType, VcFile };