@iamproperty/components 3.4.7 → 3.5.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 (210) hide show
  1. package/assets/bootstrap/LICENSE +22 -0
  2. package/assets/bootstrap/README.md +246 -0
  3. package/assets/bootstrap/js/src/alert.js +87 -0
  4. package/assets/bootstrap/js/src/base-component.js +85 -0
  5. package/assets/bootstrap/js/src/button.js +72 -0
  6. package/assets/bootstrap/js/src/carousel.js +475 -0
  7. package/assets/bootstrap/js/src/collapse.js +302 -0
  8. package/assets/bootstrap/js/src/dom/data.js +55 -0
  9. package/assets/bootstrap/js/src/dom/event-handler.js +320 -0
  10. package/assets/bootstrap/js/src/dom/manipulator.js +71 -0
  11. package/assets/bootstrap/js/src/dom/selector-engine.js +83 -0
  12. package/assets/bootstrap/js/src/dropdown.js +454 -0
  13. package/assets/bootstrap/js/src/modal.js +377 -0
  14. package/assets/bootstrap/js/src/offcanvas.js +283 -0
  15. package/assets/bootstrap/js/src/popover.js +97 -0
  16. package/assets/bootstrap/js/src/scrollspy.js +294 -0
  17. package/assets/bootstrap/js/src/tab.js +305 -0
  18. package/assets/bootstrap/js/src/toast.js +225 -0
  19. package/assets/bootstrap/js/src/tooltip.js +633 -0
  20. package/assets/bootstrap/js/src/util/backdrop.js +149 -0
  21. package/assets/bootstrap/js/src/util/component-functions.js +34 -0
  22. package/assets/bootstrap/js/src/util/config.js +66 -0
  23. package/assets/bootstrap/js/src/util/focustrap.js +115 -0
  24. package/assets/bootstrap/js/src/util/index.js +336 -0
  25. package/assets/bootstrap/js/src/util/sanitizer.js +118 -0
  26. package/assets/bootstrap/js/src/util/scrollbar.js +114 -0
  27. package/assets/bootstrap/js/src/util/swipe.js +146 -0
  28. package/assets/bootstrap/js/src/util/template-factory.js +160 -0
  29. package/assets/bootstrap/package.json +181 -0
  30. package/assets/bootstrap/scss/_accordion.scss +149 -0
  31. package/assets/bootstrap/scss/_alert.scss +71 -0
  32. package/assets/bootstrap/scss/_badge.scss +38 -0
  33. package/assets/bootstrap/scss/_breadcrumb.scss +40 -0
  34. package/assets/bootstrap/scss/_button-group.scss +142 -0
  35. package/assets/bootstrap/scss/_buttons.scss +207 -0
  36. package/assets/bootstrap/scss/_card.scss +234 -0
  37. package/assets/bootstrap/scss/_carousel.scss +226 -0
  38. package/assets/bootstrap/scss/_close.scss +40 -0
  39. package/assets/bootstrap/scss/_containers.scss +41 -0
  40. package/assets/bootstrap/scss/_dropdown.scss +249 -0
  41. package/assets/bootstrap/scss/_forms.scss +9 -0
  42. package/assets/bootstrap/scss/_functions.scss +302 -0
  43. package/assets/bootstrap/scss/_grid.scss +33 -0
  44. package/assets/bootstrap/scss/_helpers.scss +10 -0
  45. package/assets/bootstrap/scss/_images.scss +42 -0
  46. package/assets/bootstrap/scss/_list-group.scss +192 -0
  47. package/assets/bootstrap/scss/_maps.scss +54 -0
  48. package/assets/bootstrap/scss/_mixins.scss +43 -0
  49. package/assets/bootstrap/scss/_modal.scss +237 -0
  50. package/assets/bootstrap/scss/_nav.scss +172 -0
  51. package/assets/bootstrap/scss/_navbar.scss +278 -0
  52. package/assets/bootstrap/scss/_offcanvas.scss +144 -0
  53. package/assets/bootstrap/scss/_pagination.scss +109 -0
  54. package/assets/bootstrap/scss/_placeholders.scss +51 -0
  55. package/assets/bootstrap/scss/_popover.scss +196 -0
  56. package/assets/bootstrap/scss/_progress.scss +59 -0
  57. package/assets/bootstrap/scss/_reboot.scss +610 -0
  58. package/assets/bootstrap/scss/_root.scss +73 -0
  59. package/assets/bootstrap/scss/_spinners.scss +85 -0
  60. package/assets/bootstrap/scss/_tables.scss +164 -0
  61. package/assets/bootstrap/scss/_toasts.scss +73 -0
  62. package/assets/bootstrap/scss/_tooltip.scss +120 -0
  63. package/assets/bootstrap/scss/_transitions.scss +27 -0
  64. package/assets/bootstrap/scss/_type.scss +106 -0
  65. package/assets/bootstrap/scss/_utilities.scss +647 -0
  66. package/assets/bootstrap/scss/_variables.scss +1634 -0
  67. package/assets/bootstrap/scss/bootstrap-grid.scss +64 -0
  68. package/assets/bootstrap/scss/bootstrap-reboot.scss +9 -0
  69. package/assets/bootstrap/scss/bootstrap-utilities.scss +18 -0
  70. package/assets/bootstrap/scss/bootstrap.scss +51 -0
  71. package/assets/bootstrap/scss/forms/_floating-labels.scss +75 -0
  72. package/assets/bootstrap/scss/forms/_form-check.scss +175 -0
  73. package/assets/bootstrap/scss/forms/_form-control.scss +194 -0
  74. package/assets/bootstrap/scss/forms/_form-range.scss +91 -0
  75. package/assets/bootstrap/scss/forms/_form-select.scss +71 -0
  76. package/assets/bootstrap/scss/forms/_form-text.scss +11 -0
  77. package/assets/bootstrap/scss/forms/_input-group.scss +132 -0
  78. package/assets/bootstrap/scss/forms/_labels.scss +36 -0
  79. package/assets/bootstrap/scss/forms/_validation.scss +12 -0
  80. package/assets/bootstrap/scss/helpers/_clearfix.scss +3 -0
  81. package/assets/bootstrap/scss/helpers/_color-bg.scss +10 -0
  82. package/assets/bootstrap/scss/helpers/_colored-links.scss +12 -0
  83. package/assets/bootstrap/scss/helpers/_position.scss +36 -0
  84. package/assets/bootstrap/scss/helpers/_ratio.scss +26 -0
  85. package/assets/bootstrap/scss/helpers/_stacks.scss +15 -0
  86. package/assets/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  87. package/assets/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  88. package/assets/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  89. package/assets/bootstrap/scss/helpers/_vr.scss +8 -0
  90. package/assets/bootstrap/scss/mixins/_alert.scss +15 -0
  91. package/assets/bootstrap/scss/mixins/_backdrop.scss +14 -0
  92. package/assets/bootstrap/scss/mixins/_banner.scss +9 -0
  93. package/assets/bootstrap/scss/mixins/_border-radius.scss +78 -0
  94. package/assets/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  95. package/assets/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  96. package/assets/bootstrap/scss/mixins/_buttons.scss +70 -0
  97. package/assets/bootstrap/scss/mixins/_caret.scss +64 -0
  98. package/assets/bootstrap/scss/mixins/_clearfix.scss +9 -0
  99. package/assets/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  100. package/assets/bootstrap/scss/mixins/_container.scss +11 -0
  101. package/assets/bootstrap/scss/mixins/_deprecate.scss +10 -0
  102. package/assets/bootstrap/scss/mixins/_forms.scss +152 -0
  103. package/assets/bootstrap/scss/mixins/_gradients.scss +47 -0
  104. package/assets/bootstrap/scss/mixins/_grid.scss +151 -0
  105. package/assets/bootstrap/scss/mixins/_image.scss +16 -0
  106. package/assets/bootstrap/scss/mixins/_list-group.scss +24 -0
  107. package/assets/bootstrap/scss/mixins/_lists.scss +7 -0
  108. package/assets/bootstrap/scss/mixins/_pagination.scss +10 -0
  109. package/assets/bootstrap/scss/mixins/_reset-text.scss +17 -0
  110. package/assets/bootstrap/scss/mixins/_resize.scss +6 -0
  111. package/assets/bootstrap/scss/mixins/_table-variants.scss +24 -0
  112. package/assets/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  113. package/assets/bootstrap/scss/mixins/_transition.scss +26 -0
  114. package/assets/bootstrap/scss/mixins/_utilities.scss +97 -0
  115. package/assets/bootstrap/scss/mixins/_visually-hidden.scss +29 -0
  116. package/assets/bootstrap/scss/utilities/_api.scss +47 -0
  117. package/assets/bootstrap/scss/vendor/_rfs.scss +354 -0
  118. package/assets/css/components/accordion.css +1 -1
  119. package/assets/css/components/accordion.css.map +1 -1
  120. package/assets/css/components/admin-panel.css +1 -0
  121. package/assets/css/components/admin-panel.css.map +1 -0
  122. package/assets/css/components/alert.css +1 -1
  123. package/assets/css/components/alert.css.map +1 -1
  124. package/assets/css/components/carousel.css +1 -1
  125. package/assets/css/components/carousel.css.map +1 -1
  126. package/assets/css/components/charts.css +1 -1
  127. package/assets/css/components/charts.css.map +1 -1
  128. package/assets/css/components/container.css.map +1 -1
  129. package/assets/css/components/dialog.css +1 -1
  130. package/assets/css/components/dialog.css.map +1 -1
  131. package/assets/css/components/forms.css.map +1 -1
  132. package/assets/css/components/header.css +1 -1
  133. package/assets/css/components/header.css.map +1 -1
  134. package/assets/css/components/lists.css +1 -1
  135. package/assets/css/components/lists.css.map +1 -1
  136. package/assets/css/components/nav.css +1 -1
  137. package/assets/css/components/nav.css.map +1 -1
  138. package/assets/css/components/pagination.css.map +1 -1
  139. package/assets/css/components/property-searchbar.css +1 -1
  140. package/assets/css/components/property-searchbar.css.map +1 -1
  141. package/assets/css/components/stepper.css +1 -1
  142. package/assets/css/components/stepper.css.map +1 -1
  143. package/assets/css/components/table.css +1 -1
  144. package/assets/css/components/table.css.map +1 -1
  145. package/assets/css/components/tabs.css +1 -1
  146. package/assets/css/components/tabs.css.map +1 -1
  147. package/assets/css/components/tooltips.css +1 -1
  148. package/assets/css/components/tooltips.css.map +1 -1
  149. package/assets/css/core.min.css +1 -1
  150. package/assets/css/core.min.css.map +1 -1
  151. package/assets/css/style.min.css +1 -1
  152. package/assets/css/style.min.css.map +1 -1
  153. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  154. package/assets/js/components/card/card.component.min.js +1 -1
  155. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  156. package/assets/js/components/header/header.component.min.js +5 -5
  157. package/assets/js/components/table/table.component.js +4 -0
  158. package/assets/js/components/table/table.component.min.js +5 -5
  159. package/assets/js/components/table/table.component.min.js.map +1 -1
  160. package/assets/js/components/tabs/tabs.component.min.js +5 -5
  161. package/assets/js/dynamic.min.js +2 -2
  162. package/assets/js/dynamic.min.js.map +1 -1
  163. package/assets/js/modules/helpers.js +31 -6
  164. package/assets/js/modules/table.js +4 -5
  165. package/assets/js/scripts.bundle.js +31 -31
  166. package/assets/js/scripts.bundle.js.map +1 -1
  167. package/assets/js/scripts.bundle.min.js +2 -2
  168. package/assets/js/scripts.bundle.min.js.map +1 -1
  169. package/assets/js/tests/table.spec.js +3 -1
  170. package/assets/sass/_corefiles.scss +15 -15
  171. package/assets/sass/_forms.scss +7 -7
  172. package/assets/sass/_functions/functions.scss +1 -1
  173. package/assets/sass/_functions/mixins.scss +19 -21
  174. package/assets/sass/_functions/utilities.scss +51 -9
  175. package/assets/sass/_functions/variables.scss +77 -37
  176. package/assets/sass/_tests/colours.spec.scss +8 -22
  177. package/assets/sass/components/accordion.scss +13 -0
  178. package/assets/sass/components/admin-panel.scss +106 -0
  179. package/assets/sass/components/alert.scss +22 -0
  180. package/assets/sass/components/carousel.scss +72 -0
  181. package/assets/sass/components/charts.scss +37 -1
  182. package/assets/sass/components/container.scss +1 -1
  183. package/assets/sass/components/dialog.scss +7 -1
  184. package/assets/sass/components/lists.scss +14 -0
  185. package/assets/sass/components/nav.scss +1 -1
  186. package/assets/sass/components/pagination.scss +1 -1
  187. package/assets/sass/components/stepper.scss +3 -3
  188. package/assets/sass/components/table.scss +19 -15
  189. package/assets/sass/components/tabs.scss +20 -7
  190. package/assets/sass/components/tooltips.scss +1 -1
  191. package/assets/sass/foundations/buttons.scss +366 -0
  192. package/assets/sass/foundations/links.scss +75 -75
  193. package/assets/sass/foundations/media.scss +1 -1
  194. package/assets/sass/foundations/reboot.scss +3 -5
  195. package/assets/sass/foundations/root.scss +9 -29
  196. package/assets/sass/foundations/type.scss +1 -1
  197. package/assets/ts/components/table/table.component.ts +5 -0
  198. package/assets/ts/modules/helpers.ts +49 -8
  199. package/assets/ts/modules/table.ts +6 -6
  200. package/assets/ts/tests/table.spec.ts +4 -1
  201. package/dist/components.es.js +46 -42
  202. package/dist/components.umd.js +4 -4
  203. package/dist/style.css +1 -1
  204. package/package.json +2 -1
  205. package/assets/css/components/buttons.css +0 -1
  206. package/assets/css/components/buttons.css.map +0 -1
  207. package/assets/css/components/panel.css +0 -1
  208. package/assets/css/components/panel.css.map +0 -1
  209. package/assets/sass/components/buttons.scss +0 -252
  210. package/assets/sass/components/panel.scss +0 -161
