@iamproperty/components 7.5.1--beta2 → 7.5.1--beta4
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/address-lookup.preload.css +1 -0
- package/assets/css/components/address-lookup.preload.css.map +1 -0
- 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/inline-edit.css +1 -1
- package/assets/css/components/inline-edit.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/nav.component.css +1 -1
- package/assets/css/components/nav.component.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/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/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.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +336 -102
- package/assets/js/components/address-lookup/address-lookup.component.min.js +32 -14
- 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 +3 -3
- package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +5 -5
- package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
- 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.min.js +2 -2
- 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/doughnutchart/doughnutchart.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
- 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 +3 -3
- package/assets/js/components/marketing/marketing.component.min.js +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.min.js +4 -4
- package/assets/js/components/nav/nav.component.min.js +5 -5
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +3 -3
- package/assets/js/components/password-indicator/password-indicator.component.min.js +1 -1
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rankings/rankings.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.js +65 -25
- package/assets/js/components/search/search.component.min.js +5 -5
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.min.js +3 -3
- package/assets/js/components/split-button/split-button.component.min.js +3 -3
- package/assets/js/components/std-address-lookup/std-address-lookup.component.js +1715 -0
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +172 -0
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -0
- 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/table-ajax/table-ajax.component.min.js +2 -2
- 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.min.js +5 -5
- 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 +2 -2
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +2 -2
- 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/advanced-select.js +35 -26
- package/assets/js/modules/helpers.js +19 -3
- 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/tests/helpers.spec.js +26 -0
- package/assets/sass/_components.scss +6 -0
- package/assets/sass/components/address-lookup.component.scss +91 -5
- package/assets/sass/components/address-lookup.preload.scss +81 -0
- package/assets/sass/components/table-basic.global.scss +175 -0
- package/assets/sass/components/table.global.scss +0 -163
- package/assets/sass/elements/buttons--action.scss +26 -0
- package/assets/sass/elements/buttons--global.scss +1 -4
- package/assets/sass/elements/forms.scss +182 -37
- package/assets/ts/components/address-lookup/address-lookup.component.ts +432 -109
- package/assets/ts/components/advanced-select/advanced-select.component.ts +1 -0
- package/assets/ts/components/search/search.component.ts +86 -27
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +1757 -0
- package/assets/ts/modules/advanced-select.ts +55 -27
- package/assets/ts/modules/helpers.ts +25 -3
- package/assets/ts/tests/helpers.spec.ts +38 -0
- package/dist/components.es.js +144 -144
- package/dist/components.umd.js +376 -191
- package/package.json +2 -1
- package/src/components/STDAddressLookup/STDAddressLookup.vue +22 -0
- /package/assets/js/{tests → ui-tests}/card.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/carousel.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/chart.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/fileupload.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/filterlist.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/multistep.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/slider.spec.js +0 -0
- /package/assets/js/{tests → ui-tests}/table.spec.js +0 -0
- /package/assets/ts/{tests → ui-tests}/card.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/carousel.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/chart.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/data-layer.spec.js +0 -0
- /package/assets/ts/{tests → ui-tests}/fileupload.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/filterlist.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/multistep.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/slider.spec.ts +0 -0
- /package/assets/ts/{tests → ui-tests}/table.spec.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-lookup.component.min.js","sources":["address-lookup.component.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport Cookies from 'js-cookie';\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'Address Lookup',\n});\nclass iamAddressLookup extends HTMLElement {\n constructor() {\n var _a;\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/address-lookup.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n \n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\" />\n <div class=\"wrapper\">\n\n <div class=\"postcode-lookup\">\n <div>\n <label class=\"mb-2\">Search <span class=\"title text-lowercase\"></span> <span class=\"optional\">(Optional)</span>\n <span>\n <input type=\"text\" name=\"postcode\" list=\"address-lookup__addressess\" autocomplete=\"off\" aria-autocomplete=\"none\" placeholder=\"Postcode\" part=\"input\" />\n <span class=\"suffix fa-regular fa-search\" part=\"suffix\"></span>\n </span>\n <span class=\"invalid-feedback\">Required Adddress fields missing</span>\n </label>\n\n </div>\n <button class=\"btn btn-tertiary switch-to-manual-btn\" type=\"button\" part=\"button\">Or enter address manually</button>\n </div>\n <datalist id=\"address-lookup__addressess\"></datalist>\n\n <div class=\"manual-address pb-2 js-hide\">\n <slot part=\"contents\"></slot>\n <button class=\"btn btn-tertiary switch-to-lookup-btn\" type=\"button\" part=\"button\">Use postcode lookup</button>\n <slot name=\"after\"></slot>\n </div>\n <div class=\"pre-filled pb-2 js-hide\">\n <strong class=\"title text-primary d-block\"></strong>\n <p><span class=\"pre-filled-address\"></span><button class=\"text-primary text-decoration-none ms-1 cursor-pointer\" type=\"button\" part=\"edit-button\"><i class=\"fa-regular fa-pen-to-square\"></i> <span class=\"visually-hidden\">Edit</span></button><slot name=\"prefilled\"></slot></p>\n </div>\n </div>\n `;\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n const lookup = this.shadowRoot.querySelector('[name=\"postcode\"]');\n const lookupWrapper = this.shadowRoot.querySelector('.postcode-lookup');\n const manualWrapper = this.shadowRoot.querySelector('.manual-address');\n const preFilledWrapper = this.shadowRoot.querySelector('.pre-filled');\n const list = this.shadowRoot.querySelector('datalist');\n const switchManualBtn = this.shadowRoot.querySelector('.switch-to-manual-btn');\n const switchLookupBtn = this.shadowRoot.querySelector('.switch-to-lookup-btn');\n const title = this.hasAttribute('data-title') ? this.getAttribute('data-title') : 'Property address';\n const preFilledAddressBtn = this.shadowRoot.querySelector('.pre-filled-address + button');\n const dataDisplayText = this.hasAttribute('data-display-text');\n Array.from(this.shadowRoot.querySelectorAll('.title')).forEach((titleElement) => {\n titleElement.innerHTML = title;\n });\n function checkFilled(component) {\n const preFilledAddress = component.shadowRoot.querySelector('.pre-filled-address');\n let preFilled = true;\n preFilledAddress.innerHTML = '';\n Array.from(component.querySelectorAll('input[required],input[data-required],select[required],select[data-required]')).forEach((input) => {\n const value = input.value;\n if (!value)\n preFilled = false;\n else\n preFilledAddress.innerHTML += value + (/^-?\\d+$/.test(value) ? ' ' : ', ');\n });\n preFilledAddress.innerHTML = preFilledAddress.innerHTML.slice(0, -2);\n if (preFilled) {\n preFilledWrapper.classList.remove('js-hide');\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.add('js-hide');\n }\n }\n checkFilled(this);\n this.addEventListener('filled', () => {\n checkFilled(this);\n });\n if (this.hasAttribute('data-use')) {\n const useLabel = this.hasAttribute('data-use-label') ? this.getAttribute('data-use-label') : 'Use saved address';\n const useCheckbox = `<div><input type=\"checkbox\" name=\"use\" id=\"use\" value=\"yes\"><label for=\"use\">${useLabel}</label></div>`;\n lookupWrapper.insertAdjacentHTML('afterbegin', useCheckbox);\n this.shadowRoot.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[name=\"use\"]')) {\n const checkbox = event.target.closest('[name=\"use\"]');\n if (checkbox.checked) {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n const values = JSON.parse(this.getAttribute('data-use'));\n Object.keys(values).forEach((key) => {\n const value = values[key];\n if (this.querySelector(`[data-name=\"${key}\"]`))\n this.querySelector(`[data-name=\"${key}\"]`).value = value;\n else if (this.querySelector(`[name=\"${key}\"]`))\n this.querySelector(`[name=\"${key}\"]`).value = value;\n });\n }\n }\n });\n }\n if (this.hasAttribute('data-manual')) {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n }\n function openManualWrapper() {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n manualWrapper.scrollIntoView();\n }\n preFilledAddressBtn.addEventListener('click', () => {\n preFilledWrapper.classList.add('js-hide');\n openManualWrapper();\n });\n switchManualBtn.addEventListener('click', () => {\n openManualWrapper();\n });\n switchLookupBtn.addEventListener('click', () => {\n lookupWrapper.classList.remove('js-hide');\n manualWrapper.classList.add('js-hide');\n lookupWrapper.scrollIntoView();\n });\n lookup.addEventListener('keyup', () => {\n if (lookup.value.length >= 3)\n search(lookup.value);\n });\n lookup.addEventListener('change', () => {\n if (lookup.value.length >= 3) {\n search(lookup.value);\n if (list.querySelector(`[value=\"${lookup.value}\"]`)) {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n const values = JSON.parse(list.querySelector(`[value=\"${lookup.value}\"]`).getAttribute('data-values'));\n Object.keys(values).forEach((key) => {\n const value = values[key];\n if (this.querySelector(`[data-name=\"${key}\"]`) && value != '')\n this.querySelector(`[data-name=\"${key}\"]`).value = value;\n else if (this.querySelector(`[data-name-alt=\"${key}\"]`) && value != '')\n this.querySelector(`[data-name-alt=\"${key}\"]`).value = value;\n else if (this.querySelector(`[name=\"${key}\"]`) && value != '')\n this.querySelector(`[name=\"${key}\"]`).value = value;\n if (this.querySelector(`[data-name-2=\"${key}\"]`))\n this.querySelector(`[data-name-2=\"${key}\"]`).value += ' ' + value;\n });\n // Focus on first input\n this.querySelector('[name]').focus();\n Array.from(this.querySelectorAll('[data-required]')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n lookup.removeAttribute('required');\n if (this.shadowRoot.querySelector('[name=\"use\"]'))\n this.shadowRoot.querySelector('[name=\"use\"]').checked = false;\n }\n }\n });\n const search = (postcode) => __awaiter(this, void 0, void 0, function* () {\n let ajaxURL = this.getAttribute('data-url');\n ajaxURL += `${encodeURI(postcode)}`;\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = controller[ajaxURL];\n try {\n yield fetch(ajaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n // populate datalist\n let listString = '';\n response.forEach((address) => {\n // Deal with agent platform response\n if (typeof address.value == 'object') {\n const values = JSON.stringify(address.value);\n listString += `<option value=\"${address['label']}, ${postcode}\" data-values='${values}'></option>`;\n }\n else {\n const values = JSON.stringify(address);\n if (dataDisplayText) {\n listString += `<option value=\"${address[dataDisplayText]}, ${postcode}\" data-values='${values}'></option>`;\n }\n else {\n let itemString = '';\n for (const [key, value] of Object.entries(address)) {\n if (key == 'address_number_name')\n itemString += `${value} `;\n else if (key != 'postcode' && key != 'address_title')\n itemString += `${value}${/^-?\\d+$/.test(value) ? '' : ','} `;\n }\n listString += `<option value=\"${itemString}${postcode}\" data-values='${values}'></option>`;\n }\n }\n });\n list.innerHTML = listString;\n return response;\n });\n }\n catch (error) {\n console.log(error);\n }\n });\n });\n }\n}\nexport default iamAddressLookup;\n"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","iamAddressLookup","_a","template","lookup","lookupWrapper","manualWrapper","preFilledWrapper","list","switchManualBtn","switchLookupBtn","title","preFilledAddressBtn","dataDisplayText","titleElement","checkFilled","component","preFilledAddress","preFilled","input","useCheckbox","event","values","key","openManualWrapper","search","postcode","ajaxURL","signal","Cookies","response","listString","address","itemString","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"address-lookup.component.min.js","sources":["../../modules/advanced-select.js","../../modules/helpers.js","address-lookup.component.js"],"sourcesContent":["function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false) {\n let currentFocus = -1;\n const datalistWrapper = datalist.closest('.datalist__wrapper') ? datalist.closest('.datalist__wrapper') : datalist;\n // Hide the default datalist\n displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));\n displayInputField.setAttribute('list', '');\n if (displayInputField.hasAttribute('placeholder'))\n displayInputField.setAttribute('data-placeholder', displayInputField.getAttribute('placeholder'));\n if (displayInputField.hasAttribute('placeholder'))\n displayInputField.setAttribute('data-original-placeholder', displayInputField.getAttribute('placeholder'));\n displayInputField.addEventListener('focus', function () {\n if (displayInputField.value != \"\") {\n displayInputField.setAttribute('placeholder', displayInputField.value);\n displayInputField.setAttribute('data-value', displayInputField.value);\n }\n displayInputField.value = '';\n });\n displayInputField.addEventListener('blur', function () {\n if (displayInputField.hasAttribute('data-value')) {\n displayInputField.value = displayInputField.getAttribute('data-value');\n }\n if (displayInputField.hasAttribute('data-placeholder'))\n displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-placeholder'));\n });\n for (const option of datalist.options) {\n if (option.innerHTML == '')\n option.innerHTML = option.value;\n }\n datalist.addEventListener('click', function (event) {\n if (event && event.target instanceof HTMLElement && event.target.closest('option')) {\n const option = event.target.closest('option');\n displayInputField.value = option.value;\n if (typeof window.triggerDynamicEvent == 'function')\n window.triggerDynamicEvent(displayInputField);\n for (const optionInner of datalist.options) {\n optionInner.classList.remove('active');\n }\n option.classList.add('active');\n }\n });\n displayInputField.addEventListener('input', function () {\n displayInputField.removeAttribute('data-value');\n currentFocus = -1;\n const text = displayInputField.value.toUpperCase();\n for (const option of datalist.options) {\n if (option.value.toUpperCase().indexOf(text) > -1) {\n option.style.display = 'block';\n option.classList.remove('hide');\n }\n else {\n option.style.display = 'none';\n option.classList.add('hide');\n }\n }\n });\n advancedSelect.addEventListener('keydown', function (e) {\n if (e.keyCode == 40) {\n currentFocus++;\n addActive(datalist.options);\n }\n else if (e.keyCode == 38) {\n currentFocus--;\n addActive(datalist.options);\n }\n else if (e.keyCode == 13) {\n e.preventDefault();\n if (currentFocus > -1) {\n /*and simulate a click on the \"active\" item:*/\n if (datalist.options)\n datalist.options[currentFocus].click();\n }\n }\n });\n function addActive(x) {\n if (!x)\n return false;\n removeActive(x);\n if (currentFocus >= x.length)\n currentFocus = 0;\n if (currentFocus < 0)\n currentFocus = x.length - 1;\n x[currentFocus].classList.add('active');\n }\n function removeActive(x) {\n if (!x)\n return false;\n for (let i = 0; i < x.length; i++) {\n x[i].classList.remove('active');\n }\n }\n // Add the empty button\n displayInputField\n .closest('label')\n .insertAdjacentHTML('beforeend', '<button class=\"empty btn btn-action\"><i class=\"fa-light fa-times me-0\"></i></button>');\n const emptyField = () => {\n if (displayInputField.hasAttribute('data-original-placeholder'))\n displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-original-placeholder'));\n displayInputField.removeAttribute('data-value');\n displayInputField.value = '';\n for (const optionInner of datalist.options) {\n optionInner.classList.remove('active');\n optionInner.removeAttribute('style');\n }\n const updateEvent = new CustomEvent('close-button-pressed');\n advancedSelect.dispatchEvent(updateEvent);\n };\n const closeBtn = advancedSelect.querySelector('.empty') ? advancedSelect.querySelector('.empty') : advancedSelect.shadowRoot.querySelector('.empty');\n closeBtn.addEventListener('click', function (e) {\n emptyField();\n });\n advancedSelect.addEventListener('empty', function (e) {\n emptyField();\n });\n}\nexport default advancedSelect;\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};\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 Array.from(document.querySelectorAll('form')).forEach((form) => {\n form.addEventListener('submit', (event) => {\n var _a;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n });\n });\n document.addEventListener('click', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {\n const form = event.target.closest('form');\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 (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\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};\nexport const isValidPostcode = (searchValue) => {\n const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;\n return regexp.test(searchValue.trim());\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport Cookies from 'js-cookie';\nimport advancedSelect from '../../modules/advanced-select.js';\nimport { isValidPostcode } from '../../modules/helpers.js';\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'Address Lookup',\n});\nclass iamAddressLookup extends HTMLElement {\n constructor() {\n var _a;\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/address-lookup.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n \n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\" />\n <div class=\"wrapper\">\n\n <div class=\"postcode-lookup was-validated\">\n <div>\n <label class=\"mb-1\"><span class=\"title text-lowercase\"></span>\n <span>\n <input type=\"text\" name=\"postcode\" class=\"${this.hasAttribute('data-input-class') ? this.getAttribute('data-input-class') : ''}\" list=\"address-lookup__addressess\" autocomplete=\"one-time-code\" aria-autocomplete=\"none\" placeholder=\"${(this === null || this === void 0 ? void 0 : this.hasAttribute('data-placeholder')) ? this === null || this === void 0 ? void 0 : this.getAttribute('data-placeholder') : 'Postcode'}\" value=\"${this.hasAttribute('data-postcode-value') ? this.getAttribute('data-postcode-value') : ''}\" part=\"input\" />\n <button id=\"postcode__submit\" class=\"suffix fa-regular fa-search\" part=\"suffix\"></button>\n </span>\n </label>\n \n <span class=\"invalid-feedback mb-2\">${this.hasAttribute('data-error-msg') ? this.getAttribute('data-error-msg') : 'Required address fields'}</span>\n\n <div class=\"datalist__wrapper ${this.hasAttribute('data-list-class') ? this.getAttribute('data-list-class') : ''}\" tabindex=\"0\" part=\"list-wrapper\">\n <slot name=\"beforeList\"></slot>\n <slot name=\"preloadedList\"></slot>\n <datalist id=\"address-lookup__addressess\" class=\"\"></datalist>\n <div id=\"paginationWrapper\"></div>\n <slot name=\"afterList\"></slot>\n </div>\n </div>\n <slot name=\"hint\"></slot>\n <div class=\"actions\">\n <button class=\"btn btn-tertiary switch-to-manual-btn\" type=\"button\" part=\"manualButton\">Or enter address manually</button>\n <slot name=\"actions\"></slot>\n </div>\n </div>\n\n <div class=\"manual-address pb-2 js-hide\">\n <slot part=\"contents\"></slot>\n <button class=\"btn btn-tertiary switch-to-lookup-btn\" type=\"button\" part=\"button\">${this.hasAttribute('data-postcode-lookup-label') ? this.getAttribute('data-postcode-lookup-label') : 'Use postcode lookup'}</button>\n <slot name=\"after\"></slot>\n </div>\n <div class=\"pre-filled p-2 js-hide\">\n <strong class=\"title text-primary d-block\"></strong>\n <p><span class=\"pre-filled-address\"></span>\n <button class=\"link m-0 text-primary ms-2 cursor-pointer\" type=\"button\" part=\"edit-button\">\n <i class=\"fa-regular fa-pen-to-square m-0\"></i> <span class=\"visually-hidden\">Edit</span>\n </button>\n <button class=\"link m-0 text-primary ms-2 cursor-pointer\" type=\"button\" part=\"remove-button\">\n <i class=\"fa-regular fa-trash m-0\"></i> <span class=\"visually-hidden\">Remove</span>\n </button>\n <slot name=\"prefilled\"></slot></p>\n </div>\n </div>\n `;\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n const lookup = this.shadowRoot.querySelector('[name=\"postcode\"]');\n const lookupWrapper = this.shadowRoot.querySelector('.postcode-lookup');\n const manualWrapper = this.shadowRoot.querySelector('.manual-address');\n const preFilledWrapper = this.shadowRoot.querySelector('.pre-filled');\n const list = this.querySelector('datalist[slot=\"preloadedList\"]') ? this.querySelector('datalist[slot=\"preloadedList\"]') : this.shadowRoot.querySelector('.datalist__wrapper datalist');\n const listWrapper = this.shadowRoot.querySelector('.datalist__wrapper');\n const switchManualBtn = this.shadowRoot.querySelector('.switch-to-manual-btn');\n const switchLookupBtn = this.shadowRoot.querySelector('.switch-to-lookup-btn');\n const title = this.hasAttribute('data-title') ? this.getAttribute('data-title') : 'Find an address';\n const preFilledAddressBtn = this.shadowRoot.querySelector('[part=\"edit-button\"]');\n const preFilledAddressRemoveBtn = this.shadowRoot.querySelector('[part=\"remove-button\"]');\n const dataDisplayText = this.hasAttribute('data-display-text');\n const postcodeSubmit = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#postcode__submit');\n const errorMsg = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.invalid-feedback');\n const paginationWrapper = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#paginationWrapper');\n const minChars = this.hasAttribute('data-min-chars') ? parseInt(this.getAttribute('data-min-chars')) : 3;\n let pageNumber = 1;\n const atleastone = this.querySelector('.atleastone');\n Array.from(this.shadowRoot.querySelectorAll('.title')).forEach((titleElement) => {\n titleElement.innerHTML = title;\n });\n // #region functions\n function checkFilled(component) {\n const preFilledAddress = component.shadowRoot.querySelector('.pre-filled-address');\n let preFilled = true;\n preFilledAddress.innerHTML = '';\n Array.from(component.querySelectorAll('input[required],input[data-required],select[required],select[data-required]')).forEach((input) => {\n let value = input.hasAttribute('data-value') ? input.getAttribute('data-value') : input.value;\n if (input.tagName == \"SELECT\" && component.querySelector(`[value=\"${input.value}\"][data-value]`))\n value = component.querySelector(`[value=\"${input.value}\"][data-value]`).getAttribute('data-value');\n if (!value) {\n if (input.closest('.atleastone')) {\n if (!atleastone.querySelector('input:valid, input.is-valid')) {\n preFilled = false;\n }\n }\n else {\n preFilled = false;\n }\n }\n else {\n preFilledAddress.innerHTML += value + (/^-?\\d+$/.test(value) ? ' ' : ', ');\n }\n });\n preFilledAddress.innerHTML = preFilledAddress.innerHTML.slice(0, -2);\n // If has label then use that\n if (preFilled) {\n if (component.querySelector('[name=\"label\"]'))\n preFilledAddress.innerHTML = component.querySelector('[name=\"label\"]').value;\n // If has label then use that\n preFilledWrapper.classList.remove('js-hide');\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.add('js-hide');\n }\n }\n function openManualWrapper() {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n manualWrapper.scrollIntoView();\n }\n const atleastoneValidate = () => {\n if (atleastone.querySelector('input:valid, input.is-valid')) {\n Array.from(atleastone.querySelectorAll('input')).forEach(element => {\n element.removeAttribute('required');\n });\n }\n else {\n Array.from(atleastone.querySelectorAll('input')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n }\n };\n const fillInputs = (values) => {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n Object.keys(values).forEach((key) => {\n const value = values[key];\n let input = false;\n if (this.querySelector(`[data-name=\"${key}\"]`))\n input = this.querySelector(`[data-name=\"${key}\"]`);\n else if (this.querySelector(`[data-name-alt=\"${key}\"]`))\n input = this.querySelector(`[data-name-alt=\"${key}\"]`);\n else if (this.querySelector(`[name=\"${key}\"]`))\n input = this.querySelector(`[name=\"${key}\"]`);\n if (input && input.tagName == \"SELECT\" && value.id) {\n input.value = value.id;\n }\n else if (input && value != '') {\n input.value = value;\n if (input.hasAttribute('data-readonly')) {\n input.setAttribute('readonly', true);\n input.classList.add('is-valid');\n }\n }\n else if (value != \"\") {\n this.insertAdjacentHTML('beforeend', `<input type=\"hidden\" class=\"inserted\" data-hidden name=\"${key}\" value=\"${value}\" />`);\n }\n if (this.querySelector(`[data-name-2=\"${key}\"]`))\n this.querySelector(`[data-name-2=\"${key}\"]`).value += ' ' + value;\n });\n Array.from(this.querySelectorAll('[data-required]')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n lookup.removeAttribute('required');\n if (atleastone) {\n atleastoneValidate();\n }\n if (!this.hasAttribute('data-force-manual'))\n checkFilled(this);\n };\n const search = (searchValue_1, ...args_1) => __awaiter(this, [searchValue_1, ...args_1], void 0, function* (searchValue, paginate = false) {\n // check if postcode is valid\n const limit = this.hasAttribute('data-limit') ? parseInt(this.getAttribute('data-limit')) : 100;\n if (paginate)\n pageNumber++;\n else\n pageNumber = 1;\n let ajaxURL = this.getAttribute('data-url');\n ajaxURL += `${encodeURI(searchValue)}&page[number]=${pageNumber}&page[size]=${limit}`;\n if (this.hasAttribute('data-url-2')) {\n ajaxURL += this.getAttribute('data-url-2');\n }\n const postcode = searchValue; // TODO: remove when postcode comes from response\n if (this.hasAttribute('data-postcode')) {\n if (!isValidPostcode(searchValue)) {\n return \"Invalid postcode, please enter a valid postcode\";\n }\n else {\n if (!paginate)\n list.innerHTML = \"\";\n list === null || list === void 0 ? void 0 : list.classList.add('loading');\n list === null || list === void 0 ? void 0 : list.classList.remove('noresults');\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.remove('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = \"\";\n list === null || list === void 0 ? void 0 : list.classList.remove('show-welsh-banner');\n Array.from(this.querySelectorAll('[data-required]')).forEach((input) => {\n input.removeAttribute('required');\n });\n Array.from(this.querySelectorAll('[data-readonly]')).forEach((input) => {\n input.removeAttribute('readonly');\n input.classList.remove('is-valid');\n });\n Array.from(this.querySelectorAll('.inserted')).forEach((input) => {\n input.remove();\n });\n }\n }\n this.classList.add('searched');\n this.classList.add('was-validated');\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = controller[ajaxURL];\n try {\n return yield fetch(ajaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n var _a;\n // populate datalist\n let listString = '';\n const addresses = response['data'] ? response['data'] : response;\n addresses.forEach((address) => {\n // Deal with agent platform response\n if (typeof address.attributes == 'object' && address.attributes.label) {\n const values = JSON.stringify(address.attributes);\n listString += `<option data-values='${values}' >${address.attributes.label}</option>`;\n }\n else if (typeof address.value == 'object') {\n const values = JSON.stringify(address.value);\n listString += `<option data-values='${values}'>${address['label']}, ${postcode}</option>`;\n }\n else {\n const values = JSON.stringify(address);\n if (dataDisplayText) {\n listString += `<option data-values='${values}'>${address[dataDisplayText]}, ${postcode}</option>`;\n }\n else {\n let itemString = '';\n for (const [key, value] of Object.entries(address)) {\n if (key == 'address_number_name')\n itemString += `${value} `;\n else if (key != 'postcode' && key != 'address_title' && key != 'group')\n itemString += `${value}${/^-?\\d+$/.test(value) ? '' : ','} `;\n }\n listString += `<option data-values='${values}'>${itemString}, ${postcode}</option>`; // TODO postcode should come from the response\n }\n }\n });\n if (paginate)\n list.innerHTML += listString;\n else\n list.innerHTML = listString;\n if (addresses.length) {\n list === null || list === void 0 ? void 0 : list.classList.remove('loading');\n }\n else {\n list === null || list === void 0 ? void 0 : list.classList.remove('loading');\n list === null || list === void 0 ? void 0 : list.classList.add('noresults');\n }\n // pagination\n if (response.meta && response.meta.current_page && response.meta.total_pages && response.meta.total_pages > response.meta.current_page) {\n paginationWrapper === null || paginationWrapper === void 0 ? void 0 : paginationWrapper.innerHTML = `<div class=\"bg-light text-center p-2\"><p class=\"m-0\">Showing 1-${response.meta.current_page * limit} of ${response.meta.total_results} addresses <br /><button type=\"button\" data-next=\"${response.meta.current_page + 1}\" class=\"mt-1 mb-0 btn btn-action\"><i class=\"fa-regular fa-eye me-1\"></i>Show more addresses</button></p></div>`;\n }\n else {\n paginationWrapper === null || paginationWrapper === void 0 ? void 0 : paginationWrapper.innerHTML = '';\n }\n if (response.meta && response.meta.welsh_language) {\n list === null || list === void 0 ? void 0 : list.classList.add('show-welsh-banner');\n }\n listWrapper === null || listWrapper === void 0 ? void 0 : listWrapper.focus();\n (_a = list === null || list === void 0 ? void 0 : list.querySelector('option')) === null || _a === void 0 ? void 0 : _a.focus();\n return true;\n });\n }\n catch (error) {\n console.log(error);\n return \"There has been a problem. Please try again in a few moments.\";\n }\n });\n // #endregion\n // #region check attributes and trigger functions \n if (!this.hasAttribute('data-force-manual'))\n checkFilled(this);\n this.addEventListener('filled', () => {\n if (!this.hasAttribute('data-force-manual'))\n checkFilled(this);\n });\n if (this.hasAttribute('data-use')) {\n const useLabel = this.hasAttribute('data-use-label') ? this.getAttribute('data-use-label') : 'Use saved address';\n const useCheckbox = `<div><input type=\"checkbox\" name=\"use\" id=\"use\" value=\"yes\"><label for=\"use\">${useLabel}</label></div>`;\n lookupWrapper.insertAdjacentHTML('afterbegin', useCheckbox);\n this.shadowRoot.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[name=\"use\"]')) {\n const checkbox = event.target.closest('[name=\"use\"]');\n if (checkbox.checked) {\n lookupWrapper.classList.add('js-hide');\n manualWrapper.classList.remove('js-hide');\n const values = JSON.parse(this.getAttribute('data-use'));\n Object.keys(values).forEach((key) => {\n const value = values[key];\n if (this.querySelector(`[data-name=\"${key}\"]`))\n this.querySelector(`[data-name=\"${key}\"]`).value = value;\n else if (this.querySelector(`[name=\"${key}\"]`))\n this.querySelector(`[name=\"${key}\"]`).value = value;\n });\n }\n }\n });\n if (this.hasAttribute('data-use-default')) {\n lookupWrapper.querySelector('[name=\"use\"]').checked = true;\n const values = JSON.parse(this.getAttribute('data-use'));\n fillInputs(values);\n }\n }\n if (this.hasAttribute('data-manual')) {\n fillInputs({});\n }\n if (this.classList.contains('show-pagination'))\n paginationWrapper === null || paginationWrapper === void 0 ? void 0 : paginationWrapper.innerHTML = `<div class=\"bg-light text-center p-2\"><p class=\"m-0\">Showing 1-500 of 585 addresses <br /><button type=\"button\" data-next=\"2\" class=\"mt-1 mb-0 btn btn-action\"><i class=\"fa-regular fa-eye me-1\"></i>Show more addresses</button></p></div>`;\n if (this.classList.contains('scroll-to-bottom-results'))\n paginationWrapper.scrollIntoView({ container: 'nearest' });\n // #endregion\n // #region event listeners\n preFilledAddressBtn.addEventListener('click', () => {\n preFilledWrapper.classList.add('js-hide');\n openManualWrapper();\n });\n preFilledAddressRemoveBtn.addEventListener('click', () => {\n preFilledWrapper.classList.add('js-hide');\n lookupWrapper.classList.remove('js-hide');\n manualWrapper.classList.add('js-hide');\n list.innerHTML = \"\";\n list === null || list === void 0 ? void 0 : list.classList.remove('loading');\n list === null || list === void 0 ? void 0 : list.classList.remove('noresults');\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.remove('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = \"\";\n list === null || list === void 0 ? void 0 : list.classList.remove('show-welsh-banner');\n lookup.focus();\n lookup.value = \"\";\n if (lookup === null || lookup === void 0 ? void 0 : lookup.hasAttribute('data-placeholder'))\n lookup.setAttribute('placeholder', lookup === null || lookup === void 0 ? void 0 : lookup.getAttribute('data-placeholder'));\n const updateEvent = new CustomEvent('switch-to-lookup');\n this.dispatchEvent(updateEvent);\n lookupWrapper.scrollIntoView();\n });\n switchManualBtn.addEventListener('click', () => {\n openManualWrapper();\n });\n this.addEventListener('open-manual', () => {\n openManualWrapper();\n });\n switchLookupBtn.addEventListener('click', () => {\n lookupWrapper.classList.remove('js-hide');\n manualWrapper.classList.add('js-hide');\n const updateEvent = new CustomEvent('switch-to-lookup');\n this.dispatchEvent(updateEvent);\n lookupWrapper.scrollIntoView();\n });\n lookup.addEventListener('keyup', (e) => __awaiter(this, void 0, void 0, function* () {\n if (![40, 38, 13].includes(e.keyCode) && lookup.value.length >= minChars) {\n const valid = yield search(lookup.value);\n if (valid != true) {\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.add('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = valid;\n }\n }\n if (e.keyCode == 13) {\n const valid = yield search(lookup.value);\n if (valid != true) {\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.add('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = valid;\n }\n }\n }));\n lookup.addEventListener('change', () => __awaiter(this, void 0, void 0, function* () {\n if (lookup.value.length >= minChars) {\n const valid = yield search(lookup.value);\n if (valid != true) {\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.add('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = valid;\n }\n }\n }));\n list.addEventListener('click', (e) => {\n if (e.target.tagName == \"OPTION\") {\n const values = JSON.parse(e.target.getAttribute('data-values'));\n fillInputs(values);\n if (this.shadowRoot.querySelector('[name=\"use\"]'))\n this.shadowRoot.querySelector('[name=\"use\"]').checked = false;\n }\n });\n atleastone === null || atleastone === void 0 ? void 0 : atleastone.addEventListener('input', (e) => {\n Array.from(atleastone.querySelectorAll('[data-required]')).forEach((input) => {\n input.setAttribute('required', 'true');\n });\n atleastoneValidate();\n });\n postcodeSubmit === null || postcodeSubmit === void 0 ? void 0 : postcodeSubmit.addEventListener('click', () => __awaiter(this, void 0, void 0, function* () {\n const valid = yield search(lookup.value);\n if (valid != true) {\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.add('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = valid;\n }\n }));\n this === null || this === void 0 ? void 0 : this.addEventListener('search', () => __awaiter(this, void 0, void 0, function* () {\n const valid = yield search(lookup.value);\n if (valid != true) {\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.add('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = valid;\n }\n }));\n this === null || this === void 0 ? void 0 : this.addEventListener('close-button-pressed', () => {\n list.innerHTML = \"\";\n list === null || list === void 0 ? void 0 : list.classList.remove('loading');\n list === null || list === void 0 ? void 0 : list.classList.remove('noresults');\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.remove('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = \"\";\n list === null || list === void 0 ? void 0 : list.classList.remove('show-welsh-banner');\n lookup.focus();\n });\n paginationWrapper === null || paginationWrapper === void 0 ? void 0 : paginationWrapper.addEventListener('click', (e) => __awaiter(this, void 0, void 0, function* () {\n if (e.target.tagName == \"BUTTON\") {\n const valid = yield search(lookup.value, true);\n if (valid != true) {\n lookup === null || lookup === void 0 ? void 0 : lookup.classList.add('is-invalid');\n errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.innerHTML = valid;\n }\n }\n }));\n // #endregion\n advancedSelect(this, lookup, list, true);\n });\n }\n}\nexport default iamAddressLookup;\n"],"names":["advancedSelect","displayInputField","datalist","isSearch","currentFocus","option","event","optionInner","text","e","addActive","x","removeActive","i","emptyField","updateEvent","isValidPostcode","searchValue","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","rejected","result","iamAddressLookup","_a","template","_b","_c","lookup","lookupWrapper","manualWrapper","preFilledWrapper","list","listWrapper","switchManualBtn","switchLookupBtn","title","preFilledAddressBtn","preFilledAddressRemoveBtn","dataDisplayText","postcodeSubmit","errorMsg","paginationWrapper","minChars","pageNumber","atleastone","titleElement","checkFilled","component","preFilledAddress","preFilled","input","openManualWrapper","atleastoneValidate","element","fillInputs","values","key","search","searchValue_1","args_1","paginate","limit","ajaxURL","postcode","signal","Cookies","response","listString","addresses","address","itemString","error","useCheckbox","valid"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.5.1--
|
|
2
|
+
* iamKey v7.5.1--beta4
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
|
-
*/function
|
|
4
|
+
*/function f(n,t,o,a=!1){let s=-1;o.closest(".datalist__wrapper")&&o.closest(".datalist__wrapper"),t.setAttribute("data-list",t.getAttribute("list")),t.setAttribute("list",""),t.hasAttribute("placeholder")&&t.setAttribute("data-placeholder",t.getAttribute("placeholder")),t.hasAttribute("placeholder")&&t.setAttribute("data-original-placeholder",t.getAttribute("placeholder")),t.addEventListener("focus",function(){t.value!=""&&(t.setAttribute("placeholder",t.value),t.setAttribute("data-value",t.value)),t.value=""}),t.addEventListener("blur",function(){t.hasAttribute("data-value")&&(t.value=t.getAttribute("data-value")),t.hasAttribute("data-placeholder")&&t.setAttribute("placeholder",t.getAttribute("data-placeholder"))});for(const e of o.options)e.innerHTML==""&&(e.innerHTML=e.value);o.addEventListener("click",function(e){if(e&&e.target instanceof HTMLElement&&e.target.closest("option")){const r=e.target.closest("option");t.value=r.value,typeof window.triggerDynamicEvent=="function"&&window.triggerDynamicEvent(t);for(const l of o.options)l.classList.remove("active");r.classList.add("active")}}),t.addEventListener("input",function(){t.removeAttribute("data-value"),s=-1;const e=t.value.toUpperCase();for(const r of o.options)r.value.toUpperCase().indexOf(e)>-1?(r.style.display="block",r.classList.remove("hide")):(r.style.display="none",r.classList.add("hide"))}),n.addEventListener("keydown",function(e){e.keyCode==40?(s++,c(o.options)):e.keyCode==38?(s--,c(o.options)):e.keyCode==13&&(e.preventDefault(),s>-1&&o.options&&o.options[s].click())});function c(e){if(!e)return!1;u(e),s>=e.length&&(s=0),s<0&&(s=e.length-1),e[s].classList.add("active")}function u(e){if(!e)return!1;for(let r=0;r<e.length;r++)e[r].classList.remove("active")}t.closest("label").insertAdjacentHTML("beforeend",'<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>');const i=()=>{t.hasAttribute("data-original-placeholder")&&t.setAttribute("placeholder",t.getAttribute("data-original-placeholder")),t.removeAttribute("data-value"),t.value="";for(const r of o.options)r.classList.remove("active"),r.removeAttribute("style");const e=new CustomEvent("close-button-pressed");n.dispatchEvent(e)};(n.querySelector(".empty")?n.querySelector(".empty"):n.shadowRoot.querySelector(".empty")).addEventListener("click",function(e){i()}),n.addEventListener("empty",function(e){i()})}const b=n=>n.replace(/ /g,"_"),h=function(n){return n=n.toLowerCase(),n=b(n),n=n.replace(/\W/g,""),n};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Advanced select"});class m extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const t=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",o=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${t}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
|
|
5
5
|
<style>
|
|
6
6
|
@import "${o}";
|
|
7
7
|
input {
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
</style>
|
|
20
20
|
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
|
|
21
21
|
<slot></slot>
|
|
22
|
-
`,this.shadowRoot.appendChild(
|
|
22
|
+
`,this.shadowRoot.appendChild(a.content.cloneNode(!0))}connectedCallback(){const t=this.querySelector("input"),o=t.cloneNode();o.setAttribute("name",`${t.getAttribute("name")}Alt`),t.removeAttribute("data-change-events"),o.removeAttribute("id");let a=this.querySelector("datalist");if(t.after(o),t.setAttribute("type","hidden"),!a){a=document.createElement("datalist");const s=h("list");a.setAttribute("id",s),searchWrapper.appendChild(a),o.setAttribute("list",s)}f(this,o,a)}}export{m as default};
|
|
23
23
|
//# sourceMappingURL=advanced-select.component.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-select.component.min.js","sources":["../../modules/advanced-select.js","../../modules/helpers.js","advanced-select.component.js"],"sourcesContent":["function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false) {\n let currentFocus = -1;\n if (!isSearch) {\n displayInputField.addEventListener('focus', function () {\n displayInputField.setAttribute('placeholder', displayInputField.value);\n displayInputField.setAttribute('data-value', displayInputField.value);\n displayInputField.value = '';\n displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));\n displayInputField.setAttribute('list', '');\n datalist.style.display = 'block';\n });\n }\n else {\n displayInputField.addEventListener('focus', function () {\n displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));\n displayInputField.setAttribute('list', '');\n datalist.style.display = 'block';\n });\n }\n displayInputField.addEventListener('blur', function () {\n if (displayInputField.hasAttribute('data-value')) {\n displayInputField.value = displayInputField.getAttribute('data-value');\n }\n setTimeout(() => {\n datalist.style.display = 'none';\n }, 500);\n });\n for (const option of datalist.options) {\n if (option.innerHTML == '')\n option.innerHTML = option.value;\n }\n advancedSelect.addEventListener('click', function () {\n if (event && event.target instanceof HTMLElement && event.target.closest('datalist option')) {\n const option = event.target.closest('datalist option');\n displayInputField.value = option.value;\n if (typeof window.triggerDynamicEvent == 'function')\n window.triggerDynamicEvent(displayInputField);\n datalist.style.display = 'none';\n for (const optionInner of datalist.options) {\n optionInner.classList.remove('active');\n }\n option.classList.add('active');\n }\n });\n displayInputField.addEventListener('input', function () {\n displayInputField.removeAttribute('data-value');\n currentFocus = -1;\n const text = displayInputField.value.toUpperCase();\n for (const option of datalist.options) {\n if (option.value.toUpperCase().indexOf(text) > -1) {\n option.style.display = 'block';\n }\n else {\n option.style.display = 'none';\n }\n }\n });\n displayInputField.addEventListener('keydown', function (e) {\n if (e.keyCode == 40) {\n currentFocus++;\n addActive(datalist.options);\n }\n else if (e.keyCode == 38) {\n currentFocus--;\n addActive(datalist.options);\n }\n else if (e.keyCode == 13) {\n e.preventDefault();\n if (currentFocus > -1) {\n /*and simulate a click on the \"active\" item:*/\n if (datalist.options)\n datalist.options[currentFocus].click();\n }\n }\n });\n function addActive(x) {\n if (!x)\n return false;\n removeActive(x);\n if (currentFocus >= x.length)\n currentFocus = 0;\n if (currentFocus < 0)\n currentFocus = x.length - 1;\n x[currentFocus].classList.add('active');\n }\n function removeActive(x) {\n for (let i = 0; i < x.length; i++) {\n x[i].classList.remove('active');\n }\n }\n // Add the empty button\n displayInputField\n .closest('label')\n .insertAdjacentHTML('beforeend', '<button class=\"empty btn btn-action\"><i class=\"fa-light fa-times me-0\"></i></button>');\n const closeBtn = advancedSelect.querySelector('.empty');\n closeBtn.addEventListener('click', function (e) {\n displayInputField.removeAttribute('placeholder');\n displayInputField.removeAttribute('data-value');\n displayInputField.value = '';\n for (const optionInner of datalist.options) {\n optionInner.classList.remove('active');\n optionInner.removeAttribute('style');\n }\n });\n}\nexport default advancedSelect;\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};\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 advancedSelect from '../../modules/advanced-select.js';\nimport { safeID } from '../../modules/helpers.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'Advanced select',\n});\nclass iamAdvancedSelect 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 template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n input {\n background: red;\n }\n input:not(.is-invalid):not(:invalid) {\n background: none!important;\n }\n .optional-text {\n display: none;\n } \n .js-hide {\n display: none !important;\n }\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\" />\n <slot></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // Clone original input field, re-name and use for display purposes\n const inputField = this.querySelector('input');\n const displayInputField = inputField.cloneNode();\n displayInputField.setAttribute('name', `${inputField.getAttribute('name')}Alt`);\n inputField.removeAttribute('data-change-events');\n displayInputField.removeAttribute('id');\n let datalist = this.querySelector('datalist');\n inputField.after(displayInputField);\n // Hide original input field\n inputField.setAttribute('type', 'hidden');\n // if data list does not exist then create one and append\n if (!datalist) {\n datalist = document.createElement('datalist');\n const listID = safeID('list');\n datalist.setAttribute('id', listID);\n searchWrapper.appendChild(datalist);\n displayInputField.setAttribute('list', listID);\n }\n advancedSelect(this, displayInputField, datalist);\n }\n}\nexport default iamAdvancedSelect;\n"],"names":["advancedSelect","displayInputField","datalist","isSearch","currentFocus","option","optionInner","text","addActive","x","removeActive","i","snake","str","safeID","iamAdvancedSelect","assetLocation","coreCSS","template","inputField","listID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"advanced-select.component.min.js","sources":["../../modules/advanced-select.js","../../modules/helpers.js","advanced-select.component.js"],"sourcesContent":["function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false) {\n let currentFocus = -1;\n const datalistWrapper = datalist.closest('.datalist__wrapper') ? datalist.closest('.datalist__wrapper') : datalist;\n // Hide the default datalist\n displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));\n displayInputField.setAttribute('list', '');\n if (displayInputField.hasAttribute('placeholder'))\n displayInputField.setAttribute('data-placeholder', displayInputField.getAttribute('placeholder'));\n if (displayInputField.hasAttribute('placeholder'))\n displayInputField.setAttribute('data-original-placeholder', displayInputField.getAttribute('placeholder'));\n displayInputField.addEventListener('focus', function () {\n if (displayInputField.value != \"\") {\n displayInputField.setAttribute('placeholder', displayInputField.value);\n displayInputField.setAttribute('data-value', displayInputField.value);\n }\n displayInputField.value = '';\n });\n displayInputField.addEventListener('blur', function () {\n if (displayInputField.hasAttribute('data-value')) {\n displayInputField.value = displayInputField.getAttribute('data-value');\n }\n if (displayInputField.hasAttribute('data-placeholder'))\n displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-placeholder'));\n });\n for (const option of datalist.options) {\n if (option.innerHTML == '')\n option.innerHTML = option.value;\n }\n datalist.addEventListener('click', function (event) {\n if (event && event.target instanceof HTMLElement && event.target.closest('option')) {\n const option = event.target.closest('option');\n displayInputField.value = option.value;\n if (typeof window.triggerDynamicEvent == 'function')\n window.triggerDynamicEvent(displayInputField);\n for (const optionInner of datalist.options) {\n optionInner.classList.remove('active');\n }\n option.classList.add('active');\n }\n });\n displayInputField.addEventListener('input', function () {\n displayInputField.removeAttribute('data-value');\n currentFocus = -1;\n const text = displayInputField.value.toUpperCase();\n for (const option of datalist.options) {\n if (option.value.toUpperCase().indexOf(text) > -1) {\n option.style.display = 'block';\n option.classList.remove('hide');\n }\n else {\n option.style.display = 'none';\n option.classList.add('hide');\n }\n }\n });\n advancedSelect.addEventListener('keydown', function (e) {\n if (e.keyCode == 40) {\n currentFocus++;\n addActive(datalist.options);\n }\n else if (e.keyCode == 38) {\n currentFocus--;\n addActive(datalist.options);\n }\n else if (e.keyCode == 13) {\n e.preventDefault();\n if (currentFocus > -1) {\n /*and simulate a click on the \"active\" item:*/\n if (datalist.options)\n datalist.options[currentFocus].click();\n }\n }\n });\n function addActive(x) {\n if (!x)\n return false;\n removeActive(x);\n if (currentFocus >= x.length)\n currentFocus = 0;\n if (currentFocus < 0)\n currentFocus = x.length - 1;\n x[currentFocus].classList.add('active');\n }\n function removeActive(x) {\n if (!x)\n return false;\n for (let i = 0; i < x.length; i++) {\n x[i].classList.remove('active');\n }\n }\n // Add the empty button\n displayInputField\n .closest('label')\n .insertAdjacentHTML('beforeend', '<button class=\"empty btn btn-action\"><i class=\"fa-light fa-times me-0\"></i></button>');\n const emptyField = () => {\n if (displayInputField.hasAttribute('data-original-placeholder'))\n displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-original-placeholder'));\n displayInputField.removeAttribute('data-value');\n displayInputField.value = '';\n for (const optionInner of datalist.options) {\n optionInner.classList.remove('active');\n optionInner.removeAttribute('style');\n }\n const updateEvent = new CustomEvent('close-button-pressed');\n advancedSelect.dispatchEvent(updateEvent);\n };\n const closeBtn = advancedSelect.querySelector('.empty') ? advancedSelect.querySelector('.empty') : advancedSelect.shadowRoot.querySelector('.empty');\n closeBtn.addEventListener('click', function (e) {\n emptyField();\n });\n advancedSelect.addEventListener('empty', function (e) {\n emptyField();\n });\n}\nexport default advancedSelect;\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};\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 Array.from(document.querySelectorAll('form')).forEach((form) => {\n form.addEventListener('submit', (event) => {\n var _a;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n });\n });\n document.addEventListener('click', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {\n const form = event.target.closest('form');\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 (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\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};\nexport const isValidPostcode = (searchValue) => {\n const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;\n return regexp.test(searchValue.trim());\n};\n","import advancedSelect from '../../modules/advanced-select.js';\nimport { safeID } from '../../modules/helpers.js';\n// Data layer Web component created\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n event: 'customElementRegistered',\n element: 'Advanced select',\n});\nclass iamAdvancedSelect 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 template = document.createElement('template');\n template.innerHTML = `\n <style>\n @import \"${coreCSS}\";\n input {\n background: red;\n }\n input:not(.is-invalid):not(:invalid) {\n background: none!important;\n }\n .optional-text {\n display: none;\n } \n .js-hide {\n display: none !important;\n }\n </style>\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/26fdbf0179.css\" crossorigin=\"anonymous\" />\n <slot></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // Clone original input field, re-name and use for display purposes\n const inputField = this.querySelector('input');\n const displayInputField = inputField.cloneNode();\n displayInputField.setAttribute('name', `${inputField.getAttribute('name')}Alt`);\n inputField.removeAttribute('data-change-events');\n displayInputField.removeAttribute('id');\n let datalist = this.querySelector('datalist');\n inputField.after(displayInputField);\n // Hide original input field\n inputField.setAttribute('type', 'hidden');\n // if data list does not exist then create one and append\n if (!datalist) {\n datalist = document.createElement('datalist');\n const listID = safeID('list');\n datalist.setAttribute('id', listID);\n searchWrapper.appendChild(datalist);\n displayInputField.setAttribute('list', listID);\n }\n advancedSelect(this, displayInputField, datalist);\n }\n}\nexport default iamAdvancedSelect;\n"],"names":["advancedSelect","displayInputField","datalist","isSearch","currentFocus","option","event","optionInner","text","addActive","x","removeActive","i","emptyField","updateEvent","snake","str","safeID","iamAdvancedSelect","assetLocation","coreCSS","template","inputField","listID"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.5.1--
|
|
2
|
+
* iamKey v7.5.1--beta4
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/function y(r,s){function n(e,t,c=!0){let m=!1,o=t.getAttribute("name");if(!o)return!1;o.includes("[]")&&(o=o.replace("[]",`[${t.value}]`));let a=e.querySelector(`[data-name="${o}"]`);a&&t.getAttribute("type")=="checkbox"&&(m=!t.checked);const f=t.getAttribute("data-filter-text");if(a||(a=document.createElement("button"),e.appendChild(a)),a.setAttribute("type","button"),a.classList.add("filter"),a.classList.add("tag"),c&&a.classList.add("tag--not-set"),a.setAttribute("data-name",o),a.innerHTML=f.replace("$value",t.value),(!t.value||m)&&a.remove(),t.parentNode.closest("[data-filter-text]")){const d=t.parentNode.closest("[data-filter-text]");let l=!0;if(o="",d.querySelectorAll("input").forEach((i,u)=>{const g=i.getAttribute("name");if(o+=`${u!=0?",":""}${g}`,e.querySelector(`[data-name="${g}"]`)&&e.querySelector(`[data-name="${g}"]`).remove(),i.value){const p=document.createElement("button");p.setAttribute("type","button"),p.classList.add("filter"),p.classList.add("tag"),c&&a.classList.add("tag--not-set"),p.setAttribute("data-name",g),p.innerHTML=f.replace("$value",i.value),e.appendChild(p)}else l=!1}),e.querySelector(`[data-name="${o}"]`)&&e.querySelector(`[data-name="${o}"]`).remove(),l){let i=d.getAttribute("data-filter-text");d.querySelectorAll("input").forEach((g,p)=>{const h=g.getAttribute("name");e.querySelector(`[data-name="${h}"]`)&&e.querySelector(`[data-name="${h}"]`).remove(),i=i.replace(`$${p+1}`,g.value)});const u=document.createElement("button");u.setAttribute("type","button"),u.classList.add("filter"),u.classList.add("tag"),c&&a.classList.add("tag--not-set"),u.setAttribute("data-name",o),u.innerHTML=i,e.appendChild(u)}}}Array.from(r.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(e=>{n(s,e,!1)});const b=r.closest("dialog");b&&new MutationObserver(function(t){t[0].attributeName=="open"&&Array.from(r.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(c=>{n(s,c,!1)})}).observe(b,{attributes:!0}),r.addEventListener("tags-set",function(){s.innerHTML="",Array.from(r.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(e=>{n(s,e,!1)})}),Array.from(r.querySelectorAll('input[type="checkbox"]:checked, input:not([type="checkbox"]):not([type="radio"])')).forEach(e=>{e.addEventListener("change",function(t){r.hasAttribute("data-keep-same")||n(s,e),t.stopPropagation()})}),r.addEventListener("change",function(e){if(e&&e.target instanceof HTMLElement&&e.target.closest("input[data-filter-text]")){const t=e.target.closest("input[data-filter-text]");r.hasAttribute("data-keep-same")||n(s,t)}}),s.addEventListener("click",function(e){if(e&&e.target instanceof HTMLElement&&e.target.closest(".filter")){const t=e.target.closest(".filter"),c=t.getAttribute("data-name").split(",");for(let m=0;m<c.length;m++){const o=c[m];let a=`[name="${o}"]`;o.match(/\[(.*)\]/)&&(a=`[value="${o.replace(/.*\[(.*)\]/,"$1")}"]`);const f=r.querySelectorAll(a);for(let d=0;d<f.length;d++){const l=f[d];if(l.getAttribute("type")!="radio"&&l.getAttribute("type")!="checkbox"){l.value="";const i=new Event("force");r.hasAttribute("data-nosubmit")||l.closest("form").dispatchEvent(i)}else{l.checked=!1;const i=new Event("force");r.hasAttribute("data-nosubmit")||l.closest("form").dispatchEvent(i)}}}t.remove()}},!1)}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Applied Filters"});class v extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const s=this.classList.toString(),n=document.createElement("template");n.innerHTML=`
|
|
5
5
|
<style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v7.5.1--
|
|
2
|
+
* iamKey v7.5.1--beta4
|
|
3
3
|
* Copyright 2022-2025 iamproperty
|
|
4
4
|
*/const L=t=>t.charAt(0).toUpperCase()+t.slice(1),M=t=>t.replace(/_/g," "),E=(t,r)=>{for(let e=1;e<=10;e++){if(t.hasAttribute(`data-colour-${e}`)){const a=t.getAttribute(`data-colour-${e}`);t.style.setProperty(`--chart-colour-${e}`,`var(--chart-colour-${a})`),t.style.setProperty(`--chart-colour-${e}-hover`,`var(--chart-colour-${a}-hover)`)}Array.from(r.querySelectorAll(`[data-colour-${e}]`)).forEach(a=>{const o=a.getAttribute(`data-colour-${e}`);a.style.setProperty(`--chart-colour-${e}-set`,`var(--chart-colour-${o})`),a.style.setProperty(`--chart-colour-${e}-hover`,`var(--chart-colour-${o}-hover)`)})}return!0},k=(t,r,e)=>{if(t.tagName=="IAM-DOUGHNUTCHART")return P(t,r,e),!0;const a=r.querySelector(".chart__key");a.innerHTML="";const o=r.querySelector(".chart__guidelines");o.innerHTML="";const n=r.querySelector(".chart__yaxis");n.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(i=>{i.remove()});const{xaxis:c}=f(t);return A(t,e),T(r,e,a),K(t,o),X(t,n),c&&Y(r),!0},P=(t,r,e)=>{const a=r.querySelector(".chart__key");return a.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(o=>{o.remove()}),A(t,e),T(r,e,a),F(r),!0},N=function(t,r){const e=r.querySelector(".chart");e.addEventListener("mousemove",c=>{if(c&&c.target instanceof HTMLElement&&c.target.closest("td:not(:first-child")){const h=c.target.closest("td:not(:first-child").getBoundingClientRect(),s=c.clientX-h.left,l=c.clientY-h.top;e.setAttribute("style",`--cursor-x: ${s}px; --cursor-y: ${l}px;`)}});const a=r.querySelectorAll("label");Array.from(a).forEach(c=>{r.querySelector(`input#${c.getAttribute("for")}`).checked?c.setAttribute("part","key-checked"):c.setAttribute("part","key-unchecked")});const o=t.querySelector("table"),n=r.querySelector("table");r.addEventListener("change",function(c){const i=c.target,h=new CustomEvent("view-change",{detail:{"data-dataset":i.getAttribute("data-dataset"),label:i.getAttribute("data-label"),checked:i.checked}});t.dispatchEvent(h),Array.from(a).forEach(s=>{var l;!((l=r.querySelector(`input#${s.getAttribute("for")}`))===null||l===void 0)&&l.checked?s.setAttribute("part","key-checked"):s.setAttribute("part","key-unchecked")}),n.innerHTML=o.innerHTML,A(t,n),t.tagName=="IAM-DOUGHNUTCHART"&&F(r)})},R=function(t,r){const e=t.querySelector("table"),a=r.querySelector("table"),o=(h,s)=>{s.disconnect(),i.disconnect();for(const l of h)(l.attributeName=="class"||l.type==="attributes"||l.type==="attributes")&&(a.innerHTML=e.innerHTML,k(t,r,a));s.observe(e,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0})},n=(h,s)=>{s.disconnect(),i.disconnect();for(const l of h)(l.type=="characterData"||l.type=="childList"&&l.addedNodes.length)&&(a.innerHTML=e.innerHTML,k(t,r,a));s.observe(e,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0})},c=new MutationObserver(n),i=new MutationObserver(o);return c.observe(e,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0}),!0};function q(t,r){r>1&&(t=t-.25);const e=Math.cos(2*Math.PI*t),a=Math.sin(2*Math.PI*t);return[e*100,a*100]}const f=function(t){const r=t.shadowRoot.querySelector(".chart__wrapper table"),e=t.hasAttribute("data-min")?t.getAttribute("data-min"):0,a=t.hasAttribute("data-max")?t.getAttribute("data-max"):V(t,r),o=t.hasAttribute("data-yaxis")?t.getAttribute("data-yaxis").split(","):[],n=t.hasAttribute("data-guidelines")?t.getAttribute("data-guidelines").split(","):[],c=t.hasAttribute("data-xaxis")?t.getAttribute("data-xaxis").split(","):null;return{min:e,max:a,yaxis:o,xaxis:c,guidelines:n}};function V(t,r){const e=t.classList.contains("chart--stacked")?"tbody tr":"tbody td:not(:first-child)",a=Array.from(r.querySelectorAll(e)).map(n=>n.getAttribute("data-numeric")),o=Math.max(...a);return Math.ceil(o)}const x=function(t,r,e,a){let o=String(t);o=o.replace("\xA3",""),o=o.replace("%",""),o=o.replace(",",""),o=Number.parseFloat(o);let n=(o-r)/(e-r)*100,c=n,i=0;return a&&a!=0&&(i=(a-r)/(e-r)*100),r<0&&(i=Math.abs(r/(e-r)*100),o<0?(n=i-n,i=i-n,c=i):(n=n-i,c=n+i)),{percent:n,axis:c,bottom:i}},A=function(t,r){Array.from(r.querySelectorAll("tbody tr")).forEach(o=>{let n=0;Array.from(o.querySelectorAll("td:not(:first-child)")).forEach(c=>{const i=c.cloneNode(!0);Array.from(i.querySelectorAll("*")).forEach(l=>{l.remove()});const h=parseFloat(i.textContent.replace("\xA3","").replace("%","").replace(",",""));c.setAttribute("data-numeric",h),c.setAttribute("data-value",i.textContent),getComputedStyle(c).display!="none"&&(n+=h),Array.from(c.querySelectorAll("a, button")).forEach((l,m)=>{m==0&&l.insertAdjacentHTML("beforeBegin","<hr/>"),l.classList.add("btn"),l.classList.add("btn-tertiary")})}),o.setAttribute("data-numeric",n)});const{min:e,max:a}=f(t);Array.from(r.querySelectorAll("tbody tr")).forEach((o,n)=>{const c=o.querySelector("td:first-child, th:first-child")?o.querySelector("td:first-child, th:first-child").textContent:"";o.setAttribute("part","group");const i=(o.getAttribute("data-numeric")-e)/(a-e)*100;o.style.setProperty("--percent",`${i}%`),Array.from(o.querySelectorAll("td:not([data-label])")).forEach((l,m)=>{m==0?l.setAttribute("part","xaxis-label"):l.setAttribute("part","value"),o.querySelectorAll("td").length>2&&l.setAttribute("data-label",r.querySelectorAll("thead th")[m].textContent)});const h=o.hasAttribute("data-min")?o.getAttribute("data-min"):e,s=o.hasAttribute("data-max")?o.getAttribute("data-max"):a;if(h<0){const l=Math.abs(h/(s-h)*100);t.setAttribute("style",`--min-bottom: ${l}%;`)}o.style.setProperty("--row-index",n+1),Array.from(o.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')).forEach(l=>{if(getComputedStyle(l).display=="none")return;const y=l.innerHTML,g=Number.parseFloat(l.getAttribute("data-numeric")),d=Number.parseFloat(l.getAttribute("data-start"));if(l.querySelector("span[data-group]")||(l.innerHTML=`<span data-group="${c}" ${l.hasAttribute("data-label")?`data-label="${l.getAttribute("data-label")}"`:""} part="popover">${y}</span>`),!l.hasAttribute("style")){const{percent:u,bottom:v,axis:p}=x(g,h,s,d);l.setAttribute("data-percent",u),l.setAttribute("style",`--bottom:${v}%;--percent:${u}%;--axis:${p}%;`)}})})},U=function(t){const r=t.querySelector(".chart__wrapper"),e=t.querySelector(".chart__spacer span"),a=t.querySelector(".chart table");let o="";Array.from(a.querySelectorAll("tbody tr td:first-child")).forEach(n=>{typeof n.textContent<"u"&&n.textContent.length>o.length&&(o=n.textContent)}),r.setAttribute("data-longest-label",o),e.innerHTML=o},I=function(t){const r=t.querySelector(".chart__wrapper"),e=t.querySelector(".chart table");let a="";Array.from(e.querySelectorAll("tbody tr td:not(:first-child)")).forEach(o=>{typeof o.getAttribute("data-value")<"u"&&o.getAttribute("data-value").length>a.length&&(a=o.getAttribute("data-value"))}),r.setAttribute("data-longest-value",a)},T=function(t,r,e){const a=`chart-${Date.now()+(Math.floor(Math.random()*100)+1)}`;let o;const n=Array.from(r.querySelectorAll("thead th"));return n.forEach((c,i)=>{i!=0&&(o=j(a,i,c.textContent,e,t,o)),i==50&&(n.length=i+1)}),!0};function j(t,r,e,a,o,n){var c;const i=document.createElement("input");i.setAttribute("name",`${t}-dataset-${r}`),i.setAttribute("id",`${t}-dataset-${r}`),i.setAttribute("data-dataset",`${r}`),i.setAttribute("data-label",`${e}`),i.checked=!0,i.setAttribute("type","checkbox"),r==1?o.prepend(i):o.insertBefore(i,n.nextSibling),n=i;const h=document.createElement("label");h.setAttribute("class","key btn btn-action"),h.setAttribute("for",`${t}-dataset-${r}`),h.setAttribute("data-label",`${e}`),h.setAttribute("part","key");const s=(c=o.querySelector(`tbody tr td:nth-child(${r+1})`))===null||c===void 0?void 0:c.getAttribute("data-numeric");return h.setAttribute("data-numeric",s),h.innerHTML=`${e}`,a.append(h),n}const K=function(t,r){const{min:e,max:a,yaxis:o}=f(t);let{guidelines:n}=f(t);n.length||(n=o),r.innerHTML="";for(let c=0;c<n.length;c++){const i=parseFloat(n[c].replace("\xA3","").replace("%","").replace(",","")),{axis:h}=x(i,e,a);r.innerHTML+=`<div class="guideline" style="--percent:${h}%;">${o.indexOf(n[c])!=-1?`<span>${n[c]}</span>`:""}</div>`}},X=function(t,r){const{min:e,max:a,yaxis:o}=f(t);r.innerHTML="";for(let n=0;n<o.length;n++){const c=parseFloat(o[n].replace("\xA3","").replace("%","")),{axis:i}=x(c,e,a);r.innerHTML+=`<div class="axis__point" style="--percent:${i}%;"><span>${o[n]}</span></div>`}},Y=function(t){const r=t.querySelector(".chart");let e=t.querySelector(".chart__xaxis");e||(e=document.createElement("div"),e.setAttribute("class","chart__xaxis")),r.prepend(e)},G=function(t){const r=t.querySelectorAll("thead th[title], tbody th[title]:first-child, tbody td[title]:first-child");Array.from(r).forEach(e=>{const a=`tooltip-${Date.now()}-${Math.floor(Math.random()*100)}`;e.innerHTML=`<button class="tooltip" popovertarget="${a}" part="tooltip" style="anchor-name: --${a};">${e.textContent}</button><span id="${a}" style="position-anchor: --${a};" popover part="tooltip__content" class="tooltip__content">${e.getAttribute("title")}</span>`})},F=function(t){let r="";const e=t.querySelector(".chart");let a=t.querySelector(".doughnuts");a||(a=document.createElement("div"),a.setAttribute("class","doughnuts"),e.append(a)),Array.from(e.querySelectorAll("tbody tr")).forEach((o,n)=>{let c="",i="",h=0,s=0;const m=o.querySelectorAll("td")[0].innerHTML;let y=0;const g=o.getAttribute("data-numeric");Array.from(o.querySelectorAll("td")).forEach((d,u)=>{const v=getComputedStyle(d).display;if(u!=0&&v!="none"){let p=d.getAttribute("data-numeric");p=p.replace("\xA3",""),p=p.replace("%",""),p=p.replace(",",""),p=Number.parseInt(p),s+=p,y++}}),Array.from(o.querySelectorAll("td")).forEach((d,u)=>{var v,p;const _=getComputedStyle(d).display;if(u!=0&&y==1&&_!="none")c+=`<path d="M 0 0 L 100 0 A 100 100 0 1 1 100 -0.01 L 0 0" style="${d.getAttribute("style")} --path-index: ${u};"></path>`,i+=`<span class="h5 mb-0" part="popover">${L(M(d.getAttribute("data-label"))).trim()}<br/>${d.hasAttribute("data-second")?`${d.getAttribute("data-second-label")}: ${d.getAttribute("data-second")}<br/>`:""}${(v=d.querySelector('[part="popover"]'))===null||v===void 0?void 0:v.innerHTML}</span>`;else if(u!=0){let b=d.getAttribute("data-numeric");const H=_=="none"?"display: none;":"";b=b.replace("\xA3",""),b=b.replace("%",""),b=b.replace(",",""),b=Number.parseInt(b);const w=b/s,[z,$]=q(h,y),[S,C]=q(h+w,y),D=w>.5?1:0,B=["M 0 0",`L ${z?z.toFixed(0):0} ${$?$.toFixed(0):0}`,`A 100 100 0 ${D} 1 ${S?S.toFixed(0):0} ${C?C.toFixed(0):0}`,"L 0 0"].join(" ");c+=`<path d="${B}" style="${d.getAttribute("style")} --path-index: ${u};${H}"></path>`,i+=`<span class="h5 mb-0" part="popover">${L(M(d.getAttribute("data-label"))).trim()}<br/>${d.hasAttribute("data-second")?`${d.getAttribute("data-second-label")}: ${d.getAttribute("data-second")}<br/>`:""}${(p=d.querySelector('[part="popover"]'))===null||p===void 0?void 0:p.innerHTML}</span>`,_!="none"&&(h+=w)}}),r+=`<div class="doughnut">
|
|
5
5
|
<svg viewBox="-105 -105 210 210" preserveAspectRatio="none" style="--row-index: ${n+1};">${c}</svg>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<style>
|
|
10
10
|
${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
|
|
11
11
|
|
|
12
|
-
:host{--chart-colour-1-set: var(--chart-colour-1, #BEE8F8);--chart-colour-2-set: var(--chart-colour-2, #A6DCC7);--chart-colour-3-set: var(--chart-colour-3, #FAD0DA);--chart-colour-4-set: var(--chart-colour-4, #AFCCF2);--chart-colour-5-set: var(--chart-colour-5, #FFD2B4);--chart-colour-6-set: var(--chart-colour-6, #CDF0F2);--chart-colour-7-set: var(--chart-colour-7, #FFABC2);--chart-colour-8-set: var(--chart-colour-8, #DCEAF2);--chart-colour-9-set: var(--chart-colour-9, #EEBCB3);--chart-colour-10-set: var(--chart-colour-10, #F0BDFF);--chart-colour-1-hover: var(--chart-colour-1, #B6DEED);--chart-colour-2-hover: var(--chart-colour-2, #98CBB7);--chart-colour-3-hover: var(--chart-colour-3, #EFC8D1);--chart-colour-4-hover: var(--chart-colour-4, #A6C1E5);--chart-colour-5-hover: var(--chart-colour-5, #F4CAAF);--chart-colour-6-hover: var(--chart-colour-6, #C2E3E5);--chart-colour-7-hover: var(--chart-colour-7, #F5A2B9);--chart-colour-8-hover: var(--chart-colour-8, #CFDCE3);--chart-colour-9-hover: var(--chart-colour-9, #E3B2A9);--chart-colour-10-hover: var(--chart-colour-10, #E3B2F2);--chart-colour-success: #d2f0c9 !important;--chart-colour-success-hover: #8ad873 !important;--chart-colour-danger: #f5c2c7 !important;--chart-colour-danger-hover: #f5c2e7 !important;--chart-colour-warning: #ffd280 !important;--chart-colour-warning-hover: #ffb020 !important}.chart__key .key:nth-child(11n-10),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-9){--chart-colour: var(--chart-colour-1-set);--chart-colour-hover: var(--chart-colour-1-hover)}.chart__outer table tbody tr:nth-child(1):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-1-set);--chart-colour-hover: var(--chart-colour-1-hover)}.chart__key .key:nth-child(11n-9),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-8){--chart-colour: var(--chart-colour-2-set);--chart-colour-hover: var(--chart-colour-2-hover)}.chart__outer table tbody tr:nth-child(2):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-2-set);--chart-colour-hover: var(--chart-colour-2-hover)}.chart__key .key:nth-child(11n-8),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-7){--chart-colour: var(--chart-colour-3-set);--chart-colour-hover: var(--chart-colour-3-hover)}.chart__outer table tbody tr:nth-child(3):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-3-set);--chart-colour-hover: var(--chart-colour-3-hover)}.chart__key .key:nth-child(11n-7),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-6){--chart-colour: var(--chart-colour-4-set);--chart-colour-hover: var(--chart-colour-4-hover)}.chart__outer table tbody tr:nth-child(4):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-4-set);--chart-colour-hover: var(--chart-colour-4-hover)}.chart__key .key:nth-child(11n-6),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-5){--chart-colour: var(--chart-colour-5-set);--chart-colour-hover: var(--chart-colour-5-hover)}.chart__outer table tbody tr:nth-child(5):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-5-set);--chart-colour-hover: var(--chart-colour-5-hover)}.chart__key .key:nth-child(11n-5),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-4){--chart-colour: var(--chart-colour-6-set);--chart-colour-hover: var(--chart-colour-6-hover)}.chart__outer table tbody tr:nth-child(6):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-6-set);--chart-colour-hover: var(--chart-colour-6-hover)}.chart__key .key:nth-child(11n-4),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-3){--chart-colour: var(--chart-colour-7-set);--chart-colour-hover: var(--chart-colour-7-hover)}.chart__outer table tbody tr:nth-child(7):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-7-set);--chart-colour-hover: var(--chart-colour-7-hover)}.chart__key .key:nth-child(11n-3),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-2){--chart-colour: var(--chart-colour-8-set);--chart-colour-hover: var(--chart-colour-8-hover)}.chart__outer table tbody tr:nth-child(8):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-8-set);--chart-colour-hover: var(--chart-colour-8-hover)}.chart__key .key:nth-child(11n-2),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-1){--chart-colour: var(--chart-colour-9-set);--chart-colour-hover: var(--chart-colour-9-hover)}.chart__outer table tbody tr:nth-child(9):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-9-set);--chart-colour-hover: var(--chart-colour-9-hover)}.chart__key .key:nth-child(11n-1),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-0){--chart-colour: var(--chart-colour-10-set);--chart-colour-hover: var(--chart-colour-10-hover)}.chart__outer table tbody tr:nth-child(10):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-10-set);--chart-colour-hover: var(--chart-colour-10-hover)}::slotted(table){display:none !important}:host{container-type:inline-size;margin-bottom:2rem;display:block}.chart__outer{display:flex;flex-direction:column;position:relative;font-weight:var(--chart-font-weight, bold);color:var(--chart-text-color, black);--body-colour-set: var(--body-colour, Canvas);--text-colour-set: var(--text-colour, black);--chart-height-set: var(--chart-height, 7.5rem);--chart-height-lg-set: var(--chart-height-lg, 12.5rem);--chart-height-resp: var(--chart-height-set);--index-below: -1;--index-base: 0;--index-focus: 2;--index-above: 10;--index-floating: 100;--index-menu: 200;--index-overlay: 1000;--key-label-width: 100%;--label-size: 0.75rem;--line-thickness: 1px;--yaxis-width: auto;--yaxis-point-display: block;--yaxis-last-point-transform: translate(0, -50%);--bar-gap: min(10%, 0.75rem)}.chart__outer>*{display:block;order:2}.chart__outer tbody{--chart-direction: 360deg;--chart-day-bg-pos: 100% calc(var(--single-day) * 7)}@container (min-width: 23.4375em){.chart__outer :has(tr:nth-child(5) td:nth-child(4)),.chart__outer :has(tr:nth-child(10)){--yaxis-width: 0;--yaxis-point-display: none;--yaxis-last-point-transform: translate(0, -100%);--bar-gap: 0}.chart__outer .chart__wrapper{--chart-height-resp: var(--chart-height-lg-set);--line-thickness: 0.8px;--yaxis-width: auto;--yaxis-point-display: block;--yaxis-last-point-transform: translate(0, -50%)}}@container (min-width: 48em){.chart__outer :has(tr:nth-child(10)){--bar-gap: 0}.chart__outer .chart__wrapper{--label-size: 0.875rem;--line-thickness: 0.5px}}.chart__outer .chart__spacer span{opacity:0}.chart__outer>input[type=checkbox]{opacity:0;position:absolute;pointer-events:none;bottom:50%;left:50%}.chart__key{padding:0 0 0 0;margin-bottom:1.5rem;display:flex;overflow:auto;scroll-snap-type:x mandatory;scroll-padding:.75rem;gap:.5rem}.chart__key:has(label:first-child:last-child){display:var(--single-key-display, none)}.chart__key .key{margin:0 !important}.chart__key .key:before{content:"";height:.8em;width:.8em;margin-right:.3em !important;background-color:var(--chart-colour);display:inline-block;border-radius:var(--key-border-radius, 4px)}.chart__key .key[data-label=Min],.chart__key .key[data-label=Max]{display:none}.chart__key .key .chart__total{display:none}.chart__outer input[type=checkbox]:focus:nth-child(1)~.chart__key .key:nth-child(1){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(2)~.chart__key .key:nth-child(2){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(3)~.chart__key .key:nth-child(3){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(4)~.chart__key .key:nth-child(4){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(5)~.chart__key .key:nth-child(5){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(6)~.chart__key .key:nth-child(6){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(7)~.chart__key .key:nth-child(7){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(8)~.chart__key .key:nth-child(8){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(9)~.chart__key .key:nth-child(9){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer>input[type=checkbox]:nth-of-type(1):not(:checked)~.chart__key .key:nth-of-type(1){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(2):not(:checked)~.chart__key .key:nth-of-type(2){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(3):not(:checked)~.chart__key .key:nth-of-type(3){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(4):not(:checked)~.chart__key .key:nth-of-type(4){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(5):not(:checked)~.chart__key .key:nth-of-type(5){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(6):not(:checked)~.chart__key .key:nth-of-type(6){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(7):not(:checked)~.chart__key .key:nth-of-type(7){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(8):not(:checked)~.chart__key .key:nth-of-type(8){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(9):not(:checked)~.chart__key .key:nth-of-type(9){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(10):not(:checked)~.chart__key .key:nth-of-type(10){opacity:.25}:host([data-yaxis]){--yaxis-display: flex}.chart__yaxis{display:var(--yaxis-display, none);flex-direction:column-reverse;width:var(--yaxis-width)}.chart__yaxis .axis__point{bottom:var(--percent);position:relative;height:0;white-space:nowrap}.chart__yaxis .axis__point:not(:last-child){display:var(--yaxis-point-display)}.chart__yaxis .axis__point span{display:block;transform:translate(0, -50%);padding-right:.25rem;text-align:right;font-weight:var(--chart-yaxis-fw, normal);font-size:var(--chart-yaxis-fs, 0.75rem);color:var(--colour-body)}.chart__yaxis .axis__point:last-child span{transform:var(--yaxis-last-point-transform)}.chart__xaxis{margin-bottom:1rem;display:flex;flex-direction:column-reverse;width:100%;position:absolute;left:0;bottom:-1rem}.chart__xaxis .axis__point{left:var(--percent);width:1px;position:absolute;height:0;white-space:nowrap}.chart__xaxis .axis__point span{display:block;transform:translate(-50%, 0%);text-align:center;font-size:var(--label-size);position:absolute;left:50%}.chart__guidelines{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column-reverse;pointer-events:none}.chart__guidelines .guideline{bottom:var(--percent);position:absolute;right:0;width:100%;height:0px;margin-bottom:-1px;border-bottom:1px dashed #eee;pointer-events:none;z-index:var(--index-below)}.chart__guidelines .guideline:not(.guideline--target) span{display:none}.chart__guidelines .guideline--target{border-bottom:1px dashed #000;z-index:var(--index-above);text-shadow:1px solid #fff;overflow:visible}.chart__guidelines .guideline--target span{position:absolute;bottom:0;font-size:var(--label-size);text-shadow:1px 1px 2px #fff;background:hsla(0,0%,100%,.6)}.chart__guidelines [data-value="0"]{border-bottom:1px solid var(--colour-primary)}.chart__guidelines [data-value="0"]:not(:first-child){border-bottom:1px dashed var(--colour-primary)}[part=popover]{position:absolute;top:var(--cursor-y, 50%);left:var(--cursor-x, 50%);font-size:var(--label-size);line-height:1.2;background:var(--chart-details-bg, var(--colour-canvas-2, Canvas));opacity:0;pointer-events:none;padding:.5rem;border-radius:.5rem;margin-bottom:.25rem;display:block;white-space:pre;text-align:left;box-shadow:var(--chart-details-shadow, 0 0.125rem 0.75rem rgba(0, 0, 0, 0.25));transform:translate(-50%, -100%)}[part=popover]::before{content:attr(data-group) "\\a"}[part=popover][data-label]::before{content:attr(data-group) "\\a" attr(data-label) "\\a"}[part=popover]:has(:is(a,button)){top:0;left:50%;transform:translate(-50%, -100%);font-size:.9rem}[part=popover] hr{margin:0;opacity:0}[part=popover] :is(a,button){display:inline-block !important;clear:both !important;float:left !important;margin-top:1rem !important;margin-right:1rem !important;margin-bottom:.25em !important;font-size:1em !important}[part=popover] :is(a,button)+:is(a,button){margin-top:0 !important}.chart__wrapper{display:block;display:flex;flex-direction:row;position:relative}.chart__wrapper .chart{position:relative;flex-grow:1}.chart__wrapper table{display:block;width:100% !important;padding-top:var(--chart-height-resp);position:relative;margin-bottom:0;overflow:visible}.chart__wrapper table thead{display:none}.chart__wrapper table tbody{display:flex;position:absolute;width:100%;height:100%;top:0;left:0;flex-direction:row;border:none}.chart__wrapper table tbody tr{display:flex;flex-direction:row;justify-content:var(--chart-bar-alignment, left);align-items:flex-end;border:none;width:100%;height:100%;position:relative;padding:0 2px;gap:var(--bar-gap)}.chart__wrapper table tbody tr td{font-weight:inherit}.chart__wrapper table tbody tr td:first-child{position:absolute;top:100%;left:0%;width:fit-content;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--label-size);text-align:center}@container (min-width: 48em){.chart__wrapper table tbody tr td:first-child{display:block}}.chart__wrapper table tbody tr td:first-child button{all:unset;cursor:pointer}.chart__wrapper table tbody tr td[data-label=Min],.chart__wrapper table tbody tr td[data-label=Max]{display:none}.chart__wrapper table tbody tr:first-child td:first-child,.chart__wrapper table tbody tr:last-child td:first-child{display:block}.chart__wrapper table tbody tr td:not(:first-child){height:100%;height:var(--percent, 0%);bottom:var(--bottom, 0%);width:100%;max-width:7.5rem;position:relative;padding:0;background:var(--chart-colour);border-top-right-radius:4px;border-top-left-radius:4px}@media screen and (prefers-color-scheme: dark){.chart__wrapper table tbody tr td:not(:first-child){background:color-mix(in oklab, var(--chart-colour), black 20%)}}.chart__wrapper table tbody tr td:not(:first-child):hover{background:var(--chart-colour-hover)}.chart__wrapper table tbody tr td:not(:first-child):has(span:empty),.chart__wrapper table tbody tr td:not(:first-child):empty{display:none}.chart__wrapper table tbody tr td:not(:first-child)[data-label]:before{display:none}.chart__wrapper table tbody tr td:not(:first-child):hover [part=popover]{opacity:1;z-index:var(--index-above);pointer-events:all}.chart__wrapper table tbody tr td:first-child[data-label]:before{display:none}@container (min-width: 48em){.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr td:first-child,.chart__wrapper table tbody:has(tr:nth-child(10)) tr td:first-child{display:none}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:first-child td:first-child,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:first-child td:first-child{left:0%;transform:translate(0, 0);display:block;text-align:left}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:last-child td:first-child,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:last-child td:first-child{left:100%;transform:translate(-100%, 0);display:block;text-align:right}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:first-child td:not(:first-child) span,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:first-child td:not(:first-child) span{left:-20%;transform:translate(0%, 0);text-align:left}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:last-child td:not(:first-child) span,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:last-child td:not(:first-child) span{left:120%;transform:translate(-100%, 0);text-align:right}}@container (min-width: 23.4375em){.chart__wrapper table tbody:has(tr:nth-child(25)) tr td:first-child{display:none !important}.chart__wrapper table tbody:has(tr:nth-child(25)) tr:is(:first-child,:nth-child(2n+1)) td:first-child{display:block !important}.chart__wrapper table tbody:has(tr:nth-child(50)) tr:is(:first-child,:nth-child(2n+1)) td:first-child,.chart__wrapper table tbody:has(tr:nth-child(50)) tr td:first-child{display:none !important}.chart__wrapper table tbody:has(tr:nth-child(50)) tr:is(:first-child,:nth-child(10n+1)) td:first-child{display:block !important}.chart__wrapper table tbody:has(tr:nth-child(100)) tr:is(:first-child,:nth-child(10n+1)) td:first-child,.chart__wrapper table tbody:has(tr:nth-child(100)) tr td:first-child{display:none !important}.chart__wrapper table tbody:has(tr:nth-child(100)) tr:is(:first-child,:nth-child(20n+1)) td:first-child{display:block !important}}:host(.chart-colour--success) td,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--success,.chart-colour--success td{--chart-colour: var(--chart-colour-success) !important}:host(.chart-colour--success) td:hover,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--success:hover,.chart-colour--success td:hover{--chart-colour-hover: var(--chart-colour-success-hover) !important}:host(.chart-colour--danger) td,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--danger,.chart-colour--danger,.chart-colour--danger td{--chart-colour: var(--chart-colour-danger) !important}:host(.chart-colour--danger) td:hover,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--danger:hover,.chart-colour--danger:hover,.chart-colour--danger td:hover{--chart-colour-hover: var(--chart-colour-danger-hover) !important}:host(.chart-colour--warning) td,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--warning,.chart-colour--warning,.chart-colour--warning td{--chart-colour: var(--chart-colour-warning) !important}:host(.chart-colour--warning) td:hover,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--warning:hover,.chart-colour--warning:hover,.chart-colour--warning td:hover{--chart-colour-hover: var(--chart-colour-warning-hover) !important}.chart__outer>input[type=checkbox]:nth-of-type(1):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(2){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(2):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(3){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(3):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(4){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(4):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(5){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(5):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(6){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(6):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(7){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(7):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(8){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(8):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(9){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(9):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(10){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(10):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(11){display:none;opacity:0}@layer elements{*,*::before,*::after{box-sizing:border-box}button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}[role=button]{cursor:pointer}button:focus:not(:focus-visible){outline:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 0.125rem;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:500;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}.btn:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}.btn:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}.btn:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}.btn:not(:last-child){margin-right:var(--btn-margin)}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.colour-success{--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success:before,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active):before{content:"\uF00C";font-family:"Font Awesome 6 Pro";margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn[class*=fa-]:before{content:var(--fa);font-family:"Font Awesome 6 Pro";line-height:1em}.btn.btn[class*=fa-after]{padding-right:4rem}.btn.btn[class*=fa-after]:before{margin-right:0;margin-right:0.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}.btn:not(.btn-compact):before{margin-right:1rem}.btn i[class*=fa-]{font-family:"Font Awesome 6 Pro";margin-right:1rem;line-height:1em;font-style:inherit}.btn i[class*=fa-]:not(:first-child){margin-left:1rem;margin-right:0}.btn.btn--prompt:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt:after,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active):after{margin-left:1.5rem;margin-right:-0.5rem}.btn:has(select){position:relative;padding-right:3.5rem}.btn:has(select):not(.mw-100){max-width:13rem}.btn:has(select) select{all:unset !important;margin:calc(-0.75rem) calc(-2.5rem) !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:3.5rem !important;margin-right:-3.5rem !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;max-width:100% !important;outline:none;font-weight:500;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important}.btn:has(select) select option{padding:0;text-align:left;color:var(--colour-primary)}.btn:has(select):after{position:absolute;top:0.625rem;right:2rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}.btn:has(select).active:after{transform:rotate(-90deg)}.btn:has(select:focus):after{transform:rotate(-90deg)}.btn-filter:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:"Font Awesome 6 Pro"}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary)}.btn-secondary:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:rgba(0,0,0,0);border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative}.btn.btn-tertiary:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}.btn.btn-tertiary.text-decoration-none:after{width:0%}.btn.btn-tertiary [class*=fa-]{margin-left:0;margin-right:.5rem}.btn.btn-tertiary [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}.btn.btn-tertiary:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active):after{width:60% !important}.btn.btn-tertiary:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}@layer elements{.btn-action{--btn-border-width: 0.0625rem;--btn-padding-block: 0.3125rem;--btn-padding-inline: 0.3125rem;--btn-margin: 0.5rem}.btn-action:not(.btn-primary){color:var(--colour-heading)}.btn-action:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}.btn-action{border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem}.btn-action.btn[class*=fa-]:before{content:var(--fa);margin-right:0.375rem}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) .btn-action,.btn-action:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem}.btn-compact:not(:last-child){margin-right:0.5rem}.btn-compact{text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;line-height:var(--compact-size) !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem}.btn-compact:before{content:var(--fa);position:absolute;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - 0.25rem);font-weight:900}.btn-compact[class*=fa-]:before{line-height:calc(var(--compact-size) - 0.25rem)}@container style(--theme: dark){.btn-compact[class*=fa-]:before{color:#fff}}.btn-compact.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}.btn-compact.btn-action{--compact-size: 2rem;font-size:1rem}.btn-compact.btn-action:before{font-size:1em;font-weight:400}.btn-compact.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:rgba(0,0,0,0)}.btn-compact.btn-secondary:not([class*=colour-]){--colour: var(--colour-light)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse):is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}.btn-compact[data-number]{position:relative}.btn-compact[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:#fff;letter-spacing:-0.1em;font-family:arial,sans-serif}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse){background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse){background-color:rgba(0,0,0,0);border-color:var(--colour-inverted) !important;color:var(--colour-inverted)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary[disabled],.invert-colours .btn-compact.btn-secondary[disabled]{background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme) !important}}:host(.chart--horizontal) .chart__outer tbody{--chart-direction: 90deg;--chart-day-bg-pos: calc(var(--single-day) * 7) 100%;--bar-gap: 0}:host(.chart--horizontal) .chart__outer .chart__guidelines{position:absolute}:host(.chart--horizontal) .chart__outer .chart__guidelines .guideline{bottom:auto;left:var(--percent);height:100%;border-left:1px dashed #eee;width:0}:host(.chart--horizontal) .chart__outer .chart__guidelines .guideline span{display:block;font-size:var(--label-size);position:absolute;top:100%;transform:translate(-50%, 0.2em);opacity:1}:host(.chart--horizontal) .chart__outer .chart__yaxis{display:none}:host(.chart--horizontal) .chart__outer table{padding-top:0}:host(.chart--horizontal) .chart__outer table tbody{flex-direction:column;position:relative}:host(.chart--horizontal) .chart__outer table tbody tr{flex-direction:column;align-items:flex-start;margin-bottom:.5rem;padding:0;min-height:1.5rem}:host(.chart--horizontal) .chart__outer table tbody tr td{height:var(--bar-height, 1.5rem);bottom:0;left:var(--bottom, 0%);width:var(--comparison, var(--percent));max-width:100%;border-top-left-radius:0;border-bottom-right-radius:4px}:host(.chart--horizontal) .chart__outer table tbody tr td:first-child{position:static;transform:none;display:block !important;height:var(--bar-height, 1.5rem);line-height:var(--bar-height, 1.5rem);max-width:var(--xaxis-max-width, none)}:host(.chart--horizontal) .chart__outer table tbody tr td:first-child>*:not([popover]){max-width:100%;text-overflow:ellipsis;overflow:hidden}:host(.chart--horizontal) .chart__outer table tbody:has(td:first-child strong) td:first-child{font-weight:normal !important}:host(.chart--horizontal) .chart__outer .chart__wrapper[data-longest-label]:before{display:block;content:attr(data-longest-label);font-size:var(--label-size);padding-right:.5em;opacity:0;pointer-events:none;white-space:nowrap;width:var(--xaxis-max-width, none)}:host(.chart--horizontal) .chart__outer:has(td .tooltip) .chart__wrapper[data-longest-label]:before{padding-right:2em;width:calc(var(--xaxis-max-width, none) - 1rem)}:host(.chart--horizontal) .chart__outer .chart__wrapper[data-longest-label] table tbody tr td:first-child{position:absolute;display:block !important;max-height:1.5rem;z-index:var(--index-above);top:0%;left:auto !important;right:100% !important;padding-right:.5em;width:fit-content}:host(.chart--horizontal) .chart__outer .chart__spacer span{display:none !important}:host(.chart--stacked) .chart__wrapper table tbody tr{--bar-gap: 0;flex-direction:column-reverse;justify-content:flex-start;align-items:center}:host(.chart--stacked) .chart__wrapper table tbody tr td{border-radius:0 !important}:host(.chart--stacked.chart--horizontal) .chart__wrapper table tbody tr{flex-direction:row}:host(.chart--stacked.chart--horizontal) .chart__wrapper table tbody tr::after{content:attr(data-numeric);position:absolute;opacity:1 !important;bottom:100%;left:50%;transform:translate(-50%, 0);display:block !important;height:fit-content;margin:0;bottom:50%;left:calc(var(--percent) + .5rem);transform:translate(0, 50%)}:host(.chart--stacked.chart--horizontal) .chart__wrapper table tbody tr td:after{content:none}.chart--animate.animating.inview{--animation-left: 2s}.chart--animate.animating.inview table tbody tr td:not(:first-child){transition:height 2s ease-out,width 2s ease-out,bottom 2s ease-out,left var(--animation-left) ease-out;transition-delay:calc(var(--row-index)*.1s)}.chart--animate:not(.inview) table tbody tr td:not(:first-child){--bottom: var(--min-bottom, 0%) !important;--percent: 0% !important;--axis: 0% !important;--comparison: 0% !important}.chart--animate.animating table tbody tr td:not(:first-child){overflow:hidden}:host(.chart--display-data) table tbody tr td:not(:first-child):after{content:attr(data-value);position:absolute;opacity:1 !important;bottom:100%;left:50%;transform:translate(-50%, 0);display:block !important;height:fit-content;margin:0}:host(.chart--display-data.chart--horizontal) table tbody tr td:not(:first-child):after{bottom:50%;left:calc(100% + .5rem);transform:translate(0, 50%)}:host(.chart--display-data.chart--horizontal) .chart__wrapper[data-longest-value]:after{display:block;content:attr(data-longest-value);font-size:var(--label-size);padding-left:.5em;opacity:0;pointer-events:none;white-space:nowrap}:host(.chart--display-data.chart--fit-content:not(.chart--horizontal)) .chart__outer{padding-top:1rem}:host(.chart--fit-content:not(.chart--horizontal)){width:100%;display:block}:host(.chart--fit-content:not(.chart--horizontal)) .chart__wrapper{width:fit-content}:host(.chart--fit-content:not(.chart--horizontal)) table{width:fit-content !important;padding-top:0;height:var(--chart-height-resp, 7.5rem)}:host(.chart--fit-content:not(.chart--horizontal)) tbody{position:relative}:host(.chart--fit-content:not(.chart--horizontal)) [part=group]{min-width:fit-content;width:fit-content;max-width:fit-content;padding-right:var(--fc-group-width, 1rem)}:host(.chart--fit-content:not(.chart--horizontal)) [part=value]{min-width:var(--fc-value-width, 0.75rem);width:var(--fc-value-width, 0.75rem);max-width:var(--fc-value-width, 0.75rem)}:host(.chart--fit-content:not(.chart--horizontal).chart--no-scale){--fc-group-width: 1.375rem;--fc-value-width: 1.5rem}:host(.chart--fit-content:not(.chart--horizontal).chart--no-scale) table{height:var(--chart-height-lg-set, 7.5rem)}@container (min-width: 23.4375em){.chart__wrapper{--fc-group-width: 1.375rem;--fc-value-width: 1.5rem}}button.tooltip:after{content:"?";margin-left:.25rem;display:inline-block;border:1px solid currentColor}.tooltip__content[popover]{z-index:var(--index-floating);background:var(--colour-primary);color:var(--colour-white);padding:1.5rem;border-radius:.5rem;box-shadow:0px 2px 9px rgba(0,0,0,.11);white-space:normal;position:fixed;border:none;margin:0;box-sizing:border-box;inset-area:bottom center;overflow:visible;width:calc(anchor-size(width) + var(--container-padding-x) + var(--container-padding-x) + 1.5rem) !important}.tooltip__content[popover]::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-0.25rem;border-width:.5rem;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--colour-primary) rgba(0,0,0,0);margin-bottom:-1px}/*# sourceMappingURL=assets/css/components/barchart.component.css.map */
|
|
12
|
+
:host{--chart-colour-1-set: var(--chart-colour-1, #BEE8F8);--chart-colour-2-set: var(--chart-colour-2, #A6DCC7);--chart-colour-3-set: var(--chart-colour-3, #FAD0DA);--chart-colour-4-set: var(--chart-colour-4, #AFCCF2);--chart-colour-5-set: var(--chart-colour-5, #FFD2B4);--chart-colour-6-set: var(--chart-colour-6, #CDF0F2);--chart-colour-7-set: var(--chart-colour-7, #FFABC2);--chart-colour-8-set: var(--chart-colour-8, #DCEAF2);--chart-colour-9-set: var(--chart-colour-9, #EEBCB3);--chart-colour-10-set: var(--chart-colour-10, #F0BDFF);--chart-colour-1-hover: var(--chart-colour-1, #B6DEED);--chart-colour-2-hover: var(--chart-colour-2, #98CBB7);--chart-colour-3-hover: var(--chart-colour-3, #EFC8D1);--chart-colour-4-hover: var(--chart-colour-4, #A6C1E5);--chart-colour-5-hover: var(--chart-colour-5, #F4CAAF);--chart-colour-6-hover: var(--chart-colour-6, #C2E3E5);--chart-colour-7-hover: var(--chart-colour-7, #F5A2B9);--chart-colour-8-hover: var(--chart-colour-8, #CFDCE3);--chart-colour-9-hover: var(--chart-colour-9, #E3B2A9);--chart-colour-10-hover: var(--chart-colour-10, #E3B2F2);--chart-colour-success: #d2f0c9 !important;--chart-colour-success-hover: #8ad873 !important;--chart-colour-danger: #f5c2c7 !important;--chart-colour-danger-hover: #f5c2e7 !important;--chart-colour-warning: #ffd280 !important;--chart-colour-warning-hover: #ffb020 !important}.chart__key .key:nth-child(11n-10),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-9){--chart-colour: var(--chart-colour-1-set);--chart-colour-hover: var(--chart-colour-1-hover)}.chart__outer table tbody tr:nth-child(1):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-1-set);--chart-colour-hover: var(--chart-colour-1-hover)}.chart__key .key:nth-child(11n-9),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-8){--chart-colour: var(--chart-colour-2-set);--chart-colour-hover: var(--chart-colour-2-hover)}.chart__outer table tbody tr:nth-child(2):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-2-set);--chart-colour-hover: var(--chart-colour-2-hover)}.chart__key .key:nth-child(11n-8),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-7){--chart-colour: var(--chart-colour-3-set);--chart-colour-hover: var(--chart-colour-3-hover)}.chart__outer table tbody tr:nth-child(3):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-3-set);--chart-colour-hover: var(--chart-colour-3-hover)}.chart__key .key:nth-child(11n-7),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-6){--chart-colour: var(--chart-colour-4-set);--chart-colour-hover: var(--chart-colour-4-hover)}.chart__outer table tbody tr:nth-child(4):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-4-set);--chart-colour-hover: var(--chart-colour-4-hover)}.chart__key .key:nth-child(11n-6),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-5){--chart-colour: var(--chart-colour-5-set);--chart-colour-hover: var(--chart-colour-5-hover)}.chart__outer table tbody tr:nth-child(5):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-5-set);--chart-colour-hover: var(--chart-colour-5-hover)}.chart__key .key:nth-child(11n-5),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-4){--chart-colour: var(--chart-colour-6-set);--chart-colour-hover: var(--chart-colour-6-hover)}.chart__outer table tbody tr:nth-child(6):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-6-set);--chart-colour-hover: var(--chart-colour-6-hover)}.chart__key .key:nth-child(11n-4),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-3){--chart-colour: var(--chart-colour-7-set);--chart-colour-hover: var(--chart-colour-7-hover)}.chart__outer table tbody tr:nth-child(7):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-7-set);--chart-colour-hover: var(--chart-colour-7-hover)}.chart__key .key:nth-child(11n-3),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-2){--chart-colour: var(--chart-colour-8-set);--chart-colour-hover: var(--chart-colour-8-hover)}.chart__outer table tbody tr:nth-child(8):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-8-set);--chart-colour-hover: var(--chart-colour-8-hover)}.chart__key .key:nth-child(11n-2),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-1){--chart-colour: var(--chart-colour-9-set);--chart-colour-hover: var(--chart-colour-9-hover)}.chart__outer table tbody tr:nth-child(9):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-9-set);--chart-colour-hover: var(--chart-colour-9-hover)}.chart__key .key:nth-child(11n-1),.chart__outer table tbody tr td:not(:first-child):nth-child(11n-0){--chart-colour: var(--chart-colour-10-set);--chart-colour-hover: var(--chart-colour-10-hover)}.chart__outer table tbody tr:nth-child(10):has(td:nth-child(2):last-child):not([data-colour]):not([data-colour-1]) td:nth-child(2){--chart-colour: var(--chart-colour-10-set);--chart-colour-hover: var(--chart-colour-10-hover)}::slotted(table){display:none !important}:host{container-type:inline-size;margin-bottom:2rem;display:block}.chart__outer{display:flex;flex-direction:column;position:relative;font-weight:var(--chart-font-weight, bold);color:var(--chart-text-color, black);--body-colour-set: var(--body-colour, Canvas);--text-colour-set: var(--text-colour, black);--chart-height-set: var(--chart-height, 7.5rem);--chart-height-lg-set: var(--chart-height-lg, 12.5rem);--chart-height-resp: var(--chart-height-set);--index-below: -1;--index-base: 0;--index-focus: 2;--index-above: 10;--index-floating: 100;--index-menu: 200;--index-overlay: 1000;--key-label-width: 100%;--label-size: 0.75rem;--line-thickness: 1px;--yaxis-width: auto;--yaxis-point-display: block;--yaxis-last-point-transform: translate(0, -50%);--bar-gap: min(10%, 0.75rem)}.chart__outer>*{display:block;order:2}.chart__outer tbody{--chart-direction: 360deg;--chart-day-bg-pos: 100% calc(var(--single-day) * 7)}@container (min-width: 23.4375em){.chart__outer :has(tr:nth-child(5) td:nth-child(4)),.chart__outer :has(tr:nth-child(10)){--yaxis-width: 0;--yaxis-point-display: none;--yaxis-last-point-transform: translate(0, -100%);--bar-gap: 0}.chart__outer .chart__wrapper{--chart-height-resp: var(--chart-height-lg-set);--line-thickness: 0.8px;--yaxis-width: auto;--yaxis-point-display: block;--yaxis-last-point-transform: translate(0, -50%)}}@container (min-width: 48em){.chart__outer :has(tr:nth-child(10)){--bar-gap: 0}.chart__outer .chart__wrapper{--label-size: 0.875rem;--line-thickness: 0.5px}}.chart__outer .chart__spacer span{opacity:0}.chart__outer>input[type=checkbox]{opacity:0;position:absolute;pointer-events:none;bottom:50%;left:50%}.chart__key{padding:0 0 0 0;margin-bottom:1.5rem;display:flex;overflow:auto;scroll-snap-type:x mandatory;scroll-padding:.75rem;gap:.5rem}.chart__key:has(label:first-child:last-child){display:var(--single-key-display, none)}.chart__key .key{margin:0 !important}.chart__key .key:before{content:"";height:.8em;width:.8em;margin-right:.3em !important;background-color:var(--chart-colour);display:inline-block;border-radius:var(--key-border-radius, 4px)}.chart__key .key[data-label=Min],.chart__key .key[data-label=Max]{display:none}.chart__key .key .chart__total{display:none}.chart__outer input[type=checkbox]:focus:nth-child(1)~.chart__key .key:nth-child(1){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(2)~.chart__key .key:nth-child(2){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(3)~.chart__key .key:nth-child(3){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(4)~.chart__key .key:nth-child(4){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(5)~.chart__key .key:nth-child(5){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(6)~.chart__key .key:nth-child(6){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(7)~.chart__key .key:nth-child(7){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(8)~.chart__key .key:nth-child(8){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer input[type=checkbox]:focus:nth-child(9)~.chart__key .key:nth-child(9){background:var(--colour-btn-action-hover-bg) !important;border:var(--btn-border-width) solid var(--colour-muted) !important}.chart__outer>input[type=checkbox]:nth-of-type(1):not(:checked)~.chart__key .key:nth-of-type(1){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(2):not(:checked)~.chart__key .key:nth-of-type(2){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(3):not(:checked)~.chart__key .key:nth-of-type(3){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(4):not(:checked)~.chart__key .key:nth-of-type(4){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(5):not(:checked)~.chart__key .key:nth-of-type(5){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(6):not(:checked)~.chart__key .key:nth-of-type(6){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(7):not(:checked)~.chart__key .key:nth-of-type(7){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(8):not(:checked)~.chart__key .key:nth-of-type(8){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(9):not(:checked)~.chart__key .key:nth-of-type(9){opacity:.25}.chart__outer>input[type=checkbox]:nth-of-type(10):not(:checked)~.chart__key .key:nth-of-type(10){opacity:.25}:host([data-yaxis]){--yaxis-display: flex}.chart__yaxis{display:var(--yaxis-display, none);flex-direction:column-reverse;width:var(--yaxis-width)}.chart__yaxis .axis__point{bottom:var(--percent);position:relative;height:0;white-space:nowrap}.chart__yaxis .axis__point:not(:last-child){display:var(--yaxis-point-display)}.chart__yaxis .axis__point span{display:block;transform:translate(0, -50%);padding-right:.25rem;text-align:right;font-weight:var(--chart-yaxis-fw, normal);font-size:var(--chart-yaxis-fs, 0.75rem);color:var(--colour-body)}.chart__yaxis .axis__point:last-child span{transform:var(--yaxis-last-point-transform)}.chart__xaxis{margin-bottom:1rem;display:flex;flex-direction:column-reverse;width:100%;position:absolute;left:0;bottom:-1rem}.chart__xaxis .axis__point{left:var(--percent);width:1px;position:absolute;height:0;white-space:nowrap}.chart__xaxis .axis__point span{display:block;transform:translate(-50%, 0%);text-align:center;font-size:var(--label-size);position:absolute;left:50%}.chart__guidelines{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column-reverse;pointer-events:none}.chart__guidelines .guideline{bottom:var(--percent);position:absolute;right:0;width:100%;height:0px;margin-bottom:-1px;border-bottom:1px dashed #eee;pointer-events:none;z-index:var(--index-below)}.chart__guidelines .guideline:not(.guideline--target) span{display:none}.chart__guidelines .guideline--target{border-bottom:1px dashed #000;z-index:var(--index-above);text-shadow:1px solid #fff;overflow:visible}.chart__guidelines .guideline--target span{position:absolute;bottom:0;font-size:var(--label-size);text-shadow:1px 1px 2px #fff;background:hsla(0,0%,100%,.6)}.chart__guidelines [data-value="0"]{border-bottom:1px solid var(--colour-primary)}.chart__guidelines [data-value="0"]:not(:first-child){border-bottom:1px dashed var(--colour-primary)}[part=popover]{position:absolute;top:var(--cursor-y, 50%);left:var(--cursor-x, 50%);font-size:var(--label-size);line-height:1.2;background:var(--chart-details-bg, var(--colour-canvas-2, Canvas));opacity:0;pointer-events:none;padding:.5rem;border-radius:.5rem;margin-bottom:.25rem;display:block;white-space:pre;text-align:left;box-shadow:var(--chart-details-shadow, 0 0.125rem 0.75rem rgba(0, 0, 0, 0.25));transform:translate(-50%, -100%)}[part=popover]::before{content:attr(data-group) "\\a"}[part=popover][data-label]::before{content:attr(data-group) "\\a" attr(data-label) "\\a"}[part=popover]:has(:is(a,button)){top:0;left:50%;transform:translate(-50%, -100%);font-size:.9rem}[part=popover] hr{margin:0;opacity:0}[part=popover] :is(a,button){display:inline-block !important;clear:both !important;float:left !important;margin-top:1rem !important;margin-right:1rem !important;margin-bottom:.25em !important;font-size:1em !important}[part=popover] :is(a,button)+:is(a,button){margin-top:0 !important}.chart__wrapper{display:block;display:flex;flex-direction:row;position:relative}.chart__wrapper .chart{position:relative;flex-grow:1}.chart__wrapper table{display:block;width:100% !important;padding-top:var(--chart-height-resp);position:relative;margin-bottom:0;overflow:visible}.chart__wrapper table thead{display:none}.chart__wrapper table tbody{display:flex;position:absolute;width:100%;height:100%;top:0;left:0;flex-direction:row;border:none}.chart__wrapper table tbody tr{display:flex;flex-direction:row;justify-content:var(--chart-bar-alignment, left);align-items:flex-end;border:none;width:100%;height:100%;position:relative;padding:0 2px;gap:var(--bar-gap)}.chart__wrapper table tbody tr td{font-weight:inherit}.chart__wrapper table tbody tr td:first-child{position:absolute;top:100%;left:0%;width:fit-content;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--label-size);text-align:center}@container (min-width: 48em){.chart__wrapper table tbody tr td:first-child{display:block}}.chart__wrapper table tbody tr td:first-child button{all:unset;cursor:pointer}.chart__wrapper table tbody tr td[data-label=Min],.chart__wrapper table tbody tr td[data-label=Max]{display:none}.chart__wrapper table tbody tr:first-child td:first-child,.chart__wrapper table tbody tr:last-child td:first-child{display:block}.chart__wrapper table tbody tr td:not(:first-child){height:100%;height:var(--percent, 0%);bottom:var(--bottom, 0%);width:100%;max-width:7.5rem;position:relative;padding:0;background:var(--chart-colour);border-top-right-radius:4px;border-top-left-radius:4px}@media screen and (prefers-color-scheme: dark){.chart__wrapper table tbody tr td:not(:first-child){background:color-mix(in oklab, var(--chart-colour), black 20%)}}.chart__wrapper table tbody tr td:not(:first-child):hover{background:var(--chart-colour-hover)}.chart__wrapper table tbody tr td:not(:first-child):has(span:empty),.chart__wrapper table tbody tr td:not(:first-child):empty{display:none}.chart__wrapper table tbody tr td:not(:first-child)[data-label]:before{display:none}.chart__wrapper table tbody tr td:not(:first-child):hover [part=popover]{opacity:1;z-index:var(--index-above);pointer-events:all}.chart__wrapper table tbody tr td:first-child[data-label]:before{display:none}@container (min-width: 48em){.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr td:first-child,.chart__wrapper table tbody:has(tr:nth-child(10)) tr td:first-child{display:none}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:first-child td:first-child,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:first-child td:first-child{left:0%;transform:translate(0, 0);display:block;text-align:left}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:last-child td:first-child,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:last-child td:first-child{left:100%;transform:translate(-100%, 0);display:block;text-align:right}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:first-child td:not(:first-child) span,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:first-child td:not(:first-child) span{left:-20%;transform:translate(0%, 0);text-align:left}.chart__wrapper table tbody:has(tr:nth-child(5) td:nth-child(4)) tr:last-child td:not(:first-child) span,.chart__wrapper table tbody:has(tr:nth-child(10)) tr:last-child td:not(:first-child) span{left:120%;transform:translate(-100%, 0);text-align:right}}@container (min-width: 23.4375em){.chart__wrapper table tbody:has(tr:nth-child(25)) tr td:first-child{display:none !important}.chart__wrapper table tbody:has(tr:nth-child(25)) tr:is(:first-child,:nth-child(2n+1)) td:first-child{display:block !important}.chart__wrapper table tbody:has(tr:nth-child(50)) tr:is(:first-child,:nth-child(2n+1)) td:first-child,.chart__wrapper table tbody:has(tr:nth-child(50)) tr td:first-child{display:none !important}.chart__wrapper table tbody:has(tr:nth-child(50)) tr:is(:first-child,:nth-child(10n+1)) td:first-child{display:block !important}.chart__wrapper table tbody:has(tr:nth-child(100)) tr:is(:first-child,:nth-child(10n+1)) td:first-child,.chart__wrapper table tbody:has(tr:nth-child(100)) tr td:first-child{display:none !important}.chart__wrapper table tbody:has(tr:nth-child(100)) tr:is(:first-child,:nth-child(20n+1)) td:first-child{display:block !important}}:host(.chart-colour--success) td,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--success,.chart-colour--success td{--chart-colour: var(--chart-colour-success) !important}:host(.chart-colour--success) td:hover,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--success:hover,.chart-colour--success td:hover{--chart-colour-hover: var(--chart-colour-success-hover) !important}:host(.chart-colour--danger) td,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--danger,.chart-colour--danger,.chart-colour--danger td{--chart-colour: var(--chart-colour-danger) !important}:host(.chart-colour--danger) td:hover,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--danger:hover,.chart-colour--danger:hover,.chart-colour--danger td:hover{--chart-colour-hover: var(--chart-colour-danger-hover) !important}:host(.chart-colour--warning) td,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--warning,.chart-colour--warning,.chart-colour--warning td{--chart-colour: var(--chart-colour-warning) !important}:host(.chart-colour--warning) td:hover,:host(:is(.chart-colour--success,.chart-colour--danger,.chart-colour--wraning)) td.chart-colour--warning:hover,.chart-colour--warning:hover,.chart-colour--warning td:hover{--chart-colour-hover: var(--chart-colour-warning-hover) !important}.chart__outer>input[type=checkbox]:nth-of-type(1):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(2){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(2):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(3){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(3):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(4){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(4):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(5){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(5):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(6){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(6):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(7){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(7):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(8){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(8):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(9){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(9):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(10){display:none;opacity:0}.chart__outer>input[type=checkbox]:nth-of-type(10):not(:checked)~.chart__wrapper table tbody tr td:not(:first-child):nth-child(11){display:none;opacity:0}@layer elements{*,*::before,*::after{box-sizing:border-box}button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}[role=button]{cursor:pointer}button:focus:not(:focus-visible){outline:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 0.125rem;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:500;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}.btn:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}.btn:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}.btn:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}.btn:not(:last-child){margin-right:var(--btn-margin)}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.colour-success{--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.colour-success:before,.btn.colour-success:is(:hover,:focus,.hover):not([disabled],:active,.active):before{content:"\uF00C";font-family:"Font Awesome 6 Pro";margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn[class*=fa-]:before{content:var(--fa);font-family:"Font Awesome 6 Pro";line-height:1em}.btn.btn[class*=fa-after]{padding-right:4rem}.btn.btn[class*=fa-after]:before{margin-right:0;margin-right:0.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}.btn:not(.btn-compact):before{margin-right:1rem}.btn i[class*=fa-]{font-family:"Font Awesome 6 Pro";margin-right:1rem;line-height:1em;font-style:inherit}.btn i[class*=fa-]:not(:first-child){margin-left:1rem;margin-right:0}.btn.btn--prompt:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt:after,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active):after{margin-left:1.5rem;margin-right:-0.5rem}.btn:has(select){position:relative;padding-right:3.5rem}.btn:has(select) select{all:unset !important;margin:calc(-0.75rem) calc(-2.5rem) !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:3.5rem !important;margin-right:-3.5rem !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;max-width:100% !important;outline:none;font-weight:500;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important;field-sizing:content !important}.btn:has(select) select option{padding:0;text-align:left;color:var(--colour-primary)}.btn:has(select):after{position:absolute;top:0.625rem;right:2rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}.btn:has(select).active:after{transform:rotate(-90deg)}.btn:has(select:focus):after{transform:rotate(-90deg)}.btn-filter:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:"Font Awesome 6 Pro"}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary)}.btn-secondary:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:rgba(0,0,0,0);border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative}.btn.btn-tertiary:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}.btn.btn-tertiary.text-decoration-none:after{width:0%}.btn.btn-tertiary [class*=fa-]{margin-left:0;margin-right:.5rem}.btn.btn-tertiary [class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}.btn.btn-tertiary:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active):after{width:60% !important}.btn.btn-tertiary:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}@layer elements{.btn-action{--btn-border-width: 0.0625rem;--btn-padding-block: 0.3125rem;--btn-padding-inline: 0.3125rem;--btn-margin: 0.5rem}.btn-action:not(.btn-primary){color:var(--colour-heading)}.btn-action:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}.btn-action{border-radius:0.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem}.btn-action.btn[class*=fa-]:before{content:var(--fa);margin-right:0.375rem}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn-action,.btn-action.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) .btn-action,.btn-action:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}.btn-action:not(.btn-compact).fa-compact-only:before{display:none !important}.btn:has(select){padding-block:0;padding-right:2rem}.btn:has(select) select{margin:0rem 0rem !important;padding-right:2rem !important;margin-right:-2rem !important}.btn:has(select):after{top:.2rem;right:0.5rem}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:0.5rem}.btn-compact:not(:last-child){margin-right:0.5rem}.btn-compact{text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;line-height:var(--compact-size) !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem}.btn-compact:before{content:var(--fa);position:absolute;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - 0.25rem);font-weight:900}.btn-compact[class*=fa-]:before{line-height:calc(var(--compact-size) - 0.25rem)}@container style(--theme: dark){.btn-compact[class*=fa-]:before{color:#fff}}.btn-compact.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}.btn-compact.btn-action{--compact-size: 2rem;font-size:1rem}.btn-compact.btn-action:before{font-size:1em;font-weight:400}.btn-compact.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:rgba(0,0,0,0)}.btn-compact.btn-secondary:not([class*=colour-]){--colour: var(--colour-light)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour)}.btn-compact.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse):is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}.btn-compact[data-number]{position:relative}.btn-compact[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:#fff;letter-spacing:-0.1em;font-family:arial,sans-serif}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:not(:hover,:focus,.hover,:focus-within):not(.btn-collapse){background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse),.invert-colours .btn-compact.btn-secondary:is(:hover,:focus,.hover,:focus-within):not([disabled]):not(.btn-collapse){background-color:rgba(0,0,0,0);border-color:var(--colour-inverted) !important;color:var(--colour-inverted)}[class*=bg-]:not(.bg-info):not(.bg-success):not(.bg-light):not(.bg-warning):not(.bg-white):not(.bg-admin):not(.bg-canvas):not(.bg-canvas-2):not(.prevent-invert) .btn-compact.btn-secondary[disabled],.invert-colours .btn-compact.btn-secondary[disabled]{background-color:var(--colour-inverted) !important;border-color:var(--colour-inverted) !important;color:var(--colour-primary-theme) !important}}:host(.chart--horizontal) .chart__outer tbody{--chart-direction: 90deg;--chart-day-bg-pos: calc(var(--single-day) * 7) 100%;--bar-gap: 0}:host(.chart--horizontal) .chart__outer .chart__guidelines{position:absolute}:host(.chart--horizontal) .chart__outer .chart__guidelines .guideline{bottom:auto;left:var(--percent);height:100%;border-left:1px dashed #eee;width:0}:host(.chart--horizontal) .chart__outer .chart__guidelines .guideline span{display:block;font-size:var(--label-size);position:absolute;top:100%;transform:translate(-50%, 0.2em);opacity:1}:host(.chart--horizontal) .chart__outer .chart__yaxis{display:none}:host(.chart--horizontal) .chart__outer table{padding-top:0}:host(.chart--horizontal) .chart__outer table tbody{flex-direction:column;position:relative}:host(.chart--horizontal) .chart__outer table tbody tr{flex-direction:column;align-items:flex-start;margin-bottom:.5rem;padding:0;min-height:1.5rem}:host(.chart--horizontal) .chart__outer table tbody tr td{height:var(--bar-height, 1.5rem);bottom:0;left:var(--bottom, 0%);width:var(--comparison, var(--percent));max-width:100%;border-top-left-radius:0;border-bottom-right-radius:4px}:host(.chart--horizontal) .chart__outer table tbody tr td:first-child{position:static;transform:none;display:block !important;height:var(--bar-height, 1.5rem);line-height:var(--bar-height, 1.5rem);max-width:var(--xaxis-max-width, none)}:host(.chart--horizontal) .chart__outer table tbody tr td:first-child>*:not([popover]){max-width:100%;text-overflow:ellipsis;overflow:hidden}:host(.chart--horizontal) .chart__outer table tbody:has(td:first-child strong) td:first-child{font-weight:normal !important}:host(.chart--horizontal) .chart__outer .chart__wrapper[data-longest-label]:before{display:block;content:attr(data-longest-label);font-size:var(--label-size);padding-right:.5em;opacity:0;pointer-events:none;white-space:nowrap;width:var(--xaxis-max-width, none)}:host(.chart--horizontal) .chart__outer:has(td .tooltip) .chart__wrapper[data-longest-label]:before{padding-right:2em;width:calc(var(--xaxis-max-width, none) - 1rem)}:host(.chart--horizontal) .chart__outer .chart__wrapper[data-longest-label] table tbody tr td:first-child{position:absolute;display:block !important;max-height:1.5rem;z-index:var(--index-above);top:0%;left:auto !important;right:100% !important;padding-right:.5em;width:fit-content}:host(.chart--horizontal) .chart__outer .chart__spacer span{display:none !important}:host(.chart--stacked) .chart__wrapper table tbody tr{--bar-gap: 0;flex-direction:column-reverse;justify-content:flex-start;align-items:center}:host(.chart--stacked) .chart__wrapper table tbody tr td{border-radius:0 !important}:host(.chart--stacked.chart--horizontal) .chart__wrapper table tbody tr{flex-direction:row}:host(.chart--stacked.chart--horizontal) .chart__wrapper table tbody tr::after{content:attr(data-numeric);position:absolute;opacity:1 !important;bottom:100%;left:50%;transform:translate(-50%, 0);display:block !important;height:fit-content;margin:0;bottom:50%;left:calc(var(--percent) + .5rem);transform:translate(0, 50%)}:host(.chart--stacked.chart--horizontal) .chart__wrapper table tbody tr td:after{content:none}.chart--animate.animating.inview{--animation-left: 2s}.chart--animate.animating.inview table tbody tr td:not(:first-child){transition:height 2s ease-out,width 2s ease-out,bottom 2s ease-out,left var(--animation-left) ease-out;transition-delay:calc(var(--row-index)*.1s)}.chart--animate:not(.inview) table tbody tr td:not(:first-child){--bottom: var(--min-bottom, 0%) !important;--percent: 0% !important;--axis: 0% !important;--comparison: 0% !important}.chart--animate.animating table tbody tr td:not(:first-child){overflow:hidden}:host(.chart--display-data) table tbody tr td:not(:first-child):after{content:attr(data-value);position:absolute;opacity:1 !important;bottom:100%;left:50%;transform:translate(-50%, 0);display:block !important;height:fit-content;margin:0}:host(.chart--display-data.chart--horizontal) table tbody tr td:not(:first-child):after{bottom:50%;left:calc(100% + .5rem);transform:translate(0, 50%)}:host(.chart--display-data.chart--horizontal) .chart__wrapper[data-longest-value]:after{display:block;content:attr(data-longest-value);font-size:var(--label-size);padding-left:.5em;opacity:0;pointer-events:none;white-space:nowrap}:host(.chart--display-data.chart--fit-content:not(.chart--horizontal)) .chart__outer{padding-top:1rem}:host(.chart--fit-content:not(.chart--horizontal)){width:100%;display:block}:host(.chart--fit-content:not(.chart--horizontal)) .chart__wrapper{width:fit-content}:host(.chart--fit-content:not(.chart--horizontal)) table{width:fit-content !important;padding-top:0;height:var(--chart-height-resp, 7.5rem)}:host(.chart--fit-content:not(.chart--horizontal)) tbody{position:relative}:host(.chart--fit-content:not(.chart--horizontal)) [part=group]{min-width:fit-content;width:fit-content;max-width:fit-content;padding-right:var(--fc-group-width, 1rem)}:host(.chart--fit-content:not(.chart--horizontal)) [part=value]{min-width:var(--fc-value-width, 0.75rem);width:var(--fc-value-width, 0.75rem);max-width:var(--fc-value-width, 0.75rem)}:host(.chart--fit-content:not(.chart--horizontal).chart--no-scale){--fc-group-width: 1.375rem;--fc-value-width: 1.5rem}:host(.chart--fit-content:not(.chart--horizontal).chart--no-scale) table{height:var(--chart-height-lg-set, 7.5rem)}@container (min-width: 23.4375em){.chart__wrapper{--fc-group-width: 1.375rem;--fc-value-width: 1.5rem}}button.tooltip:after{content:"?";margin-left:.25rem;display:inline-block;border:1px solid currentColor}.tooltip__content[popover]{z-index:var(--index-floating);background:var(--colour-primary);color:var(--colour-white);padding:1.5rem;border-radius:.5rem;box-shadow:0px 2px 9px rgba(0,0,0,.11);white-space:normal;position:fixed;border:none;margin:0;box-sizing:border-box;inset-area:bottom center;overflow:visible;width:calc(anchor-size(width) + var(--container-padding-x) + var(--container-padding-x) + 1.5rem) !important}.tooltip__content[popover]::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-0.25rem;border-width:.5rem;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--colour-primary) rgba(0,0,0,0);margin-bottom:-1px}/*# sourceMappingURL=assets/css/components/barchart.component.css.map */
|
|
13
13
|
|
|
14
14
|
</style>
|
|
15
15
|
<div class="chart__outer" part="outer">
|