Skip to content

Commit ee7c73e

Browse files
authored
Merge pull request #319 from sadik-malik/master
Bump @mui/x-date-pickers to 7.17.0 for updated validation import paths
2 parents d22812d + e067b2e commit ee7c73e

8 files changed

+295
-274
lines changed

apps/nextjs/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"@mui/icons-material": "6.0.1",
1919
"@mui/material": "6.0.1",
2020
"@mui/system": "6.0.1",
21-
"@mui/x-date-pickers": "7.15.0",
21+
"@mui/x-date-pickers": "7.17.0",
2222
"eslint": "^8",
2323
"next": "14.2.10",
2424
"react": "18.3.1",

apps/storybook/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"@mui/icons-material": "6.0.1",
4242
"@mui/material": "6.0.1",
4343
"@mui/system": "6.0.1",
44-
"@mui/x-date-pickers": "7.15.0",
44+
"@mui/x-date-pickers": "7.17.0",
4545
"react": "18.3.1",
4646
"react-dom": "18.3.1",
4747
"react-hook-form-mui": "portal:../../packages/rhf-mui"

packages/rhf-mui/package.json

+16-5
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,26 @@
33
"license": "MIT",
44
"repository": "https://github.com/dohomi/react-hook-form-mui",
55
"homepage": "https://react-hook-form-material-ui.vercel.app",
6-
"keywords": ["react", "mui", "material-ui", "react-hook-form"],
7-
"workspaces": ["apps/*", "packages/*"],
6+
"keywords": [
7+
"react",
8+
"mui",
9+
"material-ui",
10+
"react-hook-form"
11+
],
12+
"workspaces": [
13+
"apps/*",
14+
"packages/*"
15+
],
816
"name": "react-hook-form-mui",
917
"author": "Dominic Garms",
1018
"source": "src/index.ts",
1119
"main": "dist/index.js",
1220
"module": "dist/esm/index.js",
1321
"typings": "dist/index.d.ts",
14-
"files": ["dist/**", "src/**"],
22+
"files": [
23+
"dist/**",
24+
"src/**"
25+
],
1526
"exports": {
1627
"./package.json": "./package.json",
1728
".": {
@@ -46,7 +57,7 @@
4657
"peerDependencies": {
4758
"@mui/icons-material": ">= 5.x <7",
4859
"@mui/material": ">= 5.x <7",
49-
"@mui/x-date-pickers": ">=7.0.0 <8",
60+
"@mui/x-date-pickers": ">=7.17.0 <8",
5061
"react": ">=17 <19",
5162
"react-hook-form": ">=7.33.1"
5263
},
@@ -66,7 +77,7 @@
6677
"@mui/icons-material": "6.0.1",
6778
"@mui/material": "6.0.1",
6879
"@mui/system": "6.0.1",
69-
"@mui/x-date-pickers": "7.15.0",
80+
"@mui/x-date-pickers": "7.17.0",
7081
"@swc/core": "^1.3.17",
7182
"@types/react": "^18.0.14",
7283
"@types/react-dom": "^18.0.5",
+64-68
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import {
2-
DatePicker,
3-
DatePickerProps,
4-
DatePickerSlotProps,
5-
} from '@mui/x-date-pickers/DatePicker'
61
import {
72
Control,
83
FieldError,
@@ -11,51 +6,52 @@ import {
116
PathValue,
127
useController,
138
UseControllerProps,
14-
} from 'react-hook-form'
15-
import {TextFieldProps, useForkRef} from '@mui/material'
16-
import {useFormError} from './FormErrorProvider'
17-
import {forwardRef, ReactNode, Ref, RefAttributes} from 'react'
9+
} from "react-hook-form";
10+
import { TextFieldProps, useForkRef } from "@mui/material";
11+
import { useFormError } from "./FormErrorProvider";
12+
import { forwardRef, ReactNode, Ref, RefAttributes } from "react";
1813
import {
14+
DatePicker,
15+
DatePickerProps,
16+
DatePickerSlotProps,
1917
DateValidationError,
2018
PickerChangeHandlerContext,
21-
} from '@mui/x-date-pickers'
22-
import {defaultErrorMessages} from './messages/DatePicker'
23-
import {
24-
useLocalizationContext,
2519
validateDate,
26-
} from '@mui/x-date-pickers/internals'
27-
import {useTransform} from './useTransform'
28-
import {getTimezone} from './utils'
29-
import {PickerValidDate} from '@mui/x-date-pickers/models'
20+
} from "@mui/x-date-pickers";
21+
import { useLocalizationContext } from "@mui/x-date-pickers/internals";
22+
import { defaultErrorMessages } from "./messages/DatePicker";
23+
import { useTransform } from "./useTransform";
24+
import { getTimezone } from "./utils";
25+
import { PickerValidDate } from "@mui/x-date-pickers/models";
3026

3127
export type DatePickerElementProps<
3228
TFieldValues extends FieldValues = FieldValues,
3329
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
3430
TValue extends PickerValidDate = PickerValidDate,
3531
TEnableAccessibleFieldDOMStructure extends boolean = false,
36-
> = Omit<DatePickerProps<TValue>, 'value' | 'slotProps'> & {
37-
name: TName
38-
required?: boolean
39-
isDate?: boolean
40-
parseError?: (error: FieldError | DateValidationError) => ReactNode
41-
rules?: UseControllerProps<TFieldValues, TName>['rules']
42-
control?: Control<TFieldValues>
43-
inputProps?: TextFieldProps
44-
helperText?: TextFieldProps['helperText']
45-
textReadOnly?: boolean
32+
> = Omit<DatePickerProps<TValue>, "value" | "slotProps"> & {
33+
name: TName;
34+
required?: boolean;
35+
isDate?: boolean;
36+
parseError?: (error: FieldError | DateValidationError) => ReactNode;
37+
rules?: UseControllerProps<TFieldValues, TName>["rules"];
38+
control?: Control<TFieldValues>;
39+
inputProps?: TextFieldProps;
40+
helperText?: TextFieldProps["helperText"];
41+
textReadOnly?: boolean;
4642
slotProps?: Omit<
4743
DatePickerSlotProps<TValue, TEnableAccessibleFieldDOMStructure>,
48-
'textField'
49-
>
50-
overwriteErrorMessages?: typeof defaultErrorMessages
44+
"textField"
45+
>;
46+
overwriteErrorMessages?: typeof defaultErrorMessages;
5147
transform?: {
52-
input?: (value: PathValue<TFieldValues, TName>) => TValue | null
48+
input?: (value: PathValue<TFieldValues, TName>) => TValue | null;
5349
output?: (
5450
value: TValue | null,
5551
context: PickerChangeHandlerContext<DateValidationError>
56-
) => PathValue<TFieldValues, TName>
57-
}
58-
}
52+
) => PathValue<TFieldValues, TName>;
53+
};
54+
};
5955

