reflex 0.3.2a1__py3-none-any.whl → 0.3.3a1__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/custom_component.js.jinja2 +20 -3
- reflex/.templates/web/next.config.js +1 -0
- reflex/.templates/web/utils/helpers/range.js +43 -0
- reflex/.templates/web/utils/state.js +10 -6
- reflex/__init__.py +312 -40
- reflex/__init__.pyi +477 -0
- reflex/compiler/compiler.py +3 -0
- reflex/components/__init__.py +138 -138
- reflex/components/component.py +29 -22
- reflex/components/datadisplay/__init__.py +3 -1
- reflex/components/datadisplay/code.py +388 -14
- reflex/components/datadisplay/code.pyi +1146 -10
- reflex/components/forms/button.py +3 -0
- reflex/components/forms/checkbox.py +3 -0
- reflex/components/forms/form.py +90 -27
- reflex/components/forms/input.py +3 -0
- reflex/components/forms/numberinput.py +3 -0
- reflex/components/forms/pininput.py +77 -21
- reflex/components/forms/radio.py +3 -0
- reflex/components/forms/rangeslider.py +3 -0
- reflex/components/forms/select.py +3 -0
- reflex/components/forms/slider.py +3 -0
- reflex/components/forms/switch.py +3 -0
- reflex/components/forms/textarea.py +3 -0
- reflex/components/layout/foreach.py +12 -6
- reflex/components/libs/chakra.py +2 -0
- reflex/components/libs/chakra.pyi +323 -24
- reflex/components/tags/iter_tag.py +18 -18
- reflex/components/tags/tag.py +3 -2
- reflex/components/typography/markdown.py +10 -0
- reflex/config.py +12 -0
- reflex/constants/installer.py +4 -4
- reflex/event.py +4 -0
- reflex/page.py +3 -4
- reflex/page.pyi +17 -0
- reflex/reflex.py +3 -0
- reflex/state.py +31 -12
- reflex/testing.py +1 -1
- reflex/utils/build.py +24 -19
- reflex/utils/console.py +5 -1
- reflex/utils/format.py +26 -9
- reflex/utils/prerequisites.py +27 -28
- reflex/utils/processes.py +5 -4
- reflex/vars.py +80 -12
- reflex/vars.pyi +7 -0
- {reflex-0.3.2a1.dist-info → reflex-0.3.3a1.dist-info}/METADATA +3 -2
- {reflex-0.3.2a1.dist-info → reflex-0.3.3a1.dist-info}/RECORD +50 -53
- reflex/.templates/web/.pytest_cache/.gitignore +0 -2
- reflex/.templates/web/.pytest_cache/CACHEDIR.TAG +0 -4
- reflex/.templates/web/.pytest_cache/README.md +0 -8
- reflex/.templates/web/.pytest_cache/v/cache/nodeids +0 -1
- reflex/.templates/web/.pytest_cache/v/cache/stepwise +0 -1
- reflex/.templates/web/styles/code/prism.js +0 -1015
- {reflex-0.3.2a1.dist-info → reflex-0.3.3a1.dist-info}/LICENSE +0 -0
- {reflex-0.3.2a1.dist-info → reflex-0.3.3a1.dist-info}/WHEEL +0 -0
- {reflex-0.3.2a1.dist-info → reflex-0.3.3a1.dist-info}/entry_points.txt +0 -0
reflex/components/__init__.py
CHANGED
|
@@ -26,157 +26,176 @@ from .typography import *
|
|
|
26
26
|
|
|
27
27
|
# Add the convenience methods for all the components manually.
|
|
28
28
|
# This is necessary for static type checking to work.
|
|
29
|
-
component = Component.create
|
|
30
|
-
badge = Badge.create
|
|
31
|
-
code = Code.create
|
|
32
|
-
code_block = CodeBlock.create
|
|
33
|
-
connection_banner = ConnectionBanner.create
|
|
34
|
-
connection_modal = ConnectionModal.create
|
|
35
|
-
data_editor = DataEditor.create
|
|
36
|
-
data_editor_theme = DataEditorTheme
|
|
37
|
-
data_table = DataTable.create
|
|
38
|
-
divider = Divider.create
|
|
39
|
-
list = List.create
|
|
40
|
-
list_item = ListItem.create
|
|
41
|
-
ordered_list = OrderedList.create
|
|
42
|
-
unordered_list = UnorderedList.create
|
|
43
|
-
stat = Stat.create
|
|
44
|
-
stat_arrow = StatArrow.create
|
|
45
|
-
stat_group = StatGroup.create
|
|
46
|
-
stat_help_text = StatHelpText.create
|
|
47
|
-
stat_label = StatLabel.create
|
|
48
|
-
stat_number = StatNumber.create
|
|
49
|
-
tag = Tag.create
|
|
50
|
-
tag_label = TagLabel.create
|
|
51
|
-
tag_left_icon = TagLeftIcon.create
|
|
52
|
-
tag_right_icon = TagRightIcon.create
|
|
53
|
-
tag_close_button = TagCloseButton.create
|
|
54
|
-
table = Table.create
|
|
55
|
-
table_caption = TableCaption.create
|
|
56
|
-
table_container = TableContainer.create
|
|
57
|
-
tbody = Tbody.create
|
|
58
|
-
td = Td.create
|
|
59
|
-
tfoot = Tfoot.create
|
|
60
|
-
th = Th.create
|
|
61
|
-
thead = Thead.create
|
|
62
|
-
tr = Tr.create
|
|
63
29
|
accordion = Accordion.create
|
|
64
30
|
accordion_button = AccordionButton.create
|
|
65
31
|
accordion_icon = AccordionIcon.create
|
|
66
32
|
accordion_item = AccordionItem.create
|
|
67
33
|
accordion_panel = AccordionPanel.create
|
|
68
|
-
tab = Tab.create
|
|
69
|
-
tab_list = TabList.create
|
|
70
|
-
tab_panel = TabPanel.create
|
|
71
|
-
tab_panels = TabPanels.create
|
|
72
|
-
tabs = Tabs.create
|
|
73
|
-
visually_hidden = VisuallyHidden.create
|
|
74
|
-
fade = Fade.create
|
|
75
|
-
scale_fade = ScaleFade.create
|
|
76
|
-
slide = Slide.create
|
|
77
|
-
slide_fade = SlideFade.create
|
|
78
|
-
collapse = Collapse.create
|
|
79
34
|
alert = Alert.create
|
|
80
35
|
alert_description = AlertDescription.create
|
|
36
|
+
alert_dialog = AlertDialog.create
|
|
37
|
+
alert_dialog_body = AlertDialogBody.create
|
|
38
|
+
alert_dialog_content = AlertDialogContent.create
|
|
39
|
+
alert_dialog_footer = AlertDialogFooter.create
|
|
40
|
+
alert_dialog_header = AlertDialogHeader.create
|
|
41
|
+
alert_dialog_overlay = AlertDialogOverlay.create
|
|
81
42
|
alert_icon = AlertIcon.create
|
|
82
43
|
alert_title = AlertTitle.create
|
|
44
|
+
aspect_ratio = AspectRatio.create
|
|
45
|
+
audio = Audio.create
|
|
46
|
+
avatar = Avatar.create
|
|
47
|
+
avatar_badge = AvatarBadge.create
|
|
48
|
+
avatar_group = AvatarGroup.create
|
|
49
|
+
badge = Badge.create
|
|
50
|
+
box = Box.create
|
|
51
|
+
breadcrumb = Breadcrumb.create
|
|
52
|
+
breadcrumb_item = BreadcrumbItem.create
|
|
53
|
+
breadcrumb_link = BreadcrumbLink.create
|
|
54
|
+
breadcrumb_separator = BreadcrumbSeparator.create
|
|
55
|
+
button = Button.create
|
|
56
|
+
button_group = ButtonGroup.create
|
|
83
57
|
card = Card.create
|
|
84
58
|
card_body = CardBody.create
|
|
85
59
|
card_footer = CardFooter.create
|
|
86
60
|
card_header = CardHeader.create
|
|
87
|
-
|
|
88
|
-
circular_progress_label = CircularProgressLabel.create
|
|
89
|
-
progress = Progress.create
|
|
90
|
-
skeleton = Skeleton.create
|
|
91
|
-
skeleton_circle = SkeletonCircle.create
|
|
92
|
-
skeleton_text = SkeletonText.create
|
|
93
|
-
spinner = Spinner.create
|
|
94
|
-
button = Button.create
|
|
95
|
-
button_group = ButtonGroup.create
|
|
61
|
+
center = Center.create
|
|
96
62
|
checkbox = Checkbox.create
|
|
97
63
|
checkbox_group = CheckboxGroup.create
|
|
64
|
+
circle = Circle.create
|
|
65
|
+
circular_progress = CircularProgress.create
|
|
66
|
+
circular_progress_label = CircularProgressLabel.create
|
|
67
|
+
code = Code.create
|
|
68
|
+
code_block = CodeBlock.create
|
|
69
|
+
collapse = Collapse.create
|
|
70
|
+
color_mode_button = ColorModeButton.create
|
|
71
|
+
color_mode_icon = ColorModeIcon.create
|
|
72
|
+
color_mode_switch = ColorModeSwitch.create
|
|
73
|
+
component = Component.create
|
|
74
|
+
connection_banner = ConnectionBanner.create
|
|
75
|
+
connection_modal = ConnectionModal.create
|
|
76
|
+
container = Container.create
|
|
77
|
+
data_editor = DataEditor.create
|
|
78
|
+
data_editor_theme = DataEditorTheme
|
|
79
|
+
data_table = DataTable.create
|
|
98
80
|
date_picker = DatePicker.create
|
|
99
81
|
date_time_picker = DateTimePicker.create
|
|
100
82
|
debounce_input = DebounceInput.create
|
|
83
|
+
divider = Divider.create
|
|
84
|
+
drawer = Drawer.create
|
|
85
|
+
drawer_body = DrawerBody.create
|
|
86
|
+
drawer_close_button = DrawerCloseButton.create
|
|
87
|
+
drawer_content = DrawerContent.create
|
|
88
|
+
drawer_footer = DrawerFooter.create
|
|
89
|
+
drawer_header = DrawerHeader.create
|
|
90
|
+
drawer_overlay = DrawerOverlay.create
|
|
101
91
|
editable = Editable.create
|
|
102
92
|
editable_input = EditableInput.create
|
|
103
93
|
editable_preview = EditablePreview.create
|
|
104
94
|
editable_textarea = EditableTextarea.create
|
|
105
95
|
editor = Editor.create
|
|
96
|
+
email = Email.create
|
|
97
|
+
fade = Fade.create
|
|
98
|
+
flex = Flex.create
|
|
99
|
+
foreach = Foreach.create
|
|
106
100
|
form = Form.create
|
|
107
101
|
form_control = FormControl.create
|
|
108
102
|
form_error_message = FormErrorMessage.create
|
|
109
103
|
form_helper_text = FormHelperText.create
|
|
110
104
|
form_label = FormLabel.create
|
|
105
|
+
fragment = Fragment.create
|
|
106
|
+
grid = Grid.create
|
|
107
|
+
grid_item = GridItem.create
|
|
108
|
+
heading = Heading.create
|
|
109
|
+
highlight = Highlight.create
|
|
110
|
+
hstack = Hstack.create
|
|
111
|
+
html = Html.create
|
|
112
|
+
icon = Icon.create
|
|
111
113
|
icon_button = IconButton.create
|
|
114
|
+
image = Image.create
|
|
112
115
|
input = Input.create
|
|
113
116
|
input_group = InputGroup.create
|
|
114
117
|
input_left_addon = InputLeftAddon.create
|
|
115
|
-
input_right_addon = InputRightAddon.create
|
|
116
118
|
input_left_element = InputLeftElement.create
|
|
119
|
+
input_right_addon = InputRightAddon.create
|
|
117
120
|
input_right_element = InputRightElement.create
|
|
121
|
+
kbd = Kbd.create
|
|
122
|
+
link = Link.create
|
|
123
|
+
link_box = LinkBox.create
|
|
124
|
+
link_overlay = LinkOverlay.create
|
|
125
|
+
list = List.create
|
|
126
|
+
list_item = ListItem.create
|
|
127
|
+
markdown = Markdown.create
|
|
128
|
+
menu = Menu.create
|
|
129
|
+
menu_button = MenuButton.create
|
|
130
|
+
menu_divider = MenuDivider.create
|
|
131
|
+
menu_group = MenuGroup.create
|
|
132
|
+
menu_item = MenuItem.create
|
|
133
|
+
menu_item_option = MenuItemOption.create
|
|
134
|
+
menu_list = MenuList.create
|
|
135
|
+
menu_option_group = MenuOptionGroup.create
|
|
136
|
+
modal = Modal.create
|
|
137
|
+
modal_body = ModalBody.create
|
|
138
|
+
modal_close_button = ModalCloseButton.create
|
|
139
|
+
modal_content = ModalContent.create
|
|
140
|
+
modal_footer = ModalFooter.create
|
|
141
|
+
modal_header = ModalHeader.create
|
|
142
|
+
modal_overlay = ModalOverlay.create
|
|
118
143
|
moment = Moment.create
|
|
119
144
|
multi_select = MultiSelect.create
|
|
120
145
|
multi_select_option = MultiSelectOption
|
|
146
|
+
next_link = NextLink.create
|
|
121
147
|
number_decrement_stepper = NumberDecrementStepper.create
|
|
122
148
|
number_increment_stepper = NumberIncrementStepper.create
|
|
123
149
|
number_input = NumberInput.create
|
|
124
150
|
number_input_field = NumberInputField.create
|
|
125
151
|
number_input_stepper = NumberInputStepper.create
|
|
126
152
|
option = Option.create
|
|
153
|
+
ordered_list = OrderedList.create
|
|
127
154
|
password = Password.create
|
|
128
|
-
email = Email.create
|
|
129
155
|
pin_input = PinInput.create
|
|
130
156
|
pin_input_field = PinInputField.create
|
|
157
|
+
plotly = Plotly.create
|
|
158
|
+
popover = Popover.create
|
|
159
|
+
popover_anchor = PopoverAnchor.create
|
|
160
|
+
popover_arrow = PopoverArrow.create
|
|
161
|
+
popover_body = PopoverBody.create
|
|
162
|
+
popover_close_button = PopoverCloseButton.create
|
|
163
|
+
popover_content = PopoverContent.create
|
|
164
|
+
popover_footer = PopoverFooter.create
|
|
165
|
+
popover_header = PopoverHeader.create
|
|
166
|
+
popover_trigger = PopoverTrigger.create
|
|
167
|
+
progress = Progress.create
|
|
131
168
|
radio = Radio.create
|
|
132
169
|
radio_group = RadioGroup.create
|
|
133
170
|
range_slider = RangeSlider.create
|
|
134
171
|
range_slider_filled_track = RangeSliderFilledTrack.create
|
|
135
172
|
range_slider_thumb = RangeSliderThumb.create
|
|
136
173
|
range_slider_track = RangeSliderTrack.create
|
|
174
|
+
responsive_grid = ResponsiveGrid.create
|
|
175
|
+
scale_fade = ScaleFade.create
|
|
176
|
+
script = Script.create
|
|
137
177
|
select = Select.create
|
|
178
|
+
skeleton = Skeleton.create
|
|
179
|
+
skeleton_circle = SkeletonCircle.create
|
|
180
|
+
skeleton_text = SkeletonText.create
|
|
181
|
+
slide = Slide.create
|
|
182
|
+
slide_fade = SlideFade.create
|
|
138
183
|
slider = Slider.create
|
|
139
184
|
slider_filled_track = SliderFilledTrack.create
|
|
140
185
|
slider_mark = SliderMark.create
|
|
141
186
|
slider_thumb = SliderThumb.create
|
|
142
187
|
slider_track = SliderTrack.create
|
|
143
|
-
switch = Switch.create
|
|
144
|
-
text_area = TextArea.create
|
|
145
|
-
upload = Upload.create
|
|
146
|
-
plotly = Plotly.create
|
|
147
|
-
box = Box.create
|
|
148
|
-
center = Center.create
|
|
149
|
-
circle = Circle.create
|
|
150
|
-
container = Container.create
|
|
151
|
-
flex = Flex.create
|
|
152
|
-
foreach = Foreach.create
|
|
153
|
-
fragment = Fragment.create
|
|
154
|
-
grid = Grid.create
|
|
155
|
-
grid_item = GridItem.create
|
|
156
|
-
hstack = Hstack.create
|
|
157
|
-
html = Html.create
|
|
158
|
-
responsive_grid = ResponsiveGrid.create
|
|
159
188
|
spacer = Spacer.create
|
|
189
|
+
span = Span.create
|
|
190
|
+
spinner = Spinner.create
|
|
160
191
|
square = Square.create
|
|
161
192
|
stack = Stack.create
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
icon = Icon.create
|
|
169
|
-
image = Image.create
|
|
170
|
-
video = Video.create
|
|
171
|
-
audio = Audio.create
|
|
172
|
-
breadcrumb = Breadcrumb.create
|
|
173
|
-
breadcrumb_item = BreadcrumbItem.create
|
|
174
|
-
breadcrumb_link = BreadcrumbLink.create
|
|
175
|
-
breadcrumb_separator = BreadcrumbSeparator.create
|
|
176
|
-
link = Link.create
|
|
177
|
-
link_box = LinkBox.create
|
|
178
|
-
link_overlay = LinkOverlay.create
|
|
179
|
-
next_link = NextLink.create
|
|
193
|
+
stat = Stat.create
|
|
194
|
+
stat_arrow = StatArrow.create
|
|
195
|
+
stat_group = StatGroup.create
|
|
196
|
+
stat_help_text = StatHelpText.create
|
|
197
|
+
stat_label = StatLabel.create
|
|
198
|
+
stat_number = StatNumber.create
|
|
180
199
|
step = Step.create
|
|
181
200
|
step_description = StepDescription.create
|
|
182
201
|
step_icon = StepIcon.create
|
|
@@ -186,52 +205,33 @@ step_separator = StepSeparator.create
|
|
|
186
205
|
step_status = StepStatus.create
|
|
187
206
|
step_title = StepTitle.create
|
|
188
207
|
stepper = Stepper.create
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
menu_group = MenuGroup.create
|
|
206
|
-
menu_item = MenuItem.create
|
|
207
|
-
menu_item_option = MenuItemOption.create
|
|
208
|
-
menu_list = MenuList.create
|
|
209
|
-
menu_option_group = MenuOptionGroup.create
|
|
210
|
-
modal = Modal.create
|
|
211
|
-
modal_body = ModalBody.create
|
|
212
|
-
modal_close_button = ModalCloseButton.create
|
|
213
|
-
modal_content = ModalContent.create
|
|
214
|
-
modal_footer = ModalFooter.create
|
|
215
|
-
modal_header = ModalHeader.create
|
|
216
|
-
modal_overlay = ModalOverlay.create
|
|
217
|
-
popover = Popover.create
|
|
218
|
-
popover_anchor = PopoverAnchor.create
|
|
219
|
-
popover_arrow = PopoverArrow.create
|
|
220
|
-
popover_body = PopoverBody.create
|
|
221
|
-
popover_close_button = PopoverCloseButton.create
|
|
222
|
-
popover_content = PopoverContent.create
|
|
223
|
-
popover_footer = PopoverFooter.create
|
|
224
|
-
popover_header = PopoverHeader.create
|
|
225
|
-
popover_trigger = PopoverTrigger.create
|
|
226
|
-
tooltip = Tooltip.create
|
|
227
|
-
heading = Heading.create
|
|
228
|
-
highlight = Highlight.create
|
|
229
|
-
markdown = Markdown.create
|
|
230
|
-
span = Span.create
|
|
208
|
+
switch = Switch.create
|
|
209
|
+
tab = Tab.create
|
|
210
|
+
tab_list = TabList.create
|
|
211
|
+
tab_panel = TabPanel.create
|
|
212
|
+
tab_panels = TabPanels.create
|
|
213
|
+
table = Table.create
|
|
214
|
+
table_caption = TableCaption.create
|
|
215
|
+
table_container = TableContainer.create
|
|
216
|
+
tabs = Tabs.create
|
|
217
|
+
tag = Tag.create
|
|
218
|
+
tag_close_button = TagCloseButton.create
|
|
219
|
+
tag_label = TagLabel.create
|
|
220
|
+
tag_left_icon = TagLeftIcon.create
|
|
221
|
+
tag_right_icon = TagRightIcon.create
|
|
222
|
+
tbody = Tbody.create
|
|
223
|
+
td = Td.create
|
|
231
224
|
text = Text.create
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
225
|
+
text_area = TextArea.create
|
|
226
|
+
tfoot = Tfoot.create
|
|
227
|
+
th = Th.create
|
|
228
|
+
thead = Thead.create
|
|
229
|
+
tooltip = Tooltip.create
|
|
230
|
+
tr = Tr.create
|
|
231
|
+
unordered_list = UnorderedList.create
|
|
232
|
+
upload = Upload.create
|
|
233
|
+
video = Video.create
|
|
234
|
+
visually_hidden = VisuallyHidden.create
|
|
235
|
+
vstack = Vstack.create
|
|
236
|
+
wrap = Wrap.create
|
|
237
|
+
wrap_item = WrapItem.create
|
reflex/components/component.py
CHANGED
|
@@ -358,9 +358,12 @@ class Component(Base, ABC):
|
|
|
358
358
|
|
|
359
359
|
return _compile_component(self)
|
|
360
360
|
|
|
361
|
-
def _render(self) -> Tag:
|
|
361
|
+
def _render(self, props: dict[str, Any] | None = None) -> Tag:
|
|
362
362
|
"""Define how to render the component in React.
|
|
363
363
|
|
|
364
|
+
Args:
|
|
365
|
+
props: The props to render (if None, then use get_props).
|
|
366
|
+
|
|
364
367
|
Returns:
|
|
365
368
|
The tag to render.
|
|
366
369
|
"""
|
|
@@ -370,16 +373,26 @@ class Component(Base, ABC):
|
|
|
370
373
|
special_props=self.special_props,
|
|
371
374
|
)
|
|
372
375
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
376
|
+
if props is None:
|
|
377
|
+
# Add component props to the tag.
|
|
378
|
+
props = {
|
|
379
|
+
attr[:-1] if attr.endswith("_") else attr: getattr(self, attr)
|
|
380
|
+
for attr in self.get_props()
|
|
381
|
+
}
|
|
378
382
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
+
# Add ref to element if `id` is not None.
|
|
384
|
+
ref = self.get_ref()
|
|
385
|
+
if ref is not None:
|
|
386
|
+
props["ref"] = Var.create(ref, _var_is_local=False)
|
|
387
|
+
|
|
388
|
+
props.update(
|
|
389
|
+
self.event_triggers,
|
|
390
|
+
key=self.key,
|
|
391
|
+
id=self.id,
|
|
392
|
+
class_name=self.class_name,
|
|
393
|
+
)
|
|
394
|
+
props.update(self._get_style())
|
|
395
|
+
props.update(self.custom_attrs)
|
|
383
396
|
|
|
384
397
|
return tag.add_props(**props)
|
|
385
398
|
|
|
@@ -501,14 +514,7 @@ class Component(Base, ABC):
|
|
|
501
514
|
"""
|
|
502
515
|
tag = self._render()
|
|
503
516
|
rendered_dict = dict(
|
|
504
|
-
tag.
|
|
505
|
-
**self.event_triggers,
|
|
506
|
-
key=self.key,
|
|
507
|
-
id=self.id,
|
|
508
|
-
class_name=self.class_name,
|
|
509
|
-
**self._get_style(),
|
|
510
|
-
**self.custom_attrs,
|
|
511
|
-
).set(
|
|
517
|
+
tag.set(
|
|
512
518
|
children=[child.render() for child in self.children],
|
|
513
519
|
contents=str(tag.contents),
|
|
514
520
|
props=tag.format_props(),
|
|
@@ -949,10 +955,7 @@ class CustomComponent(Component):
|
|
|
949
955
|
Returns:
|
|
950
956
|
The tag to render.
|
|
951
957
|
"""
|
|
952
|
-
return
|
|
953
|
-
name=self.tag if not self.alias else self.alias,
|
|
954
|
-
special_props=self.special_props,
|
|
955
|
-
).add_props(**self.props)
|
|
958
|
+
return super()._render(props=self.props)
|
|
956
959
|
|
|
957
960
|
def get_prop_vars(self) -> List[BaseVar]:
|
|
958
961
|
"""Get the prop vars.
|
|
@@ -1000,6 +1003,10 @@ def custom_component(
|
|
|
1000
1003
|
return wrapper
|
|
1001
1004
|
|
|
1002
1005
|
|
|
1006
|
+
# Alias memo to custom_component.
|
|
1007
|
+
memo = custom_component
|
|
1008
|
+
|
|
1009
|
+
|
|
1003
1010
|
class NoSSRComponent(Component):
|
|
1004
1011
|
"""A dynamic component that is not rendered on the server."""
|
|
1005
1012
|
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from .badge import Badge
|
|
4
4
|
from .code import Code, CodeBlock
|
|
5
|
+
from .code import LiteralCodeBlockTheme as LiteralCodeBlockTheme
|
|
6
|
+
from .code import LiteralCodeLanguage as LiteralCodeLanguage
|
|
5
7
|
from .dataeditor import DataEditor, DataEditorTheme
|
|
6
8
|
from .datatable import DataTable
|
|
7
9
|
from .divider import Divider
|
|
8
|
-
from .keyboard_key import KeyboardKey
|
|
10
|
+
from .keyboard_key import KeyboardKey as Kbd
|
|
9
11
|
from .list import List, ListItem, OrderedList, UnorderedList
|
|
10
12
|
from .moment import Moment
|
|
11
13
|
from .stat import Stat, StatArrow, StatGroup, StatHelpText, StatLabel, StatNumber
|