mypgs 1.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/assets/javascript/components/_accordion.js +2 -2
- package/assets/javascript/components/_modals.js +159 -136
- package/assets/javascript/components/_notifications.js +19 -9
- package/assets/javascript/components/_search.js +2 -2
- package/assets/javascript/components/_slides.js +66 -32
- package/assets/javascript/components/_stepTabs.js +4 -4
- package/assets/javascript/components/_steps.js +2 -2
- package/assets/javascript/components/_summary.js +2 -2
- package/assets/javascript/functions/_formValidate.js +97 -53
- package/assets/javascript/functions/_scrollY.js +10 -10
- package/assets/javascript/layout/_header.js +3 -0
- package/assets/scss/base/_html.scss +2 -2
- package/assets/scss/base/_variables.scss +2 -2
- package/assets/scss/components/_form.scss +2 -2
- package/assets/scss/components/_notification.scss +23 -30
- package/assets/scss/components/_search.scss +27 -21
- package/assets/scss/layout/_pageShell.scss +18 -15
- package/assets/scss/mixin/_mx-form.scss +7 -7
- package/{templates/html → demo}/demo.html +1 -1
- package/demo/demo.js +240 -0
- package/dist/css/index.css +86 -92
- package/dist/css/index.css.map +1 -1
- package/dist/css/index.min.css +1 -1
- package/dist/javascript/index.js +356 -255
- package/dist/javascript/index.js.map +1 -1
- package/dist/javascript/index.min.js +1 -1
- package/docs/componenti-e-markup.md +26 -27
- package/docs/components/accordion.md +61 -0
- package/docs/components/badges.md +67 -0
- package/docs/components/breadcumbs.md +43 -0
- package/docs/components/button.md +59 -0
- package/docs/components/card.md +50 -0
- package/docs/components/dropdown.md +135 -0
- package/docs/components/form.md +113 -0
- package/docs/components/logo.md +36 -0
- package/docs/components/menu.md +90 -0
- package/docs/components/modal.md +131 -0
- package/docs/components/notification.md +81 -0
- package/docs/components/search.md +117 -0
- package/docs/components/slides.md +85 -0
- package/docs/components/stepTabs.md +93 -0
- package/docs/components/steps.md +56 -0
- package/docs/components/summary.md +49 -0
- package/docs/components/table.md +42 -0
- package/docs/components/tooltip.md +53 -0
- package/docs/helper-javascript.md +68 -3
- package/docs/layout/body.md +41 -0
- package/docs/layout/flex.md +116 -0
- package/docs/layout/footer.md +71 -0
- package/docs/layout/grid.md +116 -0
- package/docs/layout/header.md +116 -0
- package/docs/layout/pageShell.md +94 -0
- package/docs/layout/section.md +69 -0
- package/docs/patterns/cookieConsent.md +89 -0
- package/package.json +2 -1
- package/scripts/generate-component-docs.js +557 -0
- package/templates/html/components/accordion.html +33 -4
- package/templates/html/components/badges.html +23 -0
- package/templates/html/components/breadcumbs.html +14 -0
- package/templates/html/components/button.html +22 -0
- package/templates/html/components/card.html +20 -0
- package/templates/html/components/dropdown.html +34 -0
- package/templates/html/components/form.html +82 -4
- package/templates/html/components/logo.html +21 -0
- package/templates/html/components/menu.html +33 -6
- package/templates/html/components/modal.html +44 -0
- package/templates/html/components/notification.html +68 -32
- package/templates/html/components/search.html +76 -0
- package/templates/html/components/slides.html +43 -0
- package/templates/html/components/stepTabs.html +47 -0
- package/templates/html/components/steps.html +24 -0
- package/templates/html/components/summary.html +27 -0
- package/templates/html/components/table.html +12 -0
- package/templates/html/components/tooltip.html +35 -0
- package/templates/html/layout/body.html +20 -5
- package/templates/html/layout/flex.html +20 -0
- package/templates/html/layout/footer.html +29 -1
- package/templates/html/layout/grid.html +20 -0
- package/templates/html/layout/header.html +41 -0
- package/templates/html/layout/pageShell.html +19 -0
- package/templates/html/layout/section.html +32 -10
- package/templates/html/patterns/cookieConsent.html +31 -0
- package/templates/react/components/form.jsx +3 -3
- package/templates/react/components/notification.jsx +4 -4
- package/templates/react/patterns/footer.jsx +1 -1
- package/templates/html/demo.js +0 -130
- /package/{templates/html → demo}/demo.css +0 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/search.html. Modificare templates/html/components/search.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Search
|
|
4
|
+
|
|
5
|
+
Ricerca componibile con suggerimenti asincroni o locali, navigazione da tastiera, selezione, annullamento richieste e attributi ARIA gestiti dal modulo search.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `search`: identifica il form inizializzato come ricerca con suggerimenti.
|
|
10
|
+
- `search-suggestions`: identifica la lista opzionale che riceve i risultati.
|
|
11
|
+
- `search-suggestions-item`: identifica ogni risultato creato dinamicamente nella lista.
|
|
12
|
+
- `search-modal`: identifica la variante di ricerca inserita in una modale per dispositivi mobili.
|
|
13
|
+
- `search-mobile`: identifica il contenitore interno della ricerca mobile.
|
|
14
|
+
|
|
15
|
+
## PGS Options
|
|
16
|
+
|
|
17
|
+
- `containerPGS`: sul wrapper modal usa containerPGS[header] per spostare il dialog nell'header.
|
|
18
|
+
|
|
19
|
+
## PGS States
|
|
20
|
+
|
|
21
|
+
- `open`: sul root search indica che la lista dei suggerimenti è aperta.
|
|
22
|
+
- `loading`: sul root search indica una sorgente dati in caricamento.
|
|
23
|
+
- `error`: sul root search indica che il recupero dei suggerimenti è fallito.
|
|
24
|
+
- `selected`: sul risultato generato indica l'elemento attivo durante la navigazione.
|
|
25
|
+
|
|
26
|
+
## API JavaScript
|
|
27
|
+
|
|
28
|
+
- `pgs.search.init(root)`: inizializza le ricerche non ancora registrate dentro Document o Element indicato.
|
|
29
|
+
- `pgs.search.api(element)`: restituisce l'istanza associata a un form search inizializzato.
|
|
30
|
+
- `instance.configure(options)`: aggiorna minLength, debounce, limit, submitOnSelect, searchOnFocus, source e onSelect e restituisce l'istanza.
|
|
31
|
+
- `instance.setSource(source)`: configura una sorgente array o funzione asincrona per i suggerimenti.
|
|
32
|
+
- `instance.search(query)`: esegue subito la ricerca e restituisce una Promise con i suggerimenti normalizzati.
|
|
33
|
+
- `instance.open()`: apre la lista quando sono disponibili risultati.
|
|
34
|
+
- `instance.close()`: chiude la lista e azzera la selezione attiva.
|
|
35
|
+
- `instance.clear()`: rimuove risultati e selezione e chiude la lista.
|
|
36
|
+
- `instance.cancel()`: annulla debounce e richiesta attiva.
|
|
37
|
+
- `instance.select(index, submit)`: seleziona un risultato, emette pgs:search:select e può inviare il form.
|
|
38
|
+
- `instance.refresh()`: ripete la ricerca usando il valore corrente dell'input.
|
|
39
|
+
- `instance.destroy()`: rimuove listener, annulla le operazioni e scollega l'istanza.
|
|
40
|
+
- `instance.items()`: restituisce una copia dei suggerimenti correnti.
|
|
41
|
+
- `instance.isOpen()`: restituisce true quando la lista dei suggerimenti è aperta.
|
|
42
|
+
- `instance.isLoading()`: restituisce true durante il caricamento della sorgente.
|
|
43
|
+
- `instance.setActiveIndex(index)`: imposta il suggerimento attivo e aggiorna selezione e attributi ARIA.
|
|
44
|
+
|
|
45
|
+
## Elementi correlati
|
|
46
|
+
|
|
47
|
+
- `buttonNohover`: applica al form l'aspetto compatto condiviso con i controlli button.
|
|
48
|
+
- `modal`: fornisce il contenitore e il comportamento della variante mobile.
|
|
49
|
+
- `modal-button`: apre la ricerca mobile.
|
|
50
|
+
- `modal-close`: chiude la ricerca mobile.
|
|
51
|
+
- `buttonIcon`: presenta apertura e chiusura come pulsanti a icona.
|
|
52
|
+
- `flexRow`: organizza il contenuto della variante mobile e gli elementi dei suggerimenti generati.
|
|
53
|
+
- `section`: applica la spaziatura di sezione alla ricerca mobile.
|
|
54
|
+
|
|
55
|
+
## Output
|
|
56
|
+
|
|
57
|
+
Form di ricerca autonomo, variante mobile integrata in una modal e script di esempio con sorgente locale.
|
|
58
|
+
|
|
59
|
+
## Esempio
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<form pgs="buttonNohover search" autocomplete="off" action="" method="get">
|
|
63
|
+
<button type="submit" title="Cerca"><i class="fa-solid fa-search"></i></button>
|
|
64
|
+
<input type="search" name="s" placeholder="Cerca" value="">
|
|
65
|
+
<ul pgs="search-suggestions"></ul>
|
|
66
|
+
</form>
|
|
67
|
+
|
|
68
|
+
<div pgs="modal search-modal" pgs-option="containerPGS[header]">
|
|
69
|
+
|
|
70
|
+
<button type="button" pgs="modal-button buttonIcon" title="Cerca">
|
|
71
|
+
<i class="fa-solid fa-search"></i>
|
|
72
|
+
</button>
|
|
73
|
+
|
|
74
|
+
<dialog>
|
|
75
|
+
<div pgs="flexRow section search-mobile">
|
|
76
|
+
|
|
77
|
+
<form pgs="buttonNohover search" autocomplete="off" action="/" method="get">
|
|
78
|
+
<button type="submit" title="Cerca">
|
|
79
|
+
<i class="fa-solid fa-search"></i>
|
|
80
|
+
</button>
|
|
81
|
+
|
|
82
|
+
<input type="search" name="s" placeholder="Cerca" value="">
|
|
83
|
+
<ul pgs="search-suggestions"></ul>
|
|
84
|
+
</form>
|
|
85
|
+
|
|
86
|
+
<button type="button" pgs="modal-close buttonIcon">
|
|
87
|
+
<i class="fa-solid fa-close"></i>
|
|
88
|
+
</button>
|
|
89
|
+
|
|
90
|
+
</div>
|
|
91
|
+
</dialog>
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
<script type="module">
|
|
95
|
+
import { pgs } from "mypgs";
|
|
96
|
+
|
|
97
|
+
const components = [
|
|
98
|
+
{ label: "Accordion", value: "/componenti/accordion", data: { category: "component" } },
|
|
99
|
+
{ label: "Dropdown", value: "/componenti/dropdown", data: { category: "component" } },
|
|
100
|
+
{ label: "Modal", value: "/componenti/modal", data: { category: "component" } },
|
|
101
|
+
{ label: "Search", value: "/componenti/search", data: { category: "component" } },
|
|
102
|
+
{ label: "Page Shell", value: "/layout/page-shell", data: { category: "layout" } },
|
|
103
|
+
];
|
|
104
|
+
|
|
105
|
+
pgs(document).querySelectorAll("search").forEach(search => {
|
|
106
|
+
pgs.search.api(search)?.configure({
|
|
107
|
+
minLength: 1,
|
|
108
|
+
debounce: 150,
|
|
109
|
+
limit: 5,
|
|
110
|
+
source: components,
|
|
111
|
+
onSelect: ({ item, value }) => {
|
|
112
|
+
console.log(`Selezionato ${item.label}: ${value}`);
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
</script>
|
|
117
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/slides.html. Modificare templates/html/components/slides.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Slides
|
|
4
|
+
|
|
5
|
+
Carosello orizzontale che osserva gli elementi visibili e crea automaticamente controlli precedente, successivo e indicatori di posizione.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `slides`: identifica il root inizializzato dal modulo slides.
|
|
10
|
+
- `slides-container`: identifica la lista orizzontale degli elementi scorrevoli.
|
|
11
|
+
- `slides-prec`: identifica il pulsante precedente creato dinamicamente.
|
|
12
|
+
- `slides-next`: identifica il pulsante successivo creato dinamicamente.
|
|
13
|
+
- `slides-dots`: identifica il contenitore degli indicatori creato dinamicamente.
|
|
14
|
+
|
|
15
|
+
## PGS Options
|
|
16
|
+
|
|
17
|
+
- `singleScroll`: usa un solo elemento visibile come riferimento per la navigazione precedente e successiva.
|
|
18
|
+
- `shadowDesktop`: abilita l'ombreggiatura laterale del carosello sui layout desktop.
|
|
19
|
+
- `notScrollAnimation`: applicata a un elemento li disabilita l'animazione visiva basata sulla percentuale di visibilità.
|
|
20
|
+
- `notScrollWithMouse`: sul root disabilita la gestione dello scorrimento orizzontale tramite mouse.
|
|
21
|
+
|
|
22
|
+
## API JavaScript
|
|
23
|
+
|
|
24
|
+
- `pgs.slides.init(root)`: inizializza il root stesso quando è un carosello e tutti i caroselli discendenti non ancora registrati; il valore predefinito è document.
|
|
25
|
+
- `pgs.slides.api(element)`: restituisce l'istanza associata a un root slides inizializzato.
|
|
26
|
+
- `instance.previous()`: porta in vista la slide precedente.
|
|
27
|
+
- `instance.next()`: porta in vista la slide successiva.
|
|
28
|
+
- `instance.goTo(index)`: porta in vista la slide con l'indice indicato.
|
|
29
|
+
- `instance.getCurrentIndexes()`: restituisce gli indici delle slide attualmente visibili.
|
|
30
|
+
- `instance.getCurrentElements()`: restituisce gli elementi slide attualmente visibili.
|
|
31
|
+
- `instance.getTotal()`: restituisce il numero totale di slide.
|
|
32
|
+
- `instance.isAtStart()`: restituisce true quando la prima slide è visibile.
|
|
33
|
+
- `instance.isAtEnd()`: restituisce true quando l'ultima slide è visibile.
|
|
34
|
+
- `instance.refresh()`: sincronizza controlli e dots, sostituisce listener e observer precedenti e restituisce la nuova API.
|
|
35
|
+
|
|
36
|
+
## Elementi correlati
|
|
37
|
+
|
|
38
|
+
- `card`: usa card come contenuto dimostrativo di ogni slide.
|
|
39
|
+
- `card-img`: identifica l'immagine delle card dimostrative.
|
|
40
|
+
- `imgCover`: adatta le immagini allo spazio disponibile.
|
|
41
|
+
- `flexColumn`: organizza verticalmente ogni card.
|
|
42
|
+
- `flexColumnTexts`: applica la spaziatura ai testi delle card.
|
|
43
|
+
- `buttonIcon`: viene applicato ai controlli precedente e successivo generati.
|
|
44
|
+
|
|
45
|
+
## Output
|
|
46
|
+
|
|
47
|
+
Lista di slide basate su card, completata a runtime con pulsanti e indicatori.
|
|
48
|
+
|
|
49
|
+
## Esempio
|
|
50
|
+
|
|
51
|
+
```html
|
|
52
|
+
<div pgs="slides" pgs-option="singleScroll shadowDesktop">
|
|
53
|
+
<ul pgs="slides-container">
|
|
54
|
+
<li>
|
|
55
|
+
<article pgs="card flexColumn">
|
|
56
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+1" alt="Slide 1">
|
|
57
|
+
<div pgs="flexColumnTexts">
|
|
58
|
+
<h3>Slide uno</h3>
|
|
59
|
+
<p>Contenuto della prima slide.</p>
|
|
60
|
+
</div>
|
|
61
|
+
</article>
|
|
62
|
+
</li>
|
|
63
|
+
|
|
64
|
+
<li>
|
|
65
|
+
<article pgs="card flexColumn">
|
|
66
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+2" alt="Slide 2">
|
|
67
|
+
<div pgs="flexColumnTexts">
|
|
68
|
+
<h3>Slide due</h3>
|
|
69
|
+
<p>Contenuto della seconda slide.</p>
|
|
70
|
+
</div>
|
|
71
|
+
</article>
|
|
72
|
+
</li>
|
|
73
|
+
|
|
74
|
+
<li>
|
|
75
|
+
<article pgs="card flexColumn">
|
|
76
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+3" alt="Slide 3">
|
|
77
|
+
<div pgs="flexColumnTexts">
|
|
78
|
+
<h3>Slide tre</h3>
|
|
79
|
+
<p>Contenuto della terza slide.</p>
|
|
80
|
+
</div>
|
|
81
|
+
</article>
|
|
82
|
+
</li>
|
|
83
|
+
</ul>
|
|
84
|
+
</div>
|
|
85
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/stepTabs.html. Modificare templates/html/components/stepTabs.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Step Tabs
|
|
4
|
+
|
|
5
|
+
Procedura guidata a schede con avanzamento sequenziale, indicatori generati, controlli di navigazione e possibilità di bloccare uno step.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `stepTabs`: identifica il root della procedura guidata.
|
|
10
|
+
- `stepTabs-dots`: identifica il contenitore degli indicatori di avanzamento.
|
|
11
|
+
- `stepTabs-dots-dot`: identifica ogni indicatore creato dinamicamente.
|
|
12
|
+
- `stepTabs-container`: contiene nell'ordine tutte le schede della procedura.
|
|
13
|
+
- `tab`: identifica una singola scheda navigabile.
|
|
14
|
+
- `stepTabs-prev`: identifica il controllo per tornare allo step precedente.
|
|
15
|
+
- `stepTabs-restart`: identifica il controllo che riavvia la procedura dal primo step.
|
|
16
|
+
- `stepTabs-next`: identifica il controllo per avanzare allo step successivo.
|
|
17
|
+
|
|
18
|
+
## PGS Options
|
|
19
|
+
|
|
20
|
+
- `tabIcon`: su ogni tab usa tabIcon[classe] con una singola classe Font Awesome per l'indicatore corrispondente; il fallback è fa-circle.
|
|
21
|
+
- `step`: viene applicata a ogni indicatore generato con la sintassi step[indice] per conservarne l'indice zero-based.
|
|
22
|
+
- `buttonReverse`: inverte testo e icona sul pulsante successivo e appartiene al componente button.
|
|
23
|
+
|
|
24
|
+
## PGS States
|
|
25
|
+
|
|
26
|
+
- `is-active`: identifica la scheda corrente e il relativo indicatore.
|
|
27
|
+
- `is-completed`: identifica gli indicatori degli step già completati e nuovamente selezionabili.
|
|
28
|
+
- `is-locked`: applicato a un tab impedisce di avanzare finché lo step resta bloccato.
|
|
29
|
+
|
|
30
|
+
## API JavaScript
|
|
31
|
+
|
|
32
|
+
- `pgs.stepTabs.init(root)`: inizializza le procedure non ancora registrate dentro Document o Element indicato.
|
|
33
|
+
- `pgs.stepTabs.api(element)`: restituisce l'istanza associata a un root stepTabs inizializzato.
|
|
34
|
+
- `instance.restart()`: torna al primo tab e ripristina i blocchi dichiarati inizialmente.
|
|
35
|
+
- `instance.goTo(index, scroll)`: attiva il tab indicato, aggiorna controlli e indicatori e opzionalmente scorre al componente.
|
|
36
|
+
- `instance.next()`: attiva il tab successivo entro i limiti disponibili.
|
|
37
|
+
- `instance.prev()`: attiva il tab precedente entro i limiti disponibili.
|
|
38
|
+
- `instance.toggleLock(index, lock)`: aggiunge o rimuove is-locked dal tab indicato e aggiorna i controlli.
|
|
39
|
+
- `instance.refresh()`: riesegue l'inizializzazione nel contenitore della procedura e restituisce l'istanza.
|
|
40
|
+
- `instance.getCurrent()`: restituisce l'indice del tab corrente.
|
|
41
|
+
- `instance.getState()`: restituisce un oggetto con indice corrente e numero totale di tab.
|
|
42
|
+
|
|
43
|
+
## Elementi correlati
|
|
44
|
+
|
|
45
|
+
- `flexColumnElements`: organizza verticalmente le aree principali del componente.
|
|
46
|
+
- `flexColumnTexts`: organizza il contenuto testuale di ogni tab.
|
|
47
|
+
- `flexRow`: dispone sulla stessa riga i controlli di navigazione.
|
|
48
|
+
- `button`: applica lo stile standard ai controlli precedente, riavvio e successivo.
|
|
49
|
+
|
|
50
|
+
## Output
|
|
51
|
+
|
|
52
|
+
Procedura HTML a tre schede con indicatori e controlli di navigazione.
|
|
53
|
+
|
|
54
|
+
## Esempio
|
|
55
|
+
|
|
56
|
+
```html
|
|
57
|
+
<div pgs="stepTabs flexColumnElements">
|
|
58
|
+
<div pgs="stepTabs-dots" aria-label="Avanzamento"></div>
|
|
59
|
+
|
|
60
|
+
<div pgs="stepTabs-container">
|
|
61
|
+
<section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-user]">
|
|
62
|
+
<h3>Dati personali</h3>
|
|
63
|
+
<p>Contenuto del primo tab.</p>
|
|
64
|
+
</section>
|
|
65
|
+
|
|
66
|
+
<section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-list-check]">
|
|
67
|
+
<h3>Preferenze</h3>
|
|
68
|
+
<p>Contenuto del secondo tab.</p>
|
|
69
|
+
</section>
|
|
70
|
+
|
|
71
|
+
<section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-check]">
|
|
72
|
+
<h3>Conferma</h3>
|
|
73
|
+
<p>Contenuto del terzo tab.</p>
|
|
74
|
+
</section>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<div pgs="flexRow">
|
|
78
|
+
<button pgs="stepTabs-prev button" type="button">
|
|
79
|
+
<i class="fa-solid fa-arrow-left" aria-hidden="true"></i>
|
|
80
|
+
Indietro
|
|
81
|
+
</button>
|
|
82
|
+
|
|
83
|
+
<button pgs="stepTabs-restart button" type="button">
|
|
84
|
+
Ricomincia
|
|
85
|
+
</button>
|
|
86
|
+
|
|
87
|
+
<button pgs="stepTabs-next button" pgs-option="buttonReverse" type="button">
|
|
88
|
+
Avanti
|
|
89
|
+
<i class="fa-solid fa-arrow-right" aria-hidden="true"></i>
|
|
90
|
+
</button>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/steps.html. Modificare templates/html/components/steps.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Steps
|
|
4
|
+
|
|
5
|
+
Elenco ordinato di passaggi che presenta numero, contenuto e linea di collegamento, aggiungendo a runtime gli elementi strutturali mancanti.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `steps`: identifica la lista ordinata inizializzata dal modulo steps.
|
|
10
|
+
- `steps-step`: identifica ogni passaggio della sequenza.
|
|
11
|
+
- `steps-step-circle`: identifica l'indicatore numerico, creato automaticamente se assente.
|
|
12
|
+
- `steps-step-content`: identifica il contenuto testuale del passaggio.
|
|
13
|
+
- `steps-step-line`: identifica la linea di collegamento aggiunta dinamicamente a ogni passaggio.
|
|
14
|
+
|
|
15
|
+
## API JavaScript
|
|
16
|
+
|
|
17
|
+
- `pgs.steps.init(root)`: inizializza le liste steps non ancora registrate dentro Document o Element indicato.
|
|
18
|
+
- `pgs.steps.api(element)`: restituisce l'istanza associata a un root steps inizializzato.
|
|
19
|
+
- `instance.steps()`: restituisce un array con tutti gli elementi steps-step.
|
|
20
|
+
- `instance.getStep(index)`: restituisce lo step corrispondente all'indice indicato.
|
|
21
|
+
- `instance.getTotal()`: restituisce il numero totale di step.
|
|
22
|
+
- `instance.refresh()`: reinizializza la lista, ricrea gli elementi mancanti e restituisce la nuova istanza.
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
|
|
26
|
+
Lista ordinata HTML di passaggi numerati completata dal modulo JavaScript.
|
|
27
|
+
|
|
28
|
+
## Esempio
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<ol pgs="steps">
|
|
32
|
+
<li pgs="steps-step">
|
|
33
|
+
<span pgs="steps-step-circle">1</span>
|
|
34
|
+
<div pgs="steps-step-content">
|
|
35
|
+
<h3>Primo step</h3>
|
|
36
|
+
<p>Descrizione del primo passaggio.</p>
|
|
37
|
+
</div>
|
|
38
|
+
</li>
|
|
39
|
+
|
|
40
|
+
<li pgs="steps-step">
|
|
41
|
+
<span pgs="steps-step-circle">2</span>
|
|
42
|
+
<div pgs="steps-step-content">
|
|
43
|
+
<h3>Secondo step</h3>
|
|
44
|
+
<p>Descrizione del secondo passaggio.</p>
|
|
45
|
+
</div>
|
|
46
|
+
</li>
|
|
47
|
+
|
|
48
|
+
<li pgs="steps-step">
|
|
49
|
+
<span pgs="steps-step-circle">3</span>
|
|
50
|
+
<div pgs="steps-step-content">
|
|
51
|
+
<h3>Terzo step</h3>
|
|
52
|
+
<p>Descrizione del terzo passaggio.</p>
|
|
53
|
+
</div>
|
|
54
|
+
</li>
|
|
55
|
+
</ol>
|
|
56
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/summary.html. Modificare templates/html/components/summary.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Summary
|
|
4
|
+
|
|
5
|
+
Componente che limita inizialmente un testo lungo a tre righe e mostra il controllo di espansione solo quando il contenuto eccede tale altezza.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `summary`: identifica il root inizializzato dal modulo summary.
|
|
10
|
+
- `summary-content`: identifica il contenuto misurato e ridimensionato.
|
|
11
|
+
- `summary-button`: identifica il controllo per mostrare più o meno contenuto.
|
|
12
|
+
|
|
13
|
+
## PGS States
|
|
14
|
+
|
|
15
|
+
- `overflow`: indica che il contenuto supera l'altezza contratta e richiede il controllo.
|
|
16
|
+
- `open`: indica che tutto il contenuto è espanso e visibile.
|
|
17
|
+
|
|
18
|
+
## API JavaScript
|
|
19
|
+
|
|
20
|
+
- `pgs.summary.init(root)`: inizializza i summary non ancora registrati dentro Document o Element indicato.
|
|
21
|
+
- `pgs.summary.api(element)`: restituisce l'istanza associata a un root summary inizializzato.
|
|
22
|
+
- `instance.open()`: espande il contenuto quando supera l'altezza contratta.
|
|
23
|
+
- `instance.close()`: richiude il contenuto alla dimensione prevista.
|
|
24
|
+
- `instance.toggle()`: inverte lo stato espanso o contratto.
|
|
25
|
+
- `instance.refresh()`: ricalcola overflow e altezza conservando lo stato corrente.
|
|
26
|
+
- `instance.isOpen()`: restituisce true quando il contenuto è espanso.
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
|
|
30
|
+
Struttura HTML con contenuto espandibile e pulsante sincronizzato tramite ARIA.
|
|
31
|
+
|
|
32
|
+
## Esempio
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<div pgs="summary">
|
|
36
|
+
<div pgs="summary-content">
|
|
37
|
+
<p>
|
|
38
|
+
Questo testo dimostrativo e' abbastanza lungo da occupare piu righe e mostrare il comportamento del componente summary. Il contenuto puo includere testo, link e altri elementi inline senza richiedere markup aggiuntivo.
|
|
39
|
+
</p>
|
|
40
|
+
<p>
|
|
41
|
+
Quando il contenuto supera tre righe viene mostrato un pulsante per espandere o richiudere l'area visibile.
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<button pgs="summary-button" type="button">
|
|
46
|
+
Mostra di più
|
|
47
|
+
</button>
|
|
48
|
+
</div>
|
|
49
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/table.html. Modificare templates/html/components/table.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Table
|
|
4
|
+
|
|
5
|
+
Contenitore responsive per una tabella semantica con intestazioni e righe di dati coerenti con gli stili del design system.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `table`: identifica il wrapper che gestisce presentazione e scorrimento della tabella nativa.
|
|
10
|
+
|
|
11
|
+
## Output
|
|
12
|
+
|
|
13
|
+
Tabella HTML completa racchiusa nel contenitore PGS dedicato.
|
|
14
|
+
|
|
15
|
+
## Esempio
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<div pgs="table">
|
|
19
|
+
<table>
|
|
20
|
+
<thead>
|
|
21
|
+
<tr>
|
|
22
|
+
<th>Nome</th>
|
|
23
|
+
<th>Stato</th>
|
|
24
|
+
<th>Data</th>
|
|
25
|
+
</tr>
|
|
26
|
+
</thead>
|
|
27
|
+
|
|
28
|
+
<tbody>
|
|
29
|
+
<tr>
|
|
30
|
+
<td>Elemento uno</td>
|
|
31
|
+
<td>Attivo</td>
|
|
32
|
+
<td>2026-01-01</td>
|
|
33
|
+
</tr>
|
|
34
|
+
<tr>
|
|
35
|
+
<td>Elemento due</td>
|
|
36
|
+
<td>Bozza</td>
|
|
37
|
+
<td>2026-02-01</td>
|
|
38
|
+
</tr>
|
|
39
|
+
</tbody>
|
|
40
|
+
</table>
|
|
41
|
+
</div>
|
|
42
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/components/tooltip.html. Modificare templates/html/components/tooltip.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Tooltip
|
|
4
|
+
|
|
5
|
+
Variante compatta del dropdown che mostra un breve pannello informativo controllato da un pulsante a icona.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `tooltip`: identifica il root della variante tooltip.
|
|
10
|
+
- `tooltip-button`: identifica il controllo specifico del tooltip.
|
|
11
|
+
- `tooltip-content`: identifica il contenuto informativo del tooltip.
|
|
12
|
+
|
|
13
|
+
## PGS Options
|
|
14
|
+
|
|
15
|
+
- `position`: può essere applicata al root condiviso con sintassi position[lato allineamento] per modificare la posizione ereditata dal dropdown.
|
|
16
|
+
|
|
17
|
+
## PGS States
|
|
18
|
+
|
|
19
|
+
- `open`: viene gestito dal modulo dropdown sul root per mostrare o nascondere il tooltip.
|
|
20
|
+
|
|
21
|
+
## API JavaScript
|
|
22
|
+
|
|
23
|
+
- `pgs.dropdown.init(root)`: inizializza il tooltip perché il suo root condivide il token dropdown.
|
|
24
|
+
- `pgs.dropdown.api(element)`: restituisce l'istanza dropdown associata al root del tooltip.
|
|
25
|
+
- `instance.open()`: apre il contenuto informativo.
|
|
26
|
+
- `instance.close()`: chiude il contenuto informativo.
|
|
27
|
+
- `instance.toggle()`: inverte la visibilità del tooltip.
|
|
28
|
+
- `instance.refresh()`: reinizializza il contesto e ricalcola il posizionamento.
|
|
29
|
+
- `instance.isOpen()`: restituisce true quando il tooltip è aperto.
|
|
30
|
+
|
|
31
|
+
## Elementi correlati
|
|
32
|
+
|
|
33
|
+
- `dropdown`: fornisce apertura, chiusura e posizionamento del tooltip.
|
|
34
|
+
- `dropdown-button`: collega il pulsante al comportamento dropdown.
|
|
35
|
+
- `dropdown-content`: collega il pannello al comportamento dropdown.
|
|
36
|
+
- `buttonMini`: presenta il controllo come pulsante a icona di dimensione minima.
|
|
37
|
+
|
|
38
|
+
## Output
|
|
39
|
+
|
|
40
|
+
Tooltip HTML composto tramite i token condivisi del dropdown.
|
|
41
|
+
|
|
42
|
+
## Esempio
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<span pgs="dropdown tooltip">
|
|
46
|
+
<button pgs="dropdown-button buttonMini tooltip-button" title="open-tooltip" type="button">
|
|
47
|
+
<i class="fa-solid fa-info"></i>
|
|
48
|
+
</button>
|
|
49
|
+
<div pgs="dropdown-content tooltip-content">
|
|
50
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto hic, id consectetur facilis et, iste animi minima quidem praesentium omnis quod. Quidem provident ad cum aut reprehenderit laboriosam eum placeat.
|
|
51
|
+
</div>
|
|
52
|
+
</span>
|
|
53
|
+
```
|
|
@@ -11,6 +11,21 @@ pgs(modal).remove("custom-token");
|
|
|
11
11
|
pgs(modal).toggle("custom-token", true);
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
+
## API dell'helper `pgs`
|
|
15
|
+
|
|
16
|
+
Ricerca disponibile su `Document` ed `Element`:
|
|
17
|
+
|
|
18
|
+
- `pgs(root).querySelector(token)`: restituisce il primo discendente che contiene il token `pgs` richiesto.
|
|
19
|
+
- `pgs(root).querySelectorAll(token)`: restituisce tutti i discendenti corrispondenti; accetta anche un array o token separati da virgola.
|
|
20
|
+
|
|
21
|
+
Manipolazione disponibile quando `root` è un `Element`:
|
|
22
|
+
|
|
23
|
+
- `pgs(element).add(...tokens)`: aggiunge token evitando duplicati e restituisce l'helper.
|
|
24
|
+
- `pgs(element).remove(...tokens)`: rimuove i token indicati e restituisce l'helper.
|
|
25
|
+
- `pgs(element).toggle(token, force)`: inverte o forza la presenza del token e restituisce lo stato risultante.
|
|
26
|
+
- `pgs(element).contains(token)`: verifica la presenza esatta del token.
|
|
27
|
+
- `pgs(element).value`: legge o sostituisce il valore completo dell'attributo `pgs`.
|
|
28
|
+
|
|
14
29
|
Stati runtime:
|
|
15
30
|
|
|
16
31
|
```js
|
|
@@ -19,6 +34,12 @@ pgs(modal).state.toggle("open", false);
|
|
|
19
34
|
pgs(modal).state.contains("open");
|
|
20
35
|
```
|
|
21
36
|
|
|
37
|
+
- `state.add(...states)` oppure `state(...states)`: aggiunge uno o più stati.
|
|
38
|
+
- `state.remove(...states)`: rimuove gli stati indicati.
|
|
39
|
+
- `state.toggle(state, force)`: inverte o forza uno stato e restituisce il risultato.
|
|
40
|
+
- `state.contains(state)`: verifica se lo stato è presente.
|
|
41
|
+
- `state.value`: legge o sostituisce l'intero attributo `pgs-state`.
|
|
42
|
+
|
|
22
43
|
Opzioni:
|
|
23
44
|
|
|
24
45
|
```js
|
|
@@ -26,6 +47,14 @@ pgs(modal).option.contains("history");
|
|
|
26
47
|
pgs(modal).option.getValueBrackets("containerID");
|
|
27
48
|
```
|
|
28
49
|
|
|
50
|
+
- `option.add(...options)`: aggiunge opzioni semplici o parametrizzate.
|
|
51
|
+
- `option.remove(...keys)`: rimuove le opzioni usando la relativa chiave.
|
|
52
|
+
- `option.toggle(option, force)`: inverte o forza un'opzione.
|
|
53
|
+
- `option.contains(key)`: verifica la presenza di una chiave anche quando possiede un payload.
|
|
54
|
+
- `option.getValueBrackets(key)`: restituisce il contenuto tra parentesi quadre oppure `undefined`.
|
|
55
|
+
- `option.setValueBrackets(key, value)`: imposta o sostituisce una singola opzione parametrizzata.
|
|
56
|
+
- `option.value`: legge o sostituisce l'intero attributo `pgs-option`.
|
|
57
|
+
|
|
29
58
|
Esempio markup con opzioni:
|
|
30
59
|
|
|
31
60
|
```html
|
|
@@ -64,6 +93,7 @@ Serve per usare i moduli direttamente da `pgs`:
|
|
|
64
93
|
|
|
65
94
|
```js
|
|
66
95
|
pgs.registerModules({
|
|
96
|
+
svg: PGS_svg,
|
|
67
97
|
accordion: PGS_accordion,
|
|
68
98
|
dropdown: PGS_dropdown,
|
|
69
99
|
menu: PGS_menu,
|
|
@@ -73,6 +103,7 @@ pgs.registerModules({
|
|
|
73
103
|
slides: PGS_slides,
|
|
74
104
|
stepTabs: PGS_stepTabs,
|
|
75
105
|
steps: PGS_steps,
|
|
106
|
+
summary: PGS_summary,
|
|
76
107
|
formValidate: PGS_formValidate,
|
|
77
108
|
scrollHorizontal: PGS_scrollHorizontal,
|
|
78
109
|
});
|
|
@@ -89,6 +120,7 @@ pgs.slides.api(slidesEl)?.next();
|
|
|
89
120
|
|
|
90
121
|
Shortcut disponibili dopo `import "mypgs"`:
|
|
91
122
|
|
|
123
|
+
- `pgs.svg`
|
|
92
124
|
- `pgs.accordion`
|
|
93
125
|
- `pgs.dropdown`
|
|
94
126
|
- `pgs.menu`
|
|
@@ -98,9 +130,36 @@ Shortcut disponibili dopo `import "mypgs"`:
|
|
|
98
130
|
- `pgs.slides`
|
|
99
131
|
- `pgs.stepTabs`
|
|
100
132
|
- `pgs.steps`
|
|
133
|
+
- `pgs.summary`
|
|
101
134
|
- `pgs.formValidate`
|
|
102
135
|
- `pgs.scrollHorizontal`
|
|
103
136
|
|
|
137
|
+
## Riferimento API per componente
|
|
138
|
+
|
|
139
|
+
Le firme, i parametri e la funzione di ogni metodo sono generati dai commenti nei template:
|
|
140
|
+
|
|
141
|
+
- [Accordion](components/accordion.md#api-javascript)
|
|
142
|
+
- [Dropdown](components/dropdown.md#api-javascript)
|
|
143
|
+
- [Form validation](components/form.md#api-javascript)
|
|
144
|
+
- [Menu](components/menu.md#api-javascript)
|
|
145
|
+
- [Modal](components/modal.md#api-javascript)
|
|
146
|
+
- [Notification](components/notification.md#api-javascript)
|
|
147
|
+
- [Search](components/search.md#api-javascript)
|
|
148
|
+
- [Slides](components/slides.md#api-javascript)
|
|
149
|
+
- [Step Tabs](components/stepTabs.md#api-javascript)
|
|
150
|
+
- [Steps](components/steps.md#api-javascript)
|
|
151
|
+
- [Summary](components/summary.md#api-javascript)
|
|
152
|
+
- [Tooltip tramite Dropdown](components/tooltip.md#api-javascript)
|
|
153
|
+
|
|
154
|
+
I componenti non elencati non espongono attualmente un'API JavaScript specifica.
|
|
155
|
+
|
|
156
|
+
## Utility JavaScript pubbliche
|
|
157
|
+
|
|
158
|
+
- `pgs.scrollHorizontal(element, speed)`: converte lo scroll verticale della rotella in scorrimento orizzontale quando il contenitore può ancora muoversi nella direzione richiesta e restituisce una funzione che rimuove il listener.
|
|
159
|
+
- `pgs.svg.applyColorsSVG(isDarkMode)`: aggiorna i colori degli SVG caricati tramite `object` e marcati con `svgChangeColor`.
|
|
160
|
+
- `pgs.svg.applyColorsLottie(isDarkMode)`: aggiorna i colori degli SVG interni ai player Lottie marcati con `lottieChangeColor`.
|
|
161
|
+
- `pgs.svg.eventChangeColor`: contiene il nome dell'evento `pgs:svg:changeColor` ascoltato dal modulo SVG.
|
|
162
|
+
|
|
104
163
|
## Struttura dei moduli componente
|
|
105
164
|
|
|
106
165
|
I componenti con istanze seguono questo schema:
|
|
@@ -112,16 +171,22 @@ export const PGS_modal = {
|
|
|
112
171
|
};
|
|
113
172
|
```
|
|
114
173
|
|
|
115
|
-
|
|
116
|
-
|
|
174
|
+
Le funzioni `PGS_modal_init` e `PGS_modal_api` restano interne al modulo: l'unico export del file è `PGS_modal`. Lo stesso criterio vale per gli altri componenti.
|
|
175
|
+
|
|
176
|
+
- `init`: inizializza o reinizializza il markup nel `Document` o `Element` ricevuto; senza argomenti usa `document`.
|
|
117
177
|
- `api`: recupera l'API di una singola istanza gia' inizializzata.
|
|
118
178
|
|
|
119
179
|
Esempio:
|
|
120
180
|
|
|
121
181
|
```js
|
|
122
182
|
pgs.modal.init();
|
|
123
|
-
pgs.modal.init(container);
|
|
124
183
|
pgs.modal.api(modalEl)?.open();
|
|
125
184
|
```
|
|
126
185
|
|
|
127
186
|
`PGS_notification` e' un caso diverso: funziona piu' come service/helper e espone `alert`, `toast` e `trigger`.
|
|
187
|
+
|
|
188
|
+
## Registro ed estensione
|
|
189
|
+
|
|
190
|
+
- `pgs.registerModules(modules)`: espone un oggetto di moduli direttamente come proprietà di `pgs` e impedisce sovrascritture incompatibili.
|
|
191
|
+
- `pgs.registerImport(...modules)`: registra moduli nel registro nominato usato dalle integrazioni avanzate.
|
|
192
|
+
- `pgs.import(...names)`: recupera dal registro i moduli richiesti e genera un errore per i nomi non registrati.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- File generato automaticamente da templates/html/layout/body.html. Modificare templates/html/layout/body.html e rieseguire npm run docs:generate. -->
|
|
2
|
+
|
|
3
|
+
# Body
|
|
4
|
+
|
|
5
|
+
Documento HTML di base che abilita MyPGS, configura i metadati essenziali e applica al body le varianti condivise di sfondo, testo e titoli.
|
|
6
|
+
|
|
7
|
+
## PGS
|
|
8
|
+
|
|
9
|
+
- `htmlBase`: applica le regole fondamentali all'elemento html.
|
|
10
|
+
- `initP`: abilita gli stili di layout, componenti e pattern racchiusi nel namespace MyPGS.
|
|
11
|
+
- `bodyBase`: applica struttura e spaziatura di base al body.
|
|
12
|
+
- `bodyImg`: abilita le regole condivise per le immagini contenute nella pagina.
|
|
13
|
+
- `bodyText`: abilita tipografia e spaziatura del testo.
|
|
14
|
+
- `bodyHeading`: abilita la gerarchia tipografica dei titoli.
|
|
15
|
+
|
|
16
|
+
## PGS States
|
|
17
|
+
|
|
18
|
+
- `darkmode`: viene applicato dinamicamente a html e body per attivare il tema scuro.
|
|
19
|
+
|
|
20
|
+
## Output
|
|
21
|
+
|
|
22
|
+
Scheletro HTML completo necessario per inizializzare la libreria MyPGS.
|
|
23
|
+
|
|
24
|
+
## Esempio
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<!DOCTYPE html>
|
|
28
|
+
<html lang="it-IT" pgs="htmlBase initP">
|
|
29
|
+
|
|
30
|
+
<head>
|
|
31
|
+
<meta charset="UTF-8">
|
|
32
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
33
|
+
|
|
34
|
+
<!-- Colori Browsers -->
|
|
35
|
+
<meta name="theme-color" content="">
|
|
36
|
+
<meta name="apple-mobile-web-app-status-bar-color" content="">
|
|
37
|
+
|
|
38
|
+
</head>
|
|
39
|
+
|
|
40
|
+
<body pgs="bodyBase bodyImg bodyText bodyHeading" >
|
|
41
|
+
```
|