choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
72 lines (71 loc) • 2.15 kB
TypeScript
/**
* 裁剪头像上传
*/
import React, { Component } from 'react';
import { AxiosRequestConfig } from 'axios';
import { ModalProps } from '../modal';
import { UploadProps } from '../upload';
import ConfigContext, { ConfigContextValue } from '../config-provider/ConfigContext';
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;
previewTitle?: string | React.ReactElement;
reloadTitle?: string | React.ReactElement;
uploadProps?: UploadProps;
modalProps?: ModalProps;
limit: Limit;
previewList: number[];
editorWidth: number;
editorHeight: number;
rectSize: number;
axiosConfig?: AxiosRequestConfig;
prefixCls?: string;
}
export default class AvatarUploader extends Component<AvatarUploadProps, any> {
static get contextType(): typeof ConfigContext;
static defaultProps: {
limit: {
type: string;
size: number;
};
previewList: number[];
editorWidth: number;
editorHeight: number;
rectSize: number;
};
context: ConfigContextValue;
constructor(props: any, context: ConfigContextValue);
zoomImage: (type: any) => void;
handleOk: () => void;
close(): void;
uploadOk(res: any): void;
handleCancel: () => void;
initImageSize(img: any, rotate?: number): void;
onComplete(imgState: any): void;
loadImage(src: any): void;
getPreviewProps(previewSize: any): object;
renderPreviewItem(previewSizeList: any): any;
renderEditor(props: any): JSX.Element;
getUploadProps(): UploadProps;
renderContainer(): JSX.Element;
render(): JSX.Element;
}