UNPKG

@openshift-assisted/ui-lib

Version:

React component library for the Assisted Installer UI

109 lines 7.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSupportLevelInfo = exports.getFeatureSupportLevelTitle = exports.FullySupportedCluster = exports.LimitedSupportedCluster = void 0; const tslib_1 = require("tslib"); const check_circle_icon_1 = require("@patternfly/react-icons/dist/js/icons/check-circle-icon"); const info_circle_icon_1 = require("@patternfly/react-icons/dist/js/icons/info-circle-icon"); const react_1 = tslib_1.__importDefault(require("react")); const global_success_color_100_1 = require("@patternfly/react-tokens/dist/js/global_success_color_100"); const react_core_1 = require("@patternfly/react-core"); const types_1 = require("../../../common/types"); const docs_links_1 = require("../../../common/config/docs_links"); const ExternalLink_1 = tslib_1.__importDefault(require("../../../common/components/ui/ExternalLink")); const common_1 = require("../../../common"); const utils_1 = require("../../../common/components/newFeatureSupportLevels/utils"); const WithErrorBoundary_1 = require("../../../common/components/ErrorHandling/WithErrorBoundary"); const use_translation_wrapper_1 = require("../../../common/hooks/use-translation-wrapper"); const OpenShiftVersionsContext_1 = require("../clusterWizard/OpenShiftVersionsContext"); const newFeatureSupportLevels_1 = require("../../../common/components/newFeatureSupportLevels"); const getFeatureReviewText = (featureId) => { switch (featureId) { case 'SNO': return 'Install single node OpenShift (SNO)'; case 'VIP_AUTO_ALLOC': return 'Allocate IPs via DHCP server'; case 'ARM64_ARCHITECTURE': return 'Use ARM architecture for the cluster'; default: return featureId; } }; const getPreviewSupportLevelTitle = (supportLevel) => { if (supportLevel === 'dev-preview') { return 'Developer Preview Features'; } return react_1.default.createElement(ExternalLink_1.default, { href: docs_links_1.TECH_SUPPORT_LEVEL_LINK }, "Technology Preview Features"); }; const getPreviewFeatureList = (supportLevelMap) => { const previewSupportLevels = { 'tech-preview': [], 'dev-preview': [], }; for (const [featureId, supportLevel] of Object.entries(supportLevelMap)) { if (!(0, types_1.isPreviewSupportLevel)(supportLevel)) { continue; } previewSupportLevels[supportLevel].push(featureId); } let supportLevel; //Show only one preview support level list, first priority to developer preview features if (previewSupportLevels['dev-preview'].length) { supportLevel = 'dev-preview'; } else if (previewSupportLevels['tech-preview'].length) { supportLevel = 'tech-preview'; } else { return null; } const featureList = previewSupportLevels[supportLevel].map((featureId) => (react_1.default.createElement(react_core_1.TextListItem, { key: featureId }, getFeatureReviewText(featureId)))); return (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(react_core_1.TextListItem, null, getPreviewSupportLevelTitle(supportLevel), react_1.default.createElement(react_core_1.TextList, null, featureList)))); }; const LimitedSupportedCluster = ({ clusterFeatureSupportLevels, showVersionWarning, }) => (react_1.default.createElement(react_core_1.TextContent, null, showVersionWarning && (react_1.default.createElement(react_core_1.Text, null, react_1.default.createElement(common_1.UiIcon, { size: "sm", icon: react_1.default.createElement(info_circle_icon_1.InfoCircleIcon, { color: "var(--pf-v5-global--info-color--100)" }) }), "\u00A0The installed OpenShift version is not production-ready")), Object.keys(clusterFeatureSupportLevels).length > 0 && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(common_1.UiIcon, { size: "sm", icon: react_1.default.createElement(info_circle_icon_1.InfoCircleIcon, { color: "var(--pf-v5-global--info-color--100)" }) }), "\u00A0Your cluster will be subject to support limitations because it includes:", react_1.default.createElement(react_core_1.TextList, null, getPreviewFeatureList(clusterFeatureSupportLevels)))))); exports.LimitedSupportedCluster = LimitedSupportedCluster; const FullySupportedCluster = () => (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(check_circle_icon_1.CheckCircleIcon, { color: global_success_color_100_1.global_success_color_100.value }), "\u00A0Your installed cluster will be fully supported")); exports.FullySupportedCluster = FullySupportedCluster; const getFeatureSupportLevelTitle = (fullySupported) => { const supportLevel = fullySupported ? 'Full' : 'Limited'; return `Cluster support level: ${supportLevel}`; }; exports.getFeatureSupportLevelTitle = getFeatureSupportLevelTitle; const getSupportLevelInfo = (cluster, featureSupportLevelData, isSupportedOpenShiftVersion, t) => { const limitedClusterFeatures = (0, utils_1.getLimitedFeatureSupportLevels)(cluster, featureSupportLevelData, t); const hasSupportedVersion = isSupportedOpenShiftVersion(cluster.openshiftVersion); return { limitedClusterFeatures, hasSupportedVersion, isFullySupported: hasSupportedVersion && Object.keys(limitedClusterFeatures || {}).length === 0, }; }; exports.getSupportLevelInfo = getSupportLevelInfo; const SupportLevel = ({ cluster }) => { const { t } = (0, use_translation_wrapper_1.useTranslation)(); const featureSupportLevelData = (0, newFeatureSupportLevels_1.useNewFeatureSupportLevel)(); const { isSupportedOpenShiftVersion } = (0, OpenShiftVersionsContext_1.useOpenShiftVersionsContext)(); const { limitedClusterFeatures, hasSupportedVersion, isFullySupported } = react_1.default.useMemo(() => (0, exports.getSupportLevelInfo)(cluster, featureSupportLevelData, isSupportedOpenShiftVersion, t), [cluster, featureSupportLevelData, t, isSupportedOpenShiftVersion]); if (!limitedClusterFeatures) { return null; } return (react_1.default.createElement(common_1.DetailItem, { title: (0, exports.getFeatureSupportLevelTitle)(isFullySupported), value: isFullySupported ? (react_1.default.createElement(exports.FullySupportedCluster, null)) : (react_1.default.createElement(exports.LimitedSupportedCluster, { clusterFeatureSupportLevels: limitedClusterFeatures, showVersionWarning: !hasSupportedVersion })), classNameValue: 'pf-v5-u-mb-md', testId: "feature-support-levels" })); }; const ClusterFeatureSupportLevelsDetailItem = (_a) => { var props = tslib_1.__rest(_a, []); return (react_1.default.createElement(WithErrorBoundary_1.WithErrorBoundary, { title: "Failed to load feature support levels" }, react_1.default.createElement(SupportLevel, Object.assign({}, props)))); }; exports.default = ClusterFeatureSupportLevelsDetailItem; //# sourceMappingURL=ReviewClusterFeatureSupportLevels.js.map