Browse Source

customisation: provide access to justpy view

Rodja Trappe 2 years ago
parent
commit
a3ab500c06
2 changed files with 8 additions and 3 deletions
  1. 4 3
      nicegui/page.py
  2. 4 0
      tests/test_pages.py

+ 4 - 3
nicegui/page.py

@@ -166,12 +166,13 @@ class page:
         self.on_page_ready = on_page_ready
         self.on_disconnect = on_disconnect
         self.shared = shared
+        self.page: Optional[Page] = None
 
     def __call__(self, func, *args, **kwargs):
 
         @wraps(func)
         async def decorated():
-            page = Page(
+            self.page = Page(
                 title=self.title,
                 favicon=self.favicon,
                 dark=self.dark,
@@ -182,11 +183,11 @@ class page:
                 on_disconnect=self.on_disconnect,
                 shared=self.shared,
             )
-            with globals.within_view(page.view):
+            with globals.within_view(self.page.view):
                 await self.header()
                 await func(*args, **kwargs) if is_coroutine(func) else func(*args, **kwargs)
                 await self.footer()
-            return page
+            return self.page
         builder = PageBuilder(decorated, self.shared)
         if globals.server:
             builder.create_route(self.route)

+ 4 - 0
tests/test_pages.py

@@ -1,6 +1,8 @@
 import asyncio
+from tkinter import N
 from uuid import uuid4
 
+import justpy.htmlcomponents
 from nicegui import task_logger, ui
 
 from .screen import Screen
@@ -141,6 +143,8 @@ def test_customised_page(screen: Screen):
             trace.append('init')
 
         async def header(self) -> None:
+            assert isinstance(self.page.view, justpy.htmlcomponents.Div), \
+                'we should be able to access the underlying justpy view'
             await super().header()
             trace.append('header')