Skip to content

LxInputNumber

Visão geral

O componente LxInputNumber é utilizado para exibir um campo de entrada de números com diversas opções de personalização, incluindo rótulo, mensagens de erro, texto de ajuda, e validações. Ele também suporta slots para customização do conteúdo do rótulo, mensagem de erro e texto de ajuda.

O LxInputNumber utiliza a biblioteca Vue Money 3, para mais informações consulte a documentação.

Clique para visualizar o código
vue
<script setup>
import { ref } from 'vue';
import { LxInputNumber } from '@lde/lxcomponents';
import { LxInputDecimal } from '@lde/lxcomponents';
import { LxInputMoney } from '@lde/lxcomponents';

const numberValue = ref(5);
const moneyValue = ref(5.5);
const decimalValue = ref(5.5);
</script>

<template>
	<div class="container">
		<LxInputNumber id="input-number-example" label="Number" v-model="numberValue" />
		<LxInputDecimal id="input-decimal-example" label="Decimal" v-model="decimalValue" />
		<LxInputMoney id="input-money-example" label="Money" v-model="moneyValue" />
	</div>
</template>

<style scoped>
.container {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: 0;
}
</style>

Variações

VariaçãoDescrição
LxInputMoneyVariação do LxInputNumber pré configurada para lidar com moedas.
LxInputDecimalVariação do LxInputNumber pré configurada para lidar com decimais.

Formato do v-model

⚠️ O v-model é obrigatório (required: true). O tipo da saída depende da prop masked.

maskedTipo emitidoExemplo
false (padrão)Number1234.56
trueString (formatada)"1.234,56"

Inicialização:

javascript
const preco = ref(null)    // null para campo vazio
const quantidade = ref(0)  // 0 quando o campo não pode ser nulo

Saída:

javascript
// masked: false (padrão)
preco.value   // → 1234.56 (Number)

// masked: true
preco.value   // → "1.234,56" (String com máscara)

Propriedades

NomeDescriçãoTipoPadrão
idIdentificador único do campo de entrada.StringRequired
modelValueValor do campo de entrada. .
Nota: Utilizar a implementação padrão com o v-model.
String ou NumberRequired
labelRótulo do campo de entrada.String''
errorTextTexto de erro exibido quando o campo é inválido.String''
isInvalidIndica se o campo está em estado inválido.Booleanfalse
helpTextTexto de ajuda exibido abaixo do campo de entrada.String''
requiredIndica se o campo é obrigatório.Booleanfalse
sizeTamanho do campo de entrada ('sm', 'md', 'lg').String'md'
fluidDetermina se o componente deve ocupar toda a largura disponível.Booleantrue
precisionNúmero de casas decimais para o valor.Number0
prefixTexto exibido antes do valor numérico.String''
suffixTexto exibido depois do valor numérico.String''
maskedDefine se o valor com máscara deve ser salvo no modelValue.Booleanfalse
allowNegativePermite a inserção de valores negativos.Booleanfalse
minValor mínimo permitido.Numbernull
maxValor máximo permitido.Numbernull
allowBlankPermite que o campo fique em branco.Booleantrue
minLengthNúmero mínimo de caracteres exigidos.Number0
shouldRoundDetermina se o valor inicial do modelValue deve ser arredondado.Booleanfalse
focusOnRightPosiciona o cursor à direita quando o campo recebe foco.Booleanfalse
clearableAdiciona um x no canto direito para apagar o conteúdo do campo quando tiver conteúdoBooleanfalse

Eventos

NomeDescrição
update:modelValueEmitido quando o valor do campo de entrada é atualizado.
Nota: Utilizar a implementação padrão com o v-model.

Slots

NomeDescrição
label-contentConteúdo personalizado para o rótulo do campo de entrada.
error-contentConteúdo personalizado para a mensagem de erro.
help-contentConteúdo personalizado para o texto de ajuda.

Atributos

O componente LxInputNumber permite que você passe atributos personalizados para o campo de entrada utilizando fallthrough attributes do Vue. Isso é feito através do uso de useAttrs para herdar atributos não definidos nas propriedades.

Todos os atributos herdados por padrão serão passados diretamente para o input, com excessão dos atributos disponíveis definidos abaixo.

Atributos Disponíveis

AtributoDescrição
attrs-wrapperAtributos personalizados para o wrapper do componente.
attrs-labelAtributos personalizados para a label.
attrs-invalidAtributos personalizados para a mensagem de erro.
attrs-helpAtributos personalizados para o texto de ajuda.

Exemplo de Uso

Você pode passar atributos personalizados os elementos que compoe o InputNumber. Veja um exemplo abaixo:

Clique para visualizar o código
vue
<template>
	<!-- As propriedades { id: 'custom-id', class: 'custom-class', disabled: true } seriam inseridas como atributos do botão de help.  -->
	<LxInputNumber :attrs-help="{ id: 'custom-id', class: 'custom-class', disabled: true }" />

	<!-- O atributo "aria-label" não é uma propriedade explicitamente declarada no componente. Logo a mesma seria inserida no elemento do input  -->
	<LxInputNumber aria-label="false" />
</template>

Classes Padrão

O componente LxInputNumber utiliza uma série de classes CSS padrão que podem ser personalizadas. Essas classes permitem que você estilize qualquer parte do campo de entrada usando :deep com a classe desejada.

NomeDescrição
lx-input-number-wrapperConteúdo personalizado para o container.
lx-input-number-labelConteúdo personalizado para o rótulo.
lx-input-numberConteúdo personalizado para o input.
lx-input-number-invalid-messageConteúdo personalizado para a mensagem de erro.
lx-input-number-help-messageConteúdo personalizado para o texto de ajuda.

Exemplo de Personalização

Você pode personalizar o estilo do campo de entrada utilizando as classes padrão com o seletor :deep. Veja um exemplo de como alterar o estilo do rótulo do campo de entrada:

Clique para visualizar o código
vue
<style scoped>
:deep(.lx-input-number-label) {
  color: #007bff;
  font-weight: bold;
}
</style>

Playground

Texto de ajuda

Desenvolvido pelo time Linx Microvix