UNPKG

igniteui-angular-spreadsheet

Version:

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

541 lines (540 loc) 17.9 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 { 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 */ export let DropDown = /*@__PURE__*/ (() => { class DropDown extends Base { constructor(a, b, c, d, e, f) { super(); 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 = ((() => { let $ret = new CustomDOMEventProxy(this.aa, a, false); $ret._d9 = (g) => true; return $ret; })()); let g = this.d; g.onKeyDown = delegateCombine(g.onKeyDown, runOn(this, this.k)); let h = this.d; h.onMouseUp = delegateCombine(h.onMouseUp, runOn(this, this.aw)); let i = this.d; i.onMouseOver = delegateCombine(i.onMouseOver, runOn(this, this.av)); } get ac() { return this.aa; } get f() { return this.e; } get c() { return this.ah < 0 ? null : this.n.item(this.o._inner[this.ah]); } get ai() { return this.ah; } set ai(a) { this.a1(); if (this.ah != a) { let b = this.ah >= 0 ? this.o._inner[this.ah] : null; let 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); } let 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)); } } } ao() { this.a1(); this.e = false; this.aa.setRawStyleProperty("visibility", "hidden"); this.d.ae = true; let a = this.closed; if (a != null) { a(this, null); } } ap(a, b, c, d) { let e = a.createElement("div"); let 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); } aq() { this.a1(); if (this.aa != null) { this.e = false; this.d.aw(); this.d = null; let a = this.aa; this.aa = null; this.ab = null; a.remove(); } } ar() { this.a1(); let a = this.c; if (a != null && a.c && a.f) { this.ax(a); } } static p(a, b, c, d) { let e = d - c; if (c < a) { e -= a - c; } if (d > b) { e -= d - b; } return e; } ad() { let a = this.aa.getNativeElement(); let b = this.d.at.originalEvent; let c = (b.target); while (c != null && c != a) { let d = c.classList; if (d != null && (d.contains("ui-ig-internal-dropdownitem"))) { for (let e = 0; e < this.o.count; e++) { if (c == this.o._inner[e].getNativeElement()) { return this.o._inner[e]; } } } c = (c.parentNode); } let f = (b.clientX); let g = (b.clientY); let h = this.ah < 0 ? 0 : this.ah; let i = this.o.count; for (let j = h, k = h + i; j < k; j++) { let l = this.o._inner[j % i]; let m = l.getNativeElement().getBoundingClientRect(); let n = (m.top <= g && m.left <= f && m.bottom >= g && m.right >= f); if (n) { return l; } } return null; } static r(a, b, c = false) { if (!c) { return DropDown.q(a.b, a.i, a.g, b); } else { let d = a.b; if (d == 1) { d = 2; } else if (d == 2) { d = 1; } return DropDown.q(d, -a.i, a.g, b); } } static q(a, b, c, d) { let 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; } static s(a, b, c, d, e, f, g, h, i) { i = e; let j = b - a; let k = a + DropDown.r(f, j) - DropDown.r(g, e); if (h != 0) { let l = DropDown.p(c, d, k, k + e); if (l < e) { if ((h & 1) != 0) { let m = a + DropDown.r(f, j, true) - DropDown.r(g, e, true); let 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 }; } ae(a) { for (let b of fromEnum(this.n)) { if (b.value == a) { return b.key; } } return null; } as(a, b, c) { this.ab.removeChildren(); this.n.clear(); for (let d of fromEnum(this.o)) { d.destroy(); } this.o.clear(); for (let e = 0; e < b.count; e++) { let f = b.item(e); let 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; } } g(a) { return this.h(this.ah, a); } h(a, b) { let c = this.o.count; let d = b ? 1 : -1; let 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 (let g = e; g != f; g += d) { let h = g % c; let i = this.n.item(this.o._inner[h]); if (i.g) { continue; } if (!i.h) { continue; } this.ai = h; return true; } return false; } i() { return this.h(0, true); } j() { return this.h(this.n.count - 1, false); } at() { this.ag = 0; this.ar(); } au(a) { let b = this.n.item(a); if (!b.f || b.g) { return; } if (!b.c && !b.i) { let 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); } let d = this.itemClicked; if (d != null) { d(this, b); } } k(a) { let 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; } av(a, b, c) { let d = this.ad(); if (d != null) { let 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; } } } aw(a) { let b = this.ad(); if (b != null) { this.au(b); } } ax(a) { if (!this.e) { return; } let b = this.childRequested; if (b != null) { b(this, a); } } ay(a, b, c, d = true) { let e = c.d || RelativePositionInfo.c; let f = c.f || RelativePositionInfo.c; let g = c.c || RelativePositionInfo.c; let h = c.e || RelativePositionInfo.c; let i = a.getNativeElement(); let j = i.parentElement; let k = j.getBoundingClientRect(); let l = i.scrollWidth + (i.offsetWidth - i.clientWidth); let m = i.scrollHeight + (i.offsetHeight - i.clientHeight); let n = -(k.left); let o = (window.innerWidth || document.documentElement.clientWidth); let p = -(k.top); let q = (window.innerHeight || document.documentElement.clientHeight); let r, s; let t = ((() => { let u = DropDown.s(b.x, b.right, n + 1, n + o - 2, l, e, g, c.a, r); r = u.p8; return u.ret; })()); let u = ((() => { let 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) { let v = i.scrollWidth + (i.offsetWidth - i.clientWidth); let w = i.scrollHeight + (i.offsetHeight - i.clientHeight); this.ay(a, b, c, false); } } l(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; } az(a) { let b = a.getNativeElement().getBoundingClientRect(); let c = this.aa.getNativeElement().getBoundingClientRect(); let d = (b.height); let e = (b.y); let f = (b.bottom); let g = (c.y); let h = (c.bottom); if (DropDown.p(g, h, e, f) != d) { let 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); } } a0(a, b) { let 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", ""); let d = this.opened; if (d != null) { d(this, null); } } a1() { if (this.ag != 0) { let a = this.ag; this.ag = 0; this.z.clearTimeout(a); } } } DropDown.$t = markType(DropDown, 'DropDown'); return DropDown; })();