Согласно документации https://jupyterlab.github.io/jupyterlab/apputils/classes/dialog.html, Конструктор диалога получает массив кнопок, элементы которого реализуют интерфейс IButton. Тем не менее, IButton не имеет события onclick https://jupyterlab.github.io/jupyterlab/apputils/interfaces/dialog.ibutton.html.
Диалог имеет функцию handleEvent, однако трудно понять, с какой кнопки вызывается нажатие. Единственное решение, которое я нашел, состоит в том, чтобы дать идентификаторы / классы кнопкам, сделать дочерние узлы непригодными для кликов (чтобы облегчить сравнение), а затем сравнить элемент src click со всеми идентификаторами / классами кнопок. Уродливое решение:
dialog.handleEvent = e => {
if (e.type === "click") {
const elm: any = e.srcElement;
if (elm.classList.contains("jp-Dialog")) {
if (elm.classList.contains("cancel-btn")) {
// handle cancel
} else if(elm.classList.contains("success-btn")) {
// handle success
}
}
}
};
Должен быть лучший способ, но я не смог найти, даже проверив документацию.