Skyroc UIDocs
输入
SKYROC UI · COMPONENT

Input

支持插槽、清空按钮和尺寸变体的文本输入框

@skyroc/web-uiTypeScriptRadix foundation

Input 用于收集单行文本、邮箱、搜索、文件等原生 input 输入。组件在原生 <input> 外包了一层可聚焦样式容器,并提供前置插槽、后置插槽、清空按钮和统一尺寸。

import { Input } from '@skyroc/web-ui';

何时使用

  • 需要收集单行文本、邮箱、搜索关键字、文件等原生 input 数据。
  • 输入框需要前后图标或自定义操作区。
  • 需要和项目主题尺寸、边框、聚焦态保持一致。
  • 需要数字步进交互时使用 NumberInput;需要验证码分段输入时使用 InputOTP。

基础用法

Input 支持受控和非受控用法,常见原生 input 属性会透传到底层 <input>。

预览
代码
Loading...

禁用

通过 disabled 禁用输入框。readOnly 也会让底层 input 进入不可编辑状态。

预览
代码
Loading...

插槽

通过 leading 和 trailing 放置前置、后置内容,常用于搜索图标、单位、快捷操作等。

预览
代码
Loading...

可清空

通过 clearable 显示清空按钮。清空按钮会在 hover 输入框容器时显示,并在点击后清空当前 DOM value。

预览
代码
Loading...

尺寸

通过 size 调整输入框高度、字号、横向内边距和插槽间距,从 xs 到 2xl 共 6 个尺寸。

尺寸高度字号适用场景
xs24px10px紧凑筛选、表格内嵌
sm28px12px辅助表单、侧边栏
md32px14px常规场景(默认)
lg36px16px重点表单项
xl40px18px大号输入区域
2xl48px20px大幅表单或首屏输入

自定义样式

通过 classNames 控制不同 slot:root、control、clearable 和 visible。如果只需要调整整体容器,优先使用 classNames.root;当前实现中 className 会作为多个 slot 的兜底 class 使用,不适合做精细化样式控制。

API

Input

通用属性参考:继承原生 input 属性,但移除了原生 size 属性,改用项目统一尺寸。

Props属性、类型与默认值
17 properties
属性说明类型默认值
value受控输入值string | number | readonly string[]-
defaultValue非受控模式下的默认值string | number | readonly string[]-
onChange输入值变化时触发(event) => void-
placeholder占位文本string-
type原生 input 类型string'text'
disabled是否禁用输入框boolean-
readOnly是否只读;当前实现会同时禁用底层 input 的编辑能力boolean-
clearable是否显示清空按钮booleanfalse
leading前置插槽,显示在输入框左侧ReactNode-
trailing后置插槽,显示在输入框右侧ReactNode-
size尺寸,影响高度、字号、内边距和插槽间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
className自定义 class;当前会作为多个 slot 的兜底 class 使用ClassValue-
classNames各 slot 的自定义 class(root / control / clearable / visible)InputClassNames-
name表单字段名称string-
required是否必填boolean-
autoComplete浏览器自动完成策略string-
autoFocus是否自动聚焦boolean-

类型

InputProps

Input 组件属性。继承原生 input 属性,移除原生 size,并增加项目尺寸、插槽、清空按钮和 slot class 配置。

字段类型说明
autoCompletestring浏览器自动完成策略。
autoFocusboolean是否自动聚焦。
classNameClassValue自定义 class。当前会作为多个 slot 的兜底 class 使用。
classNamesInputClassNames各 slot 的自定义 class。
clearableboolean是否显示清空按钮。
defaultValuestring | number | readonly string[]非受控默认值。
disabledboolean是否禁用。
leadingReactNode前置插槽内容。
namestring表单字段名称。
onChange(event) => void输入值变化回调。
placeholderstring占位文本。
readOnlyboolean是否只读。
requiredboolean是否必填。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。来自 StyledComponentProps。
trailingReactNode后置插槽内容。
typestring原生 input 类型。
valuestring | number | readonly string[]受控输入值。
...inputPropsinput element props without native size其他原生 input 属性。

InputClassNames

各 slot 的自定义 class,用于精细化控制 Input 各部分的样式。

字段类型说明
rootClassValue外层容器的 class。
controlClassValue底层 input 的 class。
clearableClassValue清空按钮图标的 class。
visibleClassValue变体中预留的可见状态 slot,当前主组件没有直接使用。

StyledComponentProps<T>

项目内用于包装组件 props 的通用类型。

字段类型说明
...sourcePropsinherited props without className继承原始组件属性,但重新定义 className。
classNameClassValue组件 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'项目统一尺寸类型。

SlotProps

前后插槽属性。

字段类型说明
leadingReactNode前置插槽内容。
trailingReactNode后置插槽内容。

InputSlots

Input 可配置 classNames 的内置 slot

'root' | 'control' | 'clearable' | 'visible'

ClassValue

CSS 类名类型

string | null | undefined | Record<string, boolean> | ClassValue[]

On this page