Skip to content
API 风格:

Paginación ​

Navegación por páginas: página anterior / números de página / página siguiente / elipsis / cambio de tamaño de página / salto a una página / total. El algoritmo de contracción de la ventana de páginas está implementado como una función pura en la capa core, iterable por pruebas unitarias exhaustivas.

Uso básico ​

Uso básico
vue
<script setup lang="ts">
</script>

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

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

Total y cambio de tamaño de página ​

Total y cambio de tamaño de página
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>

Salto a una página ​

Salto a una página
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>

Modo compacto ​

Modo compacto
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>

Uso controlado ​

Uso controlado

Página actual: 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>

Tamaño de página y deshabilitación ​

v-model:page-size controla el tamaño de página; page-sizes personaliza las opciones de tamaño; disabled deshabilita toda la paginación.

Tamaño de página y deshabilitación

Tamaño de página: 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>

Pagination API ​

Props ​

PropDescripciónTipoPredeterminado
totalNúmero total de datos (obligatorio)number—
pageSizeTamaño de páginanumber10
currentPágina actual (v-model:current)number—
pageSizesOpciones de tamaño de páginanumber[]() => [10, 20, 30, 40]
showTotalSi se muestra el totalbooleanfalse
showSizeChangerSi se muestra el cambio de tamaño de páginabooleanfalse
showJumperSi se muestra la entrada de salto a una páginabooleanfalse
simpleModo compactobooleanfalse
disabledSi se deshabilitabooleanfalse
sxProps de maquetación rápida sxLhSxProps—

Eventos ​

EventoDescripciónParámetro
update:currentCambia la página actual (v-model)(page: number)
update:pageSizeCambia el tamaño de página (v-model:pageSize)(size: number)
changeCambia el número de página(page: number)
size-changeCambia el tamaño de página(size: number)

Accesibilidad ​

  • El elemento raíz es <nav aria-label="pagination">
  • El botón de la página actual recibe automáticamente aria-current="page"
  • Cada botón de página y los botones de página anterior/siguiente tienen su propio aria-label (del paquete de idioma pagination.page / prev / next); los símbolos puros «‹» y «›» quedan ocultos con aria-hidden
  • La entrada de salto a una página lleva un <label> real (del paquete de idioma pagination.goto)
  • El cambio de tamaño de página es un <select> nativo con aria-label (del paquete de idioma pagination.sizeChangerLabel)
  • La elipsis es un elemento puramente visual con aria-hidden, sin interferir en la navegación por teclado

Definiciones de tipos ​

Las estructuras de tipos TypeScript que exporta este componente son las siguientes (extraídas automáticamente de packages/components/pagination/src/types.ts y del código fuente de @lh-ui/share/core/*; despliega cada entrada para ver la definición completa; la descripción de los atributos está en la tabla de Props de arriba):

LhPaginationProps
ts
export interface LhPaginationProps {
  /** Número total de datos (obligatorio) */
  total: number
  /** Tamaño de página */
  pageSize?: number
  /** Página actual (v-model:current) */
  current?: number
  /** Opciones de tamaño de página */
  pageSizes?: number[]
  /** Si se muestra el total */
  showTotal?: boolean
  /** Si se muestra el cambio de tamaño de página */
  showSizeChanger?: boolean
  /** Si se muestra la entrada de salto a una página */
  showJumper?: boolean
  /** Modo compacto */
  simple?: boolean
  /** Si se deshabilita */
  disabled?: boolean
  /** Props de maquetación rápida sx */
  sx?: LhSxProps
}

La belleza de la tradición, el cimiento del código