NumberInput 数字输入

保留十进制编辑中间态,并向宿主报告解析值和步进原因。

Beta

示例

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

宿主同时保存编辑中的原始字符串和解析结果;组件内部增减按钮使用 Provider 的中文标签。
本地数量编辑
原始值:1.5;解析值:1.5初始值在允许范围内
最小值、最大值和步长共同约束可提交范围。
宿主持有字符串输入并通过数值回调获得解析结果。
当前输入:8
只读、禁用和错误数值使用不同交互与语义。

使用建议

同时保存原始字符串与解析结果

value 使用字符串以保留空值、负号和小数点等编辑中间态;onValueChange 的数值可能为 null,宿主应使用 details.rawValue 回传显示值。

把步进和最终校验分开

方向键和显式按钮按 min、max 与 step 步进,但普通输入不会自动裁剪;宿主应在提交或业务约定的时机处理越界值。

只把内部按钮文案交给 Provider

增减按钮默认读取 MonkeysProvider 的 numberInput 消息;字段标签、单位、格式说明和校验错误仍由宿主业务 i18n 提供。

引入方式

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

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

当前限制

  • NumberInput 只解析普通十进制字符串,不支持科学计数、千分位、货币或地区格式、表达式解析与滚轮改值。
  • T17 尚缺 manual keyboard/focus、deterministic visual 与 packed React 18/19 证据;编辑中间态、步进边界和移动端输入尚未完成最终人工闭环。
  • Manual keyboard/focus review, deterministic visual evidence, and packed React 18/19 checks are pending T17/T23.
export interface BaseNumberInputProps
  extends Omit<
    InputHTMLAttributes<HTMLInputElement>,
    | 'aria-valuemax'
    | 'aria-valuemin'
    | 'aria-valuenow'
    | 'aria-valuetext'
    | 'className'
    | 'defaultValue'
    | 'disabled'
    | 'inputMode'
    | 'max'
    | 'min'
    | 'onChange'
    | 'onKeyDown'
    | 'readOnly'
    | 'role'
    | 'step'
    | 'style'
    | 'type'
    | 'value'
  > {
  value?: string;
  defaultValue?: string;
  min?: number;
  max?: number;
  step?: number;
  showStepControls?: boolean;
  incrementLabel?: string;
  decrementLabel?: string;
  invalid?: boolean;
  disabled?: boolean;
  readOnly?: boolean;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseNumberInputClassNames;
  style?: CSSProperties;
  onChange?: InputHTMLAttributes<HTMLInputElement>['onChange'];
  onKeyDown?: InputHTMLAttributes<HTMLInputElement>['onKeyDown'];
  onValueChange?: (
    value: number | null,
    details: BaseNumberInputValueChangeDetails,
  ) => void;
}
属性说明类型默认值
value数值输入框当前的受控数值;空值使用 null。string
defaultValue非受控模式下使用的初始值。string''
min允许的最小数值。number
max允许的最大数值。number
step数值每次增加或减少的步长。number1
showStepControls是否显示数值增加和减少按钮。booleanfalse
incrementLabel增加数值按钮的可访问名称。string
decrementLabel减少数值按钮的可访问名称。string
invalid是否进入无效状态并应用相应的校验样式与语义。booleanfalse
disabled是否禁用该组件及其可交互行为。booleanfalse
readOnly是否将控件设为只读,同时保留聚焦与内容读取能力。booleanfalse
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseNumberInputClassNames
style追加到组件根元素的内联样式。CSSProperties
onChange底层输入事件发生时调用的原生变更回调。InputHTMLAttributes<HTMLInputElement>['onChange']
onKeyDown输入框收到键盘事件时调用的回调。InputHTMLAttributes<HTMLInputElement>['onKeyDown']
onValueChange值变化时调用的回调;参数结构以当前组件的 Props 类型为准。( value: number | null, details: BaseNumberInputValueChangeDetails, ) => void