@iamproperty/components 7.2.1 → 7.2.2--beta2

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 (50) hide show
  1. package/assets/css/components/fileupload.css +1 -1
  2. package/assets/css/components/fileupload.css.map +1 -1
  3. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  4. package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
  5. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  6. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  7. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  8. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  9. package/assets/js/components/card/card.component.js +19 -0
  10. package/assets/js/components/card/card.component.min.js +6 -6
  11. package/assets/js/components/card/card.component.min.js.map +1 -1
  12. package/assets/js/components/carousel/carousel.component.min.js +1 -1
  13. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  14. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  15. package/assets/js/components/fileupload/fileupload.component.js +1 -1
  16. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  17. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  18. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  19. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  20. package/assets/js/components/header/header.component.min.js +1 -1
  21. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  22. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  23. package/assets/js/components/menu/menu.component.min.js +1 -1
  24. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  25. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  26. package/assets/js/components/nav/nav.component.min.js +1 -1
  27. package/assets/js/components/notification/notification.component.min.js +1 -1
  28. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  29. package/assets/js/components/rank/rank.component.min.js +1 -1
  30. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  31. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  32. package/assets/js/components/search/search.component.min.js +1 -1
  33. package/assets/js/components/slider/slider.component.min.js +1 -1
  34. package/assets/js/components/table/table.component.min.js +1 -1
  35. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  36. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  37. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  38. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  39. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  40. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  41. package/assets/js/modules/fileupload.js +2 -2
  42. package/assets/js/scripts.bundle.js +1 -1
  43. package/assets/js/scripts.bundle.min.js +1 -1
  44. package/assets/sass/components/fileupload.scss +1 -0
  45. package/assets/ts/components/card/card.component.ts +29 -0
  46. package/assets/ts/components/fileupload/fileupload.component.ts +1 -1
  47. package/assets/ts/modules/fileupload.ts +2 -2
  48. package/dist/components.es.js +18 -18
  49. package/dist/components.umd.js +88 -88
  50. package/package.json +1 -1
