diff --git a/examples/reference/layouts/FloatPanel.ipynb b/examples/reference/layouts/FloatPanel.ipynb index c053fb95b0..4ef7816774 100644 --- a/examples/reference/layouts/FloatPanel.ipynb +++ b/examples/reference/layouts/FloatPanel.ipynb @@ -26,8 +26,8 @@ "* **`config`** (dict): Additional [jsPanel configuration](https://jspanel.de/#options/overview) with precedence over parameter values.\n", "* **`objects`** (list): The list of objects to display in the Column, should not generally be modified directly except when replaced in its entirety.\n", "* **`position`**: The initial position if the container is free-floating.\n", - "* **`offsetx`** (int): \"Horizontal offset in pixels.\n", - "* **`offsety`** (int): \"Vertical offset in pixels.\n", + "* **`offsetx`** (int): Horizontal offset in pixels.\n", + "* **`offsety`** (int): Vertical offset in pixels.\n", "* **`theme`** (str): The theme can be one of:\n", " - Built-ins: 'default', 'primary', 'secondary', 'info',\n", " 'success', 'warning', 'danger', 'light', 'dark' and 'none'\n", @@ -108,7 +108,7 @@ }, "outputs": [], "source": [ - "config={\"headerControls\": {\"close\": \"remove\"}}\n", + "config = {\"headerControls\": {\"close\": \"remove\"}}\n", "\n", "pn.Column(\n", " \"Example: `FloatPanel` without *close button*\",\n", diff --git a/panel/layout/float.py b/panel/layout/float.py index ee0e696a6f..4f7e951a18 100644 --- a/panel/layout/float.py +++ b/panel/layout/float.py @@ -118,12 +118,19 @@ class FloatPanel(ListLike, ReactiveHTML): offsetY: data.offsety, } """, + "reposition": """ + if (data.contained) { + view.run_script('contained') + return + } + state.panel.reposition(view.run_script('get_position')); + """, "contained": "delete state.panel; view.invalidate_render();", "theme": "state.panel.setTheme(data.theme)", "remove": "view.run_script('close'); state.panel = undefined;", - "offsetx": "state.panel.reposition(view.run_script('get_position'))", - "offsety": "state.panel.reposition(view.run_script('get_position'))", - "position": "state.panel.reposition(view.run_script('get_position'))", + "offsetx": "view.run_script('reposition')", + "offsety": "view.run_script('reposition')", + "position": "if (!data.contained) { view.run_script('reposition') }", } __css_raw__ = [f"{pn_config.npm_cdn}/jspanel4@4.12.0/dist/jspanel.css"]