@iamproperty/components 3.7.2 → 3.7.3

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 (36) hide show
  1. package/assets/css/components/dialog.css +1 -1
  2. package/assets/css/components/dialog.css.map +1 -1
  3. package/assets/css/components/pagination.css +1 -1
  4. package/assets/css/components/pagination.css.map +1 -1
  5. package/assets/css/components/table.css +1 -1
  6. package/assets/css/components/table.css.map +1 -1
  7. package/assets/css/core.min.css +1 -1
  8. package/assets/css/core.min.css.map +1 -1
  9. package/assets/css/style.min.css +1 -1
  10. package/assets/css/style.min.css.map +1 -1
  11. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  12. package/assets/js/components/applied-filters/applied-filters.component.min.js +14 -0
  13. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -0
  14. package/assets/js/components/card/card.component.min.js +1 -1
  15. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  16. package/assets/js/components/header/header.component.min.js +1 -1
  17. package/assets/js/components/pagination/pagination.component.min.js +18 -0
  18. package/assets/js/components/pagination/pagination.component.min.js.map +1 -0
  19. package/assets/js/components/table/table.component.js +1 -0
  20. package/assets/js/components/table/table.component.min.js +13 -13
  21. package/assets/js/components/table/table.component.min.js.map +1 -1
  22. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  23. package/assets/js/dynamic.min.js +1 -1
  24. package/assets/js/modules/table.js +10 -4
  25. package/assets/js/scripts.bundle.js +3 -3
  26. package/assets/js/scripts.bundle.js.map +1 -1
  27. package/assets/js/scripts.bundle.min.js +2 -2
  28. package/assets/js/scripts.bundle.min.js.map +1 -1
  29. package/assets/sass/components/dialog.scss +11 -0
  30. package/assets/sass/components/pagination.scss +2 -1
  31. package/assets/sass/components/table.scss +6 -4
  32. package/assets/ts/components/table/table.component.ts +1 -0
  33. package/assets/ts/modules/table.ts +13 -5
  34. package/dist/components.es.js +301 -296
  35. package/dist/components.umd.js +3 -3
  36. package/package.json +1 -1
@@ -5,8 +5,8 @@
5
5
  </ul>`,s.innerHTML+=`<div class="d-sm-none text-center">
6
6
  <span class="d-block pb-2">You've viewed ${l} of ${i} results</span>
7
7
  <a href="?show=${parseInt(l)+parseInt(o)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(l)+parseInt(o)}">Load more results</a>
