mypgs 2.0.0 → 3.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.
Files changed (163) hide show
  1. package/.vscode/tasks.json +39 -0
  2. package/AGENTS.md +22 -21
  3. package/README.md +25 -25
  4. package/assets/javascript/components/_menu.js +2 -1
  5. package/assets/javascript/components/_modals.js +1 -1
  6. package/assets/javascript/components/_notifications.js +2 -1
  7. package/assets/javascript/components/_slides.js +2 -2
  8. package/assets/scss/base/_body.scss +5 -5
  9. package/assets/scss/base/_general.scss +27 -18
  10. package/assets/scss/base/_variables.scss +1 -1
  11. package/assets/scss/components/_accordion.scss +9 -9
  12. package/assets/scss/components/_alerts.scss +71 -0
  13. package/assets/scss/components/_badges.scss +40 -48
  14. package/assets/scss/components/_button.scss +28 -20
  15. package/assets/scss/components/_card.scss +9 -4
  16. package/assets/scss/components/_form.scss +0 -16
  17. package/assets/scss/components/_formAddon.scss +22 -0
  18. package/assets/scss/components/_logo.scss +3 -4
  19. package/assets/scss/components/_menu.scss +26 -3
  20. package/assets/scss/components/_modals.scss +6 -4
  21. package/assets/scss/components/_search.scss +2 -2
  22. package/assets/scss/components/_slides.scss +0 -1
  23. package/assets/scss/components/_stepTabs.scss +2 -1
  24. package/assets/scss/components/_tooltip.scss +0 -1
  25. package/assets/scss/index.scss +3 -3
  26. package/assets/scss/layout/_footer.scss +0 -2
  27. package/assets/scss/layout/_header.scss +10 -2
  28. package/assets/scss/layout/_pageShell.scss +6 -2
  29. package/assets/scss/layout/_responsive.scss +63 -0
  30. package/assets/scss/mixin/_mx-base.scss +4 -8
  31. package/assets/scss/mixin/_mx-button.scss +73 -115
  32. package/assets/scss/mixin/_mx-card.scss +39 -40
  33. package/assets/scss/mixin/_mx-form.scss +13 -10
  34. package/assets/scss/mixin/{_mx-form-addon.scss → _mx-formAddon.scss} +103 -64
  35. package/assets/scss/mixin/_mx-hover.scss +81 -0
  36. package/assets/scss/mixin/_mx-responsive.scss +81 -201
  37. package/assets/scss/mixin/_settings.scss +2 -1
  38. package/assets/scss/mixin/mixin.scss +2 -1
  39. package/demo/demo.css +9 -6
  40. package/demo/demo.html +7 -5
  41. package/demo/demo.js +37 -34
  42. package/dist/css/index.css +2469 -3825
  43. package/dist/css/index.css.map +1 -1
  44. package/dist/css/index.min.css +1 -1
  45. package/dist/javascript/index.js +7 -5
  46. package/dist/javascript/index.js.map +1 -1
  47. package/dist/javascript/index.min.js +1 -1
  48. package/docs/componenti-e-markup.md +9 -8
  49. package/docs/components/accordion.md +23 -23
  50. package/docs/components/alerts.md +67 -0
  51. package/docs/components/badges.md +29 -26
  52. package/docs/components/breadcumbs.md +8 -8
  53. package/docs/components/button.md +18 -18
  54. package/docs/components/card.md +25 -22
  55. package/docs/components/dropdown.md +29 -29
  56. package/docs/components/form.md +65 -41
  57. package/docs/components/formAddon.md +116 -0
  58. package/docs/components/logo.md +11 -11
  59. package/docs/components/menu.md +20 -20
  60. package/docs/components/modal.md +52 -51
  61. package/docs/components/notification.md +34 -34
  62. package/docs/components/search.md +54 -52
  63. package/docs/components/slides.md +41 -42
  64. package/docs/components/stepTabs.md +45 -45
  65. package/docs/components/steps.md +16 -16
  66. package/docs/components/summary.md +20 -20
  67. package/docs/components/table.md +7 -7
  68. package/docs/components/tooltip.md +24 -23
  69. package/docs/convenzioni.md +11 -11
  70. package/docs/export-e-sviluppo.md +4 -4
  71. package/docs/helper-javascript.md +8 -8
  72. package/docs/layout/body.md +11 -11
  73. package/docs/layout/footer.md +28 -24
  74. package/docs/layout/header.md +36 -35
  75. package/docs/layout/pageShell.md +19 -19
  76. package/docs/layout/responsive.md +90 -0
  77. package/docs/layout/section.md +38 -38
  78. package/docs/patterns/cookieConsent.md +42 -39
  79. package/docs/utilizzo-css-scss.md +33 -9
  80. package/package.json +1 -1
  81. package/reference/html/components/accordion.html +52 -0
  82. package/reference/html/components/alerts.html +59 -0
  83. package/reference/html/components/badges.html +62 -0
  84. package/{templates → reference}/html/components/breadcumbs.html +6 -6
  85. package/reference/html/components/button.html +51 -0
  86. package/reference/html/components/card.html +45 -0
  87. package/{templates → reference}/html/components/dropdown.html +25 -25
  88. package/reference/html/components/form.html +128 -0
  89. package/reference/html/components/formAddon.html +109 -0
  90. package/reference/html/components/logo.html +28 -0
  91. package/{templates → reference}/html/components/menu.html +17 -17
  92. package/reference/html/components/modal.html +123 -0
  93. package/reference/html/components/notification.html +71 -0
  94. package/reference/html/components/search.html +109 -0
  95. package/reference/html/components/slides.html +75 -0
  96. package/reference/html/components/stepTabs.html +83 -0
  97. package/reference/html/components/steps.html +49 -0
  98. package/reference/html/components/summary.html +41 -0
  99. package/{templates → reference}/html/components/table.html +5 -5
  100. package/reference/html/components/tooltip.html +44 -0
  101. package/reference/html/layout/body.html +34 -0
  102. package/reference/html/layout/footer.html +67 -0
  103. package/reference/html/layout/header.html +108 -0
  104. package/{templates → reference}/html/layout/pageShell.html +16 -16
  105. package/reference/html/layout/responsive.html +83 -0
  106. package/reference/html/layout/section.html +62 -0
  107. package/reference/html/patterns/cookieConsent.html +84 -0
  108. package/{templates → reference}/react/components/accordion.jsx +5 -5
  109. package/reference/react/components/alerts.jsx +46 -0
  110. package/{templates → reference}/react/components/breadcumbs.jsx +1 -1
  111. package/{templates → reference}/react/components/button.jsx +6 -6
  112. package/{templates → reference}/react/components/card.jsx +6 -6
  113. package/{templates → reference}/react/components/dropdown.jsx +8 -8
  114. package/{templates → reference}/react/components/form.jsx +3 -3
  115. package/{templates → reference}/react/components/modal.jsx +15 -15
  116. package/{templates → reference}/react/components/notification.jsx +3 -3
  117. package/{templates → reference}/react/components/search.jsx +8 -8
  118. package/{templates → reference}/react/components/slides.jsx +4 -4
  119. package/{templates → reference}/react/components/stepTabs.jsx +12 -12
  120. package/reference/react/components/summary.jsx +18 -0
  121. package/{templates → reference}/react/components/table.jsx +2 -2
  122. package/{templates → reference}/react/components/tooltip.jsx +1 -1
  123. package/{templates → reference}/react/layout/pageShell.jsx +2 -2
  124. package/reference/react/layout/responsive.jsx +61 -0
  125. package/reference/react/layout/section.jsx +44 -0
  126. package/{templates → reference}/react/patterns/cookieConsent.jsx +9 -9
  127. package/{templates → reference}/react/patterns/footer.jsx +4 -4
  128. package/{templates → reference}/react/patterns/header.jsx +4 -4
  129. package/scripts/generate-component-docs.js +12 -12
  130. package/assets/scss/layout/_flex.scss +0 -49
  131. package/assets/scss/layout/_gap.scss +0 -21
  132. package/assets/scss/layout/_grid.scss +0 -13
  133. package/docs/layout/flex.md +0 -116
  134. package/docs/layout/grid.md +0 -116
  135. package/templates/html/components/accordion.html +0 -52
  136. package/templates/html/components/badges.html +0 -60
  137. package/templates/html/components/button.html +0 -51
  138. package/templates/html/components/card.html +0 -43
  139. package/templates/html/components/form.html +0 -104
  140. package/templates/html/components/logo.html +0 -28
  141. package/templates/html/components/modal.html +0 -122
  142. package/templates/html/components/notification.html +0 -71
  143. package/templates/html/components/search.html +0 -107
  144. package/templates/html/components/slides.html +0 -76
  145. package/templates/html/components/stepTabs.html +0 -83
  146. package/templates/html/components/steps.html +0 -49
  147. package/templates/html/components/summary.html +0 -41
  148. package/templates/html/components/tooltip.html +0 -43
  149. package/templates/html/layout/body.html +0 -35
  150. package/templates/html/layout/flex.html +0 -109
  151. package/templates/html/layout/footer.html +0 -64
  152. package/templates/html/layout/grid.html +0 -109
  153. package/templates/html/layout/header.html +0 -107
  154. package/templates/html/layout/section.html +0 -62
  155. package/templates/html/patterns/cookieConsent.html +0 -82
  156. package/templates/react/components/summary.jsx +0 -18
  157. package/templates/react/layout/flex.jsx +0 -36
  158. package/templates/react/layout/grid.jsx +0 -36
  159. package/templates/react/layout/section.jsx +0 -44
  160. /package/{templates → reference}/react/components/logo.jsx +0 -0
  161. /package/{templates → reference}/react/components/menu.jsx +0 -0
  162. /package/{templates → reference}/react/components/steps.jsx +0 -0
  163. /package/{templates → reference}/react/layout/body.jsx +0 -0
