Как обрабатывать события кликов @ jupyterlab / apputils |Расширение Jupyterlab - PullRequest
2 голосов
/ 07 ноября 2019

Согласно документации 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
      }
    }
  }
};

Должен быть лучший способ, но я не смог найти, даже проверив документацию.

...