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