interface.d.ts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import type * as React from 'react';
  2. import type { RcFile as OriRcFile, UploadRequestOption as RcCustomRequestOptions, UploadProps as RcUploadProps } from 'rc-upload/lib/interface';
  3. import type { ProgressAriaProps, ProgressProps } from '../progress';
  4. export interface RcFile extends OriRcFile {
  5. readonly lastModifiedDate: Date;
  6. }
  7. export type UploadFileStatus = 'error' | 'done' | 'uploading' | 'removed';
  8. export interface HttpRequestHeader {
  9. [key: string]: string;
  10. }
  11. export interface UploadFile<T = any> extends ProgressAriaProps {
  12. uid: string;
  13. size?: number;
  14. name: string;
  15. fileName?: string;
  16. lastModified?: number;
  17. lastModifiedDate?: Date;
  18. url?: string;
  19. status?: UploadFileStatus;
  20. percent?: number;
  21. thumbUrl?: string;
  22. crossOrigin?: React.ImgHTMLAttributes<HTMLImageElement>['crossOrigin'];
  23. originFileObj?: RcFile;
  24. response?: T;
  25. error?: any;
  26. linkProps?: any;
  27. type?: string;
  28. xhr?: T;
  29. preview?: string;
  30. }
  31. export interface InternalUploadFile<T = any> extends UploadFile<T> {
  32. originFileObj: RcFile;
  33. }
  34. export interface UploadChangeParam<T = UploadFile> {
  35. file: T;
  36. fileList: T[];
  37. event?: {
  38. percent: number;
  39. };
  40. }
  41. export interface ShowUploadListInterface<T = any> {
  42. extra?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  43. showRemoveIcon?: boolean | ((file: UploadFile<T>) => boolean);
  44. showPreviewIcon?: boolean | ((file: UploadFile<T>) => boolean);
  45. showDownloadIcon?: boolean | ((file: UploadFile<T>) => boolean);
  46. removeIcon?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  47. downloadIcon?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  48. previewIcon?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  49. }
  50. export interface UploadLocale {
  51. uploading?: string;
  52. removeFile?: string;
  53. downloadFile?: string;
  54. uploadError?: string;
  55. previewFile?: string;
  56. }
  57. export type UploadType = 'drag' | 'select';
  58. export type UploadListType = 'text' | 'picture' | 'picture-card' | 'picture-circle';
  59. export type UploadListProgressProps = Omit<ProgressProps, 'percent' | 'type'>;
  60. export type ItemRender<T = any> = (originNode: React.ReactElement, file: UploadFile<T>, fileList: Array<UploadFile<T>>, actions: {
  61. download: () => void;
  62. preview: () => void;
  63. remove: () => void;
  64. }) => React.ReactNode;
  65. type PreviewFileHandler = (file: File | Blob) => PromiseLike<string>;
  66. type TransformFileHandler = (file: RcFile) => string | Blob | File | PromiseLike<string | Blob | File>;
  67. type BeforeUploadValueType = void | boolean | string | Blob | File;
  68. export interface UploadProps<T = any> extends Pick<RcUploadProps, 'capture' | 'hasControlInside' | 'pastable'> {
  69. type?: UploadType;
  70. name?: string;
  71. defaultFileList?: Array<UploadFile<T>>;
  72. fileList?: Array<UploadFile<T>>;
  73. action?: string | ((file: RcFile) => string) | ((file: RcFile) => PromiseLike<string>);
  74. directory?: boolean;
  75. data?: Record<string, unknown> | ((file: UploadFile<T>) => Record<string, unknown> | Promise<Record<string, unknown>>);
  76. method?: 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch';
  77. headers?: HttpRequestHeader;
  78. showUploadList?: boolean | ShowUploadListInterface<T>;
  79. multiple?: boolean;
  80. accept?: string;
  81. beforeUpload?: (file: RcFile, fileList: RcFile[]) => BeforeUploadValueType | Promise<BeforeUploadValueType>;
  82. onChange?: (info: UploadChangeParam<UploadFile<T>>) => void;
  83. onDrop?: (event: React.DragEvent<HTMLDivElement>) => void;
  84. listType?: UploadListType;
  85. className?: string;
  86. rootClassName?: string;
  87. onPreview?: (file: UploadFile<T>) => void;
  88. onDownload?: (file: UploadFile<T>) => void;
  89. onRemove?: (file: UploadFile<T>) => void | boolean | Promise<void | boolean>;
  90. supportServerRender?: boolean;
  91. style?: React.CSSProperties;
  92. disabled?: boolean;
  93. prefixCls?: string;
  94. customRequest?: (options: RcCustomRequestOptions<T>) => void;
  95. withCredentials?: boolean;
  96. openFileDialogOnClick?: boolean;
  97. locale?: UploadLocale;
  98. id?: string;
  99. previewFile?: PreviewFileHandler;
  100. /** @deprecated Please use `beforeUpload` directly */
  101. transformFile?: TransformFileHandler;
  102. iconRender?: (file: UploadFile<T>, listType?: UploadListType) => React.ReactNode;
  103. isImageUrl?: (file: UploadFile<T>) => boolean;
  104. progress?: UploadListProgressProps;
  105. itemRender?: ItemRender<T>;
  106. /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */
  107. maxCount?: number;
  108. children?: React.ReactNode;
  109. }
  110. export interface UploadState<T = any> {
  111. fileList: UploadFile<T>[];
  112. dragState: string;
  113. }
  114. export interface UploadListProps<T = any> {
  115. listType?: UploadListType;
  116. onPreview?: (file: UploadFile<T>) => void;
  117. onDownload?: (file: UploadFile<T>) => void;
  118. onRemove?: (file: UploadFile<T>) => void | boolean;
  119. items?: Array<UploadFile<T>>;
  120. progress?: UploadListProgressProps;
  121. prefixCls?: string;
  122. className?: string;
  123. showRemoveIcon?: boolean | ((file: UploadFile<T>) => boolean);
  124. showDownloadIcon?: boolean | ((file: UploadFile<T>) => boolean);
  125. showPreviewIcon?: boolean | ((file: UploadFile<T>) => boolean);
  126. removeIcon?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  127. downloadIcon?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  128. previewIcon?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  129. extra?: React.ReactNode | ((file: UploadFile<T>) => React.ReactNode);
  130. locale: UploadLocale;
  131. previewFile?: PreviewFileHandler;
  132. iconRender?: (file: UploadFile<T>, listType?: UploadListType) => React.ReactNode;
  133. isImageUrl?: (file: UploadFile<T>) => boolean;
  134. appendAction?: React.ReactNode;
  135. appendActionVisible?: boolean;
  136. itemRender?: ItemRender<T>;
  137. }
  138. export {};