-
Notifications
You must be signed in to change notification settings - Fork 5
Funcionalidades JS Disponiveis
Conheça as funcionalidades de JS que temos no Starter :)
Procuramos sempre criar uma abstração de complexidade para todo o trabalho repetitivo como:
- Instâncias de plugins;
- Validação de campos;
- Máscaras de input;
- Configuração de componentes;
- entre outros...
Portanto, uma premissa das funcionalidades é:
Precisou fazer algo mais de 2 ou 3 vezes? Está na hora de pensar um pouco sobre reutilização de código (Robert C. Martin — Clean Code)
Como são funcões utilitárias, deixamos elas comentadas para facilitar a busca
pela funcionalidade desejada. Portanto, precisamos sempre descomentar para
executá-las assim que o DOM estiver disponível para nós (algumas funções muito
utilizadas como a setupUtmHelpers()
já estão 'ligadas' por padrão).
As funções são executadas no método de ready do jQuery
(estamos a caminho de
atualizar todas as execuções de jQuery
para Vanilla JS
) localizado no nosso
arquivo orquestrador de JS, o resources/js/frontend.js
.
Outro ponto importante, é que precisamos descomentar o caminho para importação
no build de JS, localizado em resources/js/frontend-imports.js
, pois como
ainda não utilizamos os módulos para importação do script em tempo de execução,
compilamos o frontend.js
com todos os recursos necessários para o dinamismo
das páginas.
- Fancybox (Modal para vídeos e galeria de imagens)
- F&MD Header (Cabeçalho e Navegação)
- Lax JS (Animações)
- Swiper
Fancybox (Modal para vídeos e galeria de imagens)
Função que abstrai a inicialização do plugin do Fancybox.
Localizado em resources/js/components/fancybox.js
Controla o comportamento de esconde e mostra da barra de cabeçalho/navegação do site.
Lax JS (Animações)
Controla inicialização do plugin Lax JS e cria classes de CSS pré-configuradas para auxiliar o uso de animações.
Swiper (Slider/Carrossel)
Abstrai a instância do Swiper com a configuração padrão do plugin, sendo possível passar uma configuração específica. Essa função é geralmente utilizada quando queremos algum slider específico onde seja necessário sobreescrever a configuração padrão do plugin.
Inicializa o slider com as configurações padrão do projeto.
- Validadores de CPF e CNPJ
- Utilitários de formulário
- Interação de usuários
- Utilitários de UTM
- Utilitários de Data Layer
class CpfCnpjValidators {
sanitize(cpfOrCnpj) {
}
checkCNPJ(cnpjInput) {
}
checkCPF(cpfInput) {
}
}
- cpfOrCnpj:
string
;
Método usado para limpar os caracteres especiais do CPF ou CNPJ para facilitar as validações e tratativas.
- cnpjInput:
string
;
Usado para validar um CNPJ.
- cpfInput:
string
;
Usado para validar um CPF.
Adiciona métodos à biblioteca jQuery
para habilitar ou desabilitar campos de
um formulário filhos do elemento selecionado.
Geralmente é utilizado quando temos campos escondidos que aparecem somente em
determinado cenário, mas mesmo assim precisamos validar o formulário, e se os
campos escondidos não tiverema propriedade disabled="true"
, o formulário
tentará validar os campos.
Exemplo:
const personalDataFieldset = $('fieldset.personal-data');
// Desabilita todos os campos do fieldset relacionado aos dados pessoais
personalDataFieldset.disableFormFields();
- name:
string
; - type:
string (input || select)
;
Auxilia na obtenção do valor do input ou do select.
Configura o campo de input de arquivos para receber o nome do arquivo inserido ao invés de somente aparecer "Arquivo selecionado".
- input:
HTMLInputElement
; - message:
string (Mensagem de erro)
;
Configura o campo como inválido.
OBS: Mensagem é um campo obrigatório, pois para o JS, se o método
setCustomValidity
receber uma string
vazia, significa que o campo é válido.
- input:
HTMLInputElement
;
Configura o campo como válido.
Configura um auxiliador visual para quando o usuário submeter o formulário com campos inválidos. Ou seja, a função irá scrollar a página até o primeiro campo inválido (de cima para baixo) encontrado no formulário.
- fullNameElement:
HTMLInputElement
; - invalidMessage:
string (Mensagem de erro)
;
Valida se o valor inserido no campo de nome completo é, no mínimo, um nome composto.
Inicia e configura o validador de nome completo para o seletor padrão dessa
funcionalidade, o .js-full-name
.
Configura o validador de número de celular brasileiro para o seletor padrão
dessa funcionalidade, o .js-cellphone-validate
;
Configura o validador de número fixo brasileiro para o seletor padrão dessa
funcionalidade, o .js-phone-validate
;
Inicializa os helpers e validadores padrão dos formulários.
- fn:
Function
; - wait:
number (milisegundos)
;
A função throttle
é uma técnica utilizada para inibir os usuários que ficam
clicando sem parar, ou seja, a função fn()
só será executada se nada acontecer
no período de agora somado ao valor de wait
.
Exemplo:
throttle(fn, 1000);
// clicou
// após .5s
// clicou de novo, nada acontece e zera a contagem...
// clicou de novo, nada acontece e zera a contagem...
// clicou de novo, nada acontece e zera a contagem...
// clicou de novo, e esperou...
// após 1s a função é executada
Configura o recebimento, captura e inserção de Cookies de trackeamento UTM presentes na URL.
Exemplo:
https://fmd.ag?utm_source=instagram&utm_campaign=estamos+contratanto
Configura, nos elementos selecionados, a criação e a atualização do Data
Layer
a partir de um evento de clique. Caso seja necessário alterar a action
do **
Data Layer**, é utilizado o atributo no elemento
clicado data-fmd-datalayer-action
.
Exemplo:
<a href="//fmd.ag"
class="js-btn-data-layer"
data-fmd-datalayer-action="newAction"></a>
.js-btn-data-layer
Cria um objeto com as configurações básicas de um evento de Data Layer,
podendo receber novos valores ou sobreescrever os valores básicos a partir
do parâmetro options
.
- options:
DataLayerEvent
;
Atualiza o Data Layer com o novo evento/variável.
- dataToBePushed:
DataLayerEvent
;
Esse é o nosso arquivo orquestrador que contém tanto a função ready do
jQuery
(que citamos no início) quanto o window.addEventListener('load'...
,
pois algumas inicializações de métodos dependem da finalização de cálculos de
tamanho, pintura e renderização da página.
Entrega os mesmos valores de variáveis que temos no arquivo de tema do Bootstrap, porém no JS, facilitando a manutenção do tema do projeto.
Cria os options
com os estados do Brasil para os select
s que tenham o
seletor padrão .js-state
e configura para que quando o usuário selecionar um
estado, o select
de cidades seja preenchido automaticamente de acordo com o
estado selecionado.
Configura o Service Worker do projeto. No momento temos apenas as configurações de PWA mapeadas.
Bloqueia a reload da página quando um formulário é submetido. É nesse momento que as validações são executadas, o scroll para o primeiro erro encontrado no formulário (caso exista), bloqueio do botão de submissão até que a validação seja feita e a inserção de classes de campo inválido caso o formulário tenha sido preenchido no servidor.
Desabilita o botão de submissão do formulário adicionando o atributo disabled e as classes de loading.
Adiciona uma animação de scroll suavizada para todos os elementos a
que
tiverem a classe .js-scroll-top
.
Estiliza a barra de scroll do Windows e Linux para não ficar com o estilo padrão do sistema.
Recarrega a página quando seleciona um novo valor nos select
s que tenham o
seletor padrão .js-onchange
. Geralmente utilizado nas LPs ou sites que tenham
filtros estáticos (sem dinamismo por parte do backend).
setupSelect2()
- Select2 (selects pesquisáveis)
Inicializa o plugin Select 2 para os select
s que tenham o seletor padrão
.js-select2
.
Retorna se o usuário está utilizando o navegador Chrome
ou Safari
.
Testa e retorna um boolean
se o usuário está utilizando o navegador Safari.
Configura máscaras de input de formulários.
-
.js-mask-phone
: Máscara de telefone/celular -
.js-mask-cpf
: Máscara de CPF -
.js-mask-cnpj
: Máscara de CNPJ -
.js-mask-cpfcnpj
: Máscara de CPF e CNPJ (alterna conform o usuário digita) -
.js-mask-cep
: Máscara de CEP -
.js-mask-money
: Máscara de valor monetário (R$) -
.js-mask-date
: Máscara de data (como atualmente os navegadores implementam por padrão, talvez seja interessante remover essa funcionalidade)
Adiciona endereço no formulário automaticamente quando o usuário remover o foco
do input de seletor .js-zipcode
.
Inicializa a funcionalidade de Popover do Bootstrap.
Inicializa a funcionalidade de Tooltip do Bootstrap.
Bloqueia o reload da página para links que tenham o valor #
. Geralmente
utilizado durante o desenvolvimento inicial das páginas.
Configura e inicializa o plugin Infinite Scroll.
Adiciona texto de direito reservados no footer dentro do elemento que tiver o
seletor .js-copyright-container
.
Inicializa o plugin de formulários assíncronos do Laravel, o Livewire
Configura e inicializa copy to clipboard. Como é uma funcionalidade
dificilmente utilizada, precisamos intalar o plugin com o
comando npm install clipboard --save
.
Configura a iniciliza a janela de compartilhamento do conteúdo nos elementos que
tenham o seletor padrão .js-btn-share
.