UNPKG

@openshift-assisted/ui-lib

Version:

React component library for the Assisted Installer UI

49 lines 3.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AvailableSubnetsControl = void 0; const tslib_1 = require("tslib"); const react_1 = tslib_1.__importStar(require("react")); const react_redux_1 = require("react-redux"); const react_core_1 = require("@patternfly/react-core"); const formik_1 = require("formik"); const ip_address_1 = require("ip-address"); const common_1 = require("../../../../common"); const selectors_1 = require("../../../store/slices/current-cluster/selectors"); const SubnetsDropdown_1 = require("./SubnetsDropdown"); const subnetSort = (subA, subB) => subA.humanized.localeCompare(subB.humanized); const useAutoSelectSingleAvailableSubnet = (autoSelectNetwork, setFieldValue, cidr, clusterId) => { (0, react_1.useEffect)(() => { if (autoSelectNetwork) { setFieldValue('machineNetworks', [{ cidr, clusterId }], true); } }, [autoSelectNetwork, cidr, clusterId, setFieldValue]); }; const AvailableSubnetsControl = ({ clusterId, hostSubnets, isRequired = false, isDisabled, }) => { var _a; const { values, errors, setFieldValue } = (0, formik_1.useFormikContext)(); const isDualStack = values.stackType === common_1.DUAL_STACK; const { isViewerMode } = (0, react_redux_1.useSelector)(selectors_1.selectCurrentClusterPermissionsState); const IPv4Subnets = hostSubnets .filter((subnet) => ip_address_1.Address4.isValid(subnet.subnet)) .sort(subnetSort); const IPv6Subnets = hostSubnets .filter((subnet) => ip_address_1.Address6.isValid(subnet.subnet)) .sort(subnetSort); const cidr = IPv4Subnets.length >= 1 ? IPv4Subnets[0].subnet : common_1.NO_SUBNET_SET; const hasEmptySelection = ((_a = values.machineNetworks) !== null && _a !== void 0 ? _a : []).length === 0; const autoSelectNetwork = !isViewerMode && hasEmptySelection; useAutoSelectSingleAvailableSubnet(autoSelectNetwork, setFieldValue, cidr, clusterId); return (react_1.default.createElement(react_core_1.FormGroup, { label: "Machine network", labelInfo: isDualStack && 'Primary', fieldId: "machine-networks", isRequired: isRequired }, react_1.default.createElement(formik_1.FieldArray, { name: "machineNetworks" }, () => { var _a; return (react_1.default.createElement(react_core_1.Stack, null, isDualStack ? ((_a = values.machineNetworks) === null || _a === void 0 ? void 0 : _a.map((_machineNetwork, index) => { const machineSubnets = index === 1 ? IPv6Subnets : IPv4Subnets; return (react_1.default.createElement(react_core_1.StackItem, { key: index }, react_1.default.createElement(SubnetsDropdown_1.SubnetsDropdown, { name: `machineNetworks.${index}.cidr`, machineSubnets: machineSubnets, isDisabled: isDisabled }))); })) : (react_1.default.createElement(react_core_1.StackItem, null, react_1.default.createElement(SubnetsDropdown_1.SubnetsDropdown, { name: `machineNetworks.0.cidr`, machineSubnets: IPv4Subnets, isDisabled: isDisabled }))))); }), typeof errors.machineNetworks === 'string' && (react_1.default.createElement(react_core_1.Alert, { variant: react_core_1.AlertVariant.warning, title: errors.machineNetworks, isInline: true })))); }; exports.AvailableSubnetsControl = AvailableSubnetsControl; //# sourceMappingURL=AvailableSubnetsControl.js.map