@iamproperty/components 3.7.3 → 3.7.5

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 (104) 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/dialog.css +1 -1
  4. package/assets/css/components/dialog.css.map +1 -1
  5. package/assets/css/components/notification.css +1 -0
  6. package/assets/css/components/notification.css.map +1 -0
  7. package/assets/css/components/table.css +1 -1
  8. package/assets/css/components/table.css.map +1 -1
  9. package/assets/css/components/tooltips.css +1 -1
  10. package/assets/css/components/tooltips.css.map +1 -1
  11. package/assets/css/core.min.css +1 -1
  12. package/assets/css/core.min.css.map +1 -1
  13. package/assets/css/style.min.css +1 -1
  14. package/assets/css/style.min.css.map +1 -1
  15. package/assets/js/bundle.js +3 -0
  16. package/assets/js/components/accordion/accordion.component.js +5 -5
  17. package/assets/js/components/accordion/accordion.component.min.js +6 -5
  18. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  19. package/assets/js/components/applied-filters/applied-filters.component.js +10 -3
  20. package/assets/js/components/applied-filters/applied-filters.component.min.js +5 -5
  21. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  22. package/assets/js/components/card/card.component.js +11 -3
  23. package/assets/js/components/card/card.component.min.js +6 -6
  24. package/assets/js/components/card/card.component.min.js.map +1 -1
  25. package/assets/js/components/filterlist/filterlist.component.js +2 -1
  26. package/assets/js/components/filterlist/filterlist.component.min.js +4 -4
  27. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  28. package/assets/js/components/header/header.component.js +3 -5
  29. package/assets/js/components/header/header.component.min.js +4 -8
  30. package/assets/js/components/header/header.component.min.js.map +1 -1
  31. package/assets/js/components/notification/notification.component.js +71 -0
  32. package/assets/js/components/notification/notification.component.min.js +18 -0
  33. package/assets/js/components/notification/notification.component.min.js.map +1 -0
  34. package/assets/js/components/pagination/pagination.component.js +6 -3
  35. package/assets/js/components/pagination/pagination.component.min.js +12 -10
  36. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  37. package/assets/js/components/table/table.component.js +6 -3
  38. package/assets/js/components/table/table.component.min.js +14 -12
  39. package/assets/js/components/table/table.component.min.js.map +1 -1
  40. package/assets/js/components/tabs/tabs.component.js +2 -1
  41. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  42. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  43. package/assets/js/dynamic.js +3 -0
  44. package/assets/js/dynamic.min.js +14 -2
  45. package/assets/js/dynamic.min.js.map +1 -1
  46. package/assets/js/flat-components.js +6 -0
  47. package/assets/js/modules/dialogs.js +8 -1
  48. package/assets/js/modules/helpers.js +13 -0
  49. package/assets/js/modules/notification.js +53 -0
  50. package/assets/js/modules/table.js +10 -3
  51. package/assets/js/scripts.bundle.js +47 -35
  52. package/assets/js/scripts.bundle.js.map +1 -1
  53. package/assets/js/scripts.bundle.min.js +2 -2
  54. package/assets/js/scripts.bundle.min.js.map +1 -1
  55. package/assets/sass/_components.scss +1 -1
  56. package/assets/sass/_corefiles.scss +1 -0
  57. package/assets/sass/components/card.scss +9 -5
  58. package/assets/sass/components/dialog.scss +52 -14
  59. package/assets/sass/components/notification.scss +195 -0
  60. package/assets/sass/components/table.scss +22 -12
  61. package/assets/sass/components/tooltips.scss +137 -49
  62. package/assets/sass/foundations/buttons.scss +1 -1
  63. package/assets/sass/foundations/reboot.scss +80 -3
  64. package/assets/sass/foundations/root.scss +3 -3
  65. package/assets/ts/bundle.ts +4 -0
  66. package/assets/ts/components/accordion/accordion.component.ts +6 -8
  67. package/assets/ts/components/applied-filters/applied-filters.component.ts +12 -3
  68. package/assets/ts/components/card/card.component.ts +16 -4
  69. package/assets/ts/components/filterlist/filterlist.component.ts +4 -2
  70. package/assets/ts/components/header/header.component.ts +4 -5
  71. package/assets/ts/components/notification/README.md +32 -0
  72. package/assets/ts/components/notification/notification.component.ts +90 -0
  73. package/assets/ts/components/pagination/pagination.component.ts +7 -3
  74. package/assets/ts/components/table/table.component.ts +8 -4
  75. package/assets/ts/components/tabs/tabs.component.ts +3 -1
  76. package/assets/ts/dynamic.ts +6 -0
  77. package/assets/ts/flat-components.ts +8 -0
  78. package/assets/ts/modules/dialogs.ts +11 -4
  79. package/assets/ts/modules/helpers.ts +17 -0
  80. package/assets/ts/modules/notification.ts +76 -0
  81. package/assets/ts/modules/table.ts +13 -4
  82. package/dist/components.es.js +1027 -977
  83. package/dist/components.umd.js +67 -36
  84. package/dist/style.css +1 -1
  85. package/package.json +1 -1
  86. package/src/components/Accordion/Accordion.vue +1 -1
  87. package/src/components/AppliedFilters/AppliedFilters.vue +1 -1
  88. package/src/components/Filterlist/Filterlist.vue +1 -1
  89. package/src/components/Header/Header.vue +9 -5
  90. package/src/components/Notification/Notification.vue +24 -0
  91. package/src/components/Notification/README.md +32 -0
  92. package/src/components/Pagination/Pagination.vue +1 -1
  93. package/src/components/Table/Table.vue +1 -1
  94. package/src/components/Tabs/Tabs.vue +1 -1
  95. package/src/index.js +2 -1
  96. package/assets/css/components/alert.css +0 -1
  97. package/assets/css/components/alert.css.map +0 -1
  98. package/assets/js/modules/alert.js +0 -41
  99. package/assets/sass/components/alert.scss +0 -121
  100. package/assets/ts/modules/alert.ts +0 -58
  101. package/src/components/Alert/Alert.spec.js +0 -49
  102. package/src/components/Alert/Alert.vue +0 -39
  103. package/src/components/Alert/README.md +0 -29
  104. package/src/components/Header/Header.spec.js +0 -34
@@ -11,10 +11,11 @@ class iamFilterlist extends HTMLElement {
11
11
  super();
12
12
  this.attachShadow({ mode: 'open' });
13
13
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
14
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
14
15
  const template = document.createElement('template');
15
16
  template.innerHTML = `
16
17
  <style>
17
- @import "${assetLocation}/css/core.min.css";
18
+ @import "${coreCSS}";
18
19
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
19
20
 
20
21
  :host {
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * iamKey v3.7.3
2
+ * iamKey v3.7.5
3
3
  * Copyright 2022-2023 iamproperty
4
- */function n(s,t){r(s,t)}function r(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.createElement("template");e.innerHTML=`
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
- @import "${t}/css/core.min.css";
6
+ @import "${e}";
7
7
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
8
8
 
9
9
  :host {
@@ -28,5 +28,5 @@
28
28
  <div class="list__wrapper">
29
29
  <slot></slot>
30
30
  </div>
31
- `,this.shadowRoot.appendChild(e.content.cloneNode(!0))}connectedCallback(){let t=this.classList.toString();this.shadowRoot.querySelector(".list__wrapper").setAttribute("class",`list__wrapper ${t}`),this.querySelector("i.fa-search")||(this.innerHTML+='<i class="fa fa-light fa-search" aria-hidden="true" slot="icon"></i>'),n(this.querySelector("ul"),this.shadowRoot.querySelector("#search"))}}export{l as default};
31
+ `,this.shadowRoot.appendChild(a.content.cloneNode(!0))}connectedCallback(){let t=this.classList.toString();this.shadowRoot.querySelector(".list__wrapper").setAttribute("class",`list__wrapper ${t}`),this.querySelector("i.fa-search")||(this.innerHTML+='<i class="fa fa-light fa-search" aria-hidden="true" slot="icon"></i>'),r(this.querySelector("ul"),this.shadowRoot.querySelector("#search"))}}export{l as default};
32
32
  //# sourceMappingURL=filterlist.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterlist.component.min.js","sources":["../../modules/filterlist.js","filterlist.component.js"],"sourcesContent":["// @ts-nocheck\nfunction filterlist(list, input) {\n addFilterlistEventListeners(list, input);\n}\nfunction addFilterlistEventListeners(list, input) {\n var timer;\n input.addEventListener('keyup', (event) => {\n clearTimeout(timer);\n timer = setTimeout(function () {\n filterTheList(list, input.value);\n }, 500);\n });\n input.addEventListener('change', (event) => {\n clearTimeout(timer);\n filterTheList(list, input.value);\n });\n}\nexport const filterTheList = function (list, searchTerm) {\n Array.from(list.querySelectorAll(':scope > li')).forEach((item, index) => {\n let content = item.textContent.toLowerCase();\n item.classList.add('d-none');\n if (content.includes(searchTerm.toLowerCase()))\n item.classList.remove('d-none');\n });\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Filtered list\",\n \"value\": searchTerm\n });\n};\nexport default filterlist;\n","// @ts-nocheck\nimport filterlist from \"../../modules/filterlist.js\";\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"filterlist\"\n});\nclass iamFilterlist 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 template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${assetLocation}/css/core.min.css\";\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n :host {\n margin-bottom: 1rem;\n display:block;\n }\n :host(.mh-sm){\n max-height: none!important;\n }\n :host(.mh-md){\n max-height: none!important;\n }\n :host(.mh-lg){\n max-height: none!important;\n }\n </style>\n <div class=\"form-control__wrapper\">\n <label for=\"search\" class=\"visually-hidden\">Search</label>\n <span class=\"suffix\" role=\"presentation\"><slot name=\"icon\"></slot></span>\n <input name=\"search\" id=\"search\" type=\"text\" class=\"form-control\" autocomplete=\"off\" placeholder=\"Search\" />\n </div>\n <div class=\"list__wrapper\">\n <slot></slot>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n let classList = this.classList.toString();\n this.shadowRoot.querySelector('.list__wrapper').setAttribute('class', `list__wrapper ${classList}`);\n if (!this.querySelector('i.fa-search'))\n this.innerHTML += '<i class=\"fa fa-light fa-search\" aria-hidden=\"true\" slot=\"icon\"></i>';\n filterlist(this.querySelector('ul'), this.shadowRoot.querySelector('#search'));\n }\n}\nexport default iamFilterlist;\n"],"names":["filterlist","list","input","addFilterlistEventListeners","timer","event","filterTheList","searchTerm","item","index","content","iamFilterlist","assetLocation","template","classList"],"mappings":";;;IACA,SAASA,EAAWC,EAAMC,EAAO,CAC7BC,EAA4BF,EAAMC,CAAK,CAC3C,CACA,SAASC,EAA4BF,EAAMC,EAAO,CAC9C,IAAIE,EACJF,EAAM,iBAAiB,QAAUG,GAAU,CACvC,aAAaD,CAAK,EAClBA,EAAQ,WAAW,UAAY,CAC3BE,EAAcL,EAAMC,EAAM,KAAK,CAClC,EAAE,GAAG,CACd,CAAK,EACDA,EAAM,iBAAiB,SAAWG,GAAU,CACxC,aAAaD,CAAK,EAClBE,EAAcL,EAAMC,EAAM,KAAK,CACvC,CAAK,CACL,CACO,MAAMI,EAAgB,SAAUL,EAAMM,EAAY,CACrD,MAAM,KAAKN,EAAK,iBAAiB,aAAa,CAAC,EAAE,QAAQ,CAACO,EAAMC,IAAU,CACtE,IAAIC,EAAUF,EAAK,YAAY,YAAW,EAC1CA,EAAK,UAAU,IAAI,QAAQ,EACvBE,EAAQ,SAASH,EAAW,YAAW,CAAE,GACzCC,EAAK,UAAU,OAAO,QAAQ,CAC1C,CAAK,EAED,OAAO,UAAY,OAAO,WAAa,CAAA,EACvC,OAAO,UAAU,KAAK,CAClB,MAAS,gBACT,MAASD,CACjB,CAAK,CACL,EC3BA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,YACf,CAAC,EACD,MAAMI,UAAsB,WAAY,CACpC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA,MACT,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAyBpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,IAAIC,EAAY,KAAK,UAAU,SAAQ,EACvC,KAAK,WAAW,cAAc,gBAAgB,EAAE,aAAa,QAAS,iBAAiBA,GAAW,EAC7F,KAAK,cAAc,aAAa,IACjC,KAAK,WAAa,wEACtBd,EAAW,KAAK,cAAc,IAAI,EAAG,KAAK,WAAW,cAAc,SAAS,CAAC,CAChF,CACL"}
