1class InputHandler extends elementorModules.frontend.handlers.Base { 2 3 getDefaultSettings() { 4 return { 5 selectors: { 6 calInput: '.elementor-field-textual', 7 calDiv: '.elementor-field-type-text', 8 form: '.elementor-form' 9 }, 10 }; 11 } 12 13 getDefaultElements() { 14 const selectors = this.getSettings('selectors'); 15 return { 16 $calInput: this.$element.find(selectors.calInput), 17 $calDiv: this.$element.find(selectors.calDiv), 18 $form: this.$element.find(selectors.form), 19 }; 20 } 21 22 bindEvents() { 23 let elmWrapper = this.elements.$calDiv; 24 let eleInput = jQuery(elmWrapper).find('input'); 25 26 if (eleInput.length === 0) return; 27 28 eleInput.each((index, input) => { 29 let maskClass, maskFormat, maskPrefix,maskDecimalPlaces,maskTimeMaskFormat,phoneFormat,creditCardOptions,maskAutoPlaceholder,brazilianFormats; 30 31 input.classList.forEach(className => { 32 if (className.includes('mask_control_@')) maskClass = className; 33 if (className.includes('money_mask_format_@')) maskFormat = className; 34 if (className.includes('mask_prefix_@')) maskPrefix = className; 35 if (className.includes('mask_decimal_places_@')) maskDecimalPlaces = className; 36 if (className.includes('mask_time_mask_format_@')) maskTimeMaskFormat = className; 37 if (className.includes('fme_phone_format_@')) phoneFormat = className; 38 if (className.includes('credit_card_options_@')) creditCardOptions = className; 39 if (className.includes('mask_auto_placeholder_@')) maskAutoPlaceholder = className; 40 if (className.includes('fme_brazilian_formats_@')) brazilianFormats = className; 41 }); 42 43 if (maskClass) maskClass = maskClass.split('@'); 44 if (maskFormat) maskFormat = maskFormat.split('@'); 45 if (maskPrefix) maskPrefix = maskPrefix.split('@'); 46 if (maskDecimalPlaces) maskDecimalPlaces = maskDecimalPlaces.split('@'); 47 if (maskTimeMaskFormat) maskTimeMaskFormat = maskTimeMaskFormat.split('@'); 48 if (phoneFormat) phoneFormat = phoneFormat.split('@'); 49 if (creditCardOptions) creditCardOptions = creditCardOptions.split('@'); 50 if (maskAutoPlaceholder) maskAutoPlaceholder = maskAutoPlaceholder.split('@'); 51 if (brazilianFormats) brazilianFormats = brazilianFormats.split('@'); 52 53 if (!jQuery(input).data('mask')) { 54 input.setAttribute('data-mask', maskClass?.[1] || ''); 55 } 56 57 input.setAttribute('data-moneymask-format', maskFormat?.[1] || 'dot'); 58 input.setAttribute('data-moneymask-prefix', maskPrefix?.[1] || ''); 59 input.setAttribute('data-decimal-places', maskDecimalPlaces?.[1] || '2'); 60 input.setAttribute('data-timemask-format', maskTimeMaskFormat?.[1] || 'one'); 61 input.setAttribute('data-phone-format', phoneFormat?.[1] || 'phone_usa'); 62 input.setAttribute('data-creditcard-options', creditCardOptions?.[1] || 'hyphen'); 63 input.setAttribute('data-auto-placeholder', maskAutoPlaceholder?.[1] || ''); 64 input.setAttribute('data-brazilian-formats', brazilianFormats?.[1] || ''); 65 }); 66 67 this.applyMasks(); 68 } 69 70 applyMasks() { 71 const masks = { 72 "ev-phone": "phone", 73 "ev-tel": "####-####", 74 "ev-tel-ddd": "(##) ####-####", 75 "ev-tel-ddd9": "(##) #####-####", 76 "ev-tel-us": "(###) ###-####", 77 "ev-cpf": "###.###.###-##", 78 "ev-cnpj": "##.###.###/####-##", 79 "ev-money": "###.###.###.###.###,##", 80 "ev-ccard": "####-####-####-####", 81 "ev-ccard-valid": "##/##", 82 "ev-cep": "#####-###", 83 "ev-time": "##:##:##", 84 "ev-date": "##/##/####", 85 "ev-date_time": "##/##/#### ##:##", 86 "ev-ip-address": "###.###.###.###", 87 "ev-br_fr": "brazilian_formats", 88 }; 89 90 this.elements.$form.find('input[data-mask]').each(function () { 91 const $input = jQuery(this); 92 const maskKey = jQuery(this)[0].dataset.mask; 93 const timemaskFormat = jQuery(this)[0].dataset.timemaskFormat; 94 const phoneFormat = jQuery(this)[0].dataset.phoneFormat; 95 const creditcardOptions = jQuery(this)[0].dataset.creditcardOptions 96 const autoPlaceholder = jQuery(this)[0].dataset.autoPlaceholder 97 const brazilianFormats = jQuery(this)[0].dataset.brazilianFormats 98 99 if (masks[maskKey]) { 100 if(masks[maskKey] === 'phone'){ 101 $input.attr('inputmode','tel') 102 }else{ 103 $input.attr('inputmode','numeric') 104 } 105 if(masks[maskKey] === 'brazilian_formats'){ 106 switch(brazilianFormats){ 107 case 'fme_cpf': 108 $input.addClass('mask-cpf'); 109 $input.after('<div class="mask-error error-cpf"></div>'); 110 if(autoPlaceholder === 'yes'){ 111 $input.attr('placeholder','XXX.XXX.XXX-XX') 112 } 113 break; 114 case 'fme_cnpj': 115 $input.addClass('mask-cnpj'); 116 $input.after('<div class="mask-error error-cnpj"></div>'); 117 if(autoPlaceholder === 'yes'){ 118 $input.attr('placeholder','XX.XXX.XXX/XXXX-XX') 119 } 120 break; 121 case 'fme_cep': 122 $input.addClass('mask-cep'); 123 $input.after('<div class="mask-error error-cep"></div>'); 124 if(autoPlaceholder === 'yes'){ 125 $input.attr('placeholder','XXXXX-XXX') 126 } 127 break; 128 default: 129 $input.addClass('mask-cpf'); 130 $input.after('<div class="mask-error error-cpf"></div>'); 131 if(autoPlaceholder === 'yes'){ 132 $input.attr('placeholder','XXX.XXX.XXX-XX') 133 } 134 } 135 } 136 if (masks[maskKey] === "##/##/####") { 137 $input.addClass('mask-dmy'); 138 $input.after('<div class="mask-error error-dmy"></div>'); 139 if(autoPlaceholder === 'yes'){ 140 $input.attr('placeholder','XX/XX/XXXX') 141 } 142 } 143 if (masks[maskKey] === "##.###.###/####-##") { 144 $input.addClass('mask-cnpj'); 145 $input.after('<div class="mask-error error-cnpj"></div>'); 146 if(autoPlaceholder === 'yes'){ 147 $input.attr('placeholder','XX.XXX.XXX/XXXX-XX') 148 } 149 } 150 if (masks[maskKey] === "###.###.###-##") { 151 $input.addClass('mask-cpf'); 152 $input.after('<div class="mask-error error-cpf"></div>'); 153 if(autoPlaceholder === 'yes'){ 154 $input.attr('placeholder','XXX.XXX.XXX-XX') 155 } 156 } 157 if (masks[maskKey] === "#####-###") { 158 $input.addClass('mask-cep'); 159 $input.after('<div class="mask-error error-cep"></div>'); 160 if(autoPlaceholder === 'yes'){ 161 $input.attr('placeholder','XXXXX-XXX') 162 } 163 } 164 if (masks[maskKey] === "(###) ###-####") { 165 $input.addClass('mask-phus'); 166 $input.after('<div class="mask-error error-phus"></div>'); 167 if(autoPlaceholder === 'yes'){ 168 $input.attr('placeholder','(XXX) XXX-XXXX') 169 } 170 } 171 if (masks[maskKey] === "phone") { 172 switch(phoneFormat){ 173 case 'phone_usa': 174 $input.addClass('mask-phus'); 175 $input.after('<div class="mask-error error-phus"></div>'); 176 if(autoPlaceholder === 'yes'){ 177 $input.attr('placeholder','(XXX) XXX-XXXX') 178 } 179 break; 180 case 'phone_d8': 181 $input.addClass('mask-ph8'); 182 $input.after('<div class="mask-error error-ph8"></div>'); 183 if(autoPlaceholder === 'yes'){ 184 $input.attr('placeholder','XXXX-XXXX') 185 } 186 break; 187 case 'phone_ddd8': 188 $input.addClass('mask-ddd8'); 189 $input.after('<div class="mask-error error-ddd8"></div>'); 190 if(autoPlaceholder === 'yes'){ 191 $input.attr('placeholder','(XX) XXXX-XXXX') 192 } 193 break; 194 case 'phone_ddd9': 195 $input.addClass('mask-ddd9'); 196 $input.after('<div class="mask-error error-ddd9"></div>'); 197 if(autoPlaceholder === 'yes'){ 198 $input.attr('placeholder','(XX) XXXXX-XXXX') 199 } 200 break; 201 default: 202 $input.addClass('mask-ph8'); 203 $input.after('<div class="mask-error error-ph8"></div>'); 204 if(autoPlaceholder === 'yes'){ 205 $input.attr('placeholder','XXXX-XXXX') 206 } 207 break 208 } 209 } 210 if (masks[maskKey] === "####-####") { 211 $input.addClass('mask-ph8'); 212 $input.after('<div class="mask-error error-ph8"></div>'); 213 if(autoPlaceholder === 'yes'){ 214 $input.attr('placeholder','XXXX-XXXX') 215 } 216 } 217 if (masks[maskKey] === "(##) ####-####") { 218 $input.addClass('mask-ddd8'); 219 $input.after('<div class="mask-error error-ddd8"></div>'); 220 if(autoPlaceholder === 'yes'){ 221 $input.attr('placeholder','(XX) XXXX-XXXX') 222 } 223 } 224 if (masks[maskKey] === "(##) #####-####") { 225 $input.addClass('mask-ddd9'); 226 $input.after('<div class="mask-error error-ddd9"></div>'); 227 if(autoPlaceholder === 'yes'){ 228 $input.attr('placeholder','(XX) XXXXX-XXXX') 229 } 230 } 231 if (masks[maskKey] === "##/##/####") { 232 $input.addClass('mask-dmy'); 233 $input.after('<div class="mask-error error-dmy"></div>'); 234 if(autoPlaceholder === 'yes'){ 235 $input.attr('placeholder','XX/XX/XXXX') 236 } 237 } 238 if (masks[maskKey] === "##:##:##") { 239 switch(timemaskFormat){ 240 case 'one': 241 $input.addClass('mask-hm'); 242 $input.after('<div class="mask-error error-hm"></div>'); 243 if(autoPlaceholder === 'yes'){ 244 $input.attr('placeholder','XX:XX') 245 } 246 break; 247 case 'two': 248 $input.addClass('mask-hms'); 249 $input.after('<div class="mask-error error-hms"></div>'); 250 if(autoPlaceholder === 'yes'){ 251 $input.attr('placeholder','XX:XX:XX') 252 } 253 break; 254 case 'three': 255 $input.addClass('mask-dmy'); 256 $input.after('<div class="mask-error error-dmy"></div>'); 257 if(autoPlaceholder === 'yes'){ 258 $input.attr('placeholder','XX/XX/XXXX') 259 } 260 break; 261 case 'four': 262 $input.addClass('mask-mdy'); 263 $input.after('<div class="mask-error error-mdy"></div>'); 264 if(autoPlaceholder === 'yes'){ 265 $input.attr('placeholder','XX/XX/XXXX') 266 } 267 break; 268 case 'five': 269 $input.addClass('mask-dmyhm'); 270 $input.after('<div class="mask-error error-dmyhm"></div>'); 271 if(autoPlaceholder === 'yes'){ 272 $input.attr('placeholder','XX/XX/XXXX XX:XX') 273 } 274 break; 275 case 'six': 276 $input.addClass('mask-mdyhm'); 277 $input.after('<div class="mask-error error-mdyhm"></div>'); 278 if(autoPlaceholder === 'yes'){ 279 $input.attr('placeholder','XX/XX/XXXX XX:XX') 280 } 281 break; 282 case 'seven': 283 $input.addClass('mask-my'); 284 $input.after('<div class="mask-error error-my"></div>'); 285 if(autoPlaceholder === 'yes'){ 286 $input.attr('placeholder','XX/XXXX') 287 } 288 break; 289 default: 290 $input.addClass('mask-hm'); 291 $input.after('<div class="mask-error error-hm"></div>'); 292 if(autoPlaceholder === 'yes'){ 293 $input.attr('placeholder','XX:XX') 294 } 295 } 296 } 297 if (masks[maskKey] === "##:##") { 298 $input.addClass('mask-hm'); 299 $input.after('<div class="mask-error error-hm"></div>'); 300 if(autoPlaceholder === 'yes'){ 301 $input.attr('placeholder','XX:XX') 302 } 303 } 304 if (masks[maskKey] === "##/##/#### ##:##") { 305 $input.addClass('mask-dmyhm'); 306 $input.after('<div class="mask-error error-dmyhm"></div>'); 307 if(autoPlaceholder === 'yes'){ 308 $input.attr('placeholder','XX/XX/XXXX XX:XX') 309 } 310 } 311 if (masks[maskKey] === "####-####-####-####") { 312 switch(creditcardOptions){ 313 case 'space': 314 $input.addClass('mask-ccs'); 315 $input.after('<div class="mask-error error-ccs"></div>'); 316 const $errorDivCCS = $input.next('.error-ccs'); 317 if ($errorDivCCS.next('.card-logo').length === 0) { 318 $errorDivCCS.after('<img id="card-logo" class="card-logo" src="" alt="Card Logo">'); 319 } 320 if (autoPlaceholder === 'yes') { 321 $input.attr('placeholder', 'XXXX XXXX XXXX XXXX'); 322 } 323 break; 324 case 'hyphen': 325 $input.addClass('mask-cch'); 326
326 $input.after('<div class="mask-error error-cch"></div>'); 327 const $errorDiv = $input.next('.error-cch'); 328 if ($errorDiv.next('#card-logo').length === 0) { 329 $errorDiv.after('<img id="card-logo" class="card-logo" src="" alt="Card Logo">'); 330 } 331 if (autoPlaceholder === 'yes') { 332 $input.attr('placeholder', 'XXXX-XXXX-XXXX-XXXX'); 333 } 334 break; 335 case 'credit_card_date': 336 $input.addClass('mask-ccmy'); 337 $input.after('<div class="mask-error error-ccmy"></div>'); 338 if(autoPlaceholder === 'yes'){ 339 $input.attr('placeholder','XX/XX') 340 } 341 break; 342 case 'credit_card_expiry_date': 343 $input.addClass('mask-ccmyy'); 344 $input.after('<div class="mask-error error-ccmyy"></div>'); 345 if(autoPlaceholder === 'yes'){ 346 $input.attr('placeholder','XX/XXXX') 347 } 348 break; 349 default: 350 $input.addClass('mask-ccs'); 351 $input.after('<div class="mask-error error-ccs"></div>'); 352 jQuery('.mask-error').after('<img id="card-logo" class="card-logo" src="" alt="Card Logo">') 353 if(autoPlaceholder === 'yes'){ 354 $input.attr('placeholder','XXXX XXXX XXXX XXXX') 355 } 356 } 357 } 358 if (masks[maskKey] === "##/##") { 359 $input.addClass('mask-ccmy'); 360 $input.after('<div class="mask-error error-ccmy"></div>'); 361 if(autoPlaceholder === 'yes'){ 362 $input.attr('placeholder','XX/XX') 363 } 364 } 365 if (masks[maskKey] === "##/####") { 366 $input.addClass('mask-my'); 367 $input.after('<div class="mask-error error-my"></div>'); 368 if(autoPlaceholder === 'yes'){ 369 $input.attr('placeholder','XX/XXXX') 370 } 371 } 372 if (masks[maskKey] === "###.###.###.###") { 373 $input.addClass('mask-ipv4'); 374 $input.after('<div class="mask-error error-ipv4"></div>'); 375 if(autoPlaceholder === 'yes'){ 376 $input.attr('placeholder','XXX.XXX.XXX.XXX') 377 } 378 } 379 if (masks[maskKey] === "###.###.###.###.###,##") { 380 $input.addClass('mask-moneyc'); 381 $input.after('<div class="mask-error error-moneyc"></div>'); 382 if(autoPlaceholder === 'yes'){ 383 let moneyPrefix = ($input.data('moneymask-prefix') !== "") ? $input.data('moneymask-prefix'): '$'; 384 let format = ($input.data('moneymask-format') === 'dot' ? ',':'.') 385 $input.attr('placeholder',moneyPrefix+`0${format}00`) 386 } 387 } 388 389 if ($input.hasClass('mask-cnpj')) { 390 $input.attr('inputmode', 'text'); 391 } 392 } 393 }); 394 } 395} 396 397jQuery(window).on('elementor/frontend/init', () => { 398 const calHandler = ($element) => { 399 elementorFrontend.elementsHandler.addHandler(InputHandler, { 400 $element, 401 }); 402 }; 403 404 elementorFrontend.hooks.addAction('frontend/element_ready/form.default', calHandler); 405}); 406 407 408 409
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.