mypgs 1.5.0 → 1.6.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 +6 -3
- package/README.md +22 -373
- package/assets/javascript/_imports.js +4 -0
- package/assets/javascript/_pgs.js +58 -0
- package/assets/javascript/base/_darkmode.js +27 -105
- package/assets/javascript/base/_svg.js +103 -0
- package/assets/javascript/components/_menu.js +1 -3
- package/assets/javascript/components/_search.js +391 -0
- package/assets/javascript/index.js +2 -0
- package/assets/javascript/layout/_header.js +26 -7
- package/assets/scss/base/_color.scss +8 -15
- package/assets/scss/base/_general.scss +36 -48
- package/assets/scss/base/_heading.scss +14 -16
- package/assets/scss/base/_variables.scss +4 -2
- package/assets/scss/components/_card.scss +10 -0
- package/assets/scss/components/_dropdown.scss +2 -1
- package/assets/scss/components/_logo.scss +2 -2
- package/assets/scss/components/_menu.scss +20 -27
- package/assets/scss/components/_modals.scss +11 -1
- package/assets/scss/components/_search.scss +134 -0
- package/assets/scss/index.scss +8 -4
- package/assets/scss/layout/_header.scss +1 -1
- package/assets/scss/layout/_pageShell.scss +1 -0
- package/dist/css/index.css +658 -620
- package/dist/css/index.css.map +1 -1
- package/dist/css/index.min.css +1 -1
- package/dist/index.d.ts +78 -0
- package/dist/javascript/index.js +904 -370
- package/dist/javascript/index.js.map +1 -1
- package/dist/javascript/index.min.js +1 -1
- package/docs/componenti-e-markup.md +90 -0
- package/docs/convenzioni.md +12 -0
- package/docs/export-e-sviluppo.md +109 -0
- package/docs/helper-javascript.md +127 -0
- package/docs/utilizzo-css-scss.md +36 -0
- package/package.json +1 -6
- package/plugins/vite-plugin-pgs.d.ts +10 -0
- package/templates/html/components/logo.html +1 -1
- package/templates/html/components/menu.html +13 -1
- package/templates/html/components/{searchbar.html → search.html} +7 -5
- package/templates/html/demo.js +1 -8
- package/templates/html/layout/header.html +11 -5
- package/templates/react/components/logo.jsx +1 -1
- package/templates/react/components/{searchbar.jsx → search.jsx} +9 -7
- package/templates/react/patterns/header.jsx +16 -10
- package/assets/scss/components/_searchbar.scss +0 -70
- package/react.d.ts +0 -11
- package/react.js +0 -1
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
<li><a href="/servizi/due">Servizio due</a></li>
|
|
17
17
|
</ul>
|
|
18
18
|
</li>
|
|
19
|
+
<li>
|
|
20
|
+
<a href="/about">
|
|
21
|
+
<i class="fa-solid fa-info-circle" aria-hidden="true"></i>
|
|
22
|
+
<span>about</span>
|
|
23
|
+
</a>
|
|
24
|
+
</li>
|
|
19
25
|
</ul>
|
|
20
26
|
</nav>
|
|
21
27
|
|
|
@@ -37,5 +43,11 @@
|
|
|
37
43
|
<li><a href="/servizi/due">Servizio due</a></li>
|
|
38
44
|
</ul>
|
|
39
45
|
</li>
|
|
46
|
+
<li>
|
|
47
|
+
<a href="/about">
|
|
48
|
+
<i class="fa-solid fa-info-circle" aria-hidden="true"></i>
|
|
49
|
+
<span>about</span>
|
|
50
|
+
</a>
|
|
51
|
+
</li>
|
|
40
52
|
</ul>
|
|
41
|
-
</nav>
|
|
53
|
+
</nav>
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
<form pgs="buttonNohover
|
|
1
|
+
<form pgs="buttonNohover search" autocomplete="off" action="" method="get">
|
|
2
2
|
<button type="submit" title="Cerca"><i class="fa-solid fa-search"></i></button>
|
|
3
3
|
<input type="search" name="s" placeholder="Cerca" value="">
|
|
4
|
+
<ul pgs="search-suggestions"></ul>
|
|
4
5
|
</form>
|
|
5
6
|
|
|
6
|
-
<div pgs="modal
|
|
7
|
+
<div pgs="modal search-modal" pgs-option="containerPGS[header]">
|
|
7
8
|
|
|
8
9
|
<button type="button" pgs="modal-button buttonIcon" title="Cerca">
|
|
9
10
|
<i class="fa-solid fa-search"></i>
|
|
10
11
|
</button>
|
|
11
12
|
|
|
12
13
|
<dialog>
|
|
13
|
-
<div pgs="flexRow section
|
|
14
|
+
<div pgs="flexRow section search-mobile">
|
|
14
15
|
|
|
15
|
-
<form pgs="buttonNohover
|
|
16
|
+
<form pgs="buttonNohover search" autocomplete="off" action="/" method="get">
|
|
16
17
|
<button type="submit" title="Cerca">
|
|
17
18
|
<i class="fa-solid fa-search"></i>
|
|
18
19
|
</button>
|
|
19
20
|
|
|
20
21
|
<input type="search" name="s" placeholder="Cerca" value="">
|
|
22
|
+
<ul pgs="search-suggestions"></ul>
|
|
21
23
|
</form>
|
|
22
24
|
|
|
23
25
|
<button type="button" pgs="modal-close buttonIcon">
|
|
@@ -26,4 +28,4 @@
|
|
|
26
28
|
|
|
27
29
|
</div>
|
|
28
30
|
</dialog>
|
|
29
|
-
</div>
|
|
31
|
+
</div>
|
package/templates/html/demo.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
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
2
|
const templateFiles = [
|
|
10
3
|
"components/summary.html",
|
|
11
4
|
"components/menu.html",
|
|
@@ -21,7 +14,7 @@ const templateFiles = [
|
|
|
21
14
|
"components/tooltip.html",
|
|
22
15
|
"components/form.html",
|
|
23
16
|
"components/logo.html",
|
|
24
|
-
"components/
|
|
17
|
+
"components/search.html",
|
|
25
18
|
"components/slides.html",
|
|
26
19
|
"components/steps.html",
|
|
27
20
|
"components/table.html",
|
|
@@ -46,15 +46,21 @@
|
|
|
46
46
|
<!-- //# HEADER BOTTOM -->
|
|
47
47
|
|
|
48
48
|
<script>
|
|
49
|
+
const addPgsState = (element, state) => {
|
|
50
|
+
if (!element) return;
|
|
51
|
+
|
|
52
|
+
const states = element.getAttribute("pgs-state")?.split(/\s+/) ?? [];
|
|
53
|
+
element.setAttribute("pgs-state", [...new Set([...states, state])].join(" "));
|
|
54
|
+
};
|
|
55
|
+
|
|
49
56
|
if (localStorage.getItem("screenIsDarkMode") === "true") {
|
|
50
|
-
document.
|
|
51
|
-
document.
|
|
52
|
-
document.body.setAttribute("data-darkmode", "true");
|
|
57
|
+
addPgsState(document.documentElement, "darkmode");
|
|
58
|
+
addPgsState(document.body, "darkmode");
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
if (window.innerWidth < 600) {
|
|
56
|
-
|
|
57
|
-
|
|
62
|
+
addPgsState(document.querySelector("header"), "mobileActive");
|
|
63
|
+
addPgsState(document.querySelector("[pgs~=header-element]"), "mobileActive");
|
|
58
64
|
}
|
|
59
65
|
</script>
|
|
60
66
|
</header>
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
export default function
|
|
1
|
+
export default function Search() {
|
|
2
2
|
return (
|
|
3
|
-
<form pgs="buttonNohover
|
|
3
|
+
<form pgs="buttonNohover search" autoComplete="off" action="" method="get">
|
|
4
4
|
<button type="submit" title="Cerca"><i className="fa-solid fa-search"></i></button>
|
|
5
5
|
<input type="search" name="s" placeholder="Cerca" defaultValue="" />
|
|
6
|
+
<ul pgs="search-suggestions"></ul>
|
|
6
7
|
</form>
|
|
7
8
|
);
|
|
8
9
|
}
|
|
9
|
-
export default function SearchbarModal() {
|
|
10
|
-
return (
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
export function SearchModal() {
|
|
12
|
+
return (
|
|
13
|
+
<div pgs="modal search-modal" pgs-option="containerPGS[header]">
|
|
13
14
|
<button type="button" pgs="modal-button buttonIcon" title="Cerca">
|
|
14
15
|
<i className="fa-solid fa-search"></i>
|
|
15
16
|
</button>
|
|
16
17
|
|
|
17
18
|
<dialog>
|
|
18
|
-
<div pgs="flexRow section
|
|
19
|
-
<form pgs="buttonNohover
|
|
19
|
+
<div pgs="flexRow section search-mobile">
|
|
20
|
+
<form pgs="buttonNohover search" autoComplete="off" action="/" method="get">
|
|
20
21
|
<button type="submit" title="Cerca">
|
|
21
22
|
<i className="fa-solid fa-search"></i>
|
|
22
23
|
</button>
|
|
23
24
|
|
|
24
25
|
<input type="search" name="s" placeholder="Cerca" defaultValue="" />
|
|
26
|
+
<ul pgs="search-suggestions"></ul>
|
|
25
27
|
</form>
|
|
26
28
|
|
|
27
29
|
<button type="button" pgs="modal-close buttonIcon">
|
|
@@ -2,16 +2,22 @@ import { useEffect } from "react";
|
|
|
2
2
|
|
|
3
3
|
export default function Header() {
|
|
4
4
|
useEffect(() => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
const addPgsState = (element, state) => {
|
|
6
|
+
if (!element) return;
|
|
7
|
+
|
|
8
|
+
const states = element.getAttribute("pgs-state")?.split(/\s+/) ?? [];
|
|
9
|
+
element.setAttribute("pgs-state", [...new Set([...states, state])].join(" "));
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
if (localStorage.getItem("screenIsDarkMode") === "true") {
|
|
13
|
+
addPgsState(document.documentElement, "darkmode");
|
|
14
|
+
addPgsState(document.body, "darkmode");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (window.innerWidth < 600) {
|
|
18
|
+
addPgsState(document.querySelector("header"), "mobileActive");
|
|
19
|
+
addPgsState(document.querySelector("[pgs~=header-element]"), "mobileActive");
|
|
20
|
+
}
|
|
15
21
|
}, []);
|
|
16
22
|
|
|
17
23
|
return (
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
@use "../mixin/mixin" as *;
|
|
2
|
-
|
|
3
|
-
//= SEARCH BAR
|
|
4
|
-
[pgs~="searchbar"] {
|
|
5
|
-
position: relative;
|
|
6
|
-
flex: 1;
|
|
7
|
-
width: 100%;
|
|
8
|
-
overflow: hidden;
|
|
9
|
-
margin-inline: auto;
|
|
10
|
-
@include button_header();
|
|
11
|
-
padding: 0;
|
|
12
|
-
gap: 0;
|
|
13
|
-
|
|
14
|
-
//+ mobile
|
|
15
|
-
@media (min-width: $mobile) {
|
|
16
|
-
min-width: 21.4rem;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
button {
|
|
20
|
-
outline: none;
|
|
21
|
-
border: none;
|
|
22
|
-
background: none;
|
|
23
|
-
padding-left: var(--button-size);
|
|
24
|
-
aspect-ratio: 1;
|
|
25
|
-
height: 100%;
|
|
26
|
-
border-radius: var(--border-radius-input);
|
|
27
|
-
cursor: pointer;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
input {
|
|
31
|
-
cursor: text !important;
|
|
32
|
-
border: 0;
|
|
33
|
-
padding: var(--button-size);
|
|
34
|
-
margin: 2px;
|
|
35
|
-
margin-left: 0;
|
|
36
|
-
font-family: var(--font);
|
|
37
|
-
font-weight: 600;
|
|
38
|
-
font-size: 1.6rem;
|
|
39
|
-
border-radius: var(--border-radius-input);
|
|
40
|
-
height: 100%;
|
|
41
|
-
width: 100%;
|
|
42
|
-
min-width: 21.4rem;
|
|
43
|
-
background-color: transparent;
|
|
44
|
-
color: contrast-color(color-mix(in srgb, var(--button-background) 77%, black));
|
|
45
|
-
|
|
46
|
-
&::placeholder {
|
|
47
|
-
color: contrast-color(color-mix(in srgb, var(--button-background) 77%, black));
|
|
48
|
-
opacity: .6;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
&:focus-visible {
|
|
52
|
-
outline: unset;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
&:has(input:focus-visible){
|
|
57
|
-
outline: var(--focus-visible);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@at-root dialog #{&} {
|
|
61
|
-
margin-inline: auto;
|
|
62
|
-
max-width: calc(100% - var(--padding-page) * 2);
|
|
63
|
-
height: max-content;
|
|
64
|
-
background-color: var(--color-white);
|
|
65
|
-
|
|
66
|
-
input {
|
|
67
|
-
padding-block: 20px;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
package/react.d.ts
DELETED
package/react.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|