gbr/ui/theme/lustre/input
📥 UI Theme Input Module
Olá, neste módulo podemos encontrar a representação de um input.
Types
Dados do input.
- id: O identificador único do input.
- type_: O tipo de input.
pub type UIInput {
UIInput(
id: String,
type_: UIInputType,
value: option.Option(String),
name: option.Option(String),
required: option.Option(Bool),
)
}
Constructors
-
UIInput( id: String, type_: UIInputType, value: option.Option(String), name: option.Option(String), required: option.Option(Bool), )
O tipo de componente de input queremos representar
Inputs removidos e motivos:
❌ InputButton (Use button.gleam) ❌ InputSubmit (Use button.gleam com button.Submit) ❌ InputImage (Obsoleto, use button com imagem dentro) ❌ InputHidden (Se você precisa de um dado oculto, você apenas guarda no Model). Não faz sentido tematizar um campo oculto.
pub type UIInputType {
Tel
Email
Text
Password
Checkbox
Radio
Url
Color
Range
Number
Date
Time
Week
Month
DateTimeLocal
Search
File
}
Constructors
-
TelUm controle para inserir um número de telefone. Exibe um teclado telefônico em alguns dispositivos com teclados dinâmicos.
-
EmailUm campo para editar um endereço de e-mail. Parece um campo de entrada de texto, mas possui parâmetros de validação e teclado compatível em navegadores e dispositivos com teclados dinâmicos.
-
TextO valor padrão. Um campo de texto de linha única. As quebras de linha são removidas automaticamente do valor de entrada.
-
PasswordUm campo de texto de linha única cujo valor está oculto. Alertará o usuário se o site não for seguro.
-
Checkbox❌ InputCheckbox (Use checkbox.gleam focado em Bool)
-
Radio❌ InputRadio (Use radio.gleam focado em Bool/Enums)
-
UrlUm campo para inserir um URL. Parece um campo de entrada de texto, mas possui parâmetros de validação e teclado compatível em navegadores e dispositivos com teclados dinâmicos.
-
ColorUm controle para especificar uma cor; abre um seletor de cores quando ativo em navegadores compatíveis.
-
RangeUm controle para inserir um número cujo valor exato não é importante. Exibe-se como um widget de intervalo, com o valor médio como padrão. Usado em conjunto com os controles min e max para definir o intervalo de valores aceitáveis. TODO: Range merecesse um slider customizado no futuro!
-
NumberUm controle para inserir um número. Exibe um indicador de seleção e adiciona validação padrão. Exibe um teclado numérico em alguns dispositivos com teclados dinâmicos.
-
DateUm controle para inserir uma data (ano, mês e dia, sem hora). Abre um seletor de datas ou listas numéricas para ano, mês e dia quando ativo em navegadores compatíveis.
-
TimeUm controle para inserir um valor de tempo sem fuso horário.
-
WeekUm controle para inserir uma data composta por um número de semana-ano e um número de semana, sem fuso horário.
-
MonthUm campo para inserir o mês e o ano, sem fuso horário.
-
DateTimeLocalUm controle para inserir data e hora, sem fuso horário. Abre um seletor de data ou listas numéricas para componentes de data e hora quando ativo em navegadores compatíveis.
-
SearchUm campo de texto de linha única para inserir termos de pesquisa. As quebras de linha são removidas automaticamente do valor de entrada. Pode incluir um ícone de exclusão em navegadores compatíveis, que pode ser usado para limpar o campo. Exibe um ícone de pesquisa em vez da tecla Enter em alguns dispositivos com teclados dinâmicos.
-
FileControle para inserir arquivos.
Values
pub fn new(id: String) -> UIInput
Criar novo input com id e tipo de texto (padrão).
- id: O identificador único do input.
pub fn view(
input: UIInput,
theme: theme.UITheme(lustre.UILustre),
with attributes: List(attribute.Attribute(msg)),
) -> element.Element(msg)
Converte a representação de um input em um elemento lustre.
- id: Identificação do elemento input.
- type_: Tipo do elemento input.
- attributes: Atributos adicionais ao elemento input.
pub fn with_type(input: UIInput, type_: UIInputType) -> UIInput
Altera o tipo de input.