Skip to content
API 风格:

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Текущее значениеnumbernull
minМинимальное значениеnumber-Infinity
maxМаксимальное значениеnumberInfinity
stepШаг измененияnumber1
stepStrictlyДолжно ли значение быть кратным stepbooleanfalse
precisionТочность (количество знаков после запятой)number—
disabledОтключён ли компонентbooleanfalse
sizeРазмер"small" | "medium" | "large" | "mini" | "x-large"'medium'
controlsПоказывать ли кнопки управленияbooleantrue
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 = LhComponentSize
LhComponentSize (из @lh-ui/share/core/shared)
ts
export type LhComponentSize = (typeof LH_SIZE_CONST)[keyof typeof LH_SIZE_CONST]

Красота традиций — основа кода