mypgs 1.0.0 → 1.1.5
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/README.md +124 -11
- package/assets/javascript/_pgs.js +18 -3
- package/assets/javascript/components/_dropdown.js +3 -2
- package/assets/javascript/components/_slides.js +3 -3
- package/assets/javascript/components/_stepTabs.js +157 -0
- package/assets/javascript/index.js +1 -1
- package/assets/javascript/pgs.d.ts +47 -16
- package/assets/scss/base/_body.scss +3 -2
- package/assets/scss/base/_general.scss +46 -43
- package/assets/scss/base/_heading.scss +17 -15
- package/assets/scss/components/_accordion.scss +1 -0
- package/assets/scss/components/_dropdown.scss +19 -26
- package/assets/scss/components/_notification.scss +4 -4
- package/assets/scss/components/_searchbar.scss +2 -2
- package/assets/scss/components/_slides.scss +5 -4
- package/assets/scss/components/_stepTabs.scss +58 -0
- package/assets/scss/components/_steps.scss +4 -3
- package/assets/scss/components/_table.scss +1 -1
- package/assets/scss/components/_tooltip.scss +11 -6
- package/assets/scss/index.scss +29 -32
- package/assets/scss/layout/_gap.scss +3 -0
- package/assets/scss/mixin/_mx-button.scss +64 -41
- package/assets/scss/mixin/_mx-menu.scss +1 -1
- package/dist/css/index.css +2149 -1729
- package/dist/css/index.css.map +1 -1
- package/dist/css/index.min.css +1 -1
- package/dist/index.d.ts +45 -15
- package/dist/javascript/index.js +139 -100
- package/dist/javascript/index.js.map +1 -1
- package/dist/javascript/index.min.js +1 -1
- package/package.json +2 -2
- package/pgs-html-suggestions.vsix +0 -0
- package/templates/components/md-accordion.html +23 -0
- package/templates/components/md-breadcumbs.html +8 -8
- package/templates/components/md-button.html +29 -0
- package/templates/components/md-card.html +23 -0
- package/templates/components/md-dropdown.html +16 -0
- package/templates/components/md-form.html +26 -0
- package/templates/components/md-logo.html +7 -0
- package/templates/components/md-menu.html +39 -5
- package/templates/components/md-modal.html +19 -0
- package/templates/components/md-notification.html +4 -1
- package/templates/components/md-searchbar.html +6 -1
- package/templates/components/md-slides.html +33 -0
- package/templates/components/md-stepTabs.html +36 -0
- package/templates/components/md-steps.html +25 -0
- package/templates/components/md-table.html +24 -0
- package/templates/components/md-tooltip.html +1 -0
- package/templates/demo.css +51 -0
- package/templates/demo.html +24 -0
- package/templates/demo.js +141 -0
- package/templates/layout/md-body.html +1 -1
- package/templates/layout/md-cookieConsent.html +2 -2
- package/templates/layout/md-footer.html +21 -2
- package/templates/layout/md-header.html +22 -2
- package/templates/layout/md-pageShell.html +22 -0
- package/templates/layout/md-section.html +25 -0
- package/assets/javascript/components/_tabs.js +0 -134
- package/assets/scss/components/_tabs.scss +0 -69
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<ul pgs="grid-1 gapTexts">
|
|
2
|
+
<li pgs="accordion" class="accordion-item">
|
|
3
|
+
<button pgs="accordion-button" type="button">
|
|
4
|
+
<i class="fa-solid fa-circle-question" aria-hidden="true"></i>
|
|
5
|
+
<span>Domanda frequente</span>
|
|
6
|
+
</button>
|
|
7
|
+
|
|
8
|
+
<div pgs="accordion-content" hidden>
|
|
9
|
+
<p>Risposta di esempio con contenuto testuale riutilizzabile.</p>
|
|
10
|
+
</div>
|
|
11
|
+
</li>
|
|
12
|
+
|
|
13
|
+
<li pgs="accordion" class="accordion-item">
|
|
14
|
+
<button pgs="accordion-button" type="button">
|
|
15
|
+
<i class="fa-solid fa-circle-info" aria-hidden="true"></i>
|
|
16
|
+
<span>Seconda sezione</span>
|
|
17
|
+
</button>
|
|
18
|
+
|
|
19
|
+
<div pgs="accordion-content" hidden>
|
|
20
|
+
<p>Altro contenuto del pannello accordion.</p>
|
|
21
|
+
</div>
|
|
22
|
+
</li>
|
|
23
|
+
</ul>
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
<nav aria-label="Breadcrumb">
|
|
2
|
-
<ul pgs="
|
|
3
|
-
<li pgs="
|
|
2
|
+
<ul pgs="breadcrumb">
|
|
3
|
+
<li pgs="breadcrumb-item">
|
|
4
4
|
<a href="/">Home</a>
|
|
5
|
-
<span pgs="
|
|
5
|
+
<span pgs="breadcrumb-item-separator" aria-hidden="true">
|
|
6
6
|
>
|
|
7
7
|
</span>
|
|
8
8
|
</li>
|
|
9
9
|
|
|
10
|
-
<li pgs="
|
|
10
|
+
<li pgs="breadcrumb-item">
|
|
11
11
|
<a href="/blog">Blog</a>
|
|
12
|
-
<span pgs="
|
|
12
|
+
<span pgs="breadcrumb-item-separator" aria-hidden="true">
|
|
13
13
|
>
|
|
14
14
|
</span>
|
|
15
15
|
</li>
|
|
16
16
|
|
|
17
|
-
<li pgs="
|
|
18
|
-
<span
|
|
17
|
+
<li pgs="breadcrumb-item">
|
|
18
|
+
<span aria-current="page">
|
|
19
19
|
Articolo di prova
|
|
20
20
|
</span>
|
|
21
21
|
</li>
|
|
22
22
|
</ul>
|
|
23
|
-
</nav>
|
|
23
|
+
</nav>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<div pgs="flexRow">
|
|
2
|
+
<a pgs="button" href="#">
|
|
3
|
+
<i class="fa-duotone fa-solid fa-store"></i>
|
|
4
|
+
About
|
|
5
|
+
</a>
|
|
6
|
+
|
|
7
|
+
<button pgs="button" type="button" pgs-option="buttonReverse">
|
|
8
|
+
Avanti
|
|
9
|
+
<i class="fa-solid fa-arrow-right" aria-hidden="true"></i>
|
|
10
|
+
</button>
|
|
11
|
+
|
|
12
|
+
<button pgs="buttonStrong" type="button">
|
|
13
|
+
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
|
14
|
+
Submit
|
|
15
|
+
</button>
|
|
16
|
+
|
|
17
|
+
<button pgs="buttonIcon" type="button" aria-label="Impostazioni">
|
|
18
|
+
<i class="fa-solid fa-gear" aria-hidden="true"></i>
|
|
19
|
+
</button>
|
|
20
|
+
|
|
21
|
+
<button pgs="buttonMini" type="button" aria-label="Informazioni">
|
|
22
|
+
<i class="fa-solid fa-info" aria-hidden="true"></i>
|
|
23
|
+
</button>
|
|
24
|
+
|
|
25
|
+
<button pgs="buttonBig" type="button" aria-label="Bottone grande">
|
|
26
|
+
<i class="fa-solid fa-rocket" aria-hidden="true"></i>
|
|
27
|
+
Bottone grande
|
|
28
|
+
</button>
|
|
29
|
+
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<div pgs="flex-2">
|
|
2
|
+
|
|
3
|
+
<article pgs="card flexColumn">
|
|
4
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500" alt="Immagine segnaposto">
|
|
5
|
+
|
|
6
|
+
<div pgs="flexColumnTexts">
|
|
7
|
+
<h3>Card riutilizzabile</h3>
|
|
8
|
+
<p>Contenuto descrittivo della card, adatto a liste, anteprime e griglie.</p>
|
|
9
|
+
<a pgs="button" href="#">Leggi di piu</a>
|
|
10
|
+
</div>
|
|
11
|
+
</article>
|
|
12
|
+
|
|
13
|
+
<article pgs="card">
|
|
14
|
+
<a pgs="flexColumn" href="">
|
|
15
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500" alt="Immagine segnaposto">
|
|
16
|
+
|
|
17
|
+
<div pgs="flexColumnTexts">
|
|
18
|
+
<h3>Card riutilizzabile</h3>
|
|
19
|
+
<p>Contenuto descrittivo della card, adatto a liste, anteprime e griglie.</p>
|
|
20
|
+
</div>
|
|
21
|
+
</a>
|
|
22
|
+
</article>
|
|
23
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<span pgs="dropdown">
|
|
2
|
+
<button pgs="dropdown-button button" pgs-option="buttonReverse" type="button">
|
|
3
|
+
Apri menu
|
|
4
|
+
<i class="fa-solid fa-chevron-down" aria-hidden="true"></i>
|
|
5
|
+
</button>
|
|
6
|
+
|
|
7
|
+
<div pgs="dropdown-content">
|
|
8
|
+
<nav aria-label="Menu dropdown">
|
|
9
|
+
<ul>
|
|
10
|
+
<li><a href="#">Voce uno</a></li>
|
|
11
|
+
<li><a href="#">Voce due</a></li>
|
|
12
|
+
<li><a href="#">Voce tre</a></li>
|
|
13
|
+
</ul>
|
|
14
|
+
</nav>
|
|
15
|
+
</div>
|
|
16
|
+
</span>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<form pgs="form" action="#" method="post">
|
|
2
|
+
<label pgs="label" for="form-name">
|
|
3
|
+
Nome
|
|
4
|
+
</label>
|
|
5
|
+
<input id="form-name" pgs="input" type="text" name="name" placeholder="Mario Rossi" required data-form-field-message="Inserisci il nome">
|
|
6
|
+
|
|
7
|
+
<label pgs="label" for="form-email">
|
|
8
|
+
Email
|
|
9
|
+
</label>
|
|
10
|
+
<input id="form-email" pgs="input" type="email" name="email" placeholder="nome@example.com" required data-form-field-message="Inserisci una email valida">
|
|
11
|
+
|
|
12
|
+
<label pgs="label" for="form-message">
|
|
13
|
+
Messaggio
|
|
14
|
+
</label>
|
|
15
|
+
<textarea id="form-message" pgs="textarea" name="message" rows="5" placeholder="Scrivi il messaggio"></textarea>
|
|
16
|
+
|
|
17
|
+
<label pgs="toggle">
|
|
18
|
+
<span>Accetto la privacy policy</span>
|
|
19
|
+
<input type="checkbox" name="privacy" required>
|
|
20
|
+
</label>
|
|
21
|
+
|
|
22
|
+
<button pgs="buttonStrong" type="submit">
|
|
23
|
+
<i class="fa-solid fa-paper-plane" aria-hidden="true"></i>
|
|
24
|
+
Invia
|
|
25
|
+
</button>
|
|
26
|
+
</form>
|
|
@@ -1,6 +1,40 @@
|
|
|
1
|
-
<nav pgs="menuHorizontal">
|
|
2
|
-
<ul
|
|
3
|
-
<li
|
|
4
|
-
|
|
1
|
+
<nav pgs="menuHorizontal" aria-label="Menu orizzontale">
|
|
2
|
+
<ul class="primary-menu">
|
|
3
|
+
<li class="menu-item current-menu-item">
|
|
4
|
+
<a href="/" aria-current="page">
|
|
5
|
+
<i class="fa-solid fa-house" aria-hidden="true"></i>
|
|
6
|
+
<span>Home</span>
|
|
7
|
+
</a>
|
|
8
|
+
</li>
|
|
9
|
+
<li class="menu-item menu-item-has-children">
|
|
10
|
+
<a href="/servizi">
|
|
11
|
+
<i class="fa-solid fa-layer-group" aria-hidden="true"></i>
|
|
12
|
+
<span>Servizi</span>
|
|
13
|
+
</a>
|
|
14
|
+
<ul class="sub-menu">
|
|
15
|
+
<li class="menu-item"><a href="/servizi/uno">Servizio uno</a></li>
|
|
16
|
+
<li class="menu-item"><a href="/servizi/due">Servizio due</a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
</li>
|
|
19
|
+
<li class="menu-item">
|
|
20
|
+
<a href="/contatti">
|
|
21
|
+
<i class="fa-solid fa-envelope" aria-hidden="true"></i>
|
|
22
|
+
<span>Contatti</span>
|
|
23
|
+
</a>
|
|
24
|
+
</li>
|
|
5
25
|
</ul>
|
|
6
|
-
</nav>
|
|
26
|
+
</nav>
|
|
27
|
+
|
|
28
|
+
<nav pgs="menuVertical" aria-label="Menu verticale">
|
|
29
|
+
<ul>
|
|
30
|
+
<li class="menu-item"><a href="#">Voce verticale uno</a></li>
|
|
31
|
+
<li class="menu-item"><a href="#">Voce verticale due</a></li>
|
|
32
|
+
</ul>
|
|
33
|
+
</nav>
|
|
34
|
+
|
|
35
|
+
<nav pgs="menuFooter" aria-label="Menu footer">
|
|
36
|
+
<ul>
|
|
37
|
+
<li class="menu-item"><a href="/privacy-policy">Privacy Policy</a></li>
|
|
38
|
+
<li class="menu-item"><a href="/cookie-policy">Cookie Policy</a></li>
|
|
39
|
+
</ul>
|
|
40
|
+
</nav>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<div pgs="modal" pgs-option="containerID[modal-container]">
|
|
2
|
+
<button pgs="modal-button button" type="button">
|
|
3
|
+
<i class="fa-solid fa-window-maximize"></i> Apri modale
|
|
4
|
+
</button>
|
|
5
|
+
|
|
6
|
+
<dialog>
|
|
7
|
+
<div pgs="modal-dialog-content">
|
|
8
|
+
<div pgs="modal-dialog-content-header">
|
|
9
|
+
<h3>Modale di esempio</h3>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<div pgs="modal-dialog-content-scroll">
|
|
13
|
+
<p>Contenuto della modale. Il bottone di chiusura viene aggiunto automaticamente se non presente.</p>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</dialog>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div id="modal-container"></div>
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
<div pgs="notification" aria-live="polite"></div>
|
|
2
|
+
<div pgs="toast" aria-live="polite"></div>
|
|
3
|
+
|
|
1
4
|
<div pgs="hidden notificationTrigger" data-notification='{
|
|
2
5
|
"title":"Titolo",
|
|
3
6
|
"message":"Messaggio",
|
|
@@ -7,4 +10,4 @@
|
|
|
7
10
|
"duration":"-1",
|
|
8
11
|
"link":null
|
|
9
12
|
}'>
|
|
10
|
-
</div>
|
|
13
|
+
</div>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
<
|
|
1
|
+
<form pgs="buttonNohover searchbar" autocomplete="off" action="" method="get">
|
|
2
|
+
<button type="submit" title="Cerca"><i class="fa-solid fa-search"></i></button>
|
|
3
|
+
<input type="search" name="s" placeholder="Cerca" value="">
|
|
4
|
+
</form>
|
|
5
|
+
|
|
6
|
+
<div pgs="modal searchbar-modal" pgs-option="containerPGS[header]">
|
|
2
7
|
|
|
3
8
|
<button type="button" pgs="modal-button buttonIcon" title="Cerca">
|
|
4
9
|
<i class="fa-solid fa-search"></i>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<div pgs="slides" class="slides" pgs-option="singleScroll shadowDesktop">
|
|
2
|
+
<ul pgs="slides-container" class="slides-container">
|
|
3
|
+
<li class="slides-ul-li">
|
|
4
|
+
<article pgs="card flexColumn">
|
|
5
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+1" alt="Slide 1">
|
|
6
|
+
<div pgs="flexColumnTexts">
|
|
7
|
+
<h3>Slide uno</h3>
|
|
8
|
+
<p>Contenuto della prima slide.</p>
|
|
9
|
+
</div>
|
|
10
|
+
</article>
|
|
11
|
+
</li>
|
|
12
|
+
|
|
13
|
+
<li class="slides-ul-li">
|
|
14
|
+
<article pgs="card flexColumn">
|
|
15
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+2" alt="Slide 2">
|
|
16
|
+
<div pgs="flexColumnTexts">
|
|
17
|
+
<h3>Slide due</h3>
|
|
18
|
+
<p>Contenuto della seconda slide.</p>
|
|
19
|
+
</div>
|
|
20
|
+
</article>
|
|
21
|
+
</li>
|
|
22
|
+
|
|
23
|
+
<li class="slides-ul-li">
|
|
24
|
+
<article pgs="card flexColumn">
|
|
25
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500?text=Slide+3" alt="Slide 3">
|
|
26
|
+
<div pgs="flexColumnTexts">
|
|
27
|
+
<h3>Slide tre</h3>
|
|
28
|
+
<p>Contenuto della terza slide.</p>
|
|
29
|
+
</div>
|
|
30
|
+
</article>
|
|
31
|
+
</li>
|
|
32
|
+
</ul>
|
|
33
|
+
</div>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<div pgs="stepTabs flexColumnElements">
|
|
2
|
+
<div pgs="stepTabs-dots" aria-label="Avanzamento"></div>
|
|
3
|
+
|
|
4
|
+
<div pgs="stepTabs-container">
|
|
5
|
+
<section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-user]">
|
|
6
|
+
<h3>Dati personali</h3>
|
|
7
|
+
<p>Contenuto del primo tab.</p>
|
|
8
|
+
</section>
|
|
9
|
+
|
|
10
|
+
<section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-list-check]">
|
|
11
|
+
<h3>Preferenze</h3>
|
|
12
|
+
<p>Contenuto del secondo tab.</p>
|
|
13
|
+
</section>
|
|
14
|
+
|
|
15
|
+
<section pgs="tab flexColumnTexts" tabindex="-1" pgs-option="tabIcon[fa-check]">
|
|
16
|
+
<h3>Conferma</h3>
|
|
17
|
+
<p>Contenuto del terzo tab.</p>
|
|
18
|
+
</section>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div pgs="flexRow">
|
|
22
|
+
<button pgs="stepTabs-prev button" type="button">
|
|
23
|
+
<i class="fa-solid fa-arrow-left" aria-hidden="true"></i>
|
|
24
|
+
Indietro
|
|
25
|
+
</button>
|
|
26
|
+
|
|
27
|
+
<button pgs="stepTabs-restart button" type="button">
|
|
28
|
+
Ricomincia
|
|
29
|
+
</button>
|
|
30
|
+
|
|
31
|
+
<button pgs="stepTabs-next button" pgs-option="buttonReverse" type="button">
|
|
32
|
+
Avanti
|
|
33
|
+
<i class="fa-solid fa-arrow-right" aria-hidden="true"></i>
|
|
34
|
+
</button>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<ol pgs="steps" class="steps">
|
|
2
|
+
<li pgs="steps-step" class="step_li">
|
|
3
|
+
<span pgs="steps-step-circle">1</span>
|
|
4
|
+
<div pgs="steps-step-content" class="step_li-content">
|
|
5
|
+
<h3>Primo step</h3>
|
|
6
|
+
<p>Descrizione del primo passaggio.</p>
|
|
7
|
+
</div>
|
|
8
|
+
</li>
|
|
9
|
+
|
|
10
|
+
<li pgs="steps-step" class="step_li">
|
|
11
|
+
<span pgs="steps-step-circle">2</span>
|
|
12
|
+
<div pgs="steps-step-content" class="step_li-content">
|
|
13
|
+
<h3>Secondo step</h3>
|
|
14
|
+
<p>Descrizione del secondo passaggio.</p>
|
|
15
|
+
</div>
|
|
16
|
+
</li>
|
|
17
|
+
|
|
18
|
+
<li pgs="steps-step" class="step_li">
|
|
19
|
+
<span pgs="steps-step-circle">3</span>
|
|
20
|
+
<div pgs="steps-step-content" class="step_li-content">
|
|
21
|
+
<h3>Terzo step</h3>
|
|
22
|
+
<p>Descrizione del terzo passaggio.</p>
|
|
23
|
+
</div>
|
|
24
|
+
</li>
|
|
25
|
+
</ol>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<div pgs="table">
|
|
2
|
+
<table>
|
|
3
|
+
<thead>
|
|
4
|
+
<tr>
|
|
5
|
+
<th>Nome</th>
|
|
6
|
+
<th>Stato</th>
|
|
7
|
+
<th>Data</th>
|
|
8
|
+
</tr>
|
|
9
|
+
</thead>
|
|
10
|
+
|
|
11
|
+
<tbody>
|
|
12
|
+
<tr>
|
|
13
|
+
<td>Elemento uno</td>
|
|
14
|
+
<td>Attivo</td>
|
|
15
|
+
<td>2026-01-01</td>
|
|
16
|
+
</tr>
|
|
17
|
+
<tr>
|
|
18
|
+
<td>Elemento due</td>
|
|
19
|
+
<td>Bozza</td>
|
|
20
|
+
<td>2026-02-01</td>
|
|
21
|
+
</tr>
|
|
22
|
+
</tbody>
|
|
23
|
+
</table>
|
|
24
|
+
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<span pgs="dropdown tooltip">
|
|
2
2
|
<button pgs="dropdown-button buttonMini tooltip-button" title="open-tooltip" type="button"><i class="fa-solid fa-info"></i></button>
|
|
3
3
|
<div pgs="dropdown-content tooltip-content">
|
|
4
|
+
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.
|
|
4
5
|
</div>
|
|
5
6
|
</span>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.primary-menu {
|
|
2
|
+
overflow: auto;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
pre {
|
|
6
|
+
display: flex;
|
|
7
|
+
|
|
8
|
+
code {
|
|
9
|
+
overflow: auto;
|
|
10
|
+
width: 100%;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.template-title {
|
|
15
|
+
color: var(--color-primary);
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
gap: 30px;
|
|
19
|
+
text-transform: capitalize;
|
|
20
|
+
|
|
21
|
+
&::before {
|
|
22
|
+
content: "";
|
|
23
|
+
flex-shrink: 1;
|
|
24
|
+
min-inline-size: 0;
|
|
25
|
+
height: 3px;
|
|
26
|
+
border-radius: 3px;
|
|
27
|
+
width: 100%;
|
|
28
|
+
background-color: var(--color-tertiary-soft);
|
|
29
|
+
display: block;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
strong {
|
|
33
|
+
flex: 0 0 auto;
|
|
34
|
+
color: var(--color-primary);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&::after {
|
|
38
|
+
content: "";
|
|
39
|
+
flex-shrink: 1;
|
|
40
|
+
min-inline-size: 0;
|
|
41
|
+
height: 3px;
|
|
42
|
+
border-radius: 3px;
|
|
43
|
+
width: 100%;
|
|
44
|
+
background-color: var(--color-tertiary-soft);
|
|
45
|
+
display: block;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
[pgs~=buttonBig]{
|
|
50
|
+
max-width: 300px;
|
|
51
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="it" pgs="htmlBase initP">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>MyPGS templates demo</title>
|
|
8
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Urbanist:ital,wght@0,100..900;1,100..900&display=swap">
|
|
11
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
|
|
12
|
+
<link rel="stylesheet" href="../dist/css/index.css">
|
|
13
|
+
<link rel="stylesheet" href="demo.css">
|
|
14
|
+
</head>
|
|
15
|
+
|
|
16
|
+
<body pgs="bodyBase bodyImg bodyText bodyHeading" style="background-color: var(--color-box2);">
|
|
17
|
+
<div id="templates-demo-layouts-before"></div>
|
|
18
|
+
<main pgs="main" id="templates-demo-components"></main>
|
|
19
|
+
<div id="templates-demo-layouts" pgs="flexColumnSections"></div>
|
|
20
|
+
|
|
21
|
+
<script src="./demo.js"></script>
|
|
22
|
+
</body>
|
|
23
|
+
|
|
24
|
+
</html>
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
|
|
2
|
+
if (localStorage.getItem("screenIsDarkMode") === "true") {
|
|
3
|
+
document.body.classList.add("darkmode");
|
|
4
|
+
document.querySelector(":root").setAttribute("data-darkmode", "true");
|
|
5
|
+
document.body.setAttribute("data-darkmode", "true");
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
const templateFiles = [
|
|
10
|
+
"components/md-tooltip.html",
|
|
11
|
+
"components/md-modal.html",
|
|
12
|
+
"components/md-stepTabs.html",
|
|
13
|
+
"layout/md-header.html",
|
|
14
|
+
"components/md-accordion.html",
|
|
15
|
+
"components/md-breadcumbs.html",
|
|
16
|
+
"components/md-button.html",
|
|
17
|
+
"components/md-card.html",
|
|
18
|
+
"components/md-dropdown.html",
|
|
19
|
+
"components/md-form.html",
|
|
20
|
+
"components/md-logo.html",
|
|
21
|
+
"components/md-menu.html",
|
|
22
|
+
"components/md-searchbar.html",
|
|
23
|
+
"components/md-slides.html",
|
|
24
|
+
"components/md-steps.html",
|
|
25
|
+
"components/md-table.html",
|
|
26
|
+
"layout/md-body.html",
|
|
27
|
+
"layout/md-cookieConsent.html",
|
|
28
|
+
"layout/md-section.html",
|
|
29
|
+
"layout/md-pageShell.html",
|
|
30
|
+
"layout/md-footer.html",
|
|
31
|
+
"components/md-notification.html",
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
function getTemplateTitle(path) {
|
|
35
|
+
return path
|
|
36
|
+
.replace(".html", "")
|
|
37
|
+
.replace("/", " / ")
|
|
38
|
+
.replace("md-", "");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function renderSourceTemplate(section, html) {
|
|
42
|
+
const pre = document.createElement("pre");
|
|
43
|
+
const code = document.createElement("code");
|
|
44
|
+
code.textContent = html.trim();
|
|
45
|
+
pre.append(code);
|
|
46
|
+
section.append(pre);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function renderTemplate(section, path, html) {
|
|
50
|
+
const content = document.createElement("div");
|
|
51
|
+
content.setAttribute("pgs", "container flexColumnElements");
|
|
52
|
+
content.innerHTML = html;
|
|
53
|
+
section.append(content);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function renderLayout(root, path, html) {
|
|
57
|
+
if (path === "layout/md-body.html") {
|
|
58
|
+
const section = document.createElement("section");
|
|
59
|
+
section.setAttribute("pgs", "section flexColumnElements");
|
|
60
|
+
section.dataset.template = path;
|
|
61
|
+
|
|
62
|
+
const title = document.createElement("h2");
|
|
63
|
+
title.textContent = getTemplateTitle(path);
|
|
64
|
+
section.append(title);
|
|
65
|
+
renderSourceTemplate(section, html);
|
|
66
|
+
root.append(section);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const template = document.createElement("template");
|
|
71
|
+
template.innerHTML = html.trim();
|
|
72
|
+
root.append(template.content.cloneNode(true));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function getLayoutRoot(path, beforeRoot, afterRoot) {
|
|
76
|
+
if (path === "layout/md-header.html") return beforeRoot;
|
|
77
|
+
return afterRoot;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async function loadTemplate(path) {
|
|
81
|
+
const response = await fetch(path);
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
throw new Error(`${path}: ${response.status}`);
|
|
84
|
+
}
|
|
85
|
+
return response.text();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function loadPgsJavascript() {
|
|
89
|
+
const script = document.createElement("script");
|
|
90
|
+
script.src = "../dist/javascript/index.js";
|
|
91
|
+
document.body.append(script);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async function bootDemo() {
|
|
95
|
+
const componentsRoot = document.getElementById("templates-demo-components");
|
|
96
|
+
const layoutsBeforeRoot = document.getElementById("templates-demo-layouts-before");
|
|
97
|
+
const layoutsRoot = document.getElementById("templates-demo-layouts");
|
|
98
|
+
|
|
99
|
+
for (const path of templateFiles) {
|
|
100
|
+
const isLayout = path.startsWith("layout/");
|
|
101
|
+
|
|
102
|
+
if (isLayout) {
|
|
103
|
+
const layoutRoot = getLayoutRoot(path, layoutsBeforeRoot, layoutsRoot);
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
const html = await loadTemplate(path);
|
|
107
|
+
renderLayout(layoutRoot, path, html);
|
|
108
|
+
} catch (error) {
|
|
109
|
+
const message = document.createElement("p");
|
|
110
|
+
message.textContent = `Template non caricato: ${error.message}`;
|
|
111
|
+
layoutRoot.append(message);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const section = document.createElement("section");
|
|
118
|
+
section.setAttribute("pgs", "section flexColumnElements");
|
|
119
|
+
section.dataset.template = path;
|
|
120
|
+
|
|
121
|
+
const title = document.createElement("p");
|
|
122
|
+
title.classList.add("template-title");
|
|
123
|
+
title.innerHTML = "<strong>" + getTemplateTitle(path) + "</strong>";
|
|
124
|
+
section.append(title);
|
|
125
|
+
|
|
126
|
+
try {
|
|
127
|
+
const html = await loadTemplate(path);
|
|
128
|
+
renderTemplate(section, path, html);
|
|
129
|
+
} catch (error) {
|
|
130
|
+
const message = document.createElement("p");
|
|
131
|
+
message.textContent = `Template non caricato: ${error.message}`;
|
|
132
|
+
section.append(message);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
componentsRoot.append(section);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
loadPgsJavascript();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
bootDemo();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section id="pgs-cookieConsent" pgs="cookieConsent" role="dialog" aria-modal="true" data-ga-id="
|
|
1
|
+
<section id="pgs-cookieConsent" pgs="cookieConsent" role="dialog" aria-modal="true" data-ga-id="G-XXXXXXXXXX" hidden tabindex="-1">
|
|
2
2
|
<p><i class="fa-duotone fa-solid fa-cookie-bite"></i> Cookie e privacy <br></p>
|
|
3
3
|
<h2>La tua privacy prima di tutto</h2>
|
|
4
4
|
|
|
@@ -48,4 +48,4 @@
|
|
|
48
48
|
<i class="fa-solid fa-check"></i> Accetta tutto
|
|
49
49
|
</button>
|
|
50
50
|
</div>
|
|
51
|
-
</section>
|
|
51
|
+
</section>
|
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
<footer pgs="footer">
|
|
2
|
+
<button pgs="button toggleDarkmode" type="button" aria-label="Cambia tema">
|
|
3
|
+
<i class="fa-solid fa-moon"></i>
|
|
4
|
+
</button>
|
|
5
|
+
|
|
2
6
|
<section pgs="footer-top section">
|
|
3
7
|
<div pgs="footer-top-content flex-3">
|
|
4
|
-
<div
|
|
5
|
-
|
|
8
|
+
<div pgs="footer-brand">
|
|
9
|
+
<a aria-label="Logo" pgs="logo" href="/">
|
|
10
|
+
<span pgs="logo-text">MyPGS</span>
|
|
11
|
+
</a>
|
|
12
|
+
<p pgs="footer-brand-motto">Componenti frontend riutilizzabili.</p>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div pgs="footer-content">
|
|
16
|
+
<h2>Menu</h2>
|
|
17
|
+
<nav pgs="menuFooter" aria-label="Menu footer">
|
|
18
|
+
<ul>
|
|
19
|
+
<li><a href="/">Home</a></li>
|
|
20
|
+
<li><a href="/contatti">Contatti</a></li>
|
|
21
|
+
</ul>
|
|
22
|
+
</nav>
|
|
23
|
+
</div>
|
|
6
24
|
</div>
|
|
7
25
|
</section>
|
|
26
|
+
|
|
8
27
|
<section pgs="footer-legal section">
|
|
9
28
|
<div pgs="footer-legal-content">
|
|
10
29
|
<p><a href="">Privacy Policy</a></p>
|