Compare commits
2 Commits
main
...
masenf/uni
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ec91c85c80 | ||
![]() |
bb597cf7d6 |
@ -860,23 +860,32 @@ export const getRefValue = (ref) => {
|
||||
if (!ref || !ref.current) {
|
||||
return;
|
||||
}
|
||||
if (ref.current.type == "checkbox") {
|
||||
return ref.current.checked; // chakra
|
||||
return getElementValue(ref.current)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the form submission value for a given element.
|
||||
* @param el The element to get the value from.
|
||||
* @returns The value.
|
||||
*/
|
||||
export const getElementValue = (el) => {
|
||||
if (el.type == "checkbox") {
|
||||
return el.checked; // chakra
|
||||
} else if (
|
||||
ref.current.className?.includes("rt-CheckboxRoot") ||
|
||||
ref.current.className?.includes("rt-SwitchRoot")
|
||||
el.className?.includes("rt-CheckboxRoot") ||
|
||||
el.className?.includes("rt-SwitchRoot")
|
||||
) {
|
||||
return ref.current.ariaChecked == "true"; // radix
|
||||
} else if (ref.current.className?.includes("rt-SliderRoot")) {
|
||||
return el.ariaChecked == "true"; // radix
|
||||
} else if (el.className?.includes("rt-SliderRoot")) {
|
||||
// find the actual slider
|
||||
return ref.current.querySelector(".rt-SliderThumb")?.ariaValueNow;
|
||||
return el.querySelector(".rt-SliderThumb")?.ariaValueNow;
|
||||
} else {
|
||||
//querySelector(":checked") is needed to get value from radio_group
|
||||
return (
|
||||
ref.current.value ||
|
||||
(ref.current.querySelector &&
|
||||
ref.current.querySelector(":checked") &&
|
||||
ref.current.querySelector(":checked")?.value)
|
||||
el.value ||
|
||||
(el.querySelector &&
|
||||
el.querySelector(":checked") &&
|
||||
el.querySelector(":checked")?.value)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
@ -29,7 +29,11 @@ HANDLE_SUBMIT_JS_JINJA2 = Environment().from_string(
|
||||
const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {
|
||||
const $form = ev.target
|
||||
ev.preventDefault()
|
||||
const {{ form_data }} = {...Object.fromEntries(new FormData($form).entries()), ...{{ field_ref_mapping }}};
|
||||
const {{ form_data }} = {
|
||||
...Object.fromEntries(new FormData($form).entries()),
|
||||
...{{ field_ref_mapping }},
|
||||
...Object.fromEntries(Array.from($form.children).filter(el => el.name).map(el => [el.name, getElementValue(el)])),
|
||||
};
|
||||
|
||||
({{ on_submit_event_chain }}());
|
||||
|
||||
@ -187,7 +191,7 @@ class Form(BaseHTML):
|
||||
"""
|
||||
return {
|
||||
"react": "useCallback",
|
||||
f"/{Dirs.STATE_PATH}": ["getRefValue", "getRefValues"],
|
||||
f"/{Dirs.STATE_PATH}": ["getRefValue", "getRefValues", "getElementValue"],
|
||||
}
|
||||
|
||||
def add_hooks(self) -> list[str]:
|
||||
|
@ -17,7 +17,7 @@ from .base import BaseHTML
|
||||
|
||||
FORM_DATA = Var(_js_expr="form_data")
|
||||
HANDLE_SUBMIT_JS_JINJA2 = Environment().from_string(
|
||||
"\n const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {\n const $form = ev.target\n ev.preventDefault()\n const {{ form_data }} = {...Object.fromEntries(new FormData($form).entries()), ...{{ field_ref_mapping }}};\n\n ({{ on_submit_event_chain }}());\n\n if ({{ reset_on_submit }}) {\n $form.reset()\n }\n })\n "
|
||||
"\n const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {\n const $form = ev.target\n ev.preventDefault()\n const {{ form_data }} = {\n ...Object.fromEntries(new FormData($form).entries()),\n ...{{ field_ref_mapping }},\n ...Object.fromEntries(Array.from($form.children).filter(el => el.name).map(el => [el.name, getElementValue(el)])),\n };\n\n ({{ on_submit_event_chain }}());\n\n if ({{ reset_on_submit }}) {\n $form.reset()\n }\n })\n "
|
||||
)
|
||||
|
||||
class Button(BaseHTML):
|
||||
|
Loading…
Reference in New Issue
Block a user