@iamproperty/components 4.1.1-beta-7 → 5.0.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 (100) hide show
  1. package/assets/css/components/collapsible-side.css +1 -1
  2. package/assets/css/components/collapsible-side.css.map +1 -1
  3. package/assets/css/components/component.reset.css +1 -1
  4. package/assets/css/components/component.reset.css.map +1 -1
  5. package/assets/css/components/nav-global.css +1 -1
  6. package/assets/css/components/nav-global.css.map +1 -1
  7. package/assets/css/components/nav.css +1 -1
  8. package/assets/css/components/nav.css.map +1 -1
  9. package/assets/css/components/stepper.css +1 -1
  10. package/assets/css/components/stepper.css.map +1 -1
  11. package/assets/css/components/table.extras.css +1 -1
  12. package/assets/css/components/table.extras.css.map +1 -1
  13. package/assets/css/core.min.css +1 -1
  14. package/assets/css/core.min.css.map +1 -1
  15. package/assets/css/style.min.css +1 -1
  16. package/assets/css/style.min.css.map +1 -1
  17. package/assets/favicons/manifest.json +1 -1
  18. package/assets/fonts/qanelas-semibold-webfont.woff +0 -0
  19. package/assets/fonts/qanelas-semibold-webfont.woff2 +0 -0
  20. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  21. package/assets/js/components/actionbar/actionbar.component.js +2 -0
  22. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  23. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  24. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  25. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  26. package/assets/js/components/card/card.component.min.js +1 -1
  27. package/assets/js/components/collapsible-side/collapsible-side.component.js +2 -0
  28. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -4
  29. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  30. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  31. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  32. package/assets/js/components/header/header.component.min.js +1 -1
  33. package/assets/js/components/nav/nav.component.js +18 -15
  34. package/assets/js/components/nav/nav.component.min.js +5 -5
  35. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  36. package/assets/js/components/notification/notification.component.min.js +1 -1
  37. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  38. package/assets/js/components/table/table.component.min.js +4 -4
  39. package/assets/js/components/table/table.component.min.js.map +1 -1
  40. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  41. package/assets/js/dynamic.min.js +3 -3
  42. package/assets/js/dynamic.min.js.map +1 -1
  43. package/assets/js/modules/carousel.js +5 -5
  44. package/assets/js/modules/dialogs.js +4 -4
  45. package/assets/js/modules/table.js +3 -1
  46. package/assets/js/scripts.bundle.js +16 -16
  47. package/assets/js/scripts.bundle.js.map +1 -1
  48. package/assets/js/scripts.bundle.min.js +2 -2
  49. package/assets/js/scripts.bundle.min.js.map +1 -1
  50. package/assets/sass/_corefiles.scss +1 -2
  51. package/assets/sass/_elements.scss +15 -14
  52. package/assets/sass/_fonts.scss +9 -1
  53. package/assets/sass/components/collapsible-side.scss +18 -16
  54. package/assets/sass/components/nav-global.scss +6 -5
  55. package/assets/sass/components/nav.scss +4 -4
  56. package/assets/sass/components/stepper.scss +1 -1
  57. package/assets/sass/components/table.extras.scss +14 -12
  58. package/assets/sass/core.scss +0 -1
  59. package/assets/sass/{components → elements}/admin-panel.scss +5 -1
  60. package/assets/sass/{foundations → elements}/buttons.scss +1 -1
  61. package/assets/sass/{components → elements}/dialog.scss +2 -7
  62. package/assets/sass/{components → elements}/forms.scss +4 -4
  63. package/assets/sass/{foundations → elements}/type.scss +7 -5
  64. package/assets/sass/foundations/root.scss +6 -0
  65. package/assets/sass/main.scss +0 -1
  66. package/assets/ts/components/actionbar/actionbar.component.ts +3 -0
  67. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +3 -1
  68. package/assets/ts/components/nav/nav.component.ts +21 -15
  69. package/assets/ts/modules/carousel.ts +5 -5
  70. package/assets/ts/modules/dialogs.ts +5 -5
  71. package/assets/ts/modules/table.ts +5 -3
  72. package/dist/components.es.js +765 -762
  73. package/dist/components.umd.js +43 -43
  74. package/dist/style.css +1 -1
  75. package/package.json +1 -1
  76. package/src/components/Stepper/Step.vue +1 -1
  77. package/assets/css/components/admin-panel.css +0 -1
  78. package/assets/css/components/admin-panel.css.map +0 -1
  79. package/assets/css/components/container.css +0 -1
  80. package/assets/css/components/container.css.map +0 -1
  81. package/assets/css/components/dialog.css +0 -1
  82. package/assets/css/components/dialog.css.map +0 -1
  83. package/assets/css/components/forms.css +0 -1
  84. package/assets/css/components/forms.css.map +0 -1
  85. package/assets/css/components/lists.css +0 -1
  86. package/assets/css/components/lists.css.map +0 -1
  87. package/assets/css/components/table.global.css +0 -1
  88. package/assets/css/components/table.global.css.map +0 -1
  89. package/assets/css/components/tooltips.css +0 -1
  90. package/assets/css/components/tooltips.css.map +0 -1
  91. package/assets/sass/_forms.scss +0 -10
  92. package/assets/sass/foundations/circles.scss +0 -75
  93. /package/assets/sass/{foundations → elements}/brand.scss +0 -0
  94. /package/assets/sass/{components → elements}/container.scss +0 -0
  95. /package/assets/sass/{foundations → elements}/icons.scss +0 -0
  96. /package/assets/sass/{foundations → elements}/links.scss +0 -0
  97. /package/assets/sass/{components → elements}/lists.scss +0 -0
  98. /package/assets/sass/{foundations → elements}/media.scss +0 -0
  99. /package/assets/sass/{components/table.global.scss → elements/table.element.scss} +0 -0
  100. /package/assets/sass/{components → elements}/tooltips.scss +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"table.component.min.js","sources":["../../modules/helpers.js","../../modules/table.js","table.component.js"],"sourcesContent":["// @ts-nocheck\n/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add(\"js-enabled\");\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add(\"ie\");\n }\n return null;\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () { checkElements(location.hash); }, false);\n addEventListener(\"popstate\", (event) => {\n if (event && event.state.type && event.state.type == \"pagination\") {\n let form = document.querySelector(`#${event.state.form}`);\n let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n document.addEventListener(\"submit\", (event) => {\n if (event && event.target instanceof HTMLElement && event.target.matches('form')) {\n let form = event.target;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n return null;\n};\nexport const isNumeric = function (str) {\n if (typeof str != \"string\")\n return false; // we only process strings! \n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str.split(' ').map(s => ucfirst(s)).join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// @ts-nocheck\nimport { zeroPad, isNumeric, ucfirst } from \"./helpers.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 = ['0', 'low', 'medium', 'high', 'unknown', 'n/a', 'pending', 'verified', 'due', 'overdue', 'incomplete', 'complete', 'completed', 'approval required', 'upcoming', 'requires approval', 'to do', 'on track', 'not started', 'warning', 'error'];\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('data-td-class'))\n cell.setAttribute('class', heading.getAttribute('data-td-class'));\n if (heading.hasAttribute('data-format')) {\n cell.setAttribute('data-format', heading.getAttribute('data-format'));\n cell.innerHTML = formatCell(heading.getAttribute('data-format'), cell.textContent.trim()); //Make sure date format is consistent\n }\n if (statuses.includes(cell.textContent.trim().toLowerCase())) {\n cell.setAttribute('data-content', cell.textContent.trim().toLowerCase());\n }\n }\n });\n });\n};\nexport const getLargestLastColWidth = (table) => {\n let largestWidth = 0;\n Array.from(table.querySelectorAll('tbody 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 lastColChild.classList.add('text-nowrap');\n let responsiveWidth = lastColChild.offsetWidth / parseFloat(htmlStyles.fontSize);\n responsiveWidth += 1.7;\n largestWidth = largestWidth > responsiveWidth ? largestWidth : responsiveWidth;\n }\n });\n return largestWidth;\n};\nexport const createMobileButton = (table, wrapper) => {\n if (wrapper.classList.contains('.table--fullwidth') && !wrapper.hasAttribute('data-expandable'))\n return false;\n if (table.querySelectorAll('thead tr th').length < 4 && !wrapper.hasAttribute('data-expandable'))\n return false;\n Array.from(table.querySelectorAll('thead tr')).forEach((row, index) => {\n row.insertAdjacentHTML('afterbegin', `<th class=\"th--fixed expand-button-heading\"></th>`);\n });\n Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {\n row.insertAdjacentHTML('afterbegin', `<td class=\"td--fixed td--expand\"><button class=\"btn btn-compact btn-secondary\" data-expand-button>Expand</button></td>`);\n });\n};\nexport const addTableEventListeners = (table) => {\n table.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-expand-button]')) {\n let button = event.target.closest('[data-expand-button]');\n let tableRow = button.closest('tr');\n if (tableRow.getAttribute('data-view') == \"full\")\n tableRow.setAttribute('data-view', 'default');\n else\n tableRow.setAttribute('data-view', 'full');\n button.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 (event, paginate = false) {\n if (form.classList.contains('processing'))\n return false;\n // Before submitting check if any duplicate checkboxes within the filters dialog needs to upset the original input\n if (event.type == \"submit\") {\n form.classList.add('processing');\n Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element, index) => {\n const id = element.getAttribute('data-duplicate');\n const input = document.getElementById(id);\n const card = document.querySelector(`[for=\"${id}\"] iam-card`);\n if (input.checked != element.checked) {\n if (card) {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n }\n else {\n input.checked = element.checked;\n }\n }\n });\n form.classList.remove('processing');\n }\n if (form.hasAttribute('data-ajax')) {\n // Default back to page 1\n if (!paginate) {\n let paginationInput = form.querySelector('[data-pagination]');\n paginationInput.value = 1;\n wrapper.setAttribute('data-page', 1);\n }\n loadAjaxTable(table, form, pagination, wrapper);\n }\n else if (form.hasAttribute('data-submit'))\n form.submit();\n else {\n filterTable(table, form, wrapper);\n populateDataQueries(table, form);\n }\n // Pass post data back to the page\n if (form.hasAttribute('data-ajax-post')) {\n let formData = new FormData(form);\n let queryString = new URLSearchParams(formData).toString();\n const http = new XMLHttpRequest();\n http.open('GET', `${window.location.href}?ajax=true&${queryString}`);\n http.send();\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(event);\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(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')) {\n formSubmit(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter][data-no-ajax]')) { // Allow for input fields to filter the current results without a new ajax call\n filterTable(table, form, wrapper);\n populateDataQueries(table, form);\n }\n else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && event.target.closest('form .dialog__wrapper > dialog')) {\n formSubmit(event);\n }\n else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')) {\n formSubmit(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {\n formSubmit(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-mimic]')) {\n formSubmit(event);\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.classList.add('processing');\n // Make sure any applied filters have been removed\n Array.from(form.querySelectorAll('.applied-filters')).forEach((filters, index) => {\n filters.innerHTML = \"\";\n });\n // Make sure cards are unlicked\n let frm_elements = form.elements;\n for (let i = 0; i < frm_elements.length; i++) {\n let field_type = frm_elements[i].type.toLowerCase() ? frm_elements[i].type.toLowerCase() : \"text\";\n switch (field_type) {\n case \"text\":\n case \"password\":\n case \"textarea\":\n frm_elements[i].value = \"\";\n break;\n case \"radio\":\n case \"checkbox\":\n if (frm_elements[i].checked) {\n let input = frm_elements[i];\n let id = input.getAttribute('id');\n let label = document.querySelector(`[for=\"${id}\"`);\n if (label.querySelector('iam-card')) {\n let card = label.querySelector('iam-card');\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n }\n input.checked = false;\n }\n break;\n case \"select-one\":\n case \"select-multi\":\n frm_elements[i].selectedIndex = -1;\n break;\n case \"hidden\":\n default:\n break;\n }\n }\n form.classList.remove('processing');\n if (!form.hasAttribute('data-submit'))\n sortTable(table, form, savedTableBody);\n formSubmit(event);\n }\n });\n form.addEventListener('submit', (event) => {\n clearTimeout(timer);\n if (!form.hasAttribute('data-submit'))\n event.preventDefault();\n formSubmit(event);\n });\n form.addEventListener('force', (event) => {\n formSubmit(event);\n });\n form.addEventListener('paginate', (event) => {\n formSubmit(event, true);\n });\n // Mmimic fields\n let forms = [];\n let fields = [];\n // Collect the forms that we need to add an event listener for.\n Array.from(form.querySelectorAll('[data-mimic]')).forEach((input, index) => {\n let mimicField = input.getAttribute('data-mimic');\n Array.from(document.querySelectorAll(`[name=\"${mimicField}\"]`)).forEach((mimicInput, index) => {\n let parentForm = mimicInput.closest('form');\n if (!forms.includes(parentForm))\n forms.push(parentForm);\n if (!fields.includes(mimicField))\n fields.push(mimicField);\n });\n });\n // For each form add change listener\n forms.forEach((parentForm, index) => {\n const updateMimicInput = function () {\n let mimickedAlready = [];\n let formData = new FormData(parentForm);\n let i = 1;\n for (const [key, value] of formData) {\n if (document.querySelector(`[data-mimic=\"${key}\"]`) && !mimickedAlready.includes(key)) {\n mimickedAlready.push(key);\n document.querySelector(`[data-mimic=\"${key}\"]`).value = value;\n }\n else if (document.querySelector(`[data-mimic=\"${key}\"]`))\n document.querySelector(`[data-mimic=\"${key}\"]`).value += \",\" + value;\n i++;\n }\n for (const value of mimickedAlready) {\n const event = new Event(\"force\");\n form.dispatchEvent(event);\n }\n // Check for empties\n for (const field of fields) {\n if (!formData.has(field) && parentForm.querySelector(`[name=\"${field}\"]`)) {\n document.querySelector(`[data-mimic=\"${field}\"]`).value = \"\";\n const event = new Event(\"force\");\n form.dispatchEvent(event);\n }\n }\n };\n parentForm.addEventListener('force', (event) => {\n updateMimicInput();\n });\n parentForm.addEventListener('change', (event) => {\n updateMimicInput();\n });\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 (tableRow.querySelector('[data-label=\"' + sortBy + '\"] .td__content'))\n rowIndex = tableRow.querySelector('[data-label=\"' + sortBy + '\"] .td__content').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 = filterFilters(form);\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 // 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 // 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 element.parentNode.classList.remove('hover');\n });\n let filterCount = 0;\n Object.values(filters).forEach((filter, index) => {\n if (typeof filter == \"object\" && Object.values(filter).length)\n filterCount += Object.values(filter).length;\n else\n filterCount++;\n });\n if (filterCount) {\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML += `(${filterCount})`;\n element.parentNode.classList.add('hover');\n });\n }\n // Filter the table\n table.classList.add('table--filtered');\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 let matchesPage = Math.ceil(matched / showRows);\n if (matchesPage == parseInt(page))\n row.classList.add('filtered--show');\n });\n if (wrapper) {\n wrapper.setAttribute('data-total', matched);\n wrapper.setAttribute('data-show', showRows);\n wrapper.setAttribute('data-page', page);\n }\n};\nexport const populateDataQueries = (table, form, wrapper) => {\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 if (wrapper.hasAttribute('data-total'))\n numberOfMatchedRows = wrapper.getAttribute('data-total');\n else\n numberOfMatchedRows = table.classList.contains('table--filtered') ? table.querySelectorAll('tbody tr').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.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('update-page', (event) => {\n let paginationInput = form.querySelector('[data-pagination]');\n let newPage = event.detail.page;\n // Set the filter value\n paginationInput.value = newPage;\n form.dispatchEvent(new Event(\"paginate\"));\n // Reset the data attribute\n wrapper.setAttribute('data-page', newPage);\n if (table.hasAttribute('data-show-history')) {\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 // scroll back to the top of the table\n if (!wrapper.hasAttribute('data-no-scroll')) {\n const yOffset = -250;\n const y = table.getBoundingClientRect().top + window.pageYOffset + yOffset;\n window.scrollTo({ top: y, behavior: 'smooth' });\n }\n });\n pagination.addEventListener('update-show', (event) => {\n let showInput = form.querySelector('[data-show]');\n let showRows = event.detail.show;\n showInput.value = showRows;\n wrapper.setAttribute('data-show', showRows);\n form.dispatchEvent(new Event(\"submit\"));\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 addDataAttributes(table);\n createMobileButton(table, wrapper);\n populateDataQueries(table, form, wrapper);\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 function outputsize() {\n Array.from(table.querySelectorAll('tr')).forEach((row, index) => {\n let rowHeight = row.offsetHeight;\n row.style.setProperty(\"--row-height\", `${rowHeight}px`);\n });\n }\n new ResizeObserver(outputsize).observe(table);\n }\n};\nconst filterFilters = function (form) {\n let filters = new Object();\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 && filterInput.value) {\n let dataFilter = filterInput.getAttribute('data-filter');\n if (!filters[dataFilter])\n filters[dataFilter] = new Array();\n filters[dataFilter].push(filterInput.value);\n }\n });\n return filters;\n};\nexport const loadAjaxTable = function (table, form, pagination, wrapper) {\n return __awaiter(this, void 0, void 0, function* () {\n const resolvePath = (object, path, defaultValue) => path.split(/[\\.\\[\\]\\'\\\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);\n let formData = new FormData(form);\n let queryString = new URLSearchParams(formData).toString();\n let columns = table.querySelectorAll('thead tr th');\n let tbody = table.querySelector('tbody');\n let ajaxURL = form.getAttribute('data-ajax');\n wrapper.classList.add('table--loading');\n // Display the filter count\n let filters = filterFilters(form);\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML = '';\n element.parentNode.classList.remove('hover');\n });\n let filterCount = 0;\n Object.values(filters).forEach((filter, index) => {\n if (typeof filter == \"object\" && Object.values(filter).length)\n filterCount += Object.values(filter).length;\n else\n filterCount++;\n });\n if (filterCount) {\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML += `(${filterCount})`;\n element.parentNode.classList.add('hover');\n });\n }\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = controller[ajaxURL];\n // Set loading on the pagination\n pagination.setAttribute('data-loading', 'true');\n form.classList.add('processing');\n try {\n yield fetch(ajaxURL + '?' + queryString, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n })\n })\n .then((response) => response.json()).then((response) => {\n let schema = form.hasAttribute('data-schema') ? form.getAttribute('data-schema') : 'data';\n let totalNumberSchema = form.hasAttribute('data-schema-total') ? form.getAttribute('data-schema-total') : 'meta.total';\n let currentPageSchema = form.hasAttribute('data-schema-page') ? form.getAttribute('data-schema-page') : 'meta.current_page';\n let totalNumber = resolvePath(response, totalNumberSchema, 15);\n let currentPage = resolvePath(response, currentPageSchema, 1);\n let data = resolvePath(response, schema);\n let emptyMsg = wrapper.hasAttribute('data-empty-msg') ? wrapper.getAttribute('data-empty-msg') : \"No results found\";\n if (data) {\n tbody.innerHTML = '';\n 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 an output array is defined then the content is going to made of of multiple values from an array\n if (col.hasAttribute('data-output-array')) {\n var cellTemplate = col.getAttribute('data-output');\n let arrValue = resolvePath(row, cellTemplate.replace('{', '').replace('}', ''));\n cellOutput = \"\";\n arrValue.forEach((rowValue, i) => {\n let cellTemplateValue = col.getAttribute('data-output-array');\n let cellOutputValue = \"\";\n // If we need to transform some of the data\n if (col.hasAttribute('data-output-array-property') && col.hasAttribute('data-output-array-transform')) {\n const propertyValue = resolvePath(rowValue, col.getAttribute('data-output-array-property'));\n const transforms = JSON.parse(col.getAttribute('data-output-array-transform'));\n const transformValue = transforms[propertyValue];\n cellOutputValue = cellTemplateValue.replace(`{${col.getAttribute('data-output-array-property')}}`, transformValue);\n }\n cellOutputValue = cellOutputValue.replace(new RegExp(/{(.*?)}/, \"gm\"), function (matched) { return resolvePath(rowValue, matched.replace('{', '').replace('}', '')); });\n cellOutput += cellOutputValue;\n });\n }\n if (col.hasAttribute('data-transform')) {\n const transforms = JSON.parse(col.getAttribute('data-transform'));\n cellOutput = transforms[cellOutput];\n if (!cellOutput && col.hasAttribute('data-default'))\n cellOutput = col.getAttribute('data-default');\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 wrapper.setAttribute('data-total', parseInt(totalNumber));\n wrapper.setAttribute('data-page', parseInt(currentPage));\n makeTableFunctional(table, form, pagination, wrapper);\n Array.from(form.querySelectorAll('[data-ajax-query]')).forEach((queryElement, index) => {\n let totalNumber = resolvePath(response, queryElement.getAttribute('data-ajax-query'), '');\n if (queryElement.hasAttribute('data-total'))\n queryElement.setAttribute('data-total', totalNumber);\n else\n queryElement.innerHTML = totalNumber;\n });\n if (parseInt(totalNumber) == 0) {\n tbody.innerHTML = `<tr><td colspan=\"100%\"><span>${emptyMsg}</span></td></tr>`;\n }\n wrapper.classList.remove('table--loading');\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Ajax table loaded\",\n \"url\": ajaxURL,\n \"formData\": queryString\n });\n }\n else {\n tbody.innerHTML = '<tr><td colspan=\"100%\"><span>Error loading table</span></td></tr>';\n }\n // Remove loading on the pagination\n pagination.removeAttribute('data-loading');\n form.classList.remove('processing');\n });\n }\n catch (error) {\n console.log(error);\n }\n });\n};\nexport const formatCell = (format, cellOutput) => {\n switch (format) {\n case 'datetime':\n return new Date(cellOutput).toLocaleDateString('en-gb', { weekday: 'short', year: \"2-digit\", month: \"long\", day: \"numeric\", }) + \" \" + new Date(cellOutput).toLocaleTimeString(\"en-gb\", { hour: \"2-digit\", minute: \"2-digit\" });\n case 'date':\n return new Date(cellOutput).toLocaleDateString('en-gb', { year: \"2-digit\", month: \"long\", day: \"numeric\" });\n case 'capitalise':\n return cellOutput = ucfirst(cellOutput);\n }\n};\n","// @ts-nocheck\nimport * as tableModule from \"../../modules/table.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 coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/table.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/table.extras.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n\n :host(.mh-sm){\n max-height: none!important;\n }\n :host(.mh-md){\n max-height: none!important;\n }\n :host(.mh-lg){\n max-height: none!important;\n }\n \n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <slot name=\"before\"></slot>\n <div class=\"table--cta\">\n <div class=\"table__wrapper\">\n <slot></slot>\n </div>\n </div>\n <iam-pagination class=\"pagination--table\" ${this.hasAttribute('data-page') ? `data-page=\"${this.getAttribute('data-page')}\"` : ''} ></iam-pagination>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('tableExtras'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"tableExtras\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\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', (params.has('show') ? params.get('show') : 15));\n if (!this.hasAttribute('data-increment'))\n this.setAttribute('data-increment', this.getAttribute('data-show'));\n // Update table__wrapper class\n let classList = this.classList.toString();\n classList = classList.replace('table--cta', '');\n classList = classList.replace('table--loading', '');\n this.shadowRoot.querySelector('.table__wrapper').className += ` ${classList}`;\n // set actionbar class if needed\n if (this.querySelector('.actionbar__sticky'))\n this.shadowRoot.querySelector('.table__wrapper').classList.add('has-actionbar');\n this.table = this.querySelector('table');\n this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);\n this.pagination = this.shadowRoot.querySelector('iam-pagination');\n this.pagination.setAttribute('data-total', this.getAttribute('data-total'));\n this.pagination.setAttribute('data-page', this.getAttribute('data-page'));\n this.pagination.setAttribute('data-show', this.getAttribute('data-show'));\n this.pagination.setAttribute('data-increment', this.getAttribute('data-show'));\n if (this.hasAttribute('data-page-jump'))\n this.pagination.setAttribute('data-page-jump', 'true');\n if (this.hasAttribute('data-per-page'))\n this.pagination.setAttribute('data-per-page', 'true');\n if (this.hasAttribute('data-item-count'))\n this.pagination.setAttribute('data-item-count', 'true');\n if (this.hasAttribute('data-loading'))\n this.pagination.setAttribute('data-loading', 'true');\n if (this.classList.contains('table--fullwidth'))\n this.pagination.setAttribute('data-minimal', 'true');\n // Remove table CTA\n const isCTA = this.classList.contains('table--cta');\n if (!isCTA)\n this.shadowRoot.querySelector('.table--cta').classList.remove('table--cta');\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 }\n else {\n this.table.parentNode.insertBefore(this.form, this.table.nextSibling);\n }\n // Set ajax class\n if (this.form.hasAttribute('data-ajax'))\n this.table.classList.add('table--ajax');\n // Create a data list if a search input is present\n tableModule.createSearchDataList(this.table, this.form);\n if (!this.form.querySelector('[data-pagination]')) {\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 // 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 function uniqueID(index = 1) {\n let ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n }\n // Add in the checkboxes\n if (this.querySelector('iam-actionbar[data-selectall]')) {\n const actionbar = this.querySelector('iam-actionbar[data-selectall]');\n Array.from(this.table.querySelectorAll('thead tr')).forEach((row, index) => {\n row.insertAdjacentHTML('afterbegin', `<th class=\"th--fixed\"></th>`);\n });\n Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {\n let rowID = `row${uniqueID(index)}`;\n row.insertAdjacentHTML('afterbegin', `<td class=\"td--fixed selectrow\"><input type=\"checkbox\" name=\"row\" id=\"${rowID}\"/><label for=\"${rowID}\"><span class=\"visually-hidden\">Select row</span></label></td>`);\n });\n this.table.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.selectrow input')) {\n let count = this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]').length;\n let countChecked = this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]:checked').length;\n actionbar.setAttribute('data-selected', count == countChecked ? \"all\" : countChecked);\n }\n ;\n });\n actionbar.addEventListener('selected', (event) => {\n if (event.detail.selected == '0') {\n Array.from(this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]')).forEach((input, index) => {\n input.checked = false;\n });\n }\n else if (event.detail.selected == 'all') {\n Array.from(this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]')).forEach((input, index) => {\n input.checked = true;\n });\n }\n });\n }\n // Make the dialog menus columns fixed \n let colIndex = -1;\n Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {\n if (row.querySelector(':scope > td > .dialog__wrapper')) {\n let columnn = row.querySelector(':scope > td > .dialog__wrapper').parentNode;\n columnn.classList.add('td--fixed');\n colIndex = Array.from(columnn.parentNode.children).indexOf(columnn);\n }\n });\n if (colIndex != -1) {\n this.table.querySelector(`thead tr th:nth-child(${colIndex + 1})`).classList.add('th--fixed');\n Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${colIndex + 1})`)).forEach((col, index) => {\n col.classList.add('td--fixed');\n });\n }\n tableModule.makeTableFunctional(this.table, this.form, this.pagination, this);\n tableModule.filterTable(this.table, this.form, this);\n tableModule.populateDataQueries(this.table, this.form);\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 this.table.querySelector('.dialog__wrapper > button.active').classList.remove('active');\n }\n });\n }\n static get observedAttributes() {\n return [\"data-total\", \"data-page\", \"data-show\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n this.pagination = this.shadowRoot.querySelector('iam-pagination');\n switch (attrName) {\n case \"data-total\": {\n if (oldVal != newVal) {\n this.pagination.setAttribute('data-total', newVal);\n }\n break;\n }\n case \"data-show\": {\n if (oldVal != newVal) {\n this.pagination.setAttribute('data-show', newVal);\n }\n break;\n }\n case \"data-page\": {\n if (oldVal != newVal) {\n this.pagination.setAttribute('data-page', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamTable;\n"],"names":["isNumeric","str","zeroPad","num","places","ucfirst","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","addDataAttributes","table","colHeadings","row","index","cells","statuses","cell","cellIndex","heading","tempDiv","headingText","formatCell","getLargestLastColWidth","largestWidth","htmlStyles","lastColChild","responsiveWidth","createMobileButton","wrapper","addTableEventListeners","event","button","tableRow","createSearchDataList","form","searchInput","searchID","searchableColumns","inputWrapper","searchableTerms","columnHeading","td","term","addFilterEventListeners","pagination","savedTableBody","timer","formSubmit","paginate","element","id","input","card","clickEvent","paginationInput","loadAjaxTable","filterTable","populateDataQueries","formData","queryString","http","sortTable","filters","frm_elements","i","label","forms","fields","mimicField","mimicInput","parentForm","updateMimicInput","mimickedAlready","key","field","tbody","select","selectedOption","sortBy","order","format","orderArray","tableArr","rowIndex","dataRow","a","b","strTbody","filterFilters","searches","matched","page","showRows","column","filterCount","filter","filterValue","isMatched","filterTd","yesterday","today","mondayThisWeek","sundayThisWeek","checkDate","mondayLastWeek","sundayLastWeek","year","month","firstDayMonth","lastDayMonth","firstDayLastMonth","lastDayLastMonth","isSearched","search","searchTd","queryElement","query","numberOfMatchedRows","queries","selector","queryParts","addPaginationEventListeners","newPage","url","y","showInput","addExportEventListeners","exportAsCSV","csvData","rows","cols","csvRow","j","CSVFile","tempLink","makeTableFunctional","outputsize","rowHeight","filterInput","dataFilter","resolvePath","object","path","defaultValue","p","o","columns","ajaxURL","signal","response","schema","totalNumberSchema","currentPageSchema","totalNumber","currentPage","data","emptyMsg","table_row","col","cellOutput","table_cell","cellTemplate","arrValue","rowValue","cellTemplateValue","cellOutputValue","propertyValue","transformValue","error","iamTable","assetLocation","coreCSS","template","params","classList","tableModule.createSearchDataList","tableModule.addTableEventListeners","tableModule.addFilterEventListeners","tableModule.addPaginationEventListeners","tableModule.addExportEventListeners","tableModule.loadAjaxTable","uniqueID","actionbar","rowID","count","countChecked","colIndex","columnn","tableModule.makeTableFunctional","tableModule.filterTable","tableModule.populateDataQueries","attrName","oldVal","newVal"],"mappings":"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"}
