y2-ajax Framework
Carregamento dinâmico de conteúdo via fetch com suporte a trigger click/load/hover, efeito fade, reinicialização automática dos módulos Y2 no destino e API estática.
1. Como funciona
Adicione y2-ajax
em qualquer elemento. Ao disparar o trigger, o data-y2-ajax busca a URL, injeta o HTML no destino
e cuida de tudo automaticamente: executa scripts, injeta CSS e reinicializa todos os módulos Y2 -
como se fosse um carregamento de página completo.
click / load / hover
GET ou POST
dest.innerHTML = html
exec <script> + inject <style>
Y2.reinit(dest)
yd:ajax:done
Scripts executam automaticamente
Qualquer <script> no HTML injetado
é re-executado (inline ou externo). Scripts externos já carregados não são duplicados.
Isso significa que a página de destino pode ter seu próprio JS e ele vai funcionar
normalmente.
CSS da página carregada — preservado
Se a resposta for uma página completa (com <body>),
o data-y2-ajax injeta os <link> e
<style> dela no
<head> atual - sem duplicar o que já
existe.
2. Triggers
3 modos de disparo - click, load automático e hover prefetch.
click (padrão)
load - carrega ao entrar na página
hover - pré-carrega no mouseover
Resumo dos atributos
| y2-ajax | ativa o módulo |
| y2-url | URL a buscar |
| y2-dest | seletor CSS do destino |
| y2-trigger | click | load | hover |
| y2-method | GET (padrão) | POST |
| y2-effect | fade (padrão) | none |
| y2-ajax-push | atualiza history.pushState |
3. Efeitos de Entrada
Use y2-effect
para animar o conteúdo ao ser injetado. O destino recebe .is-ldg
durante o carregamento e .y2-fx-{efeito} ao
injetar.
/* Estado de loading - personalize como quiser */
#box.is-ldg { opacity: .4; pointer-events: none; }
Fade (5)
Slide (4)
Básicos (9)
Flip (4)
Avançados (9)
4. AJAX Interno
Com y2-src
o conteúdo é copiado de uma DIV oculta na própria página - sem requisição HTTP.
Use <template> ou
<div style="display:none"> como fonte.
Após a injeção, Y2.reinit() é chamado
automaticamente.
Demo - AJAX Interno
5. API JavaScript
Dispare carregamentos programaticamente sem HTML declarativo.
// Carregar conteúdo via GET
Y2Ajax.load('/api/lista', '#resultado');
// Com opções
Y2Ajax.load('/api/lista', '#resultado', {
effect: 'fade', // 'fade' | 'none'
push: true // atualiza a URL no navegador
});
// POST com dados
Y2Ajax.post('/api/salvar', { nome: 'João', idade: 30 }, '#resposta');
// POST com FormData (upload de arquivo)
const fd = new FormData(document.querySelector('#meuForm'));
Y2Ajax.post('/api/upload', fd, '#resultado');
// Eventos disponíveis no elemento trigger
el.addEventListener('yd:ajax:start', ({ detail }) => {
console.log('Buscando:', detail.url);
showSpinner();
});
el.addEventListener('yd:ajax:done', ({ detail }) => {
console.log('Concluído. Destino:', detail.dest);
hideSpinner();
});
el.addEventListener('yd:ajax:error', ({ detail }) => {
console.error('Erro:', detail.err);
Y2Alert.err('Falha ao carregar conteúdo.', 5000);
});
6. Padrões Reais
Casos de uso comuns em aplicações.
Tabs com AJAX
Widget auto-carregado
Paginação via AJAX
POST com feedback
// Enviar form via JS com feedback
async function salvarForm() {
const fd = new FormData(document.querySelector('#form'));
document.querySelector('#form')
.addEventListener('yd:ajax:done', () => {
Y2Alert.ok('Dados salvos!', 3000, 'tr');
}, { once: true });
Y2Ajax.post('/api/salvar', fd, '#resposta');
}
7. Reinit Automático
Após cada carregamento, Y2.reinit(dest) é chamado
automaticamente - todos os módulos Y2 no novo conteúdo são inicializados sem nenhuma configuração
extra.
Se o servidor retornar HTML com botões y2modal, alertas y2alert, código data-y2code ou qualquer outro componente
Y2 - eles serão inicializados automaticamente.
Isso inclui: y2modal, y2alert, Y2Code, Y2Anime, Y2Nav e qualquer módulo
registrado via Y2.use().
// Manual: reinicializar módulos em um container específico
Y2.reinit(document.querySelector('#meu-container'));
// Global: reinicializar tudo
Y2.reinit();
8. Quick Reference
| Atributo | Valores | Padrão | Descrição |
|---|---|---|---|
| y2-ajax | - | - | Ativa o módulo no elemento |
| y2-url | string | href do link | URL a buscar via HTTP |
| y2-src | seletor CSS | - | Fonte interna (DIV/template local, sem HTTP) |
| y2-dest | seletor CSS | - | Onde injetar o HTML |
| y2-trigger | click / load / hover | click | Quando disparar |
| y2-method | GET / POST | GET | Método HTTP |
| y2-effect | fade — slideLeft — slideRight — slideTop — slideBottom — zoom — scale — bounce — elastic — flip — flipX — rotate — pulse — shake — swing — tada — rubberBand — rollIn — heartBeat — fadeDown — none | fade | Animação de entrada ao injetar |
| y2-ajax-push | booleano | false | Atualiza URL (pushState) |
| Método estático | Parâmetros | Descrição |
|---|---|---|
| Y2Ajax.load() | url, dest, opts? | GET e injeta no destino |
| Y2Ajax.post() | url, data, dest, opts? | POST com FormData ou objeto |