@iamproperty/components 7.8.2--beta5 → 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 (243) 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 +4 -4
  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 +3 -3
  136. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  137. package/assets/js/components/input/input.component.min.js +1 -1
  138. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  139. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  140. package/assets/js/components/menu/menu.component.min.js +2 -2
  141. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  142. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  143. package/assets/js/components/modal/modal.component.js +2 -0
  144. package/assets/js/components/modal/modal.component.min.js +4 -4
  145. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  146. package/assets/js/components/multi-step/multi-step.component.min.js +2 -2
  147. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  148. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  149. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -1
  150. package/assets/js/components/multiselect/multiselect.component.js +14 -18
  151. package/assets/js/components/multiselect/multiselect.component.min.js +14 -14
  152. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  153. package/assets/js/components/nav/nav.component.js +30 -255
  154. package/assets/js/components/nav/nav.component.min.js +46 -30
  155. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  156. package/assets/js/components/nav-standalone/nav-standalone.component.js +51 -0
  157. package/assets/js/components/nav-standalone/nav-standalone.component.min.js +80 -0
  158. package/assets/js/components/nav-standalone/nav-standalone.component.min.js.map +1 -0
  159. package/assets/js/components/notification/notification.component.min.js +2 -2
  160. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  161. package/assets/js/components/password/password.component.min.js +1 -1
  162. package/assets/js/components/popover/popover.component.min.js +1 -1
  163. package/assets/js/components/rank/rank.component.min.js +1 -1
  164. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  165. package/assets/js/components/rating/rating.component.min.js +1 -1
  166. package/assets/js/components/record-card/record-card.component.min.js +6 -6
  167. package/assets/js/components/search/search.component.min.js +3 -3
  168. package/assets/js/components/search/search.component.min.js.map +1 -1
  169. package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
  170. package/assets/js/components/slider/slider.component.min.js +2 -2
  171. package/assets/js/components/split-button/split-button.component.min.js +4 -4
  172. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +6 -6
  173. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  174. package/assets/js/components/std-nav/std-nav.component.js +32 -58
  175. package/assets/js/components/std-nav/std-nav.component.min.js +9 -54
  176. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  177. package/assets/js/components/table/table.component.min.js +2 -2
  178. package/assets/js/components/table-ajax/table-ajax.component.min.js +2 -2
  179. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  180. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +2 -2
  181. package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
  182. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  183. package/assets/js/components/tag/tag.component.min.js +4 -4
  184. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  185. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  186. package/assets/js/components/video/video.component.min.js +2 -2
  187. package/assets/js/components/video-card/video-card.component.min.js +6 -6
  188. package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
  189. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  190. package/assets/js/modules/advanced-select.js +13 -5
  191. package/assets/js/modules/nav.js +183 -64
  192. package/assets/js/modules/nav.test.js +4 -1
  193. package/assets/js/scripts.bundle.js +1 -1
  194. package/assets/js/scripts.bundle.min.js +1 -1
  195. package/assets/sass/components/branch-selector.scss +112 -0
  196. package/assets/sass/components/card.module.scss +11 -1
  197. package/assets/sass/components/card.preload.scss +0 -15
  198. package/assets/sass/components/charts.config.scss +3 -3
  199. package/assets/sass/components/menu.component.scss +2 -1
  200. package/assets/sass/components/multiselect.scss +0 -1
  201. package/assets/sass/components/nav-standalone.component.scss +50 -0
  202. package/assets/sass/components/nav.component.scss +142 -116
  203. package/assets/sass/components/nav.global.scss +26 -198
  204. package/assets/sass/components/nav.preload.scss +1 -7
  205. package/assets/sass/elements/buttons--action.css +1 -1
  206. package/assets/sass/elements/buttons--compact.css +8 -4
  207. package/assets/sass/elements/buttons--global.css +3 -6
  208. package/assets/sass/elements/buttons--secondary.css +1 -1
  209. package/assets/sass/elements/buttons--tertiary.css +1 -1
  210. package/assets/sass/elements/dropdown.css +16 -2
  211. package/assets/sass/elements/links--global.scss +29 -3
  212. package/assets/sass/elements/popover.scss +1 -0
  213. package/assets/sass/elements/select.scss +1 -1
  214. package/assets/sass/elements/tooltips.scss +54 -0
  215. package/assets/sass/foundations/colours.scss +15 -0
  216. package/assets/sass/foundations/root.scss +4 -0
  217. package/assets/sass/templates/form.scss +26 -3
  218. package/assets/ts/components/address-lookup/address-lookup.component.ts +2 -1
  219. package/assets/ts/components/branch-selector/branch-selector.component.ts +93 -0
  220. package/assets/ts/components/modal/modal.component.ts +3 -0
  221. package/assets/ts/components/multiselect/multiselect.component.ts +20 -23
  222. package/assets/ts/components/nav/nav.component.ts +30 -285
  223. package/assets/ts/components/nav-standalone/nav-standalone.component.ts +69 -0
  224. package/assets/ts/components/std-nav/std-nav.component.ts +38 -81
  225. package/assets/ts/modules/advanced-select.ts +12 -11
  226. package/assets/ts/modules/nav.test.ts +4 -1
  227. package/assets/ts/modules/nav.ts +221 -78
  228. package/dist/components.es.js +2697 -1246
  229. package/dist/components.umd.js +503 -455
  230. package/package.json +5 -5
  231. package/src/components/BranchSelector/BranchSelector.vue +20 -0
  232. package/src/components/{STDNavStandalone/STDNavStandalone.vue → NavStandalone/NavStandalone.vue} +3 -3
  233. package/src/index.js +1 -0
  234. package/assets/css/components/nav.docs.css +0 -1
  235. package/assets/css/components/nav.docs.css.map +0 -1
  236. package/assets/css/components/std-nav-standalone.component.css +0 -1
  237. package/assets/css/components/std-nav-standalone.component.css.map +0 -1
  238. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +0 -70
  239. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +0 -20
  240. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +0 -1
  241. package/assets/sass/components/nav.docs.scss +0 -54
  242. package/assets/sass/components/std-nav-standalone.component.scss +0 -229
  243. package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +0 -94
