@iamproperty/components 5.0.0 → 5.1.0-beta10

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 (208) hide show
  1. package/assets/css/components/accordion.css +1 -1
  2. package/assets/css/components/accordion.css.map +1 -1
  3. package/assets/css/components/accordion.global.css +1 -0
  4. package/assets/css/components/accordion.global.css.map +1 -0
  5. package/assets/css/components/actionbar.css +1 -1
  6. package/assets/css/components/actionbar.css.map +1 -1
  7. package/assets/css/components/actionbar.global.css +1 -0
  8. package/assets/css/components/actionbar.global.css.map +1 -0
  9. package/assets/css/components/card.css +1 -1
  10. package/assets/css/components/card.css.map +1 -1
  11. package/assets/css/components/card.global.css +1 -0
  12. package/assets/css/components/card.global.css.map +1 -0
  13. package/assets/css/components/carousel.css +1 -1
  14. package/assets/css/components/carousel.css.map +1 -1
  15. package/assets/css/components/component.native.css +1 -0
  16. package/assets/css/components/component.native.css.map +1 -0
  17. package/assets/css/components/component.reset.css +1 -1
  18. package/assets/css/components/component.reset.css.map +1 -1
  19. package/assets/css/components/fileupload.css +1 -1
  20. package/assets/css/components/fileupload.css.map +1 -1
  21. package/assets/css/components/header.css +1 -1
  22. package/assets/css/components/header.css.map +1 -1
  23. package/assets/css/components/marketing.css +1 -0
  24. package/assets/css/components/marketing.css.map +1 -0
  25. package/assets/css/components/nav.css +1 -1
  26. package/assets/css/components/nav.css.map +1 -1
  27. package/assets/css/components/nav.global.css +1 -0
  28. package/assets/css/components/nav.global.css.map +1 -0
  29. package/assets/css/components/notification.global.css +1 -0
  30. package/assets/css/components/notification.global.css.map +1 -0
  31. package/assets/css/components/pagination.css +1 -1
  32. package/assets/css/components/pagination.css.map +1 -1
  33. package/assets/css/components/slider.css +1 -0
  34. package/assets/css/components/slider.css.map +1 -0
  35. package/assets/css/components/table.css +1 -1
  36. package/assets/css/components/table.css.map +1 -1
  37. package/assets/css/components/{table.extras.css → table.global.css} +1 -1
  38. package/assets/css/components/{table.extras.css.map → table.global.css.map} +1 -1
  39. package/assets/css/components/tabs.css +1 -1
  40. package/assets/css/components/tabs.css.map +1 -1
  41. package/assets/css/core.min.css +1 -1
  42. package/assets/css/core.min.css.map +1 -1
  43. package/assets/css/style.min.css +1 -1
  44. package/assets/css/style.min.css.map +1 -1
  45. package/assets/img/illustrations/add-new-property.png +0 -0
  46. package/assets/img/illustrations/auctioneer.png +0 -0
  47. package/assets/img/illustrations/branch.png +0 -0
  48. package/assets/img/illustrations/company-level.png +0 -0
  49. package/assets/img/illustrations/contractors.png +0 -0
  50. package/assets/img/illustrations/find-existing-property.png +0 -0
  51. package/assets/img/illustrations/green/add-new-property.png +0 -0
  52. package/assets/img/illustrations/green/auctioneer.png +0 -0
  53. package/assets/img/illustrations/green/branch.png +0 -0
  54. package/assets/img/illustrations/green/buyer.png +0 -0
  55. package/assets/img/illustrations/green/company-level.png +0 -0
  56. package/assets/img/illustrations/green/contractors.png +0 -0
  57. package/assets/img/illustrations/green/estate-agents.png +0 -0
  58. package/assets/img/illustrations/green/find-existing-property.png +0 -0
  59. package/assets/img/illustrations/green/landlords.png +0 -0
  60. package/assets/img/illustrations/green/seller.png +0 -0
  61. package/assets/img/illustrations/green/whats-new-2.png +0 -0
  62. package/assets/img/illustrations/green/whats-new.png +0 -0
  63. package/assets/img/illustrations/information-works.png +0 -0
  64. package/assets/img/illustrations/landlords.png +0 -0
  65. package/assets/img/illustrations/whats-new-2.png +0 -0
  66. package/assets/img/illustrations/whats-new.png +0 -0
  67. package/assets/img/signin-bg.png +0 -0
  68. package/assets/js/components/accordion/accordion.component.js +4 -0
  69. package/assets/js/components/accordion/accordion.component.min.js +6 -5
  70. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  71. package/assets/js/components/actionbar/actionbar.component.js +4 -0
  72. package/assets/js/components/actionbar/actionbar.component.min.js +5 -4
  73. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  74. package/assets/js/components/address-lookup/address-lookup.component.js +18 -4
  75. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
  76. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  77. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  78. package/assets/js/components/card/card.component.js +6 -1
  79. package/assets/js/components/card/card.component.min.js +6 -4
  80. package/assets/js/components/card/card.component.min.js.map +1 -1
  81. package/assets/js/components/carousel/carousel.component.js +61 -0
  82. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  83. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  84. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  85. package/assets/js/components/header/header.component.js +6 -12
  86. package/assets/js/components/header/header.component.min.js +8 -14
  87. package/assets/js/components/header/header.component.min.js.map +1 -1
  88. package/assets/js/components/marketing/marketing.component.js +37 -0
  89. package/assets/js/components/nav/nav.component.js +8 -36
  90. package/assets/js/components/nav/nav.component.min.js +10 -12
  91. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  92. package/assets/js/components/notification/notification.component.js +4 -0
  93. package/assets/js/components/notification/notification.component.min.js +4 -3
  94. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  95. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  96. package/assets/js/components/search/search.component.js +148 -0
  97. package/assets/js/components/search/search.component.min.js +14 -0
  98. package/assets/js/components/search/search.component.min.js.map +1 -0
  99. package/assets/js/components/slider/slider.component.js +143 -0
  100. package/assets/js/components/table/table.component.js +1 -1
  101. package/assets/js/components/table/table.component.min.js +6 -6
  102. package/assets/js/components/table/table.component.min.js.map +1 -1
  103. package/assets/js/components/tabs/tabs.component.js +2 -0
  104. package/assets/js/components/tabs/tabs.component.min.js +5 -3
  105. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  106. package/assets/js/dynamic.js +1 -1
  107. package/assets/js/dynamic.min.js +5 -5
  108. package/assets/js/dynamic.min.js.map +1 -1
  109. package/assets/js/modules/carousel.js +15 -23
  110. package/assets/js/modules/dynamicEvents.js +28 -13
  111. package/assets/js/modules/helpers.js +4 -1
  112. package/assets/js/modules/inputs.js +44 -3
  113. package/assets/js/modules/table.js +8 -6
  114. package/assets/js/modules/tabs.js +29 -31
  115. package/assets/js/scripts.bundle.js +31 -35
  116. package/assets/js/scripts.bundle.js.map +1 -1
  117. package/assets/js/scripts.bundle.min.js +2 -2
  118. package/assets/js/scripts.bundle.min.js.map +1 -1
  119. package/assets/js/tests/slider.spec.js +20 -0
  120. package/assets/sass/_components.scss +0 -6
  121. package/assets/sass/_corefiles.scss +9 -88
  122. package/assets/sass/_elements.scss +1 -2
  123. package/assets/sass/_functions/mixins.scss +16 -0
  124. package/assets/sass/_functions/utilities.scss +0 -17
  125. package/assets/sass/_functions/variables.scss +1 -0
  126. package/assets/sass/components/accordion.global.scss +135 -0
  127. package/assets/sass/components/accordion.scss +6 -192
  128. package/assets/sass/components/{actionbar-global.scss → actionbar.global.scss} +3 -1
  129. package/assets/sass/components/actionbar.scss +2 -2
  130. package/assets/sass/components/{card-global.scss → card.global.scss} +2 -23
  131. package/assets/sass/components/card.scss +44 -3
  132. package/assets/sass/components/carousel.scss +86 -159
  133. package/assets/sass/components/component.native.scss +120 -0
  134. package/assets/sass/components/component.reset.scss +1 -3
  135. package/assets/sass/components/fileupload.scss +1 -1
  136. package/assets/sass/components/header.scss +55 -52
  137. package/assets/sass/components/marketing.scss +64 -0
  138. package/assets/sass/components/{nav-global.scss → nav.global.scss} +2 -1
  139. package/assets/sass/components/nav.scss +7 -1
  140. package/assets/sass/components/notification.global.scss +41 -0
  141. package/assets/sass/components/pagination.scss +4 -0
  142. package/assets/sass/components/slider.scss +121 -0
  143. package/assets/sass/components/{table.extras.scss → table.global.scss} +5 -1
  144. package/assets/sass/components/table.scss +1 -1
  145. package/assets/sass/components/tabs.scss +2 -5
  146. package/assets/sass/core.scss +1 -2
  147. package/assets/sass/elements/admin-panel.scss +9 -7
  148. package/assets/sass/elements/badge.scss +29 -0
  149. package/assets/sass/elements/container.scss +17 -0
  150. package/assets/sass/elements/dialog.scss +4 -4
  151. package/assets/sass/elements/forms.scss +142 -14
  152. package/assets/sass/elements/links.scss +2 -1
  153. package/assets/sass/elements/table.element.scss +1 -2
  154. package/assets/sass/error.scss +1 -1
  155. package/assets/sass/foundations/reboot.scss +59 -12
  156. package/assets/sass/foundations/root.scss +11 -3
  157. package/assets/sass/helpers/max-height.scss +78 -4
  158. package/assets/sass/main.scss +0 -1
  159. package/assets/sass/templates/auth.scss +112 -0
  160. package/assets/sass/templates/form.scss +1 -0
  161. package/assets/ts/components/accordion/accordion.component.ts +5 -0
  162. package/assets/ts/components/actionbar/actionbar.component.ts +5 -0
  163. package/assets/ts/components/address-lookup/address-lookup.component.ts +24 -5
  164. package/assets/ts/components/card/card.component.ts +7 -1
  165. package/assets/ts/components/carousel/README.md +39 -0
  166. package/assets/ts/components/carousel/carousel.component.ts +75 -0
  167. package/assets/ts/components/header/header.component.ts +6 -12
  168. package/assets/ts/components/marketing/marketing.component.ts +49 -0
  169. package/assets/ts/components/nav/README.md +2 -13
  170. package/assets/ts/components/nav/nav.component.ts +9 -47
  171. package/assets/ts/components/notification/notification.component.ts +4 -0
  172. package/assets/ts/components/search/search.component.ts +177 -0
  173. package/assets/ts/components/slider/README.md +26 -0
  174. package/assets/ts/components/slider/slider.component.ts +189 -0
  175. package/assets/ts/components/table/table.component.ts +1 -1
  176. package/assets/ts/components/tabs/tabs.component.ts +2 -0
  177. package/assets/ts/dynamic.ts +1 -1
  178. package/assets/ts/modules/carousel.ts +21 -33
  179. package/assets/ts/modules/dynamicEvents.ts +44 -24
  180. package/assets/ts/modules/helpers.ts +8 -2
  181. package/assets/ts/modules/inputs.ts +61 -4
  182. package/assets/ts/modules/table.ts +11 -14
  183. package/assets/ts/modules/tabs.ts +38 -41
  184. package/assets/ts/tests/slider.spec.ts +33 -0
  185. package/dist/components.es.js +893 -1542
  186. package/dist/components.umd.js +328 -161
  187. package/dist/style.css +1 -1
  188. package/package.json +5 -4
  189. package/src/components/Accordion/Accordion.vue +12 -5
  190. package/src/components/Actionbar/Actionbar.vue +12 -5
  191. package/src/components/Card/Card.vue +1 -1
  192. package/src/components/Carousel/Carousel.vue +18 -103
  193. package/src/components/Header/Header.vue +10 -6
  194. package/src/components/Marketing/Marketing.vue +39 -0
  195. package/src/components/Marketing/README.md +20 -0
  196. package/src/components/Nav/Nav.vue +1 -1
  197. package/src/components/Nav/README.md +1 -12
  198. package/src/components/Search/Search.vue +25 -0
  199. package/src/components/Slider/README.md +11 -0
  200. package/src/components/Slider/Slider.vue +25 -0
  201. package/src/components/Tabs/Tabs.vue +14 -5
  202. package/assets/css/components/actionbar-global.css +0 -1
  203. package/assets/css/components/actionbar-global.css.map +0 -1
  204. package/assets/css/components/card-global.css +0 -1
  205. package/assets/css/components/card-global.css.map +0 -1
  206. package/assets/css/components/nav-global.css +0 -1
  207. package/assets/css/components/nav-global.css.map +0 -1
  208. package/src/components/Carousel/Carousel.spec.js +0 -45
