# Edytor oświadczeń

Dla komponentów **Oświadczenia** oraz **Oświadczenia na warstwie** dostępny jest specjalizowany edytor. Umożliwia on definiowanie oświadczeń korzystając z formatu JSON.

## Lokalizacja edytora

Edytor oświadczeń dostępny jest w sekcji **Podstawowe właściwości** komponentów **Oświadczenia** oraz **Oświadczenia na warstwie**.

<div data-with-frame="true"><img src="https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/csYCRrr14KxrfbFOmt5n/7s_files/image2020-6-9_10-43-46.png" alt=""></div>

<p align="center"><em><strong>Ilustracja 1.</strong> Miejsce osadzenia edytora oświadczeń</em></p>

Otwarcie edytora następuje po kliknięciu w **Dodaj oświadczenie**.

## Prezentacja edytora

Otwarcie edytora oświadczeń skutkuje wysunięciem szuflady prezentującej obszar do wpisywania tekstu w formacie JSON. Dla nowo utworzonego komponentu zawiera on jedynie nawiasy klamrowe bez zawartości. Po lewej stronie edytora widoczne są numery wierszy.

Edytor oświadczeń może być wyświetlony w trybie tylko do odczytu oraz w trybie do edycji. Tryb tylko do odczytu umożliwia jedynie podejrzenie zapisanych wartości.

<div data-with-frame="true"><img src="https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/8EGwf4lk03qdwg2blDgZ/7s_files/image2020-6-9_10-54-51.png" alt="Ilustracja 2. Wygląd edytora oświadczeń dla nowo utworzonego komponentu"></div>

Edytor w czasie rzeczywistym podkreśla zarówno błędy semantyczne, jak i składniowe. Po najechaniu kursorem myszy na czerwone podkreślenie symbolizujące wystąpienie błędu, wyświetlony zostaje dymek ukazujący jego treść.

<div data-with-frame="true"><img src="https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/fByJEMZxEU3zLD6JetT8/7s_files/image2020-6-9_11-3-2.png" alt="Ilustracja 3. Przykładowa informacja o wymagalności pól"></div>

## Działanie edytora

Edytor oświadczeń obsługuje funkcjonalność podpowiadania składni. Po wciśnięciu kombinacji klawiszy **Ctrl + Spacja** zostaje wyświetlona podpowiedź zawierająca możliwe do wpisania pola w zależności od aktualnej pozycji kursora w edytorze. Zaznaczenie którejś z nich i wciśnięcie klawisza **Enter** powoduje wprowadzenie danej podpowiedzi do edytora.

<div data-with-frame="true"><img src="https://content.gitbook.com/content/2CssJT0zIo4SJQLbSZ6l/blobs/m8NqoeCfjlMxyCn9MDq7/7s_files/image2020-6-9_11-21-14.png" alt="Ilustracja 4. Podpowiedzi wyświetlane po wciśnięciu kombinacji klawiszy Ctrl + Spacja"></div>

Edytor można zamknąć na dwa sposoby. Pierwszym z nich jest symbol **X** znajdujący się w prawym górnym rogu (widoczny na Ilustracji 2). Drugim sposobem jest kliknięcie poza obszarem edytora.

{% hint style="info" %}
Jeżeli przy zamykaniu edytora wpisane dane są poprawne semantycznie oraz składniowo — zostają one zapisane. Jeżeli zawierają jakikolwiek błąd — zmiany zostają porzucone. W obu przypadkach szuflada się zamyka.
{% endhint %}

## Dostępne pola

Edytor oświadczeń przyjmuje poniżej wymienione pola. Ich znaczenie zostanie wyjaśnione w następnym paragrafie. Pola wymagane zostały dodatkowo oznaczone:

{% code title="Przykładowa struktura JSON" expandable="true" %}

```json
{
  "items": [
    {
      "controls": [
        {
          "mid": "tekst",                 // wymagane
          "titleKey": "tekst",           // wymagane
          "type": "CHECKBOX|RADIO",      // możliwe wartości CHECKBOX lub RADIO, wymagane
          "visibleCondition": "tekst",
          "styleName": "tekst",
          "requiredCondition": "tekst",
          "notSelectedErrorTextKey": "tekst",
          "requiredNotAcceptedErrorTextKey": "tekst",
          "mastercheckbox": "tekst"
        }
        // ...
      ],
      "actionBindings": {
        "bindings": [
          {
            "event": "EDIT"             // możliwa wartość EDIT, wymagane
          }
          // ...
        ]
      },
      "mid": "tekst",                   // wymagane
      "textContent": "tekst",
      "textContentUnexpanded": "tekst",
      "visibleCondition": "tekst",
      "expandableCondition": "tekst",
      "expandedCondition": "tekst",
      "descriptionKey": "tekst",
      "nativePopupTitleKey": "tekst",
      "styleName": "tekst"
    }
    // ...
  ]
}
```