@@ -1 +1 @@
1
- .file-upload{max-width:25rem !important;padding-bottom:1rem}.file-upload .drop-area>input{display:none}.file-upload .file-upload__title{margin-top:0;margin-bottom:0;font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);clear:both;display:block;padding-bottom:2rem;font-size:1.5rem;line-height:2rem;padding-bottom:2rem;max-width:var(--content-max-width)}.file-upload .helper-text{max-width:16.875rem}.files span{display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);border:2px solid var(--colour-primary-theme);appearance:none;border-radius:0.5rem;margin-bottom:1rem;color:var(--colour-primary);border-color:#d8d8d8;background:#d8d8d8;max-width:25rem !important;position:relative}@media(forced-colors: active){.files span{padding-right:5rem}.files span button{padding:0;width:3.7rem !important;text-indent:0% !important}.files span button:after{display:none !important}}.files span button{position:absolute;top:calc(50% - 0.5625rem);right:0.875rem;z-index:var(--index-floating);text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0)}.files span button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(.fileupload--drag-drop) .file-upload{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .helper-text{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .drop-area>input{display:block;min-height:12.5rem;border:2px dashed var(--colour-primary-theme);color:rgba(0,0,0,0);position:relative;padding:1.5rem 2rem 1.5rem 2rem;user-select:none;max-width:100%;min-width:100%;margin-bottom:1rem}:host(.fileupload--drag-drop) .file-upload .drop-area>input.focus{border:2px solid var(--colour-info)}:host(.fileupload--drag-drop) .file-upload .drop-area{position:relative}:host(.fileupload--drag-drop) .file-upload .drop-area::before{content:"Drag and drop files here or click to upload";position:absolute;inset:1.5rem 2rem 1.5rem 2rem;z-index:1;pointer-events:none}:host(.fileupload--drag-drop) .file-upload ::file-selector-button{position:absolute;inset:0;opacity:0}/*# sourceMappingURL=fileupload.css.map */
1
+ .file-upload{max-width:25rem !important;padding-bottom:1rem}.file-upload .drop-area>input{display:none}.file-upload .file-upload__title{margin-top:0;margin-bottom:0;font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);clear:both;display:block;padding-bottom:2rem;font-size:1.5rem;line-height:2rem;padding-bottom:2rem;max-width:var(--content-max-width)}.file-upload .helper-text{max-width:16.875rem}.files span{display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);border:2px solid var(--colour-primary-theme);appearance:none;border-radius:0.5rem;margin-bottom:1rem;color:var(--colour-primary);border-color:#d8d8d8;background:#d8d8d8;max-width:25rem !important;position:relative}@media(forced-colors: active){.files span{padding-right:5rem}.files span button{padding:0;width:3.7rem !important;text-indent:0% !important}.files span button:after{display:none !important}}.files span button{position:absolute;top:calc(50% - 0.5625rem);right:0.875rem;z-index:var(--index-floating);text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0);color:inherit}.files span button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(.fileupload--drag-drop) .file-upload{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .helper-text{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .drop-area>input{display:block;min-height:12.5rem;border:2px dashed var(--colour-primary-theme);color:rgba(0,0,0,0);position:relative;padding:1.5rem 2rem 1.5rem 2rem;user-select:none;max-width:100%;min-width:100%;margin-bottom:1rem}:host(.fileupload--drag-drop) .file-upload .drop-area>input.focus{border:2px solid var(--colour-info)}:host(.fileupload--drag-drop) .file-upload .drop-area{position:relative}:host(.fileupload--drag-drop) .file-upload .drop-area::before{content:"Drag and drop files here or click to upload";position:absolute;inset:1.5rem 2rem 1.5rem 2rem;z-index:1;pointer-events:none}:host(.fileupload--drag-drop) .file-upload ::file-selector-button{position:absolute;inset:0;opacity:0}/*# sourceMappingURL=fileupload.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/fileupload.scss","../../sass/_functions/variables.scss"],"names":[],"mappings":"AAIA,aACE,2BACA,oBAEA,8BACE,aAGF,iCACE,aACA,cCygBqB,EDxgBrB,YCogBmB,oBDngBnB,WCwgBkB,ODvgBlB,YCmgBmB,sBDlgBnB,YCugBmB,KDtgBnB,MCkgBa,sBDjgBb,WACA,cACA,oBAEA,iBACA,iBACA,oBACA,mCAGF,0BACE,oBAKF,YACE,cACA,WACA,8EACA,gCACA,qCACA,6CACA,gBACA,qBACA,mBACA,4BACA,qBACA,mBACA,2BACA,kBAEA,8BAhBF,YAiBI,mBAEA,mBACE,UACA,wBACA,0BAEA,yBACE,yBAKN,mBACE,kBACA,0BACA,eACA,8BACA,iBACA,gBACA,YACA,gBACA,eACA,yBAEA,yBACE,WACA,MACA,OACA,kBACA,cACA,gBACA,eACA,2BACA,wBACA,6BACA,eACA,sBACA,sBACA,qCACA,uBACA,8BACA,8BAMR,2CACE,2BAEA,wDACE,2BAGF,4DACE,cACA,mBACA,8CACA,oBACA,kBACA,gCACA,iBACA,eACA,eACA,mBAEA,kEACE,oCAIJ,sDACE,kBAGF,8DACE,sDACA,kBACA,8BACA,UACA,oBAGF,kEACE,kBACA,QACA","file":"fileupload.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../sass/components/fileupload.scss","../../sass/_functions/variables.scss"],"names":[],"mappings":"AAIA,aACE,2BACA,oBAEA,8BACE,aAGF,iCACE,aACA,cCygBqB,EDxgBrB,YCogBmB,oBDngBnB,WCwgBkB,ODvgBlB,YCmgBmB,sBDlgBnB,YCugBmB,KDtgBnB,MCkgBa,sBDjgBb,WACA,cACA,oBAEA,iBACA,iBACA,oBACA,mCAGF,0BACE,oBAKF,YACE,cACA,WACA,8EACA,gCACA,qCACA,6CACA,gBACA,qBACA,mBACA,4BACA,qBACA,mBACA,2BACA,kBAEA,8BAhBF,YAiBI,mBAEA,mBACE,UACA,wBACA,0BAEA,yBACE,yBAKN,mBACE,kBACA,0BACA,eACA,8BACA,iBACA,gBACA,YACA,gBACA,eACA,yBACA,cAEA,yBACE,WACA,MACA,OACA,kBACA,cACA,gBACA,eACA,2BACA,wBACA,6BACA,eACA,sBACA,sBACA,qCACA,uBACA,8BACA,8BAMR,2CACE,2BAEA,wDACE,2BAGF,4DACE,cACA,mBACA,8CACA,oBACA,kBACA,gCACA,iBACA,eACA,eACA,mBAEA,kEACE,oCAIJ,sDACE,kBAGF,8DACE,sDACA,kBACA,8BACA,UACA,oBAGF,kEACE,kBACA,QACA","file":"fileupload.css"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"accordion"});class a extends HTMLElement{constructor(){var t;super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",o=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,s=document.createElement("template");s.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const B=r=>(Array.from(r.querySelectorAll("dialog[open]")).forEach(t=>{t.closest(".dialog__wrapper")||(t.removeAttribute("open"),t.showModal(),t.focus(),H(t))}),r.addEventListener("click",t=>{if(t.target.tagName=="IAM-ACTIONBAR")return!1;if(t&&t.target instanceof HTMLElement&&t.target.closest("[data-modal]")){const o=t.target.closest("[data-modal]"),b=o.hasAttribute("data-modal")?o.getAttribute("data-modal"):o.getAttribute("data-filter"),d=document.querySelector(`dialog#${b}`);if(H(d),d.showModal(),d.focus(),!d.querySelector("iam-multi-step")){const l=d.offsetWidth;d.setAttribute("style",`max-width: ${l}px;`)}Array.from(d.querySelectorAll("[data-duplicate]")).forEach(l=>{const v=l.getAttribute("data-duplicate"),u=document.getElementById(v);if(l.checked!=u.checked){l.checked=u.checked;const g=new Event("change");l.dispatchEvent(g)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:b})}if(t&&t.target instanceof HTMLElement&&t.target.closest("button.dialog__close")){const o=t.target.closest("dialog[open]");t.preventDefault(),o.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach(d=>{d.classList.remove("active")});const b=new CustomEvent("dialog-closed",{bubbles:!0,cancelable:!0,detail:{modalId:o.id}});t.target.dispatchEvent(b),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:o.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest('button[formmethod="dialog"]')){const o=t.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach(b=>{b.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:o.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest("dialog[open]")){let o=t.target.closest("dialog[open]");if(window.getComputedStyle(o).display==="contents"&&(o=o.parentNode.closest("dialog[open]")),!o.classList.contains("dialog--transactional")&&!o.classList.contains("dialog--acknowledgement")){const d=o.getBoundingClientRect();(t.clientX<d.left||t.clientX>d.right||t.clientY<d.top||t.clientY>d.bottom)&&(t.target.closest("dialog *")||o.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:o.getAttribute("id")}))}}if(t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__wrapper > button")){t.stopPropagation();const o=t.target.closest(".dialog__wrapper > button"),b=o.parentNode;let d="openPopover";const l=b.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=l&&o.closest("dialog[open]")!=document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach(k=>{k.removeAttribute("aria-expanded")}),l.hasAttribute("open"))l.close(),d="closePopover",l.removeAttribute("style"),o.removeAttribute("aria-expanded");else{l.show(),o.setAttribute("aria-expanded",!0);const k=o.getBoundingClientRect();let A=k.top,w=k.left;if(o.closest("iam-table")){const f=o.closest("iam-table").parentNode.getBoundingClientRect();A-=f.top,w-=f.left}l.classList.contains("dialog--fix")&&l.setAttribute("style",`position:fixed;top: ${A}px; left: ${w}px; margin: 3rem 0 0 0;`)}let v=l.getBoundingClientRect();const u=v.bottom-window.scrollY,g=window.innerHeight-window.scrollY;if(u>g){const k=l.hasAttribute("style")?l.getAttribute("style")+" ":"";l.setAttribute("style",k+"transform: translate(0, calc(-100% - 4rem))"),v=l.getBoundingClientRect(),v.top-window.scrollY<100&&l.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:d,id:o.textContent})}t&&t.target instanceof HTMLElement&&!t.target.closest("dialog[open]")&&!t.target.closest(".dialog__wrapper > button")&&(document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]")&&document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper:not([data-keep-open]) > button")).forEach(o=>{o.removeAttribute("aria-expanded")}))}),null),H=r=>{if(!r.querySelector(":scope .mh-lg")&&!r.querySelector("iam-multi-step")){r.innerHTML=`<div class="mh-lg">${r.innerHTML}</div>`;const t=r.querySelector(".mh-lg"),o=r.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(o){const b=o.previousSibling;t.before(o),b&&o.before(b)}}r.querySelector(":scope > button:first-child")||r.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"action bar"});function R(r,t){r&&t=="all"?(r.querySelector("input").indeterminate=!1,r.querySelector("input").checked=!0,r.querySelector("label").textContent="Select all"):r&&t==0?(r.querySelector("input").indeterminate=!1,r.querySelector("input").checked=!1,r.querySelector("label").textContent="Select all"):r&&t?(r.querySelector("input").indeterminate=!0,r.querySelector("input").checked=!1,r.querySelector("label").textContent=`${t} item${t>1?"s":""} selected`):r&&(r.querySelector("input").checked=!1,r.querySelector("input").indeterminate=!1,r.querySelector("label").textContent="Select all")}class T 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,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */import g from"js-cookie";var $=function(L,o,r,a){function u(d){return d instanceof r?d:new r(function(h){h(d)})}return new(r||(r=Promise))(function(d,h){function b(n){try{m(a.next(n))}catch(f){h(f)}}function v(n){try{m(a.throw(n))}catch(f){h(f)}}function m(n){n.done?d(n.value):u(n.value).then(b,v)}m((a=a.apply(L,o||[])).next())})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Address Lookup"});class j extends HTMLElement{constructor(){var o;super(),this.attachShadow({mode:"open"});const r=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",a=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${r}/css/core.min.css`,u=document.createElement("template");u.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */function A(o,l){function p(t,e,c=!0){let m=!1,s=e.getAttribute("name");if(!s)return!1;s.includes("[]")&&(s=s.replace("[]",`[${e.value}]`));let a=t.querySelector(`[data-name="${s}"]`);a&&e.getAttribute("type")=="checkbox"&&(m=!e.checked);const h=e.getAttribute("data-filter-text");if(a||(a=document.createElement("button"),t.appendChild(a)),a.setAttribute("type","button"),a.classList.add("filter"),a.classList.add("tag"),c&&a.classList.add("tag--not-set"),a.setAttribute("data-name",s),a.innerHTML=h.replace("$value",e.value),(!e.value||m)&&a.remove(),e.parentNode.closest("[data-filter-text]")){const n=e.parentNode.closest("[data-filter-text]");let i=!0;if(s="",n.querySelectorAll("input").forEach((r,d)=>{const f=r.getAttribute("name");if(s+=`${d!=0?",":""}${f}`,t.querySelector(`[data-name="${f}"]`)&&t.querySelector(`[data-name="${f}"]`).remove(),r.value){const u=document.createElement("button");u.setAttribute("type","button"),u.classList.add("filter"),u.classList.add("tag"),c&&a.classList.add("tag--not-set"),u.setAttribute("data-name",f),u.innerHTML=h.replace("$value",r.value),t.appendChild(u)}else i=!1}),t.querySelector(`[data-name="${s}"]`)&&t.querySelector(`[data-name="${s}"]`).remove(),i){let r=n.getAttribute("data-filter-text");n.querySelectorAll("input").forEach((f,u)=>{const y=f.getAttribute("name");t.querySelector(`[data-name="${y}"]`)&&t.querySelector(`[data-name="${y}"]`).remove(),r=r.replace(`$${u+1}`,f.value)});const d=document.createElement("button");d.setAttribute("type","button"),d.classList.add("filter"),d.classList.add("tag"),c&&a.classList.add("tag--not-set"),d.setAttribute("data-name",s),d.innerHTML=r,t.appendChild(d)}}}Array.from(o.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(t=>{p(l,t,!1)});const b=o.closest("dialog");b&&new MutationObserver(function(e){e[0].attributeName=="open"&&Array.from(o.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(c=>{p(l,c,!1)})}).observe(b,{attributes:!0}),o.addEventListener("tags-set",function(){l.innerHTML="",Array.from(o.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(t=>{p(l,t,!1)})}),Array.from(o.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(t=>{t.addEventListener("change",function(e){o.hasAttribute("data-keep-same")||p(l,t),e.stopPropagation()})}),o.addEventListener("change",function(t){if(t&&t.target instanceof HTMLElement&&t.target.closest("input[data-filter-text]")){const e=t.target.closest("input[data-filter-text]");o.hasAttribute("data-keep-same")||p(l,e)}}),l.addEventListener("click",function(t){if(t&&t.target instanceof HTMLElement&&t.target.closest(".filter")){const e=t.target.closest(".filter"),c=e.getAttribute("data-name").split(",");for(let m=0;m<c.length;m++){const s=c[m];let a=`[name="${s}"]`;s.match(/\[(.*)\]/)&&(a=`[value="${s.replace(/.*\[(.*)\]/,"$1")}"]`);const h=o.querySelectorAll(a);for(let n=0;n<h.length;n++){const i=h[n];if(i.getAttribute("type")!="radio"&&i.getAttribute("type")!="checkbox"){i.value="";const r=new Event("force");o.hasAttribute("data-nosubmit")||i.closest("form").dispatchEvent(r)}else{i.checked=!1;const r=new Event("force");o.hasAttribute("data-nosubmit")||i.closest("form").dispatchEvent(r)}}}e.remove()}},!1)}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Applied Filters"});class g extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const l=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",p=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${l}/css/core.min.css`,b=this.classList.toString(),t=document.createElement("template");t.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const L=t=>t.charAt(0).toUpperCase()+t.slice(1),M=t=>t.replace(/_/g," "),E=(t,r)=>{for(let e=1;e<=10;e++){if(t.hasAttribute(`data-colour-${e}`)){const a=t.getAttribute(`data-colour-${e}`);t.style.setProperty(`--chart-colour-${e}`,`var(--chart-colour-${a})`),t.style.setProperty(`--chart-colour-${e}-hover`,`var(--chart-colour-${a}-hover)`)}Array.from(r.querySelectorAll(`[data-colour-${e}]`)).forEach(a=>{const o=a.getAttribute(`data-colour-${e}`);a.style.setProperty(`--chart-colour-${e}-set`,`var(--chart-colour-${o})`),a.style.setProperty(`--chart-colour-${e}-hover`,`var(--chart-colour-${o}-hover)`)})}return!0},k=(t,r,e)=>{if(t.tagName=="IAM-DOUGHNUTCHART")return P(t,r,e),!0;const a=r.querySelector(".chart__key");a.innerHTML="";const o=r.querySelector(".chart__guidelines");o.innerHTML="";const n=r.querySelector(".chart__yaxis");n.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(i=>{i.remove()});const{xaxis:c}=f(t);return A(t,e),T(r,e,a),K(t,o),X(t,n),c&&Y(r),!0},P=(t,r,e)=>{const a=r.querySelector(".chart__key");return a.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(o=>{o.remove()}),A(t,e),T(r,e,a),F(r),!0},N=function(t,r){const e=r.querySelector(".chart");e.addEventListener("mousemove",c=>{if(c&&c.target instanceof HTMLElement&&c.target.closest("td:not(:first-child")){const h=c.target.closest("td:not(:first-child").getBoundingClientRect(),s=c.clientX-h.left,l=c.clientY-h.top;e.setAttribute("style",`--cursor-x: ${s}px; --cursor-y: ${l}px;`)}});const a=r.querySelectorAll("label");Array.from(a).forEach(c=>{r.querySelector(`input#${c.getAttribute("for")}`).checked?c.setAttribute("part","key-checked"):c.setAttribute("part","key-unchecked")});const o=t.querySelector("table"),n=r.querySelector("table");r.addEventListener("change",function(c){const i=c.target,h=new CustomEvent("view-change",{detail:{"data-dataset":i.getAttribute("data-dataset"),label:i.getAttribute("data-label"),checked:i.checked}});t.dispatchEvent(h),Array.from(a).forEach(s=>{var l;!((l=r.querySelector(`input#${s.getAttribute("for")}`))===null||l===void 0)&&l.checked?s.setAttribute("part","key-checked"):s.setAttribute("part","key-unchecked")}),n.innerHTML=o.innerHTML,A(t,n),t.tagName=="IAM-DOUGHNUTCHART"&&F(r)})},R=function(t,r){const e=t.querySelector("table"),a=r.querySelector("table"),o=(h,s)=>{s.disconnect(),i.disconnect();for(const l of h)(l.attributeName=="class"||l.type==="attributes"||l.type==="attributes")&&(a.innerHTML=e.innerHTML,k(t,r,a));s.observe(e,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0})},n=(h,s)=>{s.disconnect(),i.disconnect();for(const l of h)(l.type=="characterData"||l.type=="childList"&&l.addedNodes.length)&&(a.innerHTML=e.innerHTML,k(t,r,a));s.observe(e,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0})},c=new MutationObserver(n),i=new MutationObserver(o);return c.observe(e,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0}),!0};function q(t,r){r>1&&(t=t-.25);const e=Math.cos(2*Math.PI*t),a=Math.sin(2*Math.PI*t);return[e*100,a*100]}const f=function(t){const r=t.shadowRoot.querySelector(".chart__wrapper table"),e=t.hasAttribute("data-min")?t.getAttribute("data-min"):0,a=t.hasAttribute("data-max")?t.getAttribute("data-max"):V(t,r),o=t.hasAttribute("data-yaxis")?t.getAttribute("data-yaxis").split(","):[],n=t.hasAttribute("data-guidelines")?t.getAttribute("data-guidelines").split(","):[],c=t.hasAttribute("data-xaxis")?t.getAttribute("data-xaxis").split(","):null;return{min:e,max:a,yaxis:o,xaxis:c,guidelines:n}};function V(t,r){const e=t.classList.contains("chart--stacked")?"tbody tr":"tbody td:not(:first-child)",a=Array.from(r.querySelectorAll(e)).map(n=>n.getAttribute("data-numeric")),o=Math.max(...a);return Math.ceil(o)}const x=function(t,r,e,a){let o=String(t);o=o.replace("\xA3",""),o=o.replace("%",""),o=o.replace(",",""),o=Number.parseFloat(o);let n=(o-r)/(e-r)*100,c=n,i=0;return a&&a!=0&&(i=(a-r)/(e-r)*100),r<0&&(i=Math.abs(r/(e-r)*100),o<0?(n=i-n,i=i-n,c=i):(n=n-i,c=n+i)),{percent:n,axis:c,bottom:i}},A=function(t,r){Array.from(r.querySelectorAll("tbody tr")).forEach(o=>{let n=0;Array.from(o.querySelectorAll("td:not(:first-child)")).forEach(c=>{const i=c.cloneNode(!0);Array.from(i.querySelectorAll("*")).forEach(l=>{l.remove()});const h=parseFloat(i.textContent.replace("\xA3","").replace("%","").replace(",",""));c.setAttribute("data-numeric",h),c.setAttribute("data-value",i.textContent),getComputedStyle(c).display!="none"&&(n+=h),Array.from(c.querySelectorAll("a, button")).forEach((l,m)=>{m==0&&l.insertAdjacentHTML("beforeBegin","<hr/>"),l.classList.add("btn"),l.classList.add("btn-tertiary")})}),o.setAttribute("data-numeric",n)});const{min:e,max:a}=f(t);Array.from(r.querySelectorAll("tbody tr")).forEach((o,n)=>{const c=o.querySelector("td:first-child, th:first-child")?o.querySelector("td:first-child, th:first-child").textContent:"";o.setAttribute("part","group");const i=(o.getAttribute("data-numeric")-e)/(a-e)*100;o.style.setProperty("--percent",`${i}%`),Array.from(o.querySelectorAll("td:not([data-label])")).forEach((l,m)=>{m==0?l.setAttribute("part","xaxis-label"):l.setAttribute("part","value"),o.querySelectorAll("td").length>2&&l.setAttribute("data-label",r.querySelectorAll("thead th")[m].textContent)});const h=o.hasAttribute("data-min")?o.getAttribute("data-min"):e,s=o.hasAttribute("data-max")?o.getAttribute("data-max"):a;if(h<0){const l=Math.abs(h/(s-h)*100);t.setAttribute("style",`--min-bottom: ${l}%;`)}o.style.setProperty("--row-index",n+1),Array.from(o.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')).forEach(l=>{if(getComputedStyle(l).display=="none")return;const y=l.innerHTML,g=Number.parseFloat(l.getAttribute("data-numeric")),d=Number.parseFloat(l.getAttribute("data-start"));if(l.querySelector("span[data-group]")||(l.innerHTML=`<span data-group="${c}" ${l.hasAttribute("data-label")?`data-label="${l.getAttribute("data-label")}"`:""} part="popover">${y}</span>`),!l.hasAttribute("style")){const{percent:u,bottom:v,axis:p}=x(g,h,s,d);l.setAttribute("data-percent",u),l.setAttribute("style",`--bottom:${v}%;--percent:${u}%;--axis:${p}%;`)}})})},U=function(t){const r=t.querySelector(".chart__wrapper"),e=t.querySelector(".chart__spacer span"),a=t.querySelector(".chart table");let o="";Array.from(a.querySelectorAll("tbody tr td:first-child")).forEach(n=>{typeof n.textContent<"u"&&n.textContent.length>o.length&&(o=n.textContent)}),r.setAttribute("data-longest-label",o),e.innerHTML=o},I=function(t){const r=t.querySelector(".chart__wrapper"),e=t.querySelector(".chart table");let a="";Array.from(e.querySelectorAll("tbody tr td:not(:first-child)")).forEach(o=>{typeof o.getAttribute("data-value")<"u"&&o.getAttribute("data-value").length>a.length&&(a=o.getAttribute("data-value"))}),r.setAttribute("data-longest-value",a)},T=function(t,r,e){const a=`chart-${Date.now()+(Math.floor(Math.random()*100)+1)}`;let o;const n=Array.from(r.querySelectorAll("thead th"));return n.forEach((c,i)=>{i!=0&&(o=j(a,i,c.textContent,e,t,o)),i==50&&(n.length=i+1)}),!0};function j(t,r,e,a,o,n){var c;const i=document.createElement("input");i.setAttribute("name",`${t}-dataset-${r}`),i.setAttribute("id",`${t}-dataset-${r}`),i.setAttribute("data-dataset",`${r}`),i.setAttribute("data-label",`${e}`),i.checked=!0,i.setAttribute("type","checkbox"),r==1?o.prepend(i):o.insertBefore(i,n.nextSibling),n=i;const h=document.createElement("label");h.setAttribute("class","key btn btn-action"),h.setAttribute("for",`${t}-dataset-${r}`),h.setAttribute("data-label",`${e}`),h.setAttribute("part","key");const s=(c=o.querySelector(`tbody tr td:nth-child(${r+1})`))===null||c===void 0?void 0:c.getAttribute("data-numeric");return h.setAttribute("data-numeric",s),h.innerHTML=`${e}`,a.append(h),n}const K=function(t,r){const{min:e,max:a,yaxis:o}=f(t);let{guidelines:n}=f(t);n.length||(n=o),r.innerHTML="";for(let c=0;c<n.length;c++){const i=parseFloat(n[c].replace("\xA3","").replace("%","").replace(",","")),{axis:h}=x(i,e,a);r.innerHTML+=`<div class="guideline" style="--percent:${h}%;">${o.indexOf(n[c])!=-1?`<span>${n[c]}</span>`:""}</div>`}},X=function(t,r){const{min:e,max:a,yaxis:o}=f(t);r.innerHTML="";for(let n=0;n<o.length;n++){const c=parseFloat(o[n].replace("\xA3","").replace("%","")),{axis:i}=x(c,e,a);r.innerHTML+=`<div class="axis__point" style="--percent:${i}%;"><span>${o[n]}</span></div>`}},Y=function(t){const r=t.querySelector(".chart");let e=t.querySelector(".chart__xaxis");e||(e=document.createElement("div"),e.setAttribute("class","chart__xaxis")),r.prepend(e)},G=function(t){const r=t.querySelectorAll("thead th[title], tbody th[title]:first-child, tbody td[title]:first-child");Array.from(r).forEach(e=>{const a=`tooltip-${Date.now()}-${Math.floor(Math.random()*100)}`;e.innerHTML=`<button class="tooltip" popovertarget="${a}" part="tooltip" style="anchor-name: --${a};">${e.textContent}</button><span id="${a}" style="position-anchor: --${a};" popover part="tooltip__content" class="tooltip__content">${e.getAttribute("title")}</span>`})},F=function(t){let r="";const e=t.querySelector(".chart");let a=t.querySelector(".doughnuts");a||(a=document.createElement("div"),a.setAttribute("class","doughnuts"),e.append(a)),Array.from(e.querySelectorAll("tbody tr")).forEach((o,n)=>{let c="",i="",h=0,s=0;const m=o.querySelectorAll("td")[0].innerHTML;let y=0;const g=o.getAttribute("data-numeric");Array.from(o.querySelectorAll("td")).forEach((d,u)=>{const v=getComputedStyle(d).display;if(u!=0&&v!="none"){let p=d.getAttribute("data-numeric");p=p.replace("\xA3",""),p=p.replace("%",""),p=p.replace(",",""),p=Number.parseInt(p),s+=p,y++}}),Array.from(o.querySelectorAll("td")).forEach((d,u)=>{var v,p;const _=getComputedStyle(d).display;if(u!=0&&y==1&&_!="none")c+=`<path d="M 0 0 L 100 0 A 100 100 0 1 1 100 -0.01 L 0 0" style="${d.getAttribute("style")} --path-index: ${u};"></path>`,i+=`<span class="h5 mb-0" part="popover">${L(M(d.getAttribute("data-label"))).trim()}<br/>${d.hasAttribute("data-second")?`${d.getAttribute("data-second-label")}: ${d.getAttribute("data-second")}<br/>`:""}${(v=d.querySelector('[part="popover"]'))===null||v===void 0?void 0:v.innerHTML}</span>`;else if(u!=0){let b=d.getAttribute("data-numeric");const H=_=="none"?"display: none;":"";b=b.replace("\xA3",""),b=b.replace("%",""),b=b.replace(",",""),b=Number.parseInt(b);const w=b/s,[z,$]=q(h,y),[S,C]=q(h+w,y),D=w>.5?1:0,B=["M 0 0",`L ${z?z.toFixed(0):0} ${$?$.toFixed(0):0}`,`A 100 100 0 ${D} 1 ${S?S.toFixed(0):0} ${C?C.toFixed(0):0}`,"L 0 0"].join(" ");c+=`<path d="${B}" style="${d.getAttribute("style")} --path-index: ${u};${H}"></path>`,i+=`<span class="h5 mb-0" part="popover">${L(M(d.getAttribute("data-label"))).trim()}<br/>${d.hasAttribute("data-second")?`${d.getAttribute("data-second-label")}: ${d.getAttribute("data-second")}<br/>`:""}${(p=d.querySelector('[part="popover"]'))===null||p===void 0?void 0:p.innerHTML}</span>`,_!="none"&&(h+=w)}}),r+=`<div class="doughnut">
5
5
  <svg viewBox="-105 -105 210 210" preserveAspectRatio="none" style="--row-index: ${n+1};">${c}</svg>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"bento-grid"});class n extends HTMLElement{constructor(){var o;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>
@@ -32,6 +32,7 @@ class iamCard extends HTMLElement {
32
32
  }
33
33
  connectedCallback() {
34
34
  return __awaiter(this, void 0, void 0, function* () {
35
+ var _a, _b;
35
36
  // eslint-disable-next-line @typescript-eslint/no-this-alias
36
37
  const cardComponent = this;
37
38
  const cardBody = cardComponent.shadowRoot.querySelector('.card__body');
@@ -53,6 +54,24 @@ class iamCard extends HTMLElement {
53
54
  <slot name="btns"></slot>
54
55
  </div>
55
56
  </div>`;
57
+ // safari and firefox anchor fix for cards
58
+ if (!CSS.supports('top', 'anchor(top)')) {
59
+ const actionButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[popovertarget="actions"]');
60
+ const actionPopover = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('[popover]');
61
+ actionButton === null || actionButton === void 0 ? void 0 : actionButton.addEventListener('click', (event) => {
62
+ this.style.setProperty('overflow', 'visible');
63
+ this.style.setProperty('z-index', '999999');
64
+ const viewportOffset = actionButton.getBoundingClientRect();
65
+ const top = viewportOffset.top;
66
+ const left = viewportOffset.left;
67
+ actionPopover.style.setProperty('display', 'block');
68
+ actionPopover.style.setProperty('top', top + 'px');
69
+ actionPopover.style.setProperty('left', (left - 100) + 'px');
70
+ });
71
+ document.addEventListener("scroll", (event) => {
72
+ actionPopover.style.setProperty('display', 'none');
73
+ });
74
+ }
56
75
  }
57
76
  // Make sure slotted buttons and links have correct button classes
58
77
  Array.from(cardComponent.querySelectorAll('[slot="btns"]')).forEach((button) => {
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
- */const m=r=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:r})},b=(r,t,a)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),a.forEach(e=>{r.addEventListener(e,function(i){const n={event:e,element:t,target:i.target};Object.keys(i.detail).forEach(o=>{const s=i.detail[o];n[o]=s}),window.dataLayer.push(n)})}),!0),g=`<div class="card__head" part="head">
4
+ */const g=e=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:e})},h=(e,a,i)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:a}),i.forEach(t=>{e.addEventListener(t,function(d){const r={event:t,element:a,target:d.target};Object.keys(d.detail).forEach(n=>{const p=d.detail[n];r[n]=p}),window.dataLayer.push(r)})}),!0),v=`<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,19 +15,19 @@
15
15
  </div>
16
16
  <div class="card__footer" part="footer">
17
17
  <slot name="footer"></slot>
18
- </div>`,h=r=>{r.classList.add("card");const t=r.shadowRoot.querySelector(".card__head"),a=r.shadowRoot.querySelector(".card__body");r.hasAttribute("data-image")&&(t.innerHTML+=`<img src="${r.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),r.hasAttribute("data-total")?a.insertAdjacentHTML("beforeend",`<div class="card__total">${r.getAttribute("data-total")}</div>`):r.querySelector('[slot="total-icon"]')&&a.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),r.querySelector('[slot="badges"]')?r.shadowRoot.querySelector(".card__badges").classList.remove("empty"):r.shadowRoot.querySelector(".card__badges").classList.add("empty")};var v=function(r,t,a,e){function i(n){return n instanceof a?n:new a(function(o){o(n)})}return new(a||(a=Promise))(function(n,o){function s(d){try{c(e.next(d))}catch(l){o(l)}}function p(d){try{c(e.throw(d))}catch(l){o(l)}}function c(d){d.done?n(d.value):i(d.value).then(s,p)}c((e=e.apply(r,t||[])).next())})};m("iam-card");class u 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>`,u=e=>{e.classList.add("card");const a=e.shadowRoot.querySelector(".card__head"),i=e.shadowRoot.querySelector(".card__body");e.hasAttribute("data-image")&&(a.innerHTML+=`<img src="${e.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),e.hasAttribute("data-total")?i.insertAdjacentHTML("beforeend",`<div class="card__total">${e.getAttribute("data-total")}</div>`):e.querySelector('[slot="total-icon"]')&&i.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),e.querySelector('[slot="badges"]')?e.shadowRoot.querySelector(".card__badges").classList.remove("empty"):e.shadowRoot.querySelector(".card__badges").classList.add("empty")};var f=function(e,a,i,t){function d(r){return r instanceof i?r:new i(function(n){n(r)})}return new(i||(i=Promise))(function(r,n){function p(l){try{s(t.next(l))}catch(c){n(c)}}function o(l){try{s(t.throw(l))}catch(c){n(c)}}function s(l){l.done?r(l.value):d(l.value).then(p,o)}s((t=t.apply(e,a||[])).next())})};g("iam-card");class w 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=`
19
19
  <style>
20
20
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
21
21
 
22
22
  :host{--card-icon-right: 1rem;--card-head-top-padding: 2rem;--card-head-bottom-padding: 2rem;--card-footer-bottom-padding: 1.5rem;--card-head-height: 6rem;box-shadow:var(--card-box-shadow);border-radius:var(--card-border-radius);position:relative;font-weight:bold;font-size:1.125rem;line-height:1.5rem;color:var(--colour-primary);width:100%;text-align:left;display:flex;flex-direction:column;overflow:hidden;z-index:0;background:var(--colour-canvas-2);outline:2px solid var(--outline-colour, --colour-canvas-2);outline-offset:-2px;margin-bottom:2rem}:host>*{width:100%;box-sizing:border-box}:host-context(:is(a,label,button)){margin-bottom:0 !important}:host(.border-0){box-shadow:none;--card-left-padding: 0rem;outline-offset:1px !important}.card__head:has(img){min-height:var(--card-head-height);position:relative;overflow:hidden;background:rgba(0,0,0,.1);z-index:-1}.card__head:has(img)>img{position:absolute;top:0;left:0;margin:-2px;width:calc(100% + 4px);height:calc(100% + 4px);object-fit:cover}.card__body{padding:var(--card-head-top-padding) var(--card-right-padding) var(--card-head-bottom-padding) var(--card-left-padding)}.card__footer{margin-top:0;padding:0 var(--card-right-padding) 0 var(--card-left-padding)}::slotted(i){font-size:1.5rem !important;margin:-3px var(--card-icon-right) 0 0 !important;vertical-align:middle !important}::slotted(i:not(.fa-light):not(.fa-bold)){font-weight:400 !important}::slotted(.badge){margin-bottom:.375rem !important}::slotted(span:not(.badge)){display:block !important;font-weight:normal !important;font-size:1rem !important}::slotted(small){padding-top:1rem !important;display:block !important;font-weight:normal !important;padding-bottom:0 !important;color:var(--colour-body)}::slotted(span:not(.badge):not([class*=pt-])){padding-top:1.5rem !important}::slotted(:is(a,button)[slot=footer]){margin-bottom:var(--card-footer-bottom-padding) !important}.card__body:has(.card__total){--card-head-top-padding: 1rem;--card-head-bottom-padding: 1.5rem}.card__total{font-size:3rem;line-height:3rem;padding-right:1rem;margin-top:.5rem}.card__total i{font-family:var(--fa-style-family, "Font Awesome 6 Pro");font-weight:var(--fa-style, 900);display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important}::slotted([slot=total-icon]){display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important;line-height:2.5rem}.card__head:has(img)~.card__badges{position:absolute;top:0;text-align:left;left:0;z-index:9}.card__badges:not(.empty){padding:var(--card-badges-top-padding, 1rem) var(--card-right-padding) 0 var(--card-left-padding);margin-bottom:-1.5rem}@layer elements{body:not(.js-enabled) dialog:not([open]):target{display:block}[popover],dialog{--dialog-padding: 1.5rem;--mh-padding-inline: var(--dialog-padding);color:inherit;width:fit-content;height:fit-content;border:none;overscroll-behavior:contain;background:var(--colour-canvas-2);box-shadow:0px 2px 9px rgba(0,0,0,.11);border-radius:0.625rem;padding:var(--dialog-padding);outline:var(--contrast-outline-width, 0px) solid var(--colour-primary)}[popover]:popover-open,dialog[open]{display:flex;flex-direction:column}[popover]:popover-open>*:last-child,dialog[open]>*:last-child{margin-bottom:0}[popover]:popover-open>:is(p):last-child,dialog[open]>:is(p):last-child{padding-bottom:0}}@layer elements{.dialog__wrapper{position:relative;display:inline-block;margin-bottom:calc(var(--btn-margin) - .25rem)}.dialog__wrapper:has(dialog[open],dialog:popover-open)>button{background:var(--colour-btn-secondary-bg-hover);filter:brightness(85%);transition:background .1s,color .1s;border-radius:1.5rem}.dialog__wrapper:has(dialog[open],dialog:popover-open)>button:not(.btn-action){color:var(--colour-btn-secondary-hover)}.dialog__wrapper>.btn:first-child:not(.btn-compact):not([class*=fa-]):after{content:"";display:inline-block;margin-left:1em;height:1em;width:1em;z-index:var(--index-focus);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%;transform:rotate(90deg)}.dialog__wrapper>.btn:first-child[aria-expanded]:not([data-number]):after{transform:rotate(270deg)}.dialog__wrapper>.btn:first-child:has(+dialog[open]):not([data-number]):after{transform:rotate(270deg)}.dialog__wrapper>:is(dialog[open],dialog:popover-open){left:0;margin-top:-1rem;top:100%;z-index:var(--index-floating);min-width:20rem;border-radius:1rem;width:20rem;padding:1.5rem}@media screen and (min-width: 36em){.dialog__wrapper>:is(dialog[open],dialog:popover-open){width:20.9375rem}}@media screen and (min-width: 62em){.dialog__wrapper>:is(dialog[open],dialog:popover-open){width:22.5rem}}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list{width:fit-content !important;min-width:8.75rem !important;max-width:17.5rem !important;padding:1rem;margin:0}@media screen and (min-width: 36em){.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list{width:max-content !important}}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list hr{height:2px;background:var(--colour-border);margin-left:-1rem;margin-right:-1rem;margin-block:.25rem}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .radio--tick{margin-right:0;padding-left:1.5rem;margin-bottom:0}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .radio--tick:before{left:0;font-size:1em;top:.75rem}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list a{padding:0.375rem;margin:0}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list a:not(:hover,:focus,:active){border-color:rgba(0,0,0,0)}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list a:after{display:none}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .btn-action{margin:0}.dialog__wrapper>:is(dialog[open],dialog:popover-open).dialog--list .btn-action:not(:hover,:focus,:active){border-color:rgba(0,0,0,0)}.dialog__wrapper>:is(dialog[open],dialog:popover-open) :is(dialog[open],dialog:popover-open){display:contents}.dialog__wrapper.dialog__wrapper--right>:is(dialog[open],dialog:popover-open){right:0;left:auto}.dialog__wrapper.dialog__wrapper--sm>:is(dialog[open],dialog:popover-open){width:14.9375rem}.dialog__wrapper.dialog__wrapper--lg>:is(dialog[open],dialog:popover-open){width:19.9375rem}@media screen and (min-width: 36em){.dialog__wrapper.dialog__wrapper--sm-left>dialog[open]{left:0;right:auto}.dialog__wrapper.dialog__wrapper--sm-right>dialog[open]{right:0;left:auto}.dialog__wrapper.dialog__wrapper--sm>dialog[open]{width:16.5625rem}.dialog__wrapper.dialog__wrapper--lg>dialog[open]{width:28.25rem}}@media screen and (min-width: 62em){.dialog__wrapper.dialog__wrapper--md-left>dialog[open]{left:0;right:auto}.dialog__wrapper.dialog__wrapper--md-right>dialog[open]{right:0;left:auto}.dialog__wrapper.dialog__wrapper--sm>dialog[open]{width:16.625rem}.dialog__wrapper.dialog__wrapper--lg>dialog[open]{width:28.375rem}}.dialog__wrapper :is(.empty,.individual){display:none}@supports selector(:has(*)){.dialog__wrapper :is(.empty,.individual){display:inline}}.dialog__wrapper:has(input:checked) .empty,.dialog__wrapper:not(:has(input:checked)) .individual,.dialog__wrapper:has(input:checked~input:checked) .individual,.dialog__wrapper:not(:has(input:checked~input:checked)) .multiple{display:none}}@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:bold;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):not(.mw-100){max-width:13rem}.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:bold;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !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;border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem}.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.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)}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem;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:not(:last-child){margin-right:0.5rem}.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)}.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}}:host{--card-right-padding: 1rem;--card-icon-right: 1rem}:host(:is(:hover,:focus,.hover):not(.prevent-hover)){--hover-outline-colour-default: var(--colour, var(--colour-primary));outline:2px solid var(--hover-outline-colour, var(--hover-outline-colour-default));outline-offset:-2px}:host(:is(:active,.active):not(.prevent-hover)){--card-icon-right: var(--card-icon-right-overide, 0.5rem);outline:none}:host(.prevent-hover){pointer-events:none}:host(.prevent-hover) *{pointer-events:all}:host(.show-icon) .card__body{--card-right-padding: 3.5rem}:host(.show-icon) .card__body:before,:host(.show-icon) .card__body:after{content:"";position:absolute;right:var(--card-icon-right);bottom:var(--card-bottom-padding);height:1.5rem;width:1.5rem;background:var(--colour-warning);border-radius:50%}:host(.show-icon) .card__body:after{background:var(--colour-primary-theme);mask-image:var(--icon, var(--icon-arrow));mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon, var(--icon-arrow));-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;z-index:2}:host(:is(:hover,:focus,.hover):not(.prevent-hover):not([class*=colour-])) .card__body:before{background:var(--hover-icon-bg, var(--colour-primary-theme))}:host(:is(:hover,:focus,.hover):not(.prevent-hover):not([class*=colour-])) .card__body:after{background:var(--hover-icon-colour, #ffffff)}:host(:is(:active,.active):not(.prevent-hover):not([class*=colour-])) .card__body:before{background:var(--hover-icon-bg, var(--colour-primary-theme))}:host(:is(:active,.active):not(.prevent-hover):not([class*=colour-])) .card__body:after{background:var(--hover-icon-colour, #ffffff)}.card__body:has(.card__illustration){align-items:center;display:flex}.card__body:has(.card__illustration) .card__illustration{height:4rem;width:4rem;margin-right:1.5rem;margin-top:-1.25rem;margin-bottom:-1.25rem;position:relative}.card__body:has(.card__illustration) .card__illustration img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}:host([class*=colour-]){border-left:0.75rem solid var(--colour, var(--colour-primary))}slot[name=secondary]{display:block;position:absolute;top:.5rem;right:0;margin:.5rem .5rem 0 0;z-index:999}::slotted([slot=secondary]:not(:hover,:focus,:active,.hover)){background:none !important;color:var(--colour-btn) !important}::slotted([slot=checkbox]){position:absolute !important;top:.5rem;right:.5rem;width:2rem;height:2rem;height:2.5rem;overflow:hidden}.dialog__wrapper{position:absolute;right:1rem;bottom:2rem;width:3rem !important;left:auto;z-index:999}.dialog__wrapper>.btn:before{content:"\uF142";font-family:"Font Awesome 6 Pro"}.dialog__wrapper>[popover]{display:var(--menu-display, none);position:fixed;top:anchor(top);position-anchor:--anchor-el;left:anchor(right);right:auto;margin:0 0 0 0.25rem;padding:1rem}.dialog__wrapper>[popover]::backdrop{display:none}.dialog__wrapper>[popover]:popover-open{display:block !important}.dialog__wrapper:has([popover]:popover-open)>button{background-color:var(--colour)}.dialog__wrapper>button[popovertarget]{margin:0;anchor-name:--anchor-el}.dialog__wrapper>button[popovertarget]:not(:hover,:focus,:focus-within,:active){background:var(--ellipsis-bg)}::slotted([slot=btns]){border:none !important;margin:0 !important;display:block !important;width:fit-content}::slotted([slot=primary-action]){overflow:hidden;background-color:rgba(0,0,0,0);text-indent:-300%;position:absolute !important;inset:0;margin:0 !important;z-index:99;border:none}:host(:not(.prevent-hover)) ::slotted([slot=primary-action]:is(:hover,:focus,.hover)){--hover-outline-colour-default: var(--colour, var(--colour-primary));outline:2px solid var(--hover-outline-colour, var(--hover-outline-colour-default));outline-offset:-2px;border-radius:var(--card-border-radius) !important}/*# sourceMappingURL=assets/css/components/card.component.css.map */
23
23
 
24
24
  </style>
25
- ${g}
25
+ ${v}
26
26
  <slot name="primary-action"></slot>
27
- `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){return v(this,void 0,void 0,function*(){const t=this,a=t.shadowRoot.querySelector(".card__body");if(h(t),t.hasAttribute("data-illustration")&&a.insertAdjacentHTML("afterbegin",`<div class="card__illustration"><img src="${this.getAttribute("data-illustration")}" alt="" loading="lazy" /></div>`),!t.querySelector('[slot="btns"]')&&!t.querySelector('[slot="secondary"]')&&t.classList.add("show-icon"),t.querySelector('[slot="btns"]')&&(t.shadowRoot.innerHTML+=`<div class="dialog__wrapper">
27
+ `,this.shadowRoot.appendChild(a.content.cloneNode(!0))}connectedCallback(){return f(this,void 0,void 0,function*(){var a,i;const t=this,d=t.shadowRoot.querySelector(".card__body");if(u(t),t.hasAttribute("data-illustration")&&d.insertAdjacentHTML("afterbegin",`<div class="card__illustration"><img src="${this.getAttribute("data-illustration")}" alt="" loading="lazy" /></div>`),!t.querySelector('[slot="btns"]')&&!t.querySelector('[slot="secondary"]')&&t.classList.add("show-icon"),t.querySelector('[slot="btns"]')&&(t.shadowRoot.innerHTML+=`<div class="dialog__wrapper">
28
28
  <button class="btn btn-secondary btn-compact fa-ellipsis-vertical" popovertarget="actions" title="Further actions" type="button">Open further actions</button>
29
29
  <div class="dialog--fix dialog--list" id="actions" popover>
30
30
  <slot name="btns"></slot>
31
31
  </div>
32
- </div>`),Array.from(t.querySelectorAll('[slot="btns"]')).forEach(o=>{o.classList.add("btn"),o.classList.add("btn-action")}),t.querySelector('[slot="checkbox"],[slot="secondary"]')){const o=t.querySelector('[slot="checkbox"],[slot="secondary"]');o.addEventListener("mouseenter",()=>{t.classList.add("prevent-hover")}),o.addEventListener("mouseleave",()=>{t.classList.remove("prevent-hover")})}if(t.shadowRoot.querySelector(".dialog__wrapper")){const o=t.shadowRoot.querySelector(".dialog__wrapper");o.addEventListener("mouseenter",()=>{t.classList.add("prevent-hover")}),o.addEventListener("mouseleave",()=>{t.classList.remove("prevent-hover")})}const e=t.querySelector('input[type="checkbox"]');e&&e.addEventListener("change",()=>{if(e.checked){const o=new CustomEvent("select-card",{detail:{"Card value":e.value,"input name":e.getAttribute("name")}});t.dispatchEvent(o)}else{const o=new CustomEvent("unselect-card",{detail:{"Card value":e.value,"input name":e.getAttribute("name")}});t.dispatchEvent(o)}});const i=t.querySelector('[slot="secondary"]');i&&i.addEventListener("click",()=>{const o=new CustomEvent("secondary-button-clicked",{detail:{Title:i.getAttribute("title")}});t.dispatchEvent(o)});const n=t.querySelectorAll('[slot="btns"]');Array.from(n).forEach(o=>{o.addEventListener("click",()=>{const s=new CustomEvent("action-button-clicked",{detail:{Title:o.getAttribute("title")}});t.dispatchEvent(s)})}),b(t,"iam-card",["select-card","unselect-card","secondary-button-clicked","action-button-clicked"])})}static get observedAttributes(){return["data-image"]}attributeChangedCallback(t,a,e){switch(t){case"data-total":{this.shadowRoot.querySelector(".card__total")&&(this.shadowRoot.querySelector(".card__total").innerHTML=e);break}case"data-image":{if(a!=e){const i=this.shadowRoot.querySelector(".card__head img");i&&i.setAttribute("src",e)}break}}}}export{u as default};
32
+ </div>`,!CSS.supports("top","anchor(top)"))){const o=(a=this.shadowRoot)===null||a===void 0?void 0:a.querySelector('[popovertarget="actions"]'),s=(i=this.shadowRoot)===null||i===void 0?void 0:i.querySelector("[popover]");o?.addEventListener("click",l=>{this.style.setProperty("overflow","visible"),this.style.setProperty("z-index","999999");const c=o.getBoundingClientRect(),m=c.top,b=c.left;s.style.setProperty("display","block"),s.style.setProperty("top",m+"px"),s.style.setProperty("left",b-100+"px")}),document.addEventListener("scroll",l=>{s.style.setProperty("display","none")})}if(Array.from(t.querySelectorAll('[slot="btns"]')).forEach(o=>{o.classList.add("btn"),o.classList.add("btn-action")}),t.querySelector('[slot="checkbox"],[slot="secondary"]')){const o=t.querySelector('[slot="checkbox"],[slot="secondary"]');o.addEventListener("mouseenter",()=>{t.classList.add("prevent-hover")}),o.addEventListener("mouseleave",()=>{t.classList.remove("prevent-hover")})}if(t.shadowRoot.querySelector(".dialog__wrapper")){const o=t.shadowRoot.querySelector(".dialog__wrapper");o.addEventListener("mouseenter",()=>{t.classList.add("prevent-hover")}),o.addEventListener("mouseleave",()=>{t.classList.remove("prevent-hover")})}const r=t.querySelector('input[type="checkbox"]');r&&r.addEventListener("change",()=>{if(r.checked){const o=new CustomEvent("select-card",{detail:{"Card value":r.value,"input name":r.getAttribute("name")}});t.dispatchEvent(o)}else{const o=new CustomEvent("unselect-card",{detail:{"Card value":r.value,"input name":r.getAttribute("name")}});t.dispatchEvent(o)}});const n=t.querySelector('[slot="secondary"]');n&&n.addEventListener("click",()=>{const o=new CustomEvent("secondary-button-clicked",{detail:{Title:n.getAttribute("title")}});t.dispatchEvent(o)});const p=t.querySelectorAll('[slot="btns"]');Array.from(p).forEach(o=>{o.addEventListener("click",()=>{const s=new CustomEvent("action-button-clicked",{detail:{Title:o.getAttribute("title")}});t.dispatchEvent(s)})}),h(t,"iam-card",["select-card","unselect-card","secondary-button-clicked","action-button-clicked"])})}static get observedAttributes(){return["data-image"]}attributeChangedCallback(a,i,t){switch(a){case"data-total":{this.shadowRoot.querySelector(".card__total")&&(this.shadowRoot.querySelector(".card__total").innerHTML=t);break}case"data-image":{if(i!=t){const d=this.shadowRoot.querySelector(".card__head img");d&&d.setAttribute("src",t)}break}}}}export{w as default};
33
33
  //# sourceMappingURL=card.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.component.min.js","sources":["../_global.js","../../modules/card.module.js","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};\nimport { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { cardHTML, setupCard } from '../../modules/card.module.js';\ntrackComponentRegistered('iam-card');\nclass iamCard 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/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 <slot name=\"primary-action\"></slot>\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 cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n setupCard(cardComponent);\n // Add Illustration HTML\n if (cardComponent.hasAttribute('data-illustration')) {\n cardBody.insertAdjacentHTML('afterbegin', `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>`);\n }\n // Add class that shows the right arrow icon\n if (!cardComponent.querySelector('[slot=\"btns\"]') && !cardComponent.querySelector('[slot=\"secondary\"]')) {\n cardComponent.classList.add('show-icon');\n }\n // Secondary buttons and actions\n // Add the dialog wrapper HTML\n if (cardComponent.querySelector('[slot=\"btns\"]')) {\n cardComponent.shadowRoot.innerHTML += `<div class=\"dialog__wrapper\">\n <button class=\"btn btn-secondary btn-compact fa-ellipsis-vertical\" popovertarget=\"actions\" title=\"Further actions\" type=\"button\">Open further actions</button>\n <div class=\"dialog--fix dialog--list\" id=\"actions\" popover>\n <slot name=\"btns\"></slot>\n </div>\n </div>`;\n }\n // Make sure slotted buttons and links have correct button classes\n Array.from(cardComponent.querySelectorAll('[slot=\"btns\"]')).forEach((button) => {\n button.classList.add('btn');\n button.classList.add('btn-action');\n });\n // Hide the default hover and focus states when interacting with the checkbox, dialog wrapper or secondary button\n if (cardComponent.querySelector('[slot=\"checkbox\"],[slot=\"secondary\"]')) {\n const element = cardComponent.querySelector('[slot=\"checkbox\"],[slot=\"secondary\"]');\n element.addEventListener('mouseenter', () => {\n cardComponent.classList.add('prevent-hover');\n });\n element.addEventListener('mouseleave', () => {\n cardComponent.classList.remove('prevent-hover');\n });\n }\n if (cardComponent.shadowRoot.querySelector('.dialog__wrapper')) {\n const element = cardComponent.shadowRoot.querySelector('.dialog__wrapper');\n element.addEventListener('mouseenter', () => {\n cardComponent.classList.add('prevent-hover');\n });\n element.addEventListener('mouseleave', () => {\n cardComponent.classList.remove('prevent-hover');\n });\n }\n // Dispatch events of selecting checkboxes\n const checkbox = cardComponent.querySelector('input[type=\"checkbox\"]');\n if (checkbox) {\n checkbox.addEventListener('change', () => {\n if (checkbox.checked) {\n const customEvent = new CustomEvent('select-card', {\n detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') },\n });\n cardComponent.dispatchEvent(customEvent);\n }\n else {\n const customEvent = new CustomEvent('unselect-card', {\n detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') },\n });\n cardComponent.dispatchEvent(customEvent);\n }\n });\n }\n // Dispatch events of click onto secondary buttons\n const secondaryBtn = cardComponent.querySelector('[slot=\"secondary\"]');\n if (secondaryBtn) {\n secondaryBtn.addEventListener('click', () => {\n const customEvent = new CustomEvent('secondary-button-clicked', {\n detail: { Title: secondaryBtn.getAttribute('title') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n // Dispatch events of click onto action buttons\n const actionBtns = cardComponent.querySelectorAll('[slot=\"btns\"]');\n Array.from(actionBtns).forEach((button) => {\n button.addEventListener('click', () => {\n const customEvent = new CustomEvent('action-button-clicked', {\n detail: { Title: button.getAttribute('title') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n });\n trackComponent(cardComponent, 'iam-card', [\n 'select-card',\n 'unselect-card',\n 'secondary-button-clicked',\n 'action-button-clicked',\n ]);\n });\n }\n static get observedAttributes() {\n return ['data-image'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-total': {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case '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 iamCard;\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","iamCard","template","button","element","checkbox","customEvent","secondaryBtn","actionBtns","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}
