@openshift-assisted/ui-lib
Version:
React component library for the Assisted Installer UI
28 lines • 2.35 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const common_1 = require("../../../common");
const ClusterHostsTable_1 = tslib_1.__importDefault(require("../hosts/ClusterHostsTable"));
const utils_1 = require("./utils");
const react_core_1 = require("@patternfly/react-core");
require("./HostInventoryExpandable.css");
const use_translation_wrapper_1 = require("../../../common/hooks/use-translation-wrapper");
const exclamation_triangle_icon_1 = tslib_1.__importDefault(require("@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon"));
const ExpandableSectionTitle = ({ hostsCount, icon, }) => (react_1.default.createElement("span", null,
`Host inventory ${hostsCount > 0 ? `(${hostsCount})` : ''}`,
icon && react_1.default.createElement("span", { className: "pf-v5-u-ml-sm" }, icon)));
const HostInventoryExpandable = ({ cluster }) => {
const { t } = (0, use_translation_wrapper_1.useTranslation)();
const [isExpanded, setIsExpanded] = (0, react_1.useState)(false);
const hosts = cluster.hosts || [];
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment
const mostSevereHostStatus = (0, utils_1.getMostSevereHostStatus)(hosts);
const hostStatusDef = mostSevereHostStatus ? (0, common_1.hostStatus)(t)[mostSevereHostStatus] : null;
const someHostHasTimeout = (0, utils_1.getHostsWithTimeout)(hosts);
const warningIcon = react_1.default.createElement(common_1.UiIcon, { size: "sm", status: "warning", icon: react_1.default.createElement(exclamation_triangle_icon_1.default, null) });
return (react_1.default.createElement(react_core_1.ExpandableSection, { toggleContent: react_1.default.createElement(ExpandableSectionTitle, { hostsCount: hosts.length, icon: someHostHasTimeout ? warningIcon : hostStatusDef === null || hostStatusDef === void 0 ? void 0 : hostStatusDef.icon }), onToggle: () => setIsExpanded(!isExpanded), isExpanded: isExpanded, className: "host-inventory-expandable", id: "host-inventory-expandable" },
react_1.default.createElement(ClusterHostsTable_1.default, { cluster: cluster, skipDisabled: true })));
};
exports.default = HostInventoryExpandable;
//# sourceMappingURL=HostInventoryExpandable.js.map