From 660cd1c81e51e5ada457fc8ebac778992bf8f25a Mon Sep 17 00:00:00 2001 From: David Sevilla Martin Date: Sat, 25 Jan 2020 09:10:18 -0500 Subject: [PATCH] Fix ModalManager not allowing vnodes, make modals set themselves to app.modal.component when created --- js/src/common/components/ModalManager.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/js/src/common/components/ModalManager.tsx b/js/src/common/components/ModalManager.tsx index d222fc826..f3617498e 100644 --- a/js/src/common/components/ModalManager.tsx +++ b/js/src/common/components/ModalManager.tsx @@ -2,6 +2,7 @@ import MicroModal from 'micromodal'; import Component from '../Component'; import Modal from './Modal'; +import {Vnode} from "mithril"; /** * The `ModalManager` component manages a modal dialog. Only one modal dialog @@ -9,9 +10,11 @@ import Modal from './Modal'; * overwrite the previous one. */ export default class ModalManager extends Component { + private node: Vnode; + showing: boolean; - component: Modal; hideTimeout: number; + component?: Modal; oncreate(vnode) { super.oncreate(vnode); @@ -22,7 +25,7 @@ export default class ModalManager extends Component { view() { return ( ); } @@ -30,15 +33,15 @@ export default class ModalManager extends Component { /** * Show a modal dialog. */ - show(component: Modal) { - if (!(component instanceof Modal)) { + show(component) { + if (!(component instanceof Modal) && !(component.tag?.prototype instanceof Modal)) { throw new Error('The ModalManager component can only show Modal components'); } clearTimeout(this.hideTimeout); this.showing = true; - this.component = component; + this.node = component.tag ? component : m(component); // if (app.current) app.current.retain = true; @@ -95,7 +98,7 @@ export default class ModalManager extends Component { this.component = null; - app.current.retain = false; + // app.current.retain = false; m.redraw(); }