@@ -1 +1 @@
1
- {"version":3,"file":"table.component.min.js","sources":["../../modules/helpers.js","../../modules/pagination.js","../../modules/table.js","table.component.js"],"sourcesContent":["// @ts-nocheck\nimport { createEmbed } from \"./youtubevideo.js\";\n/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add(\"js-enabled\");\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add(\"ie\");\n }\n return null;\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () { checkElements(location.hash); }, false);\n addEventListener(\"popstate\", (event) => {\n if (event.state.type == \"pagination\") {\n let form = document.querySelector(`#${event.state.form}`);\n let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n // Dialogs/modals\n document.addEventListener('click', (event) => {\n // Modal\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-modal]')) {\n const button = event.target.closest('[data-modal]');\n const modalID = button.getAttribute('data-modal');\n const dialog = document.querySelector(`dialog#${modalID}`);\n // Create close button is needed\n if (dialog.parentNode.closest('form') && !dialog.querySelector(':scope > .dialog__close:first-child'))\n dialog.innerHTML = `<button class=\"dialog__close\" formmethod=\"dialog\">Close</button>${dialog.innerHTML}`;\n else if (!dialog.parentNode.closest('form') && !dialog.querySelector(':scope > form:first-child'))\n dialog.innerHTML = `<form><button class=\"dialog__close\" formmethod=\"dialog\">Close</button></form>${dialog.innerHTML}`;\n let videoButton = dialog.querySelector('.youtube-embed a');\n if (videoButton) {\n createEmbed(videoButton);\n }\n dialog.showModal();\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"openModal\",\n \"id\": modalID\n });\n }\n ;\n // Close modal\n if (event && event.target instanceof HTMLElement && event.target.closest('dialog[open]')) {\n const dialog = event.target.closest('dialog[open]');\n const dialogDimensions = dialog.getBoundingClientRect();\n if (event.clientX < dialogDimensions.left || event.clientX > dialogDimensions.right || event.clientY < dialogDimensions.top || event.clientY > dialogDimensions.bottom) {\n dialog.close();\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"closeModal\",\n \"id\": dialog.getAttribute('id')\n });\n }\n }\n // Popover\n if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')) {\n let btn = event.target.closest('.dialog__wrapper > button');\n let parent = event.target.closest('.dialog__wrapper > button').parentNode;\n let dataEvent = \"openPopover\";\n let popover = parent.querySelector(':scope > dialog');\n if (popover.hasAttribute('open')) {\n popover.close();\n dataEvent = \"closePopover\";\n }\n else\n popover.show();\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": dataEvent,\n \"id\": btn.textContent\n });\n }\n ;\n });\n return null;\n};\nexport const isNumeric = function (str) {\n if (typeof str != \"string\")\n return false; // we only process strings! \n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str.split(' ').map(s => ucfirst(s)).join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\n","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 { zeroPad, isNumeric, ucfirst } from \"./helpers.js\";\nimport createPaginationButttons from \"./pagination.js\";\n// Basic functionality needed\nexport const addDataAttributes = (table) => {\n const colHeadings = Array.from(table.querySelectorAll('thead th'));\n const colRows = Array.from(table.querySelectorAll('tbody tr'));\n colRows.forEach((row, index) => {\n const cells = Array.from(row.querySelectorAll('th, td'));\n const statuses = ['Low', 'Medium', 'High', 'N/A', 'Pending', 'Verified', 'Incomplete', 'Completed', 'Requires approval'];\n cells.forEach((cell, cellIndex) => {\n const heading = colHeadings[cellIndex];\n if (typeof heading != \"undefined\") {\n let tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = heading.innerHTML;\n let headingText = tempDiv.textContent || tempDiv.innerText || \"\";\n cell.setAttribute('data-label', headingText);\n if (heading.hasAttribute('class'))\n cell.setAttribute('class', heading.getAttribute('class'));\n if (heading.hasAttribute('data-format')) {\n cell.setAttribute('data-format', heading.getAttribute('data-format'));\n cell.innerHTML = formatCell('date', cell.textContent.trim()); //Make sure date format is consistent\n }\n if (statuses.includes(cell.textContent.trim())) {\n cell.setAttribute('data-content', cell.textContent.trim());\n }\n }\n });\n });\n};\nexport const getLargestLastColWidth = (table) => {\n let largestWidth = 0;\n Array.from(table.querySelectorAll('tr')).forEach((row, index) => {\n let htmlStyles = window.getComputedStyle(document.querySelector('html'));\n let lastColChild = row.querySelector(':scope > *:last-child > *:first-child');\n if (lastColChild) {\n let responsiveWidth = lastColChild.offsetWidth / parseFloat(htmlStyles.fontSize);\n responsiveWidth += 1.5;\n largestWidth = largestWidth > responsiveWidth ? largestWidth : responsiveWidth;\n }\n let rowHeight = row.offsetHeight / parseFloat(htmlStyles.fontSize);\n row.style.setProperty(\"--row-height\", `${rowHeight}rem`);\n });\n return largestWidth;\n};\nexport const createMobileButton = (table) => {\n Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {\n let firstCol = row.querySelector(':scope > :is(td,th):first-child');\n let colContent = firstCol.textContent;\n firstCol.innerHTML = `<span class=\"td__content\">${colContent}</span><button type=\"button\" class=\"d-none\">${colContent}</button>`;\n });\n};\nexport const addTableEventListeners = (table) => {\n table.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('tr > :is(td,th):first-child button')) {\n let firstCol = event.target.closest('tr > :is(td,th):first-child button');\n let tableRow = firstCol.parentNode.closest('tr');\n if (tableRow.getAttribute('data-view') == \"full\")\n tableRow.setAttribute('data-view', 'default');\n else\n tableRow.setAttribute('data-view', 'full');\n firstCol.blur();\n }\n ;\n });\n};\n// Filters\nexport const createSearchDataList = (table, form) => {\n let searchInput = form.querySelector('[data-search]');\n if (!searchInput)\n return false;\n const searchID = searchInput.getAttribute('id');\n const searchableColumns = searchInput.getAttribute('data-search').split(',');\n let inputWrapper = searchInput.parentNode;\n let searchableTerms = {};\n searchableColumns.forEach((columnHeading, index) => {\n Array.from(table.querySelectorAll('td[data-label=\"' + columnHeading.trim() + '\"]')).forEach((td, index) => {\n if (td.querySelector('.td__content'))\n searchableTerms[td.querySelector('.td__content').textContent] = td.querySelector('.td__content').textContent;\n else\n searchableTerms[td.textContent] = td.textContent;\n });\n });\n searchInput.setAttribute('list', `${searchID}_list`);\n searchInput.setAttribute('autocomplete', 'off');\n if (!inputWrapper.querySelector('datalist'))\n inputWrapper.innerHTML += `<datalist id=\"${searchID}_list\"></datalist>`;\n inputWrapper.querySelector('datalist').innerHTML = `${Object.keys(searchableTerms).map(term => `<option value=\"${term}\"></option>`).join(\"\")}`;\n};\nexport const addFilterEventListeners = (table, form, pagination, wrapper, savedTableBody) => {\n var timer;\n // Check what conditions are set on the table to see what the form actions are\n let formSubmit = function () {\n if (form.hasAttribute('data-ajax'))\n loadAjaxTable(table, form, pagination, wrapper);\n else if (form.hasAttribute('data-submit'))\n form.submit();\n else {\n filterTable(table, form, wrapper);\n createPaginationButttons(wrapper, pagination);\n }\n };\n form.addEventListener('keyup', (event) => {\n clearTimeout(timer);\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')) {\n timer = setTimeout(function () {\n formSubmit();\n }, 500);\n }\n ;\n });\n form.addEventListener('change', (event) => {\n clearTimeout(timer);\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-sort]')) {\n if (!form.hasAttribute('data-submit'))\n sortTable(table, form, savedTableBody);\n formSubmit();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')) {\n formSubmit();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')) {\n formSubmit();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {\n formSubmit();\n }\n });\n form.addEventListener('click', (event) => {\n clearTimeout(timer);\n if (event && event.target instanceof HTMLElement && event.target.closest('dialog button:not([type=\"button\"])')) {\n let button = event.target.closest('dialog button:not([type=\"button\"])');\n let modal = button.closest('dialog');\n modal.close();\n }\n // Prevent the form from submitting\n if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__close')) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-clear]')) {\n form.reset();\n if (!form.hasAttribute('data-submit'))\n sortTable(table, form, savedTableBody);\n formSubmit();\n }\n });\n form.addEventListener('submit', (event) => {\n clearTimeout(timer);\n if (!form.hasAttribute('data-submit'))\n event.preventDefault();\n formSubmit();\n });\n};\nexport const sortTable = (table, form, savedTableBody) => {\n if (form.getAttribute('data-ajax')) {\n return false;\n }\n let tbody = table.querySelector('tbody');\n let select = form.querySelector('[data-sort]');\n let selectedOption = select.querySelector(`option:nth-child(${select.selectedIndex + 1})`);\n let sortBy = selectedOption.getAttribute('data-sort');\n let order = selectedOption.getAttribute('data-order');\n let format = selectedOption.getAttribute('data-format');\n if (!sortBy) {\n tbody.innerHTML = savedTableBody.innerHTML;\n addDataAttributes(table);\n return false;\n }\n let orderArray = [];\n if (!['asc', 'desc', 'descending'].includes(order)) {\n orderArray = order.split(',');\n }\n // Create an array from the table rows, the index created is then used to sort the array\n let tableArr = [];\n Array.from(tbody.querySelectorAll('tr')).forEach((tableRow, index) => {\n let rowIndex = tableRow.querySelector('td[data-label=\"' + sortBy + '\"], th[data-label=\"' + sortBy + '\"]').textContent.trim();\n // If a predefined order set replace the search term with an ordered numeric value so it can be sorted\n if (orderArray.length && orderArray.includes(rowIndex)) {\n rowIndex = orderArray.indexOf(rowIndex);\n }\n if (isNumeric(rowIndex))\n rowIndex = zeroPad(rowIndex, 10);\n // If the sort format is date then lets transform the index to a sortable date (this is never displayed)\n if (format && format == \"date\")\n rowIndex = new Date(rowIndex);\n const dataRow = {\n index: rowIndex,\n row: tableRow\n };\n tableArr.push(dataRow);\n });\n // Sort array alphabetically\n tableArr.sort((a, b) => (a.index > b.index) ? 1 : -1);\n // Reverse if descending\n if (order == \"descending\" || order == \"desc\")\n tableArr = tableArr.reverse();\n // Create a string to return and populate the tbody\n let strTbody = '';\n tableArr.forEach((tableRow, index) => {\n strTbody += tableRow.row.outerHTML;\n });\n tbody.innerHTML = strTbody;\n};\nexport const filterTable = (table, form, wrapper) => {\n table.classList.remove('table--filtered');\n let filters = [];\n let searches = [];\n let matched = 0;\n let page = form.querySelector('[data-pagination]') ? parseInt(form.querySelector('[data-pagination]').value) : 1;\n let showRows = form.querySelector('[data-show]') ? parseInt(form.querySelector('[data-show]').value) : 15;\n // Filter\n let filterInputs = Array.from(form.querySelectorAll('[data-filter]'));\n filterInputs.forEach((filterInput, index) => {\n // Ignore uncked radio inputs\n if (filterInput.type == 'radio' && !filterInput.checked) {\n return;\n }\n if (filterInput.type == 'checkbox' && !filterInput.checked) {\n return;\n }\n if (filterInput.getAttribute('data-filter') == \"multi\") {\n for (const [key, value] of Object.entries(JSON.parse(filterInput.value))) {\n filters[filterInput.getAttribute('data-filter')].push(value);\n }\n }\n else if (filterInput.value) {\n if (!filters[filterInput.getAttribute('data-filter')])\n filters[filterInput.getAttribute('data-filter')] = new Array();\n filters[filterInput.getAttribute('data-filter')].push(filterInput.value);\n }\n });\n // Add search columns too\n if (form.querySelector('[data-search]')) {\n let searchInput = form.querySelector('[data-search]');\n let searchColumns = form.querySelector('[data-search]').getAttribute('data-search').split(',');\n searchColumns.forEach((column, index) => {\n searches.push({ 'column': `${column.trim()}`, 'value': `${searchInput.value}` });\n });\n }\n //Display the filter count\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML = '';\n });\n if (filters.length) {\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML += `(${filters.length})`;\n });\n }\n // Stop function if no filters identified\n if (!searches.length && !filters.length)\n return false;\n table.classList.add('table--filtered');\n // Reset\n Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {\n row.classList.remove('filtered');\n row.classList.remove('filtered--matched');\n row.classList.remove('filtered--show');\n row.removeAttribute('data-filtered-by');\n });\n // Filter the table\n for (const [key, filterValue] of Object.entries(filters)) {\n console.log(filterValue);\n Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {\n let isMatched = false;\n filterValue.forEach((filter, index) => {\n let filterTd = row.querySelector(`[data-label=\"${key}\"]`);\n // Dynamic values\n if (filter && filter == \"$today\")\n filter = formatCell('date', new Date());\n else if (filter && filter == \"$yesterday\") {\n let yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n filter = formatCell('date', yesterday);\n }\n else if (filter && (filter == \"$thisWeek\" || filter == \"$lastWeek\")) {\n let today = new Date();\n let mondayThisWeek = new Date(today.setDate(today.getDate() - (today.getDay() - 1)));\n let sundayThisWeek = new Date(today.setDate(today.getDate() - today.getDay() + 7));\n let checkDate = new Date(filterTd.textContent.toLowerCase());\n today.setHours(0, 0, 0, 0);\n mondayThisWeek.setHours(0, 0, 0, 0);\n sundayThisWeek.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n if (filter == \"$thisWeek\") {\n isMatched = (checkDate >= mondayThisWeek && checkDate <= sundayThisWeek);\n }\n else {\n let mondayLastWeek = new Date(mondayThisWeek.setDate(mondayThisWeek.getDate() - 7));\n let sundayLastWeek = new Date(sundayThisWeek.setDate(sundayThisWeek.getDate() - 7));\n mondayLastWeek.setHours(0, 0, 0, 0);\n sundayLastWeek.setHours(0, 0, 0, 0);\n isMatched = (checkDate >= mondayLastWeek && checkDate <= sundayLastWeek);\n }\n }\n else if (filter && filter == \"$thisMonth\") {\n let today = new Date(), year = today.getFullYear(), month = today.getMonth();\n var firstDayMonth = new Date(year, month, 1);\n var lastDayMonth = new Date(year, month + 1, 0);\n let checkDate = new Date(filterTd.textContent.toLowerCase());\n firstDayMonth.setHours(0, 0, 0, 0);\n lastDayMonth.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n isMatched = (checkDate >= firstDayMonth && checkDate <= lastDayMonth);\n }\n else if (filter && filter == \"$lastMonth\") {\n let today = new Date(), year = today.getFullYear(), month = today.getMonth();\n var firstDayLastMonth = new Date(year, month - 1, 1);\n var lastDayLastMonth = new Date(year, month, 0);\n let checkDate = new Date(filterTd.textContent.toLowerCase());\n firstDayLastMonth.setHours(0, 0, 0, 0);\n lastDayLastMonth.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n isMatched = (checkDate >= firstDayLastMonth && checkDate <= lastDayLastMonth);\n }\n if (filterTd && filterTd.textContent.toLowerCase().includes(filter.toLowerCase())) {\n isMatched = true;\n }\n });\n if (!isMatched) {\n row.classList.add('filtered');\n row.setAttribute('data-filtered-by', key);\n }\n });\n }\n // Search whats left of the table after filtering\n Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {\n let isSearched = searches.length > 0 && searches[0].value.length >= 3 ? false : true;\n searches.forEach((search, index) => {\n let searchTd = row.querySelector(`[data-label=\"${search.column}\"]`);\n if (searchTd && search.value.length >= 3 && searchTd.textContent.toLowerCase().includes(search.value.toLowerCase())) {\n isSearched = true;\n }\n });\n if (!isSearched)\n row.classList.add('filtered');\n });\n // Work out what to display after pagination\n Array.from(table.querySelectorAll('tbody tr:not(.filtered')).forEach((row, index) => {\n matched++;\n row.classList.add('filtered--matched');\n // pagination bit \n if (Math.ceil(matched / showRows) == parseInt(page))\n row.classList.add('filtered--show');\n });\n if (wrapper) {\n wrapper.setAttribute('data-page', page);\n wrapper.setAttribute('data-pages', Math.ceil(matched / showRows));\n wrapper.setAttribute('data-total', matched);\n wrapper.setAttribute('data-show', showRows);\n }\n populateDataQueries(table, form);\n};\nexport const populateDataQueries = (table, form) => {\n const dataQueries = Array.from(form.querySelectorAll('[data-query]'));\n dataQueries.forEach((queryElement, index) => {\n let query = queryElement.getAttribute('data-query');\n let numberOfMatchedRows;\n if (query == 'total') {\n numberOfMatchedRows = table.classList.contains('table--filtered') ? table.querySelectorAll('tbody tr:not(.filtered)').length : table.querySelectorAll('tbody tr').length;\n }\n else if (!query.includes(' == ') && query.includes(' & ')) {\n let queries = query.split(' & ');\n let selector = '';\n queries.forEach(element => {\n selector += `:not([data-filtered-by=\"${element}\"])`;\n });\n console.log(selector);\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr${selector}`)).length;\n }\n else if (!query.includes(' == ')) {\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not([data-filtered-by=\"${query}\"])`)).length;\n }\n else if (query.includes(' && ')) {\n let queries = query.split(' && ');\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not(.filtered)`)).filter(function (row) {\n let matched = true;\n for (const [index, value] of Object.entries(queries)) {\n let queryParts = value.split(' == ');\n if (!row.querySelector(`td[data-label=\"${queryParts[0]}\"]`) || row.querySelector(`td[data-label=\"${queryParts[0]}\"]`).textContent != `${queryParts[1]}`)\n matched = false;\n }\n return matched;\n }).length;\n }\n else {\n let queryParts = query.split(' == ');\n console.log(queryParts[0]);\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr.filtered--matched td[data-label=\"${queryParts[0]}\"], tbody tr[data-filtered-by=\"${queryParts[0]}\"] td[data-label=\"${queryParts[0]}\"]`)).filter(function (element) {\n return element.textContent === queryParts[1];\n }).length;\n }\n if (queryElement.hasAttribute('data-total'))\n queryElement.setAttribute('data-total', numberOfMatchedRows);\n else\n queryElement.innerHTML = numberOfMatchedRows;\n });\n};\n// Pagination\nexport const addPaginationEventListeners = function (table, form, pagination, wrapper) {\n pagination.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-page]')) {\n event.preventDefault();\n let paginationInput = form.querySelector('[data-pagination]');\n let newPage = event.target.closest('[data-page]').getAttribute('data-page');\n paginationInput.value = newPage;\n wrapper.setAttribute('data-page', newPage);\n form.dispatchEvent(new Event(\"submit\"));\n const url = new URL(location);\n url.searchParams.set(\"page\", newPage);\n history.pushState({ 'type': 'pagination', 'form': form.getAttribute('id'), 'page': newPage }, \"\", url);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {\n event.preventDefault();\n let showInput = form.querySelector('[data-show]');\n let showRows = event.target.closest('[data-show]').getAttribute('data-show');\n showInput.value = showRows;\n wrapper.setAttribute('data-show', showRows);\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n};\n// Export CSV Data\nexport const addExportEventListeners = (button, table) => {\n if (!button)\n return false;\n button.addEventListener('click', (event) => {\n exportAsCSV(table);\n });\n};\nexport const exportAsCSV = function (table) {\n var csvData = [];\n // Get each row data\n var rows = table.getElementsByTagName('tr');\n for (var i = 0; i < rows.length; i++) {\n // Get each column data\n var cols = rows[i].querySelectorAll('td,th');\n // Stores each csv row data\n var csvRow = [];\n for (var j = 0; j < cols.length; j++) {\n // Get the text data of each cell of a row and push it to csvrow\n csvRow.push(`\"${cols[j].textContent}\"`);\n }\n // Combine each column value with comma\n csvData.push(csvRow.join(\",\"));\n }\n // Combine each row data with new line character\n csvData = csvData.join('\\n');\n // Create CSV file object and feed our csvData into it\n let CSVFile = new Blob([csvData], {\n type: \"text/csv\"\n });\n // Create to temporary link to initiate download process\n var tempLink = document.createElement('a');\n tempLink.download = \"export.csv\";\n var url = window.URL.createObjectURL(CSVFile);\n tempLink.href = url;\n // This link should not be displayed\n tempLink.style.display = \"none\";\n document.body.appendChild(tempLink);\n // Automatically click the link to trigger download\n tempLink.click();\n document.body.removeChild(tempLink);\n};\n// After table is loaded\nexport const makeTableFunctional = function (table, form, pagination, wrapper) {\n createMobileButton(table);\n addDataAttributes(table);\n populateDataQueries(table, form);\n // Work out the largest width of the CTA's in the last column\n if (wrapper && wrapper.classList.contains('table--cta')) {\n const largestWidth = getLargestLastColWidth(table);\n wrapper.style.setProperty(\"--cta-width\", `${largestWidth}rem`);\n }\n};\nexport const loadAjaxTable = function (table, form, pagination, wrapper) {\n const resolvePath = (object, path, defaultValue) => path.split(/[\\.\\[\\]\\'\\\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);\n let queryString = new URLSearchParams(new FormData(form)).toString();\n let columns = table.querySelectorAll('thead tr th');\n let tbody = table.querySelector('tbody');\n fetch(form.getAttribute('data-ajax'), {\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n })\n }).then((response) => response.json()).then((response) => {\n if (response.data) {\n tbody.innerHTML = '';\n response.data.forEach((row, index) => {\n var table_row = document.createElement('tr');\n columns.forEach((col, index) => {\n let cellOutput = '';\n var table_cell = document.createElement('td');\n // Add some data to help with the mobile layout design\n table_cell.setAttribute('data-label', col.innerText);\n if (col.getAttribute('data-output')) {\n var cellTemplate = col.getAttribute('data-output');\n // Use a regex to replace {var} with actual values from the json data\n cellOutput = cellTemplate.replace(new RegExp(/{(.*?)}/, \"gm\"), function (matched) { return resolvePath(row, matched.replace('{', '').replace('}', '')); });\n }\n if (col.hasAttribute('data-format')) {\n cellOutput = formatCell(col.getAttribute('data-format'), cellOutput);\n }\n table_cell.innerHTML = cellOutput;\n table_row.appendChild(table_cell);\n });\n tbody.appendChild(table_row);\n });\n createSearchDataList(table, form);\n // Add data to the pagination \n makeTableFunctional(table, form, pagination, wrapper);\n wrapper.setAttribute('data-total', (response.meta.total ? response.meta.total : 1));\n wrapper.setAttribute('data-page', (response.meta.current_page ? response.meta.current_page : 1));\n wrapper.setAttribute('data-pages', Math.ceil(wrapper.getAttribute('data-total') / wrapper.getAttribute('data-show')));\n createPaginationButttons(wrapper, pagination);\n if (response.data.length == 0) {\n tbody.innerHTML = '<tr><td colspan=\"100%\"><span class=\"h4 m-0\">No results found</span></td></tr>';\n }\n }\n else {\n tbody.innerHTML = '<tr><td colspan=\"100%\"><span class=\"h6 m-0\">Error loading table</span></td></tr>';\n }\n });\n};\nexport const formatCell = (format, cellOutput) => {\n switch (format) {\n case 'date':\n cellOutput = new Date(cellOutput).toLocaleDateString('en-gb', { year: \"2-digit\", month: \"long\", day: \"numeric\" });\n break;\n case 'capitalise':\n cellOutput = ucfirst(cellOutput);\n break;\n }\n return cellOutput;\n};\n","// @ts-nocheck\nimport * as tableModule from \"../../modules/table.js\";\nimport createPaginationButttons from \"../../modules/pagination.js\";\nclass iamTable 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 isCTA = this.classList.contains('table--cta');\n const isExportable = this.classList.contains('table--export');\n let classList = this.classList.toString();\n classList = classList.replace('table--cta', '');\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${assetLocation}/css/core.min.css\";\n </style>\n ${isCTA ? '<div class=\"table--cta\">' : ''}\n <div class=\"table__wrapper ${classList}\">\n <slot></slot>\n </div>\n ${isCTA ? '</div>' : ''}\n ${isExportable ? '<button class=\"link\" type=\"button\" data-export>Export table as CSV</button>' : ''}\n <div class=\"table__pagination\"></div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n const params = new URLSearchParams(window.location.search);\n // Set default attributes\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', 15);\n this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));\n }\n connectedCallback() {\n this.table = this.querySelector('table');\n this.savedTableBody = this.querySelector('tbody').cloneNode(true);\n this.pagination = this.shadowRoot.querySelector('.table__pagination');\n // Set events on the filter table\n this.form = document.createElement('form');\n if (this.hasAttribute('data-filterby')) {\n this.form = document.querySelector(`#${this.getAttribute('data-filterby')}`);\n // Create a data list if a search input is present\n tableModule.createSearchDataList(this.table, this.form);\n if (!this.form.querySelector('[data-page]')) {\n this.form.innerHTML += `<input name=\"page\" type=\"hidden\" value=\"${this.getAttribute('data-page')}\" data-pagination=\"true\" />`;\n }\n if (!this.form.querySelector('[data-show]')) {\n this.form.innerHTML += `<input name=\"show\" type=\"hidden\" value=\"${this.getAttribute('data-show')}\" data-show=\"true\" />`;\n }\n }\n // Event listeners\n tableModule.addTableEventListeners(this.table);\n tableModule.addFilterEventListeners(this.table, this.form, this.pagination, this, this.savedTableBody);\n tableModule.addPaginationEventListeners(this.table, this.form, this.pagination, this);\n tableModule.addExportEventListeners(this.shadowRoot.querySelector('[data-export]'), this.table);\n if (this.form.getAttribute('data-ajax')) {\n tableModule.loadAjaxTable(this.table, this.form, this.pagination, this);\n }\n else {\n tableModule.makeTableFunctional(this.table, this.form, this.pagination, this);\n tableModule.filterTable(this.table, this.form, this);\n createPaginationButttons(this, this.pagination);\n }\n }\n static get observedAttributes() {\n return [\"data-total\", \"data-pages\", \"data-page\", \"data-show\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n /*\n switch (attrName) {\n case \"data-total\": {\n this.setAttribute('data-pages', Math.ceil(newVal / this.getAttribute('data-show')));\n break;\n }\n case \"data-show\": {\n this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / newVal));\n break;\n }\n case \"data-pages\": {\n console.log('create pagination');\n \n tableModule.filterTable(this.table, this.form);\n createPaginationButttons(this,this.pagination);\n \n break;\n }\n case \"data-page\": {\n \n let paginationInput = this.form.querySelector('[data-pagination]');\n \n paginationInput.value = newVal;\n \n //tableModule.filterTable(this.table, this.form);\n \n break;\n }\n }\n */\n }\n}\nexport default iamTable;\n"],"names":["isNumeric","str","zeroPad","num","places","ucfirst","createPaginationButttons","controller","pagination","currentPage","numberPages","numberRows","showRows","addRows","strButtons","i","addDataAttributes","table","colHeadings","row","index","cells","statuses","cell","cellIndex","heading","tempDiv","headingText","formatCell","getLargestLastColWidth","largestWidth","htmlStyles","lastColChild","responsiveWidth","rowHeight","createMobileButton","firstCol","colContent","addTableEventListeners","event","tableRow","createSearchDataList","form","searchInput","searchID","searchableColumns","inputWrapper","searchableTerms","columnHeading","td","term","addFilterEventListeners","wrapper","savedTableBody","timer","formSubmit","loadAjaxTable","filterTable","sortTable","tbody","select","selectedOption","sortBy","order","format","orderArray","tableArr","rowIndex","dataRow","a","strTbody","filters","searches","matched","page","filterInput","key","value","column","element","filterValue","isMatched","filter","filterTd","yesterday","today","mondayThisWeek","sundayThisWeek","checkDate","mondayLastWeek","sundayLastWeek","year","month","firstDayMonth","lastDayMonth","firstDayLastMonth","lastDayLastMonth","isSearched","search","searchTd","populateDataQueries","queryElement","query","numberOfMatchedRows","queries","selector","queryParts","addPaginationEventListeners","paginationInput","newPage","url","showInput","addExportEventListeners","button","exportAsCSV","csvData","rows","cols","csvRow","j","CSVFile","tempLink","makeTableFunctional","resolvePath","object","path","defaultValue","p","o","columns","response","table_row","col","cellOutput","table_cell","cellTemplate","iamTable","assetLocation","isCTA","isExportable","classList","template","params","tableModule.createSearchDataList","tableModule.addTableEventListeners","tableModule.addFilterEventListeners","tableModule.addPaginationEventListeners","tableModule.addExportEventListeners","tableModule.loadAjaxTable","tableModule.makeTableFunctional","tableModule.filterTable","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"table.component.min.js","sources":["../../modules/helpers.js","../../modules/pagination.js","../../modules/table.js","table.component.js"],"sourcesContent":["// @ts-nocheck\nimport { createEmbed } from \"./youtubevideo.js\";\n/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add(\"js-enabled\");\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add(\"ie\");\n }\n return null;\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () { checkElements(location.hash); }, false);\n addEventListener(\"popstate\", (event) => {\n if (event.state.type == \"pagination\") {\n let form = document.querySelector(`#${event.state.form}`);\n let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n // Dialogs/modals\n document.addEventListener('click', (event) => {\n // Modal\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-modal]')) {\n const button = event.target.closest('[data-modal]');\n const modalID = button.hasAttribute('data-modal') ? button.getAttribute('data-modal') : button.getAttribute('data-filter');\n const dialog = document.querySelector(`dialog#${modalID}`);\n // Create close button is needed\n dialog.innerHTML = `<button class=\"dialog__close\">Close</button>${dialog.innerHTML}`;\n let videoButton = dialog.querySelector('.youtube-embed a');\n if (videoButton) {\n createEmbed(videoButton);\n }\n dialog.showModal();\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"openModal\",\n \"id\": modalID\n });\n }\n ;\n // Close modal\n if (event && event.target instanceof HTMLElement && event.target.closest('button.dialog__close')) {\n const dialog = event.target.closest('dialog[open]');\n event.preventDefault();\n dialog.close();\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"closeModal\",\n \"id\": dialog.getAttribute('id')\n });\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('dialog[open]')) {\n const dialog = event.target.closest('dialog[open]');\n const dialogDimensions = dialog.getBoundingClientRect();\n if (event.clientX < dialogDimensions.left || event.clientX > dialogDimensions.right || event.clientY < dialogDimensions.top || event.clientY > dialogDimensions.bottom) {\n dialog.close();\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"closeModal\",\n \"id\": dialog.getAttribute('id')\n });\n }\n }\n // Popover\n if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')) {\n // Close existing open popover\n let btn = event.target.closest('.dialog__wrapper > button');\n let parent = event.target.closest('.dialog__wrapper > button').parentNode;\n let dataEvent = \"openPopover\";\n let popover = parent.querySelector(':scope > dialog');\n if (document.querySelector('dialog[open]') && document.querySelector('dialog[open]') != popover)\n document.querySelector('dialog[open]').close();\n if (popover.hasAttribute('open')) {\n popover.close();\n dataEvent = \"closePopover\";\n popover.removeAttribute('style');\n btn.classList.remove('active');\n }\n else {\n popover.show();\n btn.classList.add('active');\n var position = btn.getBoundingClientRect();\n let topOffset = position.top;\n let leftOffset = position.left;\n if (btn.closest('iam-table')) {\n let container = btn.closest('iam-table').parentNode.getBoundingClientRect();\n topOffset -= container.top;\n leftOffset -= container.left;\n }\n if (popover.classList.contains('dialog--fix')) {\n popover.setAttribute('style', `position:fixed;top: ${topOffset}px; left: ${leftOffset}px; margin: 3rem 0 0 0;`);\n }\n }\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": dataEvent,\n \"id\": btn.textContent\n });\n }\n ;\n });\n return null;\n};\nexport const isNumeric = function (str) {\n if (typeof str != \"string\")\n return false; // we only process strings! \n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str.split(' ').map(s => ucfirst(s)).join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\n","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 { zeroPad, isNumeric, ucfirst } from \"./helpers.js\";\nimport createPaginationButttons from \"./pagination.js\";\n// Basic functionality needed\nexport const addDataAttributes = (table) => {\n const colHeadings = Array.from(table.querySelectorAll('thead th'));\n const colRows = Array.from(table.querySelectorAll('tbody tr'));\n colRows.forEach((row, index) => {\n const cells = Array.from(row.querySelectorAll('th, td'));\n const statuses = ['Low', 'Medium', 'High', 'N/A', 'Pending', 'Verified', 'Incomplete', 'Completed', 'Requires approval'];\n cells.forEach((cell, cellIndex) => {\n const heading = colHeadings[cellIndex];\n if (typeof heading != \"undefined\") {\n let tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = heading.innerHTML;\n let headingText = tempDiv.textContent || tempDiv.innerText || \"\";\n cell.setAttribute('data-label', headingText);\n if (heading.hasAttribute('class'))\n cell.setAttribute('class', heading.getAttribute('class'));\n if (heading.hasAttribute('data-format')) {\n cell.setAttribute('data-format', heading.getAttribute('data-format'));\n cell.innerHTML = formatCell('date', cell.textContent.trim()); //Make sure date format is consistent\n }\n if (statuses.includes(cell.textContent.trim())) {\n cell.setAttribute('data-content', cell.textContent.trim());\n }\n }\n });\n });\n};\nexport const getLargestLastColWidth = (table) => {\n let largestWidth = 0;\n Array.from(table.querySelectorAll('tr')).forEach((row, index) => {\n let htmlStyles = window.getComputedStyle(document.querySelector('html'));\n let lastColChild = row.querySelector(':scope > *:last-child > *:first-child');\n if (lastColChild) {\n let responsiveWidth = lastColChild.offsetWidth / parseFloat(htmlStyles.fontSize);\n responsiveWidth += 1.5;\n largestWidth = largestWidth > responsiveWidth ? largestWidth : responsiveWidth;\n }\n let rowHeight = row.offsetHeight / parseFloat(htmlStyles.fontSize);\n row.style.setProperty(\"--row-height\", `${rowHeight}rem`);\n });\n return largestWidth;\n};\nexport const createMobileButton = (table) => {\n if (table.closest('.table--fullwidth'))\n return false;\n Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {\n let firstCol = row.querySelector(':scope > :is(td,th):first-child');\n let colContent = firstCol.textContent;\n firstCol.innerHTML = `<span class=\"td__content\">${colContent}</span><button type=\"button\" class=\"d-none\">${colContent}</button>`;\n });\n};\nexport const addTableEventListeners = (table) => {\n table.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('tr > :is(td,th):first-child button')) {\n let firstCol = event.target.closest('tr > :is(td,th):first-child button');\n let tableRow = firstCol.parentNode.closest('tr');\n if (tableRow.getAttribute('data-view') == \"full\")\n tableRow.setAttribute('data-view', 'default');\n else\n tableRow.setAttribute('data-view', 'full');\n firstCol.blur();\n }\n ;\n });\n};\n// Filters\nexport const createSearchDataList = (table, form) => {\n let searchInput = form.querySelector('[data-search]');\n if (!searchInput)\n return false;\n const searchID = searchInput.getAttribute('id');\n const searchableColumns = searchInput.getAttribute('data-search').split(',');\n let inputWrapper = searchInput.parentNode;\n let searchableTerms = {};\n searchableColumns.forEach((columnHeading, index) => {\n Array.from(table.querySelectorAll('td[data-label=\"' + columnHeading.trim() + '\"]')).forEach((td, index) => {\n if (td.querySelector('.td__content'))\n searchableTerms[td.querySelector('.td__content').textContent] = td.querySelector('.td__content').textContent;\n else\n searchableTerms[td.textContent] = td.textContent;\n });\n });\n searchInput.setAttribute('list', `${searchID}_list`);\n searchInput.setAttribute('autocomplete', 'off');\n if (!inputWrapper.querySelector('datalist'))\n inputWrapper.innerHTML += `<datalist id=\"${searchID}_list\"></datalist>`;\n inputWrapper.querySelector('datalist').innerHTML = `${Object.keys(searchableTerms).map(term => `<option value=\"${term}\"></option>`).join(\"\")}`;\n};\nexport const addFilterEventListeners = (table, form, pagination, wrapper, savedTableBody) => {\n var timer;\n // Check what conditions are set on the table to see what the form actions are\n let formSubmit = function () {\n if (form.hasAttribute('data-ajax'))\n loadAjaxTable(table, form, pagination, wrapper);\n else if (form.hasAttribute('data-submit'))\n form.submit();\n else {\n filterTable(table, form, wrapper);\n createPaginationButttons(wrapper, pagination);\n }\n };\n form.addEventListener('keyup', (event) => {\n clearTimeout(timer);\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')) {\n timer = setTimeout(function () {\n formSubmit();\n }, 500);\n }\n ;\n });\n form.addEventListener('change', (event) => {\n clearTimeout(timer);\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-sort]')) {\n if (!form.hasAttribute('data-submit'))\n sortTable(table, form, savedTableBody);\n formSubmit();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')) {\n formSubmit();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')) {\n formSubmit();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {\n formSubmit();\n }\n });\n form.addEventListener('click', (event) => {\n clearTimeout(timer);\n if (event && event.target instanceof HTMLElement && event.target.closest('dialog button:not([type=\"button\"])')) {\n let button = event.target.closest('dialog button:not([type=\"button\"])');\n let modal = button.closest('dialog');\n modal.close();\n }\n // Prevent the form from submitting\n if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__close')) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-clear]')) {\n form.reset();\n if (!form.hasAttribute('data-submit'))\n sortTable(table, form, savedTableBody);\n formSubmit();\n }\n });\n form.addEventListener('submit', (event) => {\n clearTimeout(timer);\n if (!form.hasAttribute('data-submit'))\n event.preventDefault();\n formSubmit();\n });\n};\nexport const sortTable = (table, form, savedTableBody) => {\n if (form.getAttribute('data-ajax')) {\n return false;\n }\n let tbody = table.querySelector('tbody');\n let select = form.querySelector('[data-sort]');\n let selectedOption = select.querySelector(`option:nth-child(${select.selectedIndex + 1})`);\n let sortBy = selectedOption.getAttribute('data-sort');\n let order = selectedOption.getAttribute('data-order');\n let format = selectedOption.getAttribute('data-format');\n if (!sortBy) {\n tbody.innerHTML = savedTableBody.innerHTML;\n addDataAttributes(table);\n return false;\n }\n let orderArray = [];\n if (!['asc', 'desc', 'descending'].includes(order)) {\n orderArray = order.split(',');\n }\n // Create an array from the table rows, the index created is then used to sort the array\n let tableArr = [];\n Array.from(tbody.querySelectorAll('tr')).forEach((tableRow, index) => {\n let rowIndex = tableRow.querySelector('td[data-label=\"' + sortBy + '\"], th[data-label=\"' + sortBy + '\"]').textContent.trim();\n // If a predefined order set replace the search term with an ordered numeric value so it can be sorted\n if (orderArray.length && orderArray.includes(rowIndex)) {\n rowIndex = orderArray.indexOf(rowIndex);\n }\n if (isNumeric(rowIndex))\n rowIndex = zeroPad(rowIndex, 10);\n // If the sort format is date then lets transform the index to a sortable date (this is never displayed)\n if (format && format == \"date\")\n rowIndex = new Date(rowIndex);\n const dataRow = {\n index: rowIndex,\n row: tableRow\n };\n tableArr.push(dataRow);\n });\n // Sort array alphabetically\n tableArr.sort((a, b) => (a.index > b.index) ? 1 : -1);\n // Reverse if descending\n if (order == \"descending\" || order == \"desc\")\n tableArr = tableArr.reverse();\n // Create a string to return and populate the tbody\n let strTbody = '';\n tableArr.forEach((tableRow, index) => {\n strTbody += tableRow.row.outerHTML;\n });\n tbody.innerHTML = strTbody;\n};\nexport const filterTable = (table, form, wrapper) => {\n table.classList.remove('table--filtered');\n let filters = [];\n let searches = [];\n let matched = 0;\n let page = form.querySelector('[data-pagination]') ? parseInt(form.querySelector('[data-pagination]').value) : 1;\n let showRows = form.querySelector('[data-show]') ? parseInt(form.querySelector('[data-show]').value) : 15;\n // Filter\n let filterInputs = Array.from(form.querySelectorAll('[data-filter]'));\n filterInputs.forEach((filterInput, index) => {\n // Ignore uncked radio inputs\n if (filterInput.type == 'radio' && !filterInput.checked) {\n return;\n }\n if (filterInput.type == 'checkbox' && !filterInput.checked) {\n return;\n }\n if (filterInput.getAttribute('data-filter') == \"multi\") {\n for (const [key, value] of Object.entries(JSON.parse(filterInput.value))) {\n filters[filterInput.getAttribute('data-filter')].push(value);\n }\n }\n else if (filterInput.value) {\n if (!filters[filterInput.getAttribute('data-filter')])\n filters[filterInput.getAttribute('data-filter')] = new Array();\n filters[filterInput.getAttribute('data-filter')].push(filterInput.value);\n }\n });\n // Add search columns too\n if (form.querySelector('[data-search]')) {\n let searchInput = form.querySelector('[data-search]');\n let searchColumns = form.querySelector('[data-search]').getAttribute('data-search').split(',');\n searchColumns.forEach((column, index) => {\n searches.push({ 'column': `${column.trim()}`, 'value': `${searchInput.value}` });\n });\n }\n //Display the filter count\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML = '';\n });\n if (filters.length) {\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML += `(${filters.length})`;\n });\n }\n // Stop function if no filters identified\n if (!Object.keys(searches).length && !Object.keys(filters).length)\n return false;\n table.classList.add('table--filtered');\n // Reset\n Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {\n row.classList.remove('filtered');\n row.classList.remove('filtered--matched');\n row.classList.remove('filtered--show');\n row.removeAttribute('data-filtered-by');\n });\n // Filter the table\n for (const [key, filterValue] of Object.entries(filters)) {\n Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {\n let isMatched = false;\n filterValue.forEach((filter, index) => {\n let filterTd = row.querySelector(`[data-label=\"${key}\"]`);\n // Dynamic values\n if (filter && filter == \"$today\")\n filter = formatCell('date', new Date());\n else if (filter && filter == \"$yesterday\") {\n let yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n filter = formatCell('date', yesterday);\n }\n else if (filter && (filter == \"$thisWeek\" || filter == \"$lastWeek\")) {\n let today = new Date();\n let mondayThisWeek = new Date(today.setDate(today.getDate() - (today.getDay() - 1)));\n let sundayThisWeek = new Date(today.setDate(today.getDate() - today.getDay() + 7));\n let checkDate = new Date(filterTd.textContent.toLowerCase());\n today.setHours(0, 0, 0, 0);\n mondayThisWeek.setHours(0, 0, 0, 0);\n sundayThisWeek.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n if (filter == \"$thisWeek\") {\n isMatched = (checkDate >= mondayThisWeek && checkDate <= sundayThisWeek);\n }\n else {\n let mondayLastWeek = new Date(mondayThisWeek.setDate(mondayThisWeek.getDate() - 7));\n let sundayLastWeek = new Date(sundayThisWeek.setDate(sundayThisWeek.getDate() - 7));\n mondayLastWeek.setHours(0, 0, 0, 0);\n sundayLastWeek.setHours(0, 0, 0, 0);\n isMatched = (checkDate >= mondayLastWeek && checkDate <= sundayLastWeek);\n }\n }\n else if (filter && filter == \"$thisMonth\") {\n let today = new Date(), year = today.getFullYear(), month = today.getMonth();\n var firstDayMonth = new Date(year, month, 1);\n var lastDayMonth = new Date(year, month + 1, 0);\n let checkDate = new Date(filterTd.textContent.toLowerCase());\n firstDayMonth.setHours(0, 0, 0, 0);\n lastDayMonth.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n isMatched = (checkDate >= firstDayMonth && checkDate <= lastDayMonth);\n }\n else if (filter && filter == \"$lastMonth\") {\n let today = new Date(), year = today.getFullYear(), month = today.getMonth();\n var firstDayLastMonth = new Date(year, month - 1, 1);\n var lastDayLastMonth = new Date(year, month, 0);\n let checkDate = new Date(filterTd.textContent.toLowerCase());\n firstDayLastMonth.setHours(0, 0, 0, 0);\n lastDayLastMonth.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n isMatched = (checkDate >= firstDayLastMonth && checkDate <= lastDayLastMonth);\n }\n if (filterTd && filterTd.textContent.toLowerCase().includes(filter.toLowerCase())) {\n isMatched = true;\n }\n });\n if (!isMatched) {\n row.classList.add('filtered');\n row.setAttribute('data-filtered-by', key);\n }\n });\n }\n // Search whats left of the table after filtering\n Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {\n let isSearched = searches.length > 0 && searches[0].value.length >= 3 ? false : true;\n searches.forEach((search, index) => {\n let searchTd = row.querySelector(`[data-label=\"${search.column}\"]`);\n if (searchTd && search.value.length >= 3 && searchTd.textContent.toLowerCase().includes(search.value.toLowerCase())) {\n isSearched = true;\n }\n });\n if (!isSearched)\n row.classList.add('filtered');\n });\n // Work out what to display after pagination\n Array.from(table.querySelectorAll('tbody tr:not(.filtered')).forEach((row, index) => {\n matched++;\n row.classList.add('filtered--matched');\n // pagination bit \n if (Math.ceil(matched / showRows) == parseInt(page))\n row.classList.add('filtered--show');\n });\n if (wrapper) {\n wrapper.setAttribute('data-page', page);\n wrapper.setAttribute('data-pages', Math.ceil(matched / showRows));\n wrapper.setAttribute('data-total', matched);\n wrapper.setAttribute('data-show', showRows);\n }\n populateDataQueries(table, form);\n};\nexport const populateDataQueries = (table, form) => {\n const dataQueries = Array.from(form.querySelectorAll('[data-query]'));\n dataQueries.forEach((queryElement, index) => {\n let query = queryElement.getAttribute('data-query');\n let numberOfMatchedRows;\n if (query == 'total') {\n numberOfMatchedRows = table.classList.contains('table--filtered') ? table.querySelectorAll('tbody tr:not(.filtered)').length : table.querySelectorAll('tbody tr').length;\n }\n else if (!query.includes(' == ') && query.includes(' & ')) {\n let queries = query.split(' & ');\n let selector = '';\n queries.forEach(element => {\n selector += `:not([data-filtered-by=\"${element}\"])`;\n });\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr${selector}`)).length;\n }\n else if (!query.includes(' == ')) {\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not([data-filtered-by=\"${query}\"])`)).length;\n }\n else if (query.includes(' && ')) {\n let queries = query.split(' && ');\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not(.filtered)`)).filter(function (row) {\n let matched = true;\n for (const [index, value] of Object.entries(queries)) {\n let queryParts = value.split(' == ');\n if (!row.querySelector(`td[data-label=\"${queryParts[0]}\"]`) || row.querySelector(`td[data-label=\"${queryParts[0]}\"]`).textContent != `${queryParts[1]}`)\n matched = false;\n }\n return matched;\n }).length;\n }\n else {\n let queryParts = query.split(' == ');\n numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not([class*=\"filtered\"]) td[data-label=\"${queryParts[0]}\"], tbody tr[data-filtered-by=\"${queryParts[0]}\"] td[data-label=\"${queryParts[0]}\"]`)).filter(function (element) {\n return element.textContent === queryParts[1];\n }).length;\n }\n if (queryElement.hasAttribute('data-total'))\n queryElement.setAttribute('data-total', numberOfMatchedRows);\n else\n queryElement.innerHTML = numberOfMatchedRows;\n });\n};\n// Pagination\nexport const addPaginationEventListeners = function (table, form, pagination, wrapper) {\n pagination.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-page]')) {\n event.preventDefault();\n let paginationInput = form.querySelector('[data-pagination]');\n let newPage = event.target.closest('[data-page]').getAttribute('data-page');\n paginationInput.value = newPage;\n wrapper.setAttribute('data-page', newPage);\n form.dispatchEvent(new Event(\"submit\"));\n const url = new URL(location);\n url.searchParams.set(\"page\", newPage);\n history.pushState({ 'type': 'pagination', 'form': form.getAttribute('id'), 'page': newPage }, \"\", url);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {\n event.preventDefault();\n let showInput = form.querySelector('[data-show]');\n let showRows = event.target.closest('[data-show]').getAttribute('data-show');\n showInput.value = showRows;\n wrapper.setAttribute('data-show', showRows);\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n};\n// Export CSV Data\nexport const addExportEventListeners = (button, table) => {\n if (!button)\n return false;\n button.addEventListener('click', (event) => {\n exportAsCSV(table);\n });\n};\nexport const exportAsCSV = function (table) {\n var csvData = [];\n // Get each row data\n var rows = table.getElementsByTagName('tr');\n for (var i = 0; i < rows.length; i++) {\n // Get each column data\n var cols = rows[i].querySelectorAll('td,th');\n // Stores each csv row data\n var csvRow = [];\n for (var j = 0; j < cols.length; j++) {\n // Get the text data of each cell of a row and push it to csvrow\n csvRow.push(`\"${cols[j].textContent}\"`);\n }\n // Combine each column value with comma\n csvData.push(csvRow.join(\",\"));\n }\n // Combine each row data with new line character\n csvData = csvData.join('\\n');\n // Create CSV file object and feed our csvData into it\n let CSVFile = new Blob([csvData], {\n type: \"text/csv\"\n });\n // Create to temporary link to initiate download process\n var tempLink = document.createElement('a');\n tempLink.download = \"export.csv\";\n var url = window.URL.createObjectURL(CSVFile);\n tempLink.href = url;\n // This link should not be displayed\n tempLink.style.display = \"none\";\n document.body.appendChild(tempLink);\n // Automatically click the link to trigger download\n tempLink.click();\n document.body.removeChild(tempLink);\n};\n// After table is loaded\nexport const makeTableFunctional = function (table, form, pagination, wrapper) {\n createMobileButton(table);\n addDataAttributes(table);\n populateDataQueries(table, form);\n // Work out the largest width of the CTA's in the last column\n if (wrapper && wrapper.classList.contains('table--cta')) {\n const largestWidth = getLargestLastColWidth(table);\n wrapper.style.setProperty(\"--cta-width\", `${largestWidth}rem`);\n }\n};\nexport const loadAjaxTable = function (table, form, pagination, wrapper) {\n const resolvePath = (object, path, defaultValue) => path.split(/[\\.\\[\\]\\'\\\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);\n let queryString = new URLSearchParams(new FormData(form)).toString();\n let columns = table.querySelectorAll('thead tr th');\n let tbody = table.querySelector('tbody');\n fetch(form.getAttribute('data-ajax'), {\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n })\n }).then((response) => response.json()).then((response) => {\n if (response.data) {\n tbody.innerHTML = '';\n response.data.forEach((row, index) => {\n var table_row = document.createElement('tr');\n columns.forEach((col, index) => {\n let cellOutput = '';\n var table_cell = document.createElement('td');\n // Add some data to help with the mobile layout design\n table_cell.setAttribute('data-label', col.innerText);\n if (col.getAttribute('data-output')) {\n var cellTemplate = col.getAttribute('data-output');\n // Use a regex to replace {var} with actual values from the json data\n cellOutput = cellTemplate.replace(new RegExp(/{(.*?)}/, \"gm\"), function (matched) { return resolvePath(row, matched.replace('{', '').replace('}', '')); });\n }\n if (col.hasAttribute('data-format')) {\n cellOutput = formatCell(col.getAttribute('data-format'), cellOutput);\n }\n table_cell.innerHTML = cellOutput;\n table_row.appendChild(table_cell);\n });\n tbody.appendChild(table_row);\n });\n createSearchDataList(table, form);\n // Add data to the pagination \n makeTableFunctional(table, form, pagination, wrapper);\n wrapper.setAttribute('data-total', (response.meta.total ? response.meta.total : 1));\n wrapper.setAttribute('data-page', (response.meta.current_page ? response.meta.current_page : 1));\n wrapper.setAttribute('data-pages', Math.ceil(wrapper.getAttribute('data-total') / wrapper.getAttribute('data-show')));\n createPaginationButttons(wrapper, pagination);\n if (response.data.length == 0) {\n tbody.innerHTML = '<tr><td colspan=\"100%\"><span class=\"h4 m-0\">No results found</span></td></tr>';\n }\n }\n else {\n tbody.innerHTML = '<tr><td colspan=\"100%\"><span class=\"h6 m-0\">Error loading table</span></td></tr>';\n }\n });\n};\nexport const formatCell = (format, cellOutput) => {\n switch (format) {\n case 'date':\n cellOutput = new Date(cellOutput).toLocaleDateString('en-gb', { year: \"2-digit\", month: \"long\", day: \"numeric\" });\n break;\n case 'capitalise':\n cellOutput = ucfirst(cellOutput);\n break;\n }\n return cellOutput;\n};\n","// @ts-nocheck\nimport * as tableModule from \"../../modules/table.js\";\nimport createPaginationButttons from \"../../modules/pagination.js\";\nclass iamTable 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 isCTA = this.classList.contains('table--cta');\n const isExportable = this.classList.contains('table--export');\n let classList = this.classList.toString();\n classList = classList.replace('table--cta', '');\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${assetLocation}/css/core.min.css\";\n </style>\n ${isCTA ? '<div class=\"table--cta\">' : ''}\n <div class=\"table__wrapper ${classList}\">\n <slot></slot>\n </div>\n ${isCTA ? '</div>' : ''}\n ${isExportable ? '<button class=\"link\" type=\"button\" data-export>Export table as CSV</button>' : ''}\n <div class=\"table__pagination\"></div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n const params = new URLSearchParams(window.location.search);\n // Set default attributes\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', 15);\n this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));\n }\n connectedCallback() {\n this.table = this.querySelector('table');\n this.savedTableBody = this.querySelector('tbody').cloneNode(true);\n this.pagination = this.shadowRoot.querySelector('.table__pagination');\n // Set events on the filter table\n this.form = document.createElement('form');\n if (this.hasAttribute('data-filterby')) {\n this.form = document.querySelector(`#${this.getAttribute('data-filterby')}`);\n // Create a data list if a search input is present\n tableModule.createSearchDataList(this.table, this.form);\n if (!this.form.querySelector('[data-page]')) {\n this.form.innerHTML += `<input name=\"page\" type=\"hidden\" value=\"${this.getAttribute('data-page')}\" data-pagination=\"true\" />`;\n }\n if (!this.form.querySelector('[data-show]')) {\n this.form.innerHTML += `<input name=\"show\" type=\"hidden\" value=\"${this.getAttribute('data-show')}\" data-show=\"true\" />`;\n }\n }\n // Event listeners\n tableModule.addTableEventListeners(this.table);\n tableModule.addFilterEventListeners(this.table, this.form, this.pagination, this, this.savedTableBody);\n tableModule.addPaginationEventListeners(this.table, this.form, this.pagination, this);\n tableModule.addExportEventListeners(this.shadowRoot.querySelector('[data-export]'), this.table);\n if (this.form.getAttribute('data-ajax')) {\n tableModule.loadAjaxTable(this.table, this.form, this.pagination, this);\n }\n else {\n tableModule.makeTableFunctional(this.table, this.form, this.pagination, this);\n tableModule.filterTable(this.table, this.form, this);\n createPaginationButttons(this, this.pagination);\n }\n this.shadowRoot.querySelector('.table__wrapper').addEventListener(\"scroll\", (event) => {\n if (this.table.querySelector('dialog[open]'))\n this.table.querySelector('dialog[open]').close();\n });\n }\n static get observedAttributes() {\n return [\"data-total\", \"data-pages\", \"data-page\", \"data-show\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n /*\n switch (attrName) {\n case \"data-total\": {\n this.setAttribute('data-pages', Math.ceil(newVal / this.getAttribute('data-show')));\n break;\n }\n case \"data-show\": {\n this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / newVal));\n break;\n }\n case \"data-pages\": {\n console.log('create pagination');\n \n tableModule.filterTable(this.table, this.form);\n createPaginationButttons(this,this.pagination);\n \n break;\n }\n case \"data-page\": {\n \n let paginationInput = this.form.querySelector('[data-pagination]');\n \n paginationInput.value = newVal;\n \n //tableModule.filterTable(this.table, this.form);\n \n break;\n }\n }\n */\n }\n}\nexport default iamTable;\n"],"names":["isNumeric","str","zeroPad","num","places","ucfirst","createPaginationButttons","controller","pagination","currentPage","numberPages","numberRows","showRows","addRows","strButtons","i","addDataAttributes","table","colHeadings","row","index","cells","statuses","cell","cellIndex","heading","tempDiv","headingText","formatCell","getLargestLastColWidth","largestWidth","htmlStyles","lastColChild","responsiveWidth","rowHeight","createMobileButton","firstCol","colContent","addTableEventListeners","event","tableRow","createSearchDataList","form","searchInput","searchID","searchableColumns","inputWrapper","searchableTerms","columnHeading","td","term","addFilterEventListeners","wrapper","savedTableBody","timer","formSubmit","loadAjaxTable","filterTable","sortTable","tbody","select","selectedOption","sortBy","order","format","orderArray","tableArr","rowIndex","dataRow","a","strTbody","filters","searches","matched","page","filterInput","key","value","column","element","filterValue","isMatched","filter","filterTd","yesterday","today","mondayThisWeek","sundayThisWeek","checkDate","mondayLastWeek","sundayLastWeek","year","month","firstDayMonth","lastDayMonth","firstDayLastMonth","lastDayLastMonth","isSearched","search","searchTd","populateDataQueries","queryElement","query","numberOfMatchedRows","queries","selector","queryParts","addPaginationEventListeners","paginationInput","newPage","url","showInput","addExportEventListeners","button","exportAsCSV","csvData","rows","cols","csvRow","j","CSVFile","tempLink","makeTableFunctional","resolvePath","object","path","defaultValue","p","o","columns","response","table_row","col","cellOutput","table_cell","cellTemplate","iamTable","assetLocation","isCTA","isExportable","classList","template","params","tableModule.createSearchDataList","tableModule.addTableEventListeners","tableModule.addFilterEventListeners","tableModule.addPaginationEventListeners","tableModule.addExportEventListeners","tableModule.loadAjaxTable","tableModule.makeTableFunctional","tableModule.filterTable","attrName","oldVal","newVal"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * iamKey v3.4.7
2
+ * iamKey v3.5.0
3
3
  * Copyright 2022-2023 iamproperty
4
- */const d=function(t){const i=t.querySelectorAll(":scope > details");t.querySelectorAll(":scope > details > summary");let n=t.querySelector(":scope > .tabs__links");t.shadowRoot&&t.shadowRoot.querySelector(".tabs__links")&&(n=t.shadowRoot.querySelector(".tabs__links")),n||(n=document.createElement("div"),n.classList.add("tabs__links"),t.prepend(n)),i.forEach((o,a)=>{let s=o.querySelector(":scope > summary");s.classList.add("visually-hidden");let e=document.createElement("button");o.hasAttribute("id")&&(e=document.createElement("a"),e.setAttribute("href",`#${o.getAttribute("id")}`)),o.hasAttribute("open")&&e.setAttribute("aria-pressed",!0),e.innerHTML=`${s.innerText}`,e.classList.add("link"),e.setAttribute("data-index",a),e.setAttribute("tabindex","-1"),n.appendChild(e)})},c=function(t){let i=t.querySelectorAll(":scope > details"),n=t.querySelectorAll(":scope > details > summary"),o=t.querySelectorAll(":scope > .tabs__links > button, .tabs__links > a");t.shadowRoot&&(o=t.shadowRoot.querySelectorAll(".tabs__links > button, .tabs__links > a")),o.forEach(a=>{a.addEventListener("click",s=>{s.preventDefault(),o.forEach(e=>{let r=e==a;e.setAttribute("aria-pressed",r)}),i.forEach((e,r)=>{let l=a.getAttribute("data-index")==r;l?e.setAttribute("open",l):e.removeAttribute("open")}),a.hasAttribute("href")&&history.pushState(void 0,void 0,a.getAttribute("href")),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:a.textContent})})}),n.forEach((a,s)=>{a.addEventListener("focus",e=>{o.forEach(r=>{r.classList.remove("focus")}),o[s].classList.add("focus")}),a.addEventListener("click",e=>{e.preventDefault(),o[s].click()})})},b=function(t){let i=t.querySelectorAll(":scope > details"),n=t.querySelectorAll(":scope > .tabs__links > button, .tabs__links > a");t.shadowRoot&&(n=t.shadowRoot.querySelectorAll(".tabs__links > button, .tabs__links > a")),location.hash&&t.querySelector(`.tabs__links [href="${location.hash}"]`)?(t.querySelector(`[href="${location.hash}"]`).setAttribute("open",!0),t.querySelector(`details[id="${location.hash.replace("#","")}"]`).setAttribute("open",!0)):t.querySelector("details[open]")||(i[0].setAttribute("open",!0),n[0].setAttribute("aria-pressed",!0))},u=function(t){d(t),c(t),b(t)};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"tabs"});class p extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const i=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",n=document.createElement("template");n.innerHTML=`
4
+ */const c=function(t){const n=t.querySelectorAll(":scope > details");t.querySelectorAll(":scope > details > summary");let s=t.querySelector(":scope > .tabs__links");t.shadowRoot&&t.shadowRoot.querySelector(".tabs__links")&&(s=t.shadowRoot.querySelector(".tabs__links")),s||(s=document.createElement("div"),s.classList.add("tabs__links"),t.prepend(s)),n.forEach((o,a)=>{let i=o.querySelector(":scope > summary");i.classList.add("visually-hidden");let e=document.createElement("button");o.hasAttribute("id")&&(e=document.createElement("a"),e.setAttribute("href",`#${o.getAttribute("id")}`)),o.hasAttribute("open")&&e.setAttribute("aria-pressed",!0),e.innerHTML=`${i.innerText}`,e.classList.add("link"),e.setAttribute("data-index",a),e.setAttribute("tabindex","-1"),s.appendChild(e)})},d=function(t){let n=t.querySelectorAll(":scope > details"),s=t.querySelectorAll(":scope > details > summary"),o=t.querySelectorAll(":scope > .tabs__links > button, .tabs__links > a");t.shadowRoot&&(o=t.shadowRoot.querySelectorAll(".tabs__links > button, .tabs__links > a")),o.forEach(a=>{a.addEventListener("click",i=>{i.preventDefault(),o.forEach(e=>{let r=e==a;e.setAttribute("aria-pressed",r)}),n.forEach((e,r)=>{let l=a.getAttribute("data-index")==r;l?e.setAttribute("open",l):e.removeAttribute("open")}),a.hasAttribute("href")&&history.pushState(void 0,void 0,a.getAttribute("href")),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:a.textContent})})}),s.forEach((a,i)=>{a.addEventListener("focus",e=>{o.forEach(r=>{r.classList.remove("focus")}),o[i].classList.add("focus")}),a.addEventListener("click",e=>{e.preventDefault(),o[i].click()})})},u=function(t){let n=t.querySelectorAll(":scope > details"),s=t.querySelectorAll(":scope > .tabs__links > button, .tabs__links > a");t.shadowRoot&&(s=t.shadowRoot.querySelectorAll(".tabs__links > button, .tabs__links > a")),location.hash&&t.querySelector(`.tabs__links [href="${location.hash}"]`)?(t.querySelector(`[href="${location.hash}"]`).setAttribute("open",!0),t.querySelector(`details[id="${location.hash.replace("#","")}"]`).setAttribute("open",!0)):t.querySelector("details[open]")||(n[0].setAttribute("open",!0),s[0].setAttribute("aria-pressed",!0))},b=function(t){c(t),d(t),u(t)};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"tabs"});class h extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const n=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",s=document.createElement("template");s.innerHTML=`
5
5
  <style>
