Skip to content
API 风格:

Pagination ​

Navigation par pages : page précédente / numéros de page / page suivante / ellipse / changement de taille de page / saut de page / total. L'algorithme de contraction de la fenêtre de numéros est implémenté sous forme de fonctions pures dans la couche core, vérifiables par des tests exhaustifs.

Utilisation de base ​

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

<template>
  <LhPagination :total="120" />
</template>
vue
<script>
export default {}
</script>

<template>
  <LhPagination :total="120" />
</template>

Total et changement de taille de page ​

Total et changement de taille de page
vue
<script setup lang="ts">
</script>

<template>
  <LhPagination :total="480" show-total show-size-changer />
</template>
vue
<script>
export default {}
</script>

<template>
  <LhPagination :total="480" show-total show-size-changer />
</template>

Saut de page ​

Saut de page
vue
<script setup lang="ts">
</script>

<template>
  <LhPagination :total="480" show-total show-jumper />
</template>
vue
<script>
export default {}
</script>

<template>
  <LhPagination :total="480" show-total show-jumper />
</template>

Mode compact ​

Mode compact
vue
<script setup lang="ts">
</script>

<template>
  <LhPagination :total="480" simple show-jumper />
</template>
vue
<script>
export default {}
</script>

<template>
  <LhPagination :total="480" simple show-jumper />
</template>

Usage contrôlé ​

Usage contrôlé

Page actuelle : 2

vue
<script setup lang="ts">
import { ref } from 'vue'
const page = ref(2)
const pageSize = ref(20)
</script>

<template>
  <LhPagination v-model:current="page" :total="95" />
</template>
vue
<script>
export default {
  data() {
    return { page: 2, pageSize: 20 }
  },
}
</script>

<template>
  <LhPagination v-model:current="page" :total="95" />
</template>

Taille de page et désactivation ​

v-model:page-size contrôle la taille de page, page-sizes personnalise les options de taille ; disabled désactive l'ensemble de la pagination.

Taille de page et désactivation

Taille de page : 20

vue
<script setup lang="ts">
import { ref } from 'vue'
const pageSize = ref(20)
</script>

<template>
  <LhPagination
    v-model:page-size="pageSize"
    :total="480"
    show-size-changer
    :page-sizes="[10, 20, 50, 100]"
  />
  <LhPagination :total="480" disabled />
</template>
vue
<script>
export default {
  data() {
    return { pageSize: 20 }
  },
}
</script>

<template>
  <LhPagination
    v-model:page-size="pageSize"
    :total="480"
    show-size-changer
    :page-sizes="[10, 20, 50, 100]"
  />
  <LhPagination :total="480" disabled />
</template>

API Pagination ​

Props ​

PropDescriptionTypeValeur par défaut
totalNombre total de données (requis)number—
pageSizeTaille de pagenumber10
currentPage actuelle (v-model:current)number—
pageSizesOptions de taille de pagenumber[]() => [10, 20, 30, 40]
showTotalAfficher le nombre totalbooleanfalse
showSizeChangerAfficher le sélecteur de taille de pagebooleanfalse
showJumperAfficher le champ de saut de pagebooleanfalse
simpleMode compactbooleanfalse
disabledDésactivébooleanfalse
sxProps de mise en page sxLhSxProps—

Events ​

ÉvénementDescriptionCallback
update:currentLa page actuelle change (v-model)(page: number)
update:pageSizeLa taille de page change (v-model:pageSize)(size: number)
changeLe numéro de page change(page: number)
size-changeLa taille de page change(size: number)

Accessibilité ​

  • L'élément racine est un <nav aria-label="pagination">
  • Le bouton de la page actuelle reçoit automatiquement aria-current="page"
  • Chaque bouton de numéro de page ainsi que les boutons page précédente / suivante possèdent leur propre aria-label (issus du paquet de langue pagination.page / prev / next) ; les symboles « ‹ » et « › » sont masqués par aria-hidden
  • Le champ de saut de page possède un véritable <label> (issu du paquet de langue pagination.goto)
  • Le sélecteur de taille de page est un <select> natif, avec un aria-label (issu du paquet de langue pagination.sizeChangerLabel)
  • L'ellipse est un élément purement visuel aria-hidden, sans incidence sur la navigation clavier

Définitions de types ​

Ce composant exporte les structures de types TypeScript suivantes (extraites automatiquement de packages/components/pagination/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) :

LhPaginationProps
ts
export interface LhPaginationProps {
  /** Nombre total de données (requis) */
  total: number
  /** Taille de page */
  pageSize?: number
  /** Page actuelle (v-model:current) */
  current?: number
  /** Options de taille de page */
  pageSizes?: number[]
  /** Afficher le nombre total */
  showTotal?: boolean
  /** Afficher le sélecteur de taille de page */
  showSizeChanger?: boolean
  /** Afficher le champ de saut de page */
  showJumper?: boolean
  /** Mode compact */
  simple?: boolean
  /** Désactivé */
  disabled?: boolean
  /** Props de mise en page sx */
  sx?: LhSxProps
}

La beauté de la tradition, la fondation du code