Lewati ke konten

Dropdown - React

Dropdown

banner-background
import { SelectDropdown } from '@idds/react';

export default function App() {
  const [selected, setSelected] = useState('');
  const options = [
    { label: 'Option 1', value: 'option1' },
    { label: 'Option 2', value: 'option2' },
  ];

  return (
    <SelectDropdown
      options={options}
      selected={selected}
      onSelect={(val) => setSelected(val)}
      placeholder="Select..."
    />
  );
}
import { BasicDropdown } from '@idds/react';

export default function App() {
  return (
    <BasicDropdown
      trigger={<button>Open Menu</button>}
      content={
        <div style={{ padding: '16px' }}>
          <h3 style={{ margin: '0 0 8px' }}>My Content</h3>
          <p style={{ margin: 0 }}>This is a basic dropdown content.</p>
        </div>
      }
    />
  );
}

Terpilih:

Contoh 4 - SelectDropdown: API Integration

Section titled “Contoh 4 - SelectDropdown: API Integration”

Debug Info:

  • Current Page: 1
  • Has More: No
  • Loading: No
  • Options: 0 / 0
  • Search Term: ""
  • Selected: None

SelectDropdown

NameTypeDefaultRequiredDescription
optionsSelectOption[]YesArray of options untuk dropdown.
label?ReactNodeNoLabel untuk dropdown.
selectedany | any[]YesNilai yang terpilih (single atau multiple).
onSelect(selectedValue: any | any[], rawValue?: any) => voidYesCallback ketika option dipilih.
placeholder?string'Select...'NoPlaceholder text untuk trigger.
size?'sm' | 'md' | 'lg''md'NoUkuran dropdown.
indicator?'check' | 'radio''check'NoTipe indicator untuk selected option.
multiple?booleanfalseNoApakah memungkinkan multiple selection.
width?number | string'100%'NoLebar komponen (container + default popup).
panelWidth?number | stringNoLebar khusus popup; jika tidak diisi, ikut width.
panelHeight?number | string600NoTinggi maksimum popup (overflow akan scroll).
disabled?booleanfalseNoApakah komponen dalam mode readonly/disabled.
onSearch?(searchTerm: string) => voidNoCallback untuk search dengan debounce.
searchDebounceMs?number300NoDelay untuk debounce search (ms).
hasMore?booleanfalseNoApakah masih ada data yang bisa di-load (untuk infinite scroll).
loading?booleanfalseNoApakah sedang loading data.
onLoadMore?(page: number) => voidNoCallback untuk load data halaman berikutnya.
onSelectedRawChange?(selectedRaw: SelectOption | SelectOption[] | null) => voidNoCallback untuk perubahan selectedRaw (berisi SelectOption object atau array). Single select mengembalikan SelectOption | null, multiple select mengembalikan SelectOption[] | null.
triggerClassName?string''NoClassName tambahan untuk trigger.
panelClassName?string''NoClassName tambahan untuk panel.
renderOptionLabel?(option: SelectOption) => ReactNodeNoCustom render untuk label option.
renderSelectedPreview?(selected: any | any[]) => ReactNodeNoCustom render untuk preview selected value.
className?string''NoClassName tambahan.
onClose?() => voidNoCallback saat dropdown ditutup.
prefixNode?ReactNodeNoNode yang ditampilkan sebelum label pada trigger.
currentPage?number1NoHalaman saat ini (infinite scroll).
onRemoveSelected?(value: any) => voidNoCallback untuk remove selected item dari preview.
searchValue?stringNoControlled search value.
onSearchChange?(searchTerm: string) => voidNoCallback saat search value berubah.
showPreviewValue?booleantrueNoTampilkan preview selected value.
searchable?booleantrueNoAktifkan fitur search.

Dropdown

NameTypeDefaultRequiredDescription
triggerReactNodeYesTrigger element untuk membuka dropdown.
itemsReactNode[]YesArray of ReactNode yang akan ditampilkan sebagai item dropdown.
className?string''NoClassName tambahan untuk container trigger.
dropdownClassName?string''NoClassName tambahan untuk kotak dropdown.
dropdownStyle?CSSPropertiesNoInline style tambahan untuk kotak dropdown.
disabled?booleanfalseNoJika true, dropdown tidak bisa dibuka.
dropdownWidth?number160NoLebar dropdown dalam pixel.