6
- @import "${i}/css/core.min.css";
7
- .tabs{position:relative}.tabs>.tabs__links{margin-bottom:1.5rem;overflow:hidden}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){--is-current: 0;font-weight:bold;font-family:var(--font-heading);font-size:1.125rem;cursor:pointer;margin:0 0 .5rem 0;float:left;clear:both;padding:0}@media screen and (min-width: 36em){.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){clear:none;margin-bottom:0;margin-right:2rem}}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):before{width:0;width:calc(var(--is-current)*100%)}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):hover:before,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):focus:before,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn).focus:before{width:100%}.tabs .tabs__links .link:not(.text-decoration-none):not(.btn)[aria-pressed=true]{--is-current: 1;--panel-tab-colour: white;--panel-tab-border: var(--colour-secondary) }.admin-panel .tabs__links,:host(.admin-panel) .tabs__links{margin-top:-3px !important;margin-left:calc(var(--panel-gutter)*-1);margin-right:calc(var(--panel-gutter)*-1);display:flex;flex-direction:column;background-color:var(--body-bg);border-bottom:2px solid var(--colour-border-light);margin-bottom:var(--panel-gutter)}@media screen and (min-width: 36em){.admin-panel .tabs__links,:host(.admin-panel) .tabs__links{flex-direction:row;border-top:1px solid var(--colour-border-light)}}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn){padding:var(--panel-gutter);margin:0;width:100%;background:var(--panel-tab-colour);border-top:1px solid var(--colour-border-light);border-left:3px solid var(--panel-tab-border, #fafafa);text-align:left}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):before,:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):before{display:none}@media screen and (min-width: 36em){.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn){margin-right:0 !important;border-top:3px solid var(--panel-tab-border, #fafafa)}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):first-child,:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):first-child{border-left:none !important}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):not(:first-child),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):not(:first-child){border-left:1px solid var(--colour-border-light) !important}}:host(.admin-panel){display:block}/*# sourceMappingURL=assets/css/components/tabs.css.map */
6
+ @import "${n}/css/core.min.css";
7
+ .tabs{position:relative}.tabs>.tabs__links{margin-bottom:1.5rem;overflow:hidden;padding-bottom:2px}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){--is-current: 0;font-weight:bold;font-family:var(--font-heading);font-size:1.125rem;cursor:pointer;margin:0 0 .5rem 0;float:left;clear:both;padding:0;display:inline-block}@media screen and (min-width: 36em){.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){clear:none;margin-bottom:0;margin-right:2rem}}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):after{position:absolute;content:"";top:100%;left:50%;height:2px;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s;width:calc(var(--is-current)*100%)}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):hover:after,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):focus:after,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn).focus:after{width:100%}.tabs .tabs__links .link:not(.text-decoration-none):not(.btn)[aria-pressed=true]{--is-current: 1;--panel-tab-colour: white;--panel-tab-border: var(--colour-secondary) }:host(.admin-panel){display:block}/*# sourceMappingURL=assets/css/components/tabs.css.map */
8
8
 
