Skip to content

Commit

Permalink
move validation => rules prop in every component to stick to well kno…
Browse files Browse the repository at this point in the history
…wn property names of RHF
  • Loading branch information
dohomi committed Apr 8, 2024
1 parent 389d9fd commit dc8ff3d
Show file tree
Hide file tree
Showing 17 changed files with 78 additions and 81 deletions.
2 changes: 1 addition & 1 deletion apps/storybook/stories/DatePickerElement.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export const RequiredCustomMessage: Story = {
label: 'Required Picker',
name: 'requiredCustomMessage',
required: true,
validation: {required: 'Custom required message'},
rules: {required: 'Custom required message'},
},
}

Expand Down
2 changes: 1 addition & 1 deletion apps/storybook/stories/DateTimePickerElement.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const RequiredPickerCustom: Story = {
label: 'Datetime Picker',
name: 'required_picker_custom',
required: true,
validation: {required: 'Custom required message'},
rules: {required: 'Custom required message'},
},
}

Expand Down
2 changes: 1 addition & 1 deletion apps/storybook/stories/MobileDatePickerElement.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export const RequiredPickerCustom: Story = {
label: 'Mobile Datepicker',
name: 'required_picker_custom',
required: true,
validation: {required: 'Custom required message'},
rules: {required: 'Custom required message'},
},
}

Expand Down
2 changes: 1 addition & 1 deletion apps/storybook/stories/TimePickerElement.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export const RequiredPickerCustom: Story = {
label: 'Time Picker',
name: 'required_picker_custom',
required: true,
validation: {required: 'Custom required message'},
rules: {required: 'Custom required message'},
},
}

