grid_documentation.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from nicegui import ui
  2. from . import doc
  3. @doc.demo(ui.grid)
  4. def main_demo() -> None:
  5. with ui.grid(columns=2):
  6. ui.label('Name:')
  7. ui.label('Tom')
  8. ui.label('Age:')
  9. ui.label('42')
  10. ui.label('Height:')
  11. ui.label('1.80m')
  12. @doc.demo('Custom grid layout', '''
  13. This demo shows how to create a custom grid layout passing a string with the grid-template-columns CSS property.
  14. You can use any valid CSS dimensions, such as 'auto', '1fr', '80px', etc.
  15. - 'auto' will make the column as wide as its content.
  16. - '1fr' or '2fr' will make the corresponding columns fill the remaining space, with fractions in a 1:2 ratio.
  17. - '80px' will make the column 80 pixels wide.
  18. ''')
  19. def custom_demo() -> None:
  20. with ui.grid(columns='auto 80px 1fr 2fr').classes('w-full gap-0'):
  21. for _ in range(3):
  22. ui.label('auto').classes('border p-1')
  23. ui.label('80px').classes('border p-1')
  24. ui.label('1fr').classes('border p-1')
  25. ui.label('2fr').classes('border p-1')
  26. @doc.demo('Cells spanning multiple columns', '''
  27. This demo shows how to span cells over multiple columns.
  28. Note that there is [no Tailwind class for spanning 15 columns](https://tailwindcss.com/docs/grid-column),
  29. but we can set [arbitrary values](https://tailwindcss.com/docs/grid-column#arbitrary-values) using square brackets.
  30. Alternatively you could use the corresponding CSS definition: `.style('grid-column: span 15 / span 15')`.
  31. ''')
  32. def span_demo() -> None:
  33. with ui.grid(columns=16).classes('w-full gap-0'):
  34. ui.label('full').classes('col-span-full border p-1')
  35. ui.label('8').classes('col-span-8 border p-1')
  36. ui.label('8').classes('col-span-8 border p-1')
  37. ui.label('12').classes('col-span-12 border p-1')
  38. ui.label('4').classes('col-span-4 border p-1')
  39. ui.label('15').classes('col-[span_15] border p-1')
  40. ui.label('1').classes('col-span-1 border p-1')
  41. doc.reference(ui.grid)