@iamproperty/components 4.1.0-beta-2 → 4.1.0

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 (131) hide show
  1. package/assets/css/components/accordion.css.map +1 -1
  2. package/assets/css/components/actionbar-global.css +1 -1
  3. package/assets/css/components/actionbar-global.css.map +1 -1
  4. package/assets/css/components/address-lookup.css +1 -0
  5. package/assets/css/components/address-lookup.css.map +1 -0
  6. package/assets/css/components/admin-panel.css +1 -1
  7. package/assets/css/components/admin-panel.css.map +1 -1
  8. package/assets/css/components/dialog.css +1 -1
  9. package/assets/css/components/dialog.css.map +1 -1
  10. package/assets/css/components/fileupload.css +1 -1
  11. package/assets/css/components/fileupload.css.map +1 -1
  12. package/assets/css/components/forms.css +1 -1
  13. package/assets/css/components/forms.css.map +1 -1
  14. package/assets/css/components/header.css +1 -1
  15. package/assets/css/components/header.css.map +1 -1
  16. package/assets/css/components/lists.css +1 -1
  17. package/assets/css/components/lists.css.map +1 -1
  18. package/assets/css/components/nav-global.css +1 -1
  19. package/assets/css/components/nav-global.css.map +1 -1
  20. package/assets/css/components/nav.css +1 -1
  21. package/assets/css/components/nav.css.map +1 -1
  22. package/assets/css/components/nav.old.css +1 -1
  23. package/assets/css/components/nav.old.css.map +1 -1
  24. package/assets/css/components/notification.css +1 -1
  25. package/assets/css/components/notification.css.map +1 -1
  26. package/assets/css/components/pagination.css +1 -1
  27. package/assets/css/components/pagination.css.map +1 -1
  28. package/assets/css/components/property-searchbar.css +1 -1
  29. package/assets/css/components/property-searchbar.css.map +1 -1
  30. package/assets/css/components/table.css +1 -1
  31. package/assets/css/components/table.css.map +1 -1
  32. package/assets/css/components/table.extras.css +1 -0
  33. package/assets/css/components/table.extras.css.map +1 -0
  34. package/assets/css/components/table.global.css +1 -0
  35. package/assets/css/components/table.global.css.map +1 -0
  36. package/assets/css/components/tabs.css +1 -1
  37. package/assets/css/components/tabs.css.map +1 -1
  38. package/assets/css/core.min.css +1 -1
  39. package/assets/css/core.min.css.map +1 -1
  40. package/assets/css/style.min.css +1 -1
  41. package/assets/css/style.min.css.map +1 -1
  42. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  43. package/assets/js/components/actionbar/actionbar.component.min.js +3 -3
  44. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  45. package/assets/js/components/address-lookup/address-lookup.component.js +172 -0
  46. package/assets/js/components/address-lookup/address-lookup.component.min.js +36 -0
  47. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -0
  48. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  49. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  50. package/assets/js/components/card/card.component.min.js +1 -1
  51. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  52. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  53. package/assets/js/components/header/header.component.min.js +2 -2
  54. package/assets/js/components/nav/nav.component.min.js +2 -2
  55. package/assets/js/components/notification/notification.component.min.js +4 -4
  56. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  57. package/assets/js/components/pagination/pagination.component.js +152 -7
  58. package/assets/js/components/pagination/pagination.component.min.js +38 -12
  59. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  60. package/assets/js/components/table/table.component.js +95 -69
  61. package/assets/js/components/table/table.component.min.js +9 -13
  62. package/assets/js/components/table/table.component.min.js.map +1 -1
  63. package/assets/js/components/tabs/tabs.component.js +3 -1
  64. package/assets/js/components/tabs/tabs.component.min.js +7 -5
  65. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  66. package/assets/js/dynamic.min.js +5 -5
  67. package/assets/js/dynamic.min.js.map +1 -1
  68. package/assets/js/modules/applied-filters.js +3 -4
  69. package/assets/js/modules/dialogs.js +15 -3
  70. package/assets/js/modules/dynamicEvents.js +116 -0
  71. package/assets/js/modules/helpers.js +9 -0
  72. package/assets/js/modules/pagination.js +7 -10
  73. package/assets/js/modules/table.js +51 -52
  74. package/assets/js/modules/tabs.js +10 -1
  75. package/assets/js/scripts.bundle.js +53 -25
  76. package/assets/js/scripts.bundle.js.map +1 -1
  77. package/assets/js/scripts.bundle.min.js +2 -2
  78. package/assets/js/scripts.bundle.min.js.map +1 -1
  79. package/assets/js/tests/table.spec.js +0 -57
  80. package/assets/sass/_components.scss +2 -0
  81. package/assets/sass/_corefiles.scss +6 -2
  82. package/assets/sass/_functions/variables.scss +5 -1
  83. package/assets/sass/components/actionbar-global.scss +11 -2
  84. package/assets/sass/components/address-lookup.scss +22 -0
  85. package/assets/sass/components/admin-panel.scss +4 -0
  86. package/assets/sass/components/dialog.scss +22 -13
  87. package/assets/sass/components/fileupload.scss +2 -0
  88. package/assets/sass/components/forms.scss +231 -71
  89. package/assets/sass/components/lists.scss +119 -1
  90. package/assets/sass/components/nav-global.scss +1 -0
  91. package/assets/sass/components/notification.scss +6 -1
  92. package/assets/sass/components/pagination.scss +192 -100
  93. package/assets/sass/components/table.extras.scss +650 -0
  94. package/assets/sass/components/table.global.scss +103 -0
  95. package/assets/sass/components/table.scss +41 -565
  96. package/assets/sass/components/tabs.scss +95 -32
  97. package/assets/sass/foundations/brand.scss +4 -0
  98. package/assets/sass/foundations/buttons.scss +14 -12
  99. package/assets/sass/foundations/links.scss +2 -1
  100. package/assets/sass/helpers/dynamic.scss +3 -0
  101. package/assets/sass/templates/form.scss +84 -0
  102. package/assets/svg/logo.svg +7 -0
  103. package/assets/ts/components/address-lookup/address-lookup.component.ts +215 -0
  104. package/assets/ts/components/pagination/README.md +11 -0
  105. package/assets/ts/components/pagination/pagination.component.ts +182 -8
  106. package/assets/ts/components/table/README.md +4 -2
  107. package/assets/ts/components/table/table.component.ts +134 -83
  108. package/assets/ts/components/tabs/README.md +6 -5
  109. package/assets/ts/components/tabs/tabs.component.ts +3 -1
  110. package/assets/ts/modules/applied-filters.ts +5 -8
  111. package/assets/ts/modules/dialogs.ts +19 -4
  112. package/assets/ts/modules/dynamicEvents.ts +145 -0
  113. package/assets/ts/modules/helpers.ts +16 -1
  114. package/assets/ts/modules/pagination.ts +7 -10
  115. package/assets/ts/modules/table.ts +70 -57
  116. package/assets/ts/modules/tabs.ts +21 -10
  117. package/assets/ts/tests/table.spec.ts +1 -61
  118. package/dist/components.es.js +1123 -1008
  119. package/dist/components.umd.js +165 -80
  120. package/dist/style.css +1 -1
  121. package/package.json +3 -2
  122. package/src/components/AddressLookup/AddressLookup.vue +27 -0
  123. package/src/components/Pagination/README.md +11 -0
  124. package/src/components/Table/README.md +4 -3
  125. package/src/components/Table/Table.vue +4 -0
  126. package/src/components/Tabs/README.md +10 -7
  127. package/src/components/Tabs/Tab.vue +7 -8
  128. package/src/components/Tabs/Tabs.vue +0 -1
  129. package/src/index.js +1 -0
  130. package/assets/js/tests/pagination.spec.js +0 -15
  131. package/assets/ts/tests/pagination.spec.ts +0 -21
