diff --git a/pynecone/.templates/web/utils/state.js b/pynecone/.templates/web/utils/state.js index 349049e0f..76b0875ec 100644 --- a/pynecone/.templates/web/utils/state.js +++ b/pynecone/.templates/web/utils/state.js @@ -289,3 +289,16 @@ export const preventDefault = (event) => { event.preventDefault(); } }; + +/** + * Get the value from a ref. + * @param ref The ref to get the value from. + * @returns The value. + */ +export const getRefValue = (ref) => { + if (ref.current.type == "checkbox") { + return ref.current.checked; + } else { + return ref.current.value; + } +} diff --git a/pynecone/compiler/compiler.py b/pynecone/compiler/compiler.py index fe0ad876e..a00974f2c 100644 --- a/pynecone/compiler/compiler.py +++ b/pynecone/compiler/compiler.py @@ -28,6 +28,7 @@ DEFAULT_IMPORTS: imports.ImportDict = { ImportVar(tag="isTrue"), ImportVar(tag="preventDefault"), ImportVar(tag="refs"), + ImportVar(tag="getRefValue"), }, "": {ImportVar(tag="focus-visible/dist/focus-visible")}, "@chakra-ui/react": {ImportVar(tag=constants.USE_COLOR_MODE)}, diff --git a/pynecone/components/forms/__init__.py b/pynecone/components/forms/__init__.py index 4fd13b933..d914b6832 100644 --- a/pynecone/components/forms/__init__.py +++ b/pynecone/components/forms/__init__.py @@ -4,7 +4,7 @@ from .button import Button, ButtonGroup from .checkbox import Checkbox, CheckboxGroup from .copytoclipboard import CopyToClipboard from .editable import Editable, EditableInput, EditablePreview, EditableTextarea -from .formcontrol import Form, FormControl, FormErrorMessage, FormHelperText, FormLabel +from .form import Form, FormControl, FormErrorMessage, FormHelperText, FormLabel from .iconbutton import IconButton from .input import Input, InputGroup, InputLeftAddon, InputRightAddon from .numberinput import ( diff --git a/pynecone/components/forms/formcontrol.py b/pynecone/components/forms/form.py similarity index 97% rename from pynecone/components/forms/formcontrol.py rename to pynecone/components/forms/form.py index 7410a95f7..5978943b7 100644 --- a/pynecone/components/forms/formcontrol.py +++ b/pynecone/components/forms/form.py @@ -23,7 +23,7 @@ class Form(ChakraComponent): # Send all the input refs to the handler. return { "on_submit": { - ref[4:]: Var.create(f"{ref}.current.value", is_local=False) + ref[4:]: Var.create(f"getRefValue({ref})", is_local=False) for ref in self.get_refs() } }