Skip to content

Commit ed18313

Browse files
committed
Wrap page-level navset_bar tab contents in main container
1 parent 4a69db2 commit ed18313

File tree

2 files changed

+33
-19
lines changed

2 files changed

+33
-19
lines changed

shiny/ui/_navs.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,7 @@ class NavSetBar(NavSet):
989989
underline: bool
990990
collapsible: bool
991991
fluid: bool
992+
_is_page_level: bool
992993

993994
def __init__(
994995
self,
@@ -1032,6 +1033,7 @@ def __init__(
10321033
self.underline = underline
10331034
self.collapsible = collapsible
10341035
self.fluid = fluid
1036+
self._is_page_level = False
10351037

10361038
def layout(self, nav: Tag, content: Tag) -> TagList:
10371039
nav_container = div(
@@ -1089,13 +1091,20 @@ def layout(self, nav: Tag, content: Tag) -> TagList:
10891091
if self.fillable:
10901092
content_div = as_fillable_container(as_fill_item(content_div))
10911093
else:
1094+
tab_content = contents
1095+
if self._is_page_level:
1096+
# TODO: This could also be applied to the non-sidebar page layout above
1097+
from ._page import page_main_container
1098+
1099+
tab_content = page_main_container(*contents)
1100+
10921101
content_div = div(
10931102
# In the fluid case, the sidebar layout should be flush (i.e.,
10941103
# the .container-fluid class adds padding that we don't want)
10951104
{"class": "container"} if not self.fluid else None,
10961105
layout_sidebar(
10971106
self.sidebar,
1098-
contents,
1107+
tab_content,
10991108
fillable=self.fillable is not False,
11001109
border_radius=False,
11011110
border=not self.fluid,

shiny/ui/_page.py

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -267,26 +267,31 @@ def page_navbar(
267267

268268
tagAttrs: TagAttrs = {"class": pageClass}
269269

270+
navbar = navset_bar(
271+
*args,
272+
title=title,
273+
id=resolve_id_or_none(id),
274+
selected=selected,
275+
sidebar=sidebar,
276+
fillable=fillable,
277+
gap=gap,
278+
padding=padding,
279+
position=position,
280+
header=header,
281+
footer=footer,
282+
bg=bg,
283+
inverse=inverse,
284+
underline=underline,
285+
collapsible=collapsible,
286+
fluid=fluid,
287+
)
288+
# This is a page-level navbar, so opt into page-level layouts (in particular for
289+
# navbar with a global sidebar)
290+
navbar._is_page_level = True
291+
270292
page_args = (
271293
tagAttrs,
272-
navset_bar(
273-
*args,
274-
title=title,
275-
id=resolve_id_or_none(id),
276-
selected=selected,
277-
sidebar=sidebar,
278-
fillable=fillable,
279-
gap=gap,
280-
padding=padding,
281-
position=position,
282-
header=header,
283-
footer=footer,
284-
bg=bg,
285-
inverse=inverse,
286-
underline=underline,
287-
collapsible=collapsible,
288-
fluid=fluid,
289-
),
294+
navbar,
290295
get_window_title(title, window_title=window_title),
291296
)
292297
page_kwargs = {

0 commit comments

Comments
 (0)