|
@@ -15,8 +15,42 @@ def main_demo() -> None:
|
|
|
|
|
|
def more() -> None:
|
|
|
|
|
|
- @text_demo('placeholder', '''
|
|
|
- ...
|
|
|
+ @text_demo('Handling Scroll Events', '''
|
|
|
+ You can use the `on_scroll` argument in `ui.scroll_area` to handle scroll events.
|
|
|
+ The callback receives a `ScrollEventArguments` object with the following attributes:
|
|
|
+
|
|
|
+ - `sender`: the scroll_area object that generated the event
|
|
|
+ - `client`: the matching client
|
|
|
+ - `info`: the scroll area information as described in Quasar documentation ScrollArea API
|
|
|
+
|
|
|
+ The scroll info is represented as a `ScrollInfo` dataclass
|
|
|
+ ''')
|
|
|
+ def scroll_events():
|
|
|
+ number = ui.number(label='scroll position: ')
|
|
|
+ with ui.card().classes('w-48 h-32'):
|
|
|
+ with ui.scroll_area(on_scroll=lambda x: number.set_value(x.info.verticalPercentage)).classes('w-full'):
|
|
|
+ ui.label('I will scroll... ' * 10)
|
|
|
+
|
|
|
+ @text_demo('Setting the scroll position', '''
|
|
|
+ You can use the `set_scroll_position` method of `ui.scroll_area` to programmatically set the scroll position.
|
|
|
+ This can be useful for navigation or synchronization of multiple scroll_area elements
|
|
|
''')
|
|
|
- async def placeholder():
|
|
|
- ...
|
|
|
+ def scroll_events():
|
|
|
+ with ui.row():
|
|
|
+ with ui.column().classes('w-32'):
|
|
|
+ number = ui.number(label='scroll position', value=0, min=0, max=1,
|
|
|
+ on_change=lambda x: sa1.set_scroll_position(x.value)).classes('w-full')
|
|
|
+ ui.button(icon='add', on_click=lambda: number.set_value(number.value + 0.1))
|
|
|
+ ui.button(icon='remove', on_click=lambda: number.set_value(number.value - 0.1))
|
|
|
+
|
|
|
+ with ui.card().classes('w-48 h-48'):
|
|
|
+ with ui.scroll_area(
|
|
|
+ on_scroll=lambda x: sa2.set_scroll_position(x.info.verticalPercentage)
|
|
|
+ ).classes('w-full') as sa1:
|
|
|
+ ui.label('I will scroll... ' * 100)
|
|
|
+
|
|
|
+ with ui.card().classes('w-48 h-48'):
|
|
|
+ with ui.scroll_area().classes('w-full') as sa2:
|
|
|
+ ui.label('I will scroll... ' * 100)
|
|
|
+
|
|
|
+
|