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.

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

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