1
+ {"version":3,"file":"filterlist.component.min.js","sources":["../../modules/filterlist.js","filterlist.component.js"],"sourcesContent":["// @ts-nocheck\nfunction filterlist(list, input) {\n addFilterlistEventListeners(list, input);\n}\nfunction addFilterlistEventListeners(list, input) {\n var timer;\n input.addEventListener('keyup', (event) => {\n clearTimeout(timer);\n timer = setTimeout(function () {\n filterTheList(list, input.value);\n }, 500);\n });\n input.addEventListener('change', (event) => {\n clearTimeout(timer);\n filterTheList(list, input.value);\n });\n}\nexport const filterTheList = function (list, searchTerm) {\n Array.from(list.querySelectorAll(':scope > li')).forEach((item, index) => {\n let content = item.textContent.toLowerCase();\n item.classList.add('d-none');\n if (content.includes(searchTerm.toLowerCase()))\n item.classList.remove('d-none');\n });\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Filtered list\",\n \"value\": searchTerm\n });\n};\nexport default filterlist;\n","// @ts-nocheck\nimport filterlist from \"../../modules/filterlist.js\";\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"filterlist\"\n});\nclass iamFilterlist 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 ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n :host {\n margin-bottom: 1rem;\n display:block;\n }\n :host(.mh-sm){\n max-height: none!important;\n }\n :host(.mh-md){\n max-height: none!important;\n }\n :host(.mh-lg){\n max-height: none!important;\n }\n </style>\n <div class=\"form-control__wrapper\">\n <label for=\"search\" class=\"visually-hidden\">Search</label>\n <span class=\"suffix\" role=\"presentation\"><slot name=\"icon\"></slot></span>\n <input name=\"search\" id=\"search\" type=\"text\" class=\"form-control\" autocomplete=\"off\" placeholder=\"Search\" />\n </div>\n <div class=\"list__wrapper\">\n <slot></slot>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n let classList = this.classList.toString();\n this.shadowRoot.querySelector('.list__wrapper').setAttribute('class', `list__wrapper ${classList}`);\n if (!this.querySelector('i.fa-search'))\n this.innerHTML += '<i class=\"fa fa-light fa-search\" aria-hidden=\"true\" slot=\"icon\"></i>';\n filterlist(this.querySelector('ul'), this.shadowRoot.querySelector('#search'));\n }\n}\nexport default iamFilterlist;\n"],"names":["filterlist","list","input","addFilterlistEventListeners","timer","event","filterTheList","searchTerm","item","index","content","iamFilterlist","assetLocation","coreCSS","template","classList"],"mappings":";;;IACA,SAASA,EAAWC,EAAMC,EAAO,CAC7BC,EAA4BF,EAAMC,CAAK,CAC3C,CACA,SAASC,EAA4BF,EAAMC,EAAO,CAC9C,IAAIE,EACJF,EAAM,iBAAiB,QAAUG,GAAU,CACvC,aAAaD,CAAK,EAClBA,EAAQ,WAAW,UAAY,CAC3BE,EAAcL,EAAMC,EAAM,KAAK,CAClC,EAAE,GAAG,CACd,CAAK,EACDA,EAAM,iBAAiB,SAAWG,GAAU,CACxC,aAAaD,CAAK,EAClBE,EAAcL,EAAMC,EAAM,KAAK,CACvC,CAAK,CACL,CACO,MAAMI,EAAgB,SAAUL,EAAMM,EAAY,CACrD,MAAM,KAAKN,EAAK,iBAAiB,aAAa,CAAC,EAAE,QAAQ,CAACO,EAAMC,IAAU,CACtE,IAAIC,EAAUF,EAAK,YAAY,YAAW,EAC1CA,EAAK,UAAU,IAAI,QAAQ,EACvBE,EAAQ,SAASH,EAAW,YAAW,CAAE,GACzCC,EAAK,UAAU,OAAO,QAAQ,CAC1C,CAAK,EAED,OAAO,UAAY,OAAO,WAAa,CAAA,EACvC,OAAO,UAAU,KAAK,CAClB,MAAS,gBACT,MAASD,CACjB,CAAK,CACL,EC3BA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,YACf,CAAC,EACD,MAAMI,UAAsB,WAAY,CACpC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBACzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA,MACT,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAyBpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,IAAIC,EAAY,KAAK,UAAU,SAAQ,EACvC,KAAK,WAAW,cAAc,gBAAgB,EAAE,aAAa,QAAS,iBAAiBA,GAAW,EAC7F,KAAK,cAAc,aAAa,IACjC,KAAK,WAAa,wEACtBf,EAAW,KAAK,cAAc,IAAI,EAAG,KAAK,WAAW,cAAc,SAAS,CAAC,CAChF,CACL"}
@@ -10,17 +10,14 @@ class iamHeader extends HTMLElement {
10
10
  super();
11
11
  this.attachShadow({ mode: 'open' });
12
12
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
13
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
13
14
  const loadCSS = `@import "${assetLocation}/css/components/header.css";`;
14
15
  const template = document.createElement('template');
15
16
  template.innerHTML = `
16
17
  <style>
17
- @import "${assetLocation}/css/core.min.css";
18
+ @import "${coreCSS}";
18
19
  ${loadCSS}
19
20
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
20
- :host {
21
- max-width:100%!important;
22
- padding:0!important;
23
- }
24
21
  </style>
25
22
  <div class="header-banner">
26
23
  <div class="container" part="container">
@@ -40,6 +37,7 @@ class iamHeader extends HTMLElement {
40
37
  this.shadowRoot.appendChild(template.content.cloneNode(true));
41
38
  }
42
39
  connectedCallback() {
40
+ this.classList.add('loaded');
43
41
  const picture = this.shadowRoot.querySelector('picture');
44
42
  const source = this.shadowRoot.querySelector('picture source');
45
43
  if (this.hasAttribute('image'))
@@ -1,16 +1,12 @@
1
1
  /*!
2
- * iamKey v3.7.3
2
+ * iamKey v3.7.5
3
3
  * Copyright 2022-2023 iamproperty
4
- */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"header"});class o extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const r=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.createElement("template");e.innerHTML=`
4
+ */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"header"});class t extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",r=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,o=document.createElement("template");o.innerHTML=`
5
5
  <style>
6
- @import "${r}/css/core.min.css";
6
+ @import "${r}";
7
7
  .header-banner{background:linear-gradient(180deg, var(--colour-secondary) 0, var(--colour-info) 100%);margin-bottom:2rem;position:relative;overflow:hidden;max-width:100% !important}@media screen and (min-width: 62em){.header-banner{min-height:29.375rem}}.header-banner>.container{padding-bottom:0;position:relative}.header-banner .breadcrumb{margin-top:1.5rem;margin-bottom:-0.5rem}@media screen and (min-width: 62em){.header-banner .breadcrumb{position:absolute;top:0;left:3.75rem}}.header-banner__inner{--colour-muted: #9d9d9d;--colour-body: #595959;--colour-border: #D8D8D8;--colour-link: var(--colour-primary-theme);--colour-brand: var(--colour-primary);--colour-underline: var(--colour-secondary);--colour-heading: var(--colour-primary);--colour-focus: var(--colour-primary-theme);--colour-hover: var(--colour-primary-theme);--colour-active: var(--colour-primary-theme);--colour-selected: var(--colour-info);--colour-inverted: #FCFCFC;--colour-btn: var(--colour-primary-theme);--colour-btn-bg: var(--colour-warning);--colour-btn-border: var(--colour-warning);--colour-btn-bg-hover: transparent;--colour-btn-hover: var(--colour-primary-theme);--colour-btn-secondary: var(--colour-primary-theme);--colour-btn-secondary-border: var(--colour-primary-theme);--colour-btn-secondary-bg: transparent;--colour-btn-secondary-bg-hover: var(--colour-primary-theme);--colour-btn-secondary-hover: var(--colour-inverted);--colour-canvas-2: var(--colour-canvas);color:var(--colour-body);background:#fff;padding:2rem;margin:1.875rem 0;position:relative;z-index:var(--index-above)}.header-banner__inner .text-primary{color:var(--colour-primary) !important}@media screen and (min-width: 62em){.header-banner__inner{max-width:37.5rem;margin:7rem 0 5rem 0;padding:3.5rem 4rem}}.header-banner__inner>*:last-child{padding-bottom:0;margin-bottom:0}.header-banner picture img{display:none}@media screen and (min-width: 62em){.header-banner picture img{display:block;position:absolute;top:-0.5%;left:40%;height:101%;object-fit:cover;width:60%;pointer-events:none}}::slotted(.breadcrumb){margin-top:1.5rem !important;margin-bottom:-0.5rem !important}@media screen and (min-width: 62em){::slotted(.breadcrumb){position:absolute !important;top:0 !important;left:5.25rem !important}}::slotted(*:last-child){padding-bottom:0 !important;margin-bottom:0 !important}/*# sourceMappingURL=assets/css/components/header.css.map */
8
8
 
9
9
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
10
- :host {
11
- max-width:100%!important;
12
- padding:0!important;
13
- }
14
10
  </style>
15
11
  <div class="header-banner">
16
12
  <div class="container" part="container">
@@ -26,5 +22,5 @@
26
22
  <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" lazy="" />
27
23
  </picture>
28
24
  </div>
29
- `,this.shadowRoot.appendChild(e.content.cloneNode(!0))}connectedCallback(){const r=this.shadowRoot.querySelector("picture"),e=this.shadowRoot.querySelector("picture source");this.hasAttribute("image")?e.setAttribute("srcset",this.getAttribute("image")):r.remove()}}export{o as default};
25
+ `,this.shadowRoot.appendChild(o.content.cloneNode(!0))}connectedCallback(){this.classList.add("loaded");const e=this.shadowRoot.querySelector("picture"),r=this.shadowRoot.querySelector("picture source");this.hasAttribute("image")?r.setAttribute("srcset",this.getAttribute("image")):e.remove()}}export{t as default};
30
26
  //# sourceMappingURL=header.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.component.min.js","sources":["header.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"header\"\n});\nclass iamHeader extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/header.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${assetLocation}/css/core.min.css\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n :host {\n max-width:100%!important;\n padding:0!important;\n }\n </style>\n <div class=\"header-banner\">\n <div class=\"container\" part=\"container\">\n <slot name=\"breadcrumb\"></slot>\n <div class=\"header-banner__inner\">\n <slot></slot>\n </div>\n </div>\n <picture>\n <!-- Actual image only loaded on desktops -->\n <source srcset=\"\" media=\"(min-width: 62em)\">\n <!-- Placeholder image -->\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"\" lazy=\"\" />\n </picture>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const picture = this.shadowRoot.querySelector('picture');\n const source = this.shadowRoot.querySelector('picture source');\n if (this.hasAttribute('image'))\n source.setAttribute('srcset', this.getAttribute('image'));\n else\n picture.remove();\n }\n}\nexport default iamHeader;\n"],"names":["iamHeader","assetLocation","template","picture","source"],"mappings":";;;IAEA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,QACf,CAAC,EACD,MAAMA,UAAkB,WAAY,CAChC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAE1HC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAqBpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,MAAMC,EAAU,KAAK,WAAW,cAAc,SAAS,EACjDC,EAAS,KAAK,WAAW,cAAc,gBAAgB,EACzD,KAAK,aAAa,OAAO,EACzBA,EAAO,aAAa,SAAU,KAAK,aAAa,OAAO,CAAC,EAExDD,EAAQ,OAAM,CACrB,CACL"}