9
9
 
10
10
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
@@ -13,5 +13,5 @@
13
13
  <div class="tabs__links"></div>
14
14
  <slot></slot>
15
15
  </div>
16
- `,this.shadowRoot.appendChild(n.content.cloneNode(!0))}connectedCallback(){u(this)}}export{p as default};
16
+ `,this.shadowRoot.appendChild(s.content.cloneNode(!0))}connectedCallback(){b(this)}}export{h as default};
17
17
  //# sourceMappingURL=tabs.component.min.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v3.4.7
2
+ * iamKey v3.5.0
3
3
  * Copyright 2022-2023 iamproperty
4
- */(function(u){typeof define=="function"&&define.amd?define(u):u()})(function(){"use strict";class u{constructor(i){document.body.classList.contains("youtubeLoaded")?i.addEventListener("click",function(t){for(var o=t.target;o&&o!=this;o=o.parentNode)if(o.matches("a")){t.preventDefault(),h(o);break}},!1):this.loadScripts(i,this.createEmbed)}loadScripts(i){return new Promise((t,o)=>{const s=new Image;s.onload=function(){var a=document.createElement("script");a.src="https://www.youtube.com/iframe_api";var l=document.getElementsByTagName("script")[0];l.parentNode.insertBefore(a,l),document.body.classList.add("youtubeLoaded"),t(!0),a.onload=()=>{i.addEventListener("click",function(r){console.log("click"),r&&r.target instanceof HTMLElement&&r.target.closest("a")&&(r.preventDefault(),h(r.target.closest("a")))},!1)}},s.onerror=function(){o(!1)},s.src="https://youtube.com/favicon.ico"})}}const h=function(e){typeof window.player<"u"&&typeof window.player.pauseVideo=="function"&&window.player.pauseVideo();var i=e.getAttribute("data-id"),t=e.getAttribute("id");if(typeof t>"u"||t==null){var o=String.fromCharCode(65+Math.floor(Math.random()*26));t=o+Date.now(),e.setAttribute("id",t)}function s(){window.player=new YT.Player(t,{height:"100%",width:"100%",videoId:i,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:a,onStateChange:r}})}s();function a(n){n.target.playVideo()}var l=!1;function r(n){if(n.data==YT.PlayerState.PLAYING&&!l){var c=document.getElementById(t);c.classList.add("player-ready"),l=!0}}},b=e=>(e.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&e.classList.add("ie"),null),y=e=>{const i=function(t){const o=document.querySelector(`label[for="${t.replace("#","")}"]`),s=document.querySelector(t+" summary"),a=document.querySelector(`dialog${t}`);o instanceof HTMLElement?o.click():s instanceof HTMLElement?s.click():a instanceof HTMLElement&&a.showModal()};return location.hash&&i(location.hash),window.addEventListener("hashchange",function(){i(location.hash)},!1),addEventListener("popstate",t=>{if(t.state.type=="pagination"){let o=document.querySelector(`#${t.state.form}`),s=document.querySelector(`#${t.state.form} [data-pagination]`);s?s.value=t.state.page:o.innerHTML+=`<input name="page" type="hidden" data-pagination="true" value="${t.state.page}" />`,o.dispatchEvent(new Event("submit"))}}),document.addEventListener("click",t=>{if(t&&t.target instanceof HTMLElement&&t.target.closest("[data-modal]")){const s=t.target.closest("[data-modal]").getAttribute("data-modal"),a=document.querySelector(`dialog#${s}`);a.parentNode.closest("form")&&!a.querySelector(":scope > .dialog__close:first-child")?a.innerHTML=`<button class="dialog__close" formmethod="dialog">Close</button>${a.innerHTML}`:!a.parentNode.closest("form")&&!a.querySelector(":scope > form:first-child")&&(a.innerHTML=`<form><button class="dialog__close" formmethod="dialog">Close</button></form>${a.innerHTML}`);let l=a.querySelector(".youtube-embed a");l&&h(l),a.showModal(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:s})}if(t&&t.target instanceof HTMLElement&&t.target.closest("dialog[open]")){const o=t.target.closest("dialog[open]"),s=o.getBoundingClientRect();(t.clientX<s.left||t.clientX>s.right||t.clientY<s.top||t.clientY>s.bottom)&&(o.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:o.getAttribute("id")}))}if(t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__wrapper > button")){let o=t.target.closest(".dialog__wrapper > button"),s=t.target.closest(".dialog__wrapper > button").parentNode,a="openPopover",l=s.querySelector(":scope > dialog");l.hasAttribute("open")?(l.close(),a="closePopover"):l.show(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:a,id:o.textContent})}}),null};function g(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",e=>{e&&e.target instanceof HTMLElement&&e.target.closest("[open] summary")?window.dataLayer.push({event:"closeDetails",detailsTitle:e.target.closest("summary").textContent}):e&&e.target instanceof HTMLElement&&e.target.closest("summary")&&window.dataLayer.push({event:"openDetails",detailsTitle:e.target.closest("summary").textContent}),e&&e.target instanceof HTMLElement&&e.target.closest("a")&&window.dataLayer.push({event:"linkClicked",linkText:e.target.closest("a").hasAttribute("title")?e.target.closest("a").getAttribute("title"):e.target.closest("a").textContent,class:e.target.closest("a").hasAttribute("class")?e.target.closest("a").getAttribute("class"):"",href:e.target.closest("a").getAttribute("href")}),e&&e.target instanceof HTMLElement&&e.target.closest("button")&&window.dataLayer.push({event:"buttonClicked",buttonText:e.target.closest("button").textContent,class:e.target.closest("button").hasAttribute("class")?e.target.closest("button").getAttribute("class"):""})})}const L=e=>{Array.from(e.querySelectorAll("details")).forEach((i,t)=>{i.addEventListener("mouseenter",function(o){window.matchMedia("(min-width: 62em)").matches&&i.setAttribute("open","true")},!1),i.addEventListener("mouseleave",function(o){window.matchMedia("(min-width: 62em)").matches&&i.removeAttribute("open")},!1)}),"IntersectionObserver"in window&&new IntersectionObserver(([t])=>t.target.classList.toggle("is-stuck",t.intersectionRatio<1),{threshold:[1]}).observe(e)};function p(e){var i;const t=e.querySelector(".testimonial__images"),o=t.querySelectorAll("img").length;if(o==1)return!1;e.classList.add("testimonial--multi");const s=function(a){const l=e.querySelector(".btn-next"),r=e.querySelector(".btn-prev");l.setAttribute("data-go",a+1),r.setAttribute("data-go",a-1),l.removeAttribute("disabled"),r.removeAttribute("disabled"),a==1?r.setAttribute("disabled",!0):a==o&&l.setAttribute("disabled",!0)};t.addEventListener("scroll",function(a){clearTimeout(i),i=setTimeout(function(){let l=t.scrollWidth,r=t.scrollHeight,n=t.scrollLeft,c=t.scrollTop,d=Math.round(n/l*o)+1;n==0&&c!=0&&(d=Math.round(c/r*o)+1),e.setAttribute("data-show",d),s(d)},300)},!1),e.addEventListener("click",function(a){for(var l=a.target;l&&l!=this;l=l.parentNode)if(l.matches("[data-go]")){let r=parseInt(l.getAttribute("data-go")),n=0,c=0,d=t.scrollWidth,m=t.scrollHeight;d>m?c=Math.floor(d*((r-1)/o)):n=Math.floor(m*((r-1)/o)),t.scroll({top:n,left:c,behavior:"smooth"});break}},!1)}function A(e){var i;let t=e.querySelector(".carousel__inner"),o=e.querySelectorAll(".carousel__item").length;e.getAttribute("data-cols");let s=e.getAttribute("data-sm-cols"),a=e.getAttribute("data-md-cols");e.querySelector(".carousel__controls a").classList.add("active"),t.addEventListener("scroll",function(l){clearTimeout(i),i=setTimeout(function(){let r=t.clientWidth,n=t.scrollWidth,c=t.scrollLeft,d=Math.round(c/n*o)+1,m=e.querySelector(".carousel__item:last-child").offsetLeft;Array.from(e.querySelectorAll(".carousel__controls a")).forEach((M,_)=>{M.classList.remove("active")}),e.querySelector(".control-"+d).classList.add("active"),d==1?e.querySelector(".btn-prev").setAttribute("disabled","disabled"):e.querySelector(".btn-prev").removeAttribute("disabled"),t.scrollLeft+r>m?e.querySelector(".btn-next").setAttribute("disabled","disabled"):e.querySelector(".btn-next").removeAttribute("disabled")},100)},!1),e.addEventListener("click",function(l){for(var r=l.target;r&&r!=this;r=r.parentNode)if(r.matches(".carousel__controls a")){l.preventDefault(),Array.from(e.querySelectorAll(".carousel__controls a")).forEach((c,d)=>{c.classList.remove("active")}),r.classList.add("active");const n=document.querySelector(r.getAttribute("href"));t.scroll({top:0,left:n.offsetLeft,behavior:"smooth"});break}},!1),e.addEventListener("click",function(l){for(var r=l.target;r&&r!=this;r=r.parentNode)if(r.matches(".btn-next, .btn-prev")){l.preventDefault();let n=r.classList.contains("btn-prev")?t.scrollLeft-t.clientWidth:t.scrollLeft+t.clientWidth;t.scroll({top:0,left:n,behavior:"smooth"});break}},!1),o==1&&e.classList.add("hide-btns"),s>=o&&e.classList.add("hide-sm-btns"),a>=o&&e.classList.add("hide-md-btns")}function w(e){e.addEventListener("change",function(i){var t=parseInt(e.querySelector("[data-min] select,[data-min] input").value),o=parseInt(e.querySelector("[data-max] select,[data-max] input").value);Array.from(e.querySelectorAll("[data-min] input")).forEach((s,a)=>{s.setAttribute("max",o)}),Array.from(e.querySelectorAll("[data-max] input")).forEach((s,a)=>{s.setAttribute("min",t)}),Array.from(e.querySelectorAll("[data-min] select option")).forEach((s,a)=>{parseInt(s.getAttribute("value"))>o?s.classList.add("d-none"):s.classList.remove("d-none")}),Array.from(e.querySelectorAll("[data-max] select option")).forEach((s,a)=>{parseInt(s.getAttribute("value"))<t?s.classList.add("d-none"):s.classList.remove("d-none")})},!1)}function v(e){e.addEventListener("change",function(i){if(e.matches("[data-value-if]")){const t=e.getAttribute("data-redirect"),o=e.getAttribute("data-value-if");e.value==o&&(document.location.href=t)}else typeof e.value<"u"&&(document.location.href=e.value)},!1)}function S(e){const t=e.querySelector(".row").cloneNode(!0),o=e.querySelector("[data-add]");e.addEventListener("click",function(s){for(var a=s.target;a&&a!=this;a=a.parentNode){if(a.matches("[data-add]")){const l=t.cloneNode(!0);e.insertBefore(l,a),o.matches("[data-maxfiles]")&&Array.from(e.querySelectorAll(":scope > .row")).length>=o.dataset.maxfiles&&o.setAttribute("disabled","disabled");break}if(a.matches("[data-delete]")){a.closest(".row").remove(),o.matches("[data-maxfiles]")&&Array.from(e.querySelectorAll(":scope > .row")).length<o.dataset.maxfiles&&o.removeAttribute("disabled");break}}},!1)}function q(e){Array.from(e.querySelectorAll("[data-input-range]")).forEach((i,t)=>{w(i)}),Array.from(e.querySelectorAll("[data-redirect]")).forEach((i,t)=>{v(i)}),Array.from(e.querySelectorAll(".multiple-file-uploads")).forEach((i,t)=>{S(i)}),e.addEventListener("change",function(i){for(var t=i.target;t&&t!=this;t=t.parentNode)if(t.matches('[type="file"][data-filesize]')&&t.files&&t.files[0]){const o=t.dataset.filesize;t.files[0].size>o&&(t.value="",alert("File too large"));break}},!1),e.addEventListener("change",function(i){Array.from(e.querySelectorAll("select[data-activeif][data-equals],input[data-activeif][data-equals]")).forEach((t,o)=>{let s=t.closest("[data-group]")?t.closest("[data-group]"):e,a=t.dataset.activeif,l=t.dataset.equals;s.querySelector(`select[data-id="${a}"],input[data-id="${a}"]`).value==l?t.removeAttribute("disabled"):(t.setAttribute("disabled","disabled"),t.value="")}),Array.from(e.querySelectorAll(".form-control__wrapper[data-displayif][data-equals]")).forEach((t,o)=>{let s=t.closest("[data-group]")?t.closest("[data-group]"):e,a=t.dataset.activeif,l=t.dataset.equals;s.querySelector(`select[data-id="${a}"],input[data-id="${a}"]`).value==l?t.classList.remove("d-none"):t.classList.add("d-none")})},!1)}const x=["accordion","header","tabs","table","card","pagination","filterlist","applied-filters"],f="iam",T={rootMargin:"50px",threshold:.1};x.forEach(e=>{if(console.log(e),document.getElementsByTagName(`${f}-${e}`).length===0)return;let i=o=>{o.forEach(s=>{s.intersectionRatio>0&&(console.log(e),import(`./components/${e}/${e}.component.min.js`).then(a=>{window.customElements.get(`${f}-${e}`)||window.customElements.define(`${f}-${e}`,a.default)}).catch(a=>{console.log(a.message)}),t.unobserve(s.target))})};const t=new IntersectionObserver(i,T);t.observe(document.getElementsByTagName(`${f}-${e}`)[0])}),document.addEventListener("DOMContentLoaded",function(){g(),b(document.body),y(),Array.from(document.querySelectorAll(".nav")).forEach(e=>{L(e)}),Array.from(document.querySelectorAll(".testimonial")).forEach(e=>{p(e)}),Array.from(document.querySelectorAll(".carousel")).forEach(e=>{A(e)}),Array.from(document.querySelectorAll("form")).forEach(e=>{q(e)}),Array.from(document.querySelectorAll(".youtube-embed")).forEach(e=>{console.log(e),new u(e)}),window.addEventListener("hashchange",function(){const e=location.hash.replace("#",""),i=document.querySelector(`label[for="${e}"]`);i instanceof HTMLElement&&i.click()},!1)})});
4
+ */(function(u){typeof define=="function"&&define.amd?define(u):u()})(function(){"use strict";class u{constructor(r){document.body.classList.contains("youtubeLoaded")?r.addEventListener("click",function(t){for(var o=t.target;o&&o!=this;o=o.parentNode)if(o.matches("a")){t.preventDefault(),h(o);break}},!1):this.loadScripts(r,this.createEmbed)}loadScripts(r){return new Promise((t,o)=>{const a=new Image;a.onload=function(){var s=document.createElement("script");s.src="https://www.youtube.com/iframe_api";var i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(s,i),document.body.classList.add("youtubeLoaded"),t(!0),s.onload=()=>{r.addEventListener("click",function(l){console.log("click"),l&&l.target instanceof HTMLElement&&l.target.closest("a")&&(l.preventDefault(),h(l.target.closest("a")))},!1)}},a.onerror=function(){o(!1)},a.src="https://youtube.com/favicon.ico"})}}const h=function(e){typeof window.player<"u"&&typeof window.player.pauseVideo=="function"&&window.player.pauseVideo();var r=e.getAttribute("data-id"),t=e.getAttribute("id");if(typeof t>"u"||t==null){var o=String.fromCharCode(65+Math.floor(Math.random()*26));t=o+Date.now(),e.setAttribute("id",t)}function a(){window.player=new YT.Player(t,{height:"100%",width:"100%",videoId:r,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:s,onStateChange:l}})}a();function s(n){n.target.playVideo()}var i=!1;function l(n){if(n.data==YT.PlayerState.PLAYING&&!i){var c=document.getElementById(t);c.classList.add("player-ready"),i=!0}}},b=e=>(e.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&e.classList.add("ie"),null),y=e=>{const r=function(t){const o=document.querySelector(`label[for="${t.replace("#","")}"]`),a=document.querySelector(t+" summary"),s=document.querySelector(`dialog${t}`);o instanceof HTMLElement?o.click():a instanceof HTMLElement?a.click():s instanceof HTMLElement&&s.showModal()};return location.hash&&r(location.hash),window.addEventListener("hashchange",function(){r(location.hash)},!1),addEventListener("popstate",t=>{if(t.state.type=="pagination"){let o=document.querySelector(`#${t.state.form}`),a=document.querySelector(`#${t.state.form} [data-pagination]`);a?a.value=t.state.page:o.innerHTML+=`<input name="page" type="hidden" data-pagination="true" value="${t.state.page}" />`,o.dispatchEvent(new Event("submit"))}}),document.addEventListener("click",t=>{if(t&&t.target instanceof HTMLElement&&t.target.closest("[data-modal]")){const a=t.target.closest("[data-modal]"),s=a.hasAttribute("data-modal")?a.getAttribute("data-modal"):a.getAttribute("data-filter"),i=document.querySelector(`dialog#${s}`);i.innerHTML=`<button class="dialog__close">Close</button>${i.innerHTML}`;let l=i.querySelector(".youtube-embed a");l&&h(l),i.showModal(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:s})}if(t&&t.target instanceof HTMLElement&&t.target.closest("button.dialog__close")){const a=t.target.closest("dialog[open]");t.preventDefault(),a.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:a.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest("dialog[open]")){const a=t.target.closest("dialog[open]"),s=a.getBoundingClientRect();(t.clientX<s.left||t.clientX>s.right||t.clientY<s.top||t.clientY>s.bottom)&&(a.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:a.getAttribute("id")}))}if(t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__wrapper > button")){let a=t.target.closest(".dialog__wrapper > button"),s=t.target.closest(".dialog__wrapper > button").parentNode,i="openPopover",l=s.querySelector(":scope > dialog");if(document.querySelector("dialog[open]")&&document.querySelector("dialog[open]")!=l&&document.querySelector("dialog[open]").close(),l.hasAttribute("open"))l.close(),i="closePopover",l.removeAttribute("style"),a.classList.remove("active");else{l.show(),a.classList.add("active");var o=a.getBoundingClientRect();let n=o.top,c=o.left;if(a.closest("iam-table")){let d=a.closest("iam-table").parentNode.getBoundingClientRect();n-=d.top,c-=d.left}l.classList.contains("dialog--fix")&&l.setAttribute("style",`position:fixed;top: ${n}px; left: ${c}px; margin: 3rem 0 0 0;`)}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:i,id:a.textContent})}}),null};function g(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",e=>{e&&e.target instanceof HTMLElement&&e.target.closest("[open] summary")?window.dataLayer.push({event:"closeDetails",detailsTitle:e.target.closest("summary").textContent}):e&&e.target instanceof HTMLElement&&e.target.closest("summary")&&window.dataLayer.push({event:"openDetails",detailsTitle:e.target.closest("summary").textContent}),e&&e.target instanceof HTMLElement&&e.target.closest("a")&&window.dataLayer.push({event:"linkClicked",linkText:e.target.closest("a").hasAttribute("title")?e.target.closest("a").getAttribute("title"):e.target.closest("a").textContent,class:e.target.closest("a").hasAttribute("class")?e.target.closest("a").getAttribute("class"):"",href:e.target.closest("a").getAttribute("href")}),e&&e.target instanceof HTMLElement&&e.target.closest("button")&&window.dataLayer.push({event:"buttonClicked",buttonText:e.target.closest("button").textContent,class:e.target.closest("button").hasAttribute("class")?e.target.closest("button").getAttribute("class"):""})})}const p=e=>{Array.from(e.querySelectorAll("details")).forEach((r,t)=>{r.addEventListener("mouseenter",function(o){window.matchMedia("(min-width: 62em)").matches&&r.setAttribute("open","true")},!1),r.addEventListener("mouseleave",function(o){window.matchMedia("(min-width: 62em)").matches&&r.removeAttribute("open")},!1)}),"IntersectionObserver"in window&&new IntersectionObserver(([t])=>t.target.classList.toggle("is-stuck",t.intersectionRatio<1),{threshold:[1]}).observe(e)};function L(e){var r;const t=e.querySelector(".testimonial__images"),o=t.querySelectorAll("img").length;if(o==1)return!1;e.classList.add("testimonial--multi");const a=function(s){const i=e.querySelector(".btn-next"),l=e.querySelector(".btn-prev");i.setAttribute("data-go",s+1),l.setAttribute("data-go",s-1),i.removeAttribute("disabled"),l.removeAttribute("disabled"),s==1?l.setAttribute("disabled",!0):s==o&&i.setAttribute("disabled",!0)};t.addEventListener("scroll",function(s){clearTimeout(r),r=setTimeout(function(){let i=t.scrollWidth,l=t.scrollHeight,n=t.scrollLeft,c=t.scrollTop,d=Math.round(n/i*o)+1;n==0&&c!=0&&(d=Math.round(c/l*o)+1),e.setAttribute("data-show",d),a(d)},300)},!1),e.addEventListener("click",function(s){for(var i=s.target;i&&i!=this;i=i.parentNode)if(i.matches("[data-go]")){let l=parseInt(i.getAttribute("data-go")),n=0,c=0,d=t.scrollWidth,m=t.scrollHeight;d>m?c=Math.floor(d*((l-1)/o)):n=Math.floor(m*((l-1)/o)),t.scroll({top:n,left:c,behavior:"smooth"});break}},!1)}function A(e){var r;let t=e.querySelector(".carousel__inner"),o=e.querySelectorAll(".carousel__item").length;e.getAttribute("data-cols");let a=e.getAttribute("data-sm-cols"),s=e.getAttribute("data-md-cols");e.querySelector(".carousel__controls a").classList.add("active"),t.addEventListener("scroll",function(i){clearTimeout(r),r=setTimeout(function(){let l=t.clientWidth,n=t.scrollWidth,c=t.scrollLeft,d=Math.round(c/n*o)+1,m=e.querySelector(".carousel__item:last-child").offsetLeft;Array.from(e.querySelectorAll(".carousel__controls a")).forEach((M,_)=>{M.classList.remove("active")}),e.querySelector(".control-"+d).classList.add("active"),d==1?e.querySelector(".btn-prev").setAttribute("disabled","disabled"):e.querySelector(".btn-prev").removeAttribute("disabled"),t.scrollLeft+l>m?e.querySelector(".btn-next").setAttribute("disabled","disabled"):e.querySelector(".btn-next").removeAttribute("disabled")},100)},!1),e.addEventListener("click",function(i){for(var l=i.target;l&&l!=this;l=l.parentNode)if(l.matches(".carousel__controls a")){i.preventDefault(),Array.from(e.querySelectorAll(".carousel__controls a")).forEach((c,d)=>{c.classList.remove("active")}),l.classList.add("active");const n=document.querySelector(l.getAttribute("href"));t.scroll({top:0,left:n.offsetLeft,behavior:"smooth"});break}},!1),e.addEventListener("click",function(i){for(var l=i.target;l&&l!=this;l=l.parentNode)if(l.matches(".btn-next, .btn-prev")){i.preventDefault();let n=l.classList.contains("btn-prev")?t.scrollLeft-t.clientWidth:t.scrollLeft+t.clientWidth;t.scroll({top:0,left:n,behavior:"smooth"});break}},!1),o==1&&e.classList.add("hide-btns"),a>=o&&e.classList.add("hide-sm-btns"),s>=o&&e.classList.add("hide-md-btns")}function w(e){e.addEventListener("change",function(r){var t=parseInt(e.querySelector("[data-min] select,[data-min] input").value),o=parseInt(e.querySelector("[data-max] select,[data-max] input").value);Array.from(e.querySelectorAll("[data-min] input")).forEach((a,s)=>{a.setAttribute("max",o)}),Array.from(e.querySelectorAll("[data-max] input")).forEach((a,s)=>{a.setAttribute("min",t)}),Array.from(e.querySelectorAll("[data-min] select option")).forEach((a,s)=>{parseInt(a.getAttribute("value"))>o?a.classList.add("d-none"):a.classList.remove("d-none")}),Array.from(e.querySelectorAll("[data-max] select option")).forEach((a,s)=>{parseInt(a.getAttribute("value"))<t?a.classList.add("d-none"):a.classList.remove("d-none")})},!1)}function v(e){e.addEventListener("change",function(r){if(e.matches("[data-value-if]")){const t=e.getAttribute("data-redirect"),o=e.getAttribute("data-value-if");e.value==o&&(document.location.href=t)}else typeof e.value<"u"&&(document.location.href=e.value)},!1)}function S(e){const t=e.querySelector(".row").cloneNode(!0),o=e.querySelector("[data-add]");e.addEventListener("click",function(a){for(var s=a.target;s&&s!=this;s=s.parentNode){if(s.matches("[data-add]")){const i=t.cloneNode(!0);e.insertBefore(i,s),o.matches("[data-maxfiles]")&&Array.from(e.querySelectorAll(":scope > .row")).length>=o.dataset.maxfiles&&o.setAttribute("disabled","disabled");break}if(s.matches("[data-delete]")){s.closest(".row").remove(),o.matches("[data-maxfiles]")&&Array.from(e.querySelectorAll(":scope > .row")).length<o.dataset.maxfiles&&o.removeAttribute("disabled");break}}},!1)}function q(e){Array.from(e.querySelectorAll("[data-input-range]")).forEach((r,t)=>{w(r)}),Array.from(e.querySelectorAll("[data-redirect]")).forEach((r,t)=>{v(r)}),Array.from(e.querySelectorAll(".multiple-file-uploads")).forEach((r,t)=>{S(r)}),e.addEventListener("change",function(r){for(var t=r.target;t&&t!=this;t=t.parentNode)if(t.matches('[type="file"][data-filesize]')&&t.files&&t.files[0]){const o=t.dataset.filesize;t.files[0].size>o&&(t.value="",alert("File too large"));break}},!1),e.addEventListener("change",function(r){Array.from(e.querySelectorAll("select[data-activeif][data-equals],input[data-activeif][data-equals]")).forEach((t,o)=>{let a=t.closest("[data-group]")?t.closest("[data-group]"):e,s=t.dataset.activeif,i=t.dataset.equals;a.querySelector(`select[data-id="${s}"],input[data-id="${s}"]`).value==i?t.removeAttribute("disabled"):(t.setAttribute("disabled","disabled"),t.value="")}),Array.from(e.querySelectorAll(".form-control__wrapper[data-displayif][data-equals]")).forEach((t,o)=>{let a=t.closest("[data-group]")?t.closest("[data-group]"):e,s=t.dataset.activeif,i=t.dataset.equals;a.querySelector(`select[data-id="${s}"],input[data-id="${s}"]`).value==i?t.classList.remove("d-none"):t.classList.add("d-none")})},!1)}const x=["accordion","header","tabs","table","card","pagination","filterlist","applied-filters"],f="iam",T={rootMargin:"50px",threshold:.1};x.forEach(e=>{if(console.log(e),document.getElementsByTagName(`${f}-${e}`).length===0)return;let r=o=>{o.forEach(a=>{a.intersectionRatio>0&&(console.log(e),import(`./components/${e}/${e}.component.min.js`).then(s=>{window.customElements.get(`${f}-${e}`)||window.customElements.define(`${f}-${e}`,s.default)}).catch(s=>{console.log(s.message)}),t.unobserve(a.target))})};const t=new IntersectionObserver(r,T);t.observe(document.getElementsByTagName(`${f}-${e}`)[0])}),document.addEventListener("DOMContentLoaded",function(){g(),b(document.body),y(),Array.from(document.querySelectorAll(".nav")).forEach(e=>{p(e)}),Array.from(document.querySelectorAll(".testimonial")).forEach(e=>{L(e)}),Array.from(document.querySelectorAll(".carousel")).forEach(e=>{A(e)}),Array.from(document.querySelectorAll("form")).forEach(e=>{q(e)}),Array.from(document.querySelectorAll(".youtube-embed")).forEach(e=>{console.log(e),new u(e)}),window.addEventListener("hashchange",function(){const e=location.hash.replace("#",""),r=document.querySelector(`label[for="${e}"]`);r instanceof HTMLElement&&r.click()},!1)})});
5
5
  //# sourceMappingURL=dynamic.min.js.map