¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * date:2020/02/27 |
| | | * author:Mr.Chung |
| | | * version:2.0 |
| | | * description:layuimini èåæ¡æ¶æ©å± |
| | | */ |
| | | layui.define(["element","laytpl" ,"jquery"], function (exports) { |
| | | var element = layui.element, |
| | | $ = layui.$, |
| | | laytpl = layui.laytpl, |
| | | layer = layui.layer; |
| | | |
| | | var miniMenu = { |
| | | |
| | | /** |
| | | * èååå§å |
| | | * @param options.menuList èåæ°æ®ä¿¡æ¯ |
| | | * @param options.multiModule æ¯å¦å¼å¯å¤æ¨¡å |
| | | * @param options.menuChildOpen æ¯å¦å±å¼åèå |
| | | */ |
| | | render: function (options) { |
| | | options.menuList = options.menuList || []; |
| | | options.multiModule = options.multiModule || false; |
| | | options.menuChildOpen = options.menuChildOpen || false; |
| | | if (options.multiModule) { |
| | | miniMenu.renderMultiModule(options.menuList, options.menuChildOpen); |
| | | } else { |
| | | miniMenu.renderSingleModule(options.menuList, options.menuChildOpen); |
| | | } |
| | | miniMenu.listen(); |
| | | }, |
| | | |
| | | /** |
| | | * 忍¡å |
| | | * @param menuList èåæ°æ® |
| | | * @param menuChildOpen æ¯å¦é»è®¤å±å¼ |
| | | */ |
| | | renderSingleModule: function (menuList, menuChildOpen) { |
| | | menuList = menuList || []; |
| | | var leftMenuHtml = '', |
| | | childOpenClass = '', |
| | | leftMenuCheckDefault = 'layui-this'; |
| | | var me = this ; |
| | | if (menuChildOpen) childOpenClass = ' layui-nav-itemed'; |
| | | leftMenuHtml = this.renderLeftMenu(menuList,{ childOpenClass:childOpenClass }) ; |
| | | $('.layui-layout-body').addClass('layuimini-single-module'); //忍¡åæ è¯ |
| | | $('.layuimini-header-menu').remove(); |
| | | $('.layuimini-menu-left').html(leftMenuHtml); |
| | | |
| | | element.init(); |
| | | }, |
| | | |
| | | /** |
| | | * 渲æä¸çº§èå |
| | | */ |
| | | compileMenu: function(menu,isSub){ |
| | | var menuHtml = '<li {{#if( d.menu){ }} data-menu="{{d.menu}}" {{#}}} class="layui-nav-item menu-li {{d.childOpenClass}} {{d.className}}" {{#if( d.id){ }} id="{{d.id}}" {{#}}}> <a {{#if( d.href){ }} layuimini-href="{{d.href}}" {{#}}} {{#if( d.target){ }} target="{{d.target}}" {{#}}} href="javascript:;">{{#if( d.icon){ }} <i class="{{d.icon}}"></i> {{#}}} <span class="layui-left-nav">{{d.title}}</span></a> {{# if(d.children){}} {{d.children}} {{#}}} </li>' ; |
| | | if(isSub){ |
| | | menuHtml = '<dd class="menu-dd {{d.childOpenClass}} {{ d.className }}"> <a href="javascript:;" {{#if( d.menu){ }} data-menu="{{d.menu}}" {{#}}} {{#if( d.id){ }} id="{{d.id}}" {{#}}} {{#if(( !d.child || !d.child.length ) && d.href){ }} layuimini-href="{{d.href}}" {{#}}} {{#if( d.target){ }} target="{{d.target}}" {{#}}}> {{#if( d.icon){ }} <i class="{{d.icon}}"></i> {{#}}} <span class="layui-left-nav"> {{d.title}}</span></a> {{# if(d.children){}} {{d.children}} {{#}}}</dd>' |
| | | } |
| | | return laytpl(menuHtml).render(menu); |
| | | }, |
| | | compileMenuContainer :function(menu,isSub){ |
| | | var wrapperHtml = '<ul class="layui-nav layui-nav-tree layui-left-nav-tree {{d.className}}" id="{{d.id}}">{{d.children}}</ul>' ; |
| | | if(isSub){ |
| | | wrapperHtml = '<dl class="layui-nav-child ">{{d.children}}</dl>' ; |
| | | } |
| | | if(!menu.children){ |
| | | return ""; |
| | | } |
| | | return laytpl(wrapperHtml).render(menu); |
| | | }, |
| | | |
| | | each:function(list,callback){ |
| | | var _list = []; |
| | | for(var i = 0 ,length = list.length ; i<length ;i++ ){ |
| | | _list[i] = callback(i,list[i]) ; |
| | | } |
| | | return _list ; |
| | | }, |
| | | renderChildrenMenu:function(menuList,options){ |
| | | var me = this ; |
| | | menuList = menuList || [] ; |
| | | var html = this.each(menuList,function (idx,menu) { |
| | | if(menu.child && menu.child.length){ |
| | | menu.children = me.renderChildrenMenu(menu.child,{ childOpenClass: options.childOpenClass || '' }); |
| | | } |
| | | menu.className = "" ; |
| | | menu.childOpenClass = options.childOpenClass || '' |
| | | return me.compileMenu(menu,true) |
| | | }).join(""); |
| | | return me.compileMenuContainer({ children:html },true) |
| | | }, |
| | | renderLeftMenu :function(leftMenus,options){ |
| | | options = options || {}; |
| | | var me = this ; |
| | | var leftMenusHtml = me.each(leftMenus || [],function (idx,leftMenu) { // 左侧èåéå |
| | | var children = me.renderChildrenMenu(leftMenu.child, { childOpenClass:options.childOpenClass }); |
| | | var leftMenuHtml = me.compileMenu({ |
| | | href: leftMenu.href, |
| | | target: leftMenu.target, |
| | | childOpenClass: options.childOpenClass, |
| | | icon: leftMenu.icon, |
| | | title: leftMenu.title, |
| | | children: children, |
| | | className: '', |
| | | }); |
| | | return leftMenuHtml ; |
| | | }).join(""); |
| | | |
| | | leftMenusHtml = me.compileMenuContainer({ id:options.parentMenuId,className:options.leftMenuCheckDefault,children:leftMenusHtml }) ; |
| | | return leftMenusHtml ; |
| | | }, |
| | | /** |
| | | * 夿¨¡å |
| | | * @param menuList èåæ°æ® |
| | | * @param menuChildOpen æ¯å¦é»è®¤å±å¼ |
| | | */ |
| | | renderMultiModule: function (menuList, menuChildOpen) { |
| | | menuList = menuList || []; |
| | | var me = this ; |
| | | var headerMenuHtml = '', |
| | | headerMobileMenuHtml = '', |
| | | leftMenuHtml = '', |
| | | leftMenuCheckDefault = 'layui-this', |
| | | childOpenClass = '', |
| | | headerMenuCheckDefault = 'layui-this'; |
| | | |
| | | if (menuChildOpen) childOpenClass = ' layui-nav-itemed'; |
| | | var headerMenuHtml = this.each(menuList, function (index, val) { //é¡¶é¨è忏²æ |
| | | var menu = 'multi_module_' + index ; |
| | | var id = menu+"HeaderId"; |
| | | var topMenuItemHtml = "" ; |
| | | topMenuItemHtml = me.compileMenu({ |
| | | className:headerMenuCheckDefault, |
| | | menu:menu, |
| | | id:id, |
| | | title:val.title, |
| | | href:"", |
| | | target:"", |
| | | children:"" |
| | | }); |
| | | leftMenuHtml+=me.renderLeftMenu(val.child,{ |
| | | parentMenuId:menu, |
| | | childOpenClass:childOpenClass, |
| | | leftMenuCheckDefault:leftMenuCheckDefault |
| | | }); |
| | | headerMobileMenuHtml +=me.compileMenu({ id:id,menu:menu,id:id,icon:val.icon, title:val.title, },true); |
| | | headerMenuCheckDefault = ""; |
| | | leftMenuCheckDefault = "layui-hide" ; |
| | | return topMenuItemHtml ; |
| | | }).join(""); |
| | | $('.layui-layout-body').addClass('layuimini-multi-module'); //夿¨¡åæ è¯ |
| | | $('.layuimini-menu-header-pc').html(headerMenuHtml); //çµè |
| | | $('.layuimini-menu-left').html(leftMenuHtml); |
| | | $('.layuimini-menu-header-mobile').html(headerMobileMenuHtml); //ææº |
| | | element.init(); |
| | | }, |
| | | |
| | | /** |
| | | * çå¬ |
| | | */ |
| | | listen: function () { |
| | | |
| | | /** |
| | | * è忍¡å忢 |
| | | */ |
| | | $('body').on('click', '[data-menu]', function () { |
| | | var loading = layer.load(0, {shade: false, time: 2 * 1000}); |
| | | var menuId = $(this).attr('data-menu'); |
| | | // header |
| | | $(".layuimini-header-menu .layui-nav-item.layui-this").removeClass('layui-this'); |
| | | $(this).addClass('layui-this'); |
| | | // left |
| | | $(".layuimini-menu-left .layui-nav.layui-nav-tree.layui-this").addClass('layui-hide'); |
| | | $(".layuimini-menu-left .layui-nav.layui-nav-tree.layui-this.layui-hide").removeClass('layui-this'); |
| | | $("#" + menuId).removeClass('layui-hide'); |
| | | $("#" + menuId).addClass('layui-this'); |
| | | layer.close(loading); |
| | | }); |
| | | |
| | | /** |
| | | * èåç¼©æ¾ |
| | | */ |
| | | $('body').on('click', '.layuimini-site-mobile', function () { |
| | | var loading = layer.load(0, {shade: false, time: 2 * 1000}); |
| | | var isShow = $('.layuimini-tool [data-side-fold]').attr('data-side-fold'); |
| | | if (isShow == 1) { // ç¼©æ¾ |
| | | $('.layuimini-tool [data-side-fold]').attr('data-side-fold', 0); |
| | | $('.layuimini-tool [data-side-fold]').attr('class', 'fa fa-indent'); |
| | | $('.layui-layout-body').removeClass('layuimini-all'); |
| | | $('.layui-layout-body').addClass('layuimini-mini'); |
| | | } else { // æ£å¸¸ |
| | | $('.layuimini-tool [data-side-fold]').attr('data-side-fold', 1); |
| | | $('.layuimini-tool [data-side-fold]').attr('class', 'fa fa-outdent'); |
| | | $('.layui-layout-body').removeClass('layuimini-mini'); |
| | | $('.layui-layout-body').addClass('layuimini-all'); |
| | | layer.close(window.openTips); |
| | | } |
| | | element.init(); |
| | | layer.close(loading); |
| | | }); |
| | | /** |
| | | * èåç¼©æ¾ |
| | | */ |
| | | $('body').on('click', '[data-side-fold]', function () { |
| | | var loading = layer.load(0, {shade: false, time: 2 * 1000}); |
| | | var isShow = $('.layuimini-tool [data-side-fold]').attr('data-side-fold'); |
| | | if (isShow == 1) { // ç¼©æ¾ |
| | | $('.layuimini-tool [data-side-fold]').attr('data-side-fold', 0); |
| | | $('.layuimini-tool [data-side-fold]').attr('class', 'fa fa-indent'); |
| | | $('.layui-layout-body').removeClass('layuimini-all'); |
| | | $('.layui-layout-body').addClass('layuimini-mini'); |
| | | // $(".menu-li").each(function (idx,el) { |
| | | // $(el).addClass("hidden-sub-menu"); |
| | | // }); |
| | | |
| | | } else { // æ£å¸¸ |
| | | $('.layuimini-tool [data-side-fold]').attr('data-side-fold', 1); |
| | | $('.layuimini-tool [data-side-fold]').attr('class', 'fa fa-outdent'); |
| | | $('.layui-layout-body').removeClass('layuimini-mini'); |
| | | $('.layui-layout-body').addClass('layuimini-all'); |
| | | // $(".menu-li").each(function (idx,el) { |
| | | // $(el).removeClass("hidden-sub-menu"); |
| | | // }); |
| | | layer.close(window.openTips); |
| | | } |
| | | element.init(); |
| | | layer.close(loading); |
| | | }); |
| | | |
| | | /** |
| | | * ææºç«¯ç¹å¼æ¨¡å |
| | | */ |
| | | $('body').on('click', '.layuimini-header-menu.layuimini-mobile-show dd', function () { |
| | | var loading = layer.load(0, {shade: false, time: 2 * 1000}); |
| | | var check = $('.layuimini-tool [data-side-fold]').attr('data-side-fold'); |
| | | if(check === "1"){ |
| | | $('.layuimini-site-mobile').trigger("click"); |
| | | element.init(); |
| | | } |
| | | layer.close(loading); |
| | | }); |
| | | }, |
| | | |
| | | }; |
| | | |
| | | |
| | | exports("miniMenu", miniMenu); |
| | | }); |