Plugin JavaScript

OAK UI - FilterCraft

Plugin JavaScript per filtrare elementi HTML in modo semplice, leggero e performante.

FilterCraft è un micro-plugin in JavaScript Vanilla che filtra in tempo reale liste o griglie di elementi HTML, gestendo classi, pulsanti e transizioni con poche righe di codice.

  • Zero dipendenze – funziona con JavaScript puro
  • Leggero e veloce – pochi KB di codice
  • Configurazione semplice – classi e parametri personalizzabili
  • Supporto multi-categoria per elemento
  • Compatibile con tutti i browser moderni
FilterCraft - Plugin JavaScript per filtri HTML

Cos'è e a cosa serve FilterCraft

FilterCraft è un plugin JavaScript Vanilla che filtra dinamicamente elementi HTML in base a categorie definite dall'utente. È progettato per essere leggero, veloce e facile da integrare.

È ideale per portfolio, gallerie, liste di prodotti, articoli, showcase di progetti o qualsiasi sezione di contenuti che necessita di filtri interattivi.

Gli sviluppatori possono integrarlo in pochi minuti senza framework aggiuntivi, grazie alla sua API semplice e intuitiva.

Il plugin gestisce automaticamente:

  • Selezione dei pulsanti di filtro - Rileva automaticamente gli elementi con classe `.filtercraft__button_filter`
  • Gestione degli elementi filtrabili - Controlla la visibilità degli elementi con classe `.filtercraft__item`
  • Aggiornamento dinamico del titolo - Modifica automaticamente il contenuto di `.filtercraft__elements_title` (opzionale)
  • Supporto multi-categoria - Gli elementi possono appartenere a più categorie contemporaneamente
  • Animazioni fluide - Usa classi CSS e `requestAnimationFrame` per transizioni performanti
  • Istanze multiple - È possibile inizializzare più filtri sulla stessa pagina

Grazie alla sua struttura modulare e al fatto che non altera il DOM in modo distruttivo, FilterCraft è performante anche su liste di grandi dimensioni.

Perché scegliere FilterCraft

  • Zero dipendenze - Funziona con JavaScript puro, senza librerie esterne
  • Leggero e veloce - Solo pochi KB di codice, ottimizzato per le performance
  • Configurazione immediata - Parametri personalizzabili tramite oggetto options
  • Compatibilità cross-browser - Safari, Firefox, Chrome, Edge e Opera
  • Istanze multiple - Più filtri nella stessa pagina
  • Manutenzione semplificata - File .js e .css pronti all'uso
  • SEO-friendly - Non altera il DOM in modo distruttivo

Come installarlo

1. Inclusione dei file

Scarica i file minificati e includili nella tua pagina:

<link rel="stylesheet" href="./dist/FilterCraft-min.css">
<script src="./dist/FilterCraft-min.js"></script>

Oppure includi i file da CDN:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/davidemancuso/oak-ui-filtercraft@1.0.0/dist/FilterCraft-min.css">
<script src="https://cdn.jsdelivr.net/gh/davidemancuso/oak-ui-filtercraft@1.0.0/dist/FilterCraft-min.js"></script>

2. Struttura HTML

Crea la struttura HTML con i pulsanti di filtro e gli elementi da filtrare:

<div class="filtercraft">
  <div role="tablist" aria-label="Filtri contenuti">
    <button class="filtercraft__button_filter active" type="button" data-category="all">Tutti</button>
    <button class="filtercraft__button_filter" type="button" data-category="web">Web</button>
    <button class="filtercraft__button_filter" type="button" data-category="mobile">Mobile</button>
    <button class="filtercraft__button_filter" type="button" data-category="design">Design</button>
  </div>

  <h2 class="filtercraft__elements_title"></h2>

  <div>
    <div class="filtercraft__item" data-category="web">Progetto Web 1</div>
    <div class="filtercraft__item" data-category="mobile">App Mobile 1</div>
    <div class="filtercraft__item" data-category="web,mobile">Progetto Multi-piattaforma</div>
    <div class="filtercraft__item" data-category="design">Design 1</div>
  </div>
</div>

3. Inizializzazione

Inizializza il plugin con le opzioni di default:

<script>
// Inizializzazione base
let myFilter = new FilterCraft();

// Oppure con opzioni personalizzate
let myFilter = new FilterCraft({
    AllDataName: 'tutti',
    ContainerClass: '.filtercraft',
    ButtonsItemClass: '.filtercraft__button_filter',
    ElementsItemClass: '.filtercraft__item',
    TitleElementClass: '.filtercraft__elements_title',
    AnimationDuration: '300'
});
</script>

