diff --git a/src/date-picker/lib/popups/date-popup.component.ts b/src/date-picker/lib/popups/date-popup.component.ts index 0c72e079d..f571281e1 100644 --- a/src/date-picker/lib/popups/date-popup.component.ts +++ b/src/date-picker/lib/popups/date-popup.component.ts @@ -499,10 +499,7 @@ export class DatePopupComponent implements OnChanges, OnInit { const [start, end] = value; const newStart = start || new TinyDate(); let newEnd = end; - if (!newEnd) { - newEnd = dateAddAmount(newStart, 1, headerMode); - } - if (newStart.isSame(end, headerMode as TinyDateCompareGrain)) { + if (!newEnd || newStart.isSame(end, headerMode as TinyDateCompareGrain)) { newEnd = dateAddAmount(newStart, 1, headerMode); } return [newStart, newEnd]; diff --git a/src/date-picker/range-picker.component.spec.ts b/src/date-picker/range-picker.component.spec.ts index f6320e242..f35958d9d 100644 --- a/src/date-picker/range-picker.component.spec.ts +++ b/src/date-picker/range-picker.component.spec.ts @@ -670,6 +670,7 @@ describe('ThyRangePickerComponent', () => { expect(queryFromOverlay('.thy-calendar-range-right .thy-calendar-month')).toBeTruthy(); expect(queryFromOverlay('.thy-calendar-range-right .thy-calendar-month-btn').textContent.trim()).toEqual('2020年'); })); + it('should support previous and next year', fakeAsync(() => { fixtureInstance.modelValue = { begin: new Date('2018-09-11'), end: new Date('2018-10-12') }; fixture.detectChanges(); @@ -693,6 +694,7 @@ describe('ThyRangePickerComponent', () => { fixture.detectChanges(); expect(queryFromOverlay('.thy-calendar-range-left .thy-calendar-month-btn').textContent.indexOf('2018') > -1).toBeTruthy(); })); + it('should support panel changes', fakeAsync(() => { fixtureInstance.modelValue = { begin: new Date('2018-09-11'), end: new Date('2018-10-12') }; fixture.detectChanges(); @@ -877,6 +879,14 @@ describe('ThyRangePickerComponent', () => { expect(queryFromOverlay('.thy-calendar-picker-inner-popup').firstElementChild.className).toEqual('thy-calendar-month'); })); + it(`should set thyMode to year`, fakeAsync(() => { + fixture.detectChanges(); + fixtureInstance.thyMode = 'year'; + fixture.detectChanges(); + openPickerByClickTrigger(); + expect(queryFromOverlay('.thy-calendar-picker-inner-popup').firstElementChild.className).toEqual('thy-calendar-year'); + })); + it(`should set thyMode to decade`, fakeAsync(() => { fixture.detectChanges(); fixtureInstance.thyMode = 'decade';