1
+ {"version":3,"file":"header.component.min.js","sources":["header.component.js"],"sourcesContent":["// @ts-nocheck\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"header\"\n});\nclass iamHeader extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/header.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"header-banner\">\n <div class=\"container\" part=\"container\">\n <slot name=\"breadcrumb\"></slot>\n <div class=\"header-banner__inner\">\n <slot></slot>\n </div>\n </div>\n <picture>\n <!-- Actual image only loaded on desktops -->\n <source srcset=\"\" media=\"(min-width: 62em)\">\n <!-- Placeholder image -->\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"\" lazy=\"\" />\n </picture>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n this.classList.add('loaded');\n const picture = this.shadowRoot.querySelector('picture');\n const source = this.shadowRoot.querySelector('picture source');\n if (this.hasAttribute('image'))\n source.setAttribute('srcset', this.getAttribute('image'));\n else\n picture.remove();\n }\n}\nexport default iamHeader;\n"],"names":["iamHeader","assetLocation","coreCSS","template","picture","source"],"mappings":";;;IAEA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,QACf,CAAC,EACD,MAAMA,UAAkB,WAAY,CAChC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBAEzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,KAAK,UAAU,IAAI,QAAQ,EAC3B,MAAMC,EAAU,KAAK,WAAW,cAAc,SAAS,EACjDC,EAAS,KAAK,WAAW,cAAc,gBAAgB,EACzD,KAAK,aAAa,OAAO,EACzBA,EAAO,aAAa,SAAU,KAAK,aAAa,OAAO,CAAC,EAExDD,EAAQ,OAAM,CACrB,CACL"}
@@ -0,0 +1,71 @@
1
+ // @ts-nocheck
2
+ import setupNotification, { closeNotification } from "../../modules/notification.js";
3
+ // Data layer Web component created
4
+ window.dataLayer = window.dataLayer || [];
5
+ window.dataLayer.push({
6
+ "event": "customElementRegistered",
7
+ "element": "Notification"
8
+ });
9
+ class iamNotification extends HTMLElement {
10
+ constructor() {
11
+ super();
12
+ this.attachShadow({ mode: 'open' });
13
+ const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
14
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
15
+ const loadCSS = `@import "${assetLocation}/css/components/notification.css";`;
16
+ const buttons = this.querySelectorAll('a,button');
17
+ Array.from(buttons).forEach((button, index) => {
18
+ button.setAttribute('slot', 'btns');
19
+ button.classList.add('link');
20
+ });
21
+ if (buttons.length || this.hasAttribute('data-dismiss'))
22
+ this.classList.add('notification--dismissable');
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>
26
+ @import "${coreCSS}";
27
+ ${loadCSS}
28
+ ${this.hasAttribute('data-css') ? `${this.getAttribute('data-css')}` : ``}
29
+ </style>
30
+
31
+ <div class="notification">
32
+ <div class="notification__icon"><slot name="icon"></slot></div>
33
+ <div class="notification__inner"><div class="notification__text"><slot></slot></div>${buttons.length ? `<div class="notification__btns"><slot name="btns"></slot></div>` : ''}</div>
34
+ ${this.hasAttribute('data-dismiss') ? `<div class="notification__dismiss"><button data-dismiss-button>Dismiss</button></div>` : ''}
35
+ </div>
36
+ `;
37
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
38
+ }
39
+ connectedCallback() {
40
+ const dismissBtn = this.shadowRoot.querySelector('[data-dismiss-button]');
41
+ const statusBG = this.hasAttribute('data-status') ? this.getAttribute('data-status') : 'white';
42
+ if (this.hasAttribute('data-type'))
43
+ this.classList.add(`bg-${statusBG}`);
44
+ else {
45
+ this.classList.add(`colour-${statusBG}`);
46
+ }
47
+ const wrapper = this;
48
+ if (!this.querySelector('i')) {
49
+ switch (statusBG) {
50
+ case 'danger':
51
+ this.innerHTML += '<i class="fa-solid fa-circle-exclamation" aria-hidden="true" slot="icon"></i>';
52
+ break;
53
+ case 'warning':
54
+ this.innerHTML += '<i class="fa-solid fa-triangle-exclamation" aria-hidden="true" slot="icon"></i>';
55
+ break;
56
+ case 'success':
57
+ this.innerHTML += '<i class="fa-solid fa-check-circle" aria-hidden="true" slot="icon"></i>';
58
+ break;
59
+ default:
60
+ this.innerHTML += '<i class="fa-solid fa-circle-info" aria-hidden="true" slot="icon"></i>';
61
+ }
62
+ }
63
+ setupNotification(wrapper);
64
+ if (dismissBtn) {
65
+ dismissBtn.addEventListener('click', function (e) {
66
+ closeNotification(wrapper);
67
+ }, false);
68
+ }
69
+ }
70
+ }
71
+ export default iamNotification;
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * iamKey v3.7.5
3
+ * Copyright 2022-2023 iamproperty
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(),n(i))},!1),i.hasAttribute("data-timeout")){let t=i.getAttribute("data-timeout");var a=new c(function(){n(i)},t);i.addEventListener("mouseenter",o=>{a.pause()}),i.addEventListener("mouseleave",o=>{a.resume()})}}function c(i,a){var t,o,e=a;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 n=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 a=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"):`${a}/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
+ <style>
6
+ @import "${t}";
7
+ :host,.iam-notification{display:block;padding:1.375rem 1.5rem 1.375rem 1rem !important;border-radius:0.5rem;box-shadow:2px 6px 12px rgba(0,0,0,.2);margin-bottom:1rem;font-size:0.9375rem;border:0.125rem solid var(--colour, var(--colour-info));background:#e9f9fd;outline:var(--contrast-outline-width, 0px) solid var(--colour-primary)}:host ::slotted(i),:host i,.iam-notification ::slotted(i),.iam-notification i{color:var(--colour, currentColor)}:host([data-type]),.iam-notification[data-type]{border:0.125rem solid rgba(0,0,0,0)}:host(.colour-warning),.iam-notification.colour-warning{background:#fff6e6}:host(.colour-danger),.iam-notification.colour-danger{background:#fcebec}:host(.colour-success),.iam-notification.colour-success{background:#f8fdf6}:host(.bg-white),.iam-notification.bg-white{border:none;border-left:0.5rem solid var(--colour-info)}:host(.bg-white) ::slotted(i),:host(.bg-white) i,.iam-notification.bg-white ::slotted(i),.iam-notification.bg-white i{color:var(--colour-info)}:host([data-type=alert]),.iam-notification[data-type=alert]{border-radius:0;position:fixed;top:var(--nav-height);left:0;right:0;z-index:calc(var(--index-menu) - 1);margin-bottom:0}:host([data-type=toast]),.iam-notification[data-type=toast]{margin:auto;display:block;width:100%;max-width:22.5rem}:host([data-type=toast].notification--dismissable){max-width:28.375rem}.notification{container-type:inline-size;max-width:69.5rem;margin-inline:auto;display:flex;flex-wrap:nowrap}@media screen and (prefers-color-scheme: light){.notification{color:var(--colour-heading)}}.notification .notification__icon{margin-inline-end:1rem;flex-grow:0}.notification .notification__icon ::slotted(i){font-size:1.125rem}.notification .notification__inner{display:flex;flex-wrap:wrap;flex-grow:1}@container (width > 23.4375em){.notification .notification__inner{flex-wrap:nowrap}}.notification .notification__text{flex-grow:1;flex-shrink:1;width:100%}.notification .notification__btns{flex-grow:0;flex-shrink:0;--colour-underline: currentColor}.notification .notification__btns ::slotted(a),.notification .notification__btns ::slotted(button),.notification .notification__btns>*{margin:1rem 1rem 0 0 !important}@container (width > 23.4375em){.notification .notification__btns{display:flex;align-items:center;border-left:1px solid currentColor;margin-left:2rem}.notification .notification__btns ::slotted(a),.notification .notification__btns ::slotted(button),.notification .notification__btns>*{margin:0 0 0 2rem !important}}.notification .notification__dismiss{flex-grow:0;padding-left:1rem}.notification .notification__dismiss button{text-indent:300%;overflow:hidden;border:none;height:1.125rem;width:1.125rem;background:rgba(0,0,0,0);display:inline-block;position:relative;color:inherit}.notification .notification__dismiss button:after{content:"";top:0;left:0;position:absolute;display:block;height:1.125rem;width:1.125rem;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-close);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}@container (width > 23.4375em){.notification .notification__dismiss{padding-left:2rem;display:flex;align-items:center}}/*# sourceMappingURL=assets/css/components/notification.css.map */
8
+
9
+ ${this.hasAttribute("data-css")?`${this.getAttribute("data-css")}`:""}
10
+ </style>
11
+
12
+ <div class="notification">
13
+ <div class="notification__icon"><slot name="icon"></slot></div>
14
+ <div class="notification__inner"><div class="notification__text"><slot></slot></div>${o.length?'<div class="notification__btns"><slot name="btns"></slot></div>':""}</div>
15
+ ${this.hasAttribute("data-dismiss")?'<div class="notification__dismiss"><button data-dismiss-button>Dismiss</button></div>':""}
16
+ </div>
17
+ `,this.shadowRoot.appendChild(e.content.cloneNode(!0))}connectedCallback(){const a=this.shadowRoot.querySelector("[data-dismiss-button]"),t=this.hasAttribute("data-status")?this.getAttribute("data-status"):"white";this.hasAttribute("data-type")?this.classList.add(`bg-${t}`):this.classList.add(`colour-${t}`);const o=this;if(!this.querySelector("i"))switch(t){case"danger":this.innerHTML+='<i class="fa-solid fa-circle-exclamation" aria-hidden="true" slot="icon"></i>';break;case"warning":this.innerHTML+='<i class="fa-solid fa-triangle-exclamation" aria-hidden="true" slot="icon"></i>';break;case"success":this.innerHTML+='<i class="fa-solid fa-check-circle" aria-hidden="true" slot="icon"></i>';break;default:this.innerHTML+='<i class="fa-solid fa-circle-info" aria-hidden="true" slot="icon"></i>'}r(o),a&&a.addEventListener("click",function(e){n(o)},!1)}}export{d as default};
18
+ //# sourceMappingURL=notification.component.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.component.min.js","sources":["../../modules/notification.js","notification.component.js"],"sourcesContent":["// @ts-nocheck\nfunction setupNotification(element) {\n // Add toast to notification holder\n if (element.hasAttribute('data-type') && element.getAttribute('data-type') == \"toast\") {\n let holder = document.querySelector('.notification__holder');\n if (!holder) {\n holder = document.createElement('div');\n holder.classList.add('notification__holder');\n holder.classList.add('container');\n document.querySelector('body').appendChild(holder);\n }\n if (!element.closest('.notification__holder'))\n holder.appendChild(element);\n }\n element.setAttribute('role', 'alert');\n // Create a dissmissable button\n element.addEventListener('click', function (e) {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-dismiss-button]')) {\n e.preventDefault();\n closeNotification(element);\n }\n }, false);\n // Self disappearing alert\n if (element.hasAttribute('data-timeout')) {\n let timeOut = element.getAttribute('data-timeout');\n var timer = new Timer(function () {\n closeNotification(element);\n }, timeOut);\n element.addEventListener(\"mouseenter\", (event) => {\n timer.pause();\n });\n element.addEventListener(\"mouseleave\", (event) => {\n timer.resume();\n });\n }\n}\nfunction Timer(callback, delay) {\n var timerId, start, remaining = delay;\n this.pause = function () {\n window.clearTimeout(timerId);\n remaining -= new Date() - start;\n };\n this.resume = function () {\n start = new Date();\n window.clearTimeout(timerId);\n timerId = window.setTimeout(callback, remaining);\n };\n this.resume();\n}\nexport const closeNotification = function (element) {\n element.classList.add('d-none');\n};\nexport default setupNotification;\n","// @ts-nocheck\nimport setupNotification, { closeNotification } from \"../../modules/notification.js\";\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n \"event\": \"customElementRegistered\",\n \"element\": \"Notification\"\n});\nclass iamNotification extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/notification.css\";`;\n const buttons = this.querySelectorAll('a,button');\n Array.from(buttons).forEach((button, index) => {\n button.setAttribute('slot', 'btns');\n button.classList.add('link');\n });\n if (buttons.length || this.hasAttribute('data-dismiss'))\n this.classList.add('notification--dismissable');\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n ${this.hasAttribute('data-css') ? `${this.getAttribute('data-css')}` : ``}\n </style>\n\n <div class=\"notification\">\n <div class=\"notification__icon\"><slot name=\"icon\"></slot></div>\n <div class=\"notification__inner\"><div class=\"notification__text\"><slot></slot></div>${buttons.length ? `<div class=\"notification__btns\"><slot name=\"btns\"></slot></div>` : ''}</div>\n ${this.hasAttribute('data-dismiss') ? `<div class=\"notification__dismiss\"><button data-dismiss-button>Dismiss</button></div>` : ''}\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const dismissBtn = this.shadowRoot.querySelector('[data-dismiss-button]');\n const statusBG = this.hasAttribute('data-status') ? this.getAttribute('data-status') : 'white';\n if (this.hasAttribute('data-type'))\n this.classList.add(`bg-${statusBG}`);\n else {\n this.classList.add(`colour-${statusBG}`);\n }\n const wrapper = this;\n if (!this.querySelector('i')) {\n switch (statusBG) {\n case 'danger':\n this.innerHTML += '<i class=\"fa-solid fa-circle-exclamation\" aria-hidden=\"true\" slot=\"icon\"></i>';\n break;\n case 'warning':\n this.innerHTML += '<i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\" slot=\"icon\"></i>';\n break;\n case 'success':\n this.innerHTML += '<i class=\"fa-solid fa-check-circle\" aria-hidden=\"true\" slot=\"icon\"></i>';\n break;\n default:\n this.innerHTML += '<i class=\"fa-solid fa-circle-info\" aria-hidden=\"true\" slot=\"icon\"></i>';\n }\n }\n setupNotification(wrapper);\n if (dismissBtn) {\n dismissBtn.addEventListener('click', function (e) {\n closeNotification(wrapper);\n }, false);\n }\n }\n}\nexport default iamNotification;\n"],"names":["setupNotification","element","holder","e","closeNotification","timeOut","timer","Timer","event","callback","delay","timerId","start","remaining","iamNotification","assetLocation","coreCSS","buttons","button","index","template","dismissBtn","statusBG","wrapper"],"mappings":";;;IACA,SAASA,EAAkBC,EAAS,CAEhC,GAAIA,EAAQ,aAAa,WAAW,GAAKA,EAAQ,aAAa,WAAW,GAAK,QAAS,CACnF,IAAIC,EAAS,SAAS,cAAc,uBAAuB,EACtDA,IACDA,EAAS,SAAS,cAAc,KAAK,EACrCA,EAAO,UAAU,IAAI,sBAAsB,EAC3CA,EAAO,UAAU,IAAI,WAAW,EAChC,SAAS,cAAc,MAAM,EAAE,YAAYA,CAAM,GAEhDD,EAAQ,QAAQ,uBAAuB,GACxCC,EAAO,YAAYD,CAAO,EAWlC,GATAA,EAAQ,aAAa,OAAQ,OAAO,EAEpCA,EAAQ,iBAAiB,QAAS,SAAUE,EAAG,CACvC,OAAS,MAAM,kBAAkB,aAAe,MAAM,OAAO,QAAQ,uBAAuB,IAC5FA,EAAE,eAAc,EAChBC,EAAkBH,CAAO,EAEhC,EAAE,EAAK,EAEJA,EAAQ,aAAa,cAAc,EAAG,CACtC,IAAII,EAAUJ,EAAQ,aAAa,cAAc,EACjD,IAAIK,EAAQ,IAAIC,EAAM,UAAY,CAC9BH,EAAkBH,CAAO,CAC5B,EAAEI,CAAO,EACVJ,EAAQ,iBAAiB,aAAeO,GAAU,CAC9CF,EAAM,MAAK,CACvB,CAAS,EACDL,EAAQ,iBAAiB,aAAeO,GAAU,CAC9CF,EAAM,OAAM,CACxB,CAAS,EAET,CACA,SAASC,EAAME,EAAUC,EAAO,CAC5B,IAAIC,EAASC,EAAOC,EAAYH,EAChC,KAAK,MAAQ,UAAY,CACrB,OAAO,aAAaC,CAAO,EAC3BE,GAAa,IAAI,KAASD,CAClC,EACI,KAAK,OAAS,UAAY,CACtBA,EAAQ,IAAI,KACZ,OAAO,aAAaD,CAAO,EAC3BA,EAAU,OAAO,WAAWF,EAAUI,CAAS,CACvD,EACI,KAAK,OAAM,CACf,CACO,MAAMT,EAAoB,SAAUH,EAAS,CAChDA,EAAQ,UAAU,IAAI,QAAQ,CAClC,EChDA,OAAO,UAAY,OAAO,WAAa,GACvC,OAAO,UAAU,KAAK,CAClB,MAAS,0BACT,QAAW,cACf,CAAC,EACD,MAAMa,UAAwB,WAAY,CACtC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBAEzGE,EAAU,KAAK,iBAAiB,UAAU,EAChD,MAAM,KAAKA,CAAO,EAAE,QAAQ,CAACC,EAAQC,IAAU,CAC3CD,EAAO,aAAa,OAAQ,MAAM,EAClCA,EAAO,UAAU,IAAI,MAAM,CACvC,CAAS,GACGD,EAAQ,QAAU,KAAK,aAAa,cAAc,IAClD,KAAK,UAAU,IAAI,2BAA2B,EAClD,MAAMG,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdJ;AAAA;AAAA;AAAA,MAET,KAAK,aAAa,UAAU,EAAI,GAAG,KAAK,aAAa,UAAU,IAAM;AAAA;AAAA;AAAA;AAAA;AAAA,4FAKiBC,EAAQ,OAAS,kEAAoE;AAAA,QACzK,KAAK,aAAa,cAAc,EAAI,wFAA0F;AAAA;AAAA,MAG9H,KAAK,WAAW,YAAYG,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAChB,MAAMC,EAAa,KAAK,WAAW,cAAc,uBAAuB,EAClEC,EAAW,KAAK,aAAa,aAAa,EAAI,KAAK,aAAa,aAAa,EAAI,QACnF,KAAK,aAAa,WAAW,EAC7B,KAAK,UAAU,IAAI,MAAMA,GAAU,EAEnC,KAAK,UAAU,IAAI,UAAUA,GAAU,EAE3C,MAAMC,EAAU,KAChB,GAAI,CAAC,KAAK,cAAc,GAAG,EACvB,OAAQD,EAAQ,CACZ,IAAK,SACD,KAAK,WAAa,gFAClB,MACJ,IAAK,UACD,KAAK,WAAa,kFAClB,MACJ,IAAK,UACD,KAAK,WAAa,0EAClB,MACJ,QACI,KAAK,WAAa,wEACzB,CAELtB,EAAkBuB,CAAO,EACrBF,GACAA,EAAW,iBAAiB,QAAS,SAAU,EAAG,CAC9CjB,EAAkBmB,CAAO,CAC5B,EAAE,EAAK,CAEf,CACL"}
@@ -5,15 +5,20 @@ class iamPagination extends HTMLElement {
5
5
  super();
6
6
  this.attachShadow({ mode: 'open' });
7
7
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
8
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
8
9
  const template = document.createElement('template');
9
10
  template.innerHTML = `
10
11
  <style>
11
- @import "${assetLocation}/css/core.min.css";
12
+ @import "${coreCSS}";
13
+
14
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
12
15
  </style>
13
16
  <div class="pagination__wrapper d-none">
14
17
  </div>
15
18
  `;
16
19
  this.shadowRoot.appendChild(template.content.cloneNode(true));
20
+ }
21
+ connectedCallback() {
17
22
  // Set default attributes
18
23
  const params = new URLSearchParams(window.location.search);
19
24
  if (!this.hasAttribute('data-total'))
@@ -26,8 +31,6 @@ class iamPagination extends HTMLElement {
26
31
  this.setAttribute('data-increment', 15);
27
32
  this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));
28
33
  createPaginationButttons(this, this.shadowRoot.querySelector('.pagination__wrapper'));
29
- }
30
- connectedCallback() {
31
34
  this.shadowRoot.querySelector('.pagination__wrapper').classList.remove('d-none');
32
35
  }