1
+ {"version":3,"file":"card.component.min.js","sources":["../_global.js","../../modules/card.module.js","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};\nimport { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { cardHTML, setupCard } from '../../modules/card.module.js';\ntrackComponentRegistered('iam-card');\nclass iamCard 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/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 <slot name=\"primary-action\"></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const cardComponent = this;\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n setupCard(cardComponent);\n // Add Illustration HTML\n if (cardComponent.hasAttribute('data-illustration')) {\n cardBody.insertAdjacentHTML('afterbegin', `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>`);\n }\n // Add class that shows the right arrow icon\n if (!cardComponent.querySelector('[slot=\"btns\"]') && !cardComponent.querySelector('[slot=\"secondary\"]')) {\n cardComponent.classList.add('show-icon');\n }\n // Secondary buttons and actions\n // Add the dialog wrapper HTML\n if (cardComponent.querySelector('[slot=\"btns\"]')) {\n cardComponent.shadowRoot.innerHTML += `<div class=\"dialog__wrapper\">\n <button class=\"btn btn-secondary btn-compact fa-ellipsis-vertical\" popovertarget=\"actions\" title=\"Further actions\" type=\"button\">Open further actions</button>\n <div class=\"dialog--fix dialog--list\" id=\"actions\" popover>\n <slot name=\"btns\"></slot>\n </div>\n </div>`;\n // safari and firefox anchor fix for cards\n if (!CSS.supports('top', 'anchor(top)')) {\n const actionButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[popovertarget=\"actions\"]');\n const actionPopover = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('[popover]');\n actionButton === null || actionButton === void 0 ? void 0 : actionButton.addEventListener('click', (event) => {\n this.style.setProperty('overflow', 'visible');\n this.style.setProperty('z-index', '999999');\n const viewportOffset = actionButton.getBoundingClientRect();\n const top = viewportOffset.top;\n const left = viewportOffset.left;\n actionPopover.style.setProperty('display', 'block');\n actionPopover.style.setProperty('top', top + 'px');\n actionPopover.style.setProperty('left', (left - 100) + 'px');\n });\n document.addEventListener(\"scroll\", (event) => {\n actionPopover.style.setProperty('display', 'none');\n });\n }\n }\n // Make sure slotted buttons and links have correct button classes\n Array.from(cardComponent.querySelectorAll('[slot=\"btns\"]')).forEach((button) => {\n button.classList.add('btn');\n button.classList.add('btn-action');\n });\n // Hide the default hover and focus states when interacting with the checkbox, dialog wrapper or secondary button\n if (cardComponent.querySelector('[slot=\"checkbox\"],[slot=\"secondary\"]')) {\n const element = cardComponent.querySelector('[slot=\"checkbox\"],[slot=\"secondary\"]');\n element.addEventListener('mouseenter', () => {\n cardComponent.classList.add('prevent-hover');\n });\n element.addEventListener('mouseleave', () => {\n cardComponent.classList.remove('prevent-hover');\n });\n }\n if (cardComponent.shadowRoot.querySelector('.dialog__wrapper')) {\n const element = cardComponent.shadowRoot.querySelector('.dialog__wrapper');\n element.addEventListener('mouseenter', () => {\n cardComponent.classList.add('prevent-hover');\n });\n element.addEventListener('mouseleave', () => {\n cardComponent.classList.remove('prevent-hover');\n });\n }\n // Dispatch events of selecting checkboxes\n const checkbox = cardComponent.querySelector('input[type=\"checkbox\"]');\n if (checkbox) {\n checkbox.addEventListener('change', () => {\n if (checkbox.checked) {\n const customEvent = new CustomEvent('select-card', {\n detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') },\n });\n cardComponent.dispatchEvent(customEvent);\n }\n else {\n const customEvent = new CustomEvent('unselect-card', {\n detail: { 'Card value': checkbox.value, 'input name': checkbox.getAttribute('name') },\n });\n cardComponent.dispatchEvent(customEvent);\n }\n });\n }\n // Dispatch events of click onto secondary buttons\n const secondaryBtn = cardComponent.querySelector('[slot=\"secondary\"]');\n if (secondaryBtn) {\n secondaryBtn.addEventListener('click', () => {\n const customEvent = new CustomEvent('secondary-button-clicked', {\n detail: { Title: secondaryBtn.getAttribute('title') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n // Dispatch events of click onto action buttons\n const actionBtns = cardComponent.querySelectorAll('[slot=\"btns\"]');\n Array.from(actionBtns).forEach((button) => {\n button.addEventListener('click', () => {\n const customEvent = new CustomEvent('action-button-clicked', {\n detail: { Title: button.getAttribute('title') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n });\n trackComponent(cardComponent, 'iam-card', [\n 'select-card',\n 'unselect-card',\n 'secondary-button-clicked',\n 'action-button-clicked',\n ]);\n });\n }\n static get observedAttributes() {\n return ['data-image'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-total': {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case '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 iamCard;\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","iamCard","template","_a","_b","actionButton","actionPopover","viewportOffset","top","left","button","element","checkbox","customEvent","secondaryBtn","actionBtns","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const M=function(e){const t=[];return Array.from(e.querySelectorAll(":scope > div")).forEach((n,o)=>{n.hasAttribute("data-thumbnail")&&(t[o]=n.getAttribute("data-thumbnail"))}),t},W=function(e,t){const n=e.querySelectorAll(":scope > div").length;let o="";for(let a=1;a<=n;a++){let r=null,s="";t.length&&t[a-1]?(s="has-thumbnail",r=`<img src="${t[a-1]}" alt="Slide ${a}" height="148"/>`):r=`Slide ${a}`,o+=`<button class="control-${a} ${s}" data-slide="${a}" ${a==1?"aria-current":""}>${r}</button>`}return o},x=function(e,t){return t==1?e:Math.ceil(e/t)*t-t+1},z=function(e,t){return(e-1)/(t-1)*100},$=function(e){let t;const n=e.shadowRoot.querySelector(".carousel"),o=n.querySelector(".carousel__inner"),a=n.querySelector(".carousel__controls"),r=n.querySelector('.carousel__progress [type="range"]'),s=e.querySelectorAll(":scope > div").length;let p=o.clientWidth,y=e.querySelector(":scope > div").scrollWidth,v=Math.round(p/y);r.setAttribute("min",1),r.setAttribute("step",v);let h=x(s,v);r.setAttribute("max",h),r.value=1;let b=z(1,h);r.style.setProperty("--percent",b+"%");let f,A="mouseup",L="mousedown";"ontouchstart"in document.documentElement&&(A="touchend",L="touchstart"),o.addEventListener("scroll",function(){clearTimeout(t),t=setTimeout(function(){const c=o.clientWidth,i=o.scrollWidth,m=o.scrollLeft;let l=Math.round(m/i*s)+1;const g=e.querySelector(":scope > div").scrollWidth,w=e.querySelector(":scope > div:last-child").offsetLeft,_=o.scrollLeft+c+o.getBoundingClientRect().left>=w+60,u=Math.round(c/g),k=Math.ceil(s/u)*u-s;r.setAttribute("step",u),k>0&&_&&(l=Math.floor(s/u)*u+1),Array.from(n.querySelectorAll(".carousel__controls button")).forEach(d=>{d.removeAttribute("aria-current")}),n.querySelector(".control-"+l).setAttribute("aria-current",!0),l==1?n.querySelector(".btn-prev").setAttribute("disabled","disabled"):n.querySelector(".btn-prev").removeAttribute("disabled"),l>s-u?n.querySelector(".btn-next").setAttribute("disabled","disabled"):n.querySelector(".btn-next").removeAttribute("disabled"),r.value=l,h=x(s,u),r.setAttribute("max",h),b=l/h*100,b=z(l,h),r.style.setProperty("--percent",b+"%")},100)},!1),a.addEventListener("click",function(c){for(let i=c.target;i&&i!=this;i=i.parentNode)if(typeof i.matches=="function"&&i.matches("button")){c.preventDefault(),Array.from(a.querySelectorAll("button")).forEach(g=>{g.removeAttribute("aria-current")}),i.setAttribute("aria-current",!0);const m=new CustomEvent("pip-clicked",{detail:{slide:i.getAttribute("data-slide")}});e.dispatchEvent(m);const l=e.querySelector(`:scope > *:nth-child(${i.getAttribute("data-slide")})`);o.scroll({top:0,left:l.offsetLeft-o.getBoundingClientRect().left,behavior:"smooth"});break}},!1),n.addEventListener("click",function(c){const i=o.clientWidth,m=e.querySelector(":scope > div").scrollWidth,l=Math.round(i/m),g=e.querySelector(":scope > div:last-child").offsetLeft,w=o.scrollLeft+i+o.getBoundingClientRect().left>=g+60,_=Math.ceil(s/l)*l-s,u=l-_,k=w&&_>0?u*m:o.clientWidth;for(let d=c.target;d&&d!=this;d=d.parentNode)if(typeof d.matches=="function"&&d.matches(".btn-next, .btn-prev")){const S=d.matches(".btn-next")?"next":"prev",E=new CustomEvent(`${S}-clicked`,{detail:{slide:d.getAttribute("data-go")}});e.dispatchEvent(E),c.preventDefault();const q=d.classList.contains("btn-prev")?o.scrollLeft-k:o.scrollLeft+o.clientWidth;o.scroll({top:0,left:q,behavior:"smooth"});break}},!1),r.addEventListener(L,function(){clearInterval(f),f=setInterval(function(){p=o.clientWidth,y=e.querySelector(":scope > div").scrollWidth,v=Math.round(p/y),r.setAttribute("step",v),h=x(s,v),r.setAttribute("max",h),b=z(r.value,h),r.style.setProperty("--percent",b+"%")},10)}),r.addEventListener(A,function(){clearInterval(f)}),r.addEventListener("change",function(){clearInterval(f);const c=e.querySelector(`:scope > *:nth-child(${r.value})`);o.scroll({top:0,left:c?c.offsetLeft-o.getBoundingClientRect().left:0,behavior:"smooth"});const i=new CustomEvent("slider-changed",{detail:{slide:r.value}});e.dispatchEvent(i)},!1)},P=e=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:e})},I=(e,t,n)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),n.forEach(o=>{e.addEventListener(o,function(a){const r={event:o,element:t,target:a.target};Object.keys(a.detail).forEach(s=>{const p=a.detail[s];r[s]=p}),window.dataLayer.push(r)})}),!0);P("iam-carousel");class C 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,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"collapsible side menu"});class o extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",t=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,n=document.createElement("template");n.innerHTML=`
5
5
  <style class="styles">
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const M=t=>t.charAt(0).toUpperCase()+t.slice(1),L=t=>t.replace(/_/g," "),E=(t,r)=>{for(let a=1;a<=10;a++){if(t.hasAttribute(`data-colour-${a}`)){const i=t.getAttribute(`data-colour-${a}`);t.style.setProperty(`--chart-colour-${a}`,`var(--chart-colour-${i})`),t.style.setProperty(`--chart-colour-${a}-hover`,`var(--chart-colour-${i}-hover)`)}Array.from(r.querySelectorAll(`[data-colour-${a}]`)).forEach(i=>{const o=i.getAttribute(`data-colour-${a}`);i.style.setProperty(`--chart-colour-${a}-set`,`var(--chart-colour-${o})`),i.style.setProperty(`--chart-colour-${a}-hover`,`var(--chart-colour-${o}-hover)`)})}return!0},w=(t,r,a)=>{if(t.tagName=="IAM-DOUGHNUTCHART")return P(t,r,a),!0;const i=r.querySelector(".chart__key");i.innerHTML="";const o=r.querySelector(".chart__guidelines");o.innerHTML="";const n=r.querySelector(".chart__yaxis");n.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(c=>{c.remove()});const{xaxis:e}=m(t);return A(t,a),T(r,a,i),j(t,o),I(t,n),e&&X(r),!0},P=(t,r,a)=>{const i=r.querySelector(".chart__key");return i.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(o=>{o.remove()}),A(t,a),T(r,a,i),F(r),!0},R=function(t,r){const a=r.querySelector(".chart");a.addEventListener("mousemove",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("td:not(:first-child")){const l=e.target.closest("td:not(:first-child").getBoundingClientRect(),s=e.clientX-l.left,h=e.clientY-l.top;a.setAttribute("style",`--cursor-x: ${s}px; --cursor-y: ${h}px;`)}});const i=r.querySelectorAll("label");Array.from(i).forEach(e=>{r.querySelector(`input#${e.getAttribute("for")}`).checked?e.setAttribute("part","key-checked"):e.setAttribute("part","key-unchecked")});const o=t.querySelector("table"),n=r.querySelector("table");r.addEventListener("change",function(e){const c=e.target,l=new CustomEvent("view-change",{detail:{"data-dataset":c.getAttribute("data-dataset"),label:c.getAttribute("data-label"),checked:c.checked}});t.dispatchEvent(l),Array.from(i).forEach(s=>{var h;!((h=r.querySelector(`input#${s.getAttribute("for")}`))===null||h===void 0)&&h.checked?s.setAttribute("part","key-checked"):s.setAttribute("part","key-unchecked")}),n.innerHTML=o.innerHTML,A(t,n),t.tagName=="IAM-DOUGHNUTCHART"&&F(r)})},N=function(t,r){const a=t.querySelector("table"),i=r.querySelector("table"),o=(l,s)=>{s.disconnect(),c.disconnect();for(const h of l)(h.attributeName=="class"||h.type==="attributes"||h.type==="attributes")&&(i.innerHTML=a.innerHTML,w(t,r,i));s.observe(a,{characterData:!0,subtree:!0}),c.observe(t,{attributes:!0})},n=(l,s)=>{s.disconnect(),c.disconnect();for(const h of l)(h.type=="characterData"||h.type=="childList"&&h.addedNodes.length)&&(i.innerHTML=a.innerHTML,w(t,r,i));s.observe(a,{characterData:!0,subtree:!0}),c.observe(t,{attributes:!0})},e=new MutationObserver(n),c=new MutationObserver(o);return e.observe(a,{characterData:!0,subtree:!0}),c.observe(t,{attributes:!0}),!0};function q(t,r){r>1&&(t=t-.25);const a=Math.cos(2*Math.PI*t),i=Math.sin(2*Math.PI*t);return[a*100,i*100]}const m=function(t){const r=t.shadowRoot.querySelector(".chart__wrapper table"),a=t.hasAttribute("data-min")?t.getAttribute("data-min"):0,i=t.hasAttribute("data-max")?t.getAttribute("data-max"):U(t,r),o=t.hasAttribute("data-yaxis")?t.getAttribute("data-yaxis").split(","):[],n=t.hasAttribute("data-guidelines")?t.getAttribute("data-guidelines").split(","):[],e=t.hasAttribute("data-xaxis")?t.getAttribute("data-xaxis").split(","):null;return{min:a,max:i,yaxis:o,xaxis:e,guidelines:n}};function U(t,r){const a=t.classList.contains("chart--stacked")?"tbody tr":"tbody td:not(:first-child)",i=Array.from(r.querySelectorAll(a)).map(n=>n.getAttribute("data-numeric")),o=Math.max(...i);return Math.ceil(o)}const x=function(t,r,a,i){let o=String(t);o=o.replace("\xA3",""),o=o.replace("%",""),o=o.replace(",",""),o=Number.parseFloat(o);let n=(o-r)/(a-r)*100,e=n,c=0;return i&&i!=0&&(c=(i-r)/(a-r)*100),r<0&&(c=Math.abs(r/(a-r)*100),o<0?(n=c-n,c=c-n,e=c):(n=n-c,e=n+c)),{percent:n,axis:e,bottom:c}},A=function(t,r){Array.from(r.querySelectorAll("tbody tr")).forEach(o=>{let n=0;Array.from(o.querySelectorAll("td:not(:first-child)")).forEach(e=>{const c=e.cloneNode(!0);Array.from(c.querySelectorAll("*")).forEach(h=>{h.remove()});const l=parseFloat(c.textContent.replace("\xA3","").replace("%","").replace(",",""));e.setAttribute("data-numeric",l),e.setAttribute("data-value",c.textContent),getComputedStyle(e).display!="none"&&(n+=l),Array.from(e.querySelectorAll("a, button")).forEach((h,b)=>{b==0&&h.insertAdjacentHTML("beforeBegin","<hr/>"),h.classList.add("btn"),h.classList.add("btn-tertiary")})}),o.setAttribute("data-numeric",n)});const{min:a,max:i}=m(t);Array.from(r.querySelectorAll("tbody tr")).forEach((o,n)=>{const e=o.querySelector("td:first-child, th:first-child")?o.querySelector("td:first-child, th:first-child").textContent:"";o.setAttribute("part","group");const c=(o.getAttribute("data-numeric")-a)/(i-a)*100;o.style.setProperty("--percent",`${c}%`),Array.from(o.querySelectorAll("td:not([data-label])")).forEach((h,b)=>{b==0?h.setAttribute("part","xaxis-label"):h.setAttribute("part","value"),o.querySelectorAll("td").length>2&&h.setAttribute("data-label",r.querySelectorAll("thead th")[b].textContent)});const l=o.hasAttribute("data-min")?o.getAttribute("data-min"):a,s=o.hasAttribute("data-max")?o.getAttribute("data-max"):i;if(l<0){const h=Math.abs(l/(s-l)*100);t.setAttribute("style",`--min-bottom: ${h}%;`)}o.style.setProperty("--row-index",n+1),Array.from(o.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')).forEach(h=>{if(getComputedStyle(h).display=="none")return;const g=h.innerHTML,_=Number.parseFloat(h.getAttribute("data-numeric")),d=Number.parseFloat(h.getAttribute("data-start"));if(h.querySelector("span[data-group]")||(h.innerHTML=`<span data-group="${e}" ${h.hasAttribute("data-label")?`data-label="${h.getAttribute("data-label")}"`:""} part="popover">${g}</span>`),!h.hasAttribute("style")){const{percent:v,bottom:y,axis:p}=x(_,l,s,d);h.setAttribute("data-percent",v),h.setAttribute("style",`--bottom:${y}%;--percent:${v}%;--axis:${p}%;`)}})})},T=function(t,r,a){const i=`chart-${Date.now()+(Math.floor(Math.random()*100)+1)}`;let o;const n=Array.from(r.querySelectorAll("thead th"));return n.forEach((e,c)=>{c!=0&&(o=V(i,c,e.textContent,a,t,o)),c==50&&(n.length=c+1)}),!0};function V(t,r,a,i,o,n){var e;const c=document.createElement("input");c.setAttribute("name",`${t}-dataset-${r}`),c.setAttribute("id",`${t}-dataset-${r}`),c.setAttribute("data-dataset",`${r}`),c.setAttribute("data-label",`${a}`),c.checked=!0,c.setAttribute("type","checkbox"),r==1?o.prepend(c):o.insertBefore(c,n.nextSibling),n=c;const l=document.createElement("label");l.setAttribute("class","key btn btn-action"),l.setAttribute("for",`${t}-dataset-${r}`),l.setAttribute("data-label",`${a}`),l.setAttribute("part","key");const s=(e=o.querySelector(`tbody tr td:nth-child(${r+1})`))===null||e===void 0?void 0:e.getAttribute("data-numeric");return l.setAttribute("data-numeric",s),l.innerHTML=`${a}`,i.append(l),n}const j=function(t,r){const{min:a,max:i,yaxis:o}=m(t);let{guidelines:n}=m(t);n.length||(n=o),r.innerHTML="";for(let e=0;e<n.length;e++){const c=parseFloat(n[e].replace("\xA3","").replace("%","").replace(",","")),{axis:l}=x(c,a,i);r.innerHTML+=`<div class="guideline" style="--percent:${l}%;">${o.indexOf(n[e])!=-1?`<span>${n[e]}</span>`:""}</div>`}},I=function(t,r){const{min:a,max:i,yaxis:o}=m(t);r.innerHTML="";for(let n=0;n<o.length;n++){const e=parseFloat(o[n].replace("\xA3","").replace("%","")),{axis:c}=x(e,a,i);r.innerHTML+=`<div class="axis__point" style="--percent:${c}%;"><span>${o[n]}</span></div>`}},X=function(t){const r=t.querySelector(".chart");let a=t.querySelector(".chart__xaxis");a||(a=document.createElement("div"),a.setAttribute("class","chart__xaxis")),r.prepend(a)},F=function(t){let r="";const a=t.querySelector(".chart");let i=t.querySelector(".doughnuts");i||(i=document.createElement("div"),i.setAttribute("class","doughnuts"),a.append(i)),Array.from(a.querySelectorAll("tbody tr")).forEach((o,n)=>{let e="",c="",l=0,s=0;const b=o.querySelectorAll("td")[0].innerHTML;let g=0;const _=o.getAttribute("data-numeric");Array.from(o.querySelectorAll("td")).forEach((d,v)=>{const y=getComputedStyle(d).display;if(v!=0&&y!="none"){let p=d.getAttribute("data-numeric");p=p.replace("\xA3",""),p=p.replace("%",""),p=p.replace(",",""),p=Number.parseInt(p),s+=p,g++}}),Array.from(o.querySelectorAll("td")).forEach((d,v)=>{var y,p;const f=getComputedStyle(d).display;if(v!=0&&g==1&&f!="none")e+=`<path d="M 0 0 L 100 0 A 100 100 0 1 1 100 -0.01 L 0 0" style="${d.getAttribute("style")} --path-index: ${v};"></path>`,c+=`<span class="h5 mb-0" part="popover">${M(L(d.getAttribute("data-label"))).trim()}<br/>${d.hasAttribute("data-second")?`${d.getAttribute("data-second-label")}: ${d.getAttribute("data-second")}<br/>`:""}${(y=d.querySelector('[part="popover"]'))===null||y===void 0?void 0:y.innerHTML}</span>`;else if(v!=0){let u=d.getAttribute("data-numeric");const H=f=="none"?"display: none;":"";u=u.replace("\xA3",""),u=u.replace("%",""),u=u.replace(",",""),u=Number.parseInt(u);const k=u/s,[$,z]=q(l,g),[C,S]=q(l+k,g),D=k>.5?1:0,B=["M 0 0",`L ${$?$.toFixed(0):0} ${z?z.toFixed(0):0}`,`A 100 100 0 ${D} 1 ${C?C.toFixed(0):0} ${S?S.toFixed(0):0}`,"L 0 0"].join(" ");e+=`<path d="${B}" style="${d.getAttribute("style")} --path-index: ${v};${H}"></path>`,c+=`<span class="h5 mb-0" part="popover">${M(L(d.getAttribute("data-label"))).trim()}<br/>${d.hasAttribute("data-second")?`${d.getAttribute("data-second-label")}: ${d.getAttribute("data-second")}<br/>`:""}${(p=d.querySelector('[part="popover"]'))===null||p===void 0?void 0:p.innerHTML}</span>`,f!="none"&&(l+=k)}}),r+=`<div class="doughnut">
5
5
  <svg viewBox="-105 -105 210 210" preserveAspectRatio="none" style="--row-index: ${n+1};">${e}</svg>
@@ -55,7 +55,7 @@ class iamFileupload extends HTMLElement {
55
55
  if (oldVal != newVal) {
56
56
  const filesWrapper = this.shadowRoot.querySelector('.files');
57
57
  if (newVal != null && newVal != 'null' && newVal != '')
58
- filesWrapper.innerHTML = `<span class="file">${newVal} <button data-file="${newVal}">Remove</button></span>`;
58
+ filesWrapper.innerHTML = `<span class="file" part="file">${newVal} <button data-file="${newVal}" part="file__remove">Remove</button></span>`;
59
59
  }
60
60
  break;
61
61
  }
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
- */function v(l,s){const r=s.querySelector(".files"),i=s.querySelector(".drop-area"),e=l.querySelector("input"),f=l.hasAttribute("data-maxsize")?l.getAttribute("data-maxsize"):0,u=s.querySelector(".invalid-feedback.size"),h=s.querySelector(".invalid-feedback.ext"),o=e.cloneNode();i.append(o);const b=function(t){if(!e.hasAttribute("accept"))return!0;const a=t.split(".").pop();return!!e.getAttribute("accept").includes(a)};if(s.addEventListener("click",t=>{t&&t.target instanceof HTMLElement&&t.target.closest(".btn-primary")&&(h.classList.remove("d-block"),u.classList.remove("d-block"),(e.hasAttribute("multiple")?o:e).click())}),s.addEventListener("click",t=>{if(t&&t.target instanceof HTMLElement&&t.target.closest(".files button")){const a=new DataTransfer,{files:d}=e,n=t.target.closest(".files button");for(let p=0;p<d.length;p++){const g=d[p];g.name!=n.getAttribute("data-file")&&a.items.add(g)}e.files=a.files;const m=new Event("change");e.dispatchEvent(m);const c=new CustomEvent("fileRemoved",{detail:{removedFile:n?.dataset.file}});l.dispatchEvent(c)}}),o.addEventListener("change",()=>{if(e.hasAttribute("multiple")){const a=[...e.files,...o.files],d=[],n=new DataTransfer;for(let m=0;m<a.length;m++){const c=a[m],p=c.size/1e3;!d.includes(c.name)&&(f==0||p<f)&&b(c.name)&&n.items.add(c),b(c.name)||h.classList.add("d-block"),p>f&&u.classList.add("d-block"),d.push(c.name)}e.files=n.files}else e.files=o.files;const t=new Event("change");e.dispatchEvent(t)}),o.addEventListener("dragenter",()=>{o.classList.add("focus")}),o.addEventListener("dragleave",()=>{o.classList.remove("focus")}),o.addEventListener("drop",()=>{o.classList.remove("focus")}),e.addEventListener("change",()=>{if(e.files.length==1){const a=e.files[0],d=a.size/1e3;if(!b(a.name)){h.classList.add("d-block");const n=new DataTransfer;e.files=n.files}if(d>f){u.classList.add("d-block");const n=new DataTransfer;e.files=n.files}}r.innerHTML="";for(const a of e.files)r.innerHTML+=`<span class="file" part="file">${a.name} <button data-file="${a.name}">Remove</button></span>`;const t=new CustomEvent("elementchange",{detail:{files:e.files}});if(l.dispatchEvent(t),e.files.length==0){const a=new CustomEvent("empty");l.dispatchEvent(a)}}),l.hasAttribute("data-filename")){const t=l.getAttribute("data-filename");t&&(r.innerHTML=`<span class="file">${t} <button data-file="${t}">Remove</button></span>`)}}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"fileupload"});class y extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const s=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${s}/css/core.min.css`,i=document.createElement("template");i.innerHTML=`
4
+ */function v(l,o){const r=o.querySelector(".files"),a=o.querySelector(".drop-area"),e=l.querySelector("input"),f=l.hasAttribute("data-maxsize")?l.getAttribute("data-maxsize"):0,u=o.querySelector(".invalid-feedback.size"),h=o.querySelector(".invalid-feedback.ext"),s=e.cloneNode();a.append(s);const b=function(t){if(!e.hasAttribute("accept"))return!0;const i=t.split(".").pop();return!!e.getAttribute("accept").includes(i)};if(o.addEventListener("click",t=>{t&&t.target instanceof HTMLElement&&t.target.closest(".btn-primary")&&(h.classList.remove("d-block"),u.classList.remove("d-block"),(e.hasAttribute("multiple")?s:e).click())}),o.addEventListener("click",t=>{if(t&&t.target instanceof HTMLElement&&t.target.closest(".files button")){const i=new DataTransfer,{files:d}=e,n=t.target.closest(".files button");for(let p=0;p<d.length;p++){const g=d[p];g.name!=n.getAttribute("data-file")&&i.items.add(g)}e.files=i.files;const m=new Event("change");e.dispatchEvent(m);const c=new CustomEvent("fileRemoved",{detail:{removedFile:n?.dataset.file}});l.dispatchEvent(c)}}),s.addEventListener("change",()=>{if(e.hasAttribute("multiple")){const i=[...e.files,...s.files],d=[],n=new DataTransfer;for(let m=0;m<i.length;m++){const c=i[m],p=c.size/1e3;!d.includes(c.name)&&(f==0||p<f)&&b(c.name)&&n.items.add(c),b(c.name)||h.classList.add("d-block"),p>f&&u.classList.add("d-block"),d.push(c.name)}e.files=n.files}else e.files=s.files;const t=new Event("change");e.dispatchEvent(t)}),s.addEventListener("dragenter",()=>{s.classList.add("focus")}),s.addEventListener("dragleave",()=>{s.classList.remove("focus")}),s.addEventListener("drop",()=>{s.classList.remove("focus")}),e.addEventListener("change",()=>{if(e.files.length==1){const i=e.files[0],d=i.size/1e3;if(!b(i.name)){h.classList.add("d-block");const n=new DataTransfer;e.files=n.files}if(d>f){u.classList.add("d-block");const n=new DataTransfer;e.files=n.files}}r.innerHTML="";for(const i of e.files)r.innerHTML+=`<span class="file" part="file">${i.name} <button data-file="${i.name}" part="file__remove">Remove</button></span>`;const t=new CustomEvent("elementchange",{detail:{files:e.files}});if(l.dispatchEvent(t),e.files.length==0){const i=new CustomEvent("empty");l.dispatchEvent(i)}}),l.hasAttribute("data-filename")){const t=l.getAttribute("data-filename");t&&(r.innerHTML=`<span class="file" part="file">${t} <button data-file="${t}" part="file__remove">Remove</button></span>`)}}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"fileupload"});class y extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const o=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${o}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
5
5
  <style>
