InputNumber 計數器
LhInputNumber 用於輸入數字,支援範圍限制、步長和精度控制。
基礎用法
基礎用法
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhInputNumber } from '@lh-ui/vue3'
const count = ref(0)
</script>
<template>
<LhInputNumber v-model="count" />
</template>vue
<script>
import { LhInputNumber } from '@lh-ui/vue3'
export default {
components: { LhInputNumber },
data() {
return {
count: 0
}
}
}
</script>
<template>
<LhInputNumber v-model="count" />
</template>範圍限制
範圍限制
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhInputNumber } from '@lh-ui/vue3'
const level = ref(5)
</script>
<template>
<LhInputNumber v-model="level" :min="1" :max="10" />
</template>vue
<script>
import { LhInputNumber } from '@lh-ui/vue3'
export default {
components: { LhInputNumber },
data() {
return {
level: 5
}
}
}
</script>
<template>
<LhInputNumber v-model="level" :min="1" :max="10" />
</template>自訂主題
套用青花瓷主題色。
青花瓷主題
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhConfigProvider, LhInputNumber } from '@lh-ui/vue3'
const count = ref(0)
const cerblueTheme = {
'primary-color': '#2B4C7C',
'primary-color-hover': '#3D649E',
'primary-color-bg': '#E8EDF3',
}
</script>
<template>
<LhConfigProvider :theme-vars="cerblueTheme">
<LhInputNumber v-model="count" />
</LhConfigProvider>
</template>vue
<script>
import { LhConfigProvider, LhInputNumber } from '@lh-ui/vue3'
export default {
data() {
return {
count: 0,
cerblueTheme: {
'primary-color': '#2B4C7C',
'primary-color-hover': '#3D649E',
'primary-color-bg': '#E8EDF3',
},
}
},
}
</script>
<template>
<LhConfigProvider :theme-vars="cerblueTheme">
<LhInputNumber v-model="count" />
</LhConfigProvider>
</template>國際化
國際化
vue
<script setup lang="ts">
import { ref } from 'vue'
import { LhConfigProvider, LhInputNumber } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'
const locale = ref('zh-CN')
const count = ref(0)
</script>
<template>
<!-- 語言包設定 -->
<LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
<!-- 佔位文字隨語言切換 -->
<LhInputNumber v-model="count" :placeholder="locale === 'zh-CN' ? '请输入数字' : 'Enter number'" />
</LhConfigProvider>
</template>vue
<script>
import { LhConfigProvider, LhInputNumber } from '@lh-ui/vue3'
import { zhCN } from '@lh-ui/vue3'
import { enUS } from '@lh-ui/vue3'
export default {
data() {
return {
locale: 'zh-CN',
count: 0,
zhCN: zhCN,
enUS: enUS,
}
},
}
</script>
<template>
<!-- 語言包設定 -->
<LhConfigProvider :locale="locale === 'zh-CN' ? zhCN : enUS">
<!-- 佔位文字隨語言切換 -->
<LhInputNumber v-model="count" :placeholder="locale === 'zh-CN' ? '请输入数字' : 'Enter number'" />
</LhConfigProvider>
</template>步長與精度
步長與精度
vue
<script setup lang="ts">
import { ref } from 'vue'
const value = ref<number | null>(1)
</script>
<template>
<LhInputNumber v-model="value" :step="2" />
<LhInputNumber v-model="value" :precision="2" placeholder="保留2位小数" />
<LhInputNumber v-model="value" :step="10" step-strictly placeholder="只能是10的倍数" />
</template>vue
<script>
export default {
data() {
return { value: 1 }
},
}
</script>
<template>
<LhInputNumber v-model="value" :step="2" />
<LhInputNumber v-model="value" :precision="2" placeholder="保留2位小数" />
<LhInputNumber v-model="value" :step="10" step-strictly placeholder="只能是10的倍数" />
</template>尺寸與控制按鈕
尺寸與控制按鈕
vue
<script setup lang="ts">
import { ref } from 'vue'
const value = ref<number | null>(1)
</script>
<template>
<LhInputNumber v-model="value" size="small" />
<LhInputNumber v-model="value" size="medium" />
<LhInputNumber v-model="value" size="large" />
<LhInputNumber v-model="value" :controls="false" placeholder="无控制按钮" />
</template>vue
<script>
export default {
data() {
return { value: 1 }
},
}
</script>
<template>
<LhInputNumber v-model="value" size="small" />
<LhInputNumber v-model="value" size="medium" />
<LhInputNumber v-model="value" size="large" />
<LhInputNumber v-model="value" :controls="false" placeholder="无控制按钮" />
</template>停用與表單名稱
停用與表單名稱
vue
<script setup lang="ts">
import { ref } from 'vue'
const value = ref<number | null>(1)
</script>
<template>
<LhInputNumber v-model="value" disabled />
<LhInputNumber v-model="value" name="quantity" placeholder="name=quantity" />
</template>vue
<script>
export default {
data() {
return { value: 1 }
},
}
</script>
<template>
<LhInputNumber v-model="value" disabled />
<LhInputNumber v-model="value" name="quantity" placeholder="name=quantity" />
</template>InputNumber API
Props
| 屬性 | 說明 | 類型 | 預設值 |
|---|---|---|---|
| modelValue | 目前值 | number | null |
| min | 最小值 | number | -Infinity |
| max | 最大值 | number | Infinity |
| step | 步長 | number | 1 |
| stepStrictly | 輸入值是否為 step 倍數 | boolean | false |
| precision | 數值精度 | number | — |
| disabled | 是否停用 | boolean | false |
| size | 尺寸 | "small" | "medium" | "large" | "mini" | "x-large" | 'medium' |
| controls | 是否顯示控制按鈕 | boolean | true |
| placeholder | 佔位文字 | string | '' |
| name | 原生表單名稱 | string | '' |
| sx | 快速版面配置屬性(如 { mt: 2, w: '50%' }),轉內聯樣式作用於根元素 | LhSxProps | — |
Events
| 事件 | 說明 | 參數 |
|---|---|---|
| update:modelValue | 值發生變化 | value: number |
| change | 值確認改變 | value: number |
支援鍵盤上下方向鍵增減數值。
類型定義
本元件對外匯出的 TypeScript 類型結構如下(自動提取自 packages/components/input-number/src/types.ts 與 @lh-ui/share/core/* 原始碼,點選各條目展開檢視完整定義;屬性說明見上方 Props 表):
LhInputNumberProps
ts
export interface LhInputNumberProps {
modelValue?: number | null
min?: number
max?: number
step?: number
stepStrictly?: boolean
precision?: number
disabled?: boolean
size?: LhComponentSize
controls?: boolean
placeholder?: string
name?: string
/** sx 快速版面配置屬性 */
sx?: LhSxProps
}LhInputNumberSize
ts
export type LhInputNumberSize = LhComponentSizeLhComponentSize (來自 @lh-ui/share/core/shared)
ts
export type LhComponentSize = (typeof LH_SIZE_CONST)[keyof typeof LH_SIZE_CONST]