Skip to content
API 风格:

Fil d'Ariane ​

Navigation de chemin hiérarchique. Basé sur la sémantique native nav + ol, la page courante est automatiquement marquée aria-current="page" et n'est pas cliquable ; séparateur personnalisé et repli en cas de dépassement sont pris en charge.

Utilisation de base ​

Utilisation de base
vue
<script setup lang="ts">
</script>

<template>
  <LhBreadcrumb>
    <LhBreadcrumbItem>Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem>Composants</LhBreadcrumbItem>
    <LhBreadcrumbItem>Breadcrumb</LhBreadcrumbItem>
  </LhBreadcrumb>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhBreadcrumb>
    <LhBreadcrumbItem>Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem>Composants</LhBreadcrumbItem>
    <LhBreadcrumbItem>Breadcrumb</LhBreadcrumbItem>
  </LhBreadcrumb>
</template>
Navigation par liens
Mode replace
vue
<script setup lang="ts">
</script>

<template>
  <!-- Navigation par liens -->
  <LhBreadcrumb>
    <LhBreadcrumbItem to="/">Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/guide">Guide</LhBreadcrumbItem>
    <LhBreadcrumbItem>Page actuelle</LhBreadcrumbItem>
  </LhBreadcrumb>
  <!-- Mode replace -->
  <LhBreadcrumb>
    <LhBreadcrumbItem to="/" replace>Remplacer l'historique</LhBreadcrumbItem>
    <LhBreadcrumbItem>Page actuelle</LhBreadcrumbItem>
  </LhBreadcrumb>
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- Navigation par liens -->
  <LhBreadcrumb>
    <LhBreadcrumbItem to="/">Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/guide">Guide</LhBreadcrumbItem>
    <LhBreadcrumbItem>Page actuelle</LhBreadcrumbItem>
  </LhBreadcrumb>
  <!-- Mode replace -->
  <LhBreadcrumb>
    <LhBreadcrumbItem to="/" replace>Remplacer l'historique</LhBreadcrumbItem>
    <LhBreadcrumbItem>Page actuelle</LhBreadcrumbItem>
  </LhBreadcrumb>
</template>

Les items recevant to sont rendus en <a> ; lorsque vue-router est détecté, la navigation se fait par le routeur (replace contrôle le remplacement de l'historique), sinon la navigation native est conservée. Le dernier item est toujours rendu sous forme de texte représentant la page courante.

Séparateur personnalisé ​

Séparateur personnalisé
vue
<script setup lang="ts">
</script>

<template>
  <LhBreadcrumb separator="·">
    <LhBreadcrumbItem to="/">Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/components">Composants</LhBreadcrumbItem>
    <LhBreadcrumbItem>
      <template #separator>➜</template>
      Séparateur dédié
    </LhBreadcrumbItem>
  </LhBreadcrumb>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhBreadcrumb separator="·">
    <LhBreadcrumbItem to="/">Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/components">Composants</LhBreadcrumbItem>
    <LhBreadcrumbItem>
      <template #separator>➜</template>
      Séparateur dédié
    </LhBreadcrumbItem>
  </LhBreadcrumb>
</template>

Repli en cas de dépassement ​

Repli en cas de dépassement
vue
<script setup lang="ts">
</script>

<template>
  <LhBreadcrumb :max-items="3">
    <LhBreadcrumbItem to="/">Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/a">Dossier A</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/a/b">Sous-dossier B</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/a/b/c">Sous-dossier C</LhBreadcrumbItem>
    <LhBreadcrumbItem>Page actuelle</LhBreadcrumbItem>
  </LhBreadcrumb>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhBreadcrumb :max-items="3">
    <LhBreadcrumbItem to="/">Accueil</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/a">Dossier A</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/a/b">Sous-dossier B</LhBreadcrumbItem>
    <LhBreadcrumbItem to="/a/b/c">Sous-dossier C</LhBreadcrumbItem>
    <LhBreadcrumbItem>Page actuelle</LhBreadcrumbItem>
  </LhBreadcrumb>
</template>

Au-delà de maxItems, le premier item, des points de suspension et les derniers items sont conservés ; cliquez sur les points de suspension pour tout déplier.

Props ​

PropriétéDescriptionTypeValeur par défaut
separatorCaractère séparateurstring'/'
maxItemsNombre maximal d'items visibles (premier item + points de suspension + derniers items), repli au-delànumber0
sxPropriétés de mise en page rapide sxLhSxProps—

LhBreadcrumbItem Props ​

PropriétéDescriptionTypeValeur par défaut
toAdresse de navigation ; rendu sous forme de lien si présent et hors dernier itemstring—
replaceUtiliser le mode replace lors de la navigation via vue-routerbooleanfalse

Slots ​

SlotDescriptionComposant concerné
defaultItems du fil d'ArianeLhBreadcrumb
defaultContenu de l'itemLhBreadcrumbItem
separatorSéparateur personnalisé (remplace le separator global)LhBreadcrumbItem

Accessibilité ​

  • L'élément racine est un <nav aria-label> (libellé issu du pack de langue breadcrumb.label) enveloppant un <ol>, l'ordre sémantique correspond à l'ordre du document
  • La page courante (dernier item) est rendue en texte et reçoit automatiquement aria-current="page", sans possibilité de clic même si to est renseigné
  • Le séparateur est aria-hidden="true", il n'entre pas dans l'arbre d'accessibilité
  • Les points de suspension de repli sont un véritable <button>, dont l'aria-label est issu du pack de langue breadcrumb.more ; un clic déplie l'ensemble

Définitions de types ​

Les structures de types TypeScript exportées par ce composant sont présentées ci-dessous (extraction automatique à partir des sources packages/components/breadcrumb/src/types.ts et @lh-ui/share/core/* ; cliquez sur chaque entrée pour afficher la définition complète ; la description des propriétés se trouve dans le tableau Props ci-dessus) :

LhBreadcrumbProps
ts
export interface LhBreadcrumbProps {
  /** Caractère séparateur */
  separator?: string
  /** Nombre maximal d'items visibles (premier item + points de suspension + derniers items), repli au-delà ; 0 ou absent signifie aucun repli */
  maxItems?: number
  /** Propriétés de mise en page rapide sx */
  sx?: LhSxProps
}
LhBreadcrumbItemProps
ts
export interface LhBreadcrumbItemProps {
  /** Adresse de navigation ; rendu sous forme de lien si présent et hors dernier item (navigation par le routeur lorsque vue-router est détecté, sinon navigation native) */
  to?: string
  /** Utiliser le mode replace lors de la navigation via vue-router (sans effet en l'absence de routeur) */
  replace?: boolean
}

La beauté de la tradition, la fondation du code