组件/FlatRadio 平铺选择器
自 2.4.7BETA

FlatRadio 平铺选择器

用于 2-5 个选项的平铺选择(`TxFlatRadio` + `TxFlatRadioItem`)。提供指示器滑动动画、键盘导航和完整的 TypeScript 类型支持。

该页面由 AI 迁移生成,请谨慎使用

内容已迁移完成,但仍建议结合源码和人工评审结果使用。

FlatRadio 平铺选择器

用于 2-5 个选项的平铺选择(TxFlatRadio + TxFlatRadioItem)。相比下拉选择器操作更直接,相比 Radio 更紧凑。

基础用法

最简单的平铺选择器,适合少量选项的场景。

FlatRadio (basic)

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const value = ref<'light' | 'dark' | 'auto'>('light')
</script>

<template>
  <TxFlatRadio v-model="value">
    <TxFlatRadioItem value="light" label="Light" />
    <TxFlatRadioItem value="dark" label="Dark" />
    <TxFlatRadioItem value="auto" label="Auto" />
  </TxFlatRadio>
</template>

尺寸

支持 smmd(默认)、lg 三种尺寸。

FlatRadio (sizes)

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const sm = ref('a')
const md = ref('a')
const lg = ref('a')
</script>

<template>
  <TxFlatRadio v-model="sm" size="sm">
    <TxFlatRadioItem value="a" label="Option A" />
    <TxFlatRadioItem value="b" label="Option B" />
    <TxFlatRadioItem value="c" label="Option C" />
  </TxFlatRadio>

  <TxFlatRadio v-model="md" size="md">
    <TxFlatRadioItem value="a" label="Option A" />
    <TxFlatRadioItem value="b" label="Option B" />
    <TxFlatRadioItem value="c" label="Option C" />
  </TxFlatRadio>

  <TxFlatRadio v-model="lg" size="lg">
    <TxFlatRadioItem value="a" label="Option A" />
    <TxFlatRadioItem value="b" label="Option B" />
    <TxFlatRadioItem value="c" label="Option C" />
  </TxFlatRadio>
</template>

图标

通过 icon 属性可以为选项添加图标(CSS class 方式,如 UnoCSS 图标)。

FlatRadio (icon)

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const value = ref('grid')
</script>

<template>
  <TxFlatRadio v-model="value">
    <TxFlatRadioItem value="grid" icon="i-carbon-grid" label="Grid" />
    <TxFlatRadioItem value="list" icon="i-carbon-list" label="List" />
    <TxFlatRadioItem value="kanban" icon="i-carbon-column" label="Kanban" />
  </TxFlatRadio>
</template>

禁用状态

支持整组禁用和单项禁用。

FlatRadio (disabled)

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const value = ref('a')
</script>

<template>
  <!-- 单项禁用 -->
  <TxFlatRadio v-model="value">
    <TxFlatRadioItem value="a" label="Option A" />
    <TxFlatRadioItem value="b" label="Option B" disabled />
    <TxFlatRadioItem value="c" label="Option C" />
  </TxFlatRadio>

  <!-- 整组禁用 -->
  <TxFlatRadio v-model="value" disabled>
    <TxFlatRadioItem value="a" label="Option A" />
    <TxFlatRadioItem value="b" label="Option B" />
    <TxFlatRadioItem value="c" label="Option C" />
  </TxFlatRadio>
</template>

带边框

设置 bordered 属性可以为选择器添加外边框。

FlatRadio (bordered)

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const value = ref('a')
</script>

<template>
  <TxFlatRadio v-model="value" bordered>
    <TxFlatRadioItem value="a" label="Option A" />
    <TxFlatRadioItem value="b" label="Option B" />
    <TxFlatRadioItem value="c" label="Option C" />
  </TxFlatRadio>
</template>

键盘导航

容器聚焦后可通过键盘控制:

按键行为
/ 选中下一个非禁用项(循环)
/ 选中上一个非禁用项(循环)
Home选中第一个非禁用项
End选中最后一个非禁用项

API

TxFlatRadio

Props

属性名说明类型默认值
modelValue / v-model绑定值string | number-
disabled是否禁用(整组)booleanfalse
size尺寸'sm' | 'md' | 'lg''md'
bordered是否显示外边框booleanfalse

Events

事件名说明回调参数
update:modelValue值更新时触发(value: string | number) => void
change值变化时触发(value: string | number) => void

Slots

插槽名说明
defaultTxFlatRadioItem 子组件

TxFlatRadioItem

Props

属性名说明类型默认值
value当前项的值string | number-
label显示文本string-
icon图标 CSS classstring-
disabled是否禁用(单项)booleanfalse

Slots

插槽名说明
default自定义内容(覆盖 label)
icon自定义图标