aboutsummaryrefslogtreecommitdiffstats
path: root/src/hooks
diff options
context:
space:
mode:
authordan <[email protected]>2024-01-03 18:36:53 -0500
committerdan <[email protected]>2024-01-03 18:36:53 -0500
commit98be17522ef0474a40b134a3ca4e0d2e8096d469 (patch)
tree9ae3b31c03aa2b3cbd8c2f6942445a1c5a439a4e /src/hooks
parent3baf3c177f86dcc01ce49e14daec7c5c895eefe6 (diff)
downloaddraggable-form-demo-master.tar.gz
draggable-form-demo-master.tar.bz2
draggable-form-demo-master.zip
feat: stuff changedHEADmaster
Diffstat (limited to 'src/hooks')
-rw-r--r--src/hooks/useForm.js20
-rw-r--r--src/hooks/useLocalStorage.js17
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;