UNPKG

@public-ui/react-hook-form-adapter

Version:

React Hook Form adapter for KoliBri - The accessible HTML-Standard.

98 lines (92 loc) 4.36 kB
'use strict'; 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;