6
6
  @import "${r}";
7
- .file-upload{max-width:25rem !important;padding-bottom:1rem}.file-upload .drop-area>input{display:none}.file-upload .file-upload__title{margin-top:0;margin-bottom:0;font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);clear:both;display:block;padding-bottom:2rem;font-size:1.5rem;line-height:2rem;padding-bottom:2rem;max-width:var(--content-max-width)}.file-upload .helper-text{max-width:16.875rem}.files span{display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);border:2px solid var(--colour-primary-theme);appearance:none;border-radius:0.5rem;margin-bottom:1rem;color:var(--colour-primary);border-color:#d8d8d8;background:#d8d8d8;max-width:25rem !important;position:relative}@media(forced-colors: active){.files span{padding-right:5rem}.files span button{padding:0;width:3.7rem !important;text-indent:0% !important}.files span button:after{display:none !important}}.files span button{position:absolute;top:calc(50% - 0.5625rem);right:0.875rem;z-index:var(--index-floating);text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0)}.files span button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(.fileupload--drag-drop) .file-upload{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .helper-text{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .drop-area>input{display:block;min-height:12.5rem;border:2px dashed var(--colour-primary-theme);color:rgba(0,0,0,0);position:relative;padding:1.5rem 2rem 1.5rem 2rem;user-select:none;max-width:100%;min-width:100%;margin-bottom:1rem}:host(.fileupload--drag-drop) .file-upload .drop-area>input.focus{border:2px solid var(--colour-info)}:host(.fileupload--drag-drop) .file-upload .drop-area{position:relative}:host(.fileupload--drag-drop) .file-upload .drop-area::before{content:"Drag and drop files here or click to upload";position:absolute;inset:1.5rem 2rem 1.5rem 2rem;z-index:1;pointer-events:none}:host(.fileupload--drag-drop) .file-upload ::file-selector-button{position:absolute;inset:0;opacity:0}/*# sourceMappingURL=assets/css/components/fileupload.css.map */
7
+ .file-upload{max-width:25rem !important;padding-bottom:1rem}.file-upload .drop-area>input{display:none}.file-upload .file-upload__title{margin-top:0;margin-bottom:0;font-family:var(--font-heading);font-style:normal;font-weight:var(--heading-weight);line-height:2rem;color:var(--colour-heading);clear:both;display:block;padding-bottom:2rem;font-size:1.5rem;line-height:2rem;padding-bottom:2rem;max-width:var(--content-max-width)}.file-upload .helper-text{max-width:16.875rem}.files span{display:block;width:100%;padding:var(--input-padding-block, 0.75rem) var(--input-padding-inline, 1rem);font-size:var(--input-fs, 1rem);line-height:var(--input-lh, 1.25rem);border:2px solid var(--colour-primary-theme);appearance:none;border-radius:0.5rem;margin-bottom:1rem;color:var(--colour-primary);border-color:#d8d8d8;background:#d8d8d8;max-width:25rem !important;position:relative}@media(forced-colors: active){.files span{padding-right:5rem}.files span button{padding:0;width:3.7rem !important;text-indent:0% !important}.files span button:after{display:none !important}}.files span button{position:absolute;top:calc(50% - 0.5625rem);right:0.875rem;z-index:var(--index-floating);text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0);color:inherit}.files span button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(.fileupload--drag-drop) .file-upload{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .helper-text{max-width:50rem !important}:host(.fileupload--drag-drop) .file-upload .drop-area>input{display:block;min-height:12.5rem;border:2px dashed var(--colour-primary-theme);color:rgba(0,0,0,0);position:relative;padding:1.5rem 2rem 1.5rem 2rem;user-select:none;max-width:100%;min-width:100%;margin-bottom:1rem}:host(.fileupload--drag-drop) .file-upload .drop-area>input.focus{border:2px solid var(--colour-info)}:host(.fileupload--drag-drop) .file-upload .drop-area{position:relative}:host(.fileupload--drag-drop) .file-upload .drop-area::before{content:"Drag and drop files here or click to upload";position:absolute;inset:1.5rem 2rem 1.5rem 2rem;z-index:1;pointer-events:none}:host(.fileupload--drag-drop) .file-upload ::file-selector-button{position:absolute;inset:0;opacity:0}/*# sourceMappingURL=assets/css/components/fileupload.css.map */
8
8
 
9
9
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
10
10
  </style>
@@ -19,5 +19,5 @@
19
19
  <span class="invalid-feedback ext">Some files did not match the accepted extension type.</span>
20
20
  <span class="invalid-feedback size">Some files were too large to upload.</span>
21
21
  </div>
22
- `,this.shadowRoot.appendChild(i.content.cloneNode(!0))}connectedCallback(){this.innerHTML+='<i class="fa-regular fa-arrow-up-from-bracket me-2" aria-hidden="true" slot="btn"></i>';const s=this.shadowRoot.querySelector(".file-upload"),r=this.querySelector("input"),i=this.shadowRoot.querySelector(".helper-text");this.querySelector('[slot="helper"]')||(i.innerHTML=`${this.hasAttribute("data-maxsize")?`Max file size is ${this.getAttribute("data-maxsize")}kb. `:""}${r.hasAttribute("accept")?`Supported file types are ${r.getAttribute("accept")}`:""}`),v(this,s)}static get observedAttributes(){return["data-filename"]}attributeChangedCallback(s,r,i){switch(s){case"data-filename":{if(r!=i){const e=this.shadowRoot.querySelector(".files");i!=null&&i!="null"&&i!=""&&(e.innerHTML=`<span class="file">${i} <button data-file="${i}">Remove</button></span>`)}break}}}}export{y as default};
22
+ `,this.shadowRoot.appendChild(a.content.cloneNode(!0))}connectedCallback(){this.innerHTML+='<i class="fa-regular fa-arrow-up-from-bracket me-2" aria-hidden="true" slot="btn"></i>';const o=this.shadowRoot.querySelector(".file-upload"),r=this.querySelector("input"),a=this.shadowRoot.querySelector(".helper-text");this.querySelector('[slot="helper"]')||(a.innerHTML=`${this.hasAttribute("data-maxsize")?`Max file size is ${this.getAttribute("data-maxsize")}kb. `:""}${r.hasAttribute("accept")?`Supported file types are ${r.getAttribute("accept")}`:""}`),v(this,o)}static get observedAttributes(){return["data-filename"]}attributeChangedCallback(o,r,a){switch(o){case"data-filename":{if(r!=a){const e=this.shadowRoot.querySelector(".files");a!=null&&a!="null"&&a!=""&&(e.innerHTML=`<span class="file" part="file">${a} <button data-file="${a}" part="file__remove">Remove</button></span>`)}break}}}}export{y as default};
23
23
  //# sourceMappingURL=fileupload.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileupload.component.min.js","sources":["../../modules/fileupload.js","fileupload.component.js"],"sourcesContent":["function fileupload(fileupload, wrapper) {\n const filesWrapper = wrapper.querySelector('.files');\n const dropArea = wrapper.querySelector('.drop-area');\n const input = fileupload.querySelector('input');\n const maxSize = fileupload.hasAttribute('data-maxsize') ? fileupload.getAttribute('data-maxsize') : 0;\n const errorMsgSize = wrapper.querySelector('.invalid-feedback.size');\n const errorMsgExt = wrapper.querySelector('.invalid-feedback.ext');\n // We clone the input field to work as a buffer input field, this allows us to add new files without losing the old ones\n const cloneInput = input.cloneNode();\n dropArea.append(cloneInput);\n const checkFileExt = function (filename) {\n if (!input.hasAttribute('accept'))\n return true;\n const nameExtension = filename.split('.').pop();\n const acceptedTypes = input.getAttribute('accept');\n if (acceptedTypes.includes(nameExtension))\n return true;\n return false;\n };\n wrapper.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')) {\n // If the input allows multiples then use the buffer clone input\n errorMsgExt.classList.remove('d-block');\n errorMsgSize.classList.remove('d-block');\n const inputTrigger = input.hasAttribute('multiple') ? cloneInput : input;\n inputTrigger.click();\n }\n });\n wrapper.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.files button')) {\n const dt = new DataTransfer();\n const { files } = input;\n const button = event.target.closest('.files button');\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (file.name != button.getAttribute('data-file'))\n dt.items.add(file); // here you exclude the file. thus removing it.\n }\n input.files = dt.files; // Assign the updates list\n const changeEvent = new Event('change');\n input.dispatchEvent(changeEvent);\n const fileRemovedEvent = new CustomEvent('fileRemoved', { detail: { removedFile: button === null || button === void 0 ? void 0 : button.dataset.file } });\n fileupload.dispatchEvent(fileRemovedEvent);\n }\n });\n // Buffer input change event\n cloneInput.addEventListener('change', () => {\n if (input.hasAttribute('multiple')) {\n const filesArray = [...input.files, ...cloneInput.files];\n const fileNames = [];\n const dt = new DataTransfer();\n for (let i = 0; i < filesArray.length; i++) {\n const file = filesArray[i];\n const size = file.size / 1000;\n if (!fileNames.includes(file.name) && (maxSize == 0 || size < maxSize) && checkFileExt(file.name))\n dt.items.add(file); // here you exclude the file. thus removing it.\n if (!checkFileExt(file.name)) {\n errorMsgExt.classList.add('d-block');\n }\n if (size > maxSize) {\n errorMsgSize.classList.add('d-block');\n }\n fileNames.push(file.name);\n }\n input.files = dt.files;\n }\n else {\n input.files = cloneInput.files;\n }\n const changeEvent = new Event('change');\n input.dispatchEvent(changeEvent);\n });\n cloneInput.addEventListener('dragenter', () => {\n cloneInput.classList.add('focus');\n });\n cloneInput.addEventListener('dragleave', () => {\n cloneInput.classList.remove('focus');\n });\n cloneInput.addEventListener('drop', () => {\n cloneInput.classList.remove('focus');\n });\n input.addEventListener('change', () => {\n if (input.files.length == 1) {\n const file = input.files[0];\n const size = file.size / 1000;\n if (!checkFileExt(file.name)) {\n errorMsgExt.classList.add('d-block');\n const dt = new DataTransfer();\n input.files = dt.files;\n }\n if (size > maxSize) {\n errorMsgSize.classList.add('d-block');\n const dt = new DataTransfer();\n input.files = dt.files;\n }\n }\n // Reset\n filesWrapper.innerHTML = '';\n for (const file of input.files) {\n filesWrapper.innerHTML += `<span class=\"file\" part=\"file\">${file.name} <button data-file=\"${file.name}\">Remove</button></span>`;\n }\n const elementChangeEvent = new CustomEvent('elementchange', { detail: { files: input.files } });\n fileupload.dispatchEvent(elementChangeEvent);\n if (input.files.length == 0) {\n const emptyEvent = new CustomEvent('empty');\n fileupload.dispatchEvent(emptyEvent);\n }\n });\n if (fileupload.hasAttribute('data-filename')) {\n const filename = fileupload.getAttribute('data-filename');\n if (filename)\n filesWrapper.innerHTML = `<span class=\"file\">${filename} <button data-file=\"${filename}\">Remove</button></span>`;\n }\n}\nexport default fileupload;\n","import fileupload from '../../modules/fileupload.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'fileupload',\n});\nclass iamFileupload 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 coreCSS = document.body.hasAttribute('data-core-css')\n ? document.body.getAttribute('data-core-css')\n : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/fileupload.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"file-upload\">\n <span class=\"file-upload__title\" part=\"title\">Upload file</span>\n <p class=\"helper-text\"><slot name=\"helper\"></slot></p>\n <button class=\"btn btn-primary\" type=\"button\" part=\"button\"><slot name=\"btn\"></slot> Upload ${this.hasAttribute('data-filetype') ? this.getAttribute('data-filetype') : 'file'}</button>\n <div class=\"drop-area\"></div>\n <hr/>\n <slot></slot>\n <div class=\"files\" part=\"files\"><slot name=\"files\"></slot></div>\n <span class=\"invalid-feedback ext\">Some files did not match the accepted extension type.</span>\n <span class=\"invalid-feedback size\">Some files were too large to upload.</span>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n this.innerHTML += '<i class=\"fa-regular fa-arrow-up-from-bracket me-2\" aria-hidden=\"true\" slot=\"btn\"></i>';\n const wrapper = this.shadowRoot.querySelector('.file-upload');\n const input = this.querySelector('input');\n const helperText = this.shadowRoot.querySelector('.helper-text');\n if (!this.querySelector('[slot=\"helper\"]'))\n helperText.innerHTML = `${this.hasAttribute('data-maxsize') ? `Max file size is ${this.getAttribute('data-maxsize')}kb. ` : ''}${input.hasAttribute('accept') ? `Supported file types are ${input.getAttribute('accept')}` : ''}`;\n fileupload(this, wrapper);\n }\n static get observedAttributes() {\n return ['data-filename'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-filename': {\n if (oldVal != newVal) {\n const filesWrapper = this.shadowRoot.querySelector('.files');\n if (newVal != null && newVal != 'null' && newVal != '')\n filesWrapper.innerHTML = `<span class=\"file\">${newVal} <button data-file=\"${newVal}\">Remove</button></span>`;\n }\n break;\n }\n }\n }\n}\nexport default iamFileupload;\n"],"names":["fileupload","wrapper","filesWrapper","dropArea","input","maxSize","errorMsgSize","errorMsgExt","cloneInput","checkFileExt","filename","nameExtension","event","dt","files","button","i","file","changeEvent","fileRemovedEvent","filesArray","fileNames","size","elementChangeEvent","emptyEvent","iamFileupload","assetLocation","coreCSS","template","helperText","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"fileupload.component.min.js","sources":["../../modules/fileupload.js","fileupload.component.js"],"sourcesContent":["function fileupload(fileupload, wrapper) {\n const filesWrapper = wrapper.querySelector('.files');\n const dropArea = wrapper.querySelector('.drop-area');\n const input = fileupload.querySelector('input');\n const maxSize = fileupload.hasAttribute('data-maxsize') ? fileupload.getAttribute('data-maxsize') : 0;\n const errorMsgSize = wrapper.querySelector('.invalid-feedback.size');\n const errorMsgExt = wrapper.querySelector('.invalid-feedback.ext');\n // We clone the input field to work as a buffer input field, this allows us to add new files without losing the old ones\n const cloneInput = input.cloneNode();\n dropArea.append(cloneInput);\n const checkFileExt = function (filename) {\n if (!input.hasAttribute('accept'))\n return true;\n const nameExtension = filename.split('.').pop();\n const acceptedTypes = input.getAttribute('accept');\n if (acceptedTypes.includes(nameExtension))\n return true;\n return false;\n };\n wrapper.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')) {\n // If the input allows multiples then use the buffer clone input\n errorMsgExt.classList.remove('d-block');\n errorMsgSize.classList.remove('d-block');\n const inputTrigger = input.hasAttribute('multiple') ? cloneInput : input;\n inputTrigger.click();\n }\n });\n wrapper.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.files button')) {\n const dt = new DataTransfer();\n const { files } = input;\n const button = event.target.closest('.files button');\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (file.name != button.getAttribute('data-file'))\n dt.items.add(file); // here you exclude the file. thus removing it.\n }\n input.files = dt.files; // Assign the updates list\n const changeEvent = new Event('change');\n input.dispatchEvent(changeEvent);\n const fileRemovedEvent = new CustomEvent('fileRemoved', { detail: { removedFile: button === null || button === void 0 ? void 0 : button.dataset.file } });\n fileupload.dispatchEvent(fileRemovedEvent);\n }\n });\n // Buffer input change event\n cloneInput.addEventListener('change', () => {\n if (input.hasAttribute('multiple')) {\n const filesArray = [...input.files, ...cloneInput.files];\n const fileNames = [];\n const dt = new DataTransfer();\n for (let i = 0; i < filesArray.length; i++) {\n const file = filesArray[i];\n const size = file.size / 1000;\n if (!fileNames.includes(file.name) && (maxSize == 0 || size < maxSize) && checkFileExt(file.name))\n dt.items.add(file); // here you exclude the file. thus removing it.\n if (!checkFileExt(file.name)) {\n errorMsgExt.classList.add('d-block');\n }\n if (size > maxSize) {\n errorMsgSize.classList.add('d-block');\n }\n fileNames.push(file.name);\n }\n input.files = dt.files;\n }\n else {\n input.files = cloneInput.files;\n }\n const changeEvent = new Event('change');\n input.dispatchEvent(changeEvent);\n });\n cloneInput.addEventListener('dragenter', () => {\n cloneInput.classList.add('focus');\n });\n cloneInput.addEventListener('dragleave', () => {\n cloneInput.classList.remove('focus');\n });\n cloneInput.addEventListener('drop', () => {\n cloneInput.classList.remove('focus');\n });\n input.addEventListener('change', () => {\n if (input.files.length == 1) {\n const file = input.files[0];\n const size = file.size / 1000;\n if (!checkFileExt(file.name)) {\n errorMsgExt.classList.add('d-block');\n const dt = new DataTransfer();\n input.files = dt.files;\n }\n if (size > maxSize) {\n errorMsgSize.classList.add('d-block');\n const dt = new DataTransfer();\n input.files = dt.files;\n }\n }\n // Reset\n filesWrapper.innerHTML = '';\n for (const file of input.files) {\n filesWrapper.innerHTML += `<span class=\"file\" part=\"file\">${file.name} <button data-file=\"${file.name}\" part=\"file__remove\">Remove</button></span>`;\n }\n const elementChangeEvent = new CustomEvent('elementchange', { detail: { files: input.files } });\n fileupload.dispatchEvent(elementChangeEvent);\n if (input.files.length == 0) {\n const emptyEvent = new CustomEvent('empty');\n fileupload.dispatchEvent(emptyEvent);\n }\n });\n if (fileupload.hasAttribute('data-filename')) {\n const filename = fileupload.getAttribute('data-filename');\n if (filename)\n filesWrapper.innerHTML = `<span class=\"file\" part=\"file\">${filename} <button data-file=\"${filename}\" part=\"file__remove\">Remove</button></span>`;\n }\n}\nexport default fileupload;\n","import fileupload from '../../modules/fileupload.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'fileupload',\n});\nclass iamFileupload 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 coreCSS = document.body.hasAttribute('data-core-css')\n ? document.body.getAttribute('data-core-css')\n : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/fileupload.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"file-upload\">\n <span class=\"file-upload__title\" part=\"title\">Upload file</span>\n <p class=\"helper-text\"><slot name=\"helper\"></slot></p>\n <button class=\"btn btn-primary\" type=\"button\" part=\"button\"><slot name=\"btn\"></slot> Upload ${this.hasAttribute('data-filetype') ? this.getAttribute('data-filetype') : 'file'}</button>\n <div class=\"drop-area\"></div>\n <hr/>\n <slot></slot>\n <div class=\"files\" part=\"files\"><slot name=\"files\"></slot></div>\n <span class=\"invalid-feedback ext\">Some files did not match the accepted extension type.</span>\n <span class=\"invalid-feedback size\">Some files were too large to upload.</span>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n this.innerHTML += '<i class=\"fa-regular fa-arrow-up-from-bracket me-2\" aria-hidden=\"true\" slot=\"btn\"></i>';\n const wrapper = this.shadowRoot.querySelector('.file-upload');\n const input = this.querySelector('input');\n const helperText = this.shadowRoot.querySelector('.helper-text');\n if (!this.querySelector('[slot=\"helper\"]'))\n helperText.innerHTML = `${this.hasAttribute('data-maxsize') ? `Max file size is ${this.getAttribute('data-maxsize')}kb. ` : ''}${input.hasAttribute('accept') ? `Supported file types are ${input.getAttribute('accept')}` : ''}`;\n fileupload(this, wrapper);\n }\n static get observedAttributes() {\n return ['data-filename'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-filename': {\n if (oldVal != newVal) {\n const filesWrapper = this.shadowRoot.querySelector('.files');\n if (newVal != null && newVal != 'null' && newVal != '')\n filesWrapper.innerHTML = `<span class=\"file\" part=\"file\">${newVal} <button data-file=\"${newVal}\" part=\"file__remove\">Remove</button></span>`;\n }\n break;\n }\n }\n }\n}\nexport default iamFileupload;\n"],"names":["fileupload","wrapper","filesWrapper","dropArea","input","maxSize","errorMsgSize","errorMsgExt","cloneInput","checkFileExt","filename","nameExtension","event","dt","files","button","i","file","changeEvent","fileRemovedEvent","filesArray","fileNames","size","elementChangeEvent","emptyEvent","iamFileupload","assetLocation","coreCSS","template","helperText","attrName","oldVal","newVal"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.1
2
+ * iamKey v7.2.2--beta2
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const p=e=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:e})},h=(e,t,a)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),a.forEach(o=>{e.addEventListener(o,function(r){const i={event:o,element:t,target:r.target};Object.keys(r.detail).forEach(d=>{const s=r.detail[d];i[d]=s}),window.dataLayer.push(i)})}),!0),g=`<div class="card__head" part="head">
5
5
  <slot name="head"></slot>