@profitlich/template-toolkit 5.3.1 → 5.4.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.
|
@@ -6,6 +6,7 @@ import './menu-toggle.scss';
|
|
|
6
6
|
* @property {string} menuSelector CSS-Selektor (`querySelector`) des Menü-Containers.
|
|
7
7
|
* @property {string} menuLinkSelector CSS-Selektor für Menü-Links, die das Menü beim Klick schliessen (z.B. '.menu-link').
|
|
8
8
|
* @property {string} menuItemSelector CSS-Selektor des Menü-Wrappers; Klicks ausserhalb schliessen das Menü (z.B. '.menu').
|
|
9
|
+
* @property {boolean} [linkClickClosesMenu=true] Wenn `false`, bleibt das Menü beim Klick auf einen `menuLinkSelector`-Link offen. Default `true` = Menü schliesst beim Link-Klick.
|
|
9
10
|
* @property {string} [shiftElementSelector] Optional: CSS-Selektor des Elements, das beim Öffnen um die Scrollbar-Breite verschoben/verbreitert wird, damit z.B. ein fixierter Header nicht springt.
|
|
10
11
|
* @property {number} [shiftDelay=0] Verzögerung in Sekunden, bevor Scrollbar gemessen und Body fixiert wird – nützlich, wenn vorher noch eine CSS-Animation läuft, die die Scrollbar entfernt.
|
|
11
12
|
* @property {boolean} [deferPositionFixed=false] Setzt `data-menu-fixed` erst nach `shiftDelay` statt sofort. Nötig, wenn das Fixieren eine laufende Öffnungs-Animation stören würde.
|
|
@@ -19,6 +20,7 @@ export class MenuToggle {
|
|
|
19
20
|
#menu;
|
|
20
21
|
#menuLinkSelector;
|
|
21
22
|
#menuItemSelector;
|
|
23
|
+
#linkClickClosesMenu;
|
|
22
24
|
#scrollbarWidth;
|
|
23
25
|
#shiftElement;
|
|
24
26
|
#shiftDelay;
|
|
@@ -40,6 +42,7 @@ export class MenuToggle {
|
|
|
40
42
|
menuSelector,
|
|
41
43
|
menuLinkSelector,
|
|
42
44
|
menuItemSelector,
|
|
45
|
+
linkClickClosesMenu = true,
|
|
43
46
|
shiftElementSelector = null,
|
|
44
47
|
shiftDelay = 0,
|
|
45
48
|
deferPositionFixed = false,
|
|
@@ -50,6 +53,7 @@ export class MenuToggle {
|
|
|
50
53
|
this.#menu = document.querySelector(menuSelector);
|
|
51
54
|
this.#menuLinkSelector = menuLinkSelector;
|
|
52
55
|
this.#menuItemSelector = menuItemSelector;
|
|
56
|
+
this.#linkClickClosesMenu = linkClickClosesMenu;
|
|
53
57
|
this.#shiftElement = shiftElementSelector ? document.querySelector(shiftElementSelector) : null;
|
|
54
58
|
this.#shiftDelay = shiftDelay * 1000;
|
|
55
59
|
this.#deferPositionFixed = deferPositionFixed;
|
|
@@ -71,7 +75,7 @@ export class MenuToggle {
|
|
|
71
75
|
});
|
|
72
76
|
|
|
73
77
|
this.#menu.addEventListener('click', (event) => {
|
|
74
|
-
if (this.isActive && event.target.matches(this.#menuLinkSelector)) {
|
|
78
|
+
if (this.#linkClickClosesMenu && this.isActive && event.target.matches(this.#menuLinkSelector)) {
|
|
75
79
|
this.#toggleMenu();
|
|
76
80
|
}
|
|
77
81
|
});
|
package/package.json
CHANGED
package/scss/core/capsize.scss
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
@use "sass:meta";
|
|
2
|
+
|
|
1
3
|
// Emittiert die Capsize-Pseudo-Elemente (::before/::after mit Em-Trims)
|
|
2
4
|
// für den aktuellen Selektor. Die Inhalte (welche Pseudo-Elemente, welche
|
|
3
5
|
// Properties) kommen vollständig aus @capsizecss/core via der
|
|
4
6
|
// Sass-Custom-Function capsize-pseudo-elements (registriert im
|
|
5
7
|
// vite/capsizeSassFunctions.js des Toolkits).
|
|
6
8
|
@mixin capsize($name, $fontSize, $lineHeight) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
// Capsize ist opt-in: ohne registrierte Custom-Function wird übersprungen,
|
|
10
|
+
// damit ein fehlender Vite-Setup nicht zu kryptischem Sass-Fehler führt.
|
|
11
|
+
@if not meta.function-exists("capsize-pseudo-elements") {
|
|
12
|
+
@warn "Capsize ist nicht eingerichtet: Custom-Function capsize-pseudo-elements fehlt. Siehe template-toolkit/CLAUDE.md, Abschnitt Capsize. Aufruf für \"#{$name}\" wird übersprungen.";
|
|
13
|
+
} @else {
|
|
14
|
+
$pseudo: capsize-pseudo-elements($name, $fontSize, $lineHeight);
|
|
15
|
+
@each $selector-suffix, $props in $pseudo {
|
|
16
|
+
&#{$selector-suffix} {
|
|
17
|
+
@each $prop, $val in $props {
|
|
18
|
+
#{$prop}: $val;
|
|
19
|
+
}
|
|
12
20
|
}
|
|
13
21
|
}
|
|
14
22
|
}
|
package/scss/core/layout.scss
CHANGED
|
@@ -88,7 +88,12 @@ $mediaqueries: (
|
|
|
88
88
|
line-height: size($layout, $lineHeight);
|
|
89
89
|
|
|
90
90
|
@if ($capsize != null) {
|
|
91
|
-
|
|
91
|
+
// 4. Argument ist der Capsize-Font-Name (String). Frühere API hatte hier font-weight.
|
|
92
|
+
@if meta.type-of($capsize) != 'string' {
|
|
93
|
+
@warn "font(): 4. Argument (Capsize-Font-Name) muss ein String sein, erhalten #{meta.type-of($capsize)} \"#{$capsize}\". Vermutlich Altlast aus früherer API (font-weight). Capsize wird übersprungen.";
|
|
94
|
+
} @else {
|
|
95
|
+
@include capsize($capsize, $fontSize, $lineHeight);
|
|
96
|
+
}
|
|
92
97
|
}
|
|
93
98
|
|
|
94
99
|
}
|