@@ -1,122 +0,0 @@
1
- <!--
2
- /**
3
- * @title Modal
4
- * @description Componente che collega un pulsante a un dialog nativo, ne gestisce apertura e chiusura e può spostarlo in un contenitore configurato.
5
- *
6
- * @pgs
7
- * - modal: identifica il contenitore logico inizializzato dal modulo modal.
8
- * - modal-button: identifica il controllo di apertura della finestra.
9
- * - dialog: token aggiunto dinamicamente all'elemento dialog inizializzato.
10
- * - modal-dialog: identifica il dialog nativo dopo l'inizializzazione JavaScript.
11
- * - modal-dialog-content: identifica il contenitore visivo della finestra.
12
- * - modal-dialog-content-header: identifica l'intestazione che può ricevere il pulsante di chiusura automatico.
13
- * - modal-dialog-content-scroll: identifica l'area interna scorrevole.
14
- * - modal-close: identifica un controllo che chiude la finestra.
15
- *
16
- * @pgs-option
17
- * - containerID: sul root usa containerID[id] per spostare il dialog nell'elemento con l'id indicato.
18
- * - containerPGS: sul root usa containerPGS[token] per spostare il dialog nel primo elemento con quel token pgs.
19
- * - disableBackdropClose: sul root impedisce la chiusura tramite click sul backdrop.
20
- * - history: sul root sincronizza l'apertura con il parametro modal nella cronologia del browser e richiede un id sul pulsante.
21
- * - topLevel: sul dialog mantiene la finestra nel componente e usa showModal per una modale top-level.
22
- * - left: sul dialog posiziona e anima il contenuto dal lato sinistro.
23
- * - right: sul dialog posiziona e anima il contenuto dal lato destro.
24
- *
25
- * @api
26
- * - pgs.modal.init(root): inizializza le modali presenti nel Document o Element indicato; il valore predefinito è document.
27
- * - pgs.modal.api(element): restituisce l'istanza associata a un root modal inizializzato.
28
- * - instance.open(): apre la finestra se non è già aperta.
29
- * - instance.close(): chiude la finestra se è aperta.
30
- * - instance.toggle(): apre la finestra oppure la chiude quando è già aperta.
31
- * - instance.refresh(): rilegge opzioni e collegamenti della modale, sostituisce listener e observer precedenti e restituisce la nuova API.
32
- * - instance.isOpen(): restituisce true quando l'elemento dialog possiede lo stato nativo open.
33
- *
34
- * @related
35
- * - button: presenta i controlli di apertura, chiusura e annullamento come pulsanti standard.
36
- * - buttonStrong: presenta l'azione di conferma con maggiore enfasi.
37
- * - buttonClose: viene aggiunto automaticamente al controllo di chiusura quando manca nel markup.
38
- * - flexColumnElements: organizza verticalmente il contenuto della modale di conferma.
39
- * - flexRow: dispone affiancate le azioni della modale di conferma.
40
- *
41
- * @return Quattro esempi basati su dialog nativo e un contenitore opzionale usato da containerID.
42
- */
43
- -->
44
-
45
- <div pgs="modal" pgs-option="containerID[modal-container]">
46
- <button pgs="modal-button button" type="button">
47
- <i class="fa-solid fa-window-maximize"></i> Apri modale
48
- </button>
49
-
50
- <dialog>
51
- <div pgs="modal-dialog-content">
52
- <div pgs="modal-dialog-content-header">
53
- <h3>Modale di esempio</h3>
54
- </div>
55
-
56
- <div pgs="modal-dialog-content-scroll">
57
- <p>Contenuto della modale. Il bottone di chiusura viene aggiunto automaticamente se non presente.</p>
58
- </div>
59
- </div>
60
- </dialog>
61
- </div>
62
-
63
- <div pgs="modal" pgs-option="containerID[modal-container]">
64
- <button pgs="modal-button button" type="button">
65
- <i class="fa-solid fa-window-maximize"></i> Apri modale right
66
- </button>
67
-
68
- <dialog pgs-option="right">
69
- <div pgs="modal-dialog-content">
70
- <div pgs="modal-dialog-content-header">
71
- <h3>Modale laterale</h3>
72
- </div>
73
-
74
- <div pgs="modal-dialog-content-scroll">
75
- <p>Contenuto della modale con <code>pgs-option="right"</code>.</p>
76
- </div>
77
- </div>
78
- </dialog>
79
- </div>
80
-
81
- <div pgs="modal" pgs-option="containerID[modal-container]">
82
- <button pgs="modal-button button" type="button">
83
- <i class="fa-solid fa-window-maximize"></i> Apri modale left
84
- </button>
85
-
86
- <dialog pgs-option="left">
87
- <div pgs="modal-dialog-content">
88
- <div pgs="modal-dialog-content-header">
89
- <h3>Modale laterale sinistra</h3>
90
- </div>
91
-
92
- <div pgs="modal-dialog-content-scroll">
93
- <p>Contenuto della modale con <code>pgs-option="left"</code>.</p>
94
- </div>
95
- </div>
96
- </dialog>
97
- </div>
98
-
99
- <div pgs="modal">
100
- <button pgs="modal-button button" type="button">
101
- <i class="fa-solid fa-floppy-disk"></i> Conferma salvataggio
102
- </button>
103
-
104
- <dialog pgs-option="topLevel">
105
- <div pgs="modal-dialog-content">
106
- <div pgs="modal-dialog-content-header">
107
- <h3>Salvare le modifiche?</h3>
108
- </div>
109
-
110
- <div pgs="modal-dialog-content-scroll flexColumnElements">
111
- <p>Hai modifiche non salvate. Conferma per applicarle oppure annulla per tornare alla pagina.</p>
112
-
113
- <div pgs="flexRow">
114
- <button pgs="button modal-close" type="button">Annulla</button>
115
- <button pgs="buttonStrong" type="button">Salva modifiche</button>
116
- </div>
117
- </div>
118
- </div>
119
- </dialog>
120
- </div>
121
-
122
- <div id="modal-container"></div>
@@ -1,71 +0,0 @@
1
- <!--
2
- /**
3
- * @title Notification
4
- * @description Sistema di notifiche persistenti o toast temporanei, generati dall'API oppure da una configurazione JSON dichiarativa contenuta nell'opzione notification.
5
- *
6
- * @pgs
7
- * - notification: identifica il contenitore delle notifiche, sia persistenti sia temporanee.
8
- * - notificationTrigger: identifica una configurazione dichiarativa elaborata e rimossa all'inizializzazione.
9
- * - notification-element: identifica ogni messaggio creato dinamicamente.
10
- * - notification-element-title: identifica il titolo generato del messaggio.
11
- * - notification-element-content: identifica il contenuto generato del messaggio.
12
- *
13
- * @pgs-option
14
- * - toast: sul contenitore notification abilita il posizionamento centrale e la sostituzione del messaggio temporaneo corrente.
15
- * - notification: contiene un oggetto JSON con title, message, element, type, icon, duration e link usando la sintassi notification[{...}].
16
- *
17
- * @pgs-state
18
- * - success: applica la variante positiva al messaggio generato.
19
- * - error: applica la variante di errore e il ruolo alert.
20
- * - warning: applica la variante di avviso.
21
- * - info: applica la variante informativa predefinita.
22
- *
23
- * @api
24
- * - pgs.notification.trigger(root): elabora e rimuove i notificationTrigger dichiarativi presenti nel contesto indicato.
25
- * - pgs.notification.alert.error(text, link, timeout, icon): crea una notifica persistente di errore, opzionalmente cliccabile e temporizzata.
26
- * - pgs.notification.alert.success(text, link, timeout, icon): crea una notifica persistente di successo.
27
- * - pgs.notification.alert.info(text, link, timeout, icon): crea una notifica persistente informativa.
28
- * - pgs.notification.alert.warning(text, link, timeout, icon): crea una notifica persistente di avviso.
29
- * - pgs.notification.alert.deleteAll(): rimuove tutte le notifiche persistenti.
30
- * - pgs.notification.toast.error(text, timeout, icon): crea un toast di errore sostituendo quello eventualmente presente.
31
- * - pgs.notification.toast.success(text, timeout, icon): crea un toast di successo.
32
- * - pgs.notification.toast.info(text, timeout, icon): crea un toast informativo.
33
- * - pgs.notification.toast.warning(text, timeout, icon): crea un toast di avviso.
34
- * - pgs.notification.toast.deleteAll(): rimuove il toast corrente.
35
- *
36
- * @related
37
- * - hidden: nasconde i trigger dichiarativi prima che vengano elaborati.
38
- * - buttonClose: identifica il pulsante di rimozione aggiunto a ogni messaggio.
39
- *
40
- * @return Due contenitori notification, uno persistente e uno configurato con l'opzione toast, con trigger dichiarativi configurati tramite pgs-option.
41
- */
42
- -->
43
-
44
- <div pgs="notification" aria-live="polite"></div>
45
- <div pgs="notification" pgs-option="toast" aria-live="polite"></div>
46
-
47
- <div pgs="hidden notificationTrigger" pgs-option='notification[{
48
- "title": "Titolo",
49
- "message": "Messaggio",
50
- "element": "notification",
51
- "type": "info",
52
- "icon": null,
53
- "duration": "-1",
54
- "link": null
55
- }]'></div>
56
-
57
- <div pgs="hidden notificationTrigger" pgs-option='notification[{
58
- "title": "Benvenuto",
59
- "message": "Messaggio",
60
- "element": "toast",
61
- "type": "info",
62
- "icon": null,
63
- "duration": "3000",
64
- "link": null
65
- }]'></div>
66
- <!--
67
- <div
68
- pgs="hidden notificationTrigger"
69
- pgs-option='notification[{"title":"Titolo","message":"Messaggio","element":"notification","type":"info","icon":"<i class=\"fa-solid fa-rocket\"></i>","duration":"4000","link":"/pagina/"}]'>
70
- </div>
71
- -->
@@ -1,107 +0,0 @@
1
- <!--
2
- /**
3
- * @title Search
4
- * @description Ricerca componibile con suggerimenti asincroni o locali, navigazione da tastiera, selezione, annullamento richieste e attributi ARIA gestiti dal modulo search.
5
- *
6
- * @pgs
7
- * - search: identifica il form inizializzato come ricerca con suggerimenti.
8
- * - search-suggestions: identifica la lista opzionale che riceve i risultati.
9
- * - search-suggestions-item: identifica ogni risultato creato dinamicamente nella lista.
10
- * - search-modal: identifica la variante di ricerca inserita in una modale per dispositivi mobili.
11
- * - search-mobile: identifica il contenitore interno della ricerca mobile.
12
- *
13
- * @pgs-option
14
- * - containerPGS: sul wrapper modal usa containerPGS[header] per spostare il dialog nell'header.
15
- *
16
- * @pgs-state
17
- * - open: sul root search indica che la lista dei suggerimenti è aperta.
18
- * - loading: sul root search indica una sorgente dati in caricamento.
19
- * - error: sul root search indica che il recupero dei suggerimenti è fallito.
20
- * - selected: sul risultato generato indica l'elemento attivo durante la navigazione.
21
- *
22
- * @api
23
- * - pgs.search.init(root): inizializza le ricerche non ancora registrate dentro Document o Element indicato.
24
- * - pgs.search.api(element): restituisce l'istanza associata a un form search inizializzato.
25
- * - instance.configure(options): aggiorna minLength, debounce, limit, submitOnSelect, searchOnFocus, source e onSelect e restituisce l'istanza.
26
- * - instance.setSource(source): configura una sorgente array o funzione asincrona per i suggerimenti.
27
- * - instance.search(query): esegue subito la ricerca e restituisce una Promise con i suggerimenti normalizzati.
28
- * - instance.open(): apre la lista quando sono disponibili risultati.
29
- * - instance.close(): chiude la lista e azzera la selezione attiva.
30
- * - instance.clear(): rimuove risultati e selezione e chiude la lista.
31
- * - instance.cancel(): annulla debounce e richiesta attiva.
32
- * - instance.select(index, submit): seleziona un risultato, emette pgs:search:select e può inviare il form.
33
- * - instance.refresh(): ripete la ricerca usando il valore corrente dell'input.
34
- * - instance.destroy(): rimuove listener, annulla le operazioni e scollega l'istanza.
35
- * - instance.items(): restituisce una copia dei suggerimenti correnti.
36
- * - instance.isOpen(): restituisce true quando la lista dei suggerimenti è aperta.
37
- * - instance.isLoading(): restituisce true durante il caricamento della sorgente.
38
- * - instance.setActiveIndex(index): imposta il suggerimento attivo e aggiorna selezione e attributi ARIA.
39
- *
40
- * @related
41
- * - buttonNohover: applica al form l'aspetto compatto condiviso con i controlli button.
42
- * - modal: fornisce il contenitore e il comportamento della variante mobile.
43
- * - modal-button: apre la ricerca mobile.
44
- * - modal-close: chiude la ricerca mobile.
45
- * - buttonIcon: presenta apertura e chiusura come pulsanti a icona.
46
- * - flexRow: organizza il contenuto della variante mobile e gli elementi dei suggerimenti generati.
47
- * - section: applica la spaziatura di sezione alla ricerca mobile.
48
- *
49
- * @return Form di ricerca autonomo, variante mobile integrata in una modal e script di esempio con sorgente locale.
50
- */
51
- -->
52
-
53
- <form pgs="buttonNohover search" autocomplete="off" action="" method="get">
54
- <button type="submit" title="Cerca"><i class="fa-solid fa-search"></i></button>
55
- <input type="search" name="s" placeholder="Cerca" value="">
56
- <ul pgs="search-suggestions"></ul>
57
- </form>
58
-
59
- <div pgs="modal search-modal" pgs-option="containerPGS[header]">
60
-
61
- <button type="button" pgs="modal-button buttonIcon" title="Cerca">
62
- <i class="fa-solid fa-search"></i>
63
- </button>
64
-
65
- <dialog>
66
- <div pgs="flexRow section search-mobile">
67
-
68
- <form pgs="buttonNohover search" autocomplete="off" action="/" method="get">
69
- <button type="submit" title="Cerca">
70
- <i class="fa-solid fa-search"></i>
71
- </button>
72
-
73
- <input type="search" name="s" placeholder="Cerca" value="">
74
- <ul pgs="search-suggestions"></ul>
75
- </form>
76
-
77
- <button type="button" pgs="modal-close buttonIcon">
78
- <i class="fa-solid fa-close"></i>
79
- </button>
80
-
81
- </div>
82
- </dialog>
83
- </div>
84
-
85
- <script type="module">
86
- import { pgs } from "mypgs";
87
-
88
- const components = [
89
- { label: "Accordion", value: "/componenti/accordion", data: { category: "component" } },
90
- { label: "Dropdown", value: "/componenti/dropdown", data: { category: "component" } },
91
- { label: "Modal", value: "/componenti/modal", data: { category: "component" } },
92
- { label: "Search", value: "/componenti/search", data: { category: "component" } },
93
- { label: "Page Shell", value: "/layout/page-shell", data: { category: "layout" } },
94
- ];
95
-
96
- pgs(document).querySelectorAll("search").forEach(search => {
97
- pgs.search.api(search)?.configure({
98
- minLength: 1,
99
- debounce: 150,
100
- limit: 5,
101
- source: components,
102
- onSelect: ({ item, value }) => {
103
- console.log(`Selezionato ${item.label}: ${value}`);
104
- },
105
- });
106
- });
107
- </script>
@@ -1,76 +0,0 @@
1
- <!--
2
- /**
3
- * @title Slides
4
- * @description Carosello orizzontale che osserva gli elementi visibili e crea automaticamente controlli precedente, successivo e indicatori di posizione.
5
- *
6
- * @pgs
7
- * - slides: identifica il root inizializzato dal modulo slides.
8
- * - slides-container: identifica la lista orizzontale degli elementi scorrevoli.
9
- * - slides-prec: identifica il pulsante precedente creato dinamicamente.
10
- * - slides-next: identifica il pulsante successivo creato dinamicamente.
11
- * - slides-dots: identifica il contenitore degli indicatori creato dinamicamente.
12
- *
13
- * @pgs-option
14
- * - singleScroll: usa un solo elemento visibile come riferimento per la navigazione precedente e successiva.
15
- * - shadowDesktop: abilita l'ombreggiatura laterale del carosello sui layout desktop.
16
- * - notScrollAnimation: applicata a un elemento li disabilita l'animazione visiva basata sulla percentuale di visibilità.
17
- * - notScrollWithMouse: sul root disabilita la gestione dello scorrimento orizzontale tramite mouse.
18
- *
19
- * @api
20
- * - pgs.slides.init(root): inizializza il root stesso quando è un carosello e tutti i caroselli discendenti non ancora registrati; il valore predefinito è document.
21
- * - pgs.slides.api(element): restituisce l'istanza associata a un root slides inizializzato.
22
- * - instance.previous(): porta in vista la slide precedente.
23
- * - instance.next(): porta in vista la slide successiva.
24
- * - instance.goTo(index): porta in vista la slide con l'indice indicato.
25
- * - instance.getCurrentIndexes(): restituisce gli indici delle slide attualmente visibili.
26
- * - instance.getCurrentElements(): restituisce gli elementi slide attualmente visibili.
27
- * - instance.getTotal(): restituisce il numero totale di slide.
28
- * - instance.isAtStart(): restituisce true quando la prima slide è visibile.
29
- * - instance.isAtEnd(): restituisce true quando l'ultima slide è visibile.
30
- * - instance.refresh(): sincronizza controlli e dots, sostituisce listener e observer precedenti e restituisce la nuova API.
31
- *
32
- * @related
33
- * - card: usa card come contenuto dimostrativo di ogni slide.
34
- * - card-img: identifica l'immagine delle card dimostrative.
35
- * - imgCover: adatta le immagini allo spazio disponibile.
36
- * - flexColumn: organizza verticalmente ogni card.
37
- * - flexColumnTexts: applica la spaziatura ai testi delle card.
38
- * - buttonIcon: viene applicato ai controlli precedente e successivo generati.
39
- *
40
- * @return Lista di slide basate su card, completata a runtime con pulsanti e indicatori.
41
- */
42
- -->
43
-
44
- <div pgs="slides" pgs-option="singleScroll shadowDesktop">
45
- <ul pgs="slides-container">
46
- <li>
47
- <article pgs="card flexColumn">
48
- <img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+1" alt="Slide 1">
49
- <div pgs="flexColumnTexts">
50
- <h3>Slide uno</h3>
51
- <p>Contenuto della prima slide.</p>
52
- </div>
53
- </article>
54
- </li>
55
-
56
- <li>
57
- <article pgs="card flexColumn">
58
- <img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+2" alt="Slide 2">
59
- <div pgs="flexColumnTexts">
60
- <h3>Slide due</h3>
61
- <p>Contenuto della seconda slide.</p>
62
- </div>
63
- </article>
64
- </li>
65
-
66
- <li>
67
- <article pgs="card flexColumn">
68
- <img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+3" alt="Slide 3">
69
- <div pgs="flexColumnTexts">
70
- <h3>Slide tre</h3>
71
- <p>Contenuto della terza slide.</p>
72
- </div>
73
- </article>
74
- </li>
75
- </ul>
76
- </div>
@@ -1,83 +0,0 @@
1
- <!--
2
- /**
3
- * @title Step Tabs
4
- * @description Procedura guidata a schede con avanzamento sequenziale, indicatori generati, controlli di navigazione e possibilità di bloccare uno step.
5
- *
6
- * @pgs
7
- * - stepTabs: identifica il root della procedura guidata.
8
- * - stepTabs-dots: identifica il contenitore degli indicatori di avanzamento.
9
- * - stepTabs-dots-dot: identifica ogni indicatore creato dinamicamente.
10
- * - stepTabs-container: contiene nell'ordine tutte le schede della procedura.
11
- * - tab: identifica una singola scheda navigabile.
12
- * - stepTabs-prev: identifica il controllo per tornare allo step precedente.
13
- * - stepTabs-restart: identifica il controllo che riavvia la procedura dal primo step.
14
- * - stepTabs-next: identifica il controllo per avanzare allo step successivo.
15
- *
16
- * @pgs-option
17
- * - tabIcon: su ogni tab usa tabIcon[classe] con una singola classe Font Awesome per l'indicatore corrispondente; il fallback è fa-circle.
18
- * - step: viene applicata a ogni indicatore generato con la sintassi step[indice] per conservarne l'indice zero-based.
19
- * - buttonReverse: inverte testo e icona sul pulsante successivo e appartiene al componente button.
20
- *
21
- * @pgs-state
22
- * - is-active: identifica la scheda corrente e il relativo indicatore.
23
- * - is-completed: identifica gli indicatori degli step già completati e nuovamente selezionabili.
24
- * - is-locked: applicato a un tab impedisce di avanzare finché lo step resta bloccato.
25
- *
26
- * @api
27
- * - pgs.stepTabs.init(root): inizializza le procedure non ancora registrate dentro Document o Element indicato.
28
- * - pgs.stepTabs.api(element): restituisce l'istanza associata a un root stepTabs inizializzato.
29
- * - instance.restart(): torna al primo tab e ripristina i blocchi dichiarati inizialmente.
30
- * - instance.goTo(index, scroll): attiva il tab indicato, aggiorna controlli e indicatori e opzionalmente scorre al componente.
31
- * - instance.next(): attiva il tab successivo entro i limiti disponibili.
32
- * - instance.prev(): attiva il tab precedente entro i limiti disponibili.
33
- * - instance.toggleLock(index, lock): aggiunge o rimuove is-locked dal tab indicato e aggiorna i controlli.
34
- * - instance.refresh(): riesegue l'inizializzazione nel contenitore della procedura e restituisce l'istanza.
35
- * - instance.getCurrent(): restituisce l'indice del tab corrente.
36
- * - instance.getState(): restituisce un oggetto con indice corrente e numero totale di tab.
37
- *
38
- * @related
39
- * - flexColumnElements: organizza verticalmente le aree principali del componente.
40
- * - flexColumnTexts: organizza il contenuto testuale di ogni tab.
41
- * - flexRow: dispone sulla stessa riga i controlli di navigazione.
42
- * - button: applica lo stile standard ai controlli precedente, riavvio e successivo.
43
- *
44
- * @return Procedura HTML a tre schede con indicatori e controlli di navigazione.
45
- */
46
- -->
47
-
48
- <div pgs="stepTabs flexColumnElements">
49
- <div pgs="stepTabs-dots" aria-label="Avanzamento"></div>
50
-
51
- <div pgs="stepTabs-container">
52
- <section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-user]">
53
- <h3>Dati personali</h3>
54
- <p>Contenuto del primo tab.</p>
55
- </section>
56
-
57
- <section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-list-check]">
58
- <h3>Preferenze</h3>
59
- <p>Contenuto del secondo tab.</p>
60
- </section>
61
-
62
- <section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-check]">
63
- <h3>Conferma</h3>
64
- <p>Contenuto del terzo tab.</p>
65
- </section>
66
- </div>
67
-
68
- <div pgs="flexRow">
69
- <button pgs="stepTabs-prev button" type="button">
70
- <i class="fa-solid fa-arrow-left" aria-hidden="true"></i>
71
- Indietro
72
- </button>
73
-
74
- <button pgs="stepTabs-restart button" type="button">
75
- Ricomincia
76
- </button>
77
-
78
- <button pgs="stepTabs-next button" pgs-option="buttonReverse" type="button">
79
- Avanti
80
- <i class="fa-solid fa-arrow-right" aria-hidden="true"></i>
81
- </button>
82
- </div>
83
- </div>
@@ -1,49 +0,0 @@
1
- <!--
2
- /**
3
- * @title Steps
4
- * @description Elenco ordinato di passaggi che presenta numero, contenuto e linea di collegamento, aggiungendo a runtime gli elementi strutturali mancanti.
5
- *
6
- * @pgs
7
- * - steps: identifica la lista ordinata inizializzata dal modulo steps.
8
- * - steps-step: identifica ogni passaggio della sequenza.
9
- * - steps-step-circle: identifica l'indicatore numerico, creato automaticamente se assente.
10
- * - steps-step-content: identifica il contenuto testuale del passaggio.
11
- * - steps-step-line: identifica la linea di collegamento aggiunta dinamicamente a ogni passaggio.
12
- *
13
- * @api
14
- * - pgs.steps.init(root): inizializza le liste steps non ancora registrate dentro Document o Element indicato.
15
- * - pgs.steps.api(element): restituisce l'istanza associata a un root steps inizializzato.
16
- * - instance.steps(): restituisce un array con tutti gli elementi steps-step.
17
- * - instance.getStep(index): restituisce lo step corrispondente all'indice indicato.
18
- * - instance.getTotal(): restituisce il numero totale di step.
19
- * - instance.refresh(): reinizializza la lista, ricrea gli elementi mancanti e restituisce la nuova istanza.
20
- *
21
- * @return Lista ordinata HTML di passaggi numerati completata dal modulo JavaScript.
22
- */
23
- -->
24
-
25
- <ol pgs="steps">
26
- <li pgs="steps-step">
27
- <span pgs="steps-step-circle">1</span>
28
- <div pgs="steps-step-content">
29
- <h3>Primo step</h3>
30
- <p>Descrizione del primo passaggio.</p>
31
- </div>
32
- </li>
33
-
34
- <li pgs="steps-step">
35
- <span pgs="steps-step-circle">2</span>
36
- <div pgs="steps-step-content">
37
- <h3>Secondo step</h3>
38
- <p>Descrizione del secondo passaggio.</p>
39
- </div>
40
- </li>
41
-
42
- <li pgs="steps-step">
43
- <span pgs="steps-step-circle">3</span>
44
- <div pgs="steps-step-content">
45
- <h3>Terzo step</h3>
46
- <p>Descrizione del terzo passaggio.</p>
47
- </div>
48
- </li>
49
- </ol>
@@ -1,41 +0,0 @@
1
- <!--
2
- /**
3
- * @title Summary
4
- * @description Componente che limita inizialmente un testo lungo a tre righe e mostra il controllo di espansione solo quando il contenuto eccede tale altezza.
5
- *
6
- * @pgs
7
- * - summary: identifica il root inizializzato dal modulo summary.
8
- * - summary-content: identifica il contenuto misurato e ridimensionato.
9
- * - summary-button: identifica il controllo per mostrare più o meno contenuto.
10
- *
11
- * @pgs-state
12
- * - overflow: indica che il contenuto supera l'altezza contratta e richiede il controllo.
13
- * - open: indica che tutto il contenuto è espanso e visibile.
14
- *
15
- * @api
16
- * - pgs.summary.init(root): inizializza i summary non ancora registrati dentro Document o Element indicato.
17
- * - pgs.summary.api(element): restituisce l'istanza associata a un root summary inizializzato.
18
- * - instance.open(): espande il contenuto quando supera l'altezza contratta.
19
- * - instance.close(): richiude il contenuto alla dimensione prevista.
20
- * - instance.toggle(): inverte lo stato espanso o contratto.
21
- * - instance.refresh(): ricalcola overflow e altezza conservando lo stato corrente.
22
- * - instance.isOpen(): restituisce true quando il contenuto è espanso.
23
- *
24
- * @return Struttura HTML con contenuto espandibile e pulsante sincronizzato tramite ARIA.
25
- */
26
- -->
27
-
28
- <div pgs="summary">
29
- <div pgs="summary-content">
30
- <p>
31
- 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.
32
- </p>
33
- <p>
34
- Quando il contenuto supera tre righe viene mostrato un pulsante per espandere o richiudere l'area visibile.
35
- </p>
36
- </div>
37
-
38
- <button pgs="summary-button" type="button">
39
- Mostra di più
40
- </button>
41
- </div>
@@ -1,43 +0,0 @@
1
- <!--
2
- /**
3
- * @title Tooltip
4
- * @description Variante compatta del dropdown che mostra un breve pannello informativo controllato da un pulsante a icona.
5
- *
6
- * @pgs
7
- * - tooltip: identifica il root della variante tooltip.
8
- * - tooltip-button: identifica il controllo specifico del tooltip.
9
- * - tooltip-content: identifica il contenuto informativo del tooltip.
10
- *
11
- * @pgs-option
12
- * - position: può essere applicata al root condiviso con sintassi position[lato allineamento] per modificare la posizione ereditata dal dropdown.
13
- *
14
- * @pgs-state
15
- * - open: viene gestito dal modulo dropdown sul root per mostrare o nascondere il tooltip.
16
- *
17
- * @api
18
- * - pgs.dropdown.init(root): inizializza il tooltip perché il suo root condivide il token dropdown.
19
- * - pgs.dropdown.api(element): restituisce l'istanza dropdown associata al root del tooltip.
20
- * - instance.open(): apre il contenuto informativo.
21
- * - instance.close(): chiude il contenuto informativo.
22
- * - instance.toggle(): inverte la visibilità del tooltip.
23
- * - instance.refresh(): reinizializza il contesto e ricalcola il posizionamento.
24
- * - instance.isOpen(): restituisce true quando il tooltip è aperto.
25
- *
26
- * @related
27
- * - dropdown: fornisce apertura, chiusura e posizionamento del tooltip.
28
- * - dropdown-button: collega il pulsante al comportamento dropdown.
29
- * - dropdown-content: collega il pannello al comportamento dropdown.
30
- * - buttonMini: presenta il controllo come pulsante a icona di dimensione minima.
31
- *
32
- * @return Tooltip HTML composto tramite i token condivisi del dropdown.
33
- */
34
- -->
35
-
36
- <span pgs="dropdown tooltip">
37
- <button pgs="dropdown-button buttonMini tooltip-button" title="open-tooltip" type="button">
38
- <i class="fa-solid fa-info"></i>
39
- </button>
40
- <div pgs="dropdown-content tooltip-content">
41
- 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.
42
- </div>
43
- </span>
@@ -1,35 +0,0 @@
1
- <!--
2
- /**
3
- * @title Body
4
- * @description Documento HTML di base che abilita MyPGS, configura i metadati essenziali e applica al body le varianti condivise di sfondo, testo e titoli.
5
- *
6
- * @pgs
7
- * - htmlBase: applica le regole fondamentali all'elemento html.
8
- * - initP: abilita gli stili di layout, componenti e pattern racchiusi nel namespace MyPGS.
9
- * - bodyBase: applica struttura e spaziatura di base al body.
10
- * - bodyImg: abilita le regole condivise per le immagini contenute nella pagina.
11
- * - bodyText: abilita tipografia e spaziatura del testo.
12
- * - bodyHeading: abilita la gerarchia tipografica dei titoli.
13
- *
14
- * @pgs-state
15
- * - darkmode: viene applicato dinamicamente a html e body per attivare il tema scuro.
16
- *
17
- * @return Scheletro HTML completo necessario per inizializzare la libreria MyPGS.
18
- */
19
- -->
20
-
21
- <!DOCTYPE html>
22
- <html lang="it-IT" pgs="htmlBase initP">
23
-
24
- <head>
25
- <meta charset="UTF-8">
26
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
27
-
28
- <!-- Colori Browsers -->
29
- <meta name="theme-color" content="">
30
- <meta name="apple-mobile-web-app-status-bar-color" content="">
31
-
32
- </head>
33
-
34
- <body pgs="bodyBase bodyImg bodyText bodyHeading" >
35
-