One-of-many view
Use single mode for mutually exclusive display choices.
Components / Actions
Coordinates a roving set of single- or multiple-selection toggle buttons.
npx @getweini/cli@latest add toggle-groupUse single mode for mutually exclusive display choices.
Use multiple mode when several options can be active together.
<script setup lang="ts">
import { ref } from 'vue'
import ToggleGroup from './components/ui/toggle-group/ToggleGroup.vue'
import ToggleGroupItem from './components/ui/toggle-group/ToggleGroupItem.vue'
const alignment = ref<string>()
</script>
<template>
<ToggleGroup v-model="alignment" aria-label="Text alignment">
<ToggleGroupItem value="left">Left</ToggleGroupItem>
<ToggleGroupItem value="center">Center</ToggleGroupItem>
<ToggleGroupItem value="right">Right</ToggleGroupItem>
</ToggleGroup>
</template>Single mode stores one selected value.
<script setup lang="ts">
import { ref } from 'vue'
import ToggleGroup from './components/ui/toggle-group/ToggleGroup.vue'
import ToggleGroupItem from './components/ui/toggle-group/ToggleGroupItem.vue'
const density = ref<string>()
</script>
<template>
<ToggleGroup v-model="density" type="single" aria-label="List density">
<ToggleGroupItem value="compact">Compact</ToggleGroupItem>
<ToggleGroupItem value="comfortable">Comfortable</ToggleGroupItem>
</ToggleGroup>
</template>Multiple mode stores an array of active values.
<script setup lang="ts">
import { ref } from 'vue'
import ToggleGroup from './components/ui/toggle-group/ToggleGroup.vue'
import ToggleGroupItem from './components/ui/toggle-group/ToggleGroupItem.vue'
const layers = ref<string[]>(['roads'])
</script>
<template>
<ToggleGroup v-model="layers" type="multiple" aria-label="Map layers">
<ToggleGroupItem value="roads">Roads</ToggleGroupItem>
<ToggleGroupItem value="transit">Transit</ToggleGroupItem>
<ToggleGroupItem value="terrain">Terrain</ToggleGroupItem>
</ToggleGroup>
</template>The most useful props, models, slots, events, and methods for this component.
| Name | Type | Default or requirement |
|---|---|---|
v-model | string | undefined | string[] | undefined / [] |
type | single | multiple | single |
orientation | horizontal | vertical | horizontal |
disabled | boolean | false |
loop | boolean | true |
ToggleGroupItem value | string | required |
ToggleGroupItem disabled | boolean | false |
Name the root with aria-label or aria-labelledby. Arrow keys follow orientation and text direction, Home and End move to the edges, and disabled items are skipped.