v0.1.9

InputNumber 数字输入框

引入import { InputNumberComponent } from '@apollo-design/ui';

通过鼠标或键盘,输入范围内的数值。

代码演示

加载中…

基本 #

数字输入框,通过鼠标或键盘输入范围内的数值。

加载中…

三种大小 #

三种大小的数字输入框,size 分别为 large、medium、small。

加载中…

不可用 #

点击按钮切换可用状态。

加载中…

高精度小数 #

string-mode 开启字符值模式(change 返回 string);step 支持小数。

加载中…

格式化展示 #

通过 formatter 格式化展示,parser 解析回数值。

加载中…

键盘行为 #

使用 keyboard={false} 禁用键盘上下键行为。

加载中…

形态变体 #

四种形态变体:outlined / filled / borderless / underlined。

加载中…

拨轮 #

mode="spinner" 切换为拨轮形态(上下按钮在两侧)。

加载中…

超出边界 #

受控模式下 value 可以超出 min / max,超出时以错误色展示(不回弹)。

加载中…

前缀 / 后缀 #

用 #prefix / #suffix 编写富内容模板;slot 存在时优先于内容 prop,空 slot 也不回退。按钮演示条件插槽移除后恢复 prop 内容。

Use #prefix / #suffix for rich template content. A present slot, including an empty one, overrides its prop. Toggle the slots to restore prop content.

加载中…

自定义状态 #

使用 status 设置校验状态(error / warning)。

加载中…

自定义语义结构的样式和类 #

classNames / styles 支持按语义结构(root / input / actions 等)定制。

加载中…

带前后缀 #

用 Space.Compact + Space.Addon 给数字输入框加上单位前后缀(addonBefore / addonAfter 已 deprecated)。

加载中…

增减按钮 #

controls 传 false 可隐藏增减按钮,传 { upIcon, downIcon } 可替换为自定义图标。

加载中…

滚轮步进 #

开启 changeOnWheel 后,输入框聚焦时可用鼠标滚轮改变数值,onStep 的 info.emitter 会标记来源为 wheel。

加载中…

形态与尺寸 #

把 variant(filled / outlined / borderless / underlined)与 size(large / medium / small)组合使用。

加载中…

聚焦控制 #

通过模板 ref 获取 InputNumberRef,再调用 focus() / blur() 控制输入焦点。按钮均为带可见文本的库组件按钮,操作结果通过 aria-live 区域播报。

加载中…

组件 Token #

通过 theme.components.InputNumber 设置步进按钮宽度、内边距、箭头颜色与常显状态,并通过当前主题配置聚焦色。组件将有效值映射到根节点的 CSS 变量;原生 style 中的变量仍可覆盖它们。

加载中…

形态 / 尺寸 / 状态组合 #

把 variant(filled / outlined / borderless / underlined)、size(large / medium / small)与 status(error / warning)组合使用。每个示例都包在带可见文本的 <label> 中,并补充 aria-label。

加载中…

拨轮尺寸 #

mode="spinner" 把上下箭头换成加减按钮。示例并排展示 large / medium / small 三种尺寸,每个控件都有可见的 <label> 文本和 aria-label。

API

参数 说明 类型 默认值
value 当前值(v-model:value),null 表示空值 number | string | null -
defaultValue 初始值 number | string -
min 最小值 number | string -
max 最大值 number | string -
step 每次改变步数,可以为小数 number | string 1
precision 数值精度,配置 formatter 时会以 formatter 为准 number -
formatter 指定输入框展示值的格式 function(value, info: { userTyping, input }): string -
parser 指定从 formatter 里转换回数字的方式 (displayValue: string | undefined) => string | number -
disabled 禁用 boolean false
readOnly 只读 boolean false
keyboard 是否启用键盘快捷行为 boolean true
controls 是否显示增减按钮,也可设置自定义箭头图标 boolean | { upIcon, downIcon } true
mode 展示输入框或拨轮 'input' | 'spinner' 'input'
stringMode 字符值模式,开启后支持高精度小数 boolean false
changeOnBlur 失焦时是否触发 change(把超界值回正) boolean true
changeOnWheel 聚焦时允许滚轮步进 boolean false
decimalSeparator 小数点 string -
placeholder 占位符 string -
prefix 前缀 VNodeChild -
suffix 后缀 VNodeChild -
size 输入框大小 large | medium | small -
status 设置校验状态 'error' | 'warning' -
variant 形态变体 outlined | borderless | filled | underlined outlined
autoFocus 自动聚焦 boolean false
classNames 语义化 class(root/prefix/suffix/input/actions,支持函数) - -
styles 语义化 style(同上,支持函数) - -
bordered Deprecated 使用 variant 替代 boolean true
addonBefore Deprecated 使用 Space.Compact 替代 VNodeChild -
addonAfter Deprecated 使用 Space.Compact 替代 VNodeChild -

