1.0.3 • Published 1 month ago

@tanzhenxing/zx-input-number v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
1 month ago

ZxInputNumber 数字输入框

仅允许输入标准的数字值,可定义范围。参考 Element Plus InputNumber 组件实现。

功能特性

  • ✅ 基础用法 - v-model 双向绑定
  • ✅ 数值范围控制 - min/max 属性
  • ✅ 禁用状态 - disabled 属性
  • ✅ 只读状态 - readonly 属性
  • ✅ 步进控制 - step 属性
  • ✅ 严格步进 - step-strictly 属性
  • ✅ 精度控制 - precision 属性
  • ✅ 多种尺寸 - size 属性 (large/default/small)
  • ✅ 按钮位置 - controls-position 属性
  • ✅ 自定义图标 - decrease-icon/increase-icon 插槽
  • ✅ 前缀后缀 - prefix/suffix 插槽
  • ✅ 键盘控制 - 上下箭头键支持
  • ✅ 事件支持 - change/focus/blur 事件
  • ✅ 方法暴露 - focus()/blur() 方法

基础用法

<template>
  <zx-input-number v-model="num" :min="1" :max="10" @change="handleChange" />
</template>

<script setup>
import { ref } from 'vue'
import ZxInputNumber from './components/zx-input-number/zx-input-number.vue'

const num = ref(1)
const handleChange = (value) => {
  console.log(value)
}
</script>

API

属性 (Props)

属性名说明类型默认值
modelValue / v-model选中项绑定值Number-
min设置计数器允许的最小值Number-Infinity
max设置计数器允许的最大值NumberInfinity
step计数器步长Number1
stepStrictly是否只能输入 step 的倍数Booleanfalse
precision数值精度Number-
size计数器尺寸String'default'
readonly原生 readonly 属性,是否只读Booleanfalse
disabled是否禁用状态Booleanfalse
controls是否使用控制按钮Booleantrue
controlsPosition控制按钮位置String''
name等价于原生 input name 属性String-
ariaLabel等价于原生 input aria-label 属性String-
placeholder等价于原生 input placeholder 属性String-
id等价于原生 input id 属性String-
valueOnClear当输入框被清空时显示的值Number/Stringnull
validateEvent是否触发表单验证Booleantrue

插槽 (Slots)

名称说明
decrease-icon自定义输入框按钮减少图标
increase-icon自定义输入框按钮增加图标
prefix输入框头部内容
suffix输入框尾部内容

事件 (Events)

名称说明类型
change绑定值被改变时触发Function
blur在组件 Input 失去焦点时触发Function
focus在组件 Input 获得焦点时触发Function

暴露方法 (Exposes)

名称详情类型
focus使 input 组件获得焦点Function
blur使 input 组件失去焦点Function

使用示例

禁用状态

<zx-input-number v-model="num" :disabled="true" />

步进控制

<zx-input-number v-model="num" :step="2" />

严格步进

<zx-input-number v-model="num" :step="2" step-strictly />

精度控制

<zx-input-number v-model="num" :precision="2" :step="0.1" :max="10" />

不同尺寸

<zx-input-number v-model="num1" size="large" />
<zx-input-number v-model="num2" />
<zx-input-number v-model="num3" size="small" />

按钮位置

<zx-input-number 
  v-model="num" 
  :min="1" 
  :max="10" 
  controls-position="right" 
  @change="handleChange" 
/>

自定义图标

<zx-input-number v-model="num">
  <template #decrease-icon>
    <span>⬇</span>
  </template>
  <template #increase-icon>
    <span>⬆</span>
  </template>
</zx-input-number>

前缀和后缀

<zx-input-number v-model="num" :min="1" :max="10">
  <template #prefix>
    <span>¥</span>
  </template>
</zx-input-number>

<zx-input-number v-model="num" :min="1" :max="10">
  <template #suffix>
    <span>RMB</span>
  </template>
</zx-input-number>

注意事项

  1. precision 的值必须是一个非负整数,并且不能小于 step 的小数位数
  2. 当输入无效的字符串到输入框时,由于错误,输入值将把 NaN 导入到上层
  3. 支持键盘上下箭头键进行数值增减操作
  4. 组件会自动处理数值边界,确保值在 min 和 max 范围内

样式定制

组件使用 CSS 变量和 BEM 命名规范,可以通过覆盖相应的 CSS 类来自定义样式:

/* 自定义主要颜色 */
.zx-input-number__inner:focus {
  border-color: #your-primary-color;
}

/* 自定义按钮样式 */
.zx-input-number__decrease:hover,
.zx-input-number__increase:hover {
  color: #your-primary-color;
}
1.0.3

1 month ago

1.0.2

1 month ago

1.0.1

2 months ago