Skyroc UI
输入

Input

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

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

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

何时使用

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

基础用法

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

Preview
Code
Loading...

禁用

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

Preview
Code
Loading...

插槽

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

Preview
Code
Loading...

可清空

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

Preview
Code
Loading...

尺寸

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

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

自定义样式

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

API

Input

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

属性说明类型默认值
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