{"version":3,"sources":["FloatingLabels/main.js"],"names":["require","handleFocus","e","target","parentNode","classList","add","getAttribute","setAttribute","handleBlur","value","remove","removeAttribute","bindEvents","element","floatField","querySelector","$","on","floatContainers","document","querySelectorAll","i","length","inputElement","define"],"mappings":"AAAAA,WAEA,WAQA,KAAAC,GAAA,SAAAC,GACA,KAAAC,GAAAD,EAAAC,MACAA,GAAAC,WAAAC,UAAAC,IAAA,UACAH,EAAAI,aAAA,qBAEAJ,EAAAK,aAAA,cAAAL,EAAAI,aAAA,sBAKAE,EAAA,SAAAP,GACA,KAAAC,GAAAD,EAAAC,MACAA,GAAAO,OACAP,EAAAC,WAAAC,UAAAM,OAAA,UAEAR,EAAAS,gBAAA,gBAIAC,EAAA,SAAAC,GACA,GAAAC,GAAAD,EAAAE,cAAA,QACAD,KAAAA,EAAAD,EAAAE,cAAA,aACAD,IAAAA,EAAAD,EAAAE,cAAA,WACAD,IAIAE,EAAAF,GAAAG,GAAA,QAAAjB,GACAgB,EAAAF,GAAAG,GAAA,OAAAT,MAKA,WACA,KAAAU,GAAAC,SAAAC,iBAAA,4BAEA,KAAA,GAAAC,GAAA,EAAAA,EAAAH,EAAAI,OAAAD,IAAA,CACA,GAAAR,GAAAK,EAAAG,GAEAE,EAAAV,EAAAE,cAAA,QACAQ,KAAAA,EAAAV,EAAAE,cAAA,aACAQ,IAAAA,EAAAV,EAAAE,cAAA,WACAQ,GAAAA,EAAAd,OACAI,EAAAT,UAAAC,IAAA,UAGAO,EAAAC,SAQAW,OAAA,sBAAA","file":"FloatingLabels.js","sourcesContent":["require([\r\n],\r\n function () {\r\n // Markup, css, and code for the floating-label functionality is taken\r\n // from https://itnext.io/how-to-build-a-floating-label-input-field-f9b21669fe2f\r\n\r\n // The code is adjusted to the needs of this project.\r\n\r\n\r\n // add active class and placeholder \r\n const handleFocus = function(e) {\r\n const target = e.target;\r\n target.parentNode.classList.add('active');\r\n const placeholderText = target.getAttribute('data-placeholder');\r\n if (placeholderText) {\r\n target.setAttribute('placeholder', target.getAttribute('data-placeholder'));\r\n }\r\n };\r\n\r\n // remove active class and placeholder\r\n const handleBlur = function(e) {\r\n const target = e.target;\r\n if (!target.value) {\r\n target.parentNode.classList.remove('active');\r\n }\r\n target.removeAttribute('placeholder');\r\n };\r\n\r\n // register events\r\n const bindEvents = function (element) {\r\n var floatField = element.querySelector('input');\r\n if (!floatField) floatField = element.querySelector('textarea');\r\n if (!floatField) floatField = element.querySelector('select');\r\n if (floatField) {\r\n // changed this to jQuery events, so they are cloned when jQuery clone is used on the elements\r\n //floatField.addEventListener('focus', handleFocus);\r\n //floatField.addEventListener('blur', handleBlur);\r\n $(floatField).on('focus', handleFocus);\r\n $(floatField).on('blur', handleBlur);\r\n }\r\n };\r\n\r\n // init all floating labels\r\n const init = function() {\r\n const floatContainers = document.querySelectorAll('.floating-label-container');\r\n\r\n for (var i = 0; i < floatContainers.length; i++) {\r\n var element = floatContainers[i];\r\n\r\n var inputElement = element.querySelector('input');\r\n if (!inputElement) inputElement = element.querySelector('textarea');\r\n if (!inputElement) inputElement = element.querySelector('select');\r\n if (inputElement && inputElement.value) {\r\n element.classList.add('active');\r\n }\r\n\r\n bindEvents(element);\r\n };\r\n };\r\n\r\n init();\r\n }\r\n);\r\n\ndefine(\"FloatingLabels/main\", function(){});\n\n"]}