插槽

名称 说明 作用域
prefix 前缀富内容;优先于 prefix prop 无
suffix 后缀富内容;优先于 suffix prop,反馈图标继续显示 无

在渲染期读取插槽,支持条件出现/移除及动态内容;明确提供空 slot 不会回退 prop。无 slot 时保留内容 prop;不改变输入节点、数值格式化、步进和 v-model 行为。

事件

事件 说明 回调参数
change 变化回调(v-model:value 同步发出) function(value: number | string | null)
press-enter 按下回车的回调 function(e: KeyboardEvent)
step 点击上下箭头、键盘、滚轮的回调。⚠️ value 是 string | number —— stringMode 下是字符串 function(value: string | number, info: { offset, type: 'up' | 'down', emitter: 'handler' | 'keyboard' | 'wheel' })

change、step、pressEnter 均为声明的 Vue 事件,支持模板监听与 .once。@change 与 onChange 是同一监听器通道,接收数值、stringMode 字符串或空值 null;外层包装只转发一次,不混入原生 DOM change。输入法组合中的 Enter 不提交数值或发送 press-enter;原生 @keydown.prevent 可以取消该次内部键盘处理。

受控值与原生属性

value !== undefined 时,用户操作只提议更新;父级未接受的提议不会成为撤控后的值。把 value 改为 undefined 后保留最后一次实际接收的值;defaultValue 只用于初始化,显式 null 不会回退到默认值。

原生 class、style 与鼠标监听器落根容器;id、name、tabindex、label/ARIA、focus/blur、keydown 等原生属性和监听器落实际 input。组件维护数值状态、spinbutton 角色及数值 ARIA。input 是内部文本收集通道;监听数值变化请用 change / update:value。

ConfigProvider 的 components.inputNumber 接受 InputNumberConfig:className、平铺 style、classNames、styles、variant。根样式按 Provider 语义样式、Provider 平铺样式、组件语义样式、原生 style 的顺序合并,后者覆盖同名属性。函数式语义配置接收当前解析后的 size、disabled、controls、variant。

组件 Token

通过 theme.components.InputNumber 配置;尺寸支持非负数值(转换为 px)或 CSS 长度字符串。当前主题、嵌套覆盖和移除均实时生效,原生 style 中的 CSS 变量优先。

Token 说明
controlWidth 输入框宽度,默认 90px
handleWidth / handleFontSize 步进区域宽度与图标字号
handleVisible 常规 input 模式:'auto' 默认悬停/聚焦显示;true 常显;false 隐藏
handleBg / handleActiveBg / filledHandleBg 步进区域、按压及 filled 背景色
handleHoverColor / handleBorderColor 步进悬停色与边框色
paddingBlock / paddingBlockSM / paddingBlockLG 三档垂直内边距
paddingInline / paddingInlineSM / paddingInlineLG 三档水平内边距
inputFontSize / inputFontSizeSM / inputFontSizeLG 三档输入字号
inputAffixPadding 前后缀与输入区域的间距
handleOpacity / handleVisibleWidth 常态透明度与可见宽度,默认从 handleVisible 派生

Ref

名称 说明
focus(option) 获取焦点;option.cursor 为 'start' | 'end' | 'all'
blur() 移除焦点
nativeElement 根 DOM 元素

注意事项

  • 受控模式下 value 可以超出 min / max(以错误样式展示,不回弹);用户交互产生的值会被钳制回范围内。
  • 键入过程中不做 precision 格式化与范围钳制,失焦或回车时统一回正(上游双状态机语义)。
  • parser 未提供时,中文句号 。 会被自动替换为小数点。
Powered by Vue 3 + ViteApollo Design · Vue NativeGitHub