Skip to content
API 风格:

تقييم Rate ​

تقييم بالنجوم: عرض للقراءة فقط / تسجيل تفاعلي / نصف نجمة / أحرف وعدد مخصّص.

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

الاستخدام الأساسي
vue
<script setup>
import { ref } from 'vue'
const rate1 = ref(3)
</script>

<template>
  <LhRate v-model="rate1" />
</template>
vue
<script>
export default {
  data() {
    return { rate1: 3 }
  },
}
</script>

<template>
  <LhRate v-model="rate1" />
</template>

نصف نجمة والقراءة فقط ​

نصف نجمة / للقراءة فقط
vue
<script setup>
import { ref } from 'vue'
const rate2 = ref(3.5)
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate2" allow-half />
    <LhRate :model-value="4.5" readonly allow-half show-score />
  </div>
</template>
vue
<script>
export default {
  data() {
    return { rate2: 3.5 }
  },
}
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate2" allow-half />
    <LhRate :model-value="4.5" readonly allow-half show-score />
  </div>
</template>

max يضبط العدد الإجمالي للنجوم، وdisabled يعطّل التفاعل، وcharacter يخصص رمز التقييم.

مخصص
vue
<script setup>
import { ref } from 'vue'
const rate3 = ref(8)
const rate4 = ref(3)
const rate5 = ref(4)
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate3" :max="10" />
    <LhRate v-model="rate4" disabled />
    <LhRate v-model="rate5" character="ج" />
  </div>
</template>
vue
<script>
export default {
  data() {
    return { rate3: 8, rate4: 3, rate5: 4 }
  },
}
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate3" :max="10" />
    <LhRate v-model="rate4" disabled />
    <LhRate v-model="rate5" character="ج" />
  </div>
</template>

API ​

LhRate Props ​

اسم الخاصيةالوصفالنوعالافتراضي
modelValueالتقييم الحالي (v-model مح controlled)number0
maxالحد الأقصى لعدد النجومnumber5
allowHalfالسماح بنصف نجمةbooleanfalse
readonlyللقراءة فقط (يخرج نصًا توصيفيًا للنجوم لقارئ الشاشة)booleanfalse
disabledمعطّلbooleanfalse
characterحرف مخصصstring—
showScoreإظهار نص الدرجةbooleanfalse
scoreTemplateقالب الدرجة (عنصر نائب {n})string—
sxخصائص التخطيط السريع sxLhSxProps—

Events ​

اسم الحدثالوصفوسائط الاستدعاء
update:modelValueيُطلق عند تغير التقييم، يُستخدم مع v-model(value: number)
changeيُطلق عند تغير التقييم (النقر وإدخال لوحة المفاتيح كلاهما يُطلقانه)(value: number)

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

  • الحالة التفاعلية تستخدم role="radiogroup"، وكل نجمة زر يمكن التركيز عليه فعلًا (roving tabindex)، تُعدّل الأسهم التقييم ويصفره المفتاحان Home/End أو يرفعانه للحد الأقصى
  • في وضع نصف نجمة، يتحرك إدخال لوحة المفاتيح بخطوات 0.5
  • حالة القراءة فقط تُخرج role="img" + aria-label="ن نجمة" لقارئ الشاشة
  • حلقة تركيز :focus-visible

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

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

LhRateProps
ts
export interface LhRateProps {
  /** التقييم الحالي (v-model مح controlled) */
  modelValue?: number
  /** الحد الأقصى لعدد النجوم */
  max?: number
  /** السماح بنصف نجمة */
  allowHalf?: boolean
  /** للقراءة فقط (يخرج نصًا توصيفيًا للنجوم لقارئ الشاشة) */
  readonly?: boolean
  disabled?: boolean
  /** حرف مخصص (الافتراضي ★) */
  character?: string
  /** إظهار نص الدرجة */
  showScore?: boolean
  /** قالب الدرجة (عنصر نائب {n}) */
  scoreTemplate?: string
  /** خصائص التخطيط السريع sx */
  sx?: LhSxProps
}

الثوابت ​

الثوابت العامة التي يستخدمها هذا المكوّن (يمكن النقر على العنصر الذي يحمل الاسم نفسه في عمودي «النوع / الافتراضي» بجدول Props للقفز إلى هنا):

LH_RATE_MAX_DEFAULT (مأخوذ من @lh-ui/share/core/rate)
ts
/** العدد الافتراضي للنجوم */
export const LH_RATE_MAX_DEFAULT = 5

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