# Champs d'entrée

<PageBadges />

import { Callout } from "zudoku/ui/Callout"

Cette page répertorie les types de champs de saisie et leurs attributs supplémentaires au-delà des attributs communs.

## TexteField

```json
{
  "type": "TextField",
  "key": "first_name",
  "data_name": "first_name",
  "label": "First name",
  "display": "default",
  "description": null,
  "description_mode": null,
  "required": false,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": null,
  "pattern": null,
  "pattern_description": null,
  "supporting_image": false,
  "supporting_image_path": null,
  "supporting_image_display": null
}
```

Attributs supplémentaires:

- `pattern`: pattern Regex pour valider l'entrée.
- `pattern_description`: Explication facultative du motif.

## NumericField

```json
{
  "type": "NumericField",
  "key": "age",
  "data_name": "age",
  "label": "Age",
  "display": "default",
  "description": null,
  "description_mode": null,
  "required": true,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": null,
  "min": 0,
  "max": 120,
  "format": "integer",
  "supporting_image": false,
  "supporting_image_path": null,
  "supporting_image_display": null
}
```

Attributs supplémentaires:

- `min`: Valeur minimale autorisée.
- `max`: Valeur maximale autorisée.
- `format`: `integer` ou `float`.

## SingleChoiceField

```json
{
  "type": "SingleChoiceField",
  "key": "city",
  "data_name": "city",
  "label": "City",
  "display": "default",
  "description": null,
  "description_mode": null,
  "required": true,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": null,
  "allow_other": false,
  "choices": [
    { "label": "Paris", "value": "paris" },
    { "label": "Rome", "value": "rome" }
  ],
  "supporting_image": false,
  "supporting_image_path": null,
  "supporting_image_display": null,
  "is_searchable": false,
  "is_searchable_mode": null
}
```

Attributs supplémentaires:

- `choices`: Tableau d'objets `{ label, value }`.
- `allow_other`: Active une option de texte libre.
- `is_searchable`: Permet la recherche dans les grandes listes.
- `is_searchable_mode`: Actuellement `default` ou `null`.

## MultiChoiceField

```json
{
  "type": "MultiChoiceField",
  "key": "foods",
  "data_name": "foods",
  "label": "Favorite foods",
  "display": "checkbox",
  "description": null,
  "description_mode": null,
  "required": false,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": ["pasta"],
  "allow_other": false,
  "choices": [
    { "label": "Pasta", "value": "pasta" },
    { "label": "Pizza", "value": "pizza" }
  ],
  "supporting_image": false,
  "supporting_image_path": null,
  "supporting_image_display": null,
  "is_searchable": false,
  "is_searchable_mode": null
}
```

Attributs supplémentaires:

- `choices`: Tableau d'objets `{ label, value }`.
- `allow_other`: Active les éléments en texte libre.
- `display`: `default` ou `checkbox`.

## BooleanField

```json
{
  "type": "BooleanField",
  "key": "newsletter",
  "data_name": "newsletter",
  "label": "Subscribe?",
  "display": "default",
  "description": null,
  "description_mode": null,
  "required": false,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": null,
  "choices": [
    { "label": "Yes", "value": "yes" },
    { "label": "No", "value": "no" }
  ],
  "third_option_enabled": false,
  "supporting_image": false,
  "supporting_image_path": null,
  "supporting_image_display": null
}
```

Attributs supplémentaires:

- `choices`: Habituellement deux options (oui/non).
- `third_option_enabled`: Active une troisième option neutre.

## DateField

```json
{
  "type": "DateField",
  "key": "visit_date",
  "data_name": "visit_date",
  "label": "Visit date",
  "display": "default",
  "description": null,
  "description_mode": null,
  "required": false,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": "now"
}
```

Attributs supplémentaires:

- `default_value`: `now` (ou `null`).

## TimeField

```json
{
  "type": "TimeField",
  "key": "visit_time",
  "data_name": "visit_time",
  "label": "Visit time",
  "display": "default",
  "description": null,
  "description_mode": null,
  "required": false,
  "required_conditions": null,
  "visible": true,
  "visible_conditions": null,
  "read_only": false,
  "read_only_conditions": null,
  "default_value": "now"
}
```

Attributs supplémentaires:

- `default_value`: `now` (ou `null`).

<Callout type="info" title="Choice values">
  Les valeurs de choix doivent correspondre à `^[a-z0-9_]+$`. Si un choix ne fournit pas un `value`,
  form0-core va en générer un à partir du label.
</Callout>
