'
var DEPTH = 0
var INDEX = 0
var operationConfigData;
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-action'), $(this), e)
// dropdown.hide()
// }
// })
self.dropdownElem = dropdown
self.dropdownSelect = dropdown.find('.' + CLS_SELECT)
}
var dropdown = self.dropdownElem
dropdown.css('z-index','999');
var top = $(this).offset().top + $(this).height() + 12 - $(document).scrollTop()
var left = $(this).offset().left
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.hide();
dropdown.css('z-index','-1');
dropdown.stop().animate(
{
top: '-=10',
opacity: 0
},
250
)
});
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 =
'
'
if (depth == 0) {
html += '
'
}
layui.each(data.options, function(i, option) {
var options = option.options || [];
html +=
'
' +
'
' +
'' + option.title +
'
' +
(options.length > 0
? '
'
: '');
option.options = option.options || [];
if (option.options.length > 0){
html += self.createOptionsHtml(option, depth + 1);
}
html += '
';
if (self.depth < depth) self.depth = depth
});
html += '
';
return html
};
var self = {
render: function(config) {
operationConfigData = config;
new Class(config);
}
};
$(document).off("click", ".operationDropdown").on("click", ".operationDropdown", function () {
var obj = $(this);
var option = obj.data("option");
if(typeof operationConfigData["click"] === "function"){
operationConfigData["click"](option);
}
});
exports('operationDropdown', self)
});