plugin install
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
var GF_Settings_Dependencies = function ( args ) {
|
||||
|
||||
var self = this;
|
||||
self.args = args;
|
||||
|
||||
/**
|
||||
* Bind change events for dependent fields.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
self.bindEvents = function () {
|
||||
|
||||
for ( var i = 0; i < self.args.fields.length; i ++ ) {
|
||||
|
||||
var rule = self.args.fields[ i ],
|
||||
inputName = self.args.prefix + '_' + rule.field;
|
||||
|
||||
// Add event for each checkbox value.
|
||||
if ( rule.field_type === 'checkbox' ) {
|
||||
|
||||
for ( var ii = 0; ii < rule.values.length; ii++ ) {
|
||||
|
||||
var checkboxName = self.args.prefix + '_' + rule.values[ ii ],
|
||||
$checkboxes = document.querySelectorAll( '[name="' + checkboxName + '"]' );
|
||||
|
||||
for ( var jj = 0; jj < $checkboxes.length; jj++ ) {
|
||||
$checkboxes[ jj ].addEventListener( 'change', self.evaluateLogic );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
var $elements = document.querySelectorAll( '[name="' + inputName + '"]' );
|
||||
|
||||
for ( var ii = 0; ii < $elements.length; ii++ ) {
|
||||
$elements[ ii ].addEventListener( 'change', self.evaluateLogic );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Displays or hides the targeted field based on logic rules.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
self.evaluateLogic = function() {
|
||||
|
||||
var evaluatedRules = 0,
|
||||
passedLogic = false;
|
||||
|
||||
for ( var i = 0; i < self.args.fields.length; i++ ) {
|
||||
if ( self.evaluateRule( self.args.fields[ i ] ) ) {
|
||||
evaluatedRules++;
|
||||
}
|
||||
}
|
||||
|
||||
if ( self.args.operator.toUpperCase() === 'ALL' && evaluatedRules === self.args.fields.length ) {
|
||||
passedLogic = true;
|
||||
} else if ( self.args.operator.toUpperCase() === 'ANY' && evaluatedRules > 0 ) {
|
||||
passedLogic = true;
|
||||
}
|
||||
|
||||
if ( passedLogic ) {
|
||||
self.getTargetObject().style.display = '';
|
||||
} else {
|
||||
self.getTargetObject().style.display = 'none';
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is found in the rule's defined values.
|
||||
*
|
||||
* @since 2.5
|
||||
*
|
||||
* @param {Object} rule Rule object (contains field name and values).
|
||||
*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
self.evaluateRule = function ( rule ) {
|
||||
|
||||
var value,
|
||||
inputName = self.args.prefix + '_' + rule.field;
|
||||
|
||||
// If rule has a callback and it exists, return it.
|
||||
if ( self.args.callback && window[ self.args.callback ] ) {
|
||||
return window[ self.args.callback ].call( self, rule );
|
||||
}
|
||||
|
||||
// If rule values are not an array, force array.
|
||||
if ( ! Array.isArray( rule.values ) ) {
|
||||
if ( rule.values === undefined ) {
|
||||
rule.values = new Array( '_notempty_' );
|
||||
} else {
|
||||
rule.values = new Array( rule.values );
|
||||
}
|
||||
}
|
||||
|
||||
// Handle checkbox field separately.
|
||||
if ( rule.field_type === 'checkbox' ) {
|
||||
|
||||
// Loop through values. If choice is selected, return true.
|
||||
for ( var i = 0; i < rule.values.length; i++ ) {
|
||||
if ( document.querySelector( '[name="' + self.args.prefix + '_' + rule.values[ i ] + '"]' ).value == 1 ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
// Get field value.
|
||||
switch ( rule.field_type ) {
|
||||
|
||||
case 'toggle':
|
||||
value = document.querySelector( '[name="' + inputName + '"]' ).checked;
|
||||
break;
|
||||
|
||||
case 'radio':
|
||||
value = document.querySelector( '[name="' + inputName + '"]:checked' ).value;
|
||||
break;
|
||||
|
||||
default:
|
||||
value = document.querySelector( '[name="' + inputName + '"]' ).value;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// Loop through rule values and test.
|
||||
for ( var i = 0; i < rule.values.length; i++ ) {
|
||||
if ( '_notempty_' === rule.values[ i ] && ( ( typeof value === 'string' && value.length > 0 ) || ( typeof value === 'boolean' && value === true ) ) ) {
|
||||
return true;
|
||||
} else if ( rule.values[ i ] === value ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns target of dependency.
|
||||
*
|
||||
* @since 2.5
|
||||
*
|
||||
* @returns {HTMLElement}
|
||||
*/
|
||||
self.getTargetObject = function() {
|
||||
|
||||
switch ( self.args.target.type ) {
|
||||
|
||||
case 'save':
|
||||
return document.getElementById( 'gform-settings-save' );
|
||||
|
||||
case 'section':
|
||||
return document.getElementById( self.args.target.field );
|
||||
|
||||
case 'tab':
|
||||
return document.querySelector( '.gform-settings-tabs__navigation a[data-tab="' + self.args.target.field + '"]' );
|
||||
|
||||
default:
|
||||
return document.getElementById( 'gform_setting_' + self.args.target.field );
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
self.bindEvents();
|
||||
|
||||
};
|
||||
1
wp/wp-content/plugins/gravityforms/includes/settings/js/dependencies.min.js
vendored
Normal file
1
wp/wp-content/plugins/gravityforms/includes/settings/js/dependencies.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
var GF_Settings_Dependencies=function(e){var g=this;g.args=e,g.bindEvents=function(){for(var e=0;e<g.args.fields.length;e++){var a=g.args.fields[e],t=g.args.prefix+"_"+a.field;if("checkbox"===a.field_type)for(var r=0;r<a.values.length;r++)for(var n=g.args.prefix+"_"+a.values[r],l=document.querySelectorAll('[name="'+n+'"]'),s=0;s<l.length;s++)l[s].addEventListener("change",g.evaluateLogic);else for(var o=document.querySelectorAll('[name="'+t+'"]'),r=0;r<o.length;r++)o[r].addEventListener("change",g.evaluateLogic)}},g.evaluateLogic=function(){for(var e=0,a=!1,t=0;t<g.args.fields.length;t++)g.evaluateRule(g.args.fields[t])&&e++;("ALL"===g.args.operator.toUpperCase()&&e===g.args.fields.length||"ANY"===g.args.operator.toUpperCase()&&0<e)&&(a=!0),g.getTargetObject().style.display=a?"":"none"},g.evaluateRule=function(e){var a,t=g.args.prefix+"_"+e.field;if(g.args.callback&&window[g.args.callback])return window[g.args.callback].call(g,e);if(Array.isArray(e.values)||(void 0===e.values?e.values=new Array("_notempty_"):e.values=new Array(e.values)),"checkbox"===e.field_type){for(var r=0;r<e.values.length;r++)if(1==document.querySelector('[name="'+g.args.prefix+"_"+e.values[r]+'"]').value)return!0}else{switch(e.field_type){case"toggle":a=document.querySelector('[name="'+t+'"]').checked;break;case"radio":a=document.querySelector('[name="'+t+'"]:checked').value;break;default:a=document.querySelector('[name="'+t+'"]').value}for(r=0;r<e.values.length;r++){if("_notempty_"===e.values[r]&&("string"==typeof a&&0<a.length||"boolean"==typeof a&&!0===a))return!0;if(e.values[r]===a)return!0}}return!1},g.getTargetObject=function(){switch(g.args.target.type){case"save":return document.getElementById("gform-settings-save");case"section":return document.getElementById(g.args.target.field);case"tab":return document.querySelector('.gform-settings-tabs__navigation a[data-tab="'+g.args.target.field+'"]');default:return document.getElementById("gform_setting_"+g.args.target.field)}},g.bindEvents()};
|
||||
@@ -0,0 +1,45 @@
|
||||
window.addEventListener( 'load' , function() {
|
||||
|
||||
var $selectOptions = document.querySelectorAll( '.gform-settings-field__select_custom select' );
|
||||
var $buttons = document.querySelectorAll( '.gform-settings-select-custom__reset' );
|
||||
|
||||
$selectOptions.forEach( function( $select ) {
|
||||
|
||||
var $inputField = $select.parentNode.nextSibling;
|
||||
|
||||
$select.addEventListener( 'change', function( e ) {
|
||||
|
||||
if ( e.target.value !== 'gf_custom' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide drop down, show input.
|
||||
$select.style.display = 'none';
|
||||
$inputField.style.display = 'block';
|
||||
|
||||
} );
|
||||
|
||||
} );
|
||||
|
||||
$buttons.forEach( function( $button ) {
|
||||
|
||||
var $inputField = $button.parentNode;
|
||||
|
||||
$button.addEventListener( 'click', function( e ) {
|
||||
|
||||
// Hide input, show drop down.
|
||||
$inputField.style.display = 'none';
|
||||
jQuery( this )
|
||||
.closest('div.gform-settings-field__select_custom')
|
||||
.find( 'select' )
|
||||
.each( function( index, element ) {
|
||||
element.value = '';
|
||||
element.style.display = 'block';
|
||||
}
|
||||
);
|
||||
|
||||
} );
|
||||
|
||||
} );
|
||||
|
||||
} );
|
||||
1
wp/wp-content/plugins/gravityforms/includes/settings/js/select-custom.min.js
vendored
Normal file
1
wp/wp-content/plugins/gravityforms/includes/settings/js/select-custom.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
window.addEventListener("load",function(){var e=document.querySelectorAll(".gform-settings-field__select_custom select"),t=document.querySelectorAll(".gform-settings-select-custom__reset");e.forEach(function(t){var n=t.parentNode.nextSibling;t.addEventListener("change",function(e){"gf_custom"===e.target.value&&(t.style.display="none",n.style.display="block")})}),t.forEach(function(e){var t=e.parentNode;e.addEventListener("click",function(e){t.style.display="none",jQuery(this).closest("div.gform-settings-field__select_custom").find("select").each(function(e,t){t.value="",t.style.display="block"})})})});
|
||||
@@ -0,0 +1,24 @@
|
||||
window.addEventListener( 'load', function() {
|
||||
document.querySelectorAll( '.gform-settings-tabs__navigation a' ).forEach( function( tab ) {
|
||||
tab.addEventListener( 'click', function ( e ) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
// Get selected tab.
|
||||
var selectedTab = e.target.dataset.tab;
|
||||
|
||||
// Hide active tab.
|
||||
document.querySelectorAll( '.gform-settings-tabs__navigation .active, .gform-settings-tabs__container.active' ).forEach( function( item ) {
|
||||
item.classList.remove( 'active' );
|
||||
} );
|
||||
|
||||
// Set selected tab to active tab input.
|
||||
document.querySelector( 'input[name="gform_settings_tab"]' ).value = selectedTab;
|
||||
|
||||
// Show selected tab.
|
||||
e.target.classList.add( 'active' );
|
||||
document.querySelector( '.gform-settings-tabs__container[data-tab="' + selectedTab + '"]' ).classList.add( 'active' );
|
||||
|
||||
} );
|
||||
} );
|
||||
} );
|
||||
1
wp/wp-content/plugins/gravityforms/includes/settings/js/tabs.min.js
vendored
Normal file
1
wp/wp-content/plugins/gravityforms/includes/settings/js/tabs.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
window.addEventListener("load",function(){document.querySelectorAll(".gform-settings-tabs__navigation a").forEach(function(t){t.addEventListener("click",function(t){t.preventDefault();var e=t.target.dataset.tab;document.querySelectorAll(".gform-settings-tabs__navigation .active, .gform-settings-tabs__container.active").forEach(function(t){t.classList.remove("active")}),document.querySelector('input[name="gform_settings_tab"]').value=e,t.target.classList.add("active"),document.querySelector('.gform-settings-tabs__container[data-tab="'+e+'"]').classList.add("active")})})});
|
||||
Reference in New Issue
Block a user