@iamproperty/components 5.1.0-beta9 → 5.3.0-beta1

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 (59) hide show
  1. package/assets/css/components/card.css +1 -1
  2. package/assets/css/components/card.css.map +1 -1
  3. package/assets/css/components/component.native.css +1 -1
  4. package/assets/css/components/component.native.css.map +1 -1
  5. package/assets/css/components/component.reset.css +1 -1
  6. package/assets/css/components/component.reset.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 +2 -2
  12. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  13. package/assets/js/components/address-lookup/address-lookup.component.js +5 -4
  14. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
  15. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  16. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  17. package/assets/js/components/card/card.component.js +12 -2
  18. package/assets/js/components/card/card.component.min.js +9 -8
  19. package/assets/js/components/card/card.component.min.js.map +1 -1
  20. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  21. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  22. package/assets/js/components/filterlist/filterlist.component.min.js +2 -2
  23. package/assets/js/components/header/header.component.min.js +2 -2
  24. package/assets/js/components/nav/nav.component.min.js +2 -2
  25. package/assets/js/components/notification/notification.component.min.js +2 -2
  26. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  27. package/assets/js/components/search/search.component.js +29 -15
  28. package/assets/js/components/search/search.component.min.js +14 -8
  29. package/assets/js/components/search/search.component.min.js.map +1 -1
  30. package/assets/js/components/table/table.component.js +1 -0
  31. package/assets/js/components/table/table.component.min.js +3 -3
  32. package/assets/js/components/table/table.component.min.js.map +1 -1
  33. package/assets/js/components/tabs/tabs.component.min.js +2 -2
  34. package/assets/js/dynamic.min.js +6 -5
  35. package/assets/js/dynamic.min.js.map +1 -1
  36. package/assets/js/modules/helpers.js +5 -1
  37. package/assets/js/modules/inputs.js +61 -0
  38. package/assets/js/scripts.bundle.js +36 -34
  39. package/assets/js/scripts.bundle.js.map +1 -1
  40. package/assets/js/scripts.bundle.min.js +3 -3
  41. package/assets/js/scripts.bundle.min.js.map +1 -1
  42. package/assets/js/vendor/hibp.js +78 -0
  43. package/assets/sass/_func.scss +1 -0
  44. package/assets/sass/components/card.scss +54 -3
  45. package/assets/sass/components/component.native.scss +4 -0
  46. package/assets/sass/elements/admin-panel.scss +1 -0
  47. package/assets/sass/elements/dialog.scss +3 -3
  48. package/assets/sass/elements/forms.scss +35 -4
  49. package/assets/sass/helpers/max-height.scss +4 -2
  50. package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -6
  51. package/assets/ts/components/card/card.component.ts +16 -2
  52. package/assets/ts/components/search/search.component.ts +35 -19
  53. package/assets/ts/components/table/table.component.ts +1 -0
  54. package/assets/ts/modules/helpers.ts +6 -1
  55. package/assets/ts/modules/inputs.ts +84 -0
  56. package/assets/ts/vendor/hibp.ts +81 -0
  57. package/dist/components.es.js +18 -18
  58. package/dist/components.umd.js +43 -41
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"card.component.min.js","sources":["card.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Card\"\n});\nclass iamCard extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n if (this.querySelector('[class*=\"fa-\"]'))\n this.classList.add('card--has-icon');\n let classList = this.classList.toString();\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/card.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/card.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"card ${classList}\" tabindex=\"0\" role=\"button\">\n ${this.hasAttribute('data-image') ? `<div class=\"card__head\"><img src=\"${this.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" /><div class=\"card__badges\"><slot name=\"badges\"></slot></div></div>` : ''}\n <div class=\"card__body\">\n ${!this.hasAttribute('data-image') ? `<div class=\"card__badges\"><slot name=\"badges\"></slot></div>` : ''}\n ${this.classList.contains('card--filter') && this.hasAttribute('data-total') ? `<div class=\"card__total\">${this.getAttribute('data-total')}</div>` : ''}\n ${this.hasAttribute('data-illustration') ? `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>` : ''}\n <slot></slot>\n </div>\n \n <slot name=\"checkbox\"></slot>\n ${this.hasAttribute('data-cta') ? `<div class=\"card__footer\"><span class=\"link\">${this.getAttribute('data-cta')}</span></div>` : ''}\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('cardGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"cardGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n this.classList.add('loaded');\n // Mimic clicking the parent node so the focus and target events can be on the card\n const parentNode = this.parentNode.closest('a, button, label');\n const card = this.shadowRoot.querySelector('.card');\n parentNode.setAttribute('tabindex', '-1');\n if (parentNode.matches('label[for]')) {\n let isChecked = document.getElementById(parentNode.getAttribute('for')).checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n // Click event down\n this.addEventListener('click', (event) => {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n });\n card.addEventListener('click', (event) => {\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n // Mimic radio button functionality\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"][type=\"radio\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n });\n this.addEventListener('inactive', (event) => {\n card.classList.remove('checked');\n });\n card.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n case 32:\n case 13:\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n else {\n parentNode.click();\n }\n break;\n default:\n break;\n }\n });\n }\n static get observedAttributes() {\n return [\"data-total\", \"class\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case \"class\": {\n let classList = this.classList.toString();\n if (this.querySelector('[class*=\"fa-\"]'))\n classList += ' card--has-icon';\n this.shadowRoot.querySelector('.card').setAttribute('class', `card ${classList}`);\n break;\n }\n }\n }\n}\nexport default iamCard;\n"],"names":["iamCard","classList","assetLocation","coreCSS","template","parentNode","card","event","clickEvent","input","inputName","inputID","index","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"card.component.min.js","sources":["card.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Card\"\n});\nclass iamCard extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n if (this.querySelector('[class*=\"fa-\"]'))\n this.classList.add('card--has-icon');\n let classList = this.classList.toString();\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/card.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/card.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"card ${classList}\" tabindex=\"0\" role=\"button\">\n ${this.hasAttribute('data-image') ? `<div class=\"card__head\"><img src=\"${this.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" /><div class=\"card__badges\"><slot name=\"badges\"></slot></div></div>` : ''}\n <div class=\"card__body\">\n ${!this.hasAttribute('data-image') ? `<div class=\"card__badges\"><slot name=\"badges\"></slot></div>` : ''}\n ${this.hasAttribute('data-illustration') ? `<div class=\"card__illustration\"><img src=\"${this.getAttribute('data-illustration')}\" alt=\"\" loading=\"lazy\" /></div>` : ''}\n <slot></slot>\n ${this.hasAttribute('data-total') ? `<div class=\"card__total\">${this.getAttribute('data-total')}</div>` : ''}\n </div>\n ${this.hasAttribute('data-add-link') ? `<button class=\"btn btn-compact btn-secondary fa-plus\">Add property</button>` : ''}\n <slot name=\"checkbox\"></slot>\n ${this.hasAttribute('data-cta') ? `<div class=\"card__footer\"><span class=\"link\">${this.getAttribute('data-cta')}</span></div>` : ''}\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('cardGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"cardGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n this.classList.add('loaded');\n // Mimic clicking the parent node so the focus and target events can be on the card\n const parentNode = this.parentNode.closest('a, button, label');\n const card = this.shadowRoot.querySelector('.card');\n const btnCompact = this.shadowRoot.querySelector('.btn-compact');\n parentNode.setAttribute('tabindex', '-1');\n if (parentNode.matches('label[for]')) {\n let isChecked = document.getElementById(parentNode.getAttribute('for')).checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n // Click event down\n this.addEventListener('click', (event) => {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n });\n card.addEventListener('click', (event) => {\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n // Mimic radio button functionality\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"][type=\"radio\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n });\n this.addEventListener('inactive', (event) => {\n card.classList.remove('checked');\n });\n card.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n case 32:\n case 13:\n if (parentNode.matches('label[for]')) {\n event.stopPropagation();\n event.preventDefault();\n const input = document.getElementById(parentNode.getAttribute('for'));\n const inputName = input.getAttribute('name');\n const inputID = input.getAttribute('id');\n const inputs = Array.from(document.querySelectorAll(`[name=\"${inputName}\"]:not([id=\"${inputID}\"])`));\n inputs.forEach((input, index) => {\n const otherCard = document.querySelector(`[for=\"${input.getAttribute('id')}\"] iam-card`);\n otherCard.dispatchEvent(new Event('inactive'));\n });\n parentNode.click();\n let isChecked = input.checked;\n if (isChecked)\n card.classList.add('checked');\n else\n card.classList.remove('checked');\n }\n else {\n parentNode.click();\n }\n break;\n default:\n break;\n }\n });\n if (btnCompact) {\n let addLocation = this.getAttribute('data-add-link');\n btnCompact.addEventListener('click', (event) => {\n event.stopPropagation();\n event.preventDefault();\n window.location = addLocation;\n });\n }\n }\n static get observedAttributes() {\n return [\"data-total\", \"class\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (this.shadowRoot.querySelector('.card__total'))\n this.shadowRoot.querySelector('.card__total').innerHTML = newVal;\n break;\n }\n case \"class\": {\n let classList = this.classList.toString();\n if (this.querySelector('[class*=\"fa-\"]'))\n classList += ' card--has-icon';\n this.shadowRoot.querySelector('.card').setAttribute('class', `card ${classList}`);\n break;\n }\n }\n }\n}\nexport default iamCard;\n"],"names":["iamCard","classList","assetLocation","coreCSS","template","parentNode","card","btnCompact","event","clickEvent","input","inputName","inputID","index","addLocation","attrName","oldVal","newVal"],"mappings":";;;IAEA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,MACf,CAAC,EACD,MAAMA,UAAgB,WAAY,CAC9B,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAC9B,KAAK,cAAc,gBAAgB,GACnC,KAAK,UAAU,IAAI,gBAAgB,EACvC,IAAIC,EAAY,KAAK,UAAU,SAAQ,EACvC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBAGzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA,uBAGrDF;AAAA,QACf,KAAK,aAAa,YAAY,EAAI,qCAAqC,KAAK,aAAa,YAAY,+FAAiG;AAAA;AAAA,QAErM,KAAK,aAAa,YAAY,EAAoE,GAAhE;AAAA,QACnC,KAAK,aAAa,mBAAmB,EAAI,6CAA6C,KAAK,aAAa,mBAAmB,oCAAsC;AAAA;AAAA,QAEjK,KAAK,aAAa,YAAY,EAAI,4BAA4B,KAAK,aAAa,YAAY,UAAY;AAAA;AAAA,QAExG,KAAK,aAAa,eAAe,EAAI,8EAAgF;AAAA;AAAA,QAErH,KAAK,aAAa,UAAU,EAAI,gDAAgD,KAAK,aAAa,UAAU,iBAAmB;AAAA;AAAA,MAG/H,KAAK,WAAW,YAAYG,EAAS,QAAQ,UAAU,EAAI,CAAC,EAEvD,SAAS,eAAe,YAAY,GACrC,SAAS,KAAK,mBAAmB,YAAa;AAAA,SAAgD,CACrG,CACD,mBAAoB,CAChB,KAAK,UAAU,IAAI,QAAQ,EAE3B,MAAMC,EAAa,KAAK,WAAW,QAAQ,kBAAkB,EACvDC,EAAO,KAAK,WAAW,cAAc,OAAO,EAC5CC,EAAa,KAAK,WAAW,cAAc,cAAc,EAoE/D,GAnEAF,EAAW,aAAa,WAAY,IAAI,EACpCA,EAAW,QAAQ,YAAY,IACf,SAAS,eAAeA,EAAW,aAAa,KAAK,CAAC,EAAE,QAEpEC,EAAK,UAAU,IAAI,SAAS,EAE5BA,EAAK,UAAU,OAAO,SAAS,GAGvC,KAAK,iBAAiB,QAAUE,GAAU,CACtC,IAAIC,EAAa,IAAI,MAAM,OAAO,EAClCH,EAAK,cAAcG,CAAU,CACzC,CAAS,EACDH,EAAK,iBAAiB,QAAUE,GAAU,CACtC,GAAIH,EAAW,QAAQ,YAAY,EAAG,CAClCG,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,MAAME,EAAQ,SAAS,eAAeL,EAAW,aAAa,KAAK,CAAC,EAC9DM,EAAYD,EAAM,aAAa,MAAM,EACrCE,EAAUF,EAAM,aAAa,IAAI,EAExB,MAAM,KAAK,SAAS,iBAAiB,UAAUC,8BAAsCC,MAAY,CAAC,EAC1G,QAAQ,CAACF,EAAOG,IAAU,CACX,SAAS,cAAc,SAASH,EAAM,aAAa,IAAI,cAAc,EAC7E,cAAc,IAAI,MAAM,UAAU,CAAC,CACjE,CAAiB,EACDL,EAAW,MAAK,EACAK,EAAM,QAElBJ,EAAK,UAAU,IAAI,SAAS,EAE5BA,EAAK,UAAU,OAAO,SAAS,EAEnD,CAAS,EACD,KAAK,iBAAiB,WAAaE,GAAU,CACzCF,EAAK,UAAU,OAAO,SAAS,CAC3C,CAAS,EACDA,EAAK,iBAAiB,UAAYE,GAAU,CACxC,OAAQA,EAAM,QAAO,CACjB,IAAK,IACL,IAAK,IACD,GAAIH,EAAW,QAAQ,YAAY,EAAG,CAClCG,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,MAAME,EAAQ,SAAS,eAAeL,EAAW,aAAa,KAAK,CAAC,EAC9DM,EAAYD,EAAM,aAAa,MAAM,EACrCE,EAAUF,EAAM,aAAa,IAAI,EACxB,MAAM,KAAK,SAAS,iBAAiB,UAAUC,gBAAwBC,MAAY,CAAC,EAC5F,QAAQ,CAACF,EAAOG,IAAU,CACX,SAAS,cAAc,SAASH,EAAM,aAAa,IAAI,cAAc,EAC7E,cAAc,IAAI,MAAM,UAAU,CAAC,CACzE,CAAyB,EACDL,EAAW,MAAK,EACAK,EAAM,QAElBJ,EAAK,UAAU,IAAI,SAAS,EAE5BA,EAAK,UAAU,OAAO,SAAS,OAGnCD,EAAW,MAAK,EAEpB,KAGP,CACb,CAAS,EACGE,EAAY,CACZ,IAAIO,EAAc,KAAK,aAAa,eAAe,EACnDP,EAAW,iBAAiB,QAAUC,GAAU,CAC5CA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,OAAO,SAAWM,CAClC,CAAa,EAER,CACD,WAAW,oBAAqB,CAC5B,MAAO,CAAC,aAAc,OAAO,CAChC,CACD,yBAAyBC,EAAUC,EAAQC,EAAQ,CAC/C,OAAQF,EAAQ,CACZ,IAAK,aAAc,CACX,KAAK,WAAW,cAAc,cAAc,IAC5C,KAAK,WAAW,cAAc,cAAc,EAAE,UAAYE,GAC9D,KACH,CACD,IAAK,QAAS,CACV,IAAIhB,EAAY,KAAK,UAAU,SAAQ,EACnC,KAAK,cAAc,gBAAgB,IACnCA,GAAa,mBACjB,KAAK,WAAW,cAAc,OAAO,EAAE,aAAa,QAAS,QAAQA,GAAW,EAChF,KACH,CACJ,CACJ,CACL"}
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"collapsible side menu"});class s extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",t=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,n=document.createElement("template");n.innerHTML=`
5
5
  <style class="styles">
