reflex 0.5.10a3__py3-none-any.whl → 0.6.0a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of reflex might be problematic. Click here for more details.
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -4
- reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
- reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
- reflex/__init__.py +3 -2
- reflex/__init__.pyi +2 -2
- reflex/app.py +43 -9
- reflex/base.py +3 -2
- reflex/compiler/compiler.py +6 -6
- reflex/compiler/utils.py +5 -3
- reflex/components/base/app_wrap.py +2 -4
- reflex/components/base/app_wrap.pyi +17 -17
- reflex/components/base/bare.py +7 -4
- reflex/components/base/body.pyi +17 -17
- reflex/components/base/document.pyi +81 -81
- reflex/components/base/error_boundary.py +10 -8
- reflex/components/base/error_boundary.pyi +20 -19
- reflex/components/base/fragment.pyi +17 -17
- reflex/components/base/head.pyi +33 -33
- reflex/components/base/link.pyi +34 -33
- reflex/components/base/meta.pyi +65 -65
- reflex/components/base/script.py +2 -1
- reflex/components/base/script.pyi +21 -20
- reflex/components/component.py +116 -145
- reflex/components/core/banner.py +59 -60
- reflex/components/core/banner.pyi +86 -150
- reflex/components/core/client_side_routing.py +2 -1
- reflex/components/core/client_side_routing.pyi +34 -33
- reflex/components/core/clipboard.py +2 -2
- reflex/components/core/clipboard.pyi +19 -18
- reflex/components/core/cond.py +21 -44
- reflex/components/core/debounce.py +6 -8
- reflex/components/core/debounce.pyi +19 -18
- reflex/components/core/foreach.py +5 -14
- reflex/components/core/html.pyi +18 -17
- reflex/components/core/match.py +36 -43
- reflex/components/core/upload.py +32 -25
- reflex/components/core/upload.pyi +84 -73
- reflex/components/datadisplay/code.py +55 -28
- reflex/components/datadisplay/code.pyi +20 -17
- reflex/components/datadisplay/dataeditor.py +17 -11
- reflex/components/datadisplay/dataeditor.pyi +34 -33
- reflex/components/el/__init__.py +0 -1
- reflex/components/el/__init__.pyi +0 -11
- reflex/components/el/element.pyi +17 -17
- reflex/components/el/elements/__init__.py +1 -7
- reflex/components/el/elements/__init__.pyi +1 -15
- reflex/components/el/elements/base.pyi +18 -17
- reflex/components/el/elements/forms.py +24 -31
- reflex/components/el/elements/forms.pyi +237 -236
- reflex/components/el/elements/inline.pyi +450 -449
- reflex/components/el/elements/media.py +0 -21
- reflex/components/el/elements/media.pyi +338 -337
- reflex/components/el/elements/metadata.py +3 -2
- reflex/components/el/elements/metadata.pyi +98 -97
- reflex/components/el/elements/other.pyi +114 -113
- reflex/components/el/elements/scripts.pyi +50 -49
- reflex/components/el/elements/sectioning.pyi +242 -241
- reflex/components/el/elements/tables.pyi +162 -161
- reflex/components/el/elements/typography.pyi +242 -241
- reflex/components/gridjs/datatable.py +13 -14
- reflex/components/gridjs/datatable.pyi +34 -33
- reflex/components/lucide/icon.py +2 -126
- reflex/components/lucide/icon.pyi +34 -142
- reflex/components/markdown/markdown.py +30 -35
- reflex/components/markdown/markdown.pyi +29 -32
- reflex/components/moment/moment.pyi +19 -18
- reflex/components/next/base.pyi +17 -17
- reflex/components/next/image.py +0 -4
- reflex/components/next/image.pyi +20 -19
- reflex/components/next/link.pyi +18 -17
- reflex/components/next/video.pyi +18 -17
- reflex/components/plotly/plotly.py +16 -28
- reflex/components/plotly/plotly.pyi +36 -35
- reflex/components/props.py +21 -10
- reflex/components/radix/__init__.pyi +1 -1
- reflex/components/radix/primitives/__init__.pyi +0 -1
- reflex/components/radix/primitives/accordion.py +7 -8
- reflex/components/radix/primitives/accordion.pyi +117 -116
- reflex/components/radix/primitives/base.pyi +34 -33
- reflex/components/radix/primitives/drawer.pyi +169 -168
- reflex/components/radix/primitives/form.pyi +168 -167
- reflex/components/radix/primitives/progress.pyi +82 -81
- reflex/components/radix/primitives/slider.pyi +84 -83
- reflex/components/radix/themes/base.py +8 -4
- reflex/components/radix/themes/base.pyi +114 -113
- reflex/components/radix/themes/color_mode.py +12 -21
- reflex/components/radix/themes/color_mode.pyi +67 -67
- reflex/components/radix/themes/components/__init__.pyi +1 -0
- reflex/components/radix/themes/components/alert_dialog.pyi +118 -117
- reflex/components/radix/themes/components/aspect_ratio.pyi +18 -17
- reflex/components/radix/themes/components/avatar.pyi +18 -17
- reflex/components/radix/themes/components/badge.pyi +18 -17
- reflex/components/radix/themes/components/button.pyi +18 -17
- reflex/components/radix/themes/components/callout.pyi +82 -81
- reflex/components/radix/themes/components/card.pyi +18 -17
- reflex/components/radix/themes/components/checkbox.py +2 -3
- reflex/components/radix/themes/components/checkbox.pyi +53 -52
- reflex/components/radix/themes/components/checkbox_cards.pyi +34 -33
- reflex/components/radix/themes/components/checkbox_group.pyi +34 -33
- reflex/components/radix/themes/components/context_menu.pyi +140 -139
- reflex/components/radix/themes/components/data_list.py +5 -0
- reflex/components/radix/themes/components/data_list.pyi +71 -65
- reflex/components/radix/themes/components/dialog.pyi +121 -120
- reflex/components/radix/themes/components/dropdown_menu.pyi +142 -141
- reflex/components/radix/themes/components/hover_card.pyi +68 -67
- reflex/components/radix/themes/components/icon_button.py +2 -1
- reflex/components/radix/themes/components/icon_button.pyi +18 -17
- reflex/components/radix/themes/components/inset.pyi +18 -17
- reflex/components/radix/themes/components/popover.pyi +73 -72
- reflex/components/radix/themes/components/progress.pyi +18 -17
- reflex/components/radix/themes/components/radio.pyi +18 -17
- reflex/components/radix/themes/components/radio_cards.pyi +35 -34
- reflex/components/radix/themes/components/radio_group.py +35 -31
- reflex/components/radix/themes/components/radio_group.pyi +73 -66
- reflex/components/radix/themes/components/scroll_area.pyi +18 -17
- reflex/components/radix/themes/components/segmented_control.pyi +35 -34
- reflex/components/radix/themes/components/select.py +2 -1
- reflex/components/radix/themes/components/select.pyi +155 -154
- reflex/components/radix/themes/components/separator.py +2 -3
- reflex/components/radix/themes/components/separator.pyi +18 -17
- reflex/components/radix/themes/components/skeleton.pyi +18 -17
- reflex/components/radix/themes/components/slider.py +2 -1
- reflex/components/radix/themes/components/slider.pyi +20 -19
- reflex/components/radix/themes/components/spinner.pyi +18 -17
- reflex/components/radix/themes/components/switch.pyi +19 -18
- reflex/components/radix/themes/components/table.pyi +114 -113
- reflex/components/radix/themes/components/tabs.pyi +84 -83
- reflex/components/radix/themes/components/text_area.pyi +21 -20
- reflex/components/radix/themes/components/text_field.py +0 -79
- reflex/components/radix/themes/components/text_field.pyi +57 -63
- reflex/components/radix/themes/components/tooltip.pyi +21 -20
- reflex/components/radix/themes/layout/base.pyi +18 -17
- reflex/components/radix/themes/layout/box.pyi +18 -17
- reflex/components/radix/themes/layout/center.pyi +18 -17
- reflex/components/radix/themes/layout/container.py +2 -3
- reflex/components/radix/themes/layout/container.pyi +18 -17
- reflex/components/radix/themes/layout/flex.pyi +18 -17
- reflex/components/radix/themes/layout/grid.pyi +18 -17
- reflex/components/radix/themes/layout/list.py +5 -4
- reflex/components/radix/themes/layout/list.pyi +86 -85
- reflex/components/radix/themes/layout/section.py +2 -3
- reflex/components/radix/themes/layout/section.pyi +18 -17
- reflex/components/radix/themes/layout/spacer.pyi +18 -17
- reflex/components/radix/themes/layout/stack.pyi +50 -49
- reflex/components/radix/themes/typography/blockquote.pyi +18 -17
- reflex/components/radix/themes/typography/code.pyi +18 -17
- reflex/components/radix/themes/typography/heading.pyi +18 -17
- reflex/components/radix/themes/typography/link.pyi +18 -17
- reflex/components/radix/themes/typography/text.pyi +114 -113
- reflex/components/react_player/audio.pyi +34 -33
- reflex/components/react_player/react_player.pyi +34 -33
- reflex/components/react_player/video.pyi +34 -33
- reflex/components/recharts/cartesian.py +23 -19
- reflex/components/recharts/cartesian.pyi +297 -296
- reflex/components/recharts/charts.py +6 -5
- reflex/components/recharts/charts.pyi +179 -178
- reflex/components/recharts/general.py +8 -7
- reflex/components/recharts/general.pyi +82 -81
- reflex/components/recharts/polar.py +14 -13
- reflex/components/recharts/polar.pyi +76 -75
- reflex/components/recharts/recharts.pyi +33 -33
- reflex/components/sonner/toast.py +30 -33
- reflex/components/sonner/toast.pyi +27 -25
- reflex/components/suneditor/editor.py +2 -1
- reflex/components/suneditor/editor.pyi +27 -26
- reflex/components/tags/iter_tag.py +16 -16
- reflex/components/tags/tag.py +8 -10
- reflex/constants/base.py +3 -1
- reflex/constants/event.py +1 -0
- reflex/event.py +89 -79
- reflex/experimental/__init__.py +25 -6
- reflex/experimental/client_state.py +34 -58
- reflex/experimental/hooks.py +13 -18
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +84 -83
- reflex/{experimental/vars → ivars}/__init__.py +0 -1
- reflex/ivars/base.py +2180 -0
- reflex/ivars/function.py +200 -0
- reflex/ivars/number.py +1137 -0
- reflex/ivars/object.py +564 -0
- reflex/ivars/sequence.py +1601 -0
- reflex/model.py +22 -0
- reflex/reflex.py +4 -0
- reflex/state.py +388 -73
- reflex/style.py +52 -34
- reflex/testing.py +8 -3
- reflex/utils/exceptions.py +12 -0
- reflex/utils/exec.py +0 -14
- reflex/utils/format.py +74 -223
- reflex/utils/net.py +43 -0
- reflex/utils/path_ops.py +13 -1
- reflex/utils/prerequisites.py +46 -26
- reflex/utils/pyi_generator.py +5 -4
- reflex/utils/serializers.py +13 -31
- reflex/utils/types.py +44 -9
- reflex/vars.py +127 -2230
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/METADATA +4 -6
- reflex-0.6.0a1.dist-info/RECORD +384 -0
- reflex/.templates/apps/demo/.gitignore +0 -4
- reflex/.templates/apps/demo/assets/favicon.ico +0 -0
- reflex/.templates/apps/demo/assets/github.svg +0 -10
- reflex/.templates/apps/demo/assets/icon.svg +0 -37
- reflex/.templates/apps/demo/assets/logo.svg +0 -68
- reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
- reflex/.templates/apps/demo/code/__init__.py +0 -1
- reflex/.templates/apps/demo/code/demo.py +0 -127
- reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
- reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
- reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
- reflex/.templates/apps/demo/code/pages/forms.py +0 -257
- reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
- reflex/.templates/apps/demo/code/pages/home.py +0 -56
- reflex/.templates/apps/demo/code/sidebar.py +0 -178
- reflex/.templates/apps/demo/code/state.py +0 -22
- reflex/.templates/apps/demo/code/states/form_state.py +0 -40
- reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
- reflex/.templates/apps/demo/code/styles.py +0 -68
- reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
- reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
- reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
- reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
- reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
- reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
- reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
- reflex/.templates/apps/demo/code/webui/state.py +0 -146
- reflex/.templates/apps/demo/code/webui/styles.py +0 -88
- reflex/experimental/vars/base.py +0 -583
- reflex/experimental/vars/function.py +0 -290
- reflex/experimental/vars/number.py +0 -1458
- reflex/experimental/vars/object.py +0 -804
- reflex/experimental/vars/sequence.py +0 -1764
- reflex/utils/watch.py +0 -96
- reflex/vars.pyi +0 -218
- reflex-0.5.10a3.dist-info/RECORD +0 -413
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
|
@@ -87,36 +87,28 @@ from .inline import u as u
|
|
|
87
87
|
from .inline import wbr as wbr
|
|
88
88
|
from .media import Area as Area
|
|
89
89
|
from .media import Audio as Audio
|
|
90
|
-
from .media import Defs as Defs
|
|
91
90
|
from .media import Embed as Embed
|
|
92
91
|
from .media import Iframe as Iframe
|
|
93
92
|
from .media import Img as Img
|
|
94
|
-
from .media import LinearGradient as LinearGradient
|
|
95
93
|
from .media import Map as Map
|
|
96
94
|
from .media import Object as Object
|
|
97
|
-
from .media import Path as Path
|
|
98
95
|
from .media import Picture as Picture
|
|
99
96
|
from .media import Portal as Portal
|
|
100
97
|
from .media import Source as Source
|
|
101
|
-
from .media import Stop as Stop
|
|
102
98
|
from .media import Svg as Svg
|
|
103
99
|
from .media import Track as Track
|
|
104
100
|
from .media import Video as Video
|
|
105
101
|
from .media import area as area
|
|
106
102
|
from .media import audio as audio
|
|
107
|
-
from .media import defs as defs # type: ignore
|
|
108
103
|
from .media import embed as embed
|
|
109
104
|
from .media import iframe as iframe
|
|
110
105
|
from .media import image as image
|
|
111
106
|
from .media import img as img
|
|
112
|
-
from .media import lineargradient as lineargradient # type: ignore
|
|
113
107
|
from .media import map as map
|
|
114
108
|
from .media import object as object
|
|
115
|
-
from .media import path as path # type: ignore
|
|
116
109
|
from .media import picture as picture
|
|
117
110
|
from .media import portal as portal
|
|
118
111
|
from .media import source as source
|
|
119
|
-
from .media import stop as stop # type: ignore
|
|
120
112
|
from .media import svg as svg
|
|
121
113
|
from .media import track as track
|
|
122
114
|
from .media import video as video
|
|
@@ -292,11 +284,6 @@ _MAPPING = {
|
|
|
292
284
|
"portal",
|
|
293
285
|
"source",
|
|
294
286
|
"svg",
|
|
295
|
-
"defs",
|
|
296
|
-
"lineargradient",
|
|
297
|
-
"LinearGradient",
|
|
298
|
-
"stop",
|
|
299
|
-
"path",
|
|
300
287
|
],
|
|
301
288
|
"metadata": ["base", "head", "link", "meta", "title", "style"],
|
|
302
289
|
"other": ["details", "dialog", "summary", "slot", "template", "math", "html"],
|
|
@@ -348,7 +335,6 @@ _MAPPING = {
|
|
|
348
335
|
"Del",
|
|
349
336
|
],
|
|
350
337
|
}
|
|
351
|
-
EXCLUDE = ["del_", "Del", "image"
|
|
338
|
+
EXCLUDE = ["del_", "Del", "image"]
|
|
352
339
|
for _, v in _MAPPING.items():
|
|
353
340
|
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
|
|
354
|
-
_PYRIGHT_IGNORE_IMPORTS = ["stop", "lineargradient", "path", "defs"]
|
|
@@ -7,8 +7,9 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
7
7
|
|
|
8
8
|
from reflex.components.el.element import Element
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
|
+
from reflex.ivars.base import ImmutableVar
|
|
10
11
|
from reflex.style import Style
|
|
11
|
-
from reflex.vars import
|
|
12
|
+
from reflex.vars import Var
|
|
12
13
|
|
|
13
14
|
class BaseHTML(Element):
|
|
14
15
|
@overload
|
|
@@ -45,51 +46,51 @@ class BaseHTML(Element):
|
|
|
45
46
|
id: Optional[Any] = None,
|
|
46
47
|
class_name: Optional[Any] = None,
|
|
47
48
|
autofocus: Optional[bool] = None,
|
|
48
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
49
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
49
50
|
on_blur: Optional[
|
|
50
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
51
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
51
52
|
] = None,
|
|
52
53
|
on_click: Optional[
|
|
53
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
54
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
54
55
|
] = None,
|
|
55
56
|
on_context_menu: Optional[
|
|
56
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
57
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
57
58
|
] = None,
|
|
58
59
|
on_double_click: Optional[
|
|
59
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
60
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
60
61
|
] = None,
|
|
61
62
|
on_focus: Optional[
|
|
62
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
63
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
63
64
|
] = None,
|
|
64
65
|
on_mount: Optional[
|
|
65
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
66
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
66
67
|
] = None,
|
|
67
68
|
on_mouse_down: Optional[
|
|
68
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
69
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
69
70
|
] = None,
|
|
70
71
|
on_mouse_enter: Optional[
|
|
71
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
72
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
72
73
|
] = None,
|
|
73
74
|
on_mouse_leave: Optional[
|
|
74
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
75
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
75
76
|
] = None,
|
|
76
77
|
on_mouse_move: Optional[
|
|
77
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
78
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
78
79
|
] = None,
|
|
79
80
|
on_mouse_out: Optional[
|
|
80
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
81
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
81
82
|
] = None,
|
|
82
83
|
on_mouse_over: Optional[
|
|
83
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
84
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
84
85
|
] = None,
|
|
85
86
|
on_mouse_up: Optional[
|
|
86
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
87
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
87
88
|
] = None,
|
|
88
89
|
on_scroll: Optional[
|
|
89
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
90
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
90
91
|
] = None,
|
|
91
92
|
on_unmount: Optional[
|
|
92
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
93
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
93
94
|
] = None,
|
|
94
95
|
**props,
|
|
95
96
|
) -> "BaseHTML":
|
|
@@ -11,21 +11,21 @@ from reflex.components.el.element import Element
|
|
|
11
11
|
from reflex.components.tags.tag import Tag
|
|
12
12
|
from reflex.constants import Dirs, EventTriggers
|
|
13
13
|
from reflex.event import EventChain, EventHandler
|
|
14
|
-
from reflex.
|
|
14
|
+
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
15
15
|
from reflex.utils.imports import ImportDict
|
|
16
|
-
from reflex.vars import
|
|
16
|
+
from reflex.vars import Var, VarData
|
|
17
17
|
|
|
18
18
|
from .base import BaseHTML
|
|
19
19
|
|
|
20
|
-
FORM_DATA =
|
|
20
|
+
FORM_DATA = ImmutableVar.create("form_data")
|
|
21
21
|
HANDLE_SUBMIT_JS_JINJA2 = Environment().from_string(
|
|
22
22
|
"""
|
|
23
23
|
const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {
|
|
24
24
|
const $form = ev.target
|
|
25
25
|
ev.preventDefault()
|
|
26
|
-
const {{ form_data }} = {...Object.fromEntries(new FormData($form).entries()), ...{{ field_ref_mapping }}}
|
|
26
|
+
const {{ form_data }} = {...Object.fromEntries(new FormData($form).entries()), ...{{ field_ref_mapping }}};
|
|
27
27
|
|
|
28
|
-
{{ on_submit_event_chain }}
|
|
28
|
+
({{ on_submit_event_chain }}());
|
|
29
29
|
|
|
30
30
|
if ({{ reset_on_submit }}) {
|
|
31
31
|
$form.reset()
|
|
@@ -184,9 +184,9 @@ class Form(BaseHTML):
|
|
|
184
184
|
HANDLE_SUBMIT_JS_JINJA2.render(
|
|
185
185
|
handle_submit_unique_name=self.handle_submit_unique_name,
|
|
186
186
|
form_data=FORM_DATA,
|
|
187
|
-
field_ref_mapping=str(
|
|
188
|
-
on_submit_event_chain=
|
|
189
|
-
self.event_triggers[EventTriggers.ON_SUBMIT]
|
|
187
|
+
field_ref_mapping=str(LiteralVar.create(self._get_form_refs())),
|
|
188
|
+
on_submit_event_chain=str(
|
|
189
|
+
LiteralVar.create(self.event_triggers[EventTriggers.ON_SUBMIT])
|
|
190
190
|
),
|
|
191
191
|
reset_on_submit=self.reset_on_submit,
|
|
192
192
|
)
|
|
@@ -197,7 +197,7 @@ class Form(BaseHTML):
|
|
|
197
197
|
if EventTriggers.ON_SUBMIT in self.event_triggers:
|
|
198
198
|
render_tag.add_props(
|
|
199
199
|
**{
|
|
200
|
-
EventTriggers.ON_SUBMIT:
|
|
200
|
+
EventTriggers.ON_SUBMIT: ImmutableVar(
|
|
201
201
|
_var_name=f"handleSubmit_{self.handle_submit_unique_name}",
|
|
202
202
|
_var_type=EventChain,
|
|
203
203
|
)
|
|
@@ -212,24 +212,21 @@ class Form(BaseHTML):
|
|
|
212
212
|
# when ref start with refs_ it's an array of refs, so we need different method
|
|
213
213
|
# to collect data
|
|
214
214
|
if ref.startswith("refs_"):
|
|
215
|
-
ref_var =
|
|
216
|
-
form_refs[ref[
|
|
215
|
+
ref_var = ImmutableVar.create_safe(ref[:-3]).as_ref()
|
|
216
|
+
form_refs[ref[len("refs_") : -3]] = ImmutableVar.create_safe(
|
|
217
217
|
f"getRefValues({str(ref_var)})",
|
|
218
|
-
|
|
219
|
-
_var_is_string=False,
|
|
220
|
-
_var_data=ref_var._var_data,
|
|
218
|
+
_var_data=VarData.merge(ref_var._get_all_var_data()),
|
|
221
219
|
)
|
|
222
220
|
else:
|
|
223
|
-
ref_var =
|
|
224
|
-
form_refs[ref[4:]] =
|
|
221
|
+
ref_var = ImmutableVar.create_safe(ref).as_ref()
|
|
222
|
+
form_refs[ref[4:]] = ImmutableVar.create_safe(
|
|
225
223
|
f"getRefValue({str(ref_var)})",
|
|
226
|
-
|
|
227
|
-
_var_is_string=False,
|
|
228
|
-
_var_data=ref_var._var_data,
|
|
224
|
+
_var_data=VarData.merge(ref_var._get_all_var_data()),
|
|
229
225
|
)
|
|
226
|
+
# print(repr(form_refs))
|
|
230
227
|
return form_refs
|
|
231
228
|
|
|
232
|
-
def _get_vars(self, include_children: bool = True) -> Iterator[
|
|
229
|
+
def _get_vars(self, include_children: bool = True) -> Iterator[ImmutableVar]:
|
|
233
230
|
yield from super()._get_vars(include_children=include_children)
|
|
234
231
|
yield from self._get_form_refs().values()
|
|
235
232
|
|
|
@@ -503,7 +500,7 @@ AUTO_HEIGHT_JS = """
|
|
|
503
500
|
const autoHeightOnInput = (e, is_enabled) => {
|
|
504
501
|
if (is_enabled) {
|
|
505
502
|
const el = e.target;
|
|
506
|
-
el.style.overflowY = "
|
|
503
|
+
el.style.overflowY = "scroll";
|
|
507
504
|
el.style.height = "auto";
|
|
508
505
|
el.style.height = (e.target.scrollHeight) + "px";
|
|
509
506
|
if (el.form && !el.form.data_resize_on_reset) {
|
|
@@ -627,20 +624,16 @@ class Textarea(BaseHTML):
|
|
|
627
624
|
"Cannot combine `enter_key_submit` with `on_key_down`.",
|
|
628
625
|
)
|
|
629
626
|
tag.add_props(
|
|
630
|
-
on_key_down=
|
|
631
|
-
f"(e) => enterKeySubmitOnKeyDown(e, {self.enter_key_submit
|
|
632
|
-
|
|
633
|
-
_var_is_string=False,
|
|
634
|
-
_var_data=self.enter_key_submit._var_data,
|
|
627
|
+
on_key_down=ImmutableVar.create_safe(
|
|
628
|
+
f"(e) => enterKeySubmitOnKeyDown(e, {str(self.enter_key_submit)})",
|
|
629
|
+
_var_data=VarData.merge(self.enter_key_submit._get_all_var_data()),
|
|
635
630
|
)
|
|
636
631
|
)
|
|
637
632
|
if self.auto_height is not None:
|
|
638
633
|
tag.add_props(
|
|
639
|
-
on_input=
|
|
640
|
-
f"(e) => autoHeightOnInput(e, {self.auto_height
|
|
641
|
-
|
|
642
|
-
_var_is_string=False,
|
|
643
|
-
_var_data=self.auto_height._var_data,
|
|
634
|
+
on_input=ImmutableVar.create_safe(
|
|
635
|
+
f"(e) => autoHeightOnInput(e, {str(self.auto_height)})",
|
|
636
|
+
_var_data=VarData.merge(self.auto_height._get_all_var_data()),
|
|
644
637
|
)
|
|
645
638
|
)
|
|
646
639
|
return tag
|