import { ChangeEvent, FocusEvent } from 'react'; import { FieldValues, useController, UseControllerProps } from 'react-hook-form'; import { isBoolean, isString } from 'lodash'; import { useDefaultProps } from '../../hooks'; import { useLocalization } from '../../localization'; import { Checkbox, CheckBoxProps } from '../checkbox'; export type RHFCheckBoxProps = UseControllerProps & Omit; function RHFCheckbox(inProps: RHFCheckBoxProps) { const { /** React Hook Form */ name, rules, control, disabled, defaultValue, shouldUnregister, /** React Hook Form */ label, required, helperText, onChange, onBlur, ...props } = useDefaultProps({ name: 'ReevolveRHFCheckbox', props: inProps }); const { translate } = useLocalization(); const { field, fieldState: { error } } = useController({ name, defaultValue, disabled, shouldUnregister, control, rules: rules && { ...rules, required: rules?.required === true ? translate('validation.required', { label }) : rules?.required } }); function onChangeHandler(e: ChangeEvent, isChecked: boolean) { field.onChange(isChecked); onChange?.(e, isChecked); } function onBlurHandler(e: FocusEvent) { field.onBlur(); onBlur?.(e); } return ( ); } declare module '@mui/material' { interface Components { ReevolveRHFCheckbox?: { defaultProps?: Partial; }; } } export default RHFCheckbox;