Py.Cafe

jhsmit/

solara-interactive-title-0

Solara Interactive Title Edit

DocsPricing
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import solara

@solara.component
def EditableTitle(initial: str):
    title = solara.use_reactive(initial)
    edit_mode = solara.use_reactive(False)

    def on_edit(value: str):
        edit_mode.set(False)
        title.set(value)

    def handle(*args):
        if edit_mode.value:
            return
        edit_mode.set(True)

    if edit_mode.value:
        children = [solara.InputText(label="", value=title.value, on_value=on_edit)]

    else:
        children = [solara.Text(title.value)]

    div = solara.Div(children=children)
    solara.v.use_event(div, "dblclick", handle)


@solara.component
def Page():
    with solara.Card(EditableTitle("Double click to edit")):
        solara.Text("This is just text")