PATH:
home
/
nappmpmd
/
salepaky.com
/
wp-content
/
plugins
/
elementor-pro
/
assets
/
js
/*! elementor-pro - v3.24.0 - 01-10-2024 */ "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 = exports["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; } } }); /***/ }), /***/ "../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 = exports["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'); let successClass = 'elementor-message elementor-message-success'; if (elementorFrontendConfig.experimentalFeatures.e_font_icon_svg) { successClass += ' elementor-message-svg'; } if ('undefined' !== typeof response.data.message && '' !== response.data.message) { $form.append('<div class="' + successClass + '" 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 }); } }); /***/ }), /***/ "../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.3b797cf593ad0ec04b83.bundle.js.map
[+]
..
[-] off-canvas.bc9ebf2aa5a940324b7b.bundle.min.js
[edit]
[-] editor.js
[edit]
[-] gallery.57d49c99a6212add88bf.bundle.js
[edit]
[-] elements-handlers.js
[edit]
[-] product-add-to-cart.d5883897e035f9c53c5e.bundle.js
[edit]
[-] progress-tracker.8cccdda9737c272489fc.bundle.min.js
[edit]
[-] code-highlight.d86022c8668c4b072592.bundle.min.js
[edit]
[+]
packages
[-] frontend.js
[edit]
[-] table-of-contents.461c83bbf6bdd6aceaf2.bundle.js
[edit]
[-] display-conditions.min.js
[edit]
[-] elements-handlers.min.js
[edit]
[-] gallery.572e8a2bca1a0b7e4f42.bundle.min.js
[edit]
[-] qunit-tests.js
[edit]
[-] popup.f7b15b2ca565b152bf98.bundle.min.js
[edit]
[-] social.ac16c075939dcb93f70c.bundle.js
[edit]
[-] loop-carousel.f8067ec0c24b628c786e.bundle.min.js
[edit]
[-] mega-menu-editor.da8ac1f6ef887046ecf0.bundle.min.js
[edit]
[-] admin.js
[edit]
[-] loop.8130a6b4d3121c5aaaae.bundle.min.js
[edit]
[-] search.8457dd916c5a97a6dc73.bundle.js
[edit]
[-] mega-menu-stretch-content.0d76e4a3b7bf65ff6f9b.bundle.js
[edit]
[-] nested-carousel-editor.6d7500036d0766bbe2fc.bundle.min.js
[edit]
[-] menu-title-keyboard-handler.77332e668c3cf609c924.bundle.js
[edit]
[-] off-canvas-editor.0b71c4c17860dfe25d59.bundle.min.js
[edit]
[-] load-more.376b5bcb2e56386f470e.bundle.min.js
[edit]
[-] archive-posts.6e398ddd4a81a78bcea3.bundle.js
[edit]
[-] editor.min.js
[edit]
[-] mega-menu-stretch-content.480e081cebe071d683e8.bundle.min.js
[edit]
[-] jszip.vendor.eba4ace24dcc63eadac0.bundle.min.js
[edit]
[-] stripe-button.61d93594d6b7865f8b3f.bundle.min.js
[edit]
[-] portfolio.5727b56368be256d0893.bundle.js
[edit]
[-] mega-menu.cd787a5946bfee971978.bundle.min.js
[edit]
[-] carousel.298f1fc9c115422aad0e.bundle.js
[edit]
[-] custom-code.min.js
[edit]
[-] off-canvas.321e93388904636cf8cf.bundle.js
[edit]
[-] nav-menu.997320c05a0d163c76e8.bundle.min.js
[edit]
[-] contact-buttons.5398b922eb2a8fb72fd3.bundle.min.js
[edit]
[-] load-more.141d7f9a8572a75a1d28.bundle.js
[edit]
[-] contact-buttons-var-10.fc383e580d728636b0fa.bundle.js
[edit]
[-] floating-bars-var-2.c6ca10c575bf96977799.bundle.js
[edit]
[+]
notes
[-] app.js
[edit]
[-] e8a5a32d9cd9fad1244f.bundle.js
[edit]
[-] editor.min.js.LICENSE.txt
[edit]
[-] slides.c0029640cbdb48199471.bundle.min.js
[edit]
[-] share-buttons.63d984f8c96d1e053bc0.bundle.min.js
[edit]
[-] carousel.3620fca501cb18163600.bundle.min.js
[edit]
[-] frontend.min.js
[edit]
[-] stripe-button.cf3f67d6b95e0138bb6b.bundle.js
[edit]
[-] paypal-button.f4f64e46173f50701949.bundle.min.js
[edit]
[-] form.a8f0864f4b4fda696ad1.bundle.min.js
[edit]
[-] lottie.e74a53bfa4c0bd939250.bundle.min.js
[edit]
[-] ajax-pagination.2090b5f4906bcda1dcc2.bundle.min.js
[edit]
[-] woocommerce-cart.d0d01530f5be6736b5d2.bundle.min.js
[edit]
[-] form-submission-admin.js
[edit]
[-] admin.min.js
[edit]
[-] animated-headline.3eca5f2deb261b97d554.bundle.js
[edit]
[-] woocommerce-purchase-summary.3676ccd8c29ef0924b84.bundle.min.js
[edit]
[-] progress-tracker.fd1d31a26340ed74e10a.bundle.js
[edit]
[-] gutenberg-woocommerce-notice.js
[edit]
[-] taxonomy-filter.e839f2be32b7ea832b34.bundle.min.js
[edit]
[-] 36c2990924ec9596ffad.bundle.js
[edit]
[-] nested-carousel-editor.0df35e0e1a284d4bd18b.bundle.js
[edit]
[-] video-playlist.af20fd9fd8778929829e.bundle.min.js
[edit]
[-] nested-carousel.e282a75f865e207e8031.bundle.js
[edit]
[-] ajax-pagination.2390838f542f1a8d5ed4.bundle.js
[edit]
[-] preview.js
[edit]
[-] paypal-button.55ffb013a3fe565f55a5.bundle.js
[edit]
[-] search.9686bb2092445d2ad477.bundle.min.js
[edit]
[-] nav-menu.d3c84615b4828c150c34.bundle.js
[edit]
[-] video-playlist.9e1bbc4fcb37864c89d6.bundle.js
[edit]
[-] share-buttons.fda49c1691f4a352c7ef.bundle.js
[edit]
[-] screenshot.min.js
[edit]
[-] jszip.vendor.eba4ace24dcc63eadac0.bundle.min.js.LICENSE.txt
[edit]
[-] hotspot.fa04300164c35a866a51.bundle.min.js
[edit]
[-] c62a5d15e98a98580947.bundle.js
[edit]
[-] woocommerce-my-account.4e940a8b4a52d1c98c5c.bundle.min.js
[edit]
[-] woocommerce-checkout-page.10d97c3a8cb77aebc1bf.bundle.js
[edit]
[-] product-add-to-cart.51a22e1fbd8f914ab3d5.bundle.min.js
[edit]
[-] off-canvas-editor.3501c11d63bc4f4d5b89.bundle.js
[edit]
[-] portfolio.4cd5da34009c30cb5d70.bundle.min.js
[edit]
[-] woocommerce-notices.ee407e8319d2ee060119.bundle.js
[edit]
[-] hotspot.d513dd152bf605a2ffbf.bundle.js
[edit]
[-] page-transitions.js
[edit]
[-] menu-title-keyboard-handler.dff562edd49e93d1658e.bundle.min.js
[edit]
[-] webpack-pro.runtime.js
[edit]
[-] mega-menu-editor.905833fcb6c66b951d7e.bundle.js
[edit]
[-] popup.996738ad83c089bcc0b9.bundle.js
[edit]
[-] form.3b797cf593ad0ec04b83.bundle.js
[edit]
[-] custom-code.js
[edit]
[-] search-form.8941aba5c12cdb05fb7c.bundle.js
[edit]
[-] posts.e99f84b83c36d4568ffe.bundle.js
[edit]
[-] floating-bars-var-2.6e9b0bce703a2a6f2410.bundle.min.js
[edit]
[-] countdown.6e87ca40d36793d92aea.bundle.js
[edit]
[-] gutenberg-woocommerce-notice.min.js
[edit]
[-] woocommerce-my-account.7a9d36b2c12b970c6616.bundle.js
[edit]
[-] loop-carousel.5108cb72ebb124297adb.bundle.js
[edit]
[-] search-form.b7065999d77832a1b764.bundle.min.js
[edit]
[-] woocommerce-menu-cart.eb61fe086245485310a4.bundle.min.js
[edit]
[-] animated-headline.73c41dd605898fe2d075.bundle.min.js
[edit]
[-] slides.bcd16bbde90338846bd7.bundle.js
[edit]
[-] contact-buttons.b9e4576d72aaeeaa8e80.bundle.js
[edit]
[-] form-submission-admin.min.js
[edit]
[-] app.min.js
[edit]
[-] nested-carousel.10dc0cdc82d55919a863.bundle.min.js
[edit]
[-] archive-posts.16a93245d08246e5e540.bundle.min.js
[edit]
[-] preview.min.js
[edit]
[-] woocommerce-menu-cart.81f5bafc26b94cc86238.bundle.js
[edit]
[-] display-conditions.js
[edit]
[-] floating-bars-var-3.f126e30880b01ca9a308.bundle.js
[edit]
[-] woocommerce-cart.79b5dc500681930471c6.bundle.js
[edit]
[-] contact-buttons-var-10.83d4216a4d1a44095e5c.bundle.min.js
[edit]
[-] code-highlight.d4867c919d0858f748df.bundle.js
[edit]
[-] media-carousel.afbaabb756a7c18ddb09.bundle.min.js
[edit]
[-] social.f215e8a3efafbdbeb7ef.bundle.min.js
[edit]
[-] webpack-pro.runtime.min.js
[edit]
[-] screenshot.js
[edit]
[-] media-carousel.04412cb9b4479aa37408.bundle.js
[edit]
[-] 52e03298e7f0852c96a1.bundle.min.js
[edit]
[-] posts.aec59265318492b89cb5.bundle.min.js
[edit]
[-] woocommerce-purchase-summary.c8767542fa302a7f351f.bundle.js
[edit]
[-] qunit-tests.min.js
[edit]
[-] woocommerce-checkout-page.776b4cec45070fe32636.bundle.min.js
[edit]
[-] countdown.0e9e688751d29d07a8d3.bundle.min.js
[edit]
[-] d241154d3774d66da9eb.bundle.min.js
[edit]
[-] jszip.vendor.a3c65615c1de5560962d.bundle.js
[edit]
[-] loop.da32028bc945271f8c7a.bundle.js
[edit]
[-] table-of-contents.1cfda3ead7ac082861dd.bundle.min.js
[edit]
[-] loop-filter-editor.46a4c013b80a381a50c9.bundle.js
[edit]
[-] taxonomy-filter.ce05524d53c2d4c5aa24.bundle.js
[edit]
[-] woocommerce-notices.bcee9b5e1c8f65ac7927.bundle.min.js
[edit]
[-] floating-bars-var-3.e3ae97fbef2242a8b036.bundle.min.js
[edit]
[-] page-transitions.min.js
[edit]
[-] loop-filter-editor.67dfa5d044d7bd86bd6f.bundle.min.js
[edit]
[-] mega-menu.271d46d2e5a8185428d0.bundle.js
[edit]
[-] lottie.a02a01f29c0733918ac7.bundle.js
[edit]
[-] 52e03298e7f0852c96a1.bundle.min.js.LICENSE.txt
[edit]