@@ -12,6 +12,7 @@ import {
12
12
DEFAULT_EXTERNAL_DATE_FORMAT ,
13
13
VALIDATION_MESSAGE ,
14
14
DEFAULT_MIN_DATE ,
15
+ type DateFormat ,
15
16
} from './constants'
16
17
import { DatePickerLocalization , EN_US } from './i18n'
17
18
import {
@@ -33,6 +34,7 @@ type BaseDatePickerProps = {
33
34
validationStatus ?: ValidationStatus
34
35
disabled ?: boolean
35
36
required ?: boolean
37
+ dateFormat ?: DateFormat
36
38
defaultValue ?: string
37
39
minDate ?: string
38
40
maxDate ?: string
@@ -57,6 +59,7 @@ export const DatePicker = ({
57
59
name,
58
60
className,
59
61
validationStatus,
62
+ dateFormat = DEFAULT_EXTERNAL_DATE_FORMAT ,
60
63
defaultValue,
61
64
disabled,
62
65
required,
@@ -68,6 +71,8 @@ export const DatePicker = ({
68
71
i18n = EN_US ,
69
72
...inputProps
70
73
} : DatePickerProps ) : React . ReactElement => {
74
+ dateFormat ??= DEFAULT_EXTERNAL_DATE_FORMAT
75
+
71
76
const datePickerEl = useRef < HTMLDivElement > ( null )
72
77
const externalInputEl = useRef < HTMLInputElement > ( null )
73
78
@@ -108,8 +113,7 @@ export const DatePicker = ({
108
113
109
114
const handleSelectDate = ( dateString : string , closeCalendar = true ) : void => {
110
115
const parsedValue = parseDateString ( dateString )
111
- const formattedValue =
112
- parsedValue && formatDate ( parsedValue , DEFAULT_EXTERNAL_DATE_FORMAT )
116
+ const formattedValue = parsedValue && formatDate ( parsedValue , dateFormat )
113
117
114
118
if ( parsedValue ) setInternalValue ( dateString )
115
119
if ( formattedValue ) setExternalValue ( formattedValue )
@@ -128,7 +132,7 @@ export const DatePicker = ({
128
132
setExternalValue ( value )
129
133
if ( onChange ) onChange ( value )
130
134
131
- const inputDate = parseDateString ( value , DEFAULT_EXTERNAL_DATE_FORMAT , true )
135
+ const inputDate = parseDateString ( value , dateFormat , true )
132
136
let newValue = ''
133
137
if ( inputDate && ! isDateInvalid ( value , parsedMinDate , parsedMaxDate ) ) {
134
138
newValue = formatDate ( inputDate )
@@ -179,11 +183,7 @@ export const DatePicker = ({
179
183
setStatuses ( [ ] )
180
184
} else {
181
185
// calendar is closed, show it
182
- const inputDate = parseDateString (
183
- externalValue ,
184
- DEFAULT_EXTERNAL_DATE_FORMAT ,
185
- true
186
- )
186
+ const inputDate = parseDateString ( externalValue , dateFormat , true )
187
187
188
188
const displayDate = keepDateBetweenMinAndMax (
189
189
inputDate || ( defaultValue && parseDateString ( defaultValue ) ) || today ( ) ,
@@ -347,5 +347,6 @@ export const DatePicker = ({
347
347
}
348
348
349
349
DatePicker . defaultProps = {
350
+ dateFormat : DEFAULT_EXTERNAL_DATE_FORMAT ,
350
351
minDate : DEFAULT_MIN_DATE ,
351
352
}
0 commit comments