diff --git a/src/lib/elements/forms/inputCheckbox.svelte b/src/lib/elements/forms/inputCheckbox.svelte
index fcc884faa..44c373698 100644
--- a/src/lib/elements/forms/inputCheckbox.svelte
+++ b/src/lib/elements/forms/inputCheckbox.svelte
@@ -11,7 +11,11 @@
export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
export let showHelper = false;
+ let element: HTMLInputElement;
+
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
@@ -26,6 +30,7 @@
{
+ errorMessage = element.validationMessage;
+
+ if (element.validity.typeMismatch) {
+ errorMessage = 'Your email should be formatted as: name@example.com';
+ }
event.preventDefault();
showHelper = true;
};
diff --git a/src/lib/elements/forms/inputNumber.svelte b/src/lib/elements/forms/inputNumber.svelte
index f6d3691b9..37d6ac0cd 100644
--- a/src/lib/elements/forms/inputNumber.svelte
+++ b/src/lib/elements/forms/inputNumber.svelte
@@ -25,6 +25,8 @@
});
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
diff --git a/src/lib/elements/forms/inputPassword.svelte b/src/lib/elements/forms/inputPassword.svelte
index 8bd134359..8553aebe1 100644
--- a/src/lib/elements/forms/inputPassword.svelte
+++ b/src/lib/elements/forms/inputPassword.svelte
@@ -27,6 +27,8 @@
});
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
diff --git a/src/lib/elements/forms/inputPhone.svelte b/src/lib/elements/forms/inputPhone.svelte
index dca033d6a..78c66d3e2 100644
--- a/src/lib/elements/forms/inputPhone.svelte
+++ b/src/lib/elements/forms/inputPhone.svelte
@@ -25,6 +25,8 @@
});
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
diff --git a/src/lib/elements/forms/inputRadio.svelte b/src/lib/elements/forms/inputRadio.svelte
index 54c174374..cf36a123a 100644
--- a/src/lib/elements/forms/inputRadio.svelte
+++ b/src/lib/elements/forms/inputRadio.svelte
@@ -13,7 +13,11 @@
export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
export let showHelper = false;
+ let element: HTMLInputElement;
+
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
@@ -27,6 +31,7 @@
- import { FormItem } from '.';
+ import { FormItem, Helper } from '.';
export let label: string;
export let showLabel = true;
@@ -11,12 +11,37 @@
value: string;
label: string;
}[];
+ export let errorMessage = 'An error occurred';
+ export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
+ export let showHelper = false;
+
+ let element: HTMLSelectElement;
+
+ const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
+ if (element.validity.typeMismatch) {
+ errorMessage = 'Your email should be formatted as: name@example.com';
+ }
+ event.preventDefault();
+ showHelper = true;
+ };
+
+ $: if (value) {
+ showHelper = false;
+ }
-
+ {#if showHelper}
+ {errorMessage}
+ {/if}
diff --git a/src/lib/elements/forms/inputSwitch.svelte b/src/lib/elements/forms/inputSwitch.svelte
index aa181e333..14595503b 100644
--- a/src/lib/elements/forms/inputSwitch.svelte
+++ b/src/lib/elements/forms/inputSwitch.svelte
@@ -10,7 +10,11 @@
export let errorType: false | 'success' | 'warning' | 'error' = 'warning';
export let showHelper = false;
+ let element: HTMLInputElement;
+
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
@@ -31,6 +35,7 @@
type="checkbox"
class="switch"
role="switch"
+ bind:this={element}
bind:checked={value}
on:change />
diff --git a/src/lib/elements/forms/inputTags.svelte b/src/lib/elements/forms/inputTags.svelte
index bee1b47e6..43c90ce71 100644
--- a/src/lib/elements/forms/inputTags.svelte
+++ b/src/lib/elements/forms/inputTags.svelte
@@ -53,6 +53,8 @@
};
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
diff --git a/src/lib/elements/forms/inputText.svelte b/src/lib/elements/forms/inputText.svelte
index 826d02a92..b53058b03 100644
--- a/src/lib/elements/forms/inputText.svelte
+++ b/src/lib/elements/forms/inputText.svelte
@@ -25,6 +25,8 @@
});
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};
diff --git a/src/lib/elements/forms/inputTextarea.svelte b/src/lib/elements/forms/inputTextarea.svelte
index 6d084346e..da0a15f81 100644
--- a/src/lib/elements/forms/inputTextarea.svelte
+++ b/src/lib/elements/forms/inputTextarea.svelte
@@ -24,6 +24,8 @@
});
const handleInvalid = (event: Event) => {
+ errorMessage = element.validationMessage;
+
event.preventDefault();
showHelper = true;
};