@spaced-out/ui-design-system
Version:
Sense UI components library
177 lines (174 loc) • 6.81 kB
JavaScript
;
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'
})
});
}
};