UNPKG

@janus-idp/shared-react

Version:

Shared code for utils, types, and React components for the Janus frontend plugins.

221 lines (215 loc) 7.85 kB
'use strict'; var React = require('react'); var coreComponents = require('@backstage/core-components'); var core = require('@material-ui/core'); var OffIcon = require('@mui/icons-material/DoNotDisturbOnOutlined'); var UnknownIcon = require('@mui/icons-material/HelpOutline'); var AngleDoubleRightIcon = require('@mui/icons-material/KeyboardDoubleArrowRight'); var BanIcon = require('@mui/icons-material/NotInterestedOutlined'); var PauseIcon = require('@mui/icons-material/PauseCircleOutlineOutlined'); var cx = require('classnames'); var StatusIconAndText = require('./StatusIconAndText.cjs.js'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefaultCompat(React); var OffIcon__default = /*#__PURE__*/_interopDefaultCompat(OffIcon); var UnknownIcon__default = /*#__PURE__*/_interopDefaultCompat(UnknownIcon); var AngleDoubleRightIcon__default = /*#__PURE__*/_interopDefaultCompat(AngleDoubleRightIcon); var BanIcon__default = /*#__PURE__*/_interopDefaultCompat(BanIcon); var PauseIcon__default = /*#__PURE__*/_interopDefaultCompat(PauseIcon); var cx__default = /*#__PURE__*/_interopDefaultCompat(cx); const useStyles = core.makeStyles( (theme) => core.createStyles({ iconStyles: { height: "0.8em", width: "0.8em", top: "0.125em", position: "relative", flexShrink: 0, marginRight: theme.spacing(0.6) } }) ); const DASH = "-"; const useStatusStyles = core.makeStyles((theme) => ({ success: { "& svg": { fill: theme.palette.status.ok } }, running: { "& svg": { fill: theme.palette.status.running } }, pending: { "& svg": { fill: theme.palette.status.pending } }, warning: { "& svg": { fill: theme.palette.status.warning } }, error: { "& svg": { fill: theme.palette.status.error } } })); const StatusIcon = ({ statusKey, className }) => { const statusStyles = useStatusStyles(); switch (statusKey) { case "ok": return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.success, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusOK, null), " "); case "pending": return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.pending, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusPending, null), " "); case "running": return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.running, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusRunning, null), " "); case "warning": return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.warning, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusWarning, null), " "); case "error": return /* @__PURE__ */ React__default.default.createElement("g", { className: cx__default.default(statusStyles.error, className) }, /* @__PURE__ */ React__default.default.createElement(coreComponents.StatusError, null), " "); default: return null; } }; const Status = ({ status, iconOnly, className, displayStatusText, dataTestId, iconStyles, iconClassName }) => { const classes = useStyles(); const statusProps = { title: displayStatusText || status || "", iconOnly, className, dataTestId }; switch (status) { case "New": case "Idle": case "Pending": case "PipelineNotStarted": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "pending", className: iconClassName }) } ); case "In Progress": case "Progress": case "Progressing": case "Installing": case "InstallReady": case "Replacing": case "Running": case "Updating": case "Upgrading": case "PendingInstall": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "running", className: iconClassName }) } ); case "Cancelled": case "Deleting": case "Expired": case "Not Ready": case "Cancelling": case "Terminating": case "Superseded": case "Uninstalling": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(BanIcon__default.default, { className: classes.iconStyles, style: iconStyles }) } ); case "Warning": case "RequiresApproval": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "warning", className: iconClassName }) } ); case "ImagePullBackOff": case "Error": case "Failed": case "Failure": case "CrashLoopBackOff": case "ErrImagePull": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "error", className: iconClassName }) } ); case "Completed": case "Succeeded": case "Synced": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(StatusIcon, { statusKey: "ok", className: iconClassName }) } ); case "Skipped": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement( AngleDoubleRightIcon__default.default, { className: classes.iconStyles, style: iconStyles } ) } ); case "Paused": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(PauseIcon__default.default, { className: classes.iconStyles, style: iconStyles }) } ); case "Stopped": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(OffIcon__default.default, { className: classes.iconStyles, style: iconStyles }) } ); case "Unknown": return /* @__PURE__ */ React__default.default.createElement( StatusIconAndText.StatusIconAndText, { ...statusProps, icon: /* @__PURE__ */ React__default.default.createElement(UnknownIcon__default.default, { className: classes.iconStyles, style: iconStyles }) } ); default: return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, status || DASH); } }; exports.Status = Status; //# sourceMappingURL=Status.cjs.js.map