File "required.js"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/kapee-extensions/inc/admin/redux-core/assets/js/redux/required.js
File size: 13.06 KB
MIME-type: text/plain
Charset: utf-8
/* global redux */
(function( $ ) {
'use strict';
$.redux = $.redux || {};
$.redux.makeBoolStr = function( val ) {
if ( 'false' === val || false === val || '0' === val || 0 === val || null === val || '' === val ) {
return 'false';
} else if ( 'true' === val || true === val || '1' === val || 1 === val ) {
return 'true';
} else {
return val;
}
};
$.redux.checkRequired = function( el ) {
var body;
$.redux.required();
body = $( 'body' );
body.on(
'change',
'.redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]',
function() {
$.redux.check_dependencies( this );
}
);
body.on(
'check_dependencies',
function( e, variable ) {
e = null;
$.redux.check_dependencies( variable );
}
);
if ( redux.customizer ) {
el.find( '.customize-control.redux-field.hide' ).hide();
}
el.find( '.redux-container td > fieldset:empty,td > div:empty' ).parent().parent().hide();
};
$.redux.required = function() {
// Hide the fold elements on load.
// It's better to do this by PHP but there is no filter in tr tag , so is not possible
// we're going to move each attributes we may need for folding to tr tag.
$.each(
redux.opt_names,
function( x ) {
$.each(
window['redux_' + redux.opt_names[x].replace( /\-/g, '_' )].folds,
function( i, v ) {
var div;
var rawTable;
var fieldset = $( '#' + redux.opt_names[x] + '-' + i );
fieldset.parents( 'tr:first, li:first' ).addClass( 'fold' );
if ( 'hide' === v ) {
fieldset.parents( 'tr:first, li:first' ).addClass( 'hide' );
if ( fieldset.hasClass( 'redux-container-section' ) ) {
div = $( '#section-' + i );
if ( div.hasClass( 'redux-section-indent-start' ) ) {
$( '#section-table-' + i ).hide().addClass( 'hide' );
div.hide().addClass( 'hide' );
}
}
if ( fieldset.hasClass( 'redux-container-info' ) ) {
$( '#info-' + i ).hide().addClass( 'hide' );
}
if ( fieldset.hasClass( 'redux-container-divide' ) ) {
$( '#divide-' + i ).hide().addClass( 'hide' );
}
if ( fieldset.hasClass( 'redux-container-raw' ) ) {
rawTable = fieldset.parents().find( 'table#' + redux.opt_names[x] + '-' + i );
rawTable.hide().addClass( 'hide' );
}
}
}
);
}
);
};
$.redux.getContainerValue = function( id ) {
var theId;
var value;
theId = $( '#' + redux.optName.args.opt_name + '-' + id );
value = theId.serializeForm();
if ( null !== value && 'object' === typeof value && value.hasOwnProperty( redux.optName.args.opt_name ) ) {
value = value[redux.optName.args.opt_name][id];
}
if ( theId.hasClass( 'redux-container-media' ) ) {
value = value.url;
}
return value;
};
$.redux.check_dependencies = function( variable ) {
var current;
var id;
var container;
var isHidden;
if ( null === redux.optName.required ) {
return;
}
current = $( variable );
id = current.parents( '.redux-field:first' ).data( 'id' );
if ( ! redux.optName.required.hasOwnProperty( id ) ) {
return;
}
container = current.parents( '.redux-field-container:first' );
isHidden = container.parents( 'tr:first' ).hasClass( 'hide' );
if ( ! container.parents( 'tr:first' ).length ) {
isHidden = container.parents( '.customize-control:first' ).hasClass( 'hide' );
}
$.each(
redux.optName.required[id],
function( child ) {
var div;
var rawTable;
var tr;
var current = $( this );
var show = false;
var childFieldset = $( '#' + redux.optName.args.opt_name + '-' + child );
tr = childFieldset.parents( 'tr:first' );
if ( 0 === tr.length ) {
tr = childFieldset.parents( 'li:first' );
}
if ( ! isHidden ) {
show = $.redux.check_parents_dependencies( child );
}
if ( true === show ) {
// Shim for sections.
if ( childFieldset.hasClass( 'redux-container-section' ) ) {
div = $( '#section-' + child );
if ( div.hasClass( 'redux-section-indent-start' ) && div.hasClass( 'hide' ) ) {
$( '#section-table-' + child ).fadeIn( 300 ).removeClass( 'hide' );
div.fadeIn( 300 ).removeClass( 'hide' );
}
}
if ( childFieldset.hasClass( 'redux-container-info' ) ) {
$( '#info-' + child ).fadeIn( 300 ).removeClass( 'hide' );
}
if ( childFieldset.hasClass( 'redux-container-divide' ) ) {
$( '#divide-' + child ).fadeIn( 300 ).removeClass( 'hide' );
}
if ( childFieldset.hasClass( 'redux-container-raw' ) ) {
rawTable = childFieldset.parents().find( 'table#' + redux.optName.args.opt_name + '-' + child );
rawTable.fadeIn( 300 ).removeClass( 'hide' );
}
tr.fadeIn(
300,
function() {
$( this ).removeClass( 'hide' );
if ( redux.optName.required.hasOwnProperty( child ) ) {
$.redux.check_dependencies( $( '#' + redux.optName.args.opt_name + '-' + child ).children().first() );
}
$.redux.initFields();
}
);
if ( childFieldset.hasClass( 'redux-container-section' ) || childFieldset.hasClass( 'redux-container-info' ) ) {
tr.css( { display: 'none' } );
}
} else if ( false === show ) {
tr.fadeOut(
100,
function() {
$( this ).addClass( 'hide' );
if ( redux.optName.required.hasOwnProperty( child ) ) {
$.redux.required_recursive_hide( child );
}
}
);
}
current.find( 'select, radio, input[type=checkbox]' ).trigger( 'change' );
}
);
};
$.redux.required_recursive_hide = function( id ) {
var div;
var rawTable;
var toFade;
var theId;
theId = $( '#' + redux.optName.args.opt_name + '-' + id );
toFade = theId.parents( 'tr:first' );
if ( 0 === toFade ) {
toFade = theId.parents( 'li:first' );
}
toFade.fadeOut(
50,
function() {
$( this ).addClass( 'hide' );
if ( theId.hasClass( 'redux-container-section' ) ) {
div = $( '#section-' + id );
if ( div.hasClass( 'redux-section-indent-start' ) ) {
$( '#section-table-' + id ).fadeOut( 50 ).addClass( 'hide' );
div.fadeOut( 50 ).addClass( 'hide' );
}
}
if ( theId.hasClass( 'redux-container-info' ) ) {
$( '#info-' + id ).fadeOut( 50 ).addClass( 'hide' );
}
if ( theId.hasClass( 'redux-container-divide' ) ) {
$( '#divide-' + id ).fadeOut( 50 ).addClass( 'hide' );
}
if ( theId.hasClass( 'redux-container-raw' ) ) {
rawTable = $( '#' + redux.optName.args.opt_name + '-' + id ).parents().find( 'table#' + redux.optName.args.opt_name + '-' + id );
rawTable.fadeOut( 50 ).addClass( 'hide' );
}
if ( redux.optName.required.hasOwnProperty( id ) ) {
$.each(
redux.optName.required[id],
function( child ) {
$.redux.required_recursive_hide( child );
}
);
}
}
);
};
$.redux.check_parents_dependencies = function( id ) {
var show = '';
if ( redux.optName.required_child.hasOwnProperty( id ) ) {
$.each(
redux.optName.required_child[id],
function( i, parentData ) {
var parentValue;
var parent;
parent = $( '#' + redux.optName.args.opt_name + '-' + parentData.parent );
i = null;
if ( parent.parents( 'tr:first' ).hasClass( 'hide' ) ) {
show = false;
} else if ( parent.parents( 'li:first' ).hasClass( 'hide' ) ) {
show = false;
} else {
if ( false !== show ) {
parentValue = $.redux.getContainerValue( parentData.parent );
show = $.redux.check_dependencies_visibility( parentValue, parentData );
}
}
}
);
} else {
show = true;
}
return show;
};
$.redux.check_dependencies_visibility = function( parentValue, data ) {
var show = false;
var checkValue = data.checkValue;
var operation = data.operation;
var arr;
if ( $.isPlainObject( parentValue ) ) {
parentValue = Object.keys( parentValue ).map(
function( key ) {
return [key, parentValue[key]];
}
);
}
switch ( operation ) {
case '=':
case 'equals':
if ( Array.isArray( parentValue ) ) {
$( parentValue[0] ).each(
function( idx, val ) {
idx = null;
if ( Array.isArray( checkValue ) ) {
$( checkValue ).each(
function( i, v ) {
i = null;
if ( $.redux.makeBoolStr( val ) === $.redux.makeBoolStr( v ) ) {
show = true;
return true;
}
}
);
} else {
if ( $.redux.makeBoolStr( val ) === $.redux.makeBoolStr( checkValue ) ) {
show = true;
return true;
}
}
}
);
} else {
if ( Array.isArray( checkValue ) ) {
$( checkValue ).each(
function( i, v ) {
i = null;
if ( $.redux.makeBoolStr( parentValue ) === $.redux.makeBoolStr( v ) ) {
show = true;
}
}
);
} else {
if ( $.redux.makeBoolStr( parentValue ) === $.redux.makeBoolStr( checkValue ) ) {
show = true;
}
}
}
break;
case '!=':
case 'not':
if ( Array.isArray( parentValue ) ) {
$( parentValue[0] ).each(
function( idx, val ) {
idx = null;
if ( Array.isArray( checkValue ) ) {
$( checkValue ).each(
function( i, v ) {
i = null;
if ( $.redux.makeBoolStr( val ) !== $.redux.makeBoolStr( v ) ) {
show = true;
return true;
}
}
);
} else {
if ( $.redux.makeBoolStr( val ) !== $.redux.makeBoolStr( checkValue ) ) {
show = true;
return true;
}
}
}
);
} else {
if ( Array.isArray( checkValue ) ) {
$( checkValue ).each(
function( i, v ) {
i = null;
if ( $.redux.makeBoolStr( parentValue ) !== $.redux.makeBoolStr( v ) ) {
show = true;
}
}
);
} else {
if ( $.redux.makeBoolStr( parentValue ) !== $.redux.makeBoolStr( checkValue ) ) {
show = true;
}
}
}
break;
case '>':
case 'greater':
case 'is_larger':
if ( parseFloat( parentValue ) > parseFloat( checkValue ) ) {
show = true;
}
break;
case '>=':
case 'greater_equal':
case 'is_larger_equal':
if ( parseFloat( parentValue ) >= parseFloat( checkValue ) ) {
show = true;
}
break;
case '<':
case 'less':
case 'is_smaller':
if ( parseFloat( parentValue ) < parseFloat( checkValue ) ) {
show = true;
}
break;
case '<=':
case 'less_equal':
case 'is_smaller_equal':
if ( parseFloat( parentValue ) <= parseFloat( checkValue ) ) {
show = true;
}
break;
case 'contains':
if ( $.isPlainObject( parentValue ) ) {
parentValue = Object.keys( parentValue ).map(
function( key ) {
return [key, parentValue[key]];
}
);
}
if ( $.isPlainObject( checkValue ) ) {
checkValue = Object.keys( checkValue ).map(
function( key ) {
return [key, checkValue[key]];
}
);
}
if ( Array.isArray( checkValue ) ) {
$( checkValue ).each(
function( idx, val ) {
var breakMe = false;
var toFind = val[0];
var findVal = val[1];
idx = null;
$( parentValue ).each(
function( i, v ) {
var toMatch = v[0];
var matchVal = v[1];
i = null;
if ( toFind === toMatch ) {
if ( findVal === matchVal ) {
show = true;
breakMe = true;
return false;
}
}
}
);
if ( true === breakMe ) {
return false;
}
}
);
} else {
if ( parentValue.toString().indexOf( checkValue ) !== - 1 ) {
show = true;
}
}
break;
case 'doesnt_contain':
case 'not_contain':
if ( $.isPlainObject( parentValue ) ) {
arr = Object.keys( parentValue ).map(
function( key ) {
return parentValue[key];
}
);
parentValue = arr;
}
if ( $.isPlainObject( checkValue ) ) {
arr = Object.keys( checkValue ).map(
function( key ) {
return checkValue[key];
}
);
checkValue = arr;
}
if ( Array.isArray( checkValue ) ) {
$( checkValue ).each(
function( idx, val ) {
idx = null;
if ( parentValue.toString().indexOf( val ) === - 1 ) {
show = true;
}
}
);
} else {
if ( parentValue.toString().indexOf( checkValue ) === - 1 ) {
show = true;
}
}
break;
case 'is_empty_or':
if ( '' === parentValue || checkValue === parentValue ) {
show = true;
}
break;
case 'not_empty_and':
if ( '' !== parentValue && checkValue !== parentValue ) {
show = true;
}
break;
case 'is_empty':
case 'empty':
case '!isset':
if ( ! parentValue || '' === parentValue || null === parentValue ) {
show = true;
}
break;
case 'not_empty':
case '!empty':
case 'isset':
if ( parentValue && '' !== parentValue && null !== parentValue ) {
show = true;
}
break;
}
return show;
};
})( jQuery );