@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
JavaScript
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;