{"version":3,"mappings":"AACA,aACAA,aACAC,mBAEA,OACAC,kDACAC,iEAHA,wBAIAC,gEACAC,+CASAC,qBACA,MACA,CACAC,yBACAC,yBACAC,cAJAC,UAKAC,iBACAC,cACAC,8BACA,IACAC,GADAC,qCACAC,iBACA,cACA,yCAGAC,kEACAC,yCAaAC,8BAYAC,iBACA,eACA,oCACA,CACAC,YACAA,eACAA,mBACAC,gBACA,cACAC,SAEAA,IACaC,WAWbC,8BACA,iBACA,kBACA,IACAF,UACA,UACA,QACA,IAEA,cAEAA,UAEAA,kCACAb,sBAeAgB,6CACA,IACAZ,cADAJ,gCAEAiB,KACA,MACA,uCACAC,mCAGA,gBACAC,EAFAnB,0BAGAiB,kBACAT,2CACAA,6BACA,WACAU,EARAlB,0BASAiB,mBACAT,2CACAA,6BAGA,cACAA,wCACAA,8BAIAC,kCAeAW,4BACA,IACAhB,cADAJ,gCAEAiB,KAEA,MACA,uCACAC,mCACAG,4BACAC,4BACA,wBACA,gBACAH,IACAF,kBACAM,mDACA,WACAL,IACAD,mBACAM,uDAIA,CACA,2CACA,gBACAJ,IACAF,kBACAM,uCACA,WACAL,IACAD,mBACAM,yCAQAd,kCAcAe,wBAEA,QADAX,IACAA,wCACAA,eAEA,UAGAY,6BACA,8BAGAC,yBACA,gDAGAC,+BACA,+EACA,6BAKA,sBACAC,wDAEA,YAAoB5B,wBAA2BA,KAC/C,wBACAa,4BACAP,4BACAuB,wCACAzB,8BACAa,oBAEAb,uBACAA,UAGAO,0CACA,WACA,2BACA,8BACAW,8BAEAQ,gCACkB,eAClBZ","names":["configObj","errors","invalidDate","minAgeOverflow","maxAgeOverflow","todayOverflow","config","inputFormat","placeholder","min","e","max","insertMode","onKeyValidation","n","isNaN","o","String","$","this","date","r","map","t","join","prefillYear","setErrorsAdditionalInsurer","a","s","i","setErrors","d","u","document","getParent","isMonthCompleted","getDateArray","getDateCompare","dateMaskInputs","l","exports"],"sources":["src\\assets\\js\\dobValidation.js"],"sourcesContent":["\r\nvar exports = {\r\n configObj: {},\r\n errors: function(minAge) {\r\n var plural = (parseInt(minAge) === 1) ? '' : 's'\r\n return {\r\n invalidDate: 'La fecha introducida no es correcta',\r\n minAgeOverflow: 'El titular tiene que ser mayor de ' + minAge + ' año' + plural,\r\n maxAgeOverflow: 'El asegurado no puede ser mayor de 100 años',\r\n todayOverflow: 'La fecha no puede ser futura',\r\n }\r\n },\r\n\r\n /**\r\n * config\r\n * - returns config obj (Its a function because we need to calculate the max and min dates)\r\n * @return { object } config obj\r\n */\r\n config: function(minYears, maxYears) {\r\n minYears = (minYears) ? minYears : 100 //default\r\n return {\r\n inputFormat: 'dd/mm/yyyy',\r\n placeholder: 'dd/mm/aaaa',\r\n min: this.date(minYears),\r\n max: this.date(maxYears),\r\n insertMode: true,\r\n onKeyValidation: function (a, isValid) {\r\n var isCompleted = !isNaN(this.value.replace(/\\//g, ''))\r\n var add_remove = (isCompleted || isValid) ? 'remove' : 'add'\r\n if (add_remove == 'remove') {\r\n if (this.getAttribute('id') == \"txtDateInput\") {\r\n //document.getElementById(\"error-date1\").innerHTML = \"\";\r\n }\r\n else if (String(this.getAttribute('id')).includes(\"txtCalendarBirthDate\")) {\r\n $('#errorContainer').addClass('hidden');\r\n }\r\n }\r\n //else {\r\n // console.log(this.getAttribute('id'))\r\n // if (this.getAttribute('id') == \"txtDateInput\") {\r\n // document.getElementById(\"error-date1\").innerHTML = \"Por favor, introduce una fecha correcta\";\r\n // }\r\n // else if (String(this.getAttribute('id')).includes(\"txtDate\")) {\r\n // var errorId = String(this.getAttribute('id')).replace(\"txtDate\", \"Additional\");\r\n // document.getElementById(errorId).innerHTML = \"Por favor, introduce una fecha correcta\";\r\n // }\r\n //}\r\n this.classList[add_remove]('error')\r\n },\r\n }\r\n },\r\n\r\n /**\r\n * date\r\n * - return dates for config with format dd/mm/yyyy\r\n * - if the argument years is passed returns date n years previous to now\r\n * @param {number} years\r\n * @return { string } date string\r\n */\r\n date: function(years) {\r\n var d = new Date()\r\n years = (years && !isNaN(years)) ? parseInt(years) : 0\r\n return [\r\n d.getDate(), // d | dd\r\n (d.getMonth() + 1), // m | mm\r\n d.getFullYear() - years // yyyy\r\n ].map(function(inp){\r\n if(inp < 10){\r\n inp = '0' + inp\r\n }\r\n return inp\r\n }).join('/')\r\n },\r\n\r\n /**\r\n * prefillYear\r\n * - custom auto prefill of years on first input of year section\r\n * @param { HTMLElement } input - this input\r\n * @param { KeyboardEvent } ev - event obj\r\n * @param { object } dateArray\r\n * @param { boolean } monthCompleted\r\n */\r\n prefillYear: function(input, ev, dateArray, monthCompleted) {\r\n if(monthCompleted && dateArray[2] === '') {\r\n switch(ev.key) {\r\n case '0': \r\n dateArray[2] = '20';\r\n break;\r\n case '1':\r\n case '2':\r\n //doesnt autoprefill\r\n break;\r\n default:\r\n dateArray[2] = '19';\r\n }\r\n dateArray[2] = (dateArray[2] + 'aaaa').substring(0,4);\r\n input.value = dateArray.join('/')\r\n }\r\n },\r\n\r\n\r\n/**\r\n * setErrors for Additional insureres\r\n * - sets message error text in html element for error\r\n * - 3 types of error: invalid date, min date overflow, max date overflow\r\n * @param { HTMLElement } input - this input\r\n * @param { KeyboardEvent } ev - event obj\r\n * @param { object } dateArray\r\n * @param { boolean } monthCompleted\r\n */\r\n\r\n setErrorsAdditionalInsurer: function (input, ev, dateArray, monthCompleted) {\r\n var minAge = input.inputmask.userOptions.minAge,\r\n errors = this.errors(minAge),\r\n error = \"\" // generic error\r\n if (monthCompleted) {\r\n var datemax = this.getDateCompare(dateArray, ev.key, '0'),\r\n datemin = this.getDateCompare(dateArray, ev.key, '9'),\r\n min = input.inputmask.opts.min.date,\r\n max = input.inputmask.opts.max.date\r\n switch (true) {\r\n case datemax > max:\r\n error = errors.todayOverflow\r\n $('#errorContainer').removeClass('hidden');\r\n $('#errorContainer').text(error);\r\n break;\r\n case datemin < min:\r\n error = errors.maxAgeOverflow\r\n $('#errorContainer').removeClass('hidden');\r\n $('#errorContainer').text(error);\r\n break;\r\n }\r\n if (error.length == 0) {\r\n $('#errorContainer').addClass('hidden');\r\n $('#errorContainer').text(error);\r\n }\r\n }\r\n //adds text to .error-txt if exists\r\n var parent = this.getParent(input, 'form-control')\r\n if (parent) {\r\n \r\n }\r\n },\r\n\r\n /**\r\n * setErrors\r\n * - sets message error text in html element for error\r\n * - 3 types of error: invalid date, min date overflow, max date overflow\r\n * @param { HTMLElement } input - this input\r\n * @param { KeyboardEvent } ev - event obj\r\n * @param { object } dateArray\r\n * @param { boolean } monthCompleted\r\n */\r\n setErrors: function (input, ev, dateArray, monthCompleted) {\r\n var minAge = input.inputmask.userOptions.minAge,\r\n errors = this.errors(minAge),\r\n error = \"\" // generic error\r\n //$('#dobWarning').addClass('hidden');\r\n if (monthCompleted) {\r\n var datemax = this.getDateCompare(dateArray, ev.key, '0'),\r\n datemin = this.getDateCompare(dateArray, ev.key, '9'),\r\n min = input.inputmask.opts.min.date,\r\n max = input.inputmask.opts.max.date\r\n if (input.id == \"txtDateInput\") {\r\n switch (true) {\r\n case datemax > max:\r\n error = errors.todayOverflow\r\n document.getElementById(\"error-date1\").innerHTML = error;\r\n break;\r\n case datemin < min:\r\n error = errors.maxAgeOverflow\r\n document.getElementById(\"error-date1\").innerHTML = error;\r\n break;\r\n }\r\n }\r\n else {\r\n var errorId = input.id.replace(\"txtDate\", \"Additional\");\r\n switch (true) {\r\n case datemax > max:\r\n error = errors.todayOverflow\r\n document.getElementById(errorId).innerHTML = error;\r\n break;\r\n case datemin < min:\r\n error = errors.maxAgeOverflow\r\n document.getElementById(errorId).innerHTML = error;\r\n break;\r\n }\r\n }\r\n \r\n }\r\n\r\n //adds text to .error-txt if exists\r\n var parent = this.getParent(input, 'form-control')\r\n if (parent) {\r\n \r\n //var errortxt = parent.querySelector('.error-txt')\r\n //if(errortxt) {\r\n // errortxt.innerHTML = error\r\n //}\r\n }\r\n },\r\n\r\n /**\r\n * aux functions\r\n */\r\n\r\n getParent: function(input, selector) {\r\n var parent = input\r\n while(parent.parentNode && !parent.classList.contains(selector)) {\r\n parent = parent.parentNode\r\n }\r\n return parent\r\n },\r\n\r\n isMonthCompleted: function(dateArray) {\r\n return dateArray[1] && dateArray[1].length === 2\r\n },\r\n\r\n getDateArray: function(input) {\r\n return input.value.replace(/[a-z]/g, '').split('/')\r\n },\r\n\r\n getDateCompare: function (date, inp, pad) { \r\n date[2] = (date[2].replace(/a/g, '') + inp + Array(4).fill(pad).join('')).substring(0, 4) \r\n return new Date(date[2],date[1]-1,date[0])\r\n },\r\n\r\n}\r\n\r\nfunction maskingDob() {\r\n dateMaskInputs = document.querySelectorAll('[date-mask]')\r\n //applies input mask for every HTML element with the attr 'date-mask'\r\n for (var i = 0; i < dateMaskInputs.length; i++) {\r\n var dateMaskInput = dateMaskInputs[i],\r\n minYears = dateMaskInput.getAttribute('max-age'),\r\n maxYears = dateMaskInput.getAttribute('min-age'),\r\n config = exports.configObj = exports.config(minYears, maxYears),\r\n imask = new Inputmask('datetime', config),\r\n ignorableKeys = imask.opts.ignorables\r\n\r\n imask.userOptions.minAge = maxYears\r\n imask.mask(dateMaskInput);\r\n\r\n //error functionality on keydown\r\n dateMaskInput.addEventListener('keypress', function (ev) {\r\n var input = this\r\n if (ignorableKeys.indexOf(ev.keyCode) < 0) {\r\n var dateArray = exports.getDateArray(input),\r\n monthCompleted = exports.isMonthCompleted(dateArray)\r\n //exports.prefillYear(input, ev, dateArray, monthCompleted)\r\n exports.setErrors(input, ev, dateArray, monthCompleted)\r\n } else if (ev.keyCode === 8) { // backspace\r\n input.classList.remove('error')\r\n }\r\n })\r\n }\r\n \r\n}\r\n\r\n"],"sourceRoot":"webpack:///","file":"dobValidation.1c813a0aa0112c4d.js"}