33
36
  }
@@ -1,18 +1,20 @@
1
1
  /*!
2
- * iamKey v3.7.3
2
+ * iamKey v3.7.5
3
3
  * Copyright 2022-2023 iamproperty
4
- */const p=function(a,i){if(!a.getAttribute("data-pages"))return!1;a.getAttribute("data-page")||a.setAttribute("data-page",1);let t=a.getAttribute("data-page"),e=a.getAttribute("data-pages"),o=a.getAttribute("data-total"),n=a.getAttribute("data-show"),l=a.getAttribute("data-increment");if(e<=1)return i.innerHTML="",!1;let r="";for(let s=1;s<=e;s++)s==t?r+=`<li class="page-item active" aria-current="page"><span class="page-link">${s}</span></li>`:r+=`<li class="page-item"><a href="?page=${s}" class="page-link" data-page="${s}">${s}</a></li>`;return i.innerHTML=`<ul class="pagination mb-0 d-none d-sm-flex">
5
- ${t==1?'<li class="page-item disabled"><span class="page-link">Previous</span></li>':`<li class="page-item"><a href="?page=${parseInt(t)-1}" class="page-link" data-page="${parseInt(t)-1}">Previous</a></li>`}
4
+ */const l=function(e,t){if(!e.getAttribute("data-pages"))return!1;e.getAttribute("data-page")||e.setAttribute("data-page",1);let a=e.getAttribute("data-page"),i=e.getAttribute("data-pages"),d=e.getAttribute("data-total"),n=e.getAttribute("data-show"),o=e.getAttribute("data-increment");if(i<=1)return t.innerHTML="",!1;let r="";for(let s=1;s<=i;s++)s==a?r+=`<li class="page-item active" aria-current="page"><span class="page-link">${s}</span></li>`:r+=`<li class="page-item"><a href="?page=${s}" class="page-link" data-page="${s}">${s}</a></li>`;return t.innerHTML=`<ul class="pagination mb-0 d-none d-sm-flex">
5
+ ${a==1?'<li class="page-item disabled"><span class="page-link">Previous</span></li>':`<li class="page-item"><a href="?page=${parseInt(a)-1}" class="page-link" data-page="${parseInt(a)-1}">Previous</a></li>`}
6
6
  ${r}
7
- ${t==e?'<li class="page-item disabled"><span class="page-link">Next</span></li>':`<li class="page-item"><a href="?page=${parseInt(t)+1}" class="page-link" data-page="${parseInt(t)+1}">Next</a></li>`}
8
- </ul>`,i.innerHTML+=`<div class="d-sm-none text-center">
9
- <span class="d-block pb-2">You've viewed ${n} of ${o} results</span>
10
- <a href="?show=${parseInt(n)+parseInt(l)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(n)+parseInt(l)}">Load more results</a>
11
- </div>`,!0};class d 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.createElement("template");t.innerHTML=`
7
+ ${a==i?'<li class="page-item disabled"><span class="page-link">Next</span></li>':`<li class="page-item"><a href="?page=${parseInt(a)+1}" class="page-link" data-page="${parseInt(a)+1}">Next</a></li>`}
8
+ </ul>`,t.innerHTML+=`<div class="d-sm-none text-center">
9
+ <span class="d-block pb-2">You've viewed ${n} of ${d} results</span>
10
+ <a href="?show=${parseInt(n)+parseInt(o)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(n)+parseInt(o)}">Load more results</a>
11
+ </div>`,!0};class p extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const t=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"):`${t}/css/core.min.css`,i=document.createElement("template");i.innerHTML=`
12
12
  <style>
13
- @import "${i}/css/core.min.css";
13
+ @import "${a}";
14
+
15
+ ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
14
16
  </style>
15
17
  <div class="pagination__wrapper d-none">
16
18
  </div>
17
- `,this.shadowRoot.appendChild(t.content.cloneNode(!0));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",15),this.setAttribute("data-pages",Math.ceil(this.getAttribute("data-total")/this.getAttribute("data-show"))),p(this,this.shadowRoot.querySelector(".pagination__wrapper"))}connectedCallback(){this.shadowRoot.querySelector(".pagination__wrapper").classList.remove("d-none")}}export{d as default};
19
+ `,this.shadowRoot.appendChild(i.content.cloneNode(!0))}connectedCallback(){const t=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",t.has("page")?t.get("page"):1),this.hasAttribute("data-show")||this.setAttribute("data-show",t.has("show")?t.get("show"):15),this.hasAttribute("data-increment")||this.setAttribute("data-increment",15),this.setAttribute("data-pages",Math.ceil(this.getAttribute("data-total")/this.getAttribute("data-show"))),l(this,this.shadowRoot.querySelector(".pagination__wrapper")),this.shadowRoot.querySelector(".pagination__wrapper").classList.remove("d-none")}}export{p as default};
18
20
  //# sourceMappingURL=pagination.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.component.min.js","sources":["../../modules/pagination.js","pagination.component.js"],"sourcesContent":["const createPaginationButttons = function (controller, pagination) {\n if (!controller.getAttribute('data-pages'))\n return false;\n if (!controller.getAttribute('data-page'))\n controller.setAttribute('data-page', 1);\n let currentPage = controller.getAttribute('data-page');\n let numberPages = controller.getAttribute('data-pages');\n let numberRows = controller.getAttribute('data-total');\n let showRows = controller.getAttribute('data-show');\n let addRows = controller.getAttribute('data-increment');\n if (numberPages <= 1) {\n pagination.innerHTML = '';\n return false;\n }\n let strButtons = '';\n for (let i = 1; i <= numberPages; i++) {\n if (i == currentPage)\n strButtons += `<li class=\"page-item active\" aria-current=\"page\"><span class=\"page-link\">${i}</span></li>`;\n else\n strButtons += `<li class=\"page-item\"><a href=\"?page=${i}\" class=\"page-link\" data-page=\"${i}\">${i}</a></li>`;\n }\n pagination.innerHTML = `<ul class=\"pagination mb-0 d-none d-sm-flex\">\n ${currentPage == 1 ? `<li class=\"page-item disabled\"><span class=\"page-link\">Previous</span></li>` : `<li class=\"page-item\"><a href=\"?page=${parseInt(currentPage) - 1}\" class=\"page-link\" data-page=\"${parseInt(currentPage) - 1}\">Previous</a></li>`}\n ${strButtons}\n ${currentPage == numberPages ? `<li class=\"page-item disabled\"><span class=\"page-link\">Next</span></li>` : `<li class=\"page-item\"><a href=\"?page=${parseInt(currentPage) + 1}\" class=\"page-link\" data-page=\"${parseInt(currentPage) + 1}\">Next</a></li>`}\n </ul>`;\n pagination.innerHTML += `<div class=\"d-sm-none text-center\">\n <span class=\"d-block pb-2\">You've viewed ${showRows} of ${numberRows} results</span>\n <a href=\"?show=${parseInt(showRows) + parseInt(addRows)}\" class=\"btn btn-primary w-100 m-0\" data-show=\"${parseInt(showRows) + parseInt(addRows)}\">Load more results</a>\n </div>`;\n return true;\n};\nexport default createPaginationButttons;\n","// @ts-nocheck\nimport createPaginationButttons from \"../../modules/pagination.js\";\nclass iamPagination 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 template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${assetLocation}/css/core.min.css\";\n </style>\n <div class=\"pagination__wrapper d-none\">\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // Set default attributes\n const params = new URLSearchParams(window.location.search);\n if (!this.hasAttribute('data-total'))\n this.setAttribute('data-total', this.querySelectorAll('table tbody tr').length);\n if (!this.hasAttribute('data-page'))\n this.setAttribute('data-page', (params.has('page') ? params.get('page') : 1));\n if (!this.hasAttribute('data-show'))\n this.setAttribute('data-show', (params.has('show') ? params.get('show') : 15));\n if (!this.hasAttribute('data-increment'))\n this.setAttribute('data-increment', 15);\n this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));\n createPaginationButttons(this, this.shadowRoot.querySelector('.pagination__wrapper'));\n }\n connectedCallback() {\n this.shadowRoot.querySelector('.pagination__wrapper').classList.remove('d-none');\n }\n}\nexport default iamPagination;\n"],"names":["createPaginationButttons","controller","pagination","currentPage","numberPages","numberRows","showRows","addRows","strButtons","i","iamPagination","assetLocation","template","params"],"mappings":";;;IAAA,MAAMA,EAA2B,SAAUC,EAAYC,EAAY,CAC/D,GAAI,CAACD,EAAW,aAAa,YAAY,EACrC,MAAO,GACNA,EAAW,aAAa,WAAW,GACpCA,EAAW,aAAa,YAAa,CAAC,EAC1C,IAAIE,EAAcF,EAAW,aAAa,WAAW,EACjDG,EAAcH,EAAW,aAAa,YAAY,EAClDI,EAAaJ,EAAW,aAAa,YAAY,EACjDK,EAAWL,EAAW,aAAa,WAAW,EAC9CM,EAAUN,EAAW,aAAa,gBAAgB,EACtD,GAAIG,GAAe,EACf,OAAAF,EAAW,UAAY,GAChB,GAEX,IAAIM,EAAa,GACjB,QAASC,EAAI,EAAGA,GAAKL,EAAaK,IAC1BA,GAAKN,EACLK,GAAc,4EAA4EC,gBAE1FD,GAAc,wCAAwCC,mCAAmCA,MAAMA,aAEvG,OAAAP,EAAW,UAAY;AAAA,MACrBC,GAAe,EAAI,8EAAgF,wCAAwC,SAASA,CAAW,EAAI,mCAAmC,SAASA,CAAW,EAAI;AAAA,MAC9NK;AAAA,MACAL,GAAeC,EAAc,0EAA4E,wCAAwC,SAASD,CAAW,EAAI,mCAAmC,SAASA,CAAW,EAAI;AAAA,SAEtOD,EAAW,WAAa;AAAA,6CACiBI,QAAeD;AAAA,mBACzC,SAASC,CAAQ,EAAI,SAASC,CAAO,mDAAmD,SAASD,CAAQ,EAAI,SAASC,CAAO;AAAA,UAErI,EACX,EC7BA,MAAMG,UAAsB,WAAY,CACpC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA;AAAA,MAKP,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,EAE5D,MAAMC,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACpD,KAAK,aAAa,YAAY,GAC/B,KAAK,aAAa,aAAc,KAAK,iBAAiB,gBAAgB,EAAE,MAAM,EAC7E,KAAK,aAAa,WAAW,GAC9B,KAAK,aAAa,YAAcA,EAAO,IAAI,MAAM,EAAIA,EAAO,IAAI,MAAM,EAAI,CAAC,EAC1E,KAAK,aAAa,WAAW,GAC9B,KAAK,aAAa,YAAcA,EAAO,IAAI,MAAM,EAAIA,EAAO,IAAI,MAAM,EAAI,EAAE,EAC3E,KAAK,aAAa,gBAAgB,GACnC,KAAK,aAAa,iBAAkB,EAAE,EAC1C,KAAK,aAAa,aAAc,KAAK,KAAK,KAAK,aAAa,YAAY,EAAI,KAAK,aAAa,WAAW,CAAC,CAAC,EAC3Gb,EAAyB,KAAM,KAAK,WAAW,cAAc,sBAAsB,CAAC,CACvF,CACD,mBAAoB,CAChB,KAAK,WAAW,cAAc,sBAAsB,EAAE,UAAU,OAAO,QAAQ,CAClF,CACL"}
1
+ {"version":3,"file":"pagination.component.min.js","sources":["../../modules/pagination.js","pagination.component.js"],"sourcesContent":["const createPaginationButttons = function (controller, pagination) {\n if (!controller.getAttribute('data-pages'))\n return false;\n if (!controller.getAttribute('data-page'))\n controller.setAttribute('data-page', 1);\n let currentPage = controller.getAttribute('data-page');\n let numberPages = controller.getAttribute('data-pages');\n let numberRows = controller.getAttribute('data-total');\n let showRows = controller.getAttribute('data-show');\n let addRows = controller.getAttribute('data-increment');\n if (numberPages <= 1) {\n pagination.innerHTML = '';\n return false;\n }\n let strButtons = '';\n for (let i = 1; i <= numberPages; i++) {\n if (i == currentPage)\n strButtons += `<li class=\"page-item active\" aria-current=\"page\"><span class=\"page-link\">${i}</span></li>`;\n else\n strButtons += `<li class=\"page-item\"><a href=\"?page=${i}\" class=\"page-link\" data-page=\"${i}\">${i}</a></li>`;\n }\n pagination.innerHTML = `<ul class=\"pagination mb-0 d-none d-sm-flex\">\n ${currentPage == 1 ? `<li class=\"page-item disabled\"><span class=\"page-link\">Previous</span></li>` : `<li class=\"page-item\"><a href=\"?page=${parseInt(currentPage) - 1}\" class=\"page-link\" data-page=\"${parseInt(currentPage) - 1}\">Previous</a></li>`}\n ${strButtons}\n ${currentPage == numberPages ? `<li class=\"page-item disabled\"><span class=\"page-link\">Next</span></li>` : `<li class=\"page-item\"><a href=\"?page=${parseInt(currentPage) + 1}\" class=\"page-link\" data-page=\"${parseInt(currentPage) + 1}\">Next</a></li>`}\n </ul>`;\n pagination.innerHTML += `<div class=\"d-sm-none text-center\">\n <span class=\"d-block pb-2\">You've viewed ${showRows} of ${numberRows} results</span>\n <a href=\"?show=${parseInt(showRows) + parseInt(addRows)}\" class=\"btn btn-primary w-100 m-0\" data-show=\"${parseInt(showRows) + parseInt(addRows)}\">Load more results</a>\n </div>`;\n return true;\n};\nexport default createPaginationButttons;\n","// @ts-nocheck\nimport createPaginationButttons from \"../../modules/pagination.js\";\nclass iamPagination 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 ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <div class=\"pagination__wrapper d-none\">\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // Set default attributes\n const params = new URLSearchParams(window.location.search);\n if (!this.hasAttribute('data-total'))\n this.setAttribute('data-total', this.querySelectorAll('table tbody tr').length);\n if (!this.hasAttribute('data-page'))\n this.setAttribute('data-page', (params.has('page') ? params.get('page') : 1));\n if (!this.hasAttribute('data-show'))\n this.setAttribute('data-show', (params.has('show') ? params.get('show') : 15));\n if (!this.hasAttribute('data-increment'))\n this.setAttribute('data-increment', 15);\n this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));\n createPaginationButttons(this, this.shadowRoot.querySelector('.pagination__wrapper'));\n this.shadowRoot.querySelector('.pagination__wrapper').classList.remove('d-none');\n }\n}\nexport default iamPagination;\n"],"names":["createPaginationButttons","controller","pagination","currentPage","numberPages","numberRows","showRows","addRows","strButtons","i","iamPagination","assetLocation","coreCSS","template","params"],"mappings":";;;IAAA,MAAMA,EAA2B,SAAUC,EAAYC,EAAY,CAC/D,GAAI,CAACD,EAAW,aAAa,YAAY,EACrC,MAAO,GACNA,EAAW,aAAa,WAAW,GACpCA,EAAW,aAAa,YAAa,CAAC,EAC1C,IAAIE,EAAcF,EAAW,aAAa,WAAW,EACjDG,EAAcH,EAAW,aAAa,YAAY,EAClDI,EAAaJ,EAAW,aAAa,YAAY,EACjDK,EAAWL,EAAW,aAAa,WAAW,EAC9CM,EAAUN,EAAW,aAAa,gBAAgB,EACtD,GAAIG,GAAe,EACf,OAAAF,EAAW,UAAY,GAChB,GAEX,IAAIM,EAAa,GACjB,QAASC,EAAI,EAAGA,GAAKL,EAAaK,IAC1BA,GAAKN,EACLK,GAAc,4EAA4EC,gBAE1FD,GAAc,wCAAwCC,mCAAmCA,MAAMA,aAEvG,OAAAP,EAAW,UAAY;AAAA,MACrBC,GAAe,EAAI,8EAAgF,wCAAwC,SAASA,CAAW,EAAI,mCAAmC,SAASA,CAAW,EAAI;AAAA,MAC9NK;AAAA,MACAL,GAAeC,EAAc,0EAA4E,wCAAwC,SAASD,CAAW,EAAI,mCAAmC,SAASA,CAAW,EAAI;AAAA,SAEtOD,EAAW,WAAa;AAAA,6CACiBI,QAAeD;AAAA,mBACzC,SAASC,CAAQ,EAAI,SAASC,CAAO,mDAAmD,SAASD,CAAQ,EAAI,SAASC,CAAO;AAAA,UAErI,EACX,EC7BA,MAAMG,UAAsB,WAAY,CACpC,aAAc,CACV,QACA,KAAK,aAAa,CAAE,KAAM,MAAQ,CAAA,EAClC,MAAMC,EAAgB,SAAS,KAAK,aAAa,sBAAsB,EAAI,SAAS,KAAK,aAAa,sBAAsB,EAAI,UAC1HC,EAAU,SAAS,KAAK,aAAa,eAAe,EAAI,SAAS,KAAK,aAAa,eAAe,EAAI,GAAGD,qBACzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA,MAET,KAAK,aAAa,KAAK,EAAI,YAAY,KAAK,aAAa,KAAK,MAAQ;AAAA;AAAA;AAAA;AAAA,MAKpE,KAAK,WAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,CAC/D,CACD,mBAAoB,CAEhB,MAAMC,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACpD,KAAK,aAAa,YAAY,GAC/B,KAAK,aAAa,aAAc,KAAK,iBAAiB,gBAAgB,EAAE,MAAM,EAC7E,KAAK,aAAa,WAAW,GAC9B,KAAK,aAAa,YAAcA,EAAO,IAAI,MAAM,EAAIA,EAAO,IAAI,MAAM,EAAI,CAAC,EAC1E,KAAK,aAAa,WAAW,GAC9B,KAAK,aAAa,YAAcA,EAAO,IAAI,MAAM,EAAIA,EAAO,IAAI,MAAM,EAAI,EAAE,EAC3E,KAAK,aAAa,gBAAgB,GACnC,KAAK,aAAa,iBAAkB,EAAE,EAC1C,KAAK,aAAa,aAAc,KAAK,KAAK,KAAK,aAAa,YAAY,EAAI,KAAK,aAAa,WAAW,CAAC,CAAC,EAC3Gd,EAAyB,KAAM,KAAK,WAAW,cAAc,sBAAsB,CAAC,EACpF,KAAK,WAAW,cAAc,sBAAsB,EAAE,UAAU,OAAO,QAAQ,CAClF,CACL"}
@@ -6,6 +6,7 @@ class iamTable extends HTMLElement {
6
6
  super();
7
7
  this.attachShadow({ mode: 'open' });
8
8
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
9
+ const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
9
10
  const isCTA = this.classList.contains('table--cta');
10
11
  const isExportable = this.classList.contains('table--export');
11
12
  let classList = this.classList.toString();
@@ -14,7 +15,7 @@ class iamTable extends HTMLElement {
14
15
  const template = document.createElement('template');
15
16
  template.innerHTML = `
16
17
  <style>
17
- @import "${assetLocation}/css/core.min.css";
18
+ @import "${coreCSS}";
18
19
 
19
20
  :host(.mh-sm){
20
21
  max-height: none!important;
@@ -25,6 +26,8 @@ class iamTable extends HTMLElement {
25
26
  :host(.mh-lg){
26
27
  max-height: none!important;
27
28
  }
29
+
30
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
28
31
  </style>
29
32
  ${isCTA ? '<div class="table--cta">' : ''}
30
33
  <div class="table__wrapper ${classList}">
@@ -35,6 +38,8 @@ class iamTable extends HTMLElement {
35
38
  <div class="table__pagination"></div>
36
39
  `;
37
40
  this.shadowRoot.appendChild(template.content.cloneNode(true));
41
+ }
42
+ connectedCallback() {
38
43
  const params = new URLSearchParams(window.location.search);
39
44
  // Set default attributes
40
45
  if (!this.hasAttribute('data-total'))
@@ -46,8 +51,6 @@ class iamTable extends HTMLElement {
46
51
  if (!this.hasAttribute('data-increment'))
47
52
  this.setAttribute('data-increment', 15);
48
53
  this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));
49
- }
50
- connectedCallback() {
51
54
  this.table = this.querySelector('table');
52
55
  this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);
53
56
  this.pagination = this.shadowRoot.querySelector('.table__pagination');
@@ -1,17 +1,17 @@
1
1
  /*!
2
- * iamKey v3.7.3
2
+ * iamKey v3.7.5
3
3
  * Copyright 2022-2023 iamproperty
4
- */const F=function(a){return typeof a!="string"?!1:!isNaN(a)&&!isNaN(parseFloat(a))},B=(a,e)=>String(a).padStart(e,"0"),U=a=>a.charAt(0).toUpperCase()+a.slice(1),C=function(a,e){if(!a.getAttribute("data-pages"))return!1;a.getAttribute("data-page")||a.setAttribute("data-page",1);let o=a.getAttribute("data-page"),s=a.getAttribute("data-pages"),i=a.getAttribute("data-total"),n=a.getAttribute("data-show"),r=a.getAttribute("data-increment");if(s<=1)return e.innerHTML="",!1;let d="";for(let c=1;c<=s;c++)c==o?d+=`<li class="page-item active" aria-current="page"><span class="page-link">${c}</span></li>`:d+=`<li class="page-item"><a href="?page=${c}" class="page-link" data-page="${c}">${c}</a></li>`;return e.innerHTML=`<ul class="pagination mb-0 d-none d-sm-flex">
4
+ */const B=function(a){return typeof a!="string"?!1:!isNaN(a)&&!isNaN(parseFloat(a))},F=(a,e)=>String(a).padStart(e,"0"),U=a=>a.charAt(0).toUpperCase()+a.slice(1),C=function(a,e){if(!a.getAttribute("data-pages"))return!1;a.getAttribute("data-page")||a.setAttribute("data-page",1);let o=a.getAttribute("data-page"),r=a.getAttribute("data-pages"),n=a.getAttribute("data-total"),i=a.getAttribute("data-show"),s=a.getAttribute("data-increment");if(r<=1)return e.innerHTML="",!1;let d="";for(let c=1;c<=r;c++)c==o?d+=`<li class="page-item active" aria-current="page"><span class="page-link">${c}</span></li>`:d+=`<li class="page-item"><a href="?page=${c}" class="page-link" data-page="${c}">${c}</a></li>`;return e.innerHTML=`<ul class="pagination mb-0 d-none d-sm-flex">
5
5
  ${o==1?'<li class="page-item disabled"><span class="page-link">Previous</span></li>':`<li class="page-item"><a href="?page=${parseInt(o)-1}" class="page-link" data-page="${parseInt(o)-1}">Previous</a></li>`}
6
6
  ${d}
7
- ${o==s?'<li class="page-item disabled"><span class="page-link">Next</span></li>':`<li class="page-item"><a href="?page=${parseInt(o)+1}" class="page-link" data-page="${parseInt(o)+1}">Next</a></li>`}
7
+ ${o==r?'<li class="page-item disabled"><span class="page-link">Next</span></li>':`<li class="page-item"><a href="?page=${parseInt(o)+1}" class="page-link" data-page="${parseInt(o)+1}">Next</a></li>`}
8
8
  </ul>`,e.innerHTML+=`<div class="d-sm-none text-center">
9
- <span class="d-block pb-2">You've viewed ${n} of ${i} results</span>
10
- <a href="?show=${parseInt(n)+parseInt(r)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(n)+parseInt(r)}">Load more results</a>
11
- </div>`,!0};var z=function(a,e,o,s){function i(n){return n instanceof o?n:new o(function(r){r(n)})}return new(o||(o=Promise))(function(n,r){function d(h){try{t(s.next(h))}catch(u){r(u)}}function c(h){try{t(s.throw(h))}catch(u){r(u)}}function t(h){h.done?n(h.value):i(h.value).then(d,c)}t((s=s.apply(a,e||[])).next())})};const _=a=>{const e=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((s,i)=>{const n=Array.from(s.querySelectorAll("th, td")),r=["0","low","medium","high","unknown","n/a","pending","verified","incomplete","completed","requires approval"];n.forEach((d,c)=>{const t=e[c];if(typeof t<"u"){let h=document.createElement("div");h.innerHTML=t.innerHTML;let u=h.textContent||h.innerText||"";d.setAttribute("data-label",u),t.hasAttribute("data-td-class")&&d.setAttribute("class",t.getAttribute("data-td-class")),t.hasAttribute("data-format")&&(d.setAttribute("data-format",t.getAttribute("data-format")),d.innerHTML=M(t.getAttribute("data-format"),d.textContent.trim())),r.includes(d.textContent.trim().toLowerCase())&&d.setAttribute("data-content",d.textContent.trim().toLowerCase())}})})},J=a=>{let e=0;return Array.from(a.querySelectorAll("tbody tr")).forEach((o,s)=>{let i=window.getComputedStyle(document.querySelector("html")),n=o.querySelector(":scope > *:last-child > *:first-child");if(n){n.classList.add("text-nowrap");let r=n.offsetWidth/parseFloat(i.fontSize);r+=1.7,e=e>r?e:r}}),e},Q=a=>{if(a.closest(".table--fullwidth")||a.querySelectorAll("thead tr th").length<4)return!1;Array.from(a.querySelectorAll("tbody tr")).forEach((e,o)=>{let s=e.querySelector(":scope > :is(td,th):first-child"),i=s.textContent;if(i!="")s.innerHTML=`<span class="td__content">${i}</span><button type="button" class="d-none">${i}</button>`;else{let n=e.querySelector(":scope > :is(td,th):nth-child(2)"),r=n.textContent;n.innerHTML=`<span class="td__content">${r}</span><button type="button" class="d-none">${r}</button>`}})},X=a=>{a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("tr > :is(td,th):first-child button")){let o=e.target.closest("tr > :is(td,th):first-child button"),s=o.parentNode.closest("tr");s.getAttribute("data-view")=="full"?s.setAttribute("data-view","default"):s.setAttribute("data-view","full"),o.blur()}})},R=(a,e)=>{let o=e.querySelector("[data-search]");if(!o)return!1;const s=o.getAttribute("id"),i=o.getAttribute("data-search").split(",");let n=o.parentNode,r={};i.forEach((d,c)=>{Array.from(a.querySelectorAll('td[data-label="'+d.trim()+'"]')).forEach((t,h)=>{t.querySelector(".td__content")?r[t.querySelector(".td__content").textContent]=t.querySelector(".td__content").textContent:r[t.textContent]=t.textContent})}),o.setAttribute("list",`${s}_list`),o.setAttribute("autocomplete","off"),n.querySelector("datalist")||(n.innerHTML+=`<datalist id="${s}_list"></datalist>`),n.querySelector("datalist").innerHTML=`${Object.keys(r).map(d=>`<option value="${d}"></option>`).join("")}`},Y=(a,e,o,s,i)=>{var n;let r=function(t=!1){if(e.hasAttribute("data-ajax")){if(!t){let h=e.querySelector("[data-pagination]");h.value=1,s.setAttribute("data-page",1)}I(a,e,o,s)}else e.hasAttribute("data-submit")?e.submit():(N(a,e,s),C(s,o),H(a,e))};e.addEventListener("keyup",t=>{clearTimeout(n),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&(n=setTimeout(function(){r()},500))}),e.addEventListener("change",t=>{clearTimeout(n),t&&t.target instanceof HTMLElement&&t.target.closest("[data-sort]")&&(e.hasAttribute("data-submit")||j(a,e,i),r()),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&r(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&t.target.closest("form .dialog__wrapper > dialog")&&r(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&!t.target.closest("form dialog")&&r(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-show]")&&r(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-mimic]")&&r()}),e.addEventListener("click",t=>{clearTimeout(n),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.reset(),e.hasAttribute("data-submit")||j(a,e,i),r())}),e.addEventListener("submit",t=>{clearTimeout(n),e.hasAttribute("data-submit")||t.preventDefault(),r()}),e.addEventListener("force",t=>{r()}),e.addEventListener("paginate",t=>{r(!0)});let d=[],c=[];Array.from(e.querySelectorAll("[data-mimic]")).forEach((t,h)=>{let u=t.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${u}"]`)).forEach((f,b)=>{let l=f.closest("form");d.includes(l)||d.push(l),c.includes(u)||c.push(u)})}),d.forEach((t,h)=>{const u=function(){let f=[],b=new FormData(t);for(const[l,y]of b)document.querySelector(`[data-mimic="${l}"]`)&&!f.includes(l)?(f.push(l),document.querySelector(`[data-mimic="${l}"]`).value=y):document.querySelector(`[data-mimic="${l}"]`)&&(document.querySelector(`[data-mimic="${l}"]`).value+=","+y);for(const l of f){const y=new Event("force");e.dispatchEvent(y)}for(const l of c)if(!b.has(l)&&t.querySelector(`[name="${l}"]`)){document.querySelector(`[data-mimic="${l}"]`).value="";const y=new Event("force");e.dispatchEvent(y)}};t.addEventListener("force",f=>{u()}),t.addEventListener("change",f=>{u()})})},j=(a,e,o)=>{if(e.getAttribute("data-ajax"))return!1;let s=a.querySelector("tbody"),i=e.querySelector("[data-sort]"),n=i.querySelector(`option:nth-child(${i.selectedIndex+1})`),r=n.getAttribute("data-sort"),d=n.getAttribute("data-order"),c=n.getAttribute("data-format");if(!r)return s.innerHTML=o.innerHTML,_(a),!1;let t=[];["asc","desc","descending"].includes(d)||(t=d.split(","));let h=[];Array.from(s.querySelectorAll("tr")).forEach((f,b)=>{let l=f.querySelector('td[data-label="'+r+'"], th[data-label="'+r+'"]').textContent.trim();t.length&&t.includes(l)&&(l=t.indexOf(l)),F(l)&&(l=B(l,10)),c&&c=="date"&&(l=new Date(l));const y={index:l,row:f};h.push(y)}),h.sort((f,b)=>f.index>b.index?1:-1),(d=="descending"||d=="desc")&&(h=h.reverse());let u="";h.forEach((f,b)=>{u+=f.row.outerHTML}),s.innerHTML=u},N=(a,e,o)=>{a.classList.remove("table--filtered");let s=[],i=[],n=0,r=e.querySelector("[data-pagination]")?parseInt(e.querySelector("[data-pagination]").value):1,d=e.querySelector("[data-show]")?parseInt(e.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((t,h)=>{t.classList.remove("filtered"),t.classList.remove("filtered--matched"),t.classList.remove("filtered--show"),t.removeAttribute("data-filtered-by")}),Array.from(e.querySelectorAll("[data-filter]")).forEach((t,h)=>{if(!(t.type=="radio"&&!t.checked)&&!(t.type=="checkbox"&&!t.checked)){if(t.getAttribute("data-filter")=="multi")for(const[u,f]of Object.entries(JSON.parse(t.value)))s[t.getAttribute("data-filter")].push(f);else if(t&&t.value){let u=t.getAttribute("data-filter");s[u]||(s[u]=new Array),s[u].push(t.value)}}}),e.querySelector("[data-search]")){let t=e.querySelector("[data-search]");e.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((u,f)=>{i.push({column:`${u.trim()}`,value:`${t.value}`})})}Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,h)=>{t.innerHTML=""}),s.length&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,h)=>{t.innerHTML+=`(${s.length})`}),a.classList.add("table--filtered");for(const[t,h]of Object.entries(s))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((u,f)=>{let b=!1;h.forEach((l,y)=>{let L=u.querySelector(`[data-label="${t}"]`);if(l&&l=="$today")l=M("date",new Date);else if(l&&l=="$yesterday"){let m=new Date;m.setDate(m.getDate()-1),l=M("date",m)}else if(l&&(l=="$thisWeek"||l=="$lastWeek")){let m=new Date,g=new Date(m.setDate(m.getDate()-(m.getDay()-1))),A=new Date(m.setDate(m.getDate()-m.getDay()+7)),p=new Date(L.textContent.toLowerCase());if(m.setHours(0,0,0,0),g.setHours(0,0,0,0),A.setHours(0,0,0,0),p.setHours(0,0,0,0),l=="$thisWeek")b=p>=g&&p<=A;else{let S=new Date(g.setDate(g.getDate()-7)),x=new Date(A.setDate(A.getDate()-7));S.setHours(0,0,0,0),x.setHours(0,0,0,0),b=p>=S&&p<=x}}else if(l&&l=="$thisMonth"){let m=new Date,g=m.getFullYear(),A=m.getMonth();var q=new Date(g,A,1),E=new Date(g,A+1,0);let p=new Date(L.textContent.toLowerCase());q.setHours(0,0,0,0),E.setHours(0,0,0,0),p.setHours(0,0,0,0),b=p>=q&&p<=E}else if(l&&l=="$lastMonth"){let m=new Date,g=m.getFullYear(),A=m.getMonth();var w=new Date(g,A-1,1),$=new Date(g,A,0);let p=new Date(L.textContent.toLowerCase());w.setHours(0,0,0,0),$.setHours(0,0,0,0),p.setHours(0,0,0,0),b=p>=w&&p<=$}L&&L.textContent.toLowerCase().includes(l.toLowerCase())&&(b=!0)}),b||(u.classList.add("filtered"),u.setAttribute("data-filtered-by",t))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((t,h)=>{let u=!(i.length>0&&i[0].value.length>=3);i.forEach((f,b)=>{let l=t.querySelector(`[data-label="${f.column}"]`);l&&f.value.length>=3&&l.textContent.toLowerCase().includes(f.value.toLowerCase())&&(u=!0)}),u||t.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((t,h)=>{n++,t.classList.add("filtered--matched"),Math.ceil(n/d)==parseInt(r)&&t.classList.add("filtered--show")}),o&&(o.setAttribute("data-page",r),o.setAttribute("data-pages",Math.ceil(n/d)),o.setAttribute("data-total",n),o.setAttribute("data-show",d))},H=(a,e,o)=>{Array.from(e.querySelectorAll("[data-query]")).forEach((i,n)=>{let r=i.getAttribute("data-query"),d;if(r=="total")o.hasAttribute("data-total")?d=o.getAttribute("data-total"):d=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!r.includes(" == ")&&r.includes(" & ")){let c=r.split(" & "),t="";c.forEach(h=>{t+=`:not([data-filtered-by="${h}"])`}),d=Array.from(a.querySelectorAll(`tbody tr${t}`)).length}else if(!r.includes(" == "))d=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${r}"])`)).length;else if(r.includes(" && ")){let c=r.split(" && ");d=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(t){let h=!0;for(const[u,f]of Object.entries(c)){let b=f.split(" == ");(!t.querySelector(`td[data-label="${b[0]}"]`)||t.querySelector(`td[data-label="${b[0]}"]`).textContent!=`${b[1]}`)&&(h=!1)}return h}).length}else{let c=r.split(" == ");d=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${c[0]}"], tbody tr[data-filtered-by="${c[0]}"] td[data-label="${c[0]}"]`)).filter(function(t){return t.textContent===c[1]}).length}i.hasAttribute("data-total")?i.setAttribute("data-total",d):i.innerHTML=d})},G=function(a,e,o,s){o.addEventListener("click",i=>{if(i&&i.target instanceof HTMLElement&&i.target.closest("[data-page]")){i.preventDefault();let n=e.querySelector("[data-pagination]"),r=i.target.closest("[data-page]").getAttribute("data-page");if(n.value=r,s.setAttribute("data-page",r),e.dispatchEvent(new Event("paginate")),a.hasAttribute("data-show-history")){const d=new URL(location);d.searchParams.set("page",r),history.pushState({type:"pagination",form:e.getAttribute("id"),page:r},"",d)}}if(i&&i.target instanceof HTMLElement&&i.target.closest("[data-show]")){i.preventDefault();let n=e.querySelector("[data-show]"),r=i.target.closest("[data-show]").getAttribute("data-show");n.value=r,s.setAttribute("data-show",r),e.dispatchEvent(new Event("submit"))}})},K=(a,e)=>{if(!a)return!1;a.addEventListener("click",o=>{Z(e)})},Z=function(a){for(var e=[],o=a.getElementsByTagName("tr"),s=0;s<o.length;s++){for(var i=o[s].querySelectorAll("td,th"),n=[],r=0;r<i.length;r++)n.push(`"${i[r].textContent}"`);e.push(n.join(","))}e=e.join(`
12
- `);let d=new Blob([e],{type:"text/csv"});var c=document.createElement("a");c.download="export.csv";var t=window.URL.createObjectURL(d);c.href=t,c.style.display="none",document.body.appendChild(c),c.click(),document.body.removeChild(c)},P=function(a,e,o,s){if(_(a),Q(a),H(a,e,s),s&&s.classList.contains("table--cta")){let n=function(){Array.from(a.querySelectorAll("tr")).forEach((r,d)=>{let c=r.offsetHeight;r.style.setProperty("--row-height",`${c}px`)})};const i=J(a);s.style.setProperty("--cta-width",`${i}rem`),new ResizeObserver(n).observe(a)}},I=function(a,e,o,s){return z(this,void 0,void 0,function*(){const i=(u,f,b)=>f.split(/[\.\[\]\'\"]/).filter(l=>l).reduce((l,y)=>l?l[y]:b,u);let n=new FormData(e),r=new URLSearchParams(n).toString(),d=a.querySelectorAll("thead tr th"),c=a.querySelector("tbody"),t=e.getAttribute("data-ajax");s.classList.add("table--loading"),window.controller||(window.controller=[]),window.controller[t]&&window.controller[t].abort(),window.controller[t]=new AbortController;const{signal:h}=controller[t];try{yield fetch(t+"?"+r,{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 f=e.hasAttribute("data-schema")?e.getAttribute("data-schema"):"data",b=e.hasAttribute("data-schema-total")?e.getAttribute("data-schema-total"):"meta.total",l=e.hasAttribute("data-schema-page")?e.getAttribute("data-schema-page"):"meta.current_page",y=i(u,b,1),L=i(u,l,1),q=i(u,f),E=s.hasAttribute("data-empty-msg")?s.getAttribute("data-empty-msg"):"No results found";if(q?(c.innerHTML="",q.forEach((w,$)=>{var m=document.createElement("tr");d.forEach((g,A)=>{let p="";var S=document.createElement("td");if(S.setAttribute("data-label",g.innerText),g.getAttribute("data-output")){var x=g.getAttribute("data-output");p=x.replace(new RegExp(/{(.*?)}/,"gm"),function(D){return i(w,D.replace("{","").replace("}",""))})}if(g.hasAttribute("data-output-array")){var x=g.getAttribute("data-output");let W=i(w,x.replace("{","").replace("}",""));p="",W.forEach((k,et)=>{let O=g.getAttribute("data-output-array"),v="";if(g.hasAttribute("data-output-array-property")&&g.hasAttribute("data-output-array-transform")){const T=i(k,g.getAttribute("data-output-array-property")),V=JSON.parse(g.getAttribute("data-output-array-transform"))[T];v=O.replace(`{${g.getAttribute("data-output-array-property")}}`,V)}v=v.replace(new RegExp(/{(.*?)}/,"gm"),function(T){return i(k,T.replace("{","").replace("}",""))}),p+=v})}g.hasAttribute("data-transform")&&(p=JSON.parse(g.getAttribute("data-transform"))[p],!p&&g.hasAttribute("data-default")&&(p=g.getAttribute("data-default"))),S.innerHTML=p,m.appendChild(S)}),c.appendChild(m)}),R(a,e),s.setAttribute("data-total",parseInt(y)),s.setAttribute("data-page",parseInt(L)),s.setAttribute("data-pages",Math.ceil(s.getAttribute("data-total")/s.getAttribute("data-show"))),P(a,e,o,s),C(s,o),parseInt(y)==0&&(c.innerHTML=`<tr><td colspan="100%"><span>${E}</span></td></tr>`),s.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:t,formData:r})):c.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',e.hasAttribute("data-ajax-post")){const w=new XMLHttpRequest;w.open("GET",`${window.location.href}?ajax=true&${r}`),w.send()}})}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=U(e)}};class tt extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",o=this.classList.contains("table--cta"),s=this.classList.contains("table--export");let i=this.classList.toString();i=i.replace("table--cta",""),i=i.replace("table--loading","");const n=document.createElement("template");n.innerHTML=`
9
+ <span class="d-block pb-2">You've viewed ${i} of ${n} results</span>
10
+ <a href="?show=${parseInt(i)+parseInt(s)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(i)+parseInt(s)}">Load more results</a>
11
+ </div>`,!0};var z=function(a,e,o,r){function n(i){return i instanceof o?i:new o(function(s){s(i)})}return new(o||(o=Promise))(function(i,s){function d(h){try{t(r.next(h))}catch(u){s(u)}}function c(h){try{t(r.throw(h))}catch(u){s(u)}}function t(h){h.done?i(h.value):n(h.value).then(d,c)}t((r=r.apply(a,e||[])).next())})};const _=a=>{const e=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((r,n)=>{const i=Array.from(r.querySelectorAll("th, td")),s=["0","low","medium","high","unknown","n/a","pending","verified","overdue","incomplete","complete","completed","approval required","requires approval","to do","not started","warning","error"];i.forEach((d,c)=>{const t=e[c];if(typeof t<"u"){let h=document.createElement("div");h.innerHTML=t.innerHTML;let u=h.textContent||h.innerText||"";d.setAttribute("data-label",u),t.hasAttribute("data-td-class")&&d.setAttribute("class",t.getAttribute("data-td-class")),t.hasAttribute("data-format")&&(d.setAttribute("data-format",t.getAttribute("data-format")),d.innerHTML=M(t.getAttribute("data-format"),d.textContent.trim())),s.includes(d.textContent.trim().toLowerCase())&&d.setAttribute("data-content",d.textContent.trim().toLowerCase())}})})},Y=a=>{let e=0;return Array.from(a.querySelectorAll("tbody tr")).forEach((o,r)=>{let n=window.getComputedStyle(document.querySelector("html")),i=o.querySelector(":scope > *:last-child > *:first-child");if(i){i.classList.add("text-nowrap");let s=i.offsetWidth/parseFloat(n.fontSize);s+=1.7,e=e>s?e:s}}),e},J=a=>{if(a.closest(".table--fullwidth")||a.querySelectorAll("thead tr th").length<4)return!1;Array.from(a.querySelectorAll("tbody tr")).forEach((e,o)=>{let r=e.querySelector(":scope > :is(td,th):first-child"),n=r.textContent;if(n!="")r.innerHTML=`<span class="td__content">${n}</span><button type="button" class="d-none">${n}</button>`;else{let i=e.querySelector(":scope > :is(td,th):nth-child(2)"),s=i.textContent;i.innerHTML=`<span class="td__content">${s}</span><button type="button" class="d-none">${s}</button>`}})},Q=a=>{a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("tr > :is(td,th):first-child button")){let o=e.target.closest("tr > :is(td,th):first-child button"),r=o.parentNode.closest("tr");r.getAttribute("data-view")=="full"?r.setAttribute("data-view","default"):r.setAttribute("data-view","full"),o.blur()}})},R=(a,e)=>{let o=e.querySelector("[data-search]");if(!o)return!1;const r=o.getAttribute("id"),n=o.getAttribute("data-search").split(",");let i=o.parentNode,s={};n.forEach((d,c)=>{Array.from(a.querySelectorAll('td[data-label="'+d.trim()+'"]')).forEach((t,h)=>{t.querySelector(".td__content")?s[t.querySelector(".td__content").textContent]=t.querySelector(".td__content").textContent:s[t.textContent]=t.textContent})}),o.setAttribute("list",`${r}_list`),o.setAttribute("autocomplete","off"),i.querySelector("datalist")||(i.innerHTML+=`<datalist id="${r}_list"></datalist>`),i.querySelector("datalist").innerHTML=`${Object.keys(s).map(d=>`<option value="${d}"></option>`).join("")}`},X=(a,e,o,r,n)=>{var i;let s=function(t=!1){if(e.hasAttribute("data-ajax")){if(!t){let h=e.querySelector("[data-pagination]");h.value=1,r.setAttribute("data-page",1)}I(a,e,o,r)}else e.hasAttribute("data-submit")?e.submit():(N(a,e,r),C(r,o),H(a,e))};e.addEventListener("keyup",t=>{clearTimeout(i),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&(i=setTimeout(function(){s()},500))}),e.addEventListener("change",t=>{clearTimeout(i),t&&t.target instanceof HTMLElement&&t.target.closest("[data-sort]")&&(e.hasAttribute("data-submit")||j(a,e,n),s()),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&s(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&t.target.closest("form .dialog__wrapper > dialog")&&s(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&!t.target.closest("form dialog")&&s(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-show]")&&s(),t&&t.target instanceof HTMLElement&&t.target.closest("[data-mimic]")&&s()}),e.addEventListener("click",t=>{clearTimeout(i),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.reset(),e.hasAttribute("data-submit")||j(a,e,n),s())}),e.addEventListener("submit",t=>{clearTimeout(i),e.hasAttribute("data-submit")||t.preventDefault(),s()}),e.addEventListener("force",t=>{s()}),e.addEventListener("paginate",t=>{s(!0)});let d=[],c=[];Array.from(e.querySelectorAll("[data-mimic]")).forEach((t,h)=>{let u=t.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${u}"]`)).forEach((f,b)=>{let l=f.closest("form");d.includes(l)||d.push(l),c.includes(u)||c.push(u)})}),d.forEach((t,h)=>{const u=function(){let f=[],b=new FormData(t);for(const[l,y]of b)document.querySelector(`[data-mimic="${l}"]`)&&!f.includes(l)?(f.push(l),document.querySelector(`[data-mimic="${l}"]`).value=y):document.querySelector(`[data-mimic="${l}"]`)&&(document.querySelector(`[data-mimic="${l}"]`).value+=","+y);for(const l of f){const y=new Event("force");e.dispatchEvent(y)}for(const l of c)if(!b.has(l)&&t.querySelector(`[name="${l}"]`)){document.querySelector(`[data-mimic="${l}"]`).value="";const y=new Event("force");e.dispatchEvent(y)}};t.addEventListener("force",f=>{u()}),t.addEventListener("change",f=>{u()})})},j=(a,e,o)=>{if(e.getAttribute("data-ajax"))return!1;let r=a.querySelector("tbody"),n=e.querySelector("[data-sort]"),i=n.querySelector(`option:nth-child(${n.selectedIndex+1})`),s=i.getAttribute("data-sort"),d=i.getAttribute("data-order"),c=i.getAttribute("data-format");if(!s)return r.innerHTML=o.innerHTML,_(a),!1;let t=[];["asc","desc","descending"].includes(d)||(t=d.split(","));let h=[];Array.from(r.querySelectorAll("tr")).forEach((f,b)=>{let l=f.querySelector('td[data-label="'+s+'"], th[data-label="'+s+'"]').textContent.trim();t.length&&t.includes(l)&&(l=t.indexOf(l)),B(l)&&(l=F(l,10)),c&&c=="date"&&(l=new Date(l));const y={index:l,row:f};h.push(y)}),h.sort((f,b)=>f.index>b.index?1:-1),(d=="descending"||d=="desc")&&(h=h.reverse());let u="";h.forEach((f,b)=>{u+=f.row.outerHTML}),r.innerHTML=u},N=(a,e,o)=>{a.classList.remove("table--filtered");let r=[],n=[],i=0,s=e.querySelector("[data-pagination]")?parseInt(e.querySelector("[data-pagination]").value):1,d=e.querySelector("[data-show]")?parseInt(e.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((t,h)=>{t.classList.remove("filtered"),t.classList.remove("filtered--matched"),t.classList.remove("filtered--show"),t.removeAttribute("data-filtered-by")}),Array.from(e.querySelectorAll("[data-filter]")).forEach((t,h)=>{if(!(t.type=="radio"&&!t.checked)&&!(t.type=="checkbox"&&!t.checked)){if(t.getAttribute("data-filter")=="multi")for(const[u,f]of Object.entries(JSON.parse(t.value)))r[t.getAttribute("data-filter")].push(f);else if(t&&t.value){let u=t.getAttribute("data-filter");r[u]||(r[u]=new Array),r[u].push(t.value)}}}),e.querySelector("[data-search]")){let t=e.querySelector("[data-search]");e.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((u,f)=>{n.push({column:`${u.trim()}`,value:`${t.value}`})})}Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,h)=>{t.innerHTML=""}),r.length&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,h)=>{t.innerHTML+=`(${r.length})`}),a.classList.add("table--filtered");for(const[t,h]of Object.entries(r))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((u,f)=>{let b=!1;h.forEach((l,y)=>{let L=u.querySelector(`[data-label="${t}"]`);if(l&&l=="$today")l=M("date",new Date);else if(l&&l=="$yesterday"){let m=new Date;m.setDate(m.getDate()-1),l=M("date",m)}else if(l&&(l=="$thisWeek"||l=="$lastWeek")){let m=new Date,g=new Date(m.setDate(m.getDate()-(m.getDay()-1))),A=new Date(m.setDate(m.getDate()-m.getDay()+7)),p=new Date(L.textContent.toLowerCase());if(m.setHours(0,0,0,0),g.setHours(0,0,0,0),A.setHours(0,0,0,0),p.setHours(0,0,0,0),l=="$thisWeek")b=p>=g&&p<=A;else{let S=new Date(g.setDate(g.getDate()-7)),x=new Date(A.setDate(A.getDate()-7));S.setHours(0,0,0,0),x.setHours(0,0,0,0),b=p>=S&&p<=x}}else if(l&&l=="$thisMonth"){let m=new Date,g=m.getFullYear(),A=m.getMonth();var q=new Date(g,A,1),v=new Date(g,A+1,0);let p=new Date(L.textContent.toLowerCase());q.setHours(0,0,0,0),v.setHours(0,0,0,0),p.setHours(0,0,0,0),b=p>=q&&p<=v}else if(l&&l=="$lastMonth"){let m=new Date,g=m.getFullYear(),A=m.getMonth();var w=new Date(g,A-1,1),$=new Date(g,A,0);let p=new Date(L.textContent.toLowerCase());w.setHours(0,0,0,0),$.setHours(0,0,0,0),p.setHours(0,0,0,0),b=p>=w&&p<=$}L&&L.textContent.toLowerCase().includes(l.toLowerCase())&&(b=!0)}),b||(u.classList.add("filtered"),u.setAttribute("data-filtered-by",t))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((t,h)=>{let u=!(n.length>0&&n[0].value.length>=3);n.forEach((f,b)=>{let l=t.querySelector(`[data-label="${f.column}"]`);l&&f.value.length>=3&&l.textContent.toLowerCase().includes(f.value.toLowerCase())&&(u=!0)}),u||t.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((t,h)=>{i++,t.classList.add("filtered--matched"),Math.ceil(i/d)==parseInt(s)&&t.classList.add("filtered--show")}),o&&(o.setAttribute("data-page",s),o.setAttribute("data-pages",Math.ceil(i/d)),o.setAttribute("data-total",i),o.setAttribute("data-show",d))},H=(a,e,o)=>{Array.from(e.querySelectorAll("[data-query]")).forEach((n,i)=>{let s=n.getAttribute("data-query"),d;if(s=="total")o.hasAttribute("data-total")?d=o.getAttribute("data-total"):d=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!s.includes(" == ")&&s.includes(" & ")){let c=s.split(" & "),t="";c.forEach(h=>{t+=`:not([data-filtered-by="${h}"])`}),d=Array.from(a.querySelectorAll(`tbody tr${t}`)).length}else if(!s.includes(" == "))d=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${s}"])`)).length;else if(s.includes(" && ")){let c=s.split(" && ");d=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(t){let h=!0;for(const[u,f]of Object.entries(c)){let b=f.split(" == ");(!t.querySelector(`td[data-label="${b[0]}"]`)||t.querySelector(`td[data-label="${b[0]}"]`).textContent!=`${b[1]}`)&&(h=!1)}return h}).length}else{let c=s.split(" == ");d=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${c[0]}"], tbody tr[data-filtered-by="${c[0]}"] td[data-label="${c[0]}"]`)).filter(function(t){return t.textContent===c[1]}).length}n.hasAttribute("data-total")?n.setAttribute("data-total",d):n.innerHTML=d})},G=function(a,e,o,r){o.addEventListener("click",n=>{if(n&&n.target instanceof HTMLElement&&n.target.closest("[data-page]")){n.preventDefault();let i=e.querySelector("[data-pagination]"),s=n.target.closest("[data-page]").getAttribute("data-page");if(i.value=s,r.setAttribute("data-page",s),e.dispatchEvent(new Event("paginate")),a.hasAttribute("data-show-history")){const t=new URL(location);t.searchParams.set("page",s),history.pushState({type:"pagination",form:e.getAttribute("id"),page:s},"",t)}const d=-250,c=a.getBoundingClientRect().top+window.pageYOffset+d;window.scrollTo({top:c,behavior:"smooth"})}if(n&&n.target instanceof HTMLElement&&n.target.closest("[data-show]")){n.preventDefault();let i=e.querySelector("[data-show]"),s=n.target.closest("[data-show]").getAttribute("data-show");i.value=s,r.setAttribute("data-show",s),e.dispatchEvent(new Event("submit"))}})},K=(a,e)=>{if(!a)return!1;a.addEventListener("click",o=>{Z(e)})},Z=function(a){for(var e=[],o=a.getElementsByTagName("tr"),r=0;r<o.length;r++){for(var n=o[r].querySelectorAll("td,th"),i=[],s=0;s<n.length;s++)i.push(`"${n[s].textContent}"`);e.push(i.join(","))}e=e.join(`
12
+ `);let d=new Blob([e],{type:"text/csv"});var c=document.createElement("a");c.download="export.csv";var t=window.URL.createObjectURL(d);c.href=t,c.style.display="none",document.body.appendChild(c),c.click(),document.body.removeChild(c)},P=function(a,e,o,r){if(_(a),J(a),H(a,e,r),r&&r.classList.contains("table--cta")){let n=function(){Array.from(a.querySelectorAll("tr")).forEach((i,s)=>{let d=i.offsetHeight;i.style.setProperty("--row-height",`${d}px`)})};if(!r.hasAttribute("data-cta-width")){const i=Y(a);r.style.setProperty("--cta-width",`${i}rem`),r.setAttribute("data-cta-width",`${i}rem`)}new ResizeObserver(n).observe(a)}},I=function(a,e,o,r){return z(this,void 0,void 0,function*(){const n=(u,f,b)=>f.split(/[\.\[\]\'\"]/).filter(l=>l).reduce((l,y)=>l?l[y]:b,u);let i=new FormData(e),s=new URLSearchParams(i).toString(),d=a.querySelectorAll("thead tr th"),c=a.querySelector("tbody"),t=e.getAttribute("data-ajax");r.classList.add("table--loading"),window.controller||(window.controller=[]),window.controller[t]&&window.controller[t].abort(),window.controller[t]=new AbortController;const{signal:h}=controller[t];try{yield fetch(t+"?"+s,{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 f=e.hasAttribute("data-schema")?e.getAttribute("data-schema"):"data",b=e.hasAttribute("data-schema-total")?e.getAttribute("data-schema-total"):"meta.total",l=e.hasAttribute("data-schema-page")?e.getAttribute("data-schema-page"):"meta.current_page",y=n(u,b,1),L=n(u,l,1),q=n(u,f),v=r.hasAttribute("data-empty-msg")?r.getAttribute("data-empty-msg"):"No results found";if(q?(c.innerHTML="",q.forEach((w,$)=>{var m=document.createElement("tr");d.forEach((g,A)=>{let p="";var S=document.createElement("td");if(S.setAttribute("data-label",g.innerText),g.getAttribute("data-output")){var x=g.getAttribute("data-output");p=x.replace(new RegExp(/{(.*?)}/,"gm"),function(D){return n(w,D.replace("{","").replace("}",""))})}if(g.hasAttribute("data-output-array")){var x=g.getAttribute("data-output");let W=n(w,x.replace("{","").replace("}",""));p="",W.forEach((k,et)=>{let O=g.getAttribute("data-output-array"),E="";if(g.hasAttribute("data-output-array-property")&&g.hasAttribute("data-output-array-transform")){const T=n(k,g.getAttribute("data-output-array-property")),V=JSON.parse(g.getAttribute("data-output-array-transform"))[T];E=O.replace(`{${g.getAttribute("data-output-array-property")}}`,V)}E=E.replace(new RegExp(/{(.*?)}/,"gm"),function(T){return n(k,T.replace("{","").replace("}",""))}),p+=E})}g.hasAttribute("data-transform")&&(p=JSON.parse(g.getAttribute("data-transform"))[p],!p&&g.hasAttribute("data-default")&&(p=g.getAttribute("data-default"))),S.innerHTML=p,m.appendChild(S)}),c.appendChild(m)}),R(a,e),r.setAttribute("data-total",parseInt(y)),r.setAttribute("data-page",parseInt(L)),r.setAttribute("data-pages",Math.ceil(r.getAttribute("data-total")/r.getAttribute("data-show"))),P(a,e,o,r),C(r,o),parseInt(y)==0&&(c.innerHTML=`<tr><td colspan="100%"><span>${v}</span></td></tr>`),r.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:t,formData:s})):c.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',e.hasAttribute("data-ajax-post")){const w=new XMLHttpRequest;w.open("GET",`${window.location.href}?ajax=true&${s}`),w.send()}})}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=U(e)}};class tt 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`,r=this.classList.contains("table--cta"),n=this.classList.contains("table--export");let i=this.classList.toString();i=i.replace("table--cta",""),i=i.replace("table--loading","");const s=document.createElement("template");s.innerHTML=`
13
13
  <style>
14
- @import "${e}/css/core.min.css";
14
+ @import "${o}";
15
15
 
16
16
  :host(.mh-sm){
17
17
  max-height: none!important;
@@ -22,13 +22,15 @@
22
22
  :host(.mh-lg){
23
23
  max-height: none!important;
24
24
  }
25
+
26
+ ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
25
27
  </style>
26
- ${o?'<div class="table--cta">':""}
28
+ ${r?'<div class="table--cta">':""}
27
29
  <div class="table__wrapper ${i}">
28
30
  <slot></slot>
29
31
  </div>
30
- ${o?"</div>":""}
31
- ${s?'<button class="link" type="button" data-export>Export table as CSV</button>':""}
32
+ ${r?"</div>":""}
33
+ ${n?'<button class="link" type="button" data-export>Export table as CSV</button>':""}
32
34
  <div class="table__pagination"></div>
33
- `,this.shadowRoot.appendChild(n.content.cloneNode(!0));const r=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",r.has("page")?r.get("page"):1),this.hasAttribute("data-show")||this.setAttribute("data-show",15),this.hasAttribute("data-increment")||this.setAttribute("data-increment",15),this.setAttribute("data-pages",Math.ceil(this.getAttribute("data-total")/this.getAttribute("data-show")))}connectedCallback(){this.table=this.querySelector("table"),this.savedTableBody=this.table.querySelector("tbody").cloneNode(!0),this.pagination=this.shadowRoot.querySelector(".table__pagination"),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"),R(this.table,this.form),this.form.querySelector("[data-page]")||(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" />`),X(this.table),Y(this.table,this.form,this.pagination,this,this.savedTableBody),G(this.table,this.form,this.pagination,this),K(this.shadowRoot.querySelector("[data-export]"),this.table),this.form.getAttribute("data-ajax")?I(this.table,this.form,this.pagination,this):(P(this.table,this.form,this.pagination,this),N(this.table,this.form,this),C(this,this.pagination),H(this.table,this.form)),this.shadowRoot.querySelector(".table__wrapper").addEventListener("scroll",e=>{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-pages","data-page","data-show"]}attributeChangedCallback(e,o,s){}}export{tt as default};
35
+ `,this.shadowRoot.appendChild(s.content.cloneNode(!0))}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",15),this.hasAttribute("data-increment")||this.setAttribute("data-increment",15),this.setAttribute("data-pages",Math.ceil(this.getAttribute("data-total")/this.getAttribute("data-show"))),this.table=this.querySelector("table"),this.savedTableBody=this.table.querySelector("tbody").cloneNode(!0),this.pagination=this.shadowRoot.querySelector(".table__pagination"),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"),R(this.table,this.form),this.form.querySelector("[data-page]")||(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" />`),Q(this.table),X(this.table,this.form,this.pagination,this,this.savedTableBody),G(this.table,this.form,this.pagination,this),K(this.shadowRoot.querySelector("[data-export]"),this.table),this.form.getAttribute("data-ajax")?I(this.table,this.form,this.pagination,this):(P(this.table,this.form,this.pagination,this),N(this.table,this.form,this),C(this,this.pagination),H(this.table,this.form)),this.shadowRoot.querySelector(".table__wrapper").addEventListener("scroll",o=>{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-pages","data-page","data-show"]}attributeChangedCallback(e,o,r){}}export{tt as default};
34
36
  //# sourceMappingURL=table.component.min.js.map