New Way to Define Pages
Pages are not created through a contextmanager anymore. Instead a decorator is used to configure a page builder. This is much closer to FastAPI and the existing get-decorator.
Example:
@ui.page('/')
def index_page():
ui.label('Hello, world!')
It also allows us to create private pages: Before this change, it was quite complicated to not share all state with all browsers (eg. dialogs and menus). See https://nicegui.io/#page for documentation and #85 for more details on the decision process.
Other Changes
- introduced Selenium based pytests
- only update class, style and props if they have changed