1
+ {"version":3,"file":"table.component.min.js","sources":["../../modules/helpers.js","../../modules/table.js","table.component.js"],"sourcesContent":["// @ts-nocheck\n/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add(\"js-enabled\");\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add(\"ie\");\n }\n return null;\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () { checkElements(location.hash); }, false);\n addEventListener(\"popstate\", (event) => {\n if (event && event.state.type && event.state.type == \"pagination\") {\n let form = document.querySelector(`#${event.state.form}`);\n let pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event(\"submit\"));\n }\n });\n document.addEventListener(\"submit\", (event) => {\n if (event && event.target instanceof HTMLElement && event.target.matches('form')) {\n let form = event.target;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n return null;\n};\nexport const isNumeric = function (str) {\n if (typeof str != \"string\")\n return false; // we only process strings! \n return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str.split(' ').map(s => ucfirst(s)).join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// @ts-nocheck\nimport { zeroPad, isNumeric, ucfirst } from \"./helpers.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 = ['0', 'low', 'medium', 'high', 'unknown', 'n/a', 'pending', 'verified', 'due', 'overdue', 'incomplete', 'complete', 'completed', 'approval required', 'upcoming', 'requires approval', 'to do', 'on track', 'not started', 'warning', 'error'];\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('data-td-class'))\n cell.setAttribute('class', heading.getAttribute('data-td-class'));\n if (heading.hasAttribute('data-format')) {\n cell.setAttribute('data-format', heading.getAttribute('data-format'));\n cell.innerHTML = formatCell(heading.getAttribute('data-format'), cell.textContent.trim()); //Make sure date format is consistent\n }\n if (statuses.includes(cell.textContent.trim().toLowerCase())) {\n cell.setAttribute('data-content', cell.textContent.trim().toLowerCase());\n }\n }\n });\n });\n};\nexport const getLargestLastColWidth = (table) => {\n let largestWidth = 0;\n Array.from(table.querySelectorAll('tbody 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 lastColChild.classList.add('text-nowrap');\n let responsiveWidth = lastColChild.offsetWidth / parseFloat(htmlStyles.fontSize);\n responsiveWidth += 1.7;\n largestWidth = largestWidth > responsiveWidth ? largestWidth : responsiveWidth;\n }\n });\n return largestWidth;\n};\nexport const createMobileButton = (table, wrapper) => {\n if (wrapper.classList.contains('.table--fullwidth') && !wrapper.hasAttribute('data-expandable'))\n return false;\n if (table.querySelectorAll('thead tr th').length < 4 && !wrapper.hasAttribute('data-expandable'))\n return false;\n Array.from(table.querySelectorAll('thead tr')).forEach((row, index) => {\n row.insertAdjacentHTML('afterbegin', `<th class=\"th--fixed expand-button-heading\"></th>`);\n });\n Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {\n const preExpanded = row.getAttribute('data-view') === 'full' ? 'aria-expanded' : '';\n row.insertAdjacentHTML('afterbegin', `<td class=\"td--fixed td--expand\"><button class=\"btn btn-compact btn-secondary\" data-expand-button ${preExpanded}>Expand</button></td>`);\n });\n};\nexport const addTableEventListeners = (table) => {\n table.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-expand-button]')) {\n let button = event.target.closest('[data-expand-button]');\n let tableRow = button.closest('tr');\n button.toggleAttribute('aria-expanded');\n if (tableRow.getAttribute('data-view') == \"full\")\n tableRow.setAttribute('data-view', 'default');\n else\n tableRow.setAttribute('data-view', 'full');\n button.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 (event, paginate = false) {\n if (form.classList.contains('processing'))\n return false;\n // Before submitting check if any duplicate checkboxes within the filters dialog needs to upset the original input\n if (event.type == \"submit\") {\n form.classList.add('processing');\n Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element, index) => {\n const id = element.getAttribute('data-duplicate');\n const input = document.getElementById(id);\n const card = document.querySelector(`[for=\"${id}\"] iam-card`);\n if (input.checked != element.checked) {\n if (card) {\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n }\n else {\n input.checked = element.checked;\n }\n }\n });\n form.classList.remove('processing');\n }\n if (form.hasAttribute('data-ajax')) {\n // Default back to page 1\n if (!paginate) {\n let paginationInput = form.querySelector('[data-pagination]');\n paginationInput.value = 1;\n wrapper.setAttribute('data-page', 1);\n }\n loadAjaxTable(table, form, pagination, wrapper);\n }\n else if (form.hasAttribute('data-submit'))\n form.submit();\n else {\n filterTable(table, form, wrapper);\n populateDataQueries(table, form);\n }\n // Pass post data back to the page\n if (form.hasAttribute('data-ajax-post')) {\n let formData = new FormData(form);\n let queryString = new URLSearchParams(formData).toString();\n const http = new XMLHttpRequest();\n http.open('GET', `${window.location.href}?ajax=true&${queryString}`);\n http.send();\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(event);\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(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')) {\n formSubmit(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter][data-no-ajax]')) { // Allow for input fields to filter the current results without a new ajax call\n filterTable(table, form, wrapper);\n populateDataQueries(table, form);\n }\n else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && event.target.closest('form .dialog__wrapper > dialog')) {\n formSubmit(event);\n }\n else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')) {\n formSubmit(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {\n formSubmit(event);\n }\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-mimic]')) {\n formSubmit(event);\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.classList.add('processing');\n // Make sure any applied filters have been removed\n Array.from(form.querySelectorAll('.applied-filters')).forEach((filters, index) => {\n filters.innerHTML = \"\";\n });\n // Make sure cards are unlicked\n let frm_elements = form.elements;\n for (let i = 0; i < frm_elements.length; i++) {\n let field_type = frm_elements[i].type.toLowerCase() ? frm_elements[i].type.toLowerCase() : \"text\";\n switch (field_type) {\n case \"text\":\n case \"password\":\n case \"textarea\":\n frm_elements[i].value = \"\";\n break;\n case \"radio\":\n case \"checkbox\":\n if (frm_elements[i].checked) {\n let input = frm_elements[i];\n let id = input.getAttribute('id');\n let label = document.querySelector(`[for=\"${id}\"`);\n if (label.querySelector('iam-card')) {\n let card = label.querySelector('iam-card');\n let clickEvent = new Event('click');\n card.dispatchEvent(clickEvent);\n }\n input.checked = false;\n }\n break;\n case \"select-one\":\n case \"select-multi\":\n frm_elements[i].selectedIndex = -1;\n break;\n case \"hidden\":\n default:\n break;\n }\n }\n form.classList.remove('processing');\n if (!form.hasAttribute('data-submit'))\n sortTable(table, form, savedTableBody);\n formSubmit(event);\n }\n });\n form.addEventListener('submit', (event) => {\n clearTimeout(timer);\n if (!form.hasAttribute('data-submit'))\n event.preventDefault();\n formSubmit(event);\n });\n form.addEventListener('force', (event) => {\n formSubmit(event);\n });\n form.addEventListener('paginate', (event) => {\n formSubmit(event, true);\n });\n // Mmimic fields\n let forms = [];\n let fields = [];\n // Collect the forms that we need to add an event listener for.\n Array.from(form.querySelectorAll('[data-mimic]')).forEach((input, index) => {\n let mimicField = input.getAttribute('data-mimic');\n Array.from(document.querySelectorAll(`[name=\"${mimicField}\"]`)).forEach((mimicInput, index) => {\n let parentForm = mimicInput.closest('form');\n if (!forms.includes(parentForm))\n forms.push(parentForm);\n if (!fields.includes(mimicField))\n fields.push(mimicField);\n });\n });\n // For each form add change listener\n forms.forEach((parentForm, index) => {\n const updateMimicInput = function () {\n let mimickedAlready = [];\n let formData = new FormData(parentForm);\n let i = 1;\n for (const [key, value] of formData) {\n if (document.querySelector(`[data-mimic=\"${key}\"]`) && !mimickedAlready.includes(key)) {\n mimickedAlready.push(key);\n document.querySelector(`[data-mimic=\"${key}\"]`).value = value;\n }\n else if (document.querySelector(`[data-mimic=\"${key}\"]`))\n document.querySelector(`[data-mimic=\"${key}\"]`).value += \",\" + value;\n i++;\n }\n for (const value of mimickedAlready) {\n const event = new Event(\"force\");\n form.dispatchEvent(event);\n }\n // Check for empties\n for (const field of fields) {\n if (!formData.has(field) && parentForm.querySelector(`[name=\"${field}\"]`)) {\n document.querySelector(`[data-mimic=\"${field}\"]`).value = \"\";\n const event = new Event(\"force\");\n form.dispatchEvent(event);\n }\n }\n };\n parentForm.addEventListener('force', (event) => {\n updateMimicInput();\n });\n parentForm.addEventListener('change', (event) => {\n updateMimicInput();\n });\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 (tableRow.querySelector('[data-label=\"' + sortBy + '\"] .td__content'))\n rowIndex = tableRow.querySelector('[data-label=\"' + sortBy + '\"] .td__content').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 = filterFilters(form);\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 // 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 // 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 element.parentNode.classList.remove('hover');\n });\n let filterCount = 0;\n Object.values(filters).forEach((filter, index) => {\n if (typeof filter == \"object\" && Object.values(filter).length)\n filterCount += Object.values(filter).length;\n else\n filterCount++;\n });\n if (filterCount) {\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML += `(${filterCount})`;\n element.parentNode.classList.add('hover');\n });\n }\n // Filter the table\n table.classList.add('table--filtered');\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 let matchesPage = Math.ceil(matched / showRows);\n if (matchesPage == parseInt(page))\n row.classList.add('filtered--show');\n });\n if (wrapper) {\n wrapper.setAttribute('data-total', matched);\n wrapper.setAttribute('data-show', showRows);\n wrapper.setAttribute('data-page', page);\n }\n};\nexport const populateDataQueries = (table, form, wrapper) => {\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 if (wrapper.hasAttribute('data-total'))\n numberOfMatchedRows = wrapper.getAttribute('data-total');\n else\n numberOfMatchedRows = table.classList.contains('table--filtered') ? table.querySelectorAll('tbody tr').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.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('update-page', (event) => {\n let paginationInput = form.querySelector('[data-pagination]');\n let newPage = event.detail.page;\n // Set the filter value\n paginationInput.value = newPage;\n form.dispatchEvent(new Event(\"paginate\"));\n // Reset the data attribute\n wrapper.setAttribute('data-page', newPage);\n if (table.hasAttribute('data-show-history')) {\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 // scroll back to the top of the table\n if (!wrapper.hasAttribute('data-no-scroll')) {\n const yOffset = -250;\n const y = table.getBoundingClientRect().top + window.pageYOffset + yOffset;\n window.scrollTo({ top: y, behavior: 'smooth' });\n }\n });\n pagination.addEventListener('update-show', (event) => {\n let showInput = form.querySelector('[data-show]');\n let showRows = event.detail.show;\n showInput.value = showRows;\n wrapper.setAttribute('data-show', showRows);\n form.dispatchEvent(new Event(\"submit\"));\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 addDataAttributes(table);\n createMobileButton(table, wrapper);\n populateDataQueries(table, form, wrapper);\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 function outputsize() {\n Array.from(table.querySelectorAll('tr')).forEach((row, index) => {\n let rowHeight = row.offsetHeight;\n row.style.setProperty(\"--row-height\", `${rowHeight}px`);\n });\n }\n new ResizeObserver(outputsize).observe(table);\n }\n};\nconst filterFilters = function (form) {\n let filters = new Object();\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 && filterInput.value) {\n let dataFilter = filterInput.getAttribute('data-filter');\n if (!filters[dataFilter])\n filters[dataFilter] = new Array();\n filters[dataFilter].push(filterInput.value);\n }\n });\n return filters;\n};\nexport const loadAjaxTable = function (table, form, pagination, wrapper) {\n return __awaiter(this, void 0, void 0, function* () {\n const resolvePath = (object, path, defaultValue) => path.split(/[\\.\\[\\]\\'\\\"]/).filter(p => p).reduce((o, p) => o ? o[p] : defaultValue, object);\n let formData = new FormData(form);\n let queryString = new URLSearchParams(formData).toString();\n let columns = table.querySelectorAll('thead tr th');\n let tbody = table.querySelector('tbody');\n let ajaxURL = form.getAttribute('data-ajax');\n wrapper.classList.add('table--loading');\n // Display the filter count\n let filters = filterFilters(form);\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML = '';\n element.parentNode.classList.remove('hover');\n });\n let filterCount = 0;\n Object.values(filters).forEach((filter, index) => {\n if (typeof filter == \"object\" && Object.values(filter).length)\n filterCount += Object.values(filter).length;\n else\n filterCount++;\n });\n if (filterCount) {\n Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {\n element.innerHTML += `(${filterCount})`;\n element.parentNode.classList.add('hover');\n });\n }\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = controller[ajaxURL];\n // Set loading on the pagination\n pagination.setAttribute('data-loading', 'true');\n form.classList.add('processing');\n try {\n yield fetch(ajaxURL + '?' + queryString, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n })\n })\n .then((response) => response.json()).then((response) => {\n let schema = form.hasAttribute('data-schema') ? form.getAttribute('data-schema') : 'data';\n let totalNumberSchema = form.hasAttribute('data-schema-total') ? form.getAttribute('data-schema-total') : 'meta.total';\n let currentPageSchema = form.hasAttribute('data-schema-page') ? form.getAttribute('data-schema-page') : 'meta.current_page';\n let totalNumber = resolvePath(response, totalNumberSchema, 15);\n let currentPage = resolvePath(response, currentPageSchema, 1);\n let data = resolvePath(response, schema);\n let emptyMsg = wrapper.hasAttribute('data-empty-msg') ? wrapper.getAttribute('data-empty-msg') : \"No results found\";\n if (data) {\n tbody.innerHTML = '';\n 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 an output array is defined then the content is going to made of of multiple values from an array\n if (col.hasAttribute('data-output-array')) {\n var cellTemplate = col.getAttribute('data-output');\n let arrValue = resolvePath(row, cellTemplate.replace('{', '').replace('}', ''));\n cellOutput = \"\";\n arrValue.forEach((rowValue, i) => {\n let cellTemplateValue = col.getAttribute('data-output-array');\n let cellOutputValue = \"\";\n // If we need to transform some of the data\n if (col.hasAttribute('data-output-array-property') && col.hasAttribute('data-output-array-transform')) {\n const propertyValue = resolvePath(rowValue, col.getAttribute('data-output-array-property'));\n const transforms = JSON.parse(col.getAttribute('data-output-array-transform'));\n const transformValue = transforms[propertyValue];\n cellOutputValue = cellTemplateValue.replace(`{${col.getAttribute('data-output-array-property')}}`, transformValue);\n }\n cellOutputValue = cellOutputValue.replace(new RegExp(/{(.*?)}/, \"gm\"), function (matched) { return resolvePath(rowValue, matched.replace('{', '').replace('}', '')); });\n cellOutput += cellOutputValue;\n });\n }\n if (col.hasAttribute('data-transform')) {\n const transforms = JSON.parse(col.getAttribute('data-transform'));\n cellOutput = transforms[cellOutput];\n if (!cellOutput && col.hasAttribute('data-default'))\n cellOutput = col.getAttribute('data-default');\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 wrapper.setAttribute('data-total', parseInt(totalNumber));\n wrapper.setAttribute('data-page', parseInt(currentPage));\n makeTableFunctional(table, form, pagination, wrapper);\n Array.from(form.querySelectorAll('[data-ajax-query]')).forEach((queryElement, index) => {\n let totalNumber = resolvePath(response, queryElement.getAttribute('data-ajax-query'), '');\n if (queryElement.hasAttribute('data-total'))\n queryElement.setAttribute('data-total', totalNumber);\n else\n queryElement.innerHTML = totalNumber;\n });\n if (parseInt(totalNumber) == 0) {\n tbody.innerHTML = `<tr><td colspan=\"100%\"><span>${emptyMsg}</span></td></tr>`;\n }\n wrapper.classList.remove('table--loading');\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Ajax table loaded\",\n \"url\": ajaxURL,\n \"formData\": queryString\n });\n }\n else {\n tbody.innerHTML = '<tr><td colspan=\"100%\"><span>Error loading table</span></td></tr>';\n }\n // Remove loading on the pagination\n pagination.removeAttribute('data-loading');\n form.classList.remove('processing');\n });\n }\n catch (error) {\n console.log(error);\n }\n });\n};\nexport const formatCell = (format, cellOutput) => {\n switch (format) {\n case 'datetime':\n return new Date(cellOutput).toLocaleDateString('en-gb', { weekday: 'short', year: \"2-digit\", month: \"long\", day: \"numeric\", }) + \" \" + new Date(cellOutput).toLocaleTimeString(\"en-gb\", { hour: \"2-digit\", minute: \"2-digit\" });\n case 'date':\n return new Date(cellOutput).toLocaleDateString('en-gb', { year: \"2-digit\", month: \"long\", day: \"numeric\" });\n case 'capitalise':\n return cellOutput = ucfirst(cellOutput);\n }\n};\n","// @ts-nocheck\nimport * as tableModule from \"../../modules/table.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 coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/table.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/table.extras.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n\n :host(.mh-sm){\n max-height: none!important;\n }\n :host(.mh-md){\n max-height: none!important;\n }\n :host(.mh-lg){\n max-height: none!important;\n }\n \n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <slot name=\"before\"></slot>\n <div class=\"table--cta\">\n <div class=\"table__wrapper\">\n <slot></slot>\n </div>\n </div>\n <iam-pagination class=\"pagination--table\" ${this.hasAttribute('data-page') ? `data-page=\"${this.getAttribute('data-page')}\"` : ''} ></iam-pagination>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('tableExtras'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"tableExtras\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\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', (params.has('show') ? params.get('show') : 15));\n if (!this.hasAttribute('data-increment'))\n this.setAttribute('data-increment', this.getAttribute('data-show'));\n // Update table__wrapper class\n let classList = this.classList.toString();\n classList = classList.replace('table--cta', '');\n classList = classList.replace('table--loading', '');\n this.shadowRoot.querySelector('.table__wrapper').className += ` ${classList}`;\n // set actionbar class if needed\n if (this.querySelector('.actionbar__sticky'))\n this.shadowRoot.querySelector('.table__wrapper').classList.add('has-actionbar');\n this.table = this.querySelector('table');\n this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);\n this.pagination = this.shadowRoot.querySelector('iam-pagination');\n this.pagination.setAttribute('data-total', this.getAttribute('data-total'));\n this.pagination.setAttribute('data-page', this.getAttribute('data-page'));\n this.pagination.setAttribute('data-show', this.getAttribute('data-show'));\n this.pagination.setAttribute('data-increment', this.getAttribute('data-show'));\n if (this.hasAttribute('data-page-jump'))\n this.pagination.setAttribute('data-page-jump', 'true');\n if (this.hasAttribute('data-per-page'))\n this.pagination.setAttribute('data-per-page', 'true');\n if (this.hasAttribute('data-item-count'))\n this.pagination.setAttribute('data-item-count', 'true');\n if (this.hasAttribute('data-loading'))\n this.pagination.setAttribute('data-loading', 'true');\n if (this.classList.contains('table--fullwidth'))\n this.pagination.setAttribute('data-minimal', 'true');\n // Remove table CTA\n const isCTA = this.classList.contains('table--cta');\n if (!isCTA)\n this.shadowRoot.querySelector('.table--cta').classList.remove('table--cta');\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 }\n else {\n this.table.parentNode.insertBefore(this.form, this.table.nextSibling);\n }\n // Set ajax class\n if (this.form.hasAttribute('data-ajax'))\n this.table.classList.add('table--ajax');\n // Create a data list if a search input is present\n tableModule.createSearchDataList(this.table, this.form);\n if (!this.form.querySelector('[data-pagination]')) {\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 // 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 function uniqueID(index = 1) {\n let ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n }\n // Add in the checkboxes\n if (this.querySelector('iam-actionbar[data-selectall]')) {\n const actionbar = this.querySelector('iam-actionbar[data-selectall]');\n Array.from(this.table.querySelectorAll('thead tr')).forEach((row, index) => {\n row.insertAdjacentHTML('afterbegin', `<th class=\"th--fixed\"></th>`);\n });\n Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {\n let rowID = `row${uniqueID(index)}`;\n row.insertAdjacentHTML('afterbegin', `<td class=\"td--fixed selectrow\"><input type=\"checkbox\" name=\"row\" id=\"${rowID}\"/><label for=\"${rowID}\"><span class=\"visually-hidden\">Select row</span></label></td>`);\n });\n this.table.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('.selectrow input')) {\n let count = this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]').length;\n let countChecked = this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]:checked').length;\n actionbar.setAttribute('data-selected', count == countChecked ? \"all\" : countChecked);\n }\n ;\n });\n actionbar.addEventListener('selected', (event) => {\n if (event.detail.selected == '0') {\n Array.from(this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]')).forEach((input, index) => {\n input.checked = false;\n });\n }\n else if (event.detail.selected == 'all') {\n Array.from(this.table.querySelectorAll('.selectrow input[type=\"checkbox\"]')).forEach((input, index) => {\n input.checked = true;\n });\n }\n });\n }\n // Make the dialog menus columns fixed \n let colIndex = -1;\n Array.from(this.table.querySelectorAll('tbody tr')).forEach((row, index) => {\n if (row.querySelector(':scope > td > .dialog__wrapper')) {\n let columnn = row.querySelector(':scope > td > .dialog__wrapper').parentNode;\n columnn.classList.add('td--fixed');\n colIndex = Array.from(columnn.parentNode.children).indexOf(columnn);\n }\n });\n if (colIndex != -1) {\n this.table.querySelector(`thead tr th:nth-child(${colIndex + 1})`).classList.add('th--fixed');\n Array.from(this.table.querySelectorAll(`tbody tr td:nth-child(${colIndex + 1})`)).forEach((col, index) => {\n col.classList.add('td--fixed');\n });\n }\n tableModule.makeTableFunctional(this.table, this.form, this.pagination, this);\n tableModule.filterTable(this.table, this.form, this);\n tableModule.populateDataQueries(this.table, this.form);\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 this.table.querySelector('.dialog__wrapper > button.active').classList.remove('active');\n }\n });\n }\n static get observedAttributes() {\n return [\"data-total\", \"data-page\", \"data-show\"];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n this.pagination = this.shadowRoot.querySelector('iam-pagination');\n switch (attrName) {\n case \"data-total\": {\n if (oldVal != newVal) {\n this.pagination.setAttribute('data-total', newVal);\n }\n break;\n }\n case \"data-show\": {\n if (oldVal != newVal) {\n this.pagination.setAttribute('data-show', newVal);\n }\n break;\n }\n case \"data-page\": {\n if (oldVal != newVal) {\n this.pagination.setAttribute('data-page', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamTable;\n"],"names":["isNumeric","str","zeroPad","num","places","ucfirst","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","addDataAttributes","table","colHeadings","row","index","cells","statuses","cell","cellIndex","heading","tempDiv","headingText","formatCell","getLargestLastColWidth","largestWidth","htmlStyles","lastColChild","responsiveWidth","createMobileButton","wrapper","preExpanded","addTableEventListeners","event","button","tableRow","createSearchDataList","form","searchInput","searchID","searchableColumns","inputWrapper","searchableTerms","columnHeading","td","term","addFilterEventListeners","pagination","savedTableBody","timer","formSubmit","paginate","element","id","input","card","clickEvent","paginationInput","loadAjaxTable","filterTable","populateDataQueries","formData","queryString","http","sortTable","filters","frm_elements","i","label","forms","fields","mimicField","mimicInput","parentForm","updateMimicInput","mimickedAlready","key","field","tbody","select","selectedOption","sortBy","order","format","orderArray","tableArr","rowIndex","dataRow","a","b","strTbody","filterFilters","searches","matched","page","showRows","column","filterCount","filter","filterValue","isMatched","filterTd","yesterday","today","mondayThisWeek","sundayThisWeek","checkDate","mondayLastWeek","sundayLastWeek","year","month","firstDayMonth","lastDayMonth","firstDayLastMonth","lastDayLastMonth","isSearched","search","searchTd","queryElement","query","numberOfMatchedRows","queries","selector","queryParts","addPaginationEventListeners","newPage","url","y","showInput","addExportEventListeners","exportAsCSV","csvData","rows","cols","csvRow","j","CSVFile","tempLink","makeTableFunctional","outputsize","rowHeight","filterInput","dataFilter","resolvePath","object","path","defaultValue","p","o","columns","ajaxURL","signal","response","schema","totalNumberSchema","currentPageSchema","totalNumber","currentPage","data","emptyMsg","table_row","col","cellOutput","table_cell","cellTemplate","arrValue","rowValue","cellTemplateValue","cellOutputValue","propertyValue","transformValue","error","iamTable","assetLocation","coreCSS","template","params","classList","tableModule.createSearchDataList","tableModule.addTableEventListeners","tableModule.addFilterEventListeners","tableModule.addPaginationEventListeners","tableModule.addExportEventListeners","tableModule.loadAjaxTable","uniqueID","actionbar","rowID","count","countChecked","colIndex","columnn","tableModule.makeTableFunctional","tableModule.filterTable","tableModule.populateDataQueries","attrName","oldVal","newVal"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v4.1.1-beta-7
2
+ * iamKey v5.0.0
3
3
  * Copyright 2022-2023 iamproperty
