Skip to content

Input Number

The input element with formatting and manipulating numbers.

Examples

Input Number

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  number: null
})
</script>

<template>
  <form @submit.prevent="">
    <base-input-number v-model="form.number" />
  </form>
</template>

Label

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  number1: null,
  number2: null
})
</script>

<template>
  <form @submit.prevent="">
    <base-input-number
      v-model="form.number1"
      label="Label"
      layout="horizontal"
      description="Horizontal Layout"
    />
    <base-input-number
      v-model="form.number2"
      label="Label"
      layout="vertical"
      description="Vertical Layout"
    />
  </form>
</template>

Border

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  number1: null,
  number2: null,
  number3: null
})
</script>

<template>
  <form @submit.prevent="">
    <base-input-number v-model="form.number1" label="Without Border" border="none" />
    <base-input-number v-model="form.number2" label="Simple Border" border="simple" />
    <base-input-number v-model="form.number3" label="Full Border" border="full" />
  </form>
</template>

Helper

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  number1: 0,
  number2: 0,
  number3: 0,
  number4: 0,
  number5: 0,
  number6: 10000
})

const errors = ref(['Error example'])
</script>

<template>
  <form @submit.prevent="">
    <base-input-number v-model="form.number1" label="Label" required />
    <base-input-number v-model="form.number2" label="Label" placeholder="Placeholder example" />
    <base-input-number v-model="form.number3" label="Label" description="Description example" />
    <base-input-number v-model="form.number4" label="Label" :helpers="['Helper example']" />
    <base-input-number v-model="form.number5" label="Label" v-model:errors="errors" />
    <base-input-number v-model="form.number6" label="Label" disabled />
  </form>
</template>

Input Number API

Types

ts
export type BaseInputNumberBorderType = 'none' | 'simple' | 'full'
export type BaseFormLayoutType = `horizontal` `vertical`

Props

NameTypeDefaultDescription
v-modelstringv-model is required.
v-model:errorsstring[]Input error message.
labelstringInput label.
descriptionstringInput description.
alignleft rightrightInput align.
borderBaseInputNumberBorderTypesimpleInput border.
layoutBaseFormLayoutTypeverticalInput layout.
decimalLengthnumber0Input decimal length.
requiredbooleanfalseif true input is required.
helpersstring[]Input helper message.
data-testidstringTesting ID.

Automated Test Guide

If you pass a data-testid to the <base-input-number> component, it will automatically generate unique data-testid attributes for testing.

Gherkin Scenario

txt
When I type "15000" into "price"

Step Definition

ts
When('I type {string} into {string}', (value: string, selector: string) => {
  cy.get(`[data-testid="${selector}"]`).type(value)
})

Code Implementation

vue
<script setup>
import { ref } from 'vue'

const price = ref()
</script>

<template>
  <base-input-number v-model="price" data-testid="price" />
</template>

Released under the MIT License.