(function($) { "use strict"; $(document).ready(function() { // function for compare conditional values function checkFieldLogic(compareFieldValue, conditionOperation, compareValue) { conditionOperation = decodeHTMLEntities(conditionOperation); compareValue === null ? decodeHTMLEntities(compareValue) : decodeHTMLEntities(compareValue).trim(); compareFieldValue = compareFieldValue === null ? decodeHTMLEntities(compareFieldValue) : compareFieldValue.trim(); var values = compareFieldValue.split(','); var matchFound = values.some(function(value) { return value.trim() === compareValue; }); switch (conditionOperation) { case "==": return matchFound && '' !== compareFieldValue; case "!=": return !matchFound && compareFieldValue !== ""; case ">": return parseInt(compareFieldValue) > parseInt(compareValue); case "<": return parseInt(compareFieldValue) < parseInt(compareValue); default: return false; } } function decodeHTMLEntities(text) { var textArea = document.createElement('textarea'); textArea.innerHTML = text; return textArea.value; } // function to add hidden class when form load function addHiddenClass(form, formId) { var logicData = $('#cfef_logic_data_'+formId).val(); if (logicData && logicData !== "undefined") { try { logicData = jQuery.parseJSON(logicData); $.each(logicData, function(logic_key, logic_value) { var field; if ($(form).find(".is-field-group-" + logic_key).length) { field = $(form).find(".is-field-group-" + logic_key).closest(".cool-form__field-group"); } else { field = getFieldMainDivById(logic_key, form); } // Ensure field exists before attempting to modify it if (!field || field.length === 0) { return; // Skip to the next iteration } var displayMode = logic_value.display_mode; var fireAction = logic_value.fire_action; var conditionPassFail = []; $.each(logic_value.logic_data, function(conditional_logic_key, conditional_logic_values) { if(conditional_logic_values.cfef_logic_field_id) { var value_id = getFieldEnteredValue(conditional_logic_values.cfef_logic_field_id, form); conditionPassFail.push(checkFieldLogic(value_id, conditional_logic_values.cfef_logic_field_is, conditional_logic_values.cfef_logic_compare_value)); } }); var conditionResult = fireAction == "All" ? conditionPassFail.every(function(fvalue) { return fvalue === true; }) : conditionPassFail.some(function(fvalue) { return fvalue === true; }); if (displayMode == "show") { if (!conditionResult) { field.addClass("cfef-hidden"); } } else { if (conditionResult) { field.addClass("cfef-hidden"); } } }); } catch (e) { console.error("Error parsing JSON:", e); } } } // function to check all the conditions valid or not . and based on that condition shosw and hide the fields function logicLoad(form, formId) { var logicData =$('#cfef_logic_data_'+formId).val(); if (logicData && logicData !== "undefined") { try { logicData = jQuery.parseJSON(logicData); $.each(logicData, function (logic_key, logic_value) { if ($(form).find(".is-field-group-" + logic_key).length) { field = $(form).find(".is-field-group-" + logic_key).closest( ".cool-form__field-group" ) } else { if ( $(form).find(".is-field-group-" + logic_key).hasClass( "is-field-type-step" ) ) { setTimeout(() => { $(form).find(".is-field-group-" + logic_key) .find(".cool-form__submit-group") .find( ".is-field-type-next, .cool-form__submit-group" ) .find(".cool-form__button") .attr("id", "form-field-" + logic_key) .closest( ".is-field-type-next, .cool-form__submit-group" ) .addClass("cfef-step-field"); var field = getFieldMainDivById(logic_key, form); performFieldLogic( field, logic_value, form, logic_key, formId ); }, 500); } var field = getFieldMainDivById(logic_key, form); performFieldLogic(field, logic_value, form, logic_key, formId); } performFieldLogic(field, logic_value, form, logic_key, formId); }); } catch (e) { console.error("Error parsing JSON:", e); } } } function performFieldLogic(field, logic_value, form, logic_key, formId){ var displayMode= logic_value.display_mode; var fireAction = logic_value.fire_action; var file_types = logic_value.file_types; var conditionPassFail = []; $.each(logic_value.logic_data, function(conditional_logic_key, conditional_logic_values) { var dependent_fi = $(".is-field-group-" + conditional_logic_values.cfef_logic_field_id, form); if(dependent_fi.hasClass('is-field-group-acceptance') || dependent_fi.hasClass('is-field-type-acceptance')){ dependent_fi.find('.mdc-form-field .mdc-checkbox input').click(()=>{ if(dependent_fi.find('.mdc-form-field .mdc-checkbox input')[0].checked === true){ dependent_fi.find('.mdc-form-field .mdc-checkbox input').val('on') }else{ dependent_fi.find('.mdc-form-field .mdc-checkbox input').val('') } }) } var hiddenDiv = dependent_fi[0]; var is_field_hidden = hiddenDiv ? hiddenDiv.classList.contains('cfef-hidden') : hiddenDiv; if(conditional_logic_values.cfef_logic_field_id){ var value_id = getFieldEnteredValue(conditional_logic_values.cfef_logic_field_id, form); var value = is_field_hidden ? false : checkFieldLogic(value_id, conditional_logic_values.cfef_logic_field_is, conditional_logic_values.cfef_logic_compare_value); conditionPassFail.push(value); } }); var conditionResult = fireAction == "All" ? conditionPassFail.every(function(fvalue) { return fvalue === true; }) : conditionPassFail.some(function(fvalue) { return fvalue === true; }); if (displayMode== "show") { if (conditionResult) { field.removeClass("cfef-hidden"); if(field.hasClass('is-field-required')){ logicFixedRequiredShow(field,file_types); } } else { field.addClass("cfef-hidden"); if(field.hasClass('is-field-required')){ logicFixedRequiredHidden(field, logic_key,file_types); } } } else { if (conditionResult) { if (field.hasClass("cfef-step-field")) { var container = field.closest(".cool-form__submit-group"); // Get the inner text of the button (assuming the "Next" button has a data attribute for direction) var nextButtonText = container .find('button[id^="form-field-"]') .text() .trim(); // If the message hasn't been added yet, insert it and replace "Next" with the actual button text if (container.prev(".cfef-step-field-text").length === 0) { container.before( '
No input is required on this step. Just click "' + nextButtonText + '" to proceed.
' ); } } else { // Check if field exists before adding the class if (field && field.length > 0) { field.addClass("cfef-hidden"); if (field.hasClass("is-field-required")) { logicFixedRequiredHidden(field, logic_key, file_types); } } } } else { // If the field has the "cfef-step-field" class, remove the appended message if (field.hasClass("cfef-step-field")) { var container = field.closest(".cool-form__submit-group"); container.prev(".cfef-step-field-text").remove(); } if (field.hasClass("is-field-required")) { logicFixedRequiredShow(field, file_types, "visible"); } // Check if field exists before removing the class if (field && field.length > 0) { field.removeClass("cfef-hidden"); } } } } function logicFixedRequiredShow(formField,file_types,status) { if (formField.hasClass("is-field-type-radio") && formField.find('input[value="^newOptionTest"]').length !== 0) { formField.find('input[value="^newOptionTest"]').closest("div.mdc-radio").remove(); let checkedRadio = formField.find('input[checked="checked"]')[0] checkedRadio ? $(checkedRadio).prop('checked', true): $(checkedRadio).prop('checked', false) } else if (formField.hasClass("is-field-type-acceptance")) { const acceptanceInput = formField.find('.mdc-form-field .mdc-checkbox input') if (acceptanceInput.hasClass("acceptance_check_toggle")) { acceptanceInput[0].checked = false; acceptanceInput.removeClass("acceptance_check_toggle"); } } else if (formField.hasClass("is-field-type-checkbox") && formField.find('input[value="newchkTest"]').length !== 0) { formField.find('input[value="newchkTest"]').closest("span.is-field-option").remove(); } else if (formField.hasClass("is-field-type-date") && formField.find("input").val() === "1003-01-01") { formField.find("input")[0].value = '' flatpickr(formField.find("input")[0], {}); } else if (formField.hasClass("is-field-type-time") && formField.find("input").val() === "11:59") { let value=formField.find("input").attr('value') ? formField.find("input").attr('value') : ''; formField.find("input").val(value); } else if (formField.hasClass("is-field-type-tel") && formField.find("input").val() === "+1234567890") { let value=formField.find("input").attr('value') ? formField.find("input").attr('value') : ''; formField.find("input").val(value); } else if (formField.hasClass("is-field-type-url") && formField.find("input").val() === "https://testing.com") { let value=formField.find("input").attr('value') ? formField.find("input").attr('value') : ''; formField.find("input").val(value); } else if (formField.hasClass("is-field-type-email") && formField.find("input").val() === "cool_plugins@abc.com") { let value=formField.find("input").attr('value') ? formField.find("input").attr('value') : ''; formField.find("input").val(value); } else if (formField.hasClass("is-field-type-number") && formField.find("input").val() === "000") { let value=formField.find("input").attr('value') ? formField.find("input").attr('value') : ''; formField.find("input").val(value); } else if (formField.hasClass("is-field-type-upload")) { const firstType = file_types.split(',')[0]; const inputField=formField.find('input'); const fileName = `${my_script_vars.pluginConstant}assets/images/placeholder.${firstType}`; const inputValue=inputField.val(); if(inputValue.indexOf(fileName) !== -1){ inputField.val(''); } } else if (formField.hasClass("elementor-field-type-textarea") && formField.find("textarea").val() === "cool_plugins") { let defaultVal = formField.find("textarea")[0].innerHTML; let value = formField.find("textarea")[0].innerHTML ? formField.find("textarea")[0].innerHTML : ''; formField.find("textarea").val(value); } else if (formField.hasClass("is-field-type-select")) { var selectBox = formField.find("select"); if (selectBox.length > 0 && selectBox.find("option").length > 0) { var selectedValue = selectBox.val(); if (selectedValue == 'premium1@' || selectedValue[0] == 'premium1@') { selectBox.find("option[value='premium1@']").remove(); const selectedOption = selectBox.find("option[selected='selected']")[0]; let value = $(selectedOption).attr('value') ? $(selectedOption).attr('value'):selectBox.find("option:first").val() selectBox.val(value); } } } else { var FieldValues = formField.find("input").val(); if (FieldValues == "cool23plugins") { let value=formField.find("input").attr('value') ? formField.find("input").attr('value') : ''; formField.find("input").val(value); } } } // Add the default value when form Field is hidden function logicFixedRequiredHidden(formField, fieldKey, file_types) { if (formField.hasClass("is-field-type-radio")) { var groupclass = '.is-field-group-' + fieldKey; const field2 = $(groupclass); if (field2.length > 0) { if (field2.find('input[value="^newOptionTest"]').length === 0) { const newOption = $(`