const closedValue = null; window.Modal = new class { constructor() { this._currentModal = new ReactiveVar(closedValue); this._onCloseGoTo = ''; this._isWideModal = false; } getHeaderName() { const currentModal = this._currentModal.get(); return currentModal && currentModal.header; } getTemplateName() { const currentModal = this._currentModal.get(); return currentModal && currentModal.modalName; } isOpen() { return this.getTemplateName() !== closedValue; } isWide(){ return this._isWideModal; } close() { this._currentModal.set(closedValue); if (this._onCloseGoTo) { FlowRouter.go(this._onCloseGoTo); } } openWide(modalName, { header = '', onCloseGoTo = ''} = {}) { this._currentModal.set({ header, modalName }); this._onCloseGoTo = onCloseGoTo; this._isWideModal = true; } open(modalName, { header = '', onCloseGoTo = ''} = {}) { this._currentModal.set({ header, modalName }); this._onCloseGoTo = onCloseGoTo; } }(); Blaze.registerHelper('Modal', Modal); EscapeActions.register('modalWindow', () => Modal.close(), () => Modal.isOpen(), { noClickEscapeOn: '.modal-container' } );