@iamproperty/components 7.8.2--beta6 → 7.8.2--beta7

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 (238) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/address-lookup.component.css +1 -1
  4. package/assets/css/components/address-lookup.component.css.map +1 -1
  5. package/assets/css/components/advanced-select.component.css +1 -1
  6. package/assets/css/components/advanced-select.component.css.map +1 -1
  7. package/assets/css/components/banner.component.css +1 -1
  8. package/assets/css/components/banner.component.css.map +1 -1
  9. package/assets/css/components/barchart.component.css +1 -1
  10. package/assets/css/components/barchart.component.css.map +1 -1
  11. package/assets/css/components/branch-selector.css +1 -0
  12. package/assets/css/components/branch-selector.css.map +1 -0
  13. package/assets/css/components/calendar.component.css +1 -1
  14. package/assets/css/components/calendar.component.css.map +1 -1
  15. package/assets/css/components/card.component.css +1 -1
  16. package/assets/css/components/card.component.css.map +1 -1
  17. package/assets/css/components/card.module.css +1 -1
  18. package/assets/css/components/card.module.css.map +1 -1
  19. package/assets/css/components/card.preload.css +1 -1
  20. package/assets/css/components/card.preload.css.map +1 -1
  21. package/assets/css/components/carousel.component.css +1 -1
  22. package/assets/css/components/carousel.component.css.map +1 -1
  23. package/assets/css/components/charts.config.css +1 -1
  24. package/assets/css/components/charts.config.css.map +1 -1
  25. package/assets/css/components/collapsible-side.css +1 -1
  26. package/assets/css/components/collapsible-side.css.map +1 -1
  27. package/assets/css/components/config.component.css +1 -1
  28. package/assets/css/components/config.component.css.map +1 -1
  29. package/assets/css/components/doughnutchart.component.css +1 -1
  30. package/assets/css/components/doughnutchart.component.css.map +1 -1
  31. package/assets/css/components/fileupload.css +1 -1
  32. package/assets/css/components/fileupload.css.map +1 -1
  33. package/assets/css/components/filter-card.component.css +1 -1
  34. package/assets/css/components/filter-card.component.css.map +1 -1
  35. package/assets/css/components/inline-edit.css +1 -1
  36. package/assets/css/components/inline-edit.css.map +1 -1
  37. package/assets/css/components/menu.component.css +1 -1
  38. package/assets/css/components/menu.component.css.map +1 -1
  39. package/assets/css/components/modal.component.css +1 -1
  40. package/assets/css/components/modal.component.css.map +1 -1
  41. package/assets/css/components/multi-step-modal.component.css +1 -1
  42. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  43. package/assets/css/components/multiselect.css +1 -1
  44. package/assets/css/components/multiselect.css.map +1 -1
  45. package/assets/css/components/nav-standalone.component.css +1 -0
  46. package/assets/css/components/nav-standalone.component.css.map +1 -0
  47. package/assets/css/components/nav.component.css +1 -1
  48. package/assets/css/components/nav.component.css.map +1 -1
  49. package/assets/css/components/nav.global.css +1 -1
  50. package/assets/css/components/nav.global.css.map +1 -1
  51. package/assets/css/components/nav.preload.css +1 -1
  52. package/assets/css/components/nav.preload.css.map +1 -1
  53. package/assets/css/components/notification.css +1 -1
  54. package/assets/css/components/notification.css.map +1 -1
  55. package/assets/css/components/pagination.css +1 -1
  56. package/assets/css/components/pagination.css.map +1 -1
  57. package/assets/css/components/record-card.component.css +1 -1
  58. package/assets/css/components/record-card.component.css.map +1 -1
  59. package/assets/css/components/search.component.css +1 -1
  60. package/assets/css/components/search.component.css.map +1 -1
  61. package/assets/css/components/slider.css +1 -1
  62. package/assets/css/components/slider.css.map +1 -1
  63. package/assets/css/components/split-button.component.css +1 -1
  64. package/assets/css/components/split-button.component.css.map +1 -1
  65. package/assets/css/components/tabs.component.css +1 -1
  66. package/assets/css/components/tabs.component.css.map +1 -1
  67. package/assets/css/components/tag.component.css +1 -1
  68. package/assets/css/components/tag.component.css.map +1 -1
  69. package/assets/css/components/video-card.component.css +1 -1
  70. package/assets/css/components/video-card.component.css.map +1 -1
  71. package/assets/css/components/video-modal.component.css +1 -1
  72. package/assets/css/components/video-modal.component.css.map +1 -1
  73. package/assets/css/components/video.component.css +1 -1
  74. package/assets/css/components/video.component.css.map +1 -1
  75. package/assets/css/core.min.css +1 -1
  76. package/assets/css/core.min.css.map +1 -1
  77. package/assets/css/elements/buttons--action.css +1 -1
  78. package/assets/css/elements/buttons--action.css.map +1 -1
  79. package/assets/css/elements/buttons--compact.css +1 -1
  80. package/assets/css/elements/buttons--compact.css.map +1 -1
  81. package/assets/css/elements/buttons--global.css +1 -1
  82. package/assets/css/elements/buttons--global.css.map +1 -1
  83. package/assets/css/elements/buttons--secondary.css +1 -1
  84. package/assets/css/elements/buttons--secondary.css.map +1 -1
  85. package/assets/css/elements/buttons--tertiary.css +1 -1
  86. package/assets/css/elements/buttons--tertiary.css.map +1 -1
  87. package/assets/css/elements/buttons.css +1 -1
  88. package/assets/css/elements/buttons.css.map +1 -1
  89. package/assets/css/elements/dropdown.css +1 -1
  90. package/assets/css/elements/dropdown.css.map +1 -1
  91. package/assets/css/elements/forms.css +1 -1
  92. package/assets/css/elements/forms.css.map +1 -1
  93. package/assets/css/elements/links--global.css +1 -1
  94. package/assets/css/elements/links--global.css.map +1 -1
  95. package/assets/css/elements/links.css +1 -1
  96. package/assets/css/elements/links.css.map +1 -1
  97. package/assets/css/elements/popover.css +1 -1
  98. package/assets/css/elements/popover.css.map +1 -1
  99. package/assets/css/elements/select.css +1 -1
  100. package/assets/css/elements/select.css.map +1 -1
  101. package/assets/css/elements/tooltips.css +1 -1
  102. package/assets/css/elements/tooltips.css.map +1 -1
  103. package/assets/css/style.min.css +1 -1
  104. package/assets/css/style.min.css.map +1 -1
  105. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  106. package/assets/js/components/actionbar/actionbar.component.min.js +3 -3
  107. package/assets/js/components/address-lookup/address-lookup.component.js +1 -1
  108. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
  109. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  110. package/assets/js/components/advanced-select/advanced-select.component.min.js +4 -4
  111. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  112. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  113. package/assets/js/components/banner/banner.component.min.js +2 -2
  114. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  115. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  116. package/assets/js/components/bone/bone.component.min.js +1 -1
  117. package/assets/js/components/branch-selector/branch-selector.component.js +69 -0
  118. package/assets/js/components/branch-selector/branch-selector.component.min.js +22 -0
  119. package/assets/js/components/branch-selector/branch-selector.component.min.js.map +1 -0
  120. package/assets/js/components/button/button.component.min.js +1 -1
  121. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  122. package/assets/js/components/card/card.component.min.js +3 -3
  123. package/assets/js/components/carousel/carousel.component.min.js +3 -3
  124. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  125. package/assets/js/components/config/config.component.min.js +3 -3
  126. package/assets/js/components/config/config.component.min.js.map +1 -1
  127. package/assets/js/components/content/content.component.min.js +1 -1
  128. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  129. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +4 -4
  130. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  131. package/assets/js/components/filter-card/filter-card.component.min.js +5 -5
  132. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  133. package/assets/js/components/form/form.component.min.js +1 -1
  134. package/assets/js/components/header/header.component.min.js +1 -1
  135. package/assets/js/components/inline-edit/inline-edit.component.min.js +2 -2
  136. package/assets/js/components/input/input.component.min.js +1 -1
  137. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  138. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  139. package/assets/js/components/menu/menu.component.min.js +2 -2
  140. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  141. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  142. package/assets/js/components/modal/modal.component.js +2 -0
  143. package/assets/js/components/modal/modal.component.min.js +4 -4
  144. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  145. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  146. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  147. package/assets/js/components/multiselect/multiselect.component.js +14 -18
  148. package/assets/js/components/multiselect/multiselect.component.min.js +14 -14
  149. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  150. package/assets/js/components/nav/nav.component.js +30 -255
  151. package/assets/js/components/nav/nav.component.min.js +46 -30
  152. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  153. package/assets/js/components/nav-standalone/nav-standalone.component.js +51 -0
  154. package/assets/js/components/nav-standalone/nav-standalone.component.min.js +80 -0
  155. package/assets/js/components/nav-standalone/nav-standalone.component.min.js.map +1 -0
  156. package/assets/js/components/notification/notification.component.min.js +2 -2
  157. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  158. package/assets/js/components/password/password.component.min.js +1 -1
  159. package/assets/js/components/popover/popover.component.min.js +1 -1
  160. package/assets/js/components/rank/rank.component.min.js +1 -1
  161. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  162. package/assets/js/components/rating/rating.component.min.js +1 -1
  163. package/assets/js/components/record-card/record-card.component.min.js +6 -6
  164. package/assets/js/components/search/search.component.min.js +2 -2
  165. package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
  166. package/assets/js/components/slider/slider.component.min.js +2 -2
  167. package/assets/js/components/split-button/split-button.component.min.js +4 -4
  168. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +5 -5
  169. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  170. package/assets/js/components/std-nav/std-nav.component.js +32 -58
  171. package/assets/js/components/std-nav/std-nav.component.min.js +9 -54
  172. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  173. package/assets/js/components/table/table.component.min.js +2 -2
  174. package/assets/js/components/table-ajax/table-ajax.component.min.js +2 -2
  175. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  176. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +2 -2
  177. package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
  178. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  179. package/assets/js/components/tag/tag.component.min.js +4 -4
  180. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  181. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  182. package/assets/js/components/video/video.component.min.js +2 -2
  183. package/assets/js/components/video-card/video-card.component.min.js +6 -6
  184. package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
  185. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  186. package/assets/js/modules/advanced-select.js +13 -5
  187. package/assets/js/modules/nav.js +183 -64
  188. package/assets/js/modules/nav.test.js +4 -1
  189. package/assets/js/scripts.bundle.js +1 -1
  190. package/assets/js/scripts.bundle.min.js +1 -1
  191. package/assets/sass/components/branch-selector.scss +112 -0
  192. package/assets/sass/components/card.module.scss +11 -1
  193. package/assets/sass/components/card.preload.scss +0 -15
  194. package/assets/sass/components/charts.config.scss +3 -3
  195. package/assets/sass/components/menu.component.scss +2 -1
  196. package/assets/sass/components/multiselect.scss +0 -1
  197. package/assets/sass/components/nav-standalone.component.scss +50 -0
  198. package/assets/sass/components/nav.component.scss +142 -116
  199. package/assets/sass/components/nav.global.scss +26 -198
  200. package/assets/sass/components/nav.preload.scss +1 -7
  201. package/assets/sass/elements/buttons--action.css +1 -1
  202. package/assets/sass/elements/buttons--compact.css +8 -4
  203. package/assets/sass/elements/buttons--global.css +3 -6
  204. package/assets/sass/elements/buttons--secondary.css +1 -1
  205. package/assets/sass/elements/buttons--tertiary.css +1 -1
  206. package/assets/sass/elements/dropdown.css +16 -2
  207. package/assets/sass/elements/links--global.scss +29 -3
  208. package/assets/sass/elements/popover.scss +1 -0
  209. package/assets/sass/elements/select.scss +1 -1
  210. package/assets/sass/elements/tooltips.scss +54 -0
  211. package/assets/sass/foundations/root.scss +4 -0
  212. package/assets/sass/templates/form.scss +26 -3
  213. package/assets/ts/components/address-lookup/address-lookup.component.ts +2 -1
  214. package/assets/ts/components/branch-selector/branch-selector.component.ts +93 -0
  215. package/assets/ts/components/modal/modal.component.ts +3 -0
  216. package/assets/ts/components/multiselect/multiselect.component.ts +20 -23
  217. package/assets/ts/components/nav/nav.component.ts +30 -285
  218. package/assets/ts/components/nav-standalone/nav-standalone.component.ts +69 -0
  219. package/assets/ts/components/std-nav/std-nav.component.ts +38 -81
  220. package/assets/ts/modules/advanced-select.ts +12 -11
  221. package/assets/ts/modules/nav.test.ts +4 -1
  222. package/assets/ts/modules/nav.ts +221 -78
  223. package/dist/components.es.js +1130 -1095
  224. package/dist/components.umd.js +290 -242
  225. package/package.json +2 -2
  226. package/src/components/BranchSelector/BranchSelector.vue +20 -0
  227. package/src/components/{STDNavStandalone/STDNavStandalone.vue → NavStandalone/NavStandalone.vue} +3 -3
  228. package/src/index.js +1 -0
  229. package/assets/css/components/nav.docs.css +0 -1
  230. package/assets/css/components/nav.docs.css.map +0 -1
  231. package/assets/css/components/std-nav-standalone.component.css +0 -1
  232. package/assets/css/components/std-nav-standalone.component.css.map +0 -1
  233. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +0 -70
  234. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +0 -20
  235. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +0 -1
  236. package/assets/sass/components/nav.docs.scss +0 -54
  237. package/assets/sass/components/std-nav-standalone.component.scss +0 -229
  238. package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +0 -94
