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
}
})