@@ -1,16 +1,17 @@
1
1
  /*!
2
- * iamKey v5.0.0
2
+ * iamKey v5.1.0-beta10
3
3
  * Copyright 2022-2023 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Card"});class h extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.querySelector('[class*="fa-"]')&&this.classList.add("card--has-icon");let e=this.classList.toString();const a=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${a}/css/core.min.css`,t=document.createElement("template");t.innerHTML=`
5
5
  <style>
6
6
  @import "${r}";
7
- .card{--card-icon-right: 1rem;box-shadow:var(--card-box-shadow);border-radius:var(--card-border-radius);position:relative;font-weight:bold;font-size:1.125rem;line-height:1.5rem;color:var(--colour-primary);min-height:100%;width:100%;text-align:left;display:block;overflow:hidden;z-index:0;background:var(--colour-canvas-2);outline:var(--contrast-outline-width, 0px) solid var(--colour-primary);outline-offset:-1px}.card.border-0{box-shadow:none;--card-left-padding: 0rem;outline-offset:1px !important}.card__body{position:relative;padding:var(--card-top-padding) var(--card-right-padding) var(--card-bottom-padding) var(--card-left-padding);z-index:-1}.card:before,.card:after{content:"";position:absolute;right:var(--card-icon-right);bottom:var(--card-bottom-padding);height:1.5rem;width:1.5rem;background:var(--colour-warning);border-radius:50%}.card:after{background:var(--colour-primary-theme);mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;z-index:2}.card:is(:hover,:focus,.hover){--card-icon-right: 0.5rem;outline:2px solid var(--colour, var(--colour-primary));outline-offset:-2px}.card:not([class*=colour-]):is(:hover,:focus,.hover):before{background:var(--colour-primary-theme)}.card:not([class*=colour-]):is(:hover,:focus,.hover):after{background:#fff}.card:is(:active,.active){--card-icon-right: 0.5rem;outline:none}.card:is(:active,.active):before{background:var(--colour-warning)}.card:is(:active,.active):after{background:var(--colour-primary)}.card:is(:active){background:#fcfcfc}.card span{display:block;font-weight:bold;padding-top:1.5rem;font-size:1rem}.card:has(.card__illustration) .card__body{align-items:center;display:flex}.card:has(.card__illustration) .card__body .card__illustration{height:4rem;width:4rem;margin-right:1.5rem;margin-top:-1.25rem;margin-bottom:-1.25rem;position:relative}.card:has(.card__illustration) .card__body .card__illustration img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}::slotted(i){font-size:1.5rem !important;margin:-3px var(--card-icon-right) 0 0 !important;font-weight:400 !important;vertical-align:middle !important}::slotted(span){display:block !important;font-weight:normal !important;padding-top:1.5rem !important;font-size:1rem !important}.card[class*=colour-],.card--filter{border-left:0.75rem solid var(--colour, var(--colour-primary))}.card--filter{--top-padding: 1.5rem;--right-padding: 1rem;--bottom-padding: 1.5rem;--left-padding: 1rem}.card--filter:has(.card__total) .card__body{align-items:center;display:flex}.card--filter:before,.card--filter:after{display:none}.card--filter:is(:hover,:focus,.hover){outline:none}.card--filter:is(:hover,:focus,.hover) .card__body{background:#eee}.card--filter:is(:checked,.checked,:active,.active){outline:2px solid var(--colour, var(--colour-primary));outline-offset:-2px}.card--filter:is(:checked,.checked,:active,.active) .card__body{background:none}.card--filter.card--has-icon{--bottom-padding: 1rem;border:none}.card--filter .icon{font-size:1.125rem !important;height:1.125rem !important;margin:0 0 .5rem 0 !important;font-weight:400 !important;display:block !important}.card--filter .card__total{font-size:3rem;line-height:3rem;padding-right:1rem}@media screen and (prefers-color-scheme: dark){.card--filter .card__body{background:none !important}.card--filter:is(:hover,:focus,.hover,:active,.active):not(:checked,.checked){outline:2px solid var(--colour, var(--colour-primary)) !important;outline-offset:-2px}}.card--filter ::slotted(i){display:block !important;font-size:1.125rem !important;margin:0 0 .5rem 0 !important}.card:has(.card__head) .card__head{padding-bottom:0;padding-top:27%;position:relative;overflow:hidden;background:rgba(0,0,0,.1);z-index:-1}.card:has(.card__head) .card__head>img{position:absolute;top:0;left:0;width:102%;height:102%;object-fit:cover}.card.card--lg-image:has(.card__head) .card__head{padding-top:55%}.card:has(.card__footer):after{display:none}.card:has(.card__footer) .card__footer{position:relative;background:#fff;padding:var(--card-top-padding) var(--card-right-padding) var(--card-bottom-padding) var(--card-left-padding);z-index:-1;display:block}:host([data-selected]) .card:before,:host([data-selected]) .card:after{display:none !important}/*# sourceMappingURL=assets/css/components/card.css.map */
7
+ .card{--card-icon-right: 1rem;box-shadow:var(--card-box-shadow);border-radius:var(--card-border-radius);position:relative;font-weight:bold;font-size:1.125rem;line-height:1.5rem;color:var(--colour-primary);min-height:100%;width:100%;text-align:left;display:block;overflow:hidden;z-index:0;background:var(--colour-canvas-2);outline:2px solid var(--colour-canvas-2);outline-offset:-2px}.card.border-0{box-shadow:none;--card-left-padding: 0rem;outline-offset:1px !important}.card__body{position:relative;padding:var(--card-top-padding) var(--card-right-padding) var(--card-bottom-padding) var(--card-left-padding);z-index:-1}.card:before,.card:after{content:"";position:absolute;right:var(--card-icon-right);bottom:var(--card-bottom-padding);height:1.5rem;width:1.5rem;background:var(--colour-warning);border-radius:50%}.card:after{background:var(--colour-primary-theme);mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;z-index:2}.card:is(:hover,:focus,.hover){--card-icon-right: 0.5rem;outline:2px solid var(--colour, var(--colour-primary));outline-offset:-2px}.card:not([class*=colour-]):is(:hover,:focus,.hover):before{background:var(--colour-primary-theme)}.card:not([class*=colour-]):is(:hover,:focus,.hover):after{background:#fff}.card:is(:active,.active){--card-icon-right: 0.5rem;outline:none}.card:is(:active,.active):before{background:var(--colour-warning)}.card:is(:active,.active):after{background:var(--colour-primary)}.card:is(:active){background:#fcfcfc}.card span{display:block;font-weight:bold;padding-top:1.5rem;font-size:1rem}.card:has(.card__illustration) .card__body{align-items:center;display:flex}.card:has(.card__illustration) .card__body .card__illustration{height:4rem;width:4rem;margin-right:1.5rem;margin-top:-1.25rem;margin-bottom:-1.25rem;position:relative}.card:has(.card__illustration) .card__body .card__illustration img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}::slotted(i){font-size:1.5rem !important;margin:-3px var(--card-icon-right) 0 0 !important;font-weight:400 !important;vertical-align:middle !important}::slotted(span:not(.badge)){display:block !important;font-weight:normal !important;padding-top:1.5rem !important;font-size:1rem !important}.card__badges{position:absolute;top:0;right:.25rem;padding:.25rem;z-index:9;text-align:right;width:1}.card__head .card__badges{top:auto;bottom:0;text-align:left;left:.25rem;right:auto}.card[class*=colour-],.card--filter{border-left:0.75rem solid var(--colour, var(--colour-primary))}.card--filter{--top-padding: 1.5rem;--right-padding: 1rem;--bottom-padding: 1.5rem;--left-padding: 1rem}.card--filter:has(.card__total) .card__body{align-items:center;display:flex}.card--filter:before,.card--filter:after{display:none}.card--filter:is(:hover,:focus,.hover){outline:none}.card--filter:is(:hover,:focus,.hover) .card__body{background:#eee}.card--filter:is(:checked,.checked,:active,.active){outline:2px solid var(--colour, var(--colour-primary));outline-offset:-2px}.card--filter:is(:checked,.checked,:active,.active) .card__body{background:none}.card--filter.card--has-icon{--bottom-padding: 1rem;border:none}.card--filter .icon{font-size:1.125rem !important;height:1.125rem !important;margin:0 0 .5rem 0 !important;font-weight:400 !important;display:block !important}.card--filter .card__total{font-size:3rem;line-height:3rem;padding-right:1rem}@media screen and (prefers-color-scheme: dark){.card--filter .card__body{background:none !important}.card--filter:is(:hover,:focus,.hover,:active,.active):not(:checked,.checked){outline:2px solid var(--colour, var(--colour-primary)) !important;outline-offset:-2px}}.card--filter ::slotted(i){display:block !important;font-size:1.125rem !important;margin:0 0 .5rem 0 !important}.card:has(.card__head) .card__head{padding-bottom:0;padding-top:27%;position:relative;overflow:hidden;background:rgba(0,0,0,.1);z-index:-1}.card:has(.card__head) .card__head>img{position:absolute;top:0;left:0;width:102%;height:102%;object-fit:cover}.card.card--lg-image:has(.card__head) .card__head{padding-top:55%}.card:has(.card__footer):after{display:none}.card:has(.card__footer) .card__footer{position:relative;background:#fff;padding:var(--card-top-padding) var(--card-right-padding) var(--card-bottom-padding) var(--card-left-padding);z-index:-1;display:block}:host([data-selected]) .card:before,:host([data-selected]) .card:after{display:none !important}:host(.card--flag){position:relative}:host(.card--flag):after{content:"\uF024";font-family:"Font Awesome 6 Pro";position:absolute;top:1rem;right:1rem;font-size:1rem;line-height:1;height:1rem;width:1rem;display:inline-block;font-weight:normal;color:var(--colour, var(--colour-primary))}/*# sourceMappingURL=assets/css/components/card.css.map */
8
8
 
9
9
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
10
10
  </style>
11
11
  <div class="card ${e}" tabindex="0" role="button">
12
- ${this.hasAttribute("data-image")?`<div class="card__head"><img src="${this.getAttribute("data-image")}" alt="" loading="lazy" /></div>`:""}
12
+ ${this.hasAttribute("data-image")?`<div class="card__head"><img src="${this.getAttribute("data-image")}" alt="" loading="lazy" /><div class="card__badges"><slot name="badges"></slot></div></div>`:""}
13
13
  <div class="card__body">
14
+ ${this.hasAttribute("data-image")?"":'<div class="card__badges"><slot name="badges"></slot></div>'}
14
15
  ${this.classList.contains("card--filter")&&this.hasAttribute("data-total")?`<div class="card__total">${this.getAttribute("data-total")}</div>`:""}
15
16
  ${this.hasAttribute("data-illustration")?`<div class="card__illustration"><img src="${this.getAttribute("data-illustration")}" alt="" loading="lazy" /></div>`:""}
16
17
  <slot></slot>
@@ -19,5 +20,6 @@
19
20
  <slot name="checkbox"></slot>
20
21
  ${this.hasAttribute("data-cta")?`<div class="card__footer"><span class="link">${this.getAttribute("data-cta")}</span></div>`:""}
21
22
  </div>
22
- `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){this.classList.add("loaded");const e=this.parentNode.closest("a, button, label"),a=this.shadowRoot.querySelector(".card");e.setAttribute("tabindex","-1"),e.matches("label[for]")&&(document.getElementById(e.getAttribute("for")).checked?a.classList.add("checked"):a.classList.remove("checked")),this.addEventListener("click",r=>{let t=new Event("click");a.dispatchEvent(t)}),a.addEventListener("click",r=>{if(e.matches("label[for]")){r.stopPropagation(),r.preventDefault();const t=document.getElementById(e.getAttribute("for")),i=t.getAttribute("name"),o=t.getAttribute("id");Array.from(document.querySelectorAll(`[name="${i}"][type="radio"]:not([id="${o}"])`)).forEach((d,n)=>{document.querySelector(`[for="${d.getAttribute("id")}"] iam-card`).dispatchEvent(new Event("inactive"))}),e.click(),t.checked?a.classList.add("checked"):a.classList.remove("checked")}}),this.addEventListener("inactive",r=>{a.classList.remove("checked")}),a.addEventListener("keydown",r=>{switch(r.keyCode){case 32:case 13:if(e.matches("label[for]")){r.stopPropagation(),r.preventDefault();const t=document.getElementById(e.getAttribute("for")),i=t.getAttribute("name"),o=t.getAttribute("id");Array.from(document.querySelectorAll(`[name="${i}"]:not([id="${o}"])`)).forEach((d,n)=>{document.querySelector(`[for="${d.getAttribute("id")}"] iam-card`).dispatchEvent(new Event("inactive"))}),e.click(),t.checked?a.classList.add("checked"):a.classList.remove("checked")}else e.click();break}})}static get observedAttributes(){return["data-total","class"]}attributeChangedCallback(e,a,r){switch(e){case"data-total":{this.shadowRoot.querySelector(".card__total")&&(this.shadowRoot.querySelector(".card__total").innerHTML=r);break}case"class":{let t=this.classList.toString();this.querySelector('[class*="fa-"]')&&(t+=" card--has-icon"),this.shadowRoot.querySelector(".card").setAttribute("class",`card ${t}`);break}}}}export{h as default};
23
+ `,this.shadowRoot.appendChild(t.content.cloneNode(!0)),document.getElementById("cardGlobal")||document.head.insertAdjacentHTML("beforeend",`<style id="cardGlobal">@supports not selector(:has(*)){iam-card{margin-bottom:2rem;display:block}}iam-card>div:has([type=checkbox]){display:contents}iam-card>div:has([type=checkbox])>input:is([type=radio],[type=checkbox])+label{position:absolute !important;top:.5rem;right:.5rem;width:2rem;padding-left:2rem;margin:0.25rem 0.5rem !important;height:2.5rem;overflow:hidden}[data-select-container]:has([type=checkbox]:checked) iam-card>div:has([type=checkbox])>input:is([type=radio],[type=checkbox]){width:100%;height:100%;max-height:100%;max-width:100%;cursor:pointer;pointer-events:all;inset:0;border-radius:0;z-index:10}/*# sourceMappingURL=assets/css/components/card.global.css.map */
24
+ </style>`)}connectedCallback(){this.classList.add("loaded");const e=this.parentNode.closest("a, button, label"),a=this.shadowRoot.querySelector(".card");e.setAttribute("tabindex","-1"),e.matches("label[for]")&&(document.getElementById(e.getAttribute("for")).checked?a.classList.add("checked"):a.classList.remove("checked")),this.addEventListener("click",r=>{let t=new Event("click");a.dispatchEvent(t)}),a.addEventListener("click",r=>{if(e.matches("label[for]")){r.stopPropagation(),r.preventDefault();const t=document.getElementById(e.getAttribute("for")),i=t.getAttribute("name"),o=t.getAttribute("id");Array.from(document.querySelectorAll(`[name="${i}"][type="radio"]:not([id="${o}"])`)).forEach((d,n)=>{document.querySelector(`[for="${d.getAttribute("id")}"] iam-card`).dispatchEvent(new Event("inactive"))}),e.click(),t.checked?a.classList.add("checked"):a.classList.remove("checked")}}),this.addEventListener("inactive",r=>{a.classList.remove("checked")}),a.addEventListener("keydown",r=>{switch(r.keyCode){case 32:case 13:if(e.matches("label[for]")){r.stopPropagation(),r.preventDefault();const t=document.getElementById(e.getAttribute("for")),i=t.getAttribute("name"),o=t.getAttribute("id");Array.from(document.querySelectorAll(`[name="${i}"]:not([id="${o}"])`)).forEach((d,n)=>{document.querySelector(`[for="${d.getAttribute("id")}"] iam-card`).dispatchEvent(new Event("inactive"))}),e.click(),t.checked?a.classList.add("checked"):a.classList.remove("checked")}else e.click();break}})}static get observedAttributes(){return["data-total","class"]}attributeChangedCallback(e,a,r){switch(e){case"data-total":{this.shadowRoot.querySelector(".card__total")&&(this.shadowRoot.querySelector(".card__total").innerHTML=r);break}case"class":{let t=this.classList.toString();this.querySelector('[class*="fa-"]')&&(t+=" card--has-icon"),this.shadowRoot.querySelector(".card").setAttribute("class",`card ${t}`);break}}}}export{h as default};
23
25
  //# sourceMappingURL=card.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.component.min.js","sources":["card.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Card\"\n});\nclass iamCard extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n if (this.querySelector('[class*=\"fa-\"]'))\n this.classList.add('card--has-icon');\n let classList = this.classList.toString();\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/card.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"card ${classList}\" tabindex=\"0\" role=\"button\">\n ${this.hasAttribute('data-image') ? `<div class=\"card__head\"><img src=\"${this.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" /></div>` : ''}\n <div class=\"card__body\">\n ${this.classList.contains('card--filter') && this.hasAttribute('data-total') ? `<div class=\"card__total\">${this.getAttribute('data-total')}</div>` : ''}\n ${this.hasAttribute('data-illustration') ? `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>` : ''}\n <slot></slot>\n </div>\n \n <slot name=\"checkbox\"></slot>\n ${this.hasAttribute('data-cta') ? `<div class=\"card__footer\"><span class=\"link\">${this.getAttribute('data-cta')}</span></div>` : ''}\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n this.classList.add('loaded');\n // Mimic clicking the parent node so the focus and target events can be on the card\n const parentNode = this.parentNode.closest('a, button, label');\n const card = this.shadowRoot.querySelector('.card');\n parentNode.setAttribute('tabindex', '-1');\n if (parentNode.matches('label[for]')) {\n let isChecked = document.getElementById(parentNode.getAttribute('for')).checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n // Click event down\n this.addEventListener('click', (event) => {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n });\n card.addEventListener('click', (event) => {\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n // Mimic radio button functionality\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"][type=\"radio\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n });\n this.addEventListener('inactive', (event) => {\n card.classList.remove('checked');\n });\n card.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n case 32:\n case 13:\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n else {\n parentNode.click();\n }\n break;\n default:\n break;\n }\n });\n }\n static get observedAttributes() {\n return [\"data-total\", \"class\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case \"class\": {\n let classList = this.classList.toString();\n if (this.querySelector('[class*=\"fa-\"]'))\n classList += ' card--has-icon';\n this.shadowRoot.querySelector('.card').setAttribute('class', `card ${classList}`);\n break;\n }\n }\n }\n}\nexport default iamCard;\n"],"names":["iamCard","classList","assetLocation","coreCSS","template","parentNode","card","event","clickEvent","input","inputName","inputID","index","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"card.component.min.js","sources":["card.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Card\"\n});\nclass iamCard extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n if (this.querySelector('[class*=\"fa-\"]'))\n this.classList.add('card--has-icon');\n let classList = this.classList.toString();\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/card.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/card.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"card ${classList}\" tabindex=\"0\" role=\"button\">\n ${this.hasAttribute('data-image') ? `<div class=\"card__head\"><img src=\"${this.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" /><div class=\"card__badges\"><slot name=\"badges\"></slot></div></div>` : ''}\n <div class=\"card__body\">\n ${!this.hasAttribute('data-image') ? `<div class=\"card__badges\"><slot name=\"badges\"></slot></div>` : ''}\n ${this.classList.contains('card--filter') && this.hasAttribute('data-total') ? `<div class=\"card__total\">${this.getAttribute('data-total')}</div>` : ''}\n ${this.hasAttribute('data-illustration') ? `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>` : ''}\n <slot></slot>\n </div>\n \n <slot name=\"checkbox\"></slot>\n ${this.hasAttribute('data-cta') ? `<div class=\"card__footer\"><span class=\"link\">${this.getAttribute('data-cta')}</span></div>` : ''}\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('cardGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"cardGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n this.classList.add('loaded');\n // Mimic clicking the parent node so the focus and target events can be on the card\n const parentNode = this.parentNode.closest('a, button, label');\n const card = this.shadowRoot.querySelector('.card');\n parentNode.setAttribute('tabindex', '-1');\n if (parentNode.matches('label[for]')) {\n let isChecked = document.getElementById(parentNode.getAttribute('for')).checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n // Click event down\n this.addEventListener('click', (event) => {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n });\n card.addEventListener('click', (event) => {\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n // Mimic radio button functionality\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"][type=\"radio\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n });\n this.addEventListener('inactive', (event) => {\n card.classList.remove('checked');\n });\n card.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n case 32:\n case 13:\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n else {\n parentNode.click();\n }\n break;\n default:\n break;\n }\n });\n }\n static get observedAttributes() {\n return [\"data-total\", \"class\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case \"class\": {\n let classList = this.classList.toString();\n if (this.querySelector('[class*=\"fa-\"]'))\n classList += ' card--has-icon';\n this.shadowRoot.querySelector('.card').setAttribute('class', `card ${classList}`);\n break;\n }\n }\n }\n}\nexport default iamCard;\n"],"names":["iamCard","classList","assetLocation","coreCSS","template","parentNode","card","event","clickEvent","input","inputName","inputID","index","attrName","oldVal","newVal"],"mappings":";;;IAEA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,MACf,CAAC,EACD,MAAMA,UAAgB,WAAY,CAC9B,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAC9B,KAAK,cAAc,gBAAgB,GACnC,KAAK,UAAU,IAAI,gBAAgB,EACvC,IAAIC,EAAY,KAAK,UAAU,SAAQ,EACvC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBAGzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA,uBAErDF;AAAA,QACf,KAAK,aAAa,YAAY,EAAI,qCAAqC,KAAK,aAAa,YAAY,+FAAiG;AAAA;AAAA,QAErM,KAAK,aAAa,YAAY,EAAoE,GAAhE;AAAA,QACnC,KAAK,UAAU,SAAS,cAAc,GAAK,KAAK,aAAa,YAAY,EAAI,4BAA4B,KAAK,aAAa,YAAY,UAAY;AAAA,QACnJ,KAAK,aAAa,mBAAmB,EAAI,6CAA6C,KAAK,aAAa,mBAAmB,oCAAsC;AAAA;AAAA;AAAA;AAAA;AAAA,QAKjK,KAAK,aAAa,UAAU,EAAI,gDAAgD,KAAK,aAAa,UAAU,iBAAmB;AAAA;AAAA,MAG/H,KAAK,WAAW,YAAYG,EAAS,QAAQ,UAAU,EAAI,CAAC,EAEvD,SAAS,eAAe,YAAY,GACrC,SAAS,KAAK,mBAAmB,YAAa;AAAA,SAAgD,CACrG,CACD,mBAAoB,CAChB,KAAK,UAAU,IAAI,QAAQ,EAE3B,MAAMC,EAAa,KAAK,WAAW,QAAQ,kBAAkB,EACvDC,EAAO,KAAK,WAAW,cAAc,OAAO,EAClDD,EAAW,aAAa,WAAY,IAAI,EACpCA,EAAW,QAAQ,YAAY,IACf,SAAS,eAAeA,EAAW,aAAa,KAAK,CAAC,EAAE,QAEpEC,EAAK,UAAU,IAAI,SAAS,EAE5BA,EAAK,UAAU,OAAO,SAAS,GAGvC,KAAK,iBAAiB,QAAUC,GAAU,CACtC,IAAIC,EAAa,IAAI,MAAM,OAAO,EAClCF,EAAK,cAAcE,CAAU,CACzC,CAAS,EACDF,EAAK,iBAAiB,QAAUC,GAAU,CACtC,GAAIF,EAAW,QAAQ,YAAY,EAAG,CAClCE,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,MAAME,EAAQ,SAAS,eAAeJ,EAAW,aAAa,KAAK,CAAC,EAC9DK,EAAYD,EAAM,aAAa,MAAM,EACrCE,EAAUF,EAAM,aAAa,IAAI,EAExB,MAAM,KAAK,SAAS,iBAAiB,UAAUC,8BAAsCC,MAAY,CAAC,EAC1G,QAAQ,CAACF,EAAOG,IAAU,CACX,SAAS,cAAc,SAASH,EAAM,aAAa,IAAI,cAAc,EAC7E,cAAc,IAAI,MAAM,UAAU,CAAC,CACjE,CAAiB,EACDJ,EAAW,MAAK,EACAI,EAAM,QAElBH,EAAK,UAAU,IAAI,SAAS,EAE5BA,EAAK,UAAU,OAAO,SAAS,EAEnD,CAAS,EACD,KAAK,iBAAiB,WAAaC,GAAU,CACzCD,EAAK,UAAU,OAAO,SAAS,CAC3C,CAAS,EACDA,EAAK,iBAAiB,UAAYC,GAAU,CACxC,OAAQA,EAAM,QAAO,CACjB,IAAK,IACL,IAAK,IACD,GAAIF,EAAW,QAAQ,YAAY,EAAG,CAClCE,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,MAAME,EAAQ,SAAS,eAAeJ,EAAW,aAAa,KAAK,CAAC,EAC9DK,EAAYD,EAAM,aAAa,MAAM,EACrCE,EAAUF,EAAM,aAAa,IAAI,EACxB,MAAM,KAAK,SAAS,iBAAiB,UAAUC,gBAAwBC,MAAY,CAAC,EAC5F,QAAQ,CAACF,EAAOG,IAAU,CACX,SAAS,cAAc,SAASH,EAAM,aAAa,IAAI,cAAc,EAC7E,cAAc,IAAI,MAAM,UAAU,CAAC,CACzE,CAAyB,EACDJ,EAAW,MAAK,EACAI,EAAM,QAElBH,EAAK,UAAU,IAAI,SAAS,EAE5BA,EAAK,UAAU,OAAO,SAAS,OAGnCD,EAAW,MAAK,EAEpB,KAGP,CACb,CAAS,CACJ,CACD,WAAW,oBAAqB,CAC5B,MAAO,CAAC,aAAc,OAAO,CAChC,CACD,yBAAyBQ,EAAUC,EAAQC,EAAQ,CAC/C,OAAQF,EAAQ,CACZ,IAAK,aAAc,CACX,KAAK,WAAW,cAAc,cAAc,IAC5C,KAAK,WAAW,cAAc,cAAc,EAAE,UAAYE,GAC9D,KACH,CACD,IAAK,QAAS,CACV,IAAId,EAAY,KAAK,UAAU,SAAQ,EACnC,KAAK,cAAc,gBAAgB,IACnCA,GAAa,mBACjB,KAAK,WAAW,cAAc,OAAO,EAAE,aAAa,QAAS,QAAQA,GAAW,EAChF,KACH,CACJ,CACJ,CACL"}
