## Cascader
Si les options ont une structure hiérarchique claire, un Cascader peut être utilisé pour les afficher et les selectionner.
### Usage
Il y a deux manières de dérouler la liste des options.
:::demo Assigner un tableau à l'attribut `options` génère un Cascader. L'attribut `expand-trigger` détermine comment les options suivantes sont affichées. Cet exemple utilises aussi l'évènement `change`, qui a pour paramètre la valeur du Cascader, c'est à dire un tableau constitué de chaque niveau jusqu'à la valeur selectionnée, comme un chemin.
```html
Les options se déroulent après un clic (défaut)
Les options se déroulent au passage de la souris
```
:::
### Options désactivées
Désactivez une option en configurant `disabled` dans l'objet option.
:::demo Dans cet exemple, le premier item dans le tableau `options` est configuré avec `disabled: true`, il est donc désactivé. Par défaut, Cascader recherche le champ `disabled` dans chaque option; si vous utilisez un autre nom de champ pour indiquer que l'option est désactivée, vous pouvez l'assigner dans l'attribut `props` (voir la table de l'API ci-dessous). Les champs `value`, `label` et `children` peuvent être personnalisés de la même manière.
```html
```
:::
### Afficher uniquement le dernier niveau
Le champ peut n'afficher que le dernier niveau au lieu de tous.
:::demo L'attribut `show-all-levels` détermine si tous les niveaux sont affichés. Si il est à `false`, seul le dernier niveau est affiché.
```html
```
:::
### Valeur par défaut
:::demo La valeur par défaut peut être définit grâce à un tableau.
```html
```
:::
### Changement après sélection
Les options parentes peuvent aussi être sélectionnées.
:::demo Par défaut seules les options de dernier niveau peuvent être sélectionnées. En réglant `change-on-select` à `true`, les options parentes peuvent aussi être sélectionnées.
```html
```
:::
### Charger les options dynamiquement
Il est possible de charger dynamiquement les options quand on clique ou passe la souris sur leurs parent.
:::demo Dans cet exemple, les optionsn'ont pas de données de villes au moment de l'initialisation. Grâce à l'évènement `active-item-change` vous pouvez charger les villes de manière dynamique. De plus, cet exemple montre comment `props` peut être utilisé.
```html
```
:::
### Filtres
Recherchez une option particulière en entrant des mots-clé.
:::demo Ajouter `filterable` à `el-cascader` active le filtrage.
```html
Only options of the last level can be selected
Options of all levels can be selected
```
:::
### Attributs
| Attribut | Description | Type | Options | Défaut|
|---------- |-------------------- |---------|------------- |-------- |
| value / v-model | La valeur liée. | boolean / string / number | — | — |
| options | Données des options. | array | — | — |
| props | Options de configuration, voir la table suivante. | object | — | — |
| value | Valeur sélectionnée. | array | — | — |
| separator | Séparateur des options. | string | — | / |
| popper-class | Classe personnalisée pour le menu déroulant du Cascader | string | — | — |
| placeholder | Placeholder du champ. | string | — | Select |
| disabled | Désactive le Cascader. | boolean | — | false |
| clearable | Détermine si la valeur peut être effacée. | boolean | — | false |
| expand-trigger | Mode de déclenchement du menu suivant. | string | click / hover | click |
| show-all-levels | Détermine si tout les niveaux doivent être affichés dans le champ. | boolean | — | true |
| filterable | Active la recherche par mots-clé. | boolean | — | — |
| debounce | Délai d'attente après avoir entré un mot-clé, en millisecondes. | number | — | 300 |
| change-on-select | Détermine si il est possible de sélectionner une option de n'importe quel niveau. | boolean | — | false |
| size | taille du champ | string | medium / small / mini | — |
| before-filter | Fonction de hook qui s'active avant le filtrage, le paramètre étant la valeur entrée. Si `false` est retourné ou bien une `Promise` est retournée puis rejetée, le filtrage sera annulé. | function(value) | — | — |
### props
| Attribut | Description | Type | Valeurs acceptées | Défaut |
| --------- | ----------------- | ------ | ------ | ------ |
| label | Détermine quelle clé d'option est utilisé comme label. | string | — | — |
| value | Détermine quelle clé d'option est utilisé comme valeur. | string | — | — |
| children | Détermine quelle clé d'option est utilisé en tant que sous-options. | string | — | — |
| disabled | Détermine quelle clé d'option est utilisé pour indiquer si l'option est désactivée. | string | — | — |
### Évènements
| Nom | Description | Paramètres |
|---------- |-------- |---------- |
| change | Se déclecnhe lorsque la valeur change. | La valeur |
| active-item-change | Se déclenche quand le parent de l'option active change, ne marche que si `change-on-select` est `false` | Un tableau des options actives |
| blur | Se déclenche quand le Cascader perds le focus. | (event: Event) |
| focus | Se déclenche quand le Cascader a le focus. | (event: Event) |
| visible-change | Se déclenche quand le menu apparaît ou disparaît. | `true` quand il apparaît, `false` sinon. |