UNPKG

@keycloakify/keycloak-admin-ui

Version:
22 lines 2.59 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { Button, FormGroup, NumberInput, Split, SplitItem, Switch, TextInput, ValidatedOptions, } from "@patternfly/react-core"; import { MinusCircleIcon } from "@patternfly/react-icons"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormErrorText, HelpItem } from "../../ui-shared"; import "./policy-row.css"; export const PolicyRow = ({ policy: { id, configType, defaultValue, displayName }, onRemove, }) => { const { t } = useTranslation(); const { control, register, formState: { errors }, } = useFormContext(); const error = errors[id]; return (_jsxs(FormGroup, { label: displayName, fieldId: id, isRequired: true, labelIcon: _jsx(HelpItem, { helpText: t(`passwordPoliciesHelp.${id}`), fieldLabelId: id }), children: [_jsxs(Split, { children: [_jsxs(SplitItem, { isFilled: true, children: [configType && configType !== "int" && (_jsx(TextInput, { id: id, "data-testid": id, ...register(id, { required: true }), defaultValue: defaultValue, validated: error ? ValidatedOptions.error : ValidatedOptions.default })), configType === "int" && (_jsx(Controller, { name: id, defaultValue: Number.parseInt(defaultValue || "0"), control: control, render: ({ field }) => { const MIN_VALUE = 0; const setValue = (newValue) => field.onChange(Math.max(newValue, MIN_VALUE)); const value = Number(field.value); return (_jsx(NumberInput, { id: id, value: value, min: MIN_VALUE, onPlus: () => setValue(value + 1), onMinus: () => setValue(value - 1), onChange: (event) => { const newValue = Number(event.currentTarget.value); setValue(!isNaN(newValue) ? newValue : 0); }, className: "keycloak__policies_authentication__number-field" })); } })), !configType && (_jsx(Switch, { id: id, label: t("on"), labelOff: t("off"), isChecked: true, isDisabled: true, "aria-label": displayName }))] }), _jsx(SplitItem, { children: _jsx(Button, { "data-testid": `remove-${id}`, variant: "link", className: "keycloak__policies_authentication__minus-icon", onClick: () => onRemove(id), "aria-label": t("remove"), children: _jsx(MinusCircleIcon, {}) }) })] }), error && _jsx(FormErrorText, { message: t("required") })] })); }; //# sourceMappingURL=PolicyRow.js.map