# Champ de saisie

Saisie de texte sur une ou plusieurs lignes. Prend en charge préfixe/suffixe, effacement, compteur de caractères, troncation par maxlength et la liaison avec la validation de formulaire.

Variantes du champ de saisie
<template>
  <div class="demo-col" style="gap: 18px">
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="text" placeholder="Saisissez du contenu" clearable name="title" />
      <LhInput v-model="text" prefix-icon="search" suffix-icon="close" placeholder="Icônes préfixe/suffixe" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="secret" type="password" placeholder="Mot de passe" autocomplete="new-password" />
      <LhInput v-model="text" readonly placeholder="Lecture seule" />
      <LhInput v-model="text" disabled placeholder="État désactivé" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap; align-items: center">
      <LhInput v-model="text" size="small" placeholder="small" />
      <LhInput v-model="text" size="medium" placeholder="medium" />
      <LhInput v-model="text" size="large" placeholder="large" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="poem" type="textarea" :rows="2" placeholder="Texte multiligne (rows=2)" resize="vertical" />
      <LhInput v-model="poem" type="textarea" autosize placeholder="Hauteur de ligne automatique" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhInput v-model="limited" :maxlength="20" show-word-limit placeholder="Compteur de caractères" />
      <LhInput v-model="text" label="Étiquette flottante" placeholder="Exclusive avec placeholder" />
    </div>
    <p class="demo-note">Valeur actuelle : {{ text || '(vide)' }}</p>
  </div>
</template>

<script>
export default {
  data: () => ({ text: '', secret: '', poem: '', limited: '' }),
}
</script>

# Props

Propriété Description Type Valeur par défaut
v-model Valeur liée (model : modelValue/input) string —
type Type de contrôle 'text' \| 'textarea' \| 'password' \| … 'text'
size Taille 'small' \| 'medium' \| 'large' 'medium'
placeholder Texte du placeholder, pack de langue par défaut string t('input.placeholder')
clearable Affiche le bouton d'effacement boolean false
prefixIcon / suffixIcon Icônes de préfixe/suffixe, noms des icônes LhIcon intégrées string —
maxlength / minlength Limites de longueur natives number —
showWordLimit Affiche le compteur de caractères (requiert maxlength) boolean false
autosize Hauteur de ligne automatique du textarea boolean \| {minRows,maxRows} false
disabled / readonly Désactivé / lecture seule boolean false
autofocus Focus automatique au montage boolean false
autocomplete Attribut autocomplete natif string 'off'
nativeType Attribut type natif (actif lorsque type=text) string 'text'
resize Direction de la poignée de redimensionnement du textarea 'none' \| 'both' \| 'horizontal' \| 'vertical' —
name / form Attributs name / form natifs string —
tabindex Attribut tabindex natif number \| string —
inputStyle Style en ligne de l'élément de saisie Record<string, string> —
label Étiquette flottante (exclusive avec placeholder) string —
themeVars / bgPattern / sx Surcharge du thème — —

# Events

Événement Description Paramètres de rappel
input Événement v-model (val, e)
change Déclenché lorsque la valeur change —
focus Déclenché à l'obtention du focus —
blur Déclenché à la perte de focus —
clear Déclenché lors de l'effacement —
keydown Déclenché à l'appui sur une touche —

# Intégration aux formulaires

Placé dans un LhFormItem, le contrôle natif reçoit automatiquement aria-invalid="true" en cas d'échec de validation.

Copyright © 2024-2026 FengMo WenXue