@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
21 lines • 1.89 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { NumberInput, ValidatedOptions, } from "@patternfly/react-core";
import { Controller, useFormContext, } from "react-hook-form";
import { getRuleValue } from "../../ui-shared/utils/getRuleValue";
import { FormLabel } from "../../ui-shared/controls/FormLabel";
export const NumberControl = ({ name, label, controller, labelIcon, ...rest }) => {
var _a;
const { control, formState: { errors }, } = useFormContext();
return (_jsx(FormLabel, { name: name, label: label, isRequired: ((_a = controller.rules) === null || _a === void 0 ? void 0 : _a.required) === true, error: errors[name], labelIcon: labelIcon, children: _jsx(Controller, { ...controller, name: name, control: control, render: ({ field }) => {
var _a, _b, _c, _d;
const required = !!((_a = controller.rules) === null || _a === void 0 ? void 0 : _a.required);
const min = getRuleValue((_b = controller.rules) === null || _b === void 0 ? void 0 : _b.min);
const value = (_c = field.value) !== null && _c !== void 0 ? _c : controller.defaultValue;
const setValue = (newValue) => field.onChange(min !== undefined ? Math.max(newValue, Number(min)) : newValue);
return (_jsx(NumberInput, { ...rest, id: name, value: value, validated: errors[name] ? ValidatedOptions.error : ValidatedOptions.default, required: required, min: Number(min), max: Number((_d = controller.rules) === null || _d === void 0 ? void 0 : _d.max), onPlus: () => setValue(value + 1), onMinus: () => setValue(value - 1), onChange: (event) => {
const newValue = Number(event.currentTarget.value);
setValue(!isNaN(newValue) ? newValue : controller.defaultValue);
} }));
} }) }));
};
//# sourceMappingURL=NumberControl.js.map