Skip to content

Commit 6ffd4c7

Browse files
fix: incorrect locale registration in datepicker (#9516)
### What? This log was appearing when the DatePicker loaded without a registered locale: ``` A locale object was not found for the provided string ["enUS"]. ``` Also fixes css misalignment of icons inside date picker field ### Why? If i`18n.dateFNS` had not loaded, we were registering the locale with an undefined value. ### How? Only register the locale for react-datepicker if i18n.dateFNS is present.
1 parent 0827042 commit 6ffd4c7

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

packages/ui/src/elements/DatePicker/DatePicker.tsx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import type { ReactDatePickerProps } from 'react-datepicker'
33

44
import React from 'react'
5-
import ReactDatePickerDefaultImport, { registerLocale } from 'react-datepicker'
5+
import ReactDatePickerDefaultImport, { registerLocale, setDefaultLocale } from 'react-datepicker'
66
const ReactDatePicker = (ReactDatePickerDefaultImport.default ||
77
ReactDatePickerDefaultImport) as unknown as typeof ReactDatePickerDefaultImport.default
88

@@ -38,14 +38,6 @@ const DatePicker: React.FC<Props> = (props) => {
3838
// Use the user's AdminUI language preference for the locale
3939
const { i18n } = useTranslation()
4040

41-
const datepickerLocale = getFormattedLocale(i18n.language)
42-
43-
try {
44-
registerLocale(datepickerLocale, i18n.dateFNS)
45-
} catch (e) {
46-
console.warn(`Could not find DatePicker locale for ${i18n.language}`)
47-
}
48-
4941
let dateFormat = customDisplayFormat
5042

5143
if (!customDisplayFormat) {
@@ -99,6 +91,18 @@ const DatePicker: React.FC<Props> = (props) => {
9991
.filter(Boolean)
10092
.join(' ')
10193

94+
React.useEffect(() => {
95+
if (i18n.dateFNS) {
96+
try {
97+
const datepickerLocale = getFormattedLocale(i18n.language)
98+
registerLocale(datepickerLocale, i18n.dateFNS)
99+
setDefaultLocale(datepickerLocale)
100+
} catch (e) {
101+
console.warn(`Could not find DatePicker locale for ${i18n.language}`)
102+
}
103+
}
104+
}, [i18n.language, i18n.dateFNS])
105+
102106
return (
103107
<div className={classes}>
104108
<div className={`${baseClass}__icon-wrap`}>
@@ -117,7 +121,6 @@ const DatePicker: React.FC<Props> = (props) => {
117121
<ReactDatePicker
118122
{...dateTimePickerProps}
119123
dropdownMode="select"
120-
locale={datepickerLocale}
121124
showMonthDropdown
122125
showYearDropdown
123126
/>

packages/ui/src/elements/DatePicker/index.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ $cal-icon-width: 18px;
3939
}
4040

4141
.icon--calendar {
42-
top: base(0.625);
42+
top: base(0.5);
4343
right: base(0.75);
4444
width: $cal-icon-width;
4545
pointer-events: none;

0 commit comments

Comments
 (0)