from typing import Optional from nicegui import ui from ..example import example def intro(menu: Optional[ui.element] = None) -> None: @example(ui.table, menu) def table_example(): columns = [ {'name': 'name', 'label': 'Name', 'field': 'name', 'required': True, 'align': 'left'}, {'name': 'age', 'label': 'Age', 'field': 'age', 'sortable': True}, ] rows = [ {'name': 'Alice', 'age': 18}, {'name': 'Bob', 'age': 21}, {'name': 'Carol'}, ] ui.table(columns=columns, rows=rows, row_key='name') def more() -> None: @example('''#### Table with expandable rows Scoped slots can be used to insert buttons that toggle the expand state of a table row. See the [Quasar documentation](https://quasar.dev/vue-components/table#expanding-rows) for more information. ''', None) def table_with_expandable_rows(): columns = [ {'name': 'name', 'label': 'Name', 'field': 'name'}, {'name': 'age', 'label': 'Age', 'field': 'age'}, ] rows = [ {'name': 'Alice', 'age': 18}, {'name': 'Bob', 'age': 21}, {'name': 'Carol'}, ] with ui.table(columns=columns, rows=rows, row_key='name').classes('w-72') as table: table.add_slot('header', r''' {{ col.label }} ''') table.add_slot('body', r''' {{ col.value }}
This is {{ props.row.name }}.
''')