summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2023-05-15 20:35:39 -0600
committerHombreLaser <sebastian-440@live.com>2023-05-15 20:35:39 -0600
commitd138c15dcd4272cd2358d28867ef35d1550b39cd (patch)
tree5807176d23b26bb2851a7c7a341ddc3f48eb4623 /src/lib
parentcbebedd51e1b4a2f709341b792dd073bac83f15d (diff)
Mejora renderizado de formularios
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/form_utils.ts39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/lib/form_utils.ts b/src/lib/form_utils.ts
index a4e7bff..73c5ba7 100644
--- a/src/lib/form_utils.ts
+++ b/src/lib/form_utils.ts
@@ -1,10 +1,41 @@
+export interface Error {
+ field_div_id: string;
+ field_input_id: string;
+ message: string;
+}
+
export function deleteEmptyFields(form: FormData) {
- const trimmed_form = form;
+ const trimmed_form = new FormData();
- for(const key of trimmed_form) {
- if(trimmed_form.get(key[0]) == '')
- trimmed_form.delete(key[0]);
+ for(const key of form.keys()) {
+ if(form.get(key) != '')
+ trimmed_form.append(key, form.get(key));
}
return trimmed_form;
+}
+
+export function setFormErrorsInSessionStorage(errors: Array<any>) {
+ for(const [key, value] of Object.entries(errors)) {
+ sessionStorage.setItem(key, value);
+ }
+}
+
+export function formHasErrors(fields: Array<string>) {
+ for(const field_key of fields) {
+ if(sessionStorage.getItem(field_key))
+ return true;
+ }
+
+ return false;
+}
+
+export function renderErrors(errors: Array<Error>) {
+ for(const error of errors) {
+ const field_div = document.getElementById(error.field_div_id);
+ const input_label = field_div?.querySelector("label");
+ const input_field = field_div?.querySelector("input");
+ input_label?.classList.add("text-red-700");
+ input_field?.classList.add("bg-red-50 border border-red-500 text-red-900 placeholder-red-700 focus:ring-red-500 dark:bg-gray-700 focus:border-red-500");
+ }
} \ No newline at end of file