# Walidacje proste (wbudowane)

Walidacje proste to zestaw podstawowych sprawdzeń dostępnych bezpośrednio w Eximee Designer. Ich konfiguracja odbywa się poprzez ustawienie odpowiednich właściwości komponentu w panelu **Jakość danych**. Poniżej wymieniono najważniejsze wbudowane sposoby walidacji:

* **Wymagalność pola** – określa, czy pole musi zostać obowiązkowo uzupełnione przez użytkownika. Ustawiana jest za pomocą właściwości **Warunek wymagalności (requiredCondition)** w sekcji **Jakość danych** danego komponentu. Jeśli chcemy, aby pole było zawsze wymagane, jako warunek podajemy wartość logiczną `true`. Możemy też wprowadzić bardziej złożony warunek zależny od innych pól – np. pole tekstowe staje się wymagane dopiero, gdy użytkownik zaznaczy określony checkbox. Warunki definiuje się w edytorze warunków i mogą one odwoływać się do wartości innych komponentów lub zmiennych sesyjnych. **Przykład:** Dla pola *Email* można ustalić **requiredCondition** na `getValue("GesCheckbox1") == "true"`, co oznacza, że adres e-mail będzie wymagany tylko jeśli zaznaczono wcześniej checkbox zgody. W takiej sytuacji należy dodatkowo upewnić się, że pole Email **nasłuchuje** na zmianę wartości tego checkboxa – służy do tego właściwość „Nasłuchiwanie” w panelu interakcji. Dzięki nasłuchiwaniu, gdy użytkownik zaznaczy lub odznaczy checkbox, formularz od razu sprawdzi ponownie warunek wymagalności dla pola Email. Jeśli warunek wymagalności nie jest spełniony (czyli pole jest wymagane, ale puste), użytkownik nie będzie mógł przejść do kolejnego kroku, a pod polem pojawi się komunikat błędu informujący, że pole jest wymagane.

<figure><img src="https://1082717226-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2CssJT0zIo4SJQLbSZ6l%2Fuploads%2FDl9WTHFtjMwznfCULA9r%2Fimage.png?alt=media&#x26;token=c1a438fd-1bc2-42a2-9c8e-e0f86f014b9d" alt=""><figcaption><p align="center"><em><strong>Ilustracja 1.</strong> Przykład warunku wymagalności pola uzależnionego od wartości innego komponentu (tutaj checkboxa)</em></p></figcaption></figure>

* **Minimalna/Maksymalna liczba znaków** – określa dopuszczalną długość tekstu w polu. Dla komponentu **Obszar tekstu (TextArea)** dostępne są właściwości **minLength** (minimalna liczba znaków) oraz **maxLines** (maksymalna liczba wierszy tekstu). Dla **Pola tekstowego (TextField)** można ustawić **Minimalną liczbę znaków (minLength)** oraz **Maksymalną liczbę znaków (maxLength)**, co definiuje maksymalną długość wpisywanego tekstu. Przykładowo, aby wymusić wpisanie co najmniej 50 znaków opisu w polu komentarza, ustawiamy minLength = 50 – jeśli użytkownik wpisze mniej, zobaczy komunikat o konieczności dłuższej wypowiedzi.
* **Maska (wyrażenie regularne)** – pozwala zdefiniować **wzorzec**, jaki musi spełniać wpisywana wartość. Używa się jej np. do walidacji formatów takich jak kod pocztowy, numer telefonu, NIP itp. Konfiguracja polega na wpisaniu wyrażenia regularnego w polu **Maska** (sekcja *Jakość danych* komponentu), a następnie podaniu treści komunikatu błędu w polu **Komunikat błędu dopasowania do maski**. Jeżeli użytkownik wprowadzi wartość niepasującą do zadanego regexu, pod polem wyświetli się zdefiniowany komunikat, a formularz nie pozwoli przejść dalej dopóki wartość nie zostanie poprawiona. **Przykład:** Dla pola *Kod pocztowy* możemy ustawić maskę `\d{2}-\d{3}` oraz komunikat "Niepoprawny format kodu pocztowego". Wpisanie ciągu znaków niespełniającego tego wzorca (np. z literami lub złym układem cyfr) spowoduje wyświetlenie błędu.

