STextField <s-text-field>
Un champ de texte sur une ligne avec libellé, placeholder, erreur de validation et texte d'aide. STextField est le wrapper Vue 3 typé du web component <s-text-field> de Shopify Polaris.
ts
import { STextField } from 'polaris-vue-elements'Bonnes pratiques
- Rendez la saisie attendue évidente. Rédigez un
labelet unplaceholderqui indiquent aux marchands quoi saisir et dans quel format. Une formulation vague mène aux suppositions, aux erreurs de validation et à la frustration. - Ajoutez du contexte avec un préfixe ou un suffixe. Utilisez
prefixetsuffixpour montrer le type de valeur et son format, par exemple si les marchands doivent saisir une URL complète ou seulement un sous-domaine, un prix complet ou seulement le montant. - Fondez les contraintes sur des exigences réelles. Définissez
minLength,maxLengthet les règles de validation selon les besoins métier réels plutôt que des nombres arbitraires, et indiquez-les aux marchands. - Donnez un retour tôt et de façon précise. Faites savoir aux marchands si leur saisie est valide pendant qu'ils tapent, pas seulement à la soumission. Si elle ne l'est pas, utilisez
errorpour expliquer ce qui ne va pas et comment le corriger.
vue
<STextField label="Store address" prefix="https://" suffix=".myshopify.com" />Consultez les bonnes pratiques de Shopify pour <s-text-field> (en anglais) pour l'ensemble des recommandations.
Exemple
Value: (empty)
vue
<script setup>
import { ref } from 'vue'
import { STextField } from 'polaris-vue-elements'
const value = ref('')
</script>
<template>
<STextField label="Your name" placeholder="Jane Doe" v-model="value" />
<p>Value: {{ value }}</p>
</template>v-model
v-model sur <STextField> est lié à la propriété value et écoute l'event DOM input.
template
<STextField v-model="value" />équivaut à :
template
<STextField :value="value" @input="value = $event.target.value" />Props
| Prop | Type | Description |
|---|---|---|
autocomplete | "language" | "organization" | "name" | "additional-name" | "address-level1" | "address-level2" | "address-level3" | "address-level4" … (84 more) | Une indication sur le contenu attendu du champ. Lorsqu'elle vaut on (valeur par défaut), cette propriété indique que le champ doit prendre en charge le remplissage automatique, sans autre information sémantique sur le contenu attendu. Lorsqu'elle vaut off, vous indiquez que ce champ contient des informations sensibles ou des contenus jamais enregistrés, comme des codes à usage unique. Vous pouvez aussi fournir une valeur décrivant précisément les données que vous souhaitez voir saisies dans ce champ lors du remplissage automatique. |
defaultValue | string | La valeur par défaut du champ. |
details | any | Texte supplémentaire apportant du contexte ou des indications pour le champ. Ce texte est affiché avec le champ et son libellé afin de fournir davantage d'informations ou d'instructions à l'utilisateur. Il est également exposé aux utilisateurs de lecteurs d'écran. |
disabled | boolean | Désactive le champ, empêchant toute interaction. |
error | any | Signale une erreur à l'utilisateur. Le champ reçoit un traitement visuel spécifique pour signaler des problèmes à résoudre immédiatement. |
icon | "cart-filled" | "channels-filled" | "home-filled" | "order-filled" | "person-filled" | "product-filled" | "color" | "info" … (597 more) | Le type d'icône à afficher dans le champ. |
id | string | Un identifiant unique pour l'élément. |
label | any | Contenu à utiliser comme libellé du champ. |
labelAccessibilityVisibility | "visible" | "exclusive" | Modifie la visibilité du libellé du composant. - visible : le libellé est visible par tous les utilisateurs. - exclusive : le libellé est masqué visuellement mais reste dans l'arbre d'accessibilité. |
maxLength | number | Indique le nombre maximal de caractères autorisés. |
minLength | number | Indique le nombre minimal de caractères autorisés. |
name | string | Un identifiant du champ, unique au sein du formulaire parent le plus proche. |
placeholder | string | Une courte indication décrivant la valeur attendue du champ. |
prefix | string | Une valeur affichée juste avant la partie modifiable du champ. Utile pour afficher une partie implicite de la valeur, comme "https://" ou "+353". L'utilisateur ne peut pas la modifier, et elle n'est pas incluse dans la valeur du champ. Elle peut ne s'afficher qu'après une interaction de l'utilisateur avec la saisie. Par exemple, un libellé en ligne peut occuper la place du préfixe jusqu'à ce que l'utilisateur donne le focus à la saisie. |
readOnly | boolean | Le champ ne peut pas être modifié par l'utilisateur. Il reste focalisable et est annoncé par les lecteurs d'écran. |
required | boolean | Indique si le champ exige une valeur. Cette exigence ajoute une valeur sémantique au champ, mais n'affiche pas automatiquement d'erreur. Pour afficher une erreur lorsque ce champ est vide, utilisez la propriété error. |
suffix | string | Une valeur affichée juste après la partie modifiable du champ. Utile pour afficher une partie implicite de la valeur, comme "@shopify.com" ou "%". L'utilisateur ne peut pas la modifier, et elle n'est pas incluse dans la valeur du champ. Elle peut ne s'afficher qu'après une interaction de l'utilisateur avec la saisie. Par exemple, un libellé en ligne peut occuper la place du suffixe jusqu'à ce que l'utilisateur donne le focus à la saisie. |
value | string | La valeur actuelle du champ. Si elle est omise, le champ sera vide. |
Certaines colonnes de type ci-dessus sont tronquées pour plus de lisibilité ; l'union complète est disponible dans les types TypeScript générés de la bibliothèque (
src/lib/generated/types.ts).
Events
| Event | Type |
|---|---|
blur | FocusEvent |
change | Event |
focus | FocusEvent |
input | Event |
Écoutez-les avec des listeners de la forme @blur sur <STextField>.
Slots
| Slot | Description |
|---|---|
accessory | Contenu supplémentaire affiché à côté du champ de texte, généralement une icône ou un bouton offrant une fonctionnalité associée, comme l'ouverture d'une infobulle d'aide ou le déclenchement d'une modale. |
details | |
error |