Checkbox

A control that toggles between two options, checked or unchecked.

Default

isChecked: false
code
<script setup>
const checked = ref(false)
</script>

<template>
  <div>isChecked: {{ checked }}</div>
  <PCheckbox v-model="checked" label="Checkbox" />
</template>

Group

checkedValues: [ "one" ]
isCheckedAll: false
isCheckedPartial: false
code
<script setup>
import { shallowRef, nextTick } from 'vue'

const value = shallowRef(['one'])
const checkboxGroupRef = shallowRef()

const options = [
  { label: 'Options 1', value: 'one' },
  { label: 'Options 2', value: 'two' },
  { label: 'Options 3', value: 'three' },
]

const isCheckedAll = shallowRef(false)
const isCheckedPartial = shallowRef(false)

watch(
  () => value.value,
  (v) => {
    if (!checkboxGroupRef.value) {
      return
    }

    nextTick(() => {
      isCheckedAll.value = checkboxGroupRef.value.isCheckedAll()
      isCheckedPartial.value = checkboxGroupRef.value.isCheckedPartial()
    })
  },
  { deep: 1, immediate: true }
)
</script>

<template>
  <div class="mb-2">checkedValues: {{ value }}</div>
  <div class="mb-2">isCheckedAll: {{ isCheckedAll }}</div>
  <div class="mb-2">isCheckedPartial: {{ isCheckedPartial }}</div>

  <PCheckboxGroup
    ref="checkboxGroupRef"
    v-model="value"
    :options="options"
    gap="3"
    direction="col"
  />

  <PCheckboxGroup
    v-model="value"
    :options="options"
    gap="3"
    disabled
    direction="col"
    class="mt-6"
  />
</template>

Disabled

code
<script setup>
const checked = ref(false)
const checked2 = ref(true)
</script>

<template>
  <PStack direction="col">
    <PCheckbox v-model="checked" label="Disabled" disabled />
    <PCheckbox v-model="checked2" label="Disabled Checked" disabled />
    <PCheckbox v-model="checked" label="Disabled Indeterminate" disabled indeterminate />
  </PStack>
</template>

Indeterminate

code
<script setup>
const checked = ref(false)
</script>

<template>
  <PCheckbox v-model="checked" label="Checkbox" indeterminate />
</template>

Checkbox standalone

Standalone unlabelled checkbox input for use in custom UI.

Option 1
code
<script setup>
import { ref } from 'vue'

const value = ref(false)
</script>

<template>
  <PStack align="center">
    <span>Option 1</span>
    <PCheckbox v-model="value" />
  </PStack>
</template>