6
6
  @import "${t}";
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */function h(c,o){const r=o.querySelector(".files"),l=o.querySelector(".drop-area"),t=c.querySelector("input"),u=c.hasAttribute("data-maxsize")?c.getAttribute("data-maxsize"):0,a=t.cloneNode();l.append(a),o.addEventListener("click",e=>{e&&e.target instanceof HTMLElement&&e.target.closest(".btn-primary")&&(e.target.closest(".btn-primary"),(t.hasAttribute("multiple")?a:t).click())}),o.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest(".files button")){const i=new DataTransfer,{files:d}=t,p=e.target.closest(".files button");for(let n=0;n<d.length;n++){const s=d[n];s.name!=p.getAttribute("data-file")&&i.items.add(s)}t.files=i.files;const m=new Event("change");t.dispatchEvent(m)}}),a.addEventListener("change",e=>{if(t.hasAttribute("multiple")){const d=[...t.files,...a.files];let p=[];const m=new DataTransfer;for(let n=0;n<d.length;n++){const s=d[n],f=s.size/1e3;!p.includes(s.name)&&(u==0||f<u)&&m.items.add(s),p.push(s.name)}t.files=m.files}else t.files=a.files;const i=new Event("change");t.dispatchEvent(i)}),a.addEventListener("dragenter",e=>{a.classList.add("focus")}),a.addEventListener("dragleave",e=>{a.classList.remove("focus")}),a.addEventListener("drop",e=>{a.classList.remove("focus")}),t.addEventListener("change",e=>{r.innerHTML="";for(const i of t.files)r.innerHTML+=`<span class="file">${i.name} <button data-file="${i.name}">Remove</button></span>`})}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"fileupload"});class b extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const o=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${o}/css/core.min.css`,l=document.createElement("template");l.innerHTML=`
5
5
  <style>
