mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
99 lines
4.1 KiB
JavaScript
99 lines
4.1 KiB
JavaScript
|
/*
|
||
|
* Dropit v1.1.0
|
||
|
* http://dev7studios.com/dropit
|
||
|
*
|
||
|
* Copyright 2012, Dev7studios
|
||
|
* Free to use and abuse under the MIT license.
|
||
|
* http://www.opensource.org/licenses/mit-license.php
|
||
|
*/
|
||
|
|
||
|
;(function($) {
|
||
|
|
||
|
$.fn.dropit = function(method) {
|
||
|
|
||
|
var methods = {
|
||
|
|
||
|
init : function(options) {
|
||
|
this.dropit.settings = $.extend({}, this.dropit.defaults, options);
|
||
|
return this.each(function() {
|
||
|
var $el = $(this),
|
||
|
el = this,
|
||
|
settings = $.fn.dropit.settings;
|
||
|
|
||
|
// Hide initial submenus
|
||
|
$el.addClass('dropit')
|
||
|
.find('>'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger')
|
||
|
.find(settings.submenuEl).addClass('dropit-submenu').hide();
|
||
|
|
||
|
// Open on click
|
||
|
$el.on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){
|
||
|
// Close click menu's if clicked again
|
||
|
if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){
|
||
|
settings.beforeHide.call(this);
|
||
|
$(this).parent().removeClass('dropit-open').find(settings.submenuEl).hide();
|
||
|
// $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();
|
||
|
settings.afterHide.call(this);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// Hide open menus
|
||
|
settings.beforeHide.call(this);
|
||
|
$('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
|
||
|
settings.afterHide.call(this);
|
||
|
|
||
|
// Open this menu
|
||
|
settings.beforeShow.call(this);
|
||
|
$(this).parent().addClass('dropit-open').find(settings.submenuEl).show();
|
||
|
// $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show();
|
||
|
settings.afterShow.call(this);
|
||
|
|
||
|
return false;
|
||
|
});
|
||
|
|
||
|
// Close if outside click
|
||
|
$(document).on('click', function(){
|
||
|
settings.beforeHide.call(this);
|
||
|
$('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
|
||
|
settings.afterHide.call(this);
|
||
|
});
|
||
|
|
||
|
// If hover
|
||
|
if(settings.action == 'mouseenter'){
|
||
|
$el.on('mouseleave', function(){
|
||
|
settings.beforeHide.call(this);
|
||
|
$(this).removeClass('dropit-open').find(settings.submenuEl).hide();
|
||
|
settings.afterHide.call(this);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
settings.afterLoad.call(this);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
if (methods[method]) {
|
||
|
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||
|
} else if (typeof method === 'object' || !method) {
|
||
|
return methods.init.apply(this, arguments);
|
||
|
} else {
|
||
|
$.error( 'Method "' + method + '" does not exist in dropit plugin!');
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
$.fn.dropit.defaults = {
|
||
|
action: 'click', // The open action for the trigger
|
||
|
submenuEl: 'ul', // The submenu element
|
||
|
triggerEl: 'a', // The trigger element
|
||
|
triggerParentEl: 'li', // The trigger parent element
|
||
|
afterLoad: function(){}, // Triggers when plugin has loaded
|
||
|
beforeShow: function(){}, // Triggers before submenu is shown
|
||
|
afterShow: function(){}, // Triggers after submenu is shown
|
||
|
beforeHide: function(){}, // Triggers before submenu is hidden
|
||
|
afterHide: function(){} // Triggers before submenu is hidden
|
||
|
};
|
||
|
|
||
|
$.fn.dropit.settings = {};
|
||
|
|
||
|
})(jQuery);
|