Skyroc UI
输入

Password

带密码可见性切换能力的输入框组件

Password 用于输入密码、密钥等敏感文本。组件基于 Input 封装,保留输入框的尺寸、插槽、清空按钮和原生 input 属性,并额外提供密码明文/密文切换能力。

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

何时使用

  • 需要输入密码、确认密码、访问令牌或密钥。
  • 需要让用户临时查看输入内容,减少密码输入错误。
  • 需要复用 Input 的尺寸、插槽、清空按钮和表单属性。
  • 普通单行文本输入使用 Input;需要数值步进时使用 NumberInput。

基础用法

默认情况下,Password 使用密文输入,并在右侧显示可见性切换按钮。

Preview
Code
Loading...
<Password placeholder="Please input password" />

受控可见性

通过 visibleonVisibleChange 控制密码是否明文显示;非受控模式使用 defaultVisible

Preview
Code
Loading...
const [visible, setVisible] = useState(false);

<Password visible={visible} onVisibleChange={setVisible} />

可清空

通过 clearable 显示清空按钮。清空按钮来自 Input,会清空当前 DOM value 并触发 input 事件。

Preview
Code
Loading...
<Password clearable defaultValue="abc123" />

自定义图标

通过 hiddenIconvisibleIcon 替换默认的 EyeOff / Eye 图标。hiddenIcon 在密码处于隐藏状态时显示,visibleIcon 在密码处于明文状态时显示。

Preview
Code
Loading...
<Password
  hiddenIcon={<Lock />}
  visibleIcon={<LockOpen />}
/>

禁用

通过 disabled 禁用输入框。Password 继承 Input 的只读逻辑,readOnly 也会让底层 input 不可编辑。

Preview
Code
Loading...
<Password disabled defaultValue="abc123" />

尺寸

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

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

API

Password

通用属性参考:继承 Input 的常用属性和原生 input 属性,但底层 type 由可见性状态自动控制。

属性说明类型默认值
value受控输入值string | number | readonly string[]-
defaultValue非受控模式下的默认值string | number | readonly string[]-
onChange输入值变化时触发(event) => void-
placeholder占位文本string-
visible受控模式下密码是否明文显示boolean-
defaultVisible非受控模式下密码是否默认明文显示booleanfalse
onVisibleChange可见性状态变化时触发(visible: boolean) => void-
hiddenIcon密码隐藏时显示的切换图标ReactNode<EyeOff />
visibleIcon密码明文显示时显示的切换图标ReactNode<Eye />
clearable是否显示清空按钮booleanfalse
disabled是否禁用输入框boolean-
readOnly是否只读;当前实现会同时禁用底层 input 的编辑能力boolean-
leading前置插槽,显示在输入框左侧ReactNode-
trailing后置插槽,显示在清空按钮和可见性按钮之间ReactNode-
size尺寸,影响高度、字号、内边距和插槽间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
className自定义 class;继承 Input 当前的兜底 class 行为ClassValue-
classNamesInput 各 slot 的自定义 class(root / control / clearable / visible)InputClassNames-
name表单字段名称string-
required是否必填boolean-
autoComplete浏览器自动完成策略;默认值为 off,可通过 props 覆盖string'off'
autoFocus是否自动聚焦boolean-

类型

PasswordProps

Password 组件属性。继承 InputProps,并增加密码可见性控制相关字段。

字段类型说明
valuestring | number | readonly string[]受控输入值。
defaultValuestring | number | readonly string[]非受控默认值。
onChange(event) => void输入值变化回调。
placeholderstring占位文本。
visibleboolean受控可见性状态。
defaultVisibleboolean非受控默认可见性状态。
onVisibleChange(visible: boolean) => void可见性变化回调。
hiddenIconReactNode密码隐藏时显示的切换图标。
visibleIconReactNode密码明文显示时显示的切换图标。
clearableboolean是否显示清空按钮。
disabledboolean是否禁用。
readOnlyboolean是否只读。
leadingReactNode前置插槽内容。
trailingReactNode后置插槽内容,会显示在可见性按钮之前。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。
classNameClassValue自定义 class。
classNamesInputClassNamesInput slot class 配置。
namestring表单字段名称。
requiredboolean是否必填。
autoCompletestring浏览器自动完成策略。
autoFocusboolean是否自动聚焦。
...inputPropsinput element props without native size其他原生 input 属性;底层 type 由 Password 自动控制。

InputClassNames

Password 继承 Input 的 slot class 配置。

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

ClassValue

CSS 类名类型

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

On this page