Expand Down
2 changes: 1 addition & 1 deletion packages/rhf-mui/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "7.0.0-beta.1",
"version": "7.0.0-beta.2",
"license": "MIT",
"repository": "https://github.com/dohomi/react-hook-form-mui",
"homepage": "https://react-hook-form-material-ui.vercel.app",
Expand Down
12 changes: 6 additions & 6 deletions packages/rhf-mui/src/CheckboxElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export type CheckboxElementProps<
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
TValue = unknown
> = Omit<CheckboxProps, 'name'> & {
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
name: TName
parseError?: (error: FieldError) => ReactNode
label?: FormControlLabelProps['label']
Expand Down Expand Up @@ -61,7 +61,7 @@ const CheckboxElement = forwardRef(function CheckboxElement<
) {
const {
name,
validation = {},
rules = {},
required,
parseError,
label,
Expand All @@ -76,10 +76,10 @@ const CheckboxElement = forwardRef(function CheckboxElement<
const errorMsgFn = useFormError()
const customErrorFn = parseError || errorMsgFn

const rules = {
...validation,
const rulesTmp = {
...rules,
...(required &&
!validation.required && {
!rules.required && {
required: 'This field is required',
}),
}
Expand All @@ -91,7 +91,7 @@ const CheckboxElement = forwardRef(function CheckboxElement<
name,
control,
disabled: rest.disabled,
rules,
rules: rulesTmp,
})

const {value, onChange} = useTransform<TFieldValues, TName, TValue>({
Expand Down
14 changes: 7 additions & 7 deletions packages/rhf-mui/src/DatePickerElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type DatePickerElementProps<
required?: boolean
isDate?: boolean
parseError?: (error: FieldError | DateValidationError) => ReactNode
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
control?: Control<TFieldValues>
inputProps?: TextFieldProps
helperText?: TextFieldProps['helperText']
Expand Down Expand Up @@ -78,7 +78,7 @@ const DatePickerElement = forwardRef(function DatePickerElement<
parseError,
name,
required,
validation = {},
rules = {},
inputProps,
control,
textReadOnly,
Expand All @@ -99,10 +99,10 @@ const DatePickerElement = forwardRef(function DatePickerElement<
...overwriteErrorMessages,
}

const rules = {
...validation,
const rulesTmp = {
...rules,
...(required &&
!validation.required && {
!rules.required && {
required: 'This field is required',
}),
validate: {
Expand All @@ -123,7 +123,7 @@ const DatePickerElement = forwardRef(function DatePickerElement<
})
return internalError == null || errorMessages[internalError]
},
...validation.validate,
...rules.validate,
},
}

Expand All @@ -133,7 +133,7 @@ const DatePickerElement = forwardRef(function DatePickerElement<
} = useController({
name,
control,
rules,
rules: rulesTmp,
disabled: rest.disabled,
defaultValue: null as PathValue<TFieldValues, TName>,
})
Expand Down
14 changes: 7 additions & 7 deletions packages/rhf-mui/src/DateTimePickerElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type DateTimePickerElementProps<
required?: boolean
isDate?: boolean
parseError?: (error: FieldError) => ReactNode
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
control?: Control<TFieldValues>
inputProps?: TextFieldProps
helperText?: TextFieldProps['helperText']
Expand Down Expand Up @@ -78,7 +78,7 @@ const DateTimePickerElement = forwardRef(function DateTimePickerElement<
parseError,
name,
required,
validation = {},
rules = {},
inputProps,
control,
textReadOnly,
Expand All @@ -98,10 +98,10 @@ const DateTimePickerElement = forwardRef(function DateTimePickerElement<
...overwriteErrorMessages,
}

const rules = {
...validation,
const rulesTmp = {
...rules,
...(required &&
!validation.required && {
!rules.required && {
required: 'This field is required',
}),
validate: {
Expand Down Expand Up @@ -129,7 +129,7 @@ const DateTimePickerElement = forwardRef(function DateTimePickerElement<

return internalError == null || errorMessages[internalError]
},
...validation.validate,
...rules.validate,
},
}

Expand All @@ -138,7 +138,7 @@ const DateTimePickerElement = forwardRef(function DateTimePickerElement<
fieldState: {error},
} = useController({
name,
rules,
rules: rulesTmp,
control,
disabled: rest.disabled,
defaultValue: null as PathValue<TFieldValues, TName>,
Expand Down
14 changes: 7 additions & 7 deletions packages/rhf-mui/src/MobileDatePickerElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type MobileDatePickerElementProps<
required?: boolean
isDate?: boolean
parseError?: (error: FieldError) => ReactNode
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
control?: Control<TFieldValues>
inputProps?: TextFieldProps
helperText?: TextFieldProps['helperText']
Expand Down Expand Up @@ -77,7 +77,7 @@ const MobileDatePickerElement = forwardRef(function MobileDatePickerElement<
parseError,
name,
required,
validation = {},
rules = {},
inputProps,
control,
slotProps,
Expand All @@ -97,10 +97,10 @@ const MobileDatePickerElement = forwardRef(function MobileDatePickerElement<
...overwriteErrorMessages,
}

const rules = {
...validation,
const rulesTmp = {
...rules,
...(required &&
!validation.required && {
!rules.required && {
required: 'This field is required',
}),
validate: {
Expand All @@ -121,7 +121,7 @@ const MobileDatePickerElement = forwardRef(function MobileDatePickerElement<
})
return internalError == null || errorMessages[internalError]
},
...validation.validate,
...rules.validate,
},
}

Expand All @@ -131,7 +131,7 @@ const MobileDatePickerElement = forwardRef(function MobileDatePickerElement<
} = useController({
name,
control,
rules,
rules: rulesTmp,
disabled: rest.disabled,
defaultValue: null as PathValue<TFieldValues, TName>,
})
Expand Down
12 changes: 6 additions & 6 deletions packages/rhf-mui/src/MultiSelectElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type MultiSelectElementProps<
itemValue?: string
itemLabel?: string
required?: boolean
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
name: TName
parseError?: (error: FieldError) => ReactNode
minWidth?: number
Expand Down Expand Up @@ -86,7 +86,7 @@ const MultiSelectElement = forwardRef(function MultiSelectElement<
itemValue = '',
itemLabel = 'label',
required = false,
validation = {},
rules = {},
parseError,
name,
menuMaxHeight = ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
Expand All @@ -112,10 +112,10 @@ const MultiSelectElement = forwardRef(function MultiSelectElement<
return optionVal === item
})?.[itemLabel] ?? item

const rules = {
...validation,
const rulesTmp = {
...rules,
...(required &&
!validation.required && {
!rules.required && {
required: 'This field is required',
}),
}
Expand All @@ -125,7 +125,7 @@ const MultiSelectElement = forwardRef(function MultiSelectElement<
fieldState: {error},
} = useController({
name,
rules,
rules: rulesTmp,
disabled: rest.disabled,
control,
})
Expand Down
2 changes: 1 addition & 1 deletion packages/rhf-mui/src/PasswordRepeatElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const PasswordRepeatElement = forwardRef(function PasswordRepeatElement<
control={control}
{...rest}
ref={ref}
validation={{
rules={{
validate: (value: string) => {
return (
value === pwValue ||
Expand Down
13 changes: 6 additions & 7 deletions packages/rhf-mui/src/RadioButtonGroup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export type RadioButtonGroupProps<
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
TValue = unknown
> = {
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
options: TValue[]
helperText?: ReactNode
name: TName
Expand Down Expand Up @@ -91,26 +91,25 @@ const RadioButtonGroup = forwardRef(function RadioButtonGroup<
disabled,
formLabelProps,
transform,
validation = {},
rules = {},
...rest
} = props
const theme = useTheme()

const errorMsgFn = useFormError()
const customErrorFn = parseError || errorMsgFn

const rules = {
...validation,
...(required &&
!validation.required && {required: 'This field is required'}),
const rulesTmp = {
...rules,
...(required && !rules.required && {required: 'This field is required'}),
}

const {
field,
fieldState: {error},
} = useController({
name,
rules,
rules: rulesTmp,
disabled,
control,
})
Expand Down
12 changes: 6 additions & 6 deletions packages/rhf-mui/src/SelectElement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export type SelectElementProps<
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
TValue = unknown
> = Omit<TextFieldProps, 'name' | 'type' | 'onChange'> & {
validation?: UseControllerProps<TFieldValues, TName>['rules']
rules?: UseControllerProps<TFieldValues, TName>['rules']
name: TName
options?: TValue[]
valueKey?: string
Expand Down Expand Up @@ -62,7 +62,7 @@ const SelectElement = forwardRef(function SelectElement<
parseError,
type,
objectOnChange,
validation = {},
rules = {},
control,
inputRef,
transform,
Expand All @@ -73,10 +73,10 @@ const SelectElement = forwardRef(function SelectElement<
const customErrorFn = parseError || errorMsgFn
const isNativeSelect = !!rest.SelectProps?.native

const rules = {
...validation,
const rulesTmp = {
...rules,
...(required &&
!validation.required && {
!rules.required && {
required: 'This field is required',
}),
}
Expand All @@ -86,7 +86,7 @@ const SelectElement = forwardRef(function SelectElement<
fieldState: {error},
} = useController({
name,
rules,
rules: rulesTmp,
disabled: rest.disabled,
control,
})
Expand Down
Loading

0 comments on commit dc8ff3d

Please sign in to comment.