UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

64 lines (63 loc) 1.77 kB
import { jsxs, jsx } from "react/jsx-runtime"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { useLabels } from "../hooks/useLabels.js"; import { setId } from "../utils/setId.js"; import { useClasses } from "./FileUploader.styles.js"; import { staticClasses } from "./FileUploader.styles.js"; import { HvDropZone } from "./DropZone/DropZone.js"; import { HvFileList } from "./FileList/FileList.js"; import { HvFormElement } from "../FormElement/FormElement.js"; const DEFAULT_LABELS = { removeFileButtonLabel: "Remove File" }; const HvFileUploader = (props) => { const { id, className, classes: classesProp, labels: labelsProp, fileList, multiple = true, label, hideLabels, maxFileSize = Infinity, inputProps = {}, accept, acceptedFiles = [], // TODO: consider adding/replacing with onFilesChange 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, { id: setId(id, "dropzone"), label, labels, multiple, accept: accept ?? acceptedFiles.join(","), maxFileSize, onFilesAdded, inputProps, hideLabels } ), /* @__PURE__ */ jsx( HvFileList, { id: setId(id, "filelist"), list: fileList, onFileRemoved, removeFileButtonLabel: labels?.removeFileButtonLabel } ) ] }); }; export { HvFileUploader, staticClasses as fileUploaderClasses };