2017-03-11 02:51:06 +07:00

160 lines
6.3 KiB
JavaScript

jQuery(function(){
"use strict";
var MateriaApp=function(){
this.isMobile=null,
this.navHorizontal=!1,
this.fixedHeader=!0,
this.themeActive="theme-zero",
this.navFull=!1,
this.navOffCanvas=!1,
this.mainContainer=$(".main-container"),
this.siteHead=$(".site-head"),
this.siteSettings=$(".site-settings"),
this.app=$(".app"),
this.navWrap=$(".nav-wrap"),
this.contentContainer=$(".content-container"),
this._init()
};
MateriaApp.prototype._init=function(){
this._checkMobile(),
this.toggleSiteNav(),
this.initDefaultSettings(),
this.initRipple(),
this.toggleSettingsBox(),
this.initPerfectScrollbars(),
this.toggleFullScreen(),
this.toggleFloatingSidebar(),
this.initNavAccordion()
},
MateriaApp.prototype.initDefaultSettings=function(){
function onNavHorizontal(){
this.checked?(that.navHorizontal=!0,
that.mainContainer.addClass("nav-horizontal")):(that.navHorizontal=!1,
that.mainContainer.removeClass("nav-horizontal")),
setTimeout(function(){
sQuery.navHorizontal=that.navHorizontal,
statesQuery.put(sQuery)})
}
function onFixedHeader(){
this.checked?(that.fixedHeader=!0,that.siteHead.addClass("fixedHeader"),
that.contentContainer.addClass("fixedHeader")):(that.fixedHeader=!1,
that.siteHead.removeClass("fixedHeader"),
that.contentContainer.removeClass("fixedHeader")),
setTimeout(function(){
sQuery.fixedHeader=that.fixedHeader,
statesQuery.put(sQuery)
})
}
function onNavFull(){
var elems=["body",".main-container",".nav-wrap",".content-container"];
this.checked?(that.navFull=!0,elems.forEach(
function(el){$(el).addClass("nav-expand")})):(that.navFull=!1,
elems.forEach(function(el){$(el).removeClass("nav-expand")})),
setTimeout(function(){sQuery.navFull=that.navFull,statesQuery.put(sQuery)})
}
function onThemeChange(e){
var $t=$(this),
$list=that.siteSettings.find("#themeColor li");
$list.removeClass("active"),
$t.addClass("active"),
that.app.removeClass(that.themeActive),
that.themeActive=$t.data("theme"),
sQuery.themeActive=that.themeActive,
statesQuery.put(sQuery),
that.app.addClass(that.themeActive),
e.preventDefault()
}
var that=this,
SETTINGS_STATES="_setting-states",
statesQuery={get:function(){return JSON.parse(localStorage.getItem(SETTINGS_STATES))},
put:function(states){localStorage.setItem(SETTINGS_STATES,JSON.stringify(states))}},
sQuery=statesQuery.get()||{navHorizontal:that.navHorizontal,fixedHeader:that.fixedHeader,navFull:that.navFull,themeActive:that.themeActive};
if(sQuery&&(this.navHorizontal=sQuery.navHorizontal,
this.fixedHeader=sQuery.fixedHeader,
this.navFull=sQuery.navFull,
this.themeActive=sQuery.themeActive),
this.siteSettings.find("#navHorizontal").on("change",onNavHorizontal),
this.siteSettings.find("#fixedHeader").on("change",onFixedHeader),
this.siteSettings.find("#navFull").on("change",onNavFull),
this.siteSettings.find("#themeColor li").on("click touchstart",onThemeChange),
this.app.addClass(this.themeActive),
this.navFull){
this.siteSettings.find("#navFull")[0].checked=!0;
var elems=["body",".main-container",".nav-wrap",".content-container"];
elems.forEach(function(el){$(el).addClass("nav-expand")})
}
this.navHorizontal&&(this.siteSettings.find("#navHorizontal")[0].checked=!0,
this.mainContainer.addClass("nav-horizontal")),
this.fixedHeader&&(this.siteSettings.find("#fixedHeader")[0].checked=!0,
this.siteHead.addClass("fixedHeader"),
this.contentContainer.addClass("fixedHeader")),
this.navOffCanvas&&this.navWrap.addClass("nav-offcanvas")
},
MateriaApp.prototype.initRipple=function(){
Waves.attach(".btn"),
Waves.init({duration:900,delay:300}),
Waves.attach(".nav-wrap .site-nav .nav-list li"),
Waves.attach(".md-button:not(.md-no-ink)")
},
MateriaApp.prototype._checkMobile=function(){
var mm=window.matchMedia("(max-width: 767px)");
this.isMobile=mm.matches?!0:!1;
var that=this;mm.addListener(function(m){that.isMobile=m.matches?!0:!1})
},
MateriaApp.prototype.toggleSiteNav=function(){
this.siteHead.find(".nav-trigger").on("click touchstart",function(e){
var elems=["body",".main-container",".nav-wrap",".content-container"];
elems.forEach(function(el){
$(el).toggleClass("nav-expand"),".nav-wrap"==el&&$(el).toggleClass("nav-offcanvas")
}),e.preventDefault()
})
},
MateriaApp.prototype.toggleSettingsBox=function(){
this.siteSettings.find(".trigger").on("click touchstart",
function(e){$(".site-settings").toggleClass("open"),e.preventDefault()})
},
MateriaApp.prototype.initPerfectScrollbars=function(){
var $el=$("[data-perfect-scrollbar]");
$el.each(function(){
var $t=$(this);
$t.perfectScrollbar({suppressScrollX:!0}),
setInterval(function(){
$t[0].scrollHeight>=$t[0].clientHeight&&$t.perfectScrollbar("update")
},400)
})
},
MateriaApp.prototype.toggleFullScreen=function(){
$(".site-head .fullscreen").on("click",function(e){screenfull.toggle(),e.preventDefault()})
},
MateriaApp.prototype.toggleFloatingSidebar=function(){
$(".site-head .floating-sidebar > a").on("click",function(e){$(this).parent().toggleClass("open"),e.preventDefault()})
},
MateriaApp.prototype.initNavAccordion=function(){
var el=$(".site-nav .nav-list"),lists=el.find("ul").parent("li"),
a=lists.children("a"),aul=lists.find("ul a"),
listsRest=el.children("li").not(lists),
aRest=listsRest.children("a"),
stopClick=0,that=this;a.on("click",function(e){
if(!that.navHorizontal){
if(e.timeStamp-stopClick>300){
var self=$(this),
parent=self.parent("li");
lists.not(parent).removeClass("open"),
parent.toggleClass("open"),
stopClick=e.timeStamp
}
e.preventDefault()
}
e.stopPropagation(),
e.stopImmediatePropagation()
}),
aul.on("touchend",function(e){
that.isMobile&&that.navWrap.toggleClass("nav-offcanvas"),
e.stopPropagation(),
e.stopImmediatePropagation()
}),
aRest.on("touchend",function(){that.isMobile&&that.navWrap.toggleClass("nav-offcanvas")}),
aRest.on("click",function(e){if(!that.navHorizontal){var parent=aRest.parent("li");lists.not(parent).removeClass("open")}e.stopPropagation(),e.stopImmediatePropagation()})
};
window.MateriaApp=new MateriaApp
});