@@ -1 +1 @@
1
- {"version":3,"file":"multiselect.component.min.js","sources":["../../../../node_modules/js-cookie/dist/js.cookie.mjs","../../modules/dropdown.js","multiselect.component.js"],"sourcesContent":["/*! js-cookie v3.0.7 | MIT */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (key === '__proto__') continue\n target[key] = source[key];\n }\n }\n return target\n}\n\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n\nfunction init(converter, defaultAttributes) {\n function set(name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get(name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n if (!(found in jar)) jar[found] = converter.read(value, found);\n if (name === found) {\n break\n }\n } catch {\n // Do nothing...\n }\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n\nexport { api as default };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport Cookies from '../../../node_modules/js-cookie/dist/js.cookie.mjs';\nexport const filterList = (component, search) => {\n Array.from(component.querySelectorAll(`label:not([slot=\"checked\"])`)).forEach((label) => {\n const checkbox = label.querySelector('input');\n const searchValue = checkbox.value;\n const labelText = label.textContent;\n if (searchValue.toLowerCase().includes(search.value.toLowerCase()) ||\n labelText.toLowerCase().includes(search.value.toLowerCase())) {\n label.removeAttribute('slot');\n }\n else {\n label.setAttribute('slot', 'notmatched');\n }\n });\n};\nexport const searchAjax = (component, search, callback) => __awaiter(void 0, void 0, void 0, function* () {\n const searchterm = search.value;\n const ajaxURL = component.getAttribute('data-url');\n const firstInput = component.querySelector('input');\n const inputType = firstInput && firstInput.hasAttribute('type') ? firstInput.getAttribute('type') : 'checkbox';\n let inputName = firstInput && firstInput.hasAttribute('name') ? firstInput.getAttribute('name') : 'tags';\n if (component.hasAttribute('data-name'))\n inputName = component.hasAttribute('data-name');\n const searchAjaxURL = `${ajaxURL}?search_query=${encodeURI(searchterm)}`;\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[searchAjaxURL])\n window.controller[searchAjaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[searchAjaxURL] = new AbortController();\n const { signal } = controller[searchAjaxURL];\n try {\n yield fetch(searchAjaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n let items = '';\n for (let i = 0; i < response['data'].length; i++) {\n if (!component.querySelector(`[value=\"${response['data'][i].value}\"]`))\n items += `<label class=\"tag dropdown__option\"><input type=\"${inputType}\" name=\"${component.hasAttribute('data-name') ? component.getAttribute('data-name') : inputName}\" value=\"${response['data'][i].value}\"/>${response['data'][i].title}</label>`;\n }\n component.insertAdjacentHTML('beforeend', `${items}`);\n callback(component, search);\n return response;\n });\n }\n catch (error) {\n console.log(error);\n }\n});\nexport const setTag = (tag) => {\n const input = tag.querySelector(':checked');\n const inputName = input === null || input === void 0 ? void 0 : input.getAttribute('name');\n tag.setAttribute('slot', 'checked');\n tag.setAttribute('data-content', tag.textContent);\n let tags = [];\n if (localStorage.getItem('tags-' + inputName) != null)\n tags = JSON.parse(localStorage.getItem('tags-' + inputName));\n if (!tags.includes(tag.textContent)) {\n tags.push(tag.textContent);\n localStorage.setItem('tags-' + inputName, JSON.stringify(tags));\n }\n let tagIndex = tags.indexOf(tag.textContent) + 1;\n if (tagIndex > 23)\n tagIndex = 1;\n tag === null || tag === void 0 ? void 0 : tag.classList.add(`wider-colour-${tagIndex + 1}`);\n};\nexport const addKeyboardEvents = (dropdown, search) => {\n search.addEventListener('keydown', (e) => {\n var _a;\n switch (e.keyCode) {\n case 40: // down\n e.stopPropagation();\n e.preventDefault();\n (_a = dropdown.querySelector('label:not([slot=\"checked\"]) input')) === null || _a === void 0 ? void 0 : _a.focus();\n break;\n }\n });\n dropdown.addEventListener('keydown', (event) => {\n var _a, _b, _c;\n const topLevelmenuItems = dropdown.querySelectorAll(':scope > a, :scope > button, :scope > details > summary, :scope > label:not([slot=\"checked\"]) > input');\n const menuItems = dropdown.querySelectorAll('a, button, input, label:not([slot=\"checked\"]) > input');\n const activeElement = document.activeElement;\n if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary, label:not([slot=\"checked\"]) > input')) {\n const activeItem = document.activeElement;\n const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;\n const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;\n switch (event.keyCode // change to event.key to key to use the above variable\n ) {\n case 27: // Esc\n if (activeItem.closest('details')) {\n event.stopPropagation();\n event.preventDefault();\n activeItem.closest('details').removeAttribute('open');\n activeItem.closest('details').querySelector(':scope summary').focus();\n }\n else {\n event.stopPropagation();\n //menuButton.focus();\n }\n break;\n case 32: // Space\n case 13: // Enter\n break;\n case 35: // end\n event.stopPropagation();\n event.preventDefault();\n (_a = dropdown.querySelector('details[open]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('open');\n Array.from(menuItems)[menuItems.length - 1].focus();\n break;\n case 36: // home\n event.stopPropagation();\n event.preventDefault();\n (_b = dropdown.querySelector('details[open]')) === null || _b === void 0 ? void 0 : _b.removeAttribute('open');\n Array.from(menuItems)[0].focus();\n break;\n case 38: // up\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[prevIndex] != undefined)\n Array.from(topLevelmenuItems)[prevIndex].focus();\n else\n Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;\n if (Array.from(subMenuItems)[subPrevIndex] != undefined)\n Array.from(subMenuItems)[subPrevIndex].focus();\n else\n Array.from(subMenuItems)[subMenuItems.length - 1].focus();\n }\n break;\n case 40: // down\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[nextIndex] != undefined)\n Array.from(topLevelmenuItems)[nextIndex].focus();\n else\n Array.from(topLevelmenuItems)[0].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = (_c = activeItem.closest('details')) === null || _c === void 0 ? void 0 : _c.querySelectorAll('a, button, :scope details > summary');\n subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;\n if (Array.from(subMenuItems)[subNextIndex] != undefined)\n Array.from(subMenuItems)[subNextIndex].focus();\n else\n Array.from(subMenuItems)[0].focus();\n }\n break;\n }\n }\n });\n};\n","import { searchAjax, filterList, addKeyboardEvents } from '../../modules/dropdown';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'mutliselect',\n});\nclass iamMultiselect extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/multiselect.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n \n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <label for=\"search\" class=\"mb-0\"><span class=\"inner-label label\"></span> <slot name=\"feedback\"></slot>\n <div class=\"outer\">\n <div class=\"wrapper\">\n \n <slot name=\"checked\"></slot>\n <input name=\"search\" id=\"search\" autocomplete=\"off\" required part=\"search-input\"/>\n <span class=\"admin-panel feedback\">This field is required</span>\n <div class=\"admin-panel dropdown\" part=\"dropdown\">\n <slot></slot>\n </div>\n <button id=\"clear\" class=\"btn btn-action \"><span class=\"visually-hidden\">Clear</span></button>\n </div>\n </div>\n </label>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const multiselect = this;\n const form = this.closest('form');\n const wrapper = this.shadowRoot.querySelector('.wrapper');\n const search = multiselect.shadowRoot.querySelector('#search');\n const button = multiselect.shadowRoot.querySelector('#clear');\n let order = 0;\n const innerLabel = multiselect.shadowRoot.querySelector('label .inner-label');\n const ajaxURL = this.getAttribute('data-url');\n innerLabel.innerHTML = multiselect.getAttribute('data-label');\n const minLength = this.hasAttribute('data-min') ? this.getAttribute('data-min') : 3;\n // Make sure the dropdown options are set\n Array.from(this.querySelectorAll(':scope > label')).forEach((label) => {\n var _a;\n label.classList.add('dropdown__option');\n (_a = label === null || label === void 0 ? void 0 : label.querySelector('i')) === null || _a === void 0 ? void 0 : _a.remove();\n });\n if (multiselect.hasAttribute('placeholder')) {\n search.setAttribute('placeholder', multiselect.getAttribute('placeholder'));\n }\n multiselect.setAttribute('data-error', 'true');\n // If in form and is required lets watch for the form being submitted\n if (form && multiselect.hasAttribute('data-is-required')) {\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutationRecord) {\n const targetElement = mutationRecord.target;\n if (targetElement.classList.contains('was-validated')) {\n wrapper.classList.add('was-validated');\n }\n else {\n wrapper.classList.remove('was-validated');\n }\n });\n });\n if (form.classList.contains('was-validated')) {\n wrapper.classList.add('was-validated');\n }\n else {\n wrapper.classList.remove('was-validated');\n }\n observer.observe(form, {\n attributes: true,\n attributeFilter: ['style', 'class'],\n });\n }\n // Set the correct attributes\n function setItem(inputToSet) {\n if (inputToSet.checked == false) {\n inputToSet.closest('label').removeAttribute('slot');\n inputToSet.closest('label').removeAttribute('style');\n inputToSet.closest('label').removeAttribute('data-order');\n }\n else {\n order++;\n inputToSet.closest('label').setAttribute('slot', 'checked');\n inputToSet.closest('label').setAttribute('style', `--order:${order};`);\n inputToSet.closest('label').setAttribute('data-order', order);\n if (inputToSet.closest('[data-value]')) {\n inputToSet.closest('[data-value]').setAttribute('data-value', inputToSet.closest('label').textContent);\n }\n }\n // check for errors\n if (multiselect.querySelector('label[slot=\"checked\"]')) {\n wrapper.classList.add('filled');\n multiselect.removeAttribute('data-error');\n search.removeAttribute('placeholder');\n }\n else {\n wrapper.classList.remove('filled');\n multiselect.setAttribute('data-error', 'true');\n if (multiselect.hasAttribute('placeholder')) {\n search.setAttribute('placeholder', multiselect.getAttribute('placeholder'));\n }\n }\n }\n // Set on load\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]:checked`)).forEach((checkbox) => {\n setItem(checkbox);\n });\n search.addEventListener('input', () => {\n if (multiselect.hasAttribute('data-url') && search.value.length == minLength) {\n searchAjax(multiselect, search, filterList);\n }\n else {\n filterList(multiselect, search);\n }\n });\n // Add a delayed hover effect for non hover devices\n let hoverTimeout;\n multiselect.addEventListener('focus', () => {\n multiselect.classList.add('hover');\n clearTimeout(hoverTimeout);\n });\n search.addEventListener('blur', (event) => {\n setTimeout(function () {\n const activeElement = document.activeElement;\n if (activeElement.getAttribute('type') != 'checkbox') {\n if (multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`)) {\n multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`).checked = true;\n setItem(multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`));\n }\n search.value = '';\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]`)).forEach((checkbox) => {\n setItem(checkbox);\n });\n }\n if (multiselect.hasAttribute('data-url')) {\n Array.from(multiselect.querySelectorAll(`label:has(input[type=\"checkbox\"]:not(:checked))`)).forEach((checkbox) => {\n checkbox.remove();\n });\n }\n }, 200);\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(function () {\n multiselect.classList.remove('hover');\n }, 500);\n });\n // Set items\n multiselect.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('input[type=\"checkbox\"]')) {\n const checkbox = event.target.closest('input[type=\"checkbox\"]');\n if (multiselect.hasAttribute('data-single')) {\n Array.from(multiselect.querySelectorAll(`label[slot=\"checked\"] input`)).forEach((inputToCancel) => {\n inputToCancel.checked = false;\n inputToCancel.closest('label').removeAttribute('slot');\n inputToCancel.closest('label').removeAttribute('style');\n inputToCancel.closest('label').removeAttribute('data-order');\n });\n }\n setItem(checkbox);\n search.value = '';\n if (!multiselect.hasAttribute('data-single')) {\n search.focus();\n clearTimeout(hoverTimeout);\n multiselect.classList.add('hover');\n hoverTimeout = setTimeout(function () {\n multiselect.classList.remove('hover');\n }, 5000);\n }\n else {\n multiselect.classList.remove('hover');\n }\n }\n });\n // Clear all\n button.addEventListener('click', function () {\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]`)).forEach((checkbox) => {\n checkbox.checked = false;\n setItem(checkbox);\n });\n search.focus();\n });\n // Add some keyboard features to keep it accessible\n addKeyboardEvents(this, search);\n multiselect.addEventListener('keydown', function (event) {\n const activeElement = document.activeElement;\n switch (event.key // change to event.key to key to use the above variable\n ) {\n case 'ArrowLeft':\n // Up pressed\n event.preventDefault();\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n const arrCheckboxes = multiselect.querySelectorAll(`label[slot=\"checked\"][slot=\"checked\"]`);\n const activeIndex = Array.from(arrCheckboxes).indexOf(activeElement.closest('label'));\n const prevCheckbox = Array.from(arrCheckboxes)[activeIndex - 1];\n if (prevCheckbox)\n prevCheckbox.focus();\n else\n search.focus();\n }\n else if (activeElement == multiselect) {\n const options = Array.from(multiselect.querySelectorAll('label[slot=\"checked\"]')).sort(function (a, b) {\n return +a.dataset.order - +b.dataset.order;\n });\n options.pop().focus();\n }\n break;\n case 'ArrowRight':\n // Up pressed\n event.preventDefault();\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n const arrCheckboxes = multiselect.querySelectorAll(`label[slot=\"checked\"][slot=\"checked\"]`);\n const activeIndex = Array.from(arrCheckboxes).indexOf(activeElement.closest('label'));\n const nextCheckbox = Array.from(arrCheckboxes)[activeIndex + 1];\n if (nextCheckbox)\n nextCheckbox.focus();\n else\n search.focus();\n }\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n if (activeElement.checked == false)\n activeElement.checked = true;\n else\n activeElement.checked = false;\n }\n console.log(search);\n if (activeElement.getAttribute('type') != 'checkbox') {\n if (multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`)) {\n multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`).checked = true;\n setItem(multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`));\n }\n search.value = '';\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]`)).forEach((checkbox) => {\n setItem(checkbox);\n });\n }\n else {\n setItem(activeElement);\n }\n search.focus();\n break;\n case 'Backspace':\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n activeElement.checked = false;\n setItem(activeElement);\n search.focus();\n }\n break;\n }\n });\n function checkLastTag() {\n if (order == 0)\n return false;\n let lastTag = multiselect.querySelector(`label[data-order=\"${order}\"]`);\n if (!lastTag) {\n lastTag = checkLastTag(order--);\n }\n return lastTag;\n }\n search.addEventListener('keydown', function (event) {\n switch (event.key // change to event.key to key to use the above variable\n ) {\n case 'Enter':\n const match = multiselect.querySelector(`input[value=\"${search.value}\"]:not(:checked)`);\n if (!match)\n search.value = '';\n search.focus();\n break;\n case 'Backspace':\n if (!search.value) {\n const lastTag = checkLastTag(order);\n if (lastTag) {\n const lastTagInput = lastTag.querySelector('input');\n lastTagInput.checked = false;\n setItem(lastTagInput);\n }\n search.focus();\n }\n break;\n }\n });\n // Fix for the inline edit multiselect\n multiselect.addEventListener('mousedown', () => {\n wrapper.setAttribute('data-mousedown', 'true');\n });\n multiselect.addEventListener('mouseup', () => {\n wrapper.removeAttribute('data-mousedown');\n });\n }\n}\nexport default iamMultiselect;\n"],"names":["assign","target","i","source","key","defaultConverter","value","init","converter","defaultAttributes","set","name","attributes","stringifiedAttributes","attributeName","get","cookies","jar","parts","found","api","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","e","rejected","result","filterList","component","search","label","searchValue","labelText","searchAjax","callback","searchterm","ajaxURL","firstInput","inputType","inputName","searchAjaxURL","signal","Cookies","response","items","error","addKeyboardEvents","dropdown","_a","event","_b","_c","topLevelmenuItems","menuItems","activeItem","prevIndex","nextIndex","subMenuItems","iamMultiselect","template","multiselect","form","wrapper","button","order","innerLabel","minLength","observer","mutations","mutationRecord","setItem","inputToSet","checkbox","hoverTimeout","inputToCancel","activeElement","arrCheckboxes","activeIndex","prevCheckbox","a","b","nextCheckbox","checkLastTag","lastTag","lastTagInput"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"multiselect.component.min.js","sources":["../../../../node_modules/js-cookie/dist/js.cookie.mjs","../../modules/dropdown.js","multiselect.component.js"],"sourcesContent":["/*! js-cookie v3.0.8 | MIT */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (key === '__proto__') continue\n target[key] = source[key];\n }\n }\n return target\n}\n\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n\nfunction init(converter, defaultAttributes) {\n function set(name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get(name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n if (!(found in jar)) jar[found] = converter.read(value, found);\n if (name === found) {\n break\n }\n } catch (_e) {\n // Do nothing...\n }\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n\nexport { api as default };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport Cookies from '../../../node_modules/js-cookie/dist/js.cookie.mjs';\nexport const filterList = (component, search) => {\n Array.from(component.querySelectorAll(`label:not([slot=\"checked\"])`)).forEach((label) => {\n const checkbox = label.querySelector('input');\n const searchValue = checkbox.value;\n const labelText = label.textContent;\n if (searchValue.toLowerCase().includes(search.value.toLowerCase()) ||\n labelText.toLowerCase().includes(search.value.toLowerCase())) {\n label.removeAttribute('slot');\n }\n else {\n label.setAttribute('slot', 'notmatched');\n }\n });\n};\nexport const searchAjax = (component, search, callback) => __awaiter(void 0, void 0, void 0, function* () {\n const searchterm = search.value;\n const ajaxURL = component.getAttribute('data-url');\n const firstInput = component.querySelector('input');\n const inputType = firstInput && firstInput.hasAttribute('type') ? firstInput.getAttribute('type') : 'checkbox';\n let inputName = firstInput && firstInput.hasAttribute('name') ? firstInput.getAttribute('name') : 'tags';\n if (component.hasAttribute('data-name'))\n inputName = component.hasAttribute('data-name');\n const searchAjaxURL = `${ajaxURL}?search_query=${encodeURI(searchterm)}`;\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[searchAjaxURL])\n window.controller[searchAjaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[searchAjaxURL] = new AbortController();\n const { signal } = controller[searchAjaxURL];\n try {\n yield fetch(searchAjaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n let items = '';\n for (let i = 0; i < response['data'].length; i++) {\n if (!component.querySelector(`[value=\"${response['data'][i].value}\"]`))\n items += `<label class=\"tag dropdown__option\"><input type=\"${inputType}\" name=\"${component.hasAttribute('data-name') ? component.getAttribute('data-name') : inputName}\" value=\"${response['data'][i].value}\"/>${response['data'][i].title}</label>`;\n }\n component.insertAdjacentHTML('beforeend', `${items}`);\n callback(component, search);\n return response;\n });\n }\n catch (error) {\n console.log(error);\n }\n});\nexport const setTag = (tag) => {\n const input = tag.querySelector(':checked');\n const inputName = input === null || input === void 0 ? void 0 : input.getAttribute('name');\n tag.setAttribute('slot', 'checked');\n tag.setAttribute('data-content', tag.textContent);\n let tags = [];\n if (localStorage.getItem('tags-' + inputName) != null)\n tags = JSON.parse(localStorage.getItem('tags-' + inputName));\n if (!tags.includes(tag.textContent)) {\n tags.push(tag.textContent);\n localStorage.setItem('tags-' + inputName, JSON.stringify(tags));\n }\n let tagIndex = tags.indexOf(tag.textContent) + 1;\n if (tagIndex > 23)\n tagIndex = 1;\n tag === null || tag === void 0 ? void 0 : tag.classList.add(`wider-colour-${tagIndex + 1}`);\n};\nexport const addKeyboardEvents = (dropdown, search) => {\n search.addEventListener('keydown', (e) => {\n var _a;\n switch (e.keyCode) {\n case 40: // down\n e.stopPropagation();\n e.preventDefault();\n (_a = dropdown.querySelector('label:not([slot=\"checked\"]) input')) === null || _a === void 0 ? void 0 : _a.focus();\n break;\n }\n });\n dropdown.addEventListener('keydown', (event) => {\n var _a, _b, _c;\n const topLevelmenuItems = dropdown.querySelectorAll(':scope > a, :scope > button, :scope > details > summary, :scope > label:not([slot=\"checked\"]) > input');\n const menuItems = dropdown.querySelectorAll('a, button, input, label:not([slot=\"checked\"]) > input');\n const activeElement = document.activeElement;\n if (event && event.target instanceof HTMLElement && event.target.closest('a, button, summary, label:not([slot=\"checked\"]) > input')) {\n const activeItem = document.activeElement;\n const prevIndex = Array.from(topLevelmenuItems).indexOf(activeItem) - 1;\n const nextIndex = Array.from(topLevelmenuItems).indexOf(activeItem) + 1;\n switch (event.keyCode // change to event.key to key to use the above variable\n ) {\n case 27: // Esc\n if (activeItem.closest('details')) {\n event.stopPropagation();\n event.preventDefault();\n activeItem.closest('details').removeAttribute('open');\n activeItem.closest('details').querySelector(':scope summary').focus();\n }\n else {\n event.stopPropagation();\n //menuButton.focus();\n }\n break;\n case 32: // Space\n case 13: // Enter\n break;\n case 35: // end\n event.stopPropagation();\n event.preventDefault();\n (_a = dropdown.querySelector('details[open]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('open');\n Array.from(menuItems)[menuItems.length - 1].focus();\n break;\n case 36: // home\n event.stopPropagation();\n event.preventDefault();\n (_b = dropdown.querySelector('details[open]')) === null || _b === void 0 ? void 0 : _b.removeAttribute('open');\n Array.from(menuItems)[0].focus();\n break;\n case 38: // up\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[prevIndex] != undefined)\n Array.from(topLevelmenuItems)[prevIndex].focus();\n else\n Array.from(topLevelmenuItems)[topLevelmenuItems.length - 1].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = activeItem\n .closest('details')\n .querySelectorAll('a, button, :scope details > summary');\n subPrevIndex = Array.from(subMenuItems).indexOf(activeItem) - 1;\n if (Array.from(subMenuItems)[subPrevIndex] != undefined)\n Array.from(subMenuItems)[subPrevIndex].focus();\n else\n Array.from(subMenuItems)[subMenuItems.length - 1].focus();\n }\n break;\n case 40: // down\n event.stopPropagation();\n event.preventDefault();\n if (Array.from(topLevelmenuItems).indexOf(activeItem) > -1) {\n if (Array.from(topLevelmenuItems)[nextIndex] != undefined)\n Array.from(topLevelmenuItems)[nextIndex].focus();\n else\n Array.from(topLevelmenuItems)[0].focus();\n }\n else if (activeItem.closest('details')) {\n const subMenuItems = (_c = activeItem.closest('details')) === null || _c === void 0 ? void 0 : _c.querySelectorAll('a, button, :scope details > summary');\n subNextIndex = Array.from(subMenuItems).indexOf(activeItem) + 1;\n if (Array.from(subMenuItems)[subNextIndex] != undefined)\n Array.from(subMenuItems)[subNextIndex].focus();\n else\n Array.from(subMenuItems)[0].focus();\n }\n break;\n }\n }\n });\n};\n","import { searchAjax, filterList, addKeyboardEvents } from '../../modules/dropdown';\nclass iamMultiselect extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/multiselect.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <label for=\"search\" class=\"mb-0\"><span class=\"inner-label label\"></span> <slot name=\"feedback\"></slot>\n <div class=\"outer\">\n <div class=\"wrapper\">\n\n <slot name=\"checked\"></slot>\n <input name=\"search\" id=\"search\" autocomplete=\"off\" required part=\"search-input\"/>\n <span class=\"admin-panel feedback\">This field is required</span>\n <div class=\"admin-panel dropdown\" part=\"dropdown\">\n <slot></slot>\n </div>\n <button id=\"clear\" class=\"btn btn-action \"><span class=\"visually-hidden\">Clear</span></button>\n </div>\n </div>\n </label>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const multiselect = this;\n const form = this.closest('form');\n const wrapper = this.shadowRoot.querySelector('.wrapper');\n const search = multiselect.shadowRoot.querySelector('#search');\n const clearButton = multiselect.shadowRoot.querySelector('#clear');\n let order = 0;\n const innerLabel = multiselect.shadowRoot.querySelector('label .inner-label');\n const ajaxURL = this.getAttribute('data-url');\n innerLabel.innerHTML = multiselect.getAttribute('data-label');\n const minLength = this.hasAttribute('data-min') ? this.getAttribute('data-min') : 3;\n // Make sure the dropdown options are set\n Array.from(this.querySelectorAll(':scope > label')).forEach((label) => {\n var _a;\n label.classList.add('dropdown__option');\n (_a = label === null || label === void 0 ? void 0 : label.querySelector('i')) === null || _a === void 0 ? void 0 : _a.remove();\n });\n if (multiselect.hasAttribute('placeholder')) {\n search.setAttribute('placeholder', multiselect.getAttribute('placeholder'));\n }\n multiselect.setAttribute('data-error', 'true');\n // If in form and is required lets watch for the form being submitted\n if (form && multiselect.hasAttribute('data-is-required')) {\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutationRecord) {\n const targetElement = mutationRecord.target;\n if (targetElement.classList.contains('was-validated')) {\n wrapper.classList.add('was-validated');\n }\n else {\n wrapper.classList.remove('was-validated');\n }\n });\n });\n if (form.classList.contains('was-validated')) {\n wrapper.classList.add('was-validated');\n }\n else {\n wrapper.classList.remove('was-validated');\n }\n observer.observe(form, {\n attributes: true,\n attributeFilter: ['style', 'class'],\n });\n }\n // Set the correct attributes\n function setItem(inputToSet) {\n if (inputToSet.checked == false) {\n inputToSet.closest('label').removeAttribute('slot');\n inputToSet.closest('label').removeAttribute('style');\n inputToSet.closest('label').removeAttribute('data-order');\n }\n else {\n order++;\n inputToSet.closest('label').setAttribute('slot', 'checked');\n inputToSet.closest('label').setAttribute('style', `--order:${order};`);\n inputToSet.closest('label').setAttribute('data-order', order);\n if (inputToSet.closest('[data-value]')) {\n inputToSet.closest('[data-value]').setAttribute('data-value', inputToSet.closest('label').textContent);\n }\n }\n // check for errors\n if (multiselect.querySelector('label[slot=\"checked\"]')) {\n wrapper.classList.add('filled');\n multiselect.removeAttribute('data-error');\n search.removeAttribute('placeholder');\n }\n else {\n wrapper.classList.remove('filled');\n multiselect.setAttribute('data-error', 'true');\n if (multiselect.hasAttribute('placeholder')) {\n search.setAttribute('placeholder', multiselect.getAttribute('placeholder'));\n }\n }\n }\n // Set on load\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]:checked`)).forEach((checkbox) => {\n setItem(checkbox);\n });\n search.addEventListener('input', () => {\n if (multiselect.hasAttribute('data-url') && search.value.length == minLength) {\n searchAjax(multiselect, search, filterList);\n }\n else {\n filterList(multiselect, search);\n }\n });\n // Add a delayed hover effect for non hover devices\n let hoverTimeout;\n multiselect.addEventListener('focus', () => {\n multiselect.classList.add('hover');\n clearTimeout(hoverTimeout);\n });\n search.addEventListener('blur', (event) => {\n setTimeout(function () {\n const activeElement = document.activeElement;\n if (activeElement.getAttribute('type') != 'checkbox') {\n if (multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`)) {\n multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`).checked = true;\n setItem(multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`));\n }\n search.value = '';\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]`)).forEach((checkbox) => {\n setItem(checkbox);\n });\n }\n if (multiselect.hasAttribute('data-url')) {\n Array.from(multiselect.querySelectorAll(`label:has(input[type=\"checkbox\"]:not(:checked))`)).forEach((checkbox) => {\n checkbox.remove();\n });\n }\n }, 200);\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(function () {\n multiselect.classList.remove('hover');\n }, 500);\n });\n // Set items\n multiselect.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('input[type=\"checkbox\"]')) {\n const checkbox = event.target.closest('input[type=\"checkbox\"]');\n if (multiselect.hasAttribute('data-single')) {\n Array.from(multiselect.querySelectorAll(`label[slot=\"checked\"] input`)).forEach((inputToCancel) => {\n inputToCancel.checked = false;\n inputToCancel.closest('label').removeAttribute('slot');\n inputToCancel.closest('label').removeAttribute('style');\n inputToCancel.closest('label').removeAttribute('data-order');\n });\n }\n setItem(checkbox);\n search.value = '';\n if (!multiselect.hasAttribute('data-single')) {\n search.focus();\n clearTimeout(hoverTimeout);\n multiselect.classList.add('hover');\n hoverTimeout = setTimeout(function () {\n multiselect.classList.remove('hover');\n }, 5000);\n }\n else {\n multiselect.classList.remove('hover');\n }\n }\n });\n // Clear all\n clearButton.addEventListener('click', () => {\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]`)).forEach((checkbox) => {\n checkbox.checked = false;\n setItem(checkbox);\n });\n search.focus();\n const clearEvent = new CustomEvent('clear');\n this.dispatchEvent(clearEvent);\n });\n // Add some keyboard features to keep it accessible\n addKeyboardEvents(this, search);\n multiselect.addEventListener('keydown', function (event) {\n const activeElement = document.activeElement;\n switch (event.key // change to event.key to key to use the above variable\n ) {\n case 'ArrowLeft':\n // Up pressed\n event.preventDefault();\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n const arrCheckboxes = multiselect.querySelectorAll(`label[slot=\"checked\"][slot=\"checked\"]`);\n const activeIndex = Array.from(arrCheckboxes).indexOf(activeElement.closest('label'));\n const prevCheckbox = Array.from(arrCheckboxes)[activeIndex - 1];\n if (prevCheckbox)\n prevCheckbox.focus();\n else\n search.focus();\n }\n else if (activeElement == multiselect) {\n const options = Array.from(multiselect.querySelectorAll('label[slot=\"checked\"]')).sort(function (a, b) {\n return +a.dataset.order - +b.dataset.order;\n });\n options.pop().focus();\n }\n break;\n case 'ArrowRight':\n // Up pressed\n event.preventDefault();\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n const arrCheckboxes = multiselect.querySelectorAll(`label[slot=\"checked\"][slot=\"checked\"]`);\n const activeIndex = Array.from(arrCheckboxes).indexOf(activeElement.closest('label'));\n const nextCheckbox = Array.from(arrCheckboxes)[activeIndex + 1];\n if (nextCheckbox)\n nextCheckbox.focus();\n else\n search.focus();\n }\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n if (activeElement.checked == false)\n activeElement.checked = true;\n else\n activeElement.checked = false;\n }\n console.log(search);\n if (activeElement.getAttribute('type') != 'checkbox') {\n if (multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`)) {\n multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`).checked = true;\n setItem(multiselect.querySelector(`input[type=\"checkbox\"][value=\"${search.value}\" i]`));\n }\n search.value = '';\n Array.from(multiselect.querySelectorAll(`label input[type=\"checkbox\"]`)).forEach((checkbox) => {\n setItem(checkbox);\n });\n }\n else {\n setItem(activeElement);\n }\n search.focus();\n break;\n case 'Backspace':\n if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {\n activeElement.checked = false;\n setItem(activeElement);\n search.focus();\n }\n break;\n }\n });\n function checkLastTag() {\n if (order == 0)\n return false;\n let lastTag = multiselect.querySelector(`label[data-order=\"${order}\"]`);\n if (!lastTag) {\n lastTag = checkLastTag(order--);\n }\n return lastTag;\n }\n search.addEventListener('keydown', function (event) {\n switch (event.key // change to event.key to key to use the above variable\n ) {\n case 'Enter':\n const match = multiselect.querySelector(`input[value=\"${search.value}\"]:not(:checked)`);\n if (!match)\n search.value = '';\n search.focus();\n break;\n case 'Backspace':\n if (!search.value) {\n const lastTag = checkLastTag(order);\n if (lastTag) {\n const lastTagInput = lastTag.querySelector('input');\n lastTagInput.checked = false;\n setItem(lastTagInput);\n }\n search.focus();\n }\n break;\n }\n });\n // Fix for the inline edit multiselect\n multiselect.addEventListener('mousedown', () => {\n wrapper.setAttribute('data-mousedown', 'true');\n });\n multiselect.addEventListener('mouseup', () => {\n wrapper.removeAttribute('data-mousedown');\n });\n }\n}\nexport default iamMultiselect;\n"],"names":["assign","target","i","source","key","defaultConverter","value","init","converter","defaultAttributes","set","name","attributes","stringifiedAttributes","attributeName","get","cookies","jar","parts","found","api","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","e","rejected","result","filterList","component","search","label","searchValue","labelText","searchAjax","callback","searchterm","ajaxURL","firstInput","inputType","inputName","searchAjaxURL","signal","Cookies","response","items","error","addKeyboardEvents","dropdown","_a","event","_b","_c","topLevelmenuItems","menuItems","activeItem","prevIndex","nextIndex","subMenuItems","iamMultiselect","template","multiselect","form","wrapper","clearButton","order","innerLabel","minLength","observer","mutations","mutationRecord","setItem","inputToSet","checkbox","hoverTimeout","inputToCancel","clearEvent","activeElement","arrCheckboxes","activeIndex","prevCheckbox","a","b","nextCheckbox","checkLastTag","lastTag","lastTagInput"],"mappings":"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","x_google_ignoreList":[0]}
@@ -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 === null || buttonsHolder === void 0 ? void 0 : 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;