PATH:
home
/
lab2454c
/
christianitybank.com
/
wp-content
/
plugins
/
elementor-pro
/
assets
/
js
/*! elementor-pro - v3.14.0 - 18-06-2023 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["form"],{ /***/ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js": /*!***********************************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class DataTimeFieldBase extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { fields: this.getFieldsSelector() }, classes: { useNative: 'elementor-use-native' } }; } getDefaultElements() { const { selectors } = this.getDefaultSettings(); return { $fields: this.$element.find(selectors.fields) }; } addPicker(element) { const { classes } = this.getDefaultSettings(), $element = jQuery(element); if ($element.hasClass(classes.useNative)) { return; } element.flatpickr(this.getPickerOptions(element)); } onInit() { super.onInit(...arguments); this.elements.$fields.each((index, element) => this.addPicker(element)); } } exports["default"] = DataTimeFieldBase; /***/ }), /***/ "../modules/forms/assets/js/frontend/handlers/fields/date.js": /*!*******************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/fields/date.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _dataTimeFieldBase = _interopRequireDefault(__webpack_require__(/*! ./data-time-field-base */ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js")); class DateField extends _dataTimeFieldBase.default { getFieldsSelector() { return '.elementor-date-field'; } getPickerOptions(element) { const $element = jQuery(element); return { minDate: $element.attr('min') || null, maxDate: $element.attr('max') || null, allowInput: true }; } } exports["default"] = DateField; /***/ }), /***/ "../modules/forms/assets/js/frontend/handlers/fields/time.js": /*!*******************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/fields/time.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _dataTimeFieldBase = _interopRequireDefault(__webpack_require__(/*! ./data-time-field-base */ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js")); class TimeField extends _dataTimeFieldBase.default { getFieldsSelector() { return '.elementor-time-field'; } getPickerOptions() { return { noCalendar: true, enableTime: true, allowInput: true }; } } exports["default"] = TimeField; /***/ }), /***/ "../modules/forms/assets/js/frontend/handlers/form-redirect.js": /*!*********************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/form-redirect.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _default = elementorModules.frontend.handlers.Base.extend({ getDefaultSettings() { return { selectors: { form: '.elementor-form' } }; }, getDefaultElements() { var selectors = this.getSettings('selectors'), elements = {}; elements.$form = this.$element.find(selectors.form); return elements; }, bindEvents() { this.elements.$form.on('form_destruct', this.handleSubmit); }, handleSubmit(event, response) { if ('undefined' !== typeof response.data.redirect_url) { location.href = response.data.redirect_url; } } }); exports["default"] = _default; /***/ }), /***/ "../modules/forms/assets/js/frontend/handlers/form-sender.js": /*!*******************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/form-sender.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _default = elementorModules.frontend.handlers.Base.extend({ getDefaultSettings() { return { selectors: { form: '.elementor-form', submitButton: '[type="submit"]' }, action: 'elementor_pro_forms_send_form', ajaxUrl: elementorProFrontend.config.ajaxurl }; }, getDefaultElements() { const selectors = this.getSettings('selectors'), elements = {}; elements.$form = this.$element.find(selectors.form); elements.$submitButton = elements.$form.find(selectors.submitButton); return elements; }, bindEvents() { this.elements.$form.on('submit', this.handleSubmit); const $fileInput = this.elements.$form.find('input[type=file]'); if ($fileInput.length) { $fileInput.on('change', this.validateFileSize); } }, validateFileSize(event) { const $field = jQuery(event.currentTarget), files = $field[0].files; if (!files.length) { return; } const maxSize = parseInt($field.attr('data-maxsize')) * 1024 * 1024, maxSizeMessage = $field.attr('data-maxsize-message'); const filesArray = Array.prototype.slice.call(files); filesArray.forEach(file => { if (maxSize < file.size) { $field.parent().addClass('elementor-error').append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + maxSizeMessage + '</span>').find(':input').attr('aria-invalid', 'true'); this.elements.$form.trigger('error'); } }); }, beforeSend() { const $form = this.elements.$form; $form.animate({ opacity: '0.45' }, 500).addClass('elementor-form-waiting'); $form.find('.elementor-message').remove(); $form.find('.elementor-error').removeClass('elementor-error'); $form.find('div.elementor-field-group').removeClass('error').find('span.elementor-form-help-inline').remove().end().find(':input').attr('aria-invalid', 'false'); this.elements.$submitButton.attr('disabled', 'disabled').find('> span').prepend('<span class="elementor-button-text elementor-form-spinner"><i class="fa fa-spinner fa-spin"></i> </span>'); }, getFormData() { const formData = new FormData(this.elements.$form[0]); formData.append('action', this.getSettings('action')); formData.append('referrer', location.toString()); return formData; }, onSuccess(response) { const $form = this.elements.$form; this.elements.$submitButton.removeAttr('disabled').find('.elementor-form-spinner').remove(); $form.animate({ opacity: '1' }, 100).removeClass('elementor-form-waiting'); if (!response.success) { if (response.data.errors) { jQuery.each(response.data.errors, function (key, title) { $form.find('#form-field-' + key).parent().addClass('elementor-error').append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + title + '</span>').find(':input').attr('aria-invalid', 'true'); }); $form.trigger('error'); } $form.append('<div class="elementor-message elementor-message-danger" role="alert">' + response.data.message + '</div>'); } else { $form.trigger('submit_success', response.data); // For actions like redirect page $form.trigger('form_destruct', response.data); $form.trigger('reset'); if ('undefined' !== typeof response.data.message && '' !== response.data.message) { $form.append('<div class="elementor-message elementor-message-success" role="alert">' + response.data.message + '</div>'); } } }, onError(xhr, desc) { const $form = this.elements.$form; $form.append('<div class="elementor-message elementor-message-danger" role="alert">' + desc + '</div>'); this.elements.$submitButton.html(this.elements.$submitButton.text()).removeAttr('disabled'); $form.animate({ opacity: '1' }, 100).removeClass('elementor-form-waiting'); $form.trigger('error'); }, handleSubmit(event) { const self = this, $form = this.elements.$form; event.preventDefault(); if ($form.hasClass('elementor-form-waiting')) { return false; } this.beforeSend(); jQuery.ajax({ url: self.getSettings('ajaxUrl'), type: 'POST', dataType: 'json', data: self.getFormData(), processData: false, contentType: false, success: self.onSuccess, error: self.onError }); } }); exports["default"] = _default; /***/ }), /***/ "../modules/forms/assets/js/frontend/handlers/form-steps.js": /*!******************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/form-steps.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class FormSteps extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { form: '.elementor-form', fieldsWrapper: '.elementor-form-fields-wrapper', fieldGroup: '.elementor-field-group', stepWrapper: '.elementor-field-type-step', stepField: '.e-field-step', submitWrapper: '.elementor-field-type-submit', submitButton: '[type="submit"]', buttons: '.e-form__buttons', buttonWrapper: '.e-form__buttons__wrapper', button: '.e-form__buttons__wrapper__button', indicator: '.e-form__indicators__indicator', indicatorProgress: '.e-form__indicators__indicator__progress', indicatorProgressMeter: '.e-form__indicators__indicator__progress__meter', formHelpInline: '.elementor-form-help-inline' }, classes: { hidden: 'elementor-hidden', column: 'elementor-column', fieldGroup: 'elementor-field-group', elementorButton: 'elementor-button', step: 'e-form__step', buttons: 'e-form__buttons', buttonWrapper: 'e-form__buttons__wrapper', button: 'e-form__buttons__wrapper__button', indicators: 'e-form__indicators', indicator: 'e-form__indicators__indicator', indicatorIcon: 'e-form__indicators__indicator__icon', indicatorNumber: 'e-form__indicators__indicator__number', indicatorLabel: 'e-form__indicators__indicator__label', indicatorProgress: 'e-form__indicators__indicator__progress', indicatorProgressMeter: 'e-form__indicators__indicator__progress__meter', indicatorSeparator: 'e-form__indicators__indicator__separator', indicatorInactive: 'e-form__indicators__indicator--state-inactive', indicatorActive: 'e-form__indicators__indicator--state-active', indicatorCompleted: 'e-form__indicators__indicator--state-completed', indicatorShapeCircle: 'e-form__indicators__indicator--shape-circle', indicatorShapeSquare: 'e-form__indicators__indicator--shape-square', indicatorShapeRounded: 'e-form__indicators__indicator--shape-rounded', indicatorShapeNone: 'e-form__indicators__indicator--shape-none' } }; } getDefaultElements() { const { selectors } = this.getSettings(), elements = { $form: this.$element.find(selectors.form) }; elements.$fieldsWrapper = elements.$form.children(selectors.fieldsWrapper); elements.$stepWrapper = elements.$fieldsWrapper.children(selectors.stepWrapper); elements.$stepField = elements.$stepWrapper.children(selectors.stepField); elements.$fieldGroup = elements.$fieldsWrapper.children(selectors.fieldGroup); elements.$submitWrapper = elements.$fieldsWrapper.children(selectors.submitWrapper); elements.$submitButton = elements.$submitWrapper.children(selectors.submitButton); return elements; } onInit() { super.onInit(...arguments); if (!this.isStepsExist()) { return; } this.data = { steps: [], indicatorsWithObjectTags: [] }; this.state = { currentStep: 0, stepsType: '', stepsShape: '' }; this.buildSteps(); this.elements = { ...this.elements, ...this.createStepsIndicators(), ...this.createStepsButtons() }; this.initProgressBar(); this.extractResponsiveSizeFromSubmitWrapper(); } bindEvents() { if (!this.isStepsExist()) { return; } this.elements.$form.on({ submit: () => this.resetForm(), keydown: e => { if (13 === e.keyCode && !this.isLastStep() && 'textarea' !== e.target.localName) { e.preventDefault(); this.applyStep('next'); } }, error: () => this.onFormError() }); } isStepsExist() { return this.elements.$stepWrapper.length; } initProgressBar() { const stepsSettings = this.getElementSettings(); if ('progress_bar' === stepsSettings.step_type) { this.setProgressBar(); } } buildSteps() { this.elements.$stepWrapper.each((index, el) => { const { selectors, classes } = this.getSettings(), $currentStep = jQuery(el); $currentStep.addClass(classes.step).removeClass(classes.fieldGroup, classes.column); if (index) { $currentStep.addClass(classes.hidden); } this.setStepData($currentStep.children(selectors.stepField)); $currentStep.append($currentStep.nextUntil(this.elements.$stepWrapper).not(this.elements.$submitWrapper)); }); } setStepData($stepElement) { const dataAttributes = ['label', 'previousButton', 'nextButton', 'iconUrl', 'iconLibrary', 'icon'], stepData = {}; dataAttributes.forEach(attr => { const attrValue = $stepElement.attr('data-' + attr); if (attrValue) { stepData[attr] = attrValue; } }); this.data.steps.push(stepData); } createStepsIndicators() { const stepsSettings = this.getElementSettings(), stepsElements = {}; if ('none' !== stepsSettings.step_type) { const { selectors, classes } = this.getSettings(), indicatorsTypeClass = classes.indicators + '--type-' + stepsSettings.step_type, indicatorsClasses = [classes.indicators, indicatorsTypeClass]; stepsElements.$indicatorsWrapper = jQuery('<div>', { class: indicatorsClasses.join(' ') }); stepsElements.$indicatorsWrapper.append(this.buildIndicators()); this.elements.$fieldsWrapper.before(stepsElements.$indicatorsWrapper); if ('progress_bar' === stepsSettings.step_type) { stepsElements.$progressBar = stepsElements.$indicatorsWrapper.find(selectors.indicatorProgress); stepsElements.$progressBarMeter = stepsElements.$indicatorsWrapper.find(selectors.indicatorProgressMeter); } else { stepsElements.$indicators = stepsElements.$indicatorsWrapper.find(selectors.indicator); stepsElements.$currentIndicator = stepsElements.$indicators.eq(this.state.currentStep); } } this.saveIndicatorsState(); return stepsElements; } buildIndicators() { const stepsSettings = this.getElementSettings(); return 'progress_bar' === stepsSettings.step_type ? this.buildProgressBar() : this.buildIndicatorsFromStepsData(); } buildProgressBar() { const { classes } = this.getSettings(), $progressBar = jQuery('<div>', { class: classes.indicatorProgress }), $progressBarMeter = jQuery('<div>', { class: classes.indicatorProgressMeter }); $progressBar.append($progressBarMeter); return $progressBar; } getProgressBarValue() { const totalSteps = this.data.steps.length, currentStep = this.state.currentStep, percentage = currentStep ? (currentStep + 1) / totalSteps * 100 : 100 / totalSteps; return Math.floor(percentage) + '%'; } setProgressBar() { const progressBarValue = this.getProgressBarValue(); this.updateProgressMeterCSSVariable(progressBarValue); this.elements.$progressBarMeter.text(progressBarValue); } updateProgressMeterCSSVariable(value) { this.$element[0].style.setProperty('--e-form-steps-indicator-progress-meter-width', value); } saveIndicatorsState() { const stepsSettings = this.getElementSettings(); this.state.stepsType = stepsSettings.step_type; if (!['none', 'text', 'progress_bar'].includes(stepsSettings.step_type)) { this.state.stepsShape = stepsSettings.step_icon_shape; } } buildIndicatorsFromStepsData() { const indicators = []; this.data.steps.forEach((stepObj, index) => { if (index) { indicators.push(this.getStepSeparator()); } indicators.push(this.getStepIndicatorElement(stepObj, index)); }); return indicators; } getStepIndicatorElement(stepObj, index) { const { classes } = this.getSettings(), stepsSettings = this.getElementSettings(), indicatorStateClass = this.getIndicatorStateClass(index), indicatorClasses = [classes.indicator, indicatorStateClass], $stepIndicator = jQuery('<div>', { class: indicatorClasses.join(' ') }); if (stepsSettings.step_type.includes('icon')) { $stepIndicator.append(this.getStepIconElement(stepObj)); } if (stepsSettings.step_type.includes('number')) { $stepIndicator.append(this.getStepNumberElement(index)); } if (stepsSettings.step_type.includes('text')) { $stepIndicator.append(this.getStepLabelElement(stepObj.label)); } return $stepIndicator; } getIndicatorStateClass(index) { const { classes } = this.getSettings(); if (index < this.state.currentStep) { return classes.indicatorCompleted; } else if (index > this.state.currentStep) { return classes.indicatorInactive; } return classes.indicatorActive; } getIndicatorShapeClass() { const stepsSettings = this.getElementSettings(), { classes } = this.getSettings(); return classes['indicatorShape' + this.firstLetterToUppercase(stepsSettings.step_icon_shape)]; } firstLetterToUppercase(str) { return str.charAt(0).toUpperCase() + str.slice(1); } getStepNumberElement(index) { const { classes } = this.getSettings(), numberClasses = [classes.indicatorNumber, this.getIndicatorShapeClass()]; return jQuery('<div>', { class: numberClasses.join(' '), text: index + 1 }); } getStepIconElement(stepObj) { const { classes } = this.getSettings(), iconClasses = [classes.indicatorIcon, this.getIndicatorShapeClass()], $icon = jQuery('<div>', { class: iconClasses.join(' ') }); if (stepObj.icon) { $icon.html(stepObj.icon); } else { let $iconElement; if (stepObj.iconLibrary) { $iconElement = jQuery('<i>', { class: stepObj.iconLibrary }); } else { // Using the attributes inline when creating the object, otherwise the data attribute will not work. $iconElement = jQuery(`<object type="image/svg+xml" data="${stepObj.iconUrl}"></object>`); // Updating an indicator svg fill color, when loaded inside an object tag with a separated scope. $iconElement.on('load', event => { event.target.contentDocument.querySelector('svg').style.fill = $iconElement.css('fill'); }); // Storing the indicators elements that contain object tags in order to change their fill color on steps change. this.data.indicatorsWithObjectTags.push($iconElement); } $icon.append($iconElement); } return $icon; } getStepLabelElement(label) { const { classes } = this.getSettings(); return jQuery('<label>', { class: classes.indicatorLabel, text: label }); } getStepSeparator() { const { classes } = this.getSettings(); return jQuery('<div>', { class: classes.indicatorSeparator }); } createStepsButtons() { const { selectors } = this.getSettings(), stepsElements = {}; this.injectButtonsToSteps(stepsElements); stepsElements.$buttonsContainer = this.elements.$stepWrapper.find(selectors.buttons); stepsElements.$buttonsWrappers = stepsElements.$buttonsContainer.children(selectors.buttonWrapper); return stepsElements; } injectButtonsToSteps() { const totalSteps = this.elements.$stepWrapper.length; this.elements.$stepWrapper.each((index, el) => { const $el = jQuery(el), $container = this.getButtonsContainer(); let $nextButton; if (index) { $container.append(this.getStepButton('previous', index)); $nextButton = index === totalSteps - 1 ? this.getSubmitButton() : this.getStepButton('next', index); } else { $nextButton = this.getStepButton('next', index); } $container.append($nextButton); $el.append($container); }); } getButtonsContainer() { const { classes } = this.getSettings(), stepsSettings = this.getElementSettings(), buttonColumnWidthClasses = [classes.buttons, classes.column, 'elementor-col-' + stepsSettings.button_width]; return jQuery('<div>', { class: buttonColumnWidthClasses.join(' ') }); } extractResponsiveSizeFromSubmitWrapper() { let sizeClasses = []; this.elements.$submitWrapper.removeClass((index, className) => { sizeClasses = className.match(/elementor-(sm|md)-[0-9]+/g)?.join(' '); return sizeClasses; }); this.elements.$buttonsContainer.addClass(sizeClasses); } getStepButton(buttonType, index) { const { classes } = this.getSettings(), $button = this.getButton(buttonType, index).on('click', () => this.applyStep(buttonType)), buttonWrapperClasses = [classes.fieldGroup, classes.buttonWrapper, 'elementor-field-type-' + buttonType]; return jQuery('<div>', { class: buttonWrapperClasses.join(' ') }).append($button); } getSubmitButton() { const { classes } = this.getSettings(); this.elements.$submitButton.addClass(classes.button); // TODO: When a solution for the conditions will be found, check if can remove the elementor-col-x manipulation. return this.elements.$submitWrapper.attr('class', (index, className) => { return this.replaceClassNameColSize(className, ''); }).removeClass(classes.column).removeClass(classes.buttons).addClass(classes.buttonWrapper); } replaceClassNameColSize(className, value) { return className.replace(/elementor-col-([0-9]+)/g, value); } getButton(buttonType, index) { const { classes } = this.getSettings(), submitSizeClass = this.elements.$submitButton.attr('class').match(/elementor-size-([^\W\d]+)/g), buttonClasses = [classes.elementorButton, submitSizeClass, classes.button, classes.button + '-' + buttonType]; return jQuery('<button>', { type: 'button', text: this.getButtonLabel(buttonType, index), class: buttonClasses.join(' ') }); } getButtonLabel(buttonType, index) { const stepsSettings = this.getElementSettings(), stepData = this.data.steps[index], buttonName = buttonType + 'Button', buttonSettingsProp = `step_${buttonType}_label`; return stepData[buttonName] || stepsSettings[buttonSettingsProp]; } applyStep(direction) { const nextIndex = 'next' === direction ? this.state.currentStep + 1 : this.state.currentStep - 1; if ('next' === direction && !this.isFieldsValid(this.elements.$stepWrapper)) { return false; } this.goToStep(nextIndex); this.state.currentStep = nextIndex; if ('progress_bar' === this.state.stepsType) { this.setProgressBar(); } else if ('none' !== this.state.stepsType) { this.updateIndicatorsState(direction); } } goToStep(index) { const { classes } = this.getSettings(); this.elements.$stepWrapper.eq(this.state.currentStep).addClass(classes.hidden); this.elements.$stepWrapper.eq(index).removeClass(classes.hidden).children(this.getSettings('selectors.fieldGroup')).first().find(':input').first().trigger('focus'); } isFieldsValid($stepWrapper) { let isValid = true; $stepWrapper.eq(this.state.currentStep).find('.elementor-field-group :input').each((index, el) => { if (!el.checkValidity()) { el.reportValidity(); return isValid = false; } }); return isValid; } isLastStep() { return this.state.currentStep === this.data.steps.length - 1; } resetForm() { this.state.currentStep = 0; this.resetSteps(); if ('progress_bar' === this.state.stepsType) { this.setProgressBar(); } else if ('none' !== this.state.stepsType) { this.elements.$currentIndicator = this.elements.$indicators.eq(this.state.currentStep); this.resetIndicators(); } } resetSteps() { const { classes } = this.getSettings(); this.elements.$stepWrapper.addClass(classes.hidden).eq(0).removeClass(classes.hidden); } resetIndicators() { const { classes } = this.getSettings(), stateTypes = ['inactive', 'active', 'completed'], stateClasses = stateTypes.map(state => classes.indicator + '--state-' + state); this.elements.$indicators.removeClass(stateClasses.join(' ')).not(this.elements.$indicators.eq(0)).addClass(classes.indicatorInactive); this.elements.$indicators.eq(0).addClass(classes.indicatorActive); } updateIndicatorsState(direction) { const { classes } = this.getSettings(), indicatorsClasses = { current: { remove: classes.indicatorActive, add: 'next' === direction ? classes.indicatorCompleted : classes.indicatorInactive }, next: { remove: 'next' === direction ? classes.indicatorInactive : classes.indicatorCompleted, add: classes.indicatorActive } }; this.elements.$currentIndicator.removeClass(indicatorsClasses.current.remove).addClass(indicatorsClasses.current.add); this.elements.$currentIndicator = this.elements.$indicators.eq(this.state.currentStep); this.elements.$currentIndicator.removeClass(indicatorsClasses.next.remove).addClass(indicatorsClasses.next.add); // Updating an indicator svg fill color, if loaded inside an object tag. this.data.indicatorsWithObjectTags.forEach($element => { $element.contents().children('svg').css('fill', $element.css('fill')); }); } updateValue(updatedValue) { const actionsMap = { step_type: () => this.updateStepsType(), step_icon_shape: () => this.updateStepsShape(), step_next_label: () => this.updateStepButtonsLabel('next'), step_previous_label: () => this.updateStepButtonsLabel('previous') }; if (actionsMap[updatedValue]) { actionsMap[updatedValue](); } } updateStepsType() { const stepsSettings = this.getElementSettings(); if (this.elements.$indicatorsWrapper) { this.elements.$indicatorsWrapper.remove(); } if ('none' !== stepsSettings.step_type) { this.rebuildIndicators(); } this.state.stepsType = stepsSettings.step_type; } rebuildIndicators() { this.elements = { ...this.elements, ...this.createStepsIndicators() }; this.initProgressBar(); } updateStepsShape() { const stepsSettings = this.getElementSettings(), { selectors, classes } = this.getSettings(), shapeClassStart = classes.indicator + '--shape-', currentShapeClass = shapeClassStart + this.state.stepsShape, newShapeClass = shapeClassStart + stepsSettings.step_icon_shape; let elementsTargetType = ''; if (stepsSettings.step_type.includes('icon')) { elementsTargetType = 'icon'; } else if (stepsSettings.step_type.includes('number')) { elementsTargetType = 'number'; } this.elements.$indicators.children(selectors.indicator + '__' + elementsTargetType).removeClass(currentShapeClass).addClass(newShapeClass); this.state.stepsShape = stepsSettings.step_icon_shape; } updateStepButtonsLabel(buttonType) { const { selectors } = this.getSettings(), buttonSelector = { previous: selectors.button + '-previous', next: selectors.button + '-next' }; this.elements.$stepWrapper.each((index, el) => { jQuery(el).find(buttonSelector[buttonType]).text(this.getButtonLabel(buttonType, index)); }); } onFormError() { const { selectors } = this.getSettings(), $errorStepElement = this.elements.$form.find(selectors.formHelpInline).closest(selectors.stepWrapper); if ($errorStepElement.length) { this.goToStep($errorStepElement.index()); } } onElementChange(updatedValue) { if (!this.isStepsExist()) { return; } this.updateValue(updatedValue); } } exports["default"] = FormSteps; /***/ }), /***/ "../modules/forms/assets/js/frontend/handlers/recaptcha.js": /*!*****************************************************************!*\ !*** ../modules/forms/assets/js/frontend/handlers/recaptcha.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class Recaptcha extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { recaptcha: '.elementor-g-recaptcha:last', submit: 'button[type="submit"]', recaptchaResponse: '[name="g-recaptcha-response"]' } }; } getDefaultElements() { const { selectors } = this.getDefaultSettings(), elements = { $recaptcha: this.$element.find(selectors.recaptcha) }; elements.$form = elements.$recaptcha.parents('form'); elements.$submit = elements.$form.find(selectors.submit); return elements; } bindEvents() { this.onRecaptchaApiReady(); } isActive(settings) { const { selectors } = this.getDefaultSettings(); return settings.$element.find(selectors.recaptcha).length; } addRecaptcha() { const settings = this.elements.$recaptcha.data(), isV2 = 'v3' !== settings.type, captchaIds = []; captchaIds.forEach(id => window.grecaptcha.reset(id)); const widgetId = window.grecaptcha.render(this.elements.$recaptcha[0], settings); this.elements.$form.on('reset error', () => { window.grecaptcha.reset(widgetId); }); if (isV2) { this.elements.$recaptcha.data('widgetId', widgetId); } else { captchaIds.push(widgetId); this.elements.$submit.on('click', e => this.onV3FormSubmit(e, widgetId)); } } onV3FormSubmit(e, widgetId) { e.preventDefault(); window.grecaptcha.ready(() => { const $form = this.elements.$form; grecaptcha.execute(widgetId, { action: this.elements.$recaptcha.data('action') }).then(token => { if (this.elements.$recaptchaResponse) { this.elements.$recaptchaResponse.val(token); } else { this.elements.$recaptchaResponse = jQuery('<input>', { type: 'hidden', value: token, name: 'g-recaptcha-response' }); $form.append(this.elements.$recaptchaResponse); } // Support old browsers. const bcSupport = !$form[0].reportValidity || 'function' !== typeof $form[0].reportValidity; if (bcSupport || $form[0].reportValidity()) { $form.trigger('submit'); } }); }); } onRecaptchaApiReady() { if (window.grecaptcha && window.grecaptcha.render) { this.addRecaptcha(); } else { // If not ready check again by timeout.. setTimeout(() => this.onRecaptchaApiReady(), 350); } } } exports["default"] = Recaptcha; /***/ }) }]); //# sourceMappingURL=form.1161490412c4fa9ebfc6.bundle.js.map
[+]
..
[-] frontend.min.js
[edit]
[-] elements-handlers.js
[edit]
[-] editor.js
[edit]
[-] screenshot.min.js
[edit]
[-] qunit-tests.min.js
[edit]
[-] jszip.vendor.99a5b769619f50a6cb60.bundle.min.js.LICENSE.txt
[edit]
[-] elements-handlers.min.js
[edit]
[-] mega-menu-stretch-content.99000844c609182f2303.bundle.min.js
[edit]
[-] code-highlight.bd9b459b2670f6512f56.bundle.js
[edit]
[-] form-submission-admin.js
[edit]
[-] frontend.js
[edit]
[-] b83b4e72565adbc65b6e.bundle.min.js
[edit]
[-] gallery.1573e391054ea0977a1f.bundle.js
[edit]
[-] form-submission-admin.min.js
[edit]
[-] mega-menu-stretch-content.749b8c1dc8bd8c9b37d2.bundle.js
[edit]
[-] woocommerce-checkout-page.bf88689aec2ee294a5e8.bundle.js
[edit]
[-] nested-carousel.bcde87271acde0b6b3f0.bundle.min.js
[edit]
[-] admin.js
[edit]
[-] stripe-button.eae562d308bcfc405207.bundle.min.js.LICENSE.txt
[edit]
[-] preview.min.js
[edit]
[-] search-form.416aa432fdfe2bcfe9b5.bundle.js
[edit]
[-] share-buttons.0bdd88c45462dfb2b073.bundle.min.js
[edit]
[-] paypal-button.0b0a646654a59ebd13a8.bundle.js
[edit]
[-] webpack-pro.runtime.min.js
[edit]
[-] app.min.js
[edit]
[-] nested-carousel-editor.d8367a1522af6556bd92.bundle.min.js
[edit]
[-] app.js
[edit]
[-] slides.0a31b946f157107ba4a2.bundle.js
[edit]
[-] nav-menu.3347cc64f9b3d71f7f0c.bundle.min.js
[edit]
[+]
packages
[-] page-transitions.min.js
[edit]
[-] form.72b77b99d67b130634d2.bundle.min.js
[edit]
[+]
notes
[-] posts.e33113a212454e383747.bundle.min.js
[edit]
[-] hotspot.6ab1751404c381bfe390.bundle.min.js
[edit]
[-] popup.483b906ddaa1af17ff14.bundle.min.js
[edit]
[-] social.2d2e44e8608690943f29.bundle.min.js
[edit]
[-] nested-carousel-editor.04e1965a317cbb6d22df.bundle.js
[edit]
[-] video-playlist.74fca1f2470fa6474595.bundle.min.js
[edit]
[-] progress-tracker.3424c0ac2b2c8da47033.bundle.js
[edit]
[-] posts.72468c8555693b196f98.bundle.js
[edit]
[-] hotspot.d43ef85fb9e56c4414f4.bundle.js
[edit]
[-] load-more.9ad2efa307d3ada91e86.bundle.js
[edit]
[-] woocommerce-menu-cart.faa7b80e9ba9e5072070.bundle.min.js
[edit]
[-] portfolio.47c0bf4b3576c66f1b1a.bundle.js
[edit]
[-] page-transitions-editor.930bfd9119ee62d5ccd6.bundle.js
[edit]
[-] editor.min.js
[edit]
[-] woocommerce-menu-cart.cecfa624e2d23a156519.bundle.js
[edit]
[-] portfolio.042905bde20a1afccada.bundle.min.js
[edit]
[-] custom-code.js
[edit]
[-] popup.397c2882052136db7ee0.bundle.js
[edit]
[-] carousel.49e271b0dd16dd95d00b.bundle.js
[edit]
[-] product-add-to-cart.023d7d31fbf96c3dbdfc.bundle.min.js
[edit]
[-] mega-menu-editor.de9dd6d5a71e58af98ef.bundle.js
[edit]
[-] search-form.6eb419c467197ca411a7.bundle.min.js
[edit]
[-] media-carousel.aca2224ef13e6f999011.bundle.min.js
[edit]
[-] mega-menu.e835faaf6e328f296a63.bundle.min.js
[edit]
[-] countdown.14ae9e6521e5309f2b20.bundle.js
[edit]
[-] load-more.b18fee69ce12204b4582.bundle.min.js
[edit]
[-] woocommerce-notices.da27b22c491f7cbe9158.bundle.min.js
[edit]
[-] woocommerce-cart.07b1efa10b4a0c3db9f6.bundle.js
[edit]
[-] preloaded-elements-handlers.js
[edit]
[-] woocommerce-cart.fc30c6cb753d4098eff5.bundle.min.js
[edit]
[-] slides.fb6b9afd278bb9c5e75b.bundle.min.js
[edit]
[-] webpack-pro.runtime.js
[edit]
[-] gallery.8ca9a354ce039d1ba641.bundle.min.js
[edit]
[-] lottie.e9e13c1085c8ebcf9e08.bundle.js
[edit]
[-] countdown.b0ef6392ec4ff09ca2f2.bundle.min.js
[edit]
[-] paypal-button.3d0d5af7df85963df32c.bundle.min.js
[edit]
[-] carousel.9b02b45d7826c1c48f33.bundle.min.js
[edit]
[-] woocommerce-my-account.3ee10d01e625dad87f73.bundle.min.js
[edit]
[-] e1314d8e113e32e00c20.bundle.js
[edit]
[-] screenshot.js
[edit]
[-] page-transitions-editor.69f365c96dc0120de70b.bundle.min.js
[edit]
[-] woocommerce-purchase-summary.46445ab1120a8c28c05c.bundle.min.js
[edit]
[-] form.1161490412c4fa9ebfc6.bundle.js
[edit]
[-] jszip.vendor.a3c65615c1de5560962d.bundle.js
[edit]
[-] progress-tracker.e19e2547639d7d9dac17.bundle.min.js
[edit]
[-] woocommerce-purchase-summary.40bd4441fdc065587324.bundle.js
[edit]
[-] loop.1d4e16e70fd7e6b89f96.bundle.js
[edit]
[-] video-playlist.1eaa6f5cb62ea2d58265.bundle.js
[edit]
[-] table-of-contents.28c4a12e01860d74dc5a.bundle.min.js
[edit]
[-] nav-menu.ded2ef1815c81841b6b8.bundle.js
[edit]
[-] archive-posts.f09f53ca5b8d6f9bbe13.bundle.js
[edit]
[-] preview.js
[edit]
[-] mega-menu-editor.d1546764ef2c2b02bcd4.bundle.min.js
[edit]
[-] table-of-contents.99cfd4713b3327d9b782.bundle.js
[edit]
[-] mega-menu.6a41b17ca3362b2df95d.bundle.js
[edit]
[-] code-highlight.28a979661569ddbbf60d.bundle.min.js
[edit]
[-] media-carousel.a98799d9f5a454b751e1.bundle.js
[edit]
[-] social.68fec39648b9a03c6275.bundle.js
[edit]
[-] product-add-to-cart.39fbaae6c856c483b4b4.bundle.js
[edit]
[-] woocommerce-notices.d803ba1deaf96eb007fc.bundle.js
[edit]
[-] animated-headline.d814d12739fd7c744896.bundle.js
[edit]
[-] loop.b970df87a162b8c74eb7.bundle.min.js
[edit]
[-] admin.min.js
[edit]
[-] preloaded-elements-handlers.min.js
[edit]
[-] loop-carousel.bb1d12b699805ace419f.bundle.js
[edit]
[-] animated-headline.ffb4bb4ce1b16b11446d.bundle.min.js
[edit]
[-] page-transitions.js
[edit]
[-] qunit-tests.js
[edit]
[-] custom-code.min.js
[edit]
[-] jszip.vendor.99a5b769619f50a6cb60.bundle.min.js
[edit]
[-] archive-posts.1de00dabb89a39359d7a.bundle.min.js
[edit]
[-] stripe-button.ee06964ad9f6a53c061d.bundle.js
[edit]
[-] lottie.147bf20db94f86cc4295.bundle.min.js
[edit]
[-] loop-carousel.b3e89ba86b10ec9fa9e3.bundle.min.js
[edit]
[-] woocommerce-my-account.355b00c58fb73e92a0bb.bundle.js
[edit]
[-] nested-carousel.4b92d02078ce6e22f22e.bundle.js
[edit]
[-] share-buttons.a43f0e61533a54c4cf9f.bundle.js
[edit]
[-] stripe-button.eae562d308bcfc405207.bundle.min.js
[edit]
[-] woocommerce-checkout-page.b18af78282979b6f74e4.bundle.min.js
[edit]