Skip to content

Commit d0a0788

Browse files
zj9495abigail-0111
authored andcommitted
Fix drawer destroy (ElemeFE#20715)
* Drawer: fix destroyOnClose bug
1 parent 5c4767f commit d0a0788

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

packages/drawer/src/main.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,12 @@ export default {
136136
}
137137
this.prevActiveElement = document.activeElement;
138138
} else {
139-
if (!this.closed) this.$emit('close');
139+
if (!this.closed) {
140+
this.$emit('close');
141+
if (this.destroyOnClose === true) {
142+
this.rendered = false;
143+
}
144+
}
140145
this.$nextTick(() => {
141146
if (this.prevActiveElement) {
142147
this.prevActiveElement.focus();

test/unit/specs/drawer.spec.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,30 @@ describe('Drawer', () => {
132132
expect(vm.$el.querySelector('.el-drawer__body')).not.to.exist;
133133
});
134134

135+
it('should destroy every child by visible change when destroy-on-close flag is true', async() => {
136+
vm = createVue({
137+
template: `
138+
<el-drawer :title='title' :visible='visible' :append-to-body='true' :destroy-on-close='true' ref='drawer'>
139+
<span>${content}</span>
140+
</el-drawer>
141+
`,
142+
data() {
143+
return {
144+
title,
145+
visible: true
146+
};
147+
}
148+
});
149+
150+
await waitImmediate();
151+
expect(vm.$el.querySelector('.el-drawer__body span').textContent).to.equal(
152+
content
153+
);
154+
vm.visible = false;
155+
await wait(400);
156+
expect(vm.$el.querySelector('.el-drawer__body')).not.to.exist;
157+
});
158+
135159
it('should close dialog by clicking the close button', async() => {
136160
vm = createVue({
137161
template: `

0 commit comments

Comments
 (0)