VEUI

VEUI on GitHub
Play!EnglishEN

RadioButtonGroup 单选按钮组

示例

尺寸

可供选用的 ui 属性值:s / m

Normal size

Selected: -

Small size & Square shape

在 GitHub 上编辑此示例编辑
<template>
<article>
  <section>
    <h4>Normal size</h4>
    <veui-radio-button-group
      v-model="flavor"
      :items="flavors"
    />
    <p>Selected: {{ readable }}</p>
  </section>
  <section>
    <h4>Small size &amp; Square shape</h4>
    <veui-radio-button-group
      ui="s"
      :items="actions"
    >
      <template #item="{ value }">
        <veui-icon :name="value"/>
      </template>
    </veui-radio-button-group>
  </section>
</article>
</template>

<script>
import { RadioButtonGroup, Icon } from 'veui'
import 'veui-theme-dls-icons/clockwise'
import 'veui-theme-dls-icons/search'

export default {
  components: {
    'veui-radio-button-group': RadioButtonGroup,
    'veui-icon': Icon
  },
  data () {
    return {
      flavor: null,
      flavors: [
        { value: 'LATTE', label: 'Latte' },
        { value: 'MOCHA', label: 'Mocha' },
        { value: 'AMERICANO', label: 'Americano' }
      ],
      actions: [
        {
          label: '刷新',
          value: 'clockwise'
        },
        {
          label: '搜索',
          value: 'search'
        }
      ]
    }
  },
  computed: {
    flavorLabelMap () {
      return this.flavors.reduce((map, { value, label }) => {
        map[value] = label
        return map
      }, {})
    },
    readable () {
      return this.flavorLabelMap[this.flavor] || '-'
    }
  }
}
</script>

<style lang="less" scoped>
section {
  margin-bottom: 20px;
}

h4 {
  margin-top: 0;
}
</style>

简单样式

设置 ui 属性值:simple 来指定简单样式。

Selected: -

在 GitHub 上编辑此示例编辑
<template>
<article>
  <section>
    <veui-radio-button-group
      v-model="flavor"
      ui="simple"
      :items="flavors"
    />
    <p>Selected: {{ readable }}</p>
  </section>
</article>
</template>

<script>
import { RadioButtonGroup } from 'veui'

export default {
  components: {
    'veui-radio-button-group': RadioButtonGroup
  },
  data () {
    return {
      flavor: null,
      flavors: [
        { value: 'LATTE', label: 'Latte' },
        { value: 'MOCHA', label: 'Mocha' },
        { value: 'AMERICANO', label: 'Americano' }
      ]
    }
  },
  computed: {
    flavorLabelMap () {
      return this.flavors.reduce((map, { value, label }) => {
        map[value] = label
        return map
      }, {})
    },
    readable () {
      return this.flavorLabelMap[this.flavor] || '-'
    }
  }
}
</script>

<style lang="less" scoped>
section {
  margin-bottom: 20px;
}

h4 {
  margin-top: 0;
}
</style>

额外描述

在数据源的项目中设置 desc 字段或者通过 desc 插槽来指定额外描述。额外描述会在悬浮时显示。

desc field

desc slot

在 GitHub 上编辑此示例编辑
<template>
<article>
  <section>
    <h4><code>desc</code> field</h4>
    <veui-radio-button-group
      v-model="flavor"
      :items="flavors"
    />
  </section>
  <section>
    <h4><code>desc</code> slot</h4>
    <veui-radio-button-group
      v-model="flavor"
      :items="flavors"
    >
      <template #desc="{ desc, label }">
        {{ desc || `A description for ${label}` }}
      </template>
    </veui-radio-button-group>
  </section>
</article>
</template>

<script>
import { RadioButtonGroup } from 'veui'

export default {
  components: {
    'veui-radio-button-group': RadioButtonGroup
  },
  data () {
    return {
      flavor: null,
      flavors: [
        { value: 'LATTE', label: 'Latte', desc: 'A description for latte.' },
        { value: 'MOCHA', label: 'Mocha', desc: 'A description for mocha.' },
        { value: 'AMERICANO', label: 'Americano' }
      ]
    }
  }
}
</script>

<style lang="less" scoped>
section {
  margin-bottom: 20px;
}

h4 {
  margin-top: 0;
}
</style>

最小宽度

设置 ui 属性值:stable 来为选项启用最小宽度,使多行场景下布局更为稳定。

在 GitHub 上编辑此示例编辑
<template>
<article>
  <section>
    <veui-checkbox v-model="isStable">
      Stable layout
    </veui-checkbox>
  </section>
  <veui-radio-button-group
    v-model="flavor"
    :items="flavors"
    :ui="isStable ? 'stable' : ''"
  />
</article>
</template>

<script>
import { RadioButtonGroup, Checkbox } from 'veui'

export default {
  components: {
    'veui-radio-button-group': RadioButtonGroup,
    'veui-checkbox': Checkbox
  },
  data () {
    return {
      isStable: true,
      flavor: null,
      flavors: [
        { value: 'LATTE', label: 'Latte' },
        { value: 'MOCHA', label: 'Mocha' },
        { value: 'AMERICANO', label: 'Americano' }
      ]
    }
  }
}
</script>

<style lang="less" scoped>
section {
  margin-bottom: 20px;
}

h4 {
  margin-top: 0;
}
</style>

API

属性

名称类型默认值描述
uistring-

预设样式。

描述
s小尺寸样式。
m中尺寸样式。
simple简单样式。
stable稳定样式。会给所有按钮添加一个最小宽度以使布局更加稳定,多行之间更容易对齐。
itemsArray<Object>[]

单选按钮组数据源,项目类型为 { label, value, disabled, desc, ... }

名称类型描述
labelstring选项的文字说明。
value*选项对应的值。
disabledboolean选项是否为禁用。
descstring选项的额外描述信息。
value*-

v-model

items 中已选项的 value 列表。

disabledbooleanfalse是否为禁用状态。
readonlybooleanfalse是否为只读状态。

插槽

名称描述
item

按钮内文本区域。

默认内容:label 属性值。

名称类型描述
labelstring选项文本。
valuestring选项值。
indexnumber选项在 items 中的序号。
disabledboolean选项是否禁用。
descstring选项的额外描述信息。

另外,items 内数据项中除了上面描述的字段之外的其它字段也会自动通过 v-bind 进行绑定到插槽参数上。

desc按钮的额外描述信息,插槽参数同 item 插槽。

事件

名称描述
change

v-model

选中状态变化后触发,回调参数为 (value: *)value 为当前按钮组已选项内 value 字段的值。

自定义样式

名称类型默认值描述
--dls-checkbox-button-min-width<length>-ui 设置了 stable 时的选项最小宽度。
在 GitHub 上编辑此页面编辑
© Baidu, Inc. 2024