Skip to main content

MultinaireListPicker

Selection modal for choosing from a list of options with optional search.

Basic Usage

import { MultinaireListPicker } from '@multinaire/multinaire-design';

<MultinaireListPicker
type="dropdown"
items={[
{ value: 'us', text: 'United States' },
{ value: 'uk', text: 'United Kingdom' },
{ value: 'ca', text: 'Canada' },
]}
selectedItem={selectedCountry}
onChange={(item) => setSelectedCountry(item)}
/>

Props

PropTypeDefaultDescription
type'list' | 'dropdown'-Picker presentation type
itemsListPickerItem[]-Array of selectable items
selectedItemT-Currently selected item value
isLoadingbooleanfalseShow loading state
searchInputPlaceholderstring-Search input placeholder
searchPredicate(item, filter) => boolean-Custom search filter
onChange(item: T) => void-Selection handler
onSearch(filter: string) => void-Search text handler

ListPickerItem

PropertyTypeDescription
valueTItem value
textstringDisplay text
leadingMultinaireIcons | ImageSourceLeading icon or image

Examples

<MultinaireListPicker
type="dropdown"
items={countries.map((c) => ({
value: c.code,
text: c.name,
leading: { uri: c.flagUrl },
}))}
selectedItem={country}
onChange={setCountry}
/>
<MultinaireListPicker
type="list"
items={users.map((u) => ({
value: u.id,
text: u.name,
leading: { uri: u.avatarUrl },
}))}
selectedItem={selectedUser}
searchInputPlaceholder="Search users..."
searchPredicate={(item, filter) =>
item.text.toLowerCase().includes(filter.toLowerCase())
}
onChange={setSelectedUser}
/>

With Icons

<MultinaireListPicker
type="dropdown"
items={[
{ value: 'card', text: 'Credit Card', leading: 'CreditCard' },
{ value: 'paypal', text: 'PayPal', leading: 'Wallet' },
{ value: 'bank', text: 'Bank Transfer', leading: 'Building' },
]}
selectedItem={paymentMethod}
onChange={setPaymentMethod}
/>

With Loading State

<MultinaireListPicker
type="list"
isLoading={isLoadingOptions}
items={options}
selectedItem={selected}
onChange={setSelected}
/>
<MultinaireListPicker
type="list"
items={searchResults}
selectedItem={selected}
searchInputPlaceholder="Search..."
onSearch={(query) => fetchSearchResults(query)}
onChange={setSelected}
/>