Skip to content

InputNumber 数字输入框 ​

@ew-color-picker/input-number 包含两部分:

  1. 插件 ewColorPickerInputNumber:随聚合包自动注册,把一个数字输入框挂到面板底部行;
  2. 组件 InputNumber:可独立使用的受控数字输入组件,ColorMode 插件在 RGB/HSL 模式下用它构建分通道输入组。
项值
包@ew-color-picker/input-number
pluginNameewColorPickerInputNumber
applyOrderPost
挂载点panelContainer → .ew-color-picker-bottom-row
访问实例core.plugins.ewColorPickerInputNumber

必须引入额外样式

数字输入框的样式在独立文件中:

ts
import '@ew-color-picker/style/dist/input-number.css'

只引入 index.css 会导致输入框无样式。

插件配置 ​

配置类型默认值说明
disabledbooleanfalse禁用所有由该插件管理的数字输入框

插件读取核心的 disabled 并同步给已创建的输入框。

插件方法 ​

ts
const inputNumberPlugin = picker.plugins.ewColorPickerInputNumber
方法签名说明
createInputNumber(options: InputNumberOptions) => InputNumber创建一个数字输入组件实例
updateOptions() => void重新读取核心配置并把 disabled 应用到所有实例
run() => void创建默认实例并挂到底部行
destroy() => void销毁全部实例并清空引用

InputNumber 组件 ​

ts
import { InputNumber } from '@ew-color-picker/input-number'

构造配置 ​

配置类型默认值说明
valuenumber0初始值
minnumber-Infinity最小值
maxnumberInfinity最大值
stepnumber1步进值
precisionnumber0小数位数
disabledbooleanfalse禁用
placeholderstring''占位符
size'small' | 'default' | 'large''default'尺寸
onChange(value: number) => void—值变化回调(防抖 300ms)
onBlur(value: number) => void—失焦回调
onFocus(event: FocusEvent) => void—聚焦回调

组件方法 ​

方法签名说明
getValue() => number读取当前值
setValue(value: number) => void设置值(会按 min/max/precision 规整)
setDisabled(disabled: boolean) => void切换禁用态
getElement() => HTMLElement获取根 DOM,便于自行挂载
destroy() => void解绑事件并移除 DOM

独立使用示例 ​

ts
import { InputNumber } from '@ew-color-picker/input-number'
import '@ew-color-picker/style/dist/input-number.css'

const num = new InputNumber({
  value: 50,
  min: 0,
  max: 100,
  step: 1,
  precision: 0,
  placeholder: '饱和度',
  onChange: (v) => console.log('新值', v),
})

document.body.appendChild(num.getElement())

初始化不触发 onChange

构造时会直接同步显示值,但不会调用 onChange,避免实例创建阶段误改颜色。只有用户交互才会触发。

DOM 结构 ​

html
<div class="ew-input-number ew-input-number--default">
  <input class="ew-input-number__input" type="text" inputmode="decimal" />
  <div class="ew-input-number__buttons">
    <button class="ew-input-number__button ew-input-number__button--up"></button>
    <button class="ew-input-number__button ew-input-number__button--down"></button>
  </div>
</div>
类名说明
.ew-input-number根节点
.ew-input-number--small / --default / --large尺寸
.ew-input-number--focused聚焦态
.ew-input-number--disabled禁用态
.ew-input-number__input输入框
.ew-input-number__buttons上下步进按钮容器
.ew-input-number__button--up / --down步进按钮

与 ColorMode 的关系 ​

ColorMode 在 RGB/HSL 模式下会:

  1. 调用 createInputNumber 创建 R/G/B/A 或 H/S/L/A 输入组;
  2. 把多个 InputNumber 放进 .ew-color-picker-inputs-group;
  3. 任一输入变化后合成颜色并调用 core.setColor()。

因此调色时不需要手动拼装这四个输入框。

完整示例 ​

ts
const picker = new ewColorPicker({
  el: '#app',
  defaultColor: '#f59e0b',
  defaultMode: 'rgb',
})

picker.on('change', (color) => {
  console.log('RGB 输入组改色:', color)
  // r/g/b 实时值
  console.log(picker.hsvaColor)
})

相关 ​