Skip to content

MeLabel

Label de formulário com suporte a campo obrigatório (asterisco) e tooltip de ajuda contextual.

Playground

Importação

vue
<script>
import { MeLabel } from '@/components/global/utils/export/index'
</script>

Uso Básico

vue
<MeLabel label="Nome completo" />

Campo Obrigatório

Use mandatory para exibir um asterisco vermelho indicando que o campo é obrigatório.

vue
<MeLabel label="Campo obrigatório" :mandatory="true" />
<MeLabel label="Campo opcional" />

Associado a um Input

Use relation para definir o atributo for do label, associando-o ao input correspondente.

vue
<MeLabel label="E-mail" relation="email-input" :mandatory="true" />
<input id="email-input" type="email" placeholder="seu@email.com" />

Com Tooltip

Use tooltip para exibir um ícone de ajuda que revela texto informativo ao passar o mouse.

vue
<MeLabel
  label="Senha"
  tooltip="Mínimo de 8 caracteres, com letras e números"
/>

Posicionamento do Tooltip

vue
<MeLabel label="Centro (padrão)" tooltip="Tooltip centralizado" />
<MeLabel label="Esquerda" tooltip="Tooltip à esquerda" :tooltipAlignStart="true" />
<MeLabel label="Direita" tooltip="Tooltip à direita" :tooltipAlignEnd="true" />
<MeLabel label="Acima" tooltip="Tooltip acima" :tooltipAlignTop="true" />

Combinado

vue
<MeLabel
  label="Senha"
  relation="senha-input"
  :mandatory="true"
  tooltip="Mínimo de 8 caracteres, com letras e números"
/>
<input id="senha-input" type="password" />

Margens

O MeLabel possui margem inferior padrão (8px sem tooltip, 4px com tooltip) pensada para uso em formulários. Quando necessário sobrescrever — por exemplo, ao usá-lo dentro de outros componentes como o MeSwitch — use as props de margem.

Padrão preservado

Quando nenhuma prop de margem é passada, o comportamento original é mantido. Usos existentes do MeLabel não são afetados.

mb — Margem inferior

vue
<MeLabel label="Nome completo" :mb="24" />
<input type="text" />

mt — Margem superior

vue
<input type="text" />
<MeLabel label="Próximo campo" :mt="24" />

ml — Margem esquerda

vue
<MeLabel label="Campo recuado" :ml="24" />

mr — Margem direita

vue
<MeLabel label="Campo com espaço à direita" :mr="24" />

mx — Margem horizontal

Atalho para ml e mr ao mesmo tempo.

vue
<MeLabel label="Campo centralizado" :mx="24" />

my — Margem vertical

Atalho para mt e mb ao mesmo tempo.

vue
<input type="text" />
<MeLabel label="Campo intermediário" :my="24" />
<input type="text" />

API

Props

PropTipoPadrãoDescrição
labelstring-Texto exibido no label
relationstring-ID do input associado (atributo for)
mandatorybooleanfalseExibe asterisco vermelho indicando campo obrigatório
tooltipstring-Texto do tooltip de ajuda contextual
tooltipAlignEndbooleanfalseAlinha o tooltip à direita
tooltipAlignStartbooleanfalseAlinha o tooltip à esquerda
tooltipAlignTopbooleanfalseExibe o tooltip acima do elemento
marginstring | number-Margem em todos os lados
mtstring | number-Margem superior
mbstring | number-Margem inferior
mlstring | number-Margem esquerda
mrstring | number-Margem direita
mxstring | number-Margem horizontal (esquerda e direita)
mystring | number-Margem vertical (superior e inferior)

Acessibilidade

  • O atributo for (via relation) associa semanticamente o label ao input
  • O asterisco * é renderizado como <span> — considere adicionar aria-required="true" no input
  • O tooltip interno usa MeTooltip, que suporta foco por teclado

Dica

Sempre defina relation apontando para o id do input correspondente. Isso melhora a usabilidade (clicar no label foca o input) e a acessibilidade.