diff --git a/frontend/src/lib/components/textfield/TelephoneField.svelte b/frontend/src/lib/components/textfield/TelephoneField.svelte
index 788a30c..0456033 100644
--- a/frontend/src/lib/components/textfield/TelephoneField.svelte
+++ b/frontend/src/lib/components/textfield/TelephoneField.svelte
@@ -15,10 +15,10 @@
// You must use E164 number format. It's guarantee the parsing and storing consistency.
export let value: E164Number | null = '+36301234567';
- // Validity
- let valid = true;
- export let invalid: boolean = false;
- $: invalid = !valid;
+ // Validity
+ let valid = true;
+ export let error: string = '';
+ $: error = valid ? '' : 'Zadejte platný telefon s předvolbou. Například +420 123 456 789';
// Optional - Extended details about the parsed phone number
let parsedTelInput: NormalizedTelNumber | null = null;
@@ -33,10 +33,11 @@
};
const isTooltip = helperText ? tippy : () => {};
- $: tooltipDelay = invalid ? 0 : 1000;
+ $: tooltipDelay = !valid ? 0 : 1000;
-
-
-
+
+
@@ -75,29 +81,29 @@
\ No newline at end of file
+ .wrapper :global(.invalid) {
+ /* border-color: red; */
+ @apply border-red-700;
+ }
+
diff --git a/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte b/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte
index d02da74..d4d48a7 100644
--- a/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte
+++ b/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte
@@ -18,7 +18,6 @@
import { SvelteToast, toast } from '@zerodevx/svelte-toast';
import { createForm } from 'svelte-forms-lib';
- import { writable, type Writable } from 'svelte/store';
import * as yup from 'yup';
import type { CandidateData } from '$lib/stores/candidate';
import AccountLinkCheckBox from '$lib/components/checkbox/AccountLinkCheckBox.svelte';
@@ -28,11 +27,13 @@
import { isPersonalIdNumberWithBirthdateValid } from '$lib/utils/personalIdFormat';
import PersonalIdErrorModal from '$lib/components/modal/PersonalIdErrorModal.svelte';
import LinkErrorModal from '$lib/components/modal/LinkErrorModal.svelte';
+ import type { Writable } from 'svelte/store';
let pageIndex = 0;
let pagesFilled = [false, false, false, false, false, false, false, false];
- let editModePageIndex = 3;
+ const editModePageIndex = 3;
const pageCount = pagesFilled.length;
+
let pageTexts = [
$LL.candidate.register.second.title(),
$LL.candidate.register.third.title(),
@@ -46,20 +47,6 @@
export let data: PageData;
let details = data.candidate;
let baseCandidateDetails = data.whoami;
- let componentErrors = writable( {
- candidate: {
- telephone: false,
- personalIdMatch: false,
- },
- parents: [
- {
- telephone: false,
- },
- {
- telephone: false,
- }
- ]
- });
const formInitialValues = {
gdpr: false,
@@ -117,9 +104,7 @@
name: yup.string().required(),
surname: yup.string().required(),
email: yup.string().email().required(),
- telephone: yup
- .string()
- .required(), // already validated by the 'TelephoneField' component
+ telephone: yup.string().required(), // already validated by the 'TelephoneField' component
birthplace: yup.string().required(),
birthdate: yup
.string()
@@ -186,7 +171,12 @@
}
return _val !== '';
}),
- telephone: yup.string()
+ telephone: yup.string().test((_val, context) => {
+ if (context.path.includes('parents[1]')) {
+ return true;
+ }
+ return _val !== '';
+ })
})
)
});
@@ -231,17 +221,15 @@
'--toastBarBackground': '#7f1d1d'
}
});
- $componentErrors['candidate']['personalIdMatch'] = true;
throw new Error('Rodné číslo neodpovídá datumu narození');
}
}
- $componentErrors['candidate']['personalIdMatch'] = false;
- }
+ };
const onSubmit = async (values: CandidateData) => {
- console.log("submit button clicked");
+ console.log('submit button clicked');
console.log(pagesFilled.map((_, i) => !isPageInvalid(i)));
-
+
if (pageIndex === pageCount) {
console.log('submitting');
// clone values to oldValues
@@ -320,8 +308,7 @@
$typedErrors['candidate']['name'] ||
$typedErrors['candidate']['surname'] ||
$typedErrors['candidate']['email'] ||
- // $typedErrors['candidate']['telephone'] ||
- $componentErrors['candidate']['telephone'] ||
+ $typedErrors['candidate']['telephone'] ||
$typedErrors['candidate']['city'] ||
$typedErrors['candidate']['street'] ||
$typedErrors['candidate']['houseNumber'] ||
@@ -340,8 +327,7 @@
$typedErrors['candidate']['birthdate'] ||
$typedErrors['candidate']['birthplace'] ||
$typedErrors['candidate']['personalIdNumber'] ||
- $typedErrors['candidate']['testLanguage'] ||
- $componentErrors['candidate']['personalIdMatch']
+ $typedErrors['candidate']['testLanguage']
) {
return true;
}
@@ -351,8 +337,7 @@
$typedErrors['parents'][0]['name'] ||
$typedErrors['parents'][0]['surname'] ||
$typedErrors['parents'][0]['email'] ||
- // $typedErrors['parents'][0]['telephone']
- $componentErrors['parents'][0]['telephone']
+ $typedErrors['parents'][0]['telephone']
) {
return true;
}
@@ -362,8 +347,7 @@
$typedErrors['parents'][1]['name'] ||
$typedErrors['parents'][1]['surname'] ||
$typedErrors['parents'][1]['email'] ||
- // $typedErrors['parents'][1]['telephone']
- $componentErrors['parents'][1]['telephone']
+ $typedErrors['parents'][1]['telephone']
) {
return true;
}
@@ -525,32 +509,32 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
@@ -718,7 +702,7 @@
@@ -767,7 +751,7 @@
await handleSubmit(e);
console.log(pagesFilled.map((_, i) => !isPageInvalid(i)));
if (isPageInvalid(pageIndex)) return;
- if (pageIndex !== pageCount) {
+ if (pageIndex !== pageCount) {
pagesFilled[pageIndex] = true;
pageIndex++;
}