@total_onion/onion-library 2.0.199 → 2.0.200

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 (21) hide show
  1. package/components/block-accent-image-v3/accent-image-v3.scss +3 -1
  2. package/components/block-accordion-v3/accordion-v3.scss +150 -146
  3. package/components/block-back-to-top-button-v3/back-to-top-button-v3.scss +53 -52
  4. package/components/block-block-interactions-v3/block-interactions-v3.scss +24 -22
  5. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +1 -1
  6. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.scss +1 -1
  7. package/components/block-post-info-v3/group_6866429531436.json +101 -27
  8. package/components/block-post-info-v3/post-info-v3.scss +179 -178
  9. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.js +58 -0
  10. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.scss +14 -13
  11. package/package.json +2 -1
  12. package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.css +0 -745
  13. package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +12 -0
  14. package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.css +6 -49
  15. package/public/block-cover-link-v3/cover-link-v3.css +9 -0
  16. package/public/block-scrolling-banner-v3/scrolling-banner-v3.css +11 -1
  17. package/public/block-scrolling-banner-v3/scrolling-banner-v3.js +90 -78
  18. package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.css +16 -1
  19. package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.js +42 -58
  20. package/public/dynamicBlockScss-v3.css +1025 -1773
  21. package/public/publicBundle.css +1025 -1773
@@ -1,5 +1,6 @@
1
1
  import { getSwiperAssetsV2 } from "@total_onion/onion-utils/onion-utils.mjs";
2
2
  import { Navigation, Pagination, Autoplay, EffectFade } from "swiper/modules";
