layui.define(['jquery'], function (exports) { 
 | 
    var $ = layui.jquery; 
 | 
    var CLS_DROPDOWN = 'layui-dropdown'; 
 | 
    var CLS_DROPDOWN_RIGHT = 'layui-dropdown-direright'; 
 | 
    var CLS_SELECT = 'layui-dropdown-select'; 
 | 
    var CLS_OPTION = 'layui-dropdown-option'; 
 | 
    var CLS_TITLE = 'layui-dropdown-title'; 
 | 
    var CLS_ARROW = 'febs-arrow-up'; 
 | 
    var HTML_DROPDOWN = '<div class="' + CLS_DROPDOWN + '"><div>'; 
 | 
    var DEPTH = 0; 
 | 
    var INDEX = 0; 
 | 
  
 | 
    var Class = function (config) { 
 | 
        this.config = $.extend({}, this.config, config); 
 | 
        this.render(config) 
 | 
    }; 
 | 
    Class.prototype.config = { 
 | 
        width: 150, 
 | 
        trigger: 'click' 
 | 
    }; 
 | 
    Class.prototype.dropdownElem = ''; 
 | 
    Class.prototype.exists = false; 
 | 
    Class.prototype.depth = 0; 
 | 
    Class.prototype.index = 0; 
 | 
    Class.prototype.render = function (config) { 
 | 
        var self = this; 
 | 
        if (typeof this.config.elem == 'string') { 
 | 
            $(document).on('click', this.config.elem, event) 
 | 
        } else { 
 | 
            this.config.elem.click(event) 
 | 
        } 
 | 
  
 | 
        function event(e) { 
 | 
            e.stopPropagation(); 
 | 
            if (self.dropdownElem === '') { 
 | 
                INDEX += 1; 
 | 
                self.index = INDEX; 
 | 
  
 | 
                var dropdown = $(HTML_DROPDOWN).attr('lay-index', self.index); 
 | 
                $('.' + CLS_DROPDOWN + '[lay-index="' + self.index + '"]').remove(); 
 | 
  
 | 
                dropdown.html(self.createOptionsHtml(config)); 
 | 
                $('body').prepend(dropdown); 
 | 
                dropdown.on('click', '.' + CLS_OPTION, function (e) { 
 | 
                    e.stopPropagation(); 
 | 
                    if ($.isFunction(config.click)) { 
 | 
                        config.click($(this).attr('lay-name'), $(this), e); 
 | 
                        dropdown.hide() 
 | 
                    } 
 | 
                }); 
 | 
                self.dropdownElem = dropdown; 
 | 
                self.dropdownSelect = dropdown.find('.' + CLS_SELECT) 
 | 
            } 
 | 
  
 | 
            var dropdown = self.dropdownElem; 
 | 
  
 | 
            var top = $(this).offset().top + $(this).height() + 12; 
 | 
            var left = $(this).offset().left - 5; 
 | 
            dropdown.css({ 
 | 
                top: top - 10 
 | 
            }); 
 | 
            var offsetWidth = (self.depth + 1) * self.config.width; 
 | 
  
 | 
            if (left + offsetWidth > $(window).width()) { 
 | 
                dropdown 
 | 
                    .addClass('layui-dropdown-right') 
 | 
                    .css('left', left - dropdown.width() + $(this).width()); 
 | 
                self.dropdownSelect.css({left: 'auto', right: self.config.width}) 
 | 
            } else { 
 | 
                dropdown.removeClass('layui-dropdown-right').css('left', left); 
 | 
                self.dropdownSelect.css({right: 'auto', left: self.config.width}) 
 | 
            } 
 | 
  
 | 
            $('body').one('click', function (e) { 
 | 
                dropdown.stop().animate( 
 | 
                    { 
 | 
                        top: '-=100000', 
 | 
                        opacity: 0 
 | 
                    }, 
 | 
                    1 
 | 
                ); 
 | 
            }); 
 | 
  
 | 
            dropdown 
 | 
                .show() 
 | 
                .stop() 
 | 
                .animate( 
 | 
                    { 
 | 
                        top: '+=10', 
 | 
                        opacity: 1 
 | 
                    }, 
 | 
                    250 
 | 
                ) 
 | 
        } 
 | 
    }; 
 | 
    Class.prototype.createOptionsHtml = function (data, depth) { 
 | 
        depth = depth || 0; 
 | 
        var self = this; 
 | 
        var width = self.config.width + 'px;'; 
 | 
        var html = 
 | 
            '<div class="' + 
 | 
            CLS_SELECT + 
 | 
            '" style="width:' + 
 | 
            width + 
 | 
            (depth > 0 ? 'left:' + width : '') + 
 | 
            '">'; 
 | 
        if (depth === 0) { 
 | 
            html += '<div class="' + CLS_ARROW + '"></div>' 
 | 
        } 
 | 
        layui.each(data.options, function (i, option) { 
 | 
            var paserHtml = false; 
 | 
            var permissions = currentUser.permissionSet; 
 | 
            var options = option.options || []; 
 | 
            if (option.perms) { 
 | 
                if (permissions.indexOf(option.perms) !== -1) { 
 | 
                    paserHtml = true; 
 | 
                } 
 | 
            } else { 
 | 
                paserHtml = true; 
 | 
            } 
 | 
            if (paserHtml) { 
 | 
                html += 
 | 
                    '<div lay-name=' + 
 | 
                    option.name + 
 | 
                    ' class="' + 
 | 
                    CLS_OPTION + 
 | 
                    '"><p class="' + 
 | 
                    CLS_TITLE + 
 | 
                    ' layui-elip"><span class="layui-icon ' + 
 | 
                    option.icon + 
 | 
                    '"></span>' + 
 | 
                    option.title + 
 | 
                    '</p>' + 
 | 
                    (options.length > 0 
 | 
                        ? '<i class="layui-icon layui-icon-right"></i>' 
 | 
                        : ''); 
 | 
                option.options = option.options || []; 
 | 
                if (option.options.length > 0) 
 | 
                    html += self.createOptionsHtml(option, depth + 1); 
 | 
                html += '</div>'; 
 | 
                if (self.depth < depth) self.depth = depth 
 | 
            } 
 | 
        }); 
 | 
        html += '</div>'; 
 | 
        return html 
 | 
    }; 
 | 
  
 | 
    var self = { 
 | 
        render: function (config) { 
 | 
            new Class(config) 
 | 
        } 
 | 
    }; 
 | 
    exports('dropdown', self) 
 | 
}); 
 |