Files
ultimatemember/assets/js/dropdown.min.js
T
2022-02-06 22:09:36 +02:00

1 line
3.4 KiB
JavaScript

function um_init_new_dropdown(){jQuery(".um-new-dropdown").um_dropdownMenu()}!function(u){function d(e){var l={get:function(){return l},show:function(){l.hideAll(),l.$menu=l.$element.find(".um-new-dropdown"),l.$menu.length||(l.$menu=u('div.um-new-dropdown[data-element="'+l.data.element+'"]').first()),l.$dropdown=l.$menu.clone(),l.$dropdown.on("click","li a",l.itemHandler).attr("data-cloned","1"),u(window).on("resize",l.updatePosition);var e=""!==l.data.parent?l.data.parent:document.body;return u(e).append(l.$dropdown),l.$element.trigger("um_new_dropdown_render",{dropdown_layout:l.$dropdown,trigger:l.data.trigger,element:l.data.elemen,obj:l.$element}),l.$dropdown.css(l.calculatePosition()).show(),l.$element.addClass("um-new-dropdown-shown").data("um-new-dropdown-show",!0),l},hide:function(){return l.$dropdown&&l.$dropdown.is(":visible")&&(u(window).off("resize",l.updatePosition),l.$dropdown.remove(),l.$element.removeClass("um-new-dropdown-shown").data("um-new-dropdown-show",!1)),l},hideAll:function(){return l.$element.data("um-new-dropdown-show")&&l.hide(),u('div.um-new-dropdown[data-cloned="1"]').remove(),u(".um-new-dropdown-shown").removeClass("um-new-dropdown-shown").data("um-new-dropdown-show",!1),l},calculatePosition:function(){var e,t=l.$element.get(0).getBoundingClientRect(),n=l.$dropdown.innerHeight()||150,o=l.data.width||150,d="";if(""!==l.data.parent){var r=u(l.data.parent).offset(),a=l.$element.offset();e={top:a.top-r.top,left:a.left-r.left}}else e=l.$element.offset();var i=""!==l.data.parent?u(l.data.parent)[0].offsetWidth:window.innerWidth,p={position:"absolute",width:o+"px"};switch((""!==l.data.parent?u(l.data.parent)[0].offsetHeight:window.innerHeight)-t.bottom>n?(p.top=e.top+t.height+"px",d+="bottom"):(d+="top",p.top=e.top-n+"px"),e.left>o||e.left>i/2?(p.left=e.left+t.width-o+"px",d+="-left"):(p.left=e.left+"px",d+="-right"),d){case"bottom-right":p.borderRadius="0px 5px 5px 5px";break;case"bottom-left":p.borderRadius="5px 0px 5px 5px";break;case"top-right":p.borderRadius="5px 5px 5px 0px";break;case"top-left":p.borderRadius="5px 5px 0px 5px"}return p},updatePosition:function(){return l.$dropdown&&l.$dropdown.is(":visible")&&l.$dropdown.css(l.calculatePosition()),l},itemHandler:function(e){e.stopPropagation();var t=u(e.currentTarget).attr("class");l.$menu.find('li a[class="'+t+'"]').trigger("click"),l.$element.data("um-new-dropdown-show")&&l.hide()},triggerHandler:function(e){e.stopPropagation(),l.$element=u(e.currentTarget),l.$element.data("um-new-dropdown-show")?l.hide():l.show()}};return l.$menu=u(e),l.data=l.$menu.data(),l.$element=l.$menu.closest(l.data.element),l.$element.length||(l.$element=u(l.data.element).first()),l.$dropdown=u(document.body).children('div[data-element="'+l.data.element+'"]'),void 0===l.data.initted&&(l.$menu.data("initted",!0),l.data=l.$menu.data(),void 0===d.screenTriggers&&(d.screenTriggers={}),d.screenTriggers[l.data.element]!==l.data.trigger&&(d.screenTriggers[l.data.element]=l.data.trigger,u(document.body).on(l.data.trigger,l.data.element,l.triggerHandler))),void 0===d.globalHandlersInitted&&(d.globalHandlersInitted=!0,u(document.body).on("click",function(e){u(e.target).closest(".um-new-dropdown").length||l.hideAll()})),l}u.fn.um_dropdownMenu=function(o){return"string"==typeof o&&o?this.map(function(e,t){var n=d(t);return"function"==typeof n[o]?n[o]():n[o]}).toArray():this.each(function(e,t){d(t)})}}(jQuery),jQuery(document).ready(function(e){um_init_new_dropdown()});