AutoComplete

输入联想框,支持本地过滤候选、远程异步搜索、选项分组、内嵌标签与键盘选择。

设计文档

如何引入

import { AutoComplete } from '@chenzy-design/svelte';

基础用法

输入时从候选列表中补全,onChange 同步值。

输入:(空)

远程搜索

onSearch 防抖后回调由外部更新 data,配合 loading 展示加载态。

输入:(空)

分组数据

data 传入 { label, options } 分组项,选项可为字符串或 { value, label, disabled }。

尺寸

size 控制 small / default / large 三档输入框尺寸。

前缀与清除

prefix 内嵌前缀标签,clearable 显示一键清空按钮。

城市

自定义候选项渲染

renderItem 定制下拉候选项,renderSelectedItem 定制选中后回填的文案(仅支持 string)。

搜索

下拉位置

position 控制浮层展开方向,可选 bottomLeft / bottomRight / topLeft / topRight。

禁用

disabled 禁用整个组件,不可输入也不可展开下拉。

校验状态

status 设置 warning / error 校验态,仅影响展示样式。

自定义空内容

emptyContent 自定义无候选时的下拉内容,配合 Empty 组件展示空态。

API 参考

AutoComplete

Props

属性说明类型默认值
valuestringundefined
defaultValuestring''
dataItemOrGroup[][]
openbooleanundefined
defaultOpenbooleanfalse
placeholderstring''
ariaLabelcombobox 输入框可访问名;缺省回退 placeholder 或 locale 默认stringundefined
ariaLabelledby关联外部 label 的 id(优先于 ariaLabel)stringundefined
insetLabelstring|Snippetundefined
openOnFocusbooleanfalse
size'small'|'default'|'large'default
status'default'|'warning'|'error'default
disabledbooleanfalse
filterbooleantrue
defaultActiveFirstOptionbooleantrue
clearablebooleanfalse
onSearch(query: string) => voidundefined
loadingbooleanfalse
searchDebouncenumber300
maxCountnumber0
onChange(v: string) => voidundefined
onSelectonSelectWithObject=true 时回传完整候选对象(value: string|number|NormalizedItem) => voidundefined
onSelectWithObjecttrue 时 onSelect 入参从 value 变为 { value, label, disabled } 对象(对齐 Semi)booleanfalse
onKeyDown透传输入框原始 keydown 事件(对齐 Semi)(e: KeyboardEvent) => voidundefined
onOpenChange(open: boolean) => voidundefined
dropdownMatchSelectWidth浮层宽度与触发器同宽booleantrue
getPopupContainer浮层挂载容器() => HTMLElementundefined
dropdownClassName浮层 classNamestringundefined
dropdownStyle浮层样式string | Record<string, string>undefined
triggerRender完全自定义触发器Snippet<[{ value: string; placeholder: string; disabled: boolean }]>undefined
renderItem自定义候选项渲染Snippet<[{ item: NormalizedItem; isSelected: boolean }]>undefined
renderSelectedItem自定义已选项显示Snippet<[{ item: NormalizedItem }]>undefined
emptyContent无候选时展示内容Snippet | stringundefined
prefix输入框前缀Snippet | stringundefined
suffix输入框后缀Snippet | stringundefined
showClear显示清除按钮(clearable 的别名,showClear 优先)booleanundefined
clearIcon自定义清除图标Snippetundefined
onBlur(e: FocusEvent) => voidundefined
onFocus(e: FocusEvent) => voidundefined
onClear() => voidundefined
remote显式远程模式(关闭本地过滤),不依赖 onSearch 是否存在booleanfalse
autoFocus挂载自动聚焦booleanfalse
position浮层位置string'bottomLeft'
maxHeight下拉浮层最大高度,number→px(对齐 Semi)number|stringundefined
zIndex下拉浮层 z-index(对齐 Semi)numberundefined
class根节点 classNamestring''
style根节点内联样式string''

Accessibility

ARIA rolecombobox
  • combobox + aria-autocomplete="list" + listbox
  • aria-activedescendant 指向高亮候选
  • 键盘:↑↓ 移动、Enter 选中、Esc 关闭

设计变量

变量默认值用法
--cd-autocomplete-affix-text var(--cd-color-text-2)自动完成 prefix/suffix/insetLabel 文字颜色(组件消费)
--cd-autocomplete-clear-text var(--cd-color-text-2)自动完成清除按钮颜色 - 默认(组件消费)
--cd-autocomplete-clear-text-hover var(--cd-color-text-0)自动完成清除按钮颜色 - 悬停(组件消费)
--cd-autocomplete-control-bg var(--cd-input-color-bg)自动完成触发器背景颜色(组件消费,复用 Input)
--cd-autocomplete-control-border var(--cd-input-border)自动完成触发器描边颜色 - 默认(组件消费,复用 Input)
--cd-autocomplete-control-border-active var(--cd-input-border-active)自动完成触发器描边颜色 - 聚焦(组件消费,复用 Input)
--cd-autocomplete-control-border-error var(--cd-input-border-error)自动完成触发器描边颜色 - 错误(组件消费,复用 Input)
--cd-autocomplete-control-border-warning var(--cd-input-border-warning)自动完成触发器描边颜色 - 警告(组件消费,复用 Input)
--cd-autocomplete-control-disabled-bg var(--cd-color-fill-0)自动完成触发器背景颜色 - 禁用(组件消费)
--cd-autocomplete-control-disabled-text var(--cd-color-text-3)自动完成触发器文字颜色 - 禁用(组件消费)