重构华夏erp的整体ui风格
This commit is contained in:
130
erp_web/js/bootstrap-plugins/bootstrap-hover-dropdown.js
vendored
Normal file
130
erp_web/js/bootstrap-plugins/bootstrap-hover-dropdown.js
vendored
Normal file
@@ -0,0 +1,130 @@
|
||||
/**
|
||||
* @preserve
|
||||
* Project: Bootstrap Hover Dropdown
|
||||
* Author: Cameron Spear
|
||||
* Version: v2.2.1
|
||||
* Contributors: Mattia Larentis
|
||||
* Dependencies: Bootstrap's Dropdown plugin, jQuery
|
||||
* Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience.
|
||||
* License: MIT
|
||||
* Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/
|
||||
*/
|
||||
;(function ($, window, undefined) {
|
||||
// outside the scope of the jQuery plugin to
|
||||
// keep track of all dropdowns
|
||||
var $allDropdowns = $();
|
||||
|
||||
// if instantlyCloseOthers is true, then it will instantly
|
||||
// shut other nav items when a new one is hovered over
|
||||
$.fn.dropdownHover = function (options) {
|
||||
// don't do anything if touch is supported
|
||||
// (plugin causes some issues on mobile)
|
||||
if('ontouchstart' in document) return this; // don't want to affect chaining
|
||||
|
||||
// the element we really care about
|
||||
// is the dropdown-toggle's parent
|
||||
$allDropdowns = $allDropdowns.add(this.parent());
|
||||
|
||||
return this.each(function () {
|
||||
var $this = $(this),
|
||||
$parent = $this.parent(),
|
||||
defaults = {
|
||||
delay: 500,
|
||||
hoverDelay: 0,
|
||||
instantlyCloseOthers: true
|
||||
},
|
||||
data = {
|
||||
delay: $(this).data('delay'),
|
||||
hoverDelay: $(this).data('hover-delay'),
|
||||
instantlyCloseOthers: $(this).data('close-others')
|
||||
},
|
||||
showEvent = 'show.bs.dropdown',
|
||||
hideEvent = 'hide.bs.dropdown',
|
||||
// shownEvent = 'shown.bs.dropdown',
|
||||
// hiddenEvent = 'hidden.bs.dropdown',
|
||||
settings = $.extend(true, {}, defaults, options, data),
|
||||
timeout, timeoutHover;
|
||||
|
||||
$parent.hover(function (event) {
|
||||
// so a neighbor can't open the dropdown
|
||||
if(!$parent.hasClass('open') && !$this.is(event.target)) {
|
||||
// stop this event, stop executing any code
|
||||
// in this callback but continue to propagate
|
||||
return true;
|
||||
}
|
||||
|
||||
openDropdown(event);
|
||||
}, function () {
|
||||
// clear timer for hover event
|
||||
window.clearTimeout(timeoutHover)
|
||||
timeout = window.setTimeout(function () {
|
||||
$this.attr('aria-expanded', 'false');
|
||||
$parent.removeClass('open');
|
||||
$this.trigger(hideEvent);
|
||||
}, settings.delay);
|
||||
});
|
||||
|
||||
// this helps with button groups!
|
||||
$this.hover(function (event) {
|
||||
// this helps prevent a double event from firing.
|
||||
// see https://github.com/CWSpear/bootstrap-hover-dropdown/issues/55
|
||||
if(!$parent.hasClass('open') && !$parent.is(event.target)) {
|
||||
// stop this event, stop executing any code
|
||||
// in this callback but continue to propagate
|
||||
return true;
|
||||
}
|
||||
|
||||
openDropdown(event);
|
||||
});
|
||||
|
||||
// handle submenus
|
||||
$parent.find('.dropdown-submenu').each(function (){
|
||||
var $this = $(this);
|
||||
var subTimeout;
|
||||
$this.hover(function () {
|
||||
window.clearTimeout(subTimeout);
|
||||
$this.children('.dropdown-menu').show();
|
||||
// always close submenu siblings instantly
|
||||
$this.siblings().children('.dropdown-menu').hide();
|
||||
}, function () {
|
||||
var $submenu = $this.children('.dropdown-menu');
|
||||
subTimeout = window.setTimeout(function () {
|
||||
$submenu.hide();
|
||||
}, settings.delay);
|
||||
});
|
||||
});
|
||||
|
||||
function openDropdown(event) {
|
||||
if($this.parents(".navbar").find(".navbar-toggle").is(":visible")) {
|
||||
// If we're inside a navbar, don't do anything when the
|
||||
// navbar is collapsed, as it makes the navbar pretty unusable.
|
||||
return;
|
||||
}
|
||||
|
||||
// clear dropdown timeout here so it doesnt close before it should
|
||||
window.clearTimeout(timeout);
|
||||
// restart hover timer
|
||||
window.clearTimeout(timeoutHover);
|
||||
|
||||
// delay for hover event.
|
||||
timeoutHover = window.setTimeout(function () {
|
||||
$allDropdowns.find(':focus').blur();
|
||||
|
||||
if(settings.instantlyCloseOthers === true)
|
||||
$allDropdowns.removeClass('open');
|
||||
|
||||
// clear timer for hover event
|
||||
window.clearTimeout(timeoutHover);
|
||||
$this.attr('aria-expanded', 'true');
|
||||
$parent.addClass('open');
|
||||
$this.trigger(showEvent);
|
||||
}, settings.hoverDelay);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(document).ready(function () {
|
||||
// apply dropdownHover to all elements with the data-hover="dropdown" attribute
|
||||
$('[data-hover="dropdown"]').dropdownHover();
|
||||
});
|
||||
})(jQuery, window);
|
||||
12
erp_web/js/bootstrap-plugins/bootstrap-hover-dropdown.min.js
vendored
Normal file
12
erp_web/js/bootstrap-plugins/bootstrap-hover-dropdown.min.js
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @preserve
|
||||
* Project: Bootstrap Hover Dropdown
|
||||
* Author: Cameron Spear
|
||||
* Version: v2.2.1
|
||||
* Contributors: Mattia Larentis
|
||||
* Dependencies: Bootstrap's Dropdown plugin, jQuery
|
||||
* Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience.
|
||||
* License: MIT
|
||||
* Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/
|
||||
*/
|
||||
!function(e,n){var o=e();e.fn.dropdownHover=function(t){return"ontouchstart"in document?this:(o=o.add(this.parent()),this.each(function(){function r(){d.parents(".navbar").find(".navbar-toggle").is(":visible")||(n.clearTimeout(a),n.clearTimeout(i),i=n.setTimeout(function(){o.find(":focus").blur(),v.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(i),d.attr("aria-expanded","true"),s.addClass("open"),d.trigger(h)},v.hoverDelay))}var a,i,d=e(this),s=d.parent(),u={delay:500,hoverDelay:0,instantlyCloseOthers:!0},l={delay:e(this).data("delay"),hoverDelay:e(this).data("hover-delay"),instantlyCloseOthers:e(this).data("close-others")},h="show.bs.dropdown",c="hide.bs.dropdown",v=e.extend(!0,{},u,t,l);s.hover(function(e){return s.hasClass("open")||d.is(e.target)?void r(e):!0},function(){n.clearTimeout(i),a=n.setTimeout(function(){d.attr("aria-expanded","false"),s.removeClass("open"),d.trigger(c)},v.delay)}),d.hover(function(e){return s.hasClass("open")||s.is(e.target)?void r(e):!0}),s.find(".dropdown-submenu").each(function(){var o,t=e(this);t.hover(function(){n.clearTimeout(o),t.children(".dropdown-menu").show(),t.siblings().children(".dropdown-menu").hide()},function(){var e=t.children(".dropdown-menu");o=n.setTimeout(function(){e.hide()},v.delay)})})}))},e(document).ready(function(){e('[data-hover="dropdown"]').dropdownHover()})}(jQuery,window);
|
||||
Reference in New Issue
Block a user