combobox-item-to-string-label-demo

PreviousNext
Docs
pureuiexample

Preview

Loading preview…
registry/pure-ui/examples/combobox/combobox-item-to-string-label-demo.tsx
"use client";

import {
  Combobox,
  ComboboxEmpty,
  ComboboxInput,
  ComboboxItem,
  ComboboxList,
  ComboboxPopup,
} from "@/registry/pure-ui/ui/combobox";

const users = [
  { id: "u1", name: "Alice Johnson", email: "alice@example.com" },
  { id: "u2", name: "Bob Lee", email: "bob@example.com" },
  { id: "u3", name: "Cathy Kim", email: "cathy@example.com" },
  { id: "u4", name: "David Smith", email: "david@example.com" },
  { id: "u5", name: "Emily Davis", email: "emily@example.com" },
  { id: "u6", name: "Frank Miller", email: "frank@example.com" },
  { id: "u7", name: "Grace Lee", email: "grace@example.com" },
  { id: "u8", name: "Henry Walker", email: "henry@example.com" },
];

type User = (typeof users)[number];

export function ComboboxItemToStringLabelDemo() {
  return (
    <div className="flex flex-col gap-5 max-w-xs w-full">
      <Combobox items={users} itemToStringLabel={(user: User) => user.name}>
        <ComboboxInput placeholder="Select a user..." />
        <ComboboxPopup>
          <ComboboxEmpty>No users found.</ComboboxEmpty>
          <ComboboxList>
            {(user: User) => (
              <ComboboxItem key={user.id} value={user}>
                <div>
                  <div className="font-medium">{user.name}</div>
                  <div className="text-xs text-muted-foreground">
                    {user.email}
                  </div>
                </div>
              </ComboboxItem>
            )}
          </ComboboxList>
        </ComboboxPopup>
      </Combobox>

      <Combobox
        items={users}
        itemToStringLabel={(user: User) => `${user.name} - ${user.email}`}
      >
        <ComboboxInput placeholder="Select a user..." />
        <ComboboxPopup>
          <ComboboxEmpty>No users found.</ComboboxEmpty>
          <ComboboxList>
            {(user: User) => (
              <ComboboxItem key={user.id} value={user}>
                <div>
                  <div className="font-medium">{user.name}</div>
                  <div className="text-xs text-muted-foreground">
                    {user.email}
                  </div>
                </div>
              </ComboboxItem>
            )}
          </ComboboxList>
        </ComboboxPopup>
      </Combobox>
    </div>
  );
}

Installation

npx shadcn@latest add @pureui/combobox-item-to-string-label-demo

Usage

import { ComboboxItemToStringLabelDemo } from "@/components/combobox-item-to-string-label-demo"
<ComboboxItemToStringLabelDemo />