/** layui-v2.5.4 MIT License By https://www.layui.com */
;
layui.define("form",
function(e) {
"use strict";
var i = layui.$,
a = layui.form,
n = "tree",
r = {
config: {},
index: layui[n] ? layui[n].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, n, 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)
}
}
},
t = "layui-hide",
d = "layui-disabled",
s = "layui-tree-set",
c = "layui-tree-iconClick",
o = "layui-icon-addition",
h = "layui-icon-subtraction",
u = "layui-tree-entry",
f = "layui-tree-main",
p = "layui-tree-txt",
y = "layui-tree-pack",
v = "layui-tree-spread",
C = "layui-tree-setLineShort",
m = "layui-tree-showLine",
k = "layui-tree-lineExtend",
g = function(e) {
var a = this;
a.index = ++r.index,
a.config = i.extend({},
a.config, r.config, e),
a.render()
};
g.prototype.config = {
data: [],
showCheckbox: !1,
showLine: !0,
accordion: !1,
onlyIconControl: !1,
isJump: !1,
edit: !1,
text: {
defaultNodeName: "未命名",
none: "无数据"
}
},
g.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()
},
g.prototype.render = function() {
var e = this,
a = e.config,
n = i('
');
e.tree(n);
var r = a.elem = i(a.elem);
if (r[0]) {
if (a.showSearch && n.prepend(''), e.key = a.id || e.index, e.elem = n, e.elemNone = i('' + a.text.none + "
"), r.html(e.elem), 0 == e.elem.find(".layui-tree-set").length) return e.elem.append(e.elemNone);
a.drag && e.drag(),
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(C),
e.next()[0] || e.parents(".layui-tree-set").eq(0).next()[0] || e.addClass(C)
}),
e.events()
}
},
g.prototype.renderForm = function(e) {
a.render(e, "LAY-tree-" + this.index)
},
g.prototype.tree = function(e, a) {
var n = this,
r = n.config,
l = a || r.data;
layui.each(l,
function(a, l) {
var c = l.children && l.children.length > 0,
o = i(''),
h = i(['', "
', '
',
function() {
return r.showLine ? c ? '
': '
': '
'
} (),
function() {
return r.showCheckbox ? '
': ""
} (),
function() {
return r.isJump && l.href ? '
' + (l.title || l.label || r.text.defaultNodeName) + "": '
' + (l.title || l.label || r.text.defaultNodeName) + ""
} (), "
",
function() {
if (!r.edit) return "";
var e = {
add: '
',
update: '
',
del: '
',
download:'
',
preview:'
',
},
i = ['
'];
return r.edit === !0 && (r.edit = ["update", "del"]),
"object" == typeof r.edit ? (layui.each(r.edit,
function(a, n) {
i.push(e[n] || "")
}), i.join("") + "
") : void 0
} (), "
"].join(""));
c && (h.append(o), n.tree(o, l.children)),
e.append(h),
h.prev("." + s)[0] && h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),
c || h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),
n.spread(h, l),
r.showCheckbox && n.checkClick(h, l),
r.edit && n.operate(h, l)
})
},
g.prototype.spread = function(e, a) {
var n = this,
r = n.config,
l = e.children("." + u),
t = l.children("." + f),
C = l.find("." + c),
m = l.find("." + p),
k = r.onlyIconControl ? C: t,
g = "";
k.on("click",
function(i) {
var a = e.children("." + y),
n = k.children(".layui-icon")[0] ? k.children(".layui-icon") : k.find(".layui-tree-icon").children(".layui-icon");
if (a[0]) {
if (e.hasClass(v)) e.removeClass(v),
a.slideUp(200),
n.removeClass(h).addClass(o);
else if (e.addClass(v), a.slideDown(200), n.addClass(h).removeClass(o), r.accordion) {
var l = e.siblings("." + s);
l.removeClass(v),
l.children("." + y).slideUp(200),
l.find(".layui-tree-icon").children(".layui-icon").removeClass(h).addClass(o)
}
} else g = "normal"
}),
m.on("click",
function() {
var n = i(this);
n.hasClass(d) || (g = e.hasClass(v) ? r.onlyIconControl ? "open": "close": r.onlyIconControl ? "close": "open", r.click && r.click({
elem: e,
state: g,
data: a
}))
})
},
g.prototype.setCheckbox = function(e, i, a) {
var n = this,
r = (n.config, a.prop("checked"));
if ("object" == typeof i.children || e.find("." + y)[0]) {
var l = e.find("." + y).find('input[name="layuiTreeCheck"]');
l.each(function() {
this.disabled || (this.checked = r)
})
}
var t = function(e) {
if (e.parents("." + s)[0]) {
var i, a = e.parent("." + y),
n = a.parent(),
l = a.prev().find('input[name="layuiTreeCheck"]');
r ? l.prop("checked", r) : (a.find('input[name="layuiTreeCheck"]').each(function() {
this.checked && (i = !0)
}), i || l.prop("checked", !1)),
t(n)
}
};
t(e),
n.renderForm("checkbox")
},
g.prototype.checkClick = function(e, a) {
var n = this,
r = n.config,
l = e.children("." + u),
t = l.children("." + f);
t.on("click", 'input[name="layuiTreeCheck"]+',
function(l) {
layui.stope(l);
var t = i(this).prev(),
d = t.prop("checked");
t.prop("disabled") || (n.setCheckbox(e, a, t), r.oncheck && r.oncheck({
elem: e,
checked: d,
data: a
}))
})
},
g.prototype.operate = function(e, a) {
var n = this,
r = n.config,
l = e.children("." + u),
d = l.children("." + f);
l.children(".layui-tree-btnGroup").on("click", ".layui-icon",
function(l) {
layui.stope(l);
var f = i(this).data("type"),
g = e.children("." + y),
x = {
data: a,
type: f,
elem: e
};
if ("add" == f) {
g[0] || (r.showLine ? (d.find("." + c).addClass("layui-tree-icon"), d.find("." + c).children(".layui-icon").addClass(o).removeClass("layui-icon-file")) : d.find(".layui-tree-iconArrow").removeClass(t), e.append(''));
var b = r.operate && r.operate(x),
w = {};
if (w.title = r.text.defaultNodeName, w.id = b, n.tree(e.children("." + y), [w]), r.showLine) if (g[0]) g.hasClass(k) || g.addClass(k),
e.find("." + y).each(function() {
i(this).children("." + s).last().addClass(C)
}),
g.children("." + s).last().prev().hasClass(C) ? g.children("." + s).last().prev().removeClass(C) : g.children("." + s).last().removeClass(C),
!e.parent("." + y)[0] && e.next()[0] && g.children("." + s).last().removeClass(C);
else {
var T = e.siblings("." + s),
L = 1,
N = e.parent("." + y);
layui.each(T,
function(e, a) {
i(a).children("." + y)[0] || (L = 0)
}),
1 == L ? (T.children("." + y).addClass(m), T.children("." + y).children("." + s).removeClass(C), e.children("." + y).addClass(m), N.removeClass(k), N.children("." + s).last().children("." + y).children("." + s).last().addClass(C)) : e.children("." + y).children("." + s).addClass(C)
}
if (!r.showCheckbox) return;
if (d.find('input[name="layuiTreeCheck"]')[0].checked) {
var A = e.children("." + y).children("." + s).last();
A.find('input[name="layuiTreeCheck"]')[0].checked = !0
}
n.renderForm("checkbox")
} else if ("update" == f) {
var q = d.children("." + p).html();
d.children("." + p).html(""),
d.append(''),
d.children(".layui-tree-editInput").val(q).focus();
var F = function(e) {
var i = e.val().trim();
i = i ? i: r.text.defaultNodeName,
e.remove(),
d.children("." + p).html(i),
x.data.title = i,
r.operate && r.operate(x)
};
d.children(".layui-tree-editInput").blur(function() {
F(i(this))
}),
d.children(".layui-tree-editInput").on("keydown",
function(e) {
13 === e.keyCode && (e.preventDefault(), F(i(this)))
})
} else if("del" == f) {
if (r.operate && r.operate(x), x.status = "remove", !e.prev("." + s)[0] && !e.next("." + s)[0] && !e.parent("." + y)[0]) return e.remove(),
void n.elem.append(n.elemNone);
if (e.siblings("." + s).children("." + u)[0]) {
if (r.showCheckbox) {
var I = function(e) {
if (e.parents("." + s)[0]) {
var a = e.siblings("." + s).children("." + u),
r = e.parent("." + y).prev(),
l = r.find('input[name="layuiTreeCheck"]')[0],
t = 1,
d = 0;
0 == l.checked && (a.each(function(e, a) {
var n = i(a).find('input[name="layuiTreeCheck"]')[0];
0 != n.checked || n.disabled || (t = 0),
n.disabled || (d = 1)
}), 1 == t && 1 == d && (l.checked = !0, n.renderForm("checkbox"), I(r.parent("." + s))))
}
};
I(e)
}
if (r.showLine) {
var T = e.siblings("." + s),
L = 1,
N = e.parent("." + y);
layui.each(T,
function(e, a) {
i(a).children("." + y)[0] || (L = 0)
}),
1 == L ? (g[0] || (N.removeClass(k), T.children("." + y).addClass(m), T.children("." + y).children("." + s).removeClass(C)), e.next()[0] ? N.children("." + s).last().children("." + y).children("." + s).last().addClass(C) : e.prev().children("." + y).children("." + s).last().addClass(C), e.next()[0] || e.parents("." + s)[1] || e.parents("." + s).eq(0).next()[0] || e.prev("." + s).addClass(C)) : !e.next()[0] && e.hasClass(C) && e.prev().addClass(C)
}
} else {
var H = e.parent("." + y).prev();
if (r.showLine) {
H.find("." + c).removeClass("layui-tree-icon"),
H.find("." + c).children(".layui-icon").removeClass(h).addClass("layui-icon-file");
var S = H.parents("." + y).eq(0);
S.addClass(k),
S.children("." + s).each(function() {
i(this).children("." + y).children("." + s).last().addClass(C)
})
} else H.find(".layui-tree-iconArrow").addClass(t);
e.parents("." + s).eq(0).removeClass(v),
e.parent("." + y).remove()
}
e.remove()
}else if("download" == f){
var b = r.operate && r.operate(x)
}else if("preview" == f){
var b = r.operate && r.operate(x)
}
})
},
g.prototype.drag = function() {
var e = this,
a = e.config;
e.elem.on("dragstart", "." + u,
function() {
var e = i(this).parent("." + s),
n = e.parents("." + s)[0] ? e.parents("." + s).eq(0) : "未找到父节点";
a.dragstart && a.dragstart(e, n)
}),
e.elem.on("dragend", "." + u,
function(n) {
var n = n || event,
r = n.clientY,
l = i(this),
d = l.parent("." + s),
f = d.height(),
p = d.offset().top,
g = e.elem.find("." + s),
x = e.elem.height(),
b = e.elem.offset().top,
w = x + b - 13,
T = d.parents("." + s)[0],
L = d.next()[0];
if (T) var N = d.parent("." + y),
A = d.parents("." + s).eq(0),
q = A.parent("." + y),
F = A.offset().top,
I = d.siblings(),
H = A.children("." + y).children("." + s).length;
var S = function(n) {
if (T || L || e.elem.children("." + s).last().children("." + y).children("." + s).last().addClass(C), !T) return void d.removeClass("layui-tree-setHide");
if (1 == H) a.showLine ? (n.find("." + c).removeClass("layui-tree-icon"), n.find("." + c).children(".layui-icon").removeClass(h).addClass("layui-icon-file"), q.addClass(k), q.children("." + s).children("." + y).each(function() {
i(this).children("." + s).last().addClass(C)
})) : n.find(".layui-tree-iconArrow").addClass(t),
n.children("." + y).remove(),
n.removeClass(v);
else {
if (a.showLine) {
var r = 1;
layui.each(I,
function(e, a) {
i(a).children("." + y)[0] || (r = 0)
}),
1 == r ? (d.children("." + y)[0] || (N.removeClass(k), I.children("." + y).addClass(m), I.children("." + y).children("." + s).removeClass(C)), N.children("." + s).last().children("." + y).children("." + s).last().addClass(C), L || n.parents("." + s)[0] || n.next()[0] || N.children("." + s).last().addClass(C)) : !L && d.hasClass(C) && N.children("." + s).last().addClass(C)
}
if (a.showCheckbox) {
var l = function(a) {
if (a) {
if (!a.parents("." + s)[0]) return
} else if (!n[0]) return;
var r = a ? a.siblings().children("." + u) : I.children("." + u),
t = a ? a.parent("." + y).prev() : N.prev(),
d = t.find('input[name="layuiTreeCheck"]')[0],
c = 1,
o = 0;
0 == d.checked && (r.each(function(e, a) {
var n = i(a).find('input[name="layuiTreeCheck"]')[0];
0 != n.checked || n.disabled || (c = 0),
n.disabled || (o = 1)
}), 1 == c && 1 == o && (d.checked = !0, e.renderForm("checkbox"), l(t.parent("." + s) || n)))
};
l()
}
}
};
g.each(function() {
if (0 != i(this).height()) {
if (r > p && r < p + f) return void(a.dragend && a.dragend("drag error"));
if (1 == H && r > F && r < p + f) return void(a.dragend && a.dragend("drag error"));
var n = i(this).offset().top;
if (r > n && r < n + 15) {
if (i(this).children("." + y)[0] || (a.showLine ? (i(this).find("." + c).eq(0).addClass("layui-tree-icon"), i(this).find("." + c).eq(0).children(".layui-icon").addClass(o).removeClass("layui-icon-file")) : i(this).find(".layui-tree-iconArrow").removeClass(t), i(this).append('')), i(this).children("." + y).append(d), S(A), a.showLine) {
var l = i(this).children("." + y).children("." + s);
if (d.children("." + y).children("." + s).last().addClass(C), 1 == l.length) {
var h = i(this).siblings("." + s),
v = 1,
g = i(this).parent("." + y);
layui.each(h,
function(e, a) {
i(a).children("." + y)[0] || (v = 0)
}),
1 == v ? (h.children("." + y).addClass(m), h.children("." + y).children("." + s).removeClass(C), i(this).children("." + y).addClass(m), g.removeClass(k), g.children("." + s).last().children("." + y).children("." + s).last().addClass(C).removeClass("layui-tree-setHide")) : i(this).children("." + y).children("." + s).addClass(C).removeClass("layui-tree-setHide")
} else d.prev("." + s).hasClass(C) ? (d.prev("." + s).removeClass(C), d.addClass(C)) : (d.removeClass("layui-tree-setLineShort layui-tree-setHide"), d.children("." + y)[0] ? d.prev("." + s).children("." + y).children("." + s).last().removeClass(C) : d.siblings("." + s).find("." + y).each(function() {
i(this).children("." + s).last().addClass(C)
})),
i(this).next()[0] || d.addClass(C)
}
if (a.showCheckbox && i(this).children("." + u).find('input[name="layuiTreeCheck"]')[0].checked) {
var x = d.children("." + u);
x.find('input[name="layuiTreeCheck"]+').click()
}
return a.dragend && a.dragend("drag success", d, i(this)),
!1
}
if (r < n) {
if (i(this).before(d), S(A), a.showLine) {
var b = d.children("." + y),
T = i(this).parents("." + s).eq(0),
L = T.children("." + y).children("." + s).last();
if (b[0]) {
d.removeClass(C),
b.children("." + s).last().removeClass(C);
var h = d.siblings("." + s),
v = 1;
layui.each(h,
function(e, a) {
i(a).children("." + y)[0] || (v = 0)
}),
1 == v ? T[0] && (h.children("." + y).addClass(m), h.children("." + y).children("." + s).removeClass(C), L.children("." + y).children("." + s).last().addClass(C).removeClass(m)) : d.children("." + y).children("." + s).last().addClass(C),
!T.parent("." + y)[0] && T.next()[0] && L.removeClass(C)
} else T.hasClass(k) || T.addClass(k),
T.find("." + y).each(function() {
i(this).children("." + s).last().addClass(C)
});
T[0] || (d.addClass("layui-tree-setHide"), d.children("." + y).children("." + s).last().removeClass(C))
}
if (T[0] && a.showCheckbox && T.children("." + u).find('input[name="layuiTreeCheck"]')[0].checked) {
var x = d.children("." + u);
x.find('input[name="layuiTreeCheck"]+').click()
}
return a.dragend && a.dragend("拖拽成功,插入目标节点上方", d, i(this)),
!1
}
if (r > w) return e.elem.children("." + s).last().children("." + y).addClass(m),
e.elem.append(d),
S(A),
d.prev().children("." + y).children("." + s).last().removeClass(C),
d.addClass("layui-tree-setHide"),
d.children("." + y).children("." + s).last().addClass(C),
a.dragend && a.dragend("拖拽成功,插入最外层节点", d, e.elem),
!1
}
})
})
},
g.prototype.events = function() {
var e = this,
a = e.config,
n = e.elem.find(".layui-tree-checkedFirst");
layui.each(n,
function(e, a) {
i(a).children("." + u).find('input[name="layuiTreeCheck"]+').trigger("click")
}),
e.elem.find(".layui-tree-search").on("keyup",
function() {
var n = i(this),
r = n.val(),
l = n.nextAll(),
d = [];
l.find("." + p).each(function() {
var e = i(this).parents("." + u);
if (i(this).html().indexOf(r) != -1) {
d.push(i(this).parent());
var a = function(e) {
e.addClass("layui-tree-searchShow"),
e.parent("." + y)[0] && a(e.parent("." + y).parent("." + s))
};
a(e.parent("." + s))
}
}),
l.find("." + u).each(function() {
var e = i(this).parent("." + s);
e.hasClass("layui-tree-searchShow") || e.addClass(t)
}),
0 == l.find(".layui-tree-searchShow").length && e.elem.append(e.elemNone),
a.onsearch && a.onsearch({
elem: d
})
}),
e.elem.find(".layui-tree-search").on("keydown",
function() {
i(this).nextAll().find("." + u).each(function() {
var e = i(this).parent("." + s);
e.removeClass("layui-tree-searchShow " + t)
}),
i(".layui-tree-emptyText")[0] && i(".layui-tree-emptyText").remove()
})
},
g.prototype.getChecked = function() {
var e = this,
a = e.config,
n = [],
r = [];
e.elem.find(".layui-form-checked").each(function() {
n.push(i(this).prev()[0].value)
});
var l = function(e, a) {
layui.each(e,
function(e, r) {
layui.each(n,
function(e, n) {
if (r.id == n) {
var t = i.extend({},
r);
return delete t.children,
a.push(t),
r.children && (t.children = [], l(r.children, t.children)),
!0
}
})
})
};
return l(i.extend({},
a.data), r),
r
},
g.prototype.setChecked = function(e) {
var a = this;
a.config;
a.elem.find("." + s).each(function(a, n) {
var r = i(this).data("id"),
l = i(n).children("." + u).find('input[name="layuiTreeCheck"]'),
t = l.next();
if ("number" == typeof e) {
if (r == e) return l[0].checked || t.click(),
!1
} else i.inArray(r, e) != -1 && (l[0].checked || t.click())
})
},
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 g(e);
return l.call(i)
},
e(n, r)
});