@spaced-out/ui-design-system
Version:
Sense UI components library
108 lines (105 loc) • 4.74 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FileBlock = void 0;
var React = _interopRequireWildcard(require("react"));
var _classify = _interopRequireDefault(require("../../../utils/classify"));
var _Icon = require("../../Icon");
var _LinearLoader = require("../../LinearLoader");
var _Truncate = require("../../Truncate");
var _FileUploadModule = _interopRequireDefault(require("../FileUpload.module.css"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
const FileBlock = exports.FileBlock = /*#__PURE__*/React.forwardRef((_ref, ref) => {
let {
classNames,
fileObject,
onFileRefreshClick,
handleFileClear
} = _ref;
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
className: (0, _classify.default)(_FileUploadModule.default.file, classNames?.wrapper),
ref: ref
}, /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.fileInfo
}, /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.fileNameBlock
}, /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.icon
}, /*#__PURE__*/React.createElement(FileStatusIcon, {
fileObject: fileObject
})), /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.fileName
}, /*#__PURE__*/React.createElement(_Truncate.Truncate, null, fileObject.file.name))), fileObject.success && !!fileObject.successMessage && !fileObject.progress && /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.fileSuccess
}, /*#__PURE__*/React.createElement(_Truncate.Truncate, null, fileObject.successMessage)), fileObject.reject && !!fileObject.rejectReason && !fileObject.progress && /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.fileError
}, /*#__PURE__*/React.createElement(_Truncate.Truncate, null, fileObject.rejectReason)), !!fileObject.progress && /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.progress
}, /*#__PURE__*/React.createElement(_LinearLoader.LinearLoader, {
size: "small",
value: fileObject.progress === 'indeterminate' ? 0 : fileObject.progress,
indeterminate: fileObject.progress === 'indeterminate'
}))), /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.rightSection
}, fileObject.showReUpload && /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.rightBlock
}, /*#__PURE__*/React.createElement(_Icon.ClickableIcon, {
name: "refresh",
size: "small",
onClick: () => onFileRefreshClick?.(fileObject)
})), /*#__PURE__*/React.createElement("div", {
className: _FileUploadModule.default.rightBlock
}, /*#__PURE__*/React.createElement(_Icon.CloseIcon, {
size: "small",
onClick: () => handleFileClear?.(fileObject.id)
})))));
});
// This function returns the status of a file
const getFileStatus = fileObject => {
if (fileObject.progress) {
return 'progress';
}
if (fileObject.success) {
return 'success';
}
if (fileObject.reject) {
return 'error';
}
return 'default';
};
// This component renders the status icon for a file
const FileStatusIcon = _ref2 => {
let {
fileObject
} = _ref2;
const status = getFileStatus(fileObject);
switch (status) {
case 'progress':
return /*#__PURE__*/React.createElement(_Icon.Icon, {
size: "small",
name: "loader",
color: "tertiary"
});
case 'success':
return /*#__PURE__*/React.createElement(_Icon.Icon, {
size: "small",
name: "check",
color: "success"
});
case 'error':
return /*#__PURE__*/React.createElement(_Icon.Icon, {
size: "small",
name: "circle-exclamation",
color: "danger",
type: "solid"
});
default:
return /*#__PURE__*/React.createElement(_Icon.Icon, {
size: "small",
name: "check",
color: "success"
});
}
};