6056
type DatePickerElementComponent = <
6157
TFieldValues extends FieldValues = FieldValues,
@@ -64,7 +60,7 @@ type DatePickerElementComponent = <
6460
>(
6561
props: DatePickerElementProps<TFieldValues, TName, TValue> &
6662
RefAttributes<HTMLDivElement>
67-
) => JSX.Element
63+
) => JSX.Element;
6864

6965
const DatePickerElement = forwardRef(function DatePickerElement<
7066
TFieldValues extends FieldValues = FieldValues,
@@ -87,23 +83,23 @@ const DatePickerElement = forwardRef(function DatePickerElement<
8783
inputRef,
8884
transform,
8985
...rest
90-
} = props
86+
} = props;
9187

92-
const adapter = useLocalizationContext()
88+
const adapter = useLocalizationContext();
9389

94-
const errorMsgFn = useFormError()
95-
const customErrorFn = parseError || errorMsgFn
90+
const errorMsgFn = useFormError();
91+
const customErrorFn = parseError || errorMsgFn;
9692

9793
const errorMessages = {
9894
...defaultErrorMessages,
9995
...overwriteErrorMessages,
100-
}
96+
};
10197

10298
const rulesTmp = {
10399
...rules,
104100
...(required &&
105101
!rules.required && {
106-
required: 'This field is required',
102+
required: "This field is required",
107103
}),
108104
validate: {
109105
internal: (value: TValue | null) => {
@@ -116,54 +112,54 @@ const DatePickerElement = forwardRef(function DatePickerElement<
116112
disableFuture: Boolean(rest.disableFuture),
117113
minDate: rest.minDate,
118114
maxDate: rest.maxDate,
119-
timezone: rest.timezone ?? getTimezone(adapter, value) ?? 'default',
120115
},
116+
timezone: rest.timezone ?? getTimezone(adapter, value) ?? "default",
121117
value,
122118
adapter,
123-
})
124-
return internalError == null || errorMessages[internalError]
119+
});
120+
return internalError == null || errorMessages[internalError];
125121
},
126122
...rules.validate,
127123
},
128-
}
124+
};
129125