{% endcode %}

### Znaczenie pól

| Właściwość                | Opis                                                                                                                                                                                                                                                                                                                                             |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **items**                 | Lista zdefiniowanych oświadczeń do wyświetlenia.                                                                                                                                                                                                                                                                                                 |
| **textContent**           | Artefakt z treścią oświadczenia wyświetlaną poniżej tytułu podanego w **titleKey**. Jeśli artefakt zostanie wskazany, a nie zostanie podany klucz **titleKey** i zdefiniowana kontrolka w **controls**, to treść textContentu nie będzie zawierała kontrolki.                                                                                    |
| **textContentUnexpanded** | Artefakt z treścią oświadczenia wyświetlaną przy zwiniętym oświadczeniu.                                                                                                                                                                                                                                                                         |
| **mid**                   | Biznesowy identyfikator danego oświadczenia.                                                                                                                                                                                                                                                                                                     |
| **visibleCondition**      | Warunki, przy jakich dane oświadczenie ma być wyświetlone. Jeżeli warunek jest pusty lub nieprawidłowy, zostanie wyewoluowana wartość "true".                                                                                                                                                                                                    |
| **styleName**             | Nazwa stylu.                                                                                                                                                                                                                                                                                                                                     |
| **expandableCondition**   | Warunek, dla którego przy tytule oświadczenia ma się wyświetlić tekst do zwijania/rozwijania treści oświadczenia. Jeżeli warunek jest pusty lub nieprawidłowy, zostanie wyewoluowana wartość "false". Uwaga: jeśli **titleKey** jest niezdefiniowany, tekst nie pojawi się.                                                                      |
| **expandedCondition**     | Jeśli **expandableCondition** jest ustawiony na "true", właściwość **expandedCondition** decyduje o tym, czy i kiedy treść oświadczenia ma być domyślnie rozwinięta. Jeżeli warunek jest pusty lub nieprawidłowy, zostanie wyewoluowana wartość "true" (treść rozwinięta).                                                                       |
| **titleKey**              | Klucz tytułu pojedynczego oświadczenia definiowanego w zakładce **Tłumaczenia**. W kluczach rozwiązują się zmienne.                                                                                                                                                                                                                              |
| **nativePopupTitleKey**   | Klucz tytułu natywnego popupu, który się wyświetli przy kliknięciu w "Więcej" → ten tekst można nadpisać przez i18n.statements.item.native.more w zakładce **Tłumaczenia**. Popup wyświetla się tylko w aplikacji natywnej. W przypadku braku zdefiniowania **nativePopupTitleKey** jako tytuł zostanie wyświetlona wartość klucza **titleKey**. |
| **event**                 | Zdarzenie, które należy dodać, jeżeli została zdefiniowana akcja na wniosku powiązana z danym itemem oświadczenia.                                                                                                                                                                                                                               |
| **controls**              | Lista zdefiniowanych kontrolek danego oświadczenia. Wyjaśnienie pól obiektu **controls** znajduje się poniżej.                                                                                                                                                                                                                                   |

### **Definiowanie listy kontrolek (controls)**

| Właściwość                          | Opis                                                                                                                                       |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **mid**                             | Biznesowy identyfikator kontrolki (pole wymagane).                                                                                         |
| **titleKey**                        | Klucz tytułu wyświetlanego przy/nad kontrolką.                                                                                             |
| **visibleCondition**                | Warunki, przy jakich dana kontrolka ma być wyświetlona. Jeżeli warunek jest pusty lub nieprawidłowy, zostanie wyewoluowana wartość "true". |
| **requiredCondition**               | Warunek, dla którego kontrolka ma być wymagalna. Jeżeli warunek jest pusty lub nieprawidłowy, zostanie wyewoluowana wartość "true".        |
| **type**                            | Typ kontrolki: **RADIO** - oświadczenie z dwoma radio TAK/NIE (inne typy jak CHECKBOX też mogą występować zgodnie z definicją JSON).       |
| **notSelectedErrorTextKey**         | Klucz tłumaczenia nadpisującego tekst "Nie dokonałeś wyboru".                                                                              |
| **requiredNotAcceptedErrorTextKey** | Klucz tłumaczenia nadpisującego tekst "Zgoda na wybrane oświadczenie jest wymagana".                                                       |
| **styleName**                       | Nazwa stylu.                                                                                                                               |
| **mastercheckbox**                  | Id master checkboxa.                                                                                                                       |


---

# 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/biblioteka-komponentow-bazowych/7-komponenty-specjalne/oswiadczenia-statements/edytor-oswiadczen.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.
