Skip to content
API 风格:

مفتاح مقسم Segmented ​

تبديل خيارات متعارضة، لسيناريوهات مبدّل العروض.

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

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

<template>
  <LhSegmented v-model="view" :options="['قائمة', 'بطاقة', 'جدول']" />
</template>
vue
<script>
export default {
  data() {
    return { view: 'قائمة' }
  },
}
</script>

<template>
  <LhSegmented v-model="view" :options="['قائمة', 'بطاقة', 'جدول']" />
</template>

عناصر معطّلة وblock ​

عنصر معطّل
vue
<script setup>
import { ref } from 'vue'
const seg = ref('day')
</script>

<template>
  <LhSegmented
    v-model="seg"
    block
    :options="[{ label: 'يوم', value: 'day' }, { label: 'أسبوع', value: 'week' }, { label: 'شهر', value: 'month', disabled: true }]"
  />
</template>
vue
<script>
export default {
  data() {
    return { seg: 'day' }
  },
}
</script>

<template>
  <LhSegmented
    v-model="seg"
    block
    :options="[{ label: 'يوم', value: 'day' }, { label: 'أسبوع', value: 'week' }, { label: 'شهر', value: 'month', disabled: true }]"
  />
</template>

disabled على مستوى المكوّن يعطّل المبدّد بالكامل.

تعطيل المجموعة كلها
vue
<script setup>
import { ref } from 'vue'
const segDisabled = ref('أ')
</script>

<template>
  <LhSegmented
    v-model="segDisabled"
    disabled
    :options="['أ', 'ب', 'ج']"
  />
</template>
vue
<script>
export default {
  data() {
    return { segDisabled: 'أ' }
  },
}
</script>

<template>
  <LhSegmented
    v-model="segDisabled"
    disabled
    :options="['أ', 'ب', 'ج']"
  />
</template>

API ​

LhSegmented Props ​

اسم الخاصيةالوصفالنوعالافتراضي
modelValueالقيمة الحالية (v-model مح controlled)string | number—
optionsالخيارات (صيغة سلسلة مختصرة أو كائنات)[LhSegmentedInput](#type-LhSegmentedInput)[]—
disabledتعطيل المجموعة كلهاbooleanfalse
blockملء الحاويةbooleanfalse
sxخصائص التخطيط السريع sxLhSxProps—

Events ​

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

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

  • role="radiogroup" + خيارات role="radio" + aria-checked
  • roving tabindex: مفاتيح الأسهم تنقل (متخطية العناصر المعطّلة، مع الدوران بين الطرفين)، وموضع التركيز وحده القابل للوصول عبر Tab
  • لون الخلفية للعنصر المختار ينتقل عبر متغيّر CSS

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

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

LhSegmentedProps
ts
export interface LhSegmentedProps {
  /** القيمة الحالية (v-model مح controlled) */
  modelValue?: LhSegmentedValue
  /** الخيارات (صيغة سلسلة مختصرة أو كائنات) */
  options: LhSegmentedInput[]
  disabled?: boolean
  /** ملء الحاوية */
  block?: boolean
  /** خصائص التخطيط السريع sx */
  sx?: LhSxProps
}
LhSegmentedValue (مأخوذ من @lh-ui/share/core/segmented)
ts
/** نوع قيمة الخيار */
export type LhSegmentedValue = string | number
LhSegmentedInput (مأخوذ من @lh-ui/share/core/segmented)
ts
/** خيار الإدخال (صيغة سلسلة مختصرة أو كائن) */
export type LhSegmentedInput = LhSegmentedValue | LhSegmentedOption
LhSegmentedOption (مأخوذ من @lh-ui/share/core/segmented)
ts
/** شكل كائن الخيار */
export interface LhSegmentedOption {
  label: string
  value: LhSegmentedValue
  disabled?: boolean
}

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