kliping.pro
  • Docs
  • Directory
  • Colors
  • Typeset
Docs
    • Accordion
    • Action Bar
    • Alert
    • Alert Dialog
    • Angle Slider
    • Aspect Ratio
    • Attachment
    • Avatar
    • Avatar Group
    • Badge
    • Badge Overflow
    • Banner
    • Breadcrumb
    • Bubble
    • Button
    • Button Group
    • Calendar
    • Card
    • Carousel
    • Chart
    • Checkbox
    • Checkbox Group
    • Chip
    • Circular Progress
    • Client Only
    • Collapsible
    • Color Picker
    • Color Swatch
    • Combobox
    • Combobox Advanced
    • Command
    • Compare Slider
    • Composition
    • Context Menu
    • Cropper
    • Data Grid
    • Data Table
    • Data Table Advanced
    • Date Picker
    • Dialog
    • Direction Provider
    • Drawer
    • Dropdown Menu
    • Editable
    • Empty
    • Field
    • File Upload
    • Form
    • FPS
    • Gauge
    • Hitbox
    • Hover Card
    • Input
    • Input Group
    • Input OTP
    • Item
    • Kanban
    • Kbd
    • Kbd Advanced
    • Key Value
    • Label
    • List
    • Listbox
    • Map
    • Marker
    • Marquee
    • Mask Input
    • Masonry
    • Media Player
    • Mention
    • Menubar
    • Message
    • Message Scroller
    • Native Select
    • Navigation Menu
    • Number Field
    • Pagination
    • Pending
    • Phone Input
    • Pin Input
    • Popover
    • Portal
    • Presence
    • Progress
    • QR Code
    • Questionnaire
    • Radio Group
    • Range Calendar
    • Rating
    • Relative Time Card
    • Resizable
    • Responsive Dialog
    • Scroll Area
    • Scroll Spy
    • Scroller
    • Segmented Input
    • Select
    • Selection Toolbar
    • Separator
    • Sheet
    • Sidebar
    • Skeleton
    • Slider
    • Software Purchase Card
    • Sonner
    • Sortable
    • Speed Dial
    • Spinner
    • Stack
    • Stat
    • Status
    • Stepper
    • Stepper Advanced
    • Swap
    • Switch
    • Table
    • Tabs
    • Tags Input
    • Tags Input Advanced
    • Textarea
    • Time Picker
    • Timeline
    • Toast
    • Toggle
    • Toggle Group
    • Tooltip
    • Tour
    • Typography
    • Visually Hidden
    • Visually Hidden Input

Combobox

PreviousNext

Isian dengan pelengkapan otomatis dan command palette berisi daftar saran.

Docs API Reference

Combobox bisa dibangun lewat dua cara:

  • Memakai komponen Combobox, yang dibangun di atas Combobox milik Reka UI.
  • Memadukan komponen Popover dan Command menjadi sebuah listbox.

Installation ​

Combobox ​

pnpm dlx shadcn-vue@latest add combobox

Pasang dependensi berikut:

pnpm add reka-ui @vueuse/core

Salin dan tempel kode sumber di GitHub ke project Anda.

Sesuaikan path import dengan struktur project Anda.

Popover dan Command ​

Varian listbox dibangun dari perpaduan komponen Popover dan Command.

Ikuti langkah pemasangan komponen Popover dan Command terlebih dahulu.

Usage ​

Combobox ​

vue
<script setup lang="ts">
import { CheckIcon, ChevronsUpDownIcon } from '@lucide/vue'
import { ref } from 'vue'
import { Button } from '@/components/ui/button'
import {
  Combobox,
  ComboboxAnchor,
  ComboboxEmpty,
  ComboboxGroup,
  ComboboxInput,
  ComboboxItem,
  ComboboxItemIndicator,
  ComboboxList,
  ComboboxTrigger,
} from '@/components/ui/combobox'

const frameworks = [
  { value: 'next.js', label: 'Next.js' },
  { value: 'sveltekit', label: 'SvelteKit' },
  { value: 'nuxt.js', label: 'Nuxt.js' },
  { value: 'remix', label: 'Remix' },
  { value: 'astro', label: 'Astro' },
]

