Skip to content

nax-number-box

当前版本:0.1.5

uni-app x 步进器(加减数量)。

安装

easycom 自动生效,页面直接使用 <nax-number-box /> 即可。

建议同时安装主题包 uni_modules/nax-ui-theme 并在 App.uvue 引入主题变量,详见 主题接入

代码示例

基础用法
uvue
<nax-number-box v-model="value" @change="onChange"></nax-number-box>
基础用法
uvue
<nax-number-box v-model="basic" @change="onBasicChange"></nax-number-box>
uts
const basic = ref(1)

function onBasicChange(v : number) {
	// v 为最新值
}
尺寸 size
uvue
<nax-number-box v-model="sizeSm" size="sm"></nax-number-box>
<nax-number-box v-model="sizeMd" size="md"></nax-number-box>
<nax-number-box v-model="sizeLg" size="lg"></nax-number-box>
uts
const sizeSm = ref(1)
const sizeMd = ref(2)
const sizeLg = ref(3)
范围 min / max / step
uvue
<nax-number-box v-model="rangeVal" :min="1" :max="10" :step="1" @overlimit="onOverlimit"></nax-number-box>

<nax-number-box v-model="stepVal" :min="0" :max="5" :step="0.5"></nax-number-box>
uts
const rangeVal = ref(1)
const stepVal = ref(0)

function onOverlimit(type : string) {
	// type 为 'plus' 或 'minus',已达边界
}
仅整数 integer
uvue
<nax-number-box v-model="intVal" integer :min="0" :max="99"></nax-number-box>
uts
const intVal = ref(3)
禁用
uvue
<nax-number-box v-model="disabledAll" disabled></nax-number-box>

<nax-number-box v-model="disabledInputVal" disabled-input></nax-number-box>

<nax-number-box v-model="disableBtnVal" disable-plus disable-minus></nax-number-box>
uts
const disabledAll = ref(5)
const disabledInputVal = ref(2)
const disableBtnVal = ref(4)
长按 longPress
uvue
<nax-number-box v-model="longPressOn" :long-press="true"></nax-number-box>

<nax-number-box v-model="longPressOff" :long-press="false"></nax-number-box>
uts
const longPressOn = ref(0)
const longPressOff = ref(0)
异步变更 asyncChange
uvue
<nax-number-box v-model="asyncVal" async-change @change="onAsyncChange"></nax-number-box>
uts
const asyncVal = ref(1)
const asyncBusy = ref(false)

// 收到 change 后延迟回写 v-model,期间可展示“提交中”状态
function onAsyncChange(v : number) {
	if (asyncBusy.value) {
		return
	}
	asyncBusy.value = true
	const target = v
	setTimeout(() => {
		asyncVal.value = target
		asyncBusy.value = false
	}, 800)
}
自定义颜色 / 宽度
uvue
<nax-number-box v-model="colorVal" bg-color="#e8f5ee" color="#18a058" :button-size="36" :input-width="56"></nax-number-box>
uts
const colorVal = ref(1)
自定义插槽
uvue
<nax-number-box v-model="slotVal">
	<template #minus>
		<text class="slot-text">减</text>
	</template>
	<template #plus>
		<text class="slot-text">加</text>
	</template>
</nax-number-box>
uts
const slotVal = ref(1)
事件
uvue
<nax-number-box
	v-model="eventVal"
	:min="0"
	:max="20"
	@change="onEventChange"
	@focus="onEventFocus"
	@blur="onEventBlur"
	@plus="onEventPlus"
	@minus="onEventMinus"
	@overlimit="onOverlimit"
></nax-number-box>
uts
const eventVal = ref(0)
const eventLog = ref('等待操作')

function onEventChange(v : number) {
	eventLog.value = 'change: ' + v.toString()
}

function onEventFocus() {
	eventLog.value = 'focus'
}

function onEventBlur(v : number) {
	eventLog.value = 'blur: ' + v.toString()
}

function onEventPlus() {
	eventLog.value = 'plus'
}

function onEventMinus() {
	eventLog.value = 'minus'
}

function onOverlimit(type : string) {
	eventLog.value = 'overlimit: ' + type
}

主题

通过 CSS 变量覆盖:

Token用途
--nax-color-bg-hover按压/悬停背景色
--nax-color-bg-secondary次级背景色
--nax-color-text主文字色
--nax-color-text-disabled禁用文字色
--nax-opacity-disabled禁用透明度

Props

属性类型默认值说明
modelValuenumber0当前值(v-model)
minnumber0最小值
maxnumber999999最大值
stepnumber1步长
integerbooleanfalse是否仅允许整数
disabledbooleanfalse整体禁用
disabledInputbooleanfalse仅禁用中间输入
disablePlusbooleanfalse禁用加号
disableMinusbooleanfalse禁用减号
asyncChangebooleanfalse异步变更:点击后不立刻改内部值,等外部 v-model 回写
longPressbooleantrue长按连续加减
sizestring'md'sm 小 | md 中 | lg
inputWidthnumber0输入框宽度(px);0 跟随 size
buttonSizenumber0按钮边长(px);0 跟随 size
showMinusbooleantrue显示减号
showPlusbooleantrue显示加号
bgColorstring''按钮/输入背景;空则主题次级背景
colorstring''文字/图标色;空则主题正文色
cursorSpacingnumber100键盘与光标间距
customClassstring''根节点扩展 class

Events

事件说明
update:modelValuev-model
change值变化(number)
focus输入框聚焦
blur输入框失焦(number)
overlimit触达边界('minus' | 'plus')
minus点击减号
plus点击加号

Slots

插槽说明
minus自定义减号
plus自定义加号