@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
22 lines • 2.59 kB
JavaScript
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