UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

82 lines (81 loc) 3.72 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const jsxRuntime = require("react/jsx-runtime"); const uikitReactUtils = require("@hitachivantara/uikit-react-utils"); const icons = require("../../icons.cjs"); const utils = require("../utils.cjs"); const File_styles = require("./File.styles.cjs"); const ProgressBar = require("../../ProgressBar/ProgressBar.cjs"); const Typography = require("../../Typography/Typography.cjs"); const IconButton = require("../../IconButton/IconButton.cjs"); const getStatusIcon = (classes, status) => { switch (status) { case "success": return /* @__PURE__ */ jsxRuntime.jsx(icons.HvIcon, { name: "Success", className: classes?.icon, color: "positive" }); case "fail": return /* @__PURE__ */ jsxRuntime.jsx(icons.HvIcon, { name: "Fail", className: classes?.icon, color: "negative" }); default: return /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes?.icon }); } }; const getProgressText = (data, classes) => { const hasFailed = data.status === "fail"; const inProgress = data.status === "progress"; return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ data.progress || data.size || data.errorMessage ? ` | ` : null, inProgress && data.progress != null && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { variant: "label", children: `${utils.convertUnits(data.progress)} / ` }), !hasFailed && data.size && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { children: `${utils.convertUnits(data.size)}` }), hasFailed && data.errorMessage && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { className: classes?.fail, children: data.errorMessage }) ] }); }; const getProgressBarWith = ({ size, progress }) => { const width = progress != null && size != null ? Math.round(progress * 100 / size) : 0; return width; }; const HvFile = (props) => { const { classes: classesProp, data, onFileRemoved, removeFileButtonLabel } = uikitReactUtils.useDefaultProps("HvFile", props); const { classes, cx } = File_styles.useClasses(classesProp); const hasError = data.status === "fail"; const inProgress = data.status === "progress"; const progressText = getProgressText(data, classes); const statusIcon = getStatusIcon(classes, data.status); const currentProgress = getProgressBarWith(data); return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: classes.root, children: [ !hasError && inProgress && /* @__PURE__ */ jsxRuntime.jsx( ProgressBar.HvProgressBar, { classes: { root: classes.progressbar, progressBarContainer: cx( classes.progressbarContainer, classes.progressbarBack ) }, value: currentProgress, hideLabel: true } ), statusIcon, /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.nameText, children: [ /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { noWrap: true, variant: "label", children: data.name }), /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.progressTextContainer, children: progressText }) ] }), data.preview && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.previewContainer, children: data.preview }), /* @__PURE__ */ jsxRuntime.jsx( IconButton.HvIconButton, { title: removeFileButtonLabel, className: classes.removeButton, onClick: () => onFileRemoved?.(data), children: /* @__PURE__ */ jsxRuntime.jsx(icons.HvIcon, { name: "Close", size: "xs" }) } ) ] }); }; exports.fileClasses = File_styles.staticClasses; exports.HvFile = HvFile;