@iamproperty/components 7.5.0 → 7.5.1--beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/components/actionbar.component.css +1 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/address-lookup.component.css +1 -1
- package/assets/css/components/address-lookup.component.css.map +1 -1
- package/assets/css/components/applied-filters.css +1 -1
- package/assets/css/components/applied-filters.css.map +1 -1
- package/assets/css/components/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.component.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/collapsible-side.css +1 -1
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/content.component.css +1 -1
- package/assets/css/components/content.component.css.map +1 -1
- package/assets/css/components/doughnutchart.component.css +1 -1
- package/assets/css/components/doughnutchart.component.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/header.css +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/inline-edit.css +1 -1
- package/assets/css/components/inline-edit.css.map +1 -1
- package/assets/css/components/inline-edit.preload.css +1 -1
- package/assets/css/components/inline-edit.preload.css.map +1 -1
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- package/assets/css/components/multiselect.preload.css +1 -1
- package/assets/css/components/multiselect.preload.css.map +1 -1
- package/assets/css/components/nav.component.css +1 -1
- package/assets/css/components/nav.component.css.map +1 -1
- package/assets/css/components/notification.css +1 -1
- package/assets/css/components/notification.css.map +1 -1
- package/assets/css/components/pagination.css +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/rank.component.css +1 -1
- package/assets/css/components/rank.component.css.map +1 -1
- package/assets/css/components/rankings.component.css +1 -1
- package/assets/css/components/rankings.component.css.map +1 -1
- package/assets/css/components/rankings.global.css +1 -1
- package/assets/css/components/rankings.global.css.map +1 -1
- package/assets/css/components/slider.css +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/split-button.component.css +1 -1
- package/assets/css/components/split-button.component.css.map +1 -1
- package/assets/css/components/table-basic.global.css +1 -1
- package/assets/css/components/table-basic.global.css.map +1 -1
- package/assets/css/components/table.global.css +1 -1
- package/assets/css/components/table.global.css.map +1 -1
- package/assets/css/components/tabs.component.css +1 -1
- package/assets/css/components/tabs.component.css.map +1 -1
- package/assets/css/components/tabs.config.css +1 -1
- package/assets/css/components/tabs.config.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/mobile-core.min.css +1 -1
- package/assets/css/mobile-core.min.css.map +1 -1
- package/assets/css/mobile.min.css +1 -1
- package/assets/css/mobile.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.js +0 -7
- package/assets/js/components/accordion/accordion.component.min.js +3 -4
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +8 -9
- package/assets/js/components/actionbar/actionbar.component.min.js +12 -5
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +0 -3
- package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.js +2 -5
- package/assets/js/components/applied-filters/applied-filters.component.min.js +7 -7
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/card/card.component.min.js +2 -2
- package/assets/js/components/carousel/carousel.component.min.js +2 -2
- package/assets/js/components/collapsible-side/collapsible-side.component.js +0 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -6
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/content/content.component.min.js +2 -2
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
- package/assets/js/components/fileupload/fileupload.component.js +1 -5
- package/assets/js/components/fileupload/fileupload.component.min.js +5 -6
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/header/header.component.js +0 -5
- package/assets/js/components/header/header.component.min.js +4 -6
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.js +61 -60
- package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.js +0 -4
- package/assets/js/components/marketing/marketing.component.min.js +3 -4
- package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
- package/assets/js/components/menu/menu.component.min.js +1 -1
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +88 -11
- package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.js +2 -4
- package/assets/js/components/nav/nav.component.min.js +8 -7
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +1 -4
- package/assets/js/components/notification/notification.component.min.js +6 -6
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.js +3 -8
- package/assets/js/components/pagination/pagination.component.min.js +7 -8
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/password-indicator/password-indicator.component.js +19 -0
- package/assets/js/components/password-indicator/password-indicator.component.min.js +7 -0
- package/assets/js/components/password-indicator/password-indicator.component.min.js.map +1 -0
- package/assets/js/components/rank/rank.component.js +2 -2
- package/assets/js/components/rank/rank.component.min.js +4 -5
- package/assets/js/components/rank/rank.component.min.js.map +1 -1
- package/assets/js/components/rankings/rankings.component.js +3 -0
- package/assets/js/components/rankings/rankings.component.min.js +364 -5
- package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/search/search.component.js +0 -4
- package/assets/js/components/search/search.component.min.js +5 -6
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.js +0 -4
- package/assets/js/components/slider/slider.component.min.js +4 -5
- package/assets/js/components/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/split-button/split-button.component.min.js +2 -2
- package/assets/js/components/table/table.component.min.js +4 -4
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.js +11 -9
- package/assets/js/components/table-ajax/table-ajax.component.min.js +4 -4
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +4 -4
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.js +15 -30
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js +4 -4
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.js +1 -4
- package/assets/js/components/tabs/tabs.component.min.js +5 -5
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/inputs.js +0 -8
- package/assets/js/modules/password-indicator.js +21 -0
- package/assets/js/modules/table.js +28 -2
- package/assets/js/scripts.bundle.js +3 -3
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/scripts.js +1 -0
- package/assets/sass/_components.scss +2 -1
- package/assets/sass/_elements.scss +5 -0
- package/assets/sass/_functions/utility-mixins.scss +21 -0
- package/assets/sass/_functions/variables.scss +14 -0
- package/assets/sass/components/actionbar.component.scss +16 -1
- package/assets/sass/components/applied-filters.scss +1 -0
- package/assets/sass/components/collapsible-side.scss +2 -0
- package/assets/sass/components/fileupload.scss +18 -0
- package/assets/sass/components/header.scss +9 -0
- package/assets/sass/components/inline-edit.preload.scss +68 -2
- package/assets/sass/components/inline-edit.scss +7 -0
- package/assets/sass/components/multiselect.preload.scss +10 -0
- package/assets/sass/components/multiselect.scss +62 -4
- package/assets/sass/components/nav.component.scss +15 -0
- package/assets/sass/components/notification.scss +6 -4
- package/assets/sass/components/pagination.scss +6 -0
- package/assets/sass/components/slider.scss +1 -0
- package/assets/sass/components/table-basic.global.scss +1 -1
- package/assets/sass/components/table.global.scss +9 -4
- package/assets/sass/components/tabs.component.scss +4 -0
- package/assets/sass/components/tabs.config.scss +231 -4
- package/assets/sass/elements/admin-panel.scss +37 -9
- package/assets/sass/elements/buttons--global.scss +3 -3
- package/assets/sass/elements/forms.scss +7 -0
- package/assets/sass/elements/hr.scss +50 -0
- package/assets/sass/elements/icons.scss +5 -0
- package/assets/sass/elements/links.scss +2 -2
- package/assets/sass/elements/modal.scss +1 -5
- package/assets/sass/elements/type.scss +6 -9
- package/assets/sass/foundations/reboot.scss +6 -17
- package/assets/sass/foundations/root.scss +2 -0
- package/assets/sass/templates/form.scss +5 -0
- package/assets/ts/components/accordion/accordion.component.ts +0 -8
- package/assets/ts/components/actionbar/actionbar.component.ts +19 -10
- package/assets/ts/components/address-lookup/address-lookup.component.ts +1 -3
- package/assets/ts/components/applied-filters/applied-filters.component.ts +2 -5
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +1 -5
- package/assets/ts/components/fileupload/fileupload.component.ts +2 -5
- package/assets/ts/components/header/header.component.ts +1 -5
- package/assets/ts/components/inline-edit/inline-edit.component.ts +74 -75
- package/assets/ts/components/marketing/marketing.component.ts +0 -4
- package/assets/ts/components/multiselect/multiselect.component.ts +97 -12
- package/assets/ts/components/nav/nav.component.ts +2 -4
- package/assets/ts/components/notification/notification.component.ts +2 -4
- package/assets/ts/components/pagination/pagination.component.ts +6 -8
- package/assets/ts/components/password-indicator/password-indicator.component.ts +24 -0
- package/assets/ts/components/rank/rank.component.ts +2 -2
- package/assets/ts/components/rankings/rankings.component.ts +4 -0
- package/assets/ts/components/search/search.component.ts +0 -4
- package/assets/ts/components/slider/slider.component.ts +1 -4
- package/assets/ts/components/table-ajax/table-ajax.component.ts +5 -5
- package/assets/ts/components/table-no-submit/table-no-submit.component.ts +10 -21
- package/assets/ts/components/tabs/tabs.component.ts +2 -4
- package/assets/ts/modules/inputs.ts +1 -7
- package/assets/ts/modules/password-indicator.ts +29 -0
- package/assets/ts/modules/table.ts +41 -3
- package/assets/ts/scripts.ts +2 -0
- package/dist/components.es.js +47 -49
- package/dist/components.umd.js +557 -201
- package/package.json +3 -3
- package/src/components/PasswordIndicator/PasswordIndicator.vue +23 -0
- package/assets/css/components/tabs.css +0 -1
- package/assets/css/components/tabs.css.map +0 -1
- package/assets/sass/components/tabs.scss +0 -254
- package/assets/ts/components/accordion/README.md +0 -31
- package/assets/ts/components/fileupload/README.md +0 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.component.min.js","sources":["../../modules/helpers.js","../../modules/tabs.js","tabs.component.js"],"sourcesContent":["/**\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};\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 const detail = document.querySelector(`detail${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 else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const 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 const form = event.target;\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\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\n .split(' ')\n .map((s) => ucfirst(s))\n .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};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\n","import { getSwipeDirection } from './helpers.js';\nexport const createTabsLinks = function (tabsElement) {\n const detailsORLinks = tabsElement.querySelectorAll(':scope > details, :scope > a');\n let tabLinks = tabsElement.querySelector(':scope > .tabs__links');\n let tabDropdown = tabsElement.querySelector(':scope .tabs__dropdown');\n if (tabsElement.shadowRoot && tabsElement.shadowRoot.querySelector('.tabs__links'))\n tabLinks = tabsElement.shadowRoot.querySelector('.tabs__links');\n if (!tabLinks) {\n tabLinks = document.createElement('div');\n tabLinks.classList.add('tabs__links');\n const tabLinksWrapper = document.createElement('div');\n tabLinksWrapper.classList.add('tabs__links__wrapper');\n tabLinksWrapper.prepend(tabLinks);\n tabsElement.prepend(tabLinksWrapper);\n }\n if (!tabDropdown) {\n tabDropdown = document.createElement('select');\n tabDropdown.classList.add('tabs__dropdown');\n tabsElement.prepend(tabDropdown);\n }\n // Create the tab buttons from the summary titles\n let tabindex = 0;\n detailsORLinks.forEach((element) => {\n let button = document.createElement('button');\n const dropdownOpt = document.createElement('option');\n if (element.matches('details')) {\n const summary = element.querySelector(':scope > summary');\n const isDisabled = summary.classList.contains('disabled');\n summary.classList.add('visually-hidden');\n if (element.hasAttribute('id'))\n button.setAttribute('data-id', `${element.getAttribute('id')}`);\n if (element.hasAttribute('open')) {\n button.setAttribute('aria-pressed', true);\n }\n button.innerHTML = `${summary.innerText}`;\n button.classList.add('link');\n button.setAttribute('data-index', tabindex);\n button.setAttribute('part', 'tab-link');\n dropdownOpt.innerHTML = `${summary.innerText}`;\n dropdownOpt.value = summary.innerText.replace(/\\s+/g, '-').toLowerCase();\n dropdownOpt.setAttribute('data-index', tabindex);\n element.setAttribute('tabindex', '-1');\n if (isDisabled) {\n button.classList.add('disabled');\n }\n tabindex++;\n }\n else if (element.matches('a')) {\n button = element;\n }\n button.classList.add('link');\n tabLinks.appendChild(button);\n tabDropdown.appendChild(dropdownOpt);\n });\n};\nexport const setTabsEventHandlers = function (tabsElement) {\n const details = tabsElement.querySelectorAll(':scope > details');\n const summaries = tabsElement.querySelectorAll(':scope > details > summary');\n let buttonWrapper = tabsElement.querySelector(':scope .tabs__links');\n let buttons = tabsElement.querySelectorAll(':scope .tabs__links > button');\n const tabDropdown = tabsElement.querySelector(':scope .tabs__dropdown');\n let nextButton = tabsElement.querySelector(':scope .tabs__next');\n let scrollTimeout;\n window.isClicked = false;\n window.isScrolling = false;\n if (tabsElement.shadowRoot) {\n buttons = tabsElement.shadowRoot.querySelectorAll('.tabs__links > button');\n buttonWrapper = tabsElement.shadowRoot.querySelector('.tabs__links');\n nextButton = tabsElement.shadowRoot.querySelector('.tabs__next');\n }\n // Set the on click for the tab buttons, these will open the details box it matches too\n buttons.forEach((button) => {\n button.addEventListener('click', (e) => {\n e.preventDefault();\n window.isClicked = true;\n if (button.classList.contains('disabled'))\n return false;\n buttons.forEach((buttonLoopItem) => {\n const buttonPressed = buttonLoopItem == button ? true : false;\n buttonLoopItem.setAttribute('aria-pressed', buttonPressed);\n });\n buttonWrapper.scroll({\n top: 0,\n left: button.offsetLeft,\n behavior: 'smooth',\n });\n //Handles showing correct content\n toggleTab(details, button);\n // Data layer Open Event\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'openTab',\n tabTitle: button.textContent,\n });\n if (button.matches(':last-child')) {\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.setAttribute('disabled', 'disabled');\n }\n else {\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.removeAttribute('disabled');\n }\n });\n dropdownTabSelector(details, tabDropdown);\n });\n buttonWrapper.addEventListener('scrollend', () => {\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(function () {\n let buttonToClick = buttons[0];\n let closestOffset = Math.abs(buttonToClick.getBoundingClientRect().left);\n buttons.forEach((button) => {\n if (Math.abs(button.getBoundingClientRect().left) < closestOffset) {\n closestOffset = Math.abs(button.getBoundingClientRect().left);\n buttonToClick = button;\n }\n });\n if (window.isClicked) {\n window.isClicked = false;\n return false;\n }\n else {\n buttonToClick.click();\n }\n buttonToClick.focus();\n }, 500);\n });\n // Make sure we dont loose existing summary functionality\n summaries.forEach((summary, index) => {\n summary.addEventListener('click', (e) => {\n e.preventDefault();\n buttons[index].click();\n });\n });\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', (e) => {\n e.preventDefault();\n const currentTab = buttonWrapper.querySelector('[aria-pressed=\"true\"]');\n const nextTab = currentTab.nextSibling;\n if (nextTab)\n nextTab.click();\n });\n if (tabsElement.classList.contains('tabs--guided')) {\n let touchstartX = 0;\n let touchstartY = 0;\n let touchendX = 0;\n let touchendY = 0;\n details.forEach((detail) => {\n detail.addEventListener('touchstart', (event) => {\n event.stopPropagation();\n touchstartX = event.changedTouches[0].screenX;\n touchstartY = event.changedTouches[0].screenY;\n });\n detail.addEventListener('touchend', (event) => {\n event.stopPropagation();\n touchendX = event.changedTouches[0].screenX;\n touchendY = event.changedTouches[0].screenY;\n const direction = getSwipeDirection(touchstartX, touchstartY, touchendX, touchendY);\n const currentTab = buttonWrapper.querySelector('[aria-pressed=\"true\"]');\n const nextTab = currentTab.nextSibling;\n const prevTab = currentTab.previousSibling;\n switch (direction) {\n case 'left':\n if (nextTab)\n nextTab.click();\n break;\n case 'right':\n if (prevTab)\n prevTab.click();\n break;\n }\n });\n });\n }\n};\nexport const toggleTab = function (details, button) {\n details.forEach((detail, detailsIndex) => {\n const detailsOpen = button.getAttribute('data-index') == detailsIndex ? true : false;\n if (detailsOpen)\n detail.setAttribute('open', detailsOpen);\n else\n detail.removeAttribute('open');\n });\n};\nexport const dropdownTabSelector = function (details, dropdown) {\n dropdown.addEventListener('change', (e) => {\n e.preventDefault();\n const selected = dropdown.options[dropdown.selectedIndex];\n toggleTab(details, selected);\n // Data layer Open Event\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'openTab',\n tabTitle: selected.innerText,\n });\n });\n};\nexport const openFirstTab = function (tabsElement) {\n if (!tabsElement.querySelector(':scope > details'))\n return false;\n const details = tabsElement.querySelectorAll(':scope > details');\n const buttons = tabsElement.shadowRoot.querySelectorAll('.tabs__links > button');\n if (location.hash &&\n tabsElement.shadowRoot.querySelector(`.tabs__links [data-id=\"${location.hash.replace('#', '')}\"]`)) {\n tabsElement.shadowRoot\n .querySelector(`[data-id=\"${location.hash.replace('#', '')}\"]`)\n .setAttribute('aria-pressed', true);\n tabsElement.querySelector(`details[id=\"${location.hash.replace('#', '')}\"]`).setAttribute('open', true);\n }\n else if (!tabsElement.querySelector(`details[open]`)) {\n details[0].setAttribute('open', true);\n buttons[0].setAttribute('aria-pressed', true);\n }\n};\nconst tabs = function (tabsElement) {\n createTabsLinks(tabsElement);\n setTabsEventHandlers(tabsElement);\n openFirstTab(tabsElement);\n};\nexport default tabs;\n","import tabs from '../../modules/tabs.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'tabs',\n});\nclass iamTabs extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const coreCSS = document.body.hasAttribute('data-core-css')\n ? document.body.getAttribute('data-core-css')\n : `${assetLocation}/css/core.min.css`;\n const loadCSS = `@import \"${assetLocation}/css/components/tabs.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n ${loadCSS}\n\n :host(.admin-panel){\n display: contents!important;\n }\n \n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"tabs\" part=\"tabs\">\n <div class=\"tabs__dropdown\" part=\"tab-dropdown\"></div>\n\n <div class=\"tabs__links__wrapper\" part=\"wrapper\">\n <div class=\"tabs__links\" part=\"tab-links\"></div>\n </div>\n <slot></slot>\n <button part=\"next-button\" class=\"btn btn-secondary btn-sm btn-compact fa-regular fa-chevron-right tabs__next\">Next</button>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const classList = this.classList.toString().replace('container', '');\n this.shadowRoot.querySelector('.tabs').setAttribute('class', `tabs ${classList}`);\n tabs(this);\n }\n}\nexport default iamTabs;\n"],"names":["getSwipeDirection","touchstartX","touchstartY","touchendX","touchendY","limit","pageWidth","treshold","x","y","xy","yx","createTabsLinks","tabsElement","detailsORLinks","tabLinks","tabDropdown","tabLinksWrapper","tabindex","element","button","dropdownOpt","summary","isDisabled","setTabsEventHandlers","details","summaries","buttonWrapper","buttons","nextButton","scrollTimeout","e","buttonLoopItem","buttonPressed","toggleTab","dropdownTabSelector","buttonToClick","closestOffset","index","nextTab","detail","event","direction","currentTab","prevTab","detailsIndex","detailsOpen","dropdown","selected","openFirstTab","tabs","iamTabs","assetLocation","coreCSS","template","classList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.component.min.js","sources":["../../modules/helpers.js","../../modules/tabs.js","tabs.component.js"],"sourcesContent":["/**\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};\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 const detail = document.querySelector(`detail${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 else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const 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 const form = event.target;\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\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\n .split(' ')\n .map((s) => ucfirst(s))\n .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};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\n","import { getSwipeDirection } from './helpers.js';\nexport const createTabsLinks = function (tabsElement) {\n const detailsORLinks = tabsElement.querySelectorAll(':scope > details, :scope > a');\n let tabLinks = tabsElement.querySelector(':scope > .tabs__links');\n let tabDropdown = tabsElement.querySelector(':scope .tabs__dropdown');\n if (tabsElement.shadowRoot && tabsElement.shadowRoot.querySelector('.tabs__links'))\n tabLinks = tabsElement.shadowRoot.querySelector('.tabs__links');\n if (!tabLinks) {\n tabLinks = document.createElement('div');\n tabLinks.classList.add('tabs__links');\n const tabLinksWrapper = document.createElement('div');\n tabLinksWrapper.classList.add('tabs__links__wrapper');\n tabLinksWrapper.prepend(tabLinks);\n tabsElement.prepend(tabLinksWrapper);\n }\n if (!tabDropdown) {\n tabDropdown = document.createElement('select');\n tabDropdown.classList.add('tabs__dropdown');\n tabsElement.prepend(tabDropdown);\n }\n // Create the tab buttons from the summary titles\n let tabindex = 0;\n detailsORLinks.forEach((element) => {\n let button = document.createElement('button');\n const dropdownOpt = document.createElement('option');\n if (element.matches('details')) {\n const summary = element.querySelector(':scope > summary');\n const isDisabled = summary.classList.contains('disabled');\n summary.classList.add('visually-hidden');\n if (element.hasAttribute('id'))\n button.setAttribute('data-id', `${element.getAttribute('id')}`);\n if (element.hasAttribute('open')) {\n button.setAttribute('aria-pressed', true);\n }\n button.innerHTML = `${summary.innerText}`;\n button.classList.add('link');\n button.setAttribute('data-index', tabindex);\n button.setAttribute('part', 'tab-link');\n dropdownOpt.innerHTML = `${summary.innerText}`;\n dropdownOpt.value = summary.innerText.replace(/\\s+/g, '-').toLowerCase();\n dropdownOpt.setAttribute('data-index', tabindex);\n element.setAttribute('tabindex', '-1');\n if (isDisabled) {\n button.classList.add('disabled');\n }\n tabindex++;\n }\n else if (element.matches('a')) {\n button = element;\n }\n button.classList.add('link');\n tabLinks.appendChild(button);\n tabDropdown.appendChild(dropdownOpt);\n });\n};\nexport const setTabsEventHandlers = function (tabsElement) {\n const details = tabsElement.querySelectorAll(':scope > details');\n const summaries = tabsElement.querySelectorAll(':scope > details > summary');\n let buttonWrapper = tabsElement.querySelector(':scope .tabs__links');\n let buttons = tabsElement.querySelectorAll(':scope .tabs__links > button');\n const tabDropdown = tabsElement.querySelector(':scope .tabs__dropdown');\n let nextButton = tabsElement.querySelector(':scope .tabs__next');\n let scrollTimeout;\n window.isClicked = false;\n window.isScrolling = false;\n if (tabsElement.shadowRoot) {\n buttons = tabsElement.shadowRoot.querySelectorAll('.tabs__links > button');\n buttonWrapper = tabsElement.shadowRoot.querySelector('.tabs__links');\n nextButton = tabsElement.shadowRoot.querySelector('.tabs__next');\n }\n // Set the on click for the tab buttons, these will open the details box it matches too\n buttons.forEach((button) => {\n button.addEventListener('click', (e) => {\n e.preventDefault();\n window.isClicked = true;\n if (button.classList.contains('disabled'))\n return false;\n buttons.forEach((buttonLoopItem) => {\n const buttonPressed = buttonLoopItem == button ? true : false;\n buttonLoopItem.setAttribute('aria-pressed', buttonPressed);\n });\n buttonWrapper.scroll({\n top: 0,\n left: button.offsetLeft,\n behavior: 'smooth',\n });\n //Handles showing correct content\n toggleTab(details, button);\n // Data layer Open Event\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'openTab',\n tabTitle: button.textContent,\n });\n if (button.matches(':last-child')) {\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.setAttribute('disabled', 'disabled');\n }\n else {\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.removeAttribute('disabled');\n }\n });\n dropdownTabSelector(details, tabDropdown);\n });\n buttonWrapper.addEventListener('scrollend', () => {\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(function () {\n let buttonToClick = buttons[0];\n let closestOffset = Math.abs(buttonToClick.getBoundingClientRect().left);\n buttons.forEach((button) => {\n if (Math.abs(button.getBoundingClientRect().left) < closestOffset) {\n closestOffset = Math.abs(button.getBoundingClientRect().left);\n buttonToClick = button;\n }\n });\n if (window.isClicked) {\n window.isClicked = false;\n return false;\n }\n else {\n buttonToClick.click();\n }\n buttonToClick.focus();\n }, 500);\n });\n // Make sure we dont loose existing summary functionality\n summaries.forEach((summary, index) => {\n summary.addEventListener('click', (e) => {\n e.preventDefault();\n buttons[index].click();\n });\n });\n nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', (e) => {\n e.preventDefault();\n const currentTab = buttonWrapper.querySelector('[aria-pressed=\"true\"]');\n const nextTab = currentTab.nextSibling;\n if (nextTab)\n nextTab.click();\n });\n if (tabsElement.classList.contains('tabs--guided')) {\n let touchstartX = 0;\n let touchstartY = 0;\n let touchendX = 0;\n let touchendY = 0;\n details.forEach((detail) => {\n detail.addEventListener('touchstart', (event) => {\n event.stopPropagation();\n touchstartX = event.changedTouches[0].screenX;\n touchstartY = event.changedTouches[0].screenY;\n });\n detail.addEventListener('touchend', (event) => {\n event.stopPropagation();\n touchendX = event.changedTouches[0].screenX;\n touchendY = event.changedTouches[0].screenY;\n const direction = getSwipeDirection(touchstartX, touchstartY, touchendX, touchendY);\n const currentTab = buttonWrapper.querySelector('[aria-pressed=\"true\"]');\n const nextTab = currentTab.nextSibling;\n const prevTab = currentTab.previousSibling;\n switch (direction) {\n case 'left':\n if (nextTab)\n nextTab.click();\n break;\n case 'right':\n if (prevTab)\n prevTab.click();\n break;\n }\n });\n });\n }\n};\nexport const toggleTab = function (details, button) {\n details.forEach((detail, detailsIndex) => {\n const detailsOpen = button.getAttribute('data-index') == detailsIndex ? true : false;\n if (detailsOpen)\n detail.setAttribute('open', detailsOpen);\n else\n detail.removeAttribute('open');\n });\n};\nexport const dropdownTabSelector = function (details, dropdown) {\n dropdown.addEventListener('change', (e) => {\n e.preventDefault();\n const selected = dropdown.options[dropdown.selectedIndex];\n toggleTab(details, selected);\n // Data layer Open Event\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'openTab',\n tabTitle: selected.innerText,\n });\n });\n};\nexport const openFirstTab = function (tabsElement) {\n if (!tabsElement.querySelector(':scope > details'))\n return false;\n const details = tabsElement.querySelectorAll(':scope > details');\n const buttons = tabsElement.shadowRoot.querySelectorAll('.tabs__links > button');\n if (location.hash &&\n tabsElement.shadowRoot.querySelector(`.tabs__links [data-id=\"${location.hash.replace('#', '')}\"]`)) {\n tabsElement.shadowRoot\n .querySelector(`[data-id=\"${location.hash.replace('#', '')}\"]`)\n .setAttribute('aria-pressed', true);\n tabsElement.querySelector(`details[id=\"${location.hash.replace('#', '')}\"]`).setAttribute('open', true);\n }\n else if (!tabsElement.querySelector(`details[open]`)) {\n details[0].setAttribute('open', true);\n buttons[0].setAttribute('aria-pressed', true);\n }\n};\nconst tabs = function (tabsElement) {\n createTabsLinks(tabsElement);\n setTabsEventHandlers(tabsElement);\n openFirstTab(tabsElement);\n};\nexport default tabs;\n","import tabs from '../../modules/tabs.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'tabs',\n});\nclass iamTabs extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/tabs.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n \n ${loadCSS}\n\n :host(.admin-panel){\n display: contents!important;\n }\n \n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\">\n <div class=\"tabs\" part=\"tabs\">\n <div class=\"tabs__dropdown\" part=\"tab-dropdown\"></div>\n\n <div class=\"tabs__links__wrapper\" part=\"wrapper\">\n <div class=\"tabs__links\" part=\"tab-links\"></div>\n </div>\n <slot></slot>\n <button part=\"next-button\" class=\"btn btn-secondary btn-sm btn-compact fa-regular fa-chevron-right tabs__next\">Next</button>\n </div>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n const classList = this.classList.toString().replace('container', '');\n this.shadowRoot.querySelector('.tabs').setAttribute('class', `tabs ${classList}`);\n tabs(this);\n }\n}\nexport default iamTabs;\n"],"names":["getSwipeDirection","touchstartX","touchstartY","touchendX","touchendY","limit","pageWidth","treshold","x","y","xy","yx","createTabsLinks","tabsElement","detailsORLinks","tabLinks","tabDropdown","tabLinksWrapper","tabindex","element","button","dropdownOpt","summary","isDisabled","setTabsEventHandlers","details","summaries","buttonWrapper","buttons","nextButton","scrollTimeout","e","buttonLoopItem","buttonPressed","toggleTab","dropdownTabSelector","buttonToClick","closestOffset","index","nextTab","detail","event","direction","currentTab","prevTab","detailsIndex","detailsOpen","dropdown","selected","openFirstTab","tabs","iamTabs","template","classList"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.5.
|
|
2
|
+
* iamKey v7.5.1--beta1
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/const p=o=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:o})},h=(o,t,e)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),e.forEach(r=>{o.addEventListener(r,function(i){const d={event:r,element:t,target:i.target};Object.keys(i.detail).forEach(a=>{const n=i.detail[a];d[a]=n}),window.dataLayer.push(d)})}),!0),b=`<div class="card__head" part="head">
|
|
5
5
|
<slot name="head"></slot>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.5.
|
|
2
|
+
* iamKey v7.5.1--beta1
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/const o=i=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:i})};o("iam-word-count");class n extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
|
|
5
5
|
<style>
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import hibpCheck from '../vendor/hibp.js';
|
|
2
2
|
const extendInputs = (body) => {
|
|
3
3
|
function loadInput() {
|
|
4
|
-
Array.from(document.querySelectorAll('label input')).forEach((input) => {
|
|
5
|
-
if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
|
|
6
|
-
if (input.parentNode.tagName.toLowerCase() == 'span')
|
|
7
|
-
input.parentElement.insertAdjacentHTML('beforebegin', `<span class="optional-text"></span>`);
|
|
8
|
-
else
|
|
9
|
-
input.insertAdjacentHTML('beforebegin', `<span class="optional-text"></span>`);
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
4
|
// Date restrictions
|
|
13
5
|
if (document.querySelector('input[type="date"]')) {
|
|
14
6
|
const today = new Date();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const changeType = function (element) {
|
|
2
|
+
var _a;
|
|
3
|
+
const buttonEle = element.querySelector('button');
|
|
4
|
+
const associatedInput = (_a = element === null || element === void 0 ? void 0 : element.parentNode) === null || _a === void 0 ? void 0 : _a.querySelector('input');
|
|
5
|
+
element.addEventListener('click', (event) => {
|
|
6
|
+
const currentType = associatedInput.type;
|
|
7
|
+
const newType = currentType === 'password' ? 'text' : 'password';
|
|
8
|
+
const isPasswordType = currentType === 'password';
|
|
9
|
+
associatedInput.setAttribute('type', newType);
|
|
10
|
+
associatedInput.setAttribute('data-password-type', isPasswordType);
|
|
11
|
+
if (element.hasAttribute('data-alt-class')) {
|
|
12
|
+
const newClass = element.getAttribute('data-alt-class');
|
|
13
|
+
element.setAttribute('data-alt-class', buttonEle.getAttribute('class'));
|
|
14
|
+
buttonEle.setAttribute('class', newClass);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
const passwordIndicator = function (element) {
|
|
19
|
+
changeType(element);
|
|
20
|
+
};
|
|
21
|
+
export default passwordIndicator;
|
|
@@ -111,9 +111,15 @@ export const findForm = (component, table) => {
|
|
|
111
111
|
else if (component.closest('form')) {
|
|
112
112
|
form = component.closest('form');
|
|
113
113
|
}
|
|
114
|
+
else if (component.querySelector('form')) {
|
|
115
|
+
form = component.querySelector('form');
|
|
116
|
+
}
|
|
114
117
|
else {
|
|
115
118
|
table.parentNode.insertBefore(form, table.nextSibling);
|
|
116
119
|
}
|
|
120
|
+
if (component.hasAttribute('data-ajax')) {
|
|
121
|
+
form.setAttribute('data-ajax', component.getAttribute('data-ajax'));
|
|
122
|
+
}
|
|
117
123
|
return form;
|
|
118
124
|
};
|
|
119
125
|
// #endregion
|
|
@@ -422,7 +428,9 @@ export const setupNoSubmitTable = (component, table, form, pagination, savedTabl
|
|
|
422
428
|
sortTable(table, form, savedTableBody);
|
|
423
429
|
}
|
|
424
430
|
});
|
|
425
|
-
|
|
431
|
+
/*
|
|
432
|
+
addFilterEventListeners(component, table, form, pagination, savedTableBody);
|
|
433
|
+
*/
|
|
426
434
|
};
|
|
427
435
|
// #region No submit table functions
|
|
428
436
|
export const sortViaHeaders = (component, table) => {
|
|
@@ -609,7 +617,8 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
609
617
|
});
|
|
610
618
|
component.dispatchEvent(submitEvent);
|
|
611
619
|
clearTimeout(timer);
|
|
612
|
-
|
|
620
|
+
if (component.tagName != "IAM-TABLE-NO-SUBMIT")
|
|
621
|
+
formSubmit(event);
|
|
613
622
|
});
|
|
614
623
|
}
|
|
615
624
|
if (component.querySelector('iam-actionbar') && !component.querySelector('iam-actionbar').closest('form')) {
|
|
@@ -1028,6 +1037,20 @@ export const setupAjaxTable = (component, table, form, pagination) => {
|
|
|
1028
1037
|
actionbar.addEventListener('change', (event) => {
|
|
1029
1038
|
loadAjaxTable(component, table, form, pagination);
|
|
1030
1039
|
});
|
|
1040
|
+
actionbar.addEventListener('search-submit', (event) => {
|
|
1041
|
+
if (form.querySelector('input[data-search]')) {
|
|
1042
|
+
form.querySelector('input[data-search]').value = event.detail.search;
|
|
1043
|
+
}
|
|
1044
|
+
else {
|
|
1045
|
+
form.insertAdjacentHTML('beforeend', `<input type="hidden" name="search" data-search="${component.querySelector('iam-actionbar[data-search]').getAttribute('data-search')}" value="${event.detail.search}"/>`);
|
|
1046
|
+
}
|
|
1047
|
+
const submitEvent = new CustomEvent('search-submit', {
|
|
1048
|
+
detail: event.details,
|
|
1049
|
+
});
|
|
1050
|
+
component.dispatchEvent(submitEvent);
|
|
1051
|
+
loadAjaxTable(component, table, form, pagination);
|
|
1052
|
+
console.log('hello');
|
|
1053
|
+
});
|
|
1031
1054
|
}
|
|
1032
1055
|
};
|
|
1033
1056
|
// #region ajax tables functions
|
|
@@ -1189,6 +1212,9 @@ export const loadAjaxTable = function (component, table, form, pagination) {
|
|
|
1189
1212
|
// Remove loading on the pagination
|
|
1190
1213
|
pagination.removeAttribute('data-loading');
|
|
1191
1214
|
form.classList.remove('processing');
|
|
1215
|
+
if (table.querySelectorAll('tbody tr').length < parseInt(component.getAttribute('data-show'))) {
|
|
1216
|
+
pagination.classList.add('d-none');
|
|
1217
|
+
}
|
|
1192
1218
|
});
|
|
1193
1219
|
}
|
|
1194
1220
|
catch (error) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.5.
|
|
2
|
+
* iamKey v7.5.1--beta1
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
|
-
*/(function(
|
|
5
|
-
`),i=e.slice(5).toUpperCase(),c=!1;for(var n in o)if(o[n].substring(0,35)==i){c=!0;break}var l=new CustomEvent("hibpCheck",{detail:c});t.dispatchEvent(l)}),a.open("GET","https://api.pwnedpasswords.com/range/"+e.substr(0,5)),a.send()})},N=r=>{function t(){if(Array.from(document.querySelectorAll("label input")).forEach(a=>{!a.closest("label").querySelector(".optional-text")&&!a.hasAttribute("required")&&(a.parentNode.tagName.toLowerCase()=="span"?a.parentElement.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'):a.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'))}),document.querySelector('input[type="date"]')){let a=function(o){var i=o.getFullYear(),c=String(o.getMonth()+1).padStart(2,"0"),n=String(o.getDate()).padStart(2,"0");return"".concat(i,"-").concat(c,"-").concat(n)};var e=new Date;Array.from(document.querySelectorAll('input[type="date"]')).forEach(o=>{var i=e;if(o.hasAttribute("data-start")&&(i.setDate(i.getDate()+parseInt(o.getAttribute("data-start"))),o.setAttribute("min",a(i))),o.hasAttribute("data-period")){var c=parseInt(o.getAttribute("data-period")),n=new Date;n.setDate(i.getDate()+c),o.setAttribute("max",a(n))}if(o.hasAttribute("data-allowed-days")){var l=JSON.parse("[".concat(o.getAttribute("data-allowed-days"),"]"));o.addEventListener("input",function(){var s=new Date(this.value).getUTCDay();l.includes(s)?o.setCustomValidity(""):o.setCustomValidity("That day of the week is not allowed")})}})}}document.readyState==="complete"&&t(),document.onreadystatechange=()=>{document.readyState==="complete"&&t()},r.addEventListener("input",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("input,textarea,select")){var a=e.target.closest("input,textarea,select");a.hasAttribute("type")&&a.getAttribute("type")=="color"&&(a.nextElementSibling.value=a.value),a.hasAttribute("data-strength-checker")&&v(a)}}),r.addEventListener("change",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("select")){var a=e.target.closest("select");if(a.hasAttribute("data-change-type")&&a.hasAttribute("data-input")){var o=document.getElementById(a.getAttribute("data-input")),i=a.value;E(o,i)}}if(e&&e.target instanceof HTMLElement&&e.target.closest('dialog [type="radio"]')){var c=e.target.closest("dialog");Array.from(c.querySelectorAll('[type="radio"][autofocus]')).forEach(n=>{n.removeAttribute("autofocus")}),Array.from(c.querySelectorAll('[type="radio"]:checked')).forEach(n=>{n.setAttribute("autofocus",!0)})}}),r.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-change-type][data-input]:not(select)")){var a=e.target.closest("[data-change-type]"),o=document.getElementById(a.getAttribute("data-input")),i=a.getAttribute("data-change-type");if(a.setAttribute("data-change-type",o.getAttribute("type")),E(o,i),a.hasAttribute("data-alt-class")){var c=a.getAttribute("data-alt-class");a.setAttribute("data-alt-class",a.getAttribute("class")),a.setAttribute("class",c)}}})},E=(r,t)=>{r.hasAttribute("type")&&r.getAttribute("type")=="password"&&r.setAttribute("data-password-type",!0),r.setAttribute("type",t)},v=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"no",a=document.getElementById(t.getAttribute("data-strength-checker")),o=t.value,i=t.hasAttribute("minlength")?t.getAttribute("minlength"):12,c=1,n=["Very weak","Weak","Average","Strong","Very strong"],l="";if(o.match(/(?=.*[0-9])/)&&(c+=1),o.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/)&&(c+=1),o.match(/(?=.*[a-z])/)&&(c+=1),o.match(/(?=.*[A-Z])/)&&(c+=1),o.length<i&&(c=1,l="(must be at least ".concat(i," characters.)")),c>=3&&e=="no"){let s=function(d,u){d.detail?v(u,"danger"):v(u,"success"),u.removeEventListener("hibpCheck",s)};V(o,t),t.addEventListener("hibpCheck",function(d){s(d,t)})}else c>=3&&e=="danger"&&(c=3,l="(this password is very common)");a&&(c<=3?a.classList.add("invalid-feedback"):a.classList.remove("invalid-feedback"),a.setAttribute("data-strength",c),a.innerHTML="Password strength: ".concat(n[c-1]," ").concat(l))};window.triggerDynamicEvent=function(r){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"change";console.log("event"),r.hasAttribute("data-change-events")&&t=="change"&&p(r,r.getAttribute("data-change-events")),r.hasAttribute("data-click-events")&&t=="click"&&p(r,r.getAttribute("data-click-events"))};var Y=()=>{document.addEventListener("change",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&p(r.target,r.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("keyup",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&p(r.target,r.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("click",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-click-events]")&&p(r.target,r.target.closest("[data-click-events]").getAttribute("data-click-events"))})},p=(r,t)=>{if(t||(t=r.parentNode.getAttribute("data-change-events")),!t)return!1;Array.from(JSON.parse(t)).forEach(e=>{j(r,e)})},j=(r,t)=>{if("matches"in t)return t.matches=="any"||r.value==t.matches?m(r,t,"if"):m(r,t,"else"),!1;if("in-list"in t){var e=document.querySelector("".concat(t["in-list"],' option[value="').concat(r.value,'"]'));return document.querySelector("".concat(t["in-list"],' option[value="').concat(r.value,'"]'))?m(e,t,"if"):m(e,t,"else"),!1}else"event"in t&&m(r,t,"event")},m=(r,t,e)=>{if(!(e in t))return!1;switch(t[e]){case"hide":if(document.querySelector(t.target)){var a=document.querySelector(t.target);a.classList.add("js-hide"),Array.from(a.querySelectorAll("[data-required]")).forEach(n=>{n.removeAttribute("required")})}break;case"show":if(document.querySelector(t.target)){var o=document.querySelector(t.target);o.classList.remove("js-hide"),Array.from(o.querySelectorAll("[data-required]")).forEach(n=>{n.closest(".js-hide")||n.setAttribute("required","true")})}break;case"populate-form":P(r,t);break;case"dispatchEvent":var i=new Event(t.value);document.querySelector("".concat(t.target)).dispatchEvent(i);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach(function(n){n.setAttribute(t.attribute,t.value)});break;case"focus":document.querySelector("".concat(t.target)).focus();break;case"removeAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach(function(n){n.removeAttribute(t.attribute)});break;case"updateValue":document.querySelector("".concat(t.target)).value=t.value?t.value:"";var c=new Event("change");document.querySelector("".concat(t.target)).dispatchEvent(c);break;case"submitForm":document.querySelector("".concat(t.target)).submit();break;case"openLink":document.querySelector("".concat(t.target)).value&&(window.location.href=document.querySelector("".concat(t.target)).value);break}},P=function(t,e){var a=JSON.parse(t.getAttribute("data-values")),o=document.querySelector(e.target);if(!a)return!1;Object.keys(a).forEach(i=>{document.getElementById(i)&&document.getElementById(i).tagName=="SPAN"&&(document.getElementById(i).innerHTML=a[i]),o.querySelector('select[name="'.concat(i,'"] [value="').concat(a[i],'"]'))?(o.querySelector('select[name="'.concat(i,'"]')).value=a[i],t.hasAttribute("data-lock-fields")&&(o.querySelector('select[name="'.concat(i,'"]')).disabled=!0)):o.querySelector('input[name="'.concat(i,'"][type="radio"][value="').concat(a[i],'"]'))?(Array.from(o.querySelectorAll('input[name="'.concat(i,'"][type="radio"]'))).forEach(function(c){c.disabled=!0}),o.querySelector('input[name="'.concat(i,'"][type="radio"][value="').concat(a[i],'"]')).checked=!0,o.querySelector('input[name="'.concat(i,'"][type="radio"][value="').concat(a[i],'"]')).disabled=!1):o.querySelector('input[name="'.concat(i,'"]'))&&(o.querySelector('input[name="'.concat(i,'"]')).value=a[i],t.hasAttribute("data-lock-fields")&&o.querySelector('input[name="'.concat(i,'"]')).setAttribute("readonly","true"))})},h=function(r,t,e,a){function o(i){return i instanceof e?i:new e(function(c){c(i)})}return new(e||(e=Promise))(function(i,c){function n(d){try{s(a.next(d))}catch(u){c(u)}}function l(d){try{s(a.throw(d))}catch(u){c(u)}}function s(d){d.done?i(d.value):o(d.value).then(n,l)}s((a=a.apply(r,t||[])).next())})},_=r=>h(void 0,void 0,void 0,function*(){document.querySelector(".youtube-link[data-youtube]")&&!document.body.classList.contains("youtubeLoaded")&&(yield w()),setTimeout(()=>h(void 0,void 0,void 0,function*(){document.querySelector(".youtube-link[data-youtube]")&&!document.body.classList.contains("youtubeLoaded")&&(yield w())}),"2000"),r.addEventListener("click",t=>h(void 0,void 0,void 0,function*(){var e=t.target.closest(".youtube-link[data-youtube]");if(e||(e=t.target.closest(".vimeo-link[data-vimeo]")),e&&e.hasAttribute("data-youtube")){t.preventDefault(),document.body.classList.contains("youtubeLoaded")||(yield w());var a="youtube-"+e.getAttribute("data-youtube");document.getElementById("".concat(a,"-dialog"))||document.body.insertAdjacentHTML("beforeend",'<dialog id="'.concat(a,'-dialog"><div class="embed" id="').concat(a,'"></div></dialog>'));var o=document.getElementById("".concat(a,"-dialog")),i=document.getElementById(a),c=new CustomEvent("play-video",{detail:{"Video Type":"YoutTube",ID:e.getAttribute("data-youtube")}});e.dispatchEvent(c),window.dataLayer.push(c.detail),R(i,e.getAttribute("data-youtube")),o.showModal(),o.addEventListener("close",()=>{window.player[i.getAttribute("id")]&&typeof window.player[i.getAttribute("id")].pauseVideo=="function"&&window.player[i.getAttribute("id")].pauseVideo();var f=new CustomEvent("close-video",{detail:{"Video Type":"YoutTube",ID:e.getAttribute("data-youtube")}});e.dispatchEvent(f),window.dataLayer.push(f.detail)})}else if(e&&e.hasAttribute("data-vimeo")){t.preventDefault();var n="vimeo-"+e.getAttribute("data-youtube");document.getElementById("".concat(n,"-dialog"))||document.body.insertAdjacentHTML("beforeend",'<dialog id="'.concat(n,'-dialog"><div class="embed" id="').concat(n,'"></div></dialog>'));var l=document.getElementById("".concat(n,"-dialog")),s=document.getElementById(n),d=e.getAttribute("data-vimeo"),u=new CustomEvent("play-video",{detail:{"Video Type":"Vimeo",ID:d}});e.dispatchEvent(u),window.dataLayer.push(u.detail),s.querySelector("iframe")||(s.innerHTML='<iframe src="https://player.vimeo.com/video/'.concat(d,'?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>')),l.showModal(),l.addEventListener("close",()=>{s.innerHTML="";var f=new CustomEvent("close-video",{detail:{"Video Type":"Vimeo",ID:e.getAttribute("data-vimeo")}});e.dispatchEvent(f),window.dataLayer.push(f.detail)})}}))}),w=()=>h(void 0,void 0,void 0,function*(){return new Promise((r,t)=>{var e=new Image;e.onload=function(){var a=document.createElement("script");a.src="https://www.youtube.com/iframe_api";var o=document.getElementsByTagName("script")[0];o.parentNode.insertBefore(a,o),document.body.classList.add("youtubeLoaded"),r(!0)},e.onerror=function(){t(!1)},e.src="https://youtube.com/favicon.ico"})}),R=(r,t)=>h(void 0,void 0,void 0,function*(){typeof window.player>"u"&&(window.player=[]);var e=r.getAttribute("id");if(typeof window.player[e]<"u"&&typeof window.player[e].pauseVideo=="function")return window.player[e].playVideo(),!1;window.player[e]=new YT.Player(e,{height:"100%",width:"100%",videoId:t,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:a,onStateChange:i}});function a(c){c.target.playVideo()}var o=!1;function i(c){if(c.data==YT.PlayerState.PLAYING&&!o){var n=document.getElementById(e);n.classList.add("player-ready"),o=!0}}}),O=function(r,t,e,a){function o(i){return i instanceof e?i:new e(function(c){c(i)})}return new(e||(e=Promise))(function(i,c){function n(d){try{s(a.next(d))}catch(u){c(u)}}function l(d){try{s(a.throw(d))}catch(u){c(u)}}function s(d){d.done?i(d.value):o(d.value).then(n,l)}s((a=a.apply(r,t||[])).next())})};document.addEventListener("DOMContentLoaded",()=>O(void 0,void 0,void 0,function*(){I(),Y(),b(document.body),H(),D(document.body),N(document.body),_(document.body)}))}));
|
|
4
|
+
*/(function(v){typeof define=="function"&&define.amd?define(v):v()})((function(){"use strict";var v=r=>{r.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&r.classList.add("ie")},H=r=>{var t=function(a){var o=document.querySelector('label[for="'.concat(a.replace("#",""),'"]')),i=document.querySelector(a+" summary"),c=document.querySelector("dialog".concat(a)),n=document.querySelector("detail".concat(a));o instanceof HTMLElement?o.click():i instanceof HTMLElement?i.click():c instanceof HTMLElement?c.showModal():n instanceof HTMLElement&&n.addAttribute("open")};location.hash&&t(location.hash),window.addEventListener("hashchange",function(){t(location.hash)},!1),addEventListener("popstate",e=>{if(e&&e.state&&e.state.type&&e.state.type=="pagination"){var a=document.querySelector("#".concat(e.state.form)),o=document.querySelector("#".concat(e.state.form," [data-pagination]"));o?o.value=e.state.page:a.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(e.state.page,'" />'),a.dispatchEvent(new Event("submit"))}}),document.addEventListener("submit",e=>{if(e&&e.target instanceof HTMLElement&&e.target.matches("form")){var a=e.target;Array.from(a.querySelectorAll("[data-password-type]")).forEach(o=>{o.setAttribute("type","password")}),(a.querySelector(":invalid")||a.querySelector('.pwd-checker[data-strength="1"]')||a.querySelector('.pwd-checker[data-strength="2"]'))&&(a.classList.add("was-validated"),e.preventDefault()),a.querySelector("iam-multiselect[data-is-required][data-error]")&&(a.classList.add("was-validated"),e.preventDefault())}}),document.addEventListener("keydown",e=>{e.key==="Escape"&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(e.preventDefault(),e.stopPropagation())}),Array.from(document.querySelectorAll("label progress")).forEach(e=>{var a=e.closest("label");a.setAttribute("data-percent",e.getAttribute("value"))})},D=r=>(Array.from(r.querySelectorAll("dialog[open]")).forEach(t=>{var e=t.closest(".dialog__wrapper");e||(t.removeAttribute("open"),t.showModal(),t.focus(),L(t))}),r.addEventListener("click",t=>{if(t.target.tagName=="IAM-ACTIONBAR")return!1;if(t&&t.target instanceof HTMLElement&&t.target.closest("[data-modal]")){var e=t.target.closest("[data-modal]"),a=e.hasAttribute("data-modal")?e.getAttribute("data-modal"):e.getAttribute("data-filter"),o=document.querySelector("dialog#".concat(a));if(L(o),o.showModal(),o.focus(),!o.querySelector("iam-multi-step")){var i=o.offsetWidth;o.setAttribute("style","max-width: ".concat(i,"px;"))}Array.from(o.querySelectorAll("[data-duplicate]")).forEach(g=>{var U=g.getAttribute("data-duplicate"),x=document.getElementById(U);if(g.checked!=x.checked){g.checked=x.checked;var X=new Event("change");g.dispatchEvent(X)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:a})}if(t&&t.target instanceof HTMLElement&&t.target.closest("button.dialog__close")){var c=t.target.closest("dialog[open]");t.preventDefault(),c.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach(g=>{g.classList.remove("active")});var n=new CustomEvent("dialog-closed",{bubbles:!0,cancelable:!0,detail:{modalId:c.id}});t.target.dispatchEvent(n),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:c.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest('button[formmethod="dialog"]')){var l=t.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach(g=>{g.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:l.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest("dialog[open]")){var d=t.target.closest("dialog[open]"),s=window.getComputedStyle(d);if(s.display==="contents"&&(d=d.parentNode.closest("dialog[open]")),!d.classList.contains("dialog--transactional")&&!d.classList.contains("dialog--acknowledgement")){var u=d.getBoundingClientRect();(t.clientX<u.left||t.clientX>u.right||t.clientY<u.top||t.clientY>u.bottom)&&(t.target.closest("dialog *")||d.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:d.getAttribute("id")}))}}if(t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__wrapper > button")){var f=t.target.closest(".dialog__wrapper > button"),S=f.parentNode;if(S.querySelector("dialog")){t.stopPropagation();var q="openPopover",y=S.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=y&&f.closest("dialog[open]")!=document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach(g=>{g.removeAttribute("aria-expanded")}),y.hasAttribute("open"))y.close(),q="closePopover",y.removeAttribute("style"),f.removeAttribute("aria-expanded");else{y.show(),f.setAttribute("aria-expanded",!0);var k=f.getBoundingClientRect(),T=k.top,M=k.left;if(f.closest("iam-table")){var C=f.closest("iam-table").parentNode.getBoundingClientRect();T-=C.top,M-=C.left}y.classList.contains("dialog--fix")&&y.setAttribute("style","position:fixed;top: ".concat(T,"px; left: ").concat(M,"px; margin: 3rem 0 0 0;"))}var A=y.getBoundingClientRect(),F=A.bottom-window.scrollY,W=window.innerHeight-window.scrollY;if(F>W){var G=y.hasAttribute("style")?y.getAttribute("style")+" ":"";y.setAttribute("style",G+"transform: translate(0, calc(-100% - 4rem))"),A=y.getBoundingClientRect();var J=A.top-window.scrollY;J<100&&y.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:q,id:f.textContent})}}t&&t.target instanceof HTMLElement&&!t.target.closest("dialog[open]")&&!t.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(g=>{g.removeAttribute("aria-expanded")}))}),null),L=r=>{if(!r.querySelector(":scope .mh-lg")&&!r.querySelector("iam-multi-step")){r.innerHTML='<div class="mh-lg">'.concat(r.innerHTML,"</div>");var t=r.querySelector(".mh-lg"),e=r.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(e){var a=e.previousSibling;t.before(e),a&&e.before(a)}}r.querySelector(":scope > button:first-child")||r.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')};function I(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",r=>{var t=r.target.closest("[open] summary");if(t)window.dataLayer.push({event:"closeDetails",detailsTitle:t.textContent||""});else{var e=r.target.closest("summary"),a=r.target.closest("a"),o=r.target.closest("button");e&&window.dataLayer.push({event:"openDetails",detailsTitle:e.textContent||""}),a&&window.dataLayer.push({event:"linkClicked",linkText:a.hasAttribute("title")?a.getAttribute("title")||"":a.textContent||"",class:a.hasAttribute("class")&&a.getAttribute("class")||"",href:a.getAttribute("href")||""}),o&&window.dataLayer.push({event:"buttonClicked",buttonText:o.textContent||"",class:o.hasAttribute("class")&&o.getAttribute("class")||""})}})}function B(r){var t=new TextEncoder("utf-8").encode(r);return crypto.subtle.digest("SHA-1",t).then(function(e){for(var a=[],o=new DataView(e),i=0;i<o.byteLength;i+=4){var c=o.getUint32(i),n=c.toString(16),l="00000000",d=(l+n).slice(-l.length);a.push(d)}return a.join("")})}var V=(r,t)=>{B(r).then(function(e){var a=new XMLHttpRequest;a.addEventListener("load",function(){var o=this.responseText.split(`
|
|
5
|
+
`),i=e.slice(5).toUpperCase(),c=!1;for(var n in o)if(o[n].substring(0,35)==i){c=!0;break}var l=new CustomEvent("hibpCheck",{detail:c});t.dispatchEvent(l)}),a.open("GET","https://api.pwnedpasswords.com/range/"+e.substr(0,5)),a.send()})},N=r=>{function t(){if(document.querySelector('input[type="date"]')){let a=function(o){var i=o.getFullYear(),c=String(o.getMonth()+1).padStart(2,"0"),n=String(o.getDate()).padStart(2,"0");return"".concat(i,"-").concat(c,"-").concat(n)};var e=new Date;Array.from(document.querySelectorAll('input[type="date"]')).forEach(o=>{var i=e;if(o.hasAttribute("data-start")&&(i.setDate(i.getDate()+parseInt(o.getAttribute("data-start"))),o.setAttribute("min",a(i))),o.hasAttribute("data-period")){var c=parseInt(o.getAttribute("data-period")),n=new Date;n.setDate(i.getDate()+c),o.setAttribute("max",a(n))}if(o.hasAttribute("data-allowed-days")){var l=JSON.parse("[".concat(o.getAttribute("data-allowed-days"),"]"));o.addEventListener("input",function(){var d=new Date(this.value).getUTCDay();l.includes(d)?o.setCustomValidity(""):o.setCustomValidity("That day of the week is not allowed")})}})}}document.readyState==="complete"&&t(),document.onreadystatechange=()=>{document.readyState==="complete"&&t()},r.addEventListener("input",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("input,textarea,select")){var a=e.target.closest("input,textarea,select");a.hasAttribute("type")&&a.getAttribute("type")=="color"&&(a.nextElementSibling.value=a.value),a.hasAttribute("data-strength-checker")&&b(a)}}),r.addEventListener("change",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("select")){var a=e.target.closest("select");if(a.hasAttribute("data-change-type")&&a.hasAttribute("data-input")){var o=document.getElementById(a.getAttribute("data-input")),i=a.value;E(o,i)}}if(e&&e.target instanceof HTMLElement&&e.target.closest('dialog [type="radio"]')){var c=e.target.closest("dialog");Array.from(c.querySelectorAll('[type="radio"][autofocus]')).forEach(n=>{n.removeAttribute("autofocus")}),Array.from(c.querySelectorAll('[type="radio"]:checked')).forEach(n=>{n.setAttribute("autofocus",!0)})}}),r.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-change-type][data-input]:not(select)")){var a=e.target.closest("[data-change-type]"),o=document.getElementById(a.getAttribute("data-input")),i=a.getAttribute("data-change-type");if(a.setAttribute("data-change-type",o.getAttribute("type")),E(o,i),a.hasAttribute("data-alt-class")){var c=a.getAttribute("data-alt-class");a.setAttribute("data-alt-class",a.getAttribute("class")),a.setAttribute("class",c)}}})},E=(r,t)=>{r.hasAttribute("type")&&r.getAttribute("type")=="password"&&r.setAttribute("data-password-type",!0),r.setAttribute("type",t)},b=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"no",a=document.getElementById(t.getAttribute("data-strength-checker")),o=t.value,i=t.hasAttribute("minlength")?t.getAttribute("minlength"):12,c=1,n=["Very weak","Weak","Average","Strong","Very strong"],l="";if(o.match(/(?=.*[0-9])/)&&(c+=1),o.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/)&&(c+=1),o.match(/(?=.*[a-z])/)&&(c+=1),o.match(/(?=.*[A-Z])/)&&(c+=1),o.length<i&&(c=1,l="(must be at least ".concat(i," characters.)")),c>=3&&e=="no"){let d=function(s,u){s.detail?b(u,"danger"):b(u,"success"),u.removeEventListener("hibpCheck",d)};V(o,t),t.addEventListener("hibpCheck",function(s){d(s,t)})}else c>=3&&e=="danger"&&(c=3,l="(this password is very common)");a&&(c<=3?a.classList.add("invalid-feedback"):a.classList.remove("invalid-feedback"),a.setAttribute("data-strength",c),a.innerHTML="Password strength: ".concat(n[c-1]," ").concat(l))};window.triggerDynamicEvent=function(r){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"change";console.log("event"),r.hasAttribute("data-change-events")&&t=="change"&&p(r,r.getAttribute("data-change-events")),r.hasAttribute("data-click-events")&&t=="click"&&p(r,r.getAttribute("data-click-events"))};var Y=()=>{document.addEventListener("change",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&p(r.target,r.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("keyup",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&p(r.target,r.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("click",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-click-events]")&&p(r.target,r.target.closest("[data-click-events]").getAttribute("data-click-events"))})},p=(r,t)=>{if(t||(t=r.parentNode.getAttribute("data-change-events")),!t)return!1;Array.from(JSON.parse(t)).forEach(e=>{P(r,e)})},P=(r,t)=>{if("matches"in t)return t.matches=="any"||r.value==t.matches?m(r,t,"if"):m(r,t,"else"),!1;if("in-list"in t){var e=document.querySelector("".concat(t["in-list"],' option[value="').concat(r.value,'"]'));return document.querySelector("".concat(t["in-list"],' option[value="').concat(r.value,'"]'))?m(e,t,"if"):m(e,t,"else"),!1}else"event"in t&&m(r,t,"event")},m=(r,t,e)=>{if(!(e in t))return!1;switch(t[e]){case"hide":if(document.querySelector(t.target)){var a=document.querySelector(t.target);a.classList.add("js-hide"),Array.from(a.querySelectorAll("[data-required]")).forEach(n=>{n.removeAttribute("required")})}break;case"show":if(document.querySelector(t.target)){var o=document.querySelector(t.target);o.classList.remove("js-hide"),Array.from(o.querySelectorAll("[data-required]")).forEach(n=>{n.closest(".js-hide")||n.setAttribute("required","true")})}break;case"populate-form":_(r,t);break;case"dispatchEvent":var i=new Event(t.value);document.querySelector("".concat(t.target)).dispatchEvent(i);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach(function(n){n.setAttribute(t.attribute,t.value)});break;case"focus":document.querySelector("".concat(t.target)).focus();break;case"removeAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach(function(n){n.removeAttribute(t.attribute)});break;case"updateValue":document.querySelector("".concat(t.target)).value=t.value?t.value:"";var c=new Event("change");document.querySelector("".concat(t.target)).dispatchEvent(c);break;case"submitForm":document.querySelector("".concat(t.target)).submit();break;case"openLink":document.querySelector("".concat(t.target)).value&&(window.location.href=document.querySelector("".concat(t.target)).value);break}},_=function(t,e){var a=JSON.parse(t.getAttribute("data-values")),o=document.querySelector(e.target);if(!a)return!1;Object.keys(a).forEach(i=>{document.getElementById(i)&&document.getElementById(i).tagName=="SPAN"&&(document.getElementById(i).innerHTML=a[i]),o.querySelector('select[name="'.concat(i,'"] [value="').concat(a[i],'"]'))?(o.querySelector('select[name="'.concat(i,'"]')).value=a[i],t.hasAttribute("data-lock-fields")&&(o.querySelector('select[name="'.concat(i,'"]')).disabled=!0)):o.querySelector('input[name="'.concat(i,'"][type="radio"][value="').concat(a[i],'"]'))?(Array.from(o.querySelectorAll('input[name="'.concat(i,'"][type="radio"]'))).forEach(function(c){c.disabled=!0}),o.querySelector('input[name="'.concat(i,'"][type="radio"][value="').concat(a[i],'"]')).checked=!0,o.querySelector('input[name="'.concat(i,'"][type="radio"][value="').concat(a[i],'"]')).disabled=!1):o.querySelector('input[name="'.concat(i,'"]'))&&(o.querySelector('input[name="'.concat(i,'"]')).value=a[i],t.hasAttribute("data-lock-fields")&&o.querySelector('input[name="'.concat(i,'"]')).setAttribute("readonly","true"))})},h=function(r,t,e,a){function o(i){return i instanceof e?i:new e(function(c){c(i)})}return new(e||(e=Promise))(function(i,c){function n(s){try{d(a.next(s))}catch(u){c(u)}}function l(s){try{d(a.throw(s))}catch(u){c(u)}}function d(s){s.done?i(s.value):o(s.value).then(n,l)}d((a=a.apply(r,t||[])).next())})},j=r=>h(void 0,void 0,void 0,function*(){document.querySelector(".youtube-link[data-youtube]")&&!document.body.classList.contains("youtubeLoaded")&&(yield w()),setTimeout(()=>h(void 0,void 0,void 0,function*(){document.querySelector(".youtube-link[data-youtube]")&&!document.body.classList.contains("youtubeLoaded")&&(yield w())}),"2000"),r.addEventListener("click",t=>h(void 0,void 0,void 0,function*(){var e=t.target.closest(".youtube-link[data-youtube]");if(e||(e=t.target.closest(".vimeo-link[data-vimeo]")),e&&e.hasAttribute("data-youtube")){t.preventDefault(),document.body.classList.contains("youtubeLoaded")||(yield w());var a="youtube-"+e.getAttribute("data-youtube");document.getElementById("".concat(a,"-dialog"))||document.body.insertAdjacentHTML("beforeend",'<dialog id="'.concat(a,'-dialog"><div class="embed" id="').concat(a,'"></div></dialog>'));var o=document.getElementById("".concat(a,"-dialog")),i=document.getElementById(a),c=new CustomEvent("play-video",{detail:{"Video Type":"YoutTube",ID:e.getAttribute("data-youtube")}});e.dispatchEvent(c),window.dataLayer.push(c.detail),R(i,e.getAttribute("data-youtube")),o.showModal(),o.addEventListener("close",()=>{window.player[i.getAttribute("id")]&&typeof window.player[i.getAttribute("id")].pauseVideo=="function"&&window.player[i.getAttribute("id")].pauseVideo();var f=new CustomEvent("close-video",{detail:{"Video Type":"YoutTube",ID:e.getAttribute("data-youtube")}});e.dispatchEvent(f),window.dataLayer.push(f.detail)})}else if(e&&e.hasAttribute("data-vimeo")){t.preventDefault();var n="vimeo-"+e.getAttribute("data-youtube");document.getElementById("".concat(n,"-dialog"))||document.body.insertAdjacentHTML("beforeend",'<dialog id="'.concat(n,'-dialog"><div class="embed" id="').concat(n,'"></div></dialog>'));var l=document.getElementById("".concat(n,"-dialog")),d=document.getElementById(n),s=e.getAttribute("data-vimeo"),u=new CustomEvent("play-video",{detail:{"Video Type":"Vimeo",ID:s}});e.dispatchEvent(u),window.dataLayer.push(u.detail),d.querySelector("iframe")||(d.innerHTML='<iframe src="https://player.vimeo.com/video/'.concat(s,'?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>')),l.showModal(),l.addEventListener("close",()=>{d.innerHTML="";var f=new CustomEvent("close-video",{detail:{"Video Type":"Vimeo",ID:e.getAttribute("data-vimeo")}});e.dispatchEvent(f),window.dataLayer.push(f.detail)})}}))}),w=()=>h(void 0,void 0,void 0,function*(){return new Promise((r,t)=>{var e=new Image;e.onload=function(){var a=document.createElement("script");a.src="https://www.youtube.com/iframe_api";var o=document.getElementsByTagName("script")[0];o.parentNode.insertBefore(a,o),document.body.classList.add("youtubeLoaded"),r(!0)},e.onerror=function(){t(!1)},e.src="https://youtube.com/favicon.ico"})}),R=(r,t)=>h(void 0,void 0,void 0,function*(){typeof window.player>"u"&&(window.player=[]);var e=r.getAttribute("id");if(typeof window.player[e]<"u"&&typeof window.player[e].pauseVideo=="function")return window.player[e].playVideo(),!1;window.player[e]=new YT.Player(e,{height:"100%",width:"100%",videoId:t,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:a,onStateChange:i}});function a(c){c.target.playVideo()}var o=!1;function i(c){if(c.data==YT.PlayerState.PLAYING&&!o){var n=document.getElementById(e);n.classList.add("player-ready"),o=!0}}}),O=function(r,t,e,a){function o(i){return i instanceof e?i:new e(function(c){c(i)})}return new(e||(e=Promise))(function(i,c){function n(s){try{d(a.next(s))}catch(u){c(u)}}function l(s){try{d(a.throw(s))}catch(u){c(u)}}function d(s){s.done?i(s.value):o(s.value).then(n,l)}d((a=a.apply(r,t||[])).next())})};document.addEventListener("DOMContentLoaded",()=>O(void 0,void 0,void 0,function*(){I(),Y(),v(document.body),H(),D(document.body),N(document.body),j(document.body)}))}));
|
|
6
6
|
//# sourceMappingURL=scripts.bundle.js.map
|