diff --git a/base/urls.py b/base/urls.py index f5e8032ad..b71e04bc8 100644 --- a/base/urls.py +++ b/base/urls.py @@ -34,6 +34,47 @@ from horilla_audit.models import AuditTag urlpatterns = [ path("", views.home, name="home-page"), + path("initialize-database", views.initialize_database, name="initialize-database"), + path( + "initialize-database-user", + views.initialize_database_user, + name="initialize-database-user", + ), + path( + "initialize-database-company", + views.initialize_database_company, + name="initialize-database-company", + ), + path( + "initialize-database-department", + views.initialize_database_department, + name="initialize-database-department", + ), + path( + "initialize-department-edit/", + views.initialize_department_edit, + name="initialize-department-edit", + ), + path( + "initialize-department-delete/", + views.initialize_department_delete, + name="initialize-department-delete", + ), + path( + "initialize-database-job-position", + views.initialize_database_job_position, + name="initialize-database-job-position", + ), + path( + "initialize-job-position-edit/", + views.initialize_job_position_edit, + name="initialize-job-position-edit", + ), + path( + "initialize-job-position-delete/", + views.initialize_job_position_delete, + name="initialize-job-position-delete", + ), path("login/", views.login_user, name="login"), path( "forgot-password", diff --git a/base/views.py b/base/views.py index 4afbba6f1..aa3d9cb63 100644 --- a/base/views.py +++ b/base/views.py @@ -16,6 +16,7 @@ from django.contrib import messages from django.contrib.auth import authenticate, login, logout from django.contrib.auth.models import Group, Permission, User from django.contrib.auth.views import PasswordResetConfirmView, PasswordResetView +from django.core.exceptions import ObjectDoesNotExist from django.core.mail import send_mail from django.core.paginator import Paginator from django.db.models import F, ProtectedError, Q @@ -181,11 +182,203 @@ def paginator_qry(queryset, page_number): return queryset +def initialize_database_condition(): + initialize_database = not User.objects.exists() + if not initialize_database: + initialize_database = True + superusers = User.objects.filter(is_superuser=True) + for user in superusers: + if hasattr(user, "employee_get"): + initialize_database = False + break + return initialize_database + + +def initialize_database(request): + if initialize_database_condition(): + return render( + request, + "initialize_database/horilla_user.html", + ) + else: + return redirect("/") + + +@hx_request_required +def initialize_database_user(request): + if request.method == "POST": + form_data = request.__dict__.get("_post") + first_name = form_data.get("firstname") + last_name = form_data.get("lastname") + username = form_data.get("username") + password = form_data.get("password") + email = form_data.get("email") + phone = form_data.get("phone") + user = User.objects.filter(username=username).first() + if user and not hasattr(user, "employee_get"): + user.delete() + user = User.objects.create_superuser( + username=username, email=email, password=password + ) + employee = Employee() + employee.employee_user_id = user + employee.employee_first_name = first_name + employee.employee_last_name = last_name + employee.email = email + employee.phone = phone + employee.save() + user = authenticate(request, username=username, password=password) + login(request, user) + return render( + request, + "initialize_database/horilla_company.html", + {"form": CompanyForm(initial={"hq": True})}, + ) + return render(request, "initialize_database/horilla_user.html") + + +@hx_request_required +def initialize_database_company(request): + form = CompanyForm() + if request.method == "POST": + form = CompanyForm(request.POST, request.FILES) + if form.is_valid(): + company = form.save() + return render( + request, + "initialize_database/horilla_department.html", + {"form": DepartmentForm(initial={"company_id": company})}, + ) + return render(request, "initialize_database/horilla_company.html", {"form": form}) + + +@hx_request_required +def initialize_database_department(request): + departments = Department.objects.all() + form = DepartmentForm(initial={"company_id": Company.objects.first()}) + if request.method == "POST": + form = DepartmentForm(request.POST) + if form.is_valid(): + company = form.cleaned_data.get("company_id") + form.save() + form = DepartmentForm(initial={"company_id": company}) + return render( + request, + "initialize_database/horilla_department_form.html", + {"form": form, "departments": departments}, + ) + + +@hx_request_required +def initialize_department_edit(request, obj_id): + department = Department.find(obj_id) + form = DepartmentForm(instance=department) + if request.method == "POST": + form = DepartmentForm(request.POST, instance=department) + if form.is_valid(): + company = form.cleaned_data.get("company_id") + form.save() + return render( + request, + "initialize_database/horilla_department_form.html", + { + "form": DepartmentForm(initial={"company_id": company}), + "departments": Department.objects.all(), + }, + ) + return render( + request, + "initialize_database/horilla_department_form.html", + { + "form": form, + "department": department, + "departments": Department.objects.all(), + }, + ) + + +@hx_request_required +def initialize_department_delete(request, obj_id): + department = Department.find(obj_id) + department.delete() if department else None + return redirect(initialize_database_department) + + +@hx_request_required +def initialize_database_job_position(request): + company = Company.objects.first() + form = JobPositionForm(initial={"company_id": company}) + if request.method == "POST": + form = JobPositionForm(request.POST) + if form.is_valid(): + form.save() + form = JobPositionForm(initial={"company_id": Company.objects.first()}) + return render( + request, + "initialize_database/horilla_job_position_form.html", + { + "form": form, + "job_positions": JobPosition.objects.all(), + "company": company, + }, + ) + return render( + request, + "initialize_database/horilla_job_position.html", + {"form": form, "job_positions": JobPosition.objects.all(), "company": company}, + ) + + +@hx_request_required +def initialize_job_position_edit(request, obj_id): + company = Company.objects.first() + job_position = JobPosition.find(obj_id) + form = JobPositionForm(instance=job_position) + if request.method == "POST": + form = JobPositionForm(request.POST, instance=job_position) + if form.is_valid(): + form.save() + return render( + request, + "initialize_database/horilla_job_position_form.html", + { + "form": JobPositionForm(initial={"company_id": company}), + "job_positions": JobPosition.objects.all(), + "company": company, + }, + ) + return render( + request, + "initialize_database/horilla_job_position_form.html", + { + "form": form, + "job_position": job_position, + "job_positions": JobPosition.objects.all(), + "company": company, + }, + ) + + +@hx_request_required +def initialize_job_position_delete(request, obj_id): + company = Company.objects.first() + job_position = JobPosition.find(obj_id) + job_position.delete() if job_position else None + return render( + request, + "initialize_database/horilla_job_position_form.html", + { + "form": JobPositionForm(initial={"company_id": Company.objects.first()}), + "job_positions": JobPosition.objects.all(), + "company": company, + }, + ) + + def login_user(request): """ This method is used render login template and authenticate user """ - if request.method == "POST": username = request.POST["username"] password = request.POST["password"] @@ -223,7 +416,9 @@ def login_user(request): url += f"?{params}" return redirect(url) return redirect("/") - return render(request, "login.html") + return render( + request, "login.html", {"initialize_database": initialize_database_condition()} + ) def include_employee_instance(request, form): diff --git a/horilla/group_by.py b/horilla/group_by.py index 7dfd2ab55..d5c6b8ee1 100644 --- a/horilla/group_by.py +++ b/horilla/group_by.py @@ -1,5 +1,6 @@ from django.core.paginator import Paginator from django.db.models.fields.related_descriptors import ForwardManyToOneDescriptor + from horilla.horilla_middlewares import _thread_locals diff --git a/horilla_crumbs/context_processors.py b/horilla_crumbs/context_processors.py index 7ef57c367..d131dbb63 100644 --- a/horilla_crumbs/context_processors.py +++ b/horilla_crumbs/context_processors.py @@ -118,6 +118,11 @@ sidebar_urls = [ "interview-view", "view-compensatory-leave", "compensatory-leave-settings-view", + "project-dashboard-view", + "project-view", + "view-time-sheet", + "templates", + "sidebar.html", ] remove_urls = [ "feedback-detailed-view", @@ -198,6 +203,7 @@ def breadcrumbs(request): last_path in sidebar_urls or parts[-2] == "employee-view" or parts[-2] == "candidate-view" + or parts[-2] == "view-payslip" ): breadcrumbs = user_breadcrumbs[user_id] first_path = breadcrumbs[0] diff --git a/horilla_views/templates/generic/reload_select_field.html b/horilla_views/templates/generic/reload_select_field.html index b423c5700..e7170b829 100644 --- a/horilla_views/templates/generic/reload_select_field.html +++ b/horilla_views/templates/generic/reload_select_field.html @@ -10,4 +10,3 @@ $("#{{dynamic_id}} [name={{field.name}}]").change(function (e) { } }); - diff --git a/static/build/js/hxSelect2.js b/static/build/js/hxSelect2.js new file mode 100644 index 000000000..1262b7aaa --- /dev/null +++ b/static/build/js/hxSelect2.js @@ -0,0 +1,4009 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ +!(function (n) { + "function" == typeof define && define.amd + ? define(["jquery"], n) + : "object" == typeof module && module.exports + ? (module.exports = function (e, t) { + return ( + void 0 === t && + (t = + "undefined" != typeof window + ? require("jquery") + : require("jquery")(e)), + n(t), + t + ); + }) + : n(jQuery); +})(function (u) { + var e = (function () { + if (u && u.fn && u.fn.select2 && u.fn.select2.amd) + var e = u.fn.select2.amd; + var t, n, r, h, o, s, f, g, m, v, y, _, i, a, b; + function w(e, t) { + return i.call(e, t); + } + function l(e, t) { + var n, + r, + i, + o, + s, + a, + l, + c, + u, + d, + p, + h = t && t.split("/"), + f = y.map, + g = (f && f["*"]) || {}; + if (e) { + for ( + s = (e = e.split("/")).length - 1, + y.nodeIdCompat && b.test(e[s]) && (e[s] = e[s].replace(b, "")), + "." === e[0].charAt(0) && + h && + (e = h.slice(0, h.length - 1).concat(e)), + u = 0; + u < e.length; + u++ + ) + if ("." === (p = e[u])) e.splice(u, 1), --u; + else if (".." === p) { + if (0 === u || (1 === u && ".." === e[2]) || ".." === e[u - 1]) + continue; + 0 < u && (e.splice(u - 1, 2), (u -= 2)); + } + e = e.join("/"); + } + if ((h || g) && f) { + for (u = (n = e.split("/")).length; 0 < u; --u) { + if (((r = n.slice(0, u).join("/")), h)) + for (d = h.length; 0 < d; --d) + if ((i = (i = f[h.slice(0, d).join("/")]) && i[r])) { + (o = i), (a = u); + break; + } + if (o) break; + !l && g && g[r] && ((l = g[r]), (c = u)); + } + !o && l && ((o = l), (a = c)), + o && (n.splice(0, a, o), (e = n.join("/"))); + } + return e; + } + function A(t, n) { + return function () { + var e = a.call(arguments, 0); + return ( + "string" != typeof e[0] && 1 === e.length && e.push(null), + s.apply(h, e.concat([t, n])) + ); + }; + } + function x(t) { + return function (e) { + m[t] = e; + }; + } + function D(e) { + if (w(v, e)) { + var t = v[e]; + delete v[e], (_[e] = !0), o.apply(h, t); + } + if (!w(m, e) && !w(_, e)) throw new Error("No " + e); + return m[e]; + } + function c(e) { + var t, + n = e ? e.indexOf("!") : -1; + return ( + -1 < n && + ((t = e.substring(0, n)), (e = e.substring(n + 1, e.length))), + [t, e] + ); + } + function S(e) { + return e ? c(e) : []; + } + return ( + (e && e.requirejs) || + (e ? (n = e) : (e = {}), + (m = {}), + (v = {}), + (y = {}), + (_ = {}), + (i = Object.prototype.hasOwnProperty), + (a = [].slice), + (b = /\.js$/), + (f = function (e, t) { + var n, + r, + i = c(e), + o = i[0], + s = t[1]; + return ( + (e = i[1]), + o && (n = D((o = l(o, s)))), + o + ? (e = + n && n.normalize + ? n.normalize( + e, + ((r = s), + function (e) { + return l(e, r); + }) + ) + : l(e, s)) + : ((o = (i = c((e = l(e, s))))[0]), + (e = i[1]), + o && (n = D(o))), + { f: o ? o + "!" + e : e, n: e, pr: o, p: n } + ); + }), + (g = { + require: function (e) { + return A(e); + }, + exports: function (e) { + var t = m[e]; + return void 0 !== t ? t : (m[e] = {}); + }, + module: function (e) { + return { + id: e, + uri: "", + exports: m[e], + config: + ((t = e), + function () { + return (y && y.config && y.config[t]) || {}; + }), + }; + var t; + }, + }), + (o = function (e, t, n, r) { + var i, + o, + s, + a, + l, + c, + u, + d = [], + p = typeof n; + if (((c = S((r = r || e))), "undefined" == p || "function" == p)) { + for ( + t = + !t.length && n.length ? ["require", "exports", "module"] : t, + l = 0; + l < t.length; + l += 1 + ) + if ("require" === (o = (a = f(t[l], c)).f)) d[l] = g.require(e); + else if ("exports" === o) (d[l] = g.exports(e)), (u = !0); + else if ("module" === o) i = d[l] = g.module(e); + else if (w(m, o) || w(v, o) || w(_, o)) d[l] = D(o); + else { + if (!a.p) throw new Error(e + " missing " + o); + a.p.load(a.n, A(r, !0), x(o), {}), (d[l] = m[o]); + } + (s = n ? n.apply(m[e], d) : void 0), + e && + (i && i.exports !== h && i.exports !== m[e] + ? (m[e] = i.exports) + : (s === h && u) || (m[e] = s)); + } else e && (m[e] = n); + }), + (t = + n = + s = + function (e, t, n, r, i) { + if ("string" == typeof e) + return g[e] ? g[e](t) : D(f(e, S(t)).f); + if (!e.splice) { + if (((y = e).deps && s(y.deps, y.callback), !t)) return; + t.splice ? ((e = t), (t = n), (n = null)) : (e = h); + } + return ( + (t = t || function () {}), + "function" == typeof n && ((n = r), (r = i)), + r + ? o(h, e, t, n) + : setTimeout(function () { + o(h, e, t, n); + }, 4), + s + ); + }), + (s.config = function (e) { + return s(e); + }), + (t._defined = m), + ((r = function (e, t, n) { + if ("string" != typeof e) + throw new Error( + "See almond README: incorrect module build, no module name" + ); + t.splice || ((n = t), (t = [])), + w(m, e) || w(v, e) || (v[e] = [e, t, n]); + }).amd = { jQuery: !0 }), + (e.requirejs = t), + (e.require = n), + (e.define = r)), + e.define("almond", function () {}), + e.define("jquery", [], function () { + var e = u || $; + return ( + null == e && + console && + console.error && + console.error( + "Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page." + ), + e + ); + }), + e.define("select2/utils", ["jquery"], function (o) { + var i = {}; + function u(e) { + var t = e.prototype, + n = []; + for (var r in t) { + "function" == typeof t[r] && "constructor" !== r && n.push(r); + } + return n; + } + (i.Extend = function (e, t) { + var n = {}.hasOwnProperty; + function r() { + this.constructor = e; + } + for (var i in t) n.call(t, i) && (e[i] = t[i]); + return ( + (r.prototype = t.prototype), + (e.prototype = new r()), + (e.__super__ = t.prototype), + e + ); + }), + (i.Decorate = function (r, i) { + var e = u(i), + t = u(r); + function o() { + var e = Array.prototype.unshift, + t = i.prototype.constructor.length, + n = r.prototype.constructor; + 0 < t && + (e.call(arguments, r.prototype.constructor), + (n = i.prototype.constructor)), + n.apply(this, arguments); + } + (i.displayName = r.displayName), + (o.prototype = new (function () { + this.constructor = o; + })()); + for (var n = 0; n < t.length; n++) { + var s = t[n]; + o.prototype[s] = r.prototype[s]; + } + function a(e) { + var t = function () {}; + e in o.prototype && (t = o.prototype[e]); + var n = i.prototype[e]; + return function () { + return ( + Array.prototype.unshift.call(arguments, t), + n.apply(this, arguments) + ); + }; + } + for (var l = 0; l < e.length; l++) { + var c = e[l]; + o.prototype[c] = a(c); + } + return o; + }); + function e() { + this.listeners = {}; + } + (e.prototype.on = function (e, t) { + (this.listeners = this.listeners || {}), + e in this.listeners + ? this.listeners[e].push(t) + : (this.listeners[e] = [t]); + }), + (e.prototype.trigger = function (e) { + var t = Array.prototype.slice, + n = t.call(arguments, 1); + (this.listeners = this.listeners || {}), + null == n && (n = []), + 0 === n.length && n.push({}), + (n[0]._type = e) in this.listeners && + this.invoke(this.listeners[e], t.call(arguments, 1)), + "*" in this.listeners && + this.invoke(this.listeners["*"], arguments); + }), + (e.prototype.invoke = function (e, t) { + for (var n = 0, r = e.length; n < r; n++) e[n].apply(this, t); + }), + (i.Observable = e), + (i.generateChars = function (e) { + for (var t = "", n = 0; n < e; n++) { + t += Math.floor(36 * Math.random()).toString(36); + } + return t; + }), + (i.bind = function (e, t) { + return function () { + e.apply(t, arguments); + }; + }), + (i._convertData = function (e) { + for (var t in e) { + var n = t.split("-"), + r = e; + if (1 !== n.length) { + for (var i = 0; i < n.length; i++) { + var o = n[i]; + (o = o.substring(0, 1).toLowerCase() + o.substring(1)) in + r || (r[o] = {}), + i == n.length - 1 && (r[o] = e[t]), + (r = r[o]); + } + delete e[t]; + } + } + return e; + }), + (i.hasScroll = function (e, t) { + var n = o(t), + r = t.style.overflowX, + i = t.style.overflowY; + return ( + (r !== i || ("hidden" !== i && "visible" !== i)) && + ("scroll" === r || + "scroll" === i || + n.innerHeight() < t.scrollHeight || + n.innerWidth() < t.scrollWidth) + ); + }), + (i.escapeMarkup = function (e) { + var t = { + "\\": "\", + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + "/": "/", + }; + return "string" != typeof e + ? e + : String(e).replace(/[&<>"'\/\\]/g, function (e) { + return t[e]; + }); + }), + (i.appendMany = function (e, t) { + if ("1.7" === o.fn.jquery.substr(0, 3)) { + var n = o(); + o.map(t, function (e) { + n = n.add(e); + }), + (t = n); + } + e.append(t); + }), + (i.__cache = {}); + var n = 0; + return ( + (i.GetUniqueElementId = function (e) { + var t = e.getAttribute("data-select2-id"); + return ( + null == t && + (e.id + ? ((t = e.id), e.setAttribute("data-select2-id", t)) + : (e.setAttribute("data-select2-id", ++n), + (t = n.toString()))), + t + ); + }), + (i.StoreData = function (e, t, n) { + var r = i.GetUniqueElementId(e); + i.__cache[r] || (i.__cache[r] = {}), (i.__cache[r][t] = n); + }), + (i.GetData = function (e, t) { + var n = i.GetUniqueElementId(e); + return t + ? i.__cache[n] && null != i.__cache[n][t] + ? i.__cache[n][t] + : o(e).data(t) + : i.__cache[n]; + }), + (i.RemoveData = function (e) { + var t = i.GetUniqueElementId(e); + null != i.__cache[t] && delete i.__cache[t], + e.removeAttribute("data-select2-id"); + }), + i + ); + }), + e.define("select2/results", ["jquery", "./utils"], function (h, f) { + function r(e, t, n) { + (this.$element = e), + (this.data = n), + (this.options = t), + r.__super__.constructor.call(this); + } + return ( + f.Extend(r, f.Observable), + (r.prototype.render = function () { + var e = h( + '
    ' + ); + return ( + this.options.get("multiple") && + e.attr("aria-multiselectable", "true"), + (this.$results = e) + ); + }), + (r.prototype.clear = function () { + this.$results.empty(); + }), + (r.prototype.displayMessage = function (e) { + var t = this.options.get("escapeMarkup"); + this.clear(), this.hideLoading(); + var n = h( + '' + ), + r = this.options.get("translations").get(e.message); + n.append(t(r(e.args))), + (n[0].className += " select2-results__message"), + this.$results.append(n); + }), + (r.prototype.hideMessages = function () { + this.$results.find(".select2-results__message").remove(); + }), + (r.prototype.append = function (e) { + this.hideLoading(); + var t = []; + if (null != e.results && 0 !== e.results.length) { + e.results = this.sort(e.results); + for (var n = 0; n < e.results.length; n++) { + var r = e.results[n], + i = this.option(r); + t.push(i); + } + this.$results.append(t); + } else + 0 === this.$results.children().length && + this.trigger("results:message", { message: "noResults" }); + }), + (r.prototype.position = function (e, t) { + t.find(".select2-results").append(e); + }), + (r.prototype.sort = function (e) { + return this.options.get("sorter")(e); + }), + (r.prototype.highlightFirstItem = function () { + var e = this.$results.find( + ".select2-results__option[aria-selected]" + ), + t = e.filter("[aria-selected=true]"); + 0 < t.length + ? t.first().trigger("mouseenter") + : e.first().trigger("mouseenter"), + this.ensureHighlightVisible(); + }), + (r.prototype.setClasses = function () { + var t = this; + this.data.current(function (e) { + var r = h.map(e, function (e) { + return e.id.toString(); + }); + t.$results + .find(".select2-results__option[aria-selected]") + .each(function () { + var e = h(this), + t = f.GetData(this, "data"), + n = "" + t.id; + (null != t.element && t.element.selected) || + (null == t.element && -1 < h.inArray(n, r)) + ? e.attr("aria-selected", "true") + : e.attr("aria-selected", "false"); + }); + }); + }), + (r.prototype.showLoading = function (e) { + this.hideLoading(); + var t = { + disabled: !0, + loading: !0, + text: this.options.get("translations").get("searching")(e), + }, + n = this.option(t); + (n.className += " loading-results"), this.$results.prepend(n); + }), + (r.prototype.hideLoading = function () { + this.$results.find(".loading-results").remove(); + }), + (r.prototype.option = function (e) { + var t = document.createElement("li"); + t.className = "select2-results__option"; + var n = { role: "option", "aria-selected": "false" }, + r = + window.Element.prototype.matches || + window.Element.prototype.msMatchesSelector || + window.Element.prototype.webkitMatchesSelector; + for (var i in (((null != e.element && + r.call(e.element, ":disabled")) || + (null == e.element && e.disabled)) && + (delete n["aria-selected"], (n["aria-disabled"] = "true")), + null == e.id && delete n["aria-selected"], + null != e._resultId && (t.id = e._resultId), + e.title && (t.title = e.title), + e.children && + ((n.role = "group"), + (n["aria-label"] = e.text), + delete n["aria-selected"]), + n)) { + var o = n[i]; + t.setAttribute(i, o); + } + if (e.children) { + var s = h(t), + a = document.createElement("strong"); + a.className = "select2-results__group"; + h(a); + this.template(e, a); + for (var l = [], c = 0; c < e.children.length; c++) { + var u = e.children[c], + d = this.option(u); + l.push(d); + } + var p = h("
      ", { + class: + "select2-results__options select2-results__options--nested", + }); + p.append(l), s.append(a), s.append(p); + } else this.template(e, t); + return f.StoreData(t, "data", e), t; + }), + (r.prototype.bind = function (t, e) { + var l = this, + n = t.id + "-results"; + this.$results.attr("id", n), + t.on("results:all", function (e) { + l.clear(), + l.append(e.data), + t.isOpen() && (l.setClasses(), l.highlightFirstItem()); + }), + t.on("results:append", function (e) { + l.append(e.data), t.isOpen() && l.setClasses(); + }), + t.on("query", function (e) { + l.hideMessages(), l.showLoading(e); + }), + t.on("select", function () { + t.isOpen() && + (l.setClasses(), + l.options.get("scrollAfterSelect") && + l.highlightFirstItem()); + }), + t.on("unselect", function () { + t.isOpen() && + (l.setClasses(), + l.options.get("scrollAfterSelect") && + l.highlightFirstItem()); + }), + t.on("open", function () { + l.$results.attr("aria-expanded", "true"), + l.$results.attr("aria-hidden", "false"), + l.setClasses(), + l.ensureHighlightVisible(); + }), + t.on("close", function () { + l.$results.attr("aria-expanded", "false"), + l.$results.attr("aria-hidden", "true"), + l.$results.removeAttr("aria-activedescendant"); + }), + t.on("results:toggle", function () { + var e = l.getHighlightedResults(); + 0 !== e.length && e.trigger("mouseup"); + }), + t.on("results:select", function () { + var e = l.getHighlightedResults(); + if (0 !== e.length) { + var t = f.GetData(e[0], "data"); + "true" == e.attr("aria-selected") + ? l.trigger("close", {}) + : l.trigger("select", { data: t }); + } + }), + t.on("results:previous", function () { + var e = l.getHighlightedResults(), + t = l.$results.find("[aria-selected]"), + n = t.index(e); + if (!(n <= 0)) { + var r = n - 1; + 0 === e.length && (r = 0); + var i = t.eq(r); + i.trigger("mouseenter"); + var o = l.$results.offset().top, + s = i.offset().top, + a = l.$results.scrollTop() + (s - o); + 0 === r + ? l.$results.scrollTop(0) + : s - o < 0 && l.$results.scrollTop(a); + } + }), + t.on("results:next", function () { + var e = l.getHighlightedResults(), + t = l.$results.find("[aria-selected]"), + n = t.index(e) + 1; + if (!(n >= t.length)) { + var r = t.eq(n); + r.trigger("mouseenter"); + var i = + l.$results.offset().top + l.$results.outerHeight(!1), + o = r.offset().top + r.outerHeight(!1), + s = l.$results.scrollTop() + o - i; + 0 === n + ? l.$results.scrollTop(0) + : i < o && l.$results.scrollTop(s); + } + }), + t.on("results:focus", function (e) { + e.element.addClass("select2-results__option--highlighted"); + }), + t.on("results:message", function (e) { + l.displayMessage(e); + }), + h.fn.mousewheel && + this.$results.on("mousewheel", function (e) { + var t = l.$results.scrollTop(), + n = l.$results.get(0).scrollHeight - t + e.deltaY, + r = 0 < e.deltaY && t - e.deltaY <= 0, + i = e.deltaY < 0 && n <= l.$results.height(); + r + ? (l.$results.scrollTop(0), + e.preventDefault(), + e.stopPropagation()) + : i && + (l.$results.scrollTop( + l.$results.get(0).scrollHeight - l.$results.height() + ), + e.preventDefault(), + e.stopPropagation()); + }), + this.$results.on( + "mouseup", + ".select2-results__option[aria-selected]", + function (e) { + var t = h(this), + n = f.GetData(this, "data"); + "true" !== t.attr("aria-selected") + ? l.trigger("select", { originalEvent: e, data: n }) + : l.options.get("multiple") + ? l.trigger("unselect", { originalEvent: e, data: n }) + : l.trigger("close", {}); + } + ), + this.$results.on( + "mouseenter", + ".select2-results__option[aria-selected]", + function (e) { + var t = f.GetData(this, "data"); + l + .getHighlightedResults() + .removeClass("select2-results__option--highlighted"), + l.trigger("results:focus", { data: t, element: h(this) }); + } + ); + }), + (r.prototype.getHighlightedResults = function () { + return this.$results.find( + ".select2-results__option--highlighted" + ); + }), + (r.prototype.destroy = function () { + this.$results.remove(); + }), + (r.prototype.ensureHighlightVisible = function () { + var e = this.getHighlightedResults(); + if (0 !== e.length) { + var t = this.$results.find("[aria-selected]").index(e), + n = this.$results.offset().top, + r = e.offset().top, + i = this.$results.scrollTop() + (r - n), + o = r - n; + (i -= 2 * e.outerHeight(!1)), + t <= 2 + ? this.$results.scrollTop(0) + : (o > this.$results.outerHeight() || o < 0) && + this.$results.scrollTop(i); + } + }), + (r.prototype.template = function (e, t) { + var n = this.options.get("templateResult"), + r = this.options.get("escapeMarkup"), + i = n(e, t); + null == i + ? (t.style.display = "none") + : "string" == typeof i + ? (t.innerHTML = r(i)) + : h(t).append(i); + }), + r + ); + }), + e.define("select2/keys", [], function () { + return { + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + DELETE: 46, + }; + }), + e.define( + "select2/selection/base", + ["jquery", "../utils", "../keys"], + function (n, r, i) { + function o(e, t) { + (this.$element = e), + (this.options = t), + o.__super__.constructor.call(this); + } + return ( + r.Extend(o, r.Observable), + (o.prototype.render = function () { + var e = n( + '' + ); + return ( + (this._tabindex = 0), + null != r.GetData(this.$element[0], "old-tabindex") + ? (this._tabindex = r.GetData( + this.$element[0], + "old-tabindex" + )) + : null != this.$element.attr("tabindex") && + (this._tabindex = this.$element.attr("tabindex")), + e.attr("title", this.$element.attr("title")), + e.attr("tabindex", this._tabindex), + e.attr("aria-disabled", "false"), + (this.$selection = e) + ); + }), + (o.prototype.bind = function (e, t) { + var n = this, + r = e.id + "-results"; + (this.container = e), + this.$selection.on("focus", function (e) { + n.trigger("focus", e); + }), + this.$selection.on("blur", function (e) { + n._handleBlur(e); + }), + this.$selection.on("keydown", function (e) { + n.trigger("keypress", e), + e.which === i.SPACE && e.preventDefault(); + }), + e.on("results:focus", function (e) { + n.$selection.attr( + "aria-activedescendant", + e.data._resultId + ); + }), + e.on("selection:update", function (e) { + n.update(e.data); + }), + e.on("open", function () { + n.$selection.attr("aria-expanded", "true"), + n.$selection.attr("aria-owns", r), + n._attachCloseHandler(e); + }), + e.on("close", function () { + n.$selection.attr("aria-expanded", "false"), + n.$selection.removeAttr("aria-activedescendant"), + n.$selection.removeAttr("aria-owns"), + n.$selection.trigger("focus"), + n._detachCloseHandler(e); + }), + e.on("enable", function () { + n.$selection.attr("tabindex", n._tabindex), + n.$selection.attr("aria-disabled", "false"); + }), + e.on("disable", function () { + n.$selection.attr("tabindex", "-1"), + n.$selection.attr("aria-disabled", "true"); + }); + }), + (o.prototype._handleBlur = function (e) { + var t = this; + window.setTimeout(function () { + document.activeElement == t.$selection[0] || + n.contains(t.$selection[0], document.activeElement) || + t.trigger("blur", e); + }, 1); + }), + (o.prototype._attachCloseHandler = function (e) { + n(document.body).on("mousedown.select2." + e.id, function (e) { + var t = n(e.target).closest(".select2"); + n(".select2.select2-container--open").each(function () { + this != t[0] && r.GetData(this, "element").select2("close"); + }); + }); + }), + (o.prototype._detachCloseHandler = function (e) { + n(document.body).off("mousedown.select2." + e.id); + }), + (o.prototype.position = function (e, t) { + t.find(".selection").append(e); + }), + (o.prototype.destroy = function () { + this._detachCloseHandler(this.container); + }), + (o.prototype.update = function (e) { + throw new Error( + "The `update` method must be defined in child classes." + ); + }), + (o.prototype.isEnabled = function () { + return !this.isDisabled(); + }), + (o.prototype.isDisabled = function () { + return this.options.get("disabled"); + }), + o + ); + } + ), + e.define( + "select2/selection/single", + ["jquery", "./base", "../utils", "../keys"], + function (e, t, n, r) { + function i() { + i.__super__.constructor.apply(this, arguments); + } + return ( + n.Extend(i, t), + (i.prototype.render = function () { + var e = i.__super__.render.call(this); + return ( + e.addClass("select2-selection--single"), + e.html( + '' + ), + e + ); + }), + (i.prototype.bind = function (t, e) { + var n = this; + i.__super__.bind.apply(this, arguments); + var r = t.id + "-container"; + this.$selection + .find(".select2-selection__rendered") + .attr("id", r) + .attr("role", "textbox") + .attr("aria-readonly", "true"), + this.$selection.attr("aria-labelledby", r), + this.$selection.on("mousedown", function (e) { + 1 === e.which && n.trigger("toggle", { originalEvent: e }); + }), + this.$selection.on("focus", function (e) {}), + this.$selection.on("blur", function (e) {}), + t.on("focus", function (e) { + t.isOpen() || n.$selection.trigger("focus"); + }); + }), + (i.prototype.clear = function () { + var e = this.$selection.find(".select2-selection__rendered"); + e.empty(), e.removeAttr("title"); + }), + (i.prototype.display = function (e, t) { + var n = this.options.get("templateSelection"); + return this.options.get("escapeMarkup")(n(e, t)); + }), + (i.prototype.selectionContainer = function () { + return e(""); + }), + (i.prototype.update = function (e) { + if (0 !== e.length) { + var t = e[0], + n = this.$selection.find(".select2-selection__rendered"), + r = this.display(t, n); + n.empty().append(r); + var i = t.title || t.text; + i ? n.attr("title", i) : n.removeAttr("title"); + } else this.clear(); + }), + i + ); + } + ), + e.define( + "select2/selection/multiple", + ["jquery", "./base", "../utils"], + function (i, e, l) { + function n(e, t) { + n.__super__.constructor.apply(this, arguments); + } + return ( + l.Extend(n, e), + (n.prototype.render = function () { + var e = n.__super__.render.call(this); + return ( + e.addClass("select2-selection--multiple"), + e.html('
        '), + e + ); + }), + (n.prototype.bind = function (e, t) { + var r = this; + n.__super__.bind.apply(this, arguments), + this.$selection.on("click", function (e) { + r.trigger("toggle", { originalEvent: e }); + }), + this.$selection.on( + "click", + ".select2-selection__choice__remove", + function (e) { + if (!r.isDisabled()) { + var t = i(this).parent(), + n = l.GetData(t[0], "data"); + r.trigger("unselect", { originalEvent: e, data: n }); + } + } + ); + }), + (n.prototype.clear = function () { + var e = this.$selection.find(".select2-selection__rendered"); + e.empty(), e.removeAttr("title"); + }), + (n.prototype.display = function (e, t) { + var n = this.options.get("templateSelection"); + return this.options.get("escapeMarkup")(n(e, t)); + }), + (n.prototype.selectionContainer = function () { + return i( + '
      • ×
      • ' + ); + }), + (n.prototype.update = function (e) { + if ((this.clear(), 0 !== e.length)) { + for (var t = [], n = 0; n < e.length; n++) { + var r = e[n], + i = this.selectionContainer(), + o = this.display(r, i); + i.append(o); + var s = r.title || r.text; + s && i.attr("title", s), + l.StoreData(i[0], "data", r), + t.push(i); + } + var a = this.$selection.find(".select2-selection__rendered"); + l.appendMany(a, t); + } + }), + n + ); + } + ), + e.define("select2/selection/placeholder", ["../utils"], function (e) { + function t(e, t, n) { + (this.placeholder = this.normalizePlaceholder( + n.get("placeholder") + )), + e.call(this, t, n); + } + return ( + (t.prototype.normalizePlaceholder = function (e, t) { + return "string" == typeof t && (t = { id: "", text: t }), t; + }), + (t.prototype.createPlaceholder = function (e, t) { + var n = this.selectionContainer(); + return ( + n.html(this.display(t)), + n + .addClass("select2-selection__placeholder") + .removeClass("select2-selection__choice"), + n + ); + }), + (t.prototype.update = function (e, t) { + var n = 1 == t.length && t[0].id != this.placeholder.id; + if (1 < t.length || n) return e.call(this, t); + this.clear(); + var r = this.createPlaceholder(this.placeholder); + this.$selection.find(".select2-selection__rendered").append(r); + }), + t + ); + }), + e.define( + "select2/selection/allowClear", + ["jquery", "../keys", "../utils"], + function (i, r, a) { + function e() {} + return ( + (e.prototype.bind = function (e, t, n) { + var r = this; + e.call(this, t, n), + null == this.placeholder && + this.options.get("debug") && + window.console && + console.error && + console.error( + "Select2: The `allowClear` option should be used in combination with the `placeholder` option." + ), + this.$selection.on( + "mousedown", + ".select2-selection__clear", + function (e) { + r._handleClear(e); + } + ), + t.on("keypress", function (e) { + r._handleKeyboardClear(e, t); + }); + }), + (e.prototype._handleClear = function (e, t) { + if (!this.isDisabled()) { + var n = this.$selection.find(".select2-selection__clear"); + if (0 !== n.length) { + t.stopPropagation(); + var r = a.GetData(n[0], "data"), + i = this.$element.val(); + this.$element.val(this.placeholder.id); + var o = { data: r }; + if ((this.trigger("clear", o), o.prevented)) + this.$element.val(i); + else { + for (var s = 0; s < r.length; s++) + if ( + ((o = { data: r[s] }), + this.trigger("unselect", o), + o.prevented) + ) + return void this.$element.val(i); + this.$element.trigger("input").trigger("change"), + this.trigger("toggle", {}); + } + } + } + }), + (e.prototype._handleKeyboardClear = function (e, t, n) { + n.isOpen() || + (t.which != r.DELETE && t.which != r.BACKSPACE) || + this._handleClear(t); + }), + (e.prototype.update = function (e, t) { + if ( + (e.call(this, t), + !( + 0 < + this.$selection.find(".select2-selection__placeholder") + .length || 0 === t.length + )) + ) { + var n = this.options + .get("translations") + .get("removeAllItems"), + r = i( + '×' + ); + a.StoreData(r[0], "data", t), + this.$selection + .find(".select2-selection__rendered") + .prepend(r); + } + }), + e + ); + } + ), + e.define( + "select2/selection/search", + ["jquery", "../utils", "../keys"], + function (r, a, l) { + function e(e, t, n) { + e.call(this, t, n); + } + return ( + (e.prototype.render = function (e) { + var t = r( + '' + ); + (this.$searchContainer = t), (this.$search = t.find("input")); + var n = e.call(this); + return this._transferTabIndex(), n; + }), + (e.prototype.bind = function (e, t, n) { + var r = this, + i = t.id + "-results"; + e.call(this, t, n), + t.on("open", function () { + r.$search.attr("aria-controls", i), + r.$search.trigger("focus"); + }), + t.on("close", function () { + r.$search.val(""), + r.$search.removeAttr("aria-controls"), + r.$search.removeAttr("aria-activedescendant"), + r.$search.trigger("focus"); + }), + t.on("enable", function () { + r.$search.prop("disabled", !1), r._transferTabIndex(); + }), + t.on("disable", function () { + r.$search.prop("disabled", !0); + }), + t.on("focus", function (e) { + r.$search.trigger("focus"); + }), + t.on("results:focus", function (e) { + e.data._resultId + ? r.$search.attr( + "aria-activedescendant", + e.data._resultId + ) + : r.$search.removeAttr("aria-activedescendant"); + }), + this.$selection.on( + "focusin", + ".select2-search--inline", + function (e) { + r.trigger("focus", e); + } + ), + this.$selection.on( + "focusout", + ".select2-search--inline", + function (e) { + r._handleBlur(e); + } + ), + this.$selection.on( + "keydown", + ".select2-search--inline", + function (e) { + if ( + (e.stopPropagation(), + r.trigger("keypress", e), + (r._keyUpPrevented = e.isDefaultPrevented()), + e.which === l.BACKSPACE && "" === r.$search.val()) + ) { + var t = r.$searchContainer.prev( + ".select2-selection__choice" + ); + if (0 < t.length) { + var n = a.GetData(t[0], "data"); + r.searchRemoveChoice(n), e.preventDefault(); + } + } + } + ), + this.$selection.on( + "click", + ".select2-search--inline", + function (e) { + r.$search.val() && e.stopPropagation(); + } + ); + var o = document.documentMode, + s = o && o <= 11; + this.$selection.on( + "input.searchcheck", + ".select2-search--inline", + function (e) { + s + ? r.$selection.off("input.search input.searchcheck") + : r.$selection.off("keyup.search"); + } + ), + this.$selection.on( + "keyup.search input.search", + ".select2-search--inline", + function (e) { + if (s && "input" === e.type) + r.$selection.off("input.search input.searchcheck"); + else { + var t = e.which; + t != l.SHIFT && + t != l.CTRL && + t != l.ALT && + t != l.TAB && + r.handleSearch(e); + } + } + ); + }), + (e.prototype._transferTabIndex = function (e) { + this.$search.attr("tabindex", this.$selection.attr("tabindex")), + this.$selection.attr("tabindex", "-1"); + }), + (e.prototype.createPlaceholder = function (e, t) { + this.$search.attr("placeholder", t.text); + }), + (e.prototype.update = function (e, t) { + var n = this.$search[0] == document.activeElement; + this.$search.attr("placeholder", ""), + e.call(this, t), + this.$selection + .find(".select2-selection__rendered") + .append(this.$searchContainer), + this.resizeSearch(), + n && this.$search.trigger("focus"); + }), + (e.prototype.handleSearch = function () { + if ((this.resizeSearch(), !this._keyUpPrevented)) { + var e = this.$search.val(); + this.trigger("query", { term: e }); + } + this._keyUpPrevented = !1; + }), + (e.prototype.searchRemoveChoice = function (e, t) { + this.trigger("unselect", { data: t }), + this.$search.val(t.text), + this.handleSearch(); + }), + (e.prototype.resizeSearch = function () { + this.$search.css("width", "25px"); + var e = ""; + "" !== this.$search.attr("placeholder") + ? (e = this.$selection + .find(".select2-selection__rendered") + .width()) + : (e = 0.75 * (this.$search.val().length + 1) + "em"); + this.$search.css("width", e); + }), + e + ); + } + ), + e.define("select2/selection/eventRelay", ["jquery"], function (s) { + function e() {} + return ( + (e.prototype.bind = function (e, t, n) { + var r = this, + i = [ + "open", + "opening", + "close", + "closing", + "select", + "selecting", + "unselect", + "unselecting", + "clear", + "clearing", + ], + o = [ + "opening", + "closing", + "selecting", + "unselecting", + "clearing", + ]; + e.call(this, t, n), + t.on("*", function (e, t) { + if (-1 !== s.inArray(e, i)) { + t = t || {}; + var n = s.Event("select2:" + e, { params: t }); + r.$element.trigger(n), + -1 !== s.inArray(e, o) && + (t.prevented = n.isDefaultPrevented()); + } + }); + }), + e + ); + }), + e.define("select2/translation", ["jquery", "require"], function (t, n) { + function r(e) { + this.dict = e || {}; + } + return ( + (r.prototype.all = function () { + return this.dict; + }), + (r.prototype.get = function (e) { + return this.dict[e]; + }), + (r.prototype.extend = function (e) { + this.dict = t.extend({}, e.all(), this.dict); + }), + (r._cache = {}), + (r.loadPath = function (e) { + if (!(e in r._cache)) { + var t = n(e); + r._cache[e] = t; + } + return new r(r._cache[e]); + }), + r + ); + }), + e.define("select2/diacritics", [], function () { + return { + "Ⓐ": "A", + A: "A", + À: "A", + Á: "A", + Â: "A", + Ầ: "A", + Ấ: "A", + Ẫ: "A", + Ẩ: "A", + Ã: "A", + Ā: "A", + Ă: "A", + Ằ: "A", + Ắ: "A", + Ẵ: "A", + Ẳ: "A", + Ȧ: "A", + Ǡ: "A", + Ä: "A", + Ǟ: "A", + Ả: "A", + Å: "A", + Ǻ: "A", + Ǎ: "A", + Ȁ: "A", + Ȃ: "A", + Ạ: "A", + Ậ: "A", + Ặ: "A", + Ḁ: "A", + Ą: "A", + Ⱥ: "A", + Ɐ: "A", + Ꜳ: "AA", + Æ: "AE", + Ǽ: "AE", + Ǣ: "AE", + Ꜵ: "AO", + Ꜷ: "AU", + Ꜹ: "AV", + Ꜻ: "AV", + Ꜽ: "AY", + "Ⓑ": "B", + B: "B", + Ḃ: "B", + Ḅ: "B", + Ḇ: "B", + Ƀ: "B", + Ƃ: "B", + Ɓ: "B", + "Ⓒ": "C", + C: "C", + Ć: "C", + Ĉ: "C", + Ċ: "C", + Č: "C", + Ç: "C", + Ḉ: "C", + Ƈ: "C", + Ȼ: "C", + Ꜿ: "C", + "Ⓓ": "D", + D: "D", + Ḋ: "D", + Ď: "D", + Ḍ: "D", + Ḑ: "D", + Ḓ: "D", + Ḏ: "D", + Đ: "D", + Ƌ: "D", + Ɗ: "D", + Ɖ: "D", + Ꝺ: "D", + DZ: "DZ", + DŽ: "DZ", + Dz: "Dz", + Dž: "Dz", + "Ⓔ": "E", + E: "E", + È: "E", + É: "E", + Ê: "E", + Ề: "E", + Ế: "E", + Ễ: "E", + Ể: "E", + Ẽ: "E", + Ē: "E", + Ḕ: "E", + Ḗ: "E", + Ĕ: "E", + Ė: "E", + Ë: "E", + Ẻ: "E", + Ě: "E", + Ȅ: "E", + Ȇ: "E", + Ẹ: "E", + Ệ: "E", + Ȩ: "E", + Ḝ: "E", + Ę: "E", + Ḙ: "E", + Ḛ: "E", + Ɛ: "E", + Ǝ: "E", + "Ⓕ": "F", + F: "F", + Ḟ: "F", + Ƒ: "F", + Ꝼ: "F", + "Ⓖ": "G", + G: "G", + Ǵ: "G", + Ĝ: "G", + Ḡ: "G", + Ğ: "G", + Ġ: "G", + Ǧ: "G", + Ģ: "G", + Ǥ: "G", + Ɠ: "G", + Ꞡ: "G", + Ᵹ: "G", + Ꝿ: "G", + "Ⓗ": "H", + H: "H", + Ĥ: "H", + Ḣ: "H", + Ḧ: "H", + Ȟ: "H", + Ḥ: "H", + Ḩ: "H", + Ḫ: "H", + Ħ: "H", + Ⱨ: "H", + Ⱶ: "H", + Ɥ: "H", + "Ⓘ": "I", + I: "I", + Ì: "I", + Í: "I", + Î: "I", + Ĩ: "I", + Ī: "I", + Ĭ: "I", + İ: "I", + Ï: "I", + Ḯ: "I", + Ỉ: "I", + Ǐ: "I", + Ȉ: "I", + Ȋ: "I", + Ị: "I", + Į: "I", + Ḭ: "I", + Ɨ: "I", + "Ⓙ": "J", + J: "J", + Ĵ: "J", + Ɉ: "J", + "Ⓚ": "K", + K: "K", + Ḱ: "K", + Ǩ: "K", + Ḳ: "K", + Ķ: "K", + Ḵ: "K", + Ƙ: "K", + Ⱪ: "K", + Ꝁ: "K", + Ꝃ: "K", + Ꝅ: "K", + Ꞣ: "K", + "Ⓛ": "L", + L: "L", + Ŀ: "L", + Ĺ: "L", + Ľ: "L", + Ḷ: "L", + Ḹ: "L", + Ļ: "L", + Ḽ: "L", + Ḻ: "L", + Ł: "L", + Ƚ: "L", + Ɫ: "L", + Ⱡ: "L", + Ꝉ: "L", + Ꝇ: "L", + Ꞁ: "L", + LJ: "LJ", + Lj: "Lj", + "Ⓜ": "M", + M: "M", + Ḿ: "M", + Ṁ: "M", + Ṃ: "M", + Ɱ: "M", + Ɯ: "M", + "Ⓝ": "N", + N: "N", + Ǹ: "N", + Ń: "N", + Ñ: "N", + Ṅ: "N", + Ň: "N", + Ṇ: "N", + Ņ: "N", + Ṋ: "N", + Ṉ: "N", + Ƞ: "N", + Ɲ: "N", + Ꞑ: "N", + Ꞥ: "N", + NJ: "NJ", + Nj: "Nj", + "Ⓞ": "O", + O: "O", + Ò: "O", + Ó: "O", + Ô: "O", + Ồ: "O", + Ố: "O", + Ỗ: "O", + Ổ: "O", + Õ: "O", + Ṍ: "O", + Ȭ: "O", + Ṏ: "O", + Ō: "O", + Ṑ: "O", + Ṓ: "O", + Ŏ: "O", + Ȯ: "O", + Ȱ: "O", + Ö: "O", + Ȫ: "O", + Ỏ: "O", + Ő: "O", + Ǒ: "O", + Ȍ: "O", + Ȏ: "O", + Ơ: "O", + Ờ: "O", + Ớ: "O", + Ỡ: "O", + Ở: "O", + Ợ: "O", + Ọ: "O", + Ộ: "O", + Ǫ: "O", + Ǭ: "O", + Ø: "O", + Ǿ: "O", + Ɔ: "O", + Ɵ: "O", + Ꝋ: "O", + Ꝍ: "O", + Œ: "OE", + Ƣ: "OI", + Ꝏ: "OO", + Ȣ: "OU", + "Ⓟ": "P", + P: "P", + Ṕ: "P", + Ṗ: "P", + Ƥ: "P", + Ᵽ: "P", + Ꝑ: "P", + Ꝓ: "P", + Ꝕ: "P", + "Ⓠ": "Q", + Q: "Q", + Ꝗ: "Q", + Ꝙ: "Q", + Ɋ: "Q", + "Ⓡ": "R", + R: "R", + Ŕ: "R", + Ṙ: "R", + Ř: "R", + Ȑ: "R", + Ȓ: "R", + Ṛ: "R", + Ṝ: "R", + Ŗ: "R", + Ṟ: "R", + Ɍ: "R", + Ɽ: "R", + Ꝛ: "R", + Ꞧ: "R", + Ꞃ: "R", + "Ⓢ": "S", + S: "S", + ẞ: "S", + Ś: "S", + Ṥ: "S", + Ŝ: "S", + Ṡ: "S", + Š: "S", + Ṧ: "S", + Ṣ: "S", + Ṩ: "S", + Ș: "S", + Ş: "S", + Ȿ: "S", + Ꞩ: "S", + Ꞅ: "S", + "Ⓣ": "T", + T: "T", + Ṫ: "T", + Ť: "T", + Ṭ: "T", + Ț: "T", + Ţ: "T", + Ṱ: "T", + Ṯ: "T", + Ŧ: "T", + Ƭ: "T", + Ʈ: "T", + Ⱦ: "T", + Ꞇ: "T", + Ꜩ: "TZ", + "Ⓤ": "U", + U: "U", + Ù: "U", + Ú: "U", + Û: "U", + Ũ: "U", + Ṹ: "U", + Ū: "U", + Ṻ: "U", + Ŭ: "U", + Ü: "U", + Ǜ: "U", + Ǘ: "U", + Ǖ: "U", + Ǚ: "U", + Ủ: "U", + Ů: "U", + Ű: "U", + Ǔ: "U", + Ȕ: "U", + Ȗ: "U", + Ư: "U", + Ừ: "U", + Ứ: "U", + Ữ: "U", + Ử: "U", + Ự: "U", + Ụ: "U", + Ṳ: "U", + Ų: "U", + Ṷ: "U", + Ṵ: "U", + Ʉ: "U", + "Ⓥ": "V", + V: "V", + Ṽ: "V", + Ṿ: "V", + Ʋ: "V", + Ꝟ: "V", + Ʌ: "V", + Ꝡ: "VY", + "Ⓦ": "W", + W: "W", + Ẁ: "W", + Ẃ: "W", + Ŵ: "W", + Ẇ: "W", + Ẅ: "W", + Ẉ: "W", + Ⱳ: "W", + "Ⓧ": "X", + X: "X", + Ẋ: "X", + Ẍ: "X", + "Ⓨ": "Y", + Y: "Y", + Ỳ: "Y", + Ý: "Y", + Ŷ: "Y", + Ỹ: "Y", + Ȳ: "Y", + Ẏ: "Y", + Ÿ: "Y", + Ỷ: "Y", + Ỵ: "Y", + Ƴ: "Y", + Ɏ: "Y", + Ỿ: "Y", + "Ⓩ": "Z", + Z: "Z", + Ź: "Z", + Ẑ: "Z", + Ż: "Z", + Ž: "Z", + Ẓ: "Z", + Ẕ: "Z", + Ƶ: "Z", + Ȥ: "Z", + Ɀ: "Z", + Ⱬ: "Z", + Ꝣ: "Z", + "ⓐ": "a", + a: "a", + ẚ: "a", + à: "a", + á: "a", + â: "a", + ầ: "a", + ấ: "a", + ẫ: "a", + ẩ: "a", + ã: "a", + ā: "a", + ă: "a", + ằ: "a", + ắ: "a", + ẵ: "a", + ẳ: "a", + ȧ: "a", + ǡ: "a", + ä: "a", + ǟ: "a", + ả: "a", + å: "a", + ǻ: "a", + ǎ: "a", + ȁ: "a", + ȃ: "a", + ạ: "a", + ậ: "a", + ặ: "a", + ḁ: "a", + ą: "a", + ⱥ: "a", + ɐ: "a", + ꜳ: "aa", + æ: "ae", + ǽ: "ae", + ǣ: "ae", + ꜵ: "ao", + ꜷ: "au", + ꜹ: "av", + ꜻ: "av", + ꜽ: "ay", + "ⓑ": "b", + b: "b", + ḃ: "b", + ḅ: "b", + ḇ: "b", + ƀ: "b", + ƃ: "b", + ɓ: "b", + "ⓒ": "c", + c: "c", + ć: "c", + ĉ: "c", + ċ: "c", + č: "c", + ç: "c", + ḉ: "c", + ƈ: "c", + ȼ: "c", + ꜿ: "c", + ↄ: "c", + "ⓓ": "d", + d: "d", + ḋ: "d", + ď: "d", + ḍ: "d", + ḑ: "d", + ḓ: "d", + ḏ: "d", + đ: "d", + ƌ: "d", + ɖ: "d", + ɗ: "d", + ꝺ: "d", + dz: "dz", + dž: "dz", + "ⓔ": "e", + e: "e", + è: "e", + é: "e", + ê: "e", + ề: "e", + ế: "e", + ễ: "e", + ể: "e", + ẽ: "e", + ē: "e", + ḕ: "e", + ḗ: "e", + ĕ: "e", + ė: "e", + ë: "e", + ẻ: "e", + ě: "e", + ȅ: "e", + ȇ: "e", + ẹ: "e", + ệ: "e", + ȩ: "e", + ḝ: "e", + ę: "e", + ḙ: "e", + ḛ: "e", + ɇ: "e", + ɛ: "e", + ǝ: "e", + "ⓕ": "f", + f: "f", + ḟ: "f", + ƒ: "f", + ꝼ: "f", + "ⓖ": "g", + g: "g", + ǵ: "g", + ĝ: "g", + ḡ: "g", + ğ: "g", + ġ: "g", + ǧ: "g", + ģ: "g", + ǥ: "g", + ɠ: "g", + ꞡ: "g", + ᵹ: "g", + ꝿ: "g", + "ⓗ": "h", + h: "h", + ĥ: "h", + ḣ: "h", + ḧ: "h", + ȟ: "h", + ḥ: "h", + ḩ: "h", + ḫ: "h", + ẖ: "h", + ħ: "h", + ⱨ: "h", + ⱶ: "h", + ɥ: "h", + ƕ: "hv", + "ⓘ": "i", + i: "i", + ì: "i", + í: "i", + î: "i", + ĩ: "i", + ī: "i", + ĭ: "i", + ï: "i", + ḯ: "i", + ỉ: "i", + ǐ: "i", + ȉ: "i", + ȋ: "i", + ị: "i", + į: "i", + ḭ: "i", + ɨ: "i", + ı: "i", + "ⓙ": "j", + j: "j", + ĵ: "j", + ǰ: "j", + ɉ: "j", + "ⓚ": "k", + k: "k", + ḱ: "k", + ǩ: "k", + ḳ: "k", + ķ: "k", + ḵ: "k", + ƙ: "k", + ⱪ: "k", + ꝁ: "k", + ꝃ: "k", + ꝅ: "k", + ꞣ: "k", + "ⓛ": "l", + l: "l", + ŀ: "l", + ĺ: "l", + ľ: "l", + ḷ: "l", + ḹ: "l", + ļ: "l", + ḽ: "l", + ḻ: "l", + ſ: "l", + ł: "l", + ƚ: "l", + ɫ: "l", + ⱡ: "l", + ꝉ: "l", + ꞁ: "l", + ꝇ: "l", + lj: "lj", + "ⓜ": "m", + m: "m", + ḿ: "m", + ṁ: "m", + ṃ: "m", + ɱ: "m", + ɯ: "m", + "ⓝ": "n", + n: "n", + ǹ: "n", + ń: "n", + ñ: "n", + ṅ: "n", + ň: "n", + ṇ: "n", + ņ: "n", + ṋ: "n", + ṉ: "n", + ƞ: "n", + ɲ: "n", + ʼn: "n", + ꞑ: "n", + ꞥ: "n", + nj: "nj", + "ⓞ": "o", + o: "o", + ò: "o", + ó: "o", + ô: "o", + ồ: "o", + ố: "o", + ỗ: "o", + ổ: "o", + õ: "o", + ṍ: "o", + ȭ: "o", + ṏ: "o", + ō: "o", + ṑ: "o", + ṓ: "o", + ŏ: "o", + ȯ: "o", + ȱ: "o", + ö: "o", + ȫ: "o", + ỏ: "o", + ő: "o", + ǒ: "o", + ȍ: "o", + ȏ: "o", + ơ: "o", + ờ: "o", + ớ: "o", + ỡ: "o", + ở: "o", + ợ: "o", + ọ: "o", + ộ: "o", + ǫ: "o", + ǭ: "o", + ø: "o", + ǿ: "o", + ɔ: "o", + ꝋ: "o", + ꝍ: "o", + ɵ: "o", + œ: "oe", + ƣ: "oi", + ȣ: "ou", + ꝏ: "oo", + "ⓟ": "p", + p: "p", + ṕ: "p", + ṗ: "p", + ƥ: "p", + ᵽ: "p", + ꝑ: "p", + ꝓ: "p", + ꝕ: "p", + "ⓠ": "q", + q: "q", + ɋ: "q", + ꝗ: "q", + ꝙ: "q", + "ⓡ": "r", + r: "r", + ŕ: "r", + ṙ: "r", + ř: "r", + ȑ: "r", + ȓ: "r", + ṛ: "r", + ṝ: "r", + ŗ: "r", + ṟ: "r", + ɍ: "r", + ɽ: "r", + ꝛ: "r", + ꞧ: "r", + ꞃ: "r", + "ⓢ": "s", + s: "s", + ß: "s", + ś: "s", + ṥ: "s", + ŝ: "s", + ṡ: "s", + š: "s", + ṧ: "s", + ṣ: "s", + ṩ: "s", + ș: "s", + ş: "s", + ȿ: "s", + ꞩ: "s", + ꞅ: "s", + ẛ: "s", + "ⓣ": "t", + t: "t", + ṫ: "t", + ẗ: "t", + ť: "t", + ṭ: "t", + ț: "t", + ţ: "t", + ṱ: "t", + ṯ: "t", + ŧ: "t", + ƭ: "t", + ʈ: "t", + ⱦ: "t", + ꞇ: "t", + ꜩ: "tz", + "ⓤ": "u", + u: "u", + ù: "u", + ú: "u", + û: "u", + ũ: "u", + ṹ: "u", + ū: "u", + ṻ: "u", + ŭ: "u", + ü: "u", + ǜ: "u", + ǘ: "u", + ǖ: "u", + ǚ: "u", + ủ: "u", + ů: "u", + ű: "u", + ǔ: "u", + ȕ: "u", + ȗ: "u", + ư: "u", + ừ: "u", + ứ: "u", + ữ: "u", + ử: "u", + ự: "u", + ụ: "u", + ṳ: "u", + ų: "u", + ṷ: "u", + ṵ: "u", + ʉ: "u", + "ⓥ": "v", + v: "v", + ṽ: "v", + ṿ: "v", + ʋ: "v", + ꝟ: "v", + ʌ: "v", + ꝡ: "vy", + "ⓦ": "w", + w: "w", + ẁ: "w", + ẃ: "w", + ŵ: "w", + ẇ: "w", + ẅ: "w", + ẘ: "w", + ẉ: "w", + ⱳ: "w", + "ⓧ": "x", + x: "x", + ẋ: "x", + ẍ: "x", + "ⓨ": "y", + y: "y", + ỳ: "y", + ý: "y", + ŷ: "y", + ỹ: "y", + ȳ: "y", + ẏ: "y", + ÿ: "y", + ỷ: "y", + ẙ: "y", + ỵ: "y", + ƴ: "y", + ɏ: "y", + ỿ: "y", + "ⓩ": "z", + z: "z", + ź: "z", + ẑ: "z", + ż: "z", + ž: "z", + ẓ: "z", + ẕ: "z", + ƶ: "z", + ȥ: "z", + ɀ: "z", + ⱬ: "z", + ꝣ: "z", + Ά: "Α", + Έ: "Ε", + Ή: "Η", + Ί: "Ι", + Ϊ: "Ι", + Ό: "Ο", + Ύ: "Υ", + Ϋ: "Υ", + Ώ: "Ω", + ά: "α", + έ: "ε", + ή: "η", + ί: "ι", + ϊ: "ι", + ΐ: "ι", + ό: "ο", + ύ: "υ", + ϋ: "υ", + ΰ: "υ", + ώ: "ω", + ς: "σ", + "’": "'", + }; + }), + e.define("select2/data/base", ["../utils"], function (r) { + function n(e, t) { + n.__super__.constructor.call(this); + } + return ( + r.Extend(n, r.Observable), + (n.prototype.current = function (e) { + throw new Error( + "The `current` method must be defined in child classes." + ); + }), + (n.prototype.query = function (e, t) { + throw new Error( + "The `query` method must be defined in child classes." + ); + }), + (n.prototype.bind = function (e, t) {}), + (n.prototype.destroy = function () {}), + (n.prototype.generateResultId = function (e, t) { + var n = e.id + "-result-"; + return ( + (n += r.generateChars(4)), + null != t.id + ? (n += "-" + t.id.toString()) + : (n += "-" + r.generateChars(4)), + n + ); + }), + n + ); + }), + e.define( + "select2/data/select", + ["./base", "../utils", "jquery"], + function (e, a, l) { + function n(e, t) { + (this.$element = e), + (this.options = t), + n.__super__.constructor.call(this); + } + return ( + a.Extend(n, e), + (n.prototype.current = function (e) { + var n = [], + r = this; + this.$element.find(":selected").each(function () { + var e = l(this), + t = r.item(e); + n.push(t); + }), + e(n); + }), + (n.prototype.select = function (i) { + var o = this; + if (((i.selected = !0), l(i.element).is("option"))) + return ( + (i.element.selected = !0), + void this.$element.trigger("input").trigger("change") + ); + if (this.$element.prop("multiple")) + this.current(function (e) { + var t = []; + (i = [i]).push.apply(i, e); + for (var n = 0; n < i.length; n++) { + var r = i[n].id; + -1 === l.inArray(r, t) && t.push(r); + } + o.$element.val(t), + o.$element.trigger("input").trigger("change"); + }); + else { + var e = i.id; + this.$element.val(e), + this.$element.trigger("input").trigger("change"); + } + }), + (n.prototype.unselect = function (i) { + var o = this; + if (this.$element.prop("multiple")) { + if (((i.selected = !1), l(i.element).is("option"))) + return ( + (i.element.selected = !1), + void this.$element.trigger("input").trigger("change") + ); + this.current(function (e) { + for (var t = [], n = 0; n < e.length; n++) { + var r = e[n].id; + r !== i.id && -1 === l.inArray(r, t) && t.push(r); + } + o.$element.val(t), + o.$element.trigger("input").trigger("change"); + }); + } + }), + (n.prototype.bind = function (e, t) { + var n = this; + (this.container = e).on("select", function (e) { + n.select(e.data); + }), + e.on("unselect", function (e) { + n.unselect(e.data); + }); + }), + (n.prototype.destroy = function () { + this.$element.find("*").each(function () { + a.RemoveData(this); + }); + }), + (n.prototype.query = function (r, e) { + var i = [], + o = this; + this.$element.children().each(function () { + var e = l(this); + if (e.is("option") || e.is("optgroup")) { + var t = o.item(e), + n = o.matches(r, t); + null !== n && i.push(n); + } + }), + e({ results: i }); + }), + (n.prototype.addOptions = function (e) { + a.appendMany(this.$element, e); + }), + (n.prototype.option = function (e) { + var t; + e.children + ? ((t = document.createElement("optgroup")).label = e.text) + : void 0 !== + (t = document.createElement("option")).textContent + ? (t.textContent = e.text) + : (t.innerText = e.text), + void 0 !== e.id && (t.value = e.id), + e.disabled && (t.disabled = !0), + e.selected && (t.selected = !0), + e.title && (t.title = e.title); + var n = l(t), + r = this._normalizeItem(e); + return (r.element = t), a.StoreData(t, "data", r), n; + }), + (n.prototype.item = function (e) { + var t = {}; + if (null != (t = a.GetData(e[0], "data"))) return t; + if (e.is("option")) + t = { + id: e.val(), + text: e.text(), + disabled: e.prop("disabled"), + selected: e.prop("selected"), + title: e.prop("title"), + }; + else if (e.is("optgroup")) { + t = { + text: e.prop("label"), + children: [], + title: e.prop("title"), + }; + for ( + var n = e.children("option"), r = [], i = 0; + i < n.length; + i++ + ) { + var o = l(n[i]), + s = this.item(o); + r.push(s); + } + t.children = r; + } + return ( + ((t = this._normalizeItem(t)).element = e[0]), + a.StoreData(e[0], "data", t), + t + ); + }), + (n.prototype._normalizeItem = function (e) { + e !== Object(e) && (e = { id: e, text: e }); + return ( + null != (e = l.extend({}, { text: "" }, e)).id && + (e.id = e.id.toString()), + null != e.text && (e.text = e.text.toString()), + null == e._resultId && + e.id && + null != this.container && + (e._resultId = this.generateResultId(this.container, e)), + l.extend({}, { selected: !1, disabled: !1 }, e) + ); + }), + (n.prototype.matches = function (e, t) { + return this.options.get("matcher")(e, t); + }), + n + ); + } + ), + e.define( + "select2/data/array", + ["./select", "../utils", "jquery"], + function (e, f, g) { + function r(e, t) { + (this._dataToConvert = t.get("data") || []), + r.__super__.constructor.call(this, e, t); + } + return ( + f.Extend(r, e), + (r.prototype.bind = function (e, t) { + r.__super__.bind.call(this, e, t), + this.addOptions(this.convertToOptions(this._dataToConvert)); + }), + (r.prototype.select = function (n) { + var e = this.$element.find("option").filter(function (e, t) { + return t.value == n.id.toString(); + }); + 0 === e.length && ((e = this.option(n)), this.addOptions(e)), + r.__super__.select.call(this, n); + }), + (r.prototype.convertToOptions = function (e) { + var t = this, + n = this.$element.find("option"), + r = n + .map(function () { + return t.item(g(this)).id; + }) + .get(), + i = []; + function o(e) { + return function () { + return g(this).val() == e.id; + }; + } + for (var s = 0; s < e.length; s++) { + var a = this._normalizeItem(e[s]); + if (0 <= g.inArray(a.id, r)) { + var l = n.filter(o(a)), + c = this.item(l), + u = g.extend(!0, {}, a, c), + d = this.option(u); + l.replaceWith(d); + } else { + var p = this.option(a); + if (a.children) { + var h = this.convertToOptions(a.children); + f.appendMany(p, h); + } + i.push(p); + } + } + return i; + }), + r + ); + } + ), + e.define( + "select2/data/ajax", + ["./array", "../utils", "jquery"], + function (e, t, o) { + function n(e, t) { + (this.ajaxOptions = this._applyDefaults(t.get("ajax"))), + null != this.ajaxOptions.processResults && + (this.processResults = this.ajaxOptions.processResults), + n.__super__.constructor.call(this, e, t); + } + return ( + t.Extend(n, e), + (n.prototype._applyDefaults = function (e) { + var t = { + data: function (e) { + return o.extend({}, e, { q: e.term }); + }, + transport: function (e, t, n) { + var r = o.ajax(e); + return r.then(t), r.fail(n), r; + }, + }; + return o.extend({}, t, e, !0); + }), + (n.prototype.processResults = function (e) { + return e; + }), + (n.prototype.query = function (n, r) { + var i = this; + null != this._request && + (o.isFunction(this._request.abort) && this._request.abort(), + (this._request = null)); + var t = o.extend({ type: "GET" }, this.ajaxOptions); + function e() { + var e = t.transport( + t, + function (e) { + var t = i.processResults(e, n); + i.options.get("debug") && + window.console && + console.error && + ((t && t.results && o.isArray(t.results)) || + console.error( + "Select2: The AJAX results did not return an array in the `results` key of the response." + )), + r(t); + }, + function () { + ("status" in e && (0 === e.status || "0" === e.status)) || + i.trigger("results:message", { + message: "errorLoading", + }); + } + ); + i._request = e; + } + "function" == typeof t.url && + (t.url = t.url.call(this.$element, n)), + "function" == typeof t.data && + (t.data = t.data.call(this.$element, n)), + this.ajaxOptions.delay && null != n.term + ? (this._queryTimeout && + window.clearTimeout(this._queryTimeout), + (this._queryTimeout = window.setTimeout( + e, + this.ajaxOptions.delay + ))) + : e(); + }), + n + ); + } + ), + e.define("select2/data/tags", ["jquery"], function (u) { + function e(e, t, n) { + var r = n.get("tags"), + i = n.get("createTag"); + void 0 !== i && (this.createTag = i); + var o = n.get("insertTag"); + if ( + (void 0 !== o && (this.insertTag = o), + e.call(this, t, n), + u.isArray(r)) + ) + for (var s = 0; s < r.length; s++) { + var a = r[s], + l = this._normalizeItem(a), + c = this.option(l); + this.$element.append(c); + } + } + return ( + (e.prototype.query = function (e, c, u) { + var d = this; + this._removeOldTags(), + null != c.term && null == c.page + ? e.call(this, c, function e(t, n) { + for (var r = t.results, i = 0; i < r.length; i++) { + var o = r[i], + s = + null != o.children && + !e({ results: o.children }, !0); + if ( + (o.text || "").toUpperCase() === + (c.term || "").toUpperCase() || + s + ) + return !n && ((t.data = r), void u(t)); + } + if (n) return !0; + var a = d.createTag(c); + if (null != a) { + var l = d.option(a); + l.attr("data-select2-tag", !0), + d.addOptions([l]), + d.insertTag(r, a); + } + (t.results = r), u(t); + }) + : e.call(this, c, u); + }), + (e.prototype.createTag = function (e, t) { + var n = u.trim(t.term); + return "" === n ? null : { id: n, text: n }; + }), + (e.prototype.insertTag = function (e, t, n) { + t.unshift(n); + }), + (e.prototype._removeOldTags = function (e) { + this.$element.find("option[data-select2-tag]").each(function () { + this.selected || u(this).remove(); + }); + }), + e + ); + }), + e.define("select2/data/tokenizer", ["jquery"], function (d) { + function e(e, t, n) { + var r = n.get("tokenizer"); + void 0 !== r && (this.tokenizer = r), e.call(this, t, n); + } + return ( + (e.prototype.bind = function (e, t, n) { + e.call(this, t, n), + (this.$search = + t.dropdown.$search || + t.selection.$search || + n.find(".select2-search__field")); + }), + (e.prototype.query = function (e, t, n) { + var i = this; + t.term = t.term || ""; + var r = this.tokenizer(t, this.options, function (e) { + var t, + n = i._normalizeItem(e); + if ( + !i.$element.find("option").filter(function () { + return d(this).val() === n.id; + }).length + ) { + var r = i.option(n); + r.attr("data-select2-tag", !0), + i._removeOldTags(), + i.addOptions([r]); + } + (t = n), i.trigger("select", { data: t }); + }); + r.term !== t.term && + (this.$search.length && + (this.$search.val(r.term), this.$search.trigger("focus")), + (t.term = r.term)), + e.call(this, t, n); + }), + (e.prototype.tokenizer = function (e, t, n, r) { + for ( + var i = n.get("tokenSeparators") || [], + o = t.term, + s = 0, + a = + this.createTag || + function (e) { + return { id: e.term, text: e.term }; + }; + s < o.length; + + ) { + var l = o[s]; + if (-1 !== d.inArray(l, i)) { + var c = o.substr(0, s), + u = a(d.extend({}, t, { term: c })); + null != u + ? (r(u), (o = o.substr(s + 1) || ""), (s = 0)) + : s++; + } else s++; + } + return { term: o }; + }), + e + ); + }), + e.define("select2/data/minimumInputLength", [], function () { + function e(e, t, n) { + (this.minimumInputLength = n.get("minimumInputLength")), + e.call(this, t, n); + } + return ( + (e.prototype.query = function (e, t, n) { + (t.term = t.term || ""), + t.term.length < this.minimumInputLength + ? this.trigger("results:message", { + message: "inputTooShort", + args: { + minimum: this.minimumInputLength, + input: t.term, + params: t, + }, + }) + : e.call(this, t, n); + }), + e + ); + }), + e.define("select2/data/maximumInputLength", [], function () { + function e(e, t, n) { + (this.maximumInputLength = n.get("maximumInputLength")), + e.call(this, t, n); + } + return ( + (e.prototype.query = function (e, t, n) { + (t.term = t.term || ""), + 0 < this.maximumInputLength && + t.term.length > this.maximumInputLength + ? this.trigger("results:message", { + message: "inputTooLong", + args: { + maximum: this.maximumInputLength, + input: t.term, + params: t, + }, + }) + : e.call(this, t, n); + }), + e + ); + }), + e.define("select2/data/maximumSelectionLength", [], function () { + function e(e, t, n) { + (this.maximumSelectionLength = n.get("maximumSelectionLength")), + e.call(this, t, n); + } + return ( + (e.prototype.bind = function (e, t, n) { + var r = this; + e.call(this, t, n), + t.on("select", function () { + r._checkIfMaximumSelected(); + }); + }), + (e.prototype.query = function (e, t, n) { + var r = this; + this._checkIfMaximumSelected(function () { + e.call(r, t, n); + }); + }), + (e.prototype._checkIfMaximumSelected = function (e, n) { + var r = this; + this.current(function (e) { + var t = null != e ? e.length : 0; + 0 < r.maximumSelectionLength && t >= r.maximumSelectionLength + ? r.trigger("results:message", { + message: "maximumSelected", + args: { maximum: r.maximumSelectionLength }, + }) + : n && n(); + }); + }), + e + ); + }), + e.define("select2/dropdown", ["jquery", "./utils"], function (t, e) { + function n(e, t) { + (this.$element = e), + (this.options = t), + n.__super__.constructor.call(this); + } + return ( + e.Extend(n, e.Observable), + (n.prototype.render = function () { + var e = t( + '' + ); + return ( + e.attr("dir", this.options.get("dir")), (this.$dropdown = e) + ); + }), + (n.prototype.bind = function () {}), + (n.prototype.position = function (e, t) {}), + (n.prototype.destroy = function () { + this.$dropdown.remove(); + }), + n + ); + }), + e.define( + "select2/dropdown/search", + ["jquery", "../utils"], + function (o, e) { + function t() {} + return ( + (t.prototype.render = function (e) { + var t = e.call(this), + n = o( + '' + ); + return ( + (this.$searchContainer = n), + (this.$search = n.find("input")), + t.prepend(n), + t + ); + }), + (t.prototype.bind = function (e, t, n) { + var r = this, + i = t.id + "-results"; + e.call(this, t, n), + this.$search.on("keydown", function (e) { + r.trigger("keypress", e), + (r._keyUpPrevented = e.isDefaultPrevented()); + }), + this.$search.on("input", function (e) { + o(this).off("keyup"); + }), + this.$search.on("keyup input", function (e) { + r.handleSearch(e); + }), + t.on("open", function () { + r.$search.attr("tabindex", 0), + r.$search.attr("aria-controls", i), + r.$search.trigger("focus"), + window.setTimeout(function () { + r.$search.trigger("focus"); + }, 0); + }), + t.on("close", function () { + r.$search.attr("tabindex", -1), + r.$search.removeAttr("aria-controls"), + r.$search.removeAttr("aria-activedescendant"), + r.$search.val(""), + r.$search.trigger("blur"); + }), + t.on("focus", function () { + t.isOpen() || r.$search.trigger("focus"); + }), + t.on("results:all", function (e) { + (null != e.query.term && "" !== e.query.term) || + (r.showSearch(e) + ? r.$searchContainer.removeClass("select2-search--hide") + : r.$searchContainer.addClass("select2-search--hide")); + }), + t.on("results:focus", function (e) { + e.data._resultId + ? r.$search.attr( + "aria-activedescendant", + e.data._resultId + ) + : r.$search.removeAttr("aria-activedescendant"); + }); + }), + (t.prototype.handleSearch = function (e) { + if (!this._keyUpPrevented) { + var t = this.$search.val(); + this.trigger("query", { term: t }); + } + this._keyUpPrevented = !1; + }), + (t.prototype.showSearch = function (e, t) { + return !0; + }), + t + ); + } + ), + e.define("select2/dropdown/hidePlaceholder", [], function () { + function e(e, t, n, r) { + (this.placeholder = this.normalizePlaceholder( + n.get("placeholder") + )), + e.call(this, t, n, r); + } + return ( + (e.prototype.append = function (e, t) { + (t.results = this.removePlaceholder(t.results)), e.call(this, t); + }), + (e.prototype.normalizePlaceholder = function (e, t) { + return "string" == typeof t && (t = { id: "", text: t }), t; + }), + (e.prototype.removePlaceholder = function (e, t) { + for (var n = t.slice(0), r = t.length - 1; 0 <= r; r--) { + var i = t[r]; + this.placeholder.id === i.id && n.splice(r, 1); + } + return n; + }), + e + ); + }), + e.define("select2/dropdown/infiniteScroll", ["jquery"], function (n) { + function e(e, t, n, r) { + (this.lastParams = {}), + e.call(this, t, n, r), + (this.$loadingMore = this.createLoadingMore()), + (this.loading = !1); + } + return ( + (e.prototype.append = function (e, t) { + this.$loadingMore.remove(), + (this.loading = !1), + e.call(this, t), + this.showLoadingMore(t) && + (this.$results.append(this.$loadingMore), + this.loadMoreIfNeeded()); + }), + (e.prototype.bind = function (e, t, n) { + var r = this; + e.call(this, t, n), + t.on("query", function (e) { + (r.lastParams = e), (r.loading = !0); + }), + t.on("query:append", function (e) { + (r.lastParams = e), (r.loading = !0); + }), + this.$results.on("scroll", this.loadMoreIfNeeded.bind(this)); + }), + (e.prototype.loadMoreIfNeeded = function () { + var e = n.contains( + document.documentElement, + this.$loadingMore[0] + ); + if (!this.loading && e) { + var t = + this.$results.offset().top + this.$results.outerHeight(!1); + this.$loadingMore.offset().top + + this.$loadingMore.outerHeight(!1) <= + t + 50 && this.loadMore(); + } + }), + (e.prototype.loadMore = function () { + this.loading = !0; + var e = n.extend({}, { page: 1 }, this.lastParams); + e.page++, this.trigger("query:append", e); + }), + (e.prototype.showLoadingMore = function (e, t) { + return t.pagination && t.pagination.more; + }), + (e.prototype.createLoadingMore = function () { + var e = n( + '
      • ' + ), + t = this.options.get("translations").get("loadingMore"); + return e.html(t(this.lastParams)), e; + }), + e + ); + }), + e.define( + "select2/dropdown/attachBody", + ["jquery", "../utils"], + function (f, a) { + function e(e, t, n) { + (this.$dropdownParent = f( + n.get("dropdownParent") || document.body + )), + e.call(this, t, n); + } + return ( + (e.prototype.bind = function (e, t, n) { + var r = this; + e.call(this, t, n), + t.on("open", function () { + r._showDropdown(), + r._attachPositioningHandler(t), + r._bindContainerResultHandlers(t); + }), + t.on("close", function () { + r._hideDropdown(), r._detachPositioningHandler(t); + }), + this.$dropdownContainer.on("mousedown", function (e) { + e.stopPropagation(); + }); + }), + (e.prototype.destroy = function (e) { + e.call(this), this.$dropdownContainer.remove(); + }), + (e.prototype.position = function (e, t, n) { + t.attr("class", n.attr("class")), + t.removeClass("select2"), + t.addClass("select2-container--open"), + t.css({ position: "absolute", top: -999999 }), + (this.$container = n); + }), + (e.prototype.render = function (e) { + var t = f(""), + n = e.call(this); + return t.append(n), (this.$dropdownContainer = t); + }), + (e.prototype._hideDropdown = function (e) { + this.$dropdownContainer.detach(); + }), + (e.prototype._bindContainerResultHandlers = function (e, t) { + if (!this._containerResultsHandlersBound) { + var n = this; + t.on("results:all", function () { + n._positionDropdown(), n._resizeDropdown(); + }), + t.on("results:append", function () { + n._positionDropdown(), n._resizeDropdown(); + }), + t.on("results:message", function () { + n._positionDropdown(), n._resizeDropdown(); + }), + t.on("select", function () { + n._positionDropdown(), n._resizeDropdown(); + }), + t.on("unselect", function () { + n._positionDropdown(), n._resizeDropdown(); + }), + (this._containerResultsHandlersBound = !0); + } + }), + (e.prototype._attachPositioningHandler = function (e, t) { + var n = this, + r = "scroll.select2." + t.id, + i = "resize.select2." + t.id, + o = "orientationchange.select2." + t.id, + s = this.$container.parents().filter(a.hasScroll); + s.each(function () { + a.StoreData(this, "select2-scroll-position", { + x: f(this).scrollLeft(), + y: f(this).scrollTop(), + }); + }), + s.on(r, function (e) { + var t = a.GetData(this, "select2-scroll-position"); + f(this).scrollTop(t.y); + }), + f(window).on(r + " " + i + " " + o, function (e) { + n._positionDropdown(), n._resizeDropdown(); + }); + }), + (e.prototype._detachPositioningHandler = function (e, t) { + var n = "scroll.select2." + t.id, + r = "resize.select2." + t.id, + i = "orientationchange.select2." + t.id; + this.$container.parents().filter(a.hasScroll).off(n), + f(window).off(n + " " + r + " " + i); + }), + (e.prototype._positionDropdown = function () { + var e = f(window), + t = this.$dropdown.hasClass("select2-dropdown--above"), + n = this.$dropdown.hasClass("select2-dropdown--below"), + r = null, + i = this.$container.offset(); + i.bottom = i.top + this.$container.outerHeight(!1); + var o = { height: this.$container.outerHeight(!1) }; + (o.top = i.top), (o.bottom = i.top + o.height); + var s = this.$dropdown.outerHeight(!1), + a = e.scrollTop(), + l = e.scrollTop() + e.height(), + c = a < i.top - s, + u = l > i.bottom + s, + d = { left: i.left, top: o.bottom }, + p = this.$dropdownParent; + "static" === p.css("position") && (p = p.offsetParent()); + var h = { top: 0, left: 0 }; + (f.contains(document.body, p[0]) || p[0].isConnected) && + (h = p.offset()), + (d.top -= h.top), + (d.left -= h.left), + t || n || (r = "below"), + u || !c || t ? !c && u && t && (r = "below") : (r = "above"), + ("above" == r || (t && "below" !== r)) && + (d.top = o.top - h.top - s), + null != r && + (this.$dropdown + .removeClass( + "select2-dropdown--below select2-dropdown--above" + ) + .addClass("select2-dropdown--" + r), + this.$container + .removeClass( + "select2-container--below select2-container--above" + ) + .addClass("select2-container--" + r)), + this.$dropdownContainer.css(d); + }), + (e.prototype._resizeDropdown = function () { + var e = { width: this.$container.outerWidth(!1) + "px" }; + this.options.get("dropdownAutoWidth") && + ((e.minWidth = e.width), + (e.position = "relative"), + (e.width = "auto")), + this.$dropdown.css(e); + }), + (e.prototype._showDropdown = function (e) { + this.$dropdownContainer.appendTo(this.$dropdownParent), + this._positionDropdown(), + this._resizeDropdown(); + }), + e + ); + } + ), + e.define("select2/dropdown/minimumResultsForSearch", [], function () { + function e(e, t, n, r) { + (this.minimumResultsForSearch = n.get("minimumResultsForSearch")), + this.minimumResultsForSearch < 0 && + (this.minimumResultsForSearch = 1 / 0), + e.call(this, t, n, r); + } + return ( + (e.prototype.showSearch = function (e, t) { + return ( + !( + (function e(t) { + for (var n = 0, r = 0; r < t.length; r++) { + var i = t[r]; + i.children ? (n += e(i.children)) : n++; + } + return n; + })(t.data.results) < this.minimumResultsForSearch + ) && e.call(this, t) + ); + }), + e + ); + }), + e.define("select2/dropdown/selectOnClose", ["../utils"], function (o) { + function e() {} + return ( + (e.prototype.bind = function (e, t, n) { + var r = this; + e.call(this, t, n), + t.on("close", function (e) { + r._handleSelectOnClose(e); + }); + }), + (e.prototype._handleSelectOnClose = function (e, t) { + if (t && null != t.originalSelect2Event) { + var n = t.originalSelect2Event; + if ("select" === n._type || "unselect" === n._type) return; + } + var r = this.getHighlightedResults(); + if (!(r.length < 1)) { + var i = o.GetData(r[0], "data"); + (null != i.element && i.element.selected) || + (null == i.element && i.selected) || + this.trigger("select", { data: i }); + } + }), + e + ); + }), + e.define("select2/dropdown/closeOnSelect", [], function () { + function e() {} + return ( + (e.prototype.bind = function (e, t, n) { + var r = this; + e.call(this, t, n), + t.on("select", function (e) { + r._selectTriggered(e); + }), + t.on("unselect", function (e) { + r._selectTriggered(e); + }); + }), + (e.prototype._selectTriggered = function (e, t) { + var n = t.originalEvent; + (n && (n.ctrlKey || n.metaKey)) || + this.trigger("close", { + originalEvent: n, + originalSelect2Event: t, + }); + }), + e + ); + }), + e.define("select2/i18n/en", [], function () { + return { + errorLoading: function () { + return "The results could not be loaded."; + }, + inputTooLong: function (e) { + var t = e.input.length - e.maximum, + n = "Please delete " + t + " character"; + return 1 != t && (n += "s"), n; + }, + inputTooShort: function (e) { + return ( + "Please enter " + + (e.minimum - e.input.length) + + " or more characters" + ); + }, + loadingMore: function () { + return "Loading more results…"; + }, + maximumSelected: function (e) { + var t = "You can only select " + e.maximum + " item"; + return 1 != e.maximum && (t += "s"), t; + }, + noResults: function () { + return "No results found"; + }, + searching: function () { + return "Searching…"; + }, + removeAllItems: function () { + return "Remove all items"; + }, + }; + }), + e.define( + "select2/defaults", + [ + "jquery", + "require", + "./results", + "./selection/single", + "./selection/multiple", + "./selection/placeholder", + "./selection/allowClear", + "./selection/search", + "./selection/eventRelay", + "./utils", + "./translation", + "./diacritics", + "./data/select", + "./data/array", + "./data/ajax", + "./data/tags", + "./data/tokenizer", + "./data/minimumInputLength", + "./data/maximumInputLength", + "./data/maximumSelectionLength", + "./dropdown", + "./dropdown/search", + "./dropdown/hidePlaceholder", + "./dropdown/infiniteScroll", + "./dropdown/attachBody", + "./dropdown/minimumResultsForSearch", + "./dropdown/selectOnClose", + "./dropdown/closeOnSelect", + "./i18n/en", + ], + function ( + c, + u, + d, + p, + h, + f, + g, + m, + v, + y, + s, + t, + _, + $, + b, + w, + A, + x, + D, + S, + E, + C, + O, + T, + q, + L, + I, + j, + e + ) { + function n() { + this.reset(); + } + return ( + (n.prototype.apply = function (e) { + if ( + null == (e = c.extend(!0, {}, this.defaults, e)).dataAdapter + ) { + if ( + (null != e.ajax + ? (e.dataAdapter = b) + : null != e.data + ? (e.dataAdapter = $) + : (e.dataAdapter = _), + 0 < e.minimumInputLength && + (e.dataAdapter = y.Decorate(e.dataAdapter, x)), + 0 < e.maximumInputLength && + (e.dataAdapter = y.Decorate(e.dataAdapter, D)), + 0 < e.maximumSelectionLength && + (e.dataAdapter = y.Decorate(e.dataAdapter, S)), + e.tags && (e.dataAdapter = y.Decorate(e.dataAdapter, w)), + (null == e.tokenSeparators && null == e.tokenizer) || + (e.dataAdapter = y.Decorate(e.dataAdapter, A)), + null != e.query) + ) { + var t = u(e.amdBase + "compat/query"); + e.dataAdapter = y.Decorate(e.dataAdapter, t); + } + if (null != e.initSelection) { + var n = u(e.amdBase + "compat/initSelection"); + e.dataAdapter = y.Decorate(e.dataAdapter, n); + } + } + if ( + (null == e.resultsAdapter && + ((e.resultsAdapter = d), + null != e.ajax && + (e.resultsAdapter = y.Decorate(e.resultsAdapter, T)), + null != e.placeholder && + (e.resultsAdapter = y.Decorate(e.resultsAdapter, O)), + e.selectOnClose && + (e.resultsAdapter = y.Decorate(e.resultsAdapter, I))), + null == e.dropdownAdapter) + ) { + if (e.multiple) e.dropdownAdapter = E; + else { + var r = y.Decorate(E, C); + e.dropdownAdapter = r; + } + if ( + (0 !== e.minimumResultsForSearch && + (e.dropdownAdapter = y.Decorate(e.dropdownAdapter, L)), + e.closeOnSelect && + (e.dropdownAdapter = y.Decorate(e.dropdownAdapter, j)), + null != e.dropdownCssClass || + null != e.dropdownCss || + null != e.adaptDropdownCssClass) + ) { + var i = u(e.amdBase + "compat/dropdownCss"); + e.dropdownAdapter = y.Decorate(e.dropdownAdapter, i); + } + e.dropdownAdapter = y.Decorate(e.dropdownAdapter, q); + } + if (null == e.selectionAdapter) { + if ( + (e.multiple + ? (e.selectionAdapter = h) + : (e.selectionAdapter = p), + null != e.placeholder && + (e.selectionAdapter = y.Decorate(e.selectionAdapter, f)), + e.allowClear && + (e.selectionAdapter = y.Decorate(e.selectionAdapter, g)), + e.multiple && + (e.selectionAdapter = y.Decorate(e.selectionAdapter, m)), + null != e.containerCssClass || + null != e.containerCss || + null != e.adaptContainerCssClass) + ) { + var o = u(e.amdBase + "compat/containerCss"); + e.selectionAdapter = y.Decorate(e.selectionAdapter, o); + } + e.selectionAdapter = y.Decorate(e.selectionAdapter, v); + } + (e.language = this._resolveLanguage(e.language)), + e.language.push("en"); + for (var s = [], a = 0; a < e.language.length; a++) { + var l = e.language[a]; + -1 === s.indexOf(l) && s.push(l); + } + return ( + (e.language = s), + (e.translations = this._processTranslations( + e.language, + e.debug + )), + e + ); + }), + (n.prototype.reset = function () { + function a(e) { + return e.replace(/[^\u0000-\u007E]/g, function (e) { + return t[e] || e; + }); + } + this.defaults = { + amdBase: "./", + amdLanguageBase: "./i18n/", + closeOnSelect: !0, + debug: !1, + dropdownAutoWidth: !1, + escapeMarkup: y.escapeMarkup, + language: {}, + matcher: function e(t, n) { + if ("" === c.trim(t.term)) return n; + if (n.children && 0 < n.children.length) { + for ( + var r = c.extend(!0, {}, n), i = n.children.length - 1; + 0 <= i; + i-- + ) + null == e(t, n.children[i]) && r.children.splice(i, 1); + return 0 < r.children.length ? r : e(t, r); + } + var o = a(n.text).toUpperCase(), + s = a(t.term).toUpperCase(); + return -1 < o.indexOf(s) ? n : null; + }, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: !1, + scrollAfterSelect: !1, + sorter: function (e) { + return e; + }, + templateResult: function (e) { + return e.text; + }, + templateSelection: function (e) { + return e.text; + }, + theme: "default", + width: "resolve", + }; + }), + (n.prototype.applyFromElement = function (e, t) { + var n = e.language, + r = this.defaults.language, + i = t.prop("lang"), + o = t.closest("[lang]").prop("lang"), + s = Array.prototype.concat.call( + this._resolveLanguage(i), + this._resolveLanguage(n), + this._resolveLanguage(r), + this._resolveLanguage(o) + ); + return (e.language = s), e; + }), + (n.prototype._resolveLanguage = function (e) { + if (!e) return []; + if (c.isEmptyObject(e)) return []; + if (c.isPlainObject(e)) return [e]; + var t; + t = c.isArray(e) ? e : [e]; + for (var n = [], r = 0; r < t.length; r++) + if ( + (n.push(t[r]), + "string" == typeof t[r] && 0 < t[r].indexOf("-")) + ) { + var i = t[r].split("-")[0]; + n.push(i); + } + return n; + }), + (n.prototype._processTranslations = function (e, t) { + for (var n = new s(), r = 0; r < e.length; r++) { + var i = new s(), + o = e[r]; + if ("string" == typeof o) + try { + i = s.loadPath(o); + } catch (e) { + try { + (o = this.defaults.amdLanguageBase + o), + (i = s.loadPath(o)); + } catch (e) { + t && + window.console && + console.warn && + console.warn( + 'Select2: The language file for "' + + o + + '" could not be automatically loaded. A fallback will be used instead.' + ); + } + } + else i = c.isPlainObject(o) ? new s(o) : o; + n.extend(i); + } + return n; + }), + (n.prototype.set = function (e, t) { + var n = {}; + n[c.camelCase(e)] = t; + var r = y._convertData(n); + c.extend(!0, this.defaults, r); + }), + new n() + ); + } + ), + e.define( + "select2/options", + ["require", "jquery", "./defaults", "./utils"], + function (r, d, i, p) { + function e(e, t) { + if ( + ((this.options = e), + null != t && this.fromElement(t), + null != t && + (this.options = i.applyFromElement(this.options, t)), + (this.options = i.apply(this.options)), + t && t.is("input")) + ) { + var n = r(this.get("amdBase") + "compat/inputData"); + this.options.dataAdapter = p.Decorate( + this.options.dataAdapter, + n + ); + } + } + return ( + (e.prototype.fromElement = function (e) { + var t = ["select2"]; + null == this.options.multiple && + (this.options.multiple = e.prop("multiple")), + null == this.options.disabled && + (this.options.disabled = e.prop("disabled")), + null == this.options.dir && + (e.prop("dir") + ? (this.options.dir = e.prop("dir")) + : e.closest("[dir]").prop("dir") + ? (this.options.dir = e.closest("[dir]").prop("dir")) + : (this.options.dir = "ltr")), + e.prop("disabled", this.options.disabled), + e.prop("multiple", this.options.multiple), + p.GetData(e[0], "select2Tags") && + (this.options.debug && + window.console && + console.warn && + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.' + ), + p.StoreData(e[0], "data", p.GetData(e[0], "select2Tags")), + p.StoreData(e[0], "tags", !0)), + p.GetData(e[0], "ajaxUrl") && + (this.options.debug && + window.console && + console.warn && + console.warn( + "Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2." + ), + e.attr("ajax--url", p.GetData(e[0], "ajaxUrl")), + p.StoreData(e[0], "ajax-Url", p.GetData(e[0], "ajaxUrl"))); + var n = {}; + function r(e, t) { + return t.toUpperCase(); + } + for (var i = 0; i < e[0].attributes.length; i++) { + var o = e[0].attributes[i].name, + s = "data-"; + if (o.substr(0, s.length) == s) { + var a = o.substring(s.length), + l = p.GetData(e[0], a); + n[a.replace(/-([a-z])/g, r)] = l; + } + } + d.fn.jquery && + "1." == d.fn.jquery.substr(0, 2) && + e[0].dataset && + (n = d.extend(!0, {}, e[0].dataset, n)); + var c = d.extend(!0, {}, p.GetData(e[0]), n); + for (var u in (c = p._convertData(c))) + -1 < d.inArray(u, t) || + (d.isPlainObject(this.options[u]) + ? d.extend(this.options[u], c[u]) + : (this.options[u] = c[u])); + return this; + }), + (e.prototype.get = function (e) { + return this.options[e]; + }), + (e.prototype.set = function (e, t) { + this.options[e] = t; + }), + e + ); + } + ), + e.define( + "select2/core", + ["jquery", "./options", "./utils", "./keys"], + function (o, c, u, r) { + var d = function (e, t) { + null != u.GetData(e[0], "select2") && + u.GetData(e[0], "select2").destroy(), + (this.$element = e), + (this.id = this._generateId(e)), + (t = t || {}), + (this.options = new c(t, e)), + d.__super__.constructor.call(this); + var n = e.attr("tabindex") || 0; + u.StoreData(e[0], "old-tabindex", n), e.attr("tabindex", "-1"); + var r = this.options.get("dataAdapter"); + this.dataAdapter = new r(e, this.options); + var i = this.render(); + this._placeContainer(i); + var o = this.options.get("selectionAdapter"); + (this.selection = new o(e, this.options)), + (this.$selection = this.selection.render()), + this.selection.position(this.$selection, i); + var s = this.options.get("dropdownAdapter"); + (this.dropdown = new s(e, this.options)), + (this.$dropdown = this.dropdown.render()), + this.dropdown.position(this.$dropdown, i); + var a = this.options.get("resultsAdapter"); + (this.results = new a(e, this.options, this.dataAdapter)), + (this.$results = this.results.render()), + this.results.position(this.$results, this.$dropdown); + var l = this; + this._bindAdapters(), + this._registerDomEvents(), + this._registerDataEvents(), + this._registerSelectionEvents(), + this._registerDropdownEvents(), + this._registerResultsEvents(), + this._registerEvents(), + this.dataAdapter.current(function (e) { + l.trigger("selection:update", { data: e }); + }), + e.addClass("select2-hidden-accessible"), + e.attr("aria-hidden", "true"), + this._syncAttributes(), + u.StoreData(e[0], "select2", this), + e.data("select2", this); + }; + return ( + u.Extend(d, u.Observable), + (d.prototype._generateId = function (e) { + return ( + "select2-" + + (null != e.attr("id") + ? e.attr("id") + : null != e.attr("name") + ? e.attr("name") + "-" + u.generateChars(2) + : u.generateChars(4) + ).replace(/(:|\.|\[|\]|,)/g, "") + ); + }), + (d.prototype._placeContainer = function (e) { + e.insertAfter(this.$element); + var t = this._resolveWidth( + this.$element, + this.options.get("width") + ); + null != t && e.css("width", t); + }), + (d.prototype._resolveWidth = function (e, t) { + var n = + /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + if ("resolve" == t) { + var r = this._resolveWidth(e, "style"); + return null != r ? r : this._resolveWidth(e, "element"); + } + if ("element" == t) { + var i = e.outerWidth(!1); + return i <= 0 ? "auto" : i + "px"; + } + if ("style" != t) + return "computedstyle" != t + ? t + : window.getComputedStyle(e[0]).width; + var o = e.attr("style"); + if ("string" != typeof o) return null; + for (var s = o.split(";"), a = 0, l = s.length; a < l; a += 1) { + var c = s[a].replace(/\s/g, "").match(n); + if (null !== c && 1 <= c.length) return c[1]; + } + return null; + }), + (d.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container), + this.selection.bind(this, this.$container), + this.dropdown.bind(this, this.$container), + this.results.bind(this, this.$container); + }), + (d.prototype._registerDomEvents = function () { + var t = this; + this.$element.on("change.select2", function () { + t.dataAdapter.current(function (e) { + t.trigger("selection:update", { data: e }); + }); + }), + this.$element.on("focus.select2", function (e) { + t.trigger("focus", e); + }), + (this._syncA = u.bind(this._syncAttributes, this)), + (this._syncS = u.bind(this._syncSubtree, this)), + this.$element[0].attachEvent && + this.$element[0].attachEvent( + "onpropertychange", + this._syncA + ); + var e = + window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver; + null != e + ? ((this._observer = new e(function (e) { + t._syncA(), t._syncS(null, e); + })), + this._observer.observe(this.$element[0], { + attributes: !0, + childList: !0, + subtree: !1, + })) + : this.$element[0].addEventListener && + (this.$element[0].addEventListener( + "DOMAttrModified", + t._syncA, + !1 + ), + this.$element[0].addEventListener( + "DOMNodeInserted", + t._syncS, + !1 + ), + this.$element[0].addEventListener( + "DOMNodeRemoved", + t._syncS, + !1 + )); + }), + (d.prototype._registerDataEvents = function () { + var n = this; + this.dataAdapter.on("*", function (e, t) { + n.trigger(e, t); + }); + }), + (d.prototype._registerSelectionEvents = function () { + var n = this, + r = ["toggle", "focus"]; + this.selection.on("toggle", function () { + n.toggleDropdown(); + }), + this.selection.on("focus", function (e) { + n.focus(e); + }), + this.selection.on("*", function (e, t) { + -1 === o.inArray(e, r) && n.trigger(e, t); + }); + }), + (d.prototype._registerDropdownEvents = function () { + var n = this; + this.dropdown.on("*", function (e, t) { + n.trigger(e, t); + }); + }), + (d.prototype._registerResultsEvents = function () { + var n = this; + this.results.on("*", function (e, t) { + n.trigger(e, t); + }); + }), + (d.prototype._registerEvents = function () { + var n = this; + this.on("open", function () { + n.$container.addClass("select2-container--open"); + }), + this.on("close", function () { + n.$container.removeClass("select2-container--open"); + }), + this.on("enable", function () { + n.$container.removeClass("select2-container--disabled"); + }), + this.on("disable", function () { + n.$container.addClass("select2-container--disabled"); + }), + this.on("blur", function () { + n.$container.removeClass("select2-container--focus"); + }), + this.on("query", function (t) { + n.isOpen() || n.trigger("open", {}), + this.dataAdapter.query(t, function (e) { + n.trigger("results:all", { data: e, query: t }); + }); + }), + this.on("query:append", function (t) { + this.dataAdapter.query(t, function (e) { + n.trigger("results:append", { data: e, query: t }); + }); + }), + this.on("keypress", function (e) { + var t = e.which; + n.isOpen() + ? t === r.ESC || t === r.TAB || (t === r.UP && e.altKey) + ? (n.close(e), e.preventDefault()) + : t === r.ENTER + ? (n.trigger("results:select", {}), e.preventDefault()) + : t === r.SPACE && e.ctrlKey + ? (n.trigger("results:toggle", {}), e.preventDefault()) + : t === r.UP + ? (n.trigger("results:previous", {}), + e.preventDefault()) + : t === r.DOWN && + (n.trigger("results:next", {}), e.preventDefault()) + : (t === r.ENTER || + t === r.SPACE || + (t === r.DOWN && e.altKey)) && + (n.open(), e.preventDefault()); + }); + }), + (d.prototype._syncAttributes = function () { + this.options.set("disabled", this.$element.prop("disabled")), + this.isDisabled() + ? (this.isOpen() && this.close(), + this.trigger("disable", {})) + : this.trigger("enable", {}); + }), + (d.prototype._isChangeMutation = function (e, t) { + var n = !1, + r = this; + if ( + !e || + !e.target || + "OPTION" === e.target.nodeName || + "OPTGROUP" === e.target.nodeName + ) { + if (t) + if (t.addedNodes && 0 < t.addedNodes.length) + for (var i = 0; i < t.addedNodes.length; i++) { + t.addedNodes[i].selected && (n = !0); + } + else + t.removedNodes && 0 < t.removedNodes.length + ? (n = !0) + : o.isArray(t) && + o.each(t, function (e, t) { + if (r._isChangeMutation(e, t)) return !(n = !0); + }); + else n = !0; + return n; + } + }), + (d.prototype._syncSubtree = function (e, t) { + var n = this._isChangeMutation(e, t), + r = this; + n && + this.dataAdapter.current(function (e) { + r.trigger("selection:update", { data: e }); + }); + }), + (d.prototype.trigger = function (e, t) { + var n = d.__super__.trigger, + r = { + open: "opening", + close: "closing", + select: "selecting", + unselect: "unselecting", + clear: "clearing", + }; + if ((void 0 === t && (t = {}), e in r)) { + var i = r[e], + o = { prevented: !1, name: e, args: t }; + if ((n.call(this, i, o), o.prevented)) + return void (t.prevented = !0); + } + n.call(this, e, t); + }), + (d.prototype.toggleDropdown = function () { + this.isDisabled() || + (this.isOpen() ? this.close() : this.open()); + }), + (d.prototype.open = function () { + this.isOpen() || this.isDisabled() || this.trigger("query", {}); + }), + (d.prototype.close = function (e) { + this.isOpen() && this.trigger("close", { originalEvent: e }); + }), + (d.prototype.isEnabled = function () { + return !this.isDisabled(); + }), + (d.prototype.isDisabled = function () { + return this.options.get("disabled"); + }), + (d.prototype.isOpen = function () { + return this.$container.hasClass("select2-container--open"); + }), + (d.prototype.hasFocus = function () { + return this.$container.hasClass("select2-container--focus"); + }), + (d.prototype.focus = function (e) { + this.hasFocus() || + (this.$container.addClass("select2-container--focus"), + this.trigger("focus", {})); + }), + (d.prototype.enable = function (e) { + this.options.get("debug") && + window.console && + console.warn && + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.' + ), + (null != e && 0 !== e.length) || (e = [!0]); + var t = !e[0]; + this.$element.prop("disabled", t); + }), + (d.prototype.data = function () { + this.options.get("debug") && + 0 < arguments.length && + window.console && + console.warn && + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.' + ); + var t = []; + return ( + this.dataAdapter.current(function (e) { + t = e; + }), + t + ); + }), + (d.prototype.val = function (e) { + if ( + (this.options.get("debug") && + window.console && + console.warn && + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.' + ), + null == e || 0 === e.length) + ) + return this.$element.val(); + var t = e[0]; + o.isArray(t) && + (t = o.map(t, function (e) { + return e.toString(); + })), + this.$element.val(t).trigger("input").trigger("change"); + }), + (d.prototype.destroy = function () { + this.$container.remove(), + this.$element[0].detachEvent && + this.$element[0].detachEvent( + "onpropertychange", + this._syncA + ), + null != this._observer + ? (this._observer.disconnect(), (this._observer = null)) + : this.$element[0].removeEventListener && + (this.$element[0].removeEventListener( + "DOMAttrModified", + this._syncA, + !1 + ), + this.$element[0].removeEventListener( + "DOMNodeInserted", + this._syncS, + !1 + ), + this.$element[0].removeEventListener( + "DOMNodeRemoved", + this._syncS, + !1 + )), + (this._syncA = null), + (this._syncS = null), + this.$element.off(".select2"), + this.$element.attr( + "tabindex", + u.GetData(this.$element[0], "old-tabindex") + ), + this.$element.removeClass("select2-hidden-accessible"), + this.$element.attr("aria-hidden", "false"), + u.RemoveData(this.$element[0]), + this.$element.removeData("select2"), + this.dataAdapter.destroy(), + this.selection.destroy(), + this.dropdown.destroy(), + this.results.destroy(), + (this.dataAdapter = null), + (this.selection = null), + (this.dropdown = null), + (this.results = null); + }), + (d.prototype.render = function () { + var e = o( + '' + ); + return ( + e.attr("dir", this.options.get("dir")), + (this.$container = e), + this.$container.addClass( + "select2-container--" + this.options.get("theme") + ), + u.StoreData(e[0], "element", this.$element), + e + ); + }), + d + ); + } + ), + e.define("jquery-mousewheel", ["jquery"], function (e) { + return e; + }), + e.define( + "jquery.select2", + [ + "jquery", + "jquery-mousewheel", + "./select2/core", + "./select2/defaults", + "./select2/utils", + ], + function (i, e, o, t, s) { + if (null == i.fn.select2) { + var a = ["open", "close", "destroy"]; + i.fn.select2 = function (t) { + if ("object" == typeof (t = t || {})) + return ( + this.each(function () { + var e = i.extend(!0, {}, t); + new o(i(this), e); + }), + this + ); + if ("string" != typeof t) + throw new Error("Invalid arguments for Select2: " + t); + var n, + r = Array.prototype.slice.call(arguments, 1); + return ( + this.each(function () { + var e = s.GetData(this, "select2"); + null == e && + window.console && + console.error && + console.error( + "The select2('" + + t + + "') method was called on an element that is not using Select2." + ), + (n = e[t].apply(e, r)); + }), + -1 < i.inArray(t, a) ? this : n + ); + }; + } + return ( + null == i.fn.select2.defaults && (i.fn.select2.defaults = t), o + ); + } + ), + { define: e.define, require: e.require } + ); + })(), + t = e.require("jquery.select2"); + return (u.fn.select2.amd = e), t; +}); +$(document).on("htmx:afterRequest", function (event, data) { + var response = event.detail.xhr.response; + var target = $(event.detail.elt.getAttribute("hx-target")); + target.find(".oh-select").select2(); +}); +$(document).on("htmx:afterSettle", function (event, data) { + var response = event.detail.xhr.response; + target = $(event.target); + target.find(".oh-select").select2(); +}); diff --git a/templates/initialize_database/horilla_company.html b/templates/initialize_database/horilla_company.html new file mode 100644 index 000000000..28cbc6cd2 --- /dev/null +++ b/templates/initialize_database/horilla_company.html @@ -0,0 +1,128 @@ +{% load i18n %} +
        + Horilla HRMS +
          +
        • +
          1
          + Sign Up +
        • +
        • +
          2
          + Company +
        • +
        • +
          3
          + Department +
        • +
        • +
          4
          + Job Position +
        • +
        +
        +

        + {% trans "Company" %} +

        +
        + {% csrf_token %} +
        +
        + + {{form.company}} {{form.company.errors}} +
        +
        + + {{form.address}} {{form.address.errors}} +
        +
        +
        +
        + + + {{form.country.errors}} +
        +
        +
        +
        + + + {{form.state.errors}} +
        +
        +
        +
        +
        +
        + + {{form.city}} {{form.city.errors}} +
        +
        +
        +
        + + {{form.zip}} {{form.zip.errors}} +
        +
        +
        +
        +
        +
        + + {{form.icon}} {{form.icon.errors}} +
        +
        +
        +
        +
        + +

        {{form.hq}}

        +
        +
        +
        +
        +
        + +
        + + diff --git a/templates/initialize_database/horilla_department.html b/templates/initialize_database/horilla_department.html new file mode 100644 index 000000000..962b48b18 --- /dev/null +++ b/templates/initialize_database/horilla_department.html @@ -0,0 +1,28 @@ +{% load i18n %} {% load i18n %} +
        + Horilla HRMS +
          +
        • +
          1
          + Sign Up +
        • +
        • +
          2
          + Company +
        • +
        • +
          3
          + Department +
        • +
        • +
          4
          + Job Position +
        • +
        +
        +

        + {% trans "Department" %} +

        +{% include "initialize_database/horilla_department_form.html" %} \ No newline at end of file diff --git a/templates/initialize_database/horilla_department_form.html b/templates/initialize_database/horilla_department_form.html new file mode 100644 index 000000000..47fbcc732 --- /dev/null +++ b/templates/initialize_database/horilla_department_form.html @@ -0,0 +1,89 @@ +{% load i18n %} +
        + {% if departments %} +
        +
        +
        + {% for instance in departments %} + + {{instance}} +
        + +
        +
        + {% endfor %} +
        +
        +
        + {% endif %} +
        + {% csrf_token %} {{form.non_field_errors}} +
        +
        +
        +
        +
        + + {{form.department}} {{form.department.errors}} +
        +
        +
        +
        + + {{form.company_id}} {{form.company_id.errors}} +
        +
        +
        +
        +
        + +
        + {% if departments %} + + {% endif %} +
        +
        +
        diff --git a/templates/initialize_database/horilla_job_position.html b/templates/initialize_database/horilla_job_position.html new file mode 100644 index 000000000..83d72301b --- /dev/null +++ b/templates/initialize_database/horilla_job_position.html @@ -0,0 +1,28 @@ +{% load i18n %} +
        + Horilla HRMS +
          +
        • +
          1
          + Sign Up +
        • +
        • +
          2
          + Company +
        • +
        • +
          3
          + Department +
        • +
        • +
          4
          + Job Position +
        • +
        +
        +

        + {% trans "Job Position" %} +

        +{% include "initialize_database/horilla_job_position_form.html" %} diff --git a/templates/initialize_database/horilla_job_position_form.html b/templates/initialize_database/horilla_job_position_form.html new file mode 100644 index 000000000..302245895 --- /dev/null +++ b/templates/initialize_database/horilla_job_position_form.html @@ -0,0 +1,95 @@ +{% load i18n %} +
        + {% if job_positions %} +
        +
        +
        + {% for instance in job_positions %} + + {{instance}} +
        + +
        +
        + {% endfor %} +
        +
        +
        + {% endif %} +
        + {% csrf_token %} {{form.non_field_errors}} +
        +
        +
        +
        +
        + + {{form.job_position}} {{form.job_position.errors}} +
        +
        +
        +
        + + {{form.department_id}} {{form.department_id.errors}} +
        +
        +
        +
        + + {{form.company_id}} {{form.company_id.errors}} +
        +
        +
        +
        +
        + +
        + {% if job_positions %} + + {% endif %} +
        +
        +
        diff --git a/templates/initialize_database/horilla_user.html b/templates/initialize_database/horilla_user.html new file mode 100644 index 000000000..a338f88be --- /dev/null +++ b/templates/initialize_database/horilla_user.html @@ -0,0 +1,254 @@ +{% load static %} {% load i18n %} + + + + + + + Login - {{white_label_company_name}} Dashboard + + + + + + + + +
        +
        + {% for message in messages %} +
        + {{ message }} +
        + {% endfor %} +
        +
        +
        +
        + Horilla HRMS +
          +
        • +
          1
          + Sign Up +
        • +
        • +
          2
          + Company +
        • +
        • +
          3
          + Department +
        • +
        • +
          4
          + Job Position +
        • +
        +
        +

        + {% trans "Sign Up" %} +

        +

        + {% trans "Please sign up to access the Horilla HRMS." %} +

        +
        + {% csrf_token %} +
        +
        +
        + + +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +
        + + +
        +
        +
        +
        + +
        + + +
        +
        +
        +
        +
        +
        +
        + + +
        +
        +
        +
        + + +
        +
        +
        + +
        +
        + Horilla +
        +
        + + + + + + + + + + + diff --git a/templates/login.html b/templates/login.html index 17b7525e8..312f74dda 100644 --- a/templates/login.html +++ b/templates/login.html @@ -91,10 +91,15 @@ > - Horilla +
        + Horilla + {% if initialize_database %} + {% trans "Initialize Database" %} + {% endif %} +