{"mappings":"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","sources":["webportal/config/layout/themes/project/ts/verification.ts","webportal/config/layout/themes/tk/ts/utilities/tk.module.factory.ts","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","webportal/config/layout/themes/tk/ts/basiscs/tk.manager.ts","webportal/config/layout/themes/tk/ts/utilities/tk.custom.element.factory.ts","webportal/config/layout/themes/tk/ts/utilities/tk.notification.ts","webportal/config/layout/themes/tk/ts/utilities/tk.messages.ts","webportal/config/layout/themes/tk/ts/utilities/tk.render.ts","webportal/config/layout/themes/tk/ts/components/tk.header.ts","webportal/config/layout/themes/tk/ts/components/tk.navigation.sidebar.ts","webportal/config/layout/themes/tk/ts/utilities/tk.fetch.ts","webportal/config/layout/themes/tk/ts/basiscs/tk.viewport.ts","webportal/config/layout/themes/tk/ts/controls/tk.search.ts","webportal/config/layout/themes/tk/ts/utilities/tk.shape.detector.ts","webportal/config/layout/themes/tk/ts/controls/tk.form.element.ts","webportal/config/layout/themes/tk/ts/controls/tk.form.validator.ts","webportal/config/layout/themes/tk/ts/controls/tk.form.zipcity.ts","webportal/config/layout/themes/tk/ts/controls/tk.tabs.tab.ts","webportal/config/layout/themes/tk/ts/components/tk.minibasket.ts","webportal/config/layout/themes/tk/ts/controls/tk.tabs.accordion.ts","webportal/config/layout/themes/project/ts/components/tk.custom.nav.ts"],"sourcesContent":["import TKModuleFactory from \"@tk/utilities/tk.module.factory\";\nimport TKManager from \"@tk/basiscs/tk.manager\";\nimport TKHeader from \"@tk/components/tk.header\";\nimport TKNavigationSidebar from \"@tk/components/tk.navigation.sidebar\";\nimport TKViewport from \"@tk/basiscs/tk.viewport\";\nimport TKSearch from \"@tk/controls/tk.search\";\nimport TKFormElement from \"@tk/controls/tk.form.element\";\nimport TKFormValidator from \"@tk/controls/tk.form.validator\";\nimport TKFormZipCity from \"@tk/controls/tk.form.zipcity\";\nimport TKTabsTab from \"@tk/controls/tk.tabs.tab\";\nimport TKMinibasket from \"@tk/components/tk.minibasket\";\nimport TKTabsAccordion from \"@tk/controls/tk.tabs.accordion\";\nimport TKCustomNav from \"./components/tk.custom.nav\";\n\nimport \"@scss/modules/verification.scss\";\n\nexport default class Verification extends TKModuleFactory {\n constructor() {\n super([\n { name: \"tk-manager\", constructor: TKManager },\n { name: \"tk-viewport\", constructor: TKViewport },\n { name: \"tk-header\", constructor: TKHeader },\n { name: \"tk-nav-sidebar\", constructor: TKNavigationSidebar },\n { name: \"tk-search\", constructor: TKSearch },\n { name: \"tk-form-zip-city\", constructor: TKFormZipCity },\n { name: \"tk-form-element\", constructor: TKFormElement },\n { name: \"tk-form-validator\", constructor: TKFormValidator },\n { name: \"tk-tabs-tab\", constructor: TKTabsTab },\n { name: \"tk-minibasket\", constructor: TKMinibasket },\n { name: \"tk-tabs-accordion\", constructor: TKTabsAccordion },\n { name: \"tk-custom-nav\", constructor: TKCustomNav },\n ]);\n }\n}\n\n// eslint-disable-next-line no-new\nnew Verification();\n","export default class TKModuleFactory {\n customElementList: CustomElementList[];\n\n constructor(list: CustomElementList[]) {\n this.customElementList = list;\n this.init();\n }\n\n init(): void {\n this.customElementList.forEach((item) => {\n !customElements.get(item.name) && customElements.define(item.name, item.constructor);\n });\n }\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\nimport { NotificationType, sendNotification } from '@tk/utilities/tk.notification';\n\ninterface ActionItem {\n id: string;\n affiliation: string;\n revenue: string;\n tax: string;\n shipping: string;\n}\n\ninterface ProductItem {\n id: string;\n name: string;\n brand: string;\n category: string;\n price: string;\n quantity: string;\n position: string;\n}\n\nexport default class TKManager extends TKCustomElementFactory {\n messageContainerSelector: string;\n basketId?: HTMLElement;\n eventName: string;\n sessionTimeoutWrapper?: HTMLElement;\n sessionTime?: number;\n\n constructor() {\n super();\n\n this.eventName = this.getAttribute('data-tk-event-name') || 'event-purchase';\n this.basketId = this.querySelector('[data-tk-otm-basket-id]') || undefined;\n this.messageContainerSelector = (\n this.getAttribute('data-tk-message-container-selector')\n || '[id^=\"wp_messages_container_\"]'\n );\n this.sessionTimeoutWrapper = this.querySelector('[data-tk-session-timeout-wrapper]') || undefined;\n this.sessionTime = Number(this.sessionTimeoutWrapper?.getAttribute('data-tk-session-time') || 0);\n }\n\n connectedCallback(): void {\n this.processNotification();\n\n this.sessionTimeoutWrapper && this.showSessionTimeout();\n\n if (!this.basketId || !window.dataLayer) return;\n const data = this.getPurchaseData();\n data && window.dataLayer.push(data);\n }\n\n processNotification() {\n const messageContainer = document.querySelector(this.messageContainerSelector);\n if (!messageContainer || !messageContainer.hasChildNodes()) return;\n\n const infoMessage = messageContainer.querySelectorAll('.Info');\n const errorMessage = messageContainer.querySelectorAll('.Error');\n const warningMessage = messageContainer.querySelectorAll('.Warning');\n const debugMessage = messageContainer.querySelectorAll('.Debug');\n\n const messageList = Array.from([...infoMessage, ...errorMessage, ...warningMessage, ...debugMessage]);\n\n const types: Record = {\n Info: NotificationType.SUCCESS,\n Error: NotificationType.ERROR,\n Warning: NotificationType.WARNING,\n Debug: NotificationType.INFO,\n };\n\n messageList.forEach((item) => {\n const type = types[item.className];\n const childList = Array.from(item.firstChild?.childNodes || []);\n const message = childList.find((item) => item instanceof Text)?.textContent || '';\n const code = item.querySelector('.was-message-code')?.textContent || '';\n const addition = item.querySelector('.was-message-addition')?.textContent || '';\n const wait = Number(item.querySelector('.was-message-wait')?.textContent) || undefined;\n const consoleMessage = `${code}: ${message}} (wait: ${wait} sec.${addition})`;\n\n sendNotification(type, message, wait, { consoleMessage });\n });\n messageContainer.remove();\n }\n\n showSessionTimeout() {\n setTimeout(() => {\n this.sessionTimeoutWrapper!.hidden = false;\n }, this.sessionTime);\n }\n\n getPurchaseData() {\n return {\n event: 'event-purchase',\n ecommerce: {\n purchase: {\n actionField: this.getActionData(),\n products: this.getProductData(),\n },\n },\n };\n }\n\n getActionData() {\n const affiliation = this.querySelector('[data-tk-otm-affiliation]');\n const revenue = this.querySelector('[data-tk-otm-revenue]');\n const tax = this.querySelector('[data-tk-otm-tax]');\n const shipping = this.querySelector('[data-tk-otm-shipping]');\n return {\n id: this.basketId!.innerText,\n affiliation: affiliation ? affiliation.innerText : '',\n revenue: revenue ? revenue.innerText : '',\n tax: tax ? tax.innerText : '',\n shipping: shipping ? shipping.innerText : '',\n } as ActionItem;\n }\n\n getProductData() {\n const data: ProductItem[] = [];\n const items = this.querySelectorAll('[data-tk-otm-item]');\n Array.from(items).forEach((item) => {\n const id = item.querySelector('.otm-id');\n const name = item.querySelector('.otm-name');\n const brand = item.querySelector('.otm-brand');\n const category = item.querySelector('.otm-category');\n const price = item.querySelector('.otm-price');\n const quantity = item.querySelector('.otm-quantity');\n const position = item.querySelector('.otm-position');\n data.push({\n id: id ? id.innerText : '',\n name: name ? name.innerText : '',\n brand: brand ? brand.innerText : '',\n category: category ? category.innerText : '',\n price: price ? price.innerText : '',\n quantity: quantity ? quantity.innerText : '',\n position: position ? position.innerText : '',\n });\n });\n return data;\n }\n}\n","export interface Listener {\n event: keyof HTMLElementEventMap | TKCustomEventMap;\n element: EventTarget;\n action: (event: T) => void;\n}\n\nexport default class TKCustomElementFactory extends HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listeners: Listener[];\n\n constructor() {\n super();\n this.listeners = [];\n }\n\n // eslint-disable-next-line class-methods-use-this\n connectedCallback(): void {}\n\n /**\n * If the custom element is getting removed of the dom, all listeners\n * are getting removed of the element.\n */\n disconnectedCallback(): void {\n this.listeners.forEach((item) => {\n item.element.removeEventListener(item.event, item.action);\n });\n }\n\n /**\n * Here you can push a listener object directly to the listener array\n *\n * @param {Listener} {}\n */\n pushListener({ event, element, action }: Listener): void {\n this.listeners.push({ event, element, action });\n element.addEventListener(event, action as EventListener);\n }\n\n /**\n * Removes the given element from the listener array and removes the\n * EventListener from the element and returns the listener object.\n * If the element was not found, undefined is returned.\n *\n * @param {Element} element\n * @returns {Listener | undefined}\n */\n removeListener(element: EventTarget): Listener | undefined {\n const foundElement = this.listeners.find((item) => item.element === element);\n if (!foundElement) return;\n foundElement?.element.removeEventListener(foundElement.event, foundElement.action);\n const newList = this.listeners.filter((item) => item.element !== element);\n this.listeners = newList;\n return foundElement;\n }\n}\n","import {\n accountMessages, deliveryMessages, generalMessages, paymentMessages,\n} from './tk.messages';\nimport render from './tk.render';\n\nexport enum NotificationType {\n SUCCESS = 'Success',\n WARNING = 'Warning',\n ERROR = 'Error',\n INFO = 'Info',\n}\n\ninterface MessageResponse {\n pluginId: string;\n paymentType: string;\n}\n\nconst mapMessageCodeToText = (response: MessageResponse, messages: Record) => {\n let textMessage;\n if (!response.pluginId) return '';\n if (response.pluginId === 'paymentType') {\n const paymentMessages: Record = {\n 0: messages.messagePaymentTypeGeneral.text,\n 1: messages.messagePaymentTypeCreditCard.text,\n 2: messages.messagePaymentTypeInvoice.text,\n 5: messages.messagePaymentTypeInAdvance.text,\n 6: messages.messagePaymentTypeOnDelivery.text,\n };\n textMessage = paymentMessages[Number(response.paymentType) || 0];\n } else if (response.pluginId === 'deliveryType') {\n textMessage = messages.messageDeliveryTypeGeneral.text;\n } else if (response.pluginId === 'checkoutAdressChange') {\n textMessage = messages.messageChangeSuccess.text;\n }\n return textMessage;\n};\n\nconst getConsoleStyle = (backgroundColor: string, textColor: string = 'white') => [\n `background: ${backgroundColor}`,\n `color: ${textColor}`,\n 'display: block',\n].join(';');\n\nconst logToConsole = (message: string, type: NotificationType) => {\n const consoleHandler: Record void> = {\n [NotificationType.SUCCESS](): void {\n // eslint-disable-next-line no-console\n console.info(`%c ${message}`, getConsoleStyle('green'));\n },\n [NotificationType.WARNING](): void {\n // eslint-disable-next-line no-console\n console.warn(`%c ${message}`, getConsoleStyle('yellow', 'black'));\n },\n [NotificationType.ERROR](): void {\n // eslint-disable-next-line no-console\n console.log(`%c ${message}`, getConsoleStyle('red'));\n },\n [NotificationType.INFO](): void {\n // eslint-disable-next-line no-console\n console.debug(`%c ${message}`, getConsoleStyle('blue'));\n },\n };\n\n consoleHandler[type]();\n};\n\nconst renderMessageContainer = (parentElement: HTMLElement) => {\n let messageContainer = parentElement.querySelector('[data-tk-message-container]');\n if (!messageContainer) {\n messageContainer = render(\n '
',\n );\n parentElement.insertAdjacentElement('beforeend', messageContainer);\n }\n\n return messageContainer;\n};\n\nexport const sendNotification = (\n type: NotificationType,\n message?: string,\n wait: number = 2.5,\n options: { consoleMessage?: string } = {},\n) => {\n if (!message) return;\n const dialogs = document.querySelectorAll('dialog[open]');\n let messageContainer: HTMLElement;\n\n if (dialogs.length === 0) {\n messageContainer = renderMessageContainer(document.body);\n } else {\n const lastDialog = Array.from(dialogs).at(-1);\n if (!lastDialog) {\n messageContainer = renderMessageContainer(document.body);\n } else {\n messageContainer = renderMessageContainer(lastDialog);\n }\n }\n\n const toast = render(`\n
\n \n ${message}\n
\n `);\n\n toast.style.animation = `fadein .5s, fadeout .5s ${wait}s`;\n toast.classList.add('tk-message--show');\n\n messageContainer.appendChild(toast);\n\n toast.addEventListener('animationend', (event) => {\n if ((event as AnimationEvent).animationName !== 'fadeout') return;\n messageContainer.removeChild(toast);\n });\n\n options.consoleMessage\n ? logToConsole(options.consoleMessage, type)\n : logToConsole(message, type);\n};\n\nexport const sendNotificationByItem = (item: Message, messageOverride?: string) => {\n const type = item.code.substring(0, 1);\n const message = messageOverride || item.text;\n\n const typeHandler: Record void> = {\n 1: () => sendNotification(NotificationType.SUCCESS, message, item.wait),\n 2: () => sendNotification(NotificationType.WARNING, message, item.wait),\n 3: () => sendNotification(NotificationType.ERROR, message, item.wait),\n 4: () => sendNotification(NotificationType.INFO, message, item.wait),\n };\n\n typeHandler[type]();\n};\n\nexport const sendNotificationByItems = (items: Message[], response: MessageResponse) => {\n const messages = {\n ...generalMessages, ...accountMessages, ...paymentMessages, ...deliveryMessages,\n };\n items.forEach((item) => {\n sendNotificationByItem(item, mapMessageCodeToText(response, messages));\n });\n};\n","/* eslint-disable max-len */\n\nconst globalFormErrorMessages: FormValidatorMessages = {\n badInput: 'Please enter a number.',\n patternMismatch: 'Please match the requested format.',\n rangeOverflow: 'Please select a value that is no more than {max}.',\n rangeUnderflow: 'Please select a value that is no less than {min}.',\n stepMismatch: 'Please select a value that is a multiple from {step}.',\n tooLong:\n 'Please shorten this text to no more than {maxLength} characters. You are currently using {length} characters.',\n tooShort:\n 'Please lengthen this text to {minLength} characters or more. You are currently using {length} characters.',\n typeMismatch: 'The value you have entered for this field is invalid.',\n valueMissing: 'Please fill out this field.',\n // These properties must be empty.\n valid: '',\n customError: '',\n};\n\nconst globalFormPasswordValidityMessages: FormExpandValidatorMessages = {\n passwordNotMatching: 'The password does not match the one above.',\n};\n\nconst globalFormExpandErrorMessages: FormExpandValidatorMessages = {\n stepAdjust: 'The value you entered for this field is invalid. The value has been changed from {currentValue} to {newValue}',\n existigName: 'This name {currentValue} already exists.',\n};\n\nconst globalBasketMessages: Translation = {\n messageEmptyBasket: { code: '1-6-6220', text: 'Shopping cart is empty' },\n messageAddedToBasket: { code: '1-6-6221', text: 'added to the shopping cart' },\n quickOrderMessageTooShort: { code: '1-6-6222', text: 'At least %1 characters are required for a search.' },\n};\n\nconst globalDeliveryMessages: Translation = {\n messageDeliveryTypeGeneral: { code: '1-6-6226', text: 'Delivery method changed' },\n};\n\nconst globalPaymentMessages: Translation = {\n messagePaymentTypeCreditCard: { code: '1-6-6227', text: 'Payment type credit card' },\n messagePaymentTypeInvoice: { code: '1-6-6227', text: 'Payment type invoice' },\n messagePaymentTypeInAdvance: { code: '1-6-6227', text: 'Payment type advance payment' },\n messagePaymentTypeOnDelivery: { code: '1-6-6227', text: 'Payment type cash on delivery' },\n messagePaymentTypeGeneral: { code: '1-6-6227', text: 'Payment type changed' },\n};\n\nconst globalCompareMessages: Translation = {\n messageHint: { code: '1-6-6240', text: '' },\n};\n\nconst globalFavoriteMessages: Translation = {\n messageInvalidName: { code: '2-6-6270', text: 'Unable to create the wish list; the name is invalid.' },\n messageMaxLists: { code: '2-6-6277', text: 'Max. number of wish lists reached!' },\n messageMaxPositions: { code: '2-6-6278', text: 'Max. number of positions reached!' },\n messageDeleteConfirmation: { code: '2-6-6273', text: 'Do you really want to delete the wish list?' },\n};\n\nconst globalAutocompleteMessages: Translation = {\n messageNoValueFound: { code: '1-6-6290', text: 'No match found!' },\n};\n\nconst globalAccountMessages: Translation = {\n messageDelete: { code: '1-6-6200', text: 'Do you really want to delete this address?' },\n messageChangeSuccess: { code: '1-6-6200', text: 'Address successfully modified.' },\n};\n\nconst globalGeneralMessages: Translation = {\n messageEmptyText: { code: '1-6-6290', text: 'The output was suppressed due to an empty text.' },\n messageOk: { code: '1-6-6290', text: 'Yes' },\n messageCancel: { code: '1-6-6290', text: 'No' },\n messageChange: { code: '1-6-6290', text: 'The selection was changed' },\n messageDefault: { code: '1-6-0000', text: '' },\n messageDefaultInfo: { code: '1-6-0000', text: '' },\n messageDefaultWarning: { code: '2-6-0000', text: '' },\n messageDefaultError: { code: '3-6-0000', text: '' },\n messageDefaultDebug: { code: '4-6-0000', text: '' },\n};\n\nconst globalDirectSearchSuggestMessages: Translation = {\n messageTooShort: { code: '1-6-6260', text: 'At least 3 characters!' },\n messageResultEmpty: { code: '1-6-6260', text: 'No items found!' },\n};\n\nconst globalFileuploadAreaMessages: Translation = {\n defaultMessage: { code: '1-6-2002', text: 'Store the files here to upload them' },\n fallbackMessage: { code: '2-6-2002', text: 'Your browser does not support drag&drop file uploads' },\n fallbackText: { code: '2-6-2002', text: 'Use the form to upload your files' },\n fileTooBig: { code: '2-6-2002', text: 'The file is too large. The maximum file size is {{maxFileSize}} MB' },\n invalidFileType: { code: '2-6-2002', text: 'Unable to upload files of this type' },\n responseError: { code: '3-6-2002', text: 'The server rejected your request with status {{statusCode}}' },\n cancelUpload: { code: '1-6-2002', text: 'Cancel upload' },\n cancelUploadConfirmation: { code: '1-6-2002', text: 'Cancel upload?' },\n removeFile: { code: '1-6-2002', text: 'Remove file' },\n maxFilesExceeded: { code: '2-6-2002', text: 'You are not allowed to upload any more files' },\n buttonBrowse: { code: '1-6-2002', text: 'Select files to upload' },\n uploadHint: { code: '1-6-2002', text: 'Drag files and folders here' },\n};\n\nconst globalFilterMessages: Translation = {\n emptyResult: { code: '1-1-6280', text: 'Keine Ergebnisse gefunden.' },\n};\n\nconst globalCheckoutMessages: Translation = {\n missingTerms: { code: '3-6-6230', text: 'Please accept the General terms and conditions.' },\n loadingCheckoutTitle: { code: '1-6-6260', text: 'Almost done!' },\n loadingCheckoutText: { code: '1-6-6261', text: 'The order is carried out. This can take a moment!' },\n};\n\nconst globalHtmlErrorCodeMessages: Translation = {\n htmlErrorGeneral: { code: '3-6-6000', text: 'Something has gone wrong!' },\n htmlError401: { code: '3-6-6000', text: 'A valid authentication is required to process the request.' },\n htmlError403: { code: '3-6-6000', text: 'The request could not be processed due to missing authorization of the client.' },\n htmlError404: { code: '3-6-6000', text: 'The requested site does not exist.' },\n htmlError413: { code: '3-6-6000', text: 'The file is too large.' },\n htmlError415: { code: '3-6-6000', text: 'This media type is not supported.' },\n htmlError422: { code: '3-6-6000', text: 'Unable to display the requested site correctly.' },\n htmlError500: { code: '3-6-6000', text: 'Internal server error' },\n htmlError503: { code: '3-6-6000', text: 'The server is temporarily unavailable.' },\n};\n\nif (!window.opacc) {\n window.opacc = {};\n}\n\nexport const formErrorMessages = {\n ...globalFormErrorMessages,\n ...globalFormPasswordValidityMessages,\n ...globalFormExpandErrorMessages,\n ...window.opacc.tkFormValidityMessages,\n ...window.opacc.tkFormPasswordValidityMessages,\n ...window.opacc.tkFormExpandErrorMessages,\n ...window.opacc.projectFormValidityMessages,\n ...window.opacc.projectFormPasswordValidityMessages,\n ...window.opacc.projectFormExpandErrorMessages,\n};\n\nexport const formExpandErrorMessages = {\n ...globalFormExpandErrorMessages,\n ...window.opacc.tkFormExpandErrorMessages,\n ...window.opacc.projectFormExpandErrorMessages,\n};\n\nexport const basketMessages = {\n ...globalBasketMessages,\n ...window.opacc.tkBasketMessages,\n ...window.opacc.projectBasketMessages,\n};\n\nexport const compareMessages = {\n ...globalCompareMessages,\n ...window.opacc.tkCompareMessages,\n ...window.opacc.projectCompareMessages,\n};\n\nexport const favoriteMessages = {\n ...globalFavoriteMessages,\n ...window.opacc.tkFavoriteMessages,\n ...window.opacc.projectFavoriteMessages,\n};\n\nexport const generalMessages = {\n ...globalGeneralMessages,\n ...window.opacc.tkGeneralMessages,\n ...window.opacc.projectGeneralMessages,\n};\n\nexport const directSearchSuggestMessages = {\n ...globalDirectSearchSuggestMessages,\n ...window.opacc.tkDirectSearchSuggestMessages,\n ...window.opacc.projectDirectSearchSuggestMessages,\n};\n\nexport const fileuploadAreaMessages = {\n ...globalFileuploadAreaMessages,\n ...window.opacc.tkFileUploadAreaMessages,\n ...window.opacc.projectFileUploadAreaMessages,\n};\n\nexport const filterMessages = {\n ...globalFilterMessages,\n ...window.opacc.tkFilterMessages,\n ...window.opacc.projectFilterMessages,\n};\n\nexport const autocompleteMessages = {\n ...globalAutocompleteMessages,\n ...window.opacc.tkAutocompleteMessages,\n ...window.opacc.projectAutocompleteMessages,\n};\n\nexport const paymentMessages = {\n ...globalPaymentMessages,\n ...window.opacc.tkPaymentMessages,\n ...window.opacc.projectPaymentMessages,\n};\nexport const deliveryMessages = {\n ...globalDeliveryMessages,\n ...window.opacc.tkDeliveryMessages,\n ...window.opacc.projectDeliveryMessages,\n};\nexport const accountMessages = {\n ...globalAccountMessages,\n ...window.opacc.tkAccountMessages,\n ...window.opacc.projectAccountMessages,\n};\nexport const checkoutMessages = {\n ...globalCheckoutMessages,\n ...window.opacc.tkCheckoutMessages,\n ...window.opacc.projectCheckoutMessages,\n};\nexport const htmlErrorCodeMessages = {\n ...globalHtmlErrorCodeMessages,\n ...window.opacc.tkHtmlErrorCodeMessages,\n ...window.opacc.projectHtmlErrorCodeMessages,\n};\n\nexport const zipCityMessages = {\n ...window.opacc.tkZipCityMessages,\n};\n","/**\n * @param {string} html representing any number of sibling elements\n * @return {NodeListOf}\n */\nconst render = (html: string, isBody = false): T => {\n if (!html) render('
');\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n return isBody\n ? doc.body as T\n : doc.body.children.item(0) as T;\n};\n\nexport default render;\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\n\nexport default class TKHeader extends TKCustomElementFactory {\n header?: HTMLElement;\n disableScrolldownBreakpoint?: Breakpoint;\n minWidthBreakpoint: number;\n elementToScrollWith?: HTMLElement;\n\n private lastScrollPosY: number = 0;\n private maxHeightScrollWith: number;\n private scrollWay: number = 0;\n private scrollDeltaY: number;\n\n constructor() {\n super();\n\n this.header = this.querySelector('header') || undefined;\n if (!this.header) throw new Error('Header: Header is missing!');\n this.disableScrolldownBreakpoint = (\n this.getAttribute('data-tk-disable-scrolldown-breakpoint') as Breakpoint\n ) || 's';\n this.minWidthBreakpoint = window.viewport.breakpoints.get(this.disableScrolldownBreakpoint) || 0;\n this.elementToScrollWith = this.querySelector('[data-tk-to-scroll-with]') || undefined;\n if (!this.elementToScrollWith) {\n throw new Error('Header: Element to scroll with is missing! Use the [data-tk-to-scroll-with] selector.');\n }\n\n this.maxHeightScrollWith = this.getMaxHeight();\n this.scrollDeltaY = Number(this.getAttribute('data-tk-scroll-delta-y')) || 1;\n }\n\n connectedCallback(): void {\n this.registerViewportListener();\n window.viewport.clientWidth < this.minWidthBreakpoint && this.registerScrollListener();\n }\n\n registerScrollListener(): void {\n if (!this.elementToScrollWith) return;\n const onScrolldown = this.handleScrolldown.bind(this);\n this.maxHeightScrollWith = this.getMaxHeight();\n this.pushListener({\n event: 'scroll',\n element: window,\n action: onScrolldown,\n });\n }\n\n registerViewportListener(): void {\n const onViewportResize = this.handleViewportResize.bind(this);\n this.pushListener({\n event: 'tk-viewport-resize',\n element: window.viewport,\n action: onViewportResize,\n });\n }\n\n handleViewportResize(event: Event): void {\n const customEvent = event as CustomEvent;\n if (customEvent.detail.width < this.minWidthBreakpoint) {\n this.registerScrollListener();\n } else {\n this.removeListener(window);\n }\n }\n\n handleScrolldown(event: Event): void {\n if (!(this.header && this.elementToScrollWith)) return;\n const { scrollY } = event.currentTarget as Window;\n\n if (scrollY > this.lastScrollPosY) {\n if (scrollY <= this.maxHeightScrollWith) {\n this.scrollWay = scrollY;\n } else {\n this.scrollWay = this.maxHeightScrollWith;\n }\n } else if (this.scrollWay > this.scrollDeltaY) {\n this.scrollWay = this.lastScrollPosY - scrollY >= this.maxHeightScrollWith\n ? 0\n : this.lastScrollPosY - scrollY;\n } else {\n this.scrollWay = 0;\n }\n\n this.elementToScrollWith.style.transform = `translateY(-${this.scrollWay}px)`;\n this.lastScrollPosY = scrollY;\n }\n\n getMaxHeight(): number {\n if (!this.elementToScrollWith) return 0;\n const { paddingBottom } = window.getComputedStyle(this.elementToScrollWith);\n const { height } = this.elementToScrollWith.getBoundingClientRect();\n return height - parseInt(paddingBottom, 10);\n }\n}\n","import render from '@tk/utilities/tk.render';\nimport TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\nimport { fetchRequest } from '@tk/utilities/tk.fetch';\n\ninterface NextLevelResponse {\n showItems: string\n}\n\ninterface Page {\n id: string\n element: HTMLElement\n}\n\nexport default class TKNavigationSidebar extends TKCustomElementFactory {\n navigationWrapper?: HTMLElement;\n wrapper?: HTMLElement;\n openButton?: HTMLElement;\n closeButton?: HTMLElement;\n openClassName: string;\n hasChildrenClassName: string;\n isMobile: boolean;\n isMobileActive: boolean;\n currentMenuId?: string;\n asyncTemplateName: string;\n desktopMinWidth: number;\n overlayClassName: string;\n overlay: HTMLElement;\n\n desktopView?: string;\n mobileView?: string;\n\n private pages: Page[] = [];\n\n constructor() {\n super();\n\n this.navigationWrapper = document.querySelector('[data-tk-nav-wrapper]') || undefined;\n this.wrapper = this.querySelector('[data-tk-wrapper]') || undefined;\n this.openButton = document.querySelector(`[data-tk-nav-open=\"${this.id}\"]`) || undefined;\n this.closeButton = document.querySelector(`[data-tk-nav-close=\"${this.id}\"]`) || undefined;\n this.openClassName = this.getAttribute('data-tk-open-class-name') || 'viewport__navigation--open';\n this.currentMenuId = this.getAttribute('data-tk-current-menu-id') || undefined;\n this.hasChildrenClassName = (\n this.getAttribute('data-tk-has-children-class-name') || 'tk-nav-burger-item--has-children'\n );\n this.asyncTemplateName = this.getAttribute('data-tk-nav-async-template-name') || 'tk-navigation-burgerlist';\n this.desktopMinWidth = Number(this.getAttribute('data-tk-desktop-min-width')) || 1200;\n this.overlayClassName = this.getAttribute('data-tk-overlay-class-name') || 'viewport__overlay';\n this.isMobile = window.viewport.clientWidth < this.desktopMinWidth;\n this.isMobileActive = false;\n this.overlay = render(`
`)!;\n }\n\n connectedCallback(): void {\n if (!this.currentMenuId) throw new Error('Current menu id is missing!');\n\n this.registerViewportListener();\n this.registerButtonListener();\n this.registerClickListener();\n\n this.isMobile && this.switchToMobile();\n }\n\n registerViewportListener(): void {\n const onViewportResize = this.handleViewportResize.bind(this);\n this.pushListener({ event: 'tk-viewport-resize', element: window.viewport, action: onViewportResize });\n }\n\n handleViewportResize(event: Event): void {\n const customEvent = event as CustomEvent;\n this.isMobile = customEvent.detail.width < this.desktopMinWidth;\n this.isMobile ? this.switchToMobile() : this.switchToDesktop();\n }\n\n registerButtonListener(): void {\n this.openButton?.addEventListener('click', this.openNavigation.bind(this));\n this.closeButton?.addEventListener('click', this.closeNavigation.bind(this));\n }\n\n registerClickListener(): void {\n this.addEventListener('click', this.handleClickLink.bind(this));\n }\n\n openNavigation(): void {\n this.navigationWrapper\n ? this.navigationWrapper.classList.add(this.openClassName)\n : this.classList.add(this.openClassName);\n document.body.insertAdjacentElement('beforeend', this.overlay);\n }\n\n closeNavigation(): void {\n this.navigationWrapper\n ? this.navigationWrapper.classList.remove(this.openClassName)\n : this.classList.remove(this.openClassName);\n const overlay = document.querySelector(`.${this.overlayClassName}`);\n overlay?.remove();\n }\n\n async handleClickLink(event: Event): Promise {\n if (!this.isMobile) return;\n event.preventDefault();\n\n const target = event.target as HTMLAnchorElement;\n let element: HTMLAnchorElement | null;\n if (target.hasAttribute('data-tk-nav-id')) {\n element = target;\n } else {\n element = target.closest('[data-tk-nav-id]');\n }\n\n if (!element) return;\n if (\n !element.parentElement?.classList.contains(this.hasChildrenClassName)\n && !element.parentElement?.hasAttribute('data-tk-nav-page')\n ) {\n window.location.href = element.href;\n this.closeNavigation();\n return;\n }\n const id = element.getAttribute('data-tk-nav-id');\n\n if (!id) return;\n if (this.existPage(id)) {\n const page = this.getPage(id);\n if (!page) return;\n this.insertPage(page.element);\n TKNavigationSidebar.jumpToPage(page.element);\n this.removeLastPageFromDOM();\n } else {\n const response = await this.getTemplate(id);\n this.responseNextLevel(response);\n }\n }\n\n getTemplate(id: string) {\n const url = window.opacc.systemUrls?.async || '/WebPortal/async.aspx';\n const data = {\n type: 'navigation',\n navigationid: id,\n template: this.asyncTemplateName,\n };\n\n return new Promise>((resolve, reject) => {\n fetchRequest({\n requestURL: url,\n resolveHandler: (response: TKResponse) => resolve(response),\n rejectHandler: (error: unknown) => reject(error),\n payload: data,\n });\n });\n }\n\n responseNextLevel(response: TKResponse) {\n if (!response.success) return;\n const html = render(response.dataAsJson.showItems);\n if (!html) return;\n const navigation = html.querySelector('[data-tk-nav-page]');\n if (!navigation) return;\n this.addPage(navigation);\n this.insertPage(navigation);\n TKNavigationSidebar.jumpToPage(navigation);\n this.removeLastPageFromDOM();\n }\n\n insertPage(element: Element) {\n const pages = this.querySelector('[data-tk-nav-pages]');\n if (!pages) return;\n pages.insertAdjacentElement('afterbegin', element);\n }\n\n addPage(element: Element) {\n const id = element.getAttribute('data-tk-nav-page') || '';\n !this.existPage(id) && this.pages.push({ id, element } as Page);\n }\n\n getPage(id: string) {\n return this.pages.find((page) => page.id === id);\n }\n\n existPage(id: string) {\n if (id === '') return false;\n const foundPage = this.pages.filter((page) => page.id === id);\n return foundPage.length > 0;\n }\n\n removeLastPageFromDOM() {\n const pages = this.querySelector('[data-tk-nav-pages]');\n if (!pages) return;\n const pageList = Array.from(pages.children);\n const oldPages = pageList.filter((element) => element !== pages.firstElementChild);\n oldPages.forEach((element) => element.remove());\n }\n\n async switchToMobile() {\n if (this.isMobileActive) return;\n this.isMobileActive = true;\n this.closeButton && (this.closeButton.hidden = false);\n if (!this.wrapper) return;\n this.desktopView = this.wrapper.innerHTML;\n\n if (!this.mobileView) {\n const response = await this.getTemplate(this.currentMenuId!);\n const html = render(response.dataAsJson.showItems);\n if (!html) throw new Error('Burgerlist: Root Element is missing!');\n this.wrapper.replaceChildren(html);\n const navigation = html.querySelector('[data-tk-nav-page]');\n navigation && this.addPage(navigation);\n } else {\n this.wrapper.innerHTML = '';\n this.wrapper.insertAdjacentHTML('afterbegin', this.mobileView);\n }\n }\n\n async switchToDesktop() {\n if (!this.isMobileActive) return;\n this.isMobileActive = false;\n this.closeButton && (this.closeButton.hidden = true);\n if (!this.wrapper) return;\n this.mobileView = this.wrapper.innerHTML;\n if (!this.desktopView) return;\n this.wrapper.innerHTML = '';\n this.wrapper.insertAdjacentHTML('afterbegin', this.desktopView);\n }\n\n static jumpToPage(element: Element) {\n element.scrollIntoView(false);\n }\n}\n","import { sendNotificationByItems } from './tk.notification';\n\ninterface FetchAsyncParams {\n requestURL: string;\n resolveHandler: (response: TKResponse) => void;\n rejectHandler?: (response: unknown) => void;\n payload?: Record | FormData | URLSearchParams;\n decodeJSONResponse?: boolean;\n cache?: RequestCache;\n}\n\nconst getDefaultErrorFnc = (error: unknown) => {\n throw new Error(`Request failed: ${error}`);\n};\n\nexport const setAsyncUrl = (checkForReadOnlyContext = false) => {\n const asyncUrl = '/WebPortal/async.aspx';\n\n if (\n !window.opacc\n || !window.opacc.systemUrls\n || !checkForReadOnlyContext\n || !window.opacc.systemUrls.asyncReadOnly\n ) return asyncUrl;\n\n return window.opacc.systemUrls.asyncReadOnly;\n};\n\nconst prepareJsonResponse = (response: WASResponse) => {\n const data = window.atob(response.data);\n const html = document.createElement('div');\n html.innerHTML = data;\n\n const json = response.contentType === 'application/json' && html.innerText !== ''\n ? JSON.parse(html.innerText)\n : {};\n\n sendNotificationByItems(response.messages, json);\n\n return {\n status: response.status,\n messages: response.messages,\n dataAsBase64: response.data,\n contentType: response,\n success: response.status === 'ok',\n dataAsHtml: response.contentType === 'text/html' ? html.innerText : '',\n dataAsJson: json,\n data,\n } as unknown as TKResponse;\n};\n\nconst recordToURLSearchParams = (data: Record): URLSearchParams => {\n const searchParams = new URLSearchParams();\n Object.entries(data).forEach(([key, value]) => {\n searchParams.append(key, value || '');\n });\n return searchParams;\n};\n\nconst formDataToURLSearchParams = (formData: FormData): URLSearchParams => {\n const searchParams = new URLSearchParams();\n formData.forEach((value, key) => {\n searchParams.append(key, value as string);\n });\n return searchParams;\n};\n\nexport const fetchRequest = async ({\n requestURL,\n resolveHandler,\n rejectHandler = getDefaultErrorFnc,\n payload,\n decodeJSONResponse = true,\n cache = 'default',\n}: FetchAsyncParams) => {\n const headers = new Headers({\n 'x-requested-with': 'XMLHttpRequest',\n 'response-type': 'json',\n });\n\n let body;\n if (payload) {\n headers.set('content-type', 'application/x-www-form-urlencoded; charset=UTF-8');\n if (payload instanceof URLSearchParams) {\n body = payload;\n } else if (payload instanceof FormData) {\n body = formDataToURLSearchParams(payload);\n } else if (payload instanceof Object) {\n body = recordToURLSearchParams(payload);\n }\n }\n\n const init: RequestInit = {\n method: payload ? 'POST' : 'GET',\n headers,\n cache,\n credentials: 'include',\n body,\n };\n\n try {\n const response = await fetch(requestURL, init);\n\n const contentType = response.headers.get('content-type');\n const data = contentType?.includes('application/json')\n ? await response.json()\n : await response.text();\n const preparedData = decodeJSONResponse ? prepareJsonResponse(data) : data;\n resolveHandler(preparedData);\n } catch (error) {\n rejectHandler(error);\n }\n};\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\n\nexport default class TKViewport extends TKCustomElementFactory {\n resizeEventName: string;\n resizeObserver: ResizeObserver;\n breakpoints: Map;\n currentBreakpoint: Breakpoint;\n\n constructor() {\n super();\n\n this.resizeEventName = this.getAttribute('data-tk-resize-event-name') || 'tk-viewport-resize';\n this.resizeObserver = new ResizeObserver(this.checkSize.bind(this));\n\n // * These breakpoints must match the CSS breakpoints, otherwise conflicts may occur.\n this.breakpoints = new Map([\n ['xs', 576],\n ['s', 768],\n ['m', 992],\n ['l', 1200],\n ['xl', 1440],\n ]);\n this.currentBreakpoint = this.getCurrentBreakpoint(this.clientWidth);\n }\n\n connectedCallback(): void {\n this.resizeObserver.observe(this);\n window.viewport = this;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.resizeObserver.unobserve(this);\n }\n\n checkSize(entries: ResizeObserverEntry[]) {\n entries.forEach(() => {\n const currentWidth = window.innerWidth;\n const currentBreakpoint = this.getCurrentBreakpoint(currentWidth);\n if (this.currentBreakpoint !== currentBreakpoint) {\n const event = new CustomEvent(this.resizeEventName, {\n bubbles: true,\n detail: {\n width: currentWidth,\n breakpoint: currentBreakpoint,\n },\n });\n this.currentBreakpoint = currentBreakpoint;\n this.dispatchEvent(event);\n }\n });\n }\n\n getCurrentBreakpoint(width: number): Breakpoint {\n let currentBreakpoint: Breakpoint = 'xs';\n this.breakpoints.forEach((value, key) => {\n if (width >= value) {\n currentBreakpoint = key;\n }\n });\n return currentBreakpoint;\n }\n}\n","import { fetchRequest, setAsyncUrl } from '@tk/utilities/tk.fetch';\nimport TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\nimport { directSearchSuggestMessages } from '@tk/utilities/tk.messages';\nimport { isOutsideShapes } from '@tk/utilities/tk.shape.detector';\n\ninterface ISeachInputField {\n minimum: number;\n value: string;\n valid: boolean;\n hasDangerousString: boolean;\n hasDisallowedChars: boolean;\n}\n// eslint-disable-next-line no-use-before-define\ntype FieldElement = HTMLElement | TKSearch;\n\ninterface IDOMElement {\n element?: FieldElement;\n className: string;\n}\n\ninterface ISearchDataRequest {\n type: string;\n inputValue: string;\n filterValue?: string;\n filterAttribute?: string;\n}\n\ninterface SearchResponse {\n html: string;\n}\n\nexport default class TKSearch extends TKCustomElementFactory {\n selectorSearch: string = '[data-tk-search]';\n selectorSearchBackButton: string = '[data-tk-search-back]';\n selectorSearchResetButton: string = '[data-tk-search-reset]';\n selectorSearchSubmitButton: string = '[data-tk-search-submit]';\n selectorSearchFilterElement: string = '[data-tk-search-filter]';\n selectorSearchResult: string = '[data-tk-search-result]';\n attributeSearchMinLength: string = '[data-tk-search-min-input-length]';\n activeClassName: string;\n activeResultClassName: string;\n tooShortClassName: string;\n loadingClassName: string;\n\n directSearchForm?: HTMLFormElement;\n directSearchInputElement?: HTMLInputElement;\n directSearchBackButton?: HTMLButtonElement;\n directSearchResetButton?: HTMLButtonElement;\n directSearchSubmitButton?: HTMLButtonElement;\n directSearchFilterElement?: HTMLSelectElement;\n directSearchInputObj: ISeachInputField = {} as ISeachInputField;\n directSearchResult?: HTMLElement;\n directSearchMinLength: number;\n timerID: number = 0;\n\n searchTermAsUrlParam: boolean = true;\n disallowedCharacters: string = '';\n disallowedCharactersRegex: RegExp = /[^a-zA-Z0-9 �����������������������������������������������������',-_.]+/;\n\n constructor() {\n super();\n this.directSearchForm = this.querySelector(this.selectorSearch) || undefined;\n this.directSearchBackButton = this.querySelector(this.selectorSearchBackButton) || undefined;\n this.directSearchResetButton = this.querySelector(this.selectorSearchResetButton) || undefined;\n this.directSearchSubmitButton = this.querySelector(this.selectorSearchSubmitButton) || undefined;\n this.directSearchFilterElement = this.querySelector(this.selectorSearchFilterElement) || undefined;\n this.directSearchResult = this.querySelector(this.selectorSearchResult) || undefined;\n this.directSearchMinLength = Number(this.getAttribute(this.attributeSearchMinLength)) || 3;\n this.activeClassName = this.getAttribute('data-tk-active-class-name') || 'tk-search--active';\n this.activeResultClassName = (\n this.getAttribute('data-tk-active-result-class-name') || 'tk-search--has-data'\n );\n this.tooShortClassName = this.getAttribute('data-tk-too-short-class-name') || 'tk-search__result--too-short';\n this.loadingClassName = this.getAttribute('data-tk-loading-class-name') || 'tk-search__result--loading';\n\n if (!this.directSearchForm) {\n throw new Error('TK: Missing Direct-Search');\n }\n\n this.directSearchInputElement = this.directSearchForm.querySelector('input') || undefined;\n\n if (!this.directSearchInputElement) {\n throw new Error('TK: Missing Direct-Search-Input');\n }\n\n if (!this.directSearchResult) {\n throw new Error('TK: Missing Direct-Search Result Wrapper');\n }\n TKSearch.replaceToActionUrl();\n }\n\n connectedCallback(): void {\n this.registerListener();\n }\n\n registerListener(): void {\n if (this.directSearchInputElement) {\n const keyUpEventHandler = this.getSuggest.bind(this);\n const setClassEventHandler = this.setActiveClass.bind(this);\n const focusOutEventHandler = this.focusOut.bind(this);\n this.pushListener({ event: 'input', element: this.directSearchInputElement, action: keyUpEventHandler });\n this.pushListener({\n event: 'focusin',\n element: this.directSearchInputElement,\n action: setClassEventHandler,\n });\n this.pushListener({ event: 'click', element: window, action: focusOutEventHandler });\n }\n\n if (this.directSearchBackButton) {\n const navigateBackEventHandler = this.navigateBack.bind(this);\n this.pushListener({\n event: 'click',\n element: this.directSearchBackButton,\n action: navigateBackEventHandler,\n });\n }\n\n if (this.directSearchResetButton) {\n const resetEventHandler = this.resetSearch.bind(this);\n this.pushListener({\n event: 'click',\n element: this.directSearchResetButton,\n action: resetEventHandler,\n });\n }\n\n if (this.directSearchFilterElement) {\n const selectboxEventHandler = this.getSuggest.bind(this);\n this.pushListener({\n event: 'change',\n element: this.directSearchFilterElement,\n action: selectboxEventHandler,\n });\n }\n }\n\n setActiveClass(): void {\n this.classList.add(this.activeClassName);\n }\n\n focusOut(event: MouseEvent): void {\n const fieldElement = this.directSearchInputElement;\n const resultElement = this.directSearchResult;\n if (!fieldElement || !resultElement) return;\n const fieldElementRect = fieldElement.getBoundingClientRect();\n const resultRect = resultElement.getBoundingClientRect();\n const rectangles = [\n { rectangle: fieldElementRect },\n { rectangle: resultRect },\n ];\n if (isOutsideShapes(event, rectangles)) {\n this.classList.remove(this.activeClassName);\n }\n }\n\n setProgressBar(): void {\n const progressBarTpl: string = `\n
\n
\n
`;\n\n this.directSearchResult?.insertAdjacentHTML('beforeend', progressBarTpl);\n }\n\n setMessageTooShort(): void {\n const msgTpl: string = `\n
\n \n \n \n \n ${directSearchSuggestMessages.messageTooShort.text.replace('%1', String(this.directSearchMinLength))}\n \n
`;\n\n this.directSearchResult?.insertAdjacentHTML('beforeend', msgTpl);\n }\n\n getSuggest(): void {\n if (!this.directSearchResult) return;\n\n this.directSearchInputObj = this.validateSearchInput();\n this.modifyDOM();\n\n if (!this.directSearchInputObj.valid) {\n this.classList.add(this.activeResultClassName);\n this.setMessageTooShort();\n return;\n }\n\n this.resetResultList();\n\n this.timerID && clearTimeout(this.timerID);\n this.timerID = window.setTimeout(() => {\n // append Progress-Bar\n this.setProgressBar();\n\n const searchData = this.setDataForRequest();\n const data: Record = Object.fromEntries(Object.entries(searchData) as [string, string][]);\n\n const url = setAsyncUrl();\n fetchRequest({\n requestURL: url,\n resolveHandler: this.getDirectSearchSuggestDataFromResult.bind(this),\n payload: data,\n });\n }, 500);\n }\n\n setDataForRequest(): ISearchDataRequest {\n const retVal: ISearchDataRequest = {\n type: 'directsearchsuggest',\n inputValue: encodeURIComponent(this.directSearchInputObj.value),\n filterAttribute: this.directSearchFilterElement?.dataset.tkSearchFilterAttribute,\n filterValue: this.directSearchFilterElement?.value,\n };\n\n if (!this.directSearchFilterElement) {\n delete retVal.filterAttribute;\n delete retVal.filterValue;\n }\n\n return retVal;\n }\n\n getDirectSearchSuggestDataFromResult(response: TKResponse): void {\n if (!this.directSearchResult) {\n return;\n }\n\n this.classList.add(this.activeResultClassName);\n this.directSearchResult.innerHTML = response.dataAsJson.html;\n }\n\n modifyDOM(): void {\n const classListObj = TKSearch.clearClassListObj();\n\n classListObj.push(\n {\n element: this,\n className: this.activeClassName,\n },\n {\n element: this,\n className: this.activeResultClassName,\n },\n );\n\n if (this.directSearchInputObj.valid) {\n TKSearch.addClassList(classListObj);\n } else {\n this.resetResultList();\n }\n }\n\n static clearClassListObj(): IDOMElement[] {\n const classListObj: IDOMElement[] = [];\n return classListObj;\n }\n\n static addClassList(items: IDOMElement[]): void {\n items.forEach((item: IDOMElement) => {\n item.element?.classList.add(item.className);\n });\n }\n\n static removeClassList(items: IDOMElement[]): void {\n items.forEach((item: IDOMElement) => {\n item.element?.classList.remove(item.className);\n });\n }\n\n resetResultList(): void {\n this.directSearchResult?.replaceChildren();\n }\n\n navigateBack(): void {\n const classListObj = TKSearch.clearClassListObj();\n classListObj.push({\n element: this,\n className: this.activeClassName,\n });\n\n TKSearch.removeClassList(classListObj);\n }\n\n resetSearch(): void {\n const classListObj = TKSearch.clearClassListObj();\n classListObj.push(\n {\n element: this,\n className: this.activeClassName,\n },\n {\n element: this,\n className: this.activeResultClassName,\n },\n );\n this.resetResultList();\n TKSearch.removeClassList(classListObj);\n this.directSearchForm?.reset();\n }\n\n static replaceToActionUrl(): void {\n const actionUrl = localStorage.getItem('searchActionUrl')\n ? new URL(localStorage.getItem('searchActionUrl') as string)\n : undefined;\n\n if (actionUrl && actionUrl.pathname === window.location.pathname) {\n window.history.replaceState(null, 'searchActionUrl', actionUrl);\n }\n if (actionUrl) {\n localStorage.removeItem('searchActionUrl');\n }\n }\n\n validateSearchInput(): ISeachInputField {\n const value = this.directSearchInputElement?.value.trim() || '';\n const minLength = Number(this.getAttribute('data-tk-search-min-input-length') || 3);\n const hasDangerousString = value?.includes('<');\n const hasDisallowedChars = this.hasDisallowedCharacters(value);\n\n return {\n minimum: minLength,\n value,\n valid: value.length >= minLength && !hasDangerousString && !hasDisallowedChars,\n hasDangerousString,\n hasDisallowedChars,\n };\n }\n\n hasDisallowedCharacters(value: string): boolean {\n if (value === '') {\n this.disallowedCharacters = '';\n return false;\n }\n\n let disallowedCharactersRegex: RegExp;\n if (window.opacc.tkSearchTermModifier) {\n disallowedCharactersRegex = new RegExp(window.opacc.tkSearchTermModifier.disallowCharacters);\n } else {\n disallowedCharactersRegex = this.disallowedCharactersRegex;\n }\n const matches = value.match(disallowedCharactersRegex);\n if (matches && matches.length > 0) {\n const character = matches.at(0);\n if (character) {\n this.disallowedCharacters = character;\n return true;\n }\n return false;\n }\n\n this.disallowedCharacters = '';\n return false;\n }\n}\n","export interface Point {\n x: number;\n y: number;\n}\n\nexport interface Offset {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n}\n\nexport interface RectangleItem {\n rectangle: DOMRect;\n offset?: Offset;\n}\n\nexport function isPointOutsideRectangle(point: Point, rectangle: DOMRect, offset?: Offset): boolean {\n return (\n point.x < rectangle.left + (offset?.left || 0)\n || point.x > rectangle.right + (offset?.right || 0)\n || point.y < rectangle.top + (offset?.top || 0)\n || point.y > rectangle.bottom + (offset?.bottom || 0)\n );\n}\n\nexport function isOutsideShapes(event: MouseEvent, rectangles: RectangleItem[]): boolean {\n const point: Point = { x: event.clientX, y: event.clientY };\n return rectangles.every((item) => isPointOutsideRectangle(point, item.rectangle, item.offset));\n}\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\n\ntype FieldElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | undefined;\ntype AddonType = 'prefix' | 'suffix';\n\nexport default class TKFormElement extends TKCustomElementFactory {\n fieldElement: FieldElement;\n labelElement: HTMLLabelElement | undefined;\n materialDataAttribute: string;\n materialClass: string;\n materialNumberInputClass: string;\n materialLabelInsideClass: string;\n materialSelectFocussedClass: string;\n materialLoadedClass: string;\n addonElement: HTMLSpanElement | undefined;\n addonSuffixDistance: number;\n addonPrefixDistance: number;\n addonDefaultPadding: number;\n isPasswordInput: boolean;\n onTransitionEnd: () => void;\n\n constructor() {\n super();\n this.fieldElement = this.querySelector('input, select, textarea') as FieldElement;\n this.labelElement = this.querySelector('label')\n || undefined;\n this.materialDataAttribute = 'data-tk-is-material';\n this.materialClass = this.getAttribute('data-tk-material-class')\n || 'tk-form-material';\n this.materialNumberInputClass = this.getAttribute('data-tk-material-number-input-class')\n || 'tk-form-material--number';\n this.materialLabelInsideClass = this.getAttribute('data-tk-material-label-inside-class')\n || 'tk-form-material--label-inside';\n this.materialSelectFocussedClass = this.getAttribute('data-tk-material-select-focussed-class')\n || 'tk-form-select--focussed';\n this.materialLoadedClass = this.getAttribute('data-tk-material-loaded-class')\n || 'tk-form-material--loaded';\n this.addonElement = this.querySelector('[data-tk-addon]')\n || undefined;\n this.isPasswordInput = this.hasAttribute('data-tk-toggle-password');\n this.addonSuffixDistance = 0;\n this.addonPrefixDistance = 0;\n this.addonDefaultPadding = parseInt(this.getAttribute('data-tk-addon-default-padding') || '0', 10)\n || 4;\n this.onTransitionEnd = () => {};\n }\n\n connectedCallback() {\n this.checkRequiredAttribute();\n this.registerAddonClickedListener();\n this.registerShowPasswordClickedListener();\n this.initMaterialInput();\n }\n\n // #region Required\n checkRequiredAttribute() {\n if (!this.labelElement || !this.fieldElement || !this.fieldElement.hasAttribute('required')) return;\n this.labelElement.innerText = `${this.labelElement.innerText} *`;\n }\n // #endregion\n\n // #region Addon\n registerAddonClickedListener() {\n if (!this.addonElement) return;\n\n const addonClickHandler = this.onAddonClicked.bind(this);\n\n this.pushListener({ event: 'click', element: this.addonElement, action: addonClickHandler });\n }\n\n onAddonClicked() {\n if (\n !this.fieldElement\n || (!(this.fieldElement instanceof HTMLInputElement)\n && !(this.fieldElement instanceof HTMLTextAreaElement))\n ) throw new Error('No Input element found');\n\n if (this.isPasswordInput) return;\n this.fieldElement.focus();\n }\n\n registerShowPasswordClickedListener() {\n if (!this.isPasswordInput || !this.addonElement) return;\n\n const passwordShowClickHandler = this.onPasswordShowClicked.bind(this);\n this.pushListener({ event: 'mousedown', element: this.addonElement, action: passwordShowClickHandler });\n this.pushListener({ event: 'mouseup', element: this.addonElement, action: passwordShowClickHandler });\n this.pushListener({ event: 'touchstart', element: this.addonElement, action: passwordShowClickHandler });\n this.pushListener({ event: 'touchend', element: this.addonElement, action: passwordShowClickHandler });\n }\n\n onPasswordShowClicked(event: Event) {\n if (\n !this.fieldElement\n || !(this.fieldElement instanceof HTMLInputElement)\n ) throw new Error('Missing input element');\n\n if (event.type === 'mousedown' || event.type === 'touchstart') {\n this.fieldElement.type = 'text';\n } else {\n this.fieldElement.type = 'password';\n }\n }\n // #endregion\n\n // #region Material\n initMaterialInput() {\n if (!this.hasAttribute(this.materialDataAttribute)) return;\n if (!this.fieldElement) throw new Error('No element found');\n\n this.classList.add(this.materialClass);\n\n if (this.isNumberInput()) {\n this.classList.add(this.materialNumberInputClass);\n }\n\n this.registerLabelTransitionEndListener();\n this.calculateAddonWidth();\n this.setMaterialLabelState();\n this.registerMaterialValueChangeListener();\n this.registerMaterialSelectFocusChangeListener();\n }\n\n /**\n * This function is mainly used to check whether a valid value has been\n * set for the data-tk-addon attribute\n * @returns addonType: string representing the addon type\n */\n getAddonType() {\n if (!this.addonElement) throw new Error('Missing addon');\n const addonType = this.addonElement.getAttribute('data-tk-addon') as AddonType;\n\n if ((addonType !== 'prefix') && (addonType !== 'suffix')) throw new Error('Wrong addon type');\n\n return addonType;\n }\n\n /**\n * Checks whether the element contains a value or not. This information is required\n * to determine whether the label should be displayed inside or outside the element.\n * @returns isEmptyElement: boolean\n */\n checkForValue() {\n let isEmptyElement;\n\n if (this.fieldElement instanceof HTMLSelectElement) {\n const selectedOption = this.querySelector('option:checked');\n const isPlaceholderOption = selectedOption?.hasAttribute('data-tk-empty-option');\n isEmptyElement = isPlaceholderOption;\n } else {\n isEmptyElement = this.fieldElement?.value === '';\n }\n\n return isEmptyElement;\n }\n\n /**\n * This function implements the material functionality by displaying the label either\n * inside or outside the control, depending on the content\n */\n setMaterialLabelState() {\n // check input value\n const isEmptyMaterialInput = this.checkForValue();\n\n if (isEmptyMaterialInput) {\n this.classList.add(this.materialLabelInsideClass);\n if (!this.labelElement) throw new Error('Missing label element');\n\n if (this.isNumberInput()) {\n this.setupMaterialNumberLabelStyle();\n }\n\n if (!this.isNumberInput()) {\n this.setupMaterialDefaultLabelStyle();\n }\n } else {\n this.classList.remove(this.materialLabelInsideClass);\n if (!this.labelElement) throw new Error('Missing label element');\n this.labelElement.removeAttribute('style');\n }\n }\n\n /**\n * This function calculates the label position for a material input that is not of type\n * number and where the label is located within the input\n */\n setupMaterialDefaultLabelStyle() {\n if ((this.addonPrefixDistance === 0 && this.addonSuffixDistance === 0)) return;\n this.labelElement!.style.marginLeft = this.addonPrefixDistance > 0\n ? `${this.addonPrefixDistance + this.addonDefaultPadding}px` : '0px';\n this.labelElement!.style.marginRight = this.addonSuffixDistance > 0\n ? `${this.addonSuffixDistance + this.addonDefaultPadding}px` : '0px';\n this.labelElement!.style.paddingInline = '0';\n }\n\n /**\n * This function calculates the label position for a material input of type Number where\n * the label is located within the input\n */\n setupMaterialNumberLabelStyle() {\n this.labelElement!.style.paddingInline = '0';\n const labelWidthWithPadding = this.labelElement!.getBoundingClientRect().width;\n const computedLabelStyle = window.getComputedStyle(this.labelElement!);\n const labelPaddingLeft = parseFloat(computedLabelStyle.paddingLeft);\n const labelPaddingRight = parseFloat(computedLabelStyle.paddingRight);\n const labelWidth = (labelWidthWithPadding - labelPaddingLeft - labelPaddingRight);\n\n const formControlWidth = this.getBoundingClientRect().width;\n\n const computetInputStyle = window.getComputedStyle(this.fieldElement!);\n const inputPaddingRight = parseFloat(computetInputStyle.paddingRight);\n\n const addonWidth = (this.addonElement && (this.getAddonType() === 'suffix'))\n ? this.addonElement.getBoundingClientRect().width : 0;\n\n const xOffset = Math.round(formControlWidth - labelWidth - addonWidth - inputPaddingRight);\n\n this.labelElement!.style.paddingLeft = `${xOffset}px`;\n }\n\n /**\n * This function checks whether the current control has an addon. If so, depending\n * on the type of control, it checks whether the material label requires additional\n * spacing in the folded state\n */\n calculateAddonWidth() {\n if (!this.addonElement) return;\n if (this.fieldElement instanceof HTMLSelectElement) return;\n\n /* The text is displayed right-aligned for the number inputs.\n They must therefore be treated separately */\n const isNumberInput = this.isNumberInput();\n const addonType = this.getAddonType();\n\n if (!isNumberInput && (addonType === 'prefix')) {\n this.addonPrefixDistance = this.addonElement.offsetWidth;\n } else if (isNumberInput && (addonType === 'suffix')) {\n this.addonSuffixDistance = this.addonElement.offsetWidth;\n }\n }\n\n /**\n * Checks whether the input is of type Number. This information is required because\n * the text does not start on the left when the number input is collapsed\n * @returns boolean: representing is input of type number\n */\n isNumberInput() {\n if (!(this.fieldElement instanceof HTMLInputElement)) return false;\n\n return (this.fieldElement && (this.fieldElement.type === 'number'));\n }\n\n /**\n * Listener for material control value changes\n */\n registerMaterialValueChangeListener() {\n const onValueChanged = this.setMaterialLabelState.bind(this);\n if (!(this.fieldElement instanceof HTMLSelectElement)) {\n this.pushListener({ event: 'keyup', element: this.fieldElement!, action: onValueChanged });\n } else {\n this.pushListener({ event: 'change', element: this.fieldElement!, action: onValueChanged });\n }\n }\n\n /**\n * Is required so that a class can be added to the focused material select\n * element that colors the text of the select white\n */\n registerMaterialSelectFocusChangeListener() {\n if (!(this.fieldElement instanceof HTMLSelectElement)) return;\n\n const onFocusChanged = this.onMaterialSelectFocusChanged.bind(this);\n\n this.pushListener({ event: 'focusin', element: this.fieldElement, action: onFocusChanged });\n this.pushListener({ event: 'focusout', element: this.fieldElement, action: onFocusChanged });\n }\n\n /**\n * This function is used to add a class to the focused material select, which sets\n * the font to white if no option has been selected\n * @param event: Used to determin if focus has been set or removed\n */\n onMaterialSelectFocusChanged(event: Event) {\n const { type } = event;\n\n if (type === 'focusin') {\n this.classList.add(this.materialSelectFocussedClass);\n } else {\n this.classList.remove(this.materialSelectFocussedClass);\n }\n }\n\n /**\n * This function fades in the material element as soon as the label is in\n * the correct position\n */\n registerLabelTransitionEndListener() {\n if (!this.labelElement) throw new Error('Missing label element');\n\n this.onTransitionEnd = this.addMaterialLoadedModifier.bind(this);\n this.pushListener({ event: 'transitionend', element: this.labelElement, action: this.onTransitionEnd });\n }\n\n addMaterialLoadedModifier() {\n this.classList.add(this.materialLoadedClass);\n this.labelElement!.removeEventListener('transitionend', this.onTransitionEnd);\n }\n // #endregion\n}\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\nimport { fetchRequest } from '@tk/utilities/tk.fetch';\nimport { formErrorMessages, formExpandErrorMessages } from '@tk/utilities/tk.messages';\n\ntype FieldElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\ninterface ValidityMessages {\n key: keyof ValidityState;\n value: string;\n}\n\ninterface Validation {\n element: FieldElement;\n wrapper: Element;\n state?: ValidityState;\n messageElement?: HTMLSpanElement;\n messages: ValidityMessages[];\n}\n\ninterface ValidityItem {\n key: keyof ValidityState;\n value: boolean;\n}\n\ninterface ValidationResponse {\n isValid: boolean;\n}\n\nenum matchType {\n Some = 'SOME',\n Full= 'FULLMATCH',\n}\n\nexport default class TKFormValidator extends TKCustomElementFactory {\n form?: HTMLFormElement;\n validationList: Validation[];\n fieldWrapperSelector: string;\n formErrorClassName: string;\n fieldHintClassName: string;\n shouldValidateInline: boolean;\n passwordStrengthMeter?: HTMLElement;\n passwordNewElement?: HTMLElement;\n passwordRepeatElement?: HTMLElement;\n passwordValidClassName: string;\n passwordInvalidClassName: string;\n\n constructor() {\n super();\n\n this.form = this.querySelector('form') || undefined;\n this.validationList = [];\n this.fieldWrapperSelector = this.getAttribute('data-tk-field-wrapper-selector') || '[data-tk-field-wrapper]';\n this.formErrorClassName = this.getAttribute('data-tk-form-error-class-name') || 'tk-form--error';\n this.fieldHintClassName = this.getAttribute('data-tk-field-hint-class-name') || 'tk-form__hint';\n this.shouldValidateInline = this.hasAttribute('data-tk-should-validate-inline');\n this.passwordStrengthMeter = this.querySelector('[data-tk-password-strength-meter]') || undefined;\n this.passwordNewElement = this.querySelector('[data-tk-password-new]') || undefined;\n this.passwordRepeatElement = this.querySelector('[data-tk-password-repeat]') || undefined;\n this.passwordValidClassName = this.getAttribute('data-tk-password-valid-class-name') || 'tk-form--valid';\n this.passwordInvalidClassName = this.getAttribute('data-tk-password-valid-class-name') || 'tk-form--invalid';\n }\n\n connectedCallback(): void {\n if (!this.form) return;\n\n this.setNoValidateForm();\n this.searchFieldElements();\n this.registerSubmitListener();\n this.registerPasswordListener();\n this.shouldValidateInline && this.registerFieldValidationListener();\n }\n\n setNoValidateForm() {\n if (!this.form) return;\n this.form.noValidate = true;\n }\n\n searchFieldElements(): void {\n const formElements: NodeListOf = this.querySelectorAll('input, select, textarea');\n const formElementList = Array.from(formElements);\n const filteredFormElements = formElementList.filter((element) => !element.disabled);\n filteredFormElements.forEach((element) => {\n const wrapper = element.closest(this.fieldWrapperSelector);\n wrapper\n && this.validationList.push({\n element,\n wrapper,\n messages: TKFormValidator.generateValidityMessages(element),\n });\n });\n }\n\n registerSubmitListener() {\n if (!this.form) return;\n const onSubmitHandler = this.validateForm.bind(this);\n this.pushListener({ event: 'submit', element: this.form, action: onSubmitHandler });\n }\n\n registerPasswordListener() {\n if (!(this.passwordStrengthMeter && this.passwordNewElement && this.passwordRepeatElement)) return;\n\n const onValidatePassword = this.validatePassword.bind(this);\n this.pushListener({ event: 'input', element: this.passwordNewElement, action: onValidatePassword });\n this.pushListener({ event: 'input', element: this.passwordRepeatElement, action: onValidatePassword });\n }\n\n registerFieldValidationListener() {\n this.validationList.forEach((item) => {\n const onValidation = this.validateField.bind(this, item);\n this.pushListener({ event: 'blur', element: item.element, action: onValidation });\n this.pushListener({ event: 'input', element: item.element, action: onValidation });\n });\n }\n\n async validateByAPI(): Promise {\n const validationList: boolean[] = [];\n const fieldElements = this.querySelectorAll('[data-tk-field-check-api]');\n if (fieldElements.length === 0) return true;\n const apiPromises = Array.from(fieldElements).map(async (element) => {\n const apiURL = element.getAttribute('data-tk-field-check-api');\n const input = element.querySelector('input');\n if (!input || !apiURL) return true;\n const response = await TKFormValidator.fetchExistAPI(apiURL, input.value);\n const validationItem = this.validationList.find((item) => item.wrapper === element);\n const { isValid } = response.dataAsJson;\n if (!isValid && validationItem) {\n this.removeMessage(validationItem);\n this.createElementMessage(\n validationItem,\n formExpandErrorMessages.existigName,\n );\n }\n return isValid;\n });\n const results = await Promise.all(apiPromises);\n validationList.push(...results);\n return validationList.every((item) => item);\n }\n\n static async fetchExistAPI(url: string, value: string): Promise> {\n return new Promise((resolve) => {\n fetchRequest({\n requestURL: url,\n payload: {\n value,\n },\n resolveHandler: (response: TKResponse) => {\n resolve(response);\n },\n });\n });\n }\n\n async validateForm(event: Event) {\n this.validationList.forEach((item) => {\n this.validateField(item);\n event.preventDefault();\n });\n\n const isValid = await this.validateByAPI();\n\n if (\n this.validationList.every((item) => item.element.validity.valid)\n && (!this.passwordStrengthMeter || this.checkPasswordStengthMeter())\n && this.checkPasswordMatching()\n && isValid\n ) {\n this.form?.submit();\n }\n }\n\n async isFormValid(event: Event) {\n this.validationList.forEach((item) => {\n this.validateField(item);\n event.preventDefault();\n });\n\n const isValid = await this.validateByAPI();\n\n return (\n this.validationList.every((item) => item.element.validity.valid)\n && (!this.passwordStrengthMeter || this.checkPasswordStengthMeter())\n && this.checkPasswordMatching()\n && !isValid\n );\n }\n\n validateField(item: Validation) {\n this.removeMessage(item);\n if (!item.element.validity.valid) {\n this.showMessage(item);\n }\n }\n\n showMessage(item: Validation) {\n const validityList = TKFormValidator.createValidityDictionary(item.element);\n const invalidMessage = validityList.find((validity) => validity.value);\n const message = invalidMessage\n ? item.messages.find((message) => message.key === invalidMessage.key)?.value || ''\n : item.element.validationMessage;\n\n this.createElementMessage(item, message);\n }\n\n createElementMessage(item: Validation, message: string) {\n const spanElement = document.createElement('span');\n spanElement.classList.add(this.fieldHintClassName);\n spanElement.textContent = TKFormValidator.replacePlaceholders(message, item.element);\n item.messageElement = spanElement;\n item.wrapper.classList.add(this.formErrorClassName);\n item.wrapper.insertAdjacentElement('beforeend', spanElement);\n }\n\n removeMessage(item: Validation) {\n const spanElement = item.messageElement;\n if (!spanElement) return;\n spanElement.remove();\n item.wrapper.classList.remove(this.formErrorClassName);\n }\n\n static createValidityDictionary(element: FieldElement) {\n const { validity } = element;\n const validityList: ValidityItem[] = [];\n Object.keys(validity).forEach((key) => {\n const validityItem: ValidityItem = {\n key: key as keyof ValidityState,\n value: Boolean(validity[key as keyof ValidityState]),\n };\n validityList.push(validityItem);\n });\n return validityList;\n }\n\n static generateValidityMessages(element: FieldElement): ValidityMessages[] {\n const list: ValidityMessages[] = [];\n const attributeList = element.getAttributeNames().filter((name) => name.startsWith('data-tk-error-msg-'));\n attributeList.forEach((key) => {\n const keyFormatted = key.replace(/-./g, (x) => x[1].toUpperCase()) as keyof ValidityState;\n const value = element.getAttribute(key);\n value\n && list.push({\n key: keyFormatted,\n value,\n });\n });\n\n if (window.opacc.tkFormValidityMessages) {\n const messages = window.opacc.tkFormValidityMessages;\n Object.entries(messages).forEach((entry) => {\n const [key, value] = entry;\n const foundMessage = list.filter((item) => item.key === key);\n !foundMessage.length\n && list.push({\n key: key as keyof ValidityState,\n value,\n });\n });\n }\n\n return list;\n }\n\n static replacePlaceholders(value: string, element: FieldElement): string {\n const dictionary: Record = {\n '{minLength}': element.getAttribute('minlength') || '',\n '{maxLength}': element.getAttribute('maxlength') || '',\n '{length}': element.value.length.toString() || '',\n '{step}': element.getAttribute('step') || '',\n '{min}': element.getAttribute('min') || '',\n '{max}': element.getAttribute('max') || '',\n '{currentValue}': element.value,\n };\n const re = new RegExp(Object.keys(dictionary).join('|'), 'gi');\n return value.replace(re, (matched) => dictionary[matched]);\n }\n\n checkPasswordStengthMeter() {\n const patterns = this.getPasswordPatterns();\n return patterns.every((item) => item.element?.classList.contains(this.passwordValidClassName));\n }\n\n checkPasswordMatching(): boolean {\n let isValid: boolean;\n const newPasswordItem = this.validationList.find((item) => item.element === this.passwordNewElement);\n const repeatPasswordItem = this.validationList.find((item) => item.element === this.passwordRepeatElement);\n if (!newPasswordItem || !repeatPasswordItem) return true;\n if (newPasswordItem.element.value !== repeatPasswordItem.element.value) {\n this.removeMessage(repeatPasswordItem);\n this.createElementMessage(\n repeatPasswordItem,\n window.opacc.tkFormPasswordValidityMessages!.passwordNotMatching,\n );\n isValid = false;\n } else {\n isValid = true;\n }\n return isValid;\n }\n\n validatePassword(event: Event) {\n const target = event.currentTarget as HTMLInputElement;\n const patterns = this.getPasswordPatterns();\n\n patterns.forEach((item) => {\n const regex = new RegExp(item.pattern || '', item.matchtype === matchType.Full ? 'g' : '');\n\n const regexpMatch = target.value.match(regex);\n\n if (item.matchtype === matchType.Some) {\n if (regexpMatch) {\n item.element?.classList.remove(this.passwordInvalidClassName);\n item.element?.classList.add(this.passwordValidClassName);\n } else {\n item.element?.classList.remove(this.passwordValidClassName);\n item.element?.classList.add(this.passwordInvalidClassName);\n }\n }\n\n if (item.matchtype === matchType.Full) {\n if (regexpMatch?.length === target.value.length) {\n item.element?.classList.remove(this.passwordInvalidClassName);\n item.element?.classList.add(this.passwordValidClassName);\n } else {\n item.element?.classList.remove(this.passwordValidClassName);\n item.element?.classList.add(this.passwordInvalidClassName);\n }\n }\n });\n }\n\n getPasswordPatterns() {\n const characterPatternElement = this.passwordStrengthMeter?.querySelector('[data-tk-pwd-character-pattern]');\n const upperPatternElement = this.passwordStrengthMeter?.querySelector('[data-tk-pwd-upper-pattern]');\n const numberPatternElement = this.passwordStrengthMeter?.querySelector('[data-tk-pwd-number-pattern]');\n const allowedSymbolPatternElement = this.passwordStrengthMeter?.querySelector(\n '[data-tk-pwd-allowed-symbols-pattern]',\n );\n const characterPattern = characterPatternElement?.getAttribute('data-tk-pwd-character-pattern');\n const upperPattern = upperPatternElement?.getAttribute('data-tk-pwd-upper-pattern');\n const numberPattern = numberPatternElement?.getAttribute('data-tk-pwd-number-pattern');\n const allowedSymbolPattern = allowedSymbolPatternElement?.getAttribute('data-tk-pwd-allowed-symbols-pattern');\n return [\n {\n pattern: characterPattern,\n element: characterPatternElement,\n matchtype: matchType.Some,\n },\n {\n pattern: upperPattern,\n element: upperPatternElement,\n matchtype: matchType.Some,\n },\n {\n pattern: numberPattern,\n element: numberPatternElement,\n matchtype: matchType.Some,\n },\n {\n pattern: allowedSymbolPattern,\n element: allowedSymbolPatternElement,\n matchtype: matchType.Full,\n },\n ];\n }\n}\n","import { fetchRequest } from '@tk/utilities/tk.fetch';\nimport TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\nimport { zipCityMessages } from '@tk/utilities/tk.messages';\n\ninterface ZipCityData {\n zip: string;\n city: string;\n country: string;\n}\n\ninterface ZipCityField {\n inputField?: HTMLInputElement;\n dropdown?: HTMLElement;\n listItemSelected?: HTMLElement;\n data?: ZipCityData[];\n}\n\nexport default class TKFormZipCity extends TKCustomElementFactory {\n fieldCountry?: HTMLInputElement | HTMLSelectElement;\n fieldZip?: HTMLInputElement;\n fieldCity?: HTMLInputElement;\n inputObject: ZipCityField;\n selectedField?: HTMLInputElement;\n listWrapper: HTMLElement;\n timer?: ReturnType;\n lastSearchTerm: string;\n listWrapperClassName: string;\n loadingSpinnerTimeout: number | null;\n clearDataTimeout: number | null;\n\n constructor() {\n super();\n\n this.listWrapperClassName = this.getAttribute('data-tk-zip-list-class') || 'tk-form-zipcity__list';\n this.fieldCountry = this.querySelector('[data-tk-zip-country]') || undefined;\n this.fieldZip = this.querySelector('[data-tk-zip-zip]') || undefined;\n this.fieldCity = this.querySelector('[data-tk-zip-city]') || undefined;\n this.lastSearchTerm = '';\n this.selectedField = undefined;\n this.listWrapper = document.createElement('div');\n this.listWrapper.classList.add(this.listWrapperClassName);\n this.listWrapper.hidden = true;\n this.loadingSpinnerTimeout = null;\n this.clearDataTimeout = null;\n\n this.inputObject = {\n inputField: undefined,\n dropdown: this.listWrapper,\n listItemSelected: undefined,\n data: [],\n };\n }\n\n connectedCallback(): void {\n this.registerListener();\n }\n\n registerListener() {\n if (!this.fieldZip && !this.fieldCity) return;\n\n const onInputHandler = this.searchZipCity.bind(this);\n const onClickHandler = this.toggleDropdown.bind(this);\n const onSelectHandler = this.selectItem.bind(this);\n const onChangeHandler = this.clearFormFields.bind(this);\n const onInputKeyNavigationHandler = this.inputKeyNavigation.bind(this);\n const onDropdownKeyNavigationHandler = this.dropdownKeyNavigation.bind(this);\n\n this.pushListener({ event: 'click', element: this.fieldZip!, action: onClickHandler });\n this.pushListener({ event: 'click', element: this.fieldCity!, action: onClickHandler });\n this.pushListener({ event: 'click', element: this.inputObject.dropdown!, action: onSelectHandler });\n this.pushListener({ event: 'input', element: this.fieldZip!, action: onInputHandler });\n this.pushListener({ event: 'input', element: this.fieldCity!, action: onInputHandler });\n this.pushListener({ event: 'keydown', element: this.fieldZip!, action: onInputKeyNavigationHandler });\n this.pushListener({ event: 'keydown', element: this.fieldCity!, action: onInputKeyNavigationHandler });\n this.pushListener({\n event: 'keydown',\n element: this.inputObject.dropdown!,\n action: onDropdownKeyNavigationHandler,\n });\n\n if (this.fieldCountry) {\n this.pushListener({ event: 'change', element: this.fieldCountry, action: onChangeHandler });\n }\n }\n\n inputKeyNavigation(event: KeyboardEvent): void {\n if (!(event.code === 'Tab' || event.code === 'Enter' || event.code === 'ArrowDown')) return;\n\n this.inputObject.listItemSelected = this.inputObject.dropdown?.firstElementChild as HTMLElement;\n\n if (!this.inputObject.listItemSelected) return;\n\n this.inputObject.dropdown?.classList.remove('hide');\n this.inputObject.listItemSelected.focus();\n event.preventDefault();\n }\n\n dropdownKeyNavigation(event: KeyboardEvent): void {\n const keyActions: Record void> = {\n ArrowDown: () => this.handleArrowKey(true),\n ArrowUp: () => this.handleArrowKey(false),\n Enter: () => this.selectItem(event),\n Space: () => this.selectItem(event),\n Tab: () => this.hideDropdown(true),\n Escape: () => this.hideDropdown(true),\n };\n\n const action = keyActions[event.code];\n if (!action) return;\n\n action();\n event.preventDefault();\n }\n\n handleArrowKey(isDown: boolean): void {\n if (this.inputObject.listItemSelected) {\n const nextElement = isDown\n ? this.inputObject.listItemSelected.nextElementSibling\n : this.inputObject.listItemSelected.previousElementSibling;\n\n if (nextElement instanceof HTMLElement) {\n this.inputObject.listItemSelected = nextElement;\n }\n } else {\n this.inputObject.listItemSelected = this.inputObject.dropdown?.firstElementChild as HTMLElement;\n }\n\n if (!this.inputObject.listItemSelected) {\n return;\n }\n\n this.inputObject.listItemSelected.focus();\n this.setScroller();\n }\n\n hideDropdown(isHidden: boolean = false): void {\n if (this.inputObject.dropdown) {\n if (!isHidden) {\n this.showLoadingAnimation();\n this.listWrapper.style.border = 'unset';\n }\n this.inputObject.dropdown.hidden = isHidden;\n }\n }\n\n toggleDropdown() {\n if (this.inputObject.dropdown && this.inputObject.dropdown.hasChildNodes()) {\n this.inputObject.dropdown.hidden = !this.inputObject.dropdown.hidden;\n }\n }\n\n setScroller(): void {\n const { dropdown, listItemSelected } = this.inputObject;\n\n if (!dropdown || !listItemSelected) return;\n\n const index = Array.from(dropdown.children).indexOf(listItemSelected);\n const elHeight = listItemSelected.offsetHeight;\n const { scrollTop } = dropdown;\n const viewport = scrollTop + dropdown.offsetHeight;\n const elOffset = elHeight * index;\n\n if (elOffset >= scrollTop && (elOffset + elHeight) <= viewport) return;\n\n dropdown.scrollTop = elOffset;\n }\n\n setInputObject(): void {\n if (!this.selectedField?.parentElement?.querySelector(`.${this.listWrapperClassName}`)) {\n this.selectedField?.insertAdjacentElement('afterend', this.listWrapper);\n }\n\n this.inputObject.inputField = this.selectedField;\n }\n\n searchZipCity(event: Event): void {\n this.selectedField = event.target as HTMLInputElement;\n const value = this.selectedField!.value.trim();\n\n if (value.length < 2) {\n this.clearDataTimeout && clearTimeout(this.clearDataTimeout);\n this.clearDataTimeout = setTimeout(() => {\n this.clearData();\n }, 300);\n return;\n }\n\n this.lastSearchTerm = value;\n\n this.setInputObject();\n this.timer && clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.callApi(value);\n }, 300);\n }\n\n callApi(value: string) {\n if (!this.inputObject.dropdown) return;\n this.hideDropdown(false);\n\n if (this.lastSearchTerm !== value) return;\n\n const zipCity = this.parseZipCity(value);\n const apiUrl = `${window.location.origin}/api/portal/v1/zipsearch`;\n\n const urlObject = new URL(apiUrl);\n const { searchParams } = urlObject;\n\n Object.entries(zipCity).forEach(([key, value]) => {\n searchParams.set(key, value);\n });\n\n fetchRequest({\n requestURL: urlObject.toString(),\n resolveHandler: this.refreshResultList.bind(this),\n decodeJSONResponse: false,\n });\n }\n\n parseZipCity(value: string) {\n let zip: string | number;\n let city: string;\n\n const country: string = this.fieldCountry?.value?.toLowerCase() || 'ch';\n\n const arr = value.split(' ');\n const numberRegex = /^[0-9]+$/;\n const regexTest = arr.find((elem) => numberRegex.test(elem));\n if (regexTest === undefined) {\n zip = '';\n } else {\n zip = regexTest;\n }\n\n if (!zip) {\n if (arr.length > 1) {\n zip = +arr[1] || '';\n }\n }\n\n zip = zip.toString();\n city = value.replace(zip, '').trim();\n if (city === 'undefined') {\n city = '';\n }\n\n return {\n zip,\n city,\n country,\n };\n }\n\n refreshResultList(response: TKResponse): void {\n if (!response) return;\n this.clearData();\n if (Array.isArray(response)) {\n response.forEach((element: ZipCityData) => {\n const listItemTpl: string = `\n `;\n\n this.inputObject.dropdown!.insertAdjacentHTML('beforeend', listItemTpl);\n this.inputObject.data?.push({ zip: element.zip, city: element.city, country: element.country });\n });\n }\n\n if (this.inputObject.data!.length === 0) {\n const listItemTpl: string = `\n
\n
\n \n \n \n ${zipCityMessages.noMatchFound}\n
\n
`;\n\n this.inputObject.dropdown!.insertAdjacentHTML('beforeend', listItemTpl);\n }\n this.listWrapper.style.border = '';\n this.loadingSpinnerTimeout && clearTimeout(this.loadingSpinnerTimeout);\n this.inputObject.dropdown!.hidden = false;\n }\n\n selectItem(event: Event): void {\n let selectedItem: HTMLElement = event.target as HTMLElement;\n selectedItem = selectedItem.closest('[data-tk-zip]') as HTMLElement;\n\n if (!selectedItem) return;\n const zip = selectedItem.getAttribute('data-tk-zip') as string;\n const city = selectedItem.getAttribute('data-tk-city') as string;\n const country = selectedItem.getAttribute('data-tk-country') as string;\n\n if (this.fieldZip) {\n this.fieldZip.value = zip;\n }\n if (this.fieldCity) {\n this.fieldCity.value = city;\n }\n if (this.fieldCountry) {\n this.fieldCountry.value = country;\n }\n\n this.inputObject.inputField!.focus();\n this.clearData();\n }\n\n clearFormFields(): void {\n this.clearData();\n this.fieldCity!.value = '';\n this.fieldZip!.value = '';\n }\n\n clearData(): void {\n if (this.inputObject.dropdown) {\n this.hideDropdown(true);\n this.inputObject.dropdown.replaceChildren();\n }\n this.inputObject.data = [];\n }\n\n showLoadingAnimation() {\n this.loadingSpinnerTimeout && clearTimeout(this.loadingSpinnerTimeout);\n this.loadingSpinnerTimeout = setTimeout(() => {\n this.listWrapper.innerHTML = `\n
\n
\n
`;\n }, 300);\n }\n}\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\n\nexport default class TKTabsTab extends TKCustomElementFactory {\n selectorTabsHead: string = '[data-tk-tab-head]';\n selectorTabsBody: string = '[data-tk-tab-body]';\n activeClassName: string;\n initialTabIndex: number;\n tabList?: HTMLCollection;\n tabContentList?: HTMLCollection;\n enableLinks: boolean;\n\n constructor() {\n super();\n const tabHead = this.querySelector(this.selectorTabsHead);\n const tabBody = this.querySelector(this.selectorTabsBody);\n this.activeClassName = this.getAttribute('data-tk-active-class-name') || 'tk-tabs-tab--active';\n this.initialTabIndex = Number(this.getAttribute('data-tk-initial-tab')) || 1;\n this.enableLinks = this.hasAttribute('data-tk-enable-links');\n\n if (!tabHead) {\n throw new Error('TK: Missing Tab-Header');\n }\n\n if (!tabBody) {\n throw new Error('TK: Missing Tab-Body');\n }\n\n this.tabList = tabHead.childElementCount > 0 ? tabHead.children : undefined;\n this.tabContentList = tabBody.childElementCount > 0 ? tabBody.children : undefined;\n\n if (!this.tabList) {\n throw new Error('TK: Empty Tab-Header');\n }\n\n if (!this.tabContentList) {\n throw new Error('TK: Empty Tab-Content');\n }\n\n if (this.tabList.length !== this.tabContentList.length && !this.enableLinks) {\n throw new Error('TK: Tab-Header Elements and Tab-Content Elements must be equal');\n }\n }\n\n connectedCallback(): void {\n this.registerListener();\n if (this.tabList && +this.initialTabIndex > 0) {\n const button = this.tabList.item(this.initialTabIndex - 1) as HTMLButtonElement;\n this.setTabActive(button, this.initialTabIndex - 1);\n }\n }\n\n registerListener(): void {\n if (this.tabList) {\n [...this.tabList].forEach((element, index) => {\n const button = element as HTMLButtonElement;\n const eventHandler = this.setTabActive.bind(this, button, index);\n this.pushListener({ event: 'click', element: button, action: eventHandler });\n });\n }\n }\n\n setTabActive(button: HTMLButtonElement, index: number): void {\n const input = button.querySelector('input');\n if ((input && input.disabled) || button.disabled) return;\n const item = this.tabContentList?.item(index);\n if (!item) {\n const url = button.getAttribute('data-tk-url');\n const target = button.getAttribute('target') || undefined;\n if (!url) return;\n window.open(url, target);\n } else {\n this.setTabInactive();\n button.classList.add(this.activeClassName);\n item.classList.add(this.activeClassName);\n }\n this.toggleRequiredAttribute(index);\n }\n\n setTabInactive(): void {\n if (!this.tabContentList) return;\n [...this.tabContentList].forEach((element, index) => {\n const button = element as HTMLButtonElement;\n button.classList.remove(this.activeClassName);\n const item = this.tabList?.item(index);\n if (!item) return;\n item.classList.remove(this.activeClassName);\n });\n }\n\n toggleRequiredAttribute(index: number) {\n if (!this.tabContentList) return;\n const currentElement = this.tabContentList.item(index);\n const contentList = Array.from(this.tabContentList);\n const filteredList = contentList.filter((element) => element !== currentElement);\n filteredList.forEach((element) => {\n const fieldElements = element.querySelectorAll('input');\n fieldElements.forEach((fieldElement) => {\n fieldElement.required = false;\n fieldElement.setAttribute('data-tk-is-required', '');\n });\n });\n const fieldElements = currentElement?.querySelectorAll('input[data-tk-is-required]');\n fieldElements?.forEach((fieldElement) => {\n fieldElement.required = true;\n fieldElement.removeAttribute('data-tk-is-required');\n });\n }\n}\n","import { fetchRequest } from '@tk/utilities/tk.fetch';\nimport TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\nimport render from '@tk/utilities/tk.render';\nimport { RectangleItem, isOutsideShapes } from '@tk/utilities/tk.shape.detector';\n\ninterface QuantityResponse {\n quantity: number;\n}\n\nexport default class TKMinibasket extends TKCustomElementFactory {\n headerButton?: HTMLButtonElement;\n overlay?: HTMLElement;\n contentWrapper?: HTMLUListElement;\n countItemsRequestURL?: string;\n getContentRequestURL?: string;\n headerButtonEmptyClassName: string;\n openClassName: string;\n isDataFetched: boolean = false;\n offset: number;\n minDistanceToBorder: number;\n\n // Custom Events\n openedEventName: TKCustomEventMap;\n openedEvent: CustomEvent;\n closedEventName: TKCustomEventMap;\n closedEvent: CustomEvent;\n updateEventName: TKCustomEventMap;\n updateEvent: CustomEvent;\n\n static observedAttributes = ['data-count'];\n\n constructor() {\n super();\n\n this.headerButton = this.querySelector('[data-tk-header-button]') || undefined;\n this.overlay = this.querySelector('[data-tk-minibasket-overlay]') || undefined;\n this.contentWrapper = this.querySelector('[data-tk-minibasket-content]') || undefined;\n this.countItemsRequestURL = this.getAttribute('data-tk-count-items-request-url') || undefined;\n this.getContentRequestURL = this.getAttribute('data-tk-get-content-request-url') || undefined;\n this.headerButtonEmptyClassName = this.getAttribute('data-tk-header-button-empty-class-name')\n || 'tk-button__header--empty';\n this.offset = Number(this.getAttribute('data-tk-minibasket-offset')) || 4;\n this.openClassName = this.getAttribute('data-tk-open-class-name') || 'tk-minibasket--open';\n this.minDistanceToBorder = Number(this.getAttribute('data-tk-min-distance-to-border')) || 5;\n\n // Custom Events\n this.openedEventName = (\n this.getAttribute('data-tk-event-opened-name') || 'tk-minibasket-opened'\n ) as TKCustomEventMap;\n this.openedEvent = new CustomEvent(this.openedEventName);\n this.closedEventName = (\n this.getAttribute('data-tk-event-closed-name') || 'tk-minibasket-closed'\n ) as TKCustomEventMap;\n this.closedEvent = new CustomEvent(this.closedEventName);\n this.updateEventName = (\n this.getAttribute('data-tk-event-update-name') || 'tk-minibasket-update'\n ) as TKCustomEventMap;\n this.updateEvent = new CustomEvent(this.updateEventName);\n }\n\n connectedCallback(): void {\n if (!this.headerButton) throw new Error('Minibasket: Header Button is missing!');\n if (\n !this.countItemsRequestURL\n || !this.getContentRequestURL\n ) {\n throw new Error('Minibasket: Request URLs are missing!');\n }\n this.registerInitializeListener();\n this.fetchQuantity();\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (name === 'data-count') {\n this.setCounter(Number(newValue));\n }\n }\n\n registerInitializeListener(): void {\n const handleOpen = this.open.bind(this);\n this.pushListener({ event: 'click', element: this.headerButton!, action: handleOpen });\n\n const handleOpened = this.opened.bind(this);\n this.pushListener({ event: this.openedEventName, element: this, action: handleOpened });\n\n const handleUpdate = this.update.bind(this);\n this.pushListener({ event: this.updateEventName, element: this, action: handleUpdate });\n }\n\n registerCloseListener(): void {\n const handleClose = this.close.bind(this);\n this.pushListener({ event: 'click', element: window, action: handleClose });\n }\n\n registerScrollListener(): void {\n const handleScroll = this.alignOverlayToButton.bind(this);\n this.pushListener({ event: 'scroll', element: window, action: handleScroll });\n }\n\n open() {\n document.body.insertAdjacentElement('beforeend', this.overlay!);\n this.overlay!.classList.add(this.openClassName);\n this.alignOverlayToButton();\n !this.isDataFetched && this.fetchAll();\n this.dispatchEvent(this.openedEvent);\n }\n\n opened() {\n // This method would be used to execute code in a non-blocking way to prevent potential delays.\n setTimeout(() => {\n this.registerCloseListener();\n this.registerScrollListener();\n }, 0);\n }\n\n update() {\n this.fetchQuantity();\n this.fetchAll();\n }\n\n close(event: MouseEvent) {\n if (!this.overlay) return;\n const headerButtonRect = this.headerButton!.getBoundingClientRect();\n const overlayRect = this.overlay!.getBoundingClientRect();\n const rectangles = [\n { rectangle: headerButtonRect },\n { rectangle: overlayRect },\n ] as RectangleItem[];\n if (isOutsideShapes(event, rectangles)) {\n this.overlay!.classList.remove(this.openClassName);\n this.dispatchEvent(this.closedEvent);\n this.removeListener(window);\n }\n }\n\n fetchAll() {\n Promise.all([\n TKMinibasket.fetchData(this.getContentRequestURL!),\n ]).then((responses) => {\n this.isDataFetched = true;\n this.placeContent(responses[0]);\n }).catch(() => {\n this.isDataFetched = false;\n });\n }\n\n fetchQuantity(): void {\n fetchRequest({\n requestURL: this.countItemsRequestURL!,\n resolveHandler: this.getQuantity.bind(this),\n });\n }\n\n static fetchData(url: string): Promise> {\n return new Promise((resolve) => {\n fetchRequest({\n requestURL: url,\n resolveHandler: (response: TKResponse) => {\n resolve(response);\n },\n });\n });\n }\n\n getQuantity(response: TKResponse): void {\n if (!response || !response.success) return;\n const { quantity } = response.dataAsJson;\n this.setCounter(quantity);\n }\n\n setCounter(quantity: number) {\n if (quantity === 0) {\n this.headerButton?.classList.add(this.headerButtonEmptyClassName);\n } else {\n this.headerButton?.setAttribute('data-count', `${quantity || 0}`);\n this.headerButton?.classList.remove(this.headerButtonEmptyClassName);\n }\n }\n\n placeContent(response: TKResponse): void {\n if (!response || !response.success) return;\n if (!this.contentWrapper) return;\n const items = render(response.dataAsHtml);\n this.contentWrapper.innerHTML = '';\n this.contentWrapper.insertAdjacentHTML('beforeend', items.innerHTML);\n }\n\n alignOverlayToButton() {\n const { bottom, right } = this.headerButton!.getBoundingClientRect();\n const { width } = this.overlay!.getBoundingClientRect();\n const distanceToBorder = right - width;\n\n this.overlay!.style.top = `${bottom + this.offset}px`;\n\n if (distanceToBorder >= this.minDistanceToBorder) {\n this.overlay!.style.left = `${right - width}px`;\n } else {\n this.overlay!.style.left = '50%';\n this.overlay!.style.transform = 'translateX(-50%)';\n }\n }\n}\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\n\ninterface CustomElementAccordionIcon {\n iconAdd: string;\n iconRemove: string;\n}\n\nexport default class TKTabsAccordion extends TKCustomElementFactory {\n activeClassName: string;\n accordionHead?: HTMLDivElement;\n accordionBody?: HTMLDivElement;\n accordionIcon?: HTMLElement;\n triggerArea?: Element;\n accordionIcons: CustomElementAccordionIcon;\n isActive: boolean;\n isHeaderLink?: boolean;\n\n constructor() {\n super();\n\n this.accordionHead = this.querySelector('[data-tk-accordion-head]') || undefined;\n this.accordionBody = this.querySelector('[data-tk-accordion-body]') || undefined;\n this.accordionIcon = this.querySelector('[data-tk-accordion-icon]') || undefined;\n this.accordionIcons = {\n iconAdd: this.getAttribute('data-tk-icon-open') || 'tk-icon-add',\n iconRemove: this.getAttribute('data-tk-icon-collapse') || 'tk-icon-remove',\n };\n this.isActive = this.hasAttribute('data-tk-accordion-is-active');\n this.isHeaderLink = this.accordionHead && this.accordionHead.hasAttribute('data-tk-accordion-link');\n this.activeClassName = this.getAttribute('data-tk-active-class-name') || 'tk-tabs-accordion--active';\n }\n\n connectedCallback(): void {\n if (\n (!this.accordionHead\n || !this.accordionBody\n || !this.accordionIcon)\n && !this.isHeaderLink\n ) throw new Error('Accordion: Elements are missing!');\n\n this.setAccordionState(this.isActive);\n this.registerListener();\n }\n\n registerListener(): void {\n const eventHandler = this.toggleEvent.bind(this);\n this.pushListener({ event: 'click', element: this.accordionHead!, action: eventHandler });\n }\n\n toggleEvent(): void {\n this.toggleMarkupElements();\n }\n\n toggleMarkupElements(): void {\n this.classList.toggle(this.activeClassName);\n this.accordionIcon?.classList.toggle(this.accordionIcons.iconAdd);\n this.accordionIcon?.classList.toggle(this.accordionIcons.iconRemove);\n }\n\n setAccordionState(isActive: boolean): void {\n if (isActive) {\n this.classList.toggle(this.activeClassName);\n this.accordionIcon?.classList.add(this.accordionIcons.iconRemove);\n } else {\n this.accordionIcon?.classList.add(this.accordionIcons.iconAdd);\n }\n }\n}\n","import TKCustomElementFactory from '@tk/utilities/tk.custom.element.factory';\r\n\r\nexport default class TKCustomNav extends TKCustomElementFactory {\r\n navigationWrapper?: HTMLElement;\r\n wrapper?: HTMLElement;\r\n openButton?: HTMLElement;\r\n closeButton?: HTMLElement;\r\n\r\n sidebarToggle?: HTMLButtonElement;\r\n sidebarToggleSelector: string;\r\n sidebarToggleCss:string;\r\n\r\n desktopView?: string;\r\n mobileView?: string;\r\n\r\n isMobile: boolean;\r\n desktopMinWidth: number;\r\n animationClassAdded : boolean = false;\r\n activeNavItemClass : string = 'tk-navigation__item--active';\r\n startNavItemUrl : string = 'start';\r\n\r\n constructor() {\r\n super();\r\n\r\n this.navigationWrapper = document.querySelector('[data-tk-nav-wrapper]') || undefined;\r\n this.wrapper = this.querySelector('[data-tk-wrapper]') || undefined;\r\n this.openButton = document.querySelector(`[data-tk-nav-open=\"${this.id}\"]`) || undefined;\r\n this.closeButton = document.querySelector(`[data-tk-nav-close=\"${this.id}\"]`) || undefined;\r\n\r\n this.sidebarToggleSelector = 'data-tk-nav-sidebar';\r\n this.sidebarToggleCss = 'tk-navigation--sidebar-visible';\r\n this.sidebarToggle = this.querySelector(`[${this.sidebarToggleSelector}]`) || undefined;\r\n\r\n this.desktopMinWidth = Number(this.getAttribute('data-tk-desktop-min-width')) || 1200;\r\n this.isMobile = window.viewport.clientWidth < this.desktopMinWidth;\r\n }\r\n\r\n connectedCallback(): void {\r\n if (!this.sidebarToggle) throw new Error(`TKCustomNav: Sidebar toggle button ${this.sidebarToggleSelector} is missing!`);\r\n\r\n this.setActiveNavElement();\r\n this.registerViewportListener();\r\n this.registerButtonListener();\r\n }\r\n\r\n registerViewportListener(): void {\r\n const onViewportResize = this.handleViewportResize.bind(this);\r\n const onSidebarToggle = this.toggleSidebar.bind(this);\r\n\r\n this.pushListener({ event: 'tk-viewport-resize', element: window.viewport, action: onViewportResize });\r\n this.pushListener({ event: 'click', element: this.sidebarToggle!, action: onSidebarToggle });\r\n }\r\n\r\n toggleSidebar() {\r\n this.classList.toggle(this.sidebarToggleCss);\r\n }\r\n\r\n setActiveNavElement(): void {\r\n const url : URL | undefined = new URL(window.location.href);\r\n if (!url) return;\r\n const path = url.pathname;\r\n\r\n // Dashboard start page\r\n if (path == '/') {\r\n const activeItem = this.navigationWrapper?.querySelector(`[data-tk-nav-url=\"${this.startNavItemUrl}\"]`);\r\n\r\n if (!activeItem) return;\r\n activeItem.classList.add(this.activeNavItemClass);\r\n return;\r\n }\r\n\r\n // Split the path by '/' and remove any empty segments\r\n const segments = path.split('/').filter(segment => segment);\r\n\r\n // Use the second segment (if it exists) as the active selector, removing file extension if present\r\n if (segments.length < 2) return;\r\n const activeSelector = segments[1].split('.')[0];\r\n const activeItem = this.navigationWrapper?.querySelector(`[data-tk-nav-url=\"${activeSelector}\"]`);\r\n\r\n if (!activeItem) return;\r\n activeItem.classList.add(this.activeNavItemClass);\r\n }\r\n\r\n handleViewportResize(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n this.isMobile = customEvent.detail.width < this.desktopMinWidth;\r\n\r\n if (!this.isMobile) {\r\n this.closeNavigation();\r\n }\r\n }\r\n\r\n registerButtonListener(): void {\r\n this.openButton?.addEventListener('click', this.openNavigation.bind(this));\r\n this.closeButton?.addEventListener('click', this.closeNavigation.bind(this));\r\n }\r\n\r\n openNavigation(): void {\r\n if (!this.animationClassAdded) {\r\n this.navigationWrapper?.classList.add('viewport__navigation--animated');\r\n this.animationClassAdded = true;\r\n }\r\n\r\n this.navigationWrapper?.classList.add('viewport__navigation--open');\r\n }\r\n\r\n closeNavigation(): void {\r\n this.navigationWrapper?.classList.remove('viewport__navigation--open');\r\n }\r\n}\r\n"],"names":[],"version":3,"file":"verification.js.map","sourceRoot":"../../../../../../../"}