@leuffen/themejs1 7.0.1 → 7.0.3

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 (54) hide show
  1. package/_tpl/_root/.kick.yml +5 -0
  2. package/_tpl/_root/.schiller-context.txt +16 -0
  3. package/_tpl/_root/docs/_includes/el/address.html +2 -0
  4. package/_tpl/_root/docs/_includes/el/lang-chooser-list.html +24 -0
  5. package/_tpl/_root/docs/_includes/footer.md +2 -2
  6. package/_tpl/_root/docs/_layouts/0_blanc.html +9 -5
  7. package/_tpl/_root/docs/_layouts/3_1_navbar.html +1 -1
  8. package/_tpl/_root/docs/_layouts/legal/impressum.html +1 -1
  9. package/_tpl/_root/package.json +1 -12
  10. package/_tpl/_root/src/_variables.scss +2 -2
  11. package/_tpl/pages/hausarzt-index-singleleistung.de.md +13 -5
  12. package/_tpl/pages/hausarzt-index.de.md +7 -4
  13. package/_tpl/pages/index-singlepage-frauenarzt.de.md +10 -4
  14. package/_tpl/pages/index.de.md +8 -4
  15. package/_tpl/service/online-anmeldung.de.md +49 -0
  16. package/_tpl/service/online-videosprechstunde.de.md +55 -0
  17. package/_variables.scss +3 -0
  18. package/dist/elements/button-group/button-group.d.ts +1 -0
  19. package/dist/elements/button-group/button-group.js +8 -0
  20. package/dist/elements/elements.d.ts +2 -0
  21. package/dist/elements/elements.js +2 -0
  22. package/dist/elements/hero-slide/hero-slide.d.ts +1 -0
  23. package/dist/elements/hero-slide/hero-slide.js +15 -0
  24. package/dist/sections/hero-max/hero-max.js +1 -7
  25. package/dist/sections/navbar-centerlogo/navbar-centerlogo.js +42 -21
  26. package/dist/sections/navbar-switch2/navbar-switch2.d.ts +1 -0
  27. package/dist/sections/navbar-switch2/navbar-switch2.js +44 -0
  28. package/dist/sections/sec-card-2col/sec-card-2col.js +2 -1
  29. package/dist/sections/sections.d.ts +1 -0
  30. package/dist/sections/sections.js +1 -0
  31. package/elements/_text-format.scss +3 -0
  32. package/elements/button-group/button-group.scss +31 -0
  33. package/elements/button-group/button-group.ts +10 -0
  34. package/elements/elements.scss +3 -0
  35. package/elements/elements.ts +2 -0
  36. package/elements/hero-slide/hero-slide.scss +44 -0
  37. package/elements/hero-slide/hero-slide.ts +21 -0
  38. package/package.json +13 -11
  39. package/sections/_defaults.scss +4 -1
  40. package/sections/hero-max/hero-max.scss +7 -17
  41. package/sections/hero-max/hero-max.ts +1 -7
  42. package/sections/navbar-centerlogo/_burger-menu.scss +3 -1
  43. package/sections/navbar-centerlogo/_sidebar.scss +80 -0
  44. package/sections/navbar-centerlogo/navbar-centerlogo.scss +89 -115
  45. package/sections/navbar-centerlogo/navbar-centerlogo.ts +46 -21
  46. package/sections/navbar-switch2/navbar-switch2.scss +274 -0
  47. package/sections/navbar-switch2/navbar-switch2.ts +47 -0
  48. package/sections/sec-card-2col/sec-card-2col.scss +28 -0
  49. package/sections/sec-card-2col/sec-card-2col.ts +2 -1
  50. package/sections/sec-testimonial-ribbon/sec-testimonial-ribbon.scss +6 -3
  51. package/sections/sections.scss +1 -0
  52. package/sections/sections.ts +1 -0
  53. package/themes/theme1/index.scss +1 -1
  54. package/themes/theme2/index.scss +1 -1
@@ -4,26 +4,31 @@ import {Joda, JodaDescriptionManager} from "@leuffen/jodastyle";
4
4
 