4
4
  */const d=function(t){const r=t.querySelectorAll(":scope > details");t.querySelectorAll(":scope > details > summary");let a=t.querySelector(":scope > .tabs__links");if(t.shadowRoot&&t.shadowRoot.querySelector(".tabs__links")&&(a=t.shadowRoot.querySelector(".tabs__links")),!a){a=document.createElement("div"),a.classList.add("tabs__links");let e=document.createElement("div");e.classList.add("tabs__links__wrapper"),e.prepend(a),t.prepend(e)}r.forEach((e,i)=>{let l=e.querySelector(":scope > summary"),o=l.classList.contains("disabled");l.classList.add("visually-hidden");let s=document.createElement("button");e.hasAttribute("id")&&(s=document.createElement("a"),s.setAttribute("href",`#${e.getAttribute("id")}`)),e.hasAttribute("open")&&s.setAttribute("aria-pressed",!0),s.innerHTML=`${l.innerText}`,s.classList.add("link"),s.setAttribute("data-index",i),s.setAttribute("tabindex","-1"),o&&s.classList.add("disabled"),a.appendChild(s)})},n=function(t){let r=t.querySelectorAll(":scope > details"),a=t.querySelectorAll(":scope > details > summary"),e=t.querySelectorAll(":scope .tabs__links > .link");t.shadowRoot&&(e=t.shadowRoot.querySelectorAll(".tabs__links > .link")),e.forEach(i=>{i.addEventListener("click",l=>{if(l.preventDefault(),i.classList.contains("disabled"))return!1;e.forEach(o=>{let s=o==i;o.setAttribute("aria-pressed",s)}),r.forEach((o,s)=>{let c=i.getAttribute("data-index")==s;c?o.setAttribute("open",c):o.removeAttribute("open")}),i.hasAttribute("href")&&history.pushState(void 0,void 0,i.getAttribute("href")),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:i.textContent})})}),a.forEach((i,l)=>{i.addEventListener("focus",o=>{e.forEach(s=>{s.classList.remove("focus")}),e[l].classList.add("focus")}),i.addEventListener("click",o=>{o.preventDefault(),e[l].click()})})},u=function(t){let r=t.querySelectorAll(":scope > details"),a=t.querySelectorAll(":scope > .tabs__links > button, .tabs__links > a");t.shadowRoot&&(a=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]")||(r[0].setAttribute("open",!0),a[0].setAttribute("aria-pressed",!0))},p=function(t){d(t),n(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 r=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",a=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${r}/css/core.min.css`,e=document.createElement("template");e.innerHTML=`
5
5
  <style>
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * iamKey v4.1.1-beta-7
2
+ * iamKey v5.0.0
3
3
  * Copyright 2022-2023 iamproperty
4
- */(function(b){typeof define=="function"&&define.amd?define(b):b()})(function(){"use strict";const b=t=>(t.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&t.classList.add("ie"),null),w=t=>{const a=function(e){const o=document.querySelector(`label[for="${e.replace("#","")}"]`),i=document.querySelector(e+" summary"),r=document.querySelector(`dialog${e}`);o instanceof HTMLElement?o.click():i instanceof HTMLElement?i.click():r instanceof HTMLElement&&r.showModal()};return location.hash&&a(location.hash),window.addEventListener("hashchange",function(){a(location.hash)},!1),addEventListener("popstate",e=>{if(e&&e.state.type&&e.state.type=="pagination"){let o=document.querySelector(`#${e.state.form}`),i=document.querySelector(`#${e.state.form} [data-pagination]`);i?i.value=e.state.page:o.innerHTML+=`<input name="page" type="hidden" data-pagination="true" value="${e.state.page}" />`,o.dispatchEvent(new Event("submit"))}}),document.addEventListener("submit",e=>{if(e&&e.target instanceof HTMLElement&&e.target.matches("form")){let o=e.target;o.querySelector(":invalid")&&(o.classList.add("was-validated"),e.preventDefault())}}),null};class v{constructor(a){document.body.classList.contains("youtubeLoaded")?a.addEventListener("click",function(e){for(var o=e.target;o&&o!=this;o=o.parentNode)if(o.matches("a")){e.preventDefault(),p(o);break}},!1):this.loadScripts(a,this.createEmbed)}loadScripts(a){return new Promise((e,o)=>{const i=new Image;i.onload=function(){var r=document.createElement("script");r.src="https://www.youtube.com/iframe_api";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(r,s),document.body.classList.add("youtubeLoaded"),e(!0),r.onload=()=>{a.addEventListener("click",function(l){console.log("click"),l&&l.target instanceof HTMLElement&&l.target.closest("a")&&(l.preventDefault(),p(l.target.closest("a")))},!1)}},i.onerror=function(){o(!1)},i.src="https://youtube.com/favicon.ico"})}}const p=function(t){typeof window.player<"u"&&typeof window.player.pauseVideo=="function"&&window.player.pauseVideo();var a=t.getAttribute("data-id"),e=t.getAttribute("id");if(typeof e>"u"||e==null){var o=String.fromCharCode(65+Math.floor(Math.random()*26));e=o+Date.now(),t.setAttribute("id",e)}function i(){window.player=new YT.Player(e,{height:"100%",width:"100%",videoId:a,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:r,onStateChange:l}})}i();function r(n){n.target.playVideo()}var s=!1;function l(n){if(n.data==YT.PlayerState.PLAYING&&!s){var c=document.getElementById(e);c.classList.add("player-ready"),s=!0}}},S=t=>(Array.from(t.querySelectorAll("dialog[open]")).forEach((a,e)=>{a.closest(".dialog__wrapper")||(a.removeAttribute("open"),a.showModal(),a.focus(),A(a))}),t.addEventListener("click",a=>{if(a.target.tagName=="IAM-ACTIONBAR")return!1;if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-modal]")){const i=a.target.closest("[data-modal]"),r=i.hasAttribute("data-modal")?i.getAttribute("data-modal"):i.getAttribute("data-filter"),s=document.querySelector(`dialog#${r}`);A(s),s.showModal(),s.focus();let l=s.offsetWidth;s.setAttribute("style",`max-width: ${l}px;`),Array.from(s.querySelectorAll("[data-duplicate]")).forEach((n,c)=>{const d=n.getAttribute("data-duplicate"),u=document.getElementById(d);if(n.checked!=u.checked){n.checked=u.checked;let f=new Event("change");n.dispatchEvent(f)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:r})}if(a&&a.target instanceof HTMLElement&&a.target.closest("button.dialog__close")){const i=a.target.closest("dialog[open]");a.preventDefault(),i.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((r,s)=>{r.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(a&&a.target instanceof HTMLElement&&a.target.closest('button[formmethod="dialog"]')){const i=a.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((r,s)=>{r.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(a&&a.target instanceof HTMLElement&&a.target.closest("dialog[open]")){let i=a.target.closest("dialog[open]");var e=window.getComputedStyle(i);if(e.display==="contents"&&(i=i.parentNode.closest("dialog[open]")),!i.querySelector(":scope > .mh-lg > form:last-child > button:last-child, :scope > .mh-lg > button:last-child")||i.classList.contains("dialog--multi")){const r=i.getBoundingClientRect();(a.clientX<r.left||a.clientX>r.right||a.clientY<r.top||a.clientY>r.bottom)&&(a.target.closest('input[type="radio"]')||i.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")}))}}if(a&&a.target instanceof HTMLElement&&a.target.closest(".dialog__wrapper > button")){a.stopPropagation();let i=a.target.closest(".dialog__wrapper > button"),r=a.target.closest(".dialog__wrapper > button").parentNode,s="openPopover",l=r.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=l&&document.querySelector("*:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,f)=>{u.classList.remove("active")}),l.hasAttribute("open"))l.close(),s="closePopover",l.removeAttribute("style"),i.classList.remove("active");else{l.show(),i.classList.add("active");var o=i.getBoundingClientRect();let u=o.top,f=o.left;if(i.closest("iam-table")){let m=i.closest("iam-table").parentNode.getBoundingClientRect();u-=m.top,f-=m.left}l.classList.contains("dialog--fix")&&l.setAttribute("style",`position:fixed;top: ${u}px; left: ${f}px; margin: 3rem 0 0 0;`)}let n=l.getBoundingClientRect(),c=n.bottom-window.scrollY,d=window.innerHeight-window.scrollY;if(c>d){let u=l.hasAttribute("style")?l.getAttribute("style")+" ":"";l.setAttribute("style",u+"transform: translate(0, calc(-100% - 4rem))"),n=l.getBoundingClientRect(),n.top-window.scrollY<100&&l.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:s,id:i.textContent})}a&&a.target instanceof HTMLElement&&!a.target.closest("dialog[open]")&&!a.target.closest(".dialog__wrapper > button")&&(document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]")&&document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper:not([data-keep-open]) > button")).forEach((i,r)=>{i.classList.remove("active")}))}),null),A=t=>{t.querySelector(":scope > .mh-lg > form:last-child > button:last-child, :scope > .mh-lg > button:last-child")&&!t.classList.contains("dialog--multi")&&t.addEventListener("cancel",e=>{e.preventDefault()});let a=t.querySelector(".youtube-embed a");if(a&&p(a),t.classList.contains("dialog--multi")&&!t.querySelector(":scope > .steps")&&q(t),!t.querySelector(":scope > .mh-lg")&&!t.classList.contains("dialog--multi")){t.innerHTML=`<div class="mh-lg">${t.innerHTML}</div>`;let e=t.querySelector(".mh-lg"),o=t.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(o){let i=o.previousSibling;e.before(o),i&&o.before(i)}}t.querySelector(":scope > button:first-child")||t.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')},q=t=>{let a="",e=Array.from(t.querySelectorAll("fieldset[data-title]")),o=t.querySelector("form");e.forEach((s,l)=>{a+=`<button data-title="${s.getAttribute("data-title")}" type="button" class="${l==0?"active":""}" tabindex="-1">${s.getAttribute("data-title")}</button>`;const n=document.createElement("div");if(n.classList.add("btn--wrapper"),s.appendChild(n),l!=0&&(n.innerHTML+=`<button data-title="${e[l-1].getAttribute("data-title")}" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>`),l!=e.length-1&&(n.innerHTML+=`<button data-title="${e[l+1].getAttribute("data-title")}" class="btn btn-primary mb-0" data-next type="button">Next</button>`),l==e.length-1)if(o&&o.querySelector(':scope > button[type="submit"]')){let c=o.querySelector(':scope > button[type="submit"]');c.classList.add("mb-0"),n.insertAdjacentElement("beforeend",c)}else n.innerHTML+=`<button data-title="${e[l].getAttribute("data-title")}" class="btn btn-primary mb-0" data-next type="submit">Submit</button>`}),t.insertAdjacentHTML("afterbegin",`<div class="steps bg-primary">${a}</div>`);let i=Array.from(t.querySelectorAll("fieldset.was-validated"));for(let s=0;s<i.length;s++){let l=i[s],n=l.getAttribute("data-title");if(l.querySelector(".is-invalid")){Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((c,d)=>{c.classList.add("active")});break}else Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((c,d)=>{c.classList.add("valid")})}t.addEventListener("invalid",function(){return function(s){s.preventDefault()}}(),!0);function r(s){const l=t.querySelector("fieldset.active")?t.querySelector("fieldset.active"):t.querySelector("fieldset[data-title]"),n=l.getAttribute("data-title");let c=!0;if(l.classList.add("was-validated"),Array.from(l.querySelectorAll("input")).forEach((f,m)=>{f.checkValidity()||(c=!1)}),c?Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((f,m)=>{f.classList.add("valid")}):Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((f,m)=>{f.classList.remove("valid")}),c||!s.hasAttribute("data-next")){const f=t.querySelector(`fieldset[data-title="${s.getAttribute("data-title")}"]`),m=t.querySelector(`.steps button[data-title="${s.getAttribute("data-title")}"]`);Array.from(t.querySelectorAll("button")).forEach((g,O)=>{g.classList.remove("active")}),Array.from(t.querySelectorAll("fieldset")).forEach((g,O)=>{g.classList.remove("active")}),m.classList.add("active"),f.classList.add("active")}let d=Array.from(t.querySelectorAll("fieldset")).length,u=Array.from(t.querySelectorAll("fieldset.valid")).length;t.style.setProperty("--progress",`${u/(d-1)*100}%`)}t.addEventListener("keydown",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest("button")){const l=s.target.closest("button");s.keyCode==13&&l.getAttribute("type")!="submit"&&(s.preventDefault(),r(l))}s&&s.target instanceof HTMLElement&&s.target.closest("input")&&(s.target.closest("input").classList.remove("is-invalid"),s.keyCode==13&&s.preventDefault())}),t.addEventListener("click",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest('button[type="submit"]'))s.target.closest("form").classList.add("was-validated");else if(s&&s.target instanceof HTMLElement&&s.target.closest("button[data-title]")){const l=s.target.closest("button[data-title]");r(l)}return null})};function E(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",t=>{const a=t.target.closest("[open] summary");if(a)window.dataLayer.push({event:"closeDetails",detailsTitle:a.textContent||""});else{const e=t.target.closest("summary"),o=t.target.closest("a"),i=t.target.closest("button");e&&window.dataLayer.push({event:"openDetails",detailsTitle:e.textContent||""}),o&&window.dataLayer.push({event:"linkClicked",linkText:o.hasAttribute("title")?o.getAttribute("title")||"":o.textContent||"",class:o.hasAttribute("class")&&o.getAttribute("class")||"",href:o.getAttribute("href")||""}),i&&window.dataLayer.push({event:"buttonClicked",buttonText:i.textContent||"",class:i.hasAttribute("class")&&i.getAttribute("class")||""})}})}const x=t=>{document.addEventListener("load",function(){Array.from(document.querySelectorAll("input")).forEach((a,e)=>{a.parentElement,T(a)})}),t.addEventListener("input",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("input,textarea,select")){const e=a.target.closest("input,textarea,select");e.parentElement,e.hasAttribute("type")&&e.getAttribute("type")=="color"&&(e.nextElementSibling.value=e.value),e.hasAttribute("maxlength")&&e.nextElementSibling&&e.nextElementSibling.setAttribute("data-count",e.value.length)}}),t.addEventListener("change",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("select")){const e=a.target.closest("select");if(e.hasAttribute("data-change-type")&&e.hasAttribute("data-input")){const o=document.getElementById(e.getAttribute("data-input")),i=e.value;L(o,i)}}if(a&&a.target instanceof HTMLElement&&a.target.closest('dialog [type="radio"]')){const e=a.target.closest("dialog");a.target.closest('dialog [type="radio"]'),Array.from(e.querySelectorAll('[type="radio"][autofocus]')).forEach((o,i)=>{o.removeAttribute("autofocus")}),Array.from(e.querySelectorAll('[type="radio"]:checked')).forEach((o,i)=>{o.setAttribute("autofocus",!0)})}}),t.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-change-type][data-input]:not(select)")){const e=a.target.closest("[data-change-type]"),o=document.getElementById(e.getAttribute("data-input")),i=e.getAttribute("data-change-type");if(e.setAttribute("data-change-type",o.getAttribute("type")),L(o,i),e.hasAttribute("data-alt-class")){const r=e.getAttribute("data-alt-class");e.setAttribute("data-alt-class",e.getAttribute("class")),e.setAttribute("class",r)}}})},T=t=>{let a=t.parentElement,e=t.getAttribute("maxlength");a.style.setProperty("--maxlength",e);let o=t.nextElementSibling;(!o||o&&o.classList.contains("invalid-feedback"))&&(o=document.createElement("span"),a.insertBefore(o,t.nextSibling)),o.setAttribute("data-count",t.value.length)},L=(t,a)=>{t.setAttribute("type",a)},_=t=>{Array.from(t.querySelectorAll("details")).forEach((a,e)=>{a.addEventListener("mouseenter",function(o){window.matchMedia("(min-width: 62em)").matches&&a.setAttribute("open","true")},!1),a.addEventListener("mouseleave",function(o){window.matchMedia("(min-width: 62em)").matches&&a.removeAttribute("open")},!1)}),"IntersectionObserver"in window&&new IntersectionObserver(([e])=>e.target.classList.toggle("is-stuck",e.intersectionRatio<1),{threshold:[1]}).observe(t)};function M(t){var a;const e=t.querySelector(".testimonial__images"),o=e.querySelectorAll("img").length;if(o==1)return!1;t.classList.add("testimonial--multi");const i=function(r){const s=t.querySelector(".btn-next"),l=t.querySelector(".btn-prev");s.setAttribute("data-go",r+1),l.setAttribute("data-go",r-1),s.removeAttribute("disabled"),l.removeAttribute("disabled"),r==1?l.setAttribute("disabled",!0):r==o&&s.setAttribute("disabled",!0)};e.addEventListener("scroll",function(r){clearTimeout(a),a=setTimeout(function(){let s=e.scrollWidth,l=e.scrollHeight,n=e.scrollLeft,c=e.scrollTop,d=Math.round(n/s*o)+1;n==0&&c!=0&&(d=Math.round(c/l*o)+1),t.setAttribute("data-show",d),i(d)},300)},!1),t.addEventListener("click",function(r){for(var s=r.target;s&&s!=this;s=s.parentNode)if(s.matches("[data-go]")){let l=parseInt(s.getAttribute("data-go")),n=0,c=0,d=e.scrollWidth,u=e.scrollHeight;d>u?c=Math.floor(d*((l-1)/o)):n=Math.floor(u*((l-1)/o)),e.scroll({top:n,left:c,behavior:"smooth"});break}},!1)}function k(t){var a;let e=t.querySelector(".carousel__inner"),o=t.querySelectorAll(".carousel__item").length;t.getAttribute("data-cols");let i=t.getAttribute("data-sm-cols"),r=t.getAttribute("data-md-cols");t.querySelector(".carousel__controls a").classList.add("active"),e.addEventListener("scroll",function(s){clearTimeout(a),a=setTimeout(function(){let l=e.clientWidth,n=e.scrollWidth,c=e.scrollLeft,d=Math.round(c/n*o)+1,u=t.querySelector(".carousel__item:last-child").offsetLeft;Array.from(t.querySelectorAll(".carousel__controls a")).forEach((f,m)=>{f.classList.remove("active")}),t.querySelector(".control-"+d).classList.add("active"),d==1?t.querySelector(".btn-prev").setAttribute("disabled","disabled"):t.querySelector(".btn-prev").removeAttribute("disabled"),e.scrollLeft+l>u?t.querySelector(".btn-next").setAttribute("disabled","disabled"):t.querySelector(".btn-next").removeAttribute("disabled")},100)},!1),t.addEventListener("click",function(s){for(var l=s.target;l&&l!=this;l=l.parentNode)if(l.matches(".carousel__controls a")){s.preventDefault(),Array.from(t.querySelectorAll(".carousel__controls a")).forEach((c,d)=>{c.classList.remove("active")}),l.classList.add("active");const n=document.querySelector(l.getAttribute("href"));e.scroll({top:0,left:n.offsetLeft,behavior:"smooth"});break}},!1),t.addEventListener("click",function(s){for(var l=s.target;l&&l!=this;l=l.parentNode)if(l.matches(".btn-next, .btn-prev")){s.preventDefault();let n=l.classList.contains("btn-prev")?e.scrollLeft-e.clientWidth:e.scrollLeft+e.clientWidth;e.scroll({top:0,left:n,behavior:"smooth"});break}},!1),o==1&&t.classList.add("hide-btns"),i>=o&&t.classList.add("hide-sm-btns"),r>=o&&t.classList.add("hide-md-btns")}function $(t){t.addEventListener("change",function(a){var e=parseInt(t.querySelector("[data-min] select,[data-min] input").value),o=parseInt(t.querySelector("[data-max] select,[data-max] input").value);Array.from(t.querySelectorAll("[data-min] input")).forEach((i,r)=>{i.setAttribute("max",o)}),Array.from(t.querySelectorAll("[data-max] input")).forEach((i,r)=>{i.setAttribute("min",e)}),Array.from(t.querySelectorAll("[data-min] select option")).forEach((i,r)=>{parseInt(i.getAttribute("value"))>o?i.classList.add("d-none"):i.classList.remove("d-none")}),Array.from(t.querySelectorAll("[data-max] select option")).forEach((i,r)=>{parseInt(i.getAttribute("value"))<e?i.classList.add("d-none"):i.classList.remove("d-none")})},!1)}function C(t){t.addEventListener("change",function(a){if(t.matches("[data-value-if]")){const e=t.getAttribute("data-redirect"),o=t.getAttribute("data-value-if");t.value==o&&(document.location.href=e)}else typeof t.value<"u"&&(document.location.href=t.value)},!1)}function H(t){const e=t.querySelector(".row").cloneNode(!0),o=t.querySelector("[data-add]");t.addEventListener("click",function(i){for(var r=i.target;r&&r!=this;r=r.parentNode){if(r.matches("[data-add]")){const s=e.cloneNode(!0);t.insertBefore(s,r),o.matches("[data-maxfiles]")&&Array.from(t.querySelectorAll(":scope > .row")).length>=o.dataset.maxfiles&&o.setAttribute("disabled","disabled");break}if(r.matches("[data-delete]")){r.closest(".row").remove(),o.matches("[data-maxfiles]")&&Array.from(t.querySelectorAll(":scope > .row")).length<o.dataset.maxfiles&&o.removeAttribute("disabled");break}}},!1)}function I(t){Array.from(t.querySelectorAll("[data-input-range]")).forEach((a,e)=>{$(a)}),Array.from(t.querySelectorAll("[data-redirect]")).forEach((a,e)=>{C(a)}),Array.from(t.querySelectorAll(".multiple-file-uploads")).forEach((a,e)=>{H(a)}),t.addEventListener("change",function(a){for(var e=a.target;e&&e!=this;e=e.parentNode)if(e.matches('[type="file"][data-filesize]')&&e.files&&e.files[0]){const o=e.dataset.filesize;e.files[0].size>o&&(e.value="",alert("File too large"));break}},!1),t.addEventListener("change",function(a){Array.from(t.querySelectorAll("select[data-activeif][data-equals],input[data-activeif][data-equals]")).forEach((e,o)=>{let i=e.closest("[data-group]")?e.closest("[data-group]"):t,r=e.dataset.activeif,s=e.dataset.equals;i.querySelector(`select[data-id="${r}"],input[data-id="${r}"]`).value==s?e.removeAttribute("disabled"):(e.setAttribute("disabled","disabled"),e.value="")}),Array.from(t.querySelectorAll(".form-control__wrapper[data-displayif][data-equals]")).forEach((e,o)=>{let i=e.closest("[data-group]")?e.closest("[data-group]"):t,r=e.dataset.activeif,s=e.dataset.equals;i.querySelector(`select[data-id="${r}"],input[data-id="${r}"]`).value==s?e.classList.remove("d-none"):e.classList.add("d-none")})},!1)}function D(t){if(t.hasAttribute("data-type")&&t.getAttribute("data-type")=="toast"){let e=document.querySelector(".notification__holder");e||(e=document.createElement("div"),e.classList.add("notification__holder"),e.classList.add("container"),document.querySelector("body").appendChild(e)),t.closest(".notification__holder")||e.appendChild(t)}if(t.setAttribute("role","alert"),t.addEventListener("click",function(e){event&&event.target instanceof HTMLElement&&event.target.closest("[data-dismiss-button]")&&(e.preventDefault(),y(t))},!1),t.hasAttribute("data-timeout")){let e=t.getAttribute("data-timeout");var a=new B(function(){y(t)},e);t.addEventListener("mouseenter",o=>{a.pause()}),t.addEventListener("mouseleave",o=>{a.resume()})}}function B(t,a){var e,o,i=a;this.pause=function(){window.clearTimeout(e),i-=new Date-o},this.resume=function(){o=new Date,window.clearTimeout(e),e=window.setTimeout(t,i)},this.resume()}const y=function(t){t.classList.add("d-none")};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Notification"});class N extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const a=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${a}/css/core.min.css`,o=`@import "${a}/css/components/notification.css";`,i=this.querySelectorAll("a,button");Array.from(i).forEach((s,l)=>{s.setAttribute("slot","btns"),s.classList.add("link")}),(i.length||this.hasAttribute("data-dismiss"))&&this.classList.add("notification--dismissable");const r=document.createElement("template");r.innerHTML=`
4
+ */(function(b){typeof define=="function"&&define.amd?define(b):b()})(function(){"use strict";const b=t=>(t.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&t.classList.add("ie"),null),w=t=>{const a=function(e){const o=document.querySelector(`label[for="${e.replace("#","")}"]`),i=document.querySelector(e+" summary"),l=document.querySelector(`dialog${e}`);o instanceof HTMLElement?o.click():i instanceof HTMLElement?i.click():l instanceof HTMLElement&&l.showModal()};return location.hash&&a(location.hash),window.addEventListener("hashchange",function(){a(location.hash)},!1),addEventListener("popstate",e=>{if(e&&e.state.type&&e.state.type=="pagination"){let o=document.querySelector(`#${e.state.form}`),i=document.querySelector(`#${e.state.form} [data-pagination]`);i?i.value=e.state.page:o.innerHTML+=`<input name="page" type="hidden" data-pagination="true" value="${e.state.page}" />`,o.dispatchEvent(new Event("submit"))}}),document.addEventListener("submit",e=>{if(e&&e.target instanceof HTMLElement&&e.target.matches("form")){let o=e.target;o.querySelector(":invalid")&&(o.classList.add("was-validated"),e.preventDefault())}}),null};class v{constructor(a){document.body.classList.contains("youtubeLoaded")?a.addEventListener("click",function(e){for(var o=e.target;o&&o!=this;o=o.parentNode)if(o.matches("a")){e.preventDefault(),p(o);break}},!1):this.loadScripts(a,this.createEmbed)}loadScripts(a){return new Promise((e,o)=>{const i=new Image;i.onload=function(){var l=document.createElement("script");l.src="https://www.youtube.com/iframe_api";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(l,s),document.body.classList.add("youtubeLoaded"),e(!0),l.onload=()=>{a.addEventListener("click",function(r){console.log("click"),r&&r.target instanceof HTMLElement&&r.target.closest("a")&&(r.preventDefault(),p(r.target.closest("a")))},!1)}},i.onerror=function(){o(!1)},i.src="https://youtube.com/favicon.ico"})}}const p=function(t){typeof window.player<"u"&&typeof window.player.pauseVideo=="function"&&window.player.pauseVideo();var a=t.getAttribute("data-id"),e=t.getAttribute("id");if(typeof e>"u"||e==null){var o=String.fromCharCode(65+Math.floor(Math.random()*26));e=o+Date.now(),t.setAttribute("id",e)}function i(){window.player=new YT.Player(e,{height:"100%",width:"100%",videoId:a,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:l,onStateChange:r}})}i();function l(n){n.target.playVideo()}var s=!1;function r(n){if(n.data==YT.PlayerState.PLAYING&&!s){var c=document.getElementById(e);c.classList.add("player-ready"),s=!0}}},S=t=>(Array.from(t.querySelectorAll("dialog[open]")).forEach((a,e)=>{a.closest(".dialog__wrapper")||(a.removeAttribute("open"),a.showModal(),a.focus(),A(a))}),t.addEventListener("click",a=>{if(a.target.tagName=="IAM-ACTIONBAR")return!1;if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-modal]")){const i=a.target.closest("[data-modal]"),l=i.hasAttribute("data-modal")?i.getAttribute("data-modal"):i.getAttribute("data-filter"),s=document.querySelector(`dialog#${l}`);A(s),s.showModal(),s.focus();let r=s.offsetWidth;s.setAttribute("style",`max-width: ${r}px;`),Array.from(s.querySelectorAll("[data-duplicate]")).forEach((n,c)=>{const d=n.getAttribute("data-duplicate"),u=document.getElementById(d);if(n.checked!=u.checked){n.checked=u.checked;let f=new Event("change");n.dispatchEvent(f)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:l})}if(a&&a.target instanceof HTMLElement&&a.target.closest("button.dialog__close")){const i=a.target.closest("dialog[open]");a.preventDefault(),i.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((l,s)=>{l.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(a&&a.target instanceof HTMLElement&&a.target.closest('button[formmethod="dialog"]')){const i=a.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((l,s)=>{l.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(a&&a.target instanceof HTMLElement&&a.target.closest("dialog[open]")){let i=a.target.closest("dialog[open]");var e=window.getComputedStyle(i);if(e.display==="contents"&&(i=i.parentNode.closest("dialog[open]")),!i.querySelector(":scope > .mh-lg > form:last-child > button:last-child, :scope > .mh-lg > button:last-child")||i.classList.contains("dialog--multi")){const l=i.getBoundingClientRect();(a.clientX<l.left||a.clientX>l.right||a.clientY<l.top||a.clientY>l.bottom)&&(a.target.closest('input[type="radio"]')||i.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")}))}}if(a&&a.target instanceof HTMLElement&&a.target.closest(".dialog__wrapper > button")){a.stopPropagation();let i=a.target.closest(".dialog__wrapper > button"),l=a.target.closest(".dialog__wrapper > button").parentNode,s="openPopover",r=l.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=r&&document.querySelector("*:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,f)=>{u.removeAttribute("aria-expanded")}),r.hasAttribute("open"))r.close(),s="closePopover",r.removeAttribute("style"),i.removeAttribute("aria-expanded");else{r.show(),i.setAttribute("aria-expanded",!0);var o=i.getBoundingClientRect();let u=o.top,f=o.left;if(i.closest("iam-table")){let m=i.closest("iam-table").parentNode.getBoundingClientRect();u-=m.top,f-=m.left}r.classList.contains("dialog--fix")&&r.setAttribute("style",`position:fixed;top: ${u}px; left: ${f}px; margin: 3rem 0 0 0;`)}let n=r.getBoundingClientRect(),c=n.bottom-window.scrollY,d=window.innerHeight-window.scrollY;if(c>d){let u=r.hasAttribute("style")?r.getAttribute("style")+" ":"";r.setAttribute("style",u+"transform: translate(0, calc(-100% - 4rem))"),n=r.getBoundingClientRect(),n.top-window.scrollY<100&&r.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:s,id:i.textContent})}a&&a.target instanceof HTMLElement&&!a.target.closest("dialog[open]")&&!a.target.closest(".dialog__wrapper > button")&&(document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]")&&document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper:not([data-keep-open]) > button")).forEach((i,l)=>{i.removeAttribute("aria-expanded")}))}),null),A=t=>{t.querySelector(":scope > .mh-lg > form:last-child > button:last-child, :scope > .mh-lg > button:last-child")&&!t.classList.contains("dialog--multi")&&t.addEventListener("cancel",e=>{e.preventDefault()});let a=t.querySelector(".youtube-embed a");if(a&&p(a),t.classList.contains("dialog--multi")&&!t.querySelector(":scope > .steps")&&q(t),!t.querySelector(":scope > .mh-lg")&&!t.classList.contains("dialog--multi")){t.innerHTML=`<div class="mh-lg">${t.innerHTML}</div>`;let e=t.querySelector(".mh-lg"),o=t.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(o){let i=o.previousSibling;e.before(o),i&&o.before(i)}}t.querySelector(":scope > button:first-child")||t.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')},q=t=>{let a="",e=Array.from(t.querySelectorAll("fieldset[data-title]")),o=t.querySelector("form");e.forEach((s,r)=>{a+=`<button data-title="${s.getAttribute("data-title")}" type="button" class="${r==0?"active":""}" tabindex="-1">${s.getAttribute("data-title")}</button>`;const n=document.createElement("div");if(n.classList.add("btn--wrapper"),s.appendChild(n),r!=0&&(n.innerHTML+=`<button data-title="${e[r-1].getAttribute("data-title")}" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>`),r!=e.length-1&&(n.innerHTML+=`<button data-title="${e[r+1].getAttribute("data-title")}" class="btn btn-primary mb-0" data-next type="button">Next</button>`),r==e.length-1)if(o&&o.querySelector(':scope > button[type="submit"]')){let c=o.querySelector(':scope > button[type="submit"]');c.classList.add("mb-0"),n.insertAdjacentElement("beforeend",c)}else n.innerHTML+=`<button data-title="${e[r].getAttribute("data-title")}" class="btn btn-primary mb-0" data-next type="submit">Submit</button>`}),t.insertAdjacentHTML("afterbegin",`<div class="steps bg-primary">${a}</div>`);let i=Array.from(t.querySelectorAll("fieldset.was-validated"));for(let s=0;s<i.length;s++){let r=i[s],n=r.getAttribute("data-title");if(r.querySelector(".is-invalid")){Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((c,d)=>{c.classList.add("active")});break}else Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((c,d)=>{c.classList.add("valid")})}t.addEventListener("invalid",function(){return function(s){s.preventDefault()}}(),!0);function l(s){const r=t.querySelector("fieldset.active")?t.querySelector("fieldset.active"):t.querySelector("fieldset[data-title]"),n=r.getAttribute("data-title");let c=!0;if(r.classList.add("was-validated"),Array.from(r.querySelectorAll("input")).forEach((f,m)=>{f.checkValidity()||(c=!1)}),c?Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((f,m)=>{f.classList.add("valid")}):Array.from(t.querySelectorAll(`[data-title="${n}"]`)).forEach((f,m)=>{f.classList.remove("valid")}),c||!s.hasAttribute("data-next")){const f=t.querySelector(`fieldset[data-title="${s.getAttribute("data-title")}"]`),m=t.querySelector(`.steps button[data-title="${s.getAttribute("data-title")}"]`);Array.from(t.querySelectorAll("button")).forEach((g,O)=>{g.classList.remove("active")}),Array.from(t.querySelectorAll("fieldset")).forEach((g,O)=>{g.classList.remove("active")}),m.classList.add("active"),f.classList.add("active")}let d=Array.from(t.querySelectorAll("fieldset")).length,u=Array.from(t.querySelectorAll("fieldset.valid")).length;t.style.setProperty("--progress",`${u/(d-1)*100}%`)}t.addEventListener("keydown",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest("button")){const r=s.target.closest("button");s.keyCode==13&&r.getAttribute("type")!="submit"&&(s.preventDefault(),l(r))}s&&s.target instanceof HTMLElement&&s.target.closest("input")&&(s.target.closest("input").classList.remove("is-invalid"),s.keyCode==13&&s.preventDefault())}),t.addEventListener("click",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest('button[type="submit"]'))s.target.closest("form").classList.add("was-validated");else if(s&&s.target instanceof HTMLElement&&s.target.closest("button[data-title]")){const r=s.target.closest("button[data-title]");l(r)}return null})};function E(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",t=>{const a=t.target.closest("[open] summary");if(a)window.dataLayer.push({event:"closeDetails",detailsTitle:a.textContent||""});else{const e=t.target.closest("summary"),o=t.target.closest("a"),i=t.target.closest("button");e&&window.dataLayer.push({event:"openDetails",detailsTitle:e.textContent||""}),o&&window.dataLayer.push({event:"linkClicked",linkText:o.hasAttribute("title")?o.getAttribute("title")||"":o.textContent||"",class:o.hasAttribute("class")&&o.getAttribute("class")||"",href:o.getAttribute("href")||""}),i&&window.dataLayer.push({event:"buttonClicked",buttonText:i.textContent||"",class:i.hasAttribute("class")&&i.getAttribute("class")||""})}})}const x=t=>{document.addEventListener("load",function(){Array.from(document.querySelectorAll("input")).forEach((a,e)=>{a.parentElement,T(a)})}),t.addEventListener("input",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("input,textarea,select")){const e=a.target.closest("input,textarea,select");e.parentElement,e.hasAttribute("type")&&e.getAttribute("type")=="color"&&(e.nextElementSibling.value=e.value),e.hasAttribute("maxlength")&&e.nextElementSibling&&e.nextElementSibling.setAttribute("data-count",e.value.length)}}),t.addEventListener("change",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("select")){const e=a.target.closest("select");if(e.hasAttribute("data-change-type")&&e.hasAttribute("data-input")){const o=document.getElementById(e.getAttribute("data-input")),i=e.value;L(o,i)}}if(a&&a.target instanceof HTMLElement&&a.target.closest('dialog [type="radio"]')){const e=a.target.closest("dialog");a.target.closest('dialog [type="radio"]'),Array.from(e.querySelectorAll('[type="radio"][autofocus]')).forEach((o,i)=>{o.removeAttribute("autofocus")}),Array.from(e.querySelectorAll('[type="radio"]:checked')).forEach((o,i)=>{o.setAttribute("autofocus",!0)})}}),t.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-change-type][data-input]:not(select)")){const e=a.target.closest("[data-change-type]"),o=document.getElementById(e.getAttribute("data-input")),i=e.getAttribute("data-change-type");if(e.setAttribute("data-change-type",o.getAttribute("type")),L(o,i),e.hasAttribute("data-alt-class")){const l=e.getAttribute("data-alt-class");e.setAttribute("data-alt-class",e.getAttribute("class")),e.setAttribute("class",l)}}})},T=t=>{let a=t.parentElement,e=t.getAttribute("maxlength");a.style.setProperty("--maxlength",e);let o=t.nextElementSibling;(!o||o&&o.classList.contains("invalid-feedback"))&&(o=document.createElement("span"),a.insertBefore(o,t.nextSibling)),o.setAttribute("data-count",t.value.length)},L=(t,a)=>{t.setAttribute("type",a)},_=t=>{Array.from(t.querySelectorAll("details")).forEach((a,e)=>{a.addEventListener("mouseenter",function(o){window.matchMedia("(min-width: 62em)").matches&&a.setAttribute("open","true")},!1),a.addEventListener("mouseleave",function(o){window.matchMedia("(min-width: 62em)").matches&&a.removeAttribute("open")},!1)}),"IntersectionObserver"in window&&new IntersectionObserver(([e])=>e.target.classList.toggle("is-stuck",e.intersectionRatio<1),{threshold:[1]}).observe(t)};function M(t){var a;const e=t.querySelector(".testimonial__images"),o=e.querySelectorAll("img").length;if(o==1)return!1;t.classList.add("testimonial--multi");const i=function(l){const s=t.querySelector(".btn-next"),r=t.querySelector(".btn-prev");s.setAttribute("data-go",l+1),r.setAttribute("data-go",l-1),s.removeAttribute("disabled"),r.removeAttribute("disabled"),l==1?r.setAttribute("disabled",!0):l==o&&s.setAttribute("disabled",!0)};e.addEventListener("scroll",function(l){clearTimeout(a),a=setTimeout(function(){let s=e.scrollWidth,r=e.scrollHeight,n=e.scrollLeft,c=e.scrollTop,d=Math.round(n/s*o)+1;n==0&&c!=0&&(d=Math.round(c/r*o)+1),t.setAttribute("data-show",d),i(d)},300)},!1),t.addEventListener("click",function(l){for(var s=l.target;s&&s!=this;s=s.parentNode)if(s.matches("[data-go]")){let r=parseInt(s.getAttribute("data-go")),n=0,c=0,d=e.scrollWidth,u=e.scrollHeight;d>u?c=Math.floor(d*((r-1)/o)):n=Math.floor(u*((r-1)/o)),e.scroll({top:n,left:c,behavior:"smooth"});break}},!1)}function k(t){var a;let e=t.querySelector(".carousel__inner"),o=t.querySelectorAll(".carousel__item").length;t.getAttribute("data-cols");let i=t.getAttribute("data-sm-cols"),l=t.getAttribute("data-md-cols");t.querySelector(".carousel__controls a").setAttribute("aria-current",!0),e.addEventListener("scroll",function(s){clearTimeout(a),a=setTimeout(function(){let r=e.clientWidth,n=e.scrollWidth,c=e.scrollLeft,d=Math.round(c/n*o)+1,u=t.querySelector(".carousel__item:last-child").offsetLeft;Array.from(t.querySelectorAll(".carousel__controls a")).forEach((f,m)=>{f.removeAttribute("aria-current")}),t.querySelector(".control-"+d).setAttribute("aria-current",!0),d==1?t.querySelector(".btn-prev").setAttribute("disabled","disabled"):t.querySelector(".btn-prev").removeAttribute("disabled"),e.scrollLeft+r>u?t.querySelector(".btn-next").setAttribute("disabled","disabled"):t.querySelector(".btn-next").removeAttribute("disabled")},100)},!1),t.addEventListener("click",function(s){for(var r=s.target;r&&r!=this;r=r.parentNode)if(r.matches(".carousel__controls a")){s.preventDefault(),Array.from(t.querySelectorAll(".carousel__controls a")).forEach((c,d)=>{c.removeAttribute("aria-current")}),r.setAttribute("aria-current",!0);const n=document.querySelector(r.getAttribute("href"));e.scroll({top:0,left:n.offsetLeft,behavior:"smooth"});break}},!1),t.addEventListener("click",function(s){for(var r=s.target;r&&r!=this;r=r.parentNode)if(r.matches(".btn-next, .btn-prev")){s.preventDefault();let n=r.classList.contains("btn-prev")?e.scrollLeft-e.clientWidth:e.scrollLeft+e.clientWidth;e.scroll({top:0,left:n,behavior:"smooth"});break}},!1),o==1&&t.classList.add("hide-btns"),i>=o&&t.classList.add("hide-sm-btns"),l>=o&&t.classList.add("hide-md-btns")}function $(t){t.addEventListener("change",function(a){var e=parseInt(t.querySelector("[data-min] select,[data-min] input").value),o=parseInt(t.querySelector("[data-max] select,[data-max] input").value);Array.from(t.querySelectorAll("[data-min] input")).forEach((i,l)=>{i.setAttribute("max",o)}),Array.from(t.querySelectorAll("[data-max] input")).forEach((i,l)=>{i.setAttribute("min",e)}),Array.from(t.querySelectorAll("[data-min] select option")).forEach((i,l)=>{parseInt(i.getAttribute("value"))>o?i.classList.add("d-none"):i.classList.remove("d-none")}),Array.from(t.querySelectorAll("[data-max] select option")).forEach((i,l)=>{parseInt(i.getAttribute("value"))<e?i.classList.add("d-none"):i.classList.remove("d-none")})},!1)}function C(t){t.addEventListener("change",function(a){if(t.matches("[data-value-if]")){const e=t.getAttribute("data-redirect"),o=t.getAttribute("data-value-if");t.value==o&&(document.location.href=e)}else typeof t.value<"u"&&(document.location.href=t.value)},!1)}function H(t){const e=t.querySelector(".row").cloneNode(!0),o=t.querySelector("[data-add]");t.addEventListener("click",function(i){for(var l=i.target;l&&l!=this;l=l.parentNode){if(l.matches("[data-add]")){const s=e.cloneNode(!0);t.insertBefore(s,l),o.matches("[data-maxfiles]")&&Array.from(t.querySelectorAll(":scope > .row")).length>=o.dataset.maxfiles&&o.setAttribute("disabled","disabled");break}if(l.matches("[data-delete]")){l.closest(".row").remove(),o.matches("[data-maxfiles]")&&Array.from(t.querySelectorAll(":scope > .row")).length<o.dataset.maxfiles&&o.removeAttribute("disabled");break}}},!1)}function I(t){Array.from(t.querySelectorAll("[data-input-range]")).forEach((a,e)=>{$(a)}),Array.from(t.querySelectorAll("[data-redirect]")).forEach((a,e)=>{C(a)}),Array.from(t.querySelectorAll(".multiple-file-uploads")).forEach((a,e)=>{H(a)}),t.addEventListener("change",function(a){for(var e=a.target;e&&e!=this;e=e.parentNode)if(e.matches('[type="file"][data-filesize]')&&e.files&&e.files[0]){const o=e.dataset.filesize;e.files[0].size>o&&(e.value="",alert("File too large"));break}},!1),t.addEventListener("change",function(a){Array.from(t.querySelectorAll("select[data-activeif][data-equals],input[data-activeif][data-equals]")).forEach((e,o)=>{let i=e.closest("[data-group]")?e.closest("[data-group]"):t,l=e.dataset.activeif,s=e.dataset.equals;i.querySelector(`select[data-id="${l}"],input[data-id="${l}"]`).value==s?e.removeAttribute("disabled"):(e.setAttribute("disabled","disabled"),e.value="")}),Array.from(t.querySelectorAll(".form-control__wrapper[data-displayif][data-equals]")).forEach((e,o)=>{let i=e.closest("[data-group]")?e.closest("[data-group]"):t,l=e.dataset.activeif,s=e.dataset.equals;i.querySelector(`select[data-id="${l}"],input[data-id="${l}"]`).value==s?e.classList.remove("d-none"):e.classList.add("d-none")})},!1)}function D(t){if(t.hasAttribute("data-type")&&t.getAttribute("data-type")=="toast"){let e=document.querySelector(".notification__holder");e||(e=document.createElement("div"),e.classList.add("notification__holder"),e.classList.add("container"),document.querySelector("body").appendChild(e)),t.closest(".notification__holder")||e.appendChild(t)}if(t.setAttribute("role","alert"),t.addEventListener("click",function(e){event&&event.target instanceof HTMLElement&&event.target.closest("[data-dismiss-button]")&&(e.preventDefault(),y(t))},!1),t.hasAttribute("data-timeout")){let e=t.getAttribute("data-timeout");var a=new B(function(){y(t)},e);t.addEventListener("mouseenter",o=>{a.pause()}),t.addEventListener("mouseleave",o=>{a.resume()})}}function B(t,a){var e,o,i=a;this.pause=function(){window.clearTimeout(e),i-=new Date-o},this.resume=function(){o=new Date,window.clearTimeout(e),e=window.setTimeout(t,i)},this.resume()}const y=function(t){t.classList.add("d-none")};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Notification"});class N extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const a=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",e=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${a}/css/core.min.css`,o=`@import "${a}/css/components/notification.css";`,i=this.querySelectorAll("a,button");Array.from(i).forEach((s,r)=>{s.setAttribute("slot","btns"),s.classList.add("link")}),(i.length||this.hasAttribute("data-dismiss"))&&this.classList.add("notification--dismissable");const l=document.createElement("template");l.innerHTML=`
5
5
  <style>
