Создать пользовательское событие

Создать своё событие можно через метод dispatchEvent().

// ... код, во время которого открывается модальное окно ...

document.getElementById('modal').dispatchEvent('modal-opened');

В коде выше было зафиксировано событие «modal-opened», и теперь его можно вызывать в любом месте кода.

document.getElementById('modal').addEventListener('modal-opened', function() {
  // код, выполняемый после открытия модального окна
});

2-ой способ (также передать данные)

Также кастомное событие можно создавать через объект CustomEvent(). Отличие от предыдущего способа в том, что можно передавать данные.

const modalOpened = new CustomEvent('modal-opened', {
  detail: {
    param: "Значение"
  }
});

document.getElementById('modal').dispatchEvent(modalOpened);

Теперь при вызова события «modal-opened» станут доступны переданные свойства.

document.getElementById('modal').addEventListener('modal-opened', event => {
  event.detail.param; // Значение
});