Opzioni di configurazione

FilterCraft accetta un oggetto di opzioni per personalizzare il comportamento:

Opzione Tipo Default Descrizione
AllDataName String 'all' Nome della categoria per mostrare tutti gli elementi
ContainerClass String '.filtercraft' Selettore CSS del container principale
ButtonsItemClass String '.filtercraft__button_filter' Selettore CSS per i pulsanti di filtro
ElementsItemClass String '.filtercraft__item' Selettore CSS per gli elementi da filtrare
TitleElementClass String '.filtercraft__elements_title' Selettore CSS per il titolo (opzionale)
AnimationDuration String '250' Ritardo (ms) prima di aggiornare il display

Esempi pratici

Portfolio di progetti

<div class="filtercraft">
  <div role="tablist" aria-label="Filtri portfolio">
    <button class="filtercraft__button_filter active" type="button" data-category="all">Tutti i progetti</button>
    <button class="filtercraft__button_filter" type="button" data-category="frontend">Frontend</button>
    <button class="filtercraft__button_filter" type="button" data-category="backend">Backend</button>
    <button class="filtercraft__button_filter" type="button" data-category="mobile">Mobile</button>
  </div>

  <h2 class="filtercraft__elements_title">Tutti i progetti</h2>

  <div>
    <article class="filtercraft__item" data-category="frontend">
        <h3>Sito E-commerce</h3>
        <p>Progetto React con TypeScript</p>
    </article>
    <article class="filtercraft__item" data-category="backend">
        <h3>API REST</h3>
        <p>Backend Node.js con Express</p>
    </article>
    <article class="filtercraft__item" data-category="frontend,mobile">
        <h3>App PWA</h3>
        <p>Applicazione web progressiva</p>
    </article>
  </div>
</div>

Galleria di immagini

<div class="filtercraft">
  <div role="tablist" aria-label="Filtri galleria">
    <button class="filtercraft__button_filter active" type="button" data-category="all">Tutte le foto</button>
    <button class="filtercraft__button_filter" type="button" data-category="nature">Natura</button>
    <button class="filtercraft__button_filter" type="button" data-category="urban">Urbano</button>
    <button class="filtercraft__button_filter" type="button" data-category="portrait">Ritratti</button>
  </div>

  <h2 class="filtercraft__elements_title">Tutte le foto</h2>

  <div>
    <div class="filtercraft__item" data-category="nature">
        <img src="forest.jpg" alt="Foresta">
    </div>
    <div class="filtercraft__item" data-category="urban">
        <img src="city.jpg" alt="Città">
    </div>
    <div class="filtercraft__item" data-category="nature,urban">
        <img src="park.jpg" alt="Parco urbano">
    </div>
  </div>
</div>

Accessibilità

FilterCraft non impone markup specifico: puoi usare markup semantico e attributi ARIA (ad esempio role="tablist" e aria-label) senza interferenze. Per l'accessibilità, ti consiglio di:

  • Usare <button> per i filtri con etichette testuali chiare
  • Rendere visibile lo stato attivo con uno stile ben distinguibile
  • Associare un titolo aggiornato per comunicare il filtro attivo

CSS (stato attivo)

Le animazioni sono già incluse in FilterCraft-min.css. Se vuoi personalizzare lo stato attivo dei pulsanti, puoi partire da questo snippet:

/* Pulsanti attivi */
.filtercraft__button_filter.active {
    background-color: #007cba;
    color: #fff;
}

Changelog

Versione 1.0.0 (26 Gennaio 2026)

  • Rilascio iniziale:
    • Filtro dinamico di elementi HTML basato su categorie
    • Supporto multi-categoria per elementi (separati da virgola)
    • Gestione delle classi per transizioni CSS
    • Animazioni fluide con requestAnimationFrame
    • Aggiornamento dinamico dei titoli di sezione
    • Configurazione personalizzabile tramite oggetto options
    • Compatibilità cross-browser
    • Zero dipendenze - JavaScript Vanilla puro

Demo

Prova il plugin con un esempio pratico su CodePen FilterCraft – basic example

Scarica FilterCraft

FilterCraft è disponibile gratuitamente con licenza MIT. Puoi utilizzarlo nei tuoi progetti commerciali e personali.

Logo GitHub Scarica FilterCraft

Versione: 1.0.0 | Ultimo aggiornamento: 26 Gennaio 2026

Requisiti

  • Browser moderno con supporto ES6+
  • JavaScript abilitato
  • Nessuna dipendenza esterna richiesta