mypgs 1.3.7 → 1.4.1
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/assets/javascript/_imports.js +2 -1
- package/assets/javascript/components/_summary.js +105 -0
- package/assets/javascript/index.js +5 -2
- package/assets/javascript/{patterns → layout}/_header.js +5 -6
- package/assets/javascript/pgs.d.ts +7 -0
- package/assets/scss/base/_variables.scss +1 -1
- package/assets/scss/components/_badges.scss +93 -0
- package/assets/scss/components/_summary.scss +56 -0
- package/assets/scss/index.scss +5 -3
- package/assets/scss/{patterns → layout}/_header.scss +6 -2
- package/assets/scss/layout/_pageShell.scss +66 -40
- package/dist/css/index.css +217 -57
- package/dist/css/index.css.map +1 -1
- package/dist/css/index.min.css +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/javascript/index.js +143 -17
- package/dist/javascript/index.js.map +1 -1
- package/dist/javascript/index.min.js +1 -1
- package/package.json +3 -2
- package/plugins/vite-plugin-pgs.js +14 -0
- package/templates/html/components/badges.html +37 -0
- package/templates/html/components/summary.html +14 -0
- package/templates/html/demo.html +1 -1
- package/templates/html/demo.js +15 -20
- package/templates/html/layout/pageShell.html +22 -13
- package/templates/react/components/summary.jsx +18 -0
- package/templates/react/layout/pageShell.jsx +10 -8
- /package/assets/scss/{patterns → layout}/_footer.scss +0 -0
- /package/templates/html/{patterns → layout}/footer.html +0 -0
- /package/templates/html/{patterns → layout}/header.html +0 -0
|
@@ -8,6 +8,7 @@ import { PGS_notification } from "./components/_notifications.js";
|
|
|
8
8
|
import { PGS_slides } from "./components/_slides.js";
|
|
9
9
|
import { PGS_stepTabs } from "./components/_stepTabs.js";
|
|
10
10
|
import { PGS_steps } from "./components/_steps.js";
|
|
11
|
+
import { PGS_summary } from "./components/_summary.js";
|
|
11
12
|
import { PGS_formValidate } from "./functions/_formValidate.js";
|
|
12
13
|
import { PGS_scrollHorizontal } from "./functions/_scrollY.js";
|
|
13
14
|
|
|
@@ -20,7 +21,7 @@ pgs.registerModules({
|
|
|
20
21
|
slides: PGS_slides,
|
|
21
22
|
stepTabs: PGS_stepTabs,
|
|
22
23
|
steps: PGS_steps,
|
|
24
|
+
summary: PGS_summary,
|
|
23
25
|
formValidate: PGS_formValidate,
|
|
24
26
|
scrollHorizontal: PGS_scrollHorizontal,
|
|
25
27
|
});
|
|
26
|
-
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
//= SUMMARY
|
|
2
|
+
const API = new WeakMap();
|
|
3
|
+
let summaryId = 0;
|
|
4
|
+
|
|
5
|
+
function nextSummaryId() {
|
|
6
|
+
summaryId += 1;
|
|
7
|
+
return summaryId;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function getLineHeight(element) {
|
|
11
|
+
const style = window.getComputedStyle(element);
|
|
12
|
+
const lineHeight = parseFloat(style.lineHeight);
|
|
13
|
+
if (Number.isFinite(lineHeight)) return lineHeight;
|
|
14
|
+
|
|
15
|
+
const fontSize = parseFloat(style.fontSize);
|
|
16
|
+
return Number.isFinite(fontSize) ? fontSize * 1.2 : 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function directPgsChild(element, token) {
|
|
20
|
+
return Array.from(element.children).find(child => pgs(child).contains(token));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function PGS_summary_init(root = document) {
|
|
24
|
+
pgs(root).querySelectorAll("summary").forEach((summary) => {
|
|
25
|
+
if (API.has(summary)) return;
|
|
26
|
+
|
|
27
|
+
const content = directPgsChild(summary, "summary-content");
|
|
28
|
+
const button = directPgsChild(summary, "summary-button");
|
|
29
|
+
if (!content || !button) return;
|
|
30
|
+
|
|
31
|
+
const id = nextSummaryId();
|
|
32
|
+
const contentId = content.id || `summary-content-${id}`;
|
|
33
|
+
content.id = contentId;
|
|
34
|
+
|
|
35
|
+
button.type ||= "button";
|
|
36
|
+
button.setAttribute("aria-controls", content.id);
|
|
37
|
+
|
|
38
|
+
function isOpen() {
|
|
39
|
+
return pgs(summary).state.contains("open");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function getCollapsedHeight() {
|
|
43
|
+
return getLineHeight(content) * 3;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function isOverflowing() {
|
|
47
|
+
return content.scrollHeight > Math.ceil(getCollapsedHeight()) + 1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function setExpanded(expanded) {
|
|
51
|
+
const overflow = isOverflowing();
|
|
52
|
+
|
|
53
|
+
pgs(summary).state.toggle("overflow", overflow);
|
|
54
|
+
pgs(summary).state.toggle("open", expanded && overflow);
|
|
55
|
+
|
|
56
|
+
button.hidden = !overflow;
|
|
57
|
+
button.setAttribute("aria-hidden", String(!overflow));
|
|
58
|
+
button.setAttribute("aria-expanded", String(expanded && overflow));
|
|
59
|
+
button.textContent = expanded && overflow ? "Mostra meno" : "Mostra di più";
|
|
60
|
+
|
|
61
|
+
const nextHeight = expanded && overflow ? content.scrollHeight : getCollapsedHeight();
|
|
62
|
+
content.style.setProperty("--summary-content-max-height", `${nextHeight}px`);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function refresh() {
|
|
66
|
+
const wasOpen = isOpen();
|
|
67
|
+
content.style.setProperty("--summary-content-max-height", "none");
|
|
68
|
+
setExpanded(wasOpen);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function toggle() {
|
|
72
|
+
setExpanded(!isOpen());
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
button.addEventListener("click", toggle);
|
|
76
|
+
window.addEventListener("resize", refresh, { passive: true });
|
|
77
|
+
|
|
78
|
+
refresh();
|
|
79
|
+
requestAnimationFrame(refresh);
|
|
80
|
+
|
|
81
|
+
API.set(summary, {
|
|
82
|
+
element: summary,
|
|
83
|
+
content,
|
|
84
|
+
button,
|
|
85
|
+
open: () => setExpanded(true),
|
|
86
|
+
close: () => setExpanded(false),
|
|
87
|
+
toggle,
|
|
88
|
+
refresh,
|
|
89
|
+
isOpen,
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
//# INIT
|
|
95
|
+
PGS_summary_init();
|
|
96
|
+
|
|
97
|
+
//# API
|
|
98
|
+
export function PGS_summary_api(selector) {
|
|
99
|
+
return API.get(selector);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export const PGS_summary = {
|
|
103
|
+
init: PGS_summary_init,
|
|
104
|
+
api: PGS_summary_api
|
|
105
|
+
};
|
|
@@ -14,11 +14,14 @@ import "./components/_modals.js";
|
|
|
14
14
|
import "./components/_slides.js"
|
|
15
15
|
import "./components/_steps.js";
|
|
16
16
|
import "./components/_stepTabs.js";
|
|
17
|
+
import "./components/_summary.js";
|
|
17
18
|
import "./components/_notifications.js";
|
|
18
19
|
|
|
19
20
|
//= IMPORT REGISTRY
|
|
20
21
|
import "./_imports.js";
|
|
21
22
|
|
|
23
|
+
//= LAYOUT
|
|
24
|
+
import "./layout/_header.js";
|
|
25
|
+
|
|
22
26
|
//= PATTERNS
|
|
23
|
-
import "./patterns/
|
|
24
|
-
import "./patterns/_cookieConsent.js";
|
|
27
|
+
import "./patterns/_cookieConsent.js";
|
|
@@ -3,11 +3,11 @@ const header = pgs(document).querySelector("header");
|
|
|
3
3
|
|
|
4
4
|
//= HEADER
|
|
5
5
|
function PGS_header(selectHeader = document) {
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
if (!header) return;
|
|
8
8
|
|
|
9
9
|
const headerElements = pgs(header).querySelectorAll("header-element");
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
if (!headerElements.length) return;
|
|
12
12
|
|
|
13
13
|
headerElements.forEach(selectHeader => {
|
|
@@ -87,12 +87,11 @@ function headerHeight() {
|
|
|
87
87
|
if (!header) return;
|
|
88
88
|
const wordPressBar = window.getComputedStyle(document.documentElement).marginTop ?? 0;
|
|
89
89
|
const headerHeight = header.offsetHeight
|
|
90
|
-
|
|
91
|
-
const body = document.querySelector("body");
|
|
92
90
|
const height = headerHeight + parseInt(wordPressBar);
|
|
93
91
|
const scrollHeight = document.querySelector("header").getAttribute("data-header-scroll") === "true" ? 0 : height;
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
|
|
93
|
+
document.documentElement.style.setProperty("--heightOfHeader", `${height}px`);
|
|
94
|
+
document.documentElement.style.setProperty("--heightOfHeaderScroll", `${scrollHeight}px`);
|
|
96
95
|
}
|
|
97
96
|
headerHeight()
|
|
98
97
|
window.addEventListener("resize", headerHeight);
|
|
@@ -54,6 +54,7 @@ declare global {
|
|
|
54
54
|
slides?: any;
|
|
55
55
|
stepTabs?: any;
|
|
56
56
|
steps?: any;
|
|
57
|
+
summary?: any;
|
|
57
58
|
formValidate?: any;
|
|
58
59
|
scrollHorizontal?: any;
|
|
59
60
|
[moduleName: string]: any;
|
|
@@ -61,6 +62,12 @@ declare global {
|
|
|
61
62
|
|
|
62
63
|
interface PgsBag extends PgsElementApi {}
|
|
63
64
|
|
|
65
|
+
namespace React {
|
|
66
|
+
interface HTMLAttributes<T> {
|
|
67
|
+
pgsHtml?: string;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
var pgs: PgsFunction;
|
|
65
72
|
}
|
|
66
73
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
--text-shadow: 0px 0px 50px #000000;
|
|
20
20
|
--backdrop: #0000003e;
|
|
21
21
|
--blur: blur(20px);
|
|
22
|
-
--page-top:
|
|
22
|
+
--page-top: calc(var(--heightOfHeaderScroll) + (var(--gap-elements)*2));
|
|
23
23
|
--page-width: 1280px;
|
|
24
24
|
--page-space: clamp(var(--padding-page), calc((100% - var(--section-width)) / 2 + var(--padding-page)), 100%);
|
|
25
25
|
--gap-texts: 1.0rem;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
@use "../mixin/mixin" as *;
|
|
2
|
+
|
|
3
|
+
@mixin _badge() {
|
|
4
|
+
--badge-background: var(--color-box);
|
|
5
|
+
--badge-color: var(--color-black);
|
|
6
|
+
--badge-size: 1.25rem;
|
|
7
|
+
--badge-icon-size: 1.4rem;
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
gap: calc(var(--badge-size) / 2);
|
|
12
|
+
width: max-content;
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
min-height: calc(var(--badge-size) * 2.2);
|
|
15
|
+
padding: calc(var(--badge-size) / 2) var(--badge-size);
|
|
16
|
+
border-radius: var(--border-radius-input);
|
|
17
|
+
background: var(--badge-background);
|
|
18
|
+
color: var(--badge-color);
|
|
19
|
+
font-size: var(--badge-size);
|
|
20
|
+
font-weight: 700;
|
|
21
|
+
line-height: 1;
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
white-space: nowrap;
|
|
24
|
+
overflow-wrap: normal;
|
|
25
|
+
|
|
26
|
+
i {
|
|
27
|
+
color: var(--badge-color);
|
|
28
|
+
font-size: var(--badge-icon-size);
|
|
29
|
+
--fa-size: var(--badge-icon-size);
|
|
30
|
+
--fa-primary-color: var(--badge-color);
|
|
31
|
+
--fa-secondary-color: var(--badge-color);
|
|
32
|
+
--fa-secondary-opacity: 0.5;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
[pgs~="badge"],
|
|
37
|
+
[pgs~="badgePrimary"],
|
|
38
|
+
[pgs~="badgeStrong"],
|
|
39
|
+
[pgs~="badgeSuccess"],
|
|
40
|
+
[pgs~="badgeWarning"],
|
|
41
|
+
[pgs~="badgeError"],
|
|
42
|
+
[pgs~="badgeInfo"],
|
|
43
|
+
[pgs~="badgeNeutral"],
|
|
44
|
+
[pgs~="badgeDot"] {
|
|
45
|
+
@include _badge();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[pgs~="badgePrimary"] {
|
|
49
|
+
--badge-background: var(--color-primary-soft);
|
|
50
|
+
--badge-color: var(--color-primary-strong);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
[pgs~="badgeStrong"] {
|
|
54
|
+
--badge-background: var(--color-primary);
|
|
55
|
+
--badge-color: var(--color-whiteFixed);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
[pgs~="badgeSuccess"] {
|
|
59
|
+
--badge-background: var(--color-success-background);
|
|
60
|
+
--badge-color: var(--color-success);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[pgs~="badgeWarning"] {
|
|
64
|
+
--badge-background: var(--color-warning-background);
|
|
65
|
+
--badge-color: var(--color-warning);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[pgs~="badgeError"] {
|
|
69
|
+
--badge-background: var(--color-error-background);
|
|
70
|
+
--badge-color: var(--color-error);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
[pgs~="badgeInfo"] {
|
|
74
|
+
--badge-background: var(--color-linkBackgorud);
|
|
75
|
+
--badge-color: var(--color-link);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
[pgs~="badgeNeutral"] {
|
|
79
|
+
--badge-background: var(--color-box-transparent);
|
|
80
|
+
--badge-color: var(--color-text);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
[pgs~="badgeDot"] {
|
|
84
|
+
&::before {
|
|
85
|
+
content: "";
|
|
86
|
+
display: block;
|
|
87
|
+
inline-size: 0.65em;
|
|
88
|
+
block-size: 0.65em;
|
|
89
|
+
flex: 0 0 auto;
|
|
90
|
+
border-radius: 50%;
|
|
91
|
+
background: currentColor;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
@use "../mixin/mixin" as *;
|
|
2
|
+
|
|
3
|
+
[pgs~="summary"] {
|
|
4
|
+
--summary-fade-size: 4rem;
|
|
5
|
+
--summary-fade-background: var(--color-background);
|
|
6
|
+
--summary-content-max-height: 5.7rem;
|
|
7
|
+
position: relative;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: var(--gap-texts);
|
|
11
|
+
isolation: isolate;
|
|
12
|
+
|
|
13
|
+
[pgs~="summary-content"] {
|
|
14
|
+
max-height: var(--summary-content-max-height, none);
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
transition: max-height 300ms ease;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&[pgs-state~="overflow"]:not([pgs-state~="open"]) {
|
|
20
|
+
[pgs~="summary-content"] {
|
|
21
|
+
position: relative;
|
|
22
|
+
|
|
23
|
+
&::after {
|
|
24
|
+
content: "";
|
|
25
|
+
position: absolute;
|
|
26
|
+
inset: auto 0 0;
|
|
27
|
+
height: var(--summary-fade-size);
|
|
28
|
+
pointer-events: none;
|
|
29
|
+
background: linear-gradient(to bottom, transparent, var(--summary-fade-background));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&:has([pgs~="summary-button"][hidden]) {
|
|
35
|
+
[pgs~="summary-content"]{
|
|
36
|
+
max-height: unset;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
[pgs~="summary-button"] {
|
|
41
|
+
padding: 5px;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
background-color: transparent;
|
|
44
|
+
border: unset;
|
|
45
|
+
margin-top: calc(var(--gap-texts) * -1);
|
|
46
|
+
z-index: 1;
|
|
47
|
+
color: var(--color-primary-strong);
|
|
48
|
+
font-family: var(--font);
|
|
49
|
+
font-weight: 600;
|
|
50
|
+
font-size: 1.6rem;
|
|
51
|
+
|
|
52
|
+
&[hidden] {
|
|
53
|
+
display: none !important;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
package/assets/scss/index.scss
CHANGED
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
@include meta.load-css("layout/grid");
|
|
24
24
|
@include meta.load-css("layout/pageShell");
|
|
25
25
|
@include meta.load-css("layout/gap");
|
|
26
|
+
@include meta.load-css("layout/header");
|
|
27
|
+
@include meta.load-css("layout/footer");
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
/*
|
|
@@ -42,6 +44,8 @@
|
|
|
42
44
|
@include meta.load-css("components/steps");
|
|
43
45
|
@include meta.load-css("components/table");
|
|
44
46
|
@include meta.load-css("components/stepTabs");
|
|
47
|
+
@include meta.load-css("components/summary");
|
|
48
|
+
@include meta.load-css("components/badges");
|
|
45
49
|
@include meta.load-css("components/notification");
|
|
46
50
|
@include meta.load-css("components/tooltip");
|
|
47
51
|
@include meta.load-css("components/searchbar");
|
|
@@ -54,7 +58,5 @@
|
|
|
54
58
|
|--------------------------------------------------------------------------
|
|
55
59
|
*/
|
|
56
60
|
[pgs~=initP] {
|
|
57
|
-
@include meta.load-css("patterns/header");
|
|
58
|
-
@include meta.load-css("patterns/footer");
|
|
59
61
|
@include meta.load-css("patterns/cookieConsent");
|
|
60
|
-
}
|
|
62
|
+
}
|
|
@@ -110,8 +110,12 @@
|
|
|
110
110
|
|
|
111
111
|
[pgs~="modal-dialog-content"] {
|
|
112
112
|
nav {
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
|
|
114
|
+
// padding: var(--padding-2);
|
|
115
|
+
// border-radius: var(--padding-2);
|
|
116
|
+
a {
|
|
117
|
+
--button-background: var(--modal-background);
|
|
118
|
+
}
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
@use "../mixin/mixin" as *;
|
|
2
|
-
|
|
3
2
|
//# pageShell
|
|
4
3
|
$aside-size: 400px;
|
|
5
4
|
$content-size: 500px;
|
|
@@ -9,16 +8,18 @@ $pageShell-test-gap: 4rem;
|
|
|
9
8
|
position: relative;
|
|
10
9
|
top: auto;
|
|
11
10
|
max-height: none;
|
|
12
|
-
overflow: visible;
|
|
13
|
-
scrollbar-gutter: auto;
|
|
14
11
|
width: 100%;
|
|
15
12
|
min-width: 100%;
|
|
13
|
+
|
|
14
|
+
[pgs~="pageShell-aside"] {
|
|
15
|
+
scrollbar-gutter: auto;
|
|
16
|
+
overflow: visible;
|
|
17
|
+
}
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
[pgs~="pageShell"] {
|
|
19
21
|
--pageShell-aside-sticky-top: 0;
|
|
20
|
-
--pageShell-
|
|
21
|
-
--pageShell-asideRight-width: #{$aside-size};
|
|
22
|
+
--pageShell-aside-width: #{$aside-size};
|
|
22
23
|
--pageShell-content-width: 500px;
|
|
23
24
|
--pageShell-gap: var(--gap-elements);
|
|
24
25
|
display: flex;
|
|
@@ -29,7 +30,6 @@ $pageShell-test-gap: 4rem;
|
|
|
29
30
|
justify-content: center;
|
|
30
31
|
width: 100%;
|
|
31
32
|
max-width: calc(var(--page-width) + (var(--padding-page) * 2));
|
|
32
|
-
padding-bottom: var(--page-top);
|
|
33
33
|
padding-inline: var(--padding-page);
|
|
34
34
|
container-type: inline-size;
|
|
35
35
|
|
|
@@ -40,10 +40,10 @@ $pageShell-test-gap: 4rem;
|
|
|
40
40
|
width: min(100%, var(--page-width));
|
|
41
41
|
max-width: var(--page-width);
|
|
42
42
|
padding-top: var(--page-top);
|
|
43
|
+
padding-bottom: var(--gap-elements);
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
[pgs~="pageShell-
|
|
46
|
-
[pgs~="pageShell-asideRight"] {
|
|
46
|
+
[pgs~="pageShell-aside"] {
|
|
47
47
|
@include flexColumn;
|
|
48
48
|
align-items: flex-start;
|
|
49
49
|
isolation: isolate;
|
|
@@ -56,6 +56,10 @@ $pageShell-test-gap: 4rem;
|
|
|
56
56
|
scrollbar-gutter: stable;
|
|
57
57
|
scrollbar-width: none;
|
|
58
58
|
padding-top: var(--page-top);
|
|
59
|
+
padding-bottom: var(--gap-elements);
|
|
60
|
+
flex: 1 1 var(--pageShell-aside-width);
|
|
61
|
+
min-width: min(100%, var(--pageShell-aside-width));
|
|
62
|
+
max-width: var(--pageShell-aside-width);
|
|
59
63
|
|
|
60
64
|
&::-webkit-scrollbar {
|
|
61
65
|
display: none;
|
|
@@ -65,38 +69,63 @@ $pageShell-test-gap: 4rem;
|
|
|
65
69
|
width: 100%;
|
|
66
70
|
}
|
|
67
71
|
|
|
68
|
-
&:
|
|
72
|
+
&:has(+ [pgs~="pageShell-content"]) {
|
|
69
73
|
grid-area: asideLeft;
|
|
70
|
-
flex: 1 1 var(--pageShell-asideLeft-width);
|
|
71
|
-
min-width: min(100%, var(--pageShell-asideLeft-width));
|
|
72
|
-
max-width: var(--pageShell-asideLeft-width);
|
|
73
74
|
}
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
[pgs~="pageShell-aside-scroll"] {
|
|
77
|
+
@include flexColumn;
|
|
78
|
+
align-items: flex-start;
|
|
79
|
+
width: 100%;
|
|
80
|
+
overflow-y: auto;
|
|
81
|
+
overscroll-behavior: contain;
|
|
82
|
+
scrollbar-gutter: stable;
|
|
83
|
+
scrollbar-width: none;
|
|
84
|
+
padding-top: var(--page-top);
|
|
85
|
+
padding-bottom: calc(var(--gap-elements)*2);
|
|
86
|
+
|
|
87
|
+
&::-webkit-scrollbar {
|
|
88
|
+
display: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
>* {
|
|
92
|
+
width: 100%;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
&:has([pgs~="pageShell-aside-scroll"]) {
|
|
97
|
+
padding-top: 0;
|
|
98
|
+
padding-bottom: 0;
|
|
99
|
+
|
|
100
|
+
&::after {
|
|
101
|
+
content: "";
|
|
102
|
+
position: absolute;
|
|
103
|
+
inset-inline: 0;
|
|
104
|
+
bottom: 0;
|
|
105
|
+
height: calc(var(--gap-elements)*2);
|
|
106
|
+
background: linear-gradient(0deg, var(--color-background) 25%, transparent);
|
|
107
|
+
pointer-events: none;
|
|
108
|
+
z-index: 1;
|
|
109
|
+
}
|
|
80
110
|
}
|
|
81
111
|
}
|
|
82
112
|
|
|
83
|
-
|
|
84
|
-
|
|
113
|
+
[pgs~="pageShell-content"]+[pgs~="pageShell-aside"] {
|
|
114
|
+
grid-area: asideRight;
|
|
85
115
|
}
|
|
86
116
|
|
|
87
|
-
&:has(> [pgs~="pageShell-
|
|
88
|
-
max-width: calc(var(--page-width) + var(--pageShell-
|
|
117
|
+
&:has(> [pgs~="pageShell-aside"]) {
|
|
118
|
+
max-width: calc(var(--page-width) + var(--pageShell-aside-width) + var(--pageShell-gap) + (var(--padding-page) * 2));
|
|
89
119
|
}
|
|
90
120
|
|
|
91
|
-
&:has(> [pgs~="pageShell-
|
|
92
|
-
max-width: calc(var(--page-width) + var(--pageShell-
|
|
121
|
+
&:has(> [pgs~="pageShell-aside"] ~ [pgs~="pageShell-aside"]) {
|
|
122
|
+
max-width: calc(var(--page-width) + (var(--pageShell-aside-width) * 2) + (var(--pageShell-gap) * 2) + (var(--padding-page) * 2));
|
|
93
123
|
}
|
|
94
124
|
|
|
95
125
|
//== RESPONSIVE ==//
|
|
96
|
-
|
|
97
|
-
&:has(> [pgs~="pageShell-asideLeft"]) {
|
|
126
|
+
&:has(> [pgs~="pageShell-aside"]) {
|
|
98
127
|
@container (max-width: calc(#{$aside-size} + #{$content-size} + #{$pageShell-test-gap})) {
|
|
99
|
-
[pgs~="pageShell-
|
|
128
|
+
[pgs~="pageShell-aside"] {
|
|
100
129
|
@include pageShell-aside-flow;
|
|
101
130
|
}
|
|
102
131
|
|
|
@@ -107,9 +136,9 @@ $pageShell-test-gap: 4rem;
|
|
|
107
136
|
}
|
|
108
137
|
}
|
|
109
138
|
|
|
110
|
-
&:has(> [pgs~="pageShell-
|
|
139
|
+
&:has(> [pgs~="pageShell-content"] + [pgs~="pageShell-aside"]) {
|
|
111
140
|
@container (max-width: calc(#{$content-size} + #{$aside-size} + #{$pageShell-test-gap})) {
|
|
112
|
-
[pgs~="pageShell-
|
|
141
|
+
[pgs~="pageShell-content"]+[pgs~="pageShell-aside"] {
|
|
113
142
|
@include pageShell-aside-flow;
|
|
114
143
|
padding-top: 0;
|
|
115
144
|
min-width: 100%;
|
|
@@ -117,32 +146,31 @@ $pageShell-test-gap: 4rem;
|
|
|
117
146
|
}
|
|
118
147
|
}
|
|
119
148
|
|
|
120
|
-
&:has(> [pgs~="pageShell-
|
|
149
|
+
&:has(> [pgs~="pageShell-aside"]):has(> [pgs~="pageShell-content"] + [pgs~="pageShell-aside"]) {
|
|
121
150
|
@container (max-width: calc(#{$aside-size} + #{$content-size} + #{$aside-size} + (#{$pageShell-test-gap} * 2))) {
|
|
122
151
|
display: grid;
|
|
123
|
-
grid-template-columns: var(--pageShell-
|
|
152
|
+
grid-template-columns: var(--pageShell-aside-width) minmax(0, var(--page-width));
|
|
124
153
|
grid-template-areas:
|
|
125
154
|
"asideLeft content"
|
|
126
155
|
"asideLeft asideRight";
|
|
127
156
|
justify-content: center;
|
|
128
157
|
|
|
129
|
-
[pgs~="pageShell-
|
|
158
|
+
[pgs~="pageShell-content"]+[pgs~="pageShell-aside"] {
|
|
130
159
|
@include pageShell-aside-flow;
|
|
131
160
|
padding-top: 0;
|
|
132
|
-
min-width: min(100%, var(--pageShell-
|
|
161
|
+
min-width: min(100%, var(--pageShell-aside-width));
|
|
133
162
|
}
|
|
134
163
|
}
|
|
135
164
|
|
|
136
165
|
@container (max-width: calc(#{$aside-size} + #{$content-size} + #{$pageShell-test-gap})) {
|
|
137
166
|
display: flex;
|
|
138
167
|
|
|
139
|
-
[pgs~="pageShell-
|
|
140
|
-
[pgs~="pageShell-asideRight"] {
|
|
168
|
+
[pgs~="pageShell-aside"] {
|
|
141
169
|
@include pageShell-aside-flow;
|
|
142
170
|
}
|
|
143
171
|
|
|
144
172
|
[pgs~="pageShell-content"],
|
|
145
|
-
[pgs~="pageShell-
|
|
173
|
+
[pgs~="pageShell-content"]+[pgs~="pageShell-aside"] {
|
|
146
174
|
padding-top: 0;
|
|
147
175
|
min-width: 100%;
|
|
148
176
|
}
|
|
@@ -153,15 +181,13 @@ $pageShell-test-gap: 4rem;
|
|
|
153
181
|
padding-top: var(--page-top);
|
|
154
182
|
|
|
155
183
|
[pgs~="pageShell-content"],
|
|
156
|
-
[pgs~="pageShell-
|
|
157
|
-
[pgs~="pageShell-asideRight"] {
|
|
184
|
+
[pgs~="pageShell-aside"] {
|
|
158
185
|
padding-top: 0;
|
|
159
186
|
min-width: 100% !important;
|
|
160
187
|
}
|
|
161
188
|
|
|
162
|
-
[pgs~="pageShell-
|
|
163
|
-
[pgs~="pageShell-asideRight"] {
|
|
189
|
+
[pgs~="pageShell-aside"] {
|
|
164
190
|
@include pageShell-aside-flow;
|
|
165
191
|
}
|
|
166
192
|
}
|
|
167
|
-
}
|
|
193
|
+
}
|