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]