/* eslint-env jquery */ //------------------------------------------------- // INITIALIZING PAGE //------------------------------------------------- jQuery( document ).ready( function () { InitializeEditor(); } ); function InitializeEditor() { jQuery( '.search-button > input' ).on( 'keyup change click paste', function( e ) { FieldSearch( this ); addClearButton( this ); } ); jQuery( '.search-button > input' ).on( 'keyup paste', function( e ) { jQuery( '.sidebar' ).tabs( { active: 0, } ); } ); jQuery( '.clear-button' ).on( 'click', function( e ) { clearInput( this ); } ); jQuery( '.gf-topmenu-dynamic' ).on( 'click', function( e ) { var position = jQuery( this ).position(); jQuery( '.gf-popover' ).css( 'left', ( position.left + ( jQuery( this ).width() / 2 ) + 6 ) + 'px' ); var currentDisplay = jQuery( '.gf-popover' ).css( 'display' ); jQuery( '.gf-popover' ).css( 'display', ( currentDisplay === 'block' ? 'none' : 'block' ) ); } ); jQuery( '.gf-popover__button' ).on( 'click', function() { var url = jQuery( this ).data( 'url' ); if ( url !== '' ) { window.location.href = url; } } ); jQuery( document ).on( 'click', function( e ) { var container = jQuery( ".gf-topmenu-dynamic" ); if ( ! container.is( e.target ) && container.has( e.target ).length === 0 ) { jQuery( '.gf-popover' ).hide(); } } ); jQuery( '.add-buttons button' ).each( function() { var $this = jQuery( this ); var type = $this.attr( 'data-type' ); var onClick = $this.attr( 'onclick' ); if ( typeof type == 'undefined' && onClick ) { // deprecate buttons without the type data attribute if ( onClick.indexOf( 'StartAddField' ) > -1 ) { if ( /StartAddField\([ ]?'(.*?)[ ]?'/.test( onClick ) ) { type = onClick.match( /'(.*?)'/ )[ 1 ]; $this.data( 'type', type ); } } } if ( typeof type != 'undefined' && ( typeof onClick == 'undefined' || onClick == '') ) { jQuery( this ).click( function() { StartAddField( type ); } ); } } ); jQuery( '#field_choices, #field_columns' ).sortable( { axis: 'y', handle: '.field-choice-handle', update: function( event, ui ) { var fromIndex = ui.item.data( "index" ); var toIndex = ui.item.index(); MoveFieldChoice( fromIndex, toIndex ); }, } ); jQuery( '.field_input_choices' ).sortable( { axis: 'y', handle: '.field-choice-handle', update: function( event, ui ) { var fromIndex = ui.item.data( "index" ); var toIndex = ui.item.index(); var inputId = ui.item.data( "input_id" ); var $ul = ui.item.parent(); MoveInputChoice( $ul, inputId, fromIndex, toIndex ); }, } ); if ( typeof gf_global[ 'view' ] == 'undefined' || gf_global[ 'view' ] != 'settings' ) InitializeForm( form ); //for backwards compatibility <1.7 jQuery( document ).trigger( 'gform_load_form_settings', [ form ] ); SetupUnsavedChangesWarning(); //log deprecated events if ( window.console ) { var doc = jQuery( document )[ 0 ]; var data = jQuery.hasData( doc ) && jQuery._data( doc ); if ( data ){ var deprecatedEvents = new Array( 'gform_load_form_settings' ); for ( var e in data.events ) { if ( jQuery.inArray( e, deprecatedEvents ) !== -1 ) { console.log( 'Gravity Forms API warning: The jQuery event "' + e + '" is deprecated on this page since version 1.7' ); } } } } // store original value of input before change jQuery( document ).on( 'focus', '#field_choices input.field-choice-text, #field_choices input.field-choice-value', function() { jQuery( this ).data( 'previousValue', jQuery( this ).val() ); } ); InitializeFieldSettings(); jQuery( '.sidebar' ).tabs({ activate: function( event, ui ) { ui.newPanel.css("display","flex"); } }); jQuery( '#field_settings' ).tabs(); jQuery( '.field_settings' ).accordion( gform.options.jqEditorAccordions ); jQuery( '#add_fields_menu .panel-block-tabs__wrapper' ).accordion( gform.options.jqAddFieldAccordions ); jQuery( '.panel-block-tabs' ).find( '.panel-block-tabs__toggle' ).each( function( i, element ) { jQuery( element ).append( '' ); } ); ResetFieldAccordions(); // Loop keypresses in the field settings area through them, or focus back on the active fields // settings trigger if esc is used. jQuery( '.panel-block > .field_settings' ).on( 'keydown', function( e ) { // esc key, refocus the settings trigger in the editor preview for the active field if ( e.keyCode === 27 ) { jQuery( '.gfield.field_selected .gfield-edit').focus(); return; } // not tab key, exit if ( e.keyCode !== 9 ) { return; } // get visible focusable items var focusable = gform.tools.getFocusable( this ); // store first and last visible item var firstFocusableEl = focusable[0]; var lastFocusableEl = focusable[ focusable.length - 1 ]; // shiftkey was involved, we're going backwards, focus last el if we are leaving first if ( e.shiftKey ) /* shift + tab */ { if (document.activeElement === firstFocusableEl) { lastFocusableEl.focus(); e.preventDefault(); } // regular tabbing direction, bring us back to first el at reaching end } else /* tab */ { if (document.activeElement === lastFocusableEl) { firstFocusableEl.focus(); e.preventDefault(); } } } ); // Prior to gravityformsppcp 2.3, the PayPal buttons show up in the editor instead of in the sidebar. jQuery( '#field_submit #gform_ppcp_smart_payment_buttons' ).remove(); } function InitializeFieldSettings(){ gform.addFilter( 'gform_editor_field_settings', 'hideDefaultMarginOnTopLabelAlignment' ); jQuery('#field_max_file_size').on('input propertychange', function(){ var $this = jQuery(this), inputValue = parseInt($this.val()); var value = inputValue ? inputValue : ''; SetFieldProperty('maxFileSize', value); }).on('change', function(){ var field = GetSelectedField(); var value = field.maxFileSize ? field.maxFileSize : ''; var maskedValue = value === '' ? '' : value + "MB"; this.value = maskedValue; }); jQuery(document).on('input propertychange', '.field_default_value', function(){ SetFieldDefaultValue(this.value); }); jQuery(document).on('input propertychange', '.field_placeholder, .field_placeholder_textarea', function(){ SetFieldPlaceholder(this.value); var field = GetSelectedField(); if ( field.label === '' ) { setFieldError( 'label_setting', 'below' ); if ( this.value !== '' ) { resetFieldError( 'label_setting' ); } } }); jQuery('#field_choices').on('change' , '.field-choice-price', function() { var field = GetSelectedField(); var i = jQuery(this).parent('li').index(); var price = field.choices[i].price; this.value = price; }); jQuery('.field_input_choices') .on('input propertychange', 'input', function () { var $li = jQuery(this).closest('li'), index = $li.data('index'), inputId = $li.data('input_id'), value = $li.find('.field-choice-value').val(), text = $li.find('.field-choice-text').val(); SetInputChoice(inputId, index, value, text); }) .on('click keypress', 'input:radio, input:checkbox', function () { var $li = jQuery(this).closest('li'), index = $li.data('index'), inputId = $li.data('input_id'), value = $li.find('.field-choice-value').val(), text = $li.find('.field-choice-text').val(); SetInputChoice(inputId, index, value, text); }) .on('click keypress', '.field-input-insert-choice', function () { var $li = jQuery(this).closest('li'), $ul = $li.closest('ul'), index = $li.data('index'), inputId = $li.data('input_id'); InsertInputChoice($ul, inputId, index + 1); }) .on('click keypress', '.field-input-delete-choice', function () { var $li = jQuery(this).closest('li'), $ul = $li.closest('ul'), index = $li.data('index'), inputId = $li.data('input_id'); DeleteInputChoice($ul, inputId, index); }); jQuery('.field_input_choice_values_enabled').on('click keypress', function(){ var $container = jQuery(this).parent().siblings('.gfield_settings_input_choices_container'); ToggleInputChoiceValue($container, this.checked); var $ul = $container.find('ul'); SetInputChoices($ul); }); jQuery('.input_placeholders_setting') .on('input propertychange', '.input_placeholder', function(){ var inputId = jQuery(this).closest('.input_placeholder_row').data('input_id'); SetInputPlaceholder(this.value, inputId); }) .on('input propertychange', '#field_single_placeholder', function(){ SetFieldPlaceholder(this.value); }); //add onclick event to disable placeholder when the rich text editor is on jQuery('#field_rich_text_editor').on('click keypress', function(){ var field = GetSelectedField(); if (this.checked ){ var disablePlaceHolder = true; //see if a field is using this in conditional logic and warn it will not work with rich text editor if ( HasConditionalLogicDependency(field.id,field.value) ){ if ( ! confirm(gf_vars.conditionalLogicRichTextEditorWarning) ){ //user cancelled setting rte, uncheck jQuery('#field_rich_text_editor').prop('checked', false); disablePlaceHolder = false; } } if (disablePlaceHolder){ jQuery('#field_placeholder, #field_placeholder_textarea').prop('disabled', true); jQuery('span#placeholder_warning').css('display','block'); } } else{ jQuery('#field_placeholder, #field_placeholder_textarea').prop('disabled', false); jQuery('span#placeholder_warning').css('display','none'); } }); jQuery('.prepopulate_field_setting') .on('input propertychange', '.field_input_name', function(){ var inputId = jQuery(this).closest('.field_input_name_row').data('input_id'); SetInputName(this.value, inputId); }) .on('input propertychange', '#field_input_name', function(){ SetInputName(this.value); }); jQuery( '.custom_inputs_setting, .custom_inputs_sub_setting, .sub_labels_setting' ) .on( 'change', '.gform-field__toggle-input', function() { var inputId = jQuery( this ).closest( '.gform-field__toggle' ).data( 'input_id' ); ToggleInputHidden( jQuery( this ), inputId ); } ) .on( 'click', '#field_password_fields_container .gform-field__toggle', function() { // special handling for the password field checkboxes var inputId = jQuery( this ).data( 'input_id' ); var toggleInput = jQuery( this ).find( '.gform-field__toggle-input' ); toggleInput[ 0 ].focus(); toggleInput[ 0 ].checked = ! toggleInput[ 0 ].checked; ToggleInputHidden( toggleInput, inputId ); } ) .on( 'input propertychange', '.field_custom_input_default_label', function() { var inputId = jQuery( this ).closest( '.field_custom_input_row' ).data( 'input_id' ); SetInputCustomLabel( this.value, inputId ); } ) .on( 'input propertychange', '.field_single_custom_label', function() { SetInputCustomLabel( this.value ); } ); jQuery('.default_input_values_setting') .on('input propertychange', '.default_input_value', function(){ var inputId = jQuery(this).closest('.default_input_value_row').data('input_id'); SetInputDefaultValue(this.value, inputId); }) .on('input', '#field_single_default_value', function(){ SetFieldDefaultValue(this.value); }); jQuery('.choices_setting, .columns_setting') .on('input propertychange', '.field-choice-input', function(e){ var $this = jQuery(this); var li = $this.closest('li.field-choice-row'); var inputType = li.data('input_type'); var i = li.data('index'); SetFieldChoice( inputType, i); if($this.hasClass('field-choice-text') || $this.hasClass('field-choice-value')){ CheckChoiceConditionalLogicDependency(this); e.stopPropagation(); } }); jQuery('#field_enable_copy_values_option').on('click keypress', function(){ SetCopyValuesOptionProperties(this.checked); ToggleCopyValuesOption( false ); if(this.checked == false){ ToggleCopyValuesActivated(false); } }); jQuery('#field_copy_values_option_label').on('input propertychange', function(){ SetCopyValuesOptionLabel(this.value); }); jQuery('#field_copy_values_option_field').on('change', function(){ SetFieldProperty('copyValuesOptionField', jQuery(this).val()); }); jQuery('#field_copy_values_option_default').on('change', function(){ SetFieldProperty('copyValuesOptionDefault', this.checked == true ? 1 : 0); ToggleCopyValuesActivated(this.checked); }); jQuery('#field_label') .on('input propertychange', function(){ SetFieldLabel( this.value ); SetAriaLabel( this.value ); if ( this.value !== '' ) { resetFieldError( 'label_setting' ); ResetFieldAccessibilityWarning( 'label_setting' ); } }) .on( 'blur', function () { if ( this.value === '' ) { setFieldError( 'label_setting', 'below' ); } } ); jQuery('#submit_text').on('input propertychange', function(){ jQuery('#gform_submit_button_' + form.id ).val( this.value ); }); jQuery('#submit_image').on('input propertychange', function(){ ToggleSubmitType( false ); }); jQuery('#field_description').on('blur', function(){ var field = GetSelectedField(); if ( field.description != this.value ) { SetFieldDescription(this.value); RefreshSelectedFieldPreview(); } if ( field.label === '' ) { setFieldError( 'label_setting', 'below' ); if ( this.value !== '' ) { resetFieldError( 'label_setting' ); } } }); jQuery( 'input[ name="field_visibility" ]' ).on( 'DOMSubTreeModified change', function() { var field = GetSelectedField(); SetFieldProperty( 'visibility', this.value ); var hidden_markup = '
Hidden
'; if ( field[ 'visibility' ] === 'hidden' ) { jQuery( '#field_' + field.id ).addClass( 'admin-hidden' ); jQuery( '#field_' + field.id + ' .gfield_label' ).before( hidden_markup ); jQuery( '#field_' + field.id + ' .gsection_title' ).before( hidden_markup ); } else { jQuery( '#field_' + field.id ).removeClass( 'admin-hidden' ); jQuery( '#field_' + field.id + ' .admin-hidden-markup' ).remove(); } }); jQuery('#field_checkbox_label').on('input propertychange', function(){ var field = GetSelectedField(); if ( field.checkboxLabel != this.value ) { SetFieldCheckboxLabel(this.value); RefreshSelectedFieldPreview(); } }); jQuery('#field_content').on('input propertychange', function(){ SetFieldProperty('content', this.value); }); jQuery('#next_button_text_input, #next_button_image_url').on('input propertychange', function(){ SetPageButton('next'); }); jQuery('#previous_button_image_url, #previous_button_text_input').on('input propertychange', function(){ SetPageButton('previous'); }); jQuery('#field_custom_field_name_text').on('input propertychange', function(){ SetFieldProperty('postCustomFieldName', this.value); }); jQuery('#field_customfield_content_template').on('input propertychange', function(){ SetCustomFieldTemplate(); }); jQuery('#gfield_calendar_icon_url').on('input propertychange', function(){ SetFieldProperty('calendarIconUrl', this.value); }); jQuery('#field_max_files').on('input propertychange', function(){ SetFieldProperty('maxFiles', this.value); }); jQuery('#field_maxrows').on('input propertychange', function(){ SetFieldProperty('maxRows', this.value); }); jQuery('#field_mask_text').on('input propertychange', function(){ SetFieldProperty('inputMaskValue', this.value); }); jQuery('#field_file_extension').on('input propertychange', function(){ SetFieldProperty('allowedExtensions', this.value); }); jQuery('#field_maxlen') .on('keypress', function(event){ return ValidateKeyPress(event, GetMaxLengthPattern(), false) }) .on('change keyup', function(){ SetMaxLength(this); }); jQuery('#field_range_min').on('input propertychange', function(){ SetFieldProperty('rangeMin', this.value); }); jQuery('#field_range_max').on('input propertychange', function(){ SetFieldProperty('rangeMax', this.value); }); jQuery('#field_calculation_formula').on('input propertychange', function(){ SetFieldProperty('calculationFormula', this.value.trim()); }); jQuery('#field_error_message').on('input propertychange', function(){ SetFieldProperty('errorMessage', this.value); }); jQuery( '#field_css_class' ).on( 'focus', function () { jQuery( this ).data( 'previousClass', this.value ); }).on( 'change', function() { SetFieldProperty( 'cssClass', this.value ); previousClass = jQuery( this ).data( 'previousClass' ); jQuery( '#field_' + field.id ).removeClass( previousClass ).addClass( this.value ); CheckDeprecatedReadyClass( field ); }); jQuery('#field_admin_label').on('input propertychange', function(){ SetFieldProperty('adminLabel', this.value); }); jQuery( '.autocomplete_setting' ) .on( 'input propertychange', '.input_autocomplete', function() { var inputId = jQuery( this ).closest( '.input_autocomplete_row' ).data( 'input_id') ; SetInputAutocomplete( this.value, inputId ); } ) .on( 'input propertychange', '#field_autocomplete_attribute', function() { SetFieldProperty( 'autocompleteAttribute', this.value ); }); jQuery('#field_add_icon_url').on('input propertychange', function(){ SetFieldProperty('addIconUrl', this.value); }); jQuery('#field_delete_icon_url').on('input propertychange', function(){ SetFieldProperty('deleteIconUrl', this.value); }); } /** * Filters out the Hide Default Margins option when labels are top-aligned. * * @since 2.5 * * @param {array} settings The settings for this field. * @param {array} field The current field. * * @return {array} */ function hideDefaultMarginOnTopLabelAlignment( settings, field ) { if ( form[ 'labelPlacement' ] !== 'top_label' ) { return settings; } // Labels are top-aligned; remove the disable margins setting so it doesn't display. for ( var key in settings ) { if ( settings[ key ] === '.disable_margins_setting' ) { settings.splice( key, 1 ); break; } } return settings; } function InitializeForm(form){ // Submit button settings. jQuery( "#submit_text" ).val( form.button.text ); jQuery( "#submit_image" ).val( form.button.imageUrl ); if( form.button.width ) { jQuery( "#submit_width_" + form.button.width ).prop( 'checked', true ); } else { jQuery( "#submit_width_auto" ).prop( 'checked', true ); } if( form.button.location ) { jQuery( "#submit_location_" + form.button.location ).prop( 'checked', true ); } else { jQuery( "#submit_location_bottom" ).prop( 'checked', true ); } if( form.button.type ) { jQuery( "#submit_type_" + form.button.type ).prop( 'checked', true ); } else { jQuery( "#submit_type_" ).prop( 'checked', true ); } if(form.lastPageButton && form.lastPageButton.type === 'image') jQuery('#last_page_button_image').prop('checked', true); else if(!form.lastPageButton || form.lastPageButton.type !== 'image') jQuery('#last_page_button_text').prop('checked', true); jQuery('#last_page_button_text_input').val(form.lastPageButton ? form.lastPageButton.text : gf_vars['previousLabel']); jQuery('#last_page_button_image_url').val(form.lastPageButton ? form.lastPageButton.imageUrl : ''); TogglePageButton('last_page', true); if(form.postStatus) jQuery('#field_post_status').val(form.postStatus); if(form.postAuthor) jQuery('#field_post_author').val(form.postAuthor); //default to checked if(form.useCurrentUserAsAuthor === undefined) form.useCurrentUserAsAuthor = true; jQuery('#gfield_current_user_as_author').prop('checked', form.useCurrentUserAsAuthor ? true : false); if(form.postCategory) jQuery('#field_post_category').val(form.postCategory); if(form.postFormat) jQuery('#field_post_format').val(form.postFormat); if(form.postContentTemplateEnabled){ jQuery('#gfield_post_content_enabled').prop('checked', true); jQuery('#field_post_content_template').val(form.postContentTemplate); } else{ jQuery('#gfield_post_content_enabled').prop('checked', false); jQuery('#field_post_content_template').val(''); } TogglePostContentTemplate(true); if(form.postTitleTemplateEnabled){ jQuery('#gfield_post_title_enabled').prop('checked', true); jQuery('#field_post_title_template').val(form.postTitleTemplate); } else{ jQuery('#gfield_post_title_enabled').prop('checked', false); jQuery('#field_post_title_template').val(''); } TogglePostTitleTemplate(true); jQuery('#gform_pagination, #gform_last_page_settings').on('click', function ( event ) { FieldClick(this); event.stopPropagation(); }); jQuery('#gform_fields').on('click', '.gfield', function ( event ) { FieldClick(this); event.stopPropagation(); }); var paginationType = form['pagination'] && form['pagination']['type'] ? form['pagination']['type'] : 'percentage'; var paginationSteps = paginationType === 'steps' ? true : false; var paginationPercentage = paginationType === 'percentage' ? true : false; var paginationNone = paginationType === 'none' ? true : false; if(paginationSteps) jQuery('#pagination_type_steps').prop('checked', true); else if(paginationPercentage) jQuery('#pagination_type_percentage').prop('checked', true); else if(paginationNone) jQuery('#pagination_type_none').prop('checked', true); jQuery('#first_page_css_class').val(form['firstPageCssClass']); TogglePageBreakSettings(); InitPaginationOptions( true ); InitializeFields(); } function LoadFieldSettings(){ // Loads settings field = GetSelectedField(); var inputType = GetInputType(field); // Set the field sidebar message. setSidebarFieldMessage(); // Reset accessibility warnings resetAllFieldAccessibilityWarnings(); // Reset errors resetAllFieldErrors(); // Reset notices resetAllFieldNotices(); // Reset deprecated ready class notice resetDeprecatedReadyClassNotice(); jQuery("#field_label").val(field.label); if(field.type == "html"){ jQuery(".tooltip_form_field_label").hide(); jQuery(".tooltip_form_field_label_html").show(); //jQuery(".tooltip_form_field_label").hide(); } else{ jQuery(".tooltip_form_field_label").show(); jQuery(".tooltip_form_field_label_html").hide(); } jQuery("#field_admin_label").val(field.adminLabel); jQuery("#field_content").val(field["content"] == undefined ? "" : field["content"]); jQuery("#post_custom_field_type").val(field.inputType); jQuery("#post_tag_type").val(field.inputType); jQuery("#field_size").val(field.size); jQuery("#field_required").prop("checked", field.isRequired == true ? true : false); jQuery("#field_margins").prop("checked", field.disableMargins == true ? true : false); jQuery("#field_no_duplicates").prop("checked", field.noDuplicates == true ? true : false); jQuery("#field_default_value").val(field.defaultValue == undefined ? "" : field.defaultValue); jQuery("#field_default_value_textarea").val(field.defaultValue == undefined ? "" : field.defaultValue); jQuery("#field_autocomplete_attribute").val(field.autocompleteAttribute); jQuery("#field_description").val(field.description == undefined ? "" : field.description); jQuery("#field_description").attr('placeholder', field.descriptionPlaceholder == undefined ? "" : field.descriptionPlaceholder); jQuery("#field_checkbox_label").val(field.checkboxLabel == undefined ? "" : field.checkboxLabel); jQuery("#field_css_class").val(field.cssClass == undefined ? "" : field.cssClass); jQuery("#field_range_min").val( field.rangeMin == undefined || field.rangeMin === false ? "" : field.rangeMin); jQuery("#field_range_max").val(field.rangeMax == undefined || field.rangeMax === false ? "" : field.rangeMax); jQuery("#field_name_format").val(field.nameFormat); jQuery('#field_force_ssl').prop('checked', field.forceSSL ? true : false); if( '' !== field.cssClass ) { CheckDeprecatedReadyClass( field ); } if (field.useRichTextEditor){ //disable the placeholder when the rich text editor is checked, show message indicating why disabled jQuery('#field_placeholder, #field_placeholder_textarea').prop('disabled', true); jQuery('span#placeholder_warning').css('display','block'); //jQuery('span#placeholder_warning').text('Placeholder text is not supported when using the Rich Text Editor.'); } else{ jQuery('#field_placeholder, #field_placeholder_textarea').prop('disabled', false); jQuery('span#placeholder_warning').css('display','none'); //jQuery('span#placeholder_warning').text(''); } if(typeof field.labelPlacement == 'undefined'){ field.labelPlacement = ''; } if(typeof field.descriptionPlacement == 'undefined'){ field.descriptionPlacement = ''; } if(typeof field.subLabelPlacement == 'undefined'){ field.subLabelPlacement = ''; } jQuery("#field_label_placement").val(field.labelPlacement); jQuery("#field_description_placement").val(field.descriptionPlacement); jQuery("#field_sub_label_placement").val(field.subLabelPlacement); if((field.labelPlacement == 'left_label' || field.labelPlacement == 'right_label' || (field.labelPlacement == '' && form.labelPlacement != 'top_label'))){ jQuery('#field_description_placement_container').hide(); } else { jQuery('#field_description_placement_container').show(); } // field.adminOnly is the old property which stored the visibility setting; only reference if field.visibility is not set SetFieldVisibility( field.visibility, true ); if(typeof field.placeholder == 'undefined'){ field.placeholder = ''; } jQuery("#field_placeholder, #field_placeholder_textarea").val(field.placeholder); jQuery("#field_file_extension").val(field.allowedExtensions == undefined ? "" : field.allowedExtensions); jQuery("#field_multiple_files").prop("checked", field.multipleFiles ? true : false); jQuery("#field_max_files").val(field.maxFiles ? field.maxFiles : "" ); jQuery("#field_max_file_size").val(field.maxFileSize ? field.maxFileSize + "MB" : "" ); ToggleMultiFile(true); jQuery("#field_phone_format").val(field.phoneFormat); jQuery("#field_error_message").val(field.errorMessage); jQuery('#field_select_all_choices').prop('checked', field.enableSelectAll ? true : false); jQuery('#field_other_choice').prop('checked', field.enableOtherChoice ? true : false); jQuery('#field_add_icon_url').val(field.addIconUrl ? field.addIconUrl : ""); jQuery('#field_delete_icon_url').val(field.deleteIconUrl ? field.deleteIconUrl : ""); jQuery('#gfield_enable_enhanced_ui').prop('checked', field.enableEnhancedUI ? true : false); jQuery("#gfield_password_strength_enabled").prop("checked", field.passwordStrengthEnabled == true ? true : false); jQuery("#gfield_password_visibility_enabled").prop("checked", field.passwordVisibilityEnabled == true ? true : false); TogglePasswordVisibility( true ); jQuery("#gfield_min_strength").val(field.minPasswordStrength == undefined ? "" : field.minPasswordStrength); TogglePasswordStrength( true ); jQuery("#gfield_email_confirm_enabled").prop("checked", field.emailConfirmEnabled == true ? true : false); //Creating blank item for number format to existing number fields so that user is not force into a format (for backwards compatibility) if(!field.numberFormat){ if(jQuery("#field_number_format #field_number_format_blank").length == 0){ jQuery("#field_number_format").prepend(""); } } else jQuery("#field_number_format_blank").remove(); jQuery("#field_number_format").val(field.numberFormat ? field.numberFormat : ""); // Handle calculation options // hide rounding option for calculation product fields if (field.type == 'product' && field.inputType == 'calculation') { field.enableCalculation = true; jQuery('.field_calculation_rounding').hide(); jQuery('.field_enable_calculation').hide(); } else { jQuery('.field_enable_calculation').show(); if (field.type == 'number' && field.numberFormat == "currency") { jQuery('.field_calculation_rounding').hide(); } else { jQuery('.field_calculation_rounding').show(); } } jQuery('#field_enable_calculation').prop('checked', field.enableCalculation ? true : false); ToggleCalculationOptions(field.enableCalculation, field); jQuery('#field_calculation_formula').val(field.calculationFormula); var rounding = gformIsNumber(field.calculationRounding) ? field.calculationRounding : "norounding"; jQuery('#field_calculation_rounding').val(rounding); jQuery("#option_field_type").val(field.inputType); var productFieldType = jQuery("#product_field_type"); productFieldType.val(field.inputType); if(has_entry(field.id)){ productFieldType.prop("disabled", true); } else{ productFieldType.prop("disabled", false); } jQuery("#donation_field_type").val(field.inputType); jQuery("#quantity_field_type").val(field.inputType); if(field["inputType"] == "hiddenproduct" || field["inputType"] == "singleproduct" || field["inputType"] == "singleshipping" || field["inputType"] == "calculation"){ var basePrice = field.basePrice == undefined ? "" : field.basePrice; jQuery("#field_base_price").val(field.basePrice == undefined ? "" : field.basePrice); SetBasePrice(basePrice); } jQuery("#shipping_field_type").val(field.inputType); jQuery("#field_disable_quantity").prop("checked", field.disableQuantity == true ? true : false); SetDisableQuantity(field.disableQuantity == true); var isPassword = field.enablePasswordInput ? true : false jQuery("#field_password").prop("checked", isPassword ? true : false); jQuery("#field_maxlen").val(typeof field.maxLength == "undefined" ? "" : field.maxLength); jQuery("#field_maxrows").val(typeof field.maxRows == "undefined" ? "" : field.maxRows); var addressType = field.addressType == undefined ? "international" : field.addressType; jQuery('#field_address_type').val(addressType); if(field.type == 'address'){ field = UpgradeAddressField(field); } if(field.type == 'email' || field.inputType == 'email' ){ field = UpgradeEmailField(field); } if(field.type === 'consent'){ field = UpgradeConsentField(field); } var defaultState = field.defaultState == undefined ? "" : field.defaultState; var defaultProvince = field.defaultProvince == undefined ? "" : field.defaultProvince; //for backwards compatibility var defaultStateProvince = addressType == "canadian" && defaultState == "" ? defaultProvince : defaultState; jQuery("#field_address_default_state_" + addressType).val(defaultStateProvince); jQuery("#field_address_default_country_" + addressType).val(field.defaultCountry == undefined ? "" : field.defaultCountry); SetAddressType( true ); jQuery("#gfield_display_alt").prop("checked", field.displayAlt == true ? true : false); jQuery("#gfield_display_title").prop("checked", field.displayTitle == true ? true : false); jQuery("#gfield_display_caption").prop("checked", field.displayCaption == true ? true : false); jQuery("#gfield_display_description").prop("checked", field.displayDescription == true ? true : false); var customFieldExists = CustomFieldExists(field.postCustomFieldName); jQuery("#field_custom_field_name_select")[0].selectedIndex = 0; jQuery("#field_custom_field_name_text").val(""); if(customFieldExists) jQuery("#field_custom_field_name_select").val(field.postCustomFieldName); else jQuery("#field_custom_field_name_text").val(field.postCustomFieldName); if(customFieldExists) jQuery("#field_custom_existing").prop("checked", true); else jQuery("#field_custom_new").prop("checked", true); ToggleCustomField( true ); jQuery('#gfield_customfield_content_enabled').prop("checked", field.customFieldTemplateEnabled ? true : false); jQuery('#field_customfield_content_template').val(field.customFieldTemplateEnabled ? field.customFieldTemplate : ""); ToggleCustomFieldTemplate(true); if(field.displayAllCategories) jQuery("#gfield_category_all").prop("checked", true); else jQuery("#gfield_category_select").prop("checked", true); ToggleCategory( true ); jQuery('#gfield_post_category_initial_item_enabled').prop("checked", field.categoryInitialItemEnabled ? true : false); jQuery('#field_post_category_initial_item').val(field.categoryInitialItemEnabled ? field.categoryInitialItem : ""); TogglePostCategoryInitialItem(true); var hasPostFeaturedImage = field.postFeaturedImage ? true : false; jQuery('#gfield_featured_image').prop('checked', hasPostFeaturedImage); if (typeof field.inputMaskIsCustom != 'boolean') { field.inputMaskIsCustom = !IsStandardMask(field.inputMaskValue); } var isStandardMask = !field.inputMaskIsCustom; jQuery("#field_input_mask").prop('checked', field.inputMask ? true : false); if(isStandardMask){ jQuery("#field_mask_standard").prop("checked", true); jQuery("#field_mask_select").val(field.inputMaskValue); } else{ jQuery("#field_mask_custom").prop("checked", true); jQuery("#field_mask_text").val(field.inputMaskValue); } ToggleInputMask(true); ToggleInputMaskOptions(true); InitAutocompleteOptions(true); if(inputType == "creditcard"){ field = UpgradeCreditCardField(field); if(!field.creditCards || field.creditCards.length <= 0) field.creditCards = ['amex', 'visa', 'discover', 'mastercard']; for(i in field.creditCards) { if(!field.creditCards.hasOwnProperty(i)) continue; jQuery('#field_credit_card_' + field.creditCards[i]).prop('checked', true); } } if(inputType == 'date'){ field = UpgradeDateField(field); } if(inputType == 'time'){ field = UpgradeTimeField(field); } CreateDefaultValuesUI(field); CreatePlaceholdersUI(field); CreateAutocompleteUI(field); CreateCustomizeInputsUI(field); CreateInputLabelsUI(field); if(!field["dateType"] && inputType == "date"){ field["dateType"] = "datepicker"; } jQuery("#field_date_input_type").val(field["dateType"]); jQuery("#gfield_calendar_icon_url").val(field["calendarIconUrl"] == undefined ? "" : field["calendarIconUrl"]); jQuery('#field_date_format').val(field['dateFormat'] == undefined ? "mdy" : field['dateFormat']); jQuery('#field_time_format').val(field['timeFormat'] == "24" ? "24" : "12"); SetCalendarIconType(field["calendarIconType"], true); ToggleDateCalendar( true ); LoadDateInputs(); LoadTimeInputs(); field.allowsPrepopulate = field.allowsPrepopulate ? true : false; //needed when property is undefined field.useRichTextEditor = field.useRichTextEditor ? true : false; jQuery("#field_prepopulate").prop("checked", field.allowsPrepopulate ? true : false); jQuery("#field_rich_text_editor").prop("checked", field.useRichTextEditor ? true : false); if(has_entry(field.id)){ jQuery('#field_rich_text_editor').prop("disabled", true); } else{ jQuery('#field_rich_text_editor').prop("disabled", false); } CreateInputNames(field); ToggleInputName( true ); var canHaveConditionalLogic = GetFirstRuleField() > 0; if(field["type"] == "page"){ LoadFieldConditionalLogic(canHaveConditionalLogic, "next_button"); LoadFieldConditionalLogic(canHaveConditionalLogic, "page"); } else if(field["type"] == "submit"){ LoadFieldConditionalLogic(canHaveConditionalLogic, "button"); } else{ LoadFieldConditionalLogic(canHaveConditionalLogic, "field"); } jQuery("#field_enable_copy_values_option").prop("checked", field.enableCopyValuesOption == true ? true : false); jQuery("#field_copy_values_option_default").prop("checked", field.copyValuesOptionDefault == true ? true : false); var copyValueOptions = GetCopyValuesFieldsOptions(field.copyValuesOptionField, field); if(copyValueOptions.length>0){ jQuery("#field_enable_copy_values_option").prop("disabled", false); jQuery("#field_copy_values_disabled").hide(); jQuery("#field_copy_values_option_field").html(copyValueOptions); } else { jQuery("#field_enable_copy_values_option").prop("disabled", true); jQuery("#field_copy_values_disabled").show(); } ToggleCopyValuesOption( field.enableCopyValuesOption, true ); if(field.nextButton){ if(field.nextButton.type == "image") jQuery("#next_button_image").prop("checked", true); else jQuery("#next_button_text").prop("checked", true); jQuery("#next_button_text_input").val(field.nextButton.text); jQuery("#next_button_image_url").val(field.nextButton.imageUrl); } if(field.previousButton){ if(field.previousButton.type == "image") jQuery("#previous_button_image").prop("checked", true); else jQuery("#previous_button_text").prop("checked", true); jQuery("#previous_button_text_input").val(field.previousButton.text); jQuery("#previous_button_image_url").val(field.previousButton.imageUrl); } TogglePageButton("next", true); TogglePageButton("previous", true); jQuery(".gfield_category_checkbox").each(function(){ if(field["choices"]){ for(var i=0; i' + inputTypeObj.data('multiselect') + '' ); inputTypeObj.val( 'multiselect' ); inputTypeObj.data( 'multiselect', null ); } var fieldSetting = ( field.type === 'post_tags' ) ? 'post_tag_type_setting' : 'post_category_field_type_setting'; SetFieldAccessibilityWarning( fieldSetting, 'below' ); } } //hide "Enable calculation" option for quantity fields if(field.type == 'quantity') { jQuery('.calculation_setting').hide(); } jQuery("#post_category_field_type").val(field.inputType); var fg = field.simpleCaptchaFontColor == undefined ? "" : field.simpleCaptchaFontColor; jQuery("#field_captcha_fg").val(fg); SetColorPickerColor("field_captcha_fg", fg); var bg = field.simpleCaptchaBackgroundColor == undefined ? "" : field.simpleCaptchaBackgroundColor; jQuery("#field_captcha_bg").val(bg); SetColorPickerColor("field_captcha_bg", bg); jQuery("#field_captcha_type").val(field.captchaType == undefined ? "captcha" : field.captchaType); jQuery("#field_captcha_badge").val(field.captchaBadge == undefined ? "bottomright" : field.captchaBadge); jQuery("#field_captcha_size").val(field.simpleCaptchaSize == undefined ? "medium" : field.simpleCaptchaSize); //controlling settings based on captcha type if(field["type"] == "captcha"){ SetFieldAccessibilityWarning( 'captcha', 'above' ); var recaptcha_settings = ".captcha_language_setting, .captcha_theme_setting"; var simple_captcha_settings = ".captcha_size_setting, .captcha_fg_setting, .captcha_bg_setting"; if(field["captchaType"] == "simple_captcha" || field["captchaType"] == "math"){ jQuery(simple_captcha_settings).show(); jQuery(recaptcha_settings).hide(); } else{ jQuery(simple_captcha_settings).hide(); jQuery(recaptcha_settings).show(); } //mapping blackglass (from older version) to dark and all other themes to light var theme = field.captchaTheme == undefined || ['blackglass', 'dark'].indexOf( field.captchaTheme ) < 0 ? 'light' : 'dark'; jQuery('#field_captcha_theme').val( theme).show(); //check the captcha theme to reset the language since the language cannot be specifically checked var lang = field.captchaLanguage == undefined ? 'en' : field.captchaLanguage; jQuery('#field_captcha_language').val( lang ).show(); //add captcha option to drop down if it does not already exist if ( jQuery('#field_captcha_type option[value="captcha"]').length < 1){ jQuery('#field_captcha_type').prepend(''); } } //Display custom field template for texareas and text fields if(field["type"] == "post_custom_field" && (field["inputType"] == "textarea" || field["inputType"] == "text")){ jQuery(".customfield_content_template_setting").show(); } if(field["type"] == "name"){ if(typeof field["nameFormat"] == 'undefined' || field["nameFormat"] != "advanced"){ field = MaybeUpgradeNameField(field); } else { SetUpAdvancedNameField(); } if(field["nameFormat"] == "simple"){ jQuery(".default_value_setting").show(); jQuery(".size_setting").show(); jQuery('#field_name_fields_container').html('').hide(); jQuery('.sub_label_placement_setting').hide(); jQuery('.name_prefix_choices_setting').hide(); jQuery('.name_format_setting').hide(); jQuery('.name_setting').hide(); jQuery('.default_input_values_setting').hide(); jQuery('.default_value_setting').show(); } else if(field["nameFormat"] == "extended") { jQuery('.name_format_setting').show(); jQuery('.name_prefix_choices_setting').hide(); jQuery('.name_setting').hide(); jQuery('.default_input_values_setting').hide(); jQuery('.input_placeholders_setting').hide(); } } // if a product or option field, hide "other choice" setting if(jQuery.inArray(field['type'], ['product', 'option', 'shipping']) != -1) { jQuery(".other_choice_setting").hide(); } // if calc enabled, hide range if(field.enableCalculation) { jQuery('li.range_setting').hide(); } if(field.type == 'text') { if(field.inputMask) { jQuery(".maxlen_setting").hide(); } else { jQuery(".maxlen_setting").show(); } } if(inputType == "date"){ ToggleDateSettings(field); } if(inputType == "email"){ ToggleEmailSettings(field); } // Setup Password field. if ( field.type === 'password' || field.inputType === 'password' ) { // Upgrade Password field properties. field = UpgradePasswordField( field ); // Create Password inputs UI. var passwordFields = GetCustomizeInputsUI( field ); jQuery( '#field_password_fields_container' ).html( passwordFields ); jQuery( '#field_password_fields_container table tr:eq(1) td:eq(0) div' ).remove(); // Show/Hide Size setting. var confirmEnabled = field.inputs[1].isHidden == 'undefined' ? true : ! field.inputs[1].isHidden; if ( confirmEnabled ) { jQuery( '.size_setting' ).hide(); } // Hide Password sub-label. jQuery( '.password_setting .custom_inputs_setting ' ).on( 'click keypress', '.gform-field__toggle', function () { var field = GetSelectedField(), confirmEnabled = ! field.inputs[ 1 ].isHidden, passwordSubLabel = jQuery( 'label[for="input_' + field.id + '"]' ); if ( confirmEnabled ) { passwordSubLabel.show(); jQuery( '.size_setting' ).hide(); } else { passwordSubLabel.hide(); jQuery( '.size_setting' ).show(); } } ); } // Accessibility and other warnings if ( ( field.type === 'multiselect' || field.type === 'select' ) && field.enableEnhancedUI ) { SetFieldAccessibilityWarning( 'enable_enhanced_ui_setting', 'below' ); } if ( field.type === 'multiselect' ) { SetFieldAccessibilityWarning( 'multiselect', 'above' ); } if ( field.labelPlacement === 'hidden_label' ) { SetFieldAccessibilityWarning( 'label_placement_setting', 'above' ); } if ( field.label === '' ) { setFieldError( 'label_setting', 'below' ); } if ( field.dateType === 'datepicker' ) { SetFieldAccessibilityWarning( 'date_input_type_setting', 'above' ); } if ( field.type === 'submit' ) { if ( HasPageField() ) { SetFieldNotification( 'submit_location_setting', 'above' ); } if ( form.button.type === 'image' ) { SetFieldAccessibilityWarning( 'submit_type_setting', 'below' ); if ( ! form.button.imageUrl ) { SetFieldNotification( 'submit_image_setting', 'below' ); } } } ToggleSubmitType( true ); jQuery(document).trigger('gform_load_field_settings', [field, form]); gform.doAction('gform_post_load_field_settings', [field, form]); SetProductField(field); Placeholders.enable(); } /** * Retrieves the settings to include for a field. * * @since 2.5 * * @param {object} field The field being loaded. * * @return {string} A comma-deliniated string of the settings values. */ function getAllFieldSettings( field ) { var allSettings = fieldSettings[ field.type ]; if ( field.inputType && field.type != 'post_category' ) { var additionalSettings = fieldSettings[ field.inputType ]; if ( additionalSettings.length > 0 ) { allSettings += ", " + additionalSettings; } } var settingsArray = allSettings.split( ', ' ); /** * gform_editor_field_settings * * Modify the editor settings that are used for the current field, including those inherited from the inputType. * * @since 2.5 * * @param {array} settingsArray The current settings values for the field. * @param {object} field The field being modified. * * @return {array} The modified array of settings values. */ settingsArray = gform.applyFilters( 'gform_editor_field_settings', settingsArray, field ); return settingsArray.join( ', ' ); } function ToggleDateSettings(field){ var isDateField = field["dateType"] == "datefield"; var isDatePicker = field["dateType"] == "datepicker"; var isDateDropDown = field["dateType"] == "datedropdown"; jQuery('.placeholder_setting').toggle(isDatePicker); jQuery('.default_value_setting').toggle(isDatePicker); jQuery('.sub_label_placement_setting').toggle(isDateField); jQuery('.sub_labels_setting').toggle(isDateField); jQuery('.default_input_values_setting').toggle(isDateDropDown || isDateField); jQuery('.input_placeholders_setting').toggle(isDateDropDown || isDateField); } function SetUpAdvancedNameField(){ field = GetSelectedField(); jQuery('.name_format_setting').hide(); jQuery('.name_setting').show(); jQuery('.name_prefix_choices_setting').show(); var nameFields = GetCustomizeInputsUI(field); jQuery('#field_name_fields_container').html(nameFields).show(); var prefixInput = GetInput(field, field.id + '.2'); var prefixChoices = GetInputChoices(prefixInput); jQuery('#field_prefix_choices').html(prefixChoices); ToggleNamePrefixUI(!prefixInput.isHidden); jQuery( '.name_setting .custom_inputs_setting' ).on( 'click', '.gform-field__toggle', function() { var inputId = jQuery( this ).data( 'input_id' ); if ( inputId.toString().indexOf( ".2" ) >= 0 ) { var isActive = jQuery( this ).find( '.gform-field__toggle-input' ).is( ':checked' ); ToggleNamePrefixUI( isActive ); } } ); jQuery('.default_value_setting').hide(); jQuery('.default_input_values_setting').show(); jQuery('.input_placeholders_setting').show(); CreateDefaultValuesUI(field); CreatePlaceholdersUI(field); CreateAutocompleteUI(field); CreateInputNames(field); } function GetCopyValuesFieldsOptions(selectedFieldId, currentField){ var options = [], label, field, option, currentType = GetInputType(currentField), selected; for(var i = 0; i < form.fields.length;i++){ field = form.fields[i]; if(field.id != currentField.id && GetInputType(field) == currentType && !field.enableCopyValuesOption){ label = GetLabel(field); selected = selectedFieldId == field.id ? 'selected="selected"' : ''; option = ''; options.push(option); } } return options.join(''); } function ToggleNamePrefixUI(isActive){ jQuery('.name_prefix_choices_setting').toggle(isActive); } function TogglePageBreakSettings(){ if(HasPageBreak()){ jQuery("#gform_last_page_settings").show(); jQuery("#gform_pagination").show(); } else { jQuery("#gform_last_page_settings").hide(); jQuery("#gform_pagination").hide(); } } function SetDisableQuantity(isChecked){ SetFieldProperty('disableQuantity', isChecked); if(isChecked) jQuery(".field_selected .ginput_quantity_label, .field_selected .ginput_quantity").hide(); else jQuery(".field_selected .ginput_quantity_label, .field_selected .ginput_quantity").show(); } function SetBasePrice(number){ if(!number) number = 0; var currency = GetCurrentCurrency(); var price = currency.toMoney(number); if(price == false) price = 0; jQuery("#field_base_price").val(price); SetFieldProperty('basePrice', price); jQuery(".field_selected .ginput_product_price, .field_selected .ginput_shipping_price").html(price); jQuery(".field_selected .ginput_amount").val(price); } function ChangeAddressType(){ field = GetSelectedField(); if(field["type"] != "address") return; var addressType = jQuery("#field_address_type").val(); var countryInput = GetInput(field, field.id + ".6"); var country = jQuery("#field_address_country_" + addressType).val(); if(country == ''){ countryInput.isHidden = false } else { countryInput.isHidden = true; } SetAddressType( false ); } function SetAddressType( isInit ){ field = GetSelectedField(); if(field["type"] != "address") return; SetAddressProperties(); jQuery(".gfield_address_type_container").hide(); jQuery("#address_type_container_" + jQuery("#field_address_type").val()).show(); CreatePlaceholdersUI(field); CreateAutocompleteUI(field); } function UpdateAddressFields(){ var addressType = jQuery("#field_address_type").val(); field = GetSelectedField(); var address_fields_str = GetCustomizeInputsUI(field); jQuery("#field_address_fields_container").html(address_fields_str); //change zip label var zipInput = GetInput(field, field.id + ".5"); var zip_label = jQuery("#field_address_zip_label_" + addressType).val(); jQuery("#field_custom_input_default_label_" + field.id + "_5").text(zip_label); jQuery("#field_custom_input_label_" + field.id + "\\.5").attr("placeholder", zip_label); if(!zipInput.customLabel){ jQuery(".field_selected #input_" + field["id"] + "_5_label").html(zip_label); } //change state label var stateInput = GetInput(field, field.id + ".4"); var state_label = jQuery("#field_address_state_label_" + addressType).val(); jQuery("#field_custom_input_default_label_" + field.id + "_4").text(state_label); jQuery("#field_custom_input_label_" + field.id + "\\.4").attr("placeholder", state_label); if(!stateInput.customLabel){ jQuery(".field_selected #input_" + field["id"] + "_4_label").html(state_label); } // hide country drop down and setting. var isInternational = jQuery( "#field_address_country_" + addressType ).val() == ""; var hideCountrySetting = ! isInternational; var hideCountryField = ! isInternational || ! jQuery( '#field_address_fields_container [id="gforms-editor-toggle-' + field.id + '.6"' ).is( ':checked' ); // hide country setting if this address type applies to a specific country. if ( hideCountrySetting ) { jQuery('.field_custom_input_row_input_' + field.id + '_6').hide(); } else { jQuery('.field_selected .field_custom_input_row_input_' + field.id + '_6').show(); } // hide country field if this address type applies to a specific country or if show country is toggled off. if ( hideCountryField ){ jQuery('.field_selected #input_' + field.id + '_6_container').hide(); } else { //selects default country and displays drop down jQuery(".field_selected #input_" + field.id + "_6").val(jQuery("#field_address_default_country_" + addressType).val()); jQuery(".field_selected #input_" + field.id + "_6_container").show(); } var has_state_drop_down = jQuery("#field_address_has_states_" + addressType).val() != ""; if(has_state_drop_down){ jQuery(".field_selected .state_text").hide(); var selected_state = jQuery("#field_address_default_state_" + addressType).val() var state_dropdown = jQuery(".field_selected .state_dropdown"); state_dropdown.append(jQuery('').val(selected_state).html(selected_state)); state_dropdown.val(selected_state).show(); } else{ jQuery(".field_selected .state_dropdown").hide(); jQuery(".field_selected .state_text").show(); } } function SetAddressProperties(){ field = GetSelectedField(); var addressType = jQuery("#field_address_type").val(); SetFieldProperty("addressType", addressType); SetFieldProperty("defaultState", jQuery("#field_address_default_state_" + addressType).val()); SetFieldProperty("defaultProvince",""); //for backwards compatibility //Only save the hide country property for address types that have that option (ones with no country) var country = jQuery("#field_address_country_" + addressType).val(); if(country == ""){ country = jQuery("#field_address_default_country_" + addressType).val(); } SetFieldProperty("defaultCountry",country); UpdateAddressFields(); } function MaybeUpgradeNameField(field){ if(typeof field.nameFormat == 'undefined' || field.nameFormat == '' || field.nameFormat == 'normal' || (field.nameFormat == 'simple' && !has_entry(field.id))){ field = UpgradeNameField(field, true, true, true); } return field; } function UpgradeNameField(field, prefixHiddex, middleHidden, suffixHidden){ field.nameFormat = 'advanced'; field.inputs = MergeInputArrays(GetAdvancedNameFieldInputs(field, prefixHiddex, middleHidden, suffixHidden), field.inputs); RefreshSelectedFieldPreview(function(){ SetUpAdvancedNameField(); }); return field; } function UpgradeDateField(field){ if(field.type != 'date' && field.inputType != 'date' ){ return field; } if(typeof field.dateType != 'undefined' && field.dateType != 'datepicker' && !field.inputs){ field.inputs = GetDateFieldInputs(field); } return field; } function UpgradeTimeField(field){ if(field.type != 'time' && field.inputType != 'time' ){ return field; } if(!field.inputs){ field.inputs = GetTimeFieldInputs(field); } return field; } function UpgradeEmailField(field){ if(field.type != 'email' && field.inputType != 'email'){ return field; } if(field.emailConfirmEnabled && !field.inputs){ field.inputs = GetEmailFieldInputs(field); field.inputs[0].placeholder = field.placeholder } return field; } function UpgradePasswordField(field){ if(field.type != 'password' && field.inputType != 'password'){ return field; } if(!field.inputs){ field.inputs = GetPasswordFieldInputs(field); field.inputs[0].placeholder = field.placeholder } return field; } function UpgradeAddressField(field){ if(field.hideCountry){ var countryInput = GetInput(field, field.id + ".6"); countryInput.isHidden = true; } delete field.hideCountry; if(field.hideAddress2){ var address2Input = GetInput(field, field.id + ".2"); address2Input.isHidden = true; } delete field.hideAddress2; if(field.hideState){ var stateInput = GetInput(field, field.id + ".4"); stateInput.isHidden = true; } delete field.hideState; return field; } function UpgradeConsentField(field) { if(field.type !== 'consent'){ return field; } if(field.choices[1] && field.choices[1]['value'] === "0"){ field.choices.pop(); } return field; } function TogglePasswordVisibility( isInit ){ if ( jQuery( '#gfield_password_visibility_enabled' ).is( ":checked" ) ) { jQuery( '.gfield.field_selected .ginput_container_password span button' ).show(); } else { jQuery( '.gfield.field_selected .ginput_container_password span button' ).hide(); } } function TogglePasswordStrength( isInit ){ if(jQuery("#gfield_password_strength_enabled").is(":checked")){ jQuery("#gfield_min_strength_container").show(); } else{ jQuery("#gfield_min_strength_container").hide(); } } function ToggleCategory( isInit ){ if(jQuery("#gfield_category_all").is(":checked")){ jQuery("#gfield_settings_category_container").hide(); SetFieldProperty("displayAllCategories", true); SetFieldProperty("choices", new Array()); //reset selected categories } else{ jQuery("#gfield_settings_category_container").show(); SetFieldProperty("displayAllCategories", false); } } function SetCopyValuesOptionLabel(value){ SetFieldProperty('copyValuesOptionLabel', value); jQuery('.field_selected .copy_values_option_label').html(value); } function SetCustomFieldTemplate(){ var enabled = jQuery("#gfield_customfield_content_enabled").is(":checked"); SetFieldProperty("customFieldTemplate", enabled ? jQuery("#field_customfield_content_template").val() : null); SetFieldProperty("customFieldTemplateEnabled", enabled ); } function SetCategoryInitialItem(){ var enabled = jQuery("#gfield_post_category_initial_item_enabled").is(":checked"); SetFieldProperty("categoryInitialItem", enabled ? jQuery("#field_post_category_initial_item").val() : null); SetFieldProperty("categoryInitialItemEnabled", enabled ); } function PopulateContentTemplate(fieldName){ if(jQuery("#" + fieldName).val().length == 0){ var field = GetSelectedField(); jQuery("#" + fieldName).val("{" + field.label + ":" + field.id + "}"); } } function TogglePostContentTemplate(isInit){ if(jQuery("#gfield_post_content_enabled").is(":checked")){ jQuery("#gfield_post_content_container").show(); if(!isInit){ PopulateContentTemplate("field_post_content_template"); } } else{ jQuery("#gfield_post_content_container").hide(); } } function TogglePostTitleTemplate(isInit){ if(jQuery("#gfield_post_title_enabled").is(":checked")){ jQuery("#gfield_post_title_container").show(); if(!isInit) PopulateContentTemplate("field_post_title_template"); } else{ jQuery("#gfield_post_title_container").hide(); } } function ToggleCustomFieldTemplate(isInit){ if(jQuery("#gfield_customfield_content_enabled").is(":checked")){ jQuery("#gfield_customfield_content_container").show(); if(!isInit){ PopulateContentTemplate("field_customfield_content_template"); } } else{ jQuery("#gfield_customfield_content_container").hide(); } } function ToggleInputName( isInit ){ if(jQuery('#field_prepopulate').is(":checked")){ jQuery('#field_input_name_container').show(); } else{ jQuery('#field_input_name_container').hide(); jQuery("#field_input_name").val(""); } } function SetFieldColumns(){ SetFieldChoices(); } function ToggleChoiceValue( isInit ){ var field = GetSelectedField(); var suffix = field.enablePrice ? "_and_price" : ""; var container = jQuery('#gfield_settings_choices_container'); //removing all classes container.removeClass("choice_with_price choice_with_value choice_with_value_and_price"); var isShowValues = jQuery('#field_choice_values_enabled').is(":checked"); if(isShowValues){ container.addClass("choice_with_value" + suffix); } else if(field.enablePrice){ container.addClass("choice_with_price"); } } function ToggleInputChoiceValue($container, enabled){ if(typeof enabled == 'undefined'){ enabled = false; } var field = GetSelectedField(); var inputId = $container.find('li').data('input_id'); var input = GetInput(field, inputId); input.enableChoiceValue = enabled; //removing all classes $container.removeClass("choice_with_value"); if(enabled){ $container.addClass("choice_with_value"); } } function ToggleCopyValuesActivated(isActivated){ jQuery('.field_selected .copy_values_activated').prop('checked', isActivated); var field = GetSelectedField(); jQuery('#input_'+ field.id).toggle(!isActivated); } function TogglePageButton(button_name, isInit){ var isText = jQuery("#" + button_name + "_button_text").is(":checked"); show_element = isText ? "#" + button_name + "_button_text_container" : "#" + button_name + "_button_image_container" hide_element = isText ? "#" + button_name + "_button_image_container" : "#" + button_name + "_button_text_container"; if(isInit){ jQuery(hide_element).hide(); jQuery(show_element).show(); } else{ jQuery(hide_element).hide(); jQuery(show_element).fadeIn(800); } } function SetPageButton(button_name){ field = GetSelectedField(); var buttonType = jQuery("#" + button_name + "_button_image").is(":checked") ? "image" : "text"; field[button_name + "Button"]["type"] = buttonType; if(buttonType == "image"){ field[button_name + "Button"]["text"] = ""; field[button_name + "Button"]["imageUrl"] = jQuery("#" + button_name + "_button_image_url").val(); } else{ field[button_name + "Button"]["text"] = jQuery("#" + button_name + "_button_text_input").val(); field[button_name + "Button"]["imageUrl"] = ""; } } function ToggleCustomField( isInit ){ var isExisting = jQuery("#field_custom_existing").is(":checked"); show_element = isExisting ? "#field_custom_field_name_select" : "#field_custom_field_name_text" hide_element = isExisting ? "#field_custom_field_name_text" : "#field_custom_field_name_select"; jQuery(hide_element).hide(); jQuery(show_element).show(); } function ToggleInputMask(isInit){ if(jQuery("#field_input_mask").is(":checked")){ jQuery("#gform_input_mask").show(); jQuery(".maxlen_setting").hide(); SetFieldProperty('inputMask', true); //setting max length to blank jQuery("#field_maxlen").val(""); SetFieldProperty('maxLength', ""); } else{ jQuery("#gform_input_mask").hide(); jQuery(".maxlen_setting").show(); SetFieldProperty('inputMask', false); SetFieldProperty('inputMaskValue', ''); SetFieldProperty('inputMaskIsCustom', false); } } function ToggleInputMaskOptions(isInit){ var isStandard = jQuery('#field_mask_standard').is(':checked'), show_element = isStandard ? '#field_mask_select' : '#field_mask_text, .mask_text_description', hide_element = isStandard ? '#field_mask_text, .mask_text_description' : '#field_mask_select'; jQuery(hide_element).val('').hide(); jQuery(show_element).show(); if (!isInit) { SetFieldProperty('inputMaskValue', ''); SetFieldProperty('inputMaskIsCustom', !isStandard); } } function ToggleAutoresponder(){ if(jQuery("#form_autoresponder_enabled").is(":checked")) jQuery("#form_autoresponder_container").show("slow"); else jQuery("#form_autoresponder_container").hide("slow"); } function ToggleMultiFile(isInit){ if(jQuery("#field_multiple_files").prop("checked")){ jQuery("#gform_multiple_files_options").show(); var $uploadField = jQuery('.gform_fileupload_multifile'); var pluploadSettings = $uploadField.data('settings'); if ( pluploadSettings && typeof pluploadSettings.chunk_size != 'undefined' ) { jQuery('#gform_server_max_file_size_notice').hide(); } SetFieldProperty('multipleFiles', true); } else{ jQuery("#gform_multiple_files_options").hide(); SetFieldProperty('multipleFiles', false); jQuery("#field_max_files").val(""); SetFieldProperty('maxFiles', ""); } if(!isInit){ var field = GetSelectedField(); StartChangeInputType("fileupload", field); } } function SetAutocompleteProperty( isInit, value ) { SetFieldProperty( 'enableAutocomplete' , value ); ToggleAutocompleteAttribute( isInit ); } function ToggleAutocompleteAttribute( isInit ) { if( jQuery( "#field_enable_autocomplete" ).is( ":checked" ) ) { jQuery( "#autocomplete_attribute_container" ).show(); } else{ jQuery( "#autocomplete_attribute_container" ).hide(); } } function InitAutocompleteOptions( isInit ) { jQuery( '#field_enable_autocomplete' ).prop( "checked", field.enableAutocomplete ? true : false ); ToggleAutocompleteAttribute( true) ; } function HasPostContentField(){ for(var i=0; i= 0) fields.push(form["fields"][i]); } return fields; } function GetNextFieldId(){ var nextFieldId; if ( typeof form.nextFieldId == 'undefined' ) { var max = 0; for(var i=0; i max) max = parseFloat(form.fields[i].id); } if (form.deletedFields) { for (var i = 0; i < form.deletedFields.length; i++) { if (parseFloat(form.deletedFields[i]) > max) max = parseFloat(form.deletedFields[i]); } } nextFieldId = parseFloat(max) + 1; } else { nextFieldId = parseInt(form.nextFieldId); } form.nextFieldId = nextFieldId + 1; return nextFieldId; } function GetFirstField() { for ( var i = 0; i < form.fields.length; i++ ) { return form.fields[i].id; } } function EndAddField(field, fieldString, index){ gf_vars['currentlyAddingField'] = false; // We just added a field. Let's hide the No Fields placeholder. jQuery( '#no-fields' ).hide(); jQuery('#gform_adding_field_spinner').remove(); //sets up DOM for new field if(typeof index != 'undefined'){ form.fields.splice(index, 0, field); if (index === 0) { jQuery('#gform_fields').prepend(fieldString); } else { jQuery('#gform_fields').children().eq(index - 1).after(fieldString); } } else { if ( jQuery( '#field_submit' ).length ) { jQuery( fieldString ).insertBefore ( jQuery( '#field_submit' ) ); } else { jQuery('#gform_fields').append(fieldString); } //creates new javascript field form.fields.push(field); } var newFieldElement = jQuery('#field_' + field.id); newFieldElement.animate({ backgroundColor: '#FFFBCC' }, 'fast', function(){jQuery(this).animate({backgroundColor: '#FFF'}, 'fast', function(){jQuery(this).css('background-color', '');})}) //Unselects all fields jQuery('.selectable').removeClass('field_selected'); //Closing editors HideSettings('field_settings'); HideSettings('form_settings'); HideSettings('last_page_settings'); //Select current field newFieldElement.addClass('field_selected'); //initializes new field with default data SetFieldSize(field.size); SetFieldEnhancedUI( field.enableEnhancedUI ); TogglePageBreakSettings(); InitializeFields(); newFieldElement.removeClass('field_selected'); jQuery(document).trigger('gform_field_added', [form, field]); } function StartChangeNameFormat(format){ field = GetSelectedField(); UpgradeNameField(field, false, true, false); } function StartChangeCaptchaType(captchaType){ field = GetSelectedField(); field["captchaType"] = captchaType; SetFieldProperty('captchaType', captchaType); StartChangeInputType(field["type"], field); ResetRecaptcha(); } function ResetRecaptcha(){ field = GetSelectedField(); field['captchaLanguage'] = 'en'; field['captchaTheme'] = 'light'; } function StartChangeProductType(type) { field = GetSelectedField(); if (type === 'radio' || type === 'select') { field.enablePrice = true; } else { field.enablePrice = null; field.choices = null; } if (type !== 'calculation') { field.enableCalculation = false; field.calculationFormula = ''; } return StartChangeInputType(type, field); } function StartChangeDonationType(type){ field = GetSelectedField(); if(type != "donation") field["enablePrice"] = true; else field["enablePrice"] = null; return StartChangeInputType(type, field); } function StartChangeShippingType(type) { field = GetSelectedField(); if (type !== 'singleshipping') { field.enablePrice = true; } else { field.enablePrice = null; field.choices = null; } return StartChangeInputType(type, field); } function StartChangePostCategoryType(type){ if(type == 'dropdown') { jQuery('.post_category_initial_item_setting').hide(); } else { jQuery('.post_category_initial_item_setting').show(); } field = GetSelectedField(); return StartChangeInputType(type, field); } function StartChangePostCustomFieldType( type ) { if ( jQuery.inArray( type, [ 'radio', 'select', 'checkbox', 'multiselect' ] ) === -1 ) { field.choices = null; } return StartChangeInputType(type, field); } function EndChangeInputType(params){ var fieldId = params.id, fieldType = params.type, fieldString = params.fieldString; jQuery("#field_" + fieldId).html(fieldString); var field = GetFieldById(fieldId); //setting input type if different than field type field.inputType = field.type != fieldType ? fieldType : ""; SetDefaultValues(field); SetFieldLabel(field.label); SetAriaLabel(field.label); SetFieldSize(field.size); SetFieldDefaultValue(field.defaultValue); SetFieldDescription(field.description); SetFieldCheckboxLabel(field.checkboxLabel); SetFieldRequired(field.isRequired); InitializeFields(); jQuery('.field_settings').css('opacity', '1'); ShowSettings(field); } function InitializeFields(){ //Border on/off logic on mouse over jQuery('.selectable').hover( function () { jQuery(this).addClass('field_hover'); }, function () { jQuery(this).removeClass('field_hover'); } ).focus( function () { if ( jQuery( this ).hasClass( 'field_selected' ) ) { return; } jQuery( '.field_hover' ).removeClass( 'field_hover' ); jQuery( '.field_selected' ).removeClass( 'field_selected' ); jQuery( this ).addClass( 'field_hover' ); jQuery( this ).addClass( 'field_selected' ); } ).on( 'keypress', this, function ( event ) { var key = event.which; if ( key == 13 ) { jQuery( '#general_tab_toggle' ).focus(); } } ); jQuery('.field_delete_icon, .field_duplicate_icon').click(function(event){ event.stopPropagation(); }); jQuery('.field_settings, #form_settings, #last_page_settings, #pagination_settings, .form_delete_icon, .all-merge-tags').click(function(event){ /** * Fires when an element in the FormEditor is clicked that should have no effect. * * This action is useful if you need to perform an action using the click event without forcing propagation. * * @since 2.5 * * @param {DomEvent} event The dom event. */ gform.doAction( 'formEditorNullClick', event ); event.stopPropagation(); }); } function FieldClick( field ) { //disable click that happens right after dragging ends if ( gforms_dragging == field.id ) { gforms_dragging = 0; return; } // force focus to ensure onblur events fire for field setting inputs jQuery( 'input#gform_force_focus' ).focus(); //unselects all fields jQuery( '.selectable' ).removeClass( 'field_selected' ); //selects current field var $field = jQuery( field ); $field.removeClass( 'field_hover' ).addClass( 'field_selected' ); // Apply field class data to settings container in 2.5+. var $fieldSettingsContainer = jQuery( '#field_settings_container' ); if ( $fieldSettingsContainer.length ) { var fieldClass = jQuery( field ).data( 'field-class' ); var previousFieldClass = $fieldSettingsContainer.data( 'active-field-class' ); $fieldSettingsContainer.removeClass( previousFieldClass ); $fieldSettingsContainer.data( 'active-field-class', fieldClass ); $fieldSettingsContainer.addClass( fieldClass ); } ShowSettings( field ); } function ShowSettings( element ) { if ( element.id === 'gform_last_page_settings' ) { //hide field and form pagination setting fields jQuery( '.field_setting' ).hide(); jQuery( '.pagination_setting' ).hide(); jQuery("#gfield_post_category_initial_item_container").hide(); jQuery("#gfield_min_strength_container").hide(); // Show last pagination setting fields fieldObject = GetSelectedField(); jQuery( '.last_pagination_setting' ).show(); var label = jQuery( '#gform_last_page_settings' ).data( 'title' ); var description = jQuery( '#gform_last_page_settings' ).data( 'description' ); var icon_classes = 'button-icon dashicons-media-text'; } else if ( element.id === 'gform_pagination' ) { //hide field and last pagination setting fields fieldObject = typeof fieldObject !== 'undefined' ? fieldObject : GetFirstField(); jQuery( '.field_setting' ).hide(); jQuery( '.last_pagination_setting' ).hide(); // Show form pagination setting fields jQuery( '.pagination_setting' ).show(); jQuery("#gfield_post_category_initial_item_container").hide(); jQuery("#gfield_min_strength_container").hide(); InitPaginationOptions(); var label = jQuery( '#gform_pagination' ).data( 'title' ); var description = jQuery( '#gform_pagination' ).data( 'description' ); var icon_classes = 'button-icon dashicons-media-text'; } else if ( element.id === 'field_submit' ) { // Hide form pagination and last pagination setting fields jQuery( '.pagination_setting' ).hide(); jQuery( '.last_pagination_setting' ).hide(); // Load and show field setting fields LoadFieldSettings(); fieldObject = GetSubmitField(); var label = gf_vars.button; var description = gf_vars.buttonDescription; var icon_classes = 'gform-icon gform-icon--smart-button'; } else { // Hide form pagination and last pagination setting fields jQuery( '.pagination_setting' ).hide(); jQuery( '.last_pagination_setting' ).hide(); // Load and show field setting fields LoadFieldSettings(); fieldObject = GetSelectedField(); var field_button = jQuery( '#add_fields button[data-type='+fieldObject.type+']' ); var label = field_button.find( '.button-text' ).text(); var description = field_button.data( 'description' ); // If we have a custom icon img, get it var $button_icon = field_button.find( '.button-icon' ); var icon_img = $button_icon.find( 'img' ); var icon_classes = $button_icon.children().attr( 'class' ); } // Show field icon and description in sidebar jQuery( '#nothing_selected' ).hide(); jQuery( '#sidebar_field_label' ) .removeClass( 'no-id' ) .text( label ) .attr( 'data-fieldId-label', gf_vars.idString ) .attr( 'data-fieldId', fieldObject.id ); if( 'submit' === fieldObject.type ) { jQuery( '#sidebar_field_label' ).addClass( 'no-id' ); } jQuery( '#sidebar_field_text' ).text( description ); // Reset icon classes jQuery( ' #sidebar_field_icon' ).attr( 'class', '' ); jQuery( ' #sidebar_field_icon img' ).remove(); if ( icon_img && icon_img.length ) { jQuery( '#sidebar_field_icon' ).append( '' ); } else { // Get dashicon classes from button jQuery( '#sidebar_field_icon' ).addClass( icon_classes ); } // Hide tabs that has no settings jQuery( '.panel-block-tabs__body--settings' ).each( function( index, tab ) { var tabId = jQuery( tab ).attr( 'id' ); var visibleElements = jQuery( '#' + tabId + ' > li' ).filter( function() { return jQuery( this ).css( 'display' ) !== 'none'; } ); if ( visibleElements.length === 0 ) { jQuery( '#' + tabId + '_toggle' ).hide(); jQuery( '#' + tabId ).hide(); } else { jQuery( '#' + tabId + '_toggle' ).show(); } } ); jQuery('#sidebar_field_info').removeClass('panel-block--hidden'); jQuery('#sidebar_field_info').addClass('panel-block--flex'); jQuery('.field_settings').show(); // Show field settings tab jQuery('.sidebar').tabs( 'option', 'active', 1 ); var visibleChoicesSettings = gform.tools .getNodes( '[data-js="choices-ui-content"] > li', true, document, true ) .filter( function( element ) { return window.getComputedStyle( element ).getPropertyValue( 'display' ) !== 'none'; } ); if ( ! visibleChoicesSettings.length ) { gform.tools.trigger( 'gform/flyout/close-all' ); } gform.tools.trigger( 'gform/form_editor/setting_selected', document, false, element ); } function TogglePercentageStyle( isInit ){ if(jQuery("#percentage_style").val() == 'custom'){ jQuery('.percentage_custom_container').show(); } else{ jQuery('.percentage_custom_container').hide(); } } function TogglePercentageConfirmationText( isInit ){ if(jQuery("#percentage_confirmation_display").is(":checked")){ jQuery('.percentage_confirmation_page_name_setting').show(); } else{ jQuery('.percentage_confirmation_page_name_setting').hide(); } } function CustomFieldExists(name){ if(!name) return true; var options = jQuery("#field_custom_field_name_select option"); for(var i=0; i"; for(key in gform_custom_choices){ if(!gform_custom_choices.hasOwnProperty(key)) continue; var selectChoiceAction = 'SelectCustomChoice( jQuery(this).data("key") );'; str += "
  • " + escapeHtml( key ) + "
  • "; } str += "
  • " + gf_vars.predefinedChoices + "
  • "; jQuery("#bulk_items").prepend(str); } } function SelectCustomChoice( name ){ jQuery("#gfield_bulk_add_input").val(gform_custom_choices[name].join("\n")); gform_selected_custom_choice = name; InitBulkCustomPanel(); } function SelectPredefinedChoice(name){ var list = gform_predefined_choices[name]; // Countries can also be an object if the gform_countries filter is used, so convert to array with just the values. if( name == "Countries" && Array.isArray( list ) !== true ) { list = Object.values( list ); } jQuery('#gfield_bulk_add_input').val(list.join('\n')); gform_selected_custom_choice = ""; InitBulkCustomPanel(); } function InsertBulkChoices(choices){ field = GetSelectedField(); field.choices = new Array(); var enableValue = false; for(var i=0; i 1){ var currency = GetCurrentCurrency(); price = currency.toMoney(text_price[1]); } text_value = text_value.split("|"); if(text_value.length > 1) enableValue = true; choice = new Choice(jQuery.trim(text_value[0]), jQuery.trim(text_value[text_value.length -1]), jQuery.trim(price)); /** * Filter each individual Choice object as it is inserted into the UI. * * This filter is generally used in combination with gform_load_bulk_choices_choice, and is useful * for parsing a unique text pattern (e.g., Label|Value|Other) and adding the additional data to * the resulting Choice object. * * @since 2.5 * * @param {Choice} choice The Choice object representing this particular Choice data. * @param {string} choice_string The string representing the current choice as a text pattern. * @param {object} field The current field being evaluated. * * @return {Choice} The updated Choice object containing any additional data needed. */ choice = gform.applyFilters( 'gform_insert_bulk_choices_choice', choice, choices[i], field ); field.choices.push( choice ); } /** * Fires after bulk choices have been added to the field object and before the UI has been re-rendered. * * This action is useful if you need to alter other field settings based on the choices. * * @since 2.3 * * @param array field The currently selected field object. */ gform.doAction( 'gform_bulk_insert_choices', field ); if(enableValue){ field["enableChoiceValue"] = true; jQuery('#field_choice_values_enabled').prop("checked", true); ToggleChoiceValue(); } LoadFieldChoices(field); UpdateFieldChoices( GetInputType( field ) ); } function InitBulkCustomPanel(){ if(gform_selected_custom_choice.length == 0){ CloseCustomChoicesPanel(); } else{ LoadCustomChoicesPanel(); } } function LoadCustomChoicesPanel(isNew, speed){ if(isNew){ jQuery("#custom_choice_name").val(""); jQuery("#bulk_save_button").html(gf_vars.save); jQuery("#bulk_cancel_link").show(); jQuery("#bulk_delete_link").hide(); } else{ jQuery("#custom_choice_name").val(gform_selected_custom_choice); jQuery("#bulk_save_button").html(gf_vars.update); jQuery("#bulk_cancel_link").hide(); jQuery("#bulk_delete_link").show(); } jQuery("#bulk_save_as").hide(); jQuery("#bulk_custom_edit").show(); } function CloseCustomChoicesPanel(){ jQuery("#bulk_save_as").show(); jQuery("#bulk_custom_edit").hide(); } function IsEmpty(array){ var key; for (key in array) { if (array.hasOwnProperty(key)) return false; } return true; } function SetFieldChoice(inputType, index){ var text = jQuery("#" + inputType + "_choice_text_" + index).val(); var value = jQuery("#" + inputType + "_choice_value_" + index).val(); var price = jQuery("#" + inputType + "_choice_price_" + index).val(); field = GetSelectedField(); field.choices[index].text = text; field.choices[index].value = field.enableChoiceValue ? value : text; if(field.enablePrice){ var currency = GetCurrentCurrency(); var price = currency.toMoney(price); if(!price) price = ""; field.choices[index]["price"] = price; } //set field selections jQuery("#field_choices :radio, #field_choices :checkbox").each(function(index){ field.choices[index].isSelected = this.checked; }); LoadBulkChoices(field); UpdateFieldChoices(GetInputType(field)); } function SetInputChoice(inputId, index, value, text){ var field = GetSelectedField(); var input = GetInput(field, inputId); inputId = inputId.toString().replace('.', '_'); input.choices[index].text = text; input.choices[index].value = input.enableChoiceValue ? value : text; //set field selections jQuery(".field-input-choice-" + inputId + ":radio, .field-input-choice-" + inputId + ":checkbox").each(function(index){ input.choices[index].isSelected = this.checked; }); UpdateInputChoices(input); } function UpdateFieldChoices(fieldType){ var choices = ''; var selector = ''; var inputContainer = ( "1" === gf_legacy.is_legacy ) ? 'li' : 'div'; var inputContainerClass; if(fieldType == "checkbox") field.inputs = new Array(); var skip = 0; // Multiselect is functionally just a select input with a different attribute; adjust the type here. if ( fieldType === 'multiselect' ) { fieldType = 'select'; } switch( fieldType ){ case "select" : for(var i=0; i" + field.choices[i].text + ""; } break; case "checkbox" : for(var i=0; i"; } if(field.choices.length > 5) choices += "<" + inputContainer + " class='gchoice_total'>" + gf_vars["editToViewAll"].replace("%d", field.choices.length) + ""; if ( field.enableSelectAll ) { choices += ''; } break; case "radio" : for(var i=0; i"; } choices += field.enableOtherChoice ? "<" + inputContainer + ">" : ""; if(field.choices.length > 5) choices += "<" + inputContainer + " class='gchoice_total'>" + gf_vars["editToViewAll"].replace("%d", field.choices.length) + ""; break; case "list" : RefreshSelectedFieldPreview(); break; } selector = '.gfield_' + fieldType; jQuery(".field_selected " + selector).html(choices); } function UpdateInputChoices(input){ var choices = ''; for(var i=0; i" + input.choices[i].text + ""; } var inputId = input.id.toString().replace('.', '_'); jQuery(".field_selected #input_" + inputId).html(choices); } function InsertFieldChoice( index ) { field = GetSelectedField(); var inputType = GetInputType( field ); var text = ""; var value = ""; var price = field[ "enablePrice" ] ? "0.00" : ""; if ( inputType === 'list' ) { text = window.gf_vars.column + " " + (index + 1); value = window.gf_vars.column + " " + (index + 1); } var newChoice = new Choice( text, value, price ); if ( window[ "gform_new_choice_" + field.type ] ) { newChoice = window[ "gform_new_choice_" + field.type ]( field, newChoice ); } if ( typeof field.choices !== 'object' ) { field.choices = []; } field.choices.splice( index, 0, newChoice ); LoadFieldChoices( field ); UpdateFieldChoices( inputType ); } function InsertInputChoice($ul, inputId, index){ var field = GetSelectedField(); var input = GetInput(field, inputId); var new_choice = new Choice("", ""); input.choices.splice(index, 0, new_choice); LoadInputChoices($ul, input); UpdateInputChoices(input); } function DeleteFieldChoice(index){ field = GetSelectedField(); var value = jQuery('#' + GetInputType(field) + '_choice_value_' + index).val(); if( HasConditionalLogicDependency(field.id, value) ) { if(!confirm(gf_vars.conditionalLogicDependencyChoice)) return; } field.choices.splice(index, 1); LoadFieldChoices(field); UpdateFieldChoices(GetInputType(field)); } function DeleteInputChoice($ul, inputId, index){ var field = GetSelectedField(); var input = GetInput(field, inputId); input.choices.splice(index, 1); LoadInputChoices($ul, input); UpdateInputChoices(input); } function MoveFieldChoice(fromIndex, toIndex){ field = GetSelectedField(); var choice = field.choices[fromIndex]; //deleting from old position field.choices.splice(fromIndex, 1); //inserting into new position field.choices.splice(toIndex, 0, choice); LoadFieldChoices(field); UpdateFieldChoices(GetInputType(field)); } function MoveInputChoice($ul, inputId, fromIndex, toIndex){ var field = GetSelectedField(); var input = GetInput(field, inputId); var choice = input.choices[fromIndex]; //deleting from old position input.choices.splice(fromIndex, 1); //inserting into new position input.choices.splice(toIndex, 0, choice); LoadInputChoices($ul, input); UpdateInputChoices(input); } function GetFieldType(fieldId){ return fieldId.substr(0, fieldId.lastIndexOf("_")); } function GetSelectedField() { var $field = jQuery( '.field_selected' ); if( $field.length <= 0 ) { return false; } var id = $field[0].id.substr( 6 ); return GetFieldById( id ); } function SetPasswordProperty(isChecked){ SetFieldProperty("enablePasswordInput", isChecked); } function ToggleDateCalendar( isInit ){ var dateType = jQuery("#field_date_input_type").val(); if(dateType == "datefield" || dateType == "datedropdown"){ jQuery("#date_picker_container").hide(); SetCalendarIconType("none"); } else{ jQuery("#date_picker_container").show(); } } function ToggleCalendarIconUrl( isInit ){ if(jQuery("#gsetting_icon_custom").is(":checked")){ jQuery("#gfield_icon_url_container").show(); } else{ jQuery("#gfield_icon_url_container").hide(); jQuery("#gfield_calendar_icon_url").val(""); SetFieldProperty('calendarIconUrl', ''); } } function SetTimeFormat(format){ SetFieldProperty('timeFormat', format); LoadTimeInputs(); } function LoadTimeInputs(){ var field = GetSelectedField(); if(field.type != 'time' && field.inputType != 'time'){ return; } var format = jQuery("#field_time_format").val(); if(format == "24"){ jQuery('#input_default_value_row_input_' + field.id +'_3').hide(); jQuery(".field_selected .gfield_time_ampm").hide(); } else { jQuery('#input_default_value_row_input_' + field.id +'_3').show(); jQuery(".field_selected .gfield_time_ampm").show(); } jQuery('#input_placeholder_row_input_' + field.id +'_3').hide(); // No support for placeholder. // AM/PM Sub label is hidden in the time field class after `gform_post_load_field_settings` is fired. } /** * Set date format for a date field. * * @since unknown * @since 2.5 Updated for the layout editor. * * @param format * @constructor */ function SetDateFormat( format ) { SetFieldProperty( 'dateFormat', format ); var field = GetSelectedField(); if ( field.dateType === 'datepicker' ) { var formatLabel = jQuery( '#field_date_format option:selected' ).text(); if ( field.placeholder === '' ) { jQuery( '.field_selected input[name="ginput_datepicker"]' ) .attr( 'placeholder', formatLabel ); } } LoadDateInputs(); } function LoadDateInputs(){ var type = jQuery("#field_date_input_type").val(); var format = jQuery("#field_date_format").val(); //setting up field positions var position = format ? format.substr(0,3) : "mdy"; if(type == "datefield"){ switch(position){ case "ymd" : jQuery(".field_selected #gfield_input_date_month").remove().insertBefore(".field_selected #gfield_input_date_day"); jQuery(".field_selected #gfield_input_date_year").remove().insertBefore(".field_selected #gfield_input_date_month"); break; case "mdy" : jQuery(".field_selected #gfield_input_date_day").remove().insertBefore(".field_selected #gfield_input_date_year"); jQuery(".field_selected #gfield_input_date_month").remove().insertBefore(".field_selected #gfield_input_date_day"); break; case "dmy" : jQuery(".field_selected #gfield_input_date_month").remove().insertBefore(".field_selected #gfield_input_date_year"); jQuery(".field_selected #gfield_input_date_day").remove().insertBefore(".field_selected #gfield_input_date_month"); break; } jQuery(".field_selected [id^='gfield_input_date']").show(); jQuery(".field_selected [id^='gfield_dropdown_date']").hide(); jQuery(".field_selected #gfield_input_datepicker").hide(); jQuery(".field_selected #gfield_input_datepicker_icon").hide(); } else if(type == "datedropdown"){ switch(position){ case "ymd" : jQuery(".field_selected #gfield_dropdown_date_month").remove().insertBefore(".field_selected #gfield_dropdown_date_day"); jQuery(".field_selected #gfield_dropdown_date_year").remove().insertBefore(".field_selected #gfield_dropdown_date_month"); break; case "mdy" : jQuery(".field_selected #gfield_dropdown_date_day").remove().insertBefore(".field_selected #gfield_dropdown_date_year"); jQuery(".field_selected #gfield_dropdown_date_month").remove().insertBefore(".field_selected #gfield_dropdown_date_day"); break; case "dmy" : jQuery(".field_selected #gfield_dropdown_date_month").remove().insertBefore(".field_selected #gfield_dropdown_date_year"); jQuery(".field_selected #gfield_dropdown_date_day").remove().insertBefore(".field_selected #gfield_dropdown_date_month"); break; } jQuery(".field_selected [id^='gfield_dropdown_date']").css("display", "inline"); jQuery(".field_selected [id^='gfield_input_date']").hide(); jQuery(".field_selected #gfield_input_datepicker").hide(); jQuery(".field_selected #gfield_input_datepicker_icon").hide(); } else{ jQuery(".field_selected [id^='gfield_input_date']").hide(); jQuery(".field_selected [id^='gfield_dropdown_date']").hide(); jQuery(".field_selected #gfield_input_datepicker").show(); //Displaying or hiding the calendar icon if(jQuery("#gsetting_icon_calendar").is(":checked")) jQuery(".field_selected #gfield_input_datepicker_icon").show(); else jQuery(".field_selected #gfield_input_datepicker_icon").hide(); } } function SetCalendarIconType(iconType, isInit){ field = GetSelectedField(); if(GetInputType(field) != "date") return; if(iconType == undefined) iconType = "none"; if(iconType == "none") jQuery("#gsetting_icon_none").prop("checked", true); else if(iconType == "calendar") jQuery("#gsetting_icon_calendar").prop("checked", true); else if(iconType == "custom") jQuery("#gsetting_icon_custom").prop("checked", true); SetFieldProperty('calendarIconType', iconType); ToggleCalendarIconUrl( isInit ); LoadDateInputs(); } function SetDateInputType(type){ field = GetSelectedField(); if(GetInputType(field) != "date") return; if ( type === 'datepicker' ) { SetFieldAccessibilityWarning( 'date_input_type_setting', 'above' ); } else { resetAllFieldAccessibilityWarnings(); } field.dateType = type; field.inputs = GetDateFieldInputs(field); CreateDefaultValuesUI(field); CreatePlaceholdersUI(field); CreateInputLabelsUI(field); ToggleDateSettings(field); ResetDefaultInputValues(field); ToggleDateCalendar(); LoadDateInputs(); } function SetPostImageMeta(){ var displayAlt = jQuery('#gfield_display_alt').is(":checked"); var displayTitle = jQuery('#gfield_display_title').is(":checked"); var displayCaption = jQuery('#gfield_display_caption').is(":checked"); var displayDescription = jQuery('#gfield_display_description').is(":checked"); var displayLabel = (displayAlt || displayTitle || displayCaption || displayDescription); //setting property SetFieldProperty('displayAlt', displayAlt); SetFieldProperty('displayTitle', displayTitle); SetFieldProperty('displayCaption', displayCaption); SetFieldProperty('displayDescription', displayDescription); //updating UI jQuery('.field_selected .ginput_post_image_alt').css("display", displayAlt ? "block" : "none"); jQuery('.field_selected .ginput_post_image_title').css("display", displayTitle ? "block" : "none"); jQuery('.field_selected .ginput_post_image_caption').css("display", displayCaption ? "block" : "none"); jQuery('.field_selected .ginput_post_image_description').css("display", displayDescription ? "block" : "none"); jQuery('.field_selected .ginput_post_image_file').css("display", displayLabel ? "block" : "none"); } function SetFeaturedImage() { var isChecked = jQuery('#gfield_featured_image').is(':checked'); if(isChecked) { for(i in form.fields) { if(!form.fields.hasOwnProperty(i)) continue; form.fields[i].postFeaturedImage = false; } SetFieldProperty('postFeaturedImage', true); } else{ SetFieldProperty('postFeaturedImage', false); } } function SetFieldProperty(name, value){ if (value == undefined) value = ""; var field = GetSelectedField(); var previousValue = rgar( field, name ); field[name] = value; /** * Enables custom actions to be performed when a field property is set. * * @since 2.7.16 * * @param {string} name The name of the property that was set. * @param {object} field The field object that was updated. * @param {(string|number|boolean|array)} value The current value of the specified property. * @param {(string|number|boolean|array)} previousValue The previous value of the specified property. */ window.gform.doAction( 'gform_post_set_field_property', name, field, value, previousValue ); } function SetInputName(value, inputId){ var field = GetSelectedField(); if(value) value = value.trim(); if(!inputId){ field["inputName"] = value; } else{ for(var i=0; i b["text"].toLowerCase() );}); } function SetFieldLabel(label){ var requiredElement = jQuery(".field_selected .gfield_required")[0]; jQuery(".field_selected label.gfield_label, .field_selected .gsection_title, .field_selected legend.gfield_label > span").text(label).append(requiredElement); SetFieldProperty("label", label); var nativeEvent = new Event('gform/form_editor/set_field_label'); document.dispatchEvent(nativeEvent); } /** * Set the Aria Label for a field in the editor. * * @since 2.5. * * @param {string} label The field label */ function SetAriaLabel(label){ var fieldId = jQuery( ".field_selected" )[0].id.split( '_' )[1]; var field = GetFieldById( fieldId ); var ariaLabel = window.gf_vars.fieldLabelAriaLabel.replace('{field_label}', label).replace('{field_type}', field.type); jQuery( ".field_selected .gfield-edit" ).attr( 'aria-label', ariaLabel ); } function SetCaptchaTheme(theme, thumbnailUrl){ jQuery(".field_selected .gfield_captcha").attr("src", thumbnailUrl); SetFieldProperty("captchaTheme", theme); } function SetCaptchaSize(size){ var type = jQuery("#field_captcha_type").val(); SetFieldProperty("simpleCaptchaSize", size); RedrawCaptcha(); jQuery(".field_selected .gfield_captcha_input_container").removeClass(type + "_small").removeClass(type + "_medium").removeClass(type + "_large").addClass(type + "_" + size); } function SetCaptchaFontColor(color){ SetFieldProperty("simpleCaptchaFontColor", color); RedrawCaptcha(); } function SetCaptchaBackgroundColor(color){ SetFieldProperty("simpleCaptchaBackgroundColor", color); RedrawCaptcha(); } function RedrawCaptcha(){ var captchaType = jQuery("#field_captcha_type").val(); if(captchaType == "math"){ url_1 = GetCaptchaUrl(1); url_2 = GetCaptchaUrl(2); url_3 = GetCaptchaUrl(3); jQuery(".field_selected .gfield_captcha:eq(0)").attr("src", url_1); jQuery(".field_selected .gfield_captcha:eq(1)").attr("src", url_2); jQuery(".field_selected .gfield_captcha:eq(2)").attr("src", url_3); } else{ url = GetCaptchaUrl(); jQuery(".field_selected .gfield_captcha").attr("src", url); } } function SetFieldEnhancedUI( checked ) { SetFieldProperty( 'enableEnhancedUI', checked ? 1 : 0 ); if ( checked ) { SetFieldAccessibilityWarning( 'enable_enhanced_ui_setting', 'below' ); } else { resetAllFieldAccessibilityWarnings(); } } function SetFieldSize(size){ jQuery(".field_selected .small, .field_selected .medium, .field_selected .large").removeClass("small").removeClass("medium").removeClass("large").addClass(size); SetFieldProperty("size", size); } function SetFieldLabelPlacement(labelPlacement){ var labelPlacementClass = labelPlacement ? labelPlacement : form.labelPlacement; SetFieldProperty("labelPlacement", labelPlacement); jQuery(".field_selected").removeClass("top_label").removeClass("right_label").removeClass("left_label").removeClass("hidden_label").addClass(labelPlacementClass); if((field.labelPlacement == 'left_label' || field.labelPlacement == 'right_label' || (field.labelPlacement == '' && form.labelPlacement != 'top_label'))){ jQuery('#field_description_placement').val(''); SetFieldProperty("descriptionPlacement", ''); jQuery('#field_description_placement_container').hide('slow'); } else { jQuery('#field_description_placement_container').show('slow'); } if ( field.labelPlacement == 'hidden_label' ) { SetFieldAccessibilityWarning( 'label_placement_setting', 'above' ); } else { resetAllFieldAccessibilityWarnings(); } SetFieldProperty("labelPlacement", labelPlacement); SetFieldRequired(field.isRequired); RefreshSelectedFieldPreview(); } function SetFieldDescriptionPlacement(descriptionPlacement){ var isDescriptionAbove = descriptionPlacement == 'above' || (descriptionPlacement == '' && form.descriptionPlacement == 'above)'); SetFieldProperty("descriptionPlacement", descriptionPlacement); RefreshSelectedFieldPreview(function(){ if(isDescriptionAbove){ jQuery(".field_selected").addClass("description_above"); } else { jQuery(".field_selected").removeClass("description_above"); } }); } function SetFieldSubLabelPlacement( subLabelPlacement ) { SetFieldProperty( "subLabelPlacement", subLabelPlacement ); RefreshSelectedFieldPreview( function() { if ( "above" === subLabelPlacement ) { jQuery( ".field_selected" ).addClass( "field_sublabel_above" ).removeClass( "field_sublabel_below" ); } else { jQuery( ".field_selected" ).addClass( "field_sublabel_below" ).removeClass( "field_sublabel_above" ); } } ); } function SetFieldVisibility( visibility, handleInputs, isInit ) { if (!isInit && visibility == 'administrative' && HasConditionalLogicDependency(field.id)) { if( ! confirm( gf_vars.conditionalLogicDependencyAdminOnly ) ) { return false; } } var isWhitelisted = false; for( var i = 0; i < gf_vars.visibilityOptions.length; i++ ) { if( gf_vars.visibilityOptions[i].value == visibility ) { isWhitelisted = true; break; } } if( ! isWhitelisted ) { visibility = 'visible'; } SetFieldProperty( 'visibility', visibility ); if( handleInputs ) { var $inputs = jQuery( 'input[name="field_visibility"]' ); $inputs.prop( 'checked', false ); $inputs.filter( '[value="' + visibility + '"]' ).prop( 'checked', true ); } } function SetFieldDefaultValue(defaultValue){ jQuery(".field_selected > div > input:visible, .field_selected > div > textarea:visible, .field_selected > div > select:visible").val(defaultValue); SetFieldProperty('defaultValue', defaultValue); } function SetFieldPlaceholder(placeholder){ jQuery(".field_selected > div > input:visible, .field_selected > div > textarea:visible, .field_selected > div > select:visible").each(function(){ var type = this.nodeName; var $this = jQuery(this); if(type == 'INPUT' || type == 'TEXTAREA'){ jQuery(this).prop("placeholder", placeholder); } else if (type == 'SELECT'){ var $option = $this.find('option[value=""]'); if($option.length>0){ if(placeholder.length > 0){ $option.text(placeholder); } else { $option.remove(); } } else { $this.prepend(''); $this.val(''); } } }); SetFieldProperty('placeholder', placeholder); } function SetFieldDescription(description){ if(description == undefined) description = ""; SetFieldProperty('description', description); } function SetFieldCheckboxLabel(text){ if(text == undefined) text = ""; SetFieldProperty('checkboxLabel', text); } function SetPasswordStrength(isEnabled){ if(isEnabled){ jQuery(".field_selected .gfield_password_strength").show(); } else{ jQuery(".field_selected .gfield_password_strength").hide(); //resetting min strength jQuery("#gfield_min_strength").val(""); SetFieldProperty('minPasswordStrength', ""); } SetFieldProperty('passwordStrengthEnabled', isEnabled); } function ToggleEmailSettings(field){ var isConfirmEnabled = typeof field.emailConfirmEnabled != 'undefined' && field.emailConfirmEnabled == true; jQuery('.placeholder_setting').toggle(!isConfirmEnabled); jQuery('.default_value_setting').toggle(!isConfirmEnabled); jQuery('.sub_label_placement_setting').toggle(isConfirmEnabled); jQuery('.sub_labels_setting').toggle(isConfirmEnabled); jQuery('.default_input_values_setting').toggle(isConfirmEnabled); jQuery('.input_placeholders_setting').toggle(isConfirmEnabled); } function SetEmailConfirmation(isEnabled){ var field = GetSelectedField(); if(isEnabled){ jQuery(".field_selected .ginput_single_email").hide(); jQuery(".field_selected .ginput_confirm_email").show(); } else{ jQuery(".field_selected .ginput_confirm_email").hide(); jQuery(".field_selected .ginput_single_email").show(); } field['emailConfirmEnabled'] = isEnabled; field.inputs = GetEmailFieldInputs(field); CreateDefaultValuesUI(field); CreatePlaceholdersUI(field); CreateAutocompleteUI(field); CreateCustomizeInputsUI(field); CreateInputLabelsUI(field); ToggleEmailSettings(field); } function SetCardType(elem, value) { var cards = GetSelectedField()['creditCards'] ? GetSelectedField()['creditCards'] : new Array(); if(jQuery(elem).is(':checked')) { if(jQuery.inArray(value, cards) == -1) { jQuery('.gform_card_icon_' + value).fadeIn(); cards[cards.length] = value; } } else { var index = jQuery.inArray(value, cards); if(index != -1) { jQuery('.gform_card_icon_' + value).fadeOut(); cards.splice(index, 1); } } SetFieldProperty('creditCards', cards); } function SetFieldRequired( isRequired ) { var required = gform_form_strings.requiredIndicator; var requiredSelector = '.field_selected .gfield_required'; var appendRequired = false; if ( field.type === 'consent' ) { jQuery( requiredSelector ).remove(); if ( isRequired ) { appendRequired = true; } } else if ( jQuery( requiredSelector ).length > 0 ) { if ( isRequired ) { jQuery( requiredSelector ).html( required ); } else { jQuery( requiredSelector ).remove(); } } else if ( isRequired ) { appendRequired = true; } if ( appendRequired ) { var labelSelector = field.type === 'consent' && field.labelPlacement === 'hidden_label' ? '.field_selected .gfield_consent_label' : '.field_selected legend.gfield_label span, .field_selected label.gfield_label'; jQuery( labelSelector ).append( '' + required + '' ); } SetFieldProperty( 'isRequired', isRequired ); } function SetMaxLength(input) { var patt = GetMaxLengthPattern(); var cleanValue = ''; var characters = input.value.split(''); for(i in characters) { if(!characters.hasOwnProperty(i)) continue; if( !patt.test(characters[i]) ) cleanValue += characters[i]; } input.value = cleanValue; SetFieldProperty('maxLength', cleanValue); } function GetMaxLengthPattern() { return /[a-zA-Z\-!@#$%^&*();'":_+=<,>.~`?\/|\[\]\{\}\\]/; } /** * Validate any keypress events based on a provided RegExp. * * Function retrieves the character code from the keypress event and tests it against provided pattern. * Optionally specify 'matchPositive' argument to false in order to return true if the character is NOT * in the provided pattern. * * @param event The JS keypress event. * @param patt RegExp to test keypress character against. * @param matchPositive Defaults to true. Whether to return true if the character is found or NOT found in the pattern. */ function ValidateKeyPress(event, patt, matchPositive) { var matchPositive = typeof matchPositive == 'undefined' ? true : matchPositive; var char = event['which'] ? event.which : event.keyCode; var isMatch = patt.test(String.fromCharCode(char)); if(event.ctrlKey) return true; return matchPositive ? isMatch : !isMatch; } function IndexOf(ary, item){ for(var i=0; i').appendTo("body");jQuery(document.createElement("div")).attr("id","iColorPickerBg").click(function(){jQuery("#iColorPickerBg").hide();jQuery("#iColorPicker").fadeOut()}).appendTo("body");jQuery('table.pickerTable td').css({'width':'12px','height':'14px','border':'1px solid #000','cursor':'pointer'});jQuery('#iColorPicker table.pickerTable').css({'border-collapse':'collapse'});jQuery('#iColorPicker').css({'border':'1px solid #ccc','background':'#333','padding':'5px','color':'#fff','z-index':9999})} jQuery('#colorPreview').css({'height':'50px'}); }) }; jQuery(function(){iColorPicker()}); function SetColorPickerColor(field_name, color, callback){ var chip = jQuery('#chip_' + field_name); chip.css("background-color", color); if(callback) window[callback](color); } jQuery( document ).mouseup( function( e ) { var container = jQuery( "#iColorPicker" ); if ( ! container.is( e.target ) && container.has( e.target ).length === 0 ) { jQuery( "#iColorPickerBg" ).hide(); jQuery( "#iColorPicker" ).fadeOut(); } } ); function SetFieldChoices(){ var field = GetSelectedField(); for(var i=0; i { $container = jQuery( '.field_selected .field-' + type + '-message-content' ); messageMarkup = $container && $container.length ? gform_strip_scripts( $container.html() ) : ''; if ( messageMarkup ) { jQuery( '#sidebar_field_message_container .gform-alert__message' ).html( messageMarkup ); jQuery( '#sidebar_field_message_container .gform-alert' ).addClass( 'gform-alert--' + ( type === 'warning' ? 'error' : type ) ); iconClasses.forEach( ( className ) => { jQuery( '#sidebar_field_message_container .gform-icon' ).addClass( className ); } ); // Add class to force this notice visible, as all field notices are reset when a field is selected. if ( type === 'notice' ) { jQuery( '#sidebar_field_message_container .gform-alert' ).addClass( 'gform-visible-notice' ); } showSidebarMessage = true; wp.a11y.speak( messageMarkup ); } else { jQuery( '#sidebar_field_message_container' ).hide(); } } ); if ( showSidebarMessage ) { jQuery( '#sidebar_field_message_container' ).show(); jQuery( '#sidebar_field_message_container .gform-alert' ).show(); } } /** * Set the field error for a field settings. * * We add the field setting to the "errors" field property and display the error * message next to the setting. * * @since 2.5 * * @param {string} fieldSetting The field setting class name. * @param {string} position The position to put the warning, can be 'above' or 'below'. * @param {string} [message] The message to be set in the warning. */ function setFieldError( fieldSetting, position, message ) { var field = GetSelectedField(); // Make sure this field can have errors. if ( field.type == 'page' || field.type == 'section' || field.type == 'html' ) { return; } var errorProperties = [ fieldSetting ]; // Extra rules for the label setting. if ( fieldSetting === 'label_setting' ) { var fieldPlaceholder = field.hasOwnProperty( 'placeholder' ) ? field.placeholder : ''; var fieldDescription = field.hasOwnProperty( 'description' ) ? field.description : ''; if ( fieldPlaceholder !== '' || fieldDescription !== '' ) { SetFieldAccessibilityWarning( 'label_setting', 'below' ); resetFieldError( 'label_setting' ); return; } else { ResetFieldAccessibilityWarning( 'label_setting' ); } } // Set up error property list to the "errors" property. if ( field.hasOwnProperty( 'errors' ) && ! field.errors.includes( fieldSetting ) ) { errorProperties = errorProperties.concat( field.errors ); } SetFieldProperty( 'errors', errorProperties ); // Get the error message. if ( message === undefined ) { message = getFieldErrorMessage( fieldSetting ); } var errorDiv = '
    '; errorDiv += ''; errorDiv += '
    ' + message + '
    '; errorDiv += '
    '; // Display the error message. var fieldSettingContainer = jQuery( '.' + fieldSetting ); fieldSettingContainer.addClass( 'error' ); jQuery( '.gform-alert--error[data-field-setting="' + fieldSetting + '"]' ).remove(); if ( position === 'above' ) { fieldSettingContainer.before( errorDiv ); } else { fieldSettingContainer.after( errorDiv ); } } /** * Reset the field error for a field setting. * * @since 2.5 * * @param {string} [fieldSetting] The field setting class name. */ function resetFieldError( fieldSetting ) { var field = GetSelectedField(); var errorProperties = field.hasOwnProperty( 'errors' ) ? field.errors : []; if ( typeof fieldSetting !== 'undefined' ) { jQuery( '.gform-alert--error[data-field-setting="' + fieldSetting + '"]' ).remove() jQuery( '.' + fieldSetting ).removeClass( 'error' ); var index = errorProperties.indexOf( fieldSetting ); // Delete the field property from the errors. if ( index > -1 ) { if ( errorProperties.length > 1 ) { delete errorProperties[ index ]; } else { errorProperties = []; } } } SetFieldProperty( 'errors', errorProperties ); } /** * Reset the field errors for all field settings. * * @since 2.5.8 */ function resetAllFieldErrors() { if ( ! jQuery( '.field_setting' ).hasClass( 'error' ) ) { return; } jQuery('.editor-sidebar .gform-alert--error').remove(); jQuery('.field_setting').filter('.error').removeClass( 'error' ); if ( form.fields.length > 0 ) { form.fields.forEach( function( field ) { if( field.hasOwnProperty( 'errors' ) && field.errors.length > 0 ) { field.errors = []; } } ); } } /** * Check if a given field or the selected field has errors. * * @since 2.5 * * @param {object} [field] The field object. * * @return {boolean} */ function fieldHasError( field ) { if ( typeof field === 'undefined' ) { field = GetSelectedField(); } if ( field.hasOwnProperty( 'errors' ) && field.errors.length > 0 ) { return true; } return false; }


    Affirmation for success
    Succeed with Affirmate


    Affirmation for success
    Succeed with Affirmate

    OUR SERVICES

    Our Business Advisory Team will assist and provide advice and assistance throughout the full spectrum of your business. We will also provide you with new insights & perspectives for your business.

    We are introducing a high-class living space so that you can have a comfortable life in Jakarta. We also support the operation/development and sale of customer assets in Indonesia.

    Joint Venture with RITZ CORPORA. Investment Banking that focus on M&A.

    Selected Partners & Clients

    Contact Us

    Jakarta – Indonesia
    Ascott Sudirman Jakarta, 31st floor Affirmate Office, Ciputra World 2 Jl. Prof. Dr. Satrio Kav.11 Jakarta 12930, Indonesia
    Email : info@affirmate.co.id
    (+62) 21 5092 8670
     

    © 2020 Affirmate Group. All Rights Reserved