Skip to content

Commit 809df38

Browse files
committed
Invoke dialog's onClose regardless of how it was closed.
1 parent 15c12d8 commit 809df38

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/js/utils/initializeModalDialog.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { i18n } from "../localization";
55
* Gets the title bar for a modal dialog.
66
* @param {string} messageId Localized message identifier.
77
* @param {object} [messageParameters] Localized message parameters
8-
* @param {() => void} onClose Function invoked by close button.
8+
* @param {() => void} onClose Function invoked by the close button.
99
* @returns {JQuery<HTMLElement>} Dialog title bar.
1010
*/
1111
function getDialogTitleBar(messageId, messageParameters, onClose) {
@@ -31,31 +31,34 @@ function getDialogTitleBar(messageId, messageParameters, onClose) {
3131

3232
/**
3333
* Initializes a modal dialog from an HTML dialog element.
34-
* @param {JQuery.Selector|null} buttonSelector JQuery selector for the activation element.
34+
* @param {JQuery.Selector|null} activationSelector JQuery selector for the activation element.
3535
* @param {JQuery.Selector} dialogSelector JQuery selector for the dialog element.
3636
* @param {string} messageId Localized message identifier.
3737
* @param {object} [messageParameters] Localized message parameters
38-
* @param {() => void} [onClose] Function invoked by close button.
38+
* @param {() => void} [onClose] Function invoked when the dialog is closed.
3939
* @returns {HTMLDialogElement} HTML dialog element.
4040
*/
41-
export function initializeModalDialog(buttonSelector, dialogSelector, messageId, messageParameters, onClose) {
42-
// Get dialog elements
41+
export function initializeModalDialog(activationSelector, dialogSelector, messageId, messageParameters, onClose) {
42+
// Get dialog references
4343
const dialog = $(dialogSelector);
4444
const dialogElement = dialog.get(0);
4545
const dialogContainerElement = dialog.children().first().get(0);
4646
// Add dialog title bar
4747
dialog.prepend(
4848
getDialogTitleBar(messageId, messageParameters, () => {
4949
dialogElement.close();
50-
onClose && onClose();
5150
}),
5251
);
53-
// Handle button click
54-
$(buttonSelector).on("click", () => {
52+
// Handle close event
53+
dialogElement.addEventListener("close", () => {
54+
onClose && onClose();
55+
});
56+
// Handle activation button click
57+
$(activationSelector).on("click", () => {
5558
dialogElement.showModal();
5659
// Reset any previous scrolling
5760
dialogContainerElement.scroll(0, 0);
5861
});
59-
// Return dialog
62+
// Return dialog element
6063
return dialogElement;
6164
}

0 commit comments

Comments
 (0)