@openshift-assisted/ui-lib
Version:
React component library for the Assisted Installer UI
34 lines • 3.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importDefault(require("react"));
const react_core_1 = require("@patternfly/react-core");
const exclamation_triangle_icon_1 = require("@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon");
const global_warning_color_100_1 = require("@patternfly/react-tokens/dist/js/global_warning_color_100");
const utils_1 = require("./utils");
const constants_1 = require("../constants");
const use_translation_wrapper_1 = require("../../hooks/use-translation-wrapper");
const utils_2 = require("../../utils");
const Hostname = ({ host, inventory = {}, onEditHostname, title, className, hosts, readonly = false, }) => {
const hostname = title || (0, utils_1.getHostname)(host, inventory) || constants_1.DASH;
const isNotLocalhost = hostname !== 'localhost';
const isUnique = hosts
? !hosts.find((h) => {
const hostInventory = (0, utils_2.stringToJSON)(h.inventory || '') || {};
return h.id !== host.id && (0, utils_1.getHostname)(h, hostInventory) === hostname;
})
: true;
const isValid = isUnique && isNotLocalhost;
const body = (react_1.default.createElement(react_core_1.Flex, { alignItems: { default: 'alignItemsCenter' } },
onEditHostname && !isValid && (react_1.default.createElement(react_core_1.FlexItem, { className: 'pf-v5-u-mr-xs' },
react_1.default.createElement(exclamation_triangle_icon_1.ExclamationTriangleIcon, { color: global_warning_color_100_1.global_warning_color_100.value }))),
react_1.default.createElement(react_core_1.FlexItem, null, hostname)));
const { t } = (0, use_translation_wrapper_1.useTranslation)();
return !readonly && onEditHostname ? (isValid ? (react_1.default.createElement(react_core_1.Button, { variant: react_core_1.ButtonVariant.link, isInline: true, onClick: onEditHostname, className: className }, body)) : (react_1.default.createElement(react_core_1.Popover, { headerContent: react_1.default.createElement(react_core_1.Flex, { alignItems: { default: 'alignItemsCenter' } },
react_1.default.createElement(react_core_1.FlexItem, { className: 'pf-v5-u-mr-xs' },
react_1.default.createElement(exclamation_triangle_icon_1.ExclamationTriangleIcon, { color: global_warning_color_100_1.global_warning_color_100.value })),
react_1.default.createElement(react_core_1.FlexItem, null, t('ai:Hostname is not valid'))), bodyContent: !isNotLocalhost ? t('ai:Hostname can not be localhost') : t('ai:Hostname is not unique'), footerContent: react_1.default.createElement(react_core_1.Button, { variant: react_core_1.ButtonVariant.link, isInline: true, className: className, onClick: onEditHostname }, t('ai:Change hostname')), minWidth: "30rem", maxWidth: "50rem", hideOnOutsideClick: true, zIndex: 300 },
react_1.default.createElement(react_core_1.Button, { variant: react_core_1.ButtonVariant.link, isInline: true, className: className }, body)))) : (body);
};
exports.default = Hostname;
//# sourceMappingURL=Hostname.js.map