UNPKG

igniteui-angular-spreadsheet

Version:

Ignite UI Angular spreadsheet component for displaying and editing Microsoft Excel workbooks for modern web apps.

599 lines (598 loc) 18.5 kB
/* THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE: https://www.infragistics.com/legal/license/igultimate-la https://www.infragistics.com/legal/license/igultimate-eula GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company. */ import { __extends, __values } from "tslib"; import { Base, runOn, delegateCombine, fromEnum, markType } from "igniteui-angular-core"; import { DomWrapper_$type } from "igniteui-angular-core"; import { DropDownItem } from "./DropDownItem"; import { Dictionary$2 } from "igniteui-angular-core"; import { List$1 } from "igniteui-angular-core"; import { Tuple } from "igniteui-angular-core"; import { CustomDOMEventProxy } from "./CustomDOMEventProxy"; import { RelativePositionInfo } from "./RelativePositionInfo"; import { Rect } from "igniteui-angular-core"; /** * @hidden */ var DropDown = /** @class */ /*@__PURE__*/ (function (_super) { __extends(DropDown, _super); function DropDown(a, b, c, d, e, f) { var _this = _super.call(this) || this; _this.z = null; _this.ab = null; _this.aa = null; _this.o = null; _this.n = null; _this.d = null; _this.af = 0; _this.ah = -1; _this.e = false; _this.ag = 0; _this.y = null; _this.a = null; _this.b = null; _this.m = false; _this.childRequested = null; _this.closed = null; _this.itemClicked = null; _this.opened = null; _this.selectedItemChanged = null; _this.z = a; _this.o = new List$1(DomWrapper_$type, 0); _this.n = new Dictionary$2(DomWrapper_$type, DropDownItem.$, 0); _this.a = d; _this.b = e; _this.af = d == null ? 0 : d.af + 1; _this.ap(a, c, _this.af, f); _this.aa.setRawStyleProperty("position", "absolute"); _this.aa.setRawStyleProperty("visibility", "hidden"); b.append(_this.aa); _this.d = ((function () { var $ret = new CustomDOMEventProxy(_this.aa, a, false); $ret._d9 = function (g) { return true; }; return $ret; })()); var g = _this.d; g.onKeyDown = delegateCombine(g.onKeyDown, runOn(_this, _this.k)); var h = _this.d; h.onMouseUp = delegateCombine(h.onMouseUp, runOn(_this, _this.aw)); var i = _this.d; i.onMouseOver = delegateCombine(i.onMouseOver, runOn(_this, _this.av)); return _this; } Object.defineProperty(DropDown.prototype, "ac", { get: function () { return this.aa; }, enumerable: false, configurable: true }); Object.defineProperty(DropDown.prototype, "f", { get: function () { return this.e; }, enumerable: false, configurable: true }); Object.defineProperty(DropDown.prototype, "c", { get: function () { return this.ah < 0 ? null : this.n.item(this.o._inner[this.ah]); }, enumerable: false, configurable: true }); Object.defineProperty(DropDown.prototype, "ai", { get: function () { return this.ah; }, set: function (a) { this.a1(); if (this.ah != a) { var b = this.ah >= 0 ? this.o._inner[this.ah] : null; var c = a >= 0 ? this.o._inner[a] : null; this.ah = a; if (b != null) { b.removeClass("selected"); } if (c != null) { c.addClass("selected"); this.az(c); } var d = this.selectedItemChanged; if (d != null) { d(this, Tuple.a(DropDownItem.$, DropDownItem.$, b != null ? this.n.item(b) : null, c != null ? this.n.item(c) : null)); } } }, enumerable: false, configurable: true }); DropDown.prototype.ao = function () { this.a1(); this.e = false; this.aa.setRawStyleProperty("visibility", "hidden"); this.d.ae = true; var a = this.closed; if (a != null) { a(this, null); } }; DropDown.prototype.ap = function (a, b, c, d) { var e = a.createElement("div"); var f = a.createElement("div"); this.ab = f; this.aa = e; this.as(a, b, d); e.setRawStyleProperty("z-index", 10000 + c); e.setAttribute("tabIndex", -1); e.append(f); }; DropDown.prototype.aq = function () { this.a1(); if (this.aa != null) { this.e = false; this.d.aw(); this.d = null; var a = this.aa; this.aa = null; this.ab = null; a.remove(); } }; DropDown.prototype.ar = function () { this.a1(); var a = this.c; if (a != null && a.c && a.f) { this.ax(a); } }; DropDown.p = function (a, b, c, d) { var e = d - c; if (c < a) { e -= a - c; } if (d > b) { e -= d - b; } return e; }; DropDown.prototype.ad = function () { var a = this.aa.getNativeElement(); var b = this.d.at.originalEvent; var c = (b.target); while (c != null && c != a) { var d = c.classList; if (d != null && (d.contains("ui-ig-internal-dropdownitem"))) { for (var e = 0; e < this.o.count; e++) { if (c == this.o._inner[e].getNativeElement()) { return this.o._inner[e]; } } } c = (c.parentNode); } var f = (b.clientX); var g = (b.clientY); var h = this.ah < 0 ? 0 : this.ah; var i = this.o.count; for (var j = h, k = h + i; j < k; j++) { var l = this.o._inner[j % i]; var m = l.getNativeElement().getBoundingClientRect(); var n = (m.top <= g && m.left <= f && m.bottom >= g && m.right >= f); if (n) { return l; } } return null; }; DropDown.r = function (a, b, c) { if (c === void 0) { c = false; } if (!c) { return DropDown.q(a.b, a.i, a.g, b); } else { var d = a.b; if (d == 1) { d = 2; } else if (d == 2) { d = 1; } return DropDown.q(d, -a.i, a.g, b); } }; DropDown.q = function (a, b, c, d) { var e = 0; switch (a) { default: case 1: break; case 0: e += d / 2; break; case 2: e += d; break; } if (c) { b *= d; } return e + b; }; DropDown.s = function (a, b, c, d, e, f, g, h, i) { i = e; var j = b - a; var k = a + DropDown.r(f, j) - DropDown.r(g, e); if (h != 0) { var l = DropDown.p(c, d, k, k + e); if (l < e) { if ((h & 1) != 0) { var m = a + DropDown.r(f, j, true) - DropDown.r(g, e, true); var n = DropDown.p(c, d, m, m + e); if (n > l) { k = m; l = n; } } if (l < e && (h & 2) != 0) { if (k + e > d) { k -= (k + e) - d; } if (k < c) { k += c - k; } l = DropDown.p(c, d, k, k + e); } if (l < e && (h & 4) != 0) { if (k + e > d) { i -= Math.ceil((k + e) - d); } if (k < c) { i -= Math.ceil(c - k); k += Math.floor(c - k); } } } } return { ret: k, p8: i }; }; DropDown.prototype.ae = function (a) { var e_1, _a; try { for (var _b = __values(fromEnum(this.n)), _c = _b.next(); !_c.done; _c = _b.next()) { var b = _c.value; if (b.value == a) { return b.key; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } return null; }; DropDown.prototype.as = function (a, b, c) { var e_2, _a; this.ab.removeChildren(); this.n.clear(); try { for (var _b = __values(fromEnum(this.o)), _c = _b.next(); !_c.done; _c = _b.next()) { var d = _c.value; d.destroy(); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } this.o.clear(); for (var e = 0; e < b.count; e++) { var f = b.item(e); var g = a.createElement("div"); g.addClass("ui-ig-internal-dropdownitem"); this.o.add(g); this.n.addItem(g, f); if (!f.f) { g.addClass("disabled"); } if (f.e) { g.addClass("checked"); } if (e == this.ah) { g.addClass("selected"); } if (f.c) { g.addClass("hassubitems"); } if (!f.h) { g.setRawStyleProperty("display", "none"); } c(g, f); this.ab.append(g); } if (this.ah >= b.count) { this.ai = -1; } }; DropDown.prototype.g = function (a) { return this.h(this.ah, a); }; DropDown.prototype.h = function (a, b) { var c = this.o.count; var d = b ? 1 : -1; var e, f; if (a < 0) { e = b ? 0 : c - 1; f = b ? c : -1; } else { e = b ? a + 1 : a - 1; if (!this.m) { if (!b) { if (a == 0) { return false; } f = c; } else { if (a >= c - 1) { return false; } f = -1; } } else if (b) { f = e + c; } else { e += c; f = e - c; } } for (var g = e; g != f; g += d) { var h = g % c; var i = this.n.item(this.o._inner[h]); if (i.g) { continue; } if (!i.h) { continue; } this.ai = h; return true; } return false; }; DropDown.prototype.i = function () { return this.h(0, true); }; DropDown.prototype.j = function () { return this.h(this.n.count - 1, false); }; DropDown.prototype.at = function () { this.ag = 0; this.ar(); }; DropDown.prototype.au = function (a) { var b = this.n.item(a); if (!b.f || b.g) { return; } if (!b.c && !b.i) { var c = this; while (c.a != null) { c = c.a; } c.ao(); } if (b.d) { if (b.e) { a.removeClass("checked"); } else { a.addClass("checked"); } b.e = !b.e; } if (b.l != null) { b.l(b, b); } if (b.c) { this.ax(b); } var d = this.itemClicked; if (d != null) { d(this, b); } }; DropDown.prototype.k = function (a) { var b = this.d.at; if (this.y != null && this.y(this, a, this.d.bj, b)) { return true; } if (this.l(a, this.d.bj)) { b.stopPropagation(); b.preventDefault(); } return true; }; DropDown.prototype.av = function (a, b, c) { var d = this.ad(); if (d != null) { var e = this.n.item(d); if (e.g) { } else if (e.f) { this.ai = this.o.indexOf(d); if (e.c) { this.ag = this.z.setTimeout(runOn(this, this.at), 300); } } else { this.ai = -1; } } }; DropDown.prototype.aw = function (a) { var b = this.ad(); if (b != null) { this.au(b); } }; DropDown.prototype.ax = function (a) { if (!this.e) { return; } var b = this.childRequested; if (b != null) { b(this, a); } }; DropDown.prototype.ay = function (a, b, c, d) { if (d === void 0) { d = true; } var e = c.d || RelativePositionInfo.c; var f = c.f || RelativePositionInfo.c; var g = c.c || RelativePositionInfo.c; var h = c.e || RelativePositionInfo.c; var i = a.getNativeElement(); var j = i.parentElement; var k = j.getBoundingClientRect(); var l = i.scrollWidth + (i.offsetWidth - i.clientWidth); var m = i.scrollHeight + (i.offsetHeight - i.clientHeight); var n = -(k.left); var o = (window.innerWidth || document.documentElement.clientWidth); var p = -(k.top); var q = (window.innerHeight || document.documentElement.clientHeight); var r, s; var t = ((function () { var u = DropDown.s(b.x, b.right, n + 1, n + o - 2, l, e, g, c.a, r); r = u.p8; return u.ret; })()); var u = ((function () { var v = DropDown.s(b.y, b.bottom, p + 1, p + q - 2, m, f, h, c.b, s); s = v.p8; return v.ret; })()); a.setRawStyleProperty("left", t + "px"); a.setRawStyleProperty("top", u + "px"); if (r == l) { a.setRawStyleProperty("width", ""); } else { a.setRawStyleProperty("width", r + "px"); } if (s == m) { a.setRawStyleProperty("height", ""); } else { a.setRawStyleProperty("height", s + "px"); } if (d) { var v = i.scrollWidth + (i.offsetWidth - i.clientWidth); var w = i.scrollHeight + (i.offsetHeight - i.clientHeight); this.ay(a, b, c, false); } }; DropDown.prototype.l = function (a, b) { switch (a) { case 14: if (this.a != null) { this.ao(); } break; case 16: this.ar(); break; case 8: this.ao(); break; case 17: this.g(true); break; case 15: this.g(false); break; case 9: case 3: if (this.ah >= 0) { this.au(this.o._inner[this.ah]); } break; case 13: this.i(); break; case 12: this.j(); break; case 10: return false; case 11: return false; default: return false; } return true; }; DropDown.prototype.az = function (a) { var b = a.getNativeElement().getBoundingClientRect(); var c = this.aa.getNativeElement().getBoundingClientRect(); var d = (b.height); var e = (b.y); var f = (b.bottom); var g = (c.y); var h = (c.bottom); if (DropDown.p(g, h, e, f) != d) { var i = this.aa.getProperty("scrollTop"); if (e < g) { i -= g - e; } else if (f > h) { i += Math.min(f - h, e - g); } this.aa.setProperty("scrollTop", i); } }; DropDown.prototype.a0 = function (a, b) { var c = this.aa; this.e = true; this.d.bm = new Rect(0, 0, 0, c.outerWidth(), c.outerHeight()); this.d.ae = false; this.ay(c, a, b); if (this.ah >= 0) { this.az(this.o._inner[this.ah]); } this.aa.setRawStyleProperty("visibility", ""); var d = this.opened; if (d != null) { d(this, null); } }; DropDown.prototype.a1 = function () { if (this.ag != 0) { var a = this.ag; this.ag = 0; this.z.clearTimeout(a); } }; DropDown.$t = markType(DropDown, 'DropDown'); return DropDown; }(Base)); export { DropDown };