From d138c15dcd4272cd2358d28867ef35d1550b39cd Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Mon, 15 May 2023 20:35:39 -0600 Subject: Mejora renderizado de formularios --- src/lib/form_utils.ts | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) (limited to 'src/lib/form_utils.ts') 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) { + for(const [key, value] of Object.entries(errors)) { + sessionStorage.setItem(key, value); + } +} + +export function formHasErrors(fields: Array) { + for(const field_key of fields) { + if(sessionStorage.getItem(field_key)) + return true; + } + + return false; +} + +export function renderErrors(errors: Array) { + 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 -- cgit v1.2.3