choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
156 lines (155 loc) • 6.07 kB
TypeScript
/**
* 裁剪头像上传
*/
import React, { Component } from 'react';
import { AxiosRequestConfig } from 'axios';
import PropTypes from 'prop-types';
import { ModalProps } from '../modal';
import { UploadProps } from '../upload';
export interface Limit {
size: number;
type: string;
}
export interface AvatarArea {
rotate: number;
startX: number;
startY: number;
endX: number;
endY: number;
file?: File;
}
export interface AvatarUploadProps {
visible: boolean;
onClose?: (visible: boolean) => void;
onUploadOk?: (res: any) => void;
uploadUrl?: string;
uploadFaild?: () => void;
uploadError?: (error: any) => void;
handleUpload?: (area: AvatarArea) => void;
cropComplete?: (imageState: any) => void;
title?: string | React.ReactElement;
subTitle?: string | React.ReactElement;
previewTitle?: string | React.ReactElement;
reloadTitle?: string | React.ReactElement;
uploadProps?: UploadProps;
modalProps?: ModalProps;
limit: Limit;
previewList: number[];
editorWidth: number;
editorHeight: number;
minRectSize: number;
defaultRectSize: number;
axiosConfig?: AxiosRequestConfig;
prefixCls?: string;
}
export default class AvatarUploader extends Component<AvatarUploadProps, any> {
static propTypes: {
visible: PropTypes.Validator<boolean>;
onClose: PropTypes.Requireable<(...args: any[]) => any>;
onUploadOk: PropTypes.Requireable<(...args: any[]) => any>;
limit: PropTypes.Requireable<object>;
uploadUrl: PropTypes.Requireable<string>;
previewList: PropTypes.Requireable<any[]>;
editorWidth: PropTypes.Requireable<number>;
editorHeight: PropTypes.Requireable<number>;
minRectSize: PropTypes.Requireable<number>;
defaultRectSize: PropTypes.Requireable<number>;
prefixCls: PropTypes.Requireable<string>;
handleUpload: PropTypes.Requireable<(...args: any[]) => any>;
axiosConfig: PropTypes.Requireable<object>;
cropComplete: PropTypes.Requireable<(...args: any[]) => any>;
title: PropTypes.Requireable<string | object>;
subTitle: PropTypes.Requireable<string | object>;
previewTitle: PropTypes.Requireable<string | object>;
reloadTitle: PropTypes.Requireable<string | object>;
uploadProps: PropTypes.Requireable<object>;
modalProps: PropTypes.Requireable<object>;
reloadText: PropTypes.Requireable<(...args: any[]) => any>;
uploadFaild: PropTypes.Requireable<(...args: any[]) => any>;
uploadError: PropTypes.Requireable<(...args: any[]) => any>;
};
static defaultProps: {
limit: {
type: string;
size: number;
};
previewList: number[];
editorWidth: number;
editorHeight: number;
minRectSize: number;
defaultRectSize: number;
};
constructor(props: any);
handleOk: () => void;
close(): void;
uploadOk(res: any): void;
handleCancel: () => void;
initImageSize(img: any, rotate?: number): void;
onComplete(imageState: any): void;
loadImage(src: any): void;
getPreviewProps(previewSize: any): {
style: {
width: any;
height: any;
backgroundImage: string;
backgroundSize: string;
backgroundPosition: string;
transform: string;
};
};
renderPreviewItem(previewSizeList: any): any;
renderEditor(props: any): JSX.Element;
getUploadProps(): {
beforeUpload: (file: any) => boolean;
onChange: ({ file }: {
file: any;
}) => void;
multiple: boolean;
name: string;
accept: string;
headers: {
Authorization: string;
};
showUploadList: boolean;
} | {
beforeUpload: (file: any) => boolean;
onChange: ({ file }: {
file: any;
}) => void;
type?: "select" | "drag" | undefined;
name: string;
defaultFileList?: import("../upload/interface").UploadFile[] | undefined;
fileList?: import("../upload/interface").UploadFile[] | undefined;
action?: string | undefined;
data?: Object | ((file: import("../upload/interface").UploadFile) => any) | undefined;
headers: import("../upload/interface").HttpRequestHeader | {
Authorization: string;
};
showUploadList: boolean | import("../upload/interface").ShowUploadListInterface;
multiple: boolean;
dragUploadList?: boolean | undefined;
accept: string;
listType?: "picture" | "text" | "picture-card" | undefined;
className?: string | undefined;
onStart?: ((file: import("../upload/interface").UploadFile) => void) | undefined;
onPreview?: ((file: import("../upload/interface").UploadFile) => void) | undefined;
onDragEnd?: ((files: import("../upload/interface").UploadFile[]) => boolean | void) | undefined;
onRemove?: ((file: import("../upload/interface").UploadFile) => boolean | void) | undefined;
onSuccess?: ((response: any, file: import("../upload/interface").UploadFile) => void) | undefined;
onProgress?: ((e: {
percent: number;
}, file: import("../upload/interface").UploadFile) => void) | undefined;
onError?: ((error: Error, response: any, file: import("../upload/interface").UploadFile) => void) | undefined;
supportServerRender?: boolean | undefined;
style?: React.CSSProperties | undefined;
disabled?: boolean | undefined;
prefixCls?: string | undefined;
customRequest?: ((option: any) => void) | undefined;
previewFile?: ((file: Blob | File) => PromiseLike<string>) | undefined;
withCredentials?: boolean | undefined;
locale?: import("../upload/interface").UploadLocale | undefined;
requestFileKeys?: string | string[] | undefined;
};
renderContainer(): JSX.Element;
render(): JSX.Element;
}