Aller au contenu

Mention

Composant de saisie pour mentionner des utilisateurs, des tags ou d’autres entités avec suggestions d’autocomplétion.

import { Mention } from 'asterui'

Mention basique

Saisie de mention simple avec déclencheur @.

import { Mention } from 'asterui'
import { useState } from 'react'

function App() {
  const users = [
    { value: 'john', label: 'John Doe' },
    { value: 'jane', label: 'Jane Smith' },
    { value: 'bob', label: 'Bob Johnson' },
    { value: 'alice', label: 'Alice Williams' },
  ]
  
  const [text, setText] = useState('')
  
  return (
      <div>
        <Mention
          options={users}
          value={text}
          onChange={setText}
          placeholder="Type @ to mention someone"
        />
        <div className="mt-2 text-sm text-base-content/70">
          Text: {text || '(empty)'}
        </div>
      </div>
    )
}

export default App

Préfixe personnalisé

Utilisation du préfixe # pour les mentions de hashtag.

import { Mention } from 'asterui'
import { useState } from 'react'

function App() {
  const tags = [
    { value: 'react', label: 'React' },
    { value: 'typescript', label: 'TypeScript' },
    { value: 'javascript', label: 'JavaScript' },
    { value: 'webdev', label: 'Web Development' },
  ]
  
  const [text, setText] = useState('')
  
  return (
      <div>
        <Mention
          options={tags}
          value={text}
          onChange={setText}
          prefix="#"
          placeholder="Type # to add hashtag"
        />
        <div className="mt-2 text-sm text-base-content/70">
          Text: {text || '(empty)'}
        </div>
      </div>
    )
}

export default App

Déclencheurs multiples

Utilisation de plusieurs composants de mention avec différents préfixes.

import { Mention, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const users = [
    { value: 'john', label: 'John Doe' },
    { value: 'jane', label: 'Jane Smith' },
    { value: 'bob', label: 'Bob Johnson' },
    { value: 'alice', label: 'Alice Williams' },
  ]
  
  const tags = [
    { value: 'react', label: 'React' },
    { value: 'typescript', label: 'TypeScript' },
    { value: 'javascript', label: 'JavaScript' },
    { value: 'webdev', label: 'Web Development' },
  ]
  
  const [userText, setUserText] = useState('')
  const [tagText, setTagText] = useState('')
  
  return (
      <Space direction="vertical" size="md">
        <div>
          <label className="block mb-2 text-sm font-medium">
            Mention Users (@)
          </label>
          <Mention
            options={users}
            value={userText}
            onChange={setUserText}
            prefix="@"
            placeholder="Type @ to mention users"
          />
          <div className="mt-1 text-xs text-base-content/70">
            {userText || '(empty)'}
          </div>
        </div>
  
        <div>
          <label className="block mb-2 text-sm font-medium">
            Add Tags (#)
          </label>
          <Mention
            options={tags}
            value={tagText}
            onChange={setTagText}
            prefix="#"
            placeholder="Type # to add tags"
          />
          <div className="mt-1 text-xs text-base-content/70">
            {tagText || '(empty)'}
          </div>
        </div>
      </Space>
    )
}

export default App
PropriétéDescriptionTypePar défaut
optionsTableau d’options de mentionArray<{ value: string, label: string }>-
valueValeur contrôléestring-
onChangeCallback lorsque la valeur change(value: string) => void-
prefixCaractère qui déclenche les suggestions de mentionstring'@'
splitCaractère utilisé pour séparer les mentions dans la saisiestring-
placeholderTexte d’espace réservé de l’inputstring-
disabledDésactiver la saisie de mentionbooleanfalse
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
  • / - Naviguer à travers les suggestions de mention
  • Entrée - Sélectionner la mention en surbrillance
  • Échap - Fermer le menu déroulant de mention
  • Support complet de la navigation au clavier pour sélectionner les mentions
  • Attributs ARIA pour que les lecteurs d’écran annoncent les suggestions
  • Gestion du focus lors de l’ouverture et de la fermeture du menu déroulant
  • Indicateurs visuels clairs pour les éléments sélectionnés et en focus