@total_onion/onion-modalcontroller 1.0.2 → 1.0.5

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.
@@ -1,3 +1,4 @@
1
+ import lazyloader from "@pernod-ricard-global-cms/cbllazyloader";
1
2
  export default class modalController {
2
3
  constructor() {
3
4
  let defaultGlobalSettings = {
@@ -29,6 +30,15 @@ export default class modalController {
29
30
  this.closePopupOnClickOutside(event, modalPopup);
30
31
  });
31
32
  }
33
+ handleCloseButtonClicks() {
34
+ const closeButton = document.getElementById(
35
+ "modal-controller-popup__close-btn"
36
+ );
37
+ closeButton?.addEventListener("click", (event) => {
38
+ const modalPopup = document.getElementById("modal-controller-popup");
39
+ this.closePopup(modalPopup);
40
+ });
41
+ }
32
42
  handleModalTriggers() {
33
43
  this.globalModalTriggers.forEach((trigger) => {
34
44
  trigger.addEventListener("click", () => {
@@ -41,12 +51,13 @@ export default class modalController {
41
51
  if (!modalPopup) {
42
52
  const modalPopupHtml = `<div class="modal-controller-popup" id="modal-controller-popup">
43
53
  <div class="modal-controller-popup__container">
44
- <span class="modal-controller-popup__close-btn" id="modal-controller-popup__close-btn">&times;</span>
54
+ <span class="modal-controller-popup__close-btn" id="modal-controller-popup__close-btn"></span>
45
55
  <div class="modal-controller-popup__content"></div>
46
56
  </div>
47
57
  </div>`;
48
58
  document.body.insertAdjacentHTML("beforeend", modalPopupHtml);
49
59
  modalPopup = document.getElementById("modal-controller-popup");
60
+ this.handleCloseButtonClicks();
50
61
  }
51
62
  if (!modalPopup) {
52
63
  return;
@@ -61,17 +72,30 @@ export default class modalController {
61
72
  popupContent.innerHTML = "";
62
73
  const modalPopupContent = document
63
74
  .querySelector(`[data-modalpopupcontent=${triggerName}]`)
64
- .cloneNode(true);
75
+ ?.cloneNode(true);
65
76
 
66
77
  if (modalPopupContent) {
67
- popupContent.appendChild(modalPopupContent);
68
- }
69
- modalPopup.classList.add("open");
70
- document.documentElement.classList.add("lock-position");
78
+ popupContent.appendChild(modalPopupContent);
79
+ requestAnimationFrame(() => {
80
+ modalPopup.classList.add("open");
81
+ document.documentElement.classList.add("lock-position");
82
+ lazyloader.options.assetArray = [{"assetKey":"wysiwyg-text-content"},{"assetKey":"modal-form-v3"},{"assetKey":"video-content-v3"},{"assetKey":"theme-switcher"},{"assetKey":"text-block-3070"},{"assetKey":"sub-group-container-v3"},{"assetKey":"standard-content-v3"},{"assetKey":"spacer-v3"},{"assetKey":"spacer-v2"},{"assetKey":"social-networks-v3"},{"assetKey":"smash-balloon-social-media-v3"},{"assetKey":"slide-in-panel"},{"assetKey":"site-title-and-tagline-v3"},{"assetKey":"site-logo-container-v3"},{"assetKey":"site-footer"},{"assetKey":"site-copyright-notice"},{"assetKey":"single-responsive-image-v3"},{"assetKey":"single-column-container-v3"},{"assetKey":"section-separator-v3"},{"assetKey":"scrolling-text"},{"assetKey":"reserve-buy-bar"},{"assetKey":"raw-html"},{"assetKey":"product-info-v3"},{"assetKey":"post-type-filter-grid-v2"},{"assetKey":"post-info-v3"},{"assetKey":"nav-menu-container"},{"assetKey":"nav-menu-container-v3"},{"assetKey":"market-selector-v3"},{"assetKey":"lottie-content-v3"},{"assetKey":"iframe-container"},{"assetKey":"group-container-v3"},{"assetKey":"gradient-layer-v3"},{"assetKey":"form-selection-v3"},{"assetKey":"feature-carousel"},{"assetKey":"divider-v3"},{"assetKey":"debrain-label-shop"},{"assetKey":"cover-link-v3"},{"assetKey":"competition"},{"assetKey":"cocktail-recipe"},{"assetKey":"cocktail-intro-copy"},{"assetKey":"carousel-thumbnail-gallery"},{"assetKey":"carousel-multi-layout-v3"},{"assetKey":"carousel-multi-layout-v2"},{"assetKey":"card-content"},{"assetKey":"card-carousel"},{"assetKey":"block-interactions-v3"},{"assetKey":"betterreviews-display"},{"assetKey":"betterreviews-display-v3"},{"assetKey":"accordion-v3"},{"assetKey":"accent-image-v3"}];
83
+ lazyloader.lazyloaderInit();
84
+ });
85
+ this.handleCloseButtonClicks();
86
+ } else {
87
+ this.closePopup(modalPopup);
88
+ }
71
89
  }
72
90
  closePopup(modalPopup) {
73
91
  modalPopup.classList.remove("open");
74
92
  document.documentElement.classList.remove("lock-position");
93
+ const popupContent = modalPopup.querySelector(".modal-controller-popup__content");
94
+ if (popupContent) {
95
+ setTimeout(() => {
96
+ popupContent.innerHTML = "";
97
+ }, 300);
98
+ }
75
99
  }
76
100
  closePopupOnClickOutside(event, modalPopup) {
77
101
  if (event.target === modalPopup) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@total_onion/onion-modalcontroller",
3
- "version": "1.0.2",
3
+ "version": "1.0.5",
4
4
  "description": "Pop up modal controller",
5
5
  "main": "onion-modalcontroller.js",
6
6
  "scripts": {
@@ -15,5 +15,11 @@
15
15
  "bugs": {
16
16
  "url": "https://github.com/TotalOnion/onion-modalcontroller/issues"
17
17
  },
18
- "homepage": "https://github.com/TotalOnion/onion-modalcontroller#readme"
18
+ "homepage": "https://github.com/TotalOnion/onion-modalcontroller#readme",
19
+ "devDependencies": {
20
+ "@total_onion/onion-loader": "^1.0.1"
21
+ },
22
+ "dependencies": {
23
+ "@pernod-ricard-global-cms/cbllazyloader": "^2.1.2"
24
+ }
19
25
  }