UNPKG

@openshift-console/dynamic-plugin-sdk

Version:

Provides core APIs, types and utilities used by dynamic plugins at runtime.

96 lines (95 loc) 3.94 kB
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime"; import { BanIcon, ClipboardListIcon, HourglassHalfIcon, HourglassStartIcon, NotStartedIcon, SyncAltIcon, UnknownIcon, } from '@patternfly/react-icons'; import { DASH } from '../../constants'; import { YellowExclamationTriangleIcon } from './icons'; import { ErrorStatus, InfoStatus, ProgressStatus, SuccessStatus } from './statuses'; import StatusIconAndText from './StatusIconAndText'; /** * Component for displaying a status message * @param {string} status - type of status to be displayed * @param {string} [title] - (optional) status text * @param {boolean} [iconOnly] - (optional) if true, only displays icon * @param {boolean} [noTooltip] - (optional) if true, tooltip won't be displayed * @param {string} [className] - (optional) additional class name for the component * @param {string} [popoverTitle] - (optional) title for popover * @param {ReactNode} [children] - (optional) children for the component * @example * ```tsx * <Status status='Warning' /> * ``` */ const Status = ({ status, title, children, iconOnly, noTooltip, className, }) => { const statusProps = { title: title || status, iconOnly, noTooltip, className }; switch (status) { case 'New': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(HourglassStartIcon, {}) }); case 'Pending': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(HourglassHalfIcon, {}) }); case 'Planning': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(ClipboardListIcon, {}) }); case 'ContainerCreating': case 'UpgradePending': case 'PendingUpgrade': case 'PendingRollback': return _jsx(ProgressStatus, { ...statusProps }); case 'In Progress': case 'Installing': case 'InstallReady': case 'Replacing': case 'Running': case 'Updating': case 'Upgrading': case 'PendingInstall': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(SyncAltIcon, {}) }); case 'Cancelled': case 'Deleting': case 'Expired': case 'Not Ready': case 'Cancelling': case 'Terminating': case 'Superseded': case 'Uninstalling': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(BanIcon, {}) }); case 'Warning': case 'RequiresApproval': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(YellowExclamationTriangleIcon, {}) }); case 'ContainerCannotRun': case 'CrashLoopBackOff': case 'Critical': case 'ErrImagePull': case 'Error': case 'Failed': case 'Failure': case 'ImagePullBackOff': case 'InstallCheckFailed': case 'Lost': case 'Rejected': case 'UpgradeFailed': return _jsx(ErrorStatus, { ...statusProps, children: children }); case 'Accepted': case 'Active': case 'Bound': case 'Complete': case 'Completed': case 'Created': case 'Enabled': case 'Succeeded': case 'Ready': case 'Up to date': case 'Loaded': case 'Provisioned as node': case 'Preferred': case 'Connected': case 'Deployed': return _jsx(SuccessStatus, { ...statusProps }); case 'Info': return _jsx(InfoStatus, { ...statusProps, children: children }); case 'Unknown': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(UnknownIcon, {}) }); case 'PipelineNotStarted': return _jsx(StatusIconAndText, { ...statusProps, icon: _jsx(NotStartedIcon, {}) }); default: return status ? _jsx(StatusIconAndText, { ...statusProps }) : _jsx(_Fragment, { children: DASH }); } }; export default Status;