@public-ui/react-hook-form-adapter
Version:
React Hook Form adapter for KoliBri - The accessible HTML-Standard.
98 lines (92 loc) • 4.36 kB
JavaScript
;
const reactV19 = require('@public-ui/react-v19');
const React = require('react');
const reactHookForm = require('react-hook-form');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
const React__default = /*#__PURE__*/_interopDefaultCompat(React);
function withController(Component, valueProp) {
const ControllerWrapper = React__default.forwardRef((props, ref) => {
const { name, control, rules, defaultValue, shouldUnregister, disabled, ...componentProps } = props;
return /* @__PURE__ */ React__default.createElement(
reactHookForm.Controller,
{
name,
control,
rules,
defaultValue,
shouldUnregister,
disabled,
render: ({ field, fieldState }) => {
const userHandlers = componentProps._on;
const mergedProps = {
...componentProps,
ref: (element) => {
if (ref) {
if (typeof ref === "function") ref(element);
else ref.current = element;
}
if (element) field.ref(element);
},
_name: name,
_touched: fieldState.isTouched,
_disabled: componentProps._disabled || disabled || field.disabled,
_msg: fieldState.error ? {
_type: "error",
_description: fieldState.error.message || String(fieldState.error)
} : void 0,
_on: {
...userHandlers || {},
onInput: (event, value) => {
field.onChange(value);
userHandlers?.onInput?.(event, value);
},
onChange: (event, value) => {
field.onChange(value);
userHandlers?.onChange?.(event, value);
},
onBlur: (event) => {
field.onBlur();
userHandlers?.onBlur?.(event);
}
}
};
if (valueProp) {
mergedProps[valueProp] = field.value;
}
return /* @__PURE__ */ React__default.createElement(Component, { ...mergedProps });
}
}
);
});
ControllerWrapper.displayName = `withController(${Component.displayName || Component.name || "Component"})`;
return ControllerWrapper;
}
const KolInputTextController = withController(reactV19.KolInputText, "_value");
const KolInputPasswordController = withController(reactV19.KolInputPassword, "_value");
const KolInputEmailController = withController(reactV19.KolInputEmail, "_value");
const KolInputNumberController = withController(reactV19.KolInputNumber, "_value");
const KolInputRangeController = withController(reactV19.KolInputRange, "_value");
const KolInputDateController = withController(reactV19.KolInputDate, "_value");
const KolInputColorController = withController(reactV19.KolInputColor, "_value");
const KolInputFileController = withController(reactV19.KolInputFile);
const KolTextareaController = withController(reactV19.KolTextarea, "_value");
const KolComboboxController = withController(reactV19.KolCombobox, "_value");
const KolSelectController = withController(reactV19.KolSelect, "_value");
const KolSingleSelectController = withController(reactV19.KolSingleSelect, "_value");
const KolInputRadioController = withController(reactV19.KolInputRadio, "_value");
const KolInputCheckboxController = withController(reactV19.KolInputCheckbox, "_checked");
exports.KolComboboxController = KolComboboxController;
exports.KolInputCheckboxController = KolInputCheckboxController;
exports.KolInputColorController = KolInputColorController;
exports.KolInputDateController = KolInputDateController;
exports.KolInputEmailController = KolInputEmailController;
exports.KolInputFileController = KolInputFileController;
exports.KolInputNumberController = KolInputNumberController;
exports.KolInputPasswordController = KolInputPasswordController;
exports.KolInputRadioController = KolInputRadioController;
exports.KolInputRangeController = KolInputRangeController;
exports.KolInputTextController = KolInputTextController;
exports.KolSelectController = KolSelectController;
exports.KolSingleSelectController = KolSingleSelectController;
exports.KolTextareaController = KolTextareaController;
exports.withController = withController;