@@ -0,0 +1,61 @@
1
+ // @ts-nocheck
2
+ import carousel from "../../modules/carousel.js";
3
+ // Data layer Web component created
4
+ window.dataLayer = window.dataLayer || [];
5
+ window.dataLayer.push({
6
+ "event": "customElementRegistered",
7
+ "element": "carousel"
8
+ });
9
+ class iamCarousel extends HTMLElement {
10
+ constructor() {
11
+ super();
12
+ this.attachShadow({ mode: 'open' });
13
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
14
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
15
+ const loadCSS = `@import "${assetLocation}/css/components/carousel.css";`;
16
+ const template = document.createElement('template');
17
+ template.innerHTML = `
18
+ <style>
19
+ @import "${coreCSS}";
20
+ ${loadCSS}
21
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
22
+ </style>
23
+ <div class="carousel" :id="'carousel'+id">
24
+ <div class="carousel__wrapper">
25
+ <div class="carousel__inner">
26
+
27
+ <slot></slot>
28
+ </div>
29
+
30
+ <div class="carousel__controls">
31
+
32
+ </div>
33
+
34
+ <button class="btn btn-prev" data-go="0" disabled>Prev</button>
35
+ <button class="btn btn-next" data-go="2">Next</button>
36
+
37
+ </div>
38
+ </div>
39
+ `;
40
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
41
+ }
42
+ connectedCallback() {
43
+ const carouselElement = this.shadowRoot.querySelector('.carousel');
44
+ const row = this.querySelector('.row');
45
+ const carouselControls = this.shadowRoot.querySelector('.carousel__controls');
46
+ let itemCount = this.querySelectorAll(':scope > .row > .col').length;
47
+ carouselElement.setAttribute('data-row-class', row.className);
48
+ if (this.classList.contains('hide-btns'))
49
+ carouselElement.classList.add('hide-btns');
50
+ if (this.classList.contains('hide-controls'))
51
+ carouselElement.classList.add('hide-controls');
52
+ // populate the pips
53
+ let pips = "";
54
+ for (let i = 1; i <= itemCount; i++) {
55
+ pips += `<button class="control-${i}" data-slide="${i}" ${i == 1 ? "aria-current" : ""}>Slide ${i}</button>`;
56
+ }
57
+ carouselControls.innerHTML = pips;
58
+ carousel(carouselElement, row);
59
+ }
60
+ }
61
+ export default iamCarousel;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v5.0.0
2
+ * iamKey v5.1.0-beta10
3
3
  * Copyright 2022-2023 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"collapsible side menu"});class s extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",t=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,n=document.createElement("template");n.innerHTML=`
