diff --git a/panel/models/html.ts b/panel/models/html.ts index 9195dbc2f6..0bea4bce75 100644 --- a/panel/models/html.ts +++ b/panel/models/html.ts @@ -46,6 +46,10 @@ export class HTMLView extends PanelMarkupView { const html = this.process_tex() this.set_html(html) }) + this.connect(this.model.properties.visible.change, () => { + if (this.model.visible) + this.container.style.visibility = 'visible'; + }) this.connect(this.model.properties.events.change, () => { this._remove_event_listeners() this._setup_event_listeners() diff --git a/panel/models/quill.ts b/panel/models/quill.ts index a22fb114a7..6beb55131e 100644 --- a/panel/models/quill.ts +++ b/panel/models/quill.ts @@ -15,6 +15,10 @@ export class QuillInputView extends HTMLBoxView { connect_signals(): void { super.connect_signals() this.connect(this.model.properties.disabled.change, () => this.quill.enable(!this.model.disabled)) + this.connect(this.model.properties.visible.change, () => { + if (this.model.visible) + this.container.style.visibility = 'visible'; + }) this.connect(this.model.properties.text.change, () => { if (this._editing) return @@ -79,7 +83,8 @@ export class QuillInputView extends HTMLBoxView { } style_redraw(): void { - this.container.style.visibility = 'visible'; + if (this.model.visible) + this.container.style.visibility = 'visible'; this.invalidate_layout() } diff --git a/panel/models/tabulator.ts b/panel/models/tabulator.ts index fead7a73b1..deb71b46a9 100644 --- a/panel/models/tabulator.ts +++ b/panel/models/tabulator.ts @@ -300,6 +300,10 @@ export class DataTabulatorView extends HTMLBoxView { this.invalidate_render() }, 20, false)) + this.connect(this.model.properties.visible.change, () => { + if (this.model.visible) + this.tabulator.element.style.visibility = 'visible'; + }) this.on_change([columns], () => { this.tabulator.setColumns(this.getColumns()) this.setHidden() diff --git a/panel/tests/ui/pane/test_markup.py b/panel/tests/ui/pane/test_markup.py index e659107ea6..dc03495755 100644 --- a/panel/tests/ui/pane/test_markup.py +++ b/panel/tests/ui/pane/test_markup.py @@ -39,3 +39,21 @@ def test_update_markdown_pane_resizes(page, port): time.sleep(0.1) height = page.locator(".markdown").bounding_box()['height'] assert int(height) == 37 + + +def test_markdown_pane_visible_toggle(page, port): + md = Markdown('Initial', visible=False) + + serve(md, port=port, threaded=True, show=False) + + time.sleep(0.2) + page.goto(f"http://localhost:{port}") + + assert page.locator(".markdown").locator("div").text_content() == 'Initial\n' + assert not page.locator(".markdown").locator("div").is_visible() + + md.visible = True + + time.sleep(0.2) + + assert page.locator(".markdown").locator("div").is_visible()