Skip to content

Checkbox

Checkbox component is used for multiple selections among options. It supports standalone use or use with CheckboxGroup, and supports check-all / indeterminate states.

Platform Compatibility

App(vue)App(nvue)H5Mini Program

Basic Usage

Use Checkbox standalone, bind the checked state via v-model.

html
<template>
  <seeCheckbox v-model="checked">Option</seeCheckbox>
</template>

<script setup>
import { ref } from 'vue'

const checked = ref(false)
</script>

CheckboxGroup

Use seeCheckboxGroup component to wrap multiple seeCheckbox components. Bind the selected value array via v-model.

html
<template>
  <seeCheckboxGroup v-model="checkedList">
    <seeCheckbox label="option1">Option 1</seeCheckbox>
    <seeCheckbox label="option2">Option 2</seeCheckbox>
    <seeCheckbox label="option3">Option 3</seeCheckbox>
  </seeCheckboxGroup>

  <text>Selected values: {{ checkedList }}</text>
</template>

<script setup>
import { ref } from 'vue'

const checkedList = ref(['option1'])
</script>

Indeterminate State

Implement the indeterminate state via the isIndeterminate property, used together with CheckboxGroup's max property.

html
<template>
  <seeCheckbox
    v-model="isAllChecked"
    :is-indeterminate="isIndeterminate"
    @change="handleCheckAll"
  >
    Check All
  </seeCheckbox>

  <seeCheckboxGroup v-model="checkedList" @change="handleCheckedChange">
    <seeCheckbox label="apple">Apple</seeCheckbox>
    <seeCheckbox label="banana">Banana</seeCheckbox>
    <seeCheckbox label="orange">Orange</seeCheckbox>
  </seeCheckboxGroup>
</template>

<script setup>
import { ref, computed } from 'vue'

const checkedList = ref(['apple'])
const allOptions = ['apple', 'banana', 'orange']

const isAllChecked = computed(() => {
  return checkedList.value.length === allOptions.length
})

const isIndeterminate = computed(() => {
  return checkedList.value.length > 0 && checkedList.value.length < allOptions.length
})

const handleCheckAll = (val) => {
  checkedList.value = val ? [...allOptions] : []
}

const handleCheckedChange = (value) => {
  const checkedCount = value.length
  isAllChecked.value = checkedCount === allOptions.length
}
</script>

Min / Max Selection

Limit the number of selectable items via max and min properties.

html
<template>
  <seeCheckboxGroup v-model="checkedList" :max="3" :min="1">
    <seeCheckbox label="option1">Option 1</seeCheckbox>
    <seeCheckbox label="option2">Option 2</seeCheckbox>
    <seeCheckbox label="option3">Option 3</seeCheckbox>
    <seeCheckbox label="option4">Option 4</seeCheckbox>
    <seeCheckbox label="option5">Option 5</seeCheckbox>
  </seeCheckboxGroup>

  <text>Min 1, Max 3 selections</text>
</template>

<script setup>
import { ref } from 'vue'

const checkedList = ref(['option1'])
</script>

Sizes

Set checkbox size via size property. Supports small, default, large.

html
<template>
  <seeCheckboxGroup v-model="checkedList" size="small">
    <seeCheckbox label="option1">Small size</seeCheckbox>
    <seeCheckbox label="option2">Small size</seeCheckbox>
  </seeCheckboxGroup>

  <seeCheckboxGroup v-model="checkedList" size="default">
    <seeCheckbox label="option1">Default size</seeCheckbox>
    <seeCheckbox label="option2">Default size</seeCheckbox>
  </seeCheckboxGroup>

  <seeCheckboxGroup v-model="checkedList" size="large">
    <seeCheckbox label="option1">Large size</seeCheckbox>
    <seeCheckbox label="option2">Large size</seeCheckbox>
  </seeCheckboxGroup>
</template>

Border Style

Set isBorder property to true to display border style.

html
<template>
  <seeCheckboxGroup v-model="checkedList" is-border>
    <seeCheckbox label="option1">Option 1</seeCheckbox>
    <seeCheckbox label="option2">Option 2</seeCheckbox>
    <seeCheckbox label="option3">Option 3</seeCheckbox>
  </seeCheckboxGroup>
</template>

<script setup>
import { ref } from 'vue'

const checkedList = ref([])
</script>

Inline Layout

Set isInline property to true to arrange checkboxes inline.

html
<template>
  <seeCheckboxGroup v-model="checkedList" is-inline>
    <seeCheckbox label="option1">Option 1</seeCheckbox>
    <seeCheckbox label="option2">Option 2</seeCheckbox>
    <seeCheckbox label="option3">Option 3</seeCheckbox>
  </seeCheckboxGroup>
</template>

Disabled State

Set disabled state via isDisabled property. Can be set on Checkbox or CheckboxGroup.

html
<template>
  <!-- Single disabled -->
  <seeCheckbox v-model="checked" is-disabled>Disabled option</seeCheckbox>

  <!-- Entire group disabled -->
  <seeCheckboxGroup v-model="checkedList" is-disabled>
    <seeCheckbox label="option1">Option 1</seeCheckbox>
    <seeCheckbox label="option2">Option 2</seeCheckbox>
  </seeCheckboxGroup>
</template>

Custom Color

Set the checked color via checkedColor property.

html
<template>
  <seeCheckboxGroup v-model="checkedList" checked-color="#07c160">
    <seeCheckbox label="option1">Option 1</seeCheckbox>
    <seeCheckbox label="option2">Option 2</seeCheckbox>
  </seeCheckboxGroup>
</template>

API

Checkbox Props

ParameterDescriptionTypeDefaultPlatform
modelValueBound value (standalone use)booleanfalse-
labelOption value (used in CheckboxGroup)string | number | boolean--
isDisabledWhether disabledbooleanfalse-
isIndeterminateWhether in indeterminate statebooleanfalse-
sizeSizestring'default'-
isBorderWhether to show borderbooleanfalse-
checkedColorColor when checkedstring''-
nameForm field namestring''-

CheckboxGroup Props

ParameterDescriptionTypeDefaultPlatform
modelValueBound value(string | number | boolean)[][]-
isDisabledWhether disabledbooleanfalse-
isReadonlyWhether readonlybooleanfalse-
maxMaximum number of selectable itemsnumber--
minMinimum number of selectable itemsnumber--
sizeSizestring'default'-
isBorderWhether to show borderbooleanfalse-
isInlineWhether to arrange inlinebooleanfalse-
checkedColorColor when checkedstring''-
nameForm field namestring''-

Events

EventDescriptionTypePlatform
onChangeTriggered when value changesCheckbox: (value: boolean) => void; Group: (value: (string | number | boolean)[]) => void-

Slots

SlotDescription
defaultChild nodes of CheckboxGroup (Checkbox components)

Liao ICP No. 2025070134