Skip to content
API 风格:

Barre de progression ​

LhProgress affiche la progression d'une tâche ou le taux de remplissage d'une capacité, sous forme linéaire ou circulaire, avec couleurs et textes personnalisables.

Utilisation de base ​

Barre de progression linéaire
60%
vue
<script setup lang="ts">
</script>

<template>
  <LhProgress :percentage="60" />
</template>
vue
<script>
export default {}
</script>

<template>
  <LhProgress :percentage="60" />
</template>

États ​

normal / success / warning / exception, passage automatique à success à 100
100%
80%
40%
vue
<script setup lang="ts">
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px">
    <LhProgress :percentage="100" />
    <LhProgress :percentage="80" status="warning" />
    <LhProgress :percentage="40" status="exception" />
  </div>
</template>
vue
<script>
export default {}
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px">
    <LhProgress :percentage="100" />
    <LhProgress :percentage="80" status="warning" />
    <LhProgress :percentage="40" status="exception" />
  </div>
</template>

Couleurs et textes personnalisés ​

color accepte une chaîne ou une fonction, format personnalise le libellé
55%
70 points
vue
<script setup lang="ts">
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px">
    <LhProgress :percentage="55" color="#B8860B" />
    <LhProgress
      :percentage="70"
      :color="(p: number) => `hsl(${p * 1.2}, 60%, 45%)`"
      :format="(p: number) => `${p} points`"
    />
  </div>
</template>
vue
<script>
export default {}
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px">
    <LhProgress :percentage="55" color="#B8860B" />
    <LhProgress
      :percentage="70"
      :color="(p: number) => `hsl(${p * 1.2}, 60%, 45%)`"
      :format="(p: number) => `${p} points`"
    />
  </div>
</template>

Progression circulaire ​

type défini sur circle
75%
100%
vue
<script setup lang="ts">
</script>

<template>
  <div style="display: flex; align-items: center; gap: 24px">
    <LhProgress type="circle" :percentage="75" />
    <LhProgress type="circle" :percentage="100" :width="100" :stroke-width="8" />
  </div>
</template>
vue
<script>
export default {}
</script>

<template>
  <div style="display: flex; align-items: center; gap: 24px">
    <LhProgress type="circle" :percentage="75" />
    <LhProgress type="circle" :percentage="100" :width="100" :stroke-width="8" />
  </div>
</template>

Sans texte ​

showText défini sur false
vue
<script setup lang="ts">
</script>

<template>
  <LhProgress :percentage="45" :show-text="false" />
</template>
vue
<script>
export default {}
</script>

<template>
  <LhProgress :percentage="45" :show-text="false" />
</template>

API ​

Props ​

PropDescriptionTypeValeur par défaut
percentagePourcentage de progression, automatiquement ramené dans [0, 100]number0
typeForme"line" | "circle"'line'
statusÉtat, en normal la valeur 100 bascule automatiquement sur success"normal" | "success" | "warning" | "exception"'normal'
colorCouleur de la barre : chaîne ou fonction renvoyant une couleur selon le pourcentagestring | ((percentage: number) => string)—
strokeWidthLargeur du trait en px (hauteur pour line, épaisseur du trait pour circle)number6
widthLargeur du canevas en mode circulaire, en pxnumber126
showTextAfficher le textebooleantrue
formatFormatage personnalisé du texte(percentage: number) => string—
sxProps de mise en page sxLhSxProps—

Slots ​

SlotDescriptionPortée
textContenu textuel personnalisé{ percentage }

Accessibilité ​

  • L'élément racine porte role="progressbar" ainsi que aria-valuemin / aria-valuemax / aria-valuenow, conformément au pattern progressbar de WAI-ARIA
  • aria-valuetext reste synchronisé avec le libellé visible : pourcentage par défaut, ou texte formaté lorsque format est fourni (ex. « 42 points »)
  • La valeur ramenée dans l'intervalle est synchronisée avec aria-valuenow, évitant tout annonce hors plage

Définitions de types ​

Ce composant exporte les structures de types TypeScript suivantes (extraites automatiquement de packages/components/progress/src/types.ts et des sources @lh-ui/share/core/* ; cliquez sur chaque entrée pour déplier la définition complète ; la description des props se trouve dans le tableau Props ci-dessus) :

LhProgressProps
ts
export interface LhProgressProps {
  /** Pourcentage de progression 0-100 (automatiquement ramené dans l'intervalle) */
  percentage: number
  type?: LhProgressType
  status?: LhProgressStatus
  /** Couleur de la barre : chaîne ou fonction renvoyant une couleur selon le pourcentage */
  color?: string | ((percentage: number) => string)
  /** Largeur du trait en px (hauteur pour line, épaisseur du trait pour circle) */
  strokeWidth?: number
  /** Largeur du canevas en mode circulaire, en px */
  width?: number
  showText?: boolean
  /** Formatage personnalisé du texte */
  format?: (percentage: number) => string
  /** Props de mise en page sx */
  sx?: LhSxProps
}
LhProgressType (provenant de @lh-ui/share/core/progress)
ts
export type LhProgressType = 'line' | 'circle'
LhProgressStatus (provenant de @lh-ui/share/core/progress)
ts
export type LhProgressStatus = 'normal' | 'success' | 'warning' | 'exception'

La beauté de la tradition, la fondation du code