@wulperstudio/cms
Version:
Wulper Studio Library Components CMS
28 lines (27 loc) • 1.44 kB
TypeScript
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, };