reflex 0.7.10a1__py3-none-any.whl → 0.7.11__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/_app.js.jinja2 +10 -10
- reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/index.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +35 -72
- reflex/.templates/jinja/web/utils/context.js.jinja2 +6 -18
- reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +7 -7
- reflex/.templates/web/components/shiki/code.js +5 -4
- reflex/compiler/compiler.py +20 -3
- reflex/components/base/bare.py +8 -5
- reflex/components/base/body.py +2 -4
- reflex/components/base/body.pyi +197 -3
- reflex/components/base/error_boundary.py +1 -1
- reflex/components/base/link.py +3 -3
- reflex/components/base/link.pyi +392 -4
- reflex/components/base/meta.py +5 -9
- reflex/components/base/meta.pyi +608 -28
- reflex/components/component.py +13 -27
- reflex/components/core/colors.py +35 -4
- reflex/components/core/cond.py +2 -2
- reflex/components/core/upload.py +2 -2
- reflex/components/datadisplay/shiki_code_block.py +2 -2
- reflex/components/dynamic.py +5 -2
- reflex/components/el/element.py +4 -0
- reflex/components/el/elements/forms.py +3 -1
- reflex/components/el/elements/inline.py +3 -1
- reflex/components/el/elements/metadata.py +1 -1
- reflex/components/el/elements/metadata.pyi +1 -0
- reflex/components/el/elements/typography.py +3 -1
- reflex/components/lucide/icon.py +47 -3
- reflex/components/lucide/icon.pyi +45 -0
- reflex/components/markdown/markdown.py +6 -7
- reflex/components/markdown/markdown.pyi +2 -2
- reflex/components/moment/moment.py +1 -1
- reflex/components/next/video.py +8 -1
- reflex/components/plotly/plotly.py +1 -1
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/themes/layout/list.py +3 -2
- reflex/components/radix/themes/layout/list.pyi +391 -2
- reflex/components/suneditor/editor.py +1 -1
- reflex/config.py +3 -0
- reflex/constants/colors.py +23 -6
- reflex/constants/installer.py +2 -2
- reflex/state.py +30 -7
- reflex/utils/build.py +1 -2
- reflex/utils/format.py +16 -6
- reflex/utils/pyi_generator.py +1 -0
- reflex/utils/types.py +24 -8
- {reflex-0.7.10a1.dist-info → reflex-0.7.11.dist-info}/METADATA +1 -1
- {reflex-0.7.10a1.dist-info → reflex-0.7.11.dist-info}/RECORD +53 -53
- {reflex-0.7.10a1.dist-info → reflex-0.7.11.dist-info}/WHEEL +0 -0
- {reflex-0.7.10a1.dist-info → reflex-0.7.11.dist-info}/entry_points.txt +0 -0
- {reflex-0.7.10a1.dist-info → reflex-0.7.11.dist-info}/licenses/LICENSE +0 -0
|
@@ -22,7 +22,7 @@ function AppWrap({children}) {
|
|
|
22
22
|
{{ renderHooks(hooks) }}
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
|
-
{{utils.render(render
|
|
25
|
+
{{utils.render(render)}}
|
|
26
26
|
)
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -37,15 +37,15 @@ export default function MyApp({ Component, pageProps }) {
|
|
|
37
37
|
window["__reflex"] = windowImports;
|
|
38
38
|
}, []);
|
|
39
39
|
return (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
jsx(ThemeProvider, {defaultTheme:defaultColorMode,attribute:"class"},
|
|
41
|
+
jsx(StateProvider, {},
|
|
42
|
+
jsx(EventLoopProvider, {},
|
|
43
|
+
jsx(AppWrap, {},
|
|
44
|
+
jsx(Component, pageProps)
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
)
|
|
49
49
|
);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -1,46 +1,37 @@
|
|
|
1
1
|
{# Rendering components recursively. #}
|
|
2
2
|
{# Args: #}
|
|
3
3
|
{# component: component dictionary #}
|
|
4
|
-
{
|
|
5
|
-
{
|
|
6
|
-
{%
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
{{- render_match_tag(component) }}
|
|
13
|
-
{%- elif "cond" in component %}
|
|
14
|
-
{{- render_condition_tag(component) }}
|
|
15
|
-
{%- elif component.children|length %}
|
|
16
|
-
{{- render_tag(component) }}
|
|
17
|
-
{%- else %}
|
|
18
|
-
{{- render_self_close_tag(component) }}
|
|
19
|
-
{%- endif %}
|
|
20
|
-
{% endfilter %}
|
|
4
|
+
{% macro render(component) %}
|
|
5
|
+
{%- if component is not mapping %}{{ component }}
|
|
6
|
+
{%- elif "iterable" in component %}{{ render_iterable_tag(component) }}
|
|
7
|
+
{%- elif component.name == "match"%}{{ render_match_tag(component) }}
|
|
8
|
+
{%- elif "cond" in component %}{{ render_condition_tag(component) }}
|
|
9
|
+
{%- elif component.children|length %}{{ render_tag(component) }}
|
|
10
|
+
{%- else %}{{ render_self_close_tag(component) }}
|
|
11
|
+
{%- endif %}
|
|
21
12
|
{% endmacro %}
|
|
22
13
|
|
|
23
14
|
{# Rendering self close tag. #}
|
|
24
15
|
{# Args: #}
|
|
25
16
|
{# component: component dictionary #}
|
|
26
17
|
{% macro render_self_close_tag(component) %}
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
|
|
31
|
-
{
|
|
18
|
+
{% if component.name|length %}
|
|
19
|
+
jsx({{ component.name }},{{ render_props(component.props) }},{{ component.contents }})
|
|
20
|
+
{% elif component.contents|length -%}{{ component.contents }}
|
|
21
|
+
{% else %}""
|
|
22
|
+
{% endif %}
|
|
32
23
|
{% endmacro %}
|
|
33
24
|
|
|
34
25
|
{# Rendering close tag with args and props. #}
|
|
35
26
|
{# Args: #}
|
|
36
27
|
{# component: component dictionary #}
|
|
37
28
|
{% macro render_tag(component) %}
|
|
38
|
-
|
|
39
|
-
{{ component.
|
|
40
|
-
{
|
|
41
|
-
{{
|
|
42
|
-
{% endfor %}
|
|
43
|
-
|
|
29
|
+
jsx(
|
|
30
|
+
{% if component.name|length %}{{ component.name }}{% else %}Fragment{% endif %},
|
|
31
|
+
{{ render_props(component.props) }},
|
|
32
|
+
{% if component.contents|length %}{{ component.contents }},{% endif %}
|
|
33
|
+
{% for child in component.children %}{% if child is mapping or child|length %}{{ render(child) }},{% endif %}{% endfor %}
|
|
34
|
+
)
|
|
44
35
|
{%- endmacro %}
|
|
45
36
|
|
|
46
37
|
|
|
@@ -48,11 +39,7 @@
|
|
|
48
39
|
{# Args: #}
|
|
49
40
|
{# component: component dictionary #}
|
|
50
41
|
{% macro render_condition_tag(component) %}
|
|
51
|
-
{
|
|
52
|
-
{{ render(component.true_value) }}
|
|
53
|
-
) : (
|
|
54
|
-
{{ render(component.false_value) }}
|
|
55
|
-
)}
|
|
42
|
+
({{ component.cond_state }} ? ({{ render(component.true_value) }}) : ({{ render(component.false_value) }}))
|
|
56
43
|
{%- endmacro %}
|
|
57
44
|
|
|
58
45
|
|
|
@@ -60,57 +47,33 @@
|
|
|
60
47
|
{# Args: #}
|
|
61
48
|
{# component: component dictionary #}
|
|
62
49
|
{% macro render_iterable_tag(component) %}
|
|
63
|
-
|
|
64
|
-
{% for child in component.children %}
|
|
65
|
-
{{ render(child) }}
|
|
66
|
-
{% endfor %}
|
|
67
|
-
))}</>
|
|
50
|
+
{{ component.iterable_state }}.map(({{ component.arg_name }},{{ component.arg_index }})=>({% for child in component.children %}{{ render(child) }}{% endfor %}))
|
|
68
51
|
{%- endmacro %}
|
|
69
52
|
|
|
70
53
|
|
|
71
54
|
{# Rendering props of a component. #}
|
|
72
55
|
{# Args: #}
|
|
73
56
|
{# component: component dictionary #}
|
|
74
|
-
{% macro render_props(props) %}
|
|
75
|
-
{% if props|length %} {{ props|join(" ") }}{% endif %}
|
|
76
|
-
{% endmacro %}
|
|
57
|
+
{% macro render_props(props) %}{{ "{" }}{% if props|length %}{{ props|join(",") }}{% endif %}{{ "}" }}{% endmacro %}
|
|
77
58
|
|
|
78
59
|
{# Rendering Match component. #}
|
|
79
60
|
{# Args: #}
|
|
80
61
|
{# component: component dictionary #}
|
|
81
62
|
{% macro render_match_tag(component) %}
|
|
82
|
-
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
break;
|
|
91
|
-
{% endfor %}
|
|
92
|
-
default:
|
|
93
|
-
return {{ render(component.default) }};
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
})()
|
|
97
|
-
}
|
|
98
|
-
{%- endmacro %}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{# Rendering content with args. #}
|
|
102
|
-
{# Args: #}
|
|
103
|
-
{# component: component dictionary #}
|
|
104
|
-
{% macro render_arg_content(component) %}
|
|
105
|
-
{% filter indent(width=2) %}
|
|
106
|
-
{# no string below for a line break #}
|
|
107
|
-
|
|
108
|
-
{({ {{component.args|join(", ")}} }) => (
|
|
109
|
-
{% for child in component.children %}
|
|
110
|
-
{{ render(child) }}
|
|
63
|
+
(() => {
|
|
64
|
+
switch (JSON.stringify({{ component.cond._js_expr }})) {
|
|
65
|
+
{% for case in component.match_cases %}
|
|
66
|
+
{% for condition in case[:-1] %}
|
|
67
|
+
case JSON.stringify({{ condition._js_expr }}):
|
|
68
|
+
{% endfor %}
|
|
69
|
+
return {{ render(case[-1]) }};
|
|
70
|
+
break;
|
|
111
71
|
{% endfor %}
|
|
112
|
-
|
|
113
|
-
{
|
|
72
|
+
default:
|
|
73
|
+
return {{ render(component.default) }};
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
})()
|
|
114
77
|
{% endmacro %}
|
|
115
78
|
|
|
116
79
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext, useContext, useMemo, useReducer, useState } from "react"
|
|
1
|
+
import { createContext, useContext, useMemo, useReducer, useState, createElement } from "react"
|
|
2
2
|
import { applyDelta, Event, hydrateClientStorage, useEventLoop, refs } from "$/utils/state.js"
|
|
3
3
|
|
|
4
4
|
{% if initial_state %}
|
|
@@ -77,11 +77,7 @@ export function UploadFilesProvider({ children }) {
|
|
|
77
77
|
delete newFilesById[id]
|
|
78
78
|
return newFilesById
|
|
79
79
|
})
|
|
80
|
-
return (
|
|
81
|
-
<UploadFilesContext value={[filesById, setFilesById]}>
|
|
82
|
-
{children}
|
|
83
|
-
</UploadFilesContext>
|
|
84
|
-
)
|
|
80
|
+
return createElement(UploadFilesContext, {value:[filesById, setFilesById]}, children);
|
|
85
81
|
}
|
|
86
82
|
|
|
87
83
|
export function EventLoopProvider({ children }) {
|
|
@@ -91,11 +87,7 @@ export function EventLoopProvider({ children }) {
|
|
|
91
87
|
initialEvents,
|
|
92
88
|
clientStorage,
|
|
93
89
|
)
|
|
94
|
-
return (
|
|
95
|
-
<EventLoopContext value={[addEvents, connectErrors]}>
|
|
96
|
-
{children}
|
|
97
|
-
</EventLoopContext>
|
|
98
|
-
)
|
|
90
|
+
return createElement(EventLoopContext, {value:[addEvents, connectErrors]}, children);
|
|
99
91
|
}
|
|
100
92
|
|
|
101
93
|
export function StateProvider({ children }) {
|
|
@@ -112,13 +104,9 @@ export function StateProvider({ children }) {
|
|
|
112
104
|
|
|
113
105
|
return (
|
|
114
106
|
{% for state_name in initial_state %}
|
|
115
|
-
|
|
116
|
-
{% endfor %}
|
|
117
|
-
<DispatchContext value={dispatchers}>
|
|
118
|
-
{children}
|
|
119
|
-
</DispatchContext>
|
|
120
|
-
{% for state_name in initial_state|reverse %}
|
|
121
|
-
</StateContexts.{{state_name|var_name}}>
|
|
107
|
+
createElement(StateContexts.{{state_name|var_name}},{value: {{state_name|var_name}}},
|
|
122
108
|
{% endfor %}
|
|
109
|
+
createElement(DispatchContext.Provider, {value: dispatchers}, children),
|
|
110
|
+
{% for state_name in initial_state|reverse %}){% endfor %}
|
|
123
111
|
)
|
|
124
112
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useTheme } from "next-themes";
|
|
2
|
-
import { useRef, useEffect, useState } from "react";
|
|
2
|
+
import { useRef, useEffect, useState, createElement } from "react";
|
|
3
3
|
import {
|
|
4
4
|
ColorModeContext,
|
|
5
5
|
defaultColorMode,
|
|
@@ -50,11 +50,11 @@ export default function RadixThemesColorModeProvider({ children }) {
|
|
|
50
50
|
}
|
|
51
51
|
setTheme(mode);
|
|
52
52
|
};
|
|
53
|
-
return (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
return createElement(
|
|
54
|
+
ColorModeContext,
|
|
55
|
+
{
|
|
56
|
+
value: { rawColorMode, resolvedColorMode, toggleColorMode, setColorMode },
|
|
57
|
+
},
|
|
58
|
+
children,
|
|
59
59
|
);
|
|
60
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
1
|
+
import { useEffect, useState, createElement } from "react";
|
|
2
2
|
import { codeToHtml } from "shiki";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -33,7 +33,8 @@ export function Code({
|
|
|
33
33
|
}
|
|
34
34
|
fetchCode();
|
|
35
35
|
}, [code, language, theme, transformers, decorations]);
|
|
36
|
-
return (
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
return createElement("div", {
|
|
37
|
+
dangerouslySetInnerHTML: { __html: codeResult },
|
|
38
|
+
...divProps,
|
|
39
|
+
});
|
|
39
40
|
}
|
reflex/compiler/compiler.py
CHANGED
|
@@ -30,6 +30,13 @@ from reflex.utils.prerequisites import get_web_dir
|
|
|
30
30
|
from reflex.vars.base import LiteralVar, Var
|
|
31
31
|
|
|
32
32
|
|
|
33
|
+
def _apply_common_imports(
|
|
34
|
+
imports: dict[str, list[ImportVar]],
|
|
35
|
+
):
|
|
36
|
+
imports.setdefault("@emotion/react", []).append(ImportVar("jsx"))
|
|
37
|
+
imports.setdefault("react", []).append(ImportVar("Fragment"))
|
|
38
|
+
|
|
39
|
+
|
|
33
40
|
def _compile_document_root(root: Component) -> str:
|
|
34
41
|
"""Compile the document root.
|
|
35
42
|
|
|
@@ -39,8 +46,10 @@ def _compile_document_root(root: Component) -> str:
|
|
|
39
46
|
Returns:
|
|
40
47
|
The compiled document root.
|
|
41
48
|
"""
|
|
49
|
+
document_root_imports = root._get_all_imports()
|
|
50
|
+
_apply_common_imports(document_root_imports)
|
|
42
51
|
return templates.DOCUMENT_ROOT.render(
|
|
43
|
-
imports=utils.compile_imports(
|
|
52
|
+
imports=utils.compile_imports(document_root_imports),
|
|
44
53
|
document=root.render(),
|
|
45
54
|
)
|
|
46
55
|
|
|
@@ -74,8 +83,11 @@ def _compile_app(app_root: Component) -> str:
|
|
|
74
83
|
(_normalize_library_name(name), name) for name in bundled_libraries
|
|
75
84
|
]
|
|
76
85
|
|
|
86
|
+
app_root_imports = app_root._get_all_imports()
|
|
87
|
+
_apply_common_imports(app_root_imports)
|
|
88
|
+
|
|
77
89
|
return templates.APP_ROOT.render(
|
|
78
|
-
imports=utils.compile_imports(
|
|
90
|
+
imports=utils.compile_imports(app_root_imports),
|
|
79
91
|
custom_codes=app_root._get_all_custom_code(),
|
|
80
92
|
hooks=app_root._get_all_hooks(),
|
|
81
93
|
window_libraries=window_libraries,
|
|
@@ -143,6 +155,7 @@ def _compile_page(
|
|
|
143
155
|
The compiled component.
|
|
144
156
|
"""
|
|
145
157
|
imports = component._get_all_imports()
|
|
158
|
+
_apply_common_imports(imports)
|
|
146
159
|
imports = utils.compile_imports(imports)
|
|
147
160
|
|
|
148
161
|
# Compile the code to render the component.
|
|
@@ -325,7 +338,7 @@ def _compile_components(
|
|
|
325
338
|
"""
|
|
326
339
|
imports = {
|
|
327
340
|
"react": [ImportVar(tag="memo")],
|
|
328
|
-
f"$/{constants.Dirs.STATE_PATH}": [ImportVar(tag="
|
|
341
|
+
f"$/{constants.Dirs.STATE_PATH}": [ImportVar(tag="isTrue")],
|
|
329
342
|
}
|
|
330
343
|
component_renders = []
|
|
331
344
|
|
|
@@ -335,6 +348,8 @@ def _compile_components(
|
|
|
335
348
|
component_renders.append(component_render)
|
|
336
349
|
imports = utils.merge_imports(imports, component_imports)
|
|
337
350
|
|
|
351
|
+
_apply_common_imports(imports)
|
|
352
|
+
|
|
338
353
|
dynamic_imports = {
|
|
339
354
|
comp_import: None
|
|
340
355
|
for comp_render in component_renders
|
|
@@ -427,6 +442,8 @@ def _compile_stateful_components(
|
|
|
427
442
|
all_imports.pop(
|
|
428
443
|
f"$/{constants.Dirs.UTILS}/{constants.PageNames.STATEFUL_COMPONENTS}", None
|
|
429
444
|
)
|
|
445
|
+
if rendered_components:
|
|
446
|
+
_apply_common_imports(all_imports)
|
|
430
447
|
|
|
431
448
|
return templates.STATEFUL_COMPONENTS.render(
|
|
432
449
|
imports=utils.compile_imports(all_imports),
|
reflex/components/base/bare.py
CHANGED
|
@@ -169,11 +169,14 @@ class Bare(Component):
|
|
|
169
169
|
return refs
|
|
170
170
|
|
|
171
171
|
def _render(self) -> Tag:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
172
|
+
contents = (
|
|
173
|
+
Var.create(self.contents)
|
|
174
|
+
if not isinstance(self.contents, Var)
|
|
175
|
+
else self.contents
|
|
176
|
+
)
|
|
177
|
+
if isinstance(contents, (BooleanVar, ObjectVar)):
|
|
178
|
+
return Tagless(contents=f"{contents.to_string()!s}")
|
|
179
|
+
return Tagless(contents=f"{contents!s}")
|
|
177
180
|
|
|
178
181
|
def _add_style_recursive(
|
|
179
182
|
self, style: ComponentStyle, theme: Component | None = None
|
reflex/components/base/body.py
CHANGED
reflex/components/base/body.pyi
CHANGED
|
@@ -4,19 +4,197 @@
|
|
|
4
4
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
|
5
5
|
# ------------------------------------------------------
|
|
6
6
|
from collections.abc import Mapping, Sequence
|
|
7
|
-
from typing import Any, overload
|
|
7
|
+
from typing import Any, Literal, overload
|
|
8
8
|
|
|
9
|
-
from reflex.components.component import Component
|
|
10
9
|
from reflex.components.core.breakpoints import Breakpoints
|
|
10
|
+
from reflex.components.el import elements
|
|
11
11
|
from reflex.event import EventType
|
|
12
12
|
from reflex.vars.base import Var
|
|
13
13
|
|
|
14
|
-
class Body(
|
|
14
|
+
class Body(elements.Body):
|
|
15
15
|
@overload
|
|
16
16
|
@classmethod
|
|
17
17
|
def create( # type: ignore
|
|
18
18
|
cls,
|
|
19
19
|
*children,
|
|
20
|
+
access_key: Var[str] | str | None = None,
|
|
21
|
+
auto_capitalize: Literal[
|
|
22
|
+
"characters", "none", "off", "on", "sentences", "words"
|
|
23
|
+
]
|
|
24
|
+
| Var[Literal["characters", "none", "off", "on", "sentences", "words"]]
|
|
25
|
+
| None = None,
|
|
26
|
+
content_editable: Literal["inherit", "plaintext-only", False, True]
|
|
27
|
+
| Var[Literal["inherit", "plaintext-only", False, True]]
|
|
28
|
+
| None = None,
|
|
29
|
+
context_menu: Var[str] | str | None = None,
|
|
30
|
+
dir: Var[str] | str | None = None,
|
|
31
|
+
draggable: Var[bool] | bool | None = None,
|
|
32
|
+
enter_key_hint: Literal[
|
|
33
|
+
"done", "enter", "go", "next", "previous", "search", "send"
|
|
34
|
+
]
|
|
35
|
+
| Var[Literal["done", "enter", "go", "next", "previous", "search", "send"]]
|
|
36
|
+
| None = None,
|
|
37
|
+
hidden: Var[bool] | bool | None = None,
|
|
38
|
+
input_mode: Literal[
|
|
39
|
+
"decimal", "email", "none", "numeric", "search", "tel", "text", "url"
|
|
40
|
+
]
|
|
41
|
+
| Var[
|
|
42
|
+
Literal[
|
|
43
|
+
"decimal", "email", "none", "numeric", "search", "tel", "text", "url"
|
|
44
|
+
]
|
|
45
|
+
]
|
|
46
|
+
| None = None,
|
|
47
|
+
item_prop: Var[str] | str | None = None,
|
|
48
|
+
lang: Var[str] | str | None = None,
|
|
49
|
+
role: Literal[
|
|
50
|
+
"alert",
|
|
51
|
+
"alertdialog",
|
|
52
|
+
"application",
|
|
53
|
+
"article",
|
|
54
|
+
"banner",
|
|
55
|
+
"button",
|
|
56
|
+
"cell",
|
|
57
|
+
"checkbox",
|
|
58
|
+
"columnheader",
|
|
59
|
+
"combobox",
|
|
60
|
+
"complementary",
|
|
61
|
+
"contentinfo",
|
|
62
|
+
"definition",
|
|
63
|
+
"dialog",
|
|
64
|
+
"directory",
|
|
65
|
+
"document",
|
|
66
|
+
"feed",
|
|
67
|
+
"figure",
|
|
68
|
+
"form",
|
|
69
|
+
"grid",
|
|
70
|
+
"gridcell",
|
|
71
|
+
"group",
|
|
72
|
+
"heading",
|
|
73
|
+
"img",
|
|
74
|
+
"link",
|
|
75
|
+
"list",
|
|
76
|
+
"listbox",
|
|
77
|
+
"listitem",
|
|
78
|
+
"log",
|
|
79
|
+
"main",
|
|
80
|
+
"marquee",
|
|
81
|
+
"math",
|
|
82
|
+
"menu",
|
|
83
|
+
"menubar",
|
|
84
|
+
"menuitem",
|
|
85
|
+
"menuitemcheckbox",
|
|
86
|
+
"menuitemradio",
|
|
87
|
+
"navigation",
|
|
88
|
+
"none",
|
|
89
|
+
"note",
|
|
90
|
+
"option",
|
|
91
|
+
"presentation",
|
|
92
|
+
"progressbar",
|
|
93
|
+
"radio",
|
|
94
|
+
"radiogroup",
|
|
95
|
+
"region",
|
|
96
|
+
"row",
|
|
97
|
+
"rowgroup",
|
|
98
|
+
"rowheader",
|
|
99
|
+
"scrollbar",
|
|
100
|
+
"search",
|
|
101
|
+
"searchbox",
|
|
102
|
+
"separator",
|
|
103
|
+
"slider",
|
|
104
|
+
"spinbutton",
|
|
105
|
+
"status",
|
|
106
|
+
"switch",
|
|
107
|
+
"tab",
|
|
108
|
+
"table",
|
|
109
|
+
"tablist",
|
|
110
|
+
"tabpanel",
|
|
111
|
+
"term",
|
|
112
|
+
"textbox",
|
|
113
|
+
"timer",
|
|
114
|
+
"toolbar",
|
|
115
|
+
"tooltip",
|
|
116
|
+
"tree",
|
|
117
|
+
"treegrid",
|
|
118
|
+
"treeitem",
|
|
119
|
+
]
|
|
120
|
+
| Var[
|
|
121
|
+
Literal[
|
|
122
|
+
"alert",
|
|
123
|
+
"alertdialog",
|
|
124
|
+
"application",
|
|
125
|
+
"article",
|
|
126
|
+
"banner",
|
|
127
|
+
"button",
|
|
128
|
+
"cell",
|
|
129
|
+
"checkbox",
|
|
130
|
+
"columnheader",
|
|
131
|
+
"combobox",
|
|
132
|
+
"complementary",
|
|
133
|
+
"contentinfo",
|
|
134
|
+
"definition",
|
|
135
|
+
"dialog",
|
|
136
|
+
"directory",
|
|
137
|
+
"document",
|
|
138
|
+
"feed",
|
|
139
|
+
"figure",
|
|
140
|
+
"form",
|
|
141
|
+
"grid",
|
|
142
|
+
"gridcell",
|
|
143
|
+
"group",
|
|
144
|
+
"heading",
|
|
145
|
+
"img",
|
|
146
|
+
"link",
|
|
147
|
+
"list",
|
|
148
|
+
"listbox",
|
|
149
|
+
"listitem",
|
|
150
|
+
"log",
|
|
151
|
+
"main",
|
|
152
|
+
"marquee",
|
|
153
|
+
"math",
|
|
154
|
+
"menu",
|
|
155
|
+
"menubar",
|
|
156
|
+
"menuitem",
|
|
157
|
+
"menuitemcheckbox",
|
|
158
|
+
"menuitemradio",
|
|
159
|
+
"navigation",
|
|
160
|
+
"none",
|
|
161
|
+
"note",
|
|
162
|
+
"option",
|
|
163
|
+
"presentation",
|
|
164
|
+
"progressbar",
|
|
165
|
+
"radio",
|
|
166
|
+
"radiogroup",
|
|
167
|
+
"region",
|
|
168
|
+
"row",
|
|
169
|
+
"rowgroup",
|
|
170
|
+
"rowheader",
|
|
171
|
+
"scrollbar",
|
|
172
|
+
"search",
|
|
173
|
+
"searchbox",
|
|
174
|
+
"separator",
|
|
175
|
+
"slider",
|
|
176
|
+
"spinbutton",
|
|
177
|
+
"status",
|
|
178
|
+
"switch",
|
|
179
|
+
"tab",
|
|
180
|
+
"table",
|
|
181
|
+
"tablist",
|
|
182
|
+
"tabpanel",
|
|
183
|
+
"term",
|
|
184
|
+
"textbox",
|
|
185
|
+
"timer",
|
|
186
|
+
"toolbar",
|
|
187
|
+
"tooltip",
|
|
188
|
+
"tree",
|
|
189
|
+
"treegrid",
|
|
190
|
+
"treeitem",
|
|
191
|
+
]
|
|
192
|
+
]
|
|
193
|
+
| None = None,
|
|
194
|
+
slot: Var[str] | str | None = None,
|
|
195
|
+
spell_check: Var[bool] | bool | None = None,
|
|
196
|
+
tab_index: Var[int] | int | None = None,
|
|
197
|
+
title: Var[str] | str | None = None,
|
|
20
198
|
style: Sequence[Mapping[str, Any]]
|
|
21
199
|
| Mapping[str, Any]
|
|
22
200
|
| Var[Mapping[str, Any]]
|
|
@@ -48,6 +226,22 @@ class Body(Component):
|
|
|
48
226
|
|
|
49
227
|
Args:
|
|
50
228
|
*children: The children of the component.
|
|
229
|
+
access_key: Provides a hint for generating a keyboard shortcut for the current element.
|
|
230
|
+
auto_capitalize: Controls whether and how text input is automatically capitalized as it is entered/edited by the user.
|
|
231
|
+
content_editable: Indicates whether the element's content is editable.
|
|
232
|
+
context_menu: Defines the ID of a <menu> element which will serve as the element's context menu.
|
|
233
|
+
dir: Defines the text direction. Allowed values are ltr (Left-To-Right) or rtl (Right-To-Left)
|
|
234
|
+
draggable: Defines whether the element can be dragged.
|
|
235
|
+
enter_key_hint: Hints what media types the media element is able to play.
|
|
236
|
+
hidden: Defines whether the element is hidden.
|
|
237
|
+
input_mode: Defines the type of the element.
|
|
238
|
+
item_prop: Defines the name of the element for metadata purposes.
|
|
239
|
+
lang: Defines the language used in the element.
|
|
240
|
+
role: Defines the role of the element.
|
|
241
|
+
slot: Assigns a slot in a shadow DOM shadow tree to an element.
|
|
242
|
+
spell_check: Defines whether the element may be checked for spelling errors.
|
|
243
|
+
tab_index: Defines the position of the current element in the tabbing order.
|
|
244
|
+
title: Defines a tooltip for the element.
|
|
51
245
|
style: The style of the component.
|
|
52
246
|
key: A unique key for the component.
|
|
53
247
|
id: The id for the component.
|
|
@@ -33,7 +33,7 @@ def on_error_spec(
|
|
|
33
33
|
class ErrorBoundary(Component):
|
|
34
34
|
"""A React Error Boundary component that catches unhandled frontend exceptions."""
|
|
35
35
|
|
|
36
|
-
library = "react-error-boundary"
|
|
36
|
+
library = "react-error-boundary@6.0.0"
|
|
37
37
|
tag = "ErrorBoundary"
|
|
38
38
|
|
|
39
39
|
# Fired when the boundary catches an error.
|
reflex/components/base/link.py
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"""Display the title of the current page."""
|
|
2
2
|
|
|
3
|
-
from reflex.components.
|
|
3
|
+
from reflex.components.el.elements.base import BaseHTML
|
|
4
4
|
from reflex.vars.base import Var
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class RawLink(
|
|
7
|
+
class RawLink(BaseHTML):
|
|
8
8
|
"""A component that displays the title of the current page."""
|
|
9
9
|
|
|
10
10
|
tag = "link"
|
|
@@ -16,7 +16,7 @@ class RawLink(Component):
|
|
|
16
16
|
rel: Var[str]
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
class ScriptTag(
|
|
19
|
+
class ScriptTag(BaseHTML):
|
|
20
20
|
"""A script tag with the specified type and source."""
|
|
21
21
|
|
|
22
22
|
tag = "script"
|