6
6
  @import "${e}";
7
7
  ${o}
@@ -13,5 +13,5 @@
13
13
  <div class="notification__inner"><div class="notification__text"><slot></slot></div>${i.length?'<div class="notification__btns"><slot name="btns"></slot></div>':""}</div>
14
14
  ${this.hasAttribute("data-dismiss")?'<div class="notification__dismiss"><button data-dismiss-button>Dismiss</button></div>':""}
15
15
  </div>
16
- `,this.shadowRoot.appendChild(r.content.cloneNode(!0))}connectedCallback(){const a=this.shadowRoot.querySelector("[data-dismiss-button]"),e=this.hasAttribute("data-status")?this.getAttribute("data-status"):"white";this.hasAttribute("data-type")?this.classList.add(`bg-${e}`):this.classList.add(`colour-${e}`);const o=this;if(!this.querySelector("i"))switch(e){case"danger":this.innerHTML+='<i class="fa-solid fa-circle-exclamation" aria-hidden="true" slot="icon"></i>';break;case"warning":this.innerHTML+='<i class="fa-solid fa-triangle-exclamation" aria-hidden="true" slot="icon"></i>';break;case"success":this.innerHTML+='<i class="fa-solid fa-check-circle" aria-hidden="true" slot="icon"></i>';break;default:this.innerHTML+='<i class="fa-solid fa-circle-info" aria-hidden="true" slot="icon"></i>'}D(o),a&&a.addEventListener("click",function(i){y(o)},!1)}}const R=["accordion","header","tabs","table","card","pagination","filterlist","applied-filters"],h="iam",P={rootMargin:"50px",threshold:.1};R.forEach(t=>{if(console.log(t),document.getElementsByTagName(`${h}-${t}`).length===0)return;let a=o=>{o.forEach(i=>{i.intersectionRatio>0&&(console.log(t),import(`./components/${t}/${t}.component.min.js`).then(r=>{window.customElements.get(`${h}-${t}`)||window.customElements.define(`${h}-${t}`,r.default)}).catch(r=>{console.log(r.message)}),e.unobserve(i.target))})};const e=new IntersectionObserver(a,P);e.observe(document.getElementsByTagName(`${h}-${t}`)[0])}),document.addEventListener("DOMContentLoaded",function(){E(),b(document.body),w(),S(document.body),x(document.body),window.customElements.get("iam-notification")||window.customElements.define("iam-notification",N),Array.from(document.querySelectorAll(".nav")).forEach(t=>{_(t)}),Array.from(document.querySelectorAll(".testimonial")).forEach(t=>{M(t)}),Array.from(document.querySelectorAll(".carousel")).forEach(t=>{k(t)}),Array.from(document.querySelectorAll("form")).forEach(t=>{I(t)}),Array.from(document.querySelectorAll(".youtube-embed")).forEach(t=>{console.log(t),new v(t)}),window.addEventListener("hashchange",function(){const t=location.hash.replace("#",""),a=document.querySelector(`label[for="${t}"]`);a instanceof HTMLElement&&a.click()},!1)})});
16
+ `,this.shadowRoot.appendChild(l.content.cloneNode(!0))}connectedCallback(){const a=this.shadowRoot.querySelector("[data-dismiss-button]"),e=this.hasAttribute("data-status")?this.getAttribute("data-status"):"white";this.hasAttribute("data-type")?this.classList.add(`bg-${e}`):this.classList.add(`colour-${e}`);const o=this;if(!this.querySelector("i"))switch(e){case"danger":this.innerHTML+='<i class="fa-solid fa-circle-exclamation" aria-hidden="true" slot="icon"></i>';break;case"warning":this.innerHTML+='<i class="fa-solid fa-triangle-exclamation" aria-hidden="true" slot="icon"></i>';break;case"success":this.innerHTML+='<i class="fa-solid fa-check-circle" aria-hidden="true" slot="icon"></i>';break;default:this.innerHTML+='<i class="fa-solid fa-circle-info" aria-hidden="true" slot="icon"></i>'}D(o),a&&a.addEventListener("click",function(i){y(o)},!1)}}const R=["accordion","header","tabs","table","card","pagination","filterlist","applied-filters"],h="iam",P={rootMargin:"50px",threshold:.1};R.forEach(t=>{if(console.log(t),document.getElementsByTagName(`${h}-${t}`).length===0)return;let a=o=>{o.forEach(i=>{i.intersectionRatio>0&&(console.log(t),import(`./components/${t}/${t}.component.min.js`).then(l=>{window.customElements.get(`${h}-${t}`)||window.customElements.define(`${h}-${t}`,l.default)}).catch(l=>{console.log(l.message)}),e.unobserve(i.target))})};const e=new IntersectionObserver(a,P);e.observe(document.getElementsByTagName(`${h}-${t}`)[0])}),document.addEventListener("DOMContentLoaded",function(){E(),b(document.body),w(),S(document.body),x(document.body),window.customElements.get("iam-notification")||window.customElements.define("iam-notification",N),Array.from(document.querySelectorAll(".nav")).forEach(t=>{_(t)}),Array.from(document.querySelectorAll(".testimonial")).forEach(t=>{M(t)}),Array.from(document.querySelectorAll(".carousel")).forEach(t=>{k(t)}),Array.from(document.querySelectorAll("form")).forEach(t=>{I(t)}),Array.from(document.querySelectorAll(".youtube-embed")).forEach(t=>{console.log(t),new v(t)}),window.addEventListener("hashchange",function(){const t=location.hash.replace("#",""),a=document.querySelector(`label[for="${t}"]`);a instanceof HTMLElement&&a.click()},!1)})});
17
17
  //# sourceMappingURL=dynamic.min.js.map