@iamproperty/components 7.5.1--beta6 → 7.5.1--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 (187) 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/applied-filters.css +1 -1
  6. package/assets/css/components/applied-filters.css.map +1 -1
  7. package/assets/css/components/calendar.component.css +1 -1
  8. package/assets/css/components/calendar.component.css.map +1 -1
  9. package/assets/css/components/card.component.css +1 -1
  10. package/assets/css/components/card.component.css.map +1 -1
  11. package/assets/css/components/fileupload.css +1 -1
  12. package/assets/css/components/fileupload.css.map +1 -1
  13. package/assets/css/components/input-range.component.css +1 -0
  14. package/assets/css/components/input-range.component.css.map +1 -0
  15. package/assets/css/components/input.component.css +1 -0
  16. package/assets/css/components/input.component.css.map +1 -0
  17. package/assets/css/components/modal.component.css +1 -0
  18. package/assets/css/components/modal.component.css.map +1 -0
  19. package/assets/css/components/multi-step-modal.component.css +1 -0
  20. package/assets/css/components/multi-step-modal.component.css.map +1 -0
  21. package/assets/css/components/multi-step-modal.global.css +1 -0
  22. package/assets/css/components/multi-step-modal.global.css.map +1 -0
  23. package/assets/css/components/multiselect.css +1 -1
  24. package/assets/css/components/multiselect.css.map +1 -1
  25. package/assets/css/components/nav.component.css +1 -1
  26. package/assets/css/components/nav.component.css.map +1 -1
  27. package/assets/css/components/pagination.css +1 -1
  28. package/assets/css/components/pagination.css.map +1 -1
  29. package/assets/css/components/password.component.css +1 -0
  30. package/assets/css/components/password.component.css.map +1 -0
  31. package/assets/css/components/slider.css +1 -1
  32. package/assets/css/components/slider.css.map +1 -1
  33. package/assets/css/components/tabs.component.css +1 -1
  34. package/assets/css/components/tabs.component.css.map +1 -1
  35. package/assets/css/components/tabs.config.css +1 -1
  36. package/assets/css/components/tabs.config.css.map +1 -1
  37. package/assets/css/core.min.css +1 -1
  38. package/assets/css/core.min.css.map +1 -1
  39. package/assets/css/mobile-core.min.css +1 -1
  40. package/assets/css/mobile-core.min.css.map +1 -1
  41. package/assets/css/mobile.min.css +1 -1
  42. package/assets/css/mobile.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/js/components/accordion/accordion.component.js +1 -1
  46. package/assets/js/components/accordion/accordion.component.min.js +3 -3
  47. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  48. package/assets/js/components/actionbar/actionbar.component.js +2 -4
  49. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  50. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  51. package/assets/js/components/address-lookup/address-lookup.component.js +45 -0
  52. package/assets/js/components/address-lookup/address-lookup.component.min.js +12 -4
  53. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  54. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  55. package/assets/js/components/applied-filters/applied-filters.component.js +0 -2
  56. package/assets/js/components/applied-filters/applied-filters.component.min.js +5 -7
  57. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  58. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  59. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  60. package/assets/js/components/calendar/calendar.component.min.js +5 -5
  61. package/assets/js/components/card/card.component.min.js +8 -8
  62. package/assets/js/components/card/card.component.min.js.map +1 -1
  63. package/assets/js/components/carousel/carousel.component.min.js +1 -1
  64. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  65. package/assets/js/components/content/content.component.min.js +1 -1
  66. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  67. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  68. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  69. package/assets/js/components/filter-card/filter-card.component.js +19 -0
  70. package/assets/js/components/filter-card/filter-card.component.min.js +4 -4
  71. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  72. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  73. package/assets/js/components/header/header.component.min.js +1 -1
  74. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  75. package/assets/js/components/input/input.component.js +128 -0
  76. package/assets/js/components/input/input.component.min.js +16 -0
  77. package/assets/js/components/input/input.component.min.js.map +1 -0
  78. package/assets/js/components/input-range/input-range.component.js +62 -0
  79. package/assets/js/components/input-range/input-range.component.min.js +14 -0
  80. package/assets/js/components/input-range/input-range.component.min.js.map +1 -0
  81. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  82. package/assets/js/components/menu/menu.component.min.js +1 -1
  83. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  84. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  85. package/assets/js/components/modal/modal.component.js +141 -0
  86. package/assets/js/components/modal/modal.component.min.js +28 -0
  87. package/assets/js/components/modal/modal.component.min.js.map +1 -0
  88. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  89. package/assets/js/components/multi-step-modal/multi-step-modal.component.js +233 -0
  90. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +17 -0
  91. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -0
  92. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  93. package/assets/js/components/nav/nav.component.min.js +5 -5
  94. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  95. package/assets/js/components/notification/notification.component.min.js +1 -1
  96. package/assets/js/components/pagination/pagination.component.min.js +3 -3
  97. package/assets/js/components/password/password.component.js +93 -0
  98. package/assets/js/components/password/password.component.min.js +17 -0
  99. package/assets/js/components/password/password.component.min.js.map +1 -0
  100. package/assets/js/components/rank/rank.component.min.js +1 -1
  101. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  102. package/assets/js/components/record-card/record-card.component.min.js +4 -4
  103. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  104. package/assets/js/components/search/search.component.min.js +1 -1
  105. package/assets/js/components/slider/slider.component.min.js +3 -3
  106. package/assets/js/components/split-button/split-button.component.min.js +1 -1
  107. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +2 -0
  108. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +18 -8
  109. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  110. package/assets/js/components/table/table.component.min.js +3 -3
  111. package/assets/js/components/table/table.component.min.js.map +1 -1
  112. package/assets/js/components/table-ajax/table-ajax.component.min.js +4 -4
  113. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  114. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  115. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  116. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  117. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  118. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  119. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  120. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  121. package/assets/js/components/video-card/video-card.component.min.js +4 -4
  122. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  123. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  124. package/assets/js/modules/applied-filters.js +78 -61
  125. package/assets/js/modules/card.module.js +6 -1
  126. package/assets/js/modules/dialogs.js +6 -2
  127. package/assets/js/modules/password.js +72 -0
  128. package/assets/js/modules/table.js +10 -6
  129. package/assets/js/scripts.bundle.js +2 -3
  130. package/assets/js/scripts.bundle.js.map +1 -1
  131. package/assets/js/scripts.bundle.min.js +2 -2
  132. package/assets/js/scripts.bundle.min.js.map +1 -1
  133. package/assets/js/scripts.js +0 -2
  134. package/assets/sass/_components.scss +2 -0
  135. package/assets/sass/_elements.scss +2 -0
  136. package/assets/sass/components/actionbar.component.scss +1 -0
  137. package/assets/sass/components/address-lookup.component.scss +20 -0
  138. package/assets/sass/components/applied-filters.scss +10 -14
  139. package/assets/sass/components/input-range.component.scss +38 -0
  140. package/assets/sass/components/input.component.scss +102 -0
  141. package/assets/sass/components/modal.component.scss +269 -0
  142. package/assets/sass/components/multi-step-modal.component.scss +255 -0
  143. package/assets/sass/components/multi-step-modal.global.scss +92 -0
  144. package/assets/sass/components/password.component.scss +60 -0
  145. package/assets/sass/components/tabs.config.scss +2 -2
  146. package/assets/sass/elements/badge-tag.scss +0 -1
  147. package/assets/sass/elements/details.scss +12 -7
  148. package/assets/sass/elements/dialog.scss +46 -5
  149. package/assets/sass/elements/forms.scss +41 -177
  150. package/assets/sass/elements/hr.scss +1 -1
  151. package/assets/sass/elements/modal.scss +19 -21
  152. package/assets/sass/elements/prefix.scss +115 -0
  153. package/assets/ts/components/accordion/accordion.component.ts +1 -1
  154. package/assets/ts/components/actionbar/actionbar.component.ts +3 -10
  155. package/assets/ts/components/address-lookup/address-lookup.component.ts +60 -0
  156. package/assets/ts/components/applied-filters/applied-filters.component.ts +0 -2
  157. package/assets/ts/components/filter-card/filter-card.component.ts +27 -0
  158. package/assets/ts/components/input/input.component.ts +168 -0
  159. package/assets/ts/components/input-range/input-range.component.ts +78 -0
  160. package/assets/ts/components/modal/modal.component.ts +188 -0
  161. package/assets/ts/components/multi-step-modal/multi-step-modal.component.ts +304 -0
  162. package/assets/ts/components/password/password.component.ts +118 -0
  163. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +2 -1
  164. package/assets/ts/modules/applied-filters.ts +107 -71
  165. package/assets/ts/modules/card.module.ts +9 -4
  166. package/assets/ts/modules/dialogs.ts +6 -2
  167. package/assets/ts/modules/password.ts +82 -0
  168. package/assets/ts/modules/table.ts +13 -6
  169. package/assets/ts/scripts.ts +2 -2
  170. package/dist/components.es.js +641 -959
  171. package/dist/components.umd.js +275 -182
  172. package/package.json +2 -2
  173. package/src/components/Input/Input.vue +19 -363
  174. package/src/components/InputRange/InputRange.vue +22 -0
  175. package/src/components/Modal/Modal.vue +22 -0
  176. package/src/components/MultiStepModal/MultiStepModal.vue +23 -0
  177. package/src/components/{PasswordIndicator/PasswordIndicator.vue → Password/Password.vue} +23 -23
  178. package/assets/js/components/password-indicator/password-indicator.component.js +0 -19
  179. package/assets/js/components/password-indicator/password-indicator.component.min.js +0 -7
  180. package/assets/js/components/password-indicator/password-indicator.component.min.js.map +0 -1
  181. package/assets/js/modules/form.js +0 -125
  182. package/assets/js/modules/inputs.js +0 -151
  183. package/assets/js/modules/password-indicator.js +0 -21
  184. package/assets/ts/components/password-indicator/password-indicator.component.ts +0 -24
  185. package/assets/ts/modules/form.ts +0 -166
  186. package/assets/ts/modules/inputs.ts +0 -181
  187. package/assets/ts/modules/password-indicator.ts +0 -29
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * iamKey v7.5.1--beta6
2
+ * iamKey v7.5.1--beta7
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const k=(t,a,i,n)=>{const r=Math.tan(.375*Math.PI),s=window.innerWidth||document.body.clientWidth,o=Math.max(1,Math.floor(.01*s)),d=i-t,e=n-a,c=Math.abs(d/e),l=Math.abs(e/d);if(Math.abs(d)>o||Math.abs(e)>o){if(l<=r)return d<0?"left":"right";if(c<=r)return e<0?"top":"bottom"}else return"tap"},w=function(t){const a=t.querySelectorAll(":scope > details, :scope > a");let i=t.querySelector(":scope > .tabs__links"),n=t.querySelector(":scope .tabs__dropdown");if(t.shadowRoot&&t.shadowRoot.querySelector(".tabs__links")&&(i=t.shadowRoot.querySelector(".tabs__links")),!i){i=document.createElement("div"),i.classList.add("tabs__links");const s=document.createElement("div");s.classList.add("tabs__links__wrapper"),s.prepend(i),t.prepend(s)}n||(n=document.createElement("select"),n.classList.add("tabs__dropdown"),t.prepend(n));let r=0;a.forEach(s=>{let o=document.createElement("button");const d=document.createElement("option");if(s.matches("details")){const e=s.querySelector(":scope > summary"),c=e.classList.contains("disabled");e.classList.add("visually-hidden"),s.hasAttribute("id")&&o.setAttribute("data-id",`${s.getAttribute("id")}`),s.hasAttribute("open")&&o.setAttribute("aria-pressed",!0),o.innerHTML=`${e.innerText}`,o.classList.add("link"),o.setAttribute("data-index",r),o.setAttribute("part","tab-link"),d.innerHTML=`${e.innerText}`,d.value=e.innerText.replace(/\s+/g,"-").toLowerCase(),d.setAttribute("data-index",r),s.setAttribute("tabindex","-1"),c&&o.classList.add("disabled"),r++}else s.matches("a")&&(o=s);o.classList.add("link"),i.appendChild(o),n.appendChild(d)})},y=function(t){const a=t.querySelectorAll(":scope > details"),i=t.querySelectorAll(":scope > details > summary");let n=t.querySelector(":scope .tabs__links"),r=t.querySelectorAll(":scope .tabs__links > button");const s=t.querySelector(":scope .tabs__dropdown");let o=t.querySelector(":scope .tabs__next"),d;if(window.isClicked=!1,window.isScrolling=!1,t.shadowRoot&&(r=t.shadowRoot.querySelectorAll(".tabs__links > button"),n=t.shadowRoot.querySelector(".tabs__links"),o=t.shadowRoot.querySelector(".tabs__next")),r.forEach(e=>{e.addEventListener("click",c=>{if(c.preventDefault(),window.isClicked=!0,e.classList.contains("disabled"))return!1;r.forEach(l=>{const m=l==e;l.setAttribute("aria-pressed",m)}),n.scroll({top:0,left:e.offsetLeft,behavior:"smooth"}),f(a,e),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:e.textContent}),e.matches(":last-child")?o?.setAttribute("disabled","disabled"):o?.removeAttribute("disabled")}),_(a,s)}),n.addEventListener("scrollend",()=>{clearTimeout(d),d=setTimeout(function(){let e=r[0],c=Math.abs(e.getBoundingClientRect().left);if(r.forEach(l=>{Math.abs(l.getBoundingClientRect().left)<c&&(c=Math.abs(l.getBoundingClientRect().left),e=l)}),window.isClicked)return window.isClicked=!1,!1;e.click(),e.focus()},500)}),i.forEach((e,c)=>{e.addEventListener("click",l=>{l.preventDefault(),r[c].click()})}),o?.addEventListener("click",e=>{e.preventDefault();const l=n.querySelector('[aria-pressed="true"]').nextSibling;l&&l.click()}),t.classList.contains("tabs--guided")){let e=0,c=0,l=0,m=0;a.forEach(p=>{p.addEventListener("touchstart",b=>{b.stopPropagation(),e=b.changedTouches[0].screenX,c=b.changedTouches[0].screenY}),p.addEventListener("touchend",b=>{b.stopPropagation(),l=b.changedTouches[0].screenX,m=b.changedTouches[0].screenY;const g=k(e,c,l,m),u=n.querySelector('[aria-pressed="true"]'),h=u.nextSibling,v=u.previousSibling;switch(g){case"left":h&&h.click();break;case"right":v&&v.click();break}})})}},f=function(t,a){t.forEach((i,n)=>{const r=a.getAttribute("data-index")==n;r?i.setAttribute("open",r):i.removeAttribute("open")})},_=function(t,a){a.addEventListener("change",i=>{i.preventDefault();const n=a.options[a.selectedIndex];f(t,n),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:n.innerText})})},x=function(t){if(!t.querySelector(":scope > details"))return!1;const a=t.querySelectorAll(":scope > details"),i=t.shadowRoot.querySelectorAll(".tabs__links > button");location.hash&&t.shadowRoot.querySelector(`.tabs__links [data-id="${location.hash.replace("#","")}"]`)?(t.shadowRoot.querySelector(`[data-id="${location.hash.replace("#","")}"]`).setAttribute("aria-pressed",!0),t.querySelector(`details[id="${location.hash.replace("#","")}"]`).setAttribute("open",!0)):t.querySelector("details[open]")||(a[0].setAttribute("open",!0),i[0].setAttribute("aria-pressed",!0))},z=function(t){w(t),y(t),x(t)};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"tabs"});class L extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const a=document.createElement("template");a.innerHTML=`
5
5
  <style>
6
6
 
7
- @layer elements{a{color:var(--link-color);text-decoration:underline}a:hover{color:var(--link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}a{color:var(--colour-link)}a:is(:hover,:focus,.hover,:focus-within){color:var(--colour-hover)}a:is(:active,.active){color:var(--colour-active)}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))),.link{background-color:rgba(0,0,0,0);text-decoration:none;display:inline-block;border:none;color:var(--colour-link);margin:0 1.5rem 1.5rem 0;padding:0;font-size:1.125rem;line-height:1.5rem;min-height:1.5rem;position:relative;font-weight:500}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))):not(.text-decoration-none):after,.link:not(.text-decoration-none):after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))) [class*=fa-],.link [class*=fa-]{margin-left:0;margin-right:.5rem}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))) [class*=fa-]:not(:first-child),.link [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))):not([disabled]):is(:hover,:focus,.hover,:active,.active,:focus-within):after,.link:not([disabled]):is(:hover,:focus,.hover,:active,.active,:focus-within):after{width:60%}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card)))[disabled],.link[disabled]{opacity:.4;cursor:not-allowed}p a:not(.btn),ul a:not(.btn),ol a:not(.btn),dd a:not(.btn),.body a:not(.btn),table:not(.table--email) td a:not(.btn){min-height:none;display:inline;margin:0;text-decoration:underline;text-underline-offset:.25rem;text-decoration-thickness:.125rem;font-size:inherit}p a:not(.btn):after,ul a:not(.btn):after,ol a:not(.btn):after,dd a:not(.btn):after,.body a:not(.btn):after,table:not(.table--email) td a:not(.btn):after{display:none}p a:not(.btn) [class*=fa-],ul a:not(.btn) [class*=fa-],ol a:not(.btn) [class*=fa-],dd a:not(.btn) [class*=fa-],.body a:not(.btn) [class*=fa-],table:not(.table--email) td a:not(.btn) [class*=fa-]{margin:0;display:inline;--fa-display: inline}p a:not(.btn) [class*=fa-]:after,ul a:not(.btn) [class*=fa-]:after,ol a:not(.btn) [class*=fa-]:after,dd a:not(.btn) [class*=fa-]:after,.body a:not(.btn) [class*=fa-]:after,table:not(.table--email) td a:not(.btn) [class*=fa-]:after{content:"\xA0"}p a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),ul a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),ol a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),dd a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),.body a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),table:not(.table--email) td a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within){color:var(--colour-hover);text-decoration:none}p a:not(.btn):not([disabled]):is(:active,.active),ul a:not(.btn):not([disabled]):is(:active,.active),ol a:not(.btn):not([disabled]):is(:active,.active),dd a:not(.btn):not([disabled]):is(:active,.active),.body a:not(.btn):not([disabled]):is(:active,.active),table:not(.table--email) td a:not(.btn):not([disabled]):is(:active,.active){color:var(--colour-active);text-decoration:none;filter:brightness(85%)}:is(a,button,label):has(.card,iam-card){border:none;background:none;padding:0;display:flex;margin-bottom:1.5rem;outline:none !important;text-decoration:none}:is(a,button,label):has(.card,iam-card):before{display:none}:is(a,button,label):has(.card,iam-card):not([class*=col]){margin:0 0 1.5rem 0}:is(a,button,label):has(.card,iam-card):not(.d-inline-block):not([class*=col]){width:100%}:is(a,button,label):has(.card,iam-card) iam-card{width:100%}}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]){position:relative}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):before{content:"";display:block;background-color:var(--video-btn-colour, var(--colour-success));height:3rem;width:3rem;position:absolute;top:calc(50% - 1.5rem);left:calc(50% - 1.5rem);z-index:2;border-radius:1.5rem}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):after{--icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'><path d='M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z'/></svg>");content:"";display:block;height:1rem;width:1rem;position:absolute;top:calc(50% - .5rem);left:calc(50% - .4rem);z-index:5;background:var(--colour-primary-theme);mask-image:var(--icon);mask-size:80%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon);-webkit-mask-size:80%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):is(:hover,:focus){--video-btn-colour: var(--colour-canvas)}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):is(:active){--video-btn-colour: color-mix(in oklab, var(--colour-success), #000000 20%) !important}iam-collapsible-side>*{padding-left:1.5rem}@media screen and (min-width: 36em){iam-collapsible-side>*{padding-left:2.5rem}}@media screen and (min-width: 62em){iam-collapsible-side>*{padding-left:var(--container-padding-x-md)}}iam-collapsible-side hr{border-bottom:2px solid var(--colour-border) !important;margin-right:-2.5rem !important}.vertical-tabs [class*=link],iam-collapsible-side [class*=link]{display:block !important;line-height:1.25rem !important;padding:1rem 1.5rem 1rem 1.5rem !important;margin:0 !important;flex-shrink:0;font-size:1rem !important;font-weight:normal !important;text-decoration:none !important;border-bottom:2px solid var(--colour-border) !important;border-right:2px solid var(--colour-border) !important;margin-right:-2.5rem !important;z-index:2}.vertical-tabs [class*=link]::after,iam-collapsible-side [class*=link]::after{display:none !important}.vertical-tabs [class*=link] i,iam-collapsible-side [class*=link] i{margin-right:0.5rem !important}@media screen and (min-width: 36em){.vertical-tabs [class*=link],iam-collapsible-side [class*=link]{padding-left:1.5rem !important}}@media screen and (min-width: 62em){.vertical-tabs [class*=link],iam-collapsible-side [class*=link]{padding-left:var(--container-padding-x-md) !important}}.vertical-tabs a:hover,.vertical-tabs a:focus,.vertical-tabs a[aria-expanded],iam-collapsible-side a:hover,iam-collapsible-side a:focus,iam-collapsible-side a[aria-expanded]{background-color:var(--colour-activeLink) !important}.vertical-tabs [class*=active],iam-collapsible-side [class*=active]{background-color:var(--colour-activeLink) !important;border-right-color:var(--colour-activeLinkBorder) !important;border-right-width:3px !important}.vertical-tabs .parent,iam-collapsible-side .parent{margin:0 !important;padding:0 !important;list-style:none}.vertical-tabs .parent li:first-of-type,iam-collapsible-side .parent li:first-of-type{cursor:pointer}.vertical-tabs .parent li:first-of-type a,iam-collapsible-side .parent li:first-of-type a{padding-right:2.5rem !important}.vertical-tabs .parent li:first-of-type a::before,iam-collapsible-side .parent li:first-of-type a::before{position:absolute;display:block;content:"\uF055";font-family:"Font Awesome 6 Pro";right:20px;font-weight:300}.vertical-tabs .parent li:not(:first-of-type),iam-collapsible-side .parent li:not(:first-of-type){display:none}.vertical-tabs .parent li:not(:first-of-type) a,iam-collapsible-side .parent li:not(:first-of-type) a{background-color:var(--colour-light) !important;padding-left:5.625rem !important}.vertical-tabs .parent.reveal li:first-of-type a::before,iam-collapsible-side .parent.reveal li:first-of-type a::before{content:"\uF056";font-weight:500}.vertical-tabs .parent.reveal li:not(:first-of-type),iam-collapsible-side .parent.reveal li:not(:first-of-type){display:block}@media screen and (min-width: 36em){.vertical-tabs .parent li:not(:first-of-type) a,iam-collapsible-side .parent li:not(:first-of-type) a{padding-left:5.625rem !important}}@layer elements{*,*::before,*::after{box-sizing:border-box}button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}[role=button]{cursor:pointer}button:focus:not(:focus-visible){outline:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 0.125rem;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:500;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}.btn:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}.btn:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}.btn:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}.btn:not(:last-child){margin-right:var(--btn-margin)}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.colour-success{--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success:before,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active):before{content:"\uF00C";font-family:"Font Awesome 6 Pro";margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn[class*=fa-]:before{content:var(--fa);font-family:"Font Awesome 6 Pro";line-height:1em}.btn.btn[class*=fa-after]{padding-right:4rem}.btn.btn[class*=fa-after]:before{margin-right:0;margin-right:0.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}.btn:not(.btn-compact):before{margin-right:1rem}.btn i[class*=fa-]{font-family:"Font Awesome 6 Pro";margin-right:1rem;line-height:1em;font-style:inherit}.btn i[class*=fa-]:not(:first-child){margin-left:1rem;margin-right:0}.btn.btn--prompt:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt:after,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active):after{margin-left:1.5rem;margin-right:-0.5rem}.btn:has(select){position:relative;padding-right:3.5rem}.btn:has(select) select{all:unset !important;margin:calc(-0.75rem) calc(-2.5rem) !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:3.5rem !important;margin-right:-3.5rem !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;max-width:100% !important;outline:none;font-weight:500;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important;field-sizing:content !important}.btn:has(select) select option{padding:0;text-align:left;color:var(--colour-primary)}.btn:has(select):after{position:absolute;top:0.625rem;right:2rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}.btn:has(select).active:after{transform:rotate(-90deg)}.btn:has(select:focus):after{transform:rotate(-90deg)}.btn-filter:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:"Font Awesome 6 Pro"}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary)}.btn-secondary:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:rgba(0,0,0,0);border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative}.btn.btn-tertiary:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}.btn.btn-tertiary.text-decoration-none:after{width:0%}.btn.btn-tertiary [class*=fa-]{margin-left:0;margin-right:.5rem}.btn.btn-tertiary [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}.btn.btn-tertiary:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active):after{width:60% !important}.btn.btn-tertiary:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}@layer elements{.btn-action{--btn-border-width: 0.0625rem;--btn-padding-block: 0.3125rem;--btn-padding-inline: 0.3125rem;--btn-margin: 0.5rem}.btn-action:not(.btn-primary){color:var(--colour-heading)}.btn-action:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}.btn-action{border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem}.btn-action.btn[class*=fa-]:before{content:var(--fa);margin-right:0.375rem}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) .btn-action,.btn-action:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}.btn-action:not(.btn-compact).fa-compact-only:before{display:none !important}.btn:has(select){padding-block:0;padding-right:2rem}.btn:has(select) select{margin:0rem 0rem !important;padding-right:2rem !important;margin-right:-2rem !important}.btn:has(select):after{top:.2rem;right:0.5rem}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem}.btn-compact:not(:last-child){margin-right:0.5rem}.btn-compact{text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;line-height:var(--compact-size) !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem}.btn-compact:before{content:var(--fa);position:absolute;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - 0.25rem);font-weight:900}.btn-compact[class*=fa-]:before{line-height:calc(var(--compact-size) - 0.25rem)}@container style(--theme: dark){.btn-compact[class*=fa-]:before{color:#fff}}.btn-compact.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}.btn-compact.btn-action{--compact-size: 2rem;font-size:1rem}.btn-compact.btn-action:before{font-size:1em;font-weight:400}.btn-compact.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:rgba(0,0,0,0)}.btn-compact.btn-secondary:not([class*=colour-]){--colour: var(--colour-light)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse):is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}.btn-compact[data-number]{position:relative}.btn-compact[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:#fff;letter-spacing:-0.1em;font-family:arial,sans-serif}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse){background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse){background-color:rgba(0,0,0,0);border-color:var(--colour-inverted) !important;color:var(--colour-inverted)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary[disabled],.invert-colours .btn-compact.btn-secondary[disabled]{background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme) !important}}*:not(main):has(>iam-tabs){container-type:inline-size}iam-tabs{--colour-tab-underline: var(--colour-info)}iam-tabs details:not([open]){padding-bottom:0}iam-tabs .tabs__dropdown{display:none;width:fit-content}iam-tabs:is(.tabs--dropdown) .tabs__dropdown{display:block}iam-tabs:is(.tabs--dropdown)::part(wrapper){display:none}@container (min-width: 62em){iam-tabs:is(.tabs--dropdown) .tabs__dropdown{display:none}iam-tabs:is(.tabs--dropdown)::part(wrapper){display:block}}iam-tabs::part(next-button){display:none}@container (width > 62em){iam-tabs.tabs--guided::part(next-button){position:absolute;top:9.375rem;right:0;display:block}}iam-tabs.tabs--guided::part(next-button):not(:hover){background:var(--colour-success)}.tabs:not(.admin-panel){position:relative}.tabs:not(.admin-panel) .tabs__links__wrapper{position:relative;margin:0 auto 2rem}.tabs:not(.admin-panel) .tabs__links__wrapper:after{content:"";left:50%;position:relative;height:1px;width:100vw;background-color:var(--colour-border);transform:translate(-50%, 0);display:block;clear:both}.tabs.admin-panel .tabs__links__wrapper:after{display:none}.tabs:not(.admin-panel) .tabs__links{-webkit-mask-image:linear-gradient(to right, rgb(0, 0, 0) 90%, rgba(0, 0, 0, 0) 100%);mask-image:linear-gradient(to right, rgb(0, 0, 0) 90%, rgba(0, 0, 0, 0) 100%)}.tabs__links{scroll-snap-type:x mandatory;padding-bottom:3px;position:relative;display:flex;flex-wrap:nowrap;width:auto;margin:0 -1.5rem;overflow-y:clip;overflow-x:auto}.tabs__links::-webkit-scrollbar{display:none}.tabs__links .link{white-space:nowrap;scroll-snap-align:start;scroll-margin-left:var(--container-padding)}.tabs__links .link:not(.text-decoration-none):not(.btn){--is-current: 0;font-weight:bold;font-family:var(--font-heading);font-size:1.125rem;cursor:pointer;margin:0;padding:1.5rem 1.5rem .5rem 1.5rem;display:inline-block}.tabs__links .link:not(.text-decoration-none):not(.btn).disabled{cursor:not-allowed;opacity:.4}.tabs__links .link:not(.text-decoration-none):not(.btn):last-child{margin-inline-end:0}.tabs__links .link:not(.text-decoration-none):not(.btn):after{position:absolute;content:"";bottom:0;left:50%;height:3px;width:100%;transform:translate(-50%, 0) scale(0, 0);background:var(--colour-tab-underline);transition:transform .4s}.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled):hover:after,.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled):focus:after,.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled).focus:after{transform:translate(-50%, 0) scale(0.6, 1)}.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled):is([aria-pressed=true],:active,.current):after{transform:translate(-50%, 0) scale(1, 1)}.tabs__links .link:not(.text-decoration-none):not(.btn):is([aria-pressed=true],.current){pointer-events:none;outline:var(--contrast-outline-width, 0px) solid var(--colour-primary-theme) !important}@media(min-width: 576px){.tabs__links .link:not(.text-decoration-none):not(.btn){padding:2rem 2rem .5rem 2rem}.tabs__links__wrapper{margin:0 auto 2.5rem}}.admin-panel :is(.admin-panel__links,.tabs__links){padding:0;margin:calc(var(--padding-top)*-1) calc(var(--padding-x)*-1) var(--padding-top) calc(var(--padding-x)*-1);border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;display:flex;flex-direction:column;border-bottom:1px solid var(--colour-border);overflow:hidden;outline:var(--contrast-outline-width, 0px) solid var(--colour-primary)}.admin-panel :is(.admin-panel__links,.tabs__links):after{display:none}@media screen and (min-width: 36em){.admin-panel :is(.admin-panel__links,.tabs__links){flex-direction:row}}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn){margin:0;padding:1rem var(--padding-x);width:100%;position:relative;text-align:left;flex-grow:1;--gradient-direction: -90deg;background-color:var(--colour-success)}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):not([class*=bg-]){background-image:linear-gradient(var(--gradient-direction), var(--colour-info) 0, transparent 100%)}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):is(.current,[aria-pressed=true]){color:var(--colour-primary-theme)}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):not(.current,[aria-pressed=true]){background:var(--colour-canvas-2) !important}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):after{display:none}@media screen and (min-width: 36em){.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn){margin:0}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):not(:first-child){border-left:1px solid var(--colour-border) !important}}.admin-panel :is(.admin-panel__links,.tabs__links) .link:is(.current,[aria-pressed=true]){pointer-events:none}@media screen and (min-width: 36em){:host(.tabs--inline) .tabs__links{margin:0;justify-content:center}:host(.tabs--inline) .tabs__links__wrapper:after{width:100%}}:host{background:rgba(0,0,0,0)}/*# sourceMappingURL=assets/css/components/tabs.component.css.map */
7
+ @layer elements{a{color:var(--link-color);text-decoration:underline}a:hover{color:var(--link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}a{color:var(--colour-link)}a:is(:hover,:focus,.hover,:focus-within){color:var(--colour-hover)}a:is(:active,.active){color:var(--colour-active)}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))),.link{background-color:rgba(0,0,0,0);text-decoration:none;display:inline-block;border:none;color:var(--colour-link);margin:0 1.5rem 1.5rem 0;padding:0;font-size:1.125rem;line-height:1.5rem;min-height:1.5rem;position:relative;font-weight:500}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))):not(.text-decoration-none):after,.link:not(.text-decoration-none):after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))) [class*=fa-],.link [class*=fa-]{margin-left:0;margin-right:.5rem}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))) [class*=fa-]:not(:first-child),.link [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card))):not([disabled]):is(:hover,:focus,.hover,:active,.active,:focus-within):after,.link:not([disabled]):is(:hover,:focus,.hover,:active,.active,:focus-within):after{width:60%}a:where(:not(.btn):not(.brand):not(:has(.card)):not(:has(iam-card)))[disabled],.link[disabled]{opacity:.4;cursor:not-allowed}p a:not(.btn),ul a:not(.btn),ol a:not(.btn),dd a:not(.btn),.body a:not(.btn),table:not(.table--email) td a:not(.btn){min-height:none;display:inline;margin:0;text-decoration:underline;text-underline-offset:.25rem;text-decoration-thickness:.125rem;font-size:inherit}p a:not(.btn):after,ul a:not(.btn):after,ol a:not(.btn):after,dd a:not(.btn):after,.body a:not(.btn):after,table:not(.table--email) td a:not(.btn):after{display:none}p a:not(.btn) [class*=fa-],ul a:not(.btn) [class*=fa-],ol a:not(.btn) [class*=fa-],dd a:not(.btn) [class*=fa-],.body a:not(.btn) [class*=fa-],table:not(.table--email) td a:not(.btn) [class*=fa-]{margin:0;display:inline;--fa-display: inline}p a:not(.btn) [class*=fa-]:after,ul a:not(.btn) [class*=fa-]:after,ol a:not(.btn) [class*=fa-]:after,dd a:not(.btn) [class*=fa-]:after,.body a:not(.btn) [class*=fa-]:after,table:not(.table--email) td a:not(.btn) [class*=fa-]:after{content:"\xA0"}p a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),ul a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),ol a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),dd a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),.body a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within),table:not(.table--email) td a:not(.btn):not([disabled]):is(:hover,:focus,.hover,:focus-within){color:var(--colour-hover);text-decoration:none}p a:not(.btn):not([disabled]):is(:active,.active),ul a:not(.btn):not([disabled]):is(:active,.active),ol a:not(.btn):not([disabled]):is(:active,.active),dd a:not(.btn):not([disabled]):is(:active,.active),.body a:not(.btn):not([disabled]):is(:active,.active),table:not(.table--email) td a:not(.btn):not([disabled]):is(:active,.active){color:var(--colour-active);text-decoration:none;filter:brightness(85%)}:is(a,button,label):has(.card,iam-card){border:none;background:none;padding:0;display:flex;margin-bottom:1.5rem;outline:none !important;text-decoration:none}:is(a,button,label):has(.card,iam-card):before{display:none}:is(a,button,label):has(.card,iam-card):not([class*=col]){margin:0 0 1.5rem 0}:is(a,button,label):has(.card,iam-card):not(.d-inline-block):not([class*=col]){width:100%}:is(a,button,label):has(.card,iam-card) iam-card{width:100%}}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]){position:relative}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):before{content:"";display:block;background-color:var(--video-btn-colour, var(--colour-success));height:3rem;width:3rem;position:absolute;top:calc(50% - 1.5rem);left:calc(50% - 1.5rem);z-index:2;border-radius:1.5rem}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):after{--icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'><path d='M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z'/></svg>");content:"";display:block;height:1rem;width:1rem;position:absolute;top:calc(50% - .5rem);left:calc(50% - .4rem);z-index:5;background:var(--colour-primary-theme);mask-image:var(--icon);mask-size:80%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon);-webkit-mask-size:80%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):is(:hover,:focus){--video-btn-colour: var(--colour-canvas)}:is(.youtube-link[data-youtube],.vimeo-link[data-vimeo]):is(:active){--video-btn-colour: color-mix(in oklab, var(--colour-success), #000000 20%) !important}iam-collapsible-side>*{padding-left:1.5rem}@media screen and (min-width: 36em){iam-collapsible-side>*{padding-left:2.5rem}}@media screen and (min-width: 62em){iam-collapsible-side>*{padding-left:var(--container-padding-x-md)}}iam-collapsible-side hr{border-bottom:2px solid var(--colour-border) !important;margin-right:-2.5rem !important}.vertical-tabs [class*=link],iam-collapsible-side [class*=link]{display:block !important;line-height:1.25rem !important;padding:1rem 1.5rem 1rem 1.5rem !important;margin:0 !important;flex-shrink:0;font-size:1rem !important;font-weight:normal !important;text-decoration:none !important;border-bottom:2px solid var(--colour-border) !important;border-right:2px solid var(--colour-border) !important;margin-right:-2.5rem !important;z-index:2}.vertical-tabs [class*=link]::after,iam-collapsible-side [class*=link]::after{display:none !important}.vertical-tabs [class*=link] i,iam-collapsible-side [class*=link] i{margin-right:0.5rem !important}@media screen and (min-width: 36em){.vertical-tabs [class*=link],iam-collapsible-side [class*=link]{padding-left:1.5rem !important}}@media screen and (min-width: 62em){.vertical-tabs [class*=link],iam-collapsible-side [class*=link]{padding-left:var(--container-padding-x-md) !important}}.vertical-tabs a:hover,.vertical-tabs a:focus,.vertical-tabs a[aria-expanded],iam-collapsible-side a:hover,iam-collapsible-side a:focus,iam-collapsible-side a[aria-expanded]{background-color:var(--colour-activeLink) !important}.vertical-tabs [class*=active],iam-collapsible-side [class*=active]{background-color:var(--colour-activeLink) !important;border-right-color:var(--colour-activeLinkBorder) !important;border-right-width:3px !important}.vertical-tabs .parent,iam-collapsible-side .parent{margin:0 !important;padding:0 !important;list-style:none}.vertical-tabs .parent li:first-of-type,iam-collapsible-side .parent li:first-of-type{cursor:pointer}.vertical-tabs .parent li:first-of-type a,iam-collapsible-side .parent li:first-of-type a{padding-right:2.5rem !important}.vertical-tabs .parent li:first-of-type a::before,iam-collapsible-side .parent li:first-of-type a::before{position:absolute;display:block;content:"\uF055";font-family:"Font Awesome 6 Pro";right:20px;font-weight:300}.vertical-tabs .parent li:not(:first-of-type),iam-collapsible-side .parent li:not(:first-of-type){display:none}.vertical-tabs .parent li:not(:first-of-type) a,iam-collapsible-side .parent li:not(:first-of-type) a{background-color:var(--colour-light) !important;padding-left:5.625rem !important}.vertical-tabs .parent.reveal li:first-of-type a::before,iam-collapsible-side .parent.reveal li:first-of-type a::before{content:"\uF056";font-weight:500}.vertical-tabs .parent.reveal li:not(:first-of-type),iam-collapsible-side .parent.reveal li:not(:first-of-type){display:block}@media screen and (min-width: 36em){.vertical-tabs .parent li:not(:first-of-type) a,iam-collapsible-side .parent li:not(:first-of-type) a{padding-left:5.625rem !important}}@layer elements{*,*::before,*::after{box-sizing:border-box}button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}[role=button]{cursor:pointer}button:focus:not(:focus-visible){outline:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 0.125rem;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:500;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}.btn:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}.btn:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}.btn:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}.btn:not(:last-child){margin-right:var(--btn-margin)}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.colour-success{--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success:before,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active):before{content:"\uF00C";font-family:"Font Awesome 6 Pro";margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn[class*=fa-]:before{content:var(--fa);font-family:"Font Awesome 6 Pro";line-height:1em}.btn.btn[class*=fa-after]{padding-right:4rem}.btn.btn[class*=fa-after]:before{margin-right:0;margin-right:0.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}.btn:not(.btn-compact):before{margin-right:1rem}.btn i[class*=fa-]{font-family:"Font Awesome 6 Pro";margin-right:1rem;line-height:1em;font-style:inherit}.btn i[class*=fa-]:not(:first-child){margin-left:1rem;margin-right:0}.btn.btn--prompt:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt:after,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active):after{margin-left:1.5rem;margin-right:-0.5rem}.btn:has(select){position:relative;padding-right:3.5rem}.btn:has(select) select{all:unset !important;margin:calc(-0.75rem) calc(-2.5rem) !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:3.5rem !important;margin-right:-3.5rem !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;max-width:100% !important;outline:none;font-weight:500;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important;field-sizing:content !important}.btn:has(select) select option{padding:0;text-align:left;color:var(--colour-primary)}.btn:has(select):after{position:absolute;top:0.625rem;right:2rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}.btn:has(select).active:after{transform:rotate(-90deg)}.btn:has(select:focus):after{transform:rotate(-90deg)}.btn-filter:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:"Font Awesome 6 Pro"}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary)}.btn-secondary:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:rgba(0,0,0,0);border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative}.btn.btn-tertiary:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}.btn.btn-tertiary.text-decoration-none:after{width:0%}.btn.btn-tertiary [class*=fa-]{margin-left:0;margin-right:.5rem}.btn.btn-tertiary [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}.btn.btn-tertiary:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active):after{width:60% !important}.btn.btn-tertiary:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}@layer elements{.btn-action{--btn-border-width: 0.0625rem;--btn-padding-block: 0.3125rem;--btn-padding-inline: 0.3125rem;--btn-margin: 0.5rem}.btn-action:not(.btn-primary){color:var(--colour-heading)}.btn-action:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}.btn-action{border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem}.btn-action.btn[class*=fa-]:before{content:var(--fa);margin-right:0.375rem}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) .btn-action,.btn-action:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}.btn-action:not(.btn-compact).fa-compact-only:before{display:none !important}.btn:has(select){padding-block:0;padding-right:2rem}.btn:has(select) select{margin:0rem 0rem !important;padding-right:2rem !important;margin-right:-2rem !important}.btn:has(select):after{top:.2rem;right:0.5rem}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem}.btn-compact:not(:last-child){margin-right:0.5rem}.btn-compact{text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;line-height:var(--compact-size) !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem}.btn-compact:before{content:var(--fa);position:absolute;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - 0.25rem);font-weight:900}.btn-compact[class*=fa-]:before{line-height:calc(var(--compact-size) - 0.25rem)}@container style(--theme: dark){.btn-compact[class*=fa-]:before{color:#fff}}.btn-compact.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}.btn-compact.btn-action{--compact-size: 2rem;font-size:1rem}.btn-compact.btn-action:before{font-size:1em;font-weight:400}.btn-compact.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:rgba(0,0,0,0)}.btn-compact.btn-secondary:not([class*=colour-]){--colour: var(--colour-light)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse):is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}.btn-compact[data-number]{position:relative}.btn-compact[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:#fff;letter-spacing:-0.1em;font-family:arial,sans-serif}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse){background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse){background-color:rgba(0,0,0,0);border-color:var(--colour-inverted) !important;color:var(--colour-inverted)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary[disabled],.invert-colours .btn-compact.btn-secondary[disabled]{background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme) !important}}*:not(main):has(>iam-tabs){container-type:inline-size}iam-tabs{--colour-tab-underline: var(--colour-info)}iam-tabs details:not([open]){padding-bottom:0}iam-tabs .tabs__dropdown{display:none;width:fit-content}iam-tabs:is(.tabs--dropdown) .tabs__dropdown{display:block}iam-tabs:is(.tabs--dropdown)::part(wrapper){display:none}@container (min-width: 62em){iam-tabs:is(.tabs--dropdown) .tabs__dropdown{display:none}iam-tabs:is(.tabs--dropdown)::part(wrapper){display:block}}iam-tabs::part(next-button){display:none}@container (width > 62em){iam-tabs.tabs--guided::part(next-button){position:absolute;top:9.375rem;right:0;display:block}}iam-tabs.tabs--guided::part(next-button):not(:hover){background:var(--colour-success)}.tabs:not(.admin-panel){position:relative}.tabs:not(.admin-panel) .tabs__links__wrapper{position:relative;margin:0 auto 2rem}.tabs:not(.admin-panel) .tabs__links__wrapper:after{content:"";left:50%;position:relative;height:1px;width:100vw;background-color:var(--colour-border);transform:translate(-50%, 0);display:block;clear:both}.tabs.admin-panel .tabs__links__wrapper:after{display:none}.tabs:not(.admin-panel) .tabs__links{-webkit-mask-image:linear-gradient(to right, rgb(0, 0, 0) 90%, rgba(0, 0, 0, 0) 100%);mask-image:linear-gradient(to right, rgb(0, 0, 0) 90%, rgba(0, 0, 0, 0) 100%)}.tabs__links{scroll-snap-type:x mandatory;padding-bottom:3px;position:relative;display:flex;flex-wrap:nowrap;width:auto;margin:0 -1.5rem;overflow-y:clip;overflow-x:auto}.tabs__links::-webkit-scrollbar{display:none}.tabs__links .link{white-space:nowrap;scroll-snap-align:start;scroll-margin-left:var(--container-padding)}.tabs__links .link:not(.text-decoration-none):not(.btn){--is-current: 0;font-weight:bold;font-family:var(--font-heading);font-size:1.125rem;cursor:pointer;margin:0;padding:1.5rem 1.5rem .5rem 1.5rem;display:inline-block}.tabs__links .link:not(.text-decoration-none):not(.btn).disabled{cursor:not-allowed;opacity:.4}.tabs__links .link:not(.text-decoration-none):not(.btn):last-child{margin-inline-end:0}.tabs__links .link:not(.text-decoration-none):not(.btn):after{position:absolute;content:"";bottom:0;left:50%;height:3px;width:100%;transform:translate(-50%, 0) scale(0, 0);background:var(--colour-tab-underline, var(--colour-info));transition:transform .4s}.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled):hover:after,.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled):focus:after,.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled).focus:after{transform:translate(-50%, 0) scale(0.6, 1)}.tabs__links .link:not(.text-decoration-none):not(.btn):not(.disabled):is([aria-pressed=true],:active,.current,.active):after{transform:translate(-50%, 0) scale(1, 1)}.tabs__links .link:not(.text-decoration-none):not(.btn):is([aria-pressed=true],.current){pointer-events:none;outline:var(--contrast-outline-width, 0px) solid var(--colour-primary-theme) !important}@media(min-width: 576px){.tabs__links .link:not(.text-decoration-none):not(.btn){padding:2rem 2rem .5rem 2rem}.tabs__links__wrapper{margin:0 auto 2.5rem}}.admin-panel :is(.admin-panel__links,.tabs__links){padding:0;margin:calc(var(--padding-top)*-1) calc(var(--padding-x)*-1) var(--padding-top) calc(var(--padding-x)*-1);border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;display:flex;flex-direction:column;border-bottom:1px solid var(--colour-border);overflow:hidden;outline:var(--contrast-outline-width, 0px) solid var(--colour-primary)}.admin-panel :is(.admin-panel__links,.tabs__links):after{display:none}@media screen and (min-width: 36em){.admin-panel :is(.admin-panel__links,.tabs__links){flex-direction:row}}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn){margin:0;padding:1rem var(--padding-x);width:100%;position:relative;text-align:left;flex-grow:1;--gradient-direction: -90deg;background-color:var(--colour-success)}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):not([class*=bg-]){background-image:linear-gradient(var(--gradient-direction), var(--colour-info) 0, transparent 100%)}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):is(.current,[aria-pressed=true]){color:var(--colour-primary-theme)}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):not(.current,[aria-pressed=true]){background:var(--colour-canvas-2) !important}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):after{display:none}@media screen and (min-width: 36em){.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn){margin:0}.admin-panel :is(.admin-panel__links,.tabs__links) .link:not(.text-decoration-none):not(.btn):not(:first-child){border-left:1px solid var(--colour-border) !important}}.admin-panel :is(.admin-panel__links,.tabs__links) .link:is(.current,[aria-pressed=true]){pointer-events:none}@media screen and (min-width: 36em){:host(.tabs--inline) .tabs__links{margin:0;justify-content:center}:host(.tabs--inline) .tabs__links__wrapper:after{width:100%}}:host{background:rgba(0,0,0,0)}/*# sourceMappingURL=assets/css/components/tabs.component.css.map */
8
8
 
9
9
 
10
10
  :host(.admin-panel){
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * iamKey v7.5.1--beta6
2
+ * iamKey v7.5.1--beta7
3
3
  * Copyright 2022-2025 iamproperty
4
- */const p=o=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:o})},h=(o,t,e)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),e.forEach(r=>{o.addEventListener(r,function(i){const d={event:r,element:t,target:i.target};Object.keys(i.detail).forEach(a=>{const n=i.detail[a];d[a]=n}),window.dataLayer.push(d)})}),!0),b=`<div class="card__head" part="head">
4
+ */const p=o=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:o})},h=(o,t,e)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),e.forEach(a=>{o.addEventListener(a,function(d){const r={event:a,element:t,target:d.target};Object.keys(d.detail).forEach(i=>{const n=d.detail[i];r[i]=n}),window.dataLayer.push(r)})}),!0),b=`<div class="card__head" part="head">
5
5
  <slot name="head"></slot>
6
6
  </div>
7
7
  <div class="card__badges"><slot name="badges"></slot></div>
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
  <div class="card__footer" part="footer">
17
17
  <slot name="footer"></slot>
18
- </div>`,g=o=>{o.classList.add("card");const t=o.shadowRoot.querySelector(".card__head"),e=o.shadowRoot.querySelector(".card__body");o.hasAttribute("data-image")&&(t.innerHTML+=`<img src="${o.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),o.hasAttribute("data-total")?e.insertAdjacentHTML("beforeend",`<div class="card__total">${o.getAttribute("data-total")}</div>`):o.querySelector('[slot="total-icon"]')&&e.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),o.querySelector('[slot="badges"]')?o.shadowRoot.querySelector(".card__badges").classList.remove("empty"):o.shadowRoot.querySelector(".card__badges").classList.add("empty")};var u=function(o,t,e,r){function i(d){return d instanceof e?d:new e(function(a){a(d)})}return new(e||(e=Promise))(function(d,a){function n(s){try{c(r.next(s))}catch(l){a(l)}}function m(s){try{c(r.throw(s))}catch(l){a(l)}}function c(s){s.done?d(s.value):i(s.value).then(n,m)}c((r=r.apply(o,t||[])).next())})};const f=()=>u(void 0,void 0,void 0,function*(){return new Promise((o,t)=>{const e=new Image;e.onload=function(){const r=document.createElement("script");r.src="https://www.youtube.com/iframe_api";const i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i),document.body.classList.add("youtubeLoaded"),o(!0)},e.onerror=function(){t(!1)},e.src="https://youtube.com/favicon.ico"})}),v=(o,t)=>u(void 0,void 0,void 0,function*(){typeof window.player>"u"&&(window.player=[]);const e=o.getAttribute("id");if(typeof window.player[e]<"u"&&typeof window.player[e].pauseVideo=="function")return window.player[e].playVideo(),!1;window.player[e]=new YT.Player(e,{height:"100%",width:"100%",videoId:t,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:r,onStateChange:d}});function r(a){a.target.playVideo()}let i=!1;function d(a){a.data==YT.PlayerState.PLAYING&&!i&&(document.getElementById(e).classList.add("player-ready"),i=!0)}});var y=function(o,t,e,r){function i(d){return d instanceof e?d:new e(function(a){a(d)})}return new(e||(e=Promise))(function(d,a){function n(s){try{c(r.next(s))}catch(l){a(l)}}function m(s){try{c(r.throw(s))}catch(l){a(l)}}function c(s){s.done?d(s.value):i(s.value).then(n,m)}c((r=r.apply(o,t||[])).next())})};p("iam-video-card");class w extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
18
+ </div>`,g=o=>{var t;o.classList.add("card");const e=o.shadowRoot.querySelector(".card__head"),a=o.shadowRoot.querySelector(".card__body");o.hasAttribute("data-image")&&(e.innerHTML+=`<img src="${o.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),o.hasAttribute("data-total")?a?.querySelector(".card__total")?(t=a?.querySelector(".card__total"))===null||t===void 0||(t.innerHTML=o.getAttribute("data-total")):a.insertAdjacentHTML("beforeend",`<div class="card__total">${o.getAttribute("data-total")}</div>`):o.querySelector('[slot="total-icon"]')&&a.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),o.querySelector('[slot="badges"]')?o.shadowRoot.querySelector(".card__badges").classList.remove("empty"):o.shadowRoot.querySelector(".card__badges").classList.add("empty")};var u=function(o,t,e,a){function d(r){return r instanceof e?r:new e(function(i){i(r)})}return new(e||(e=Promise))(function(r,i){function n(s){try{c(a.next(s))}catch(l){i(l)}}function m(s){try{c(a.throw(s))}catch(l){i(l)}}function c(s){s.done?r(s.value):d(s.value).then(n,m)}c((a=a.apply(o,t||[])).next())})};const v=()=>u(void 0,void 0,void 0,function*(){return new Promise((o,t)=>{const e=new Image;e.onload=function(){const a=document.createElement("script");a.src="https://www.youtube.com/iframe_api";const d=document.getElementsByTagName("script")[0];d.parentNode.insertBefore(a,d),document.body.classList.add("youtubeLoaded"),o(!0)},e.onerror=function(){t(!1)},e.src="https://youtube.com/favicon.ico"})}),f=(o,t)=>u(void 0,void 0,void 0,function*(){typeof window.player>"u"&&(window.player=[]);const e=o.getAttribute("id");if(typeof window.player[e]<"u"&&typeof window.player[e].pauseVideo=="function")return window.player[e].playVideo(),!1;window.player[e]=new YT.Player(e,{height:"100%",width:"100%",videoId:t,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:a,onStateChange:r}});function a(i){i.target.playVideo()}let d=!1;function r(i){i.data==YT.PlayerState.PLAYING&&!d&&(document.getElementById(e).classList.add("player-ready"),d=!0)}});var y=function(o,t,e,a){function d(r){return r instanceof e?r:new e(function(i){i(r)})}return new(e||(e=Promise))(function(r,i){function n(s){try{c(a.next(s))}catch(l){i(l)}}function m(s){try{c(a.throw(s))}catch(l){i(l)}}function c(s){s.done?r(s.value):d(s.value).then(n,m)}c((a=a.apply(o,t||[])).next())})};p("iam-video-card");class w extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
19
19
  <style>
20
20
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
21
21
 
@@ -26,5 +26,5 @@
26
26
  <dialog>
27
27
  <div class="embed"></div>
28
28
  </dialog>
29
- `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){return y(this,void 0,void 0,function*(){const t=this,e=t.shadowRoot.querySelector(".card__head"),i=String.fromCharCode(65+Math.floor(Math.random()*26))+Date.now();let d,a;g(t),t.querySelector("[data-youtube]")&&t.setAttribute("data-youtube",t.querySelector("[data-youtube]").getAttribute("data-youtube")),t.querySelector("[data-vimeo]")&&t.setAttribute("data-vimeo",t.querySelector("[data-vimeo]").getAttribute("data-vimeo")),(t.hasAttribute("data-youtube")||t.hasAttribute("data-vimeo"))&&(e.setAttribute("tabindex","0"),document.getElementById(`${i}-dialog`)||document.body.insertAdjacentHTML("beforeend",`<dialog id="${i}-dialog"><div class="embed" id="${i}"></div></dialog>`),d=document.getElementById(`${i}-dialog`),a=document.getElementById(i)),t.hasAttribute("data-youtube")?(document.body.classList.contains("youtubeLoaded")||(yield f()),e.addEventListener("click",function(){const n=new CustomEvent("play-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n),v(a,this.getAttribute("[data-youtbue]")),d.showModal()}),d.addEventListener("close",()=>{window.player[a.getAttribute("id")]&&typeof window.player[a.getAttribute("id")].pauseVideo=="function"&&window.player[a.getAttribute("id")].pauseVideo();const n=new CustomEvent("close-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n)})):t.hasAttribute("data-vimeo")&&(e.addEventListener("click",function(){const n=t.getAttribute("data-vimeo"),m=new CustomEvent("play-video",{detail:{"Video Type":"Vimeo",ID:n}});t.dispatchEvent(m),a.querySelector("iframe")||(a.innerHTML=`<iframe src="https://player.vimeo.com/video/${n}?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`),d.showModal()}),d.addEventListener("close",()=>{a.innerHTML="";const n=new CustomEvent("close-video",{detail:{"Video Type":"Vimeo",ID:t.getAttribute("data-vimeo")}});t.dispatchEvent(n)})),h(t,"iam-video-card",["play-video","close-video"])})}static get observedAttributes(){return["data-image"]}attributeChangedCallback(t,e,r){switch(t){case"data-image":{if(e!=r){const i=this.shadowRoot.querySelector(".card__head img");i&&i.setAttribute("src",r)}break}}}}export{w as default};
29
+ `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){return y(this,void 0,void 0,function*(){const t=this,e=t.shadowRoot.querySelector(".card__head"),d=String.fromCharCode(65+Math.floor(Math.random()*26))+Date.now();let r,i;g(t),t.querySelector("[data-youtube]")&&t.setAttribute("data-youtube",t.querySelector("[data-youtube]").getAttribute("data-youtube")),t.querySelector("[data-vimeo]")&&t.setAttribute("data-vimeo",t.querySelector("[data-vimeo]").getAttribute("data-vimeo")),(t.hasAttribute("data-youtube")||t.hasAttribute("data-vimeo"))&&(e.setAttribute("tabindex","0"),document.getElementById(`${d}-dialog`)||document.body.insertAdjacentHTML("beforeend",`<dialog id="${d}-dialog"><div class="embed" id="${d}"></div></dialog>`),r=document.getElementById(`${d}-dialog`),i=document.getElementById(d)),t.hasAttribute("data-youtube")?(document.body.classList.contains("youtubeLoaded")||(yield v()),e.addEventListener("click",function(){const n=new CustomEvent("play-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n),f(i,this.getAttribute("[data-youtbue]")),r.showModal()}),r.addEventListener("close",()=>{window.player[i.getAttribute("id")]&&typeof window.player[i.getAttribute("id")].pauseVideo=="function"&&window.player[i.getAttribute("id")].pauseVideo();const n=new CustomEvent("close-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n)})):t.hasAttribute("data-vimeo")&&(e.addEventListener("click",function(){const n=t.getAttribute("data-vimeo"),m=new CustomEvent("play-video",{detail:{"Video Type":"Vimeo",ID:n}});t.dispatchEvent(m),i.querySelector("iframe")||(i.innerHTML=`<iframe src="https://player.vimeo.com/video/${n}?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`),r.showModal()}),r.addEventListener("close",()=>{i.innerHTML="";const n=new CustomEvent("close-video",{detail:{"Video Type":"Vimeo",ID:t.getAttribute("data-vimeo")}});t.dispatchEvent(n)})),h(t,"iam-video-card",["play-video","close-video"])})}static get observedAttributes(){return["data-image"]}attributeChangedCallback(t,e,a){switch(t){case"data-image":{if(e!=a){const d=this.shadowRoot.querySelector(".card__head img");d&&d.setAttribute("src",a)}break}}}}export{w as default};
30
30
  //# sourceMappingURL=video-card.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"video-card.component.min.js","sources":["../_global.js","../../modules/card.module.js","../../modules/videos.js","video-card.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","export const cardHTML = `<div class=\"card__head\" part=\"head\">\n <slot name=\"head\"></slot>\n</div>\n<div class=\"card__badges\"><slot name=\"badges\"></slot></div>\n<slot name=\"checkbox\" class=\"activate-prevent-hover\"></slot>\n<div class=\"card__body\" part=\"body\">\n <slot></slot>\n <slot name=\"secondary\" part=\"secondary\"></slot>\n</div>\n<div class=\"card__details\" part=\"details\">\n <slot name=\"details\"></slot>\n</div>\n<div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n</div>`;\nexport const setupCard = (cardComponent) => {\n cardComponent.classList.add('card');\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n if (cardComponent.hasAttribute('data-image')) {\n cardHead.innerHTML += `<img src=\"${cardComponent.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" part=\"image\" />`;\n }\n // Inset the HTML for the data total or icon fallback\n if (cardComponent.hasAttribute('data-total')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\">${cardComponent.getAttribute('data-total')}</div>`);\n }\n else if (cardComponent.querySelector('[slot=\"total-icon\"]')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\"><slot name=\"total-icon\"></slot></div>`);\n }\n if (!cardComponent.querySelector('[slot=\"badges\"]')) {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.add('empty');\n }\n else {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.remove('empty');\n }\n};\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};\nconst videoSupport = (body) => __awaiter(void 0, void 0, void 0, function* () {\n if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n }), '2000');\n body.addEventListener('click', (event) => __awaiter(void 0, void 0, void 0, function* () {\n let target = event.target.closest('.youtube-link[data-youtube]');\n if (!target) {\n target = event.target.closest('.vimeo-link[data-vimeo]');\n }\n if (target && target.hasAttribute('data-youtube')) {\n event.preventDefault();\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n const link_id = 'youtube-' + target.getAttribute('data-youtube');\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n const dialog = document.getElementById(`${link_id}-dialog`);\n const embed = document.getElementById(link_id);\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: target.getAttribute('data-youtube') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n createYoutTubeVideo(embed, target.getAttribute('data-youtube'));\n dialog.showModal();\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: target.getAttribute('data-youtube') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n });\n }\n else if (target && target.hasAttribute('data-vimeo')) {\n event.preventDefault();\n const link_id = 'vimeo-' + target.getAttribute('data-youtube');\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n const dialog = document.getElementById(`${link_id}-dialog`);\n const embed = document.getElementById(link_id);\n const videoId = target.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: target.getAttribute('data-vimeo') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n });\n }\n }));\n});\nexport const loadYouTubeScripts = () => __awaiter(void 0, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = function () {\n // This code loads the IFrame Player API code asynchronously.\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n document.body.classList.add('youtubeLoaded');\n resolve(true);\n };\n image.onerror = function () {\n reject(false);\n };\n image.src = 'https://youtube.com/favicon.ico';\n });\n});\nexport const createYoutTubeVideo = (target, video_id) => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof window.player == 'undefined') {\n window.player = [];\n }\n const link_id = target.getAttribute('id');\n if (typeof window.player[link_id] != 'undefined' && typeof window.player[link_id].pauseVideo == 'function') {\n window.player[link_id].playVideo();\n return false;\n }\n // This function creates an <iframe> (and YouTube player) after the API code downloads.\n //function onYouTubeIframeAPIReady() {\n window.player[link_id] = new YT.Player(link_id, {\n height: '100%',\n width: '100%',\n videoId: video_id,\n playerVars: {\n modestbranding: 1,\n playsinline: 1,\n rel: 0,\n showinfo: 0,\n },\n events: {\n onReady: onPlayerReady,\n onStateChange: onPlayerStateChange,\n },\n });\n //}\n //onYouTubeIframeAPIReady();\n // The API will call this function when the video player is ready.\n function onPlayerReady(event) {\n // Play the video straight away\n event.target.playVideo();\n }\n // The API calls this function when the player's state changes.\n // The function indicates that when playing a video (state=1)\n let done = false;\n function onPlayerStateChange(event) {\n if (event.data == YT.PlayerState.PLAYING && !done) {\n const link = document.getElementById(link_id);\n link.classList.add('player-ready');\n done = true;\n }\n }\n});\nexport default videoSupport;\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 { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { cardHTML, setupCard } from '../../modules/card.module.js';\nimport { loadYouTubeScripts, createYoutTubeVideo } from '../../modules/videos.js';\ntrackComponentRegistered('iam-video-card');\nclass iamVideoCard 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/video-card.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n ${loadCSS}\n </style>\n ${cardHTML}\n <dialog>\n <div class=\"embed\"></div>\n </dialog>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const cardComponent = this;\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));\n const link_id = randLetter + Date.now();\n let dialog;\n let embed;\n setupCard(cardComponent);\n // Check if youtube or vimeo video link is present\n if (cardComponent.querySelector('[data-youtube]'))\n cardComponent.setAttribute('data-youtube', cardComponent.querySelector('[data-youtube]').getAttribute('data-youtube'));\n if (cardComponent.querySelector('[data-vimeo]'))\n cardComponent.setAttribute('data-vimeo', cardComponent.querySelector('[data-vimeo]').getAttribute('data-vimeo'));\n // General dialog stuff\n if (cardComponent.hasAttribute('data-youtube') || cardComponent.hasAttribute('data-vimeo')) {\n cardHead.setAttribute('tabindex', '0');\n // Add dialog to page\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n dialog = document.getElementById(`${link_id}-dialog`);\n embed = document.getElementById(link_id);\n }\n // Youtube\n if (cardComponent.hasAttribute('data-youtube')) {\n // Load the scripts only once\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n cardHead.addEventListener('click', function () {\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n createYoutTubeVideo(embed, this.getAttribute('[data-youtbue]'));\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n else if (cardComponent.hasAttribute('data-vimeo')) {\n // Vimeo\n cardHead.addEventListener('click', function () {\n const videoId = cardComponent.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n cardComponent.dispatchEvent(customEvent);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: cardComponent.getAttribute('data-vimeo') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n trackComponent(cardComponent, 'iam-video-card', ['play-video', 'close-video']);\n });\n }\n static get observedAttributes() {\n return ['data-image'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-image': {\n if (oldVal != newVal) {\n const cardHeadImg = this.shadowRoot.querySelector('.card__head img');\n if (cardHeadImg)\n cardHeadImg.setAttribute('src', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamVideoCard;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","cardHTML","setupCard","cardComponent","cardHead","cardBody","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","loadYouTubeScripts","image","tag","firstScriptTag","createYoutTubeVideo","target","video_id","link_id","onPlayerReady","onPlayerStateChange","done","iamVideoCard","template","dialog","embed","customEvent","videoId","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}
1
+ {"version":3,"file":"video-card.component.min.js","sources":["../_global.js","../../modules/card.module.js","../../modules/videos.js","video-card.component.js"],"sourcesContent":["export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","export const cardHTML = `<div class=\"card__head\" part=\"head\">\n <slot name=\"head\"></slot>\n</div>\n<div class=\"card__badges\"><slot name=\"badges\"></slot></div>\n<slot name=\"checkbox\" class=\"activate-prevent-hover\"></slot>\n<div class=\"card__body\" part=\"body\">\n <slot></slot>\n <slot name=\"secondary\" part=\"secondary\"></slot>\n</div>\n<div class=\"card__details\" part=\"details\">\n <slot name=\"details\"></slot>\n</div>\n<div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n</div>`;\nexport const setupCard = (cardComponent) => {\n var _a;\n cardComponent.classList.add('card');\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n if (cardComponent.hasAttribute('data-image')) {\n cardHead.innerHTML += `<img src=\"${cardComponent.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" part=\"image\" />`;\n }\n // Inset the HTML for the data total or icon fallback\n if (cardComponent.hasAttribute('data-total')) {\n if (!(cardBody === null || cardBody === void 0 ? void 0 : cardBody.querySelector('.card__total')))\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\">${cardComponent.getAttribute('data-total')}</div>`);\n else {\n (_a = cardBody === null || cardBody === void 0 ? void 0 : cardBody.querySelector('.card__total')) === null || _a === void 0 ? void 0 : _a.innerHTML = cardComponent.getAttribute('data-total');\n }\n }\n else if (cardComponent.querySelector('[slot=\"total-icon\"]')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\"><slot name=\"total-icon\"></slot></div>`);\n }\n if (!cardComponent.querySelector('[slot=\"badges\"]')) {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.add('empty');\n }\n else {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.remove('empty');\n }\n};\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};\nconst videoSupport = (body) => __awaiter(void 0, void 0, void 0, function* () {\n if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n }), '2000');\n body.addEventListener('click', (event) => __awaiter(void 0, void 0, void 0, function* () {\n let target = event.target.closest('.youtube-link[data-youtube]');\n if (!target) {\n target = event.target.closest('.vimeo-link[data-vimeo]');\n }\n if (target && target.hasAttribute('data-youtube')) {\n event.preventDefault();\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n const link_id = 'youtube-' + target.getAttribute('data-youtube');\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n const dialog = document.getElementById(`${link_id}-dialog`);\n const embed = document.getElementById(link_id);\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: target.getAttribute('data-youtube') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n createYoutTubeVideo(embed, target.getAttribute('data-youtube'));\n dialog.showModal();\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: target.getAttribute('data-youtube') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n });\n }\n else if (target && target.hasAttribute('data-vimeo')) {\n event.preventDefault();\n const link_id = 'vimeo-' + target.getAttribute('data-youtube');\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n const dialog = document.getElementById(`${link_id}-dialog`);\n const embed = document.getElementById(link_id);\n const videoId = target.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: target.getAttribute('data-vimeo') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n });\n }\n }));\n});\nexport const loadYouTubeScripts = () => __awaiter(void 0, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = function () {\n // This code loads the IFrame Player API code asynchronously.\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n document.body.classList.add('youtubeLoaded');\n resolve(true);\n };\n image.onerror = function () {\n reject(false);\n };\n image.src = 'https://youtube.com/favicon.ico';\n });\n});\nexport const createYoutTubeVideo = (target, video_id) => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof window.player == 'undefined') {\n window.player = [];\n }\n const link_id = target.getAttribute('id');\n if (typeof window.player[link_id] != 'undefined' && typeof window.player[link_id].pauseVideo == 'function') {\n window.player[link_id].playVideo();\n return false;\n }\n // This function creates an <iframe> (and YouTube player) after the API code downloads.\n //function onYouTubeIframeAPIReady() {\n window.player[link_id] = new YT.Player(link_id, {\n height: '100%',\n width: '100%',\n videoId: video_id,\n playerVars: {\n modestbranding: 1,\n playsinline: 1,\n rel: 0,\n showinfo: 0,\n },\n events: {\n onReady: onPlayerReady,\n onStateChange: onPlayerStateChange,\n },\n });\n //}\n //onYouTubeIframeAPIReady();\n // The API will call this function when the video player is ready.\n function onPlayerReady(event) {\n // Play the video straight away\n event.target.playVideo();\n }\n // The API calls this function when the player's state changes.\n // The function indicates that when playing a video (state=1)\n let done = false;\n function onPlayerStateChange(event) {\n if (event.data == YT.PlayerState.PLAYING && !done) {\n const link = document.getElementById(link_id);\n link.classList.add('player-ready');\n done = true;\n }\n }\n});\nexport default videoSupport;\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 { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { cardHTML, setupCard } from '../../modules/card.module.js';\nimport { loadYouTubeScripts, createYoutTubeVideo } from '../../modules/videos.js';\ntrackComponentRegistered('iam-video-card');\nclass iamVideoCard 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/video-card.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n ${loadCSS}\n </style>\n ${cardHTML}\n <dialog>\n <div class=\"embed\"></div>\n </dialog>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const cardComponent = this;\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));\n const link_id = randLetter + Date.now();\n let dialog;\n let embed;\n setupCard(cardComponent);\n // Check if youtube or vimeo video link is present\n if (cardComponent.querySelector('[data-youtube]'))\n cardComponent.setAttribute('data-youtube', cardComponent.querySelector('[data-youtube]').getAttribute('data-youtube'));\n if (cardComponent.querySelector('[data-vimeo]'))\n cardComponent.setAttribute('data-vimeo', cardComponent.querySelector('[data-vimeo]').getAttribute('data-vimeo'));\n // General dialog stuff\n if (cardComponent.hasAttribute('data-youtube') || cardComponent.hasAttribute('data-vimeo')) {\n cardHead.setAttribute('tabindex', '0');\n // Add dialog to page\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n dialog = document.getElementById(`${link_id}-dialog`);\n embed = document.getElementById(link_id);\n }\n // Youtube\n if (cardComponent.hasAttribute('data-youtube')) {\n // Load the scripts only once\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n cardHead.addEventListener('click', function () {\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n createYoutTubeVideo(embed, this.getAttribute('[data-youtbue]'));\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n else if (cardComponent.hasAttribute('data-vimeo')) {\n // Vimeo\n cardHead.addEventListener('click', function () {\n const videoId = cardComponent.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n cardComponent.dispatchEvent(customEvent);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: cardComponent.getAttribute('data-vimeo') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n trackComponent(cardComponent, 'iam-video-card', ['play-video', 'close-video']);\n });\n }\n static get observedAttributes() {\n return ['data-image'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-image': {\n if (oldVal != newVal) {\n const cardHeadImg = this.shadowRoot.querySelector('.card__head img');\n if (cardHeadImg)\n cardHeadImg.setAttribute('src', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamVideoCard;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","cardHTML","setupCard","cardComponent","_a","cardHead","cardBody","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","loadYouTubeScripts","image","tag","firstScriptTag","createYoutTubeVideo","target","video_id","link_id","onPlayerReady","onPlayerStateChange","done","iamVideoCard","template","dialog","embed","customEvent","videoId","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.5.1--beta6
2
+ * iamKey v7.5.1--beta7
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const o=i=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:i})};o("iam-word-count");class n extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
5
5
  <style>
@@ -1,5 +1,7 @@
1
1
  function createAppliedFilters(container, filters) {
2
- function addFilterButton(filters, input, notSet = true) {
2
+ var _a;
3
+ const dialog = container.closest('dialog');
4
+ const addFilterButton = (filters, input, setFilter = false) => {
3
5
  let shouldRemoveFilter = false;
4
6
  let inputName = input.getAttribute('name');
5
7
  if (!inputName) {
@@ -19,7 +21,7 @@ function createAppliedFilters(container, filters) {
19
21
  filter.setAttribute('type', 'button');
20
22
  filter.classList.add('filter');
21
23
  filter.classList.add('tag');
22
- if (notSet)
24
+ if (!setFilter)
23
25
  filter.classList.add('tag--not-set');
24
26
  filter.setAttribute('data-name', inputName);
25
27
  filter.innerHTML = filterText.replace('$value', input.value);
@@ -42,7 +44,7 @@ function createAppliedFilters(container, filters) {
42
44
  childFilter.setAttribute('type', 'button');
43
45
  childFilter.classList.add('filter');
44
46
  childFilter.classList.add('tag');
45
- if (notSet)
47
+ if (!setFilter)
46
48
  filter.classList.add('tag--not-set');
47
49
  childFilter.setAttribute('data-name', name);
48
50
  childFilter.innerHTML = filterText.replace('$value', element.value);
@@ -66,82 +68,97 @@ function createAppliedFilters(container, filters) {
66
68
  parentFilter.setAttribute('type', 'button');
67
69
  parentFilter.classList.add('filter');
68
70
  parentFilter.classList.add('tag');
69
- if (notSet)
71
+ if (!setFilter)
70
72
  filter.classList.add('tag--not-set');
71
73
  parentFilter.setAttribute('data-name', inputName);
72
74
  parentFilter.innerHTML = newFilterText;
73
75
  filters.appendChild(parentFilter);
74
76
  }
75
77
  }
76
- }
77
- // check for inputs on load
78
- Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input) => {
79
- addFilterButton(filters, input, false);
80
- });
81
- const dialog = container.closest('dialog');
82
- if (dialog) {
83
- const observer = new MutationObserver(function (event) {
84
- if (event[0].attributeName == 'open') {
85
- Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input) => {
86
- addFilterButton(filters, input, false);
87
- });
88
- }
89
- });
90
- observer.observe(dialog, { attributes: true });
91
- }
92
- container.addEventListener('tags-set', function () {
78
+ };
79
+ const checkForChecked = (setFilter = false) => {
93
80
  filters.innerHTML = '';
94
- Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input) => {
95
- addFilterButton(filters, input, false);
96
- });
97
- });
98
- // check for change in displayed inputs
99
- Array.from(container.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach((input) => {
100
- input.addEventListener('change', function (event) {
101
- if (!container.hasAttribute('data-keep-same'))
102
- addFilterButton(filters, input);
103
- event.stopPropagation(); // Don't allow the below event handler to trigger
81
+ Array.from(container.querySelectorAll('input:is([type="checkbox"],[type="radio"]):checked, input:not([type="checkbox"], [type="radio"])')).forEach((input) => {
82
+ addFilterButton(filters, input, setFilter);
104
83
  });
105
- });
106
- // Some change event aren't getting triggered above so this event listener on the container will pick them up. This happens with input in modals
84
+ };
85
+ // Check for which inputs have been set, setting true sets the filter as set (blue)
86
+ checkForChecked(true);
87
+ // Create the main event listener for the component watching for inputs to change
107
88
  container.addEventListener('change', function (event) {
89
+ var _a;
108
90
  if (event && event.target instanceof HTMLElement && event.target.closest('input[data-filter-text]')) {
91
+ const setFilter = container.closest('dialog') ? false : true;
109
92
  const input = event.target.closest('input[data-filter-text]');
110
- if (!container.hasAttribute('data-keep-same'))
111
- addFilterButton(filters, input);
93
+ if (!container.hasAttribute('data-keep-same') && !container.querySelector('dialog'))
94
+ addFilterButton(filters, input, setFilter);
95
+ if (setFilter) {
96
+ const event = new CustomEvent('update');
97
+ (_a = container.parentElement.closest('iam-applied-filters')) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
98
+ }
112
99
  }
113
100
  });
101
+ const filterClicked = (filter) => {
102
+ const names = filter.getAttribute('data-name').split(',');
103
+ for (let t = 0; t < names.length; t++) {
104
+ const name = names[t];
105
+ let selector = `[name="${name}"]`;
106
+ if (name.match(/\[(.*)\]/)) {
107
+ //const newName = name.replace(/\[(.*)\]/, `[]`);
108
+ const value = name.replace(/.*\[(.*)\]/, `$1`);
109
+ selector = `[value="${value}"]`;
110
+ }
111
+ const inputs = container.querySelectorAll(selector);
112
+ for (let i = 0; i < inputs.length; i++) {
113
+ const input = inputs[i];
114
+ if (input.getAttribute('type') != 'radio' && input.getAttribute('type') != 'checkbox') {
115
+ input.value = '';
116
+ }
117
+ else {
118
+ input.checked = false;
119
+ }
120
+ }
121
+ }
122
+ filter.remove();
123
+ checkForChecked();
124
+ };
114
125
  filters.addEventListener('click', function (event) {
115
126
  if (event && event.target instanceof HTMLElement && event.target.closest('.filter')) {
116
127
  const filter = event.target.closest('.filter');
117
- const names = filter.getAttribute('data-name').split(',');
118
- for (let t = 0; t < names.length; t++) {
119
- const name = names[t];
120
- let selector = `[name="${name}"]`;
121
- if (name.match(/\[(.*)\]/)) {
122
- //const newName = name.replace(/\[(.*)\]/, `[]`);
123
- const value = name.replace(/.*\[(.*)\]/, `$1`);
124
- selector = `[value="${value}"]`;
125
- }
126
- const inputs = container.querySelectorAll(selector);
127
- for (let i = 0; i < inputs.length; i++) {
128
- const input = inputs[i];
129
- if (input.getAttribute('type') != 'radio' && input.getAttribute('type') != 'checkbox') {
130
- input.value = '';
131
- const event = new Event('force');
132
- if (!container.hasAttribute('data-nosubmit'))
133
- input.closest('form').dispatchEvent(event);
134
- }
135
- else {
136
- input.checked = false;
137
- const event = new Event('force');
138
- if (!container.hasAttribute('data-nosubmit'))
139
- input.closest('form').dispatchEvent(event);
140
- }
141
- }
128
+ const filterName = filter.getAttribute('data-name');
129
+ filterClicked(filter);
130
+ // If you clicked on the filter on the parent component we want to tell the child component which filter to copy
131
+ if (container.querySelector('dialog iam-applied-filters')) {
132
+ const event = new CustomEvent('filter', { 'detail': filterName });
133
+ container.querySelector('dialog iam-applied-filters').dispatchEvent(event);
142
134
  }
143
- filter.remove();
144
135
  }
145
136
  }, false);
137
+ // Listen for
138
+ container.addEventListener('filter', (e) => {
139
+ const filter = container.shadowRoot.querySelector(`[data-name="${e.detail}"]`);
140
+ filterClicked(filter);
141
+ });
142
+ container.addEventListener('set-filters', (e) => {
143
+ checkForChecked(true);
144
+ });
145
+ if (dialog) {
146
+ // Force the filters inside of the dialog to effect the filters above
147
+ (_a = container.querySelector('.btn-primary')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (e) => {
148
+ const event = new CustomEvent('update');
149
+ if (container.parentElement.closest('iam-applied-filters'))
150
+ container.parentElement.closest('iam-applied-filters').dispatchEvent(event);
151
+ if (container.parentElement && container.parentElement.closest('iam-applied-filters') && !container.parentElement.closest('iam-applied-filters').closest('dialog')) {
152
+ const event = new CustomEvent('set-filters');
153
+ container.parentElement.closest('iam-applied-filters').dispatchEvent(event);
154
+ }
155
+ checkForChecked(true);
156
+ if (!container.querySelector('.btn-primary').hasAttribute('command')) {
157
+ dialog.close();
158
+ const event = new Event('close');
159
+ dialog.dispatchEvent(event);
160
+ }
161
+ });
162
+ }
146
163
  }
147
164
  export default createAppliedFilters;
@@ -14,6 +14,7 @@ export const cardHTML = `<div class="card__head" part="head">
14
14
  <slot name="footer"></slot>
15
15
  </div>`;
16
16
  export const setupCard = (cardComponent) => {
17
+ var _a;
17
18
  cardComponent.classList.add('card');
18
19
  const cardHead = cardComponent.shadowRoot.querySelector('.card__head');
19
20
  const cardBody = cardComponent.shadowRoot.querySelector('.card__body');
@@ -22,7 +23,11 @@ export const setupCard = (cardComponent) => {
22
23
  }
23
24
  // Inset the HTML for the data total or icon fallback
24
25
  if (cardComponent.hasAttribute('data-total')) {
25
- cardBody.insertAdjacentHTML('beforeend', `<div class="card__total">${cardComponent.getAttribute('data-total')}</div>`);
26
+ if (!(cardBody === null || cardBody === void 0 ? void 0 : cardBody.querySelector('.card__total')))
27
+ cardBody.insertAdjacentHTML('beforeend', `<div class="card__total">${cardComponent.getAttribute('data-total')}</div>`);
28
+ else {
29
+ (_a = cardBody === null || cardBody === void 0 ? void 0 : cardBody.querySelector('.card__total')) === null || _a === void 0 ? void 0 : _a.innerHTML = cardComponent.getAttribute('data-total');
30
+ }
26
31
  }
27
32
  else if (cardComponent.querySelector('[slot="total-icon"]')) {
28
33
  cardBody.insertAdjacentHTML('beforeend', `<div class="card__total"><slot name="total-icon"></slot></div>`);
@@ -19,6 +19,10 @@ const extendDialogs = (body) => {
19
19
  ? button.getAttribute('data-modal')
20
20
  : button.getAttribute('data-filter');
21
21
  const dialog = document.querySelector(`dialog#${modalID}`);
22
+ if (document.querySelector(`iam-modal#${modalID}`))
23
+ return false;
24
+ if (document.querySelector(`iam-multi-step-modal#${modalID}`))
25
+ return false;
22
26
  createDialog(dialog);
23
27
  // Open the modal!
24
28
  dialog.showModal();
@@ -181,7 +185,7 @@ const extendDialogs = (body) => {
181
185
  };
182
186
  export const createDialog = (dialog) => {
183
187
  // If you are using Vue eevents and bindings its recommended to add in the .mh-lg div manually to the dialog
184
- if (!dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
188
+ if (dialog && !dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
185
189
  dialog.innerHTML = `<div class="mh-lg">${dialog.innerHTML}</div>`;
186
190
  const dialogContent = dialog.querySelector('.mh-lg');
187
191
  const titleElement = dialog.querySelector('.mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)');
@@ -193,7 +197,7 @@ export const createDialog = (dialog) => {
193
197
  }
194
198
  }
195
199
  // Create close button is needed
196
- if (!dialog.querySelector(':scope > button:first-child'))
200
+ if (dialog && !dialog.querySelector(':scope > button:first-child'))
197
201
  dialog.insertAdjacentHTML('afterbegin', `<button class="dialog__close">Close</button>`);
198
202
  };
199
203
  export default extendDialogs;