130126
const {
131127
field,
132-
fieldState: {error},
128+
fieldState: { error },
133129
} = useController({
134130
name,
135131
control,
136132
rules: rulesTmp,
137133
disabled: rest.disabled,
138134
defaultValue: null as PathValue<TFieldValues, TName>,
139-
})
135+
});
140136

141-
const {value, onChange} = useTransform<TFieldValues, TName, TValue | null>({
137+
const { value, onChange } = useTransform<TFieldValues, TName, TValue | null>({
142138
value: field.value,
143139
onChange: field.onChange,
144140
transform: {
145141
input:
146-
typeof transform?.input === 'function'
142+
typeof transform?.input === "function"
147143
? transform.input
148144
: (newValue) => {
149-
return newValue && typeof newValue === 'string'
145+
return newValue && typeof newValue === "string"
150146
? (adapter.utils.date(newValue) as unknown as TValue) // need to see if this works for all localization adaptors
151-
: newValue
147+
: newValue;
152148
},
153149
output:
154-
typeof transform?.output === 'function'
150+
typeof transform?.output === "function"
155151
? transform.output
156152
: (newValue) => newValue,
157153
},
158-
})
154+
});
159155

160-
const handleInputRef = useForkRef(field.ref, inputRef)
156+
const handleInputRef = useForkRef(field.ref, inputRef);
161157

162158
const errorMessage = error
163-
? typeof customErrorFn === 'function'
159+
? typeof customErrorFn === "function"
164160
? customErrorFn(error)
165161
: error.message
166-
: null
162+
: null;
167163

168164
return (
169165
<DatePicker
@@ -173,15 +169,15 @@ const DatePickerElement = forwardRef(function DatePickerElement<
173169
ref={ref}
174170
inputRef={handleInputRef}
175171
onClose={(...args) => {
176-
field.onBlur()
172+
field.onBlur();
177173
if (rest.onClose) {
178-
rest.onClose(...args)
174+
rest.onClose(...args);
179175
}
180176
}}
181177
onChange={(newValue, context) => {
182-
onChange(newValue, context)
183-
if (typeof rest.onChange === 'function') {
184-
rest.onChange(newValue, context)
178+
onChange(newValue, context);
179+
if (typeof rest.onChange === "function") {
180+
rest.onChange(newValue, context);
185181
}
186182
}}
187183
slotProps={{
@@ -190,9 +186,9 @@ const DatePickerElement = forwardRef(function DatePickerElement<
190186
...inputProps,
191187
required,
192188
onBlur: (event) => {
193-
field.onBlur()
194-
if (typeof inputProps?.onBlur === 'function') {
195-
inputProps.onBlur(event)
189+
field.onBlur();
190+
if (typeof inputProps?.onBlur === "function") {
191+
inputProps.onBlur(event);
196192
}
197193
},
198194
error: !!errorMessage,
@@ -206,7 +202,7 @@ const DatePickerElement = forwardRef(function DatePickerElement<
206202
},
207203
}}
208204
/>
209-
)
210-
})
211-
DatePickerElement.displayName = 'DatePickerElement'
212-
export default DatePickerElement as DatePickerElementComponent
205+
);
206+
});
207+
DatePickerElement.displayName = "DatePickerElement";
208+
export default DatePickerElement as DatePickerElementComponent;

0 commit comments

Comments
 (0)