BjSelect

Liste déroulante Vue avec libellé, aide, placeholder, options, messages d’erreur, mode désactivé, mode recherche (dropdown custom) et slot pour options supplémentaires.

Utilisation

<script setup>
import { ref } from 'vue'
import { BjSelect } from '@flrxnt/dsbj/vue'

const dept = ref('')
const options = [
  { value: 'dg', label: 'Direction générale' },
  { value: 'dr', label: 'Direction régionale' },
]
</script>

<template>
  <BjSelect
    v-model="dept"
    label="Direction"
    hint="Choisir une direction dans la liste"
    placeholder="Sélectionner…"
    :options="options"
  />
</template>

Select natif (aperçu)

Choisir une direction dans la liste

Erreur et message

Veuillez choisir un rôle.

<BjSelect
  v-model="role"
  label="Rôle"
  placeholder="Sélectionner…"
  :options="roles"
  :error="true"
  message="Veuillez choisir un rôle."
/>

Désactivé

<BjSelect
  v-model="fixed"
  label="Statut"
  :options="statuses"
  :disabled="true"
  placeholder="Verrouillé"
/>

Slot — options supplémentaires

Le slot par défaut est rendu à l’intérieur du <select> natif (après les <option> générées), pour des options HTML personnalisées.

<BjSelect v-model="x" label="Pays" placeholder="Liste + slot" :options="countries">
  <option value="other">Autre (slot)</option>
</BjSelect>

Mode recherche

<script setup>
import { ref } from 'vue'
import { BjSelect } from '@flrxnt/dsbj/vue'

const city = ref('')
const cities = [
  { value: 'cotonou', label: 'Cotonou' },
  { value: 'porto', label: 'Porto-Novo' },
  { value: 'parakou', label: 'Parakou' },
]
</script>

<template>
  <BjSelect
    v-model="city"
    label="Commune"
    placeholder="Sélectionner…"
    :options="cities"
    searchable
  />
</template>
  • Cotonou
  • Porto-Novo
  • Parakou

Recherche : searchPlaceholder et noResults

Aucune commune ne correspond.

<BjSelect
  v-model="city"
  label="Commune"
  searchable
  search-placeholder="Filtrer les communes…"
  no-results="Aucune commune ne correspond."
  :options="cities"
/>

Recherche désactivée

<BjSelect
  v-model="city"
  label="Commune"
  searchable
  :disabled="true"
  placeholder="Sélectionner…"
  :options="cities"
/>

Props

PropDescription
modelValueValeur sélectionnée (v-model), chaîne.
labelLibellé au-dessus du select (associé via for/id).
hintTexte d’aide sous le libellé.
optionsTableau d’objets avec value, label et disabled optionnel.
errorMet le champ en état d’erreur visuelle.
messageMessage sous le champ (couleur selon error).
disabledDésactive le select.
placeholderOption initiale vide et désactivée avec ce libellé.
searchableActive le mode recherche : remplace le select natif par un dropdown custom avec filtre.
searchPlaceholderPlaceholder du champ de recherche (défaut : « Rechercher… »).
noResultsTexte affiché quand aucune option ne correspond.