@iamproperty/components 7.1.0--beta5 → 7.1.0--beta7
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.css.map +1 -1
- package/assets/css/components/actionbar.global.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/card.component.css.map +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/carousel.config.css.map +1 -1
- package/assets/css/components/charts.module.css +1 -1
- package/assets/css/components/charts.module.css.map +1 -1
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/marketing.css.map +1 -1
- package/assets/css/components/multi-step.component.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.map +1 -1
- package/assets/css/components/nav.css.map +1 -1
- package/assets/css/components/nav.docs.css.map +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/nav.old.css.map +1 -1
- package/assets/css/components/nav.preload.css.map +1 -1
- package/assets/css/components/notification.css.map +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/property-searchbar.css.map +1 -1
- package/assets/css/components/snapshot.css.map +1 -1
- package/assets/css/components/stepper.css.map +1 -1
- package/assets/css/components/table.global.css.map +1 -1
- package/assets/css/components/tabs.css +1 -1
- package/assets/css/components/tabs.css.map +1 -1
- package/assets/css/components/testimonial.css.map +1 -1
- package/assets/css/components/timeline.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.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.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +4 -4
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.min.js +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +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.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +5 -0
- package/assets/js/components/multiselect/multiselect.component.min.js +3 -3
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js +1 -1
- package/assets/js/components/table/table.component.js +4 -2
- package/assets/js/components/table/table.component.min.js +2 -2
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +4 -4
- 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.bundle.js +1 -1
- package/assets/js/modules/chart.module.js +19 -5
- package/assets/js/modules/tabs.js +12 -22
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/sass/_bs_grid.scss +36 -0
- package/assets/sass/_corefiles.scss +1 -18
- package/assets/sass/_func.scss +2 -4
- package/assets/sass/_functions/mixins.scss +0 -39
- package/assets/sass/_functions/utility-mixins.scss +1433 -0
- package/assets/sass/{foundations/grid.scss → _grid.scss} +83 -83
- package/assets/sass/_utilities.scss +26 -118
- package/assets/sass/_utility-mixins.scss +32 -0
- package/assets/sass/components/barchart.component.scss +2 -0
- package/assets/sass/components/charts.module.scss +29 -2
- package/assets/sass/components/multiselect.scss +1 -1
- package/assets/sass/components/tabs.scss +2 -3
- package/assets/sass/core.scss +3 -1
- package/assets/sass/elements/admin-panel.scss +62 -9
- package/assets/sass/elements/container.scss +33 -0
- package/assets/sass/email.scss +4 -0
- package/assets/sass/error.scss +4 -0
- package/assets/sass/helpers/line-clamp.scss +0 -23
- package/assets/sass/main.scss +4 -1
- package/assets/ts/components/multiselect/multiselect.component.ts +5 -0
- package/assets/ts/components/table/table.component.ts +8 -5
- package/assets/ts/modules/chart.module.ts +24 -5
- package/assets/ts/modules/tabs.ts +11 -23
- package/dist/components.es.js +11 -11
- package/dist/components.umd.js +14 -14
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/assets/sass/components.reset.scss +0 -8
- package/assets/sass/foundations/bs_grid.scss +0 -32
- /package/assets/sass/_functions/{utilities.scss → bs_utilities.scss} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.component.min.js","sources":["../../modules/helpers.js","../../modules/tabs.js","tabs.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 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, index) => {\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, index) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\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\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 .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};\n","// @ts-nocheck\nimport { getSwipeDirection } from './helpers.js';\nexport const createTabsLinks = function (tabsElement) {\n const details = tabsElement.querySelectorAll(':scope > details');\n const detailsORLinks = tabsElement.querySelectorAll(':scope > details, :scope > a');\n const summaries = tabsElement.querySelectorAll(':scope > details > summary');\n let tabLinks = tabsElement.querySelector(':scope > .tabs__links');\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 // Create the tab buttons from the summary titles\n let tabindex = 0;\n detailsORLinks.forEach((element, index) => {\n let button = document.createElement('button');\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 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 });\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 let nextButton = tabsElement.querySelector(':scope .tabs__next');\n var 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(':scope .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 if (window.isScrolling)\n return;\n if (!window.triggered)\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 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 if (button.matches(':last-child')) {\n nextButton.setAttribute('disabled', 'disabled');\n }\n else {\n nextButton.removeAttribute('disabled');\n }\n // Data layer Open Event\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'openTab',\n tabTitle: button.textContent,\n });\n });\n });\n buttonWrapper.addEventListener('scroll', (event) => {\n if (window.isScrolling)\n return;\n clearTimeout(scrollTimeout);\n window.isScrolling = true;\n });\n buttonWrapper.addEventListener('scrollend', (event) => {\n window.isScrolling = false;\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(function () {\n if (window.isClicked) {\n window.isClicked = false;\n return false;\n }\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 window.triggered = true;\n buttonToClick.focus();\n buttonToClick.click();\n window.triggered = false;\n }, 200);\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.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 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","// @ts-nocheck\nimport 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.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__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","tabLinksWrapper","tabindex","element","index","button","summary","isDisabled","setTabsEventHandlers","details","summaries","buttonWrapper","buttons","nextButton","scrollTimeout","e","buttonLoopItem","buttonPressed","detail","detailsIndex","detailsOpen","event","buttonToClick","closestOffset","nextTab","direction","currentTab","prevTab","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":["// @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 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, index) => {\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, index) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\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\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 .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};\n","// @ts-nocheck\nimport { getSwipeDirection } from './helpers.js';\nexport const createTabsLinks = function (tabsElement) {\n const details = tabsElement.querySelectorAll(':scope > details');\n const detailsORLinks = tabsElement.querySelectorAll(':scope > details, :scope > a');\n const summaries = tabsElement.querySelectorAll(':scope > details > summary');\n let tabLinks = tabsElement.querySelector(':scope > .tabs__links');\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 // Create the tab buttons from the summary titles\n let tabindex = 0;\n detailsORLinks.forEach((element, index) => {\n let button = document.createElement('button');\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 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 });\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 let nextButton = tabsElement.querySelector(':scope .tabs__next');\n var 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(':scope .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 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 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 // Data layer Open Event\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'openTab',\n tabTitle: button.textContent,\n });\n });\n });\n buttonWrapper.addEventListener('scrollend', (event) => {\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 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","// @ts-nocheck\nimport 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.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__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","tabLinksWrapper","tabindex","element","index","button","summary","isDisabled","setTabsEventHandlers","details","summaries","buttonWrapper","buttons","nextButton","scrollTimeout","e","buttonLoopItem","buttonPressed","detail","detailsIndex","detailsOpen","event","buttonToClick","closestOffset","nextTab","direction","currentTab","prevTab","openFirstTab","tabs","iamTabs","assetLocation","coreCSS","template","classList"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.1.0--
|
|
2
|
+
* iamKey v7.1.0--beta7
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/const u=i=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:i})},p=(i,t,e)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),e.forEach(r=>{i.addEventListener(r,function(o){const a={event:r,element:t,target:o.target};Object.keys(o.detail).forEach(d=>{const n=o.detail[d];a[d]=n}),window.dataLayer.push(a)})}),!0),h=`<div class="card__head" part="head">
|
|
5
5
|
<slot name="head"></slot>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.1.0--
|
|
2
|
+
* iamKey v7.1.0--beta7
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/(function(t){typeof define=="function"&&define.amd?define(t):t()})(function(){"use strict";var t=["accordion","header","table","tabs","card","filter-card","video-card","record-card","filterlist","applied-filters","pagination","notification","actionbar","nav","collapsible-side","address-lookup","fileupload","search","inline-edit","multiselect","multi-step","slider","carousel","marketing","barchart"],a="iam",i={rootMargin:"50px",threshold:.1},r=".component.min.js";t.forEach(e=>{if(document.getElementsByTagName("".concat(a,"-").concat(e)).length!==0){var s=l=>{l.forEach(o=>{o.intersectionRatio>0&&(console.log(e),import("./components/".concat(e,"/").concat(e).concat(r)).then(c=>{window.customElements.get("".concat(a,"-").concat(e))||window.customElements.define("".concat(a,"-").concat(e),c.default)}).catch(c=>{console.log(c.message)}),n.unobserve(o.target))})},n=new IntersectionObserver(s,i);n.observe(document.getElementsByTagName("".concat(a,"-").concat(e))[0])}})});
|
|
5
5
|
//# sourceMappingURL=components.bundle.js.map
|
|
@@ -185,12 +185,24 @@ export const setCellData = function (chartElement, table) {
|
|
|
185
185
|
let rowValue = 0;
|
|
186
186
|
// Set the data numeric value if not set
|
|
187
187
|
Array.from(tr.querySelectorAll('td:not(:first-child)')).forEach((td) => {
|
|
188
|
-
|
|
188
|
+
// Ignore the buttons and links inside
|
|
189
|
+
const copyTD = td.cloneNode(true);
|
|
190
|
+
Array.from(copyTD.querySelectorAll('*')).forEach((element) => {
|
|
191
|
+
element.remove();
|
|
192
|
+
});
|
|
193
|
+
const value = parseFloat(copyTD.textContent.replace('£', '').replace('%', '').replace(',', ''));
|
|
189
194
|
td.setAttribute('data-numeric', value);
|
|
190
|
-
td.setAttribute('data-value',
|
|
195
|
+
td.setAttribute('data-value', copyTD.textContent);
|
|
191
196
|
const display = getComputedStyle(td).display;
|
|
192
197
|
if (display != 'none')
|
|
193
198
|
rowValue += value;
|
|
199
|
+
Array.from(td.querySelectorAll('a, button')).forEach((element, index) => {
|
|
200
|
+
if (index == 0) {
|
|
201
|
+
element.insertAdjacentHTML('beforeBegin', '<hr/>');
|
|
202
|
+
}
|
|
203
|
+
element.classList.add('btn');
|
|
204
|
+
element.classList.add('btn-tertiary');
|
|
205
|
+
});
|
|
194
206
|
});
|
|
195
207
|
tr.setAttribute('data-numeric', rowValue);
|
|
196
208
|
});
|
|
@@ -255,9 +267,11 @@ export const setLongestValue = function (chartOuter) {
|
|
|
255
267
|
const chartWrapper = chartOuter.querySelector('.chart__wrapper');
|
|
256
268
|
const table = chartOuter.querySelector('.chart table');
|
|
257
269
|
let longestValue = '';
|
|
258
|
-
Array.from(table.querySelectorAll('tbody tr td:not(:first-child)
|
|
259
|
-
if (typeof td.
|
|
260
|
-
|
|
270
|
+
Array.from(table.querySelectorAll('tbody tr td:not(:first-child)')).forEach((td) => {
|
|
271
|
+
if (typeof td.getAttribute('data-value') != 'undefined' &&
|
|
272
|
+
td.getAttribute('data-value').length > longestValue.length) {
|
|
273
|
+
longestValue = td.getAttribute('data-value');
|
|
274
|
+
}
|
|
261
275
|
});
|
|
262
276
|
chartWrapper.setAttribute('data-longest-value', longestValue);
|
|
263
277
|
};
|
|
@@ -63,10 +63,7 @@ export const setTabsEventHandlers = function (tabsElement) {
|
|
|
63
63
|
buttons.forEach((button) => {
|
|
64
64
|
button.addEventListener('click', (e) => {
|
|
65
65
|
e.preventDefault();
|
|
66
|
-
|
|
67
|
-
return;
|
|
68
|
-
if (!window.triggered)
|
|
69
|
-
window.isClicked = true;
|
|
66
|
+
window.isClicked = true;
|
|
70
67
|
if (button.classList.contains('disabled'))
|
|
71
68
|
return false;
|
|
72
69
|
buttons.forEach((buttonLoopItem) => {
|
|
@@ -86,10 +83,10 @@ export const setTabsEventHandlers = function (tabsElement) {
|
|
|
86
83
|
detail.removeAttribute('open');
|
|
87
84
|
});
|
|
88
85
|
if (button.matches(':last-child')) {
|
|
89
|
-
nextButton.setAttribute('disabled', 'disabled');
|
|
86
|
+
nextButton === null || nextButton === void 0 ? void 0 : nextButton.setAttribute('disabled', 'disabled');
|
|
90
87
|
}
|
|
91
88
|
else {
|
|
92
|
-
nextButton.removeAttribute('disabled');
|
|
89
|
+
nextButton === null || nextButton === void 0 ? void 0 : nextButton.removeAttribute('disabled');
|
|
93
90
|
}
|
|
94
91
|
// Data layer Open Event
|
|
95
92
|
window.dataLayer = window.dataLayer || [];
|
|
@@ -99,20 +96,9 @@ export const setTabsEventHandlers = function (tabsElement) {
|
|
|
99
96
|
});
|
|
100
97
|
});
|
|
101
98
|
});
|
|
102
|
-
buttonWrapper.addEventListener('scroll', (event) => {
|
|
103
|
-
if (window.isScrolling)
|
|
104
|
-
return;
|
|
105
|
-
clearTimeout(scrollTimeout);
|
|
106
|
-
window.isScrolling = true;
|
|
107
|
-
});
|
|
108
99
|
buttonWrapper.addEventListener('scrollend', (event) => {
|
|
109
|
-
window.isScrolling = false;
|
|
110
100
|
clearTimeout(scrollTimeout);
|
|
111
101
|
scrollTimeout = setTimeout(function () {
|
|
112
|
-
if (window.isClicked) {
|
|
113
|
-
window.isClicked = false;
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
102
|
let buttonToClick = buttons[0];
|
|
117
103
|
let closestOffset = Math.abs(buttonToClick.getBoundingClientRect().left);
|
|
118
104
|
buttons.forEach((button) => {
|
|
@@ -121,11 +107,15 @@ export const setTabsEventHandlers = function (tabsElement) {
|
|
|
121
107
|
buttonToClick = button;
|
|
122
108
|
}
|
|
123
109
|
});
|
|
124
|
-
window.
|
|
110
|
+
if (window.isClicked) {
|
|
111
|
+
window.isClicked = false;
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
buttonToClick.click();
|
|
116
|
+
}
|
|
125
117
|
buttonToClick.focus();
|
|
126
|
-
|
|
127
|
-
window.triggered = false;
|
|
128
|
-
}, 200);
|
|
118
|
+
}, 500);
|
|
129
119
|
});
|
|
130
120
|
// Make sure we dont loose existing summary functionality
|
|
131
121
|
summaries.forEach((summary, index) => {
|
|
@@ -134,7 +124,7 @@ export const setTabsEventHandlers = function (tabsElement) {
|
|
|
134
124
|
buttons[index].click();
|
|
135
125
|
});
|
|
136
126
|
});
|
|
137
|
-
nextButton.addEventListener('click', (e) => {
|
|
127
|
+
nextButton === null || nextButton === void 0 ? void 0 : nextButton.addEventListener('click', (e) => {
|
|
138
128
|
e.preventDefault();
|
|
139
129
|
const currentTab = buttonWrapper.querySelector('[aria-pressed="true"]');
|
|
140
130
|
const nextTab = currentTab.nextSibling;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.1.0--
|
|
2
|
+
* iamKey v7.1.0--beta7
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/(function(h){typeof define=="function"&&define.amd?define(h):h()})(function(){"use strict";var h=r=>(r.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&r.classList.add("ie"),null),T=r=>{var e=function(t){var o=document.querySelector('label[for="'.concat(t.replace("#",""),'"]')),c=document.querySelector(t+" summary"),s=document.querySelector("dialog".concat(t)),n=document.querySelector("detail".concat(t));o instanceof HTMLElement?o.click():c instanceof HTMLElement?c.click():s instanceof HTMLElement?s.showModal():n instanceof HTMLElement&&n.addAttribute("open")};return location.hash&&e(location.hash),window.addEventListener("hashchange",function(){e(location.hash)},!1),addEventListener("popstate",a=>{if(a&&a.state&&a.state.type&&a.state.type=="pagination"){var t=document.querySelector("#".concat(a.state.form)),o=document.querySelector("#".concat(a.state.form," [data-pagination]"));o?o.value=a.state.page:t.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(a.state.page,'" />'),t.dispatchEvent(new Event("submit"))}}),document.addEventListener("submit",a=>{if(a&&a.target instanceof HTMLElement&&a.target.matches("form")){var t=a.target;Array.from(t.querySelectorAll("[data-password-type]")).forEach((o,c)=>{o.setAttribute("type","password")}),(t.querySelector(":invalid")||t.querySelector('.pwd-checker[data-strength="1"]')||t.querySelector('.pwd-checker[data-strength="2"]'))&&(t.classList.add("was-validated"),a.preventDefault()),t.querySelector("iam-multiselect[data-is-required][data-error]")&&(t.classList.add("was-validated"),a.preventDefault())}}),document.addEventListener("keydown",a=>{a.key==="Escape"&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(a.preventDefault(),a.stopPropagation())}),Array.from(document.querySelectorAll("label progress")).forEach((a,t)=>{var o=a.closest("label");o.setAttribute("data-percent",a.getAttribute("value"))}),null},C=r=>(Array.from(r.querySelectorAll("dialog[open]")).forEach((e,a)=>{var t=e.closest(".dialog__wrapper");t||(e.removeAttribute("open"),e.showModal(),e.focus(),v(e))}),r.addEventListener("click",e=>{if(e.target.tagName=="IAM-ACTIONBAR")return!1;if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-modal]")){var a=e.target.closest("[data-modal]"),t=a.hasAttribute("data-modal")?a.getAttribute("data-modal"):a.getAttribute("data-filter"),o=document.querySelector("dialog#".concat(t));if(v(o),o.showModal(),o.focus(),!o.querySelector("iam-multi-step")){var c=o.offsetWidth;o.setAttribute("style","max-width: ".concat(c,"px;"))}Array.from(o.querySelectorAll("[data-duplicate]")).forEach((u,p)=>{var W=u.getAttribute("data-duplicate"),M=document.getElementById(W);if(u.checked!=M.checked){u.checked=M.checked;var J=new Event("change");u.dispatchEvent(J)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:t})}if(e&&e.target instanceof HTMLElement&&e.target.closest("button.dialog__close")){var s=e.target.closest("dialog[open]");e.preventDefault(),s.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,p)=>{u.classList.remove("active")});var n=new CustomEvent("dialog-closed",{bubbles:!0,cancelable:!0,detail:{modalId:s.id}});e.target.dispatchEvent(n),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:s.getAttribute("id")})}if(e&&e.target instanceof HTMLElement&&e.target.closest('button[formmethod="dialog"]')){var i=e.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,p)=>{u.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(e&&e.target instanceof HTMLElement&&e.target.closest("dialog[open]")){var l=e.target.closest("dialog[open]"),y=window.getComputedStyle(l);if(y.display==="contents"&&(l=l.parentNode.closest("dialog[open]")),!l.classList.contains("dialog--transactional")&&!l.classList.contains("dialog--acknowledgement")){var g=l.getBoundingClientRect();(e.clientX<g.left||e.clientX>g.right||e.clientY<g.top||e.clientY>g.bottom)&&(e.target.closest("dialog *")||l.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:l.getAttribute("id")}))}}if(e&&e.target instanceof HTMLElement&&e.target.closest(".dialog__wrapper > button")){e.stopPropagation();var f=e.target.closest(".dialog__wrapper > button"),V=f.parentNode,E="openPopover",d=V.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=d&&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((u,p)=>{u.removeAttribute("aria-expanded")}),d.hasAttribute("open"))d.close(),E="closePopover",d.removeAttribute("style"),f.removeAttribute("aria-expanded");else{d.show(),f.setAttribute("aria-expanded",!0);var L=f.getBoundingClientRect(),q=L.top,x=L.left;if(f.closest("iam-table")){var k=f.closest("iam-table").parentNode.getBoundingClientRect();q-=k.top,x-=k.left}d.classList.contains("dialog--fix")&&d.setAttribute("style","position:fixed;top: ".concat(q,"px; left: ").concat(x,"px; margin: 3rem 0 0 0;"))}var w=d.getBoundingClientRect(),O=w.bottom-window.scrollY,Y=window.innerHeight-window.scrollY;if(O>Y){var R=d.hasAttribute("style")?d.getAttribute("style")+" ":"";d.setAttribute("style",R+"transform: translate(0, calc(-100% - 4rem))"),w=d.getBoundingClientRect();var F=w.top-window.scrollY;F<100&&d.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:E,id:f.textContent})}e&&e.target instanceof HTMLElement&&!e.target.closest("dialog[open]")&&!e.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((u,p)=>{u.removeAttribute("aria-expanded")}))}),null),v=r=>{if(!r.querySelector(":scope .mh-lg")&&!r.querySelector("iam-multi-step")){r.innerHTML='<div class="mh-lg">'.concat(r.innerHTML,"</div>");var e=r.querySelector(".mh-lg"),a=r.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(a){var t=a.previousSibling;e.before(a),t&&a.before(t)}}r.querySelector(":scope > button:first-child")||r.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')};function H(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",r=>{var e=r.target.closest("[open] summary");if(e)window.dataLayer.push({event:"closeDetails",detailsTitle:e.textContent||""});else{var a=r.target.closest("summary"),t=r.target.closest("a"),o=r.target.closest("button");a&&window.dataLayer.push({event:"openDetails",detailsTitle:a.textContent||""}),t&&window.dataLayer.push({event:"linkClicked",linkText:t.hasAttribute("title")?t.getAttribute("title")||"":t.textContent||"",class:t.hasAttribute("class")&&t.getAttribute("class")||"",href:t.getAttribute("href")||""}),o&&window.dataLayer.push({event:"buttonClicked",buttonText:o.textContent||"",class:o.hasAttribute("class")&&o.getAttribute("class")||""})}})}function D(r){var e=new TextEncoder("utf-8").encode(r);return crypto.subtle.digest("SHA-1",e).then(function(a){for(var t=[],o=new DataView(a),c=0;c<o.byteLength;c+=4){var s=o.getUint32(c),n=s.toString(16),i="00000000",l=(i+n).slice(-i.length);t.push(l)}return t.join("")})}var _=(r,e)=>{D(r).then(function(a){var t=new XMLHttpRequest;t.addEventListener("load",function(){var o=this.responseText.split(`
|
|
5
5
|
`),c=a.slice(5).toUpperCase(),s=!1;for(var n in o)if(o[n].substring(0,35)==c){s=!0;break}var i=new CustomEvent("hibpCheck",{detail:s});e.dispatchEvent(i)}),t.open("GET","https://api.pwnedpasswords.com/range/"+a.substr(0,5)),t.send()})},B=r=>{function e(){if(Array.from(document.querySelectorAll("input[maxlength],textarea[maxlength]")).forEach((t,o)=>{t.parentElement,I(t)}),Array.from(document.querySelectorAll("label input")).forEach((t,o)=>{!t.closest("label").querySelector(".optional-text")&&!t.hasAttribute("required")&&(t.parentNode.tagName.toLowerCase()=="span"?t.parentElement.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'):t.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'))}),document.querySelector('input[type="date"]')){let t=function(o){var c=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),n=String(o.getDate()).padStart(2,"0");return"".concat(c,"-").concat(s,"-").concat(n)};var a=new Date;Array.from(document.querySelectorAll('input[type="date"]')).forEach((o,c)=>{var s=a;if(o.hasAttribute("data-start")&&(s.setDate(s.getDate()+parseInt(o.getAttribute("data-start"))),o.setAttribute("min",t(s))),o.hasAttribute("data-period")){var n=parseInt(o.getAttribute("data-period")),i=new Date;i.setDate(s.getDate()+n),o.setAttribute("max",t(i))}if(o.hasAttribute("data-allowed-days")){var l=JSON.parse("[".concat(o.getAttribute("data-allowed-days"),"]"));o.addEventListener("input",function(y){var g=new Date(this.value).getUTCDay();l.includes(g)?o.setCustomValidity(""):o.setCustomValidity("That day of the week is not allowed")})}})}}document.readyState==="complete"&&e(),document.onreadystatechange=()=>{document.readyState==="complete"&&e()},r.addEventListener("input",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("input,textarea,select")){var t=a.target.closest("input,textarea,select");t.parentElement,t.hasAttribute("type")&&t.getAttribute("type")=="color"&&(t.nextElementSibling.value=t.value),t.hasAttribute("maxlength")&&t.nextElementSibling&&t.nextElementSibling.setAttribute("data-count",t.value.length),t.hasAttribute("data-strength-checker")&&b(t)}}),r.addEventListener("change",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("select")){var t=a.target.closest("select");if(t.hasAttribute("data-change-type")&&t.hasAttribute("data-input")){var o=document.getElementById(t.getAttribute("data-input")),c=t.value;S(o,c)}}if(a&&a.target instanceof HTMLElement&&a.target.closest('dialog [type="radio"]')){var s=a.target.closest("dialog");a.target.closest('dialog [type="radio"]'),Array.from(s.querySelectorAll('[type="radio"][autofocus]')).forEach((n,i)=>{n.removeAttribute("autofocus")}),Array.from(s.querySelectorAll('[type="radio"]:checked')).forEach((n,i)=>{n.setAttribute("autofocus",!0)})}}),r.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-change-type][data-input]:not(select)")){var t=a.target.closest("[data-change-type]"),o=document.getElementById(t.getAttribute("data-input")),c=t.getAttribute("data-change-type");if(t.setAttribute("data-change-type",o.getAttribute("type")),S(o,c),t.hasAttribute("data-alt-class")){var s=t.getAttribute("data-alt-class");t.setAttribute("data-alt-class",t.getAttribute("class")),t.setAttribute("class",s)}}})},I=r=>{var e=r.parentElement,a=r.getAttribute("maxlength");e.style.setProperty("--maxlength",a);var t=r.nextElementSibling;(!t||t&&t.classList.contains("invalid-feedback"))&&(t=document.createElement("span"),e.insertBefore(t,r.nextSibling)),t.setAttribute("data-count",r.value.length)},S=(r,e)=>{r.hasAttribute("type")&&r.getAttribute("type")=="password"&&r.setAttribute("data-password-type",!0),r.setAttribute("type",e)},b=function(e){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"no",t=document.getElementById(e.getAttribute("data-strength-checker")),o=e.value,c=e.hasAttribute("minlength")?e.getAttribute("minlength"):12,s=1,n=["Very weak","Weak","Average","Strong","Very strong"],i="";if(o.match(/(?=.*[0-9])/)&&(s+=1),o.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/)&&(s+=1),o.match(/(?=.*[a-z])/)&&(s+=1),o.match(/(?=.*[A-Z])/)&&(s+=1),o.length<c&&(s=1,i="(must be at least ".concat(c," characters.)")),s>=3&&a=="no"){let l=function(y,g){y.detail?b(g,"danger"):b(g,"success"),g.removeEventListener("hibpCheck",l)};_(o,e),e.addEventListener("hibpCheck",function(y){l(y,e)})}else s>=3&&a=="danger"&&(s=3,i="(this password is very common)");t&&(s<=3?t.classList.add("invalid-feedback"):t.classList.remove("invalid-feedback"),t.setAttribute("data-strength",s),t.innerHTML="Password strength: ".concat(n[s-1]," ").concat(i))},N=()=>{document.addEventListener("change",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&A(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]")&&A(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]")&&A(r.target,r.target.closest("[data-click-events]").getAttribute("data-click-events"))})},A=(r,e)=>{if(e||(e=r.parentNode.getAttribute("data-change-events")),!e)return!1;Array.from(JSON.parse(e)).forEach((a,t)=>{P(r,a)})},P=(r,e)=>{if("matches"in e)return e.matches=="any"||r.value==e.matches?m(r,e,"if"):m(r,e,"else"),!1;if("in-list"in e){var a=document.querySelector("".concat(e["in-list"],' option[value="').concat(r.value,'"]'));return document.querySelector("".concat(e["in-list"],' option[value="').concat(r.value,'"]'))?m(a,e,"if"):m(a,e,"else"),!1}else"event"in e&&m(r,e,"event")},m=(r,e,a)=>{if(!(a in e))return!1;switch(e[a]){case"hide":if(document.querySelector(e.target)){var t=document.querySelector(e.target);t.classList.add("js-hide"),Array.from(t.querySelectorAll("[data-required]")).forEach((n,i)=>{n.removeAttribute("required")})}break;case"show":if(document.querySelector(e.target)){var o=document.querySelector(e.target);o.classList.remove("js-hide"),Array.from(o.querySelectorAll("[data-required]")).forEach((n,i)=>{n.closest(".js-hide")||n.setAttribute("required","true")})}break;case"populate-form":j(r,e);break;case"dispatchEvent":var c=new Event(e.value);document.querySelector("".concat(e.target)).dispatchEvent(c);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(e.target))).forEach(function(n,i){n.setAttribute(e.attribute,e.value)});break;case"focus":document.querySelector("".concat(e.target)).focus();break;case"removeAttribute":Array.from(document.querySelectorAll("".concat(e.target))).forEach(function(n,i){n.removeAttribute(e.attribute)});break;case"updateValue":document.querySelector("".concat(e.target)).value=e.value?e.value:"";var s=new Event("change");document.querySelector("".concat(e.target)).dispatchEvent(s);break;case"submitForm":document.querySelector("".concat(e.target)).submit();break;case"openLink":document.querySelector("".concat(e.target)).value&&(window.location.href=document.querySelector("".concat(e.target)).value);break}},j=function(e,a){var t=JSON.parse(e.getAttribute("data-values")),o=document.querySelector(a.target);if(!t)return!1;Object.keys(t).forEach((c,s)=>{document.getElementById(c)&&document.getElementById(c).tagName=="SPAN"&&(document.getElementById(c).innerHTML=t[c]),o.querySelector('select[name="'.concat(c,'"] [value="').concat(t[c],'"]'))?(o.querySelector('select[name="'.concat(c,'"]')).value=t[c],e.hasAttribute("data-lock-fields")&&(o.querySelector('select[name="'.concat(c,'"]')).disabled=!0)):o.querySelector('input[name="'.concat(c,'"][type="radio"][value="').concat(t[c],'"]'))?(Array.from(o.querySelectorAll('input[name="'.concat(c,'"][type="radio"]'))).forEach(function(n,i){n.disabled=!0}),o.querySelector('input[name="'.concat(c,'"][type="radio"][value="').concat(t[c],'"]')).checked=!0,o.querySelector('input[name="'.concat(c,'"][type="radio"][value="').concat(t[c],'"]')).disabled=!1):o.querySelector('input[name="'.concat(c,'"]'))&&(o.querySelector('input[name="'.concat(c,'"]')).value=t[c],e.hasAttribute("data-lock-fields")&&o.querySelector('input[name="'.concat(c,'"]')).setAttribute("readonly","true"))})};document.addEventListener("DOMContentLoaded",function(){H(),N(),h(document.body),T(),C(document.body),B(document.body)})});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.1.0--
|
|
2
|
+
* iamKey v7.1.0--beta7
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/
|
|
5
5
|
!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e=e=>{if(!e.querySelector(":scope .mh-lg")&&!e.querySelector("iam-multi-step")){e.innerHTML='<div class="mh-lg">'.concat(e.innerHTML,"</div>");var t=e.querySelector(".mh-lg"),a=e.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(a){var r=a.previousSibling;t.before(a),r&&a.before(r)}}e.querySelector(":scope > button:first-child")||e.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')},t=(e,t)=>{(function(e){var t=new TextEncoder("utf-8").encode(e);return crypto.subtle.digest("SHA-1",t).then((function(e){for(var t=[],a=new DataView(e),r=0;r<a.byteLength;r+=4){var n=("00000000"+a.getUint32(r).toString(16)).slice(-8);t.push(n)}return t.join("")}))})(e).then((function(e){var a=new XMLHttpRequest;a.addEventListener("load",(function(){var a=this.responseText.split("\n"),r=e.slice(5).toUpperCase(),n=!1;for(var o in a)if(a[o].substring(0,35)==r){n=!0;break}var c=new CustomEvent("hibpCheck",{detail:n});t.dispatchEvent(c)})),a.open("GET","https://api.pwnedpasswords.com/range/"+e.substr(0,5)),a.send()}))},a=e=>{function t(){if(Array.from(document.querySelectorAll("input[maxlength],textarea[maxlength]")).forEach(((e,t)=>{e.parentElement,r(e)})),Array.from(document.querySelectorAll("label input")).forEach(((e,t)=>{!e.closest("label").querySelector(".optional-text")&&!e.hasAttribute("required")&&("span"==e.parentNode.tagName.toLowerCase()?e.parentElement.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'):e.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'))})),document.querySelector('input[type="date"]')){let t=function(e){var t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(a,"-").concat(r)};var e=new Date;Array.from(document.querySelectorAll('input[type="date"]')).forEach(((a,r)=>{var n=e;if(a.hasAttribute("data-start")&&(n.setDate(n.getDate()+parseInt(a.getAttribute("data-start"))),a.setAttribute("min",t(n))),a.hasAttribute("data-period")){var o=parseInt(a.getAttribute("data-period")),c=new Date;c.setDate(n.getDate()+o),a.setAttribute("max",t(c))}if(a.hasAttribute("data-allowed-days")){var i=JSON.parse("[".concat(a.getAttribute("data-allowed-days"),"]"));a.addEventListener("input",(function(e){var t=new Date(this.value).getUTCDay();i.includes(t)?a.setCustomValidity(""):a.setCustomValidity("That day of the week is not allowed")}))}}))}}"complete"===document.readyState&&t(),document.onreadystatechange=()=>{"complete"===document.readyState&&t()},e.addEventListener("input",(e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("input,textarea,select")){var t=e.target.closest("input,textarea,select");t.parentElement,t.hasAttribute("type")&&"color"==t.getAttribute("type")&&(t.nextElementSibling.value=t.value),t.hasAttribute("maxlength")&&t.nextElementSibling&&t.nextElementSibling.setAttribute("data-count",t.value.length),t.hasAttribute("data-strength-checker")&&o(t)}})),e.addEventListener("change",(e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("select")){var t=e.target.closest("select");if(t.hasAttribute("data-change-type")&&t.hasAttribute("data-input")){var a=document.getElementById(t.getAttribute("data-input")),r=t.value;n(a,r)}}if(e&&e.target instanceof HTMLElement&&e.target.closest('dialog [type="radio"]')){var o=e.target.closest("dialog");e.target.closest('dialog [type="radio"]'),Array.from(o.querySelectorAll('[type="radio"][autofocus]')).forEach(((e,t)=>{e.removeAttribute("autofocus")})),Array.from(o.querySelectorAll('[type="radio"]:checked')).forEach(((e,t)=>{e.setAttribute("autofocus",!0)}))}})),e.addEventListener("click",(e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-change-type][data-input]:not(select)")){var t=e.target.closest("[data-change-type]"),a=document.getElementById(t.getAttribute("data-input")),r=t.getAttribute("data-change-type");if(t.setAttribute("data-change-type",a.getAttribute("type")),n(a,r),t.hasAttribute("data-alt-class")){var o=t.getAttribute("data-alt-class");t.setAttribute("data-alt-class",t.getAttribute("class")),t.setAttribute("class",o)}}}))},r=e=>{var t=e.parentElement,a=e.getAttribute("maxlength");t.style.setProperty("--maxlength",a);var r=e.nextElementSibling;(!r||r&&r.classList.contains("invalid-feedback"))&&(r=document.createElement("span"),t.insertBefore(r,e.nextSibling)),r.setAttribute("data-count",e.value.length)},n=(e,t)=>{e.hasAttribute("type")&&"password"==e.getAttribute("type")&&e.setAttribute("data-password-type",!0),e.setAttribute("type",t)},o=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"no",r=document.getElementById(e.getAttribute("data-strength-checker")),n=e.value,c=e.hasAttribute("minlength")?e.getAttribute("minlength"):12,i=1,l="";if(n.match(/(?=.*[0-9])/)&&(i+=1),n.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/)&&(i+=1),n.match(/(?=.*[a-z])/)&&(i+=1),n.match(/(?=.*[A-Z])/)&&(i+=1),n.length<c&&(i=1,l="(must be at least ".concat(c," characters.)")),i>=3&&"no"==a){let a=function(e,t){e.detail?o(t,"danger"):o(t,"success"),t.removeEventListener("hibpCheck",a)};t(n,e),e.addEventListener("hibpCheck",(function(t){a(t,e)}))}else i>=3&&"danger"==a&&(i=3,l="(this password is very common)");r&&(i<=3?r.classList.add("invalid-feedback"):r.classList.remove("invalid-feedback"),r.setAttribute("data-strength",i),r.innerHTML="Password strength: ".concat(["Very weak","Weak","Average","Strong","Very strong"][i-1]," ").concat(l))},c=(e,t)=>{if(t||(t=e.parentNode.getAttribute("data-change-events")),!t)return!1;Array.from(JSON.parse(t)).forEach(((t,a)=>{i(e,t)}))},i=(e,t)=>{if("matches"in t)return"any"==t.matches||e.value==t.matches?l(e,t,"if"):l(e,t,"else"),!1;if("in-list"in t){var a=document.querySelector("".concat(t["in-list"],' option[value="').concat(e.value,'"]'));return document.querySelector("".concat(t["in-list"],' option[value="').concat(e.value,'"]'))?l(a,t,"if"):l(a,t,"else"),!1}"event"in t&&l(e,t,"event")},l=(e,t,a)=>{if(!(a in t))return!1;switch(t[a]){case"hide":if(document.querySelector(t.target)){var r=document.querySelector(t.target);r.classList.add("js-hide"),Array.from(r.querySelectorAll("[data-required]")).forEach(((e,t)=>{e.removeAttribute("required")}))}break;case"show":if(document.querySelector(t.target)){var n=document.querySelector(t.target);n.classList.remove("js-hide"),Array.from(n.querySelectorAll("[data-required]")).forEach(((e,t)=>{e.closest(".js-hide")||e.setAttribute("required","true")}))}break;case"populate-form":s(e,t);break;case"dispatchEvent":var o=new Event(t.value);document.querySelector("".concat(t.target)).dispatchEvent(o);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(t.target))).forEach((function(e,a){e.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(e,a){e.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)}},s=function(e,t){var a=JSON.parse(e.getAttribute("data-values")),r=document.querySelector(t.target);if(!a)return!1;Object.keys(a).forEach(((t,n)=>{document.getElementById(t)&&"SPAN"==document.getElementById(t).tagName&&(document.getElementById(t).innerHTML=a[t]),r.querySelector('select[name="'.concat(t,'"] [value="').concat(a[t],'"]'))?(r.querySelector('select[name="'.concat(t,'"]')).value=a[t],e.hasAttribute("data-lock-fields")&&(r.querySelector('select[name="'.concat(t,'"]')).disabled=!0)):r.querySelector('input[name="'.concat(t,'"][type="radio"][value="').concat(a[t],'"]'))?(Array.from(r.querySelectorAll('input[name="'.concat(t,'"][type="radio"]'))).forEach((function(e,t){e.disabled=!0})),r.querySelector('input[name="'.concat(t,'"][type="radio"][value="').concat(a[t],'"]')).checked=!0,r.querySelector('input[name="'.concat(t,'"][type="radio"][value="').concat(a[t],'"]')).disabled=!1):r.querySelector('input[name="'.concat(t,'"]'))&&(r.querySelector('input[name="'.concat(t,'"]')).value=a[t],e.hasAttribute("data-lock-fields")&&r.querySelector('input[name="'.concat(t,'"]')).setAttribute("readonly","true"))}))};document.addEventListener("DOMContentLoaded",(function(){var t,r;window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",(e=>{var t=e.target.closest("[open] summary");if(t)window.dataLayer.push({event:"closeDetails",detailsTitle:t.textContent||""});else{var a=e.target.closest("summary"),r=e.target.closest("a"),n=e.target.closest("button");a&&window.dataLayer.push({event:"openDetails",detailsTitle:a.textContent||""}),r&&window.dataLayer.push({event:"linkClicked",linkText:r.hasAttribute("title")?r.getAttribute("title")||"":r.textContent||"",class:r.hasAttribute("class")&&r.getAttribute("class")||"",href:r.getAttribute("href")||""}),n&&window.dataLayer.push({event:"buttonClicked",buttonText:n.textContent||"",class:n.hasAttribute("class")&&n.getAttribute("class")||""})}})),document.addEventListener("change",(e=>{e&&e.target instanceof HTMLElement&&e.target.closest("[data-change-events]")&&c(e.target,e.target.closest("[data-change-events]").getAttribute("data-change-events"))})),document.addEventListener("keyup",(e=>{e&&e.target instanceof HTMLElement&&e.target.closest("[data-change-events]")&&c(e.target,e.target.closest("[data-change-events]").getAttribute("data-change-events"))})),document.addEventListener("click",(e=>{e&&e.target instanceof HTMLElement&&e.target.closest("[data-click-events]")&&c(e.target,e.target.closest("[data-click-events]").getAttribute("data-click-events"))})),(r=document.body).classList.add("js-enabled"),(-1!==navigator.userAgent.indexOf("MSIE")||navigator.appVersion.indexOf("Trident/")>0)&&r.classList.add("ie"),t=function(e){var t=document.querySelector('label[for="'.concat(e.replace("#",""),'"]')),a=document.querySelector(e+" summary"),r=document.querySelector("dialog".concat(e)),n=document.querySelector("detail".concat(e));t instanceof HTMLElement?t.click():a instanceof HTMLElement?a.click():r instanceof HTMLElement?r.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&&"pagination"==e.state.type){var t=document.querySelector("#".concat(e.state.form)),a=document.querySelector("#".concat(e.state.form," [data-pagination]"));a?a.value=e.state.page:t.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(e.state.page,'" />'),t.dispatchEvent(new Event("submit"))}})),document.addEventListener("submit",(e=>{if(e&&e.target instanceof HTMLElement&&e.target.matches("form")){var t=e.target;Array.from(t.querySelectorAll("[data-password-type]")).forEach(((e,t)=>{e.setAttribute("type","password")})),(t.querySelector(":invalid")||t.querySelector('.pwd-checker[data-strength="1"]')||t.querySelector('.pwd-checker[data-strength="2"]'))&&(t.classList.add("was-validated"),e.preventDefault()),t.querySelector("iam-multiselect[data-is-required][data-error]")&&(t.classList.add("was-validated"),e.preventDefault())}})),document.addEventListener("keydown",(e=>{"Escape"===e.key&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(e.preventDefault(),e.stopPropagation())})),Array.from(document.querySelectorAll("label progress")).forEach(((e,t)=>{e.closest("label").setAttribute("data-percent",e.getAttribute("value"))})),(t=>{Array.from(t.querySelectorAll("dialog[open]")).forEach(((t,a)=>{t.closest(".dialog__wrapper")||(t.removeAttribute("open"),t.showModal(),t.focus(),e(t))})),t.addEventListener("click",(t=>{if("IAM-ACTIONBAR"==t.target.tagName)return!1;if(t&&t.target instanceof HTMLElement&&t.target.closest("[data-modal]")){var a=t.target.closest("[data-modal]"),r=a.hasAttribute("data-modal")?a.getAttribute("data-modal"):a.getAttribute("data-filter"),n=document.querySelector("dialog#".concat(r));if(e(n),n.showModal(),n.focus(),!n.querySelector("iam-multi-step")){var o=n.offsetWidth;n.setAttribute("style","max-width: ".concat(o,"px;"))}Array.from(n.querySelectorAll("[data-duplicate]")).forEach(((e,t)=>{var a=e.getAttribute("data-duplicate"),r=document.getElementById(a);if(e.checked!=r.checked){e.checked=r.checked;var n=new Event("change");e.dispatchEvent(n)}})),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:r})}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(((e,t)=>{e.classList.remove("active")}));var i=new CustomEvent("dialog-closed",{bubbles:!0,cancelable:!0,detail:{modalId:c.id}});t.target.dispatchEvent(i),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(((e,t)=>{e.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 s=t.target.closest("dialog[open]");if("contents"===window.getComputedStyle(s).display&&(s=s.parentNode.closest("dialog[open]")),!s.classList.contains("dialog--transactional")&&!s.classList.contains("dialog--acknowledgement")){var d=s.getBoundingClientRect();(t.clientX<d.left||t.clientX>d.right||t.clientY<d.top||t.clientY>d.bottom)&&(t.target.closest("dialog *")||s.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:s.getAttribute("id")}))}}if(t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__wrapper > button")){t.stopPropagation();var u=t.target.closest(".dialog__wrapper > button"),g="openPopover",p=u.parentNode.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=p&&u.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(((e,t)=>{e.removeAttribute("aria-expanded")})),p.hasAttribute("open"))p.close(),g="closePopover",p.removeAttribute("style"),u.removeAttribute("aria-expanded");else{p.show(),u.setAttribute("aria-expanded",!0);var m=u.getBoundingClientRect(),y=m.top,v=m.left;if(u.closest("iam-table")){var f=u.closest("iam-table").parentNode.getBoundingClientRect();y-=f.top,v-=f.left}p.classList.contains("dialog--fix")&&p.setAttribute("style","position:fixed;top: ".concat(y,"px; left: ").concat(v,"px; margin: 3rem 0 0 0;"))}var h=p.getBoundingClientRect();if(h.bottom-window.scrollY>window.innerHeight-window.scrollY){var b=p.hasAttribute("style")?p.getAttribute("style")+" ":"";p.setAttribute("style",b+"transform: translate(0, calc(-100% - 4rem))"),(h=p.getBoundingClientRect()).top-window.scrollY<100&&p.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:g,id:u.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(((e,t)=>{e.removeAttribute("aria-expanded")})))}))})(document.body),a(document.body)}))}));
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
@use '_func' as *;
|
|
2
|
+
|
|
3
|
+
@include layer('reset') {
|
|
4
|
+
// Row
|
|
5
|
+
//
|
|
6
|
+
// Rows contain your columns.
|
|
7
|
+
|
|
8
|
+
@if $enable-grid-classes {
|
|
9
|
+
.row {
|
|
10
|
+
@include make-row();
|
|
11
|
+
|
|
12
|
+
> * {
|
|
13
|
+
@include make-col-ready();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@if $enable-cssgrid {
|
|
19
|
+
.grid {
|
|
20
|
+
display: grid;
|
|
21
|
+
grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);
|
|
22
|
+
grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);
|
|
23
|
+
gap: var(--#{$prefix}gap, #{$grid-gutter-width});
|
|
24
|
+
|
|
25
|
+
@include make-cssgrid();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Columns
|
|
30
|
+
//
|
|
31
|
+
// Common styles for small and large grid columns
|
|
32
|
+
|
|
33
|
+
@if $enable-grid-classes {
|
|
34
|
+
@include make-grid-columns();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
@use 'sass:math';
|
|
2
2
|
@use '_func' as *;
|
|
3
3
|
|
|
4
|
-
@
|
|
5
|
-
@if $disable-bs-grid == 'false' {
|
|
6
|
-
@content;
|
|
7
|
-
} @else {
|
|
8
|
-
// Grid Disabled
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@layer reset, elements, components, templates, utilities, overrides;
|
|
4
|
+
@layer reset, elements, components, templates, overrides, utilities;
|
|
13
5
|
|
|
14
6
|
$root: ':root' !default;
|
|
15
7
|
$layers: 'true' !default;
|
|
@@ -18,11 +10,6 @@ $layers: 'true' !default;
|
|
|
18
10
|
@include layer('reset') {
|
|
19
11
|
@import 'foundations/root.scss';
|
|
20
12
|
@import 'foundations/reboot.scss';
|
|
21
|
-
@import 'foundations/grid.scss';
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@include bsgrid() {
|
|
25
|
-
@import 'foundations/bs_grid.scss';
|
|
26
13
|
}
|
|
27
14
|
|
|
28
15
|
@include layer('elements') {
|
|
@@ -39,10 +26,6 @@ $layers: 'true' !default;
|
|
|
39
26
|
@import 'templates/auth.scss';
|
|
40
27
|
}
|
|
41
28
|
|
|
42
|
-
@include layer('utilities') {
|
|
43
|
-
@import '_utilities.scss';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
29
|
@include layer('overrides') {
|
|
47
30
|
@media (prefers-reduced-motion) {
|
|
48
31
|
* {
|
package/assets/sass/_func.scss
CHANGED
|
@@ -11,10 +11,8 @@ $varsMD: () !default;
|
|
|
11
11
|
|
|
12
12
|
$prefix: '';
|
|
13
13
|
|
|
14
|
-
$enable-new-grid: 'false' !default;
|
|
15
|
-
$disable-bs-grid: 'false' !default;
|
|
16
|
-
|
|
17
14
|
@import '_functions/functions';
|
|
18
15
|
@import '_functions/variables';
|
|
19
16
|
@import '_functions/mixins';
|
|
20
|
-
@import '_functions/
|
|
17
|
+
@import '_functions/bs_utilities';
|
|
18
|
+
@import '_functions/utility-mixins';
|
|
@@ -1,42 +1,3 @@
|
|
|
1
|
-
//@import "../../bootstrap/scss/_mixins";
|
|
2
|
-
|
|
3
|
-
// #region Boostrap misc
|
|
4
|
-
// stylelint-disable declaration-no-important
|
|
5
|
-
|
|
6
|
-
// Hide content visually while keeping it accessible to assistive technologies
|
|
7
|
-
//
|
|
8
|
-
// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
|
|
9
|
-
// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
|
|
10
|
-
|
|
11
|
-
@mixin visually-hidden() {
|
|
12
|
-
position: absolute !important;
|
|
13
|
-
width: 1px !important;
|
|
14
|
-
height: 1px !important;
|
|
15
|
-
padding: 0 !important;
|
|
16
|
-
margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686
|
|
17
|
-
overflow: hidden !important;
|
|
18
|
-
clip: rect(0, 0, 0, 0) !important;
|
|
19
|
-
white-space: nowrap !important;
|
|
20
|
-
border: 0 !important;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Use to only display content when it's focused, or one of its child elements is focused
|
|
24
|
-
// (i.e. when focus is within the element/container that the class was applied to)
|
|
25
|
-
//
|
|
26
|
-
// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
|
|
27
|
-
|
|
28
|
-
@mixin visually-hidden-focusable() {
|
|
29
|
-
&:not(:focus):not(:focus-within) {
|
|
30
|
-
@include visually-hidden();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@mixin text-truncate() {
|
|
35
|
-
overflow: hidden;
|
|
36
|
-
text-overflow: ellipsis;
|
|
37
|
-
white-space: nowrap;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
1
|
// Utility generator
|
|
41
2
|
// Used to generate utilities & print utilities
|
|
42
3
|
@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {
|