@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
40 lines (39 loc) • 1.49 kB
JavaScript
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 };