Lewati ke konten

Dropdown - Vue

Dropdown

banner-background
<template>
  <SelectDropdown
    v-model="selected"
    :options="options"
    placeholder="Select..."
  />
</template>

<script setup>
import { ref } from 'vue';
import { SelectDropdown } from '@idds/vue';

const selected = ref('');
const options = [
  { label: 'Option 1', value: 'option1' },
  { label: 'Option 2', value: 'option2' },
];
</script>
<template>
  <BasicDropdown>
    <template #trigger>
      <button class="trigger-btn">Open Menu</button>
    </template>
    <template #content>
      <div class="content-panel">
        <p class="title">My Content</p>
        <p class="description">This is a basic dropdown content.</p>
      </div>
    </template>
  </BasicDropdown>
</template>

<script setup>
import { BasicDropdown } from '@idds/vue';
</script>

Contoh 3 - SelectDropdown: Radio Indicator

Section titled “Contoh 3 - SelectDropdown: Radio Indicator”

Contoh 4 - SelectDropdown: API Integration

Section titled “Contoh 4 - SelectDropdown: API Integration”

SelectDropdown

NameTypeDefaultRequiredDescription
modelValueany | any[]YesNilai yang terpilih (v-model).
optionsSelectOption[]YesArray of options untuk dropdown.
label?string | Component | VNodeNoLabel untuk dropdown.
placeholder?stringNoPlaceholder text untuk trigger.
size?'sm' | 'md' | 'lg''md'NoUkuran dropdown.
indicator?'check' | 'radio''check'NoTipe indicator untuk selected option.
multiple?booleanfalseNoApakah memungkinkan multiple selection.
searchable?booleantrueNoApakah dropdown bisa di-search.
disabled?booleanfalseNoApakah komponen dalam mode readonly/disabled.
hasMore?booleanfalseNoApakah masih ada data yang bisa di-load (untuk infinite scroll).
loading?booleanfalseNoApakah sedang loading data (untuk infinite scroll).
currentPage?numberNoHalaman saat ini (untuk infinite scroll).
onLoadMore?(page: number) => voidNoCallback untuk load data halaman berikutnya.
onSearch?(searchTerm: string) => voidNoCallback untuk search dengan debounce.
searchDebounceMs?number300NoDelay untuk debounce search (ms).
searchValue?stringNoControlled search value (optional) - jika tidak disediakan, akan menggunakan internal state.
onSearchChange?(searchTerm: string) => voidNoCallback untuk perubahan search value (optional) - untuk controlled mode.
@update:selectedRaw?(selectedRaw: SelectOption | SelectOption[] | null) => voidNoEvent yang dipanggil ketika selectedRaw berubah (berisi SelectOption object atau array). Single select mengembalikan SelectOption | null, multiple select mengembalikan SelectOption[] | null.
@selectedRawChange?(selectedRaw: SelectOption | SelectOption[] | null) => voidNoEvent yang dipanggil ketika selectedRaw berubah (berisi SelectOption object atau array). Single select mengembalikan SelectOption | null, multiple select mengembalikan SelectOption[] | null.
width?number | string'100%'NoLebar komponen.
panelWidth?number | stringNoLebar popup panel.
panelHeight?number | string600NoMax height popup panel.
panelClassName?string''NoClassName tambahan untuk panel.
triggerClassName?string''NoClassName tambahan untuk trigger.
class?string''NoHTML standard attribute `class` untuk container (fallthrough).
showPreviewValue?booleantrueNoTampilkan preview selected value.
renderOptionLabel?FunctionNoCustom render label option.
renderSelectedPreview?FunctionNoCustom render selected preview.
prefixNode?Component | VNodeNoNode sebelum label trigger.
onRemoveSelected?(value: any) => voidNoCallback remove selected.

Dropdown

NameTypeDefaultRequiredDescription
trigger?Component | VNode | stringNoTrigger element atau text untuk membuka dropdown.
triggerText?string'Dropdown'NoText untuk trigger jika tidak menggunakan slot trigger.
items?(Component | VNode | string)[]NoArray of items yang akan ditampilkan sebagai item dropdown.
class?string''NoHTML standard attribute `class` untuk container trigger (fallthrough).
dropdownClassName?string''NoClassName tambahan untuk kotak dropdown.
dropdownStyle?Record<string, any>NoInline style tambahan untuk kotak dropdown.
disabled?booleanfalseNoJika true, dropdown tidak bisa dibuka.
dropdownWidth?number160NoLebar dropdown dalam pixel.