From 8d855e53e3f6b4884877bd888ed82e55b7b8659e Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 17 Apr 2023 11:46:32 +0400 Subject: [PATCH 1/4] feat: update select validation for boolean attributes --- src/lib/elements/forms/inputSelect.svelte | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index 0b3663529..85633d9f9 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -27,15 +27,28 @@ error = element.validationMessage; }; - $: if (element && required && !value) { + const isValid = (value: string | number | boolean) => { + if (typeof value === 'boolean') { + if (value === null || value === undefined) return false; + else return true; + } + + if (!value) { + return false; + } + + return true; + }; + + $: if (element && required && !isValid(value)) { element.setCustomValidity('This field is required'); } - $: if (element && required && value) { + $: if (element && required && isValid(value)) { element.setCustomValidity(''); } - $: if (value) { + $: if (isValid(value)) { error = null; } From 9a90fba3b00facc5ebf98521870fd782f495220a Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 17 Apr 2023 12:00:36 +0400 Subject: [PATCH 2/4] feat: update select validation for boolean attributes --- src/lib/elements/forms/inputSelect.svelte | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index 85633d9f9..bbab9e44d 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -28,13 +28,14 @@ }; const isValid = (value: string | number | boolean) => { - if (typeof value === 'boolean') { - if (value === null || value === undefined) return false; - else return true; - } + if (value === null) return false; - if (!value) { - return false; + if (value === undefined) return false; + + if (typeof value !== 'boolean') { + if (!value) { + return false; + } } return true; From 1b9a9b64825a40d44d418a88ae158d26a6ea93b4 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 18 Apr 2023 14:20:33 +0400 Subject: [PATCH 3/4] feat: review comments --- src/lib/elements/forms/inputSelect.svelte | 30 +++++++---------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index bbab9e44d..ac2a83f78 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -27,29 +27,17 @@ error = element.validationMessage; }; - const isValid = (value: string | number | boolean) => { - if (value === null) return false; - - if (value === undefined) return false; - - if (typeof value !== 'boolean') { - if (!value) { - return false; - } - } - - return true; + const isNotEmpty = (value: string | number | boolean) => { + return typeof value === 'boolean' ? true : !!value; }; - $: if (element && required && !isValid(value)) { - element.setCustomValidity('This field is required'); - } - - $: if (element && required && isValid(value)) { - element.setCustomValidity(''); - } - - $: if (isValid(value)) { + $: if (element && required) { + if (!isNotEmpty(value)) { + element.setCustomValidity('This field is required'); + } else { + element.setCustomValidity(''); + } + } else if (isNotEmpty(value)) { error = null; } From fef2ede9e808f44bf94f03b184419616c7a5e3af Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 19 Apr 2023 19:43:11 +0400 Subject: [PATCH 4/4] feat: review comments --- src/lib/elements/forms/inputSelect.svelte | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index ac2a83f78..fd37a958c 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -31,13 +31,13 @@ return typeof value === 'boolean' ? true : !!value; }; - $: if (element && required) { - if (!isNotEmpty(value)) { - element.setCustomValidity('This field is required'); - } else { - element.setCustomValidity(''); - } - } else if (isNotEmpty(value)) { + $: if (required && !isNotEmpty(value)) { + element?.setCustomValidity('This field is required'); + } else { + element?.setCustomValidity(''); + } + + $: if (isNotEmpty(value)) { error = null; }