PluginProbe
UpdraftCentral Dashboard / 0.3.5
UpdraftCentral Dashboard v0.3.5
0.8.33 0.7.2 0.7.3 0.7.4 0.8.0 0.8.1 0.8.10 0.8.11 0.8.12 0.8.13 0.8.14 0.8.15 0.8.16 0.8.17 0.8.18 0.8.19 0.8.2 0.8.20 0.8.21 0.8.22 0.8.23 0.8.24 0.8.25 0.8.26 0.8.27 All 51 releases
updraftcentral / js / dropit.js

dropit.js in UpdraftCentral Dashboard 0.3.5, at js/dropit.js

98 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * Dropit v1.1.0
3 * http://dev7studios.com/dropit
4 *
5 * Copyright 2012, Dev7studios
6 * Free to use and abuse under the MIT license.
7 * http://www.opensource.org/licenses/mit-license.php
8 */
9
10 ;(function($) {
11
12 $.fn.dropit = function(method) {
13
14 var methods = {
15
16 init : function(options) {
17 this.dropit.settings = $.extend({}, this.dropit.defaults, options);
18 return this.each(function() {
19 var $el = $(this),
20 el = this,
21 settings = $.fn.dropit.settings;
22
23 // Hide initial submenus
24 $el.addClass('dropit')
25 .find('>'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger')
26 .find(settings.submenuEl).addClass('dropit-submenu').hide();
27
28 // Open on click
29 $el.off(settings.action).on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){
30 // Close click menu's if clicked again
31 if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){
32 settings.beforeHide.call(this);
33 $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();
34 settings.afterHide.call(this);
35 return false;
36 }
37
38 // Hide open menus
39 settings.beforeHide.call(this);
40 $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
41 settings.afterHide.call(this);
42
43 // Open this menu
44 settings.beforeShow.call(this);
45 $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show();
46 settings.afterShow.call(this);
47
48 return false;
49 });
50
51 // Close if outside click
52 $(document).on('click', function(){
53 settings.beforeHide.call(this);
54 $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
55 settings.afterHide.call(this);
56 });
57
58 // If hover
59 if(settings.action == 'mouseenter'){
60 $el.on('mouseleave', '.dropit-open', function(){
61 settings.beforeHide.call(this);
62 $(this).removeClass('dropit-open').find(settings.submenuEl).hide();
63 settings.afterHide.call(this);
64 });
65 }
66
67 settings.afterLoad.call(this);
68 });
69 }
70
71 };
72
73 if (methods[method]) {
74 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
75 } else if (typeof method === 'object' || !method) {
76 return methods.init.apply(this, arguments);
77 } else {
78 $.error( 'Method "' + method + '" does not exist in dropit plugin!');
79 }
80
81 };
82
83 $.fn.dropit.defaults = {
84 action: 'click', // The open action for the trigger
85 submenuEl: 'ul', // The submenu element
86 triggerEl: 'a', // The trigger element
87 triggerParentEl: 'li', // The trigger parent element
88 afterLoad: function(){}, // Triggers when plugin has loaded
89 beforeShow: function(){}, // Triggers before submenu is shown
90 afterShow: function(){}, // Triggers after submenu is shown
91 beforeHide: function(){}, // Triggers before submenu is hidden
92 afterHide: function(){} // Triggers before submenu is hidden
93 };
94
95 $.fn.dropit.settings = {};
96
97 })(jQuery);
98