8
- </div>`,!0},P=a=>{const s=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((r,i)=>{const l=Array.from(r.querySelectorAll("th, td")),o=["0","low","medium","high","unknown","n/a","pending","verified","incomplete","completed","requires approval"];l.forEach((c,d)=>{const n=s[d];if(typeof n<"u"){let h=document.createElement("div");h.innerHTML=n.innerHTML;let m=h.textContent||h.innerText||"";c.setAttribute("data-label",m),n.hasAttribute("data-td-class")&&c.setAttribute("class",n.getAttribute("data-td-class")),n.hasAttribute("data-format")&&(c.setAttribute("data-format",n.getAttribute("data-format")),c.innerHTML=T(n.getAttribute("data-format"),c.textContent.trim())),o.includes(c.textContent.trim().toLowerCase())&&c.setAttribute("data-content",c.textContent.trim().toLowerCase())}})})},oe=a=>{let s=0;return Array.from(a.querySelectorAll("tr")).forEach((t,r)=>{let i=window.getComputedStyle(document.querySelector("html")),l=t.querySelector(":scope > *:last-child > *:first-child");if(l){let c=l.offsetWidth/parseFloat(i.fontSize);c+=1.5,s=s>c?s:c}let o=t.offsetHeight/parseFloat(i.fontSize);t.style.setProperty("--row-height",`${o}rem`)}),s},re=a=>{if(a.closest(".table--fullwidth")||a.querySelectorAll("thead tr th").length<4)return!1;Array.from(a.querySelectorAll("tbody tr")).forEach((s,t)=>{let r=s.querySelector(":scope > :is(td,th):first-child"),i=r.textContent;if(i!="")r.innerHTML=`<span class="td__content">${i}</span><button type="button" class="d-none">${i}</button>`;else{let l=s.querySelector(":scope > :is(td,th):nth-child(2)"),o=l.textContent;l.innerHTML=`<span class="td__content">${o}</span><button type="button" class="d-none">${o}</button>`}})},le=a=>{a.addEventListener("click",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest("tr > :is(td,th):first-child button")){let t=s.target.closest("tr > :is(td,th):first-child button"),r=t.parentNode.closest("tr");r.getAttribute("data-view")=="full"?r.setAttribute("data-view","default"):r.setAttribute("data-view","full"),t.blur()}})},R=(a,s)=>{let t=s.querySelector("[data-search]");if(!t)return!1;const r=t.getAttribute("id"),i=t.getAttribute("data-search").split(",");let l=t.parentNode,o={};i.forEach((c,d)=>{Array.from(a.querySelectorAll('td[data-label="'+c.trim()+'"]')).forEach((n,h)=>{n.querySelector(".td__content")?o[n.querySelector(".td__content").textContent]=n.querySelector(".td__content").textContent:o[n.textContent]=n.textContent})}),t.setAttribute("list",`${r}_list`),t.setAttribute("autocomplete","off"),l.querySelector("datalist")||(l.innerHTML+=`<datalist id="${r}_list"></datalist>`),l.querySelector("datalist").innerHTML=`${Object.keys(o).map(c=>`<option value="${c}"></option>`).join("")}`},ne=(a,s,t,r,i)=>{var l;let o=function(n=!1){if(s.hasAttribute("data-ajax")){if(!n){let h=s.querySelector("[data-pagination]");h.value=1,r.setAttribute("data-page",1)}O(a,s,t,r)}else s.hasAttribute("data-submit")?s.submit():(I(a,s,r),C(r,t),V(a,s))};s.addEventListener("keyup",n=>{clearTimeout(l),n&&n.target instanceof HTMLElement&&n.target.closest("[data-search]")&&(l=setTimeout(function(){o()},500))}),s.addEventListener("change",n=>{clearTimeout(l),n&&n.target instanceof HTMLElement&&n.target.closest("[data-sort]")&&(s.hasAttribute("data-submit")||F(a,s,i),o()),n&&n.target instanceof HTMLElement&&n.target.closest("[data-search]")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-filter]")&&n.target.closest("form .dialog__wrapper > dialog")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-filter]")&&!n.target.closest("form dialog")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-show]")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-mimic]")&&o()}),s.addEventListener("click",n=>{clearTimeout(l),n&&n.target instanceof HTMLElement&&n.target.closest('dialog button:not([type="button"])')&&n.target.closest('dialog button:not([type="button"])').closest("dialog").close(),n&&n.target instanceof HTMLElement&&n.target.closest(".dialog__close")&&(n.preventDefault(),n.stopPropagation()),n&&n.target instanceof HTMLElement&&n.target.closest("[data-clear]")&&(s.reset(),s.hasAttribute("data-submit")||F(a,s,i),o())}),s.addEventListener("submit",n=>{clearTimeout(l),s.hasAttribute("data-submit")||n.preventDefault(),o()}),s.addEventListener("force",n=>{o()}),s.addEventListener("paginate",n=>{o(!0)});let c=[],d=[];Array.from(s.querySelectorAll("[data-mimic]")).forEach((n,h)=>{let m=n.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${m}"]`)).forEach((f,p)=>{let u=f.closest("form");c.includes(u)||c.push(u),d.includes(m)||d.push(m)})}),c.forEach((n,h)=>{const m=function(){let f=[],p=new FormData(n);for(const[u,A]of p)document.querySelector(`[data-mimic="${u}"]`)&&!f.includes(u)?(f.push(u),document.querySelector(`[data-mimic="${u}"]`).value=A):document.querySelector(`[data-mimic="${u}"]`)&&(document.querySelector(`[data-mimic="${u}"]`).value+=","+A);for(const u of f){const A=new Event("force");s.dispatchEvent(A)}for(const u of d)if(!p.has(u)&&n.querySelector(`[name="${u}"]`)){document.querySelector(`[data-mimic="${u}"]`).value="";const A=new Event("force");s.dispatchEvent(A)}};n.addEventListener("force",f=>{m()}),n.addEventListener("change",f=>{m()})})},F=(a,s,t)=>{if(s.getAttribute("data-ajax"))return!1;let r=a.querySelector("tbody"),i=s.querySelector("[data-sort]"),l=i.querySelector(`option:nth-child(${i.selectedIndex+1})`),o=l.getAttribute("data-sort"),c=l.getAttribute("data-order"),d=l.getAttribute("data-format");if(!o)return r.innerHTML=t.innerHTML,P(a),!1;let n=[];["asc","desc","descending"].includes(c)||(n=c.split(","));let h=[];Array.from(r.querySelectorAll("tr")).forEach((f,p)=>{let u=f.querySelector('td[data-label="'+o+'"], th[data-label="'+o+'"]').textContent.trim();n.length&&n.includes(u)&&(u=n.indexOf(u)),te(u)&&(u=ae(u,10)),d&&d=="date"&&(u=new Date(u));const A={index:u,row:f};h.push(A)}),h.sort((f,p)=>f.index>p.index?1:-1),(c=="descending"||c=="desc")&&(h=h.reverse());let m="";h.forEach((f,p)=>{m+=f.row.outerHTML}),r.innerHTML=m},I=(a,s,t)=>{a.classList.remove("table--filtered");let r=[],i=[],l=0,o=s.querySelector("[data-pagination]")?parseInt(s.querySelector("[data-pagination]").value):1,c=s.querySelector("[data-show]")?parseInt(s.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((n,h)=>{n.classList.remove("filtered"),n.classList.remove("filtered--matched"),n.classList.remove("filtered--show"),n.removeAttribute("data-filtered-by")}),Array.from(s.querySelectorAll("[data-filter]")).forEach((n,h)=>{if(!(n.type=="radio"&&!n.checked)&&!(n.type=="checkbox"&&!n.checked)){if(n.getAttribute("data-filter")=="multi")for(const[m,f]of Object.entries(JSON.parse(n.value)))r[n.getAttribute("data-filter")].push(f);else if(n&&n.value){let m=n.getAttribute("data-filter");r[m]||(r[m]=new Array),r[m].push(n.value)}}}),s.querySelector("[data-search]")){let n=s.querySelector("[data-search]");s.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((m,f)=>{i.push({column:`${m.trim()}`,value:`${n.value}`})})}Array.from(s.querySelectorAll("[data-filter-count]")).forEach((n,h)=>{n.innerHTML=""}),r.length&&Array.from(s.querySelectorAll("[data-filter-count]")).forEach((n,h)=>{n.innerHTML+=`(${r.length})`}),a.classList.add("table--filtered");for(const[n,h]of Object.entries(r))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((m,f)=>{let p=!1;h.forEach((u,A)=>{let E=m.querySelector(`[data-label="${n}"]`);if(u&&u=="$today")u=T("date",new Date);else if(u&&u=="$yesterday"){let k=new Date;k.setDate(k.getDate()-1),u=T("date",k)}else if(u&&(u=="$thisWeek"||u=="$lastWeek")){let k=new Date,b=new Date(k.setDate(k.getDate()-(k.getDay()-1))),w=new Date(k.setDate(k.getDate()-k.getDay()+7)),g=new Date(E.textContent.toLowerCase());if(k.setHours(0,0,0,0),b.setHours(0,0,0,0),w.setHours(0,0,0,0),g.setHours(0,0,0,0),u=="$thisWeek")p=g>=b&&g<=w;else{let L=new Date(b.setDate(b.getDate()-7)),q=new Date(w.setDate(w.getDate()-7));L.setHours(0,0,0,0),q.setHours(0,0,0,0),p=g>=L&&g<=q}}else if(u&&u=="$thisMonth"){let k=new Date,b=k.getFullYear(),w=k.getMonth();var $=new Date(b,w,1),N=new Date(b,w+1,0);let g=new Date(E.textContent.toLowerCase());$.setHours(0,0,0,0),N.setHours(0,0,0,0),g.setHours(0,0,0,0),p=g>=$&&g<=N}else if(u&&u=="$lastMonth"){let k=new Date,b=k.getFullYear(),w=k.getMonth();var S=new Date(b,w-1,1),D=new Date(b,w,0);let g=new Date(E.textContent.toLowerCase());S.setHours(0,0,0,0),D.setHours(0,0,0,0),g.setHours(0,0,0,0),p=g>=S&&g<=D}E&&E.textContent.toLowerCase().includes(u.toLowerCase())&&(p=!0)}),p||(m.classList.add("filtered"),m.setAttribute("data-filtered-by",n))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((n,h)=>{let m=!(i.length>0&&i[0].value.length>=3);i.forEach((f,p)=>{let u=n.querySelector(`[data-label="${f.column}"]`);u&&f.value.length>=3&&u.textContent.toLowerCase().includes(f.value.toLowerCase())&&(m=!0)}),m||n.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((n,h)=>{l++,n.classList.add("filtered--matched"),Math.ceil(l/c)==parseInt(o)&&n.classList.add("filtered--show")}),t&&(t.setAttribute("data-page",o),t.setAttribute("data-pages",Math.ceil(l/c)),t.setAttribute("data-total",l),t.setAttribute("data-show",c))},V=(a,s,t)=>{Array.from(s.querySelectorAll("[data-query]")).forEach((i,l)=>{let o=i.getAttribute("data-query"),c;if(o=="total")t.hasAttribute("data-total")?c=t.getAttribute("data-total"):c=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!o.includes(" == ")&&o.includes(" & ")){let d=o.split(" & "),n="";d.forEach(h=>{n+=`:not([data-filtered-by="${h}"])`}),c=Array.from(a.querySelectorAll(`tbody tr${n}`)).length}else if(!o.includes(" == "))c=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${o}"])`)).length;else if(o.includes(" && ")){let d=o.split(" && ");c=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(n){let h=!0;for(const[m,f]of Object.entries(d)){let p=f.split(" == ");(!n.querySelector(`td[data-label="${p[0]}"]`)||n.querySelector(`td[data-label="${p[0]}"]`).textContent!=`${p[1]}`)&&(h=!1)}return h}).length}else{let d=o.split(" == ");c=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${d[0]}"], tbody tr[data-filtered-by="${d[0]}"] td[data-label="${d[0]}"]`)).filter(function(n){return n.textContent===d[1]}).length}i.hasAttribute("data-total")?i.setAttribute("data-total",c):i.innerHTML=c})},ie=function(a,s,t,r){t.addEventListener("click",i=>{if(i&&i.target instanceof HTMLElement&&i.target.closest("[data-page]")){i.preventDefault();let l=s.querySelector("[data-pagination]"),o=i.target.closest("[data-page]").getAttribute("data-page");if(l.value=o,r.setAttribute("data-page",o),s.dispatchEvent(new Event("paginate")),a.hasAttribute("data-show-history")){const c=new URL(location);c.searchParams.set("page",o),history.pushState({type:"pagination",form:s.getAttribute("id"),page:o},"",c)}}if(i&&i.target instanceof HTMLElement&&i.target.closest("[data-show]")){i.preventDefault();let l=s.querySelector("[data-show]"),o=i.target.closest("[data-show]").getAttribute("data-show");l.value=o,r.setAttribute("data-show",o),s.dispatchEvent(new Event("submit"))}})},ce=(a,s)=>{if(!a)return!1;a.addEventListener("click",t=>{de(s)})},de=function(a){for(var s=[],t=a.getElementsByTagName("tr"),r=0;r<t.length;r++){for(var i=t[r].querySelectorAll("td,th"),l=[],o=0;o<i.length;o++)l.push(`"${i[o].textContent}"`);s.push(l.join(","))}s=s.join(`
9
- `);let c=new Blob([s],{type:"text/csv"});var d=document.createElement("a");d.download="export.csv";var n=window.URL.createObjectURL(c);d.href=n,d.style.display="none",document.body.appendChild(d),d.click(),document.body.removeChild(d)},j=function(a,s,t,r){if(P(a),re(a),V(a,s,r),r&&r.classList.contains("table--cta")){const i=oe(a);r.style.setProperty("--cta-width",`${i}rem`)}},O=async function(a,s,t,r){const i=(m,f,p)=>f.split(/[\.\[\]\'\"]/).filter(u=>u).reduce((u,A)=>u?u[A]:p,m);let l=new FormData(s),o=new URLSearchParams(l).toString(),c=a.querySelectorAll("thead tr th"),d=a.querySelector("tbody"),n=s.getAttribute("data-ajax");r.classList.add("table--loading"),window.controller||(window.controller=[]),window.controller[n]&&window.controller[n].abort(),window.controller[n]=new AbortController;const{signal:h}=controller[n];try{await fetch(n+"?"+o,{signal:h,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(m=>m.json()).then(m=>{let f=s.hasAttribute("data-schema")?s.getAttribute("data-schema"):"data",p=s.hasAttribute("data-schema-total")?s.getAttribute("data-schema-total"):"meta.total",u=s.hasAttribute("data-schema-page")?s.getAttribute("data-schema-page"):"meta.current_page",A=i(m,p,1),E=i(m,u,1),$=i(m,f),N=r.hasAttribute("data-empty-msg")?r.getAttribute("data-empty-msg"):"No results found";if($?(d.innerHTML="",$.forEach((S,D)=>{var k=document.createElement("tr");c.forEach((b,w)=>{let g="";var L=document.createElement("td");if(L.setAttribute("data-label",b.innerText),b.getAttribute("data-output")){var q=b.getAttribute("data-output");g=q.replace(new RegExp(/{(.*?)}/,"gm"),function(Q){return i(S,Q.replace("{","").replace("}",""))})}if(b.hasAttribute("data-output-array")){var q=b.getAttribute("data-output");let oo=i(S,q.replace("{","").replace("}",""));g="",oo.forEach((Y,go)=>{let ro=b.getAttribute("data-output-array"),B="";if(b.hasAttribute("data-output-array-property")&&b.hasAttribute("data-output-array-transform")){const v=i(Y,b.getAttribute("data-output-array-property")),lo=JSON.parse(b.getAttribute("data-output-array-transform"))[v];B=ro.replace(`{${b.getAttribute("data-output-array-property")}}`,lo)}B=B.replace(new RegExp(/{(.*?)}/,"gm"),function(v){return i(Y,v.replace("{","").replace("}",""))}),g+=B})}b.hasAttribute("data-transform")&&(g=JSON.parse(b.getAttribute("data-transform"))[g],!g&&b.hasAttribute("data-default")&&(g=b.getAttribute("data-default"))),L.innerHTML=g,k.appendChild(L)}),d.appendChild(k)}),R(a,s),r.setAttribute("data-total",parseInt(A)),r.setAttribute("data-page",parseInt(E)),r.setAttribute("data-pages",Math.ceil(r.getAttribute("data-total")/r.getAttribute("data-show"))),j(a,s,t,r),C(r,t),parseInt(A)==0&&(d.innerHTML=`<tr><td colspan="100%"><span>${N}</span></td></tr>`),r.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:n,formData:o})):d.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',s.hasAttribute("data-ajax-post")){const S=new XMLHttpRequest;S.open("GET",`${window.location.href}?ajax=true&${o}`),S.send()}})}catch(m){console.log(m)}},T=(a,s)=>{switch(a){case"datetime":return new Date(s).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(s).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(s).toLocaleDateString("en-gb",{year:"2-digit",month:"long",day:"numeric"});case"capitalise":return s=se(s)}};class me extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const s=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",t=this.classList.contains("table--cta"),r=this.classList.contains("table--export");let i=this.classList.toString();i=i.replace("table--cta","");const l=document.createElement("template");l.innerHTML=`
8
+ </div>`,!0},P=a=>{const s=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((r,i)=>{const l=Array.from(r.querySelectorAll("th, td")),o=["0","low","medium","high","unknown","n/a","pending","verified","incomplete","completed","requires approval"];l.forEach((c,d)=>{const n=s[d];if(typeof n<"u"){let h=document.createElement("div");h.innerHTML=n.innerHTML;let m=h.textContent||h.innerText||"";c.setAttribute("data-label",m),n.hasAttribute("data-td-class")&&c.setAttribute("class",n.getAttribute("data-td-class")),n.hasAttribute("data-format")&&(c.setAttribute("data-format",n.getAttribute("data-format")),c.innerHTML=T(n.getAttribute("data-format"),c.textContent.trim())),o.includes(c.textContent.trim().toLowerCase())&&c.setAttribute("data-content",c.textContent.trim().toLowerCase())}})})},oe=a=>{let s=0;return Array.from(a.querySelectorAll("tbody tr")).forEach((t,r)=>{let i=window.getComputedStyle(document.querySelector("html")),l=t.querySelector(":scope > *:last-child > *:first-child");if(l){l.classList.add("text-nowrap");let o=l.offsetWidth/parseFloat(i.fontSize);o+=1.7,s=s>o?s:o}}),s},re=a=>{if(a.closest(".table--fullwidth")||a.querySelectorAll("thead tr th").length<4)return!1;Array.from(a.querySelectorAll("tbody tr")).forEach((s,t)=>{let r=s.querySelector(":scope > :is(td,th):first-child"),i=r.textContent;if(i!="")r.innerHTML=`<span class="td__content">${i}</span><button type="button" class="d-none">${i}</button>`;else{let l=s.querySelector(":scope > :is(td,th):nth-child(2)"),o=l.textContent;l.innerHTML=`<span class="td__content">${o}</span><button type="button" class="d-none">${o}</button>`}})},le=a=>{a.addEventListener("click",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest("tr > :is(td,th):first-child button")){let t=s.target.closest("tr > :is(td,th):first-child button"),r=t.parentNode.closest("tr");r.getAttribute("data-view")=="full"?r.setAttribute("data-view","default"):r.setAttribute("data-view","full"),t.blur()}})},R=(a,s)=>{let t=s.querySelector("[data-search]");if(!t)return!1;const r=t.getAttribute("id"),i=t.getAttribute("data-search").split(",");let l=t.parentNode,o={};i.forEach((c,d)=>{Array.from(a.querySelectorAll('td[data-label="'+c.trim()+'"]')).forEach((n,h)=>{n.querySelector(".td__content")?o[n.querySelector(".td__content").textContent]=n.querySelector(".td__content").textContent:o[n.textContent]=n.textContent})}),t.setAttribute("list",`${r}_list`),t.setAttribute("autocomplete","off"),l.querySelector("datalist")||(l.innerHTML+=`<datalist id="${r}_list"></datalist>`),l.querySelector("datalist").innerHTML=`${Object.keys(o).map(c=>`<option value="${c}"></option>`).join("")}`},ne=(a,s,t,r,i)=>{var l;let o=function(n=!1){if(s.hasAttribute("data-ajax")){if(!n){let h=s.querySelector("[data-pagination]");h.value=1,r.setAttribute("data-page",1)}O(a,s,t,r)}else s.hasAttribute("data-submit")?s.submit():(I(a,s,r),C(r,t),V(a,s))};s.addEventListener("keyup",n=>{clearTimeout(l),n&&n.target instanceof HTMLElement&&n.target.closest("[data-search]")&&(l=setTimeout(function(){o()},500))}),s.addEventListener("change",n=>{clearTimeout(l),n&&n.target instanceof HTMLElement&&n.target.closest("[data-sort]")&&(s.hasAttribute("data-submit")||F(a,s,i),o()),n&&n.target instanceof HTMLElement&&n.target.closest("[data-search]")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-filter]")&&n.target.closest("form .dialog__wrapper > dialog")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-filter]")&&!n.target.closest("form dialog")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-show]")&&o(),n&&n.target instanceof HTMLElement&&n.target.closest("[data-mimic]")&&o()}),s.addEventListener("click",n=>{clearTimeout(l),n&&n.target instanceof HTMLElement&&n.target.closest('dialog button:not([type="button"])')&&n.target.closest('dialog button:not([type="button"])').closest("dialog").close(),n&&n.target instanceof HTMLElement&&n.target.closest(".dialog__close")&&(n.preventDefault(),n.stopPropagation()),n&&n.target instanceof HTMLElement&&n.target.closest("[data-clear]")&&(s.reset(),s.hasAttribute("data-submit")||F(a,s,i),o())}),s.addEventListener("submit",n=>{clearTimeout(l),s.hasAttribute("data-submit")||n.preventDefault(),o()}),s.addEventListener("force",n=>{o()}),s.addEventListener("paginate",n=>{o(!0)});let c=[],d=[];Array.from(s.querySelectorAll("[data-mimic]")).forEach((n,h)=>{let m=n.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${m}"]`)).forEach((f,p)=>{let u=f.closest("form");c.includes(u)||c.push(u),d.includes(m)||d.push(m)})}),c.forEach((n,h)=>{const m=function(){let f=[],p=new FormData(n);for(const[u,A]of p)document.querySelector(`[data-mimic="${u}"]`)&&!f.includes(u)?(f.push(u),document.querySelector(`[data-mimic="${u}"]`).value=A):document.querySelector(`[data-mimic="${u}"]`)&&(document.querySelector(`[data-mimic="${u}"]`).value+=","+A);for(const u of f){const A=new Event("force");s.dispatchEvent(A)}for(const u of d)if(!p.has(u)&&n.querySelector(`[name="${u}"]`)){document.querySelector(`[data-mimic="${u}"]`).value="";const A=new Event("force");s.dispatchEvent(A)}};n.addEventListener("force",f=>{m()}),n.addEventListener("change",f=>{m()})})},F=(a,s,t)=>{if(s.getAttribute("data-ajax"))return!1;let r=a.querySelector("tbody"),i=s.querySelector("[data-sort]"),l=i.querySelector(`option:nth-child(${i.selectedIndex+1})`),o=l.getAttribute("data-sort"),c=l.getAttribute("data-order"),d=l.getAttribute("data-format");if(!o)return r.innerHTML=t.innerHTML,P(a),!1;let n=[];["asc","desc","descending"].includes(c)||(n=c.split(","));let h=[];Array.from(r.querySelectorAll("tr")).forEach((f,p)=>{let u=f.querySelector('td[data-label="'+o+'"], th[data-label="'+o+'"]').textContent.trim();n.length&&n.includes(u)&&(u=n.indexOf(u)),te(u)&&(u=ae(u,10)),d&&d=="date"&&(u=new Date(u));const A={index:u,row:f};h.push(A)}),h.sort((f,p)=>f.index>p.index?1:-1),(c=="descending"||c=="desc")&&(h=h.reverse());let m="";h.forEach((f,p)=>{m+=f.row.outerHTML}),r.innerHTML=m},I=(a,s,t)=>{a.classList.remove("table--filtered");let r=[],i=[],l=0,o=s.querySelector("[data-pagination]")?parseInt(s.querySelector("[data-pagination]").value):1,c=s.querySelector("[data-show]")?parseInt(s.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((n,h)=>{n.classList.remove("filtered"),n.classList.remove("filtered--matched"),n.classList.remove("filtered--show"),n.removeAttribute("data-filtered-by")}),Array.from(s.querySelectorAll("[data-filter]")).forEach((n,h)=>{if(!(n.type=="radio"&&!n.checked)&&!(n.type=="checkbox"&&!n.checked)){if(n.getAttribute("data-filter")=="multi")for(const[m,f]of Object.entries(JSON.parse(n.value)))r[n.getAttribute("data-filter")].push(f);else if(n&&n.value){let m=n.getAttribute("data-filter");r[m]||(r[m]=new Array),r[m].push(n.value)}}}),s.querySelector("[data-search]")){let n=s.querySelector("[data-search]");s.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((m,f)=>{i.push({column:`${m.trim()}`,value:`${n.value}`})})}Array.from(s.querySelectorAll("[data-filter-count]")).forEach((n,h)=>{n.innerHTML=""}),r.length&&Array.from(s.querySelectorAll("[data-filter-count]")).forEach((n,h)=>{n.innerHTML+=`(${r.length})`}),a.classList.add("table--filtered");for(const[n,h]of Object.entries(r))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((m,f)=>{let p=!1;h.forEach((u,A)=>{let E=m.querySelector(`[data-label="${n}"]`);if(u&&u=="$today")u=T("date",new Date);else if(u&&u=="$yesterday"){let k=new Date;k.setDate(k.getDate()-1),u=T("date",k)}else if(u&&(u=="$thisWeek"||u=="$lastWeek")){let k=new Date,b=new Date(k.setDate(k.getDate()-(k.getDay()-1))),w=new Date(k.setDate(k.getDate()-k.getDay()+7)),g=new Date(E.textContent.toLowerCase());if(k.setHours(0,0,0,0),b.setHours(0,0,0,0),w.setHours(0,0,0,0),g.setHours(0,0,0,0),u=="$thisWeek")p=g>=b&&g<=w;else{let L=new Date(b.setDate(b.getDate()-7)),q=new Date(w.setDate(w.getDate()-7));L.setHours(0,0,0,0),q.setHours(0,0,0,0),p=g>=L&&g<=q}}else if(u&&u=="$thisMonth"){let k=new Date,b=k.getFullYear(),w=k.getMonth();var $=new Date(b,w,1),N=new Date(b,w+1,0);let g=new Date(E.textContent.toLowerCase());$.setHours(0,0,0,0),N.setHours(0,0,0,0),g.setHours(0,0,0,0),p=g>=$&&g<=N}else if(u&&u=="$lastMonth"){let k=new Date,b=k.getFullYear(),w=k.getMonth();var S=new Date(b,w-1,1),D=new Date(b,w,0);let g=new Date(E.textContent.toLowerCase());S.setHours(0,0,0,0),D.setHours(0,0,0,0),g.setHours(0,0,0,0),p=g>=S&&g<=D}E&&E.textContent.toLowerCase().includes(u.toLowerCase())&&(p=!0)}),p||(m.classList.add("filtered"),m.setAttribute("data-filtered-by",n))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((n,h)=>{let m=!(i.length>0&&i[0].value.length>=3);i.forEach((f,p)=>{let u=n.querySelector(`[data-label="${f.column}"]`);u&&f.value.length>=3&&u.textContent.toLowerCase().includes(f.value.toLowerCase())&&(m=!0)}),m||n.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((n,h)=>{l++,n.classList.add("filtered--matched"),Math.ceil(l/c)==parseInt(o)&&n.classList.add("filtered--show")}),t&&(t.setAttribute("data-page",o),t.setAttribute("data-pages",Math.ceil(l/c)),t.setAttribute("data-total",l),t.setAttribute("data-show",c))},V=(a,s,t)=>{Array.from(s.querySelectorAll("[data-query]")).forEach((i,l)=>{let o=i.getAttribute("data-query"),c;if(o=="total")t.hasAttribute("data-total")?c=t.getAttribute("data-total"):c=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!o.includes(" == ")&&o.includes(" & ")){let d=o.split(" & "),n="";d.forEach(h=>{n+=`:not([data-filtered-by="${h}"])`}),c=Array.from(a.querySelectorAll(`tbody tr${n}`)).length}else if(!o.includes(" == "))c=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${o}"])`)).length;else if(o.includes(" && ")){let d=o.split(" && ");c=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(n){let h=!0;for(const[m,f]of Object.entries(d)){let p=f.split(" == ");(!n.querySelector(`td[data-label="${p[0]}"]`)||n.querySelector(`td[data-label="${p[0]}"]`).textContent!=`${p[1]}`)&&(h=!1)}return h}).length}else{let d=o.split(" == ");c=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${d[0]}"], tbody tr[data-filtered-by="${d[0]}"] td[data-label="${d[0]}"]`)).filter(function(n){return n.textContent===d[1]}).length}i.hasAttribute("data-total")?i.setAttribute("data-total",c):i.innerHTML=c})},ie=function(a,s,t,r){t.addEventListener("click",i=>{if(i&&i.target instanceof HTMLElement&&i.target.closest("[data-page]")){i.preventDefault();let l=s.querySelector("[data-pagination]"),o=i.target.closest("[data-page]").getAttribute("data-page");if(l.value=o,r.setAttribute("data-page",o),s.dispatchEvent(new Event("paginate")),a.hasAttribute("data-show-history")){const c=new URL(location);c.searchParams.set("page",o),history.pushState({type:"pagination",form:s.getAttribute("id"),page:o},"",c)}}if(i&&i.target instanceof HTMLElement&&i.target.closest("[data-show]")){i.preventDefault();let l=s.querySelector("[data-show]"),o=i.target.closest("[data-show]").getAttribute("data-show");l.value=o,r.setAttribute("data-show",o),s.dispatchEvent(new Event("submit"))}})},ce=(a,s)=>{if(!a)return!1;a.addEventListener("click",t=>{de(s)})},de=function(a){for(var s=[],t=a.getElementsByTagName("tr"),r=0;r<t.length;r++){for(var i=t[r].querySelectorAll("td,th"),l=[],o=0;o<i.length;o++)l.push(`"${i[o].textContent}"`);s.push(l.join(","))}s=s.join(`
9
+ `);let c=new Blob([s],{type:"text/csv"});var d=document.createElement("a");d.download="export.csv";var n=window.URL.createObjectURL(c);d.href=n,d.style.display="none",document.body.appendChild(d),d.click(),document.body.removeChild(d)},j=function(a,s,t,r){if(P(a),re(a),V(a,s,r),r&&r.classList.contains("table--cta")){let i=function(){Array.from(a.querySelectorAll("tr")).forEach((o,c)=>{let d=o.offsetHeight;o.style.setProperty("--row-height",`${d}px`)})};const l=oe(a);r.style.setProperty("--cta-width",`${l}rem`),new ResizeObserver(i).observe(a)}},O=async function(a,s,t,r){const i=(m,f,p)=>f.split(/[\.\[\]\'\"]/).filter(u=>u).reduce((u,A)=>u?u[A]:p,m);let l=new FormData(s),o=new URLSearchParams(l).toString(),c=a.querySelectorAll("thead tr th"),d=a.querySelector("tbody"),n=s.getAttribute("data-ajax");r.classList.add("table--loading"),window.controller||(window.controller=[]),window.controller[n]&&window.controller[n].abort(),window.controller[n]=new AbortController;const{signal:h}=controller[n];try{await fetch(n+"?"+o,{signal:h,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(m=>m.json()).then(m=>{let f=s.hasAttribute("data-schema")?s.getAttribute("data-schema"):"data",p=s.hasAttribute("data-schema-total")?s.getAttribute("data-schema-total"):"meta.total",u=s.hasAttribute("data-schema-page")?s.getAttribute("data-schema-page"):"meta.current_page",A=i(m,p,1),E=i(m,u,1),$=i(m,f),N=r.hasAttribute("data-empty-msg")?r.getAttribute("data-empty-msg"):"No results found";if($?(d.innerHTML="",$.forEach((S,D)=>{var k=document.createElement("tr");c.forEach((b,w)=>{let g="";var L=document.createElement("td");if(L.setAttribute("data-label",b.innerText),b.getAttribute("data-output")){var q=b.getAttribute("data-output");g=q.replace(new RegExp(/{(.*?)}/,"gm"),function(Q){return i(S,Q.replace("{","").replace("}",""))})}if(b.hasAttribute("data-output-array")){var q=b.getAttribute("data-output");let oo=i(S,q.replace("{","").replace("}",""));g="",oo.forEach((Y,go)=>{let ro=b.getAttribute("data-output-array"),B="";if(b.hasAttribute("data-output-array-property")&&b.hasAttribute("data-output-array-transform")){const v=i(Y,b.getAttribute("data-output-array-property")),lo=JSON.parse(b.getAttribute("data-output-array-transform"))[v];B=ro.replace(`{${b.getAttribute("data-output-array-property")}}`,lo)}B=B.replace(new RegExp(/{(.*?)}/,"gm"),function(v){return i(Y,v.replace("{","").replace("}",""))}),g+=B})}b.hasAttribute("data-transform")&&(g=JSON.parse(b.getAttribute("data-transform"))[g],!g&&b.hasAttribute("data-default")&&(g=b.getAttribute("data-default"))),L.innerHTML=g,k.appendChild(L)}),d.appendChild(k)}),R(a,s),r.setAttribute("data-total",parseInt(A)),r.setAttribute("data-page",parseInt(E)),r.setAttribute("data-pages",Math.ceil(r.getAttribute("data-total")/r.getAttribute("data-show"))),j(a,s,t,r),C(r,t),parseInt(A)==0&&(d.innerHTML=`<tr><td colspan="100%"><span>${N}</span></td></tr>`),r.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:n,formData:o})):d.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',s.hasAttribute("data-ajax-post")){const S=new XMLHttpRequest;S.open("GET",`${window.location.href}?ajax=true&${o}`),S.send()}})}catch(m){console.log(m)}},T=(a,s)=>{switch(a){case"datetime":return new Date(s).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(s).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(s).toLocaleDateString("en-gb",{year:"2-digit",month:"long",day:"numeric"});case"capitalise":return s=se(s)}};class me extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const s=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",t=this.classList.contains("table--cta"),r=this.classList.contains("table--export");let i=this.classList.toString();i=i.replace("table--cta",""),i=i.replace("table--loading","");const l=document.createElement("template");l.innerHTML=`
10
10
  <style>
11
11
  @import "${s}/css/core.min.css";
12
12
 
@@ -37,7 +37,7 @@
37
37
  <slot></slot>
38
38
  </div>
39
39
  `,this.shadowRoot.appendChild(s.content.cloneNode(!0))}connectedCallback(){Je(this),this.insertAdjacentHTML("beforebegin",`<link rel="stylesheet" href="${M}/css/components/accordion.css">`)}}const no="";window.customElements.get("iam-accordion")||window.customElements.define("iam-accordion",Xe);const et={name:"Accordion",props:{},mounted(){}},tt={ref:"wrapper"};function at(a,s,t,r,i,l){return e.openBlock(),e.createElementBlock("iam-accordion",tt,[e.renderSlot(a.$slots,"default")],512)}const st=_(et,[["render",at]]),ot={name:"AccordionItem",props:{title:{type:String,required:!0},titlecolour:{type:String,required:!1},badge:{type:[Number,String],required:!1},badgecolour:{type:String,required:!1,default:"light"},lazy:{type:Boolean,required:!1}},computed:{createID(){return a=>`${pe(a)}`}},data(){return{show:!this.lazy}}},rt=["id"],lt=["classList"];function nt(a,s,t,r,i,l){return e.openBlock(),e.createElementBlock("details",{id:l.createID(t.title)},[e.createElementVNode("summary",{classList:`${t.titlecolour?`bg-${t.titlecolour}`:""}`},[e.createTextVNode(e.toDisplayString(t.title),1),t.badge?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(`badge bg-${t.badgecolour}`)},e.toDisplayString(t.badge),3)):e.createCommentVNode("",!0)],8,lt),e.renderSlot(a.$slots,"default")],8,rt)}const it=_(ot,[["render",nt]]),ct={name:"Header",props:{title:{type:String,required:!0},image:{type:String,required:!1},background:{type:String,default:"light",required:!1}}},dt={class:"container"},mt={class:"row"},ut={class:"col-sm-6"},ht={class:"pt-5 pb-3 px-4"},ft={class:"col-sm-6 col-md-5 ms-auto"},pt=["src"];function yt(a,s,t,r,i,l){return e.openBlock(),e.createElementBlock("div",dt,[e.createElementVNode("div",{class:e.normalizeClass("bg-"+t.background+" mb-4")},[e.createElementVNode("div",mt,[e.createElementVNode("div",ut,[e.createElementVNode("div",ht,[e.createElementVNode("h2",null,e.toDisplayString(t.title),1),e.renderSlot(a.$slots,"default")])]),e.createElementVNode("div",ft,[t.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.image,alt:"",class:"h-100 w-100 object-cover"},null,8,pt)):e.createCommentVNode("",!0)])])],2)])}const bt=_(ct,[["render",yt]]);/*!
40
- * iamKey v3.7.2
40
+ * iamKey v3.7.3
41
41
  * Copyright 2022-2023 iamproperty
42
42
  */class gt extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const s=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets";this.querySelector('[class*="fa-"]')&&this.classList.add("card--has-icon");let t=this.classList.toString();const r=document.createElement("template");r.innerHTML=`
43
43
  <style>
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "name": "iamproperty"
6
6
  },
7
7
  "private": false,
8
- "version": "3.7.2",
8
+ "version": "3.7.3",
9
9
  "scripts": {
10
10
  "bootstrap": "copyfiles -u 2 node_modules/bootstrap/**/* assets/bootstrap",
11
11
  "dev": "npm run copy && node local_modules/delete-assets.js && vite --host",