@@ -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 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"}
1
+ {"version":3,"file":"pagination.component.min.js","sources":["pagination.component.js"],"sourcesContent":["// @ts-nocheck\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 loadCSS = `@import \"${assetLocation}/css/components/pagination.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n \n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"pagination d-none\">\n \n <div class=\"minimal\" part=\"minimal\">\n <div class=\"page-jump\">\n <div><select class=\"select--minimal\"></select></div>\n <span class=\"total-pages\"></span>\n </div>\n \n <button class=\"prev\" disabled>Prev</button>\n <button class=\"next\" disabled>Next</button>\n </div>\n\n <div class=\"item-count\" part=\"item-count\"></div>\n <div class=\"per-page\" part=\"per-page\">\n <div>\n <select class=\"select--minimal\">\n <option value=\"15\">15</option>\n <option value=\"25\">25</option>\n <option value=\"40\">40</option>\n <option value=\"50\">50</option>\n </select>\n </div>\n <span> / page</span>\n </div>\n <div class=\"mobile-controls m-auto text-center\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <button class=\"load-more btn btn-primary m-auto\">Load more</a>\n </div>\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', 15);\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', this.getAttribute('data-show'));\n // Elements\n const select = this.shadowRoot.querySelector('.page-jump select');\n const prev = this.shadowRoot.querySelector('.prev');\n const next = this.shadowRoot.querySelector('.next');\n const perPage = this.shadowRoot.querySelector('.per-page select');\n const loadMore = this.shadowRoot.querySelector('.load-more');\n // Add the select inputs, enable or disable buttons, update the helper text\n this.setup();\n // Select on change will update the data-page attr which will dispatch an event\n select.addEventListener('change', (event) => {\n this.setAttribute('data-show', this.getAttribute('data-increment'));\n this.setAttribute('data-page', event.target.value);\n });\n // Next and previous buttons will simply trigger and on change on the select which in turn will dispatch an event\n next.addEventListener('click', (event) => {\n select.value = parseInt(select.value) + 1;\n select.dispatchEvent(new Event('change'));\n });\n prev.addEventListener('click', (event) => {\n select.value = parseInt(select.value) - 1;\n select.dispatchEvent(new Event('change'));\n });\n // Update how many is shown \n perPage.addEventListener('change', (event) => {\n this.setAttribute('data-increment', event.target.value);\n });\n loadMore.addEventListener('click', (event) => {\n let newValue = parseInt(this.getAttribute('data-show')) + parseInt(this.getAttribute('data-increment'));\n this.setAttribute('data-show', newValue);\n if (newValue > parseInt(this.getAttribute('data-total'))) {\n loadMore.remove();\n }\n });\n }\n setup() {\n // Elements\n const wrapper = this.shadowRoot.querySelector('.pagination');\n const select = this.shadowRoot.querySelector('.page-jump select');\n const prev = this.shadowRoot.querySelector('.prev');\n const next = this.shadowRoot.querySelector('.next');\n const itemCount = this.shadowRoot.querySelector('.item-count');\n const perPage = this.shadowRoot.querySelector('.per-page select');\n const totalPages = this.shadowRoot.querySelector('.total-pages');\n // Values\n const currentPage = parseInt(this.getAttribute('data-page'));\n const total = parseInt(this.getAttribute('data-total'));\n const show = parseInt(this.getAttribute('data-show'));\n const increment = parseInt(this.getAttribute('data-increment'));\n const numberPages = Math.ceil(total / increment);\n if (total > show)\n wrapper.classList.remove('d-none');\n // Populate the select input with the number of pages\n let strOptions = '';\n for (let i = 1; i <= numberPages; i++) {\n strOptions += `<option value=\"${i}\" ${i == currentPage ? 'selected' : ''}>${i}</option>`;\n }\n select.innerHTML = strOptions;\n totalPages.innerHTML = `of ${numberPages}`;\n // Next button\n if (currentPage == numberPages)\n next.setAttribute('disabled', 'disabled');\n else\n next.removeAttribute('disabled');\n if (currentPage == 1)\n prev.setAttribute('disabled', 'disabled');\n else\n prev.removeAttribute('disabled');\n // Update the item count text\n let startPoint = currentPage == 1 ? 1 : ((currentPage - 1) * show) + 1;\n let endPoint = currentPage == 1 ? show : ((currentPage) * show);\n itemCount.innerHTML = `${startPoint} - ${endPoint > total ? total : endPoint} of ${total} items`;\n const defaultValues = [15, 25, 40, 50];\n // Update the per page options if needed\n if (increment && perPage.value != increment && !defaultValues.includes(increment)) {\n perPage.innerHTML = `<option value=\"${increment}\">${increment}</option>\n <option value=\"${increment * 2}\">${increment * 2}</option>\n <option value=\"${increment * 3}\">${increment * 3}</option>\n <option value=\"${increment * 4}\">${increment * 4}</option>`;\n }\n perPage.value = increment;\n }\n static get observedAttributes() {\n return [\"data-total\", \"data-increment\", \"data-page\", \"data-show\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case \"data-total\": {\n if (oldVal != newVal) {\n this.setAttribute('data-page', 1);\n this.setup();\n }\n break;\n }\n case \"data-show\": {\n if (oldVal != newVal) {\n this.setAttribute('data-page', 1);\n this.setup();\n this.dispatchEvent(new CustomEvent('update-show', { detail: { show: newVal } }));\n }\n break;\n }\n case \"data-increment\": {\n if (oldVal != newVal) {\n this.setAttribute('data-show', newVal);\n this.setAttribute('data-page', 1);\n this.setup();\n this.dispatchEvent(new CustomEvent('update-show', { detail: { show: newVal } }));\n }\n break;\n }\n case \"data-page\": {\n if (oldVal != newVal) {\n this.setup();\n // Dispact the event for other components to use as triggers \n this.dispatchEvent(new CustomEvent('update-page', { detail: { page: newVal } }));\n }\n break;\n }\n }\n }\n}\nexport default iamPagination;\n"],"names":["iamPagination","assetLocation","coreCSS","template","params","select","prev","next","perPage","loadMore","event","newValue","wrapper","itemCount","totalPages","currentPage","total","show","increment","numberPages","strOptions","i","startPoint","endPoint","defaultValues","attrName","oldVal","newVal"],"mappings":";;;IACA,MAAMA,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,qBAEzGE,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAY;AAAA;AAAA,eAEdD;AAAA;AAAA;AAAA;AAAA,MAGT,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiCpE,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,EAAE,EACjC,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,KAAK,aAAa,WAAW,CAAC,EAEtE,MAAMC,EAAS,KAAK,WAAW,cAAc,mBAAmB,EAC1DC,EAAO,KAAK,WAAW,cAAc,OAAO,EAC5CC,EAAO,KAAK,WAAW,cAAc,OAAO,EAC5CC,EAAU,KAAK,WAAW,cAAc,kBAAkB,EAC1DC,EAAW,KAAK,WAAW,cAAc,YAAY,EAE3D,KAAK,MAAK,EAEVJ,EAAO,iBAAiB,SAAWK,GAAU,CACzC,KAAK,aAAa,YAAa,KAAK,aAAa,gBAAgB,CAAC,EAClE,KAAK,aAAa,YAAaA,EAAM,OAAO,KAAK,CAC7D,CAAS,EAEDH,EAAK,iBAAiB,QAAUG,GAAU,CACtCL,EAAO,MAAQ,SAASA,EAAO,KAAK,EAAI,EACxCA,EAAO,cAAc,IAAI,MAAM,QAAQ,CAAC,CACpD,CAAS,EACDC,EAAK,iBAAiB,QAAUI,GAAU,CACtCL,EAAO,MAAQ,SAASA,EAAO,KAAK,EAAI,EACxCA,EAAO,cAAc,IAAI,MAAM,QAAQ,CAAC,CACpD,CAAS,EAEDG,EAAQ,iBAAiB,SAAWE,GAAU,CAC1C,KAAK,aAAa,iBAAkBA,EAAM,OAAO,KAAK,CAClE,CAAS,EACDD,EAAS,iBAAiB,QAAUC,GAAU,CAC1C,IAAIC,EAAW,SAAS,KAAK,aAAa,WAAW,CAAC,EAAI,SAAS,KAAK,aAAa,gBAAgB,CAAC,EACtG,KAAK,aAAa,YAAaA,CAAQ,EACnCA,EAAW,SAAS,KAAK,aAAa,YAAY,CAAC,GACnDF,EAAS,OAAM,CAE/B,CAAS,CACJ,CACD,OAAQ,CAEJ,MAAMG,EAAU,KAAK,WAAW,cAAc,aAAa,EACrDP,EAAS,KAAK,WAAW,cAAc,mBAAmB,EAC1DC,EAAO,KAAK,WAAW,cAAc,OAAO,EAC5CC,EAAO,KAAK,WAAW,cAAc,OAAO,EAC5CM,EAAY,KAAK,WAAW,cAAc,aAAa,EACvDL,EAAU,KAAK,WAAW,cAAc,kBAAkB,EAC1DM,EAAa,KAAK,WAAW,cAAc,cAAc,EAEzDC,EAAc,SAAS,KAAK,aAAa,WAAW,CAAC,EACrDC,EAAQ,SAAS,KAAK,aAAa,YAAY,CAAC,EAChDC,EAAO,SAAS,KAAK,aAAa,WAAW,CAAC,EAC9CC,EAAY,SAAS,KAAK,aAAa,gBAAgB,CAAC,EACxDC,EAAc,KAAK,KAAKH,EAAQE,CAAS,EAC3CF,EAAQC,GACRL,EAAQ,UAAU,OAAO,QAAQ,EAErC,IAAIQ,EAAa,GACjB,QAASC,EAAI,EAAGA,GAAKF,EAAaE,IAC9BD,GAAc,kBAAkBC,MAAMA,GAAKN,EAAc,WAAa,MAAMM,aAEhFhB,EAAO,UAAYe,EACnBN,EAAW,UAAY,MAAMK,IAEzBJ,GAAeI,EACfZ,EAAK,aAAa,WAAY,UAAU,EAExCA,EAAK,gBAAgB,UAAU,EAC/BQ,GAAe,EACfT,EAAK,aAAa,WAAY,UAAU,EAExCA,EAAK,gBAAgB,UAAU,EAEnC,IAAIgB,EAAaP,GAAe,EAAI,GAAMA,EAAc,GAAKE,EAAQ,EACjEM,EAAWR,GAAe,EAAIE,EAASF,EAAeE,EAC1DJ,EAAU,UAAY,GAAGS,OAAgBC,EAAWP,EAAQA,EAAQO,QAAeP,UACnF,MAAMQ,EAAgB,CAAC,GAAI,GAAI,GAAI,EAAE,EAEjCN,GAAaV,EAAQ,OAASU,GAAa,CAACM,EAAc,SAASN,CAAS,IAC5EV,EAAQ,UAAY,kBAAkBU,MAAcA;AAAA,uBACzCA,EAAY,MAAMA,EAAY;AAAA,uBAC9BA,EAAY,MAAMA,EAAY;AAAA,uBAC9BA,EAAY,MAAMA,EAAY,cAE7CV,EAAQ,MAAQU,CACnB,CACD,WAAW,oBAAqB,CAC5B,MAAO,CAAC,aAAc,iBAAkB,YAAa,WAAW,CACnE,CACD,yBAAyBO,EAAUC,EAAQC,EAAQ,CAC/C,OAAQF,EAAQ,CACZ,IAAK,aAAc,CACXC,GAAUC,IACV,KAAK,aAAa,YAAa,CAAC,EAChC,KAAK,MAAK,GAEd,KACH,CACD,IAAK,YAAa,CACVD,GAAUC,IACV,KAAK,aAAa,YAAa,CAAC,EAChC,KAAK,MAAK,EACV,KAAK,cAAc,IAAI,YAAY,cAAe,CAAE,OAAQ,CAAE,KAAMA,EAAU,CAAA,CAAC,GAEnF,KACH,CACD,IAAK,iBAAkB,CACfD,GAAUC,IACV,KAAK,aAAa,YAAaA,CAAM,EACrC,KAAK,aAAa,YAAa,CAAC,EAChC,KAAK,MAAK,EACV,KAAK,cAAc,IAAI,YAAY,cAAe,CAAE,OAAQ,CAAE,KAAMA,EAAU,CAAA,CAAC,GAEnF,KACH,CACD,IAAK,YAAa,CACVD,GAAUC,IACV,KAAK,MAAK,EAEV,KAAK,cAAc,IAAI,YAAY,cAAe,CAAE,OAAQ,CAAE,KAAMA,EAAU,CAAA,CAAC,GAEnF,KACH,CACJ,CACJ,CACL"}
@@ -1,16 +1,18 @@
1
1
  // @ts-nocheck
2
2
  import * as tableModule from "../../modules/table.js";