5
5
  <style class="styles">
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * iamKey v5.0.0
2
+ * iamKey v5.1.0-beta10
3
3
  * Copyright 2022-2023 iamproperty
4
4
  */function h(c,o){const r=o.querySelector(".files"),l=o.querySelector(".drop-area"),t=c.querySelector("input"),u=c.hasAttribute("data-maxsize")?c.getAttribute("data-maxsize"):0,a=t.cloneNode();l.append(a),o.addEventListener("click",e=>{e&&e.target instanceof HTMLElement&&e.target.closest(".btn-primary")&&(e.target.closest(".btn-primary"),(t.hasAttribute("multiple")?a:t).click())}),o.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest(".files button")){const i=new DataTransfer,{files:d}=t,p=e.target.closest(".files button");for(let n=0;n<d.length;n++){const s=d[n];s.name!=p.getAttribute("data-file")&&i.items.add(s)}t.files=i.files;const m=new Event("change");t.dispatchEvent(m)}}),a.addEventListener("change",e=>{if(t.hasAttribute("multiple")){const d=[...t.files,...a.files];let p=[];const m=new DataTransfer;for(let n=0;n<d.length;n++){const s=d[n],f=s.size/1e3;!p.includes(s.name)&&(u==0||f<u)&&m.items.add(s),p.push(s.name)}t.files=m.files}else t.files=a.files;const i=new Event("change");t.dispatchEvent(i)}),a.addEventListener("dragenter",e=>{a.classList.add("focus")}),a.addEventListener("dragleave",e=>{a.classList.remove("focus")}),a.addEventListener("drop",e=>{a.classList.remove("focus")}),t.addEventListener("change",e=>{r.innerHTML="";for(const i of t.files)r.innerHTML+=`<span class="file">${i.name} <button data-file="${i.name}">Remove</button></span>`})}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"fileupload"});class b extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const o=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${o}/css/core.min.css`,l=document.createElement("template");l.innerHTML=`
