diff --git a/frontend/package.json b/frontend/package.json index 1f61c8b..2f9905c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -42,7 +42,9 @@ "isomorphic-dompurify": "^0.24.0", "just-debounce-it": "^3.1.1", "svelte-forms-lib": "^2.0.1", + "svelte-tippy": "^1.3.2", "swiper": "^8.4.5", + "tippy.js": "^6.3.7", "yup": "^0.32.11" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 16971bc..b623094 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -22,8 +22,10 @@ specifiers: svelte-check: ^2.10.2 svelte-forms-lib: ^2.0.1 svelte-preprocess: ^5.0.0 + svelte-tippy: ^1.3.2 svelte-windicss-preprocess: ^4.2.8 swiper: ^8.4.5 + tippy.js: ^6.3.7 tslib: ^2.4.1 typescript: ^4.9.4 vite: ^4.0.1 @@ -38,7 +40,9 @@ dependencies: isomorphic-dompurify: 0.24.0 just-debounce-it: 3.1.1 svelte-forms-lib: 2.0.1 + svelte-tippy: 1.3.2 swiper: 8.4.5 + tippy.js: 6.3.7 yup: 0.32.11 devDependencies: @@ -366,6 +370,10 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true + /@popperjs/core/2.11.6: + resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + dev: false + /@rollup/plugin-commonjs/23.0.4_rollup@3.7.4: resolution: {integrity: sha512-bOPJeTZg56D2MCm+TT4psP8e8Jmf1Jsi7pFUMl8BN5kOADNzofNHe47+84WVCt7D095xPghC235/YKuNDEhczg==} engines: {node: '>=14.0.0'} @@ -2287,6 +2295,12 @@ packages: typescript: 4.9.4 dev: true + /svelte-tippy/1.3.2: + resolution: {integrity: sha512-41f+85hwhKBRqX0UNYrgFsi34Kk/KDvUkIZXYANxkWoA2NTVTCZbUC2J8hRNZ4TRVxObTshoZRjK2co5+i6LMw==} + dependencies: + tippy.js: 6.3.7 + dev: false + /svelte-windicss-preprocess/4.2.8: resolution: {integrity: sha512-Z6pmFbHqJ19SgCiXiVRC/hlRBgZ/5LksMjPF3ilF/1HESP2L+secuaPjr3xOjJW67iZQpT2YdXzGe+MvdsJ6OQ==} dependencies: @@ -2326,6 +2340,12 @@ packages: globrex: 0.1.2 dev: true + /tippy.js/6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + dependencies: + '@popperjs/core': 2.11.6 + dev: false + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} diff --git a/frontend/src/lib/components/textfield/EmailField.svelte b/frontend/src/lib/components/textfield/EmailField.svelte index 84bdbbb..7ca7958 100644 --- a/frontend/src/lib/components/textfield/EmailField.svelte +++ b/frontend/src/lib/components/textfield/EmailField.svelte @@ -2,7 +2,9 @@ import Email from '../icons/Email.svelte'; import TextField from './TextField.svelte'; + let helperText: string = 'Zadejte platný email. Například radko.sablik@ssps.cz'; export let placeholder: string = ''; + export let value: string = ''; export let error: string = ''; @@ -16,6 +18,7 @@ on:change type="email" {placeholder} + {helperText} icon >
diff --git a/frontend/src/lib/components/textfield/IdField.svelte b/frontend/src/lib/components/textfield/IdField.svelte index e977ae8..e4bf087 100644 --- a/frontend/src/lib/components/textfield/IdField.svelte +++ b/frontend/src/lib/components/textfield/IdField.svelte @@ -2,7 +2,9 @@ import Person from '../icons/Person.svelte'; import TextField from './TextField.svelte'; + export let helperText: string = ''; export let placeholder: string = ''; + export let value: string = ''; export let error: string = ''; @@ -13,7 +15,7 @@ } - +
diff --git a/frontend/src/lib/components/textfield/NameField.svelte b/frontend/src/lib/components/textfield/NameField.svelte index 9aa2d2e..3953401 100644 --- a/frontend/src/lib/components/textfield/NameField.svelte +++ b/frontend/src/lib/components/textfield/NameField.svelte @@ -2,12 +2,13 @@ import { onMount } from 'svelte'; import TextField from './TextField.svelte'; + let helperText: string = 'Zadejte jméno a příjmení. Například Radko Sáblík'; export let placeholder: string = ''; export let valueName: string = ''; export let valueSurname: string = ''; - let value: string = ""; + let value: string = ''; $: { const parsed = value.trim().split(' '); @@ -26,7 +27,17 @@ export let error: string = ''; - + diff --git a/frontend/src/lib/components/textfield/NumberField.svelte b/frontend/src/lib/components/textfield/NumberField.svelte index d9a7c33..be2c8d5 100644 --- a/frontend/src/lib/components/textfield/NumberField.svelte +++ b/frontend/src/lib/components/textfield/NumberField.svelte @@ -1,7 +1,9 @@ - + diff --git a/frontend/src/lib/components/textfield/PasswordField.svelte b/frontend/src/lib/components/textfield/PasswordField.svelte index b332cdc..da599b7 100644 --- a/frontend/src/lib/components/textfield/PasswordField.svelte +++ b/frontend/src/lib/components/textfield/PasswordField.svelte @@ -2,7 +2,9 @@ import Lock from '../icons/Lock.svelte'; import TextField from './TextField.svelte'; + export let helperText: string = ''; export let placeholder: string = ''; + export let value: string = ''; export let error: string = ''; @@ -14,6 +16,7 @@ on:keydown on:keyup {placeholder} + {helperText} on:change type="password" icon diff --git a/frontend/src/lib/components/textfield/TelephoneField.svelte b/frontend/src/lib/components/textfield/TelephoneField.svelte index 7963f6f..fadf4a6 100644 --- a/frontend/src/lib/components/textfield/TelephoneField.svelte +++ b/frontend/src/lib/components/textfield/TelephoneField.svelte @@ -2,7 +2,9 @@ import Telephone from '../icons/Telephone.svelte'; import TextField from './TextField.svelte'; + let helperText: string = 'Zadejte platný telefon s předvolbou. Například +420 123 456 789'; export let placeholder: string = ''; + export let value: string = ''; export let error: string = ''; @@ -17,7 +19,17 @@ } - +
diff --git a/frontend/src/lib/components/textfield/TextField.svelte b/frontend/src/lib/components/textfield/TextField.svelte index 069a4e2..2a144ba 100644 --- a/frontend/src/lib/components/textfield/TextField.svelte +++ b/frontend/src/lib/components/textfield/TextField.svelte @@ -3,14 +3,30 @@ const typeAction = (node: HTMLInputElement) => { node.type = type; }; + + export let helperText: string = ''; export let placeholder: string = ''; + export let value: string = ''; export let icon: boolean = false; export let error: string = ''; + + import { tippy } from 'svelte-tippy'; + import 'tippy.js/dist/tippy.css'; + + const isTooltip = helperText ? tippy : () => {}; + $: tooltipDelay = error != "" ? 0 : 1000; -
+
@@ -297,6 +298,7 @@ bind:value={$form.candidate.birthplace} type="text" placeholder="Místo narození" + helperText="Uveďte město" icon >
@@ -313,6 +315,8 @@ bind:value={$form.candidate.birthdate} type="text" placeholder="Datum narození" + + helperText="TODO: (Uveďte ve formátu DD.MM.RRRR)" />