You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

768 lines
21 KiB

// jquery.repeater version 1.2.1
// https://github.com/DubFriend/jquery.repeater
// (MIT) 09-10-2016
// Brian Detering <BDeterin@gmail.com> (http://www.briandetering.net/)
!(function (a) {
"use strict";
var b = function (a) {
return a;
},
c = function (b) {
return a.isArray(b);
},
d = function (a) {
return !c(a) && a instanceof Object;
},
e = function (b, c) {
return a.inArray(c, b);
},
f = function (a, b) {
return e(a, b) !== -1;
},
g = function (a, b) {
for (var c in a) a.hasOwnProperty(c) && b(a[c], c, a);
},
h = function (a) {
return a[a.length - 1];
},
i = function (a) {
return Array.prototype.slice.call(a);
},
j = function () {
var a = {};
return (
g(i(arguments), function (b) {
g(b, function (b, c) {
a[c] = b;
});
}),
a
);
},
k = function (a, b) {
var c = [];
return (
g(a, function (a, d, e) {
c.push(b(a, d, e));
}),
c
);
},
l = function (a, b, c) {
var d = {};
return (
g(a, function (a, e, f) {
(e = c ? c(e, a) : e), (d[e] = b(a, e, f));
}),
d
);
},
m = function (a, b, d) {
return c(a) ? k(a, b) : l(a, b, d);
},
n = function (a, b) {
return m(a, function (a) {
return a[b];
});
},
o = function (a, b) {
var d;
return (
c(a)
? ((d = []),
g(a, function (a, c, e) {
b(a, c, e) && d.push(a);
}))
: ((d = {}),
g(a, function (a, c, e) {
b(a, c, e) && (d[c] = a);
})),
d
);
},
p = function (a, b, c) {
return m(a, function (a, d) {
return a[b].apply(a, c || []);
});
},
q = function (a) {
a = a || {};
var b = {};
return (
(a.publish = function (a, c) {
g(b[a], function (a) {
a(c);
});
}),
(a.subscribe = function (a, c) {
(b[a] = b[a] || []), b[a].push(c);
}),
(a.unsubscribe = function (a) {
g(b, function (b) {
var c = e(b, a);
c !== -1 && b.splice(c, 1);
});
}),
a
);
};
!(function (a) {
var b = function (a, b) {
var c = q(),
d = a.$;
return (
(c.getType = function () {
throw 'implement me (return type. "text", "radio", etc.)';
}),
(c.$ = function (a) {
return a ? d.find(a) : d;
}),
(c.disable = function () {
c.$().prop("disabled", !0), c.publish("isEnabled", !1);
}),
(c.enable = function () {
c.$().prop("disabled", !1), c.publish("isEnabled", !0);
}),
(b.equalTo = function (a, b) {
return a === b;
}),
(b.publishChange = (function () {
var a;
return function (d, e) {
var f = c.get();
b.equalTo(f, a) || c.publish("change", { e: d, domElement: e }),
(a = f);
};
})()),
c
);
},
i = function (a, c) {
var d = b(a, c);
return (
(d.get = function () {
return d.$().val();
}),
(d.set = function (a) {
d.$().val(a);
}),
(d.clear = function () {
d.set("");
}),
(c.buildSetter = function (a) {
return function (b) {
a.call(d, b);
};
}),
d
);
},
j = function (a, b) {
(a = c(a) ? a : [a]), (b = c(b) ? b : [b]);
var d = !0;
return (
a.length !== b.length
? (d = !1)
: g(a, function (a) {
f(b, a) || (d = !1);
}),
d
);
},
k = function (a) {
var b = {},
c = i(a, b);
return (
(c.getType = function () {
return "button";
}),
c.$().on("change", function (a) {
b.publishChange(a, this);
}),
c
);
},
l = function (b) {
var d = {},
e = i(b, d);
return (
(e.getType = function () {
return "checkbox";
}),
(e.get = function () {
var b = [];
return (
e
.$()
.filter(":checked")
.each(function () {
b.push(a(this).val());
}),
b
);
}),
(e.set = function (b) {
(b = c(b) ? b : [b]),
e.$().each(function () {
a(this).prop("checked", !1);
}),
g(b, function (a) {
e.$()
.filter('[value="' + a + '"]')
.prop("checked", !0);
});
}),
(d.equalTo = j),
e.$().change(function (a) {
d.publishChange(a, this);
}),
e
);
},
m = function (a) {
var b = {},
c = x(a, b);
return (
(c.getType = function () {
return "email";
}),
c
);
},
n = function (c) {
var d = {},
e = b(c, d);
return (
(e.getType = function () {
return "file";
}),
(e.get = function () {
return h(e.$().val().split("\\"));
}),
(e.clear = function () {
this.$().each(function () {
a(this).wrap("<form>").closest("form").get(0).reset(),
a(this).unwrap();
});
}),
e.$().change(function (a) {
d.publishChange(a, this);
}),
e
);
},
o = function (a) {
var b = {},
c = i(a, b);
return (
(c.getType = function () {
return "hidden";
}),
c.$().change(function (a) {
b.publishChange(a, this);
}),
c
);
},
r = function (c) {
var d = {},
e = b(c, d);
return (
(e.getType = function () {
return "file[multiple]";
}),
(e.get = function () {
var a,
b = e.$().get(0).files || [],
c = [];
for (a = 0; a < (b.length || 0); a += 1) c.push(b[a].name);
return c;
}),
(e.clear = function () {
this.$().each(function () {
a(this).wrap("<form>").closest("form").get(0).reset(),
a(this).unwrap();
});
}),
e.$().change(function (a) {
d.publishChange(a, this);
}),
e
);
},
s = function (a) {
var b = {},
d = i(a, b);
return (
(d.getType = function () {
return "select[multiple]";
}),
(d.get = function () {
return d.$().val() || [];
}),
(d.set = function (a) {
d.$().val("" === a ? [] : c(a) ? a : [a]);
}),
(b.equalTo = j),
d.$().change(function (a) {
b.publishChange(a, this);
}),
d
);
},
t = function (a) {
var b = {},
c = x(a, b);
return (
(c.getType = function () {
return "password";
}),
c
);
},
u = function (b) {
var c = {},
d = i(b, c);
return (
(d.getType = function () {
return "radio";
}),
(d.get = function () {
return d.$().filter(":checked").val() || null;
}),
(d.set = function (b) {
b
? d
.$()
.filter('[value="' + b + '"]')
.prop("checked", !0)
: d.$().each(function () {
a(this).prop("checked", !1);
});
}),
d.$().change(function (a) {
c.publishChange(a, this);
}),
d
);
},
v = function (a) {
var b = {},
c = i(a, b);
return (
(c.getType = function () {
return "range";
}),
c.$().change(function (a) {
b.publishChange(a, this);
}),
c
);
},
w = function (a) {
var b = {},
c = i(a, b);
return (
(c.getType = function () {
return "select";
}),
c.$().change(function (a) {
b.publishChange(a, this);
}),
c
);
},
x = function (a) {
var b = {},
c = i(a, b);
return (
(c.getType = function () {
return "text";
}),
c.$().on("change keyup keydown", function (a) {
b.publishChange(a, this);
}),
c
);
},
y = function (a) {
var b = {},
c = i(a, b);
return (
(c.getType = function () {
return "textarea";
}),
c.$().on("change keyup keydown", function (a) {
b.publishChange(a, this);
}),
c
);
},
z = function (a) {
var b = {},
c = x(a, b);
return (
(c.getType = function () {
return "url";
}),
c
);
},
A = function (b) {
var c = {},
f = b.$,
h = b.constructorOverride || {
button: k,
text: x,
url: z,
email: m,
password: t,
range: v,
textarea: y,
select: w,
"select[multiple]": s,
radio: u,
checkbox: l,
file: n,
"file[multiple]": r,
hidden: o,
},
i = function (b, e) {
var g = d(e) ? e : f.find(e);
g.each(function () {
var d = a(this).attr("name");
c[d] = h[b]({ $: a(this) });
});
},
j = function (b, i) {
var j = [],
k = d(i) ? i : f.find(i);
d(i)
? (c[k.attr("name")] = h[b]({ $: k }))
: (k.each(function () {
e(j, a(this).attr("name")) === -1 &&
j.push(a(this).attr("name"));
}),
g(j, function (a) {
c[a] = h[b]({ $: f.find('input[name="' + a + '"]') });
}));
};
return (
f.is("input, select, textarea")
? f.is('input[type="button"], button, input[type="submit"]')
? i("button", f)
: f.is("textarea")
? i("textarea", f)
: f.is('input[type="text"]') || (f.is("input") && !f.attr("type"))
? i("text", f)
: f.is('input[type="password"]')
? i("password", f)
: f.is('input[type="email"]')
? i("email", f)
: f.is('input[type="url"]')
? i("url", f)
: f.is('input[type="range"]')
? i("range", f)
: f.is("select")
? f.is("[multiple]")
? i("select[multiple]", f)
: i("select", f)
: f.is('input[type="file"]')
? f.is("[multiple]")
? i("file[multiple]", f)
: i("file", f)
: f.is('input[type="hidden"]')
? i("hidden", f)
: f.is('input[type="radio"]')
? j("radio", f)
: f.is('input[type="checkbox"]')
? j("checkbox", f)
: i("text", f)
: (i(
"button",
'input[type="button"], button, input[type="submit"]'
),
i("text", 'input[type="text"]'),
i("password", 'input[type="password"]'),
i("email", 'input[type="email"]'),
i("url", 'input[type="url"]'),
i("range", 'input[type="range"]'),
i("textarea", "textarea"),
i("select", "select:not([multiple])"),
i("select[multiple]", "select[multiple]"),
i("file", 'input[type="file"]:not([multiple])'),
i("file[multiple]", 'input[type="file"][multiple]'),
i("hidden", 'input[type="hidden"]'),
j("radio", 'input[type="radio"]'),
j("checkbox", 'input[type="checkbox"]')),
c
);
};
(a.fn.inputVal = function (b) {
var c = a(this),
d = A({ $: c });
return c.is("input, textarea, select")
? "undefined" == typeof b
? d[c.attr("name")].get()
: (d[c.attr("name")].set(b), c)
: "undefined" == typeof b
? p(d, "get")
: (g(b, function (a, b) {
d[b].set(a);
}),
c);
}),
(a.fn.inputOnChange = function (b) {
var c = a(this),
d = A({ $: c });
return (
g(d, function (a) {
a.subscribe("change", function (a) {
b.call(a.domElement, a.e);
});
}),
c
);
}),
(a.fn.inputDisable = function () {
var b = a(this);
return p(A({ $: b }), "disable"), b;
}),
(a.fn.inputEnable = function () {
var b = a(this);
return p(A({ $: b }), "enable"), b;
}),
(a.fn.inputClear = function () {
var b = a(this);
return p(A({ $: b }), "clear"), b;
});
})(jQuery),
(a.fn.repeaterVal = function () {
var b = function (a) {
var b = [];
return (
g(a, function (a, c) {
var d = [];
"undefined" !== c &&
(d.push(c.match(/^[^\[]*/)[0]),
(d = d.concat(
m(c.match(/\[[^\]]*\]/g), function (a) {
return a.replace(/[\[\]]/g, "");
})
)),
b.push({ val: a, key: d }));
}),
b
);
},
c = function (a) {
if (
1 === a.length &&
(0 === a[0].key.length || (1 === a[0].key.length && !a[0].key[0]))
)
return a[0].val;
g(a, function (a) {
a.head = a.key.shift();
});
var b,
d = (function () {
var b = {};
return (
g(a, function (a) {
b[a.head] || (b[a.head] = []), b[a.head].push(a);
}),
b
);
})();
return (
/^[0-9]+$/.test(a[0].head)
? ((b = []),
g(d, function (a) {
b.push(c(a));
}))
: ((b = {}),
g(d, function (a, d) {
b[d] = c(a);
})),
b
);
};
return c(b(a(this).inputVal()));
}),
(a.fn.repeater = function (c) {
c = c || {};
var d;
return (
a(this).each(function () {
var e = a(this),
f =
c.show ||
function () {
a(this).show();
},
i =
c.hide ||
function (a) {
a();
},
k = e.find("[data-repeater-list]").first(),
l = function (b, c) {
return b.filter(function () {
return (
!c || 0 === a(this).closest(n(c, "selector").join(",")).length
);
});
},
p = function () {
return l(k.find("[data-repeater-item]"), c.repeaters);
},
q = k.find("[data-repeater-item]").first().clone().hide(),
r = l(
l(a(this).find("[data-repeater-item]"), c.repeaters)
.first()
.find("[data-repeater-delete]"),
c.repeaters
);
c.isFirstItemUndeletable && r && r.remove();
var s = function () {
var a = k.data("repeater-list");
return c.$parent
? c.$parent.data("item-name") + "[" + a + "]"
: a;
},
t = function (b) {
c.repeaters &&
b.each(function () {
var b = a(this);
g(c.repeaters, function (a) {
b.find(a.selector).repeater(j(a, { $parent: b }));
});
});
},
u = function (a, b, c) {
a &&
g(a, function (a) {
c.call(b.find(a.selector)[0], a);
});
},
v = function (b, c, d) {
b.each(function (b) {
var e = a(this);
e.data("item-name", c + "[" + b + "]"),
l(e.find("[name]"), d).each(function () {
var f = a(this),
g = f.attr("name").match(/\[[^\]]+\]/g),
i = g ? h(g).replace(/\[|\]/g, "") : f.attr("name"),
j =
c +
"[" +
b +
"][" +
i +
"]" +
(f.is(":checkbox") || f.attr("multiple") ? "[]" : "");
f.attr("name", j),
u(d, e, function (d) {
var e = a(this);
v(
l(e.find("[data-repeater-item]"), d.repeaters || []),
c +
"[" +
b +
"][" +
e
.find("[data-repeater-list]")
.first()
.data("repeater-list") +
"]",
d.repeaters
);
});
});
}),
k
.find("input[name][checked]")
.removeAttr("checked")
.prop("checked", !0);
};
v(p(), s(), c.repeaters),
t(p()),
c.initEmpty && p().remove(),
c.ready &&
c.ready(function () {
v(p(), s(), c.repeaters);
});
var w = (function () {
var d = function (e, f, h) {
if (f || c.defaultValues) {
var i = {};
l(e.find("[name]"), h).each(function () {
var b = a(this)
.attr("name")
.match(/\[([^\]]*)(\]|\]\[\])$/)[1];
i[b] = a(this).attr("name");
}),
e.inputVal(
m(
o(f || c.defaultValues, function (a, b) {
return i[b];
}),
b,
function (a) {
return i[a];
}
)
);
}
u(h, e, function (b) {
var c = a(this);
l(c.find("[data-repeater-item]"), b.repeaters).each(
function () {
var e = c
.find("[data-repeater-list]")
.data("repeater-list");
if (f && f[e]) {
var h = a(this).clone();
c.find("[data-repeater-item]").remove(),
g(f[e], function (a) {
var e = h.clone();
d(e, a, b.repeaters || []),
c.find("[data-repeater-list]").append(e);
});
} else d(a(this), b.defaultValues, b.repeaters || []);
}
);
});
};
return function (b, e) {
k.append(b),
v(p(), s(), c.repeaters),
b.find("[name]").each(function () {
a(this).inputClear();
}),
d(b, e || c.defaultValues, c.repeaters);
};
})(),
x = function (a) {
var b = q.clone();
w(b, a), c.repeaters && t(b), f.call(b.get(0));
};
(d = function (a) {
p().remove(), g(a, x);
}),
l(e.find("[data-repeater-create]"), c.repeaters).click(function () {
x();
}),
k.on("click", "[data-repeater-delete]", function () {
var b = a(this).closest("[data-repeater-item]").get(0);
i.call(b, function () {
a(b).remove(), v(p(), s(), c.repeaters);
});
});
}),
(this.setList = d),
this
);
});
})(jQuery);