5
5
  <style>
6
6
  @import "${r}";
7
- .file-upload{max-width:25rem !important;padding-bottom:1rem}.file-upload .drop-area>input{display:none}.file-upload .file-upload__title{margin-top:0;margin-bottom:0;font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);clear:both;display:block;padding-bottom:2rem;font-size:1.5rem;line-height:2rem;padding-bottom:2rem;max-width:var(--content-max-width)}.file-upload .helper-text{max-width:16.875rem}.files span{display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);border:2px solid var(--colour-primary-theme);appearance:none;border-radius:0.5rem;margin-bottom:1rem;color:var(--colour-primary);border-color:#d8d8d8;background:#d8d8d8;max-width:25rem !important;position:relative}@media screen and (prefers-color-scheme: dark){.files span{background:var(--colour-canvas-2);border-color:var(--colour-canvas-2);color:var(--colour-white)}}@media(forced-colors: active){.files span{padding-right:5rem}.files span button{padding:0;width:3.7rem !important;text-indent:0% !important}.files span button:after{display:none !important}}.files span button{position:absolute;top:calc(50% - 0.5625rem);right:0.875rem;z-index:var(--index-floating);text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0)}.files span button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(.fileupload--drag-drop) .file-upload{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .helper-text{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .drop-area>input{display:block;min-height:12.5rem;border:2px dashed var(--colour-primary-theme);color:rgba(0,0,0,0);position:relative;padding:1.5rem 2rem 1.5rem 2rem;user-select:none;max-width:100%;min-width:100%}:host(.fileupload--drag-drop) .file-upload .drop-area>input.focus{border:2px solid var(--colour-info)}:host(.fileupload--drag-drop) .file-upload .drop-area{position:relative}:host(.fileupload--drag-drop) .file-upload .drop-area::before{content:"Drag and drop files here or click to upload";position:absolute;inset:1.5rem 2rem 1.5rem 2rem;z-index:1;pointer-events:none}:host(.fileupload--drag-drop) .file-upload ::file-selector-button{position:absolute;inset:0;opacity:0}/*# sourceMappingURL=assets/css/components/fileupload.css.map */
7
+ .file-upload{max-width:25rem !important;padding-bottom:1rem}.file-upload .drop-area>input{display:none}.file-upload .file-upload__title{margin-top:0;margin-bottom:0;font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);clear:both;display:block;padding-bottom:2rem;font-size:1.5rem;line-height:2rem;padding-bottom:2rem;max-width:var(--content-max-width)}.file-upload .helper-text{max-width:16.875rem}.files span{display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);border:2px solid var(--colour-primary-theme);appearance:none;border-radius:0.5rem;margin-bottom:1rem;color:var(--colour-primary);border-color:#d8d8d8;background:#d8d8d8;max-width:25rem !important;position:relative}@media screen and (prefers-color-scheme: dark){.files span{background:var(--colour-canvas-2);border-color:var(--colour-canvas-2);color:var(--colour-body)}}@media(forced-colors: active){.files span{padding-right:5rem}.files span button{padding:0;width:3.7rem !important;text-indent:0% !important}.files span button:after{display:none !important}}.files span button{position:absolute;top:calc(50% - 0.5625rem);right:0.875rem;z-index:var(--index-floating);text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0)}.files span button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(.fileupload--drag-drop) .file-upload{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .helper-text{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .drop-area>input{display:block;min-height:12.5rem;border:2px dashed var(--colour-primary-theme);color:rgba(0,0,0,0);position:relative;padding:1.5rem 2rem 1.5rem 2rem;user-select:none;max-width:100%;min-width:100%}:host(.fileupload--drag-drop) .file-upload .drop-area>input.focus{border:2px solid var(--colour-info)}:host(.fileupload--drag-drop) .file-upload .drop-area{position:relative}:host(.fileupload--drag-drop) .file-upload .drop-area::before{content:"Drag and drop files here or click to upload";position:absolute;inset:1.5rem 2rem 1.5rem 2rem;z-index:1;pointer-events:none}:host(.fileupload--drag-drop) .file-upload ::file-selector-button{position:absolute;inset:0;opacity:0}/*# sourceMappingURL=assets/css/components/fileupload.css.map */
8
8
 