6
6
  @import "${r}";
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */function r(s,t){n(s,t)}function n(s,t){var e;t.addEventListener("keyup",a=>{clearTimeout(e),e=setTimeout(function(){o(s,t.value)},500)}),t.addEventListener("change",a=>{clearTimeout(e),o(s,t.value)})}const o=function(s,t){Array.from(s.querySelectorAll(":scope > li")).forEach((e,a)=>{let i=e.textContent.toLowerCase();e.classList.add("d-none"),i.includes(t.toLowerCase())&&e.classList.remove("d-none")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Filtered list",value:t})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"filterlist"});class l extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const t=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${t}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
5
5
  <style>
6
6
  @import "${e}";
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"header"});class o extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const t=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${t}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
5
5
  <style>
6
6
  @import "${e}";
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"nav"});class p extends HTMLElement{constructor(){super();const c=this.attachShadow({mode:"open"}),n=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${n}/css/core.min.css`,i=document.createElement("template");i.innerHTML=`
5
5
  <style class="styles">
6
6
  @import "${e}";
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */function r(i){if(i.hasAttribute("data-type")&&i.getAttribute("data-type")=="toast"){let t=document.querySelector(".notification__holder");t||(t=document.createElement("div"),t.classList.add("notification__holder"),t.classList.add("container"),document.querySelector("body").appendChild(t)),i.closest(".notification__holder")||t.appendChild(i)}if(i.setAttribute("role","alert"),i.addEventListener("click",function(t){event&&event.target instanceof HTMLElement&&event.target.closest("[data-dismiss-button]")&&(t.preventDefault(),a(i))},!1),i.hasAttribute("data-timeout")){let t=i.getAttribute("data-timeout");var n=new c(function(){a(i)},t);i.addEventListener("mouseenter",o=>{n.pause()}),i.addEventListener("mouseleave",o=>{n.resume()})}}function c(i,n){var t,o,e=n;this.pause=function(){window.clearTimeout(t),e-=new Date-o},this.resume=function(){o=new Date,window.clearTimeout(t),t=window.setTimeout(i,e)},this.resume()}const a=function(i){i.classList.add("d-none")};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Notification"});class d extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const n=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"):`${n}/css/core.min.css`,o=this.querySelectorAll("a,button");Array.from(o).forEach((s,l)=>{s.setAttribute("slot","btns"),s.classList.add("link")}),(o.length||this.hasAttribute("data-dismiss"))&&this.classList.add("notification--dismissable");const e=document.createElement("template");e.innerHTML=`
5
5
  <style>
6
6
  @import "${t}";
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */class v extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const i=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"):`${i}/css/core.min.css`,e=document.createElement("template");e.innerHTML=`
5
5
  <style>
6
6
  @import "${t}";
@@ -26,7 +26,13 @@ class iamSearch extends HTMLElement {
26
26
  template.innerHTML = `
27
27
  <style>
28
28
  @import "${coreCSS}";
29
-
29
+ input {
30
+ background: red;
31
+ }
32
+ input:not(.is-invalid):not(:invalid) {
33
+ background: none!important;
34
+ }
35
+
30
36
  </style>
31
37
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
32
38
  <slot></slot>
@@ -58,28 +64,34 @@ class iamSearch extends HTMLElement {
58
64
  searchWrapper.appendChild(datalist);
59
65
  displayInputField.setAttribute('list', listID);
60
66
  }
61
- // on change update oringinal field with the actual value and use displayed input for the nice display text
62
- displayInputField.addEventListener('change', (event) => {
63
- let match = datalist.querySelector(`option[value="${displayInputField.value}"]`);
64
- if (match) {
65
- inputField.value = match.getAttribute('data-value');
66
- }
67
- });
68
67
  // Search the endpoint when 3 characters has been added
69
68
  if (searchWrapper.hasAttribute('data-url')) {
70
- displayInputField.addEventListener('keyup', (event) => {
69
+ displayInputField.addEventListener('input', (event) => {
71
70
  if (displayInputField.value.length == 3 && !searched.includes(displayInputField.value)) {
72
71
  search(displayInputField.value);
73
72
  searched.push(displayInputField.value);
74
73
  }
75
74
  });
76
- displayInputField.addEventListener('change', (event) => {
77
- if (displayInputField.value.length >= 3 && !searched.includes(displayInputField.value.substring(0, 3))) {
78
- search(displayInputField.value.substring(0, 3));
79
- searched.push(displayInputField.value.substring(0, 3));
80
- }
81
- });
82
75
  }
76
+ function checkMatch() {
77
+ let match = datalist.querySelector(`option[value="${displayInputField.value}"]`);
78
+ let subMatch = datalist.querySelector(`option[value*='${displayInputField.value}' i]`);
79
+ if (match) {
80
+ inputField.value = match.getAttribute('data-value');
81
+ }
82
+ else if (displayInputField.value.length > 0 && !subMatch) {
83
+ displayInputField.classList.add('is-invalid');
84
+ displayInputField.closest('label').setAttribute('data-error', 'No results returned');
85
+ }
86
+ else {
87
+ displayInputField.classList.remove('is-invalid');
88
+ displayInputField.closest('label').removeAttribute('data-error');
89
+ }
90
+ }
91
+ // on change update oringinal field with the actual value and use displayed input for the nice display text
92
+ displayInputField.addEventListener('input', (event) => {
93
+ checkMatch();
94
+ });
83
95
  const search = (searchterm) => __awaiter(this, void 0, void 0, function* () {
84
96
  let ajaxURL = searchWrapper.getAttribute('data-url');
85
97
  ajaxURL += `${encodeURI(searchterm)}`;
@@ -129,6 +141,8 @@ class iamSearch extends HTMLElement {
129
141
  }
130
142
  }
131
143
  datalist.innerHTML += listString;
144
+ displayInputField.closest('form').classList.add('was-validated');
145
+ checkMatch();
132
146
  return response;
133
147
  });
134
148
  }
@@ -1,14 +1,20 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
4
- */import $ from"js-cookie";const C=t=>t.replace(/ /g,"_"),R=function(t){return t=t.toLowerCase(),t=C(t),t=t.replace(/\W/g,""),t},m=(t,l,n)=>l.split(/[\.\[\]\'\"]/).filter(o=>o).reduce((o,c)=>o?o[c]:n,t),g=t=>Array.isArray(t)||t!==null&&["function","object"].includes(typeof t);var S=function(t,l,n,o){function c(r){return r instanceof n?r:new n(function(s){s(r)})}return new(n||(n=Promise))(function(r,s){function u(a){try{d(o.next(a))}catch(i){s(i)}}function e(a){try{d(o.throw(a))}catch(i){s(i)}}function d(a){a.done?r(a.value):c(a.value).then(u,e)}d((o=o.apply(t,l||[])).next())})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Search"});class j extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const l=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",n=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${l}/css/core.min.css`,o=document.createElement("template");o.innerHTML=`
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
+ */import k from"js-cookie";const q=e=>e.replace(/ /g,"_"),C=function(e){return e=e.toLowerCase(),e=q(e),e=e.replace(/\W/g,""),e},m=(e,s,a)=>s.split(/[\.\[\]\'\"]/).filter(o=>o).reduce((o,d)=>o?o[d]:a,e),S=e=>Array.isArray(e)||e!==null&&["function","object"].includes(typeof e);var L=function(e,s,a,o){function d(c){return c instanceof a?c:new a(function(n){n(c)})}return new(a||(a=Promise))(function(c,n){function v(r){try{u(o.next(r))}catch(i){n(i)}}function t(r){try{u(o.throw(r))}catch(i){n(i)}}function u(r){r.done?c(r.value):d(r.value).then(v,t)}u((o=o.apply(e,s||[])).next())})};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Search"});class R extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const s=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"):`${s}/css/core.min.css`,o=document.createElement("template");o.innerHTML=`
5
5
  <style>
6
- @import "${n}";
7
-
6
+ @import "${a}";
7
+ input {
8
+ background: red;
9
+ }
10
+ input:not(.is-invalid):not(:invalid) {
11
+ background: none!important;
12
+ }
13
+
8
14
  </style>
9
15
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
10
16
  <slot></slot>
11
- `,this.shadowRoot.appendChild(o.content.cloneNode(!0))}connectedCallback(){return S(this,void 0,void 0,function*(){const l=this,n=this.querySelector("input"),o=this.hasAttribute("data-value-schema")?this.getAttribute("data-value-schema"):"value",c=this.hasAttribute("data-display-schema")?this.getAttribute("data-display-schema"):"label",r=this.hasAttribute("data-schema")?this.getAttribute("data-schema"):"";let s=this.querySelector("datalist"),u=[];const e=n.cloneNode();if(e.setAttribute("name",`${n.getAttribute("name")}Alt`),n.removeAttribute("data-change-events"),e.removeAttribute("id"),n.after(e),n.setAttribute("type","hidden"),!s){s=document.createElement("datalist");let a=R("list");s.setAttribute("id",a),l.appendChild(s),e.setAttribute("list",a)}e.addEventListener("change",a=>{let i=s.querySelector(`option[value="${e.value}"]`);i&&(n.value=i.getAttribute("data-value"))}),l.hasAttribute("data-url")&&(e.addEventListener("keyup",a=>{e.value.length==3&&!u.includes(e.value)&&(d(e.value),u.push(e.value))}),e.addEventListener("change",a=>{e.value.length>=3&&!u.includes(e.value.substring(0,3))&&(d(e.value.substring(0,3)),u.push(e.value.substring(0,3)))}));const d=a=>S(this,void 0,void 0,function*(){let i=l.getAttribute("data-url");i+=`${encodeURI(a)}`,window.controller||(window.controller=[]),window.controller[i]&&window.controller[i].abort(),window.controller[i]=new AbortController;const{signal:E}=controller[i];try{yield fetch(i,{signal:E,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest","X-XSRF-TOKEN":$.get("XSRF-TOKEN")})}).then(h=>h.json()).then(h=>{let y="",p=m(h,r,"");if(g(p)&&typeof p.forEach=="function")p.forEach((v,b)=>{let f=m(v,o,""),w=m(v,c,"").replace(`
12
- `,", ");s.querySelector(`option[data-value="${f}"]`)||(y+=`<option value="${w}" data-value='${f}'></option>`)});else if(typeof p=="object")for(const[v,b]of Object.entries(p))g(b)&&typeof b.forEach=="function"&&b.forEach((f,w)=>{let A=m(f,o,""),L=m(f,c,"").replace(`
13
- `,", ");s.querySelector(`option[data-value="${A}"]`)||(y+=`<option value="${v}: ${L}" data-value='${A}'></option>`)});return s.innerHTML+=y,h})}catch(h){console.log(h)}});l.hasAttribute("data-prevent-submit")&&l.closest("form").addEventListener("submit",i=>{i.preventDefault()})})}}export{j as default};
17
+ `,this.shadowRoot.appendChild(o.content.cloneNode(!0))}connectedCallback(){return L(this,void 0,void 0,function*(){const s=this,a=this.querySelector("input"),o=this.hasAttribute("data-value-schema")?this.getAttribute("data-value-schema"):"value",d=this.hasAttribute("data-display-schema")?this.getAttribute("data-display-schema"):"label",c=this.hasAttribute("data-schema")?this.getAttribute("data-schema"):"";let n=this.querySelector("datalist"),v=[];const t=a.cloneNode();if(t.setAttribute("name",`${a.getAttribute("name")}Alt`),a.removeAttribute("data-change-events"),t.removeAttribute("id"),a.after(t),a.setAttribute("type","hidden"),!n){n=document.createElement("datalist");let i=C("list");n.setAttribute("id",i),s.appendChild(n),t.setAttribute("list",i)}s.hasAttribute("data-url")&&t.addEventListener("input",i=>{t.value.length==3&&!v.includes(t.value)&&(r(t.value),v.push(t.value))});function u(){let i=n.querySelector(`option[value="${t.value}"]`),l=n.querySelector(`option[value*='${t.value}' i]`);i?a.value=i.getAttribute("data-value"):t.value.length>0&&!l?(t.classList.add("is-invalid"),t.closest("label").setAttribute("data-error","No results returned")):(t.classList.remove("is-invalid"),t.closest("label").removeAttribute("data-error"))}t.addEventListener("input",i=>{u()});const r=i=>L(this,void 0,void 0,function*(){let l=s.getAttribute("data-url");l+=`${encodeURI(i)}`,window.controller||(window.controller=[]),window.controller[l]&&window.controller[l].abort(),window.controller[l]=new AbortController;const{signal:E}=controller[l];try{yield fetch(l,{signal:E,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest","X-XSRF-TOKEN":k.get("XSRF-TOKEN")})}).then(h=>h.json()).then(h=>{let w="",p=m(h,c,"");if(S(p)&&typeof p.forEach=="function")p.forEach((b,y)=>{let f=m(b,o,""),A=m(b,d,"").replace(`
18
+ `,", ");n.querySelector(`option[data-value="${f}"]`)||(w+=`<option value="${A}" data-value='${f}'></option>`)});else if(typeof p=="object")for(const[b,y]of Object.entries(p))S(y)&&typeof y.forEach=="function"&&y.forEach((f,A)=>{let g=m(f,o,""),$=m(f,d,"").replace(`
19
+ `,", ");n.querySelector(`option[data-value="${g}"]`)||(w+=`<option value="${b}: ${$}" data-value='${g}'></option>`)});return n.innerHTML+=w,t.closest("form").classList.add("was-validated"),u(),h})}catch(h){console.log(h)}});s.hasAttribute("data-prevent-submit")&&s.closest("form").addEventListener("submit",l=>{l.preventDefault()})})}}export{R as default};
14
20
  //# sourceMappingURL=search.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.component.min.js","sources":["../../modules/helpers.js","search.component.js"],"sourcesContent":["// @ts-nocheck\n/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add(\"js-enabled\");\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add(\"ie\");\n }\n return null;\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () { checkElements(location.hash); }, false);\n addEventListener(\"popstate\", (event) => {\n if (event && event.state && event.state.type && event.state.type == \"pagination\") {\n let form = document.querySelector(`#${event.state.form}`);\n let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n document.addEventListener(\"submit\", (event) => {\n if (event && event.target instanceof HTMLElement && event.target.matches('form')) {\n let form = event.target;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n return null;\n};\nexport const isNumeric = function (str) {\n if (typeof str != \"string\")\n return false; // we only process strings! \n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str.split(' ').map(s => ucfirst(s)).join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path.split(/[\\.\\[\\]\\'\\\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);\nexport const isTraversable = o => Array.isArray(o) || o !== null && ['function', 'object'].includes(typeof o);\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};\n// @ts-nocheck\nimport Cookies from 'js-cookie';\nimport { safeID, resolvePath, isTraversable } from '../../modules/helpers.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Search\"\n});\nclass iamSearch extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n \n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\" />\n <slot></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n const searchWrapper = this;\n const inputField = this.querySelector('input');\n const valueSchema = this.hasAttribute('data-value-schema') ? this.getAttribute('data-value-schema') : 'value';\n const displaySchema = this.hasAttribute('data-display-schema') ? this.getAttribute('data-display-schema') : 'label';\n const loopSchema = this.hasAttribute('data-schema') ? this.getAttribute('data-schema') : '';\n let datalist = this.querySelector('datalist');\n let searched = [];\n // Clone original input field, re-name and use for display purposes\n const displayInputField = inputField.cloneNode();\n displayInputField.setAttribute('name', `${inputField.getAttribute('name')}Alt`);\n inputField.removeAttribute('data-change-events');\n displayInputField.removeAttribute('id');\n inputField.after(displayInputField);\n // Hide original input field\n inputField.setAttribute('type', 'hidden');\n // if data list does not exist then create one and append\n if (!datalist) {\n datalist = document.createElement(\"datalist\");\n let listID = safeID('list');\n datalist.setAttribute('id', listID);\n searchWrapper.appendChild(datalist);\n displayInputField.setAttribute('list', listID);\n }\n // on change update oringinal field with the actual value and use displayed input for the nice display text\n displayInputField.addEventListener('change', (event) => {\n let match = datalist.querySelector(`option[value=\"${displayInputField.value}\"]`);\n if (match) {\n inputField.value = match.getAttribute('data-value');\n }\n });\n // Search the endpoint when 3 characters has been added\n if (searchWrapper.hasAttribute('data-url')) {\n displayInputField.addEventListener('keyup', (event) => {\n if (displayInputField.value.length == 3 && !searched.includes(displayInputField.value)) {\n search(displayInputField.value);\n searched.push(displayInputField.value);\n }\n });\n displayInputField.addEventListener('change', (event) => {\n if (displayInputField.value.length >= 3 && !searched.includes(displayInputField.value.substring(0, 3))) {\n search(displayInputField.value.substring(0, 3));\n searched.push(displayInputField.value.substring(0, 3));\n }\n });\n }\n const search = (searchterm) => __awaiter(this, void 0, void 0, function* () {\n let ajaxURL = searchWrapper.getAttribute('data-url');\n ajaxURL += `${encodeURI(searchterm)}`;\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = controller[ajaxURL];\n try {\n yield fetch(ajaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN')\n })\n })\n .then((response) => response.json()).then((response) => {\n // populate datalist\n let listString = '';\n let loopValues = resolvePath(response, loopSchema, '');\n if (isTraversable(loopValues) && typeof loopValues.forEach == 'function') {\n loopValues.forEach((item, index) => {\n let actualValue = resolvePath(item, valueSchema, '');\n let displayValue = resolvePath(item, displaySchema, '').replace('\\n', ', ');\n if (!datalist.querySelector(`option[data-value=\"${actualValue}\"]`))\n listString += `<option value=\"${displayValue}\" data-value='${actualValue}'></option>`;\n });\n }\n else if (typeof loopValues == 'object') {\n for (const [key, value] of Object.entries(loopValues)) {\n if (isTraversable(value) && typeof value.forEach == 'function') {\n value.forEach((item, index) => {\n let actualValue = resolvePath(item, valueSchema, '');\n let displayValue = resolvePath(item, displaySchema, '').replace('\\n', ', ');\n if (!datalist.querySelector(`option[data-value=\"${actualValue}\"]`))\n listString += `<option value=\"${key}: ${displayValue}\" data-value='${actualValue}'></option>`;\n });\n }\n }\n }\n datalist.innerHTML += listString;\n return response;\n });\n }\n catch (error) {\n console.log(error);\n }\n });\n if (searchWrapper.hasAttribute('data-prevent-submit')) {\n const form = searchWrapper.closest('form');\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n });\n }\n });\n }\n}\nexport default iamSearch;\n"],"names":["snake","str","safeID","resolvePath","object","path","defaultValue","p","isTraversable","o","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","iamSearch","assetLocation","coreCSS","template","searchWrapper","inputField","valueSchema","displaySchema","loopSchema","datalist","searched","displayInputField","listID","event","match","search","searchterm","ajaxURL","signal","Cookies","response","listString","loopValues","item","index","actualValue","displayValue","key","error"],"mappings":"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"}
1
+ {"version":3,"file":"search.component.min.js","sources":["../../modules/helpers.js","search.component.js"],"sourcesContent":["// @ts-nocheck\n/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add(\"js-enabled\");\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add(\"ie\");\n }\n return null;\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () { checkElements(location.hash); }, false);\n addEventListener(\"popstate\", (event) => {\n if (event && event.state && event.state.type && event.state.type == \"pagination\") {\n let form = document.querySelector(`#${event.state.form}`);\n let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n document.addEventListener(\"submit\", (event) => {\n if (event && event.target instanceof HTMLElement && event.target.matches('form')) {\n let form = event.target;\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input, index) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') || form.querySelector('.pwd-checker[data-strength=\"1\"]') || form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n return null;\n};\nexport const isNumeric = function (str) {\n if (typeof str != \"string\")\n return false; // we only process strings! \n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str.split(' ').map(s => ucfirst(s)).join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path.split(/[\\.\\[\\]\\'\\\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);\nexport const isTraversable = o => Array.isArray(o) || o !== null && ['function', 'object'].includes(typeof o);\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};\n// @ts-nocheck\nimport Cookies from 'js-cookie';\nimport { safeID, resolvePath, isTraversable } from '../../modules/helpers.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Search\"\n});\nclass iamSearch extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n input {\n background: red;\n }\n input:not(.is-invalid):not(:invalid) {\n background: none!important;\n }\n\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\" />\n <slot></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n const searchWrapper = this;\n const inputField = this.querySelector('input');\n const valueSchema = this.hasAttribute('data-value-schema') ? this.getAttribute('data-value-schema') : 'value';\n const displaySchema = this.hasAttribute('data-display-schema') ? this.getAttribute('data-display-schema') : 'label';\n const loopSchema = this.hasAttribute('data-schema') ? this.getAttribute('data-schema') : '';\n let datalist = this.querySelector('datalist');\n let searched = [];\n // Clone original input field, re-name and use for display purposes\n const displayInputField = inputField.cloneNode();\n displayInputField.setAttribute('name', `${inputField.getAttribute('name')}Alt`);\n inputField.removeAttribute('data-change-events');\n displayInputField.removeAttribute('id');\n inputField.after(displayInputField);\n // Hide original input field\n inputField.setAttribute('type', 'hidden');\n // if data list does not exist then create one and append\n if (!datalist) {\n datalist = document.createElement(\"datalist\");\n let listID = safeID('list');\n datalist.setAttribute('id', listID);\n searchWrapper.appendChild(datalist);\n displayInputField.setAttribute('list', listID);\n }\n // Search the endpoint when 3 characters has been added\n if (searchWrapper.hasAttribute('data-url')) {\n displayInputField.addEventListener('input', (event) => {\n if (displayInputField.value.length == 3 && !searched.includes(displayInputField.value)) {\n search(displayInputField.value);\n searched.push(displayInputField.value);\n }\n });\n }\n function checkMatch() {\n let match = datalist.querySelector(`option[value=\"${displayInputField.value}\"]`);\n let subMatch = datalist.querySelector(`option[value*='${displayInputField.value}' i]`);\n if (match) {\n inputField.value = match.getAttribute('data-value');\n }\n else if (displayInputField.value.length > 0 && !subMatch) {\n displayInputField.classList.add('is-invalid');\n displayInputField.closest('label').setAttribute('data-error', 'No results returned');\n }\n else {\n displayInputField.classList.remove('is-invalid');\n displayInputField.closest('label').removeAttribute('data-error');\n }\n }\n // on change update oringinal field with the actual value and use displayed input for the nice display text\n displayInputField.addEventListener('input', (event) => {\n checkMatch();\n });\n const search = (searchterm) => __awaiter(this, void 0, void 0, function* () {\n let ajaxURL = searchWrapper.getAttribute('data-url');\n ajaxURL += `${encodeURI(searchterm)}`;\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = controller[ajaxURL];\n try {\n yield fetch(ajaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN')\n })\n })\n .then((response) => response.json()).then((response) => {\n // populate datalist\n let listString = '';\n let loopValues = resolvePath(response, loopSchema, '');\n if (isTraversable(loopValues) && typeof loopValues.forEach == 'function') {\n loopValues.forEach((item, index) => {\n let actualValue = resolvePath(item, valueSchema, '');\n let displayValue = resolvePath(item, displaySchema, '').replace('\\n', ', ');\n if (!datalist.querySelector(`option[data-value=\"${actualValue}\"]`))\n listString += `<option value=\"${displayValue}\" data-value='${actualValue}'></option>`;\n });\n }\n else if (typeof loopValues == 'object') {\n for (const [key, value] of Object.entries(loopValues)) {\n if (isTraversable(value) && typeof value.forEach == 'function') {\n value.forEach((item, index) => {\n let actualValue = resolvePath(item, valueSchema, '');\n let displayValue = resolvePath(item, displaySchema, '').replace('\\n', ', ');\n if (!datalist.querySelector(`option[data-value=\"${actualValue}\"]`))\n listString += `<option value=\"${key}: ${displayValue}\" data-value='${actualValue}'></option>`;\n });\n }\n }\n }\n datalist.innerHTML += listString;\n displayInputField.closest('form').classList.add('was-validated');\n checkMatch();\n return response;\n });\n }\n catch (error) {\n console.log(error);\n }\n });\n if (searchWrapper.hasAttribute('data-prevent-submit')) {\n const form = searchWrapper.closest('form');\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n });\n }\n });\n }\n}\nexport default iamSearch;\n"],"names":["snake","str","safeID","resolvePath","object","path","defaultValue","p","isTraversable","o","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","iamSearch","assetLocation","coreCSS","template","searchWrapper","inputField","valueSchema","displaySchema","loopSchema","datalist","searched","displayInputField","listID","event","search","checkMatch","match","subMatch","searchterm","ajaxURL","signal","Cookies","response","listString","loopValues","item","index","actualValue","displayValue","key","error"],"mappings":"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"}
@@ -54,6 +54,7 @@ class iamTable extends HTMLElement {
54
54
  let classList = this.classList.toString();
55
55
  classList = classList.replace('table--cta', '');
56
56
  classList = classList.replace('table--loading', '');
57
+ classList = classList.replace('mh-md', '');
57
58
  this.shadowRoot.querySelector('.table__wrapper').className += ` ${classList}`;
58
59
  // set actionbar class if needed
59
60
  if (this.querySelector('.actionbar__sticky'))
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * iamKey v5.1.0-beta9
3
- * Copyright 2022-2023 iamproperty
2
+ * iamKey v5.3.0-beta1
3
+ * Copyright 2022-2024 iamproperty
4
4
  */const B=function(a){return typeof a!="string"?!1:!isNaN(a)&&!isNaN(parseFloat(a))},Q=(a,e)=>String(a).padStart(e,"0"),X=a=>a.charAt(0).toUpperCase()+a.slice(1),k=(a,e,o)=>e.split(/[\.\[\]\'\"]/).filter(i=>i).reduce((i,b)=>i?i[b]:o,a);var Y=function(a,e,o,i){function b(d){return d instanceof o?d:new o(function(r){r(d)})}return new(o||(o=Promise))(function(d,r){function n(c){try{t(i.next(c))}catch(h){r(h)}}function l(c){try{t(i.throw(c))}catch(h){r(h)}}function t(c){c.done?d(c.value):b(c.value).then(n,l)}t((i=i.apply(a,e||[])).next())})};const R=a=>{const e=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((i,b)=>{const d=Array.from(i.querySelectorAll("th, td")),r=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","error"];d.forEach((n,l)=>{const t=e[l];if(typeof t<"u"){let c=document.createElement("div");c.innerHTML=t.innerHTML;let h=c.textContent||c.innerText||"";n.setAttribute("data-label",h),t.hasAttribute("data-td-class")&&n.setAttribute("class",t.getAttribute("data-td-class")),t.hasAttribute("data-format")&&(n.setAttribute("data-format",t.getAttribute("data-format")),n.innerHTML=M(t.getAttribute("data-format"),n.textContent.trim())),r.includes(n.textContent.trim().toLowerCase())&&n.setAttribute("data-content",n.textContent.trim().toLowerCase())}})})},J=a=>{let e=0;return Array.from(a.querySelectorAll("tbody tr")).forEach((o,i)=>{let b=window.getComputedStyle(document.querySelector("html")),d=o.querySelector(":scope > *:last-child > *:first-child");if(d){d.classList.add("text-nowrap");let r=d.offsetWidth/parseFloat(b.fontSize);r+=1.7,e=e>r?e:r}}),e},G=(a,e)=>{if(e.classList.contains("table--fullwidth")&&!e.hasAttribute("data-expandable")||a.querySelectorAll("thead tr th").length<4&&!e.hasAttribute("data-expandable"))return!1;Array.from(a.querySelectorAll("thead tr")).forEach((o,i)=>{a.querySelectorAll("thead tr th.expand-button-heading").length||o.insertAdjacentHTML("afterbegin",'<th class="th--fixed expand-button-heading"></th>')}),Array.from(a.querySelectorAll("tbody tr")).forEach((o,i)=>{const b=o.getAttribute("data-view")==="full"?"aria-expanded":"";o.insertAdjacentHTML("afterbegin",`<td class="td--fixed td--expand"><button class="btn btn-compact btn-secondary" data-expand-button ${b}>Expand</button></td>`)})},K=a=>{a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-expand-button]")){let o=e.target.closest("[data-expand-button]"),i=o.closest("tr");o.toggleAttribute("aria-expanded"),i.getAttribute("data-view")=="full"?i.setAttribute("data-view","default"):i.setAttribute("data-view","full"),o.blur()}})},N=(a,e)=>{let o=e.querySelector("[data-search]");if(!o)return!1;const i=o.getAttribute("id"),b=o.getAttribute("data-search").split(",");let d=o.parentNode,r={};b.forEach((n,l)=>{Array.from(a.querySelectorAll('td[data-label="'+n.trim()+'"]')).forEach((t,c)=>{t.querySelector(".td__content")?r[t.querySelector(".td__content").textContent]=t.querySelector(".td__content").textContent:r[t.textContent]=t.textContent})}),o.setAttribute("list",`${i}_list`),o.setAttribute("autocomplete","off"),d.querySelector("datalist")||(d.innerHTML+=`<datalist id="${i}_list"></datalist>`),d.querySelector("datalist").innerHTML=`${Object.keys(r).map(n=>`<option value="${n}"></option>`).join("")}`},V=(a,e,o,i,b)=>{var d;let r=function(t,c=!1){if(e.classList.contains("processing"))return!1;if(t.type=="submit"&&(e.classList.add("processing"),Array.from(e.querySelectorAll("[data-duplicate]")).forEach((h,u)=>{const m=h.getAttribute("data-duplicate"),s=document.getElementById(m),g=document.querySelector(`[for="${m}"] iam-card`);if(s.checked!=h.checked)if(g){let x=new Event("click");g.dispatchEvent(x)}else s.checked=h.checked}),e.classList.remove("processing")),e.hasAttribute("data-ajax")){if(!c){let h=e.querySelector("[data-pagination]");h.value=1,i.setAttribute("data-page",1)}z(a,e,o,i)}else e.hasAttribute("data-submit")?e.submit():(C(a,e,i),_(a,e));if(e.hasAttribute("data-ajax-post")){let h=new FormData(e),u=new URLSearchParams(h).toString();const m=new XMLHttpRequest;m.open("GET",`${window.location.href}?ajax=true&${u}`),m.send()}};e.addEventListener("keyup",t=>{clearTimeout(d),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&(d=setTimeout(function(){r(t)},500))}),e.addEventListener("change",t=>{clearTimeout(d),t&&t.target instanceof HTMLElement&&t.target.closest("[data-sort]")&&(e.hasAttribute("data-submit")||O(a,e,b),r(t)),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&r(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter][data-no-ajax]")?(C(a,e,i),_(a,e)):(t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&t.target.closest("form .dialog__wrapper > dialog")||t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&!t.target.closest("form dialog"))&&r(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-show]")&&r(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-mimic]")&&r(t)}),e.addEventListener("click",t=>{if(clearTimeout(d),t&&t.target instanceof HTMLElement&&t.target.closest('dialog button:not([type="button"])')&&t.target.closest('dialog button:not([type="button"])').closest("dialog").close(),t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__close")&&(t.preventDefault(),t.stopPropagation()),t&&t.target instanceof HTMLElement&&t.target.closest("[data-clear]")){e.classList.add("processing"),Array.from(e.querySelectorAll(".applied-filters")).forEach((h,u)=>{h.innerHTML=""});let c=e.elements;for(let h=0;h<c.length;h++)switch(c[h].type.toLowerCase()?c[h].type.toLowerCase():"text"){case"text":case"password":case"textarea":c[h].value="";break;case"radio":case"checkbox":if(c[h].checked){let m=c[h],s=m.getAttribute("id"),g=document.querySelector(`[for="${s}"`);if(g.querySelector("iam-card")){let x=g.querySelector("iam-card"),S=new Event("click");x.dispatchEvent(S)}m.checked=!1}break;case"select-one":case"select-multi":c[h].selectedIndex=-1;break}e.classList.remove("processing"),e.hasAttribute("data-submit")||O(a,e,b),r(t)}}),e.addEventListener("submit",t=>{clearTimeout(d),e.hasAttribute("data-submit")||t.preventDefault(),r(t)}),e.addEventListener("force",t=>{r(t)}),e.addEventListener("paginate",t=>{r(t,!0)});let n=[],l=[];Array.from(e.querySelectorAll("[data-mimic]")).forEach((t,c)=>{let h=t.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${h}"]`)).forEach((u,m)=>{let s=u.closest("form");n.includes(s)||n.push(s),l.includes(h)||l.push(h)})}),n.forEach((t,c)=>{const h=function(){let u=[],m=new FormData(t);for(const[s,g]of m)document.querySelector(`[data-mimic="${s}"]`)&&!u.includes(s)?(u.push(s),document.querySelector(`[data-mimic="${s}"]`).value=g):document.querySelector(`[data-mimic="${s}"]`)&&(document.querySelector(`[data-mimic="${s}"]`).value+=","+g);for(const s of u){const g=new Event("force");e.dispatchEvent(g)}for(const s of l)if(!m.has(s)&&t.querySelector(`[name="${s}"]`)){document.querySelector(`[data-mimic="${s}"]`).value="";const g=new Event("force");e.dispatchEvent(g)}};t.addEventListener("force",u=>{h()}),t.addEventListener("change",u=>{h()})})},O=(a,e,o)=>{if(e.getAttribute("data-ajax"))return!1;let i=a.querySelector("tbody"),b=e.querySelector("[data-sort]"),d=b.querySelector(`option:nth-child(${b.selectedIndex+1})`),r=d.getAttribute("data-sort"),n=d.getAttribute("data-order"),l=d.getAttribute("data-format");if(!r)return i.innerHTML=o.innerHTML,R(a),!1;let t=[];["asc","desc","descending"].includes(n)||(t=n.split(","));let c=[];Array.from(i.querySelectorAll("tr")).forEach((u,m)=>{let s=u.querySelector('td[data-label="'+r+'"], th[data-label="'+r+'"]').textContent.trim();u.querySelector('[data-label="'+r+'"] .td__content')&&(s=u.querySelector('[data-label="'+r+'"] .td__content').textContent.trim()),t.length&&t.includes(s)&&(s=t.indexOf(s)),B(s)&&(s=Q(s,10)),l&&l=="date"&&(s=new Date(s));const g={index:s,row:u};c.push(g)}),c.sort((u,m)=>u.index>m.index?1:-1),(n=="descending"||n=="desc")&&(c=c.reverse());let h="";c.forEach((u,m)=>{h+=u.row.outerHTML}),i.innerHTML=h},C=(a,e,o)=>{a.classList.remove("table--filtered");let i=P(e),b=[],d=0,r=e.querySelector("[data-pagination]")?parseInt(e.querySelector("[data-pagination]").value):1,n=e.querySelector("[data-show]")?parseInt(e.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((t,c)=>{t.classList.remove("filtered"),t.classList.remove("filtered--matched"),t.classList.remove("filtered--show"),t.removeAttribute("data-filtered-by")}),e.querySelector("[data-search]")){let t=e.querySelector("[data-search]");e.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((h,u)=>{b.push({column:`${h.trim()}`,value:`${t.value}`})})}Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,c)=>{t.innerHTML="",t.parentNode.classList.remove("hover")});let l=0;Object.values(i).forEach((t,c)=>{typeof t=="object"&&Object.values(t).length?l+=Object.values(t).length:l++}),l&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,c)=>{t.innerHTML+=`(${l})`,t.parentNode.classList.add("hover")}),a.classList.add("table--filtered");for(const[t,c]of Object.entries(i))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((h,u)=>{let m=!1;c.forEach((s,g)=>{let x=h.querySelector(`[data-label="${t}"]`);if(s&&s=="$today")s=M("date",new Date);else if(s&&s=="$yesterday"){let f=new Date;f.setDate(f.getDate()-1),s=M("date",f)}else if(s&&(s=="$thisWeek"||s=="$lastWeek")){let f=new Date,y=new Date(f.setDate(f.getDate()-(f.getDay()-1))),p=new Date(f.setDate(f.getDate()-f.getDay()+7)),w=new Date(x.textContent.toLowerCase());if(f.setHours(0,0,0,0),y.setHours(0,0,0,0),p.setHours(0,0,0,0),w.setHours(0,0,0,0),s=="$thisWeek")m=w>=y&&w<=p;else{let A=new Date(y.setDate(y.getDate()-7)),L=new Date(p.setDate(p.getDate()-7));A.setHours(0,0,0,0),L.setHours(0,0,0,0),m=w>=A&&w<=L}}else if(s&&s=="$thisMonth"){let f=new Date,y=f.getFullYear(),p=f.getMonth();var S=new Date(y,p,1),q=new Date(y,p+1,0);let w=new Date(x.textContent.toLowerCase());S.setHours(0,0,0,0),q.setHours(0,0,0,0),w.setHours(0,0,0,0),m=w>=S&&w<=q}else if(s&&s=="$lastMonth"){let f=new Date,y=f.getFullYear(),p=f.getMonth();var E=new Date(y,p-1,1),v=new Date(y,p,0);let w=new Date(x.textContent.toLowerCase());E.setHours(0,0,0,0),v.setHours(0,0,0,0),w.setHours(0,0,0,0),m=w>=E&&w<=v}x&&x.textContent.toLowerCase().includes(s.toLowerCase())&&(m=!0)}),m||(h.classList.add("filtered"),h.setAttribute("data-filtered-by",t))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((t,c)=>{let h=!(b.length>0&&b[0].value.length>=3);b.forEach((u,m)=>{let s=t.querySelector(`[data-label="${u.column}"]`);s&&u.value.length>=3&&s.textContent.toLowerCase().includes(u.value.toLowerCase())&&(h=!0)}),h||t.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((t,c)=>{d++,t.classList.add("filtered--matched"),Math.ceil(d/n)==parseInt(r)&&t.classList.add("filtered--show")}),o&&(o.setAttribute("data-total",d),o.setAttribute("data-show",n),o.setAttribute("data-page",r))},_=(a,e,o)=>{Array.from(e.querySelectorAll("[data-query]")).forEach((b,d)=>{let r=b.getAttribute("data-query"),n=0;if(r=="total")o.hasAttribute("data-total")?n=o.getAttribute("data-total"):n=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!r.includes(" == ")&&r.includes(" & ")){let l=r.split(" & "),t="";l.forEach(c=>{t+=`:not([data-filtered-by="${c}"])`}),n=Array.from(a.querySelectorAll(`tbody tr${t}`)).length}else if(!r.includes(" == "))n=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${r}"])`)).length;else if(r.includes(" && ")){let l=r.split(" && ");n=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(t){let c=!0;for(const[h,u]of Object.entries(l)){let m=u.split(" == ");(!t.querySelector(`td[data-label="${m[0]}"]`)||t.querySelector(`td[data-label="${m[0]}"]`).textContent!=`${m[1]}`)&&(c=!1)}return c}).length}else{let l=r.split(" == ");n=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${l[0]}"], tbody tr[data-filtered-by="${l[0]}"] td[data-label="${l[0]}"]`)).filter(function(t){return t.textContent===l[1]}).length}b.hasAttribute("data-total")?b.setAttribute("data-total",n):b.innerHTML=n})},Z=function(a,e,o,i){o.addEventListener("update-page",b=>{let d=e.querySelector("[data-pagination]"),r=b.detail.page;if(d.value=r,e.dispatchEvent(new Event("paginate")),i.setAttribute("data-page",r),a.hasAttribute("data-show-history")){const n=new URL(location);n.searchParams.set("page",r),history.pushState({type:"pagination",form:e.getAttribute("id"),page:r},"",n)}if(!i.hasAttribute("data-no-scroll")){const l=a.getBoundingClientRect().top+window.pageYOffset+-250;window.scrollTo({top:l,behavior:"smooth"})}}),o.addEventListener("update-show",b=>{let d=e.querySelector("[data-show]"),r=b.detail.show;d.value=r,i.setAttribute("data-show",r),e.dispatchEvent(new Event("submit"))})},tt=(a,e)=>{if(!a)return!1;a.addEventListener("click",o=>{et(e)})},et=function(a){for(var e=[],o=a.getElementsByTagName("tr"),i=0;i<o.length;i++){for(var b=o[i].querySelectorAll("td,th"),d=[],r=0;r<b.length;r++)d.push(`"${b[r].textContent}"`);e.push(d.join(","))}e=e.join(`
5
5
  `);let n=new Blob([e],{type:"text/csv"});var l=document.createElement("a");l.download="export.csv";var t=window.URL.createObjectURL(n);l.href=t,l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l)},I=function(a,e,o,i){if(R(a),G(a,i),_(a,e,i),i&&i.classList.contains("table--cta")){let d=function(){Array.from(a.querySelectorAll("tr")).forEach((r,n)=>{let l=r.offsetHeight;r.style.setProperty("--row-height",`${l}px`)})};const b=J(a);i.style.setProperty("--cta-width",`${b}rem`),new ResizeObserver(d).observe(a)}},P=function(a){let e=new Object;return Array.from(a.querySelectorAll("[data-filter]")).forEach((i,b)=>{if(!(i.type=="radio"&&!i.checked)&&!(i.type=="checkbox"&&!i.checked)&&i&&i.value){let d=i.getAttribute("data-filter");e[d]||(e[d]=new Array),e[d].push(i.value)}}),e},z=function(a,e,o,i){return Y(this,void 0,void 0,function*(){let b=new FormData(e),d=new URLSearchParams(b).toString(),r=a.querySelectorAll("thead tr th:not(.expand-button-heading)"),n=a.querySelector("tbody"),l=e.getAttribute("data-ajax");i.classList.add("table--loading");let t=P(e);Array.from(e.querySelectorAll("[data-filter-count]")).forEach((u,m)=>{u.innerHTML="",u.parentNode.classList.remove("hover")});let c=0;Object.values(t).forEach((u,m)=>{typeof u=="object"&&Object.values(u).length?c+=Object.values(u).length:c++}),c&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((u,m)=>{u.innerHTML+=`(${c})`,u.parentNode.classList.add("hover")}),window.controller||(window.controller=[]),window.controller[l]&&window.controller[l].abort(),window.controller[l]=new AbortController;const{signal:h}=controller[l];o.setAttribute("data-loading","true"),e.classList.add("processing");try{yield fetch(l+"?"+d,{signal:h,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(u=>u.json()).then(u=>{let m=e.hasAttribute("data-schema")?e.getAttribute("data-schema"):"data",s=e.hasAttribute("data-schema-total")?e.getAttribute("data-schema-total"):"meta.total",g=e.hasAttribute("data-schema-page")?e.getAttribute("data-schema-page"):"meta.current_page",x=k(u,s,15),S=k(u,g,1),q=k(u,m),E=i.hasAttribute("data-empty-msg")?i.getAttribute("data-empty-msg"):"No results found";q?(n.innerHTML="",q.forEach((v,f)=>{var y=document.createElement("tr");r.forEach((p,w)=>{let A="";var L=document.createElement("td");if(L.setAttribute("data-label",p.innerText),p.getAttribute("data-output")){var $=p.getAttribute("data-output");A=$.replace(new RegExp(/{(.*?)}/,"gm"),function(D){return k(v,D.replace("{","").replace("}",""))})}if(p.hasAttribute("data-output-array")){var $=p.getAttribute("data-output");let F=k(v,$.replace("{","").replace("}",""));A="",F.forEach((j,it)=>{let W=p.getAttribute("data-output-array"),T="";if(p.hasAttribute("data-output-array-property")&&p.hasAttribute("data-output-array-transform")){const H=k(j,p.getAttribute("data-output-array-property")),U=JSON.parse(p.getAttribute("data-output-array-transform"))[H];T=W.replace(`{${p.getAttribute("data-output-array-property")}}`,U)}T=T.replace(new RegExp(/{(.*?)}/,"gm"),function(H){return k(j,H.replace("{","").replace("}",""))}),A+=T})}p.hasAttribute("data-transform")&&(A=JSON.parse(p.getAttribute("data-transform"))[A],!A&&p.hasAttribute("data-default")&&(A=p.getAttribute("data-default"))),L.innerHTML=A,y.appendChild(L)}),n.appendChild(y)}),N(a,e),i.setAttribute("data-total",parseInt(x)),i.setAttribute("data-page",parseInt(S)),I(a,e,o,i),Array.from(e.querySelectorAll("[data-ajax-query]")).forEach((v,f)=>{let y=k(u,v.getAttribute("data-ajax-query"),"");v.hasAttribute("data-total")?v.setAttribute("data-total",y):v.innerHTML=y}),parseInt(x)==0&&(n.innerHTML=`<tr><td colspan="100%"><span>${E}</span></td></tr>`),i.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:l,formData:d})):n.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',o.removeAttribute("data-loading"),e.classList.remove("processing")})}catch(u){console.log(u)}})},M=(a,e)=>{switch(a){case"datetime":return new Date(e).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(e).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(e).toLocaleDateString("en-gb",{year:"2-digit",month:"long",day:"numeric"});case"capitalise":return e=X(e)}};class at extends HTMLElement{constructor(){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`,i=document.createElement("template");i.innerHTML=`
6
6
  <style>
@@ -28,5 +28,5 @@
28
28
  </div>
29
29
  <iam-pagination class="pagination--table" ${this.hasAttribute("data-page")?`data-page="${this.getAttribute("data-page")}"`:""} ></iam-pagination>
30
30
  `,this.shadowRoot.appendChild(i.content.cloneNode(!0)),document.getElementById("tableExtras")||document.head.insertAdjacentHTML("beforeend",`<style id="tableExtras">*:has(>iam-table){container-type:inline-size}iam-table{--hover-background: var(--colour-light);--row-bg: var(--colour-canvas-2)}iam-table thead tr{background:var(--row-bg)}iam-table tbody tr{background:var(--row-bg)}iam-table tbody tr:is(:hover,:focus-within,.hover){--bg-colour-rgb: 238,238,238;--row-bg: var(--hover-background);background:var(--row-bg)}@media screen and (prefers-color-scheme: dark){iam-table tbody tr{--hover-background: var(--colour-canvas)}iam-table tbody tr:is(:hover,:focus-within,.hover){background:var(--row-bg)}}iam-table[data-expandable] [data-expand-button][aria-expanded]{background-color:rgba(0,0,0,0)}@container (width < 23.4375em){iam-table:not(.table--fullwidth) thead{display:none}iam-table:not(.table--fullwidth) tbody{display:block;overflow:visible}iam-table:not(.table--fullwidth) tbody tr td:first-child{padding-top:0}iam-table:not(.table--fullwidth) tr{display:block;position:relative;border:none;background:var(--row-bg);padding:var(--wrapper-padding);box-shadow:0px 6px 12px rgba(0,0,0,.11);border-radius:0.5rem}iam-table:not(.table--fullwidth) tr+tr{margin-top:2rem}iam-table:not(.table--fullwidth) tr:is(:hover,:focus,.hover){--row-bg: var(--colour-canvas-2)}iam-table:not(.table--fullwidth) :is(td,th){display:block;border-color:var(--colour-border);padding-right:0}iam-table:not(.table--fullwidth) :is(td,th):nth-child(1){border-top:none}iam-table:not(.table--fullwidth) :is(td,th)[data-label]:not([data-label=""]):before{content:attr(data-label);color:var(--colour-heading);padding:0 0 0.375rem 0;margin-bottom:0;display:block;font-weight:bold}iam-table:not(.table--fullwidth) td:first-child::after{top:1.75rem !important}iam-table:not(.table--fullwidth) td::after{top:2.5rem}iam-table:not(.table--fullwidth) .td--fixed{padding-right:50%}iam-table:not(.table--fullwidth) tbody tr td:not(:first-child){border-top:var(--border-width) solid currentColor;border-color:var(--colour-border) !important}iam-table:not(.table--fullwidth) tr:not([data-view=full]) td p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}iam-table:not(.table--fullwidth) td:has([data-expand-button]){height:0;padding:0;position:relative}iam-table:not(.table--fullwidth) td:has([data-expand-button])+td{border-top:none !important;padding-top:0 !important}iam-table:not(.table--fullwidth) [data-expand-button]{top:0;right:0;background:rgba(0,0,0,0) !important;border:none;position:absolute;overflow:hidden;--compact-size: 2rem}iam-table:not(.table--fullwidth) [data-expand-button]:before{font-family:"Font Awesome 6 Pro";content:"\uF055";font-weight:300 !important;font-size:1.75rem;line-height:var(--compact-size) !important}iam-table:not(.table--fullwidth) [data-expand-button][aria-expanded]:before{content:"\uF056";font-weight:900 !important}iam-table:not(.table--fullwidth) .dialog__wrapper{margin-top:-0.5rem;margin-left:-1rem;z-index:10}iam-table:not(.table--fullwidth) tbody tr:not([data-view=full]) td:not(.td--fixed)+td:not(.td--fixed)+td+td{display:none}iam-table.table--cta:not(.table--fullwidth) tr td:not(:first-child):last-child{display:block !important;position:static;width:100%;min-width:100%;margin-left:0;padding-left:0;text-align:left;min-height:0}iam-table.table--cta:not(.table--fullwidth) tr td:not(:first-child):last-child:after{display:none}}@container (width > 23.4375em){iam-table.table--cta:not(.table--loading):has(tr:first-child td:first-child:last-child){padding-right:calc(var(--wrapper-padding) + 1.5rem)}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>th:nth-last-child(2),iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>td:nth-last-child(2){padding-right:var(--cta-width)}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>*:not(:first-child):last-child{position:absolute;left:calc(100% - var(--cta-width));top:auto;background:rgba(0,0,0,0);width:var(--cta-width);min-height:calc(var(--row-height) - 2px);text-align:right;background:linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem);cursor:default}@media screen and (prefers-color-scheme: dark){iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>*:not(:first-child):last-child{background:linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem)}}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>*:not(:first-child):last-child a{white-space:nowrap;padding-right:.2rem}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tbody tr:hover>*:not(:first-child):last-child{background:linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem)}}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta){position:relative}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) thead{position:sticky;top:0;left:0;z-index:1;background-color:var(--row-bg)}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) thead:before{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--colour-primary)}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) tbody{position:relative}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) tbody tr:first-child td{border-top:0}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) tbody tr:last-child td{border-bottom:0}table :is([data-content=low],[data-content=medium],[data-content=high],[data-content=unknown],[data-content=due],[data-content=overdue],[data-content=incomplete],[data-content="requires approval"],[data-content=upcoming],[data-content="approval required"],[data-content=warning],[data-content=verified],[data-content="not started"],[data-content="to do"],[data-content="on track"],[data-content=completed],[data-content=complete],.alert-status:not([data-content="0"]):not([data-content=""]):not(:empty)){position:relative;padding-left:1.5rem}table :is([data-content=low],[data-content=medium],[data-content=high],[data-content=unknown],[data-content=due],[data-content=overdue],[data-content=incomplete],[data-content="requires approval"],[data-content=upcoming],[data-content="approval required"],[data-content=warning],[data-content=verified],[data-content="not started"],[data-content="to do"],[data-content="on track"],[data-content=completed],[data-content=complete],.alert-status:not([data-content="0"]):not([data-content=""]):not(:empty))::before{margin-left:-1.5rem !important}table :is([data-content=low],[data-content=medium],[data-content=high],[data-content=unknown],[data-content=due],[data-content=overdue],[data-content=incomplete],[data-content="requires approval"],[data-content=upcoming],[data-content="approval required"],[data-content=warning],[data-content=verified],[data-content="not started"],[data-content="to do"],[data-content="on track"],[data-content=completed],[data-content=complete],.alert-status:not([data-content="0"]):not([data-content=""]):not(:empty)):after{font-family:"Font Awesome 6 Pro";position:absolute;top:1rem;left:0;font-size:1rem;line-height:1;height:1rem;width:1rem;display:inline-block}table [data-content=high]:after{content:"\uF325";font-weight:normal;color:var(--colour-danger)}table [data-content=medium]:after{content:"\uF7A4";font-weight:normal;color:var(--colour-warning)}table [data-content=low]:after{content:"\uE404";font-weight:normal;color:var(--colour-complete)}table [data-content=unknown]:after{content:"\uE404";font-weight:normal;color:var(--colour-muted)}table :is([data-content=overdue],[data-content=due],[data-content=incomplete]):after{content:"\uF024";color:var(--colour-danger)}table :is([data-content="not started"],[data-content="to do"],[data-content="on track"]):after{content:"\uF024";color:var(--colour-muted)}table :is([data-content="requires approval"],[data-content="approval required"],[data-content=upcoming]):after{content:"\uF024";color:var(--colour-warning)}table :is([data-content=warning]):after{content:"\uF071";color:var(--colour-warning)}table :is([data-content=verified],[data-content=completed],[data-content=complete]):after{content:"\uF00C";font-weight:normal;color:var(--colour-complete)}table .alert-status:not([data-content="0"]):not([data-content=""]):not(:empty):after{content:"\uF0F3";color:var(--colour-primary)}iam-table .table--filtered tbody tr:not(.filtered--show){display:none !important}iam-table table:not(.table--filtered):not(.table--ajax) tbody tr:nth-child(15)~tr{display:none}iam-table input:is([type=radio],[type=checkbox])+label:not(.radio--tick){padding-left:0 !important;margin:0 !important}iam-table input:is([type=radio],[type=checkbox])+label:not(.radio--tick):before,iam-table input:is([type=radio],[type=checkbox])+label:not(.radio--tick):after{top:.75rem !important;left:.25rem !important}iam-table:has([type=checkbox]:checked) tr:has([type=checkbox]) [type=checkbox]{width:100vw;height:100%;max-height:var(--row-height);max-width:100vw;cursor:pointer;pointer-events:all;top:auto;margin:0;margin-top:0rem}iam-table tr:has([type=checkbox]:checked){--row-bg: #E0E0E0}@media screen and (prefers-color-scheme: dark){iam-table tr:has([type=checkbox]:checked){--row-bg: #000000}}@container (width < 23.4375em){@media screen and (prefers-color-scheme: light){iam-table:has([slot=before]) iam-actionbar{background-color:#e6eaec}}iam-table:has([slot=before]) .actionbar__sticky+*{margin-top:0 !important}iam-table input:is([type=radio],[type=checkbox])+label:not(.radio--tick){padding-left:0 !important;margin:0 !important;min-height:2rem}iam-table input:is([type=radio],[type=checkbox])+label:not(.radio--tick):before,iam-table input:is([type=radio],[type=checkbox])+label:not(.radio--tick):after{top:.25rem !important;left:0 !important}iam-table:has([type=checkbox]:checked) tr:has([type=checkbox]) [type=checkbox]{width:100%;height:100%;max-height:100%;max-width:100%;margin-top:-2rem}}iam-table.table--fullwidth:not([data-expandable]) th.expand-button-heading{display:none}iam-table.table--fullwidth:not([data-expandable]) td:has([data-expand-button]){display:none}@container (width > 23.4375em){iam-table:not([data-expandable]) th.expand-button-heading{display:none}iam-table:not([data-expandable]) td.td--expand{display:none}iam-table[data-expandable] [data-expand-button]{margin:0}iam-table[data-expandable] [data-expand-button]:before{font-family:"Font Awesome 6 Pro";content:"\uF078";font-weight:500}iam-table[data-expandable] [data-expand-button][aria-expanded]:before{content:"\uF077"}iam-table[data-expandable] tr:not(:has(p)) [data-expand-button]{display:none}iam-table[data-expandable] tr:not([data-view=full]) td p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}}@container (width < 23.4375em){iam-table:not(.table--fullwidth) .td--fixed+td:not(.td--fixed){border-top:none}}@container (width > 23.4375em){iam-table{--width-adjust: 0px}iam-table:has([type=checkbox]){--width-adjust: -1rem}iam-table .th--fixed{min-width:calc(4.5rem + var(--width-adjust));position:absolute;padding:0}iam-table .th--fixed:after{top:auto;left:0;content:"";position:absolute;width:100%;height:calc(var(--row-height) - 2px);background:linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%)}iam-table .td--fixed{position:absolute;position:absolute;left:auto;top:auto;z-index:3;padding:0.25rem 0 0 0;min-width:4.5rem;height:calc(var(--row-height) - 2px);text-align:left;background:linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%)}iam-table .td--fixed:has([open]){z-index:4}iam-table tr:is(:hover,:focus) .td--fixed{background:linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%)}iam-table tr:has([data-expand-button]){height:calc(4.625rem - 2px)}iam-table .th--fixed+th:not(.th--fixed),iam-table .td--fixed+td:not(.td--fixed){padding-left:calc(4.5rem + var(--width-adjust))}iam-table .th--fixed:not(.expand-button-heading)+.th--fixed+th:not(.th--fixed),iam-table .td--fixed:not(.td--expand)+.td--fixed+td:not(.td--fixed){padding-left:calc(7.75rem + var(--width-adjust))}iam-table[data-expandable] .th--fixed+.th--fixed+th:not(.th--fixed),iam-table[data-expandable] .td--fixed+.td--fixed+td:not(.td--fixed){padding-left:calc(7.75rem + var(--width-adjust))}iam-table .th--fixed+.th--fixed,iam-table .td--fixed+.td--fixed{padding-left:calc(3.25rem + var(--width-adjust));min-width:calc(7.75rem + var(--width-adjust))}iam-table .th--fixed:has(+.th--fixed),iam-table .td--fixed:has(+.td--fixed){min-width:calc(3.25rem + var(--width-adjust));z-index:5}iam-table .dialog__wrapper{z-index:10}iam-table .dialog__wrapper:has([open]){z-index:20}iam-table[data-expandable] input:is([type=radio],[type=checkbox])+label:before,iam-table[data-expandable] input:is([type=radio],[type=checkbox])+label:after{left:1.25rem !important}iam-table:not([data-expandable]) th.expand-button-heading+th{padding-left:0 !important}iam-table:not([data-expandable]) td.td--expand+td{padding-left:0 !important}iam-table:not([data-expandable]) th.expand-button-heading+.th--fixed{min-width:calc(4.5rem + var(--width-adjust)) !important}iam-table:not([data-expandable]) td.td--expand+.td--fixed{min-width:calc(4.5rem + var(--width-adjust)) !important}}/*# sourceMappingURL=assets/css/components/table.global.css.map */
31
- </style>`)}connectedCallback(){const e=new URLSearchParams(window.location.search);this.hasAttribute("data-total")||this.setAttribute("data-total",this.querySelectorAll("table tbody tr").length),this.hasAttribute("data-page")||this.setAttribute("data-page",e.has("page")?e.get("page"):1),this.hasAttribute("data-show")||this.setAttribute("data-show",e.has("show")?e.get("show"):15),this.hasAttribute("data-increment")||this.setAttribute("data-increment",this.getAttribute("data-show"));let o=this.classList.toString();if(o=o.replace("table--cta",""),o=o.replace("table--loading",""),this.shadowRoot.querySelector(".table__wrapper").className+=` ${o}`,this.querySelector(".actionbar__sticky")&&this.shadowRoot.querySelector(".table__wrapper").classList.add("has-actionbar"),this.table=this.querySelector("table"),this.savedTableBody=this.table.querySelector("tbody").cloneNode(!0),this.pagination=this.shadowRoot.querySelector("iam-pagination"),this.pagination.setAttribute("data-total",this.getAttribute("data-total")),this.pagination.setAttribute("data-page",this.getAttribute("data-page")),this.pagination.setAttribute("data-show",this.getAttribute("data-show")),this.pagination.setAttribute("data-increment",this.getAttribute("data-show")),this.hasAttribute("data-page-jump")&&this.pagination.setAttribute("data-page-jump","true"),this.hasAttribute("data-per-page")&&this.pagination.setAttribute("data-per-page","true"),this.hasAttribute("data-item-count")&&this.pagination.setAttribute("data-item-count","true"),this.hasAttribute("data-loading")&&this.pagination.setAttribute("data-loading","true"),this.classList.contains("table--fullwidth")&&this.pagination.setAttribute("data-minimal","true"),this.classList.contains("table--cta")||this.shadowRoot.querySelector(".table--cta").classList.remove("table--cta"),this.form=document.createElement("form"),this.hasAttribute("data-filterby")?this.form=document.querySelector(`#${this.getAttribute("data-filterby")}`):this.table.parentNode.insertBefore(this.form,this.table.nextSibling),this.form.hasAttribute("data-ajax")&&this.table.classList.add("table--ajax"),N(this.table,this.form),this.form.querySelector("[data-pagination]")||(this.form.innerHTML+=`<input name="page" type="hidden" value="${this.getAttribute("data-page")}" data-pagination="true" />`),this.form.querySelector("[data-show]")||(this.form.innerHTML+=`<input name="show" type="hidden" value="${this.getAttribute("data-show")}" data-show="true" />`),K(this.table),V(this.table,this.form,this.pagination,this,this.savedTableBody),Z(this.table,this.form,this.pagination,this),tt(this.shadowRoot.querySelector("[data-export]"),this.table),this.form.getAttribute("data-ajax"))z(this.table,this.form,this.pagination,this);else{let b=function(r=1){return Math.floor(Math.random()*Date.now()*(r+1))};if(this.querySelector("iam-actionbar[data-selectall]")){const r=this.querySelector("iam-actionbar[data-selectall]");Array.from(this.table.querySelectorAll("thead tr")).forEach((n,l)=>{n.insertAdjacentHTML("afterbegin",'<th class="th--fixed"></th>')}),Array.from(this.table.querySelectorAll("tbody tr")).forEach((n,l)=>{let t=`row${b(l)}`;n.insertAdjacentHTML("afterbegin",`<td class="td--fixed selectrow"><input type="checkbox" name="row" id="${t}"/><label for="${t}"><span class="visually-hidden">Select row</span></label></td>`)}),this.table.addEventListener("change",n=>{if(n&&n.target instanceof HTMLElement&&n.target.closest(".selectrow input")){let l=this.table.querySelectorAll('.selectrow input[type="checkbox"]').length,t=this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;r.setAttribute("data-selected",l==t?"all":t)}}),r.addEventListener("selected",n=>{n.detail.selected=="0"?Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((l,t)=>{l.checked=!1}):n.detail.selected=="all"&&Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((l,t)=>{l.checked=!0})})}let d=-1;Array.from(this.table.querySelectorAll("tbody tr")).forEach((r,n)=>{if(r.querySelector(":scope > td > .dialog__wrapper")){let l=r.querySelector(":scope > td > .dialog__wrapper").parentNode;l.classList.add("td--fixed"),d=Array.from(l.parentNode.children).indexOf(l)}}),d!=-1&&(this.table.querySelector(`thead tr th:nth-child(${d+1})`).classList.add("th--fixed"),Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${d+1})`)).forEach((r,n)=>{r.classList.add("td--fixed")})),I(this.table,this.form,this.pagination,this),C(this.table,this.form,this),_(this.table,this.form)}this.shadowRoot.querySelector(".table__wrapper").addEventListener("scroll",b=>{this.table.querySelector("dialog[open]")&&(this.table.querySelector("dialog[open]").close(),this.table.querySelector(".dialog__wrapper > button.active").classList.remove("active"))})}static get observedAttributes(){return["data-total","data-page","data-show"]}attributeChangedCallback(e,o,i){switch(this.pagination=this.shadowRoot.querySelector("iam-pagination"),e){case"data-total":{o!=i&&this.pagination.setAttribute("data-total",i);break}case"data-show":{o!=i&&this.pagination.setAttribute("data-show",i);break}case"data-page":{o!=i&&this.pagination.setAttribute("data-page",i);break}}}}export{at as default};
31
+ </style>`)}connectedCallback(){const e=new URLSearchParams(window.location.search);this.hasAttribute("data-total")||this.setAttribute("data-total",this.querySelectorAll("table tbody tr").length),this.hasAttribute("data-page")||this.setAttribute("data-page",e.has("page")?e.get("page"):1),this.hasAttribute("data-show")||this.setAttribute("data-show",e.has("show")?e.get("show"):15),this.hasAttribute("data-increment")||this.setAttribute("data-increment",this.getAttribute("data-show"));let o=this.classList.toString();if(o=o.replace("table--cta",""),o=o.replace("table--loading",""),o=o.replace("mh-md",""),this.shadowRoot.querySelector(".table__wrapper").className+=` ${o}`,this.querySelector(".actionbar__sticky")&&this.shadowRoot.querySelector(".table__wrapper").classList.add("has-actionbar"),this.table=this.querySelector("table"),this.savedTableBody=this.table.querySelector("tbody").cloneNode(!0),this.pagination=this.shadowRoot.querySelector("iam-pagination"),this.pagination.setAttribute("data-total",this.getAttribute("data-total")),this.pagination.setAttribute("data-page",this.getAttribute("data-page")),this.pagination.setAttribute("data-show",this.getAttribute("data-show")),this.pagination.setAttribute("data-increment",this.getAttribute("data-show")),this.hasAttribute("data-page-jump")&&this.pagination.setAttribute("data-page-jump","true"),this.hasAttribute("data-per-page")&&this.pagination.setAttribute("data-per-page","true"),this.hasAttribute("data-item-count")&&this.pagination.setAttribute("data-item-count","true"),this.hasAttribute("data-loading")&&this.pagination.setAttribute("data-loading","true"),this.classList.contains("table--fullwidth")&&this.pagination.setAttribute("data-minimal","true"),this.classList.contains("table--cta")||this.shadowRoot.querySelector(".table--cta").classList.remove("table--cta"),this.form=document.createElement("form"),this.hasAttribute("data-filterby")?this.form=document.querySelector(`#${this.getAttribute("data-filterby")}`):this.table.parentNode.insertBefore(this.form,this.table.nextSibling),this.form.hasAttribute("data-ajax")&&this.table.classList.add("table--ajax"),N(this.table,this.form),this.form.querySelector("[data-pagination]")||(this.form.innerHTML+=`<input name="page" type="hidden" value="${this.getAttribute("data-page")}" data-pagination="true" />`),this.form.querySelector("[data-show]")||(this.form.innerHTML+=`<input name="show" type="hidden" value="${this.getAttribute("data-show")}" data-show="true" />`),K(this.table),V(this.table,this.form,this.pagination,this,this.savedTableBody),Z(this.table,this.form,this.pagination,this),tt(this.shadowRoot.querySelector("[data-export]"),this.table),this.form.getAttribute("data-ajax"))z(this.table,this.form,this.pagination,this);else{let b=function(r=1){return Math.floor(Math.random()*Date.now()*(r+1))};if(this.querySelector("iam-actionbar[data-selectall]")){const r=this.querySelector("iam-actionbar[data-selectall]");Array.from(this.table.querySelectorAll("thead tr")).forEach((n,l)=>{n.insertAdjacentHTML("afterbegin",'<th class="th--fixed"></th>')}),Array.from(this.table.querySelectorAll("tbody tr")).forEach((n,l)=>{let t=`row${b(l)}`;n.insertAdjacentHTML("afterbegin",`<td class="td--fixed selectrow"><input type="checkbox" name="row" id="${t}"/><label for="${t}"><span class="visually-hidden">Select row</span></label></td>`)}),this.table.addEventListener("change",n=>{if(n&&n.target instanceof HTMLElement&&n.target.closest(".selectrow input")){let l=this.table.querySelectorAll('.selectrow input[type="checkbox"]').length,t=this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;r.setAttribute("data-selected",l==t?"all":t)}}),r.addEventListener("selected",n=>{n.detail.selected=="0"?Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((l,t)=>{l.checked=!1}):n.detail.selected=="all"&&Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((l,t)=>{l.checked=!0})})}let d=-1;Array.from(this.table.querySelectorAll("tbody tr")).forEach((r,n)=>{if(r.querySelector(":scope > td > .dialog__wrapper")){let l=r.querySelector(":scope > td > .dialog__wrapper").parentNode;l.classList.add("td--fixed"),d=Array.from(l.parentNode.children).indexOf(l)}}),d!=-1&&(this.table.querySelector(`thead tr th:nth-child(${d+1})`).classList.add("th--fixed"),Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${d+1})`)).forEach((r,n)=>{r.classList.add("td--fixed")})),I(this.table,this.form,this.pagination,this),C(this.table,this.form,this),_(this.table,this.form)}this.shadowRoot.querySelector(".table__wrapper").addEventListener("scroll",b=>{this.table.querySelector("dialog[open]")&&(this.table.querySelector("dialog[open]").close(),this.table.querySelector(".dialog__wrapper > button.active").classList.remove("active"))})}static get observedAttributes(){return["data-total","data-page","data-show"]}attributeChangedCallback(e,o,i){switch(this.pagination=this.shadowRoot.querySelector("iam-pagination"),e){case"data-total":{o!=i&&this.pagination.setAttribute("data-total",i);break}case"data-show":{o!=i&&this.pagination.setAttribute("data-show",i);break}case"data-page":{o!=i&&this.pagination.setAttribute("data-page",i);break}}}}export{at as default};
32
32
  //# sourceMappingURL=table.component.min.js.map