Files
ultimatemember/assets/js/um-conditional.min.js
T

1 line
7.4 KiB
JavaScript

jQuery(document).ready(function(){var e,n=[],d={},r={};function o(e){switch(s(e)){case"text":case"number":case"date":case"textarea":case"select":case"multiselect":case"radio":case"checkbox":return e.find("input,textarea,select")}return""}function s(e){var a="",i=e.attr("class");return jQuery.each(i.split(" "),function(e,i){-1!=i.indexOf("um-field-type")&&(a=i.split("_")[1])}),a}function l(e,i,a){var t,n=!1;a=!!a;for(t in i)if(a&&i[t]===e||!a&&i[t]==e){n=!0;break}return n}function i(a,e){var i,t=a.parents(".um-field[data-key]").data("key"),n=d[t],c=(i=a,um_live_field=i.parents(".um-field").data("key"),um_live_value=i.val(),i.is(":checkbox")&&(um_live_value="",1<i.parents(".um-field").find("input:checked").length?i.parents(".um-field").find("input:checked").each(function(){um_live_value=um_live_value+jQuery(this).val()+" "}):1<=i.parents(".um-field").find("input:checked").length&&(um_live_value=i.parents(".um-field").find("input:checked").val())),i.is(":radio")&&(um_live_value=i.parents(".um-field").find("input[type=radio]:checked").val()),um_live_value),r={},o={},u={};jQuery.each(n,function(e,i){void 0===o[i.owner]&&(o[i.owner]=[],u[i.owner]={}),o[i.owner].push(i.value),u[i.owner]=i}),jQuery.each(n,function(e,i){void 0===r[i.owner]&&(r[i.owner]={}),"empty"==i.operator&&(!c||""==c&&l(c,o[i.owner])?r[i.owner][e]=!0:r[i.owner][e]=!1),"not empty"==i.operator&&(c&&""!=c&&!l(c,o[i.owner])?r[i.owner][e]=!0:r[i.owner][e]=!1),"equals to"==i.operator&&(i.value==c&&l(c,o[i.owner])?r[i.owner][e]=!0:r[i.owner][e]=!1),"not equals"==i.operator&&(jQuery.isNumeric(i.value)&&parseInt(c)!=parseInt(i.value)&&c&&!l(c,o[i.owner])?r[i.owner][e]=!0:i.value==c||l(c,o[i.owner])?r[i.owner][e]=!1:r[i.owner][e]=!0),"greater than"==i.operator&&(jQuery.isNumeric(i.value)&&parseInt(c)>parseInt(i.value)?r[i.owner][e]=!0:r[i.owner][e]=!1),"less than"==i.operator&&(jQuery.isNumeric(i.value)&&parseInt(c)<parseInt(i.value)?r[i.owner][e]=!0:r[i.owner][e]=!1),"contains"==i.operator&&("multiselect"==s(a.parents(".um-field[data-key]"))?c&&0<=c.indexOf(i.value)&&l(i.value,c)?r[i.owner][e]=!0:r[i.owner][e]=!1:"checkbox"==s(a.parents(".um-field[data-key]"))?c&&0<=c.indexOf(i.value)?r[i.owner][e]=!0:r[i.owner][e]=!1:c&&0<=c.indexOf(i.value)&&l(c,o[i.owner])?r[i.owner][e]=!0:r[i.owner][e]=!1)}),jQuery.each(r,function(e,i){l(!0,i)?f(a,u[e],!0):f(a,u[e],!1)}),a.trigger("um_fields_change")}function f(e,i,a){var t=jQuery('div.um-field[data-key="'+i.owner+'"]'),n=jQuery('div.um-field[data-key="'+i.owner+'"] input');"show"==i.action&&a&&(t.show(),n.removeAttr("disabled"),h(t),c(t)),"show"!=i.action||a||(t.hide(),n.attr("disabled","disabled"),u(t)),"hide"==i.action&&a&&(t.hide(),n.attr("disabled","disabled"),u(t)),"hide"!=i.action||a||(t.show(),n.removeAttr("disabled"),h(t),c(t)),e.removeClass("um-field-has-changed")}function c(t){var e=s(t),i=t.data("key"),a=r[i];switch(e){case"text":case"number":case"date":case"textarea":t.find("input:text,input[type=number],textareas").val(a.value);break;case"select":t.find("select").find("option").prop("selected",!1),t.find("select").val(a.value),t.find("select").trigger("change");break;case"multiselect":t.find("select").find("option").prop("selected",!1),jQuery.each(a.value,function(e,i){t.find("select").find('option[value="'+i+'"]').attr("selected",!0)}),t.find("select").trigger("change");break;case"checkbox":if(1<=t.find("input[type=checkbox]:checked").length)if(t.find("input[type=checkbox]:checked").removeAttr("checked"),t.find("span.um-field-checkbox-state i").removeClass("um-icon-android-checkbox-outline"),t.find("span.um-field-checkbox-state i").addClass("um-icon-android-checkbox-outline-blank"),t.find(".um-field-checkbox.active").removeClass("active"),jQuery.isArray(a.value))jQuery.each(a.value,function(e,i){var a=t.find('input[type=checkbox][value="'+i+'"]');a.attr("checked",!0),a.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),a.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),a.closest(".um-field-checkbox").addClass("active")});else{var n=t.find('input[type=checkbox][value="'+a.value+'"]');n.attr("checked",!0),n.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),n.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),n.closest(".um-field-checkbox").addClass("active")}break;case"radio":1<=t.find("input[type=radio]:checked").length&&setTimeout(function(){t.find("input[type=radio]:checked").removeAttr("checked"),t.find("span.um-field-radio-state i").removeClass("um-icon-android-radio-button-on"),t.find("span.um-field-radio-state i").addClass("um-icon-android-radio-button-off"),t.find(".um-field-radio.active").removeClass("active");var e=t.find("input[type=radio][value='"+a.value+"']");e.attr("checked",!0),e.closest(".um-field-radio").find("i").removeClass("um-icon-android-radio-button-off"),e.closest(".um-field-radio").find("i").addClass("um-icon-android-radio-button-on"),e.closest(".um-field-radio").addClass("active")},100)}if(!t.hasClass("um-field-has-changed")){var c=o(t);"radio"!=e&&"checkbox"!=e||(c=c.find(":checked")),c&&(c.trigger("change"),t.addClass("um-field-has-changed"))}}function a(){jQuery.each(d,function(e,i){(1<=jQuery('.um-field[data-key="'+e+'"]:hidden').length||"none"==jQuery('.um-field[data-key="'+e+'"]').css("display"))&&jQuery.each(i,function(e,i){jQuery('.um-field[data-key="'+i.owner+'"]').hide()})})}function u(e){void 0!==jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"hidden"})}function h(e){void 0!==jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"visible"})}jQuery(document).on("change",'.um-field select, .um-field input[type="radio"], .um-field input[type="checkbox"]',function(){i(jQuery(this))}),jQuery(document).on("input change",'.um-field input[type="text"]',function(){i(jQuery(this))}),jQuery(document).on("input change",'.um-field input[type="number"]',function(){i(jQuery(this))}),jQuery(document).on("input change",'.um-field input[type="password"]',function(){i(jQuery(this))}),jQuery(document).on("um_fields_change",function(){a(),a()}),e=[],jQuery(".um-field[data-key]").each(function(){var t=jQuery(this).data("key");e.push(t);var c={};jQuery.each(jQuery(this)[0].attributes,function(e,i){if(-1!=i.name.indexOf("data-cond")){var a=i.name.slice(10),t=a.substring(1,0),n=a.slice(2);void 0===c[t]&&(c[t]={}),c[t][n]=i.value}}),jQuery.each(c,function(e,i){var a={field:{owner:t,action:i.action,parent:i.field,operator:i.operator,value:i.value,condition:{owner:t,action:i.action,operator:i.operator,value:i.value}}};n.push(a)}),r[jQuery(this).data("key")]=function(e){var i="",a=s(e);switch(a){case"text":case"number":case"date":case"textarea":case"select":i=e.find("input:text,input[type=number],textarea,select").val();break;case"multiselect":i=e.find("select").val();break;case"radio":1<=e.find("input[type=radio]:checked").length&&(i=e.find("input[type=radio]:checked").val());break;case"checkbox":1<=e.find("input[type=checkbox]:checked").length&&(1<e.find("input[type=checkbox]:checked").length?e.find("input[type=checkbox]:checked").each(function(){i=i+jQuery(this).val()+" "}):i=e.find("input[type=checkbox]:checked").val())}return{type:a,value:i}}(jQuery(this))}),jQuery.each(e,function(e,i){var a,t;d[i]=(a=i,t=[],jQuery.each(n,function(e,i){i.field.parent==a&&t.push(i.field.condition)}),t)}),jQuery(".um-field[data-key]:visible").each(function(){var e=o(jQuery(this));void 0!==e.trigger&&e.trigger("change")})});