UNPKG

@wulperstudio/cms

Version:
28 lines (27 loc) 1.44 kB
import { SxProps, Theme } from '@mui/material'; import React, { DetailedHTMLProps, InputHTMLAttributes, ReactNode } from 'react'; import { DropEvent, DropzoneOptions, FileRejection } from 'react-dropzone'; import { InputErrorProps, Omit } from '../../types'; import { UploadableFileModel } from '../AttachFileDrop'; type OmitProps = 'onDrop' | 'onDragEnter' | 'onDragLeave' | 'onDragOver' | 'multiple' | 'style' | 'required' | 'accept'; export type ValueModel = { id?: string | null; name?: string | null; url?: string | null; mimeType?: string | null; }; export type FileDropProps<T extends ValueModel, Multiple extends boolean | undefined> = { focusedStyle?: SxProps<Theme>; acceptStyle?: SxProps<Theme>; rejectStyle?: SxProps<Theme>; sx?: SxProps<Theme>; customChildren?: React.ReactNode | React.ReactNode[]; helperNode?: React.ReactNode; value?: Multiple extends boolean ? T[] : T; onChange?: (accepted: UploadableFileModel[], rejected: FileRejection[], event: DropEvent) => void; onDelete?: (id?: string | null) => void; InputProps?: Omit<DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, OmitProps>; multiple?: Multiple; children?: Multiple extends boolean ? (file?: UploadableFileModel | T, onDelete?: () => void) => ReactNode : never; } & Omit<DropzoneOptions, 'onDrop' | 'multiple'> & InputErrorProps; export type { FileRejection, DropEvent, };