add prop debounce_timeout
to input and textarea, default to 50 (#1627)
This commit is contained in:
parent
e6dfe67594
commit
f5067d4050
@ -50,6 +50,9 @@ class Input(ChakraComponent):
|
|||||||
# "lg" | "md" | "sm" | "xs"
|
# "lg" | "md" | "sm" | "xs"
|
||||||
size: Var[str]
|
size: Var[str]
|
||||||
|
|
||||||
|
# Time in milliseconds to wait between end of input and triggering on_change
|
||||||
|
debounce_timeout: Var[int]
|
||||||
|
|
||||||
def _get_imports(self) -> imports.ImportDict:
|
def _get_imports(self) -> imports.ImportDict:
|
||||||
return imports.merge_imports(
|
return imports.merge_imports(
|
||||||
super()._get_imports(),
|
super()._get_imports(),
|
||||||
@ -84,7 +87,9 @@ class Input(ChakraComponent):
|
|||||||
if isinstance(props.get("value"), Var) and props.get("on_change"):
|
if isinstance(props.get("value"), Var) and props.get("on_change"):
|
||||||
# create a debounced input if the user requests full control to avoid typing jank
|
# create a debounced input if the user requests full control to avoid typing jank
|
||||||
return DebounceInput.create(
|
return DebounceInput.create(
|
||||||
super().create(*children, **props), debounce_timeout=0
|
super().create(*children, **props),
|
||||||
|
# Currently default to 50ms, which appears to be a good balance
|
||||||
|
debounce_timeout=props.get("debounce_timeout", 50),
|
||||||
)
|
)
|
||||||
return super().create(*children, **props)
|
return super().create(*children, **props)
|
||||||
|
|
||||||
|
@ -43,6 +43,9 @@ class TextArea(ChakraComponent):
|
|||||||
# "outline" | "filled" | "flushed" | "unstyled"
|
# "outline" | "filled" | "flushed" | "unstyled"
|
||||||
variant: Var[str]
|
variant: Var[str]
|
||||||
|
|
||||||
|
# Time in milliseconds to wait between end of input and triggering on_change
|
||||||
|
debounce_timeout: Var[int]
|
||||||
|
|
||||||
def get_controlled_triggers(self) -> Dict[str, Var]:
|
def get_controlled_triggers(self) -> Dict[str, Var]:
|
||||||
"""Get the event triggers that pass the component's value to the handler.
|
"""Get the event triggers that pass the component's value to the handler.
|
||||||
|
|
||||||
@ -71,6 +74,8 @@ class TextArea(ChakraComponent):
|
|||||||
if isinstance(props.get("value"), Var) and props.get("on_change"):
|
if isinstance(props.get("value"), Var) and props.get("on_change"):
|
||||||
# create a debounced input if the user requests full control to avoid typing jank
|
# create a debounced input if the user requests full control to avoid typing jank
|
||||||
return DebounceInput.create(
|
return DebounceInput.create(
|
||||||
super().create(*children, **props), debounce_timeout=0
|
super().create(*children, **props),
|
||||||
|
# Currently default to 50ms, which appears to be a good balance
|
||||||
|
debounce_timeout=props.get("debounce_timeout", 50),
|
||||||
)
|
)
|
||||||
return super().create(*children, **props)
|
return super().create(*children, **props)
|
||||||
|
Loading…
Reference in New Issue
Block a user