/** layui-v2.5.6 MIT License By https://www.layui.com */ ;
layui.define("form", function(e) {
"use strict";
var i = layui.$,
a = layui.form,
n = layui.layer,
t = "tree",
r = {
config: {},
index: layui[t] ? layui[t].index + 1e4 : 0,
set: function(e) {
var a = this;
return a.config = i.extend({}, a.config, e), a
},
on: function(e, i) {
return layui.onevent.call(this, t, e, i)
}
},
l = function() {
var e = this,
i = e.config,
a = i.id || e.index;
return l.that[a] = e, l.config[a] = i, {
config: i,
reload: function(i) {
e.reload.call(e, i)
},
getChecked: function() {
return e.getChecked.call(e)
},
setChecked: function(i) {
return e.setChecked.call(e, i)
}
}
},
c = "layui-hide",
d = "layui-disabled",
s = "layui-tree-set",
o = "layui-tree-iconClick",
h = "layui-icon-triangle-d",
u = "layui-icon-triangle-r",
p = "layui-tree-entry",
f = "layui-tree-main",
y = "layui-tree-txt",
v = "layui-tree-pack",
C = "layui-tree-spread",
k = "layui-tree-setLineShort",
m = "layui-tree-showLine",
x = "layui-tree-lineExtend",
b = function(e) {
var a = this;
a.index = ++r.index, a.config = i.extend({}, a.config, r.config, e), a.render()
};
b.prototype.config = {
data: [],
showCheckbox: !1,
showLine: !0,
accordion: !1,
onlyIconControl: !1,
isJump: !1,
edit: !1,
text: {
defaultNodeName: "未命名",
none: "无数据"
}
}, b.prototype.reload = function(e) {
var a = this;
layui.each(e, function(e, i) {
i.constructor === Array && delete a.config[e]
}), a.config = i.extend(!0, {}, a.config, e), a.render()
}, b.prototype.render = function() {
var e = this,
a = e.config;
e.checkids = [];
var n = i('
');
e.tree(n);
var t = a.elem = i(a.elem);
if(t[0]) {
if(e.key = a.id || e.index, e.elem = n, e.elemNone = i('' + a.text.none + "
"), t.html(e.elem), 0 == e.elem.find(".layui-tree-set").length) return e.elem.append(e.elemNone);
a.showCheckbox && e.renderForm("checkbox"), e.elem.find(".layui-tree-set").each(function() {
var e = i(this);
e.parent(".layui-tree-pack")[0] || e.addClass("layui-tree-setHide"), !e.next()[0] && e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend") && e.addClass(k), e.next()[0] || e.parents(".layui-tree-set").eq(0).next()[0] || e.addClass(k)
}), e.events()
}
}, b.prototype.renderForm = function(e) {
a.render(e, "LAY-tree-" + this.index)
}, b.prototype.tree = function(e, a) {
var n = this,
t = n.config,
r = a || t.data;
layui.each(r, function(a, r) {
var l = r.children && r.children.length > 0,
o = i(''),
h = i(['', '
', '
', function() {
return t.showLine ? l ? '
' : '
' : '
'
}(), function() {
return t.showCheckbox ? '
' : ""
}(), function() {
return t.isJump && r.href ? '
' + (r.title || r.label || t.text.defaultNodeName) + "" : '
' + (r.title || r.label || t.text.defaultNodeName) + ""
}(), "
", function() {
if(!t.edit) return "";
var e = {
add: '
',
update: '
',
del: '
'
},
i = ['
'];
return t.edit === !0 && (t.edit = ["update", "del"]), "object" == typeof t.edit ? (layui.each(t.edit, function(a, n) {
i.push(e[n] || "")
}), i.join("") + "
") : void 0
}(), "
"].join(""));
l && (h.append(o), n.tree(o, r.children)), e.append(h), h.prev("." + s)[0] && h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"), l || h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"), n.spread(h, r), t.showCheckbox && (r.checked && n.checkids.push(r.id), n.checkClick(h, r)), t.edit && n.operate(h, r)
})
}, b.prototype.spread = function(e, a) {
var n = this,
t = n.config,
r = e.children("." + p),
l = r.children("." + f),
c = r.find("." + o),
k = r.find("." + y),
m = t.onlyIconControl ? c : l,
x = "";
m.on("click", function(i) {
var a = e.children("." + v),
n = m.children(".layui-icon")[0] ? m.children(".layui-icon") : m.find(".layui-tree-icon").children(".layui-icon");
if(a[0]) {
if(e.hasClass(C)) e.removeClass(C), a.slideUp(200), n.removeClass(u).addClass(h);
else if(e.addClass(C), a.slideDown(200), n.addClass(u).removeClass(h), t.accordion) {
var r = e.siblings("." + s);
r.removeClass(C), r.children("." + v).slideUp(200), r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)
}
} else x = "normal"
}), k.on("click", function() {
var n = i(this);
n.hasClass(d) || (x = e.hasClass(C) ? t.onlyIconControl ? "open" : "close" : t.onlyIconControl ? "close" : "open", t.click && t.click({
elem: e,
state: x,
data: a
}))
})
}, b.prototype.setCheckbox = function(e, i, a) {
var n = this,
t = (n.config, a.prop("checked"));
if(!a.prop("disabled")) {
if("object" == typeof i.children || e.find("." + v)[0]) {
var r = e.find("." + v).find('input[same="layuiTreeCheck"]');
r.each(function() {
this.disabled || (this.checked = t)
})
}
var l = function(e) {
if(e.parents("." + s)[0]) {
var i, a = e.parent("." + v),
n = a.parent(),
r = a.prev().find('input[same="layuiTreeCheck"]');
t ? r.prop("checked", t) : (a.find('input[same="layuiTreeCheck"]').each(function() {
this.checked && (i = !0)
}), i || r.prop("checked", !1)), l(n)
}
};
l(e), n.renderForm("checkbox")
}
}, b.prototype.checkClick = function(e, a) {
var n = this,
t = n.config,
r = e.children("." + p),
l = r.children("." + f);
l.on("click", 'input[same="layuiTreeCheck"]+', function(r) {
layui.stope(r);
var l = i(this).prev(),
c = l.prop("checked");
l.prop("disabled") || (n.setCheckbox(e, a, l), t.oncheck && t.oncheck({
elem: e,
checked: c,
data: a
}))
})
}, b.prototype.operate = function(e, a) {
var t = this,
r = t.config,
l = e.children("." + p),
d = l.children("." + f);
l.children(".layui-tree-btnGroup").on("click", ".layui-icon", function(l) {
layui.stope(l);
var f = i(this).data("type"),
b = e.children("." + v),
g = {
data: a,
type: f,
elem: e
};
if("add" == f) {
b[0] || (r.showLine ? (d.find("." + o).addClass("layui-tree-icon"), d.find("." + o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")) : d.find(".layui-tree-iconArrow").removeClass(c), e.append(''));
var w = r.operate && r.operate(g),
N = {};
if(N.title = r.text.defaultNodeName, N.id = w, t.tree(e.children("." + v), [N]), r.showLine)
if(b[0]) b.hasClass(x) || b.addClass(x), e.find("." + v).each(function() {
i(this).children("." + s).last().addClass(k)
}), b.children("." + s).last().prev().hasClass(k) ? b.children("." + s).last().prev().removeClass(k) : b.children("." + s).last().removeClass(k), !e.parent("." + v)[0] && e.next()[0] && b.children("." + s).last().removeClass(k);
else {
var T = e.siblings("." + s),
L = 1,
A = e.parent("." + v);
layui.each(T, function(e, a) {
i(a).children("." + v)[0] || (L = 0)
}), 1 == L ? (T.children("." + v).addClass(m), T.children("." + v).children("." + s).removeClass(k), e.children("." + v).addClass(m), A.removeClass(x), A.children("." + s).last().children("." + v).children("." + s).last().addClass(k)) : e.children("." + v).children("." + s).addClass(k)
}
if(!r.showCheckbox) return;
if(d.find('input[same="layuiTreeCheck"]')[0].checked) {
var I = e.children("." + v).children("." + s).last();
I.find('input[same="layuiTreeCheck"]')[0].checked = !0
}
t.renderForm("checkbox")
} else if("update" == f) {
var F = d.children("." + y).html();
d.children("." + y).html(""), d.append(''), d.children(".layui-tree-editInput").val(F).focus();
var j = function(e) {
var i = e.val().trim();
i = i ? i : r.text.defaultNodeName, e.remove(), d.children("." + y).html(i), g.data.title = i, r.operate && r.operate(g)
};
d.children(".layui-tree-editInput").blur(function() {
j(i(this))
}), d.children(".layui-tree-editInput").on("keydown", function(e) {
13 === e.keyCode && (e.preventDefault(), j(i(this)))
})
} else n.confirm('确认删除该节点 "' + (a.title || "") + '" 吗?', function(a) {
if(r.operate && r.operate(g), g.status = "remove", n.close(a), !e.prev("." + s)[0] && !e.next("." + s)[0] && !e.parent("." + v)[0]) return e.remove(), void t.elem.append(t.elemNone);
if(e.siblings("." + s).children("." + p)[0]) {
if(r.showCheckbox) {
var l = function(e) {
if(e.parents("." + s)[0]) {
var a = e.siblings("." + s).children("." + p),
n = e.parent("." + v).prev(),
r = n.find('input[same="layuiTreeCheck"]')[0],
c = 1,
d = 0;
0 == r.checked && (a.each(function(e, a) {
var n = i(a).find('input[same="layuiTreeCheck"]')[0];
0 != n.checked || n.disabled || (c = 0), n.disabled || (d = 1)
}), 1 == c && 1 == d && (r.checked = !0, t.renderForm("checkbox"), l(n.parent("." + s))))
}
};
l(e)
}
if(r.showLine) {
var d = e.siblings("." + s),
h = 1,
f = e.parent("." + v);
layui.each(d, function(e, a) {
i(a).children("." + v)[0] || (h = 0)
}), 1 == h ? (b[0] || (f.removeClass(x), d.children("." + v).addClass(m), d.children("." + v).children("." + s).removeClass(k)), e.next()[0] ? f.children("." + s).last().children("." + v).children("." + s).last().addClass(k) : e.prev().children("." + v).children("." + s).last().addClass(k), e.next()[0] || e.parents("." + s)[1] || e.parents("." + s).eq(0).next()[0] || e.prev("." + s).addClass(k)) : !e.next()[0] && e.hasClass(k) && e.prev().addClass(k)
}
} else {
var y = e.parent("." + v).prev();
if(r.showLine) {
y.find("." + o).removeClass("layui-tree-icon"), y.find("." + o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");
var w = y.parents("." + v).eq(0);
w.addClass(x), w.children("." + s).each(function() {
i(this).children("." + v).children("." + s).last().addClass(k)
})
} else y.find(".layui-tree-iconArrow").addClass(c);
e.parents("." + s).eq(0).removeClass(C), e.parent("." + v).remove()
}
e.remove()
})
})
}, b.prototype.events = function() {
var e = this,
a = e.config;
e.elem.find(".layui-tree-checkedFirst");
e.setChecked(e.checkids), e.elem.find(".layui-tree-search").on("keyup", function() {
var n = i(this),
t = n.val(),
r = n.nextAll(),
l = [];
r.find("." + y).each(function() {
var e = i(this).parents("." + p);
if(i(this).html().indexOf(t) != -1) {
l.push(i(this).parent());
var a = function(e) {
e.addClass("layui-tree-searchShow"), e.parent("." + v)[0] && a(e.parent("." + v).parent("." + s))
};
a(e.parent("." + s))
}
}), r.find("." + p).each(function() {
var e = i(this).parent("." + s);
e.hasClass("layui-tree-searchShow") || e.addClass(c)
}), 0 == r.find(".layui-tree-searchShow").length && e.elem.append(e.elemNone), a.onsearch && a.onsearch({
elem: l
})
}), e.elem.find(".layui-tree-search").on("keydown", function() {
i(this).nextAll().find("." + p).each(function() {
var e = i(this).parent("." + s);
e.removeClass("layui-tree-searchShow " + c)
}), i(".layui-tree-emptyText")[0] && i(".layui-tree-emptyText").remove()
})
}, b.prototype.getChecked = function() {
var e = this,
a = e.config,
n = [],
t = [];
e.elem.find(".layui-form-checked").each(function() {
n.push(i(this).prev()[0].value)
});
var r = function(e, a) {
layui.each(e, function(e, t) {
layui.each(n, function(e, n) {
if(t.id == n) {
var l = i.extend({}, t);
return delete l.children, a.push(l), t.children && (l.children = [], r(t.children, l.children)), !0
}
})
})
};
return r(i.extend({}, a.data), t), t
}, b.prototype.setChecked = function(e) {
var a = this;
a.config;
a.elem.find("." + s).each(function(a, n) {
var t = i(this).data("id"),
r = i(n).children("." + p).find('input[same="layuiTreeCheck"]'),
l = r.next();
if("number" == typeof e) {
if(t == e) return r[0].checked || l.click(), !1
} else "object" == typeof e && layui.each(e, function(e, i) {
if(i == t && !r[0].checked) return l.click(), !0
})
})
}, l.that = {}, l.config = {}, r.reload = function(e, i) {
var a = l.that[e];
return a.reload(i), l.call(a)
}, r.getChecked = function(e) {
var i = l.that[e];
return i.getChecked()
}, r.setChecked = function(e, i) {
var a = l.that[e];
return a.setChecked(i)
}, r.render = function(e) {
var i = new b(e);
return l.call(i)
}, e(t, r)
});