5
5
  const html = `
6
6
 
7
- <nav class="navbar-centerlogo navbar :: mobile :xl:">
8
- <div class="navbar__wrapper [[ layout.container ]]">
9
- <slot class="" data-select="ul.navbar-top "></slot>
7
+ <nav class="navbar-centerlogo">
8
+ <div class="e--spacer"></div>
9
+ <div class="e--backdrop"></div>
10
+ <div class="navbar">
11
+ <div class="navbar__wrapper [[ layout.container ]]">
12
+ <slot class="" data-select="ul.navbar-top "></slot>
10
13
 
11
- <slot class="navbar__logo" data-select="[[ layout.slot_logo_selector ]]"></slot>
14
+ <slot class="navbar__logo" data-select="[[ layout.slot_logo_selector ]]"></slot>
12
15
 
13
- <div class="burger-menu" onclick="this.closest('nav').classList.toggle('sidebar')">
14
- <div class="burger-menu__text">
15
- [[ layout.burger_text ]]
16
- </div>
17
- <div class="burger-menu__burger">
18
- <div></div>
19
- <div></div>
20
- <div></div>
16
+
17
+
18
+ <div class="burger-menu" onclick="this.closest('nav').classList.toggle('sidebar')">
19
+ <div class="burger-menu__text">
20
+ [[ layout.burger_text ]]
21
+ </div>
22
+ <div class="burger-menu__burger">
23
+ <div></div>
24
+ <div></div>
25
+ <div></div>
26
+ </div>
21
27
  </div>
22
- </div>
23
28
 
29
+ </div>
24
30
  </div>
25
31
 
26
-
27
32
  <aside>
28
33
  <div class="backdrop" onclick="this.closest('nav').classList.remove('sidebar')"></div>
29
34
  <div class="menu">
@@ -44,20 +49,40 @@ Joda.registerTemplate(
44
49
  html,
45
50
  {
46
51
  slot_logo_selector: ".brand",
47
- burger_text: "Menu",
48
- container: "container"
52
+ burger_text: "Menü",
53
+ container: "container",
49
54
 
55
+ scrollup_position: 100
50
56
  },
51
57
  {
52
- "onAfterConnectedCallback": (element: HTMLElement) => {
58
+ "onAfterAllTemplatesConnectedCallback": (element: HTMLElement) => {
59
+ // Query css variable --layout-scrollup from elment
60
+
53
61
  // If the page is scrolled down, the navbar should be sticky
54
62
  // Update this on scroll event
55
- window.addEventListener("scroll", () => {
63
+ let lastY = 0;
64
+ let navbar = element.querySelector(".navbar")
65
+ let changer = () => {
56
66
  if (window.scrollY > 1) {
57
- element.classList.add("scrolled");
67
+ navbar.classList.add("scrolled");
68
+ navbar.classList.remove("unscrolled");
58
69
  } else {
59
- element.classList.remove("scrolled");
70
+ navbar.classList.remove("scrolled");
71
+ navbar.classList.add("unscrolled");
60
72
  }
61
- });
73
+
74
+ let isScrollingUp = window.scrollY < lastY;
75
+ lastY = window.scrollY;
76
+
77
+ if (window.scrollY > 250 && ! isScrollingUp) {
78
+ navbar.classList.add("scrollup");
79
+ } else {
80
+ navbar.classList.remove("scrollup");
81
+ }
82
+
83
+ }
84
+
85
+ window.addEventListener("scroll", changer, {passive: true});
86
+ changer()
62
87
  }
63
88
  });
@@ -0,0 +1,274 @@
1
+ @import "bootstrap/scss/functions";
2
+
3
+ // 2. Include any default variable overrides here
4
+
5
+ // 3. Include remainder of required Bootstrap stylesheets
6
+ @import "bootstrap/scss/variables";
7
+
8
+ // 4. Include any default map overrides here
9
+
10
+ // 5. Include remainder of required parts
11
+ @import "bootstrap/scss/maps";
12
+ @import "bootstrap/scss/mixins";
13
+ @import "bootstrap/scss/root";
14
+
15
+
16
+ .isl-navbar-switch2 {
17
+
18
+
19
+ background: transparent;
20
+
21
+
22
+
23
+
24
+ img {
25
+ max-width: 100%;
26
+ }
27
+
28
+ &__top-bar {
29
+ margin-top: 15px;
30
+ margin-bottom: 15px;
31
+
32
+ ul {
33
+ display: flex;
34
+ justify-content: end;
35
+ margin-bottom: 0;
36
+ &>li {
37
+ list-style: none;
38
+ border-radius: 0;
39
+ padding: 7px 15px;
40
+
41
+ height: auto;
42
+ p {
43
+ margin-bottom: 0;
44
+ font-size: 15px;
45
+ color: $black;
46
+ }
47
+ &:not(:last-child) {
48
+ margin-right: 30px;
49
+ }
50
+ a {
51
+ text-decoration: none;
52
+ }
53
+ }
54
+ }
55
+ }
56
+
57
+ &__nav {
58
+ background: $white;
59
+ border-radius: 0;
60
+ width: 100%;
61
+ height: 80px;
62
+ align-content: center;
63
+ box-shadow: 0px 1px 2px #00000029;
64
+
65
+ overflow: hidden;
66
+ &--inner {
67
+ display: flex;
68
+ justify-content: end;
69
+ align-items: center;
70
+
71
+ }
72
+
73
+ &--logo {
74
+ margin-right: auto;
75
+
76
+
77
+ }
78
+
79
+ &--items {
80
+ display: flex;
81
+ margin-bottom: 0;
82
+
83
+ ul {
84
+ margin-bottom: 0;
85
+
86
+ li {
87
+ list-style: none;
88
+ display: inline-flex;
89
+ a {
90
+
91
+ font-size: 18px;
92
+ font-weight: 500;
93
+ margin-right: 2rem;
94
+ height: 80px;
95
+ line-height: 80px;
96
+ color: var(--text-color, black);
97
+ padding: 0 1rem;
98
+ transition: 0.3s;
99
+ text-decoration: none;
100
+
101
+ @include media-breakpoint-down(lg) {
102
+ margin-right: 0.5rem;
103
+ }
104
+
105
+ &:hover {
106
+ background: $primary;
107
+ color: $white;
108
+ }
109
+ }
110
+ }
111
+ }
112
+
113
+ }
114
+
115
+ &--mobile-menu {
116
+ position: relative;
117
+ width: 35px;
118
+ height: 30px;
119
+ opacity: 0.6;
120
+ cursor: pointer;
121
+
122
+ &-selector {
123
+ position: absolute;
124
+ padding: 20px; // Make the clickable area bigger
125
+ margin: -20px; // Make the clickable area bigger
126
+ z-index: 3;
127
+ div {
128
+ width: 35px;
129
+ height: 3px;
130
+ background-color: black;
131
+ margin: 6px 0;
132
+ }
133
+ }
134
+
135
+ &:hover {
136
+ opacity: 1;
137
+ }
138
+
139
+ }
140
+ }
141
+
142
+ &.floating {
143
+ position: absolute;
144
+ top:0;
145
+ left:0;
146
+ right:0;
147
+ z-index: 999;
148
+ }
149
+
150
+ &.mobile {
151
+
152
+ &.floating {
153
+ position: static;
154
+
155
+ }
156
+ .isl-navbar-switch2__top-bar {
157
+ justify-content: unset;
158
+
159
+ &--item {
160
+ &:last-child {
161
+ margin-left: auto;
162
+ }
163
+ }
164
+ }
165
+
166
+
167
+
168
+
169
+ .isl-navbar-switch2__nav {
170
+ height: auto;
171
+ padding: 20px 10px 20px 0;
172
+
173
+ &--inner {
174
+ justify-content: unset;
175
+ padding-left: unset;
176
+ padding-right: unset;
177
+ }
178
+
179
+ &--items {
180
+ display: none;
181
+ }
182
+
183
+ &--logo {
184
+
185
+ }
186
+ }
187
+
188
+
189
+
190
+ }
191
+
192
+ aside {
193
+ &>.backdrop {
194
+ position: fixed;
195
+ background-color: var(--nav-sidbar-backgrond-color, $primary);
196
+ opacity: 0.4;
197
+ top:0; bottom: 0; left: 0; right: 0;
198
+ width: 100%;
199
+ height: 100%;
200
+ transform: scale(0%);
201
+ -webkit-transform: scale(0, 0);
202
+ transition: all 0.1s ease-in-out;
203
+ z-index:9998;
204
+ }
205
+ &>.menu {
206
+
207
+
208
+ position: fixed;
209
+ top: 0; bottom: 0; right: 0;
210
+ width: 90vw;
211
+ max-width: 300px;
212
+ z-index: 9999;
213
+ transform: translateX(100%);
214
+ background-color: var(--nav-sidbar-backgrond-color, $primary);
215
+ // Do big black shadow
216
+ box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
217
+ transition: all 0.2s ease-in-out;
218
+
219
+ ul {
220
+ padding: 0;
221
+ margin: 0;
222
+ &>li {
223
+ list-style: none;
224
+ width: 100%;
225
+ &>a {
226
+ &:hover {
227
+ background-color: var(--nav-sidbar-backgrond-color-hover, darken($primary, 10%));
228
+ }
229
+
230
+ display: block;
231
+ text-decoration: none;
232
+ width: 100%;
233
+ padding: 15px;
234
+ color: $white;
235
+ border-bottom: 1px solid rgba(255, 255, 255, 0.5);
236
+ }
237
+ }
238
+ }
239
+
240
+ &>.menu-header {
241
+ width: 100%;
242
+ border-bottom: 1px solid rgba(255, 255,255,0.5);
243
+ display: flex;
244
+ align-content: center;
245
+ justify-content: end;
246
+
247
+ &>svg {
248
+ cursor: pointer;
249
+ margin: 20px;
250
+ color: $white;
251
+ height: 38px;
252
+ width: 38px;
253
+ }
254
+ }
255
+ }
256
+
257
+ }
258
+
259
+ &.sidebar {
260
+ aside {
261
+ &>.backdrop {
262
+ transform: scale(100%);
263
+ -webkit-transform: scale(100%, 100%);
264
+ }
265
+ &>.menu {
266
+ transform: translateX(0%);
267
+ }
268
+
269
+
270
+ }
271
+ }
272
+
273
+
274
+ }
@@ -0,0 +1,47 @@
1
+
2
+ // language=HTML
3
+ import {Joda, JodaDescriptionManager} from "@leuffen/jodastyle";
4
+
5
+ const html = `
6
+
7
+ <nav class="isl-navbar-switch2 :: mobile :xl:">
8
+
9
+ <div class="isl-navbar-switch2__top-bar container-xxl">
10
+ <slot data-select="ul.navbar-top"></slot>
11
+ </div>
12
+ <div class="isl-navbar-switch2__nav">
13
+ <div class="container-xl">
14
+ <div class="isl-navbar-switch2__nav--inner">
15
+ <div class="isl-navbar-switch2__nav--logo">
16
+ <slot data-select=".brand"></slot>
17
+ </div>
18
+ <div class="isl-navbar-switch2__nav--items :: d-none :xl: d-block">
19
+ <slot data-select="ul.navbar-main" data-child-class="isl-navbar-switch2__nav--items-item"></slot>
20
+ </div>
21
+ <div class="isl-navbar-switch2__nav--mobile-menu :: :xl: d-none" >
22
+ <div class="isl-navbar-switch2__nav--mobile-menu-selector" onclick="this.closest('nav').classList.toggle('sidebar')">
23
+ <div></div>
24
+ <div></div>
25
+ <div></div>
26
+ </div>
27
+
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ <aside>
33
+ <div class="backdrop" onclick="this.closest('nav').classList.remove('sidebar')"></div>
34
+ <div class="menu">
35
+ <div class="menu-header">
36
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16" onclick="this.closest('nav').classList.remove('sidebar')">
37
+ <path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/>
38
+ </svg>
39
+ </div>
40
+ <slot data-select="ul.navbar-main" data-copy="1" data-child-class="isl-navbar-switch2__nav--items-item"></slot>
41
+ </div>
42
+ </aside>
43
+ </nav>
44
+
45
+ `;
46
+
47
+ Joda.registerTemplate("navbar-switch2", html);
@@ -5,11 +5,39 @@
5
5
  background: var(--t-section-background);
6
6
 
7
7
 
8
+ --layout-title-aspect-ratio: 16 / 9;
9
+
10
+
11
+
8
12
  .tjs__sec-card-2col--col-start > slot > .children > *:last-child {
9
13
  margin-bottom: 0 !important;
10
14
  }
11
15
 
12
16
 
17
+
18
+ slot.title {
19
+ &:empty {
20
+ display: none;
21
+ }
22
+ display: block;
23
+ width: 100%;
24
+ text-align: center;
25
+
26
+ aspect-ratio: var(--layout-title-aspect-ratio);
27
+
28
+ object-fit: cover;
29
+ object-position: center center;
30
+ &>p {
31
+ display: contents;
32
+ }
33
+ img {
34
+ width: 100%;
35
+ height: 100%;
36
+ object-fit: cover;
37
+ object-position: center center;
38
+ }
39
+ }
40
+
13
41
  map.aside {
14
42
  --joda-class: "";
15
43
  display: block;
@@ -10,13 +10,14 @@ Joda.registerTemplate(
10
10
 
11
11
  <section class="tjs__sec-card-2col [[layout.class]] :: mobile :lg: desktop">
12
12
  <div class="tjs__sec-card-2col--container [[layout.container]]">
13
+ <slot class="title" data-select="img.title || .title > img"></slot>
13
14
  <div class="row [[layout.order === 'reverse' ? 'flex-column-reverse': '']] [[layout.mobile_reverse === 'yes' ? ':: flex-column-reverse :lg:': '']]">
14
15
  <div class="tjs__sec-card-2col--col-start tjs__section-text p-4 p-lg-5 :: col-12 :lg: col-[[layout.cols]]">
15
16
  <slot></slot>
16
17
  </div>
17
18
  <div class="tjs__sec-card-2col--col-end image-side :: col-12 :lg: col-[[12 - layout.cols]] ">
18
19
 
19
- <slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select="img, .children > .section-hr.aside, .aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
20
+ <slot class="[[layout.slideshow === true ? 'slideshow' : '']]" data-select=".aside || img, .children > .section-hr.aside" [[layout.slideshow !== true ? 'data-limit="1"' : '' ]]></slot>
20
21
  </div>
21
22
  </div>
22
23
  </div>
@@ -1,7 +1,10 @@
1
1
  .tjs__sec-testimonial-ribbon {
2
- padding: var(--t-section-padding);
3
2
 
4
- background-color: var(--t-section-background);
3
+ --layout-bg: var(--t-section-background);
4
+ --layout-bg-ribbon: var(--t-soft-primary);
5
+
6
+ padding: var(--t-section-padding);
7
+ background-color: var(--layout-bg);
5
8
 
6
9
  &.mobile {
7
10
  padding-top: 40px;
@@ -26,7 +29,7 @@
26
29
  & > .tjs__sec-testimonial-ribbon--wrapper {
27
30
  padding-top: 40px;
28
31
  padding-bottom: 40px;
29
- background-color: var(--t-section-background-primary);
32
+ background-color: var(--layout-bg-ribbon);
30
33
  font-size: 1.2em;
31
34
  font-style: italic;
32
35
  letter-spacing: 1px;
@@ -2,6 +2,7 @@
2
2
  @import "defaults";
3
3
  @import "navbar-blox/navbar-blox.scss";
4
4
  @import "navbar-centerlogo/navbar-centerlogo.scss";
5
+ @import "navbar-switch2/navbar-switch2";
5
6
  @import "sec-legal-content/sec-legal-content";
6
7
  @import "sec-testimonial-ribbon/sec-testimonial-ribbon";
7
8
  @import "sec-card-2col/sec-card-2col";
@@ -1,6 +1,7 @@
1
1
 
2
2
  import "./navbar-blox/navbar-blox";
3
3
  import "./navbar-centerlogo/navbar-centerlogo";
4
+ import "./navbar-switch2/navbar-switch2";
4
5
  import "./sec-legal-content/sec-legal-content";
5
6
  import "./sec-testimonial-ribbon/sec-testimonial-ribbon";
6
7
  import "./sec-card-2col/sec-card-2col";
@@ -157,7 +157,7 @@
157
157
  }
158
158
  .content {
159
159
  background-color: #fff;
160
- p {
160
+ p,ul,ol {
161
161
  margin: 20px 20px 20px 0;
162
162
  }
163
163
  }
@@ -187,7 +187,7 @@ $header-text-transform: unset !default;
187
187
  }
188
188
  .content {
189
189
  background-color: #fff;
190
- p {
190
+ p,ul,ol{
191
191
  margin: 20px 20px 20px 0;
192
192
  }
193
193
  }