File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -56,8 +56,10 @@ export type RangeValueType<DateType> = [
5656/** Used for change event, it should always be not undefined */
5757export type NoUndefinedRangeValueType < DateType > = [ start : DateType | null , end : DateType | null ] ;
5858
59- export interface BaseRangePickerProps < DateType extends object >
60- extends Omit < SharedPickerProps < DateType > , 'showTime' | 'id' > {
59+ export interface BaseRangePickerProps < DateType extends object > extends Omit <
60+ SharedPickerProps < DateType > ,
61+ 'showTime' | 'id'
62+ > {
6163 // Structure
6264 id ?: SelectorIdType ;
6365
@@ -132,7 +134,8 @@ export interface BaseRangePickerProps<DateType extends object>
132134}
133135
134136export interface RangePickerProps < DateType extends object >
135- extends BaseRangePickerProps < DateType > ,
137+ extends
138+ BaseRangePickerProps < DateType > ,
136139 Omit < RangeTimeProps < DateType > , 'format' | 'defaultValue' | 'defaultOpenValue' > { }
137140
138141function getActiveRange ( activeIndex : number ) {
@@ -666,7 +669,9 @@ function RangePicker<DateType extends object = any>(
666669 return ;
667670 }
668671
669- lastOperation ( 'input' ) ;
672+ if ( ! needConfirm ) {
673+ lastOperation ( 'input' ) ;
674+ }
670675
671676 triggerOpen ( true , {
672677 inherit : true ,
Original file line number Diff line number Diff line change @@ -895,6 +895,29 @@ describe('Picker.Range', () => {
895895 expect ( document . querySelector ( 'input' ) . value ) . toEqual ( '' ) ;
896896 } ) ;
897897
898+ it ( 'should not submit unconfirmed values on blur when allowEmpty lets fields switch' , ( ) => {
899+ const onChange = jest . fn ( ) ;
900+ const { container } = render ( < DayRangePicker showTime allowEmpty onChange = { onChange } /> ) ;
901+
902+ openPicker ( container , 0 ) ;
903+ selectCell ( 11 ) ;
904+
905+ openPicker ( container , 1 ) ;
906+ openPicker ( container , 0 ) ;
907+
908+ fireEvent . mouseDown ( document . body ) ;
909+ container . querySelectorAll ( 'input' ) [ 0 ] . blur ( ) ;
910+
911+ for ( let i = 0 ; i < 5 ; i += 1 ) {
912+ act ( ( ) => {
913+ jest . runAllTimers ( ) ;
914+ } ) ;
915+ }
916+
917+ expect ( onChange ) . not . toHaveBeenCalled ( ) ;
918+ matchValues ( container , '' , '' ) ;
919+ } ) ;
920+
898921 describe ( 'viewDate' , ( ) => {
899922 function matchTitle ( title : string ) {
900923 expect ( document . querySelector ( '.rc-picker-header-view' ) . textContent ) . toEqual ( title ) ;
You can’t perform that action at this time.
0 commit comments