117 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
import type { ExtractPropTypes, PropType } from 'vue';
 | 
						|
import { tuple } from '../_util/type';
 | 
						|
import PropsTypes from '../_util/vue-types';
 | 
						|
 | 
						|
export const UploadFileStatus = PropsTypes.oneOf(
 | 
						|
  tuple('error', 'success', 'done', 'uploading', 'removed'),
 | 
						|
);
 | 
						|
 | 
						|
export interface HttpRequestHeader {
 | 
						|
  [key: string]: string;
 | 
						|
}
 | 
						|
 | 
						|
export interface VcFile extends File {
 | 
						|
  uid: string;
 | 
						|
  readonly lastModifiedDate: Date;
 | 
						|
  readonly webkitRelativePath: string;
 | 
						|
}
 | 
						|
 | 
						|
export type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed';
 | 
						|
export interface UploadFile<T = any> {
 | 
						|
  uid: string;
 | 
						|
  size?: number;
 | 
						|
  name: string;
 | 
						|
  fileName?: string;
 | 
						|
  lastModified?: number;
 | 
						|
  lastModifiedDate?: Date;
 | 
						|
  url?: string;
 | 
						|
  status?: UploadFileStatus;
 | 
						|
  percent?: number;
 | 
						|
  thumbUrl?: string;
 | 
						|
  originFileObj?: any;
 | 
						|
  response?: T;
 | 
						|
  error?: any;
 | 
						|
  linkProps?: any;
 | 
						|
  type?: string;
 | 
						|
  xhr?: T;
 | 
						|
  preview?: string;
 | 
						|
}
 | 
						|
 | 
						|
export interface UploadChangeParam<T extends object = UploadFile> {
 | 
						|
  file: T;
 | 
						|
  fileList: UploadFile[];
 | 
						|
  event?: { percent: number };
 | 
						|
}
 | 
						|
 | 
						|
export const ShowUploadListInterface = PropsTypes.shape({
 | 
						|
  showRemoveIcon: PropsTypes.looseBool,
 | 
						|
  showPreviewIcon: PropsTypes.looseBool,
 | 
						|
}).loose;
 | 
						|
 | 
						|
export interface UploadLocale {
 | 
						|
  uploading?: string;
 | 
						|
  removeFile?: string;
 | 
						|
  downloadFile?: string;
 | 
						|
  uploadError?: string;
 | 
						|
  previewFile?: string;
 | 
						|
}
 | 
						|
 | 
						|
export const uploadProps = {
 | 
						|
  type: PropsTypes.oneOf(tuple('drag', 'select')),
 | 
						|
  name: PropsTypes.string,
 | 
						|
  defaultFileList: { type: Array as PropType<UploadFile[]> },
 | 
						|
  fileList: { type: Array as PropType<UploadFile[]> },
 | 
						|
  action: PropsTypes.oneOfType([PropsTypes.string, PropsTypes.func]),
 | 
						|
  directory: PropsTypes.looseBool,
 | 
						|
  data: PropsTypes.oneOfType([PropsTypes.object, PropsTypes.func]),
 | 
						|
  method: PropsTypes.oneOf(tuple('POST', 'PUT', 'PATCH', 'post', 'put', 'patch')),
 | 
						|
  headers: PropsTypes.object,
 | 
						|
  showUploadList: PropsTypes.oneOfType([PropsTypes.looseBool, ShowUploadListInterface]),
 | 
						|
  multiple: PropsTypes.looseBool,
 | 
						|
  accept: PropsTypes.string,
 | 
						|
  beforeUpload: PropsTypes.func,
 | 
						|
  listType: PropsTypes.oneOf(tuple('text', 'picture', 'picture-card')),
 | 
						|
  // className: PropsTypes.string,
 | 
						|
  remove: PropsTypes.func,
 | 
						|
  supportServerRender: PropsTypes.looseBool,
 | 
						|
  // style: PropsTypes.object,
 | 
						|
  disabled: PropsTypes.looseBool,
 | 
						|
  prefixCls: PropsTypes.string,
 | 
						|
  customRequest: PropsTypes.func,
 | 
						|
  withCredentials: PropsTypes.looseBool,
 | 
						|
  openFileDialogOnClick: PropsTypes.looseBool,
 | 
						|
  locale: { type: Object as PropType<UploadLocale> },
 | 
						|
  height: PropsTypes.number,
 | 
						|
  id: PropsTypes.string,
 | 
						|
  previewFile: PropsTypes.func,
 | 
						|
  transformFile: PropsTypes.func,
 | 
						|
  onChange: { type: Function as PropType<(info: UploadChangeParam) => void> },
 | 
						|
  onPreview: { type: Function as PropType<(file: UploadFile) => void> },
 | 
						|
  onRemove: {
 | 
						|
    type: Function as PropType<(file: UploadFile) => void | boolean | Promise<void | boolean>>,
 | 
						|
  },
 | 
						|
  onDownload: { type: Function as PropType<(file: UploadFile) => void> },
 | 
						|
  'onUpdate:fileList': { type: Function as PropType<(files: UploadFile[]) => void> },
 | 
						|
};
 | 
						|
 | 
						|
export type UploadProps = Partial<ExtractPropTypes<typeof uploadProps>>;
 | 
						|
export const uploadListProps = {
 | 
						|
  listType: PropsTypes.oneOf(tuple('text', 'picture', 'picture-card')),
 | 
						|
  // items: PropsTypes.arrayOf(UploadFile),
 | 
						|
  items: { type: Array as PropType<UploadFile[]> },
 | 
						|
  progressAttr: PropsTypes.object,
 | 
						|
  prefixCls: PropsTypes.string,
 | 
						|
  showRemoveIcon: PropsTypes.looseBool,
 | 
						|
  showDownloadIcon: PropsTypes.looseBool,
 | 
						|
  showPreviewIcon: PropsTypes.looseBool,
 | 
						|
  locale: { type: Object as PropType<UploadLocale> },
 | 
						|
  previewFile: PropsTypes.func,
 | 
						|
  onPreview: { type: Function as PropType<(file: UploadFile) => void> },
 | 
						|
  onRemove: {
 | 
						|
    type: Function as PropType<(file: UploadFile) => void | boolean>,
 | 
						|
  },
 | 
						|
  onDownload: { type: Function as PropType<(file: UploadFile) => void> },
 | 
						|
};
 | 
						|
 | 
						|
export type UploadListProps = Partial<ExtractPropTypes<typeof uploadListProps>>;
 |