9
9
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
10
10
  </style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v5.0.0
2
+ * iamKey v5.1.0-beta10
3
3
  * Copyright 2022-2023 iamproperty
4
4
  */function r(s,t){n(s,t)}function n(s,t){var e;t.addEventListener("keyup",a=>{clearTimeout(e),e=setTimeout(function(){o(s,t.value)},500)}),t.addEventListener("change",a=>{clearTimeout(e),o(s,t.value)})}const o=function(s,t){Array.from(s.querySelectorAll(":scope > li")).forEach((e,a)=>{let i=e.textContent.toLowerCase();e.classList.add("d-none"),i.includes(t.toLowerCase())&&e.classList.remove("d-none")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Filtered list",value:t})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"filterlist"});class l extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const t=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${t}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
5
5
  <style>
@@ -20,28 +20,22 @@ class iamHeader extends HTMLElement {
20
20
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
21
21
  </style>
22
22
  <div class="header-banner">
23
- <div class="container" part="container">
24
- <slot name="breadcrumb"></slot>
25
- <div class="header-banner__inner">
26
- <slot></slot>
27
- </div>
28
- </div>
29
23
  <picture>
30
- <!-- Actual image only loaded on desktops -->
31
- <source srcset="" media="(min-width: 62em)">
32
- <!-- Placeholder image -->
33
24
  <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" lazy="" />
34
25
  </picture>
26
+ <div class="container">
27
+ <slot></slot>
28
+ </div>
35
29
  </div>
36
30
  `;
37
31
  this.shadowRoot.appendChild(template.content.cloneNode(true));
38
32
  }
39
33
  connectedCallback() {
40
- this.classList.add('loaded');
34
+ this.classList.add('bg-primary');
41
35
  const picture = this.shadowRoot.querySelector('picture');
42
- const source = this.shadowRoot.querySelector('picture source');
36
+ const source = this.shadowRoot.querySelector('picture img');
43
37
  if (this.hasAttribute('image'))
44
- source.setAttribute('srcset', this.getAttribute('image'));
38
+ source.setAttribute('src', this.getAttribute('image'));
45
39
  else
46
40
  picture.remove();
47
41
  }
@@ -1,26 +1,20 @@
1
1
  /*!
2
- * iamKey v5.0.0
2
+ * iamKey v5.1.0-beta10
3
3
  * Copyright 2022-2023 iamproperty
4
- */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"header"});class t extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,o=document.createElement("template");o.innerHTML=`
4
+ */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"header"});class o extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const t=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${t}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
5
5
  <style>
6
- @import "${r}";
7
- .header-banner{background:linear-gradient(180deg, var(--colour-secondary) 0, var(--colour-info) 100%);margin-bottom:2rem;position:relative;overflow:hidden;max-width:100% !important}@media screen and (min-width: 62em){.header-banner{min-height:29.375rem}}.header-banner>.container{padding-bottom:0;position:relative}.header-banner .breadcrumb{margin-top:1.5rem;margin-bottom:-0.5rem}@media screen and (min-width: 62em){.header-banner .breadcrumb{position:absolute;top:0;left:3.75rem}}.header-banner__inner{--colour-muted: #9d9d9d;--colour-body: #595959;--colour-border: #D8D8D8;--colour-link: var(--colour-primary-theme);--colour-brand: var(--colour-primary-theme);--colour-underline: var(--colour-secondary);--colour-heading: var(--colour-primary);--colour-focus: var(--colour-primary-theme);--colour-hover: var(--colour-primary-theme);--colour-active: var(--colour-primary-theme);--colour-selected: var(--colour-info);--colour-inverted: #FCFCFC;--colour-btn: var(--colour-primary-theme);--colour-btn-bg: var(--colour-warning);--colour-btn-border: var(--colour-warning);--colour-btn-bg-hover: transparent;--colour-btn-hover: var(--colour-primary-theme);--colour-btn-secondary: var(--colour-primary-theme);--colour-btn-secondary-border: var(--colour-primary-theme);--colour-btn-secondary-bg: transparent;--colour-btn-secondary-bg-hover: var(--colour-primary-theme);--colour-btn-secondary-hover: var(--colour-inverted);--colour-canvas-2: white;--colour-btn-action-hover-bg: var(--colour-light);color:var(--colour-body);background:#fff;padding:2rem;margin:1.875rem 0;position:relative;z-index:var(--index-above)}.header-banner__inner .text-primary{color:var(--colour-primary) !important}@media screen and (min-width: 62em){.header-banner__inner{max-width:37.5rem;margin:7rem 0 5rem 0;padding:3.5rem 4rem}}.header-banner__inner>*:last-child{padding-bottom:0;margin-bottom:0}.header-banner picture img{display:none}@media screen and (min-width: 62em){.header-banner picture img{display:block;position:absolute;top:-0.5%;left:40%;height:101%;object-fit:cover;width:60%;pointer-events:none}}::slotted(.breadcrumb){margin-top:1.5rem !important;margin-bottom:-0.5rem !important}@media screen and (min-width: 62em){::slotted(.breadcrumb){position:absolute !important;top:0 !important;left:5.25rem !important}}::slotted(*:last-child){padding-bottom:0 !important;margin-bottom:0 !important}/*# sourceMappingURL=assets/css/components/header.css.map */
6
+ @import "${e}";
7
+ :host{padding-top:0 !important;margin-bottom:2rem;background-color:rgba(0,0,0,0) !important}.header-banner{padding-top:2.75rem;max-width:120rem;min-height:25rem;margin-inline:auto;display:block;position:relative;height:auto}@media screen and (min-width: 62em){.header-banner{padding-top:5.25rem}}.header-banner>picture{display:block;position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none;overflow:hidden;min-height:25rem;max-height:25rem}.header-banner>picture:after{content:"";display:block;position:absolute;z-index:-1;inset:0;background:linear-gradient(300deg, rgb(30, 190, 230) 0%, rgb(0, 49, 60) 100%);opacity:.85}.header-banner>picture img{display:block;position:absolute;z-index:-2;inset:0;object-fit:cover;object-position:50% 50%;width:100%;height:100%}::slotted(.breadcrumb){margin-top:1.5rem !important;margin-bottom:-0.5rem !important}@media screen and (min-width: 62em){::slotted(.breadcrumb){position:absolute !important;top:0 !important;left:5.25rem !important}}::slotted(*:last-child){padding-bottom:0 !important;margin-bottom:0 !important}/*# sourceMappingURL=assets/css/components/header.css.map */
8
8
 
9
9
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
10
10
  </style>
11
11
  <div class="header-banner">
12
- <div class="container" part="container">
13
- <slot name="breadcrumb"></slot>
14
- <div class="header-banner__inner">
15
- <slot></slot>
16
- </div>
17
- </div>
18
12
  <picture>
19
- <!-- Actual image only loaded on desktops -->
20
- <source srcset="" media="(min-width: 62em)">
21
- <!-- Placeholder image -->
22
13
  <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" lazy="" />
23
14
  </picture>
15
+ <div class="container">
16
+ <slot></slot>
17
+ </div>
24
18
  </div>
25
- `,this.shadowRoot.appendChild(o.content.cloneNode(!0))}connectedCallback(){this.classList.add("loaded");const e=this.shadowRoot.querySelector("picture"),r=this.shadowRoot.querySelector("picture source");this.hasAttribute("image")?r.setAttribute("srcset",this.getAttribute("image")):e.remove()}}export{t as default};
19
+ `,this.shadowRoot.appendChild(a.content.cloneNode(!0))}connectedCallback(){this.classList.add("bg-primary");const t=this.shadowRoot.querySelector("picture"),e=this.shadowRoot.querySelector("picture img");this.hasAttribute("image")?e.setAttribute("src",this.getAttribute("image")):t.remove()}}export{o as default};
26
20
  //# sourceMappingURL=header.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.component.min.js","sources":["header.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"header\"\n});\nclass iamHeader extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/header.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"header-banner\">\n <div class=\"container\" part=\"container\">\n <slot name=\"breadcrumb\"></slot>\n <div class=\"header-banner__inner\">\n <slot></slot>\n </div>\n </div>\n <picture>\n <!-- Actual image only loaded on desktops -->\n <source srcset=\"\" media=\"(min-width: 62em)\">\n <!-- Placeholder image -->\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"\" lazy=\"\" />\n </picture>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n this.classList.add('loaded');\n const picture = this.shadowRoot.querySelector('picture');\n const source = this.shadowRoot.querySelector('picture source');\n if (this.hasAttribute('image'))\n source.setAttribute('srcset', this.getAttribute('image'));\n else\n picture.remove();\n }\n}\nexport default iamHeader;\n"],"names":["iamHeader","assetLocation","coreCSS","template","picture","source"],"mappings":";;;IAEA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,QACf,CAAC,EACD,MAAMA,UAAkB,WAAY,CAChC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBAEzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,KAAK,UAAU,IAAI,QAAQ,EAC3B,MAAMC,EAAU,KAAK,WAAW,cAAc,SAAS,EACjDC,EAAS,KAAK,WAAW,cAAc,gBAAgB,EACzD,KAAK,aAAa,OAAO,EACzBA,EAAO,aAAa,SAAU,KAAK,aAAa,OAAO,CAAC,EAExDD,EAAQ,OAAM,CACrB,CACL"}
1
+ {"version":3,"file":"header.component.min.js","sources":["header.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"header\"\n});\nclass iamHeader extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/header.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"header-banner\">\n <picture>\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"\" lazy=\"\" />\n </picture>\n <div class=\"container\">\n <slot></slot>\n </div>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n this.classList.add('bg-primary');\n const picture = this.shadowRoot.querySelector('picture');\n const source = this.shadowRoot.querySelector('picture img');\n if (this.hasAttribute('image'))\n source.setAttribute('src', this.getAttribute('image'));\n else\n picture.remove();\n }\n}\nexport default iamHeader;\n"],"names":["iamHeader","assetLocation","coreCSS","template","picture","source"],"mappings":";;;IAEA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,QACf,CAAC,EACD,MAAMA,UAAkB,WAAY,CAChC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBAEzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,KAAK,UAAU,IAAI,YAAY,EAC/B,MAAMC,EAAU,KAAK,WAAW,cAAc,SAAS,EACjDC,EAAS,KAAK,WAAW,cAAc,aAAa,EACtD,KAAK,aAAa,OAAO,EACzBA,EAAO,aAAa,MAAO,KAAK,aAAa,OAAO,CAAC,EAErDD,EAAQ,OAAM,CACrB,CACL"}
@@ -0,0 +1,37 @@
1
+ // @ts-nocheck
2
+ // Data layer Web component created
3
+ window.dataLayer = window.dataLayer || [];
4
+ window.dataLayer.push({
5
+ "event": "customElementRegistered",
6
+ "element": "Marketing"
7
+ });
8
+ class iamMarketing extends HTMLElement {
9
+ constructor() {
10
+ super();
11
+ this.attachShadow({ mode: 'open' });
12
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
13
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
14
+ const loadCSS = `@import "${assetLocation}/css/components/marketing.css";`;
15
+ const template = document.createElement('template');
16
+ template.innerHTML = `
17
+ <style>
18
+ @import "${coreCSS}";
19
+ ${loadCSS}
20
+
21
+ </style>
22
+ <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
23
+ <div class="marketing">
24
+
25
+ <slot></slot>
26
+ </div>
27
+ `;
28
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
29
+ }
30
+ connectedCallback() {
31
+ this.classList.add('invert-colours');
32
+ if (this.hasAttribute('data-img')) {
33
+ this.shadowRoot.querySelector('.marketing').insertAdjacentHTML('afterbegin', `<figure><img src="${this.getAttribute('data-img')}" alt="" /></figure>`);
34
+ }
35
+ }
36
+ }
37
+ export default iamMarketing;
@@ -12,6 +12,7 @@ class iamNav extends HTMLElement {
12
12
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
13
13
  const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
14
14
  const loadCSS = `@import "${assetLocation}/css/components/nav.css";`;
15
+ const loadExtraCSS = `@import "${assetLocation}/css/components/nav.global.css";`;
15
16
  const template = document.createElement('template');
16
17
  template.innerHTML = `
17
18
  <style class="styles">
@@ -42,10 +43,12 @@ class iamNav extends HTMLElement {
42
43
  <slot name="menus"></slot>
43
44
  </div>
44
45
  </div>
45
- <div class="lists"></div>
46
46
  <div class="backdrop" part="backdrop"></div>
47
47
  `;
48
48
  shadowRoot.appendChild(template.content.cloneNode(true));
49
+ // insert extra CSS
50
+ if (!document.getElementById('navGlobal'))
51
+ document.head.insertAdjacentHTML('beforeend', `<style id="navGlobal">${loadExtraCSS}</style>`);
49
52
  }
50
53
  connectedCallback() {
51
54
  // Load external CSS if needed
@@ -225,30 +228,26 @@ class iamNav extends HTMLElement {
225
228
  containerDiv.setAttribute('data-title', summary.textContent);
226
229
  });
227
230
  // Search
228
- if (this.hasAttribute('data-search')) {
231
+ if (this.querySelector('[slot="search"]')) {
229
232
  menu.classList.add('has-search');
230
233
  let searchWrapper = this.shadowRoot.querySelector('#search-wrapper');
231
234
  searchWrapper.classList.remove('d-none');
232
235
  searchWrapper.insertAdjacentHTML('afterbegin', `<button class="btn btn-secondary btn-compact fa-search me-0 mb-0" id="search-button" aria-controls="search-dialog">Open Search field</button>
233
236
  <dialog id="search-dialog">
234
237
  <div class="container">
235
- <form action="${this.hasAttribute('data-search') ? this.getAttribute('data-search') : ''}" class="row" id="search-form">
238
+ <div class="row">
236
239
  <div class="col mb-0 ms-auto col-md-7">
237
- <label for="search" class="visually-hidden">Search</label>
238
- <button class="suffix me-0 mb-0"><i class="fa-regular fa-search"></i></button>
239
- <input type="search" class="" id="search" name="search" required="" autocomplete="off" data-list="${this.hasAttribute('data-list') ? this.getAttribute('data-list') : ''}" />
240
+ <slot name="search"></slot>
240
241
  </div>
241
242
  <div class="col d-none d-md-block mw-fit-content ms-3">
242
243
  <button class="btn btn-compact btn-secondary fa-xmark-large m-0 mb-0" type="button" id="search-close">Close search field</button>
243
244
  </div>
244
- </form>
245
+ </div>
245
246
  </div>
246
247
  </dialog>`);
247
248
  let searchButton = this.shadowRoot.querySelector('#search-button');
248
249
  let searchClose = this.shadowRoot.querySelector('#search-close');
249
250
  let searchDialog = this.shadowRoot.querySelector('#search-dialog');
250
- let searchInput = this.shadowRoot.querySelector('#search');
251
- let searchForm = this.shadowRoot.querySelector('#search-form');
252
251
  if (this.hasAttribute('data-search-open')) {
253
252
  searchDialog.setAttribute('open', 'open');
254
253
  this.classList.add('search-open');
@@ -264,33 +263,6 @@ class iamNav extends HTMLElement {
264
263
  this.classList.remove('search-open');
265
264
  searchButton.removeAttribute('aria-expanded');
266
265
  });
267
- // Search events
268
- searchInput.addEventListener('keydown', (event) => {
269
- const keyupEvent = new CustomEvent("search-keydown", { detail: { search: searchInput.value } });
270
- this.dispatchEvent(keyupEvent);
271
- });
272
- searchInput.addEventListener('keyup', (event) => {
273
- if (searchInput.value.length >= 3 && searchInput.hasAttribute('data-list'))
274
- searchInput.setAttribute("list", searchInput.getAttribute('data-list'));
275
- else
276
- searchInput.removeAttribute("list");
277
- const keyupEvent = new CustomEvent("search-keyup", { detail: { search: searchInput.value } });
278
- this.dispatchEvent(keyupEvent);
279
- });
280
- searchInput.addEventListener('change', (event) => {
281
- const changeEvent = new CustomEvent("search-change", { detail: { search: searchInput.value } });
282
- this.dispatchEvent(changeEvent);
283
- });
284
- searchForm.addEventListener('submit', (event) => {
285
- if (this.hasAttribute('data-prevent-search'))
286
- event.preventDefault();
287
- const submitEvent = new CustomEvent("search-submit", { detail: { search: searchInput.value } });
288
- this.dispatchEvent(submitEvent);
289
- });
290
- // Make sure any child lists are available to the search input
291
- this.querySelectorAll('datalist').forEach((list) => {
292
- iamNav.shadowRoot.querySelector('.lists').insertAdjacentElement('beforeend', list);
293
- });
294
266
  }
295
267
  }
296
268
  }