import type { CSSProperties, ReactNode, Component, PureComponent, HTMLAttributes, TextareaHTMLAttributes } from 'react'; // 忽略 T 对象中 键在 K 中的所有的属性 type Override<T1, T2> = Omit<T1, keyof T2> & T2; // base type export type SizeType = 'sm' | 'md' | 'lg'; // ThemeProvider interface ThemeProviderProps { theme: any; } export declare class ThemeProvider extends Component<ThemeProviderProps> {} export { default as Tree } from './lib/components/Tree'; export { default as Cascader } from './lib/components/Cascader'; export { default as Link } from './lib/components/Link'; export { default as AutoComplete } from './lib/components/AutoComplete'; export { default as Switch, SwitchProps } from './lib/components/Switch'; export { default as Tabs, TabsProps, TabPaneProps } from './lib/components/Tabs'; export { default as Input } from './lib/components/Input'; import Input from './lib/components/Input'; export { default as Checkbox, CheckboxProps } from './lib/components/Checkbox'; export { default as Menu } from './lib/components/Menu'; export { default as Collapse } from './lib/components/Collapse'; export { default as ActionList } from './lib/components/ActionList'; import ActionList from './lib/components/ActionList'; export { default as Tooltip } from './lib/components/Tooltip'; export { default as PopConfirm } from './lib/components/PopConfirm'; export { default as ConfigProvider } from './lib/components/ConfigProvider'; export { default as Icon } from './lib/components/Icon'; export { default as Select } from './lib/components/Select'; export { default as Breadcrumb } from './lib/components/Breadcrumb'; export { default as Nav } from './lib/components/Nav'; export { default as Skeleton } from './lib/components/Skeleton'; // Button import { ButtonProps } from './lib/components/Button/Button'; export { default as Button } from './lib/components/Button'; // Box type BoxSpacing = 'sm' | 'md' | 'lg' | number | string; export interface BoxProps extends HTMLAttributes<HTMLDivElement> { container?: boolean; spacing?: BoxSpacing | [BoxSpacing, BoxSpacing?]; direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse'; wrap?: 'nowrap' | 'wrap' | 'wrap-reverse'; alignItems?: 'center' | 'flex-start' | 'flex-end' | 'stretch'; alignContent?: 'center' | 'flex-start' | 'flex-end' | 'space-between' | 'space-around'; justifyContent?: 'center' | 'flex-start' | 'flex-end' | 'space-between' | 'space-around' | 'stretch'; padding?: BoxSpacing; width?: string; height?: string; span?: number; order?: number; flex?: string; cleanMargin?: boolean; } export declare class Box extends PureComponent<BoxProps> {} // Row export type RowType = 'flex'; export type RowAlign = 'top' | 'middle' | 'bottom'; export type RowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between'; export interface RowProps extends HTMLAttributes<HTMLDivElement> { type?: RowType; align?: RowAlign; justify?: RowJustify; gutter?: number | [number, number]; } export declare class Row extends Component<RowProps> {} // Col export interface ColProps extends HTMLAttributes<HTMLDivElement> { span?: number; offset?: number; pull?: number; push?: number; order?: number; } export declare class Col extends Component<ColProps> {} // Grid export interface GridType { Row: Row; Col: Col; } export declare const Grid: GridType; // Combine export interface CombineProps extends HTMLAttributes<HTMLDivElement> { sharedProps?: CompactSharedProps; spacing?: 'compact' | 'smart' | 'sm' | 'md' | 'lg' | string; } export declare class Combine extends PureComponent<CombineProps> {} // Compact export interface CompactSharedProps { [key: string]: any; } export interface CompactProps extends HTMLAttributes<HTMLDivElement> { sharedProps?: CompactSharedProps; } export declare class Compact extends Component<CompactProps> {} // NumberInput export type NumberInputStyleType = 'default' | 'split' | 'pagination'; export type NumberInputProps = Override< HTMLAttributes<HTMLInputElement>, { value?: number | string; defaultValue?: number | string; onChange?: (value: number | string) => void; onNumberChange?: (value: number) => void; disabled?: boolean; readOnly?: boolean; max?: number; min?: number; step?: number | string; upHandler?: ReactNode; downHandler?: ReactNode; formatter?: (value: number) => number | string; parser?: (value: string) => string; precision?: number; styleType?: NumberInputStyleType; size?: SizeType; suffix?: ReactNode; inputStyle?: CSSProperties; computeValidNumber?: (value: number) => number; hideHandler?: boolean; } >; export declare class NumberInput extends Component<NumberInputProps> {} // Textarea export type TextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement>; export declare class Textarea extends Component<TextareaProps> {} // Radio export type RadioStyleType = 'default' | 'button' | 'tag' | 'card' | 'text' | 'list'; export interface RadioProps { checked?: boolean; defaultChecked?: boolean; disabled?: boolean; onChange?: (checked: boolean) => void; value?: any; styleType?: RadioStyleType; size?: SizeType; title?: ReactNode; extra?: ReactNode; disabledLabel?: ReactNode; } interface RadioOption extends RadioProps { label?: ReactNode; } export type RadioOptions = RadioOption[]; export interface RadioGroupProps { value?: any; defaultValue?: any; onChange?: (value: any) => void; options?: RadioOptions; disabled?: boolean; size?: SizeType; styleType?: RadioStyleType; } declare class RadioGroup extends Component<RadioGroupProps> {} export declare class Radio extends Component<RadioProps> { static Group: typeof RadioGroup; } // Slider export interface SliderMark { label?: string; step?: number; ratio?: number; } export interface SliderMarks { [key: string]: SliderMark | ReactNode; } interface NumberInputTipFormatterOption { currentValue: number; inputValue: number; isSensitive: boolean; locale: any; } export type SliderProps = Override< HTMLAttributes<HTMLDivElement>, { value?: number; defaultValue?: number; onChange?: (value: number) => void; onLastChange?: (value: number) => void; disabled?: boolean; min?: number; max?: number; step?: number | string; marks?: SliderMarks; className?: string; style?: CSSProperties; sliderClassName?: string; numberInput?: NumberInputProps; isSensitive?: boolean; numberInputTipFormatter?: (option: NumberInputTipFormatterOption) => ReactNode; tipFormatter?: (value: number) => ReactNode; size?: SizeType; } >; export declare class Slider extends Component<SliderProps> {} // Upload export interface UploadFile { name: string; uid: string; size?: number; status?: 'uploading' | 'success' | 'error'; thumbnailUrl?: string; url?: string; type?: string; lastModified?: number; lastModifiedDate?: Date; progress?: number; error?: Error; } interface UpdateProgress { (progress: number): void; } type UploadListTypeOption<T> = [T, 'none' | 'dropzone' | 'thumbnail']; export type UploadListType = | 'none' | 'text' | 'list' | 'dropzone' | UploadListTypeOption<'list'> | UploadListTypeOption<'dropzone'>; export interface UploadCustomStyle { listMaxHeight?: string; [key: string]: any; } export interface UploadProps { onChange?: (fileList: UploadFile[]) => void; onAdd?: (fileList: UploadFile[]) => boolean; onRemove?: (file: UploadFile, index: number) => boolean; getRemovableOfItem?: (file: UploadFile) => boolean; onError?: (error: Error) => void; onPreview?: (file: UploadFile, index: number) => void; getPreviewableOfItem?: (file: UploadFile) => boolean; handleUpload?: <T = any>(file: UploadFile, updateProgress: UpdateProgress) => Promise<any>; disabled?: boolean; multiple?: boolean; accept?: string; maxSize?: number; maxCount?: number; selector?: ReactNode; listType?: UploadListType; defaultFileList?: (File | UploadFile)[]; fileList?: (File | UploadFile)[]; style?: CSSProperties; customStyle?: UploadCustomStyle; } export declare class Upload extends Component<UploadProps> {} // Calendar export { default as Calendar } from './lib/components/Calendar'; // DatePicker export { default as DatePicker } from './lib/components/DatePicker'; // ZForm export interface FormShape { getFieldsValue: Function; getFieldValue: Function; getFieldInstance: Function; setFieldsValue: Function; setFields: Function; setFieldsInitialValue: Function; getFieldDecorator: Function; getFieldProps: Function; getFieldsError: Function; getFieldError: Function; isFieldValidating: Function; isFieldsValidating: Function; isFieldsTouched: Function; isFieldTouched: Function; isSubmitting: Function; submit: Function; validateFields: Function; resetFields: Function; } export interface ZFormProps extends FormProps { form?: FormShape; } interface ControllerDecoratorOptions { [key: string]: any; } export declare class ZForm extends Component<ZFormProps> { static formDecorator?: (options: FormShape) => Function; static controllerDecorator?: (options: ControllerDecoratorOptions) => Function; static formShape?: FormShape; } // Transfer type TransferSearch = (searchValue: string, item: any) => boolean; interface TransferSource { title?: ReactNode; footer?: ReactNode; search?: boolean | TransferSearch; disabled?: boolean; } export type TransferProps = Override< HTMLAttributes<HTMLDivElement>, { dataSource?: any[]; renderList?: (options: TransferProps) => ReactNode; selectedKeys?: string[]; defaultSelectedKeys?: string[]; onChange?: (keys: string[]) => void; disabled?: boolean; search?: boolean | TransferSearch; source?: TransferSource; target?: TransferSource; } >; export declare class Transfer extends PureComponent<TransferProps> {} // TransferMenu export interface TransferMenuProps extends TransferProps { renderItem?: (item: any) => ReactNode; } export declare class TransferMenu extends PureComponent<TransferMenuProps> {} // TransferTable export interface TransferTableProps extends TransferProps { columns?: Column[]; tableProps?: TableProps; } export declare class TransferTable extends PureComponent<TransferTableProps> {} // EditableTable interface EditableTableAddition extends EditableListAddition { tip?: ReactNode; } interface EditableTableRowDeletion { onDelete?: (record: any) => void; getDisabledOfRow?: (record: any) => boolean; fixed?: boolean; } export interface EditableTableProps extends TableProps { addition?: boolean | EditableTableAddition; rowDeletion?: boolean | EditableTableRowDeletion; } export declare class EditableTable extends PureComponent<EditableTableProps> {} // EditableList interface EditableListAddition { onAdd?: Function; disabled?: boolean; } interface EditableListRowDeletion { onDelete?: (item: any) => void; getDisabledOfItem?: (item: any) => boolean; } interface EditableListGrid { itemCol?: ColProps; actionCol?: ColProps; } export interface EditableListProps { dataSource?: any[]; renderItem?: (item: any) => ReactNode; grid?: EditableListGrid; size?: SizeType; addition?: boolean | EditableListAddition; itemDeletion?: boolean | EditableListRowDeletion; } export declare class EditableList extends PureComponent<EditableListProps> {} // Notice export { default as Notice, NoticeProps } from './lib/components/Notice'; // Badge export { default as Badge, BadgeProps } from './lib/components/Badge'; // Tag export type TagStyleType = | 'default' | 'green' | 'yellow' | 'red' | 'primary' | 'purple' | 'lightblue' | 'blue' | 'orange' | 'cyan' | 'success' | 'warning' | 'error' | 'purple-fill' | 'lightblue-fill' | 'blue-fill' | 'orange-fill' | 'yellow-fill' | 'cyan-fill' | string; export interface TagProps extends HTMLAttributes<HTMLSpanElement> { styleType?: TagStyleType; closable?: boolean; onClose?: () => void; icon?: 'circle-fill' | 'circle' | 'loading' | 'custom' | ReactNode; disabled?: boolean; border?: boolean; borderType?: 'default' | 'circle'; suffix?: ReactNode; } export interface TagGroupProps extends HTMLAttributes<HTMLDivElement> { children?: ReactNode; compact?: boolean; exposeCount?: number; popoverProps?: PopoverProps; } export declare class TagIcon extends PureComponent<TagProps> {} export declare class TagGroup extends PureComponent<TagGroupProps> {} export declare class Tag extends PureComponent<TagProps> { declare static Icon: typeof TagIcon; declare static Group: typeof TagGroup; } // Popover interface PopupAlign { points?: string[]; offset?: number[]; } export type PopoverPlacement = | 'topLeft' | 'top' | 'topRight' | 'bottomLeft' | 'bottom' | 'bottomRight' | 'leftTop' | 'left' | 'leftBottom' | 'rightTop' | 'right' | 'rightBottom'; export interface GetPopupContainer { (): HTMLElement; } export interface PopoverProps extends HTMLAttributes<HTMLDivElement> { visible?: boolean; defaultVisible?: boolean; onVisibleChange?: (visible: boolean) => void; trigger?: 'hover' | 'focus' | 'click' | 'contextMenu'; alignPoint?: boolean; placement?: PopoverPlacement; align?: PopupAlign; stretch?: 'with' | 'minWidth' | 'height' | 'minHeight'; popup?: ReactNode; popupClassName?: string; popupStyle?: CSSProperties; zIndex?: number; getPopupContainer?: GetPopupContainer; forwardPopupContainer?: boolean | GetPopupContainer; prefixCls?: string; animation?: 'fade' | 'zoom' | 'bounce' | 'slide-up'; } export declare class Popover extends Component<PopoverProps> {} // Modal interface ModalGetFooter { (): ReactNode; } interface ModalCustomStyle { [key: string]: any; } export interface ModalProps { title?: ReactNode; footer?: ReactNode | ModalGetFooter; visible?: boolean; size?: SizeType; zIndex?: number; closable?: boolean; mask?: boolean; maskClosable?: boolean; keyboard?: boolean; onClose?: Function; onOk?: Function; afterClose?: Function; destroyOnClose?: boolean; maskAnimation?: string; animation?: string; className?: string; wrapClassName?: string; customStyle?: ModalCustomStyle; style?: CSSProperties; bodyStyle?: CSSProperties; maskStyle?: CSSProperties; } interface ModalConfirmHandle { destroy(): void; } interface ModalConfirm { (options: ModalProps, contentNode?: ReactNode): ModalConfirmHandle; } export declare class ModalContent extends Component<HTMLAttributes<HTMLDivElement>> {} export declare class Modal extends Component<ModalProps> { static confirm: ModalConfirm; static alert: ModalConfirm; static open: ModalConfirm; static Content: typeof ModalContent; } // Drawer export interface DrawerProps { visible?: boolean; mask?: boolean; maskClosable?: boolean; keyboard?: boolean; onClose?: () => void; destroyOnClose?: boolean; placement?: 'left' | 'right' | 'top' | 'bottom'; width?: string | number; height?: string | number; getContainer?: () => ReactNode; zIndex?: number; closeHandler?: null | false; } export declare class Drawer extends Component<DrawerProps> {} // Table export interface TableScroll { x?: number; y?: number; onScroll?: (e: WheelEvent) => void; } type RowKey = (row: any) => string; export interface RowSelection { fixed?: boolean; onChange?: Function; defaultSelectedRowKeys?: string[]; selectedRowKeys?: string[]; getDisabledOfRow?: (row: any) => boolean; multiple?: boolean; selectedTip?: boolean | 'button'; disabled?: boolean; } interface DragSorting { fixed: boolean; onChange: (record: any, fromIndex: number, toIndex: number) => void; } interface ColumnRender { (col: any, row?: any): ReactNode; } export interface Column { key?: string; className?: string; colSpan?: number; title?: ReactNode; dataIndex?: string; width?: string | number; fixed?: 'left' | 'right'; render?: ColumnRender; onCellClick?: Function; onCell?: Function; onHeaderCell?: Function; [key: string]: any; } interface DefaultColumnConfig { [key: string]: string; } interface TableCustomStyle { outerPadding?: string; [key: string]: any; } interface TableOrder { key: string; state: 'desc' | 'asc'; } export interface TableConditionChangeEventOrder { order: TableOrder; filters: { key: string; value: string }[]; searchValue: string; } interface ConditionChangeEvent { (condition: TableConditionChangeEventOrder): void; } interface TableContextMenu { (row: object, hide: boolean): ReactNode; } export interface TableProps { pagination?: PaginationProps | null; dataSource?: any[]; columns?: Column[]; columnPlaceholder?: boolean; defaultColumnConfig?: DefaultColumnConfig; onColumnConfigChange?: (config: DefaultColumnConfig) => void; expandedRowRender?: (row: any) => ReactNode; expandIconAsCell?: boolean; expandIconColumnIndex?: number; hideExpandIcon?: boolean; defaultExpandedRowKeys?: string[]; expandedRowKeys?: string[]; defaultExpandAllRows?: boolean; onExpandedRowsChange?: (row: any) => void; onExpand?: Function; onRow?: (row: any, index: number) => any; onHeaderRow?: (row: any, index: number) => any; rowSelection?: RowSelection | true; dragSorting?: boolean | DragSorting; onRowSelect?: (keys: string[]) => void; showHeader?: boolean; columnResizable?: boolean; title?: () => ReactNode; footer?: () => ReactNode; emptyContent?: ReactNode; errorContent?: ReactNode; handleSearch?: (row: any, searchValue: string) => boolean; customStyle?: TableCustomStyle; scroll?: TableScroll; tableLayout?: 'auto' | 'fixed'; rowKey?: string | RowKey; zebraCrossing?: boolean; components?: any; defaultOrder?: TableOrder; order?: TableOrder; onConditionChange?: ConditionChangeEvent; doNotHandleCondition?: boolean; contextMenu?: TableContextMenu; className?: string; } interface ColumnConfigButtonProps extends ButtonProps { modalProps?: ModalProps; } declare class TableColumnConfigButton extends Component<ColumnConfigButtonProps> {} interface TableExpandedRowContentProps extends HTMLAttributes<HTMLDivElement> {} declare class TableExpandedRowContent extends Component<TableExpandedRowContentProps> {} declare class HoverDisplayArea extends Component<HTMLAttributes<HTMLDivElement>> {} export declare class Table extends Component<TableProps> { static ColumnConfigButton: typeof TableColumnConfigButton; static SearchInput: typeof Input['Search']; static ActionList: typeof ActionList; static ExpandedRowContent: typeof TableExpandedRowContent; static HoverDisplayArea: typeof HoverDisplayArea; static getColumnConfigFromLocalStorage: typeof Function; static setColumnConfigToLocalStorage: typeof Function; } // Form export interface FormLabelCol { span?: number; offset?: number; pull?: number; push?: number; } interface FormItemTip { icon?: ReactNode; content?: ReactNode; } export interface FormItemProps extends RowProps { label?: ReactNode; labelCol?: FormLabelCol; controllerCol?: FormLabelCol; help?: ReactNode; required?: boolean; status?: 'default' | 'success' | 'warning' | 'error' | 'loading'; shareStatus?: boolean; tip?: ReactNode | FormItemTip; } export type FormGroupProps = Override< HTMLAttributes<HTMLDivElement>, { title?: ReactNode; itemProps?: FormItemProps; } >; export interface FormSubAreaProps extends HTMLAttributes<HTMLFormElement> { itemProps?: FormItemProps; } export interface FormProps extends HTMLAttributes<HTMLFormElement> { size?: 'md' | 'lg'; itemProps?: FormItemProps; } declare class FormItem extends PureComponent<FormItemProps> {} declare class FormGroup extends Component<FormGroupProps> {} declare class FormSubArea extends PureComponent<FormSubAreaProps> {} export declare class Form extends PureComponent<FormProps> { static Item: typeof FormItem; static Group: typeof FormGroup; static SubArea: typeof FormSubArea; } // Card export interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> { comment?: ReactNode; } declare class CardHeader extends Component<CardHeaderProps> {} declare class CardContent extends Component<HTMLAttributes<HTMLDivElement>> {} declare class CardFooter extends Component<HTMLAttributes<HTMLDivElement>> {} declare class CardAction extends Component<HTMLAttributes<HTMLDivElement>> {} export type CardProps = HTMLAttributes<HTMLDivElement>; export declare class Card extends PureComponent<CardProps> { static Header: typeof CardHeader; static Content: typeof CardContent; static Footer: typeof CardFooter; static Action: typeof CardAction; } // Steps interface Step { key?: string | number; step?: ReactNode; title?: ReactNode; remark?: ReactNode; status?: 'disabled' | 'error' | 'success' | 'normal'; } export interface StepsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> { steps: Step[]; current?: string | number; status?: 'current' | 'loading' | 'error'; direction?: 'horizontal' | 'vertical'; nowrap?: boolean; onChange?: (current: string | number) => void; } export declare class Steps extends Component<StepsProps> {} // Message export type MessageProps = Override< HTMLAttributes<HTMLDivElement>, { closable?: boolean; title?: ReactNode; footer?: ReactNode; styleType?: 'default' | 'success' | 'loading' | 'warning' | 'error'; } >; interface MessageOption { zIndex?: number; style?: CSSProperties; className?: string; } interface MessageHandle { destroy(): void; } interface MessageMethod { (content: ReactNode, duration?: number, onClose?: () => void, option?: MessageOption): MessageHandle; } interface MessageConfig { duration?: number; getContainer?: () => ReactNode; top?: number; } export declare class Message extends Component<MessageProps> { static message: MessageMethod; static info: MessageMethod; static warning: MessageMethod; static success: MessageMethod; static error: MessageMethod; static loading: MessageMethod; static config: (config: MessageConfig) => void; } // Pagination interface GetPaginationShowTotal { (total: number): string; } interface ShowQuickJumperObject { goButton?: ReactNode; } export type PaginationProps = Override< HTMLAttributes<HTMLUListElement>, { current?: number; defaultCurrent?: number; total?: number; showTotal?: boolean | GetPaginationShowTotal; pageSize?: number; defaultPageSize?: number; onChange?: (page: number, pageSize: number) => void; onAdvise?: (newCurrent: number, pageSize: number) => void; showSizeChanger?: boolean; showLessItems?: boolean; onPageSizeChange?: (current: number, pageSize: number) => void; showPrevNextJumpers?: boolean; showQuickJumper?: boolean | ShowQuickJumperObject; showTitle?: boolean; pageSizeOptions?: Array<number | string>; simple?: boolean; size?: SizeType; } >; export declare class Pagination extends Component<PaginationProps> {} // Progress interface ProgressFormat { (percent: number): string; } export interface ProgressProps extends HTMLAttributes<HTMLDivElement> { percent?: number; color?: 'success' | 'warn' | 'error' | string; format?: null | ProgressFormat; } export declare class Progress extends Component<ProgressProps> {} // Loading export interface LoadingProps extends HTMLAttributes<HTMLDivElement> { loading?: boolean; indicator?: ReactNode; tip?: ReactNode; maskStyle?: CSSProperties; maskClassName?: string; } export declare class Loading extends Component<LoadingProps> {} // LocaleProvider interface LocaleProviderProps { children?: ReactNode; locale?: any; } export declare class LocaleProvider extends Component<LocaleProviderProps> {}