- 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
Elemen select bawaan HTML yang di-style agar menyatu dengan design system Anda.
Kalau Anda butuh select yang di-style penuh, lihat komponen Select.
Installation
pnpm dlx shadcn-vue@latest add native-selectPasang dependensi berikut:
pnpm add reka-uiSalin dan tempel kode sumber di GitHub ke project Anda.
Sesuaikan path import dengan struktur project Anda.
Usage
<script setup lang="ts">
import {
NativeSelect,
NativeSelectOptGroup,
NativeSelectOption,
} from '@/components/ui/native-select'
</script>
<template>
<NativeSelect>
<NativeSelectOption value="">
Select a fruit
</NativeSelectOption>
<NativeSelectOption value="apple">
Apple
</NativeSelectOption>
<NativeSelectOption value="banana">
Banana
</NativeSelectOption>
<NativeSelectOption value="blueberry">
Blueberry
</NativeSelectOption>
<NativeSelectOption value="grapes" disabled>
Grapes
</NativeSelectOption>
<NativeSelectOption value="pineapple">
Pineapple
</NativeSelectOption>
</NativeSelect>
</template>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
Examples
Dengan Grup
Kelompokkan pilihan memakai NativeSelectOptGroup agar lebih tertata.
<template>
<NativeSelect>
<NativeSelectOption value="">
Select a food
</NativeSelectOption>
<NativeSelectOptGroup label="Fruits">
<NativeSelectOption value="apple">
Apple
</NativeSelectOption>
<NativeSelectOption value="banana">
Banana
</NativeSelectOption>
<NativeSelectOption value="blueberry">
Blueberry
</NativeSelectOption>
</NativeSelectOptGroup>
<NativeSelectOptGroup label="Vegetables">
<NativeSelectOption value="carrot">
Carrot
</NativeSelectOption>
<NativeSelectOption value="broccoli">
Broccoli
</NativeSelectOption>
<NativeSelectOption value="spinach">
Spinach
</NativeSelectOption>
</NativeSelectOptGroup>
</NativeSelect>
</template>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
Keadaan Nonaktif
Nonaktifkan satu pilihan tertentu, atau seluruh komponen select sekaligus.
Keadaan Tidak Valid
Tampilkan kesalahan validasi lewat atribut aria-invalid beserta style error-nya.
<template>
<NativeSelect aria-invalid="true">
<NativeSelectOption value="">
Select a country
</NativeSelectOption>
<NativeSelectOption value="us">
United States
</NativeSelectOption>
<NativeSelectOption value="uk">
United Kingdom
</NativeSelectOption>
<NativeSelectOption value="ca">
Canada
</NativeSelectOption>
</NativeSelect>
</template>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Integrasi dengan Form
Bisa dipakai bersama library form seperti VeeValidate untuk komponen yang dikendalikan dari luar.
Native Select dibanding Select
- Pakai
NativeSelectkalau Anda butuh perilaku asli browser, performa lebih ringan, atau dropdown yang nyaman di mobile. - Pakai
Selectkalau Anda butuh style kustom, animasi, atau interaksi yang lebih rumit.
Komponen NativeSelect menyediakan fungsi select bawaan HTML dengan tampilan yang selaras dengan design system Anda.
Accessibility
- Komponen ini mempertahankan seluruh fitur aksesibilitas select bawaan HTML.
- Pembaca layar bisa menelusuri pilihan memakai tombol panah.
- Ikon panahnya ditandai
aria-hidden="true"supaya tidak dibacakan dua kali. - Pakai
aria-labelatauaria-labelledbykalau butuh konteks tambahan.
<template>
<NativeSelect aria-label="Choose your preferred language">
<NativeSelectOption value="en">
English
</NativeSelectOption>
<NativeSelectOption value="es">
Spanish
</NativeSelectOption>
<NativeSelectOption value="fr">
French
</NativeSelectOption>
</NativeSelect>
</template>2
3
4
5
6
7
8
9
10
11
12
13
API Reference
NativeSelect
Komponen select utama yang membungkus elemen select bawaan HTML.
| Prop | Tipe | Bawaan |
|---|---|---|
class | string |
Semua prop lain diteruskan ke elemen <select> di baliknya.
<NativeSelect>
<NativeSelectOption value="option1">Option 1</NativeSelectOption>
<NativeSelectOption value="option2">Option 2</NativeSelectOption>
</NativeSelect>NativeSelectOption
Mewakili satu pilihan di dalam select.
| Prop | Type | Default |
|---|---|---|
value | string | |
disabled | boolean | false |
class | string |
Semua prop lain diteruskan ke elemen <option> di baliknya.
<template>
<NativeSelectOption value="apple">
Apple
</NativeSelectOption>
<NativeSelectOption value="banana" disabled>
Banana
</NativeSelectOption>
</template>NativeSelectOptGroup
Mengelompokkan pilihan-pilihan yang berkaitan agar lebih tertata.
| Prop | Type | Default |
|---|---|---|
label | string | |
disabled | boolean | false |
class | string |
Semua prop lain diteruskan ke elemen <optgroup> di baliknya.
<template>
<NativeSelectOptGroup label="Fruits">
<NativeSelectOption value="apple">
Apple
</NativeSelectOption>
<NativeSelectOption value="banana">
Banana
</NativeSelectOption>
</NativeSelectOptGroup>
</template>