merisia-select
<merisia-select>
Menu déroulant accessible basé sur un <select> natif. Quand une seule
option est disponible, la flèche est masquée et le champ se comporte comme un champ texte.
Import
import '@merisia-inc/merisia-components/select';
Extension
Vous pouvez sous-classer ce composant pour ajouter ou redéfinir des propriétés, méthodes ou styles :
import { customElement } from 'lit/decorators.js';
import { MerisiaSelect } from '@merisia-inc/merisia-components';
@customElement('my-select')
export class MySelect extends MerisiaSelect {
// Ajoutez ou redéfinissez des propriétés, méthodes ou styles ici.
}
Démos
Basique (plusieurs options)
<merisia-select id="province" label="Province" name="province"
hint="Choisissez votre province de résidence."></merisia-select>
<script>
document.getElementById('province').options = [
{ value: 'qc', label: 'Québec' },
{ value: 'on', label: 'Ontario' },
];
</script>
Option unique (sans flèche)
Quand une seule option est disponible, le composant se comporte comme un champ de texte — la flèche de sélection est masquée.
<merisia-select id="country" label="Pays" name="country"></merisia-select>
<script>
// Avec 1 seule option, la flèche disparaît automatiquement
document.getElementById('country').options = [
{ value: 'ca', label: 'Canada' },
];
</script>
Avec erreur
const el = document.querySelector('merisia-select');
el.errors = ["Veuillez choisir une province."];
Lecture seule
const el = document.querySelector('merisia-select');
el.readonly = true;
Tri automatique
La propriété autosort trie les options par leur texte affiché, insensible
aux accents et à la casse.
<merisia-select autosort id="province" label="Province" name="province"></merisia-select>
<script>
document.getElementById('province').options = [
{ value: 'qc', label: 'Québec' },
{ value: 'on', label: 'Ontario' },
{ value: 'bc', label: 'Colombie-Britannique' },
{ value: 'ab', label: 'Alberta' },
];
</script>
Propriétés
| Propriété | Attribut | Type | Défaut | Description |
|---|---|---|---|---|
| MerisiaSelect (propres) | ||||
| options | – | SelectOption[] | SelectOptGroup[] | [] | Liste d'options plates ou groupées (propriété JS uniquement) |
| placeholder | placeholder | string | 'Sélectionner…' | Texte de l'option vide (non sélectionnable) |
| hideEmpty | hide-empty | boolean | false | Masque l'option vide |
| autosort | autosort | boolean | false |
Active le tri automatique des options par leur texte affiché (insensible aux
accents/majuscules, selon lang)
|
| sortDirection | sort-direction | 'asc' | 'desc' | 'asc' |
Ordre de tri appliqué quand autosort est actif
|
| MerisiaTextFieldBase (hérités) | ||||
| label | label | string | '' | Texte du libellé |
| hint | hint | string | '' | Aide contextuelle affichée sous le libellé |
| errors | – | string[] | [] | Liste de messages d'erreur (propriété JS uniquement) |
| errorPrefix | error-prefix | string | 'Erreur :' | Préfixe des messages d'erreur (i18n, visuellement masqué) |
| readonly | readonly | boolean | false | Rend le champ non modifiable |
| invalid | invalid | boolean | false |
État d'erreur (synchronisé automatiquement avec errors)
|
| MerisiaFormElement (hérités) | ||||
| name | name | string | '' | Nom du champ dans le formulaire |
| value | value | string | '' | Valeur sélectionnée |
| required | required | boolean | false | Rend la sélection obligatoire |
| disabled | disabled | boolean | false | Désactive le menu |
| MerisiaElement (hérités) | ||||
| id | id | string | auto-généré | Identifiant unique du composant |
| lang | lang | string | 'fr' | Langue pour les messages internes (i18n) |
| width | width | number | – |
Largeur maximale en caractères : max-width: calc(N ch + 1.5rem)
|