3
+ import "swiper/css/bundle";
3
4
  export default function carouselmultilayoutv3Js(options = {}) {
4
5
  try {
5
6
  const { block } = options;
@@ -47,6 +48,9 @@ export default function carouselmultilayoutv3Js(options = {}) {
47
48
  const centerActiveSlide = Number(dataAttributes.centeractiveslide) === 1;
48
49
  const centerActiveSlidePortrait = Number(dataAttributes.centeractiveslideportrait) === 1;
49
50
  const centerActiveSlideMobile = Number(dataAttributes.centeractiveslidemobile) === 1;
51
+ const centerSlidesBounds = Number(dataAttributes.centerslidesbounds) === 1;
52
+ const centerSlidesBoundsPortrait = Number(dataAttributes.centerslidesboundsportrait) === 1;
53
+ const centerSlidesBoundsMobile = Number(dataAttributes.centerslidesboundsmobile) === 1;
50
54
  const centerInsufficientSlidesDesktop = Number(dataAttributes.centerinsufficientslidesdesktop) === 1;
51
55
  const centerInsufficientSlidesPortrait = Number(dataAttributes.centerinsufficientslidesportrait) === 1;
52
56
  const centerInsufficientSlidesMobile = Number(dataAttributes.centerinsufficientslidesmobile) === 1;
@@ -112,6 +116,7 @@ export default function carouselmultilayoutv3Js(options = {}) {
112
116
  watchOverflow: true,
113
117
  centeredSlides: centerActiveSlideMobile,
114
118
  centerInsufficientSlides: centerInsufficientSlidesMobile,
119
+ centeredSlidesBounds: centerSlidesBoundsMobile,
115
120
  freeMode: {
116
121
  enabled: carouselEnableFreeMode,
117
122
  sticky: carouselEnableFreeMode
@@ -125,6 +130,7 @@ export default function carouselmultilayoutv3Js(options = {}) {
125
130
  slidesPerView: slidesTablet,
126
131
  centeredSlides: centerActiveSlidePortrait,
127
132
  centerInsufficientSlides: centerInsufficientSlidesPortrait,
133
+ centeredSlidesBounds: centerSlidesBoundsPortrait,
128
134
  slidesOffsetBefore: slidesOffsetTabletBefore,
129
135
  slidesOffsetAfter: slidesOffsetTabletAfter,
130
136
  loop: totalSlides > 1 ? loopSlidesPortrait : false
@@ -134,13 +140,19 @@ export default function carouselmultilayoutv3Js(options = {}) {
134
140
  spaceBetween: spaceBetweenSlidesDesktop,
135
141
  centeredSlides: centerActiveSlide,
136
142
  centerInsufficientSlides: centerInsufficientSlidesDesktop,
143
+ centeredSlidesBounds: centerSlidesBounds,
137
144
  slidesOffsetBefore: slidesOffsetDesktopBefore,
138
145
  slidesOffsetAfter: slidesOffsetDesktopAfter,
139
146
  loop: totalSlides > 1 ? loopSlides : false
140
147
  },
141
148
  1440: {
149
+ centeredSlides: centerActiveSlide,
150
+ centerInsufficientSlides: centerInsufficientSlidesDesktop,
151
+ centeredSlidesBounds: centerSlidesBounds,
142
152
  slidesPerView: slidesDesktopFull,
143
153
  spaceBetween: spaceBetweenSlidesDesktopFull,
154
+ slidesOffsetBefore: slidesOffsetDesktopBefore,
155
+ slidesOffsetAfter: slidesOffsetDesktopAfter,
144
156
  loop: totalSlides > 1 ? loopSlides : false
145
157
  }
146
158
  },
@@ -1,4 +1,3 @@
1
- @charset "UTF-8";
2
1
  .cocktail-recipe-v3 {
3
2
  pointer-events: all;
4
3
  }
@@ -47,30 +46,6 @@
47
46
  border: 1px solid #faf8ec;
48
47
  overflow: hidden;
49
48
  }
50
- .cocktail-recipe-v3__servings .servings-control-wrapper .dec-btn-wrapper .servings-dec-btn {
51
- cursor: pointer;
52
- background-color: #0054ff;
53
- color: #faf8ec;
54
- font-size: 28px;
55
- padding-bottom: 4px;
56
- width: 100%;
57
- height: 100%;
58
- border: medium none currentcolor;
59
- border: initial;
60
- transform: translateX(0);
61
- transition: transform 0.3s ease;
62
- }
63
- .cocktail-recipe-v3__servings .servings-control-wrapper .dec-btn-wrapper .servings-dec-btn::after {
64
- content: "\2212";
65
- color: #0054ff;
66
- padding-top: 4px;
67
- width: 38px;
68
- height: 38px;
69
- position: absolute;
70
- top: 0;
71
- right: -38px;
72
- background-color: #faf8ec;
73
- }
74
49
  .cocktail-recipe-v3__servings .servings-control-wrapper .dec-btn-wrapper:hover .servings-dec-btn {
75
50
  transform: translateX(-100%);
76
51
  }
@@ -98,29 +73,6 @@
98
73
  border: 1px solid #faf8ec;
99
74
  overflow: hidden;
100
75
  }
101
- .cocktail-recipe-v3__servings .servings-control-wrapper .inc-btn-wrapper .servings-inc-btn {
102
- cursor: pointer;
103
- color: #0054ff;
104
- font-size: 30px;
105
- background-color: #faf8ec;
106
- width: 100%;
107
- height: 100%;
108
- border: medium none currentcolor;
109
- border: initial;
110
- transform: translateX(-100%);
111
- transition: transform 0.3s ease;
112
- }
113
- .cocktail-recipe-v3__servings .servings-control-wrapper .inc-btn-wrapper .servings-inc-btn::after {
114
- content: "+";
115
- padding-top: 2px;
116
- color: #faf8ec;
117
- width: 38px;
118
- height: 38px;
119
- position: absolute;
120
- top: 0;
121
- right: -38px;
122
- background-color: #0054ff;
123
- }
124
76
  .cocktail-recipe-v3__servings .servings-control-wrapper .inc-btn-wrapper:hover .servings-inc-btn {
125
77
  transform: translateX(0);
126
78
  }
@@ -310,8 +262,13 @@
310
262
  }
311
263
  .cocktail-recipe-v3__instructions-container .instructions-wrapper .instructions-text {
312
264
  font-family: var(--tertiary-font-family);
313
- font-size: calc(30 / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
265
+ font-size: calc(24 / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
314
266
  font-weight: 300;
315
267
  text-box-trim: trim-both;
316
268
  text-box-edge: cap alphabetic;
317
269
  }
270
+ @media screen and (min-width: 768px) {
271
+ .cocktail-recipe-v3__instructions-container .instructions-wrapper .instructions-text {
272
+ font-size: calc(30 / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
273
+ }
274
+ }
@@ -0,0 +1,9 @@
1
+ .cover-link-v3__link {
2
+ position: absolute;
3
+ top: 0;
4
+ right: 0;
5
+ bottom: 0;
6
+ left: 0;
7
+ z-index: 10;
8
+ pointer-events: all;
9
+ }
@@ -1,5 +1,10 @@
1
1
  .scrolling-banner-v3 {
2
- position: relative;
2
+ display: flex;
3
+ overflow-x: hidden;
4
+ flex-wrap: nowrap;
5
+ }
6
+ .scrolling-banner-v3__banner-container,
7
+ .scrolling-banner-v3 > .scrolling-banner-v3 {
3
8
  overflow-x: hidden;
4
9
  color: var(--banner-text-colour);
5
10
  font-weight: var(--weight-extra-bold);
@@ -80,6 +85,11 @@
80
85
  place-self: center;
81
86
  border-radius: 50%;
82
87
  }
88
+ .scrolling-banner-v3__separator--image {
89
+ width: 1.5em;
90
+ width: var(--separator-image-width, 1.5em);
91
+ height: auto;
92
+ }
83
93
  .scrolling-banner-v3--text-shadow {
84
94
  text-shadow: calc(var(--text-shadow-offset-x) / var(--desktop-design-reference) * var(--screen-width-static)) calc(var(--text-shadow-offset-y) / var(--desktop-design-reference) * var(--screen-width-static)) calc(var(--text-shadow-blur) / var(--desktop-design-reference) * var(--screen-width-static)) var(--text-shadow-colour);
85
95
  }
@@ -6,101 +6,113 @@ export default function scrollingbannerv3Js(options = {}) {
6
6
  console.error(error);
7
7
  }
8
8
  }
9
- const initializedBanners = /* @__PURE__ */ new WeakMap();
10
9
  function scrollingbannerJs(block) {
11
10
  if (!block) {
12
11
  return;
13
12
  }
14
- const bannerElement = block.querySelector(".scrolling-banner-v3");
13
+ const bannerElement = block.querySelector(".scrolling-banner-v3__banner-container") ?? block.querySelector(".scrolling-banner-v3");
15
14
  if (!bannerElement) {
16
15
  return;
17
16
  }
17
+ const initializedBanners = /* @__PURE__ */ new WeakMap();
18
18
  try {
19
19
  if (!initializedBanners.has(bannerElement)) {
20
- bannerInit(bannerElement);
20
+ bannerInit(bannerElement, initializedBanners, block);
21
21
  }
22
22
  const wrapper = bannerElement.querySelector(
23
23
  ".scrolling-banner-v3__wrapper"
24
24
  );
25
- if (wrapper) {
26
- if (window.ResizeObserver) {
27
- const resizeObserver = new ResizeObserver(() => {
28
- resetBanner(bannerElement);
29
- bannerInit(bannerElement);
30
- });
31
- resizeObserver.observe(wrapper);
32
- } else {
33
- window.addEventListener("resize", () => {
34
- resetBanner(bannerElement);
35
- bannerInit(bannerElement);
36
- });
37
- }
25
+ if (window.ResizeObserver) {
26
+ const resizeObserver = new ResizeObserver(() => {
27
+ resetBanner(bannerElement, initializedBanners);
28
+ bannerInit(bannerElement, initializedBanners, block);
29
+ });
30
+ resizeObserver.observe(wrapper);
31
+ } else {
32
+ window.addEventListener("resize", () => {
33
+ resetBanner(bannerElement, initializedBanners);
34
+ bannerInit(bannerElement, initializedBanners, block);
35
+ });
38
36
  }
39
37
  } catch (error) {
40
38
  console.error(error);
41
39
  }
42
- function bannerInit(bannerElement2) {
43
- if (initializedBanners.has(bannerElement2)) {
44
- return;
45
- }
46
- const container = bannerElement2.querySelector(
47
- ".scrolling-banner-v3__container"
48
- );
49
- const wrapper = bannerElement2.querySelector(
50
- ".scrolling-banner-v3__wrapper"
51
- );
52
- const inner = bannerElement2.querySelector(
53
- ".scrolling-banner-v3__inner"
54
- );
55
- const speed = bannerElement2.dataset.speed ?? 3;
56
- const wrapperWidth = wrapper.clientWidth;
57
- const innerContentWidth = inner.clientWidth;
58
- const multiplier = Number(Math.round(wrapperWidth / innerContentWidth));
59
- for (let index = 0; index < multiplier; index++) {
60
- const newInner = inner.cloneNode(true);
61
- newInner.classList.add("clone");
62
- container.appendChild(newInner);
63
- }
64
- const containerHeight = inner.clientHeight;
65
- wrapper.setAttribute("style", `min-height: ${containerHeight}px`);
66
- const newTickerContainer = container.cloneNode(true);
67
- newTickerContainer.classList.add("clone");
68
- wrapper.appendChild(newTickerContainer);
69
- const animation1 = [
70
- { transform: "translateX(0%)" },
71
- { transform: "translateX(-100%)" }
72
- ];
73
- const animation2 = [
74
- { transform: "translateX(100%)" },
75
- { transform: "translateX(0%)" }
76
- ];
77
- const time = 1e5 / speed;
78
- let timing = {
79
- duration: time,
80
- iterations: Infinity,
81
- fill: "both"
82
- };
83
- let timing2 = timing;
84
- const containers = bannerElement2.querySelectorAll(
85
- ".scrolling-banner-v3__container"
86
- );
87
- containers[0].style.transform = "translateX(0%)";
88
- containers[1].style.transform = "translateX(100%)";
89
- void containers[0].offsetWidth;
90
- const anim1 = containers[0].animate(animation1, timing);
91
- const anim2 = containers[1].animate(animation2, timing2);
92
- initializedBanners.set(bannerElement2, { anim1, anim2 });
40
+ }
41
+ function bannerInit(bannerElement, initializedBanners, block) {
42
+ if (initializedBanners.has(bannerElement)) {
43
+ return;
93
44
  }
94
- function resetBanner(bannerElement2) {
95
- const data = initializedBanners.get(bannerElement2);
96
- if (data) {
97
- data.anim1?.cancel();
98
- data.anim2?.cancel();
99
- initializedBanners.delete(bannerElement2);
100
- }
101
- bannerElement2.querySelectorAll(
102
- ".scrolling-banner-v3__container.clone, .scrolling-banner-v3__inner.clone"
103
- ).forEach((el) => el.remove());
104
- bannerElement2.querySelector(".scrolling-banner-v3__wrapper").removeAttribute("style");
45
+ const container = bannerElement.querySelector(
46
+ ".scrolling-banner-v3__container"
47
+ );
48
+ const wrapper = bannerElement.querySelector(
49
+ ".scrolling-banner-v3__wrapper"
50
+ );
51
+ const inner = bannerElement.querySelector(".scrolling-banner-v3__inner");
52
+ const speed = bannerElement.dataset.speed ?? 3;
53
+ const wrapperWidth = wrapper.clientWidth;
54
+ const innerContentWidth = inner.clientWidth;
55
+ if (innerContentWidth == 0) {
56
+ return;
57
+ }
58
+ const multiplier = Number(Math.round(wrapperWidth / innerContentWidth));
59
+ for (let index = 0; index < multiplier; index++) {
60
+ const newInner = inner.cloneNode(true);
61
+ newInner.classList.add("clone");
62
+ container.appendChild(newInner);
63
+ }
64
+ const containerHeight = inner.clientHeight;
65
+ wrapper.setAttribute("style", `min-height: ${containerHeight}px`);
66
+ const newTickerContainer = container.cloneNode(true);
67
+ newTickerContainer.classList.add("clone");
68
+ wrapper.appendChild(newTickerContainer);
69
+ const animation1 = [
70
+ { transform: "translateX(0%)" },
71
+ { transform: "translateX(-100%)" }
72
+ ];
73
+ const animation2 = [
74
+ { transform: "translateX(100%)" },
75
+ { transform: "translateX(0%)" }
76
+ ];
77
+ const bannerLength = Math.floor(container.getBoundingClientRect().width);
78
+ const singleBannerCycleTime = bannerLength * 100 / speed;
79
+ let timing = {
80
+ duration: singleBannerCycleTime,
81
+ iterations: Infinity,
82
+ fill: "both"
83
+ };
84
+ let timing2 = timing;
85
+ const containers = bannerElement.querySelectorAll(
86
+ ".scrolling-banner-v3__container"
87
+ );
88
+ containers[0].style.transform = "translateX(0%)";
89
+ containers[1].style.transform = "translateX(100%)";
90
+ containers[0].offsetWidth;
91
+ const anim1 = containers[0].animate(animation1, timing);
92
+ const anim2 = containers[1].animate(animation2, timing2);
93
+ initializedBanners.set(bannerElement, { anim1, anim2 });
94
+ function pauseAnimations() {
95
+ anim1.pause();
96
+ anim2.pause();
97
+ }
98
+ function resumeAnimations() {
99
+ anim1.play();
100
+ anim2.play();
101
+ }
102
+ if (bannerElement.querySelector("a")) {
103
+ block.addEventListener("mouseover", pauseAnimations);
104
+ block.addEventListener("mouseleave", resumeAnimations);
105
+ }
106
+ }
107
+ function resetBanner(bannerElement, initializedBanners) {
108
+ const data = initializedBanners.get(bannerElement);
109
+ if (data) {
110
+ data.anim1?.cancel();
111
+ data.anim2?.cancel();
112
+ initializedBanners.delete(bannerElement);
105
113
  }
114
+ bannerElement.querySelectorAll(
115
+ ".scrolling-banner-v3__container.clone, .scrolling-banner-v3__inner.clone"
116
+ ).forEach((el) => el.remove());
117
+ bannerElement.querySelector(".scrolling-banner-v3__wrapper").removeAttribute("style");
106
118
  }
@@ -1,3 +1,18 @@
1
1
  .site-copyright-notice-v3 {
2
- color: red;
2
+ color: black;
3
+ color: var(--site-copyright-notice-colour, black);
4
+ font-size: calc(14px / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
5
+ font-size: calc(var(--site-copyright-font-size-mobile, 14px) / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
6
+ }
7
+ @media screen and (min-width: 768px) {
8
+ .site-copyright-notice-v3 {
9
+ font-size: calc(16px / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
10
+ font-size: calc(var(--site-copyright-font-size-portrait, 16px) / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
11
+ }
12
+ }
13
+ @media screen and (min-width: 1024px) {
14
+ .site-copyright-notice-v3 {
15
+ font-size: calc(18px / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
16
+ font-size: calc(var(--site-copyright-font-size-desktop, 18px) / var(--design-reference) * var(--font-reference) * var(--font-size-multiplier));
17
+ }
3
18
  }
@@ -1,60 +1,44 @@
1
1
  export default function sitecopyrightnoticev3Js(options = {}) {
2
- try {
3
- const {block} = options;
4
-
5
- customElements.define(
6
- 'site-copyright-notice-v3',
7
- class extends HTMLElement {
8
- static observedAttributes = ['data-copyright-text'];
9
- constructor() {
10
- super();
11
- let template = document.querySelector(
12
- '#site-copyright-notice-v3'
13
- );
14
- let templateContent = template.content;
15
-
16
- // const shadowRoot = this.attachShadow({mode: 'open'});
17
- // shadowRoot.appendChild(
18
- // document.importNode(templateContent, true)
19
- // );
20
- // shadowRoot.querySelector(
21
- // '.site-copyright-notice-v3__title'
22
- // ).innerText = this.dataset.copyrightText;
23
-
24
- this.appendChild(
25
- document.importNode(templateContent, true)
26
- );
27
-
28
- this.classList.add('loaded');
29
- }
30
- connectedCallback() {
31
- console.log('Custom element added to page.');
32
- this.querySelector(
33
- '.site-copyright-notice-v3__title'
34
- ).innerText = this.dataset.copyrightText;
35
- }
36
-
37
- // disconnectedCallback() {
38
- // console.log('Custom element removed from page.');
39
- // }
40
-
41
- // connectedMoveCallback() {
42
- // console.log('Custom element moved with moveBefore()');
43
- // }
44
-
45
- // adoptedCallback() {
46
- // console.log('Custom element moved to new page.');
47
- // }
48
-
49
- attributeChangedCallback(name, oldValue, newValue) {
50
- console.log(`Attribute ${name} has changed.`);
51
- this.querySelector(
52
- '.site-copyright-notice-v3__title'
53
- ).innerText = this.dataset.copyrightText;
54
- }
55
- }
56
- );
57
- } catch (error) {
58
- console.error(error);
59
- }
2
+ try {
3
+ customElements.define(
4
+ "site-copyright-notice-v3",
5
+ class extends HTMLElement {
6
+ static observedAttributes = ["data-copyright-text"];
7
+ constructor() {
8
+ super();
9
+ let template = document.querySelector(
10
+ "#site-copyright-notice-v3"
11
+ );
12
+ let templateContent = template.content;
13
+ this.appendChild(
14
+ document.importNode(templateContent, true)
15
+ );
16
+ this.classList.add("loaded");
17
+ }
18
+ connectedCallback() {
19
+ console.log("Custom element added to page.");
20
+ this.querySelector(
21
+ ".site-copyright-notice-v3__title"
22
+ ).innerText = this.dataset.copyrightText;
23
+ }
24
+ // disconnectedCallback() {
25
+ // console.log('Custom element removed from page.');
26
+ // }
27
+ // connectedMoveCallback() {
28
+ // console.log('Custom element moved with moveBefore()');
29
+ // }
30
+ // adoptedCallback() {
31
+ // console.log('Custom element moved to new page.');
32
+ // }
33
+ attributeChangedCallback(name, oldValue, newValue) {
34
+ console.log(`Attribute ${name} has changed.`);
35
+ this.querySelector(
36
+ ".site-copyright-notice-v3__title"
37
+ ).innerText = this.dataset.copyrightText;
38
+ }
39
+ }
40
+ );
41
+ } catch (error) {
42
+ console.error(error);
43
+ }
60
44
  }