diff --git a/packages/components/date-picker/__tests__/date-picker.test.ts b/packages/components/date-picker/__tests__/date-picker.test.ts index 8d0e2fad01..99ce4be992 100644 --- a/packages/components/date-picker/__tests__/date-picker.test.ts +++ b/packages/components/date-picker/__tests__/date-picker.test.ts @@ -1634,6 +1634,71 @@ describe('DateRangePicker', () => { expect(calendarChangeValue[1]).toBeInstanceOf(Date) }) + it('daterange should be reopen successfully', async () => { + const wrapper = _mount( + ``, + () => ({ value: '' }) + ) + const rangePanelWrapper = wrapper.findComponent( + '.el-date-range-picker' + ) as VueWrapper> + + expect(rangePanelWrapper.vm.visible).toBe(false) + + const input = wrapper.find('input') + await input.trigger('blur') + await input.trigger('focus') + + expect(rangePanelWrapper.exists()).toBe(true) + expect(rangePanelWrapper.vm.visible).toBe(true) + + const cells = document.querySelectorAll('.available .el-date-table-cell') + ;(cells[0] as HTMLElement).click() + await nextTick() + ;(cells[1] as HTMLElement).click() + await nextTick() + expect(rangePanelWrapper.vm.visible).toBe(false) + await input.trigger('blur') + await input.trigger('focus') + expect(rangePanelWrapper.vm.visible).toBe(true) + }) + + it('daterange should be reopen successfully with value-format', async () => { + const wrapper = _mount( + ``, + () => ({ value: '' }) + ) + const rangePanelWrapper = wrapper.findComponent( + '.el-date-range-picker' + ) as VueWrapper> + + expect(rangePanelWrapper.vm.visible).toBe(false) + + const input = wrapper.find('input') + await input.trigger('blur') + await input.trigger('focus') + + expect(rangePanelWrapper.exists()).toBe(true) + expect(rangePanelWrapper.vm.visible).toBe(true) + + const cells = document.querySelectorAll('.available .el-date-table-cell') + ;(cells[0] as HTMLElement).click() + await nextTick() + ;(cells[1] as HTMLElement).click() + await nextTick() + expect(rangePanelWrapper.vm.visible).toBe(false) + await input.trigger('blur') + await input.trigger('focus') + expect(rangePanelWrapper.vm.visible).toBe(true) + }) + it('reverse selection', async () => { const wrapper = _mount( ` { expect(spy).toHaveBeenCalledOnce() expect(rangePanelWrapper.vm.visible).toBe(false) }) + it('datetimerange should be reopen successfully', async () => { + const values = ref() + const wrapper = _mount(() => ( + + )) + const rangePanelWrapper = wrapper.findComponent( + '.el-date-range-picker' + ) as VueWrapper> + + expect(rangePanelWrapper.vm.visible).toBe(false) + + const input = wrapper.find('input') + await input.trigger('blur') + await input.trigger('focus') + + expect(rangePanelWrapper.exists()).toBe(true) + expect(rangePanelWrapper.vm.visible).toBe(true) + + const cells = document.querySelectorAll('.available .el-date-table-cell') + ;(cells[0] as HTMLElement).click() + await nextTick() + ;(cells[1] as HTMLElement).click() + await nextTick() + const button = document.querySelectorAll( + '.el-picker-panel__footer button' + )![1] as HTMLButtonElement + button.click() + await nextTick() + expect(rangePanelWrapper.vm.visible).toBe(false) + await input.trigger('blur') + await input.trigger('focus') + expect(rangePanelWrapper.vm.visible).toBe(true) + }) }) diff --git a/packages/components/date-picker/src/date-picker-com/panel-date-range.vue b/packages/components/date-picker/src/date-picker-com/panel-date-range.vue index ed3381f53c..dfd5fb6cd9 100644 --- a/packages/components/date-picker/src/date-picker-com/panel-date-range.vue +++ b/packages/components/date-picker/src/date-picker-com/panel-date-range.vue @@ -698,6 +698,7 @@ const handleRangePick = ( watch([maxDate, minDate], ([max, min]) => { if (max && min) { handleRangeConfirm(shouldBeVisible) + shouldBeVisible = true } })