Skip to content
API 风格:

ترقيم الصفحات Pagination ​

تنقّل بين الصفحات: السابقة / أرقام الصفحات / التالية / العلامة الحذف / تبديل عدد العناصر / القفز إلى صفحة / الإجمالي. خوارزمية تقلّص نافذة أرقام الصفحات مطبّقة كدالة نقية في طبقة core، قابلة للاختبار بالاستنفاد.

الاستخدام الأساسي ​

الاستخدام الأساسي
vue
<script setup lang="ts">
</script>

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

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

الإجمالي وتبديل عدد العناصر ​

الإجمالي وتبديل عدد العناصر
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>

القفز إلى صفحة ​

القفز إلى صفحة
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>

الوضع المختصر ​

الوضع المختصر
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>

استخدام مح controlled ​

استخدام مح controlled

الصفحة الحالية: 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>

عدد العناصر لكل صفحة والتعطيل ​

يتحكم v-model:page-size في عدد العناصر لكل صفحة بشكل موجَّه، ويخصص page-sizes خيارات العدد؛ وdisabled يعطّل الترقيم بالكامل.

العدد والتعطيل

عدد العناصر لكل صفحة: 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 ​

اسم الخاصيةالوصفالنوعالافتراضي
totalإجمالي البيانات (مطلوب)number—
pageSizeعدد العناصر لكل صفحةnumber10
currentالصفحة الحالية (v-model:current)number—
pageSizesخيارات عدد العناصر لكل صفحةnumber[]() => [10, 20, 30, 40]
showTotalإظهار الإجماليbooleanfalse
showSizeChangerإظهار تبديل عدد العناصر لكل صفحةbooleanfalse
showJumperإظهار إدخال القفز إلى صفحةbooleanfalse
simpleوضع مدمجbooleanfalse
disabledتعطيلbooleanfalse
sxخصائص التخطيط السريع sxLhSxProps—

Events ​

اسم الحدثالوصفوسائط الاستدعاء
update:currentتتغير الصفحة الحالية (v-model)(page: number)
update:pageSizeيتغير عدد العناصر لكل صفحة (v-model:pageSize)(size: number)
changeيتغير رقم الصفحة(page: number)
size-changeيتغير عدد العناصر لكل صفحة(size: number)

إمكانية الوصول ​

  • العنصر الجذري هو <nav aria-label="pagination">
  • زر الصفحة الحالية يضبط aria-current="page" تلقائيًا
  • لكل زر صفحة، ولزري السابقة والتالية، aria-label مستقل (من حزمة اللغة pagination.page / prev / next)، والرمزان الخالصان «‹» و«›» مخفيان عبر aria-hidden
  • إدخال القفز إلى صفحة يحمل <label> حقيقيًا (من حزمة اللغة pagination.goto)
  • مبدّل عدد العناصر هو <select> أصلي مع aria-label (من حزمة اللغة pagination.sizeChangerLabel)
  • علامة الحذف عنصر عرض خالص بـ aria-hidden، لا تعيق التنقل بلوحة المفاتيح

تعريفات الأنواع ​

بنى TypeScript التي يصدّرها هذا المكوّن للخارج (مستخرجة تلقائيًا من packages/components/pagination/src/types.ts و@lh-ui/share/core/*؛ انقر كل عنصر لتوسيع تعريفه الكامل؛ لأوصاف الخصائص انظر جدول Props أعلاه):

LhPaginationProps
ts
export interface LhPaginationProps {
  /** إجمالي البيانات (مطلوب) */
  total: number
  /** عدد العناصر لكل صفحة */
  pageSize?: number
  /** الصفحة الحالية (v-model:current) */
  current?: number
  /** خيارات عدد العناصر لكل صفحة */
  pageSizes?: number[]
  /** إظهار الإجمالي */
  showTotal?: boolean
  /** إظهار تبديل عدد العناصر لكل صفحة */
  showSizeChanger?: boolean
  /** إظهار إدخال القفز إلى صفحة */
  showJumper?: boolean
  /** وضع مدمج */
  simple?: boolean
  /** تعطيل */
  disabled?: boolean
  /** خصائص التخطيط السريع sx */
  sx?: LhSxProps
}

جمال التقاليد، أساس الكود