Skip to content

Commit 8c0e48c

Browse files
committed
Remove modal from the DOM when it's closed
1 parent 044173b commit 8c0e48c

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

src/plugins/modal/modal.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Modal from 'bootstrap/js/src/modal.js';
33
import { getOpenPromise } from '@converse/openpromise';
44
import { Model } from '@converse/skeletor';
55
import { CustomElement } from 'shared/components/element.js';
6-
import { u } from '@converse/headless';
6+
import { api, u } from '@converse/headless';
77
import { modal_close_button } from './templates/buttons.js';
88
import tplModal from './templates/modal.js';
99

@@ -50,6 +50,7 @@ class BaseModal extends CustomElement {
5050
});
5151
this.addEventListener('hidden.bs.modal', () => {
5252
this.ariaHidden = 'true';
53+
api.modal.remove(this.nodeName.toLowerCase());
5354
});
5455
}
5556

src/plugins/muc-views/occupant.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export default class MUCOccupant extends CustomElement {
6767
addToContacts() {
6868
const model = this.model;
6969
const jid = model.get('jid');
70-
if (jid) api.modal.show('converse-add-contact-modal', { 'model': new Model({ jid }) });
70+
if (jid) api.modal.show('converse-add-contact-modal', { model: new Model({ jid }) });
7171
}
7272

7373
/**

src/plugins/muc-views/tests/muc-add-modal.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe('The "Groupchats" Add modal', function () {
3232
it("doesn't require the domain when muc_domain is set",
3333
mock.initConverse(['chatBoxesFetched'], { muc_domain: 'muc.example.org' }, async function (_converse) {
3434

35-
const modal = await mock.openAddMUCModal(_converse);
35+
let modal = await mock.openAddMUCModal(_converse);
3636
expect(modal.querySelector('.modal-title').textContent.trim()).toBe('Enter a new Groupchat');
3737
spyOn(_converse.ChatRoom.prototype, 'getDiscoInfo').and.callFake(() => Promise.resolve());
3838
const label_name = modal.querySelector('label[for="chatroom"]');
@@ -51,7 +51,8 @@ describe('The "Groupchats" Add modal', function () {
5151
// However, you can still open MUCs with different domains
5252
const roomspanel = _converse.chatboxviews.get('controlbox').querySelector('converse-rooms-list');
5353
roomspanel.querySelector('.show-add-muc-modal').click();
54-
await u.waitUntil(() => u.isVisible(modal), 1000);
54+
modal = await u.waitUntil(() => document.querySelector('converse-add-muc-modal'), 1000);
55+
5556
name_input = modal.querySelector('input[name="chatroom"]');
5657
name_input.value = 'lounge@conference.example.org';
5758
nick_input = modal.querySelector('input[name="nickname"]');
@@ -69,8 +70,7 @@ describe('The "Groupchats" Add modal', function () {
6970
it('uses the muc_domain if locked_muc_domain is true', mock.initConverse(
7071
['chatBoxesFetched'], { muc_domain: 'muc.example.org', locked_muc_domain: true },
7172
async function (_converse) {
72-
const modal = await mock.openAddMUCModal(_converse);
73-
73+
let modal = await mock.openAddMUCModal(_converse);
7474
expect(modal.querySelector('.modal-title').textContent.trim()).toBe('Enter a new Groupchat');
7575
spyOn(_converse.ChatRoom.prototype, 'getDiscoInfo').and.callFake(() => Promise.resolve());
7676
const label_name = modal.querySelector('label[for="chatroom"]');
@@ -89,7 +89,7 @@ describe('The "Groupchats" Add modal', function () {
8989
// However, you can still open MUCs with different domains
9090
const roomspanel = _converse.chatboxviews.get('controlbox').querySelector('converse-rooms-list');
9191
roomspanel.querySelector('.show-add-muc-modal').click();
92-
await u.waitUntil(() => u.isVisible(modal), 1000);
92+
modal = await u.waitUntil(() => document.querySelector('converse-add-muc-modal'));
9393
name_input = modal.querySelector('input[name="chatroom"]');
9494
name_input.value = 'lounge@conference';
9595
nick_input = modal.querySelector('input[name="nickname"]');

src/shared/modals/tests/user-details-modal.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ describe('The User Details Modal', function () {
122122
show_modal_button.click();
123123
await u.waitUntil(() => u.isVisible(modal), 2000);
124124

125-
remove_contact_button = modal.querySelector('button.remove-contact');
126-
expect(u.isVisible(remove_contact_button)).toBeTruthy();
125+
modal.querySelector('#edit-tab').click();
126+
await u.waitUntil(() => u.isVisible(modal.querySelector('button.remove-contact')));
127127
})
128128
);
129129

0 commit comments

Comments
 (0)