@@ -1,9 +1,4 @@
1
- // Data layer Web component created
2
- window.dataLayer = window.dataLayer || [];
3
- window.dataLayer.push({
4
- event: 'customElementRegistered',
5
- element: 'nav',
6
- });
1
+ import { navTemplate, branchSelector, menuEvents, megaMenuTitles, megaMenusEvents, accountMenuEvents, backdropEvents } from '../../modules/nav';
7
2
  class iamNav extends HTMLElement {
8
3
  constructor() {
9
4
  super();
@@ -11,41 +6,16 @@ class iamNav extends HTMLElement {
11
6
  const assetLocation = document.body.hasAttribute('data-assets-location')
12
7
  ? document.body.getAttribute('data-assets-location')
13
8
  : '/assets';
14
- const loadCSS = `@import "${assetLocation}/css/components/nav.component.css";`;
9
+ const navCSS = `@import "${assetLocation}/css/components/nav.component.css";`;
15
10
  const loadExtraCSS = `@import "${assetLocation}/css/components/nav.global.css";`;
16
11
  const template = document.createElement('template');
17
- template.innerHTML = `
12
+ template.innerHTML = /* HTML */ `
18
13
  <style class="styles">
19
-
20
- ${loadCSS}
21
- </style>
22
- <style class="doc-styles">
14
+ ${navCSS}
23
15
  </style>
24
- <link rel="stylesheet" href="https://kit.fontawesome.com/8bd0fca975.css" crossorigin="anonymous">
25
- <div class="container">
26
- <slot name="logo"></slot>
27
- <div class="buttons-holder"></div>
28
- <button class="btn-menu" part="btn-menu">Menu<i class="fa-regular fa-bars"></i><i class="fa-regular fa-xmark-large"></i></button>
29
-
30
- <div class="menu__outer">
31
- <div class="menu closed">
32
16
 
33
- <div class="menu__primary">
34
- <slot></slot>
35
- <slot name="dual"></slot>
36
- </div>
37
- <div class="dialog__wrapper d-none" id="search-wrapper"></div>
38
- <slot name="actions"></slot>
39
- <div class="menu__secondary bg-light">
40
- <div class="container">
41
- <slot name="secondary"></slot>
42
- </div>
43
- </div>
44
- </div>
45
- <slot name="menus"></slot>
46
- </div>
47
- </div>
48
- <div class="backdrop" part="backdrop"></div>
17
+ <link rel="stylesheet" href="https://kit.fontawesome.com/8bd0fca975.css" crossorigin="anonymous">
18
+ ${navTemplate}
49
19
  `;
50
20
  shadowRoot.appendChild(template.content.cloneNode(true));
51
21
  // insert extra CSS
@@ -53,216 +23,38 @@ class iamNav extends HTMLElement {
53
23
  document.head.insertAdjacentHTML('beforeend', `<style id="navGlobal">${loadExtraCSS}</style>`);
54
24
  }
55
25
  connectedCallback() {
56
- // Load external CSS if needed
57
- if (this.hasAttribute('data-css'))
58
- this.shadowRoot
59
- .querySelector('.doc-styles')
60
- .insertAdjacentHTML('beforeend', `@import "${this.getAttribute('data-css')}";`);
61
- const menuButton = this.shadowRoot.querySelector('.btn-menu');
62
- const menu = this.shadowRoot.querySelector('.menu');
63
- // eslint-disable-next-line @typescript-eslint/no-this-alias
64
- const iamNav = this;
26
+ var _a;
65
27
  const backdrop = this.shadowRoot.querySelector('.backdrop');
66
- const buttonsHolder = this.shadowRoot.querySelector('.buttons-holder');
67
- // Check the content
68
- const createNavMenu = (component) => {
69
- buttonsHolder.innerHTML = '';
70
- component.querySelectorAll(':scope > *').forEach(function (element) {
71
- const tagname = element.tagName;
72
- switch (tagname) {
73
- case 'BUTTON':
74
- if (!element.hasAttribute('slot')) {
75
- element.setAttribute('slot', 'actions');
76
- menu.classList.add('has-actions');
77
- }
78
- break;
79
- }
80
- // Create menu button
81
- if (element.classList.contains('nav--menu') &&
82
- element.hasAttribute('data-title') &&
83
- element.hasAttribute('data-icon')) {
84
- const title = element.getAttribute('data-title');
85
- const iconClass = element.getAttribute('data-icon');
86
- // Create the menu button that sits seperately to the menu
87
- const button = document.createElement('button');
88
- button.setAttribute('slot', title);
89
- button.classList.add('btn-menu');
90
- button.setAttribute('part', 'btn-menu');
91
- button.innerHTML = `<span class="btn btn-primary"><span>${title}</span><i class="${iconClass}"></i><i class="fa-regular fa-xmark-large"></i></span>`;
92
- buttonsHolder.insertAdjacentElement('beforeend', button);
93
- const mdButton = button.querySelector('.btn-primary');
94
- // Make sure the menu is added to the right part of the component
95
- element.setAttribute('slot', 'menus');
96
- // If open we need to make sure the main mobile menu is closed, the new button has the right state and the backdrop is shown
97
- if (element.classList.contains('open')) {
98
- button.setAttribute('aria-expanded', true);
99
- mdButton.classList.toggle('active');
100
- component.classList.add('open');
101
- backdrop.classList.add('show');
102
- }
103
- else {
104
- element.classList.add('closed'); // closed class is added to prevent the elements being tabbed into, this causes visual issues
105
- }
106
- // Click event
107
- button.addEventListener('click', function (e) {
108
- e.preventDefault();
109
- button.toggleAttribute('aria-expanded');
110
- console.log(element);
111
- element.classList.toggle('open');
112
- mdButton.classList.toggle('active');
113
- // Close desktop menus
114
- const openMenu = component.querySelector(':scope > details[open]');
115
- if (openMenu)
116
- openMenu.removeAttribute('open');
117
- // Close the main menu and fix states on the button, iamNav component and backdrop
118
- if (element.classList.contains('open')) {
119
- menu.classList.remove('open');
120
- menuButton.removeAttribute('aria-expanded');
121
- setTimeout(function () {
122
- menu.classList.add('closed');
123
- }, 1000); // Delay until its close so the animation is broken
124
- component.classList.add('open');
125
- backdrop.classList.add('show');
126
- element.classList.remove('closed');
127
- }
128
- else {
129
- component.classList.remove('open');
130
- backdrop.classList.remove('show');
131
- setTimeout(function () {
132
- element.classList.add('closed');
133
- }, 1000);
134
- }
135
- // Close any open menus
136
- component.querySelectorAll('.nav--menu.open').forEach(function (openmenu) {
137
- if (openmenu != element) {
138
- openmenu.classList.remove('open');
139
- }
140
- });
141
- component.shadowRoot
142
- .querySelectorAll('.buttons-holder .btn-menu[aria-expanded]')
143
- .forEach(function (selectedButton) {
144
- if (selectedButton != button) {
145
- selectedButton.removeAttribute('aria-expanded');
146
- const innerBtn = selectedButton.querySelector('.btn-primary');
147
- innerBtn.classList.remove('active');
148
- }
149
- });
150
- }, false);
151
- }
152
- });
153
- component.querySelectorAll('details').forEach(function (element) {
154
- element.classList.add('details--revert');
155
- });
156
- };
157
- createNavMenu(this);
158
- this.addEventListener('rebuilt', () => {
159
- console.log('rebuilt nav');
160
- createNavMenu(this);
161
- });
28
+ const menuButton = this.shadowRoot.querySelector('#btn-menu');
29
+ const menu = this.shadowRoot.querySelector('.menu');
30
+ const accountMenuButton = this.shadowRoot.querySelector('#btn-menu-account');
31
+ const accountMenu = this.shadowRoot.querySelector('.nav--menu');
32
+ const accountBtnTitle = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#account-btn-title');
33
+ // #region Add Helper classes
162
34
  // Has secondary link
163
35
  if (this.querySelector('[slot="secondary"]')) {
164
- menu.classList.add('has-secondary');
36
+ this.classList.add('has-secondary');
37
+ }
38
+ // #endregion
39
+ accountBtnTitle.innerHTML = this.hasAttribute('data-account-btn-title') ? this.getAttribute('data-account-btn-title') : 'My account';
40
+ if (!this.querySelector('[slot="account"]')) {
41
+ accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.remove();
42
+ accountMenu === null || accountMenu === void 0 ? void 0 : accountMenu.remove();
43
+ accountBtnTitle === null || accountBtnTitle === void 0 ? void 0 : accountBtnTitle.remove();
165
44
  }
166
- // Open and close the menu
167
- menuButton.addEventListener('click', function (e) {
168
- e.preventDefault();
169
- //menuButton.toggleAttribute('aria-expanded');
170
- menu.classList.toggle('open');
171
- // Close any other menus
172
- iamNav.querySelectorAll('.nav--menu.open').forEach(function (element) {
173
- element.classList.remove('open');
174
- setTimeout(function () {
175
- element.classList.add('closed');
176
- }, 1000);
177
- });
178
- iamNav.shadowRoot.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]').forEach(function (element) {
179
- element.removeAttribute('aria-expanded');
180
- const innerBtn = element.querySelector('.btn-primary');
181
- innerBtn.classList.remove('active');
182
- });
183
- if (menu.classList.contains('open')) {
184
- iamNav.classList.add('open');
185
- menu.classList.remove('closed');
186
- }
187
- else {
188
- iamNav.classList.remove('open');
189
- setTimeout(function () {
190
- menu.classList.add('closed');
191
- }, 1000);
192
- }
193
- }, false);
194
45
  // Allow outside JS to close the menu
195
46
  this.addEventListener('request-close', () => {
196
47
  menuButton.removeAttribute('aria-expanded');
197
48
  menu.classList.remove('open');
198
- iamNav.classList.remove('open');
49
+ this.classList.remove('open');
199
50
  });
200
- // Close the menu on the click of the backdrop on desktop
201
- backdrop.addEventListener('click', () => {
202
- const openMenu = this.querySelector('details[open] summary');
203
- if (openMenu)
204
- openMenu.click();
205
- iamNav.classList.toggle('open');
206
- iamNav.querySelectorAll('.nav--menu.open').forEach(function (element) {
207
- element.classList.remove('open');
208
- });
209
- iamNav.shadowRoot.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]').forEach(function (element) {
210
- element.removeAttribute('aria-expanded');
211
- const innerBtn = element.querySelector('.btn-primary');
212
- innerBtn.classList.remove('active');
213
- });
214
- backdrop.classList.remove('show');
215
- });
216
- // On desktop close other menu's (details) when one is clicked
217
- this.addEventListener('click', (event) => {
218
- if (event && event.target instanceof HTMLElement && event.target.closest('summary')) {
219
- if (window.innerWidth > 992 && !event.target.closest('.nav--menu')) {
220
- const summary = event.target.closest('summary');
221
- const details = summary.closest('details');
222
- const wrapper = details.parentNode;
223
- if (details.hasAttribute('open'))
224
- details.removeAttribute('open');
225
- else
226
- details.setAttribute('open', 'true');
227
- // Close any bespoke menus
228
- iamNav.querySelectorAll('.nav--menu.open').forEach(function (element) {
229
- element.classList.remove('open');
230
- setTimeout(function () {
231
- menu.classList.add('closed');
232
- }, 1000);
233
- });
234
- iamNav.shadowRoot.querySelectorAll('.buttons-holder .btn-menu[aria-expanded]').forEach(function (element) {
235
- element.removeAttribute('aria-expanded');
236
- const innerBtn = element.querySelector('.btn-primary');
237
- innerBtn.classList.remove('active');
238
- });
239
- // Close any other dropdowns on the same level
240
- Array.from(wrapper.querySelectorAll(':scope > details')).forEach((detailsArrayElement) => {
241
- if (detailsArrayElement != details)
242
- detailsArrayElement.removeAttribute('open');
243
- });
244
- if (this.querySelectorAll(':scope > details[open]').length) {
245
- backdrop.classList.add('show');
246
- iamNav.classList.add('open');
247
- if (this.querySelectorAll(':scope > details[open][slot="secondary"]').length)
248
- iamNav.classList.add('open-secondary');
249
- }
250
- else {
251
- backdrop.classList.remove('show');
252
- iamNav.classList.remove('open');
253
- iamNav.classList.remove('open-secondary');
254
- }
255
- event.preventDefault();
256
- }
257
- }
258
- });
259
- // Mega menu title
260
- this.querySelectorAll('details').forEach((detailsElement) => {
261
- const summary = detailsElement.querySelector('summary');
262
- const containerDiv = detailsElement.querySelector(':Scope > div');
263
- containerDiv.setAttribute('data-title', summary.textContent);
264
- });
265
- // Search
51
+ menuEvents(this, menu, menuButton, accountMenu, accountMenuButton);
52
+ megaMenuTitles(this);
53
+ megaMenusEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);
54
+ accountMenuEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);
55
+ backdropEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);
56
+ branchSelector(this);
57
+ // #region Search
266
58
  if (this.querySelector('[slot="search"]')) {
267
59
  menu.classList.add('has-search');
268
60
  const searchWrapper = this.shadowRoot.querySelector('#search-wrapper');
@@ -299,24 +91,7 @@ class iamNav extends HTMLElement {
299
91
  searchButton.removeAttribute('aria-expanded');
300
92
  });
301
93
  }
302
- if (this.classList.contains('nav--sticky')) {
303
- let oldScrollY = window.scrollY;
304
- window.onscroll = function (e) {
305
- if (oldScrollY < window.scrollY) {
306
- document.body.setAttribute('data-direction', 'down');
307
- }
308
- else {
309
- document.body.setAttribute('data-direction', 'up');
310
- }
311
- if (window.scrollY > 100) {
312
- document.body.classList.add('past100');
313
- }
314
- else {
315
- document.body.classList.remove('past100');
316
- }
317
- oldScrollY = window.scrollY;
318
- };
319
- }
94
+ // #endregion
320
95
  }
321
96
  }
322
97
  export default iamNav;