@websy/websy-designs 1.4.16 → 1.4.17

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.
@@ -194,7 +194,7 @@ class ButtonGroup {
194
194
  }
195
195
  this.options.activeItem = index
196
196
  if (this.options.onActivate) {
197
- this.options.onActivate(this.options.items[index], index)
197
+ this.options.onActivate(this.options.items[index], index, event)
198
198
  }
199
199
  const el = document.getElementById(this.elementId)
200
200
  let buttons = Array.from(el.querySelectorAll('.websy-button-group-item'))
@@ -2538,6 +2538,12 @@ class WebsyNavigationMenu {
2538
2538
  event.target.classList.toggle('menu-open')
2539
2539
  this.toggleMenu(item.id)
2540
2540
  }
2541
+ else {
2542
+ const el = document.getElementById(this.elementId)
2543
+ const allEls = el.querySelectorAll('.websy-menu-header')
2544
+ Array.from(allEls).forEach(e => e.classList.remove('active'))
2545
+ event.target.classList.add('active')
2546
+ }
2541
2547
  }
2542
2548
  if (event.target.classList.contains('websy-menu-mask')) {
2543
2549
  this.toggleMobileMenu()
@@ -2621,6 +2627,23 @@ class WebsyNavigationMenu {
2621
2627
  html += `</div>`
2622
2628
  }
2623
2629
  el.innerHTML = html
2630
+ // open the menu if an item is set as 'active'
2631
+ const activeEl = el.querySelector('.websy-menu-header.active')
2632
+ if (activeEl) {
2633
+ let parent = activeEl.parentElement
2634
+ while (parent) {
2635
+ if (parent.tagName === 'UL') {
2636
+ parent.classList.remove('websy-menu-collapsed')
2637
+ parent = parent.parentElement
2638
+ }
2639
+ else if (parent.tagName === 'LI') {
2640
+ parent = parent.parentElement
2641
+ }
2642
+ else {
2643
+ parent = null
2644
+ }
2645
+ }
2646
+ }
2624
2647
  if (this.options.enableSearch === true) {
2625
2648
  this.search = new WebsyDesigns.Search(`${this.elementId}_search`, Object.assign({}, {
2626
2649
  onSearch: this.handleSearch.bind(this),
@@ -2649,7 +2672,7 @@ class WebsyNavigationMenu {
2649
2672
  }
2650
2673
  html += `
2651
2674
  <li class='websy-${this.options.orientation}-list-item ${items[i].alwaysOpen === true ? 'always-open' : ''}'>
2652
- <div class='websy-menu-header ${items[i].classes || ''} ${selected} ${active}'
2675
+ <div class='websy-menu-header websy-menu-level-${level} ${items[i].classes || ''} ${selected} ${active}'
2653
2676
  id='${blockId}'
2654
2677
  data-id='${currentBlock}'
2655
2678
  data-path='${items[i].path}'
@@ -250,7 +250,7 @@ var ButtonGroup = /*#__PURE__*/function () {
250
250
  this.options.activeItem = index;
251
251
 
252
252
  if (this.options.onActivate) {
253
- this.options.onActivate(this.options.items[index], index);
253
+ this.options.onActivate(this.options.items[index], index, event);
254
254
  }
255
255
 
256
256
  var el = document.getElementById(this.elementId);
@@ -2680,6 +2680,13 @@ var WebsyNavigationMenu = /*#__PURE__*/function () {
2680
2680
  if (item.hasChildren === true) {
2681
2681
  event.target.classList.toggle('menu-open');
2682
2682
  this.toggleMenu(item.id);
2683
+ } else {
2684
+ var el = document.getElementById(this.elementId);
2685
+ var allEls = el.querySelectorAll('.websy-menu-header');
2686
+ Array.from(allEls).forEach(function (e) {
2687
+ return e.classList.remove('active');
2688
+ });
2689
+ event.target.classList.add('active');
2683
2690
  }
2684
2691
  }
2685
2692
 
@@ -2779,7 +2786,24 @@ var WebsyNavigationMenu = /*#__PURE__*/function () {
2779
2786
  html += "</div>";
2780
2787
  }
2781
2788
 
2782
- el.innerHTML = html;
2789
+ el.innerHTML = html; // open the menu if an item is set as 'active'
2790
+
2791
+ var activeEl = el.querySelector('.websy-menu-header.active');
2792
+
2793
+ if (activeEl) {
2794
+ var parent = activeEl.parentElement;
2795
+
2796
+ while (parent) {
2797
+ if (parent.tagName === 'UL') {
2798
+ parent.classList.remove('websy-menu-collapsed');
2799
+ parent = parent.parentElement;
2800
+ } else if (parent.tagName === 'LI') {
2801
+ parent = parent.parentElement;
2802
+ } else {
2803
+ parent = null;
2804
+ }
2805
+ }
2806
+ }
2783
2807
 
2784
2808
  if (this.options.enableSearch === true) {
2785
2809
  this.search = new WebsyDesigns.Search("".concat(this.elementId, "_search"), _extends({}, {
@@ -2814,7 +2838,7 @@ var WebsyNavigationMenu = /*#__PURE__*/function () {
2814
2838
  items[i].classes = items[i].classes.join(' ');
2815
2839
  }
2816
2840
 
2817
- html += "\n\t\t\t<li class='websy-".concat(this.options.orientation, "-list-item ").concat(items[i].alwaysOpen === true ? 'always-open' : '', "'>\n\t\t\t\t<div class='websy-menu-header ").concat(items[i].classes || '', " ").concat(selected, " ").concat(active, "' \n id='").concat(blockId, "' \n data-id='").concat(currentBlock, "'\n data-path='").concat(items[i].path, "'\n data-menu-id='").concat(this.elementId, "_").concat(currentBlock, "_list'\n data-popout-id='").concat(level > 1 ? block : currentBlock, "'\n data-text='").concat(items[i].isLink !== true ? items[i].text : '', "'\n style='padding-left: ").concat(level * this.options.childIndentation, "px'\n ").concat(items[i].attributes && items[i].attributes.join(' ') || '', "\n >\n ");
2841
+ html += "\n\t\t\t<li class='websy-".concat(this.options.orientation, "-list-item ").concat(items[i].alwaysOpen === true ? 'always-open' : '', "'>\n\t\t\t\t<div class='websy-menu-header websy-menu-level-").concat(level, " ").concat(items[i].classes || '', " ").concat(selected, " ").concat(active, "' \n id='").concat(blockId, "' \n data-id='").concat(currentBlock, "'\n data-path='").concat(items[i].path, "'\n data-menu-id='").concat(this.elementId, "_").concat(currentBlock, "_list'\n data-popout-id='").concat(level > 1 ? block : currentBlock, "'\n data-text='").concat(items[i].isLink !== true ? items[i].text : '', "'\n style='padding-left: ").concat(level * this.options.childIndentation, "px'\n ").concat(items[i].attributes && items[i].attributes.join(' ') || '', "\n >\n ");
2818
2842
 
2819
2843
  if (this.options.orientation === 'horizontal') {
2820
2844
  html += items[i].text;