pyscript-bootstrap-templates/pyscript_bootstrap_templates/bootstrap_templates.py

90 lines
2.5 KiB
Python
Raw Normal View History

2022-07-24 18:46:10 +02:00
from . import HTML
from . import bootstrap_HTML as bHTML
2022-07-24 11:58:11 +02:00
from js import document # type: ignore
class PyScriptBootstrapApp(object):
def __init__(self, parent_element:str = "pyscript_app"):
self._main_div = bHTML.ContainerFluid(id="main")
2022-09-24 17:49:06 +02:00
self._main_div.w = 100
self._main_div.vh_100 = True
self._main_div.p = 0
2022-07-24 11:58:11 +02:00
self._parent_element = document.getElementById(parent_element)
2022-09-24 17:49:06 +02:00
self._parent_element.appendChild(self._main_div.element)
2022-07-24 11:58:11 +02:00
@property
2022-09-24 17:49:06 +02:00
def main(self) -> HTML.Div:
2022-07-24 11:58:11 +02:00
return self._main_div
class PyScriptBootstrapDashboard(PyScriptBootstrapApp):
def __init__(self, parent_element:str = "pyscript_app", brand_name = "Dashboard"):
super().__init__(parent_element)
2022-09-24 17:49:06 +02:00
self._sidebar = bHTML.Col(id="sidebar", col_sm=5, col_md=4, col_lg=3, col_xl=3)
2022-07-24 11:58:11 +02:00
self._navbar = bHTML.NavbarDark(
2022-09-24 17:49:06 +02:00
parent=self._main_div,
2022-07-24 11:58:11 +02:00
brand = brand_name,
nav_fill=True,
toggle_button_for_target=self.sidebar
)
2022-09-24 17:49:06 +02:00
self._navbar.position = bHTML.Position.STICKY_TOP
self._navbar.w = 100
2022-07-24 11:58:11 +02:00
2022-09-24 17:49:06 +02:00
row = bHTML.Row(parent=self._main_div)
row.h = 100
row.w = 100
row.display_property = bHTML.DisplayProperty.INLINE_FLEX
2022-07-24 11:58:11 +02:00
row.append_child(self.sidebar)
self._sidebar.add_classes("sidebar")
self._sidebar.background_color = bHTML.BackgroundColor.LIGHT
self._sidebar.p = 4
self._sidebar.g = 2
self._sidebar.position = bHTML.Position.STATIC
self._sidebar.collapsable = True
self._sidebar.mw = 100
self._sidebar.shadow = bHTML.Shadow.LARGE
2022-09-24 17:49:06 +02:00
self._sidebar.overflow = bHTML.Overflow.HIDDEN
2022-07-24 11:58:11 +02:00
2022-09-24 17:49:06 +02:00
self._modal = bHTML.Modal(parent=self._main_div, title="Modal")
2022-07-24 11:58:11 +02:00
self._main_area = bHTML.Col(id="main_area", parent=row, col_lg=9, col_xl=9)
self._main_area.p = 4
2022-09-24 17:49:06 +02:00
self._main_area.overflow = bHTML.Overflow.HIDDEN
#self._main_area.vh_100 = True
2022-07-24 11:58:11 +02:00
self._main_area.mw = 100
def show_modal(self):
self.modal.show()
def hide_modal(self):
self.modal.hide()
def toggle_modal(self):
self.modal.toggle()
@property
def header(self) -> HTML.Header:
return self._header
@property
def sidebar(self) -> HTML.Div:
return self._sidebar
@property
def modal(self) -> HTML.Div:
return self._modal
@property
2022-09-24 17:49:06 +02:00
def main(self) -> HTML.Div:
2022-07-24 11:58:11 +02:00
return self._main_area