diff options
author | dan <[email protected]> | 2024-01-03 18:36:53 -0500 |
---|---|---|
committer | dan <[email protected]> | 2024-01-03 18:36:53 -0500 |
commit | 98be17522ef0474a40b134a3ca4e0d2e8096d469 (patch) | |
tree | 9ae3b31c03aa2b3cbd8c2f6942445a1c5a439a4e /src/hooks | |
parent | 3baf3c177f86dcc01ce49e14daec7c5c895eefe6 (diff) | |
download | draggable-form-demo-98be17522ef0474a40b134a3ca4e0d2e8096d469.tar.gz draggable-form-demo-98be17522ef0474a40b134a3ca4e0d2e8096d469.tar.bz2 draggable-form-demo-98be17522ef0474a40b134a3ca4e0d2e8096d469.zip |
Diffstat (limited to 'src/hooks')
-rw-r--r-- | src/hooks/useForm.js | 20 | ||||
-rw-r--r-- | src/hooks/useLocalStorage.js | 17 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/hooks/useForm.js b/src/hooks/useForm.js new file mode 100644 index 0000000..6270c1e --- /dev/null +++ b/src/hooks/useForm.js @@ -0,0 +1,20 @@ +import useLocalStorage from "./useLocalStorage"; + +export default function useForm(formId) { + const [forms, setForms] = useLocalStorage(`forms`, {}); + + const form = forms[formId] || { fields: [], id: formId }; + + function setForm(newForm) { + console.log( + "setForm", + newForm, + { ...forms, [newForm.id]: newForm }, + { form: forms[formId], formId, forms }, + ); + setForms({ ...forms, [newForm.id]: newForm }); + } + + console.log("useForm", formId, form); + return [form, setForm]; +} diff --git a/src/hooks/useLocalStorage.js b/src/hooks/useLocalStorage.js new file mode 100644 index 0000000..6dbed36 --- /dev/null +++ b/src/hooks/useLocalStorage.js @@ -0,0 +1,17 @@ +import { useState } from "react"; + +const useLocalStorage = (key, initialValue) => { + const storedVal = localStorage[key] + ? JSON.parse(localStorage[key]) || initialValue + : initialValue; + const [value, setValue] = useState(storedVal); + + function update(newValue) { + localStorage[key] = JSON.stringify(newValue); + setValue(newValue); + } + + return [value, update]; +}; + +export default useLocalStorage; |