UNPKG

@hitachivantara/uikit-react-core

Version:
40 lines (39 loc) 1.49 kB
import { HvFormElement } from "../FormElement/FormElement.js"; import { useLabels } from "../hooks/useLabels.js"; import { HvDropZone } from "./DropZone/DropZone.js"; import { HvFileList } from "./FileList/FileList.js"; import { useClasses } from "./FileUploader.styles.js"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { jsx, jsxs } from "react/jsx-runtime"; //#region src/FileUploader/FileUploader.tsx var DEFAULT_LABELS = { removeFileButtonLabel: "Remove File" }; /** * Lets the user choose one or more files from their device storage. Once chosen, * the files can be uploaded to a server or manipulated on the client side. */ var HvFileUploader = (props) => { const { id, className, classes: classesProp, labels: labelsProp, fileList, multiple = true, label, hideLabels, maxFileSize = Infinity, inputProps = {}, accept, onFilesAdded, onFileRemoved, ...others } = useDefaultProps("HvFileUploader", props); const { classes, cx } = useClasses(classesProp); const labels = useLabels(DEFAULT_LABELS, labelsProp); return /* @__PURE__ */ jsxs(HvFormElement, { id, className: cx(classes.root, className), ...others, children: [/* @__PURE__ */ jsx(HvDropZone, { label, labels, multiple, accept, maxFileSize, onFilesAdded, inputProps, hideLabels }), /* @__PURE__ */ jsx(HvFileList, { list: fileList, onFileRemoved, removeFileButtonLabel: labels?.removeFileButtonLabel })] }); }; //#endregion export { HvFileUploader };