import{o as a,a as n,y as t}from"./vue-libs.b44bc779.js";const l={class:"van-doc-markdown-body"},p=t(`

Radio

Intro

Single selection among multiple options.

Install

Register component globally via app.use, refer to Component Registration for more registration ways.

import { createApp } from 'vue';
import { RadioGroup, Radio } from 'vant';

const app = createApp();
app.use(Radio);
app.use(RadioGroup);

Usage

Basic Usage

Use v-model to bind the name of checked radio.

<van-radio-group v-model="checked">
  <van-radio name="1">Radio 1</van-radio>
  <van-radio name="2">Radio 2</van-radio>
</van-radio-group>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref('1');
    return { checked };
  },
};

Horizontal

<van-radio-group v-model="checked" direction="horizontal">
  <van-radio name="1">Radio 1</van-radio>
  <van-radio name="2">Radio 2</van-radio>
</van-radio-group>

Disabled

<van-radio-group v-model="checked" disabled>
  <van-radio name="1">Radio 1</van-radio>
  <van-radio name="2">Radio 2</van-radio>
</van-radio-group>

Custom Shape

<van-radio-group v-model="checked">
  <van-radio name="1" shape="square">Radio 1</van-radio>
  <van-radio name="2" shape="square">Radio 2</van-radio>
</van-radio-group>

Custom Color

<van-radio-group v-model="checked">
  <van-radio name="1" checked-color="#ee0a24">Radio 1</van-radio>
  <van-radio name="2" checked-color="#ee0a24">Radio 2</van-radio>
</van-radio-group>

Custom Icon Size

<van-radio-group v-model="checked">
  <van-radio name="1" icon-size="24px">Radio 1</van-radio>
  <van-radio name="2" icon-size="24px">Radio 2</van-radio>
</van-radio-group>

Custom Icon

Use icon slot to custom icon

<van-radio-group v-model="checked">
  <van-radio name="1">
    Radio 1
    <template #icon="props">
      <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
    </template>
  </van-radio>
  <van-radio name="2">
    Radio 2
    <template #icon="props">
      <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
    </template>
  </van-radio>
</van-radio-group>

<style>
  .img-icon {
    height: 20px;
  }
</style>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref('1');
    return {
      checked,
      activeIcon:
        'https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png',
      inactiveIcon:
        'https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png',
    };
  },
};

Disable Label Click

<van-radio-group v-model="checked">
  <van-radio name="1" label-disabled>Radio 1</van-radio>
  <van-radio name="2" label-disabled>Radio 2</van-radio>
</van-radio-group>

Inside a Cell

<van-radio-group v-model="checked">
  <van-cell-group inset>
    <van-cell title="Radio 1" clickable @click="checked = '1'">
      <template #right-icon>
        <van-radio name="1" />
      </template>
    </van-cell>
    <van-cell title="Radio 2" clickable @click="checked = '2'">
      <template #right-icon>
        <van-radio name="2" />
      </template>
    </van-cell>
  </van-cell-group>
</van-radio-group>

Types

The component exports the following type definitions:

import type {
  RadioProps,
  RadioShape,
  RadioGroupProps,
  RadioLabelPosition,
  RadioGroupDirection,
} from 'vant';

API

Radio Props

AttributeDescriptionTypeDefault
nameRadio name, usually a unique string or numberany-
shapeCan be set to squarestringround
disabledWhether to disable radiobooleanfalse
label-disabledWhether to disable label clickbooleanfalse
label-positionCan be set to leftstringright
icon-sizeIcon sizenumber | string20px
checked-colorChecked colorstring#1989fa

RadioGroup Props

AttributeDescriptionTypeDefault
v-modelName of checked radioany-
disabledDisable all radiosbooleanfalse
directionDirection, can be set to horizontalstringvertical
icon-sizeIcon size of all radiosnumber | string20px
checked-colorChecked color of all radiosstring#1989fa

Radio Events

EventDescriptionParameters
clickEmitted when radio is clickedevent: MouseEvent

RadioGroup Events

EventDescriptionParameters
changeEmitted when value changedname: string

Radio Slots

NameDescriptionSlotProps
defaultCustom label-
iconCustom icon{ checked: boolean, disabled: boolean }

Theming

CSS Variables

The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.

NameDefault ValueDescription
--van-radio-size20px-
--van-radio-border-colorvar(--van-gray-5)-
--van-radio-transition-durationvar(--van-animation-duration-fast)-
--van-radio-label-marginvar(--van-padding-xs)-
--van-radio-label-colorvar(--van-text-color)-
--van-radio-checked-icon-colorvar(--van-primary-color)-
--van-radio-disabled-icon-colorvar(--van-gray-5)-
--van-radio-disabled-label-colorvar(--van-text-color-3)-
--van-radio-disabled-background-colorvar(--van-border-color)-
`,22),e=[p],i={__name:"README",setup(c,{expose:s}){return s({frontmatter:{}}),(o,r)=>(a(),n("div",l,e))}};export{i as default};