{"version":3,"file":"js/forms.9eb03a8ae8e224021b77.js","mappings":"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","sources":["webpack://netzkern.am/./src/Feature/Forms/code/Scripts/forms.js"],"sourcesContent":["import(/* webpackChunkName: \"forms\" */ '../Styles/forms.scss');\r\n\r\nawait import(/* webpackChunkName: \"parents\" */ 'Feature/Common/code/Scripts/Common/parents');\r\n\r\nwindow.am = window.am || {};\r\n\r\nwindow.am.forms = new function () {\r\n var that = this;\r\n var infoIconActiveClass = 'active';\r\n const linkButtonDisabledClass = \"link-button--inactive\";\r\n\r\n that.init = function () {\r\n if (!hasForms()) {\r\n return;\r\n }\r\n\r\n initSubmitButton();\r\n initHighlightElementsOnFocus();\r\n setupFormsValidationHandling();\r\n initAccordionCheckboxes();\r\n initLabelInfoIcons();\r\n initLinkedFieldValidationSummary();\r\n window.addEventListener('resizeEnd', that.correctMarginTopForInfoboxes);\r\n };\r\n\r\n function initSubmitButton() {\r\n\r\n var forms = document.querySelectorAll('.am-form form.auto-disable-submitbutton');\r\n\r\n for (let i = 0; i < forms.length; i++) {\r\n let form = forms[i];\r\n\r\n form.addEventListener('submit', function () {\r\n return that.shouldSubmit(form);\r\n });\r\n }\r\n }\r\n\r\n that.shouldSubmit = function (form) {\r\n if (!that.hasSubmitButton(form)) {\r\n return true;\r\n }\r\n\r\n if (that.isSubmitButtonDisabled(form)) {\r\n return false;\r\n }\r\n\r\n if ($(form).valid()) {\r\n that.disableSubmitButton(form);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n that.hasSubmitButton = function(form)\r\n {\r\n let button = form.querySelector(\"[type='submit']\");\r\n\r\n return button != null;\r\n }\r\n\r\n that.isSubmitButtonDisabled = function(form)\r\n {\r\n let button = form.querySelector(\"[type='submit']\");\r\n\r\n if (button == null) {\r\n return false;\r\n }\r\n\r\n return button.classList.contains(linkButtonDisabledClass);\r\n }\r\n\r\n that.disableSubmitButton = function(form)\r\n {\r\n let button = form.querySelector(\"[type='submit']\");\r\n\r\n if (button == null) {\r\n return;\r\n }\r\n\r\n if (button.classList.contains(linkButtonDisabledClass)) {\r\n return;\r\n }\r\n\r\n button.classList.add(linkButtonDisabledClass);\r\n }\r\n\r\n that.enableSubmitButton = function(form)\r\n {\r\n let button = form.querySelector(\"[type='submit']\"); /* can be a input or button */\r\n\r\n if (button == null) {\r\n return;\r\n }\r\n\r\n if (!button.classList.contains(linkButtonDisabledClass)) {\r\n return;\r\n }\r\n\r\n button.classList.remove(linkButtonDisabledClass);\r\n }\r\n\r\n that.initShowHideIbanByParent = function (parentElement, name, changedCb) {\r\n\r\n if (parentElement == null) {\r\n return;\r\n }\r\n\r\n var radioButtons = parentElement.querySelectorAll('input[name=\"' + name + '\"]');\r\n\r\n if (radioButtons == null || radioButtons.length == 0) {\r\n return;\r\n }\r\n\r\n var formField = radioButtons[0].parent('.form-field');\r\n\r\n if (formField == null) {\r\n return;\r\n }\r\n\r\n var targetElement = getElementByElementAttribute(\r\n formField, 'data-toggle-visibility-selector');\r\n\r\n if (targetElement == null) {\r\n return;\r\n }\r\n\r\n var hideClass = 'd-none';\r\n var noMarginBottomClass = 'mb-0';\r\n\r\n for (var i = 0; i < radioButtons.length; i++) {\r\n var button = radioButtons[i];\r\n\r\n button.addEventListener('change', function (e) {\r\n\r\n if (changedCb) {\r\n changedCb(this, targetElement);\r\n }\r\n\r\n if (this.value === 'true') {\r\n targetElement.classList.remove(hideClass);\r\n formField.classList.remove(noMarginBottomClass);\r\n }\r\n else if (this.value === 'false') {\r\n targetElement.classList.add(hideClass);\r\n formField.classList.add(noMarginBottomClass);\r\n }\r\n });\r\n }\r\n }\r\n\r\n that.initShowHideElementByParent = function (parentElement, name, valueForHide, valueForShow, changedCb) {\r\n\r\n if (parentElement == null) {\r\n return;\r\n }\r\n\r\n var radioButtons = parentElement.querySelectorAll('input[name=\"' + name + '\"]');\r\n\r\n if (radioButtons == null || radioButtons.length == 0) {\r\n return;\r\n }\r\n\r\n var formField = radioButtons[0].parent('.form-field');\r\n\r\n if (formField == null) {\r\n return;\r\n }\r\n\r\n var targetElement = getElementByElementAttribute(\r\n formField, 'data-toggle-visibility-selector');\r\n\r\n if (targetElement == null) {\r\n return;\r\n }\r\n\r\n var hideClass = 'd-none';\r\n var noMarginBottomClass = 'mb-0';\r\n\r\n for (var i = 0; i < radioButtons.length; i++) {\r\n var button = radioButtons[i];\r\n\r\n button.addEventListener('change', function (e) {\r\n\r\n if (changedCb) {\r\n changedCb(this, targetElement);\r\n }\r\n\r\n if (this.value === valueForShow) {\r\n targetElement.classList.remove(hideClass);\r\n formField.classList.remove(noMarginBottomClass);\r\n }\r\n else if (this.value === valueForHide) {\r\n targetElement.classList.add(hideClass);\r\n formField.classList.add(noMarginBottomClass);\r\n }\r\n });\r\n }\r\n }\r\n\r\n that.initShowHideElementsByParent = function (parentElement, name, valueForHide, valueForShow, changedCb, cbInstance) {\r\n\r\n if (parentElement == null) {\r\n return;\r\n }\r\n\r\n var radioButtons = parentElement.querySelectorAll('input[name=\"' + name + '\"]');\r\n\r\n if (radioButtons == null || radioButtons.length == 0) {\r\n return;\r\n }\r\n\r\n var formField = radioButtons[0].parent('.form-field');\r\n\r\n if (formField == null) {\r\n return;\r\n }\r\n\r\n var targetReferences = formField.getAttribute('data-toggle-visibility-selector');\r\n if (!targetReferences) {\r\n return;\r\n }\r\n targetReferences = targetReferences.split(','); \r\n\r\n var hideClass = 'd-none';\r\n var noMarginBottomClass = 'mb-0';\r\n\r\n for (var i = 0; i < radioButtons.length; i++) {\r\n var button = radioButtons[i];\r\n\r\n button.addEventListener('change', function (e) {\r\n\r\n var those = e.target;\r\n targetReferences.forEach(function (reference) {\r\n reference = reference.trim().slice(1);\r\n var targetElement = document.getElementById(reference);\r\n\r\n if (targetElement == null) {\r\n return;\r\n }\r\n\r\n if (changedCb) {\r\n changedCb.call(cbInstance, those, targetElement);\r\n }\r\n\r\n if (those.value === valueForShow) {\r\n targetElement.classList.remove(hideClass);\r\n formField.classList.remove(noMarginBottomClass);\r\n }\r\n else if (those.value === valueForHide) {\r\n targetElement.classList.add(hideClass);\r\n formField.classList.add(noMarginBottomClass);\r\n }\r\n });\r\n\r\n\r\n \r\n });\r\n }\r\n }\r\n\r\n that.updateEventListenerForIbanFormField = function (ibanFieldWithVariousValidationMessage) {\r\n if (ibanFieldWithVariousValidationMessage && ibanFieldWithVariousValidationMessage.classList.contains('validation-service-error')) {\r\n var ibanFieldInputField = ibanFieldWithVariousValidationMessage.querySelector('input#Iban');\r\n if (ibanFieldInputField) {\r\n ibanFieldInputField.addEventListener('input', function (element) {\r\n //if there was a backend iban error, remove field error on filling in the iban field and replace the service error message with defaut one\r\n ibanFieldWithVariousValidationMessage.classList.remove('has-errors');\r\n ibanFieldWithVariousValidationMessage.classList.add('no-errors');\r\n ibanFieldWithVariousValidationMessage.classList.remove('validation-service-error');\r\n let fieldNotificationContainer = ibanFieldWithVariousValidationMessage.querySelector('.error.notification-container');\r\n fieldNotificationContainer.querySelector('div.message').querySelector('p').innerHTML = ibanFieldInputField.getAttribute('data-alt-validation-message');\r\n\r\n window.am.iban.initIbanFormat(ibanFieldInputField);\r\n });\r\n }\r\n } \r\n }\r\n\r\n that.initializeForm = function ($form) {\r\n if (!$.validator) {\r\n console.warn('Missing \"$.validator\".Can\\'t setup custom form validation handling.');\r\n\r\n return;\r\n }\r\n /* init validator */\r\n try {\r\n $.validator.unobtrusive.parse($form); \r\n } catch (error) {\r\n console.warn(\"$.validator.unobtrusive.parse error: \" + error);\r\n return;\r\n }\r\n \r\n\r\n /* get current validator configuration */\r\n var validator = $form.data(\"validator\");\r\n\r\n var ignoreSettings = validator.settings.ignore;\r\n\r\n if (ignoreSettings != '') {\r\n ignoreSettings += \", \";\r\n }\r\n\r\n ignoreSettings += '.ignore-validation';\r\n\r\n validator.settings.ignore = ignoreSettings;\r\n }\r\n\r\n function getElementByElementAttribute(element, attr) {\r\n\r\n if (element == null || (attr == null || attr == '')) {\r\n return null;\r\n }\r\n\r\n var targetSelector = element.getAttribute(attr);\r\n\r\n if (!targetSelector || targetSelector == '') {\r\n return null;\r\n }\r\n\r\n var targetElement = document.querySelector(targetSelector);\r\n\r\n return targetElement;\r\n }\r\n\r\n function initLinkedFieldValidationSummary() {\r\n var errorContainer = document.querySelector('.notification-container');\r\n\r\n if (errorContainer == null) {\r\n return;\r\n }\r\n\r\n var errorLinkedFields = errorContainer.querySelectorAll('.validation-summary-errors li a');\r\n\r\n for (let i = 0; i < errorLinkedFields.length; i++) {\r\n let linkedField = errorLinkedFields[i];\r\n\r\n linkedField.addEventListener('click', function (e) {\r\n var url = this.getAttribute('href');\r\n\r\n if (!url) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n\r\n if (document.querySelector(url) != null) {\r\n return;\r\n }\r\n\r\n var nameTarget = url.substring(1);\r\n\r\n var targetElement = document.querySelector('[name=\"' + nameTarget + '\"]');\r\n\r\n if (targetElement == null) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n var y = targetElement.getBoundingClientRect().top + window.scrollY;\r\n\r\n window.scrollTo(0, y);\r\n targetElement.focus();\r\n });\r\n }\r\n };\r\n\r\n function initAccordionCheckboxes() {\r\n var cbWithAdditionalText = document.querySelectorAll(\r\n '.am-form .checkbox a[data-additional-text]');\r\n\r\n for (var j = 0; j < cbWithAdditionalText.length; j++) {\r\n var checkBox = cbWithAdditionalText[j];\r\n\r\n checkBox.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n that.toggleAdditionalText(this);\r\n });\r\n }\r\n }\r\n\r\n that.toggleAdditionalText = function (element) {\r\n var formField = getFormField(element);\r\n\r\n if (!formField) {\r\n return;\r\n }\r\n\r\n var additionalText = formField.querySelector('.additional-text');\r\n\r\n if (additionalText != null && additionalText != undefined) {\r\n if (additionalText.classList.contains('show')) {\r\n additionalText.classList.remove('show');\r\n $(additionalText).stop().slideUp();\r\n }\r\n else {\r\n additionalText.classList.add('show');\r\n $(additionalText).stop().slideDown();\r\n }\r\n }\r\n }\r\n\r\n function initLabelInfoIcons() {\r\n var infoIcons = document.querySelectorAll(\r\n '.am-form .form-field .info-icon-button');\r\n\r\n for (var j = 0; j < infoIcons.length; j++) {\r\n var icon = infoIcons[j];\r\n\r\n icon.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n that.toggleInfoBox(this);\r\n });\r\n }\r\n }\r\n\r\n that.toggleInfoBox = function (iconElement) {\r\n var formField = getFormField(iconElement);\r\n\r\n if (!formField) {\r\n return;\r\n }\r\n\r\n var infoBox = formField.querySelector('.notification-container.field-info');\r\n\r\n if (!infoBox) {\r\n return;\r\n }\r\n\r\n var wasActive = infoBox.classList.contains(infoIconActiveClass);\r\n var formfields = formField.parent().querySelectorAll('.form-field');\r\n\r\n iconElement.classList.toggle(infoIconActiveClass);\r\n infoBox.classList.toggle(infoIconActiveClass);\r\n\r\n if (wasActive) {\r\n\r\n for (var i = 0; i < formfields.length; i++) {\r\n if (formfields[i] != formField) {\r\n formfields[i].style.marginTop = \"\";\r\n }\r\n }\r\n }\r\n else {\r\n var elementRect = iconElement.getBoundingClientRect();\r\n that.setMarginTopForInfobox(formField, formfields, elementRect);\r\n that.setMarginLeftForInfobox(iconElement, infoBox);\r\n }\r\n }\r\n\r\n that.setMarginTopForInfobox = function (infoBoxFormField, formfields, elementRect) {\r\n\r\n for (let i = 0; i < formfields.length; i++) {\r\n let formField = formfields[i];\r\n\r\n if (formField == infoBoxFormField) {\r\n continue;\r\n }\r\n\r\n formField.style.marginTop = \"\";\r\n var formFieldY = formField.getBoundingClientRect().top;\r\n\r\n if (infoBoxFormField.getBoundingClientRect().top != formFieldY) {\r\n continue;\r\n }\r\n\r\n formField.style.marginTop = parseFloat(elementRect.top - formFieldY) + \"px\";\r\n }\r\n }\r\n\r\n that.setMarginLeftForInfobox = function (activeInfoIcon, infoBox) {\r\n var message = infoBox.querySelector('.message');\r\n var messageX = message.getBoundingClientRect().left;\r\n /* Get Icon position instead of icon-button (wrapper) */\r\n var iconX = activeInfoIcon.querySelector('.info-icon').getBoundingClientRect().left;\r\n\r\n $(message).css({ \"--left\": parseInt(iconX) - parseInt(messageX) + 3 + \"px\" });\r\n }\r\n\r\n that.correctMarginTopForInfoboxes = function () {\r\n var fieldInfos = document.querySelectorAll(\r\n '.am-form .form-field .notification-container.field-info');\r\n\r\n for (let j = 0; j < fieldInfos.length; j++) {\r\n let fieldInfo = fieldInfos[j];\r\n let formField = getFormField(fieldInfo);\r\n\r\n if (!fieldInfo.classList.contains('active')) {\r\n continue;\r\n }\r\n\r\n let iconElement = formField.querySelector('.info-icon-button');\r\n\r\n if (!iconElement) {\r\n continue;\r\n }\r\n\r\n let row = formField.parent();\r\n let formfields = row.querySelectorAll('.form-field');\r\n\r\n that.setMarginTopForInfobox(\r\n formField, formfields, iconElement.getBoundingClientRect());\r\n }\r\n }\r\n\r\n /*\r\n * If you are here maybe you can check this issue if this is resolved now:\r\n * https://github.com/jquery-validation/jquery-validation/issues/2094\r\n * Aria-DescribedBy with the error id from the field is present even the field is valid.\r\n */\r\n function setupFormsValidationHandling() {\r\n if (!$.validator) {\r\n console.warn('Missing \"$.validator\".Can\\'t setup custom form validation handling.');\r\n\r\n return;\r\n }\r\n\r\n // Resetting from for utilizing\r\n $('.am-form form').each(function() {\r\n $(this).removeData(\"unobtrusiveValidation\").removeData(\"validator\");\r\n });\r\n\r\n var settings = {\r\n highlight: function (element, errorClass, validClass) {\r\n var fieldElement = getFormField(element);\r\n\r\n if (fieldElement == null) {\r\n element.classList.add('has-errors');\r\n element.classList.remove('no-errors');\r\n return;\r\n }\r\n\r\n var form = element.parent('.am-form');\r\n\r\n fieldElement.classList.add('has-errors');\r\n fieldElement.classList.remove('no-errors');\r\n\r\n var activeInfoIcon = fieldElement.querySelector('.info-icon.active');\r\n\r\n if (activeInfoIcon != null && activeInfoIcon != undefined) {\r\n that.toggleInfoBox(activeInfoIcon);\r\n }\r\n\r\n window.setTimeout(function () {\r\n if (window.am.sync) {\r\n window.am.sync.adjustElements(form);\r\n }\r\n }, 50);\r\n },\r\n unhighlight: function (element, errorClass, validClass) {\r\n var fieldElement = getFormField(element);\r\n\r\n if (fieldElement == null) {\r\n element.classList.add('no-errors');\r\n element.classList.remove('has-errors');\r\n return;\r\n }\r\n\r\n var form = element.parent('.am-form');\r\n\r\n //fix for special case, if IBAN has two different validation- messages: client and cervice-failed validation \r\n //(the last one should show an error even, if client validation: valid)\r\n if (!fieldElement.classList.contains('iban-various-validation')) {\r\n \r\n fieldElement.classList.add('no-errors');\r\n fieldElement.classList.remove('has-errors');\r\n }\r\n else if (!fieldElement.classList.contains('validation-service-error')){\r\n fieldElement.classList.add('no-errors');\r\n fieldElement.classList.remove('has-errors');\r\n }\r\n\r\n window.setTimeout(function () {\r\n if (window.am.sync) {\r\n window.am.sync.adjustElements(form);\r\n }\r\n }, 50);\r\n }\r\n };\r\n\r\n $.validator.setDefaults(settings);\r\n\r\n $('.am-form form').each(function() {\r\n var $form = $(this);\r\n\r\n if (!that.shouldValidate($form)) {\r\n return true;\r\n }\r\n\r\n that.initializeForm($form);\r\n });\r\n }\r\n\r\n that.shouldValidate = function (element) {\r\n var $el = null;\r\n if (element instanceof jQuery) {\r\n $el = element;\r\n }\r\n else {\r\n $el = $(element);\r\n }\r\n\r\n if ($el == null) {\r\n return false;\r\n }\r\n\r\n var $form = $el.closest('form');\r\n\r\n if ($form == null) {\r\n return false;\r\n }\r\n\r\n /* No elements with validation are present so validator.settings will be null.\r\n * See https://stackoverflow.com/a/24593702/10236859\r\n * */\r\n return !($form.has('[data-val=true]').length == 0);\r\n }\r\n\r\n that.togglePasswordVisibility = function (element) {\r\n var inputElement = element.previousElementSibling;\r\n\r\n if (element.checked) {\r\n inputElement.type = \"text\";\r\n }\r\n else {\r\n inputElement.type = \"password\";\r\n }\r\n\r\n inputElement.focus();\r\n }\r\n\r\n var selectOnFocusEvent = function (element, removeClass) {\r\n var formField = getFormField(element);\r\n\r\n if (formField == null) {\r\n return;\r\n }\r\n\r\n if (removeClass && removeClass === true) {\r\n formField.classList.remove('form-field--active');\r\n }\r\n else {\r\n formField.classList.add('form-field--active');\r\n }\r\n\r\n var activeInfoButton = formField.querySelector('.info-icon-button.active');\r\n var activeInfoBox = formField.querySelector('.notification-container.field-info.active');\r\n\r\n if (activeInfoButton && activeInfoBox) {\r\n that.setMarginLeftForInfobox(activeInfoButton, activeInfoBox);\r\n }\r\n };\r\n\r\n /**\r\n * Can be used to validate invisible fields and removes the error class if the field is visible.\r\n * (Jquery validate does not remove error class on *invisible* elements if they are valid) :(\r\n * \r\n * @param {any} element to validate.\r\n */\r\n function validateField(element) {\r\n\r\n if ($(element).valid()) {\r\n var form = element.parent('form');\r\n var validator = $(form).data(\"validator\");\r\n var settings = validator.settings;\r\n\r\n settings.unhighlight.call(validator, element, settings.errorClass, settings.validClass);\r\n }\r\n }\r\n\r\n function getFormField(element) {\r\n var formField = element.parent('.field');\r\n\r\n if (!formField) {\r\n formField = element.parent('.form-field');\r\n }\r\n\r\n return formField;\r\n }\r\n\r\n function initHighlightElementsOnFocus() {\r\n var formElements = document.querySelectorAll(\r\n '.am-form select,' +\r\n '.am-form input[type=\"text\"]:not(:disabled):not([readonly]),' +\r\n '.am-form input[type=\"password\"],' +\r\n '.am-form input[type=\"email\"],' +\r\n '.am-form input[type=\"date\"],' +\r\n '.am-form input[type=\"tel\"],' +\r\n '.am-form input[type=\"number\"]');\r\n\r\n for (var i = 0; i < formElements.length; i++) {\r\n var formElement = formElements[i];\r\n\r\n formElement.addEventListener('blur', function (e) { selectOnFocusEvent(this, true); });\r\n formElement.addEventListener('focus', function () { selectOnFocusEvent(this); });\r\n }\r\n }\r\n\r\n function hasForms() {\r\n return document.querySelector('.am-form') != null;\r\n }\r\n};\r\n\r\nwindow.am.forms.init();"],"names":["window","am","forms","that","this","infoIconActiveClass","linkButtonDisabledClass","getElementByElementAttribute","element","attr","targetSelector","getAttribute","document","querySelector","init","querySelectorAll","i","length","form","addEventListener","shouldSubmit","initSubmitButton","formElements","formElement","e","selectOnFocusEvent","initHighlightElementsOnFocus","$","validator","console","warn","each","removeData","settings","highlight","errorClass","validClass","fieldElement","getFormField","classList","add","remove","parent","activeInfoIcon","undefined","toggleInfoBox","setTimeout","sync","adjustElements","unhighlight","contains","setDefaults","$form","shouldValidate","initializeForm","setupFormsValidationHandling","cbWithAdditionalText","j","preventDefault","toggleAdditionalText","initAccordionCheckboxes","infoIcons","initLabelInfoIcons","errorContainer","errorLinkedFields","url","stopPropagation","nameTarget","substring","targetElement","y","getBoundingClientRect","top","scrollY","scrollTo","focus","initLinkedFieldValidationSummary","correctMarginTopForInfoboxes","hasSubmitButton","isSubmitButtonDisabled","valid","disableSubmitButton","button","enableSubmitButton","initShowHideIbanByParent","parentElement","name","changedCb","radioButtons","formField","hideClass","noMarginBottomClass","value","initShowHideElementByParent","valueForHide","valueForShow","initShowHideElementsByParent","cbInstance","targetReferences","split","those","target","forEach","reference","trim","slice","getElementById","call","updateEventListenerForIbanFormField","ibanFieldWithVariousValidationMessage","ibanFieldInputField","innerHTML","iban","initIbanFormat","unobtrusive","parse","error","data","ignoreSettings","ignore","additionalText","stop","slideUp","slideDown","iconElement","infoBox","wasActive","formfields","toggle","style","marginTop","elementRect","setMarginTopForInfobox","setMarginLeftForInfobox","infoBoxFormField","formFieldY","parseFloat","message","messageX","left","iconX","css","parseInt","fieldInfos","fieldInfo","$el","jQuery","closest","has","togglePasswordVisibility","inputElement","previousElementSibling","checked","type","removeClass","activeInfoButton","activeInfoBox"],"sourceRoot":""}