3
- import createPaginationButttons from "../../modules/pagination.js";
4
3
  class iamTable extends HTMLElement {
5
4
  constructor() {
6
5
  super();
7
6
  this.attachShadow({ mode: 'open' });
8
7
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
9
8
  const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
9
+ const loadCSS = `@import "${assetLocation}/css/components/table.css";`;
10
+ const loadExtraCSS = `@import "${assetLocation}/css/components/table.extras.css";`;
10
11
  const template = document.createElement('template');
11
12
  template.innerHTML = `
12
13
  <style>
13
14
  @import "${coreCSS}";
15
+ ${loadCSS}
14
16
 
15
17
  :host(.mh-sm){
16
18
  max-height: none!important;
@@ -30,9 +32,12 @@ class iamTable extends HTMLElement {
30
32
  <slot></slot>
31
33
  </div>
32
34
  </div>
33
- <div class="table__pagination"></div>
35
+ <iam-pagination class="pagination--table" ${this.hasAttribute('data-page') ? `data-page="${this.getAttribute('data-page')}"` : ''} ></iam-pagination>
34
36
  `;
35
37
  this.shadowRoot.appendChild(template.content.cloneNode(true));
38
+ // insert extra CSS
39
+ if (!document.getElementById('tableExtras'))
40
+ document.head.insertAdjacentHTML('beforeend', `<style id="tableExtras">${loadExtraCSS}</style>`);
36
41
  }
37
42
  connectedCallback() {
38
43
  const params = new URLSearchParams(window.location.search);
@@ -42,10 +47,9 @@ class iamTable extends HTMLElement {
42
47
  if (!this.hasAttribute('data-page'))
43
48
  this.setAttribute('data-page', (params.has('page') ? params.get('page') : 1));
44
49
  if (!this.hasAttribute('data-show'))
45
- this.setAttribute('data-show', 15);
50
+ this.setAttribute('data-show', (params.has('show') ? params.get('show') : 15));
46
51
  if (!this.hasAttribute('data-increment'))
47
- this.setAttribute('data-increment', 15);
48
- this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));
52
+ this.setAttribute('data-increment', this.getAttribute('data-show'));
49
53
  // Update table__wrapper class
50
54
  let classList = this.classList.toString();
51
55
  classList = classList.replace('table--cta', '');
@@ -56,7 +60,21 @@ class iamTable extends HTMLElement {
56
60
  this.shadowRoot.querySelector('.table__wrapper').classList.add('has-actionbar');
57
61
  this.table = this.querySelector('table');
58
62
  this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);
59
- this.pagination = this.shadowRoot.querySelector('.table__pagination');
63
+ this.pagination = this.shadowRoot.querySelector('iam-pagination');
64
+ this.pagination.setAttribute('data-total', this.getAttribute('data-total'));
65
+ this.pagination.setAttribute('data-page', this.getAttribute('data-page'));
66
+ this.pagination.setAttribute('data-show', this.getAttribute('data-show'));
67
+ this.pagination.setAttribute('data-increment', this.getAttribute('data-show'));
68
+ if (this.hasAttribute('data-page-jump'))
69
+ this.pagination.setAttribute('data-page-jump', 'true');
70
+ if (this.hasAttribute('data-per-page'))
71
+ this.pagination.setAttribute('data-per-page', 'true');
72
+ if (this.hasAttribute('data-item-count'))
73
+ this.pagination.setAttribute('data-item-count', 'true');
74
+ if (this.hasAttribute('data-loading'))
75
+ this.pagination.setAttribute('data-loading', 'true');
76
+ if (this.classList.contains('table--fullwidth'))
77
+ this.pagination.setAttribute('data-minimal', 'true');
60
78
  // Remove table CTA
61
79
  const isCTA = this.classList.contains('table--cta');
62
80
  if (!isCTA)
@@ -74,7 +92,7 @@ class iamTable extends HTMLElement {
74
92
  this.table.classList.add('table--ajax');
75
93
  // Create a data list if a search input is present
76
94
  tableModule.createSearchDataList(this.table, this.form);
77
- if (!this.form.querySelector('[data-page]')) {
95
+ if (!this.form.querySelector('[data-pagination]')) {
78
96
  this.form.innerHTML += `<input name="page" type="hidden" value="${this.getAttribute('data-page')}" data-pagination="true" />`;
79
97
  }
80
98
  if (!this.form.querySelector('[data-show]')) {
@@ -89,9 +107,58 @@ class iamTable extends HTMLElement {
89
107
  tableModule.loadAjaxTable(this.table, this.form, this.pagination, this);
90
108
  }
91
109
  else {
110
+ function uniqueID(index = 1) {
111
+ let ID = Math.floor(Math.random() * Date.now() * (index + 1));
112
+ return ID;
113
+ }
114
+ // Add in the checkboxes
115
+ if (this.querySelector('iam-actionbar[data-selectall]')) {
116
+ const actionbar = this.querySelector('iam-actionbar[data-selectall]');
117
+ Array.from(this.table.querySelectorAll('thead tr')).forEach((row, index) => {
118
+ row.insertAdjacentHTML('afterbegin', `<th class="th--fixed"></th>`);
119
+ });
120
+ Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {
121
+ let rowID = `row${uniqueID(index)}`;
122
+ row.insertAdjacentHTML('afterbegin', `<td class="td--fixed selectrow"><input type="checkbox" name="row" id="${rowID}"/><label for="${rowID}"><span class="visually-hidden">Select row</span></label></td>`);
123
+ });
124
+ this.table.addEventListener('change', (event) => {
125
+ if (event && event.target instanceof HTMLElement && event.target.closest('.selectrow input')) {
126
+ let count = this.table.querySelectorAll('.selectrow input[type="checkbox"]').length;
127
+ let countChecked = this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;
128
+ actionbar.setAttribute('data-selected', count == countChecked ? "all" : countChecked);
129
+ }
130
+ ;
131
+ });
132
+ actionbar.addEventListener('selected', (event) => {
133
+ if (event.detail.selected == '0') {
134
+ Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((input, index) => {
135
+ input.checked = false;
136
+ });
137
+ }
138
+ else if (event.detail.selected == 'all') {
139
+ Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((input, index) => {
140
+ input.checked = true;
141
+ });
142
+ }
143
+ });
144
+ }
145
+ // Make the dialog menus columns fixed
146
+ let colIndex = -1;
147
+ Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {
148
+ if (row.querySelector(':scope > td > .dialog__wrapper')) {
149
+ let columnn = row.querySelector(':scope > td > .dialog__wrapper').parentNode;
150
+ columnn.classList.add('td--fixed');
151
+ colIndex = Array.from(columnn.parentNode.children).indexOf(columnn);
152
+ }
153
+ });
154
+ if (colIndex != -1) {
155
+ this.table.querySelector(`thead tr th:nth-child(${colIndex + 1})`).classList.add('th--fixed');
156
+ Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${colIndex + 1})`)).forEach((col, index) => {
157
+ col.classList.add('td--fixed');
158
+ });
159
+ }
92
160
  tableModule.makeTableFunctional(this.table, this.form, this.pagination, this);
93
161
  tableModule.filterTable(this.table, this.form, this);
94
- createPaginationButttons(this, this.pagination);
95
162
  tableModule.populateDataQueries(this.table, this.form);
96
163
  }
97
164
  this.shadowRoot.querySelector('.table__wrapper').addEventListener("scroll", (event) => {
@@ -100,73 +167,32 @@ class iamTable extends HTMLElement {
100
167
  this.table.querySelector('.dialog__wrapper > button.active').classList.remove('active');
101
168
  }
102
169
  });
103
- // Add in the checkboxes
104
- if (this.querySelector('iam-actionbar[data-selectall]')) {
105
- const actionbar = this.querySelector('iam-actionbar[data-selectall]');
106
- Array.from(this.table.querySelectorAll('thead tr')).forEach((row, index) => {
107
- row.insertAdjacentHTML('afterbegin', "<th></th>");
108
- });
109
- Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {
110
- row.insertAdjacentHTML('afterbegin', `<td class="selectrow"><input type="checkbox" name="row" id="row${index}"/><label for="row${index}"><span class="visually-hidden">Select row</span></label></td>`);
111
- });
112
- this.table.addEventListener('change', (event) => {
113
- if (event && event.target instanceof HTMLElement && event.target.closest('.selectrow input')) {
114
- let count = this.table.querySelectorAll('.selectrow input[type="checkbox"]').length;
115
- let countChecked = this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;
116
- actionbar.setAttribute('data-selected', count == countChecked ? "all" : countChecked);
117
- console.log(countChecked);
118
- }
119
- ;
120
- });
121
- actionbar.addEventListener('selected', (event) => {
122
- console.log(event.detail.selected);
123
- if (event.detail.selected == '0') {
124
- Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((input, index) => {
125
- input.checked = false;
126
- });
127
- }
128
- else if (event.detail.selected == 'all') {
129
- Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((input, index) => {
130
- input.checked = true;
131
- });
132
- }
133
- });
134
- }
135
170
  }
136
171
  static get observedAttributes() {
137
- return ["data-total", "data-pages", "data-page", "data-show"];
172
+ return ["data-total", "data-page", "data-show"];
138
173
  }
139
174
  attributeChangedCallback(attrName, oldVal, newVal) {
140
- /*
175
+ this.pagination = this.shadowRoot.querySelector('iam-pagination');
141
176
  switch (attrName) {
142
- case "data-total": {
143
- this.setAttribute('data-pages', Math.ceil(newVal / this.getAttribute('data-show')));
144
- break;
145
- }
146
- case "data-show": {
147
- this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / newVal));
148
- break;
149
- }
150
- case "data-pages": {
151
- console.log('create pagination');
152
-
153
- tableModule.filterTable(this.table, this.form);
154
- createPaginationButttons(this,this.pagination);
155
-
156
- break;
157
- }
158
- case "data-page": {
159
-
160
- let paginationInput = this.form.querySelector('[data-pagination]');
161
-
162
- paginationInput.value = newVal;
163
-
164
- //tableModule.filterTable(this.table, this.form);
165
-
166
- break;
167
- }
177
+ case "data-total": {
178
+ if (oldVal != newVal) {
179
+ this.pagination.setAttribute('data-total', newVal);
180
+ }
181
+ break;
182
+ }
183
+ case "data-show": {
184
+ if (oldVal != newVal) {
185
+ this.pagination.setAttribute('data-show', newVal);
186
+ }
187
+ break;
188
+ }
189
+ case "data-page": {
190
+ if (oldVal != newVal) {
191
+ this.pagination.setAttribute('data-page', newVal);
192
+ }
193
+ break;
194
+ }
168
195
  }
169
- */
170
196
  }
171
197
  }
172
198
  export default iamTable;
@@ -1,17 +1,12 @@
1
1
  /*!
2
- * iamKey v4.1.0-beta-2
2
+ * iamKey v4.1.0
3
3
  * Copyright 2022-2023 iamproperty
4
- */const z=function(a){return typeof a!="string"?!1:!isNaN(a)&&!isNaN(parseFloat(a))},Y=(a,e)=>String(a).padStart(e,"0"),Q=a=>a.charAt(0).toUpperCase()+a.slice(1),T=function(a,e){if(!a.getAttribute("data-pages"))return!1;a.getAttribute("data-page")||a.setAttribute("data-page",1);let l=a.getAttribute("data-page"),s=a.getAttribute("data-pages"),o=a.getAttribute("data-total"),i=a.getAttribute("data-show"),r=a.getAttribute("data-increment");if(s<=1)return e.innerHTML="",!1;let c="";for(let u=1;u<=s;u++)u==l?c+=`<li class="page-item active" aria-current="page"><span class="page-link">${u}</span></li>`:c+=`<li class="page-item"><a href="?page=${u}" class="page-link" data-page="${u}">${u}</a></li>`;return e.innerHTML=`<ul class="pagination mb-0 d-none d-sm-flex">
5
- ${l==1?'<li class="page-item disabled"><span class="page-link">Previous</span></li>':`<li class="page-item"><a href="?page=${parseInt(l)-1}" class="page-link" data-page="${parseInt(l)-1}">Previous</a></li>`}
6
- ${c}
7
- ${l==s?'<li class="page-item disabled"><span class="page-link">Next</span></li>':`<li class="page-item"><a href="?page=${parseInt(l)+1}" class="page-link" data-page="${parseInt(l)+1}">Next</a></li>`}
8
- </ul>`,e.innerHTML+=`<div class="d-sm-none text-center">
9
- <span class="d-block pb-2">You've viewed ${i} of ${o} results</span>
10
- <a href="?show=${parseInt(i)+parseInt(r)}" class="btn btn-primary w-100 m-0" data-show="${parseInt(i)+parseInt(r)}">Load more results</a>
11
- </div>`,!0};var X=function(a,e,l,s){function o(i){return i instanceof l?i:new l(function(r){r(i)})}return new(l||(l=Promise))(function(i,r){function c(f){try{t(s.next(f))}catch(d){r(d)}}function u(f){try{t(s.throw(f))}catch(d){r(d)}}function t(f){f.done?i(f.value):o(f.value).then(c,u)}t((s=s.apply(a,e||[])).next())})};const N=a=>{const e=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((s,o)=>{const i=Array.from(s.querySelectorAll("th, td")),r=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","error"];i.forEach((c,u)=>{const t=e[u];if(typeof t<"u"){let f=document.createElement("div");f.innerHTML=t.innerHTML;let d=f.textContent||f.innerText||"";c.setAttribute("data-label",d),t.hasAttribute("data-td-class")&&c.setAttribute("class",t.getAttribute("data-td-class")),t.hasAttribute("data-format")&&(c.setAttribute("data-format",t.getAttribute("data-format")),c.innerHTML=_(t.getAttribute("data-format"),c.textContent.trim())),r.includes(c.textContent.trim().toLowerCase())&&c.setAttribute("data-content",c.textContent.trim().toLowerCase())}})})},J=a=>{let e=0;return Array.from(a.querySelectorAll("tbody tr")).forEach((l,s)=>{let o=window.getComputedStyle(document.querySelector("html")),i=l.querySelector(":scope > *:last-child > *:first-child");if(i){i.classList.add("text-nowrap");let r=i.offsetWidth/parseFloat(o.fontSize);r+=1.7,e=e>r?e:r}}),e},G=a=>{if(a.closest(".table--fullwidth")||a.querySelectorAll("thead tr th").length<4)return!1;Array.from(a.querySelectorAll("tbody tr")).forEach((e,l)=>{let s=e.querySelector(":scope > :is(td,th):first-child"),o=s.textContent;if(o!="")s.innerHTML=`<span class="td__content">${o}</span><button type="button" class="d-none">${o}</button>`;else{let i=e.querySelector(":scope > :is(td,th):nth-child(2)"),r=i.textContent;i.innerHTML=`<span class="td__content">${r}</span><button type="button" class="d-none">${r}</button>`}})},K=a=>{a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("tr > :is(td,th):first-child button")){let l=e.target.closest("tr > :is(td,th):first-child button"),s=l.parentNode.closest("tr");s.getAttribute("data-view")=="full"?s.setAttribute("data-view","default"):s.setAttribute("data-view","full"),l.blur()}})},I=(a,e)=>{let l=e.querySelector("[data-search]");if(!l)return!1;const s=l.getAttribute("id"),o=l.getAttribute("data-search").split(",");let i=l.parentNode,r={};o.forEach((c,u)=>{Array.from(a.querySelectorAll('td[data-label="'+c.trim()+'"]')).forEach((t,f)=>{t.querySelector(".td__content")?r[t.querySelector(".td__content").textContent]=t.querySelector(".td__content").textContent:r[t.textContent]=t.textContent})}),l.setAttribute("list",`${s}_list`),l.setAttribute("autocomplete","off"),i.querySelector("datalist")||(i.innerHTML+=`<datalist id="${s}_list"></datalist>`),i.querySelector("datalist").innerHTML=`${Object.keys(r).map(c=>`<option value="${c}"></option>`).join("")}`},Z=(a,e,l,s,o)=>{var i;let r=function(t,f=!1){if(e.classList.contains("processing"))return!1;if(t.type=="submit"&&(e.classList.add("processing"),Array.from(e.querySelectorAll("[data-duplicate]")).forEach((d,g)=>{const h=d.getAttribute("data-duplicate"),n=document.getElementById(h),y=document.querySelector(`[for="${h}"] iam-card`);if(n.checked!=d.checked)if(y){let A=new Event("click");y.dispatchEvent(A)}else n.checked=d.checked}),e.classList.remove("processing")),e.hasAttribute("data-ajax")){if(!f){let d=e.querySelector("[data-pagination]");d.value=1,s.setAttribute("data-page",1)}F(a,e,l,s)}else e.hasAttribute("data-submit")?e.submit():(D(a,e,s),T(s,l),$(a,e));if(e.hasAttribute("data-ajax-post")){let d=new FormData(e),g=new URLSearchParams(d).toString();const h=new XMLHttpRequest;h.open("GET",`${window.location.href}?ajax=true&${g}`),h.send()}};e.addEventListener("keyup",t=>{clearTimeout(i),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&(i=setTimeout(function(){r(t)},500))}),e.addEventListener("change",t=>{clearTimeout(i),t&&t.target instanceof HTMLElement&&t.target.closest("[data-sort]")&&(e.hasAttribute("data-submit")||P(a,e,o),r(t)),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&r(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter][data-no-ajax]")?(D(a,e,s),T(s,l),$(a,e)):(t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&t.target.closest("form .dialog__wrapper > dialog")||t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&!t.target.closest("form dialog"))&&r(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-show]")&&r(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-mimic]")&&r(t)}),e.addEventListener("click",t=>{if(clearTimeout(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.classList.add("processing"),Array.from(e.querySelectorAll(".applied-filters")).forEach((d,g)=>{d.innerHTML=""});let f=e.elements;for(let d=0;d<f.length;d++)switch(f[d].type.toLowerCase()?f[d].type.toLowerCase():"text"){case"text":case"password":case"textarea":f[d].value="";break;case"radio":case"checkbox":f[d].checked&&(f[d].checked=!1);break;case"select-one":case"select-multi":f[d].selectedIndex=-1;break}Array.from(e.querySelectorAll("label iam-card")).forEach((d,g)=>{let h=new Event("click");d.dispatchEvent(h)}),e.classList.remove("processing"),e.hasAttribute("data-submit")||P(a,e,o),r(t)}}),e.addEventListener("submit",t=>{clearTimeout(i),e.hasAttribute("data-submit")||t.preventDefault(),r(t)}),e.addEventListener("force",t=>{r(t)}),e.addEventListener("paginate",t=>{r(t,!0)});let c=[],u=[];Array.from(e.querySelectorAll("[data-mimic]")).forEach((t,f)=>{let d=t.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${d}"]`)).forEach((g,h)=>{let n=g.closest("form");c.includes(n)||c.push(n),u.includes(d)||u.push(d)})}),c.forEach((t,f)=>{const d=function(){let g=[],h=new FormData(t);for(const[n,y]of h)document.querySelector(`[data-mimic="${n}"]`)&&!g.includes(n)?(g.push(n),document.querySelector(`[data-mimic="${n}"]`).value=y):document.querySelector(`[data-mimic="${n}"]`)&&(document.querySelector(`[data-mimic="${n}"]`).value+=","+y);for(const n of g){const y=new Event("force");e.dispatchEvent(y)}for(const n of u)if(!h.has(n)&&t.querySelector(`[name="${n}"]`)){document.querySelector(`[data-mimic="${n}"]`).value="";const y=new Event("force");e.dispatchEvent(y)}};t.addEventListener("force",g=>{d()}),t.addEventListener("change",g=>{d()})})},P=(a,e,l)=>{if(e.getAttribute("data-ajax"))return!1;let s=a.querySelector("tbody"),o=e.querySelector("[data-sort]"),i=o.querySelector(`option:nth-child(${o.selectedIndex+1})`),r=i.getAttribute("data-sort"),c=i.getAttribute("data-order"),u=i.getAttribute("data-format");if(!r)return s.innerHTML=l.innerHTML,N(a),!1;let t=[];["asc","desc","descending"].includes(c)||(t=c.split(","));let f=[];Array.from(s.querySelectorAll("tr")).forEach((g,h)=>{let n=g.querySelector('td[data-label="'+r+'"], th[data-label="'+r+'"]').textContent.trim();g.querySelector('[data-label="'+r+'"] .td__content')&&(n=g.querySelector('[data-label="'+r+'"] .td__content').textContent.trim()),t.length&&t.includes(n)&&(n=t.indexOf(n)),z(n)&&(n=Y(n,10)),u&&u=="date"&&(n=new Date(n));const y={index:n,row:g};f.push(y)}),f.sort((g,h)=>g.index>h.index?1:-1),(c=="descending"||c=="desc")&&(f=f.reverse());let d="";f.forEach((g,h)=>{d+=g.row.outerHTML}),s.innerHTML=d},D=(a,e,l)=>{a.classList.remove("table--filtered");let s=W(e),o=[],i=0,r=e.querySelector("[data-pagination]")?parseInt(e.querySelector("[data-pagination]").value):1,c=e.querySelector("[data-show]")?parseInt(e.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((t,f)=>{t.classList.remove("filtered"),t.classList.remove("filtered--matched"),t.classList.remove("filtered--show"),t.removeAttribute("data-filtered-by")}),e.querySelector("[data-search]")){let t=e.querySelector("[data-search]");e.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((d,g)=>{o.push({column:`${d.trim()}`,value:`${t.value}`})})}Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,f)=>{t.innerHTML="",t.parentNode.classList.remove("hover")});let u=0;Object.values(s).forEach((t,f)=>{typeof t=="object"&&Object.values(t).length?u+=Object.values(t).length:u++}),u&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,f)=>{t.innerHTML+=`(${u})`,t.parentNode.classList.add("hover")}),a.classList.add("table--filtered");for(const[t,f]of Object.entries(s))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((d,g)=>{let h=!1;f.forEach((n,y)=>{let A=d.querySelector(`[data-label="${t}"]`);if(n&&n=="$today")n=_("date",new Date);else if(n&&n=="$yesterday"){let p=new Date;p.setDate(p.getDate()-1),n=_("date",p)}else if(n&&(n=="$thisWeek"||n=="$lastWeek")){let p=new Date,w=new Date(p.setDate(p.getDate()-(p.getDay()-1))),m=new Date(p.setDate(p.getDate()-p.getDay()+7)),b=new Date(A.textContent.toLowerCase());if(p.setHours(0,0,0,0),w.setHours(0,0,0,0),m.setHours(0,0,0,0),b.setHours(0,0,0,0),n=="$thisWeek")h=b>=w&&b<=m;else{let C=new Date(w.setDate(w.getDate()-7)),L=new Date(m.setDate(m.getDate()-7));C.setHours(0,0,0,0),L.setHours(0,0,0,0),h=b>=C&&b<=L}}else if(n&&n=="$thisMonth"){let p=new Date,w=p.getFullYear(),m=p.getMonth();var S=new Date(w,m,1),q=new Date(w,m+1,0);let b=new Date(A.textContent.toLowerCase());S.setHours(0,0,0,0),q.setHours(0,0,0,0),b.setHours(0,0,0,0),h=b>=S&&b<=q}else if(n&&n=="$lastMonth"){let p=new Date,w=p.getFullYear(),m=p.getMonth();var x=new Date(w,m-1,1),E=new Date(w,m,0);let b=new Date(A.textContent.toLowerCase());x.setHours(0,0,0,0),E.setHours(0,0,0,0),b.setHours(0,0,0,0),h=b>=x&&b<=E}A&&A.textContent.toLowerCase().includes(n.toLowerCase())&&(h=!0)}),h||(d.classList.add("filtered"),d.setAttribute("data-filtered-by",t))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((t,f)=>{let d=!(o.length>0&&o[0].value.length>=3);o.forEach((g,h)=>{let n=t.querySelector(`[data-label="${g.column}"]`);n&&g.value.length>=3&&n.textContent.toLowerCase().includes(g.value.toLowerCase())&&(d=!0)}),d||t.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((t,f)=>{i++,t.classList.add("filtered--matched"),Math.ceil(i/c)==parseInt(r)&&t.classList.add("filtered--show")}),l&&(l.setAttribute("data-page",r),l.setAttribute("data-pages",Math.ceil(i/c)),l.setAttribute("data-total",i),l.setAttribute("data-show",c))},$=(a,e,l)=>{Array.from(e.querySelectorAll("[data-query]")).forEach((o,i)=>{let r=o.getAttribute("data-query"),c;if(r=="total")l.hasAttribute("data-total")?c=l.getAttribute("data-total"):c=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!r.includes(" == ")&&r.includes(" & ")){let u=r.split(" & "),t="";u.forEach(f=>{t+=`:not([data-filtered-by="${f}"])`}),c=Array.from(a.querySelectorAll(`tbody tr${t}`)).length}else if(!r.includes(" == "))c=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${r}"])`)).length;else if(r.includes(" && ")){let u=r.split(" && ");c=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(t){let f=!0;for(const[d,g]of Object.entries(u)){let h=g.split(" == ");(!t.querySelector(`td[data-label="${h[0]}"]`)||t.querySelector(`td[data-label="${h[0]}"]`).textContent!=`${h[1]}`)&&(f=!1)}return f}).length}else{let u=r.split(" == ");c=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${u[0]}"], tbody tr[data-filtered-by="${u[0]}"] td[data-label="${u[0]}"]`)).filter(function(t){return t.textContent===u[1]}).length}o.hasAttribute("data-total")?o.setAttribute("data-total",c):o.innerHTML=c})},tt=function(a,e,l,s){l.addEventListener("click",o=>{if(o&&o.target instanceof HTMLElement&&o.target.closest("[data-page]")){o.preventDefault();let i=e.querySelector("[data-pagination]"),r=o.target.closest("[data-page]").getAttribute("data-page");if(i.value=r,s.setAttribute("data-page",r),e.dispatchEvent(new Event("paginate")),a.hasAttribute("data-show-history")){const t=new URL(location);t.searchParams.set("page",r),history.pushState({type:"pagination",form:e.getAttribute("id"),page:r},"",t)}const c=-250,u=a.getBoundingClientRect().top+window.pageYOffset+c;window.scrollTo({top:u,behavior:"smooth"})}if(o&&o.target instanceof HTMLElement&&o.target.closest("[data-show]")){o.preventDefault();let i=e.querySelector("[data-show]"),r=o.target.closest("[data-show]").getAttribute("data-show");i.value=r,s.setAttribute("data-show",r),e.dispatchEvent(new Event("submit"))}})},et=(a,e)=>{if(!a)return!1;a.addEventListener("click",l=>{at(e)})},at=function(a){for(var e=[],l=a.getElementsByTagName("tr"),s=0;s<l.length;s++){for(var o=l[s].querySelectorAll("td,th"),i=[],r=0;r<o.length;r++)i.push(`"${o[r].textContent}"`);e.push(i.join(","))}e=e.join(`
12
- `);let c=new Blob([e],{type:"text/csv"});var u=document.createElement("a");u.download="export.csv";var t=window.URL.createObjectURL(c);u.href=t,u.style.display="none",document.body.appendChild(u),u.click(),document.body.removeChild(u)},O=function(a,e,l,s){if(N(a),G(a),$(a,e,s),s&&s.classList.contains("table--cta")){let i=function(){Array.from(a.querySelectorAll("tr")).forEach((r,c)=>{let u=r.offsetHeight;r.style.setProperty("--row-height",`${u}px`)})};const o=J(a);s.style.setProperty("--cta-width",`${o}rem`),new ResizeObserver(i).observe(a)}},W=function(a){let e=new Object;return Array.from(a.querySelectorAll("[data-filter]")).forEach((s,o)=>{if(!(s.type=="radio"&&!s.checked)&&!(s.type=="checkbox"&&!s.checked)&&s&&s.value){let i=s.getAttribute("data-filter");e[i]||(e[i]=new Array),e[i].push(s.value)}}),e},F=function(a,e,l,s){return X(this,void 0,void 0,function*(){const o=(h,n,y)=>n.split(/[\.\[\]\'\"]/).filter(A=>A).reduce((A,S)=>A?A[S]:y,h);let i=new FormData(e),r=new URLSearchParams(i).toString(),c=a.querySelectorAll("thead tr th"),u=a.querySelector("tbody"),t=e.getAttribute("data-ajax");s.classList.add("table--loading");let f=W(e);Array.from(e.querySelectorAll("[data-filter-count]")).forEach((h,n)=>{h.innerHTML="",h.parentNode.classList.remove("hover")});let d=0;Object.values(f).forEach((h,n)=>{typeof h=="object"&&Object.values(h).length?d+=Object.values(h).length:d++}),d&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((h,n)=>{h.innerHTML+=`(${d})`,h.parentNode.classList.add("hover")}),window.controller||(window.controller=[]),window.controller[t]&&window.controller[t].abort(),window.controller[t]=new AbortController;const{signal:g}=controller[t];try{yield fetch(t+"?"+r,{signal:g,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(h=>h.json()).then(h=>{let n=e.hasAttribute("data-schema")?e.getAttribute("data-schema"):"data",y=e.hasAttribute("data-schema-total")?e.getAttribute("data-schema-total"):"meta.total",A=e.hasAttribute("data-schema-page")?e.getAttribute("data-schema-page"):"meta.current_page",S=o(h,y,1),q=o(h,A,1),x=o(h,n),E=s.hasAttribute("data-empty-msg")?s.getAttribute("data-empty-msg"):"No results found";x?(u.innerHTML="",x.forEach((p,w)=>{var m=document.createElement("tr");c.forEach((b,C)=>{let L="";var H=document.createElement("td");if(H.setAttribute("data-label",b.innerText),b.getAttribute("data-output")){var k=b.getAttribute("data-output");L=k.replace(new RegExp(/{(.*?)}/,"gm"),function(j){return o(p,j.replace("{","").replace("}",""))})}if(b.hasAttribute("data-output-array")){var k=b.getAttribute("data-output");let B=o(p,k.replace("{","").replace("}",""));L="",B.forEach((R,st)=>{let V=b.getAttribute("data-output-array"),v="";if(b.hasAttribute("data-output-array-property")&&b.hasAttribute("data-output-array-transform")){const M=o(R,b.getAttribute("data-output-array-property")),U=JSON.parse(b.getAttribute("data-output-array-transform"))[M];v=V.replace(`{${b.getAttribute("data-output-array-property")}}`,U)}v=v.replace(new RegExp(/{(.*?)}/,"gm"),function(M){return o(R,M.replace("{","").replace("}",""))}),L+=v})}b.hasAttribute("data-transform")&&(L=JSON.parse(b.getAttribute("data-transform"))[L],!L&&b.hasAttribute("data-default")&&(L=b.getAttribute("data-default"))),H.innerHTML=L,m.appendChild(H)}),u.appendChild(m)}),I(a,e),s.setAttribute("data-total",parseInt(S)),s.setAttribute("data-page",parseInt(q)),s.setAttribute("data-pages",Math.ceil(s.getAttribute("data-total")/s.getAttribute("data-show"))),O(a,e,l,s),T(s,l),Array.from(e.querySelectorAll("[data-ajax-query]")).forEach((p,w)=>{let m=o(h,p.getAttribute("data-ajax-query"),"");p.hasAttribute("data-total")?p.setAttribute("data-total",m):p.innerHTML=m}),parseInt(S)==0&&(u.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})):u.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>'})}catch(h){console.log(h)}})},_=(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=Q(e)}};class rt extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",l=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,s=document.createElement("template");s.innerHTML=`
4
+ */const B=function(a){return typeof a!="string"?!1:!isNaN(a)&&!isNaN(parseFloat(a))},Q=(a,e)=>String(a).padStart(e,"0"),X=a=>a.charAt(0).toUpperCase()+a.slice(1);var Y=function(a,e,o,r){function b(c){return c instanceof o?c:new o(function(i){i(c)})}return new(o||(o=Promise))(function(c,i){function n(u){try{t(r.next(u))}catch(s){i(s)}}function d(u){try{t(r.throw(u))}catch(s){i(s)}}function t(u){u.done?c(u.value):b(u.value).then(n,d)}t((r=r.apply(a,e||[])).next())})};const R=a=>{const e=Array.from(a.querySelectorAll("thead th"));Array.from(a.querySelectorAll("tbody tr")).forEach((r,b)=>{const c=Array.from(r.querySelectorAll("th, td")),i=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","error"];c.forEach((n,d)=>{const t=e[d];if(typeof t<"u"){let u=document.createElement("div");u.innerHTML=t.innerHTML;let s=u.textContent||u.innerText||"";n.setAttribute("data-label",s),t.hasAttribute("data-td-class")&&n.setAttribute("class",t.getAttribute("data-td-class")),t.hasAttribute("data-format")&&(n.setAttribute("data-format",t.getAttribute("data-format")),n.innerHTML=M(t.getAttribute("data-format"),n.textContent.trim())),i.includes(n.textContent.trim().toLowerCase())&&n.setAttribute("data-content",n.textContent.trim().toLowerCase())}})})},J=a=>{let e=0;return Array.from(a.querySelectorAll("tbody tr")).forEach((o,r)=>{let b=window.getComputedStyle(document.querySelector("html")),c=o.querySelector(":scope > *:last-child > *:first-child");if(c){c.classList.add("text-nowrap");let i=c.offsetWidth/parseFloat(b.fontSize);i+=1.7,e=e>i?e:i}}),e},G=(a,e)=>{if(e.classList.contains(".table--fullwidth")&&!e.hasAttribute("data-expandable")||a.querySelectorAll("thead tr th").length<4&&!e.hasAttribute("data-expandable"))return!1;Array.from(a.querySelectorAll("thead tr")).forEach((o,r)=>{o.insertAdjacentHTML("afterbegin",'<th class="th--fixed expand-button-heading"></th>')}),Array.from(a.querySelectorAll("tbody tr")).forEach((o,r)=>{o.insertAdjacentHTML("afterbegin",'<td class="td--fixed td--expand"><button class="btn btn-compact btn-secondary" data-expand-button>Expand</button></td>')})},K=a=>{a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-expand-button]")){let o=e.target.closest("[data-expand-button]"),r=o.closest("tr");r.getAttribute("data-view")=="full"?r.setAttribute("data-view","default"):r.setAttribute("data-view","full"),o.blur()}})},N=(a,e)=>{let o=e.querySelector("[data-search]");if(!o)return!1;const r=o.getAttribute("id"),b=o.getAttribute("data-search").split(",");let c=o.parentNode,i={};b.forEach((n,d)=>{Array.from(a.querySelectorAll('td[data-label="'+n.trim()+'"]')).forEach((t,u)=>{t.querySelector(".td__content")?i[t.querySelector(".td__content").textContent]=t.querySelector(".td__content").textContent:i[t.textContent]=t.textContent})}),o.setAttribute("list",`${r}_list`),o.setAttribute("autocomplete","off"),c.querySelector("datalist")||(c.innerHTML+=`<datalist id="${r}_list"></datalist>`),c.querySelector("datalist").innerHTML=`${Object.keys(i).map(n=>`<option value="${n}"></option>`).join("")}`},V=(a,e,o,r,b)=>{var c;let i=function(t,u=!1){if(e.classList.contains("processing"))return!1;if(t.type=="submit"&&(e.classList.add("processing"),Array.from(e.querySelectorAll("[data-duplicate]")).forEach((s,m)=>{const h=s.getAttribute("data-duplicate"),l=document.getElementById(h),g=document.querySelector(`[for="${h}"] iam-card`);if(l.checked!=s.checked)if(g){let y=new Event("click");g.dispatchEvent(y)}else l.checked=s.checked}),e.classList.remove("processing")),e.hasAttribute("data-ajax")){if(!u){let s=e.querySelector("[data-pagination]");s.value=1,r.setAttribute("data-page",1)}z(a,e,o,r)}else e.hasAttribute("data-submit")?e.submit():(C(a,e,r),E(a,e));if(e.hasAttribute("data-ajax-post")){let s=new FormData(e),m=new URLSearchParams(s).toString();const h=new XMLHttpRequest;h.open("GET",`${window.location.href}?ajax=true&${m}`),h.send()}};e.addEventListener("keyup",t=>{clearTimeout(c),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&(c=setTimeout(function(){i(t)},500))}),e.addEventListener("change",t=>{clearTimeout(c),t&&t.target instanceof HTMLElement&&t.target.closest("[data-sort]")&&(e.hasAttribute("data-submit")||O(a,e,b),i(t)),t&&t.target instanceof HTMLElement&&t.target.closest("[data-search]")&&i(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter][data-no-ajax]")?(C(a,e,r),E(a,e)):(t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&t.target.closest("form .dialog__wrapper > dialog")||t&&t.target instanceof HTMLElement&&t.target.closest("[data-filter]")&&!t.target.closest("form dialog"))&&i(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-show]")&&i(t),t&&t.target instanceof HTMLElement&&t.target.closest("[data-mimic]")&&i(t)}),e.addEventListener("click",t=>{if(clearTimeout(c),t&&t.target instanceof HTMLElement&&t.target.closest('dialog button:not([type="button"])')&&t.target.closest('dialog button:not([type="button"])').closest("dialog").close(),t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__close")&&(t.preventDefault(),t.stopPropagation()),t&&t.target instanceof HTMLElement&&t.target.closest("[data-clear]")){e.classList.add("processing"),Array.from(e.querySelectorAll(".applied-filters")).forEach((s,m)=>{s.innerHTML=""});let u=e.elements;for(let s=0;s<u.length;s++)switch(u[s].type.toLowerCase()?u[s].type.toLowerCase():"text"){case"text":case"password":case"textarea":u[s].value="";break;case"radio":case"checkbox":if(u[s].checked){let h=u[s],l=h.getAttribute("id"),g=document.querySelector(`[for="${l}"`);if(g.querySelector("iam-card")){let y=g.querySelector("iam-card"),v=new Event("click");y.dispatchEvent(v)}h.checked=!1}break;case"select-one":case"select-multi":u[s].selectedIndex=-1;break}e.classList.remove("processing"),e.hasAttribute("data-submit")||O(a,e,b),i(t)}}),e.addEventListener("submit",t=>{clearTimeout(c),e.hasAttribute("data-submit")||t.preventDefault(),i(t)}),e.addEventListener("force",t=>{i(t)}),e.addEventListener("paginate",t=>{i(t,!0)});let n=[],d=[];Array.from(e.querySelectorAll("[data-mimic]")).forEach((t,u)=>{let s=t.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${s}"]`)).forEach((m,h)=>{let l=m.closest("form");n.includes(l)||n.push(l),d.includes(s)||d.push(s)})}),n.forEach((t,u)=>{const s=function(){let m=[],h=new FormData(t);for(const[l,g]of h)document.querySelector(`[data-mimic="${l}"]`)&&!m.includes(l)?(m.push(l),document.querySelector(`[data-mimic="${l}"]`).value=g):document.querySelector(`[data-mimic="${l}"]`)&&(document.querySelector(`[data-mimic="${l}"]`).value+=","+g);for(const l of m){const g=new Event("force");e.dispatchEvent(g)}for(const l of d)if(!h.has(l)&&t.querySelector(`[name="${l}"]`)){document.querySelector(`[data-mimic="${l}"]`).value="";const g=new Event("force");e.dispatchEvent(g)}};t.addEventListener("force",m=>{s()}),t.addEventListener("change",m=>{s()})})},O=(a,e,o)=>{if(e.getAttribute("data-ajax"))return!1;let r=a.querySelector("tbody"),b=e.querySelector("[data-sort]"),c=b.querySelector(`option:nth-child(${b.selectedIndex+1})`),i=c.getAttribute("data-sort"),n=c.getAttribute("data-order"),d=c.getAttribute("data-format");if(!i)return r.innerHTML=o.innerHTML,R(a),!1;let t=[];["asc","desc","descending"].includes(n)||(t=n.split(","));let u=[];Array.from(r.querySelectorAll("tr")).forEach((m,h)=>{let l=m.querySelector('td[data-label="'+i+'"], th[data-label="'+i+'"]').textContent.trim();m.querySelector('[data-label="'+i+'"] .td__content')&&(l=m.querySelector('[data-label="'+i+'"] .td__content').textContent.trim()),t.length&&t.includes(l)&&(l=t.indexOf(l)),B(l)&&(l=Q(l,10)),d&&d=="date"&&(l=new Date(l));const g={index:l,row:m};u.push(g)}),u.sort((m,h)=>m.index>h.index?1:-1),(n=="descending"||n=="desc")&&(u=u.reverse());let s="";u.forEach((m,h)=>{s+=m.row.outerHTML}),r.innerHTML=s},C=(a,e,o)=>{a.classList.remove("table--filtered");let r=P(e),b=[],c=0,i=e.querySelector("[data-pagination]")?parseInt(e.querySelector("[data-pagination]").value):1,n=e.querySelector("[data-show]")?parseInt(e.querySelector("[data-show]").value):15;if(Array.from(a.querySelectorAll("tbody tr")).forEach((t,u)=>{t.classList.remove("filtered"),t.classList.remove("filtered--matched"),t.classList.remove("filtered--show"),t.removeAttribute("data-filtered-by")}),e.querySelector("[data-search]")){let t=e.querySelector("[data-search]");e.querySelector("[data-search]").getAttribute("data-search").split(",").forEach((s,m)=>{b.push({column:`${s.trim()}`,value:`${t.value}`})})}Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,u)=>{t.innerHTML="",t.parentNode.classList.remove("hover")});let d=0;Object.values(r).forEach((t,u)=>{typeof t=="object"&&Object.values(t).length?d+=Object.values(t).length:d++}),d&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((t,u)=>{t.innerHTML+=`(${d})`,t.parentNode.classList.add("hover")}),a.classList.add("table--filtered");for(const[t,u]of Object.entries(r))Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((s,m)=>{let h=!1;u.forEach((l,g)=>{let y=s.querySelector(`[data-label="${t}"]`);if(l&&l=="$today")l=M("date",new Date);else if(l&&l=="$yesterday"){let f=new Date;f.setDate(f.getDate()-1),l=M("date",f)}else if(l&&(l=="$thisWeek"||l=="$lastWeek")){let f=new Date,x=new Date(f.setDate(f.getDate()-(f.getDay()-1))),w=new Date(f.setDate(f.getDate()-f.getDay()+7)),p=new Date(y.textContent.toLowerCase());if(f.setHours(0,0,0,0),x.setHours(0,0,0,0),w.setHours(0,0,0,0),p.setHours(0,0,0,0),l=="$thisWeek")h=p>=x&&p<=w;else{let T=new Date(x.setDate(x.getDate()-7)),A=new Date(w.setDate(w.getDate()-7));T.setHours(0,0,0,0),A.setHours(0,0,0,0),h=p>=T&&p<=A}}else if(l&&l=="$thisMonth"){let f=new Date,x=f.getFullYear(),w=f.getMonth();var v=new Date(x,w,1),k=new Date(x,w+1,0);let p=new Date(y.textContent.toLowerCase());v.setHours(0,0,0,0),k.setHours(0,0,0,0),p.setHours(0,0,0,0),h=p>=v&&p<=k}else if(l&&l=="$lastMonth"){let f=new Date,x=f.getFullYear(),w=f.getMonth();var S=new Date(x,w-1,1),L=new Date(x,w,0);let p=new Date(y.textContent.toLowerCase());S.setHours(0,0,0,0),L.setHours(0,0,0,0),p.setHours(0,0,0,0),h=p>=S&&p<=L}y&&y.textContent.toLowerCase().includes(l.toLowerCase())&&(h=!0)}),h||(s.classList.add("filtered"),s.setAttribute("data-filtered-by",t))});Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).forEach((t,u)=>{let s=!(b.length>0&&b[0].value.length>=3);b.forEach((m,h)=>{let l=t.querySelector(`[data-label="${m.column}"]`);l&&m.value.length>=3&&l.textContent.toLowerCase().includes(m.value.toLowerCase())&&(s=!0)}),s||t.classList.add("filtered")}),Array.from(a.querySelectorAll("tbody tr:not(.filtered")).forEach((t,u)=>{c++,t.classList.add("filtered--matched"),Math.ceil(c/n)==parseInt(i)&&t.classList.add("filtered--show")}),o&&(o.setAttribute("data-total",c),o.setAttribute("data-show",n),o.setAttribute("data-page",i))},E=(a,e,o)=>{Array.from(e.querySelectorAll("[data-query]")).forEach((b,c)=>{let i=b.getAttribute("data-query"),n;if(i=="total")o.hasAttribute("data-total")?n=o.getAttribute("data-total"):n=(a.classList.contains("table--filtered"),a.querySelectorAll("tbody tr").length);else if(!i.includes(" == ")&&i.includes(" & ")){let d=i.split(" & "),t="";d.forEach(u=>{t+=`:not([data-filtered-by="${u}"])`}),n=Array.from(a.querySelectorAll(`tbody tr${t}`)).length}else if(!i.includes(" == "))n=Array.from(a.querySelectorAll(`tbody tr:not([data-filtered-by="${i}"])`)).length;else if(i.includes(" && ")){let d=i.split(" && ");n=Array.from(a.querySelectorAll("tbody tr:not(.filtered)")).filter(function(t){let u=!0;for(const[s,m]of Object.entries(d)){let h=m.split(" == ");(!t.querySelector(`td[data-label="${h[0]}"]`)||t.querySelector(`td[data-label="${h[0]}"]`).textContent!=`${h[1]}`)&&(u=!1)}return u}).length}else{let d=i.split(" == ");n=Array.from(a.querySelectorAll(`tbody tr.filtered--matched td[data-label="${d[0]}"], tbody tr[data-filtered-by="${d[0]}"] td[data-label="${d[0]}"]`)).filter(function(t){return t.textContent===d[1]}).length}b.hasAttribute("data-total")?b.setAttribute("data-total",n):b.innerHTML=n})},Z=function(a,e,o,r){o.addEventListener("update-page",b=>{let c=e.querySelector("[data-pagination]"),i=b.detail.page;if(c.value=i,e.dispatchEvent(new Event("paginate")),r.setAttribute("data-page",i),a.hasAttribute("data-show-history")){const n=new URL(location);n.searchParams.set("page",i),history.pushState({type:"pagination",form:e.getAttribute("id"),page:i},"",n)}if(!r.hasAttribute("data-no-scroll")){const d=a.getBoundingClientRect().top+window.pageYOffset+-250;window.scrollTo({top:d,behavior:"smooth"})}}),o.addEventListener("update-show",b=>{let c=e.querySelector("[data-show]"),i=b.detail.show;c.value=i,r.setAttribute("data-show",i),e.dispatchEvent(new Event("submit"))})},tt=(a,e)=>{if(!a)return!1;a.addEventListener("click",o=>{et(e)})},et=function(a){for(var e=[],o=a.getElementsByTagName("tr"),r=0;r<o.length;r++){for(var b=o[r].querySelectorAll("td,th"),c=[],i=0;i<b.length;i++)c.push(`"${b[i].textContent}"`);e.push(c.join(","))}e=e.join(`
5
+ `);let n=new Blob([e],{type:"text/csv"});var d=document.createElement("a");d.download="export.csv";var t=window.URL.createObjectURL(n);d.href=t,d.style.display="none",document.body.appendChild(d),d.click(),document.body.removeChild(d)},I=function(a,e,o,r){if(R(a),G(a,r),E(a,e,r),r&&r.classList.contains("table--cta")){let c=function(){Array.from(a.querySelectorAll("tr")).forEach((i,n)=>{let d=i.offsetHeight;i.style.setProperty("--row-height",`${d}px`)})};const b=J(a);r.style.setProperty("--cta-width",`${b}rem`),new ResizeObserver(c).observe(a)}},P=function(a){let e=new Object;return Array.from(a.querySelectorAll("[data-filter]")).forEach((r,b)=>{if(!(r.type=="radio"&&!r.checked)&&!(r.type=="checkbox"&&!r.checked)&&r&&r.value){let c=r.getAttribute("data-filter");e[c]||(e[c]=new Array),e[c].push(r.value)}}),e},z=function(a,e,o,r){return Y(this,void 0,void 0,function*(){const b=(h,l,g)=>l.split(/[\.\[\]\'\"]/).filter(y=>y).reduce((y,v)=>y?y[v]:g,h);let c=new FormData(e),i=new URLSearchParams(c).toString(),n=a.querySelectorAll("thead tr th"),d=a.querySelector("tbody"),t=e.getAttribute("data-ajax");r.classList.add("table--loading");let u=P(e);Array.from(e.querySelectorAll("[data-filter-count]")).forEach((h,l)=>{h.innerHTML="",h.parentNode.classList.remove("hover")});let s=0;Object.values(u).forEach((h,l)=>{typeof h=="object"&&Object.values(h).length?s+=Object.values(h).length:s++}),s&&Array.from(e.querySelectorAll("[data-filter-count]")).forEach((h,l)=>{h.innerHTML+=`(${s})`,h.parentNode.classList.add("hover")}),window.controller||(window.controller=[]),window.controller[t]&&window.controller[t].abort(),window.controller[t]=new AbortController;const{signal:m}=controller[t];o.setAttribute("data-loading","true"),e.classList.add("processing");try{yield fetch(t+"?"+i,{signal:m,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(h=>h.json()).then(h=>{let l=e.hasAttribute("data-schema")?e.getAttribute("data-schema"):"data",g=e.hasAttribute("data-schema-total")?e.getAttribute("data-schema-total"):"meta.total",y=e.hasAttribute("data-schema-page")?e.getAttribute("data-schema-page"):"meta.current_page",v=b(h,g,15),k=b(h,y,1),S=b(h,l),L=r.hasAttribute("data-empty-msg")?r.getAttribute("data-empty-msg"):"No results found";S?(d.innerHTML="",S.forEach((f,x)=>{var w=document.createElement("tr");n.forEach((p,T)=>{let A="";var _=document.createElement("td");if(_.setAttribute("data-label",p.innerText),p.getAttribute("data-output")){var H=p.getAttribute("data-output");A=H.replace(new RegExp(/{(.*?)}/,"gm"),function(D){return b(f,D.replace("{","").replace("}",""))})}if(p.hasAttribute("data-output-array")){var H=p.getAttribute("data-output");let F=b(f,H.replace("{","").replace("}",""));A="",F.forEach((j,it)=>{let W=p.getAttribute("data-output-array"),q="";if(p.hasAttribute("data-output-array-property")&&p.hasAttribute("data-output-array-transform")){const $=b(j,p.getAttribute("data-output-array-property")),U=JSON.parse(p.getAttribute("data-output-array-transform"))[$];q=W.replace(`{${p.getAttribute("data-output-array-property")}}`,U)}q=q.replace(new RegExp(/{(.*?)}/,"gm"),function($){return b(j,$.replace("{","").replace("}",""))}),A+=q})}p.hasAttribute("data-transform")&&(A=JSON.parse(p.getAttribute("data-transform"))[A],!A&&p.hasAttribute("data-default")&&(A=p.getAttribute("data-default"))),_.innerHTML=A,w.appendChild(_)}),d.appendChild(w)}),N(a,e),r.setAttribute("data-total",parseInt(v)),r.setAttribute("data-page",parseInt(k)),I(a,e,o,r),Array.from(e.querySelectorAll("[data-ajax-query]")).forEach((f,x)=>{let w=b(h,f.getAttribute("data-ajax-query"),"");f.hasAttribute("data-total")?f.setAttribute("data-total",w):f.innerHTML=w}),parseInt(v)==0&&(d.innerHTML=`<tr><td colspan="100%"><span>${L}</span></td></tr>`),r.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:t,formData:i})):d.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',o.removeAttribute("data-loading"),e.classList.remove("processing")})}catch(h){console.log(h)}})},M=(a,e)=>{switch(a){case"datetime":return new Date(e).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(e).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(e).toLocaleDateString("en-gb",{year:"2-digit",month:"long",day:"numeric"});case"capitalise":return e=X(e)}};class at extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const e=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",o=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${e}/css/core.min.css`,r=document.createElement("template");r.innerHTML=`
13
6
  <style>
14
- @import "${l}";
7
+ @import "${o}";
8
+ :host{--wrapper-padding: 2rem;--bg-colour: #ffffff;display:block;background:#fff;padding:var(--wrapper-padding);box-shadow:0px 6px 12px rgba(0,0,0,.11);border-radius:0.5rem;margin-bottom:2rem;overflow:hidden}:host:before{display:none !important}@media screen and (prefers-color-scheme: dark){:host{background:var(--colour-canvas-2)}}@media(forced-colors: active){:host{--wrapper-padding: 0;background:var(--colour-canvas-2)}}::slotted(table){margin-bottom:0 !important}.table__wrapper{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}@container (width < 23.4375em){:host(:not(.table--fullwidth)){margin-left:-1.5rem;margin-right:-1.5rem;margin-bottom:0;background:var(--colour-canvas-2);border-radius:0;background:none;padding:0;box-shadow:none;overflow:visible}:host(:not(.table--fullwidth)) .table__wrapper:not(.table--fullwidth){overflow:hidden;max-height:none !important}:host(:not(.table--fullwidth)) ::slotted(table){overflow:visible !important;margin-inline:1.5rem;margin-bottom:1.5rem !important;width:calc(100% - 3rem) !important;display:block}:host(:not(.table--fullwidth)) .table--cta{border-bottom:0}:host(:not(.table--fullwidth)) .table--cta:after{content:none;display:none !important}}@container (width > 23.4375em){:host{--cta-width: 8rem}:host(.table--loading){--cta-width: 1.5rem!important}.table--cta{position:relative}.table--cta .table__wrapper{overflow-y:hidden;margin-bottom:0}}.table__wrapper:is(.mh-sm,.mh-md,.mh-lg){position:relative}.table__wrapper:is(.mh-sm,.mh-md,.mh-lg)::before{top:calc(100% - 1.2rem);bottom:2px;height:1.2rem;border-bottom:2px solid var(--colour-border);margin-bottom:-1.2rem}.table--cta>.table__wrapper:is(.mh-sm,.mh-md,.mh-lg){max-height:none;position:static}.table--cta>.table__wrapper:is(.mh-sm,.mh-md,.mh-lg)::before{display:none}@container (width < 23.4375em){.table__wrapper.has-actionbar{margin-top:calc(-100vh + 6.75rem) !important}}:host(.table--loading){pointer-events:none;position:relative}:host(.table--loading) ::slotted(table){min-height:20rem;opacity:.5}:host(.table--loading)::after{content:"Loading...";position:absolute;top:6.25rem;left:50%;transform:translate(-50%, 0);font-weight:bold;color:var(--colour-heading);font-size:1.5rem;text-shadow:0px 0px 10px var(--colour-canvas-2);padding-inline:2rem;text-shadow:0px 0px 10px var(--colour-canvas-2);background:radial-gradient(var(--colour-canvas-2), transparent)}@container (width < 23.4375em){.pagination--table{margin-inline:1.5rem;width:auto}:host(.table--fullwidth) .pagination--table{margin-inline:0}}/*# sourceMappingURL=assets/css/components/table.css.map */
9
+
15
10
 
16
11
  :host(.mh-sm){
17
12
  max-height: none!important;
@@ -31,6 +26,7 @@
31
26
  <slot></slot>
32
27
  </div>
33
28
  </div>
34
- <div class="table__pagination"></div>
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")));let l=this.classList.toString();if(l=l.replace("table--cta",""),l=l.replace("table--loading",""),this.shadowRoot.querySelector(".table__wrapper").className+=` ${l}`,this.querySelector(".actionbar__sticky")&&this.shadowRoot.querySelector(".table__wrapper").classList.add("has-actionbar"),this.table=this.querySelector("table"),this.savedTableBody=this.table.querySelector("tbody").cloneNode(!0),this.pagination=this.shadowRoot.querySelector(".table__pagination"),this.classList.contains("table--cta")||this.shadowRoot.querySelector(".table--cta").classList.remove("table--cta"),this.form=document.createElement("form"),this.hasAttribute("data-filterby")?this.form=document.querySelector(`#${this.getAttribute("data-filterby")}`):this.table.parentNode.insertBefore(this.form,this.table.nextSibling),this.form.hasAttribute("data-ajax")&&this.table.classList.add("table--ajax"),I(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" />`),K(this.table),Z(this.table,this.form,this.pagination,this,this.savedTableBody),tt(this.table,this.form,this.pagination,this),et(this.shadowRoot.querySelector("[data-export]"),this.table),this.form.getAttribute("data-ajax")?F(this.table,this.form,this.pagination,this):(O(this.table,this.form,this.pagination,this),D(this.table,this.form,this),T(this,this.pagination),$(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"))}),this.querySelector("iam-actionbar[data-selectall]")){const o=this.querySelector("iam-actionbar[data-selectall]");Array.from(this.table.querySelectorAll("thead tr")).forEach((i,r)=>{i.insertAdjacentHTML("afterbegin","<th></th>")}),Array.from(this.table.querySelectorAll("tbody tr")).forEach((i,r)=>{i.insertAdjacentHTML("afterbegin",`<td class="selectrow"><input type="checkbox" name="row" id="row${r}"/><label for="row${r}"><span class="visually-hidden">Select row</span></label></td>`)}),this.table.addEventListener("change",i=>{if(i&&i.target instanceof HTMLElement&&i.target.closest(".selectrow input")){let r=this.table.querySelectorAll('.selectrow input[type="checkbox"]').length,c=this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;o.setAttribute("data-selected",r==c?"all":c),console.log(c)}}),o.addEventListener("selected",i=>{console.log(i.detail.selected),i.detail.selected=="0"?Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((r,c)=>{r.checked=!1}):i.detail.selected=="all"&&Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((r,c)=>{r.checked=!0})})}}static get observedAttributes(){return["data-total","data-pages","data-page","data-show"]}attributeChangedCallback(e,l,s){}}export{rt as default};
29
+ <iam-pagination class="pagination--table" ${this.hasAttribute("data-page")?`data-page="${this.getAttribute("data-page")}"`:""} ></iam-pagination>
30
+ `,this.shadowRoot.appendChild(r.content.cloneNode(!0)),document.getElementById("tableExtras")||document.head.insertAdjacentHTML("beforeend",`<style id="tableExtras">*:has(>iam-table){container-type:inline-size}iam-table{--hover-background: var(--colour-light);--row-bg: var(--colour-canvas-2)}iam-table thead tr{background:var(--row-bg)}iam-table tbody tr{background:var(--row-bg)}iam-table tbody tr:is(:hover,:focus-within,.hover){--bg-colour-rgb: 238,238,238;--row-bg: var(--hover-background);background:var(--row-bg)}@media screen and (prefers-color-scheme: dark){iam-table tbody tr{--hover-background: var(--colour-canvas)}iam-table tbody tr:is(:hover,:focus-within,.hover){background:var(--row-bg)}}@container (width < 23.4375em){iam-table:not(.table--fullwidth) thead{display:none}iam-table:not(.table--fullwidth) tbody{display:block;overflow:visible}iam-table:not(.table--fullwidth) tbody tr td:first-child{padding-top:0}iam-table:not(.table--fullwidth) tr{display:block;position:relative;border:none;background:var(--row-bg);padding:var(--wrapper-padding);box-shadow:0px 6px 12px rgba(0,0,0,.11);border-radius:0.5rem}iam-table:not(.table--fullwidth) tr+tr{margin-top:2rem}iam-table:not(.table--fullwidth) tr:is(:hover,:focus,.hover){--row-bg: var(--colour-canvas-2)}iam-table:not(.table--fullwidth) :is(td,th){display:block;border-color:var(--colour-border);padding-right:0}iam-table:not(.table--fullwidth) :is(td,th):nth-child(1){border-top:none}iam-table:not(.table--fullwidth) :is(td,th)[data-label]:not([data-label=""]):before{content:attr(data-label);color:var(--colour-heading);padding:0 0 0.375rem 0;margin-bottom:0;display:block;font-weight:bold}iam-table:not(.table--fullwidth) td:first-child::after{top:1.75rem !important}iam-table:not(.table--fullwidth) td::after{top:2.5rem}iam-table:not(.table--fullwidth) .td--fixed{padding-right:50%}iam-table:not(.table--fullwidth) tbody tr td:not(:first-child){border-top:var(--border-width) solid currentColor;border-color:var(--colour-border) !important}iam-table:not(.table--fullwidth) tr:not([data-view=full]) td p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}iam-table:not(.table--fullwidth) td:has([data-expand-button]){height:0;padding:0;position:relative}iam-table:not(.table--fullwidth) td:has([data-expand-button])+td{border-top:none !important;padding-top:0 !important}iam-table:not(.table--fullwidth) [data-expand-button]{top:0;right:0;background:rgba(0,0,0,0) !important;border:none;position:absolute;overflow:hidden;--compact-size: 2rem}iam-table:not(.table--fullwidth) [data-expand-button]:before{font-family:"Font Awesome 6 Pro";content:"\uF055";font-weight:300 !important;font-size:1.75rem;line-height:var(--compact-size) !important}iam-table:not(.table--fullwidth) tr[data-view=full] [data-expand-button]:before{content:"\uF056";font-weight:900 !important}iam-table:not(.table--fullwidth) .dialog__wrapper{margin-top:-0.5rem;margin-left:-1rem;z-index:10}iam-table:not(.table--fullwidth) tbody tr:not([data-view=full]) td:not(.td--fixed)+td:not(.td--fixed)+td+td{display:none}iam-table.table--cta:not(.table--fullwidth) tr td:not(:first-child):last-child{display:block !important;position:static;width:100%;min-width:100%;margin-left:0;padding-left:0;text-align:left;min-height:0}iam-table.table--cta:not(.table--fullwidth) tr td:not(:first-child):last-child:after{display:none}}@container (width > 23.4375em){iam-table.table--cta:not(.table--loading):has(tr:first-child td:first-child:last-child){padding-right:calc(var(--wrapper-padding) + 1.5rem)}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>th:nth-last-child(2),iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>td:nth-last-child(2){padding-right:var(--cta-width)}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>*:not(:first-child):last-child{position:absolute;left:calc(100% - var(--cta-width));top:auto;background:rgba(0,0,0,0);width:var(--cta-width);min-height:calc(var(--row-height) - 2px);text-align:right;background:linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem);cursor:default}@media screen and (prefers-color-scheme: dark){iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>*:not(:first-child):last-child{background:linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem)}}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tr>*:not(:first-child):last-child a{white-space:nowrap;padding-right:.2rem}iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) tbody tr:hover>*:not(:first-child):last-child{background:linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem)}}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta){position:relative}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) thead{position:sticky;top:0;left:0;z-index:1;background-color:var(--row-bg)}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) thead:before{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--colour-primary)}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) tbody{position:relative}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) tbody tr:first-child td{border-top:0}iam-table:is(.mh-sm,.mh-md,.mh-lg):not(.table--cta) tbody tr:last-child td{border-bottom:0}table :is([data-content=low],[data-content=medium],[data-content=high],[data-content=unknown],[data-content=due],[data-content=overdue],[data-content=incomplete],[data-content="requires approval"],[data-content=upcoming],[data-content="approval required"],[data-content=warning],[data-content=verified],[data-content="not started"],[data-content="to do"],[data-content="on track"],[data-content=completed],[data-content=complete],.alert-status:not([data-content="0"]):not([data-content=""]):not(:empty)){position:relative;padding-left:1.5rem}table :is([data-content=low],[data-content=medium],[data-content=high],[data-content=unknown],[data-content=due],[data-content=overdue],[data-content=incomplete],[data-content="requires approval"],[data-content=upcoming],[data-content="approval required"],[data-content=warning],[data-content=verified],[data-content="not started"],[data-content="to do"],[data-content="on track"],[data-content=completed],[data-content=complete],.alert-status:not([data-content="0"]):not([data-content=""]):not(:empty))::before{margin-left:-1.5rem !important}table :is([data-content=low],[data-content=medium],[data-content=high],[data-content=unknown],[data-content=due],[data-content=overdue],[data-content=incomplete],[data-content="requires approval"],[data-content=upcoming],[data-content="approval required"],[data-content=warning],[data-content=verified],[data-content="not started"],[data-content="to do"],[data-content="on track"],[data-content=completed],[data-content=complete],.alert-status:not([data-content="0"]):not([data-content=""]):not(:empty)):after{font-family:"Font Awesome 6 Pro";position:absolute;top:1rem;left:0;font-size:1rem;line-height:1;height:1rem;width:1rem;display:inline-block}table [data-content=high]:after{content:"\uF325";font-weight:normal;color:var(--colour-danger)}table [data-content=medium]:after{content:"\uF7A4";font-weight:normal;color:var(--colour-warning)}table [data-content=low]:after{content:"\uE404";font-weight:normal;color:var(--colour-complete)}table [data-content=unknown]:after{content:"\uE404";font-weight:normal;color:var(--colour-muted)}table :is([data-content=overdue],[data-content=due],[data-content=incomplete]):after{content:"\uF024";color:var(--colour-danger)}table :is([data-content="not started"],[data-content="to do"],[data-content="on track"]):after{content:"\uF024";color:var(--colour-muted)}table :is([data-content="requires approval"],[data-content="approval required"],[data-content=upcoming]):after{content:"\uF024";color:var(--colour-warning)}table :is([data-content=warning]):after{content:"\uF071";color:var(--colour-warning)}table :is([data-content=verified],[data-content=completed],[data-content=complete]):after{content:"\uF00C";font-weight:normal;color:var(--colour-complete)}table .alert-status:not([data-content="0"]):not([data-content=""]):not(:empty):after{content:"\uF0F3";color:var(--colour-primary)}iam-table .table--filtered tbody tr:not(.filtered--show){display:none !important}iam-table table:not(.table--filtered):not(.table--ajax) tbody tr:nth-child(15)~tr{display:none}iam-table input:is([type=radio],[type=checkbox])+label{padding-left:0 !important;margin:0 !important}iam-table input:is([type=radio],[type=checkbox])+label:before,iam-table input:is([type=radio],[type=checkbox])+label:after{top:.75rem !important;left:.25rem !important}iam-table:has([type=checkbox]:checked) tr:has([type=checkbox]) [type=checkbox]{width:100vw;height:100%;max-height:var(--row-height);max-width:100vw;cursor:pointer;pointer-events:all;top:auto;margin:0;margin-top:0rem}iam-table tr:has([type=checkbox]:checked){--row-bg: #E0E0E0}@media screen and (prefers-color-scheme: dark){iam-table tr:has([type=checkbox]:checked){--row-bg: #000000}}@container (width < 23.4375em){@media screen and (prefers-color-scheme: light){iam-table:has([slot=before]) iam-actionbar{background-color:#e6eaec}}iam-table:has([slot=before]) .actionbar__sticky+*{margin-top:0 !important}iam-table input:is([type=radio],[type=checkbox])+label{padding-left:0 !important;margin:0 !important;min-height:2rem}iam-table input:is([type=radio],[type=checkbox])+label:before,iam-table input:is([type=radio],[type=checkbox])+label:after{top:.25rem !important;left:0 !important}iam-table:has([type=checkbox]:checked) tr:has([type=checkbox]) [type=checkbox]{width:100%;height:100%;max-height:100%;max-width:100%;margin-top:-2rem}}iam-table.table--fullwidth:not([data-expandable]) th.expand-button-heading{display:none}iam-table.table--fullwidth:not([data-expandable]) td:has([data-expand-button]){display:none}@container (width > 23.4375em){iam-table:not([data-expandable]) th.expand-button-heading{display:none}iam-table:not([data-expandable]) td.td--expand{display:none}iam-table[data-expandable] [data-expand-button]{margin:0}iam-table[data-expandable] [data-expand-button]:before{font-family:"Font Awesome 6 Pro";content:"\uF078";font-weight:500}iam-table[data-expandable] tr[data-view=full] [data-expand-button]:before{content:"\uF077"}iam-table[data-expandable] tr:not([data-view=full]) td p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}}@container (width < 23.4375em){iam-table:not(.table--fullwidth) .td--fixed+td:not(.td--fixed){border-top:none}}@container (width > 23.4375em){iam-table{--width-adjust: 0px}iam-table:has([type=checkbox]){--width-adjust: -1rem}iam-table .th--fixed{min-width:calc(4.5rem + var(--width-adjust));position:absolute;padding:0}iam-table .th--fixed:after{top:auto;left:0;content:"";position:absolute;width:100%;height:calc(var(--row-height) - 2px);background:linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%)}iam-table .td--fixed{position:absolute;position:absolute;left:auto;top:auto;z-index:3;padding:0;min-width:4.5rem;height:calc(var(--row-height) - 2px);text-align:left;background:linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%)}iam-table .td--fixed:has([open]){z-index:4}iam-table tr:is(:hover,:focus) .td--fixed{background:linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%)}iam-table tr:has([data-expand-button]){height:calc(4.625rem - 2px)}iam-table .th--fixed+th:not(.th--fixed),iam-table .td--fixed+td:not(.td--fixed){padding-left:calc(4.5rem + var(--width-adjust))}iam-table .th--fixed:not(.expand-button-heading)+.th--fixed+th:not(.th--fixed),iam-table .td--fixed:not(.td--expand)+.td--fixed+td:not(.td--fixed){padding-left:calc(7.75rem + var(--width-adjust))}iam-table[data-expandable] .th--fixed+.th--fixed+th:not(.th--fixed),iam-table[data-expandable] .td--fixed+.td--fixed+td:not(.td--fixed){padding-left:calc(7.75rem + var(--width-adjust))}iam-table .th--fixed+.th--fixed,iam-table .td--fixed+.td--fixed{padding-left:calc(3.25rem + var(--width-adjust));min-width:calc(7.75rem + var(--width-adjust))}iam-table .th--fixed:has(+.th--fixed),iam-table .td--fixed:has(+.td--fixed){min-width:calc(3.25rem + var(--width-adjust));z-index:5}iam-table .dialog__wrapper{z-index:10}iam-table .dialog__wrapper:has([open]){z-index:20}iam-table[data-expandable] input:is([type=radio],[type=checkbox])+label:before,iam-table[data-expandable] input:is([type=radio],[type=checkbox])+label:after{left:1.25rem !important}iam-table:not([data-expandable]) th.expand-button-heading+th{padding-left:0 !important}iam-table:not([data-expandable]) td.td--expand+td{padding-left:0 !important}iam-table:not([data-expandable]) th.expand-button-heading+.th--fixed{min-width:calc(4.5rem + var(--width-adjust)) !important}iam-table:not([data-expandable]) td.td--expand+.td--fixed{min-width:calc(4.5rem + var(--width-adjust)) !important}}/*# sourceMappingURL=assets/css/components/table.extras.css.map */
31
+ </style>`)}connectedCallback(){const e=new URLSearchParams(window.location.search);this.hasAttribute("data-total")||this.setAttribute("data-total",this.querySelectorAll("table tbody tr").length),this.hasAttribute("data-page")||this.setAttribute("data-page",e.has("page")?e.get("page"):1),this.hasAttribute("data-show")||this.setAttribute("data-show",e.has("show")?e.get("show"):15),this.hasAttribute("data-increment")||this.setAttribute("data-increment",this.getAttribute("data-show"));let o=this.classList.toString();if(o=o.replace("table--cta",""),o=o.replace("table--loading",""),this.shadowRoot.querySelector(".table__wrapper").className+=` ${o}`,this.querySelector(".actionbar__sticky")&&this.shadowRoot.querySelector(".table__wrapper").classList.add("has-actionbar"),this.table=this.querySelector("table"),this.savedTableBody=this.table.querySelector("tbody").cloneNode(!0),this.pagination=this.shadowRoot.querySelector("iam-pagination"),this.pagination.setAttribute("data-total",this.getAttribute("data-total")),this.pagination.setAttribute("data-page",this.getAttribute("data-page")),this.pagination.setAttribute("data-show",this.getAttribute("data-show")),this.pagination.setAttribute("data-increment",this.getAttribute("data-show")),this.hasAttribute("data-page-jump")&&this.pagination.setAttribute("data-page-jump","true"),this.hasAttribute("data-per-page")&&this.pagination.setAttribute("data-per-page","true"),this.hasAttribute("data-item-count")&&this.pagination.setAttribute("data-item-count","true"),this.hasAttribute("data-loading")&&this.pagination.setAttribute("data-loading","true"),this.classList.contains("table--fullwidth")&&this.pagination.setAttribute("data-minimal","true"),this.classList.contains("table--cta")||this.shadowRoot.querySelector(".table--cta").classList.remove("table--cta"),this.form=document.createElement("form"),this.hasAttribute("data-filterby")?this.form=document.querySelector(`#${this.getAttribute("data-filterby")}`):this.table.parentNode.insertBefore(this.form,this.table.nextSibling),this.form.hasAttribute("data-ajax")&&this.table.classList.add("table--ajax"),N(this.table,this.form),this.form.querySelector("[data-pagination]")||(this.form.innerHTML+=`<input name="page" type="hidden" value="${this.getAttribute("data-page")}" data-pagination="true" />`),this.form.querySelector("[data-show]")||(this.form.innerHTML+=`<input name="show" type="hidden" value="${this.getAttribute("data-show")}" data-show="true" />`),K(this.table),V(this.table,this.form,this.pagination,this,this.savedTableBody),Z(this.table,this.form,this.pagination,this),tt(this.shadowRoot.querySelector("[data-export]"),this.table),this.form.getAttribute("data-ajax"))z(this.table,this.form,this.pagination,this);else{let b=function(i=1){return Math.floor(Math.random()*Date.now()*(i+1))};if(this.querySelector("iam-actionbar[data-selectall]")){const i=this.querySelector("iam-actionbar[data-selectall]");Array.from(this.table.querySelectorAll("thead tr")).forEach((n,d)=>{n.insertAdjacentHTML("afterbegin",'<th class="th--fixed"></th>')}),Array.from(this.table.querySelectorAll("tbody tr")).forEach((n,d)=>{let t=`row${b(d)}`;n.insertAdjacentHTML("afterbegin",`<td class="td--fixed selectrow"><input type="checkbox" name="row" id="${t}"/><label for="${t}"><span class="visually-hidden">Select row</span></label></td>`)}),this.table.addEventListener("change",n=>{if(n&&n.target instanceof HTMLElement&&n.target.closest(".selectrow input")){let d=this.table.querySelectorAll('.selectrow input[type="checkbox"]').length,t=this.table.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;i.setAttribute("data-selected",d==t?"all":t)}}),i.addEventListener("selected",n=>{n.detail.selected=="0"?Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((d,t)=>{d.checked=!1}):n.detail.selected=="all"&&Array.from(this.table.querySelectorAll('.selectrow input[type="checkbox"]')).forEach((d,t)=>{d.checked=!0})})}let c=-1;Array.from(this.table.querySelectorAll("tbody tr")).forEach((i,n)=>{if(i.querySelector(":scope > td > .dialog__wrapper")){let d=i.querySelector(":scope > td > .dialog__wrapper").parentNode;d.classList.add("td--fixed"),c=Array.from(d.parentNode.children).indexOf(d)}}),c!=-1&&(this.table.querySelector(`thead tr th:nth-child(${c+1})`).classList.add("th--fixed"),Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${c+1})`)).forEach((i,n)=>{i.classList.add("td--fixed")})),I(this.table,this.form,this.pagination,this),C(this.table,this.form,this),E(this.table,this.form)}this.shadowRoot.querySelector(".table__wrapper").addEventListener("scroll",b=>{this.table.querySelector("dialog[open]")&&(this.table.querySelector("dialog[open]").close(),this.table.querySelector(".dialog__wrapper > button.active").classList.remove("active"))})}static get observedAttributes(){return["data-total","data-page","data-show"]}attributeChangedCallback(e,o,r){switch(this.pagination=this.shadowRoot.querySelector("iam-pagination"),e){case"data-total":{o!=r&&this.pagination.setAttribute("data-total",r);break}case"data-show":{o!=r&&this.pagination.setAttribute("data-show",r);break}case"data-page":{o!=r&&this.pagination.setAttribute("data-page",r);break}}}}export{at as default};
36
32
  //# sourceMappingURL=table.component.min.js.map