diff --git a/packages/components/splitter/__tests__/splitter.test.tsx b/packages/components/splitter/__tests__/splitter.test.tsx index 8e7100fc49..85496aa430 100644 --- a/packages/components/splitter/__tests__/splitter.test.tsx +++ b/packages/components/splitter/__tests__/splitter.test.tsx @@ -411,4 +411,24 @@ describe('Splitter', () => { expect(panels[0].attributes('style')).toContain('flex-basis: 150px;') expect(panels[1].attributes('style')).toContain('flex-basis: 250px;') }) + + it('should not still display the mask after the panel updates', async () => { + const show = ref(true) + const wrapper = mount(() => ( + (show.value = false)}> + Left Panel + Right Panel + + )) + await nextTick() + + expect(wrapper.find('.el-splitter__mask').exists()).toBeFalsy() + + const splitBar = wrapper.find('.el-splitter-bar__dragger') + const mousedown = new MouseEvent('mousedown', { bubbles: true }) + Object.defineProperty(mousedown, 'pageX', { value: 200 }) + splitBar.element.dispatchEvent(mousedown) + await nextTick() + expect(wrapper.find('.el-splitter__mask').exists()).toBeFalsy() + }) }) diff --git a/packages/components/splitter/src/splitter.vue b/packages/components/splitter/src/splitter.vue index b0ae9a7910..e1a3b23539 100644 --- a/packages/components/splitter/src/splitter.vue +++ b/packages/components/splitter/src/splitter.vue @@ -37,6 +37,7 @@ const { } = useOrderedChildren(getCurrentInstance()!, 'ElSplitterPanel') watch(panels, () => { + movingIndex.value = null panels.value.forEach((instance: PanelItemState, index: number) => { instance.setIndex(index) })