/home/techb158/l2hypotheques.com/wp-content/plugins/calculator-builder/assets/js
NameSizeModeActions
admin-builder.js316080644editdlrm
admin-navigation.js29040644editdlrm
admin-script.js70750644editdlrm
calcBuilder.js360500644editdlrm
calchub-min.js46940644editdlrm
calchub.js84970644editdlrm
index.php260644editdlrm
Edit: /home/techb158/l2hypotheques.com/wp-content/plugins/calculator-builder/assets/js/calchub.js (8497B)
/*! ========= INFORMATION ============================ - author: CalcHub - url: https://calchub.xyz - plugin: https://wordpress.org/plugins/calculator-builder/ ==================================================== */ 'use strict'; const CalculatorBuilder = function() { const calc = document.querySelectorAll('.formbox'); calc.forEach((form) => { const rangeFields = form.querySelectorAll('input[type="range"]'); if(rangeFields.length > 0) { rangeFields.forEach((range) => { const parent = range.closest('.formbox__field'); const rangeVal = parent.querySelector('.formbox__field-range-value'); if(rangeVal) { range.oninput = function() { rangeVal.innerHTML = this.value; } } }); } const submitHandlerObject = { handleEvent: calculate, form: form, }; let btn_calc = form.querySelector('.formbox__btn-calc'); let only_click = form.querySelector('.calc-only-click'); if (only_click) { form.querySelectorAll('input, select, button.formbox__btn-calc').forEach((input) => { input.addEventListener('keydown', function(event) { if (event.key === 'Enter' || event.keyCode === 13) { event.preventDefault(); } }); }); if (btn_calc) { btn_calc.addEventListener('click', submitHandlerObject); } } else { form.addEventListener('submit', submitHandlerObject); } const defaultForm = new FormData(form); form.addEventListener('reset', {handleEvent: calcReset, form: form, data: defaultForm}); // let calc_reset = form.querySelector('.calc-reset'); if (calc_reset) { form.addEventListener('change', {handleEvent: hideResult, form: form}); form.addEventListener('keyup', {handleEvent: hideResult, form: form}); } let calc_change = form.querySelector('.calc-not-change'); if (!calc_change) { form.addEventListener('change', submitHandlerObject); form.addEventListener('keyup', submitHandlerObject); } let load_calc = form.querySelector('.calc-load'); if (load_calc) { window.addEventListener('load', submitHandlerObject); } window.addEventListener('load', {handleEvent: conditions, form: form}); }); function getFieldsets(form) { let fieldset = []; const fieldsets = form.querySelectorAll('fieldset'); for (let i = 0; i < fieldsets.length; i++) { let order = i + 1; fieldset[order] = fieldsets[i]; } return fieldset; } function getLabels(form) { let label = []; const labels = form.querySelectorAll('.formbox__title'); for (let i = 0; i < labels.length; i++) { let order = i + 1; label[order] = labels[i]; } return label; } function getFields(form) { const fieldAll = form.querySelectorAll('[name^="formbox-field-"], button'); let field = []; for (let i = 0; i < fieldAll.length; i++) { let order = i + 1; field[order] = fieldAll[i]; } return field; } function getInputData(form, formData) { let input = []; const fields = form.querySelectorAll('[name^="formbox-field-"]'); for (let pair of formData.entries()) { let element = pair[0]; let el = element.split('-'); input[el[2]] = parseFloat(pair[1]); } for (let i = 0; i < fields.length; i++) { if (fields[i].tagName.toLowerCase() === 'textarea') { let element = fields[i].getAttribute('name'); let el = element.split('-'); input[el[2]] = fields[i].value; } if (fields[i].tagName.toLowerCase() === 'input' && fields[i].getAttribute('type') !== 'number' && fields[i].getAttribute('type') !== 'radio') { let element = fields[i].getAttribute('name'); let el = element.split('-'); input[el[2]] = fields[i].value; } if (fields[i].tagName.toLowerCase() === 'input' && fields[i].getAttribute('type') === 'checkbox') { let element = fields[i].getAttribute('name'); let el = element.split('-'); if (fields[i].checked) { input[el[2]] = parseFloat(fields[i].value); } else { input[el[2]] = 0; } } } return input; } function hideResult(event) { if (event.key !== 'Enter') { toggleResults(this.form, 'add'); } } function calculate(event) { event.preventDefault(); const form = this.form; const label = getLabels(this.form); const fieldset = getFieldsets(this.form); const field = getFields(this.form); const formData = new FormData(this.form); let x = getInputData(this.form, formData); let y = window[this.form.id](x, fieldset, field, label, form); if (typeof y === 'string') { tooggleAlert(form, 'show', y); toggleResults(form, 'add'); return false; } tooggleAlert(form, 'hide'); const fields = this.form.querySelectorAll('[name^="formbox-field-"]'); for (let i = 0; i < fields.length; i++) { if (fields[i].hasAttribute('required')) { if (fields[i].value === '') { fields[i].focus({preventScroll: false}); return false; } } } const results = this.form.querySelectorAll('.formbox__field-result'); for (let i = 1; i < y.length; i++) { let key = i - 1; let element = results[key]; if (element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea') { element.value = y[i]; } if (element.tagName.toLowerCase() === 'textarea' && element.hasAttribute('hidden')) { element.nextElementSibling.innerHTML = y[i]; } toggleResults(this.form, 'remove'); } } function conditions(event) { event.preventDefault(); const label = getLabels(this.form); const fieldset = getFieldsets(this.form); const field = getFields(this.form); const formData = new FormData(this.form); let x = getInputData(this.form, formData); window[this.form.id](x, fieldset, field, label); } function calcReset() { toggleResults(this.form, 'add'); const label = getLabels(this.form); const fieldset = getFieldsets(this.form); const field = getFields(this.form); let x = getInputData(this.form, this.data); window[this.form.id](x, fieldset, field, label); tooggleAlert(this.form, 'hide'); } function toggleResults(form, action) { let results = form.querySelectorAll('.formbox__container.has-result'); if (results) { results.forEach((el) => { if (action === 'remove') { el.classList.remove('is-hidden'); } else { el.classList.add('is-hidden'); } }); } } Element.prototype.hide = function() { this.classList.add('is-hidden'); }; Element.prototype.show = function() { this.classList.remove('is-hidden'); }; Element.prototype.addClass = function(cls) { this.classList.add(cls); }; Element.prototype.removeClass = function(cls) { this.classList.remove(cls); }; Element.prototype.addAttr = function(name, value) { name = (name) ? name : ''; value = (value) ? value : ''; this.setAttribute(name, value); }; Element.prototype.removeAttr = function(name) { name = (name) ? name : ''; this.removeAttribute(name); }; Element.prototype.text = function(value) { value = (value) ? value : ''; this.innerText = value; }; Number.prototype.round = function(n = '2') { const decimal = Math.pow(10, parseInt(n)); return Math.round(this * decimal) / decimal; }; function tooggleAlert(form, action, value = '') { const fieldset = form.querySelector('.has-alert'); if (action === 'hide' && fieldset) { fieldset.classList.add('is-hidden'); const field = fieldset.querySelector('.formbox__field-alert'); field.innerHTML = ''; } else if (action === 'show' && fieldset) { const field = fieldset.querySelector('.formbox__field-alert'); fieldset.classList.remove('is-hidden'); field.innerHTML = value; } } }; document.addEventListener('DOMContentLoaded', function() { new CalculatorBuilder(); }); const roundVal = (val, decima = '2') => { const decimal = Math.pow(10, parseInt(decima)); return Math.round(val * decimal) / decimal; }; function checkCalcVariable(y, alert) { if (alert !== '') { return alert; } else { return y; } }