Fixed Tab content lost on reload

This commit is contained in:
2025-11-16 16:17:42 +01:00
parent ca238303b8
commit edcd3ae1a8
3 changed files with 56 additions and 26 deletions

View File

@@ -114,12 +114,12 @@ class TabsManager(MultipleInstance):
logger.debug(f"on_new_tab {label=}, {component=}, {auto_increment=}")
if auto_increment:
label = f"{label}_{self._get_tab_count()}"
tab_id = self.add_tab(label, component)
component = component or VisNetwork(self._session, nodes=vis_nodes, edges=vis_edges)
tab_id = self.add_tab(label, component)
return (
self._mk_tabs_controller(),
self._wrap_tab_content(self._mk_tab_content(tab_id, component)),
self._mk_tabs_header(True),
self._mk_tabs_header_wrapper(True),
)
def add_tab(self, label: str, component: Any, activate: bool = True) -> str:
@@ -258,7 +258,7 @@ class TabsManager(MultipleInstance):
Script(f'updateTabs("{self._id}-controller");'),
)
def _mk_tabs_header(self, oob=False):
def _mk_tabs_header_wrapper(self, oob=False):
# Create visible tab buttons
visible_tab_buttons = [
self._mk_tab_button(self._state.tabs[tab_id])
@@ -318,14 +318,20 @@ class TabsManager(MultipleInstance):
Returns:
Div element containing the active tab content or empty container
"""
content = None
if self._state.active_tab and self._state.active_tab in self._state._tabs_content:
component = self._state._tabs_content[self._state.active_tab]
content = component
if self._state.active_tab:
active_tab = self._state.active_tab
if active_tab in self._state._tabs_content:
tab_content = self._state._tabs_content[active_tab]
else:
content = self._get_tab_content(active_tab)
tab_content = self._mk_tab_content(active_tab, content)
self._state._tabs_content[active_tab] = tab_content
else:
tab_content = self._mk_tab_content("", None)
return Div(
self._mk_tab_content(self._state.active_tab, content),
tab_content,
cls="mf-tab-content-wrapper",
id=f"{self._id}-content-wrapper",
)
@@ -374,7 +380,7 @@ class TabsManager(MultipleInstance):
"""
return Div(
self._mk_tabs_controller(),
self._mk_tabs_header(),
self._mk_tabs_header_wrapper(),
self._mk_tab_content_wrapper(),
cls="mf-tabs-manager",
id=self._id,