UNPKG

@keycloakify/keycloak-admin-ui

Version:
21 lines 1.89 kB
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