Selaa lähdekoodia

#837 improve naming, avoid eval

Falko Schindler 2 vuotta sitten
vanhempi
säilyke
3e721704eb
1 muutettua tiedostoa jossa 20 lisäystä ja 15 poistoa
  1. 20 15
      website/documentation.py

+ 20 - 15
website/documentation.py

@@ -244,12 +244,17 @@ def create_full() -> None:
     ''').classes('bold-links arrow-links')
     with ui.row():
         ui.label('Choose your favorite element from those available and start having fun!').classes('mx-auto my-auto')
-        elements_list = ['ui.label', 'ui.checkbox', 'ui.switch', 'ui.input', 'ui.textarea', 'ui.button']
-        select_element = ui.select(options=elements_list, value='ui.button', on_change=lambda: elements_ui.refresh()) \
-            .props('dense hide-bottom-space')
+        select_element = ui.select({
+            ui.label: 'ui.label',
+            ui.checkbox: 'ui.checkbox',
+            ui.switch: 'ui.switch',
+            ui.input: 'ui.input',
+            ui.textarea: 'ui.textarea',
+            ui.button: 'ui.button',
+        }, value=ui.button, on_change=lambda: live_demo_ui.refresh()).props('dense')
 
     @ui.refreshable
-    def elements_ui():
+    def live_demo_ui():
         with ui.column().classes('w-full items-stretch gap-8 no-wrap min-[1500px]:flex-row'):
             with demo.python_window(classes='w-full max-w-[44rem]'):
                 with ui.column().classes('w-full gap-4'):
@@ -257,13 +262,13 @@ def create_full() -> None:
                         ```py
                         from nicegui import ui
 
-                        element = {select_element.value}('element')
+                        element = {select_element.options[select_element.value]}('element')
                         ```
                     ''').classes('mb-[-0.25em]')
                     with ui.row().classes('items-center gap-0 w-full px-2'):
                         def handle_classes(e: events.ValueChangeEventArguments):
                             try:
-                                b.classes(replace=e.value)
+                                element.classes(replace=e.value)
                             except ValueError:
                                 pass
                         ui.markdown("`element.classes('`")
@@ -271,32 +276,32 @@ def create_full() -> None:
                         ui.markdown("`')`")
                     with ui.row().classes('items-center gap-0 w-full px-2'):
                         def handle_props(e: events.ValueChangeEventArguments):
-                            b._props = {'label': 'Button', 'color': 'primary'}
+                            element._props = {'label': 'Button', 'color': 'primary'}
                             try:
-                                b.props(e.value)
+                                element.props(e.value)
                             except ValueError:
                                 pass
-                            b.update()
+                            element.update()
                         ui.markdown("`element.props('`")
                         ui.input(on_change=handle_props).classes('mt-[-0.5em] text-mono grow').props('dense')
                         ui.markdown("`')`")
                     with ui.row().classes('items-center gap-0 w-full px-2'):
                         def handle_style(e: events.ValueChangeEventArguments):
                             try:
-                                b.style(replace=e.value)
+                                element.style(replace=e.value)
                             except ValueError:
                                 pass
                         ui.markdown("`element.style('`")
                         ui.input(on_change=handle_style).classes('mt-[-0.5em] text-mono grow').props('dense')
                         ui.markdown("`')`")
                     ui.markdown('''
-                    ```py
-                    ui.run()
-                    ```
+                        ```py
+                        ui.run()
+                        ```
                     ''')
             with demo.browser_window(classes='w-full max-w-[44rem] min-[1500px]:max-w-[20rem] min-h-[10rem] browser-window'):
-                b: ui.element = eval(f'{select_element.value}("element")')
-    elements_ui()
+                element: ui.element = select_element.value("element")
+    live_demo_ui()
 
     @text_demo('Tailwind CSS', '''
         [Tailwind CSS](https://tailwindcss.com/) is a CSS framework for rapidly building custom user interfaces.