const selectedFramework = ref<(typeof frameworks)[number]>()
</script>

<template>
  <Combobox v-model="selectedFramework" by="label">
    <ComboboxAnchor as-child>
      <ComboboxTrigger as-child>
        <Button variant="outline" class="w-[200px] justify-between">
          {{ selectedFramework?.label ?? 'Select framework...' }}
          <ChevronsUpDownIcon class="opacity-50" />
        </Button>
      </ComboboxTrigger>
    </ComboboxAnchor>

    <ComboboxList>
      <ComboboxInput placeholder="Search framework..." />
      <ComboboxEmpty>No framework found.</ComboboxEmpty>
      <ComboboxGroup>
        <ComboboxItem
          v-for="framework in frameworks"
          :key="framework.value"
          :value="framework"
        >
          {{ framework.label }}
          <ComboboxItemIndicator>
            <CheckIcon />
          </ComboboxItemIndicator>
        </ComboboxItem>
      </ComboboxGroup>
    </ComboboxList>
  </Combobox>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

Popover dan Command ​

vue
<script setup lang="ts">
import { CheckIcon, ChevronsUpDownIcon } from '@lucide/vue'
import { ref } from 'vue'
import { cn } from '@/lib/utils'
import { Button } from '@/components/ui/button'
import {
  Command,
  CommandEmpty,
  CommandGroup,
  CommandInput,
  CommandItem,
  CommandList,
} from '@/components/ui/command'
import {
  Popover,
  PopoverContent,
  PopoverTrigger,
} from '@/components/ui/popover'

const frameworks = [
  { value: 'next.js', label: 'Next.js' },
  { value: 'sveltekit', label: 'SvelteKit' },
  { value: 'nuxt.js', label: 'Nuxt.js' },
  { value: 'remix', label: 'Remix' },
  { value: 'astro', label: 'Astro' },
]

const open = ref(false)
const value = ref('')
</script>

<template>
  <Popover v-model:open="open">
    <PopoverTrigger as-child>
      <Button
        variant="outline"
        role="combobox"
        :aria-expanded="open"
        class="w-[200px] justify-between"
      >
        {{
          value
            ? frameworks.find(framework => framework.value === value)?.label
            : 'Select framework...'
        }}
        <ChevronsUpDownIcon class="ml-2 h-4 w-4 shrink-0 opacity-50" />
      </Button>
    </PopoverTrigger>
    <PopoverContent class="w-[200px] p-0">
      <Command>
        <CommandInput placeholder="Search framework..." />
        <CommandList>
          <CommandEmpty>No framework found.</CommandEmpty>
          <CommandGroup>
            <CommandItem
              v-for="framework in frameworks"
              :key="framework.value"
              :value="framework.value"
              @select="() => {
                value = value === framework.value ? '' : framework.value
                open = false
              }"
            >
              <CheckIcon
                :class="cn(
                  'mr-2 h-4 w-4',
                  value === framework.value ? 'opacity-100' : 'opacity-0',
                )"
              />
              {{ framework.label }}
            </CommandItem>
          </CommandGroup>
        </CommandList>
      </Command>
    </PopoverContent>
  </Popover>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

Examples ​

User ​

Combobox dengan tampilan item kustom dan satu item aksi.

Zona Waktu ​

Combobox dengan item berkelompok dan area yang bisa digulir.

Pilihan Ganda ​

Combobox yang bisa memilih lebih dari satu.

Dengan Listbox ​

Combobox yang dibangun dari komponen Popover dan Command.

PreviousColor SwatchNext Combobox Advanced

On This Page

InstallationComboboxPopover dan CommandUsageComboboxPopover dan CommandExamplesUserZona WaktuPilihan GandaDengan Listbox
Dirilis di bawah lisensi MIT. Ditulis ulang untuk Vue dari shadcn-vue, shadcn-ui-blocks, dan shadcn-hooks. Hak cipta © 2026 Kliping