Avoid passing props to lists and list items (#2326)
This commit is contained in:
parent
f75d5f2808
commit
0211e9a0e5
@ -38,6 +38,8 @@ _REHYPE_KATEX = Var.create_safe("rehypeKatex", _var_is_local=False)
|
|||||||
_REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
|
_REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
|
||||||
_REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
|
_REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
|
||||||
|
|
||||||
|
# These tags do NOT get props passed to them
|
||||||
|
NO_PROPS_TAGS = ("ul", "ol", "li")
|
||||||
|
|
||||||
# Component Mapping
|
# Component Mapping
|
||||||
@lru_cache
|
@lru_cache
|
||||||
@ -215,6 +217,10 @@ class Markdown(Component):
|
|||||||
special_props = {_PROPS}
|
special_props = {_PROPS}
|
||||||
children = [_CHILDREN]
|
children = [_CHILDREN]
|
||||||
|
|
||||||
|
# For certain tags, the props from the markdown renderer are not actually valid for the component.
|
||||||
|
if tag in NO_PROPS_TAGS:
|
||||||
|
special_props = set()
|
||||||
|
|
||||||
# If the children are set as a prop, don't pass them as children.
|
# If the children are set as a prop, don't pass them as children.
|
||||||
children_prop = props.pop("children", None)
|
children_prop = props.pop("children", None)
|
||||||
if children_prop is not None:
|
if children_prop is not None:
|
||||||
|
@ -36,6 +36,7 @@ _REMARK_PLUGINS = Var.create_safe([_REMARK_MATH, _REMARK_GFM])
|
|||||||
_REHYPE_KATEX = Var.create_safe("rehypeKatex", _var_is_local=False)
|
_REHYPE_KATEX = Var.create_safe("rehypeKatex", _var_is_local=False)
|
||||||
_REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
|
_REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
|
||||||
_REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
|
_REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
|
||||||
|
NO_PROPS_TAGS = ("ul", "ol", "li")
|
||||||
|
|
||||||
@lru_cache
|
@lru_cache
|
||||||
def get_base_component_map() -> dict[str, Callable]: ...
|
def get_base_component_map() -> dict[str, Callable]: ...
|
||||||
|
@ -883,3 +883,32 @@ def test_get_vars(component, exp_vars):
|
|||||||
sorted(exp_vars, key=lambda v: v._var_name),
|
sorted(exp_vars, key=lambda v: v._var_name),
|
||||||
):
|
):
|
||||||
assert comp_var.equals(exp_var)
|
assert comp_var.equals(exp_var)
|
||||||
|
|
||||||
|
|
||||||
|
def test_instantiate_all_components():
|
||||||
|
"""Test that all components can be instantiated."""
|
||||||
|
# These components all have required arguments and cannot be trivially instantiated.
|
||||||
|
untested_components = {
|
||||||
|
"Card",
|
||||||
|
"Cond",
|
||||||
|
"DebounceInput",
|
||||||
|
"Foreach",
|
||||||
|
"FormControl",
|
||||||
|
"Html",
|
||||||
|
"Icon",
|
||||||
|
"Markdown",
|
||||||
|
"MultiSelect",
|
||||||
|
"Option",
|
||||||
|
"Popover",
|
||||||
|
"Radio",
|
||||||
|
"Script",
|
||||||
|
"Tag",
|
||||||
|
"Tfoot",
|
||||||
|
"Thead",
|
||||||
|
}
|
||||||
|
for component_name in rx._ALL_COMPONENTS: # type: ignore
|
||||||
|
if component_name in untested_components:
|
||||||
|
continue
|
||||||
|
component = getattr(rx, component_name)
|
||||||
|
if isinstance(component, type) and issubclass(component, Component):
|
||||||
|
component.create()
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
"""Unit tests for the included testing tools."""
|
"""Unit tests for the included testing tools."""
|
||||||
|
import pytest
|
||||||
|
|
||||||
from reflex.constants import IS_WINDOWS
|
from reflex.constants import IS_WINDOWS
|
||||||
from reflex.testing import AppHarness
|
from reflex.testing import AppHarness
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skip("Slow test that makes network requests.")
|
||||||
def test_app_harness(tmp_path):
|
def test_app_harness(tmp_path):
|
||||||
"""Ensure that AppHarness can compile and start an app.
|
"""Ensure that AppHarness can compile and start an app.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user