import React, { useContext } from "react"; import classNames from "classnames"; import { ImagePreview } from "../../imagepreview"; import { useConfig } from "../../_util/config-context"; import { UploadContext } from "../UploadContext"; import { Text } from "../../text"; import { StyledProps } from "../../_type"; export interface DraggerProps extends StyledProps { /** * 文件名 */ filename?: React.ReactNode; /** * 预览图,仅在 `filename` 不为空时展示 */ image?: string; /** * 上传进度,仅在 `filename` 不为空时展示 */ percent?: number; /** * 文件描述,仅在 `filename` 不为空时展示 */ description?: React.ReactNode; /** * 按钮区域内容,仅在 `filename` 不为空时展示 */ button?: React.ReactNode; /** * `filename` 为空时展示内容,此时支持拖拽上传 */ children?: React.ReactNode; } export const Dragger = React.forwardRef(function Dragger( { filename, image, percent, button, description, children, className, ...props }: DraggerProps, ref: React.Ref ) { const { classPrefix } = useConfig(); const { isDragging, getDraggerProps } = useContext(UploadContext); if (filename) { return (
{image && (
)}
{filename} {(percent || percent === 0) && ( {Math.floor(percent)}% )}
{description}
{button}
); } return (
{children}
); }); Dragger.displayName = "UploadDragger";