| Wyrażenie regularne                                                                    | Znaczenie                                                                                                                                                                                                                                                                      | Przykładowe wartości                                        |
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- |
| \d{2}-\d{3}                                                                            | Kod pocztowy                                                                                                                                                                                                                                                                   | 61-897                                                      |
| \d{11}                                                                                 | PESEL                                                                                                                                                                                                                                                                          | 75010125915                                                 |
| (\d{3}\[- ]\d{3}\[- ]\d{2}\[- ]\d{2})\|(\d{3}\[- ]\d{2}\[- ]\d{2}\[- ]\d{3})\|(\d{10}) | NIP                                                                                                                                                                                                                                                                            | <p>782-226-19-60<br>lub 782-22-61-960<br>lub 7822261960</p> |
| \[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]+\[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\ \\-\\']\*                      | Pole zaczyna się od litery, dalej tylko litery, spacja, myślnik, apostrof. Przykładowe wykorzystanie w polu imię lub nazwisko.                                                                                                                                                 | Janina Nowak-Kowalska                                       |
| \[0-9\\(\\+]+\[0-9\ \\(\\)\\+\\-]\*                                                    | <p>Pole zaczyna się od cyfry, otwarcia nawiasu lub plusa, dalej tylko cyfry, nawiasy, spacje, plus, myślniki.<br>Przykładowe wykorzystanie w polu z numerem telefonu (rozwiązanie alternatywne wobec przykładowej maski z <strong>visibleMask Prezentacja maski</strong>).</p> | <p>+48 (12) 31 23 123<br>lub (48) 123-123-123</p>           |
| \[0-9A-Za-z]\*                                                                         | Możliwość wprowadzenia tylko cyfr i liter                                                                                                                                                                                                                                      | <p>abc123</p><p>123abc</p>                                  |
| \[0-9]{6}\[\\\*]{1,6}\[0-9]{4}                                                         | Maskowany numer karty - pole należy uzupełnić podając 6 pierwszych cyfr oraz 4 ostatnie cyfry numeru karty, rozdzielone znakami " \* " (maksymalnie sześć znaków specjalnych: " \* ").                                                                                         | 123456\*\*7890                                              |

* **Prezentacja maski (visibleMask)** – nie mylić z powyższą maską regex. Prezentacja maski służy do zdefiniowania formatu, w jakim **podczas wpisywania** mają się układać znaki w polu tekstowym. Typowym przykładem jest automatyczne dodawanie myślników lub spacji w kodzie pocztowym, NIP czy numerze karty kredytowej w trakcie wpisywania. Właściwość **Prezentacja maski** określamy także w sekcji *Jakość danych*. Używa się tu specjalnej składni (np. cyfry, litery, znaki specjalne) by określić format wyświetlania. **Przykład:** Dla numeru NIP chcemy format `999-999-99-99` – odpowiednie wyrażenie prezentacji maski spowoduje, że użytkownik wpisuje ciąg ciągły cyfr, a na ekranie pojawiają się one w podziale 3-3-2-2 wraz z automatycznie wstawianymi myślnikami. Prezentacja maski dotyczy wyłącznie wyglądu wpisywanych danych dla wygody użytkownika – nie weryfikuje poprawności samej wartości (od tego jest maska regex). Wśród elementów definicji maski występują następujące znaki:
  * **S** - reprezentuje dowolny znak będący literą (A-Z,a-z),
  * **9** - reprezentuje dowolny znak będący liczbą (0-9),
  * **A** - reprezentuje dowolny znak alfanumeryczny (A-Z,a-z,0-9),
  * **?** - elementy maski umieszczone za "?" są opcjonalne.

| Definicja maski        | Znaczenie                                        | Prezentacja maski                   | Przykładowe wartości                       |
| ---------------------- | ------------------------------------------------ | ----------------------------------- | ------------------------------------------ |
| 99-999                 | Kod pocztowy                                     | \_\_-\_\_\_                         | 61-897                                     |
| 99999999999            | PESEL                                            | \_\_\_\_\_\_\_\_\_\_\_              | 75010125915                                |
| 999-999-99-99          | NIP                                              | \_\_\_-\_\_\_-\_\_-\_\_             | 782-22-61-960                              |
| +99 99 99 99 999? w999 | Numer telefonu z opcjonalnym numerem wewnętrznym | +\_\_ \_\_ \_\_ \_\_ \_\_\_ w\_\_\_ | +48 61 41 51 000 lub +48 61 41 51 000 w001 |

### Walidacja po każdym znaku <a href="#walidacjeproste-walidacjapokazdymznaku-validationoneverysign" id="walidacjeproste-walidacjapokazdymznaku-validationoneverysign"></a>

W sekcji **Jakość danych** znajduje się opcja **Walidacja po każdym znaku (validationOnEverySign)** - pozwala na wywołanie walidacji (tylko wymagalność pola oraz maska) na komponencie po każdym wprowadzonym znaku. Wartość domyślna komponentu "false".

{% hint style="info" %}
Wnioski demo: demoRegex, demoPrezentacjaMaski, demoWalidatory
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eximee.com/budowanie-aplikacji/interfejs-uzytkownika/formularze/praca-z-komponentami-bazowymi/walidacja-wartosci-komponentow/walidacje-proste-wbudowane.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
