@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
64 lines (63 loc) • 1.77 kB
JavaScript
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
};