import { Fragment, VNode, h } from "preact"; import { UIFormProps } from "./FormProvider.js"; import { noHandlerPropsAndNoContextForField } from "./InputArray.js"; import { LabelWithTooltipMaybeRequired } from "./InputLine.js"; import { useField } from "./useField.js"; export function InputFile( props: { maxBites: number; accept?: string } & UIFormProps, ): VNode { const { label, tooltip, required, help: propsHelp, maxBites, accept, } = props; //FIXME: remove deprecated const fieldCtx = useField(props.name); const { value, onChange, state } = props.handler ?? fieldCtx ?? noHandlerPropsAndNoContextForField(props.name); const help = propsHelp ?? state.help; if (state.hidden) { return
; } const valueStr = !value ? "" : value.toString(); const firstColon = valueStr.indexOf(";"); const { fileName, dataUri } = valueStr.startsWith("file:") ? { fileName: valueStr.substring(5, firstColon), dataUri: valueStr.substring(firstColon + 1), } : { fileName: "", dataUri: valueStr, }; return (
{!dataUri ? (
{!state.disabled && (
{/*

or drag and drop

*/}
)}
) : (
{(dataUri as string).startsWith("data:image/") ? ( ) : (
)} {fileName ? (
{fileName}
) : ( )} {!state.disabled && (
{ onChange(undefined!); }} > Clear
)}
)} {help &&

{help}

}
); }