Browse Source

introduce ui.grid

Falko Schindler 2 years ago
parent
commit
2cf1742a3e

+ 24 - 0
nicegui/elements/grid.py

@@ -0,0 +1,24 @@
+from typing import Optional
+
+from ..element import Element
+
+
+class Grid(Element):
+
+    def __init__(self,
+                 rows: Optional[int] = None,
+                 columns: Optional[int] = None,
+                 ) -> None:
+        '''Grid Element
+
+        Provides a container which arranges its child in a grid.
+
+        :param rows: number of rows in the grid
+        :param columns: number of columns in the grid
+        '''
+        super().__init__('div')
+        self._classes = ['nicegui-grid']
+        if rows is not None:
+            self._style['grid-template-rows'] = f'repeat({rows}, minmax(0, 1fr))'
+        if columns is not None:
+            self._style['grid-template-columns'] = f'repeat({columns}, minmax(0, 1fr))'

+ 4 - 0
nicegui/static/nicegui.css

@@ -36,6 +36,10 @@
   align-items: flex-start;
   align-items: flex-start;
   gap: 1rem;
   gap: 1rem;
 }
 }
+.nicegui-grid {
+  display: grid;
+  gap: 1rem;
+}
 .nicegui-card {
 .nicegui-card {
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;

+ 1 - 0
nicegui/ui.py

@@ -20,6 +20,7 @@ from .elements.dark_mode import DarkMode as dark_mode
 from .elements.date import Date as date
 from .elements.date import Date as date
 from .elements.dialog import Dialog as dialog
 from .elements.dialog import Dialog as dialog
 from .elements.expansion import Expansion as expansion
 from .elements.expansion import Expansion as expansion
+from .elements.grid import Grid as grid
 from .elements.html import Html as html
 from .elements.html import Html as html
 from .elements.icon import Icon as icon
 from .elements.icon import Icon as icon
 from .elements.image import Image as image
 from .elements.image import Image as image

+ 1 - 0
website/documentation.py

@@ -144,6 +144,7 @@ def create_full() -> None:
     load_demo(ui.card)
     load_demo(ui.card)
     load_demo(ui.column)
     load_demo(ui.column)
     load_demo(ui.row)
     load_demo(ui.row)
+    load_demo(ui.grid)
 
 
     @text_demo('Clear Containers', '''
     @text_demo('Clear Containers', '''
         To remove all elements from a row, column or card container, use the `clear()` method.
         To remove all elements from a row, column or card container, use the `clear()` method.

+ 13 - 0
website/more_documentation/grid_documentation.py

@@ -0,0 +1,13 @@
+from nicegui import ui
+
+
+def main_demo() -> None:
+    with ui.grid(columns=2):
+        ui.label('Name:')
+        ui.label('Tom')
+
+        ui.label('Age:')
+        ui.label('42')
+
+        ui.label('Height:')
+        ui.label('1.80m')