MultiSelect 多选器

从规模有限的选项集合中选择多个稳定值。

Beta

示例

直接操作示例,查看组件在具体任务中的状态与反馈。

宿主持有稳定的字符串数组;组件只负责有限选项的选择、标签折叠与移除。
本地可见列
选择数量较小时使用;搜索、异步与虚拟化不在当前能力内。
当前本地值:name、status、updated
maxTagCount 限制可见标签数量,同时保留完整选中值。
没有可选项时展示明确的本地空结果文案。
必填错误与整体禁用在宽场景中保持标签、说明和控件边界。

使用建议

限制在规模有限的多选

适合用户可以浏览完的短选项列表;大量、异步、可搜索或虚拟化集合应使用更专门的输入方案。

保持每个值唯一稳定

宿主保存 string[],避免 duplicate option value、未知已选值和动态复用身份,并明确禁用已选项的处理策略。

由宿主完成校验与提交

组件只上报本地选择;required、跨字段校验、外部 form 归属、提交和错误恢复仍由宿主应用负责。

引入方式

从已验证的公开子路径导入组件;全局样式接入方式见安装指南。

import { BaseMultiSelect } from '@inf-monkeys-tech/monkeys-design/components/base';

当前限制

  • 当前不支持 search、async options、virtualization、global clear、token keyboard removal、Portal 或 collision-aware positioning。
  • required/native validation、external form ownership、identity 边界、mobile/manual AT、deterministic visual 与 packed React 18/19 仍未完成。
  • Search, async options, virtualization, global clear, and token keyboard removal are not supported.
  • Portal rendering and collision-aware positioning are not supported.
  • Required/native validation and external form ownership are not supported.
  • Duplicate option values, unknown selected values, and disabled-selected identity behavior are not finalized.
  • Mobile and manual assistive-technology validation are pending.
  • Deterministic visual evidence and final packed React 18/19 checks are pending T17/T23.
export interface BaseMultiSelectProps
  extends Omit<
    HTMLAttributes<HTMLDivElement>,
    'children' | 'className' | 'defaultValue' | 'onChange' | 'style'
  > {
  options?: BaseMultiSelectOption[];
  value?: string[];
  defaultValue?: string[];
  name?: string;
  placeholder?: ReactNode;
  icon?: ReactNode;
  invalid?: boolean;
  disabled?: boolean;
  required?: boolean;
  openForPreview?: boolean;
  maxTagCount?: number;
  removeLabel?: (option: BaseMultiSelectOption) => string;
  emptyLabel?: ReactNode;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseMultiSelectClassNames;
  style?: CSSProperties;
  onValueChange?: (value: string[]) => void;
}
属性说明类型默认值
options组件可供选择的选项列表。BaseMultiSelectOption[]
value多选控件当前选中项值的受控数组。string[]
defaultValue非受控模式下使用的初始值。string[]
name提交表单时使用的字段名称。string
placeholder尚未选择值时显示的占位内容。ReactNode
icon显示在主要内容旁的图标。ReactNode
invalid是否进入无效状态并应用相应的校验样式与语义。booleanfalse
disabled是否禁用该组件及其可交互行为。booleanfalse
required是否将该字段标记为必填。booleanfalse
openForPreview是否在文档或视觉测试中强制保持弹出内容可见。booleanfalse
maxTagCount折叠为汇总提示前最多直接显示的已选标签数量。number
removeLabel为指定已选项生成移除按钮可访问名称的函数。(option: BaseMultiSelectOption) => string
emptyLabel没有可选项或匹配结果时显示的内容。ReactNode
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseMultiSelectClassNames
style追加到组件根元素的内联样式。CSSProperties
onValueChange值变化时调用的回调;参数结构以当前组件的 Props 类型为准。(value: string[]) => void