文档目录
下拉选择
石纹触发器 + 窗口面板下拉列表(Base UI Select)。
import { useState } from "react";
import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "./index";
const GAMEMODES = ["生存", "创造", "冒险", "旁观"] as const;
/**
* Select 预览用例:游戏模式选择
*/
export function SelectDemo() {
const [mode, setMode] = useState<null | string>("生存");
return (
<div className="flex flex-col gap-8">
<Select<string> onValueChange={setMode} value={mode}>
<SelectTrigger aria-label="游戏模式">
<SelectValue />
<SelectIcon />
</SelectTrigger>
<SelectPopup aria-label="游戏模式选项">
<SelectList>
{GAMEMODES.map(name => (
<SelectItem key={name} value={name}>
{name}
</SelectItem>
))}
</SelectList>
</SelectPopup>
</Select>
</div>
);
}
安装
CLI 拷贝
$npx shadcn add @tennantite/selectnpm 直装
$pnpm add @tennantite/uinpm 方式安装编译产物;需要改造源码请用上方的 CLI 拷贝安装。
用法
npm 导入
import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "@tennantite/ui";CLI 拷贝导入
import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "@/components/tennantite/select";import { useState } from "react";
import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "./index";
const GAMEMODES = ["生存", "创造", "冒险", "旁观"] as const;
/**
* Select 预览用例:游戏模式选择
*/
export function SelectDemo() {
const [mode, setMode] = useState<null | string>("生存");
return (
<div className="flex flex-col gap-8">
<Select<string> onValueChange={setMode} value={mode}>
<SelectTrigger aria-label="游戏模式">
<SelectValue />
<SelectIcon />
</SelectTrigger>
<SelectPopup aria-label="游戏模式选项">
<SelectList>
{GAMEMODES.map(name => (
<SelectItem key={name} value={name}>
{name}
</SelectItem>
))}
</SelectList>
</SelectPopup>
</Select>
</div>
);
}API Reference
| Prop | Type | 描述 |
|---|---|---|
| className | string | 追加到触发器与根元素的类名。 |
源码
packages/ui/src/primitives/select/index.tsxnpm 包保留源码目录,可直接复制改造。