12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from nicegui import ui
- from . import doc
- @doc.demo(ui.teleport)
- def main_demo() -> None:
- markdown = ui.markdown('Enter your **name**!')
- def inject_input():
- with ui.teleport(f'#c{markdown.id} strong'):
- ui.input('name').classes('inline-flex').props('dense outlined')
- ui.button('inject input', on_click=inject_input)
- @doc.demo('Radio element with arbitrary content', '''
- With the right CSS selector, you can place any content inside a standard radio element.
- ''')
- def arbitrary_content():
- options = ['Star', 'Thump Up', 'Heart']
- radio = ui.radio({x: '' for x in options}, value='Star').props('inline')
- with ui.teleport(f'#c{radio.id} > div:nth-child(1) .q-radio__label'):
- ui.icon('star', size='md')
- with ui.teleport(f'#c{radio.id} > div:nth-child(2) .q-radio__label'):
- ui.icon('thumb_up', size='md')
- with ui.teleport(f'#c{radio.id} > div:nth-child(3) .q-radio__label'):
- ui.icon('favorite', size='md')
- ui.label().bind_text_from(radio, 'value')
- @doc.demo('Injecting a graph into a table cell', '''
- This demo shows how to inject ECharts graphs into table cells.
- ''')
- def graph_in_table():
- columns = [
- {'name': 'name', 'label': 'Product', 'field': 'name', 'align': 'center'},
- {'name': 'sales', 'label': 'Sales', 'field': 'sales', 'align': 'center'},
- ]
- rows = [
- {'name': 'A', 'data': [10, 8, 2, 4]},
- {'name': 'B', 'data': [3, 5, 7, 8]},
- {'name': 'C', 'data': [2, 1, 3, 7]},
- ]
- table = ui.table(columns=columns, rows=rows, row_key='name').classes('w-72')
- for r, row in enumerate(rows):
- with ui.teleport(f'#c{table.id} tr:nth-child({r+1}) td:nth-child(2)'):
- ui.echart({
- 'xAxis': {'type': 'category', 'show': False},
- 'yAxis': {'type': 'value', 'show': False},
- 'series': [{'type': 'line', 'data': row['data']}],
- }).classes('w-44 h-20')
- doc.reference(ui.teleport)
|