跳至正文
uiify

Combobox

支持过滤的单值或多值ARIA组合框。

浏览器
Chrome 114+Firefox 125+Safari 17+
层级
2
压缩后大小
5.18 kB
强制布局预算
0 ms
axe 预算
0
支持 SSR
是
公开契约
测试环境

交互示例

Combobox

默认

苹果
香蕉
樱桃
椰枣

多选

ReactUI
React
UI
TypeScript
无障碍
设计系统

打开

苹果
香蕉
樱桃
椰枣

大型

API

Combobox.Root

属性类型默认值说明
childrenReactNode—Combobox组成部分:控件、标签、输入框、触发器和内容。
items*ComboboxItemData[]—供输入框过滤的完整选项列表。
defaultInputValuestring—输入值非受控时,输入框中的初始文本。
defaultOpenboolean—打开状态非受控时,列表是否初始打开。
defaultValuestring | readonly string[]—选择状态非受控时,首次渲染所选的一个或多个值。
multiplebooleanfalse允许将多个值作为标签选择和移除。
allowCustomValuebooleanfalse允许将不在items中的输入文本作为所选值。
addOnPastebooleantrue在多选模式下,从粘贴文本中添加多个由分隔符分开的值。
delimitersreadonly string[][","]在多选模式下,用于提交或拆分输入值的字符。
maxValuesnumber—多选模式下可选择的最大值数量。
validateValue(value: string) => boolean—返回false时拒绝自定义值。
filterFn(items: ComboboxItemData[], inputValue: string) => ComboboxItemData[]—替换内置过滤器,后者会随用户输入缩小项目范围。
inputValuestring—输入框中的文本,使输入值受控。
onInputValueChange(value: string) => void—输入框变化时,使用新文本调用。
onOpenChange(open: boolean, details: OpenChangeDetails) => void—列表打开或关闭时调用,并提供变更原因。
onValueChange((value: string) => void) | ((value: string[]) => void)—使用所选值或完整的已选值数组调用。
openboolean—列表是否打开,使打开状态受控。
valuestring | readonly string[]—所选的一个或多个值,使选择状态受控。

Combobox.Control

属性类型默认值说明
childrenReactNode—在共享视觉控件内渲染的标签和输入框。
classNamestring—应用于控件元素的类名。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

Combobox.Tags

属性类型默认值说明
childrenReactNode—附加在自动生成的可移除标签之后的内容。
classNamestring—应用于自动生成的标签容器的类名。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

Combobox.Input

属性类型默认值说明
classNamestring—应用于文本输入框的类名。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

Combobox.Trigger

属性类型默认值说明
childrenReactNode—打开列表的按钮内容,例如图标。
classNamestring—应用于触发器按钮的类名。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

Combobox.Content

属性类型默认值说明
align"start" | "center" | "end"—列表沿所选侧边相对于输入框的对齐方式。
children*(filteredItems: ComboboxItemData[]) => ReactNode—使用过滤后剩余的项目调用的渲染函数。
classNamestring—应用于列表弹出层的类名。
side"top" | "right" | "bottom" | "left"—列表位于输入框的哪一侧。

Combobox.Item

属性类型默认值说明
classNamestring—应用于选项元素的类名。
item*ComboboxItemData—此选项渲染的项目,通常来自content回调。

Combobox.Empty

属性类型默认值说明
childrenReactNode—过滤后没有项目时显示的内容。
classNamestring—应用于空状态元素的类名。

ComboboxItemData

属性类型默认值说明
disabledboolean—使此项目不可选择。
label*string—该项目显示的文本,也是过滤器匹配的文本。
value*string—选择该项目时报告的值。

键盘

按键操作
↓ / ↑打开并在选项间移动焦点
Enter选择
Escape关闭
a–z键入字符以过滤选项

无障碍

ARIA组合框结合listbox。通过aria-activedescendant播报活动选项。Content暴露open/closed状态;选项暴露highlighted、disabled和多选模式下的selected状态。无匹配项时使用Empty作出说明。启用减少动态效果时,禁用弹出层的出现和消失动画。

样式钩子

data-statedata-highlighteddata-disableddata-selected
本页由机器翻译,尚未经人工审核。