@@ -126,7 +126,7 @@ export type DatePickerProps = Omit<
126126 | "selectsMultiple"
127127 | "dropdownMode"
128128> &
129- Pick < AdditionalProps , "excludeScrollbar" > &
129+ Partial < Pick < AdditionalProps , "excludeScrollbar" > > &
130130 Pick < CalendarIconProps , "icon" > &
131131 Omit < PortalProps , "children" | "portalId" > &
132132 Omit <
@@ -197,7 +197,7 @@ export type DatePickerProps = Omit<
197197 onChangeRaw ?: (
198198 event ?: React . MouseEvent < HTMLElement > | React . KeyboardEvent < HTMLElement > ,
199199 ) => void ;
200- onSelect : (
200+ onSelect ? : (
201201 date : Date | null ,
202202 event ?:
203203 | React . MouseEvent < HTMLElement , MouseEvent >
@@ -207,7 +207,7 @@ export type DatePickerProps = Omit<
207207 | {
208208 selectsRange ?: never ;
209209 selectsMultiple ?: never ;
210- onChange : (
210+ onChange ? : (
211211 date : Date | null ,
212212 event ?:
213213 | React . MouseEvent < HTMLElement >
@@ -217,7 +217,7 @@ export type DatePickerProps = Omit<
217217 | {
218218 selectsRange : true ;
219219 selectsMultiple ?: never ;
220- onChange : (
220+ onChange ? : (
221221 date : [ Date | null , Date | null ] ,
222222 event ?:
223223 | React . MouseEvent < HTMLElement >
@@ -227,7 +227,7 @@ export type DatePickerProps = Omit<
227227 | {
228228 selectsRange ?: never ;
229229 selectsMultiple : true ;
230- onChange : (
230+ onChange ? : (
231231 date : Date [ ] | null ,
232232 event ?:
233233 | React . MouseEvent < HTMLElement >
@@ -752,27 +752,41 @@ export default class DatePicker extends Component<
752752 const hasStartRange = startDate && ! endDate ;
753753 const isRangeFilled = startDate && endDate ;
754754 if ( noRanges ) {
755- onChange ( [ changedDate , null ] , event ) ;
755+ onChange
756+ ? onChange ( [ changedDate , null ] , event )
757+ : DatePicker . defaultProps . onChange ;
756758 } else if ( hasStartRange ) {
757759 if ( changedDate === null ) {
758- onChange ( [ null , null ] , event ) ;
760+ onChange
761+ ? onChange ( [ null , null ] , event )
762+ : DatePicker . defaultProps . onChange ;
759763 } else if ( isDateBefore ( changedDate , startDate ) ) {
760764 if ( swapRange ) {
761- onChange ( [ changedDate , startDate ] , event ) ;
765+ onChange
766+ ? onChange ( [ changedDate , startDate ] , event )
767+ : DatePicker . defaultProps . onChange ;
762768 } else {
763- onChange ( [ changedDate , null ] , event ) ;
769+ onChange
770+ ? onChange ( [ changedDate , null ] , event )
771+ : DatePicker . defaultProps . onChange ;
764772 }
765773 } else {
766- onChange ( [ startDate , changedDate ] , event ) ;
774+ onChange
775+ ? onChange ( [ startDate , changedDate ] , event )
776+ : DatePicker . defaultProps . onChange ;
767777 }
768778 }
769779 if ( isRangeFilled ) {
770- onChange ( [ changedDate , null ] , event ) ;
780+ onChange
781+ ? onChange ( [ changedDate , null ] , event )
782+ : DatePicker . defaultProps . onChange ;
771783 }
772784 } else if ( selectsMultiple ) {
773785 if ( changedDate !== null ) {
774786 if ( ! selectedDates ?. length ) {
775- onChange ( [ changedDate ] , event ) ;
787+ onChange
788+ ? onChange ( [ changedDate ] , event )
789+ : DatePicker . defaultProps . onChange ;
776790 } else {
777791 const isChangedDateAlreadySelected = selectedDates . some (
778792 ( selectedDate ) => isSameDay ( selectedDate , changedDate ) ,
@@ -783,19 +797,26 @@ export default class DatePicker extends Component<
783797 ( selectedDate ) => ! isSameDay ( selectedDate , changedDate ) ,
784798 ) ;
785799
786- onChange ( nextDates , event ) ;
800+ onChange
801+ ? onChange ( nextDates , event )
802+ : DatePicker . defaultProps . onChange ;
787803 } else {
788- onChange ( [ ...selectedDates , changedDate ] , event ) ;
804+ onChange
805+ ? onChange ( [ ...selectedDates , changedDate ] , event )
806+ : DatePicker . defaultProps . onChange ;
789807 }
790808 }
791809 }
792810 } else {
793- onChange ( changedDate , event ) ;
811+ onChange
812+ ? onChange ( changedDate , event )
813+ : DatePicker . defaultProps . onChange ;
794814 }
795815 }
796816
797817 if ( ! keepInput ) {
798- this . props . onSelect ( changedDate , event ) ;
818+ const onSelect = this . props . onSelect ?? DatePicker . defaultProps . onSelect ;
819+ onSelect ( changedDate , event ) ;
799820 this . setState ( { inputValue : null } ) ;
800821 }
801822 } ;
@@ -856,7 +877,8 @@ export default class DatePicker extends Component<
856877 preSelection : changedDate ,
857878 } ) ;
858879
859- this . props . onChange ( changedDate ) ;
880+ const onChange = this . props . onChange ?? DatePicker . defaultProps . onChange ;
881+ onChange ( changedDate ) ;
860882 if ( this . props . shouldCloseOnSelect && ! this . props . showTimeInput ) {
861883 this . sendFocusBackToInput ( ) ;
862884 this . setOpen ( false ) ;
@@ -1154,16 +1176,13 @@ export default class DatePicker extends Component<
11541176
11551177 const { selectsRange, onChange } = this . props ;
11561178 if ( selectsRange ) {
1157- onChange ( [ null , null ] , event ) ;
1179+ onChange
1180+ ? onChange ( [ null , null ] , event )
1181+ : DatePicker . defaultProps . onChange ( ) ;
11581182 } else {
1159- onChange ( null , event ) ;
1183+ onChange ? onChange ( null , event ) : DatePicker . defaultProps . onChange ( ) ;
11601184 }
11611185
1162- if ( this . props . selectsRange ) {
1163- this . props . onChange ( [ null , null ] , event ) ;
1164- } else {
1165- this . props . onChange ( null , event ) ;
1166- }
11671186 this . setState ( { inputValue : null } ) ;
11681187 } ;
11691188
0 commit comments