UNPKG

@spaced-out/ui-design-system

Version:
177 lines (174 loc) 6.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileBlock = void 0; var React = _interopRequireWildcard(require("react")); var _classify = _interopRequireDefault(require("../../../utils/classify")); var _qa = require("../../../utils/qa"); var _Icon = require("../../Icon"); var _LinearLoader = require("../../LinearLoader"); var _Truncate = require("../../Truncate"); var _FileUploadModule = _interopRequireDefault(require("../FileUpload.module.css")); var _jsxRuntime = require("react/jsx-runtime"); 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, showRemoveFile = true, testId } = _ref; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: (0, _classify.default)(_FileUploadModule.default.file, classNames?.wrapper), ref: ref, "data-testid": (0, _qa.generateTestId)({ base: testId, slot: 'wrapper' }), children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: _FileUploadModule.default.fileInfo, children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: _FileUploadModule.default.fileNameBlock, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.icon, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(FileStatusIcon, { fileObject: fileObject, testId: testId }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.fileName, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Truncate.Truncate, { testId: (0, _qa.generateTestId)({ base: testId, slot: 'file-name' }), children: fileObject.file.name }) })] }), fileObject.success && !!fileObject.successMessage && !fileObject.progress && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.fileSuccess, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Truncate.Truncate, { testId: (0, _qa.generateTestId)({ base: testId, slot: 'success-message' }), children: fileObject.successMessage }) }), fileObject.reject && !!fileObject.rejectReason && !fileObject.progress && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.fileError, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Truncate.Truncate, { testId: (0, _qa.generateTestId)({ base: testId, slot: 'error-message' }), children: fileObject.rejectReason }) }), !!fileObject.progress && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.progress, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinearLoader.LinearLoader, { size: "small", value: fileObject.progress === 'indeterminate' ? 0 : fileObject.progress, indeterminate: fileObject.progress === 'indeterminate', testId: (0, _qa.generateTestId)({ base: testId, slot: 'progress' }) }) })] }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: _FileUploadModule.default.rightSection, children: [fileObject.showReUpload && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.rightBlock, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.ClickableIcon, { name: "refresh", size: "small", onClick: () => onFileRefreshClick?.(fileObject), testId: (0, _qa.generateTestId)({ base: testId, slot: 'refresh-button' }) }) }), showRemoveFile && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _FileUploadModule.default.rightBlock, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.CloseIcon, { size: "small", onClick: () => handleFileClear?.(fileObject.id), testId: (0, _qa.generateTestId)({ base: testId, slot: 'remove-button' }) }) })] })] }) }); }); // 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, testId } = _ref2; const status = getFileStatus(fileObject); switch (status) { case 'progress': return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, { size: "small", name: "loader", color: "tertiary", testId: (0, _qa.generateTestId)({ base: testId, slot: 'status-icon' }) }); case 'success': return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, { size: "small", name: "check", color: "success", testId: (0, _qa.generateTestId)({ base: testId, slot: 'status-icon' }) }); case 'error': return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, { size: "small", name: "circle-exclamation", color: "danger", type: "solid", testId: (0, _qa.generateTestId)({ base: testId, slot: 'status-icon' }) }); default: return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, { size: "small", name: "check", color: "success", testId: (0, _qa.generateTestId)({ base: testId, slot: 'status-icon' }) }); } };