first commit

This commit is contained in:
ericli1018
2024-03-13 10:43:39 +08:00
commit 1caae33c43
677 changed files with 105611 additions and 0 deletions

View File

@ -0,0 +1,28 @@
/**
* @module RD Navbar
* @author Evgeniy Gusarov
* @version 2.2.5
*/
(function(){var l="ontouchstart"in window;(function(c,n,h){var m=function(){function b(a,e){this.options=c.extend(!0,{},this.Defaults,e);this.$element=c(a);this.$clone=null;this.$win=c(h);this.$doc=c(n);this.currentLayout=this.options.layout;this.loaded=!1;this.focusOnHover=this.options.focusOnHover;this.isStuck=this.cloneTimer=this.focusTimer=!1;this.initialize()}b.prototype.Defaults={layout:"rd-navbar-static",deviceLayout:"rd-navbar-fixed",focusOnHover:!0,focusOnHoverTimeout:800,linkedElements:["html"],
domAppend:!0,stickUp:!0,stickUpClone:!0,stickUpOffset:"100%",anchorNav:!0,anchorNavSpeed:400,anchorNavOffset:0,anchorNavEasing:"swing",autoHeight:!0,responsive:{0:{layout:"rd-navbar-fixed",deviceLayout:"rd-navbar-fixed",focusOnHover:!1,stickUp:!1},992:{layout:"rd-navbar-static",deviceLayout:"rd-navbar-static",focusOnHover:!0,stickUp:!0}},callbacks:{onToggleSwitch:!1,onToggleClose:!1,onDomAppend:!1,onDropdownOver:!1,onDropdownOut:!1,onDropdownToggle:!1,onDropdownClose:!1,onStuck:!1,onUnstuck:!1,onAnchorChange:!1}};
b.prototype.initialize=function(){this.$element.addClass("rd-navbar").addClass(this.options.layout);l&&this.$element.addClass("rd-navbar--is-touch");this.options.domAppend&&this.createNav(this);this.options.stickUpClone&&this.createClone(this);this.$element.addClass("rd-navbar-original");this.addAdditionalClassToToggles(".rd-navbar-original","toggle-original","toggle-original-elements");this.applyHandlers(this);this.offset=this.$element.offset().top;this.height=this.$element.outerHeight();this.loaded=
!0;return this};b.prototype.resize=function(a,e){var d=l?a.getOption("deviceLayout"):a.getOption("layout");var g=a.$element.add(a.$clone);d===a.currentLayout&&a.loaded||(a.switchClass(g,a.currentLayout,d),null!=a.options.linkedElements&&c.grep(a.options.linkedElements,function(e,c){return a.switchClass(e,a.currentLayout+"-linked",d+"-linked")}),a.currentLayout=d);a.focusOnHover=a.getOption("focusOnHover");return a};b.prototype.stickUp=function(a,e){var d=a.getOption("stickUp");if(c("html").hasClass("ios")||
a.$element.hasClass("rd-navbar-fixed"))d=!1;var g=a.$doc.scrollTop();var b=null!=a.$clone?a.$clone:a.$element;var f=a.getOption("stickUpOffset");f="string"===typeof f?0<f.indexOf("%")?parseFloat(f)*a.height/100:parseFloat(f):f;if(d){if(g>=f&&!a.isStuck||g<f&&a.isStuck)if(a.$element.add(a.$clone).find("[data-rd-navbar-toggle]").each(function(){c.proxy(a.closeToggle,this)(a,!1)}).end().find(".rd-navbar-submenu").removeClass("opened").removeClass("focus"),g>=f&&!a.isStuck&&!a.$element.hasClass("rd-navbar-fixed"))a.options.callbacks.onStuck&&
a.options.callbacks.onStuck.call(a),setTimeout(function(){"resize"===e.type?a.switchClass(b,"","rd-navbar--is-stuck"):b.addClass("rd-navbar--is-stuck");a.isStuck=!0},navigator.platform.match(/(Mac)/i)?10:0);else{if("resize"===e.type)a.switchClass(b,"rd-navbar--is-stuck","");else b.removeClass("rd-navbar--is-stuck").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",c.proxy(a.resizeWrap,a,e));a.isStuck=!1;a.options.callbacks.onUnstuck&&a.options.callbacks.onUnstuck.call(a)}}else a.$element.find(".rd-navbar-submenu").removeClass("opened").removeClass("focus"),
a.isStuck&&(a.switchClass(b,"rd-navbar--is-stuck",""),a.isStuck=!1,a.resizeWrap(e));return a};b.prototype.resizeWrap=function(a){if(null==this.$clone&&!this.isStuck){var e=this.$element.parent();if(this.getOption("autoHeight"))return this.height=this.$element.outerHeight(),"resize"===a.type?(e.addClass("rd-navbar--no-transition").css("height",this.height),e[0].offsetHeight,e.removeClass("rd-navbar--no-transition")):e.css("height",this.height);e.css("height","auto")}};b.prototype.createNav=function(a){a.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function(){var a=
c(this);this.getBoundingClientRect();return a.hasClass("rd-navbar-megamenu")?a.parent().addClass("rd-navbar--has-megamenu"):a.parent().addClass("rd-navbar--has-dropdown")}).parents("li").addClass("rd-navbar-submenu");c('<span class="rd-navbar-submenu-toggle"></span>').insertAfter(".rd-navbar-nav li.rd-navbar-submenu > a");a.options.callbacks.onDomAppend&&a.options.callbacks.onDomAppend.call(this);return a};b.prototype.createClone=function(a){a.$clone=a.$element.clone().insertAfter(a.$element).addClass("rd-navbar--is-clone");
a.addAdditionalClassToToggles(".rd-navbar--is-clone","toggle-cloned","toggle-cloned-elements");return a};b.prototype.closeToggle=function(a,e){var d=c(e.target);var g=!1;var b=this.getAttribute("data-rd-navbar-toggle");if(a.options.stickUpClone&&a.isStuck){var f=".toggle-cloned";var k=".toggle-cloned-elements";var h=!d.hasClass("toggle-cloned")}else f=".toggle-original",k=".toggle-original-elements",h=!d.hasClass("toggle-original");e.target!==this&&!d.parents(f+"[data-rd-navbar-toggle]").length&&
!d.parents(k).length&&b&&h&&(d=c(this).parents("body").find(b).add(c(this).parents(".rd-navbar")[0]),d.each(function(){if(!g)return g=!0===(e.target===this||c.contains(this,e.target))}),g||(d.add(this).removeClass("active"),a.options.callbacks.onToggleClose&&a.options.callbacks.onToggleClose.call(this,a)));return this};b.prototype.switchToggle=function(a,e){var d;e.preventDefault();if(c(this).hasClass("toggle-cloned")){var g=".rd-navbar--is-clone";var b=".toggle-cloned-elements"}else g=".rd-navbar-original",
b=".toggle-original-elements";if(d=this.getAttribute("data-rd-navbar-toggle"))c(g+" [data-rd-navbar-toggle]").not(this).each(function(){var a;if(a=this.getAttribute("data-rd-navbar-toggle"))return c(this).parents("body").find(g+" "+a+b).add(this).add(-1<c.inArray(".rd-navbar",a.split(/\s*,\s*/i))?c(this).parents("body")[0]:!1).removeClass("active")}),c(this).parents("body").find(g+" "+d+b).add(this).add(-1<c.inArray(".rd-navbar",d.split(/\s*,\s*/i))?c(this).parents(".rd-navbar")[0]:!1).toggleClass("active");
a.options.callbacks.onToggleSwitch&&a.options.callbacks.onToggleSwitch.call(this,a);return this};b.prototype.dropdownOver=function(a,e){if(a.focusOnHover){var d=c(this);clearTimeout(e);if(a.options.callbacks.onDropdownOver&&!a.options.callbacks.onDropdownOver.call(this,a))return this;d.addClass("focus").siblings().removeClass("opened").each(a.dropdownUnfocus)}return this};b.prototype.dropdownTouch=function(a,e){var d=c(this);clearTimeout(e);if(a.focusOnHover){var b=!1;d.hasClass("focus")&&(b=!0);
if(!b)return d.addClass("focus").siblings().removeClass("opened").each(a.dropdownUnfocus),!1;a.options.callbacks.onDropdownOver&&a.options.callbacks.onDropdownOver.call(this,a)}return this};b.prototype.dropdownOut=function(a,e){if(a.focusOnHover){var d=c(this);d.one("mouseenter.navbar",function(){return clearTimeout(e)});a.options.callbacks.onDropdownOut&&a.options.callbacks.onDropdownOut.call(this,a);clearTimeout(e);e=setTimeout(c.proxy(a.dropdownUnfocus,this,a),a.options.focusOnHoverTimeout)}return this};
b.prototype.dropdownUnfocus=function(a){c(this).find("li.focus").add(this).removeClass("focus");return this};b.prototype.dropdownClose=function(a,e){if(e.target!==this&&!c(e.target).parents(".rd-navbar-submenu").length){var d=c(this);d.find("li.focus").add(this).removeClass("focus").removeClass("opened");a.options.callbacks.onDropdownClose&&a.options.callbacks.onDropdownClose.call(this,a)}return this};b.prototype.dropdownToggle=function(a){c(this).toggleClass("opened").siblings().removeClass("opened");
a.options.callbacks.onDropdownToggle&&a.options.callbacks.onDropdownToggle.call(this,a);return this};b.prototype.goToAnchor=function(a,e){var d=this.hash;var b=c(d);if(!a.getOption("anchorNav"))return!1;b.length&&(e.preventDefault(),c("html, body").stop().animate({scrollTop:b.offset().top+a.getOption("anchorNavOffset")+1},a.getOption("anchorNavSpeed"),a.getOption("anchorNavEasing"),function(){return a.changeAnchor(d)}));return this};b.prototype.activateAnchor=function(a){var e=this.$doc.scrollTop();
var d=this.$win.height();var b=this.$doc.height();a=this.getOption("anchorNavOffset");if(!this.options.anchorNav)return!1;if(e+d>b-50){b=c('[data-type="anchor"]').last();if(b.length&&b.offset().top>=e){var h="#"+b.attr("id");var f=c('.rd-navbar-nav a[href^="'+h+'"]').parent();f.hasClass("active")||(f.addClass("active").siblings().removeClass("active"),this.options.callbacks.onAnchorChange&&this.options.callbacks.onAnchorChange.call(b[0],this))}return b}d=c('.rd-navbar-nav a[href^="#"]').get();for(f in d){b=
d[f];var k=c(b);h=k.attr("href");b=c(h);b.length&&b.offset().top+a<=e&&b.offset().top+b.outerHeight()>e&&(k.parent().addClass("active").siblings().removeClass("active"),this.options.callbacks.onAnchorChange&&this.options.callbacks.onAnchorChange.call(b[0],this))}return null};b.prototype.getAnchor=function(){return history&&history.state?history.state.id:null};b.prototype.changeAnchor=function(a){history&&(history.state?history.state.id!==a?history.replaceState({anchorId:a},null,a):history.pushState({anchorId:a},
null,a):history.pushState({anchorId:a},null,a));return this};b.prototype.applyHandlers=function(a){null!=a.options.responsive&&a.$win.on("resize.navbar",c.proxy(a.resize,a.$win[0],a)).on("resize.navbar",c.proxy(a.resizeWrap,a)).on("resize.navbar",c.proxy(a.stickUp,null!=a.$clone?a.$clone:a.$element,a)).on("orientationchange.navbar",c.proxy(a.resize,a.$win[0],a)).trigger("resize.navbar");a.$doc.on("scroll.navbar",c.proxy(a.stickUp,null!=a.$clone?a.$clone:a.$element,a)).on("scroll.navbar",c.proxy(a.activateAnchor,
a));a.$element.add(a.$clone).find("[data-rd-navbar-toggle]").each(function(){var b=c(this);b.on("click",c.proxy(a.switchToggle,this,a));return b.parents("body").on("click",c.proxy(a.closeToggle,this,a))});a.$element.add(a.$clone).find(".rd-navbar-submenu").each(function(){var b=c(this);var d=b.parents(".rd-navbar--is-clone").length?a.cloneTimer:a.focusTimer;b.on("mouseleave.navbar",c.proxy(a.dropdownOut,this,a,d));b.find("> a").on("mouseenter.navbar",c.proxy(a.dropdownOver,this,a,d));b.find("> a").on("touchstart.navbar",
c.proxy(a.dropdownTouch,this,a,d));b.find("> .rd-navbar-submenu-toggle").on("click",c.proxy(a.dropdownToggle,this,a));return b.parents("body").on("click",c.proxy(a.dropdownClose,this,a))});a.$element.add(a.$clone).find('.rd-navbar-nav a[href^="#"]').each(function(){return c(this).on("click",c.proxy(a.goToAnchor,this,a))});a.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function(){var a=c(this);var b=this.getBoundingClientRect();b.left+a.outerWidth()>=h.innerWidth-10?this.className+=
" rd-navbar-open-left":10>=b.left-a.outerWidth()&&(this.className+=" rd-navbar-open-right")});return a};b.prototype.switchClass=function(a,b,d){a=a instanceof jQuery?a:c(a);a.addClass("rd-navbar--no-transition").removeClass(b).addClass(d);a[0].offsetHeight;return a.removeClass("rd-navbar--no-transition")};b.prototype.getOption=function(a){var b,c;for(b in this.options.responsive)b<=h.innerWidth&&(c=b);return null!=this.options.responsive&&null!=this.options.responsive[c][a]?this.options.responsive[c][a]:
this.options[a]};b.prototype.addAdditionalClassToToggles=function(a,b,d){return c(a).find("[data-rd-navbar-toggle]").each(function(){c(this).addClass(b);var e=this.getAttribute("data-rd-navbar-toggle");return c(this).parents("body").find(a).find(e).addClass(d)})};return b}();c.fn.extend({RDNavbar:function(b){var a=c(this);if(!a.data("RDNavbar"))return a.data("RDNavbar",new m(this,b))}});return h.RDNavbar=m})(window.jQuery,document,window);"undefined"!==typeof module&&null!==module?module.exports=
window.RDNavbar:"function"===typeof define&&define.amd&&define(["jquery"],function(){return window.RDNavbar})}).call(this);