reflex 0.6.0__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/custom_components/pyproject.toml.jinja2 +2 -2
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +2 -2
- reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +36 -0
- reflex/.templates/web/utils/state.js +1 -3
- reflex/__init__.py +2 -8
- reflex/__init__.pyi +1 -2
- reflex/app.py +2 -4
- reflex/app_module_for_backend.py +1 -1
- reflex/base.py +1 -1
- reflex/compiler/compiler.py +2 -2
- reflex/compiler/utils.py +3 -3
- reflex/components/base/app_wrap.py +2 -2
- reflex/components/base/app_wrap.pyi +27 -17
- reflex/components/base/bare.py +5 -4
- reflex/components/base/body.pyi +27 -17
- reflex/components/base/document.pyi +131 -81
- reflex/components/base/error_boundary.py +7 -6
- reflex/components/base/error_boundary.pyi +33 -20
- reflex/components/base/fragment.pyi +27 -17
- reflex/components/base/head.pyi +53 -33
- reflex/components/base/link.py +1 -1
- reflex/components/base/link.pyi +54 -33
- reflex/components/base/meta.pyi +105 -65
- reflex/components/base/script.py +2 -1
- reflex/components/base/script.pyi +38 -21
- reflex/components/component.py +47 -53
- reflex/components/core/banner.py +27 -23
- reflex/components/core/banner.pyi +171 -134
- reflex/components/core/client_side_routing.py +3 -2
- reflex/components/core/client_side_routing.pyi +54 -33
- reflex/components/core/clipboard.py +1 -2
- reflex/components/core/clipboard.pyi +33 -20
- reflex/components/core/cond.py +5 -5
- reflex/components/core/debounce.py +5 -5
- reflex/components/core/debounce.pyi +33 -20
- reflex/components/core/foreach.py +4 -3
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +46 -35
- reflex/components/core/match.py +17 -17
- reflex/components/core/upload.py +23 -17
- reflex/components/core/upload.pyi +124 -78
- reflex/components/datadisplay/code.py +10 -9
- reflex/components/datadisplay/code.pyi +409 -299
- reflex/components/datadisplay/dataeditor.py +10 -8
- reflex/components/datadisplay/dataeditor.pyi +53 -40
- reflex/components/el/element.pyi +27 -17
- reflex/components/el/elements/base.py +1 -1
- reflex/components/el/elements/base.pyi +45 -34
- reflex/components/el/elements/forms.py +16 -16
- reflex/components/el/elements/forms.pyi +707 -554
- reflex/components/el/elements/inline.py +1 -1
- reflex/components/el/elements/inline.pyi +1218 -937
- reflex/components/el/elements/media.py +1 -1
- reflex/components/el/elements/media.pyi +997 -786
- reflex/components/el/elements/metadata.py +6 -3
- reflex/components/el/elements/metadata.pyi +242 -181
- reflex/components/el/elements/other.py +1 -1
- reflex/components/el/elements/other.pyi +306 -235
- reflex/components/el/elements/scripts.py +1 -1
- reflex/components/el/elements/scripts.pyi +140 -109
- reflex/components/el/elements/sectioning.py +2 -0
- reflex/components/el/elements/sectioning.pyi +647 -496
- reflex/components/el/elements/tables.py +1 -1
- reflex/components/el/elements/tables.pyi +452 -351
- reflex/components/el/elements/typography.py +1 -1
- reflex/components/el/elements/typography.pyi +657 -506
- reflex/components/gridjs/datatable.py +9 -6
- reflex/components/gridjs/datatable.pyi +56 -35
- reflex/components/lucide/icon.py +1 -1
- reflex/components/lucide/icon.pyi +54 -33
- reflex/components/markdown/markdown.py +31 -26
- reflex/components/markdown/markdown.pyi +37 -27
- reflex/components/moment/moment.py +12 -13
- reflex/components/moment/moment.pyi +35 -23
- reflex/components/next/base.pyi +27 -17
- reflex/components/next/image.py +1 -1
- reflex/components/next/image.pyi +37 -22
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +28 -17
- reflex/components/next/video.py +1 -1
- reflex/components/next/video.pyi +28 -17
- reflex/components/plotly/plotly.py +13 -12
- reflex/components/plotly/plotly.pyi +54 -39
- reflex/components/props.py +1 -1
- reflex/components/radix/__init__.pyi +0 -1
- reflex/components/radix/primitives/__init__.pyi +0 -1
- reflex/components/radix/primitives/accordion.py +4 -4
- reflex/components/radix/primitives/accordion.pyi +495 -424
- reflex/components/radix/primitives/base.py +1 -1
- reflex/components/radix/primitives/base.pyi +54 -33
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/primitives/drawer.pyi +273 -172
- reflex/components/radix/primitives/form.py +1 -1
- reflex/components/radix/primitives/form.pyi +364 -257
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +282 -231
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +138 -87
- reflex/components/radix/themes/base.py +24 -3
- reflex/components/radix/themes/base.pyi +250 -178
- reflex/components/radix/themes/color_mode.py +5 -5
- reflex/components/radix/themes/color_mode.pyi +220 -187
- reflex/components/radix/themes/components/alert_dialog.py +1 -1
- reflex/components/radix/themes/components/alert_dialog.pyi +207 -136
- reflex/components/radix/themes/components/aspect_ratio.py +1 -1
- reflex/components/radix/themes/components/aspect_ratio.pyi +28 -17
- reflex/components/radix/themes/components/avatar.py +1 -1
- reflex/components/radix/themes/components/avatar.pyi +81 -70
- reflex/components/radix/themes/components/badge.py +1 -1
- reflex/components/radix/themes/components/badge.pyi +99 -88
- reflex/components/radix/themes/components/button.py +1 -1
- reflex/components/radix/themes/components/button.pyi +109 -98
- reflex/components/radix/themes/components/callout.py +1 -1
- reflex/components/radix/themes/components/callout.pyi +373 -322
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +49 -38
- reflex/components/radix/themes/components/checkbox.py +2 -1
- reflex/components/radix/themes/components/checkbox.pyi +245 -208
- reflex/components/radix/themes/components/checkbox_cards.py +1 -1
- reflex/components/radix/themes/components/checkbox_cards.pyi +115 -94
- reflex/components/radix/themes/components/checkbox_group.py +1 -1
- reflex/components/radix/themes/components/checkbox_group.pyi +107 -86
- reflex/components/radix/themes/components/context_menu.py +1 -1
- reflex/components/radix/themes/components/context_menu.pyi +319 -238
- reflex/components/radix/themes/components/data_list.py +1 -1
- reflex/components/radix/themes/components/data_list.pyi +171 -130
- reflex/components/radix/themes/components/dialog.py +1 -1
- reflex/components/radix/themes/components/dialog.pyi +210 -139
- reflex/components/radix/themes/components/dropdown_menu.py +1 -1
- reflex/components/radix/themes/components/dropdown_menu.pyi +332 -249
- reflex/components/radix/themes/components/hover_card.py +1 -1
- reflex/components/radix/themes/components/hover_card.pyi +131 -90
- reflex/components/radix/themes/components/icon_button.py +3 -2
- reflex/components/radix/themes/components/icon_button.pyi +109 -98
- reflex/components/radix/themes/components/inset.py +1 -1
- reflex/components/radix/themes/components/inset.pyi +58 -47
- reflex/components/radix/themes/components/popover.py +1 -1
- reflex/components/radix/themes/components/popover.pyi +136 -95
- reflex/components/radix/themes/components/progress.py +1 -1
- reflex/components/radix/themes/components/progress.pyi +82 -71
- reflex/components/radix/themes/components/radio.py +1 -1
- reflex/components/radix/themes/components/radio.pyi +80 -69
- reflex/components/radix/themes/components/radio_cards.py +1 -1
- reflex/components/radix/themes/components/radio_cards.pyi +119 -98
- reflex/components/radix/themes/components/radio_group.py +11 -8
- reflex/components/radix/themes/components/radio_group.pyi +271 -228
- reflex/components/radix/themes/components/scroll_area.py +1 -1
- reflex/components/radix/themes/components/scroll_area.pyi +32 -21
- reflex/components/radix/themes/components/segmented_control.py +1 -1
- reflex/components/radix/themes/components/segmented_control.pyi +113 -90
- reflex/components/radix/themes/components/select.py +3 -2
- reflex/components/radix/themes/components/select.pyi +471 -374
- reflex/components/radix/themes/components/separator.py +2 -1
- reflex/components/radix/themes/components/separator.pyi +80 -69
- reflex/components/radix/themes/components/skeleton.py +1 -1
- reflex/components/radix/themes/components/skeleton.pyi +34 -23
- reflex/components/radix/themes/components/slider.py +3 -2
- reflex/components/radix/themes/components/slider.pyi +88 -75
- reflex/components/radix/themes/components/spinner.py +1 -1
- reflex/components/radix/themes/components/spinner.pyi +30 -19
- reflex/components/radix/themes/components/switch.py +1 -1
- reflex/components/radix/themes/components/switch.pyi +84 -71
- reflex/components/radix/themes/components/table.py +1 -1
- reflex/components/radix/themes/components/table.pyi +332 -261
- reflex/components/radix/themes/components/tabs.py +1 -1
- reflex/components/radix/themes/components/tabs.pyi +194 -139
- reflex/components/radix/themes/components/text_area.py +1 -1
- reflex/components/radix/themes/components/text_area.pyi +111 -96
- reflex/components/radix/themes/components/text_field.py +1 -1
- reflex/components/radix/themes/components/text_field.pyi +286 -247
- reflex/components/radix/themes/components/tooltip.py +1 -1
- reflex/components/radix/themes/components/tooltip.pyi +37 -26
- reflex/components/radix/themes/layout/__init__.pyi +0 -1
- reflex/components/radix/themes/layout/base.py +1 -1
- reflex/components/radix/themes/layout/base.pyi +67 -56
- reflex/components/radix/themes/layout/box.pyi +45 -34
- reflex/components/radix/themes/layout/center.pyi +67 -56
- reflex/components/radix/themes/layout/container.py +2 -1
- reflex/components/radix/themes/layout/container.pyi +47 -36
- reflex/components/radix/themes/layout/flex.py +1 -1
- reflex/components/radix/themes/layout/flex.pyi +67 -56
- reflex/components/radix/themes/layout/grid.py +1 -1
- reflex/components/radix/themes/layout/grid.pyi +75 -64
- reflex/components/radix/themes/layout/list.py +6 -5
- reflex/components/radix/themes/layout/list.pyi +244 -193
- reflex/components/radix/themes/layout/section.py +2 -1
- reflex/components/radix/themes/layout/section.pyi +47 -36
- reflex/components/radix/themes/layout/spacer.pyi +67 -56
- reflex/components/radix/themes/layout/stack.py +1 -1
- reflex/components/radix/themes/layout/stack.pyi +159 -128
- reflex/components/radix/themes/typography/blockquote.py +1 -1
- reflex/components/radix/themes/typography/blockquote.pyi +100 -89
- reflex/components/radix/themes/typography/code.py +1 -1
- reflex/components/radix/themes/typography/code.pyi +101 -90
- reflex/components/radix/themes/typography/heading.py +1 -1
- reflex/components/radix/themes/typography/heading.pyi +107 -96
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +113 -102
- reflex/components/radix/themes/typography/text.py +1 -1
- reflex/components/radix/themes/typography/text.pyi +572 -501
- reflex/components/react_player/audio.pyi +60 -33
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +60 -33
- reflex/components/react_player/video.pyi +60 -33
- reflex/components/recharts/cartesian.py +3 -2
- reflex/components/recharts/cartesian.pyi +861 -678
- reflex/components/recharts/charts.py +5 -4
- reflex/components/recharts/charts.pyi +357 -252
- reflex/components/recharts/general.py +2 -1
- reflex/components/recharts/general.pyi +231 -180
- reflex/components/recharts/polar.py +5 -4
- reflex/components/recharts/polar.pyi +181 -144
- reflex/components/recharts/recharts.pyi +53 -33
- reflex/components/sonner/toast.py +17 -16
- reflex/components/sonner/toast.pyi +47 -36
- reflex/components/suneditor/editor.py +3 -2
- reflex/components/suneditor/editor.pyi +78 -55
- reflex/components/tags/cond_tag.py +4 -6
- reflex/components/tags/iter_tag.py +16 -28
- reflex/components/tags/match_tag.py +4 -6
- reflex/components/tags/tag.py +23 -40
- reflex/custom_components/custom_components.py +1 -3
- reflex/event.py +65 -113
- reflex/experimental/client_state.py +24 -25
- reflex/experimental/hooks.py +16 -16
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +187 -136
- reflex/{vars → ivars}/__init__.py +2 -6
- reflex/{vars → ivars}/base.py +216 -599
- reflex/{vars → ivars}/function.py +19 -15
- reflex/{vars → ivars}/number.py +20 -41
- reflex/{vars → ivars}/object.py +30 -28
- reflex/{vars → ivars}/sequence.py +50 -53
- reflex/middleware/hydrate_middleware.py +0 -2
- reflex/middleware/middleware.py +3 -3
- reflex/state.py +82 -148
- reflex/style.py +22 -21
- reflex/utils/exceptions.py +0 -20
- reflex/utils/format.py +34 -54
- reflex/utils/imports.py +73 -16
- reflex/utils/prerequisites.py +15 -35
- reflex/utils/pyi_generator.py +8 -13
- reflex/utils/serializers.py +22 -12
- reflex/utils/telemetry.py +2 -3
- reflex/utils/types.py +5 -10
- reflex/vars.py +501 -0
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/METADATA +5 -4
- reflex-0.6.0a1.dist-info/RECORD +384 -0
- reflex-0.6.0.dist-info/RECORD +0 -382
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
|
@@ -9,12 +9,12 @@ from reflex.base import Base
|
|
|
9
9
|
from reflex.components.component import Component, NoSSRComponent
|
|
10
10
|
from reflex.components.literals import LiteralRowMarker
|
|
11
11
|
from reflex.event import EventHandler
|
|
12
|
+
from reflex.ivars.base import ImmutableVar
|
|
13
|
+
from reflex.ivars.sequence import ArrayVar
|
|
12
14
|
from reflex.utils import console, format, types
|
|
13
15
|
from reflex.utils.imports import ImportDict, ImportVar
|
|
14
16
|
from reflex.utils.serializers import serializer
|
|
15
|
-
from reflex.vars import get_unique_variable_name
|
|
16
|
-
from reflex.vars.base import Var
|
|
17
|
-
from reflex.vars.sequence import ArrayVar
|
|
17
|
+
from reflex.vars import Var, get_unique_variable_name
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
# TODO: Fix the serialization issue for custom types.
|
|
@@ -295,7 +295,7 @@ class DataEditor(NoSSRComponent):
|
|
|
295
295
|
|
|
296
296
|
# Define the name of the getData callback associated with this component and assign to get_cell_content.
|
|
297
297
|
data_callback = f"getData_{editor_id}"
|
|
298
|
-
self.get_cell_content =
|
|
298
|
+
self.get_cell_content = ImmutableVar.create(data_callback) # type: ignore
|
|
299
299
|
|
|
300
300
|
code = [f"function {data_callback}([col, row])" "{"]
|
|
301
301
|
|
|
@@ -333,16 +333,18 @@ class DataEditor(NoSSRComponent):
|
|
|
333
333
|
|
|
334
334
|
# If rows is not provided, determine from data.
|
|
335
335
|
if rows is None:
|
|
336
|
-
if isinstance(data,
|
|
336
|
+
if isinstance(data, ImmutableVar) and not isinstance(data, ArrayVar):
|
|
337
337
|
raise ValueError(
|
|
338
338
|
"DataEditor data must be an ArrayVar if rows is not provided."
|
|
339
339
|
)
|
|
340
|
-
props["rows"] =
|
|
340
|
+
props["rows"] = (
|
|
341
|
+
data.length() if isinstance(data, ImmutableVar) else len(data)
|
|
342
|
+
)
|
|
341
343
|
|
|
342
|
-
if not isinstance(columns,
|
|
344
|
+
if not isinstance(columns, ImmutableVar) and len(columns):
|
|
343
345
|
if (
|
|
344
346
|
types.is_dataframe(type(data))
|
|
345
|
-
or isinstance(data,
|
|
347
|
+
or isinstance(data, ImmutableVar)
|
|
346
348
|
and types.is_dataframe(data._var_type)
|
|
347
349
|
):
|
|
348
350
|
raise ValueError(
|
|
@@ -9,10 +9,11 @@ from typing import Any, Callable, Dict, List, Literal, Optional, Union, overload
|
|
|
9
9
|
from reflex.base import Base
|
|
10
10
|
from reflex.components.component import NoSSRComponent
|
|
11
11
|
from reflex.event import EventHandler, EventSpec
|
|
12
|
+
from reflex.ivars.base import ImmutableVar
|
|
12
13
|
from reflex.style import Style
|
|
13
14
|
from reflex.utils.imports import ImportDict
|
|
14
15
|
from reflex.utils.serializers import serializer
|
|
15
|
-
from reflex.vars
|
|
16
|
+
from reflex.vars import Var
|
|
16
17
|
|
|
17
18
|
class GridColumnIcons(Enum):
|
|
18
19
|
Array = "array"
|
|
@@ -88,9 +89,9 @@ class DataEditor(NoSSRComponent):
|
|
|
88
89
|
*children,
|
|
89
90
|
rows: Optional[Union[Var[int], int]] = None,
|
|
90
91
|
columns: Optional[
|
|
91
|
-
Union[List[Dict[str, Any]],
|
|
92
|
+
Union[Var[List[Dict[str, Any]]], List[Dict[str, Any]]]
|
|
92
93
|
] = None,
|
|
93
|
-
data: Optional[Union[List[List[Any]],
|
|
94
|
+
data: Optional[Union[Var[List[List[Any]]], List[List[Any]]]] = None,
|
|
94
95
|
get_cell_content: Optional[Union[Var[str], str]] = None,
|
|
95
96
|
get_cell_for_selection: Optional[Union[Var[bool], bool]] = None,
|
|
96
97
|
on_paste: Optional[Union[Var[bool], bool]] = None,
|
|
@@ -106,8 +107,8 @@ class DataEditor(NoSSRComponent):
|
|
|
106
107
|
row_height: Optional[Union[Var[int], int]] = None,
|
|
107
108
|
row_markers: Optional[
|
|
108
109
|
Union[
|
|
109
|
-
Literal["
|
|
110
|
-
|
|
110
|
+
Var[Literal["none", "number", "checkbox", "both", "clickable-number"]],
|
|
111
|
+
Literal["none", "number", "checkbox", "both", "clickable-number"],
|
|
111
112
|
]
|
|
112
113
|
] = None,
|
|
113
114
|
row_marker_start_index: Optional[Union[Var[int], int]] = None,
|
|
@@ -117,8 +118,8 @@ class DataEditor(NoSSRComponent):
|
|
|
117
118
|
vertical_border: Optional[Union[Var[bool], bool]] = None,
|
|
118
119
|
column_select: Optional[
|
|
119
120
|
Union[
|
|
120
|
-
Literal["
|
|
121
|
-
|
|
121
|
+
Var[Literal["none", "single", "multi"]],
|
|
122
|
+
Literal["none", "single", "multi"],
|
|
122
123
|
]
|
|
123
124
|
] = None,
|
|
124
125
|
prevent_diagonal_scrolling: Optional[Union[Var[bool], bool]] = None,
|
|
@@ -127,94 +128,106 @@ class DataEditor(NoSSRComponent):
|
|
|
127
128
|
scroll_offset_x: Optional[Union[Var[int], int]] = None,
|
|
128
129
|
scroll_offset_y: Optional[Union[Var[int], int]] = None,
|
|
129
130
|
theme: Optional[
|
|
130
|
-
Union[DataEditorTheme, Dict,
|
|
131
|
+
Union[Var[Union[DataEditorTheme, Dict]], DataEditorTheme, Dict]
|
|
131
132
|
] = None,
|
|
132
133
|
style: Optional[Style] = None,
|
|
133
134
|
key: Optional[Any] = None,
|
|
134
135
|
id: Optional[Any] = None,
|
|
135
136
|
class_name: Optional[Any] = None,
|
|
136
137
|
autofocus: Optional[bool] = None,
|
|
137
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
138
|
-
on_blur: Optional[
|
|
138
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
139
|
+
on_blur: Optional[
|
|
140
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
141
|
+
] = None,
|
|
139
142
|
on_cell_activated: Optional[
|
|
140
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
143
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
141
144
|
] = None,
|
|
142
145
|
on_cell_clicked: Optional[
|
|
143
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
146
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
144
147
|
] = None,
|
|
145
148
|
on_cell_context_menu: Optional[
|
|
146
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
149
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
147
150
|
] = None,
|
|
148
151
|
on_cell_edited: Optional[
|
|
149
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
152
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
153
|
+
] = None,
|
|
154
|
+
on_click: Optional[
|
|
155
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
150
156
|
] = None,
|
|
151
|
-
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
152
157
|
on_column_resize: Optional[
|
|
153
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
158
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
154
159
|
] = None,
|
|
155
160
|
on_context_menu: Optional[
|
|
156
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
161
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
162
|
+
] = None,
|
|
163
|
+
on_delete: Optional[
|
|
164
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
157
165
|
] = None,
|
|
158
|
-
on_delete: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
159
166
|
on_double_click: Optional[
|
|
160
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
167
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
161
168
|
] = None,
|
|
162
169
|
on_finished_editing: Optional[
|
|
163
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
170
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
171
|
+
] = None,
|
|
172
|
+
on_focus: Optional[
|
|
173
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
164
174
|
] = None,
|
|
165
|
-
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
166
175
|
on_group_header_clicked: Optional[
|
|
167
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
176
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
168
177
|
] = None,
|
|
169
178
|
on_group_header_context_menu: Optional[
|
|
170
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
179
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
171
180
|
] = None,
|
|
172
181
|
on_group_header_renamed: Optional[
|
|
173
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
182
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
174
183
|
] = None,
|
|
175
184
|
on_header_clicked: Optional[
|
|
176
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
185
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
177
186
|
] = None,
|
|
178
187
|
on_header_context_menu: Optional[
|
|
179
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
188
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
180
189
|
] = None,
|
|
181
190
|
on_header_menu_click: Optional[
|
|
182
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
191
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
183
192
|
] = None,
|
|
184
193
|
on_item_hovered: Optional[
|
|
185
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
194
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
195
|
+
] = None,
|
|
196
|
+
on_mount: Optional[
|
|
197
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
186
198
|
] = None,
|
|
187
|
-
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
188
199
|
on_mouse_down: Optional[
|
|
189
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
200
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
190
201
|
] = None,
|
|
191
202
|
on_mouse_enter: Optional[
|
|
192
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
203
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
193
204
|
] = None,
|
|
194
205
|
on_mouse_leave: Optional[
|
|
195
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
206
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
196
207
|
] = None,
|
|
197
208
|
on_mouse_move: Optional[
|
|
198
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
209
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
199
210
|
] = None,
|
|
200
211
|
on_mouse_out: Optional[
|
|
201
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
212
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
202
213
|
] = None,
|
|
203
214
|
on_mouse_over: Optional[
|
|
204
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
215
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
205
216
|
] = None,
|
|
206
217
|
on_mouse_up: Optional[
|
|
207
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
218
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
208
219
|
] = None,
|
|
209
220
|
on_row_appended: Optional[
|
|
210
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
221
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
222
|
+
] = None,
|
|
223
|
+
on_scroll: Optional[
|
|
224
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
211
225
|
] = None,
|
|
212
|
-
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
213
226
|
on_selection_cleared: Optional[
|
|
214
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
227
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
215
228
|
] = None,
|
|
216
229
|
on_unmount: Optional[
|
|
217
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
230
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
218
231
|
] = None,
|
|
219
232
|
**props,
|
|
220
233
|
) -> "DataEditor":
|
reflex/components/el/element.pyi
CHANGED
|
@@ -7,8 +7,8 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
7
7
|
|
|
8
8
|
from reflex.components.component import Component
|
|
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.base import Var
|
|
12
12
|
|
|
13
13
|
class Element(Component):
|
|
14
14
|
@overload
|
|
@@ -21,41 +21,51 @@ class Element(Component):
|
|
|
21
21
|
id: Optional[Any] = None,
|
|
22
22
|
class_name: Optional[Any] = None,
|
|
23
23
|
autofocus: Optional[bool] = None,
|
|
24
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
25
|
-
on_blur: Optional[
|
|
26
|
-
|
|
24
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
25
|
+
on_blur: Optional[
|
|
26
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
27
|
+
] = None,
|
|
28
|
+
on_click: Optional[
|
|
29
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
30
|
+
] = None,
|
|
27
31
|
on_context_menu: Optional[
|
|
28
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
32
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
29
33
|
] = None,
|
|
30
34
|
on_double_click: Optional[
|
|
31
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
35
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
36
|
+
] = None,
|
|
37
|
+
on_focus: Optional[
|
|
38
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
39
|
+
] = None,
|
|
40
|
+
on_mount: Optional[
|
|
41
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
32
42
|
] = None,
|
|
33
|
-
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
34
|
-
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
35
43
|
on_mouse_down: Optional[
|
|
36
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
44
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
37
45
|
] = None,
|
|
38
46
|
on_mouse_enter: Optional[
|
|
39
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
47
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
40
48
|
] = None,
|
|
41
49
|
on_mouse_leave: Optional[
|
|
42
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
50
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
43
51
|
] = None,
|
|
44
52
|
on_mouse_move: Optional[
|
|
45
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
53
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
46
54
|
] = None,
|
|
47
55
|
on_mouse_out: Optional[
|
|
48
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
56
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
49
57
|
] = None,
|
|
50
58
|
on_mouse_over: Optional[
|
|
51
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
59
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
52
60
|
] = None,
|
|
53
61
|
on_mouse_up: Optional[
|
|
54
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
62
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
63
|
+
] = None,
|
|
64
|
+
on_scroll: Optional[
|
|
65
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
55
66
|
] = None,
|
|
56
|
-
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
57
67
|
on_unmount: Optional[
|
|
58
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
59
69
|
] = None,
|
|
60
70
|
**props,
|
|
61
71
|
) -> "Element":
|
|
@@ -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
|
|
12
|
+
from reflex.vars import Var
|
|
12
13
|
|
|
13
14
|
class BaseHTML(Element):
|
|
14
15
|
@overload
|
|
@@ -16,70 +17,80 @@ class BaseHTML(Element):
|
|
|
16
17
|
def create( # type: ignore
|
|
17
18
|
cls,
|
|
18
19
|
*children,
|
|
19
|
-
access_key: Optional[Union[Var[Union[bool, int, str]],
|
|
20
|
+
access_key: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
20
21
|
auto_capitalize: Optional[
|
|
21
|
-
Union[Var[Union[bool, int, str]],
|
|
22
|
+
Union[Var[Union[bool, int, str]], str, int, bool]
|
|
22
23
|
] = None,
|
|
23
24
|
content_editable: Optional[
|
|
24
|
-
Union[Var[Union[bool, int, str]],
|
|
25
|
+
Union[Var[Union[bool, int, str]], str, int, bool]
|
|
25
26
|
] = None,
|
|
26
27
|
context_menu: Optional[
|
|
27
|
-
Union[Var[Union[bool, int, str]],
|
|
28
|
+
Union[Var[Union[bool, int, str]], str, int, bool]
|
|
28
29
|
] = None,
|
|
29
|
-
dir: Optional[Union[Var[Union[bool, int, str]],
|
|
30
|
-
draggable: Optional[Union[Var[Union[bool, int, str]],
|
|
30
|
+
dir: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
31
|
+
draggable: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
31
32
|
enter_key_hint: Optional[
|
|
32
|
-
Union[Var[Union[bool, int, str]],
|
|
33
|
-
] = None,
|
|
34
|
-
hidden: Optional[Union[Var[Union[bool, int, str]],
|
|
35
|
-
input_mode: Optional[Union[Var[Union[bool, int, str]],
|
|
36
|
-
item_prop: Optional[Union[Var[Union[bool, int, str]],
|
|
37
|
-
lang: Optional[Union[Var[Union[bool, int, str]],
|
|
38
|
-
role: Optional[Union[Var[Union[bool, int, str]],
|
|
39
|
-
slot: Optional[Union[Var[Union[bool, int, str]],
|
|
40
|
-
spell_check: Optional[Union[Var[Union[bool, int, str]],
|
|
41
|
-
tab_index: Optional[Union[Var[Union[bool, int, str]],
|
|
42
|
-
title: Optional[Union[Var[Union[bool, int, str]],
|
|
33
|
+
Union[Var[Union[bool, int, str]], str, int, bool]
|
|
34
|
+
] = None,
|
|
35
|
+
hidden: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
36
|
+
input_mode: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
37
|
+
item_prop: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
38
|
+
lang: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
39
|
+
role: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
40
|
+
slot: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
41
|
+
spell_check: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
42
|
+
tab_index: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
43
|
+
title: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
|
|
43
44
|
style: Optional[Style] = None,
|
|
44
45
|
key: Optional[Any] = None,
|
|
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
|
-
on_blur: Optional[
|
|
50
|
-
|
|
49
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
50
|
+
on_blur: Optional[
|
|
51
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
52
|
+
] = None,
|
|
53
|
+
on_click: Optional[
|
|
54
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
55
|
+
] = None,
|
|
51
56
|
on_context_menu: Optional[
|
|
52
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
57
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
53
58
|
] = None,
|
|
54
59
|
on_double_click: Optional[
|
|
55
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
60
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
61
|
+
] = None,
|
|
62
|
+
on_focus: Optional[
|
|
63
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
64
|
+
] = None,
|
|
65
|
+
on_mount: Optional[
|
|
66
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
56
67
|
] = None,
|
|
57
|
-
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
58
|
-
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
59
68
|
on_mouse_down: Optional[
|
|
60
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
69
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
61
70
|
] = None,
|
|
62
71
|
on_mouse_enter: Optional[
|
|
63
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
72
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
64
73
|
] = None,
|
|
65
74
|
on_mouse_leave: Optional[
|
|
66
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
75
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
67
76
|
] = None,
|
|
68
77
|
on_mouse_move: Optional[
|
|
69
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
78
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
70
79
|
] = None,
|
|
71
80
|
on_mouse_out: Optional[
|
|
72
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
81
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
73
82
|
] = None,
|
|
74
83
|
on_mouse_over: Optional[
|
|
75
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
84
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
76
85
|
] = None,
|
|
77
86
|
on_mouse_up: Optional[
|
|
78
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
87
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
88
|
+
] = None,
|
|
89
|
+
on_scroll: Optional[
|
|
90
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
79
91
|
] = None,
|
|
80
|
-
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
81
92
|
on_unmount: Optional[
|
|
82
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
93
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
83
94
|
] = None,
|
|
84
95
|
**props,
|
|
85
96
|
) -> "BaseHTML":
|
|
@@ -11,13 +11,13 @@ 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.ivars.base import ImmutableVar, LiteralVar
|
|
14
15
|
from reflex.utils.imports import ImportDict
|
|
15
|
-
from reflex.vars import VarData
|
|
16
|
-
from reflex.vars.base import LiteralVar, Var
|
|
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) => {
|
|
@@ -197,8 +197,8 @@ 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:
|
|
201
|
-
|
|
200
|
+
EventTriggers.ON_SUBMIT: ImmutableVar(
|
|
201
|
+
_var_name=f"handleSubmit_{self.handle_submit_unique_name}",
|
|
202
202
|
_var_type=EventChain,
|
|
203
203
|
)
|
|
204
204
|
}
|
|
@@ -212,21 +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[len("refs_") : -3]] =
|
|
217
|
-
|
|
215
|
+
ref_var = ImmutableVar.create_safe(ref[:-3]).as_ref()
|
|
216
|
+
form_refs[ref[len("refs_") : -3]] = ImmutableVar.create_safe(
|
|
217
|
+
f"getRefValues({str(ref_var)})",
|
|
218
218
|
_var_data=VarData.merge(ref_var._get_all_var_data()),
|
|
219
219
|
)
|
|
220
220
|
else:
|
|
221
|
-
ref_var =
|
|
222
|
-
form_refs[ref[4:]] =
|
|
223
|
-
|
|
221
|
+
ref_var = ImmutableVar.create_safe(ref).as_ref()
|
|
222
|
+
form_refs[ref[4:]] = ImmutableVar.create_safe(
|
|
223
|
+
f"getRefValue({str(ref_var)})",
|
|
224
224
|
_var_data=VarData.merge(ref_var._get_all_var_data()),
|
|
225
225
|
)
|
|
226
226
|
# print(repr(form_refs))
|
|
227
227
|
return form_refs
|
|
228
228
|
|
|
229
|
-
def _get_vars(self, include_children: bool = True) -> Iterator[
|
|
229
|
+
def _get_vars(self, include_children: bool = True) -> Iterator[ImmutableVar]:
|
|
230
230
|
yield from super()._get_vars(include_children=include_children)
|
|
231
231
|
yield from self._get_form_refs().values()
|
|
232
232
|
|
|
@@ -624,15 +624,15 @@ class Textarea(BaseHTML):
|
|
|
624
624
|
"Cannot combine `enter_key_submit` with `on_key_down`.",
|
|
625
625
|
)
|
|
626
626
|
tag.add_props(
|
|
627
|
-
on_key_down=
|
|
628
|
-
|
|
627
|
+
on_key_down=ImmutableVar.create_safe(
|
|
628
|
+
f"(e) => enterKeySubmitOnKeyDown(e, {str(self.enter_key_submit)})",
|
|
629
629
|
_var_data=VarData.merge(self.enter_key_submit._get_all_var_data()),
|
|
630
630
|
)
|
|
631
631
|
)
|
|
632
632
|
if self.auto_height is not None:
|
|
633
633
|
tag.add_props(
|
|
634
|
-
on_input=
|
|
635
|
-
|
|
634
|
+
on_input=ImmutableVar.create_safe(
|
|
635
|
+
f"(e) => autoHeightOnInput(e, {str(self.auto_height)})",
|
|
636
636
|
_var_data=VarData.merge(self.auto_height._get_all_var_data()),
|
|
637
637
|
)
|
|
638
638
|
)
|