UNPKG

igniteui-react-grids

Version:

Ignite UI React grid components.

3,185 lines 102 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, Delegate_$type, runOn, delegateCombine, fromEnum, typeCast, Array_$type, delegateRemove, markType, INotifyPropertyChanged_$type, PropertyChangedEventArgs, enumGetBox, String_$type } from "igniteui-react-core";
import { Popup } from "igniteui-react-core";
import { XSuffix } from "igniteui-react-inputs";
import { XInputGroup } from "igniteui-react-inputs";
import { XLabel } from "igniteui-react-inputs";
import { XInput } from "igniteui-react-inputs";
import { List$1 } from "igniteui-react-core";
import { XIcon } from "igniteui-react-inputs";
import { BrushUtil } from "igniteui-react-core";
import { GridCellPosition } from "./GridCellPosition";
import { Rect } from "igniteui-react-core";
import { GotFocusEventArgs } from "./GotFocusEventArgs";
import { LostFocusEventArgs } from "./LostFocusEventArgs";
import { FilterFactory } from "igniteui-react-core";
import { ColumnComparisonFilterCondition } from "./ColumnComparisonFilterCondition";
import { NativeUI } from "igniteui-react-core";
import { FontInfo } from "igniteui-react-core";
import { MultiColumnComboBoxUtilities } from "./MultiColumnComboBoxUtilities";
import { ColumnWidth } from "./ColumnWidth";
import { SortMode_$type } from "./SortMode";
import { IDataSourceUpdateNotifier_$type } from "igniteui-react-core";
import { MultipleDataSourceNotifier } from "./MultipleDataSourceNotifier";
import { TextHeaderCellModel } from "./TextHeaderCellModel";
import { CornerRadius } from "igniteui-react-core";
import { stringEmpty, stringIsNullOrEmpty, stringIsNullOrWhiteSpace } from "igniteui-react-core";
import { stringFormat } from "igniteui-react-core";
import { SRProvider } from "igniteui-react-core";
import { DeviceUtils } from "igniteui-react-core";
import { BaseControlTheme_$type } from "igniteui-react-core";
import { Thickness } from "igniteui-react-core";
import { ControlDisplayDensity_$type } from "igniteui-react-core";
import { StringComparer } from "igniteui-react-core";
import { InputGroupDisplayType_$type } from "igniteui-react-inputs";
import { ThemeResolver } from "igniteui-react-inputs";
import { MultiColumnComboBoxTextChangedEventArgs } from "./MultiColumnComboBoxTextChangedEventArgs";
import { MultiColumnComboBoxValueChangedEventArgs } from "./MultiColumnComboBoxValueChangedEventArgs";
import { FastReflectionHelper } from "igniteui-react-core";
import { MultiColumnComboVisualModelExport } from "./MultiColumnComboVisualModelExport";
import { AppearanceHelper } from "igniteui-react-core";
import { FontUtil } from "igniteui-react-core";
import { isNaN_ } from "igniteui-react-core";
/**
 * @hidden
 */
var MultiColumnComboBoxView = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(MultiColumnComboBoxView, _super);
    function MultiColumnComboBoxView() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.ac = null;
        _this.ak = null;
        _this.f = null;
        _this.ai = null;
        _this.k = null;
        _this.ah = null;
        _this.j = null;
        _this.aj = null;
        _this.l = null;
        _this.h = null;
        _this.ae = null;
        _this.i = null;
        _this.af = null;
        _this.m = null;
        _this.ag = null;
        _this.d = null;
        _this.aq = null;
        _this.ab = new List$1(Delegate_$type, 0);
        _this.au = null;
        _this.aa = true;
        _this.ap = 0;
        _this.x = false;
        _this.a = null;
        _this.c = 0;
        _this.w = false;
        _this.s = false;
        _this.r = false;
        _this.p = false;
        _this.an = null;
        _this.am = null;
        _this.v = false;
        _this.ao = -1;
        _this.z = false;
        _this.t = false;
        return _this;
    }
    Object.defineProperty(MultiColumnComboBoxView.prototype, "e", {
        get: function () {
            return this.d;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "y", {
        get: function () {
            return this.ap == 46;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "n", {
        get: function () {
            return this.m;
        },
        enumerable: false,
        configurable: true
    });
    MultiColumnComboBoxView.prototype.bg = function (a) {
        this.ak = a;
        this.b2();
    };
    MultiColumnComboBoxView.prototype.bh = function (a) {
        this.f = a;
    };
    MultiColumnComboBoxView.prototype.bq = function () {
    };
    MultiColumnComboBoxView.prototype.b2 = function () {
        this.ag = this.ac.createElement("div");
        this.cx();
        this.a1();
        this.a0();
        this.ak.append(this.ai);
        this.cm();
        this.co();
        document.addEventListener("click", runOn(this, this.a2), false);
        window.addEventListener("resize", runOn(this, this.c3), false);
    };
    MultiColumnComboBoxView.prototype.aw = function (a) {
        var b = this.g.p();
        if (null == b) {
            return;
        }
        this.p = false;
        if (b.g1 != a) {
            b.g1 = a;
            this.p = true;
        }
        else {
            this.a3();
        }
    };
    MultiColumnComboBoxView.prototype.ay = function () {
        var a = this.e;
        a.activeCell = null;
    };
    MultiColumnComboBoxView.prototype.az = function () {
        var a = this.n;
        if (null != a) {
            a.b6();
        }
        this.co();
        var b = this.g.p();
        if (null != b) {
            var c = b.g1;
            if (null != c) {
                b.g1 = null;
            }
        }
    };
    MultiColumnComboBoxView.prototype.u = function (a) {
        if (null == a) {
            return false;
        }
        var b = this.ai.getNativeElement();
        var c = this.ag.getNativeElement();
        var d = this.am.getNativeElement();
        return b.contains(a) || c.contains(a) || d.contains(a);
    };
    MultiColumnComboBoxView.prototype.a0 = function () {
        var a = this.ad;
        var b = this.g;
        this.ai = a.createElement("div");
        this.ai.setStyleProperty("display", "flex");
        this.ai.setStyleProperty("height", "100%");
        this.ai.setAttribute("tabIndex", "0");
        this.ai.setAttribute("outline", "none !important");
        this.ai.listen("focusin", runOn(this, this.bn));
        this.ai.listen("focusout", runOn(this, this.bo));
        var c = a.getSubRenderer(this.ai);
        this.k = new XInputGroup();
        this.k.provideContainer(c);
        var d = c.getExternal(this.k, c.rootWrapper, c.getExternal(this.g, null, null));
        this.k.d = this.g.ac;
        this.aj = a.createElement("div");
        var e = a.getSubRenderer(this.aj);
        this.l = new XLabel();
        this.l.provideContainer(e);
        var f = e.getExternal(this.l, e.rootWrapper, e.getExternal(this.g, null, null));
        if (this.f.actualLabelVisible) {
            this.c0();
        }
        this.ah = a.createElement("div");
        this.ah.addClass("ig-input");
        this.ah.setRawStyleProperty("flex-grow", "1");
        var g = a.getSubRenderer(this.ah);
        this.j = new XInput();
        this.j.provideContainer(g);
        a.getExternal(this.j, a.rootWrapper, a.getExternal(b, null, null));
        this.j.b8 = "text";
        this.j.cq = b.text;
        var h = this.j;
        h.changing = delegateCombine(h.changing, runOn(this, this.bi));
        var i = this.j;
        i.compositionEnd = delegateCombine(i.compositionEnd, runOn(this, this.bj));
        var j = this.j;
        j.keyDown = delegateCombine(j.keyDown, runOn(this, this.bl));
        var k = this.j;
        k.gotFocus = delegateCombine(k.gotFocus, runOn(this, this.bk));
        var l = this.j;
        l.mouseDown = delegateCombine(l.mouseDown, runOn(this, this.bm));
        this.k.appendContentChild(this.ah);
        this.k.inputs.add(this.j);
        this.a5(this.g.bg);
        var m = a.createElement("div");
        var n = a.getSubRenderer(m);
        var o = new XSuffix();
        o.provideContainer(n);
        var p = n.getExternal(o, n.rootWrapper, n.getExternal(this.g, null, null));
        this.ae = a.createElement("div");
        this.h = new XIcon();
        var q = a.getSubRenderer(this.ae);
        this.h.provideContainer(q);
        var r = q.getExternal(this.h, q.rootWrapper, q.getExternal(this.g, null, null));
        this.h.svgPath = MultiColumnComboBoxView.ar;
        this.ae.setStyleProperty("height", "16px");
        this.ae.setStyleProperty("width", "16px");
        o.appendContentChild(this.ae);
        this.k.appendContentChild(m);
        this.k.inputs.add(o);
        this.cj();
        var s = a.createElement("div");
        var t = a.getSubRenderer(s);
        var u = new XSuffix();
        u.provideContainer(t);
        var v = t.getExternal(u, t.rootWrapper, t.getExternal(this.g, null, null));
        this.af = a.createElement("div");
        this.i = new XIcon();
        var w = a.getSubRenderer(this.af);
        this.i.provideContainer(w);
        var x = w.getExternal(this.i, w.rootWrapper, w.getExternal(this.g, null, null));
        this.i.svgPath = MultiColumnComboBoxView.at;
        u.appendContentChild(this.af);
        this.k.appendContentChild(s);
        this.k.inputs.add(u);
        this.ae.listen("click", runOn(this, this.ax));
        this.af.listen("click", runOn(this, this.a4));
        this.cq();
    };
    MultiColumnComboBoxView.prototype.a1 = function () {
        var a = this.ac.createElement("div");
        var b = this.ac.getSubRenderer(a);
        this.m = new Popup();
        this.m.ar = this.f.bn;
        this.m.ay = this.f.br;
        this.m.c0 = BrushUtil.h(255, 255, 255, 255);
        this.m.a9 = 150;
        this.m.provideRenderer(b);
        var c = b.getExternal(this.m, b.rootWrapper, b.getExternal(this.g, null, null));
        this.am = this.ac.createElement("div");
        this.am.setStyleProperty("padding", "4px");
        this.am.setStyleProperty("white-space", "nowrap");
        this.an = this.ac.createElement("div");
        this.an.append(this.am);
        this.an.append(this.ag);
        this.m.appendPopupContent(this.an);
    };
    MultiColumnComboBoxView.prototype.bu = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.bx = function (a, b, c) {
    };
    MultiColumnComboBoxView.prototype.bt = function () {
        switch (this.c) {
            case 2:
            case 1:
                if (null == this.a) {
                    this.c = 0;
                }
                break;
        }
        var a = null;
        switch (this.c) {
            case 2:
                {
                    var b = this.a.actualCount;
                    if (b == 0) {
                        this.g.value = null;
                    }
                    else {
                        if (b > 1) {
                        }
                        a = this.a.getItemAtIndex(0);
                        var c = this.g.i();
                        var d = new List$1(Base.$, 0);
                        for (var f = 0; f < c.length; f++) {
                            var e = c[f];
                            var g = this.a.getItemProperty(a, e);
                            d.add1(g);
                        }
                        this.g.value = d.count == 1 ? d._inner[0] : d.toArray();
                    }
                }
                break;
            case 1:
                {
                    var h = this.a.actualCount;
                    if (h == 0) {
                        this.g.text = stringEmpty();
                    }
                    else {
                        if (h > 1) {
                        }
                        var i = this.g.e5();
                        a = this.a.getItemAtIndex(0);
                        var j = this.a.getItemProperty(a, i).toString();
                        this.g.text = j;
                    }
                    var k = this.b();
                    var l = k.indexOfItem(a);
                    this.ch(l);
                }
                break;
            case 0:
            default: return;
        }
        if (null != a) {
            var m = this.b();
            var n = m.indexOfItem(a);
            this.ch(n);
        }
        else {
            this.ch(-1);
        }
        if (this.a != null) {
            this.a.updateNotifier = null;
            this.a = null;
        }
        this.c = 0;
    };
    MultiColumnComboBoxView.prototype.bv = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.bw = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.b0 = function (a, b) {
        var c = this.e;
        if (null != c) {
            var d = c.activeCell;
            if (null != d) {
                if (d.b >= a && d.b <= b) {
                    this.cf(d.b);
                    this.cy();
                }
            }
        }
    };
    MultiColumnComboBoxView.prototype.b5 = function (a, b, c) {
    };
    MultiColumnComboBoxView.prototype.bs = function () {
        this.b8();
        if (this.w) {
            var a = this.b();
            var b = a.actualCount;
            if (this.aa && b > 0) {
                this.ca();
            }
            else {
                this.cb();
            }
        }
        else {
            this.cw();
        }
    };
    MultiColumnComboBoxView.prototype.b1 = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.b3 = function (a, b) {
    };
    MultiColumnComboBoxView.prototype.o = function () {
        var a = document.activeElement;
        return this.u(a);
    };
    MultiColumnComboBoxView.prototype.a3 = function () {
        this.c1();
        this.bp();
        var a = this.n;
        if (a.ax) {
            return;
        }
        var b = this.c4();
        a.am = !this.w;
        if (this.f.bo) {
            a.cr(this.ac.rootWrapper.getNativeElement(), 1, 1);
        }
        else {
            a.showRelativeToExclusionRect(b, 1, 1);
        }
        this.co();
    };
    MultiColumnComboBoxView.prototype.c4 = function () {
        var a = this.ac.rootWrapper.getNativeElement();
        var b = (a.getBoundingClientRect());
        return new Rect(0, b.left + window.pageXOffset, b.top + window.pageYOffset, b.width, b.height);
    };
    MultiColumnComboBoxView.prototype.b = function () {
        var a = this.e;
        if (null != a) {
            return a.actualDataSource;
        }
        return null;
    };
    MultiColumnComboBoxView.prototype.q = function (a) {
        var b = this.d.selectedItems;
        var c = b.count;
        if (0 == c) {
            a = null;
            return {
                ret: true,
                p0: a
            };
        }
        else if (1 == c) {
            a = b._inner[0];
        }
        else {
            a = b._inner[0];
        }
        return {
            ret: null != a,
            p0: a
        };
    };
    MultiColumnComboBoxView.prototype.a8 = function (a) {
        var b = null != a ? a.b : -1;
        this.cf(b);
    };
    MultiColumnComboBoxView.prototype.bc = function () {
        var _this = this;
        if (this.v) {
            return;
        }
        var a = this.g;
        var b;
        var c = ((function () { var d = _this.q(b); b = d.p0; return d.ret; })());
        if (!c) {
            return;
        }
        if (b == null) {
            return;
        }
        a.gi(b);
    };
    MultiColumnComboBoxView.prototype.bp = function () {
        this.n.b9();
    };
    MultiColumnComboBoxView.prototype.br = function () {
        var a = this.n;
        if (a.ax) {
            this.az();
            var b = this.j;
            b.focus();
            var c = b.cq;
            var d = null != c ? b.cq.length : 0;
            b.dr(d, d);
        }
    };
    MultiColumnComboBoxView.prototype.by = function () {
        this.k.an = true;
        this.j.dp();
        var a = new GotFocusEventArgs();
        this.g.ge(a);
    };
    MultiColumnComboBoxView.prototype.bz = function () {
        this.az();
        this.k.j8();
        var a = new LostFocusEventArgs();
        this.g.gg(a);
    };
    MultiColumnComboBoxView.prototype.b4 = function (a) {
        var e_1, _a;
        if (a == null) {
            this.ac = null;
            try {
                for (var _b = __values(fromEnum(this.ab)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var b = _c.value;
                    b();
                }
            }
            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;
                }
            }
            this.ab.clear();
            return;
        }
        this.ac = a;
        var c = a.rootWrapper;
        this.bg(c);
    };
    MultiColumnComboBoxView.prototype.b6 = function (a, b) {
        var c = this.b();
        if (null == c) {
            return;
        }
        if (null != this.a) {
            if (a != this.c) {
            }
            this.a.updateNotifier = null;
            this.a = null;
        }
        this.c = a;
        var d = new FilterFactory();
        var e = null;
        var f = null;
        switch (a) {
            case 2:
                {
                    var g = this.g.e5();
                    if (stringIsNullOrEmpty(g)) {
                        return;
                    }
                    e = b.toString();
                    var h = d.property(g);
                    f = h.isEqualTo(e);
                }
                break;
            case 1:
                {
                    var i = this.g.i();
                    if (i == null || i.length < 1) {
                        return;
                    }
                    var j = typeCast(Array_$type, b) !== null ? b : [b];
                    if (i.length != j.length) {
                        return;
                    }
                    for (var k = 0; k < i.length; k++) {
                        var l = i[k];
                        e = j[k];
                        var m = d.property(l);
                        var n = m.isEqualTo(e);
                        if (null == f) {
                            f = n;
                        }
                        else {
                            f.and(n);
                        }
                    }
                }
                break;
            case 0:
            default: return;
        }
        this.a = c.clone();
        this.a.filterExpressions.clear();
        this.a.updateNotifier = new MultiColumnComboBoxDataSourceNotificationHandler(this, true);
        this.a.filterExpressions.add(f);
        if (!this.a.isVirtual) {
            this.a.flushAutoRefresh();
        }
    };
    MultiColumnComboBoxView.prototype.b7 = function () {
        this.cu();
        var a = this.f.text;
        var b = this.au.length;
        var c = !stringIsNullOrEmpty(a) ? a.length : 0;
        if (this.x && !stringIsNullOrEmpty(this.au) && b > 0) {
            b--;
        }
        this.j.dr(b, c);
    };
    MultiColumnComboBoxView.prototype.b8 = function () {
        if (this.p) {
            this.p = false;
            this.a3();
        }
    };
    MultiColumnComboBoxView.prototype.b9 = function (a) {
        this.au = a;
        this.aa = !this.y;
        this.cc();
        this.cj();
    };
    MultiColumnComboBoxView.prototype.ca = function () {
        if (stringIsNullOrEmpty(this.au)) {
            this.ay();
        }
        else {
            this.ch(0);
        }
        this.b7();
        this.w = false;
    };
    MultiColumnComboBoxView.prototype.cj = function () {
        if (this.ae != null && this.j != null) {
            if (this.g.bq == false) {
                this.ae.setStyleProperty("display", "none");
            }
            else if ((this.g.value != null && this.g.value != "") || (this.j.cq != null && this.j.cq != "")) {
                this.ae.show();
            }
            else {
                this.ae.setStyleProperty("display", "none");
            }
        }
    };
    MultiColumnComboBoxView.prototype.a5 = function (a) {
        if (this.j != null) {
            this.j.disabled = !a;
        }
    };
    MultiColumnComboBoxView.prototype.cb = function () {
        var a = this.d;
        a.selectedItemsChanged = delegateRemove(a.selectedItemsChanged, runOn(this, this.bd));
        this.v = true;
        try {
            this.g.gq(this.au);
        }
        finally {
            this.v = false;
            var b = this.d;
            b.selectedItemsChanged = delegateCombine(b.selectedItemsChanged, runOn(this, this.bd));
        }
        this.w = false;
    };
    MultiColumnComboBoxView.prototype.cc = function () {
        var a = this.g.p();
        if (null == a) {
            return;
        }
        this.w = true;
        if (stringIsNullOrEmpty(this.au)) {
            if (null != a.g1) {
                this.aw(null);
            }
            else {
                this.cb();
            }
        }
        else {
            var b = new ColumnComparisonFilterCondition();
            b.operator = 14;
            b.value = this.au;
            b.isCaseSensitive = false;
            this.aw(b);
        }
    };
    MultiColumnComboBoxView.prototype.cd = function () {
        this.ap = 0;
        this.x = false;
    };
    MultiColumnComboBoxView.prototype.cf = function (a) {
        var b = this.b();
        var c = b.isPlaceholderItem(a);
        if (c) {
        }
        else {
            var d = this.e;
            if (a < 0) {
                this.s = false;
                d.selectedItems.clear();
                if (!this.s) {
                    this.bc();
                }
                return;
            }
            d.selectedItemsChanged = delegateRemove(d.selectedItemsChanged, runOn(this, this.bd));
            try {
                d.selectedItems.clear();
            }
            finally {
                d.selectedItemsChanged = delegateCombine(d.selectedItemsChanged, runOn(this, this.bd));
            }
            if (a >= 0) {
                var e = b.getItemAtIndex(a);
                this.s = false;
                d.selectedItems.add1(e);
                if (!this.s) {
                    this.bc();
                }
            }
        }
    };
    MultiColumnComboBoxView.prototype.ch = function (a) {
        var b = this.e;
        if (-1 == a) {
            b.activeCell = null;
            return;
        }
        var c = b.activeCell;
        var d = new GridCellPosition();
        var e;
        if (null != c) {
            e = c.d;
        }
        else {
            if (b.actualColumns.count == 0) {
                this.ao = a;
                return;
            }
            var f = this.g;
            var g = this.g.p();
            e = g.lt();
        }
        d.d = e;
        d.b = a;
        this.r = false;
        b.activeCell = d;
        if (!this.r) {
            this.a8(b.activeCell);
        }
        this.cy();
    };
    MultiColumnComboBoxView.prototype.cl = function (a) {
        this.b6(2, a);
    };
    MultiColumnComboBoxView.prototype.ck = function (a) {
        this.b6(1, a);
    };
    MultiColumnComboBoxView.prototype.cm = function () {
        var a = this.g;
        if (null != this.k) {
            this.k.t = a.density;
            this.k.p = a.ah;
            this.k.d = a.ac;
            this.k.mc = a.hl;
            this.k.md = a.hm;
            this.k.c0 = a.cc;
            this.k.oi = a.il;
            this.k.ks = a.gw;
            this.k.t = a.am;
            this.k.no = a.hn;
            this.k.eg = a.cd;
            this.k.np = a.ho;
            this.k.eh = a.ce;
            this.k.ei = a.cf;
            this.k.nq = a.hp;
            this.k.ej = a.cg;
            this.k.ek = a.ch;
            this.k.n6 = a.hu;
            this.k.e5 = a.ci;
            this.k.n7 = a.hv;
            this.k.e6 = a.cj;
            this.k.e7 = a.ck;
            this.k.e8 = a.cl;
        }
        if (null != this.j) {
            this.j.d8 = a.ht;
            this.j.af = a.ax;
            this.j.cg = a.fn;
        }
        if (null != this.l) {
            this.l.text = a.fb;
            this.l.dj = a.hq;
            this.l.y = a.av;
        }
        if (null != this.am) {
            NativeUI.q(this.am, a.hs);
            NativeUI.m(this.am, a.hr);
            if (null != a.aw) {
                this.am.setStyleProperty("font", a.aw.fontString);
            }
            this.am.setRawText(a.actualNoMatchesFoundLabel);
            this.bp();
        }
        if (null != this.d) {
            this.d.density = a.density;
            var b = a.columnHeadersVisible;
            this.d.headerHeight = b ? -1 : 0;
            this.d.rowSeparatorHeight = a.rowSeparatorsVisible ? 1 : 0;
        }
        if (null != this.af) {
            var c = a.dropDownButtonVisible;
            MultiColumnComboBoxUtilities.c(this.af, c);
        }
    };
    MultiColumnComboBoxView.prototype.cu = function () {
        if (!this.v) {
            if (null != this.j) {
                var a = this.f.text;
                this.j.cq = a;
            }
        }
    };
    MultiColumnComboBoxView.prototype.co = function () {
        var a = this.n;
        var b = null != a ? a.ax : false;
        this.i.svgPath = b ? MultiColumnComboBoxView.as : MultiColumnComboBoxView.at;
    };
    MultiColumnComboBoxView.prototype.ct = function () {
        var a = this.d.actualHeaderHeight + 3;
        var b = this.d.actualRowHeight + this.d.rowSeparatorHeight;
        var c = this.d.actualDataSource;
        var d = null != c ? c.actualCount : 0;
        if (d > 8) {
            d = 8;
        }
        var e = d * b;
        e += a;
        var f = stringFormat("{0}px", e);
        this.ag.setStyleProperty("height", f);
        var g = 0;
        var h = this.d.actualColumns.count;
        var i = 100;
        if (this.d.defaultColumnWidth != null) {
            i = this.d.defaultColumnWidth.f;
        }
        g = h * i;
        this.d.defaultColumnMinWidth = 0;
        g += 2;
        var j = stringFormat("{0}px", g);
        this.ag.setStyleProperty("width", j);
        if (null != this.am) {
            var k = this.g;
            var l = MultiColumnComboBoxUtilities.e(this.ad, k.actualNoMatchesFoundLabel, k.av);
            var m = l.width;
            var n = l.height;
            var o = stringFormat("{0}px", m);
            var p = stringFormat("{0}px", n);
            this.am.setStyleProperty("width", o);
            this.am.setStyleProperty("height", p);
        }
    };
    MultiColumnComboBoxView.prototype.cv = function () {
        if (this.w) {
            return;
        }
        this.au = null;
        var a = this.g.p();
        if (null != a) {
            var b = a.g1;
            if (null != b) {
                a.g1 = null;
            }
            else {
                this.cw();
            }
        }
    };
    MultiColumnComboBoxView.prototype.cw = function () {
        var a = this.g;
        if (null != a.value) {
            var b = this.g.value;
            var c = typeCast(Array_$type, b) !== null ? b : [b];
            var d = this.b();
            var e = d.indexOfKey(c);
            if (-1 != e) {
                this.ch(e);
            }
        }
    };
    MultiColumnComboBoxView.prototype.cx = function () {
        var _this = this;
        if (null == this.d) {
            this.ac.getPortal(this.ag, "DataGrid", function (a) {
                _this.aq = a.componentRef;
                _this.aq.height = '100%';
                _this.aq.width = '100%';
                _this.d = (_this.aq.i);
                _this.cz();
                _this.d.selectionMode = 1;
                _this.d.selectionBehavior = 0;
                _this.d.activationMode = 1;
                _this.d.defaultColumnWidth = _this.f.defaultColumnWidth;
                _this.cr();
                _this.d.editMode = 0;
                _this.d.isColumnOptionsEnabled = false;
                _this.d.isActiveCellStyleEnabled = false;
                _this.d.cornerRadius = new CornerRadius(0, 0);
                _this.d.ix = false;
                var b = _this.d;
                b.activeCellChanged = delegateCombine(b.activeCellChanged, runOn(_this, _this.a7));
                var c = _this.d;
                c.selectedItemsChanged = delegateCombine(c.selectedItemsChanged, runOn(_this, _this.bd));
                var d = _this.d;
                d.cellClicked = delegateCombine(d.cellClicked, runOn(_this, _this.ba));
                var e = _this.d;
                e.sizeChanged = delegateCombine(e.sizeChanged, runOn(_this, _this.be));
                var f = _this.d;
                f.viewportChanged = delegateCombine(f.viewportChanged, runOn(_this, _this.bf));
                var g = _this.d;
                g.actualColumnsChanged = delegateCombine(g.actualColumnsChanged, runOn(_this, _this.a9));
                var h = _this.d;
                h.columnWidthChanged = delegateCombine(h.columnWidthChanged, runOn(_this, _this.bb));
                _this.cm();
            }, false);
        }
    };
    MultiColumnComboBoxView.prototype.cn = function (a) {
        if (this.d != null) {
            this.d.defaultColumnWidth = a;
            this.ct();
        }
    };
    MultiColumnComboBoxView.prototype.cr = function () {
        if (this.d != null) {
            var a = 0;
            switch (this.f.x) {
                case 0:
                    a = 0;
                    break;
                case 1:
                    a = 1;
                    break;
                case 2:
                    a = 2;
                    break;
                case 3:
                    a = 3;
                    break;
                case 4:
                    a = 4;
                    break;
            }
            this.d.headerClickAction = a;
        }
    };
    MultiColumnComboBoxView.prototype.cy = function () {
        if (!this.t) {
            return;
        }
        var a = this.d;
        var b = a.activeCell;
        if (null != b) {
            var c = this.b();
            if (null != c) {
                var d = c.getItemAtIndex(b.b);
                if (null == d) {
                    return;
                }
                a.scrollToItem(d);
            }
        }
        else {
            a.scrollToRowByIndex(0);
        }
    };
    MultiColumnComboBoxView.prototype.cz = function () {
        if (null != this.aq) {
            var a = this.g;
            var b = a.itemsSource;
            this.d.selectedItems.clear();
            if (this.d.actualDataSource != null) {
                var c = this.d.actualDataSource;
                c.schemaChanged = delegateRemove(c.schemaChanged, runOn(this, this.av));
            }
            this.aq.dataSource = b;
            this.aq.autoGenerateDesiredProperties = a.g;
            this.d.primaryKey = a.i();
            this.ao = -1;
            var d = this.b();
            if (null != d) {
                var e = d.updateNotifier;
                var f = new MultiColumnComboBoxDataSourceNotificationHandler(this, false);
                var g = new MultipleDataSourceNotifier(1, [e, f]);
                d.updateNotifier = g;
                d.propertiesRequested = a.f;
                d.schemaChanged = delegateCombine(d.schemaChanged, runOn(this, this.av));
                if (this.g.value != null) {
                    this.b6(1, this.g.value);
                }
            }
            this.a = null;
            if (this.n != null && this.n.ax) {
                this.c1();
                this.n.b9();
            }
        }
    };
    MultiColumnComboBoxView.prototype.av = function (a, b) {
        if (this.ao != -1) {
            this.ch(this.ao);
            this.ao = -1;
        }
    };
    MultiColumnComboBoxView.prototype.c0 = function () {
        if (null != this.aj) {
            var a = this.f.actualLabelVisible;
            if (a) {
                this.k.appendContentChild(this.aj);
                this.k.inputs.add(this.l);
            }
            else {
                this.k.j7(this.aj);
                this.k.inputs.remove(this.l);
            }
        }
    };
    MultiColumnComboBoxView.prototype.cg = function (a) {
        if (this.j != null) {
            this.j.disabled = !a;
        }
        if (this.k != null) {
            this.k.disabled = !a;
        }
    };
    MultiColumnComboBoxView.prototype.c1 = function () {
        this.ct();
        if (!this.w) {
            this.z = false;
        }
        else {
            var a = this.b();
            this.z = a.actualCount == 0;
        }
        MultiColumnComboBoxUtilities.c(this.am, this.z);
        MultiColumnComboBoxUtilities.c(this.ag, !this.z);
    };
    MultiColumnComboBoxView.prototype.a6 = function (a) {
        if (this.j != null) {
            this.j.focus(a);
        }
    };
    MultiColumnComboBoxView.prototype.ce = function () {
        if (this.j != null) {
            this.j.dp();
        }
    };
    MultiColumnComboBoxView.prototype.ci = function (a) {
        if (this.j != null) {
            this.j.e = a;
        }
    };
    Object.defineProperty(MultiColumnComboBoxView.prototype, "al", {
        get: function () {
            return this.ak;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "g", {
        get: function () {
            return this.f;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBoxView.prototype, "ad", {
        get: function () {
            return this.ac;
        },
        enumerable: false,
        configurable: true
    });
    MultiColumnComboBoxView.prototype.c2 = function () {
        if (null != this.al) {
            this.al.setStyleProperty("box-sizing", "border-box");
        }
    };
    MultiColumnComboBoxView.prototype.a2 = function (a) {
        var b = a.target;
        if (!this.o()) {
            this.bz();
        }
    };
    MultiColumnComboBoxView.prototype.ax = function (a) {
        this.d.selectedItems.clear();
        this.j.cq = "";
        this.g.text = "";
        this.g.value = null;
    };
    MultiColumnComboBoxView.prototype.a4 = function (a) {
        var b = this.n;
        if (b.ax) {
            this.az();
        }
        else {
            this.aw(null);
        }
        if (null != this.j) {
            this.j.focus();
            this.j.dp();
        }
    };
    MultiColumnComboBoxView.prototype.a7 = function (a, b) {
        var c = b.newActiveCell;
        this.a8(c);
        this.r = true;
    };
    MultiColumnComboBoxView.prototype.a9 = function (a, b) {
        this.cv();
    };
    MultiColumnComboBoxView.prototype.ba = function (a, b) {
        if (typeCast(TextHeaderCellModel.$, b.cellInfo) !== null) {
            return;
        }
        this.br();
    };
    MultiColumnComboBoxView.prototype.bb = function (a, b) {
        this.ct();
        this.bp();
    };
    MultiColumnComboBoxView.prototype.bd = function (a, b) {
        this.bc();
        this.s = true;
        this.cj();
    };
    MultiColumnComboBoxView.prototype.be = function (a, b) {
        this.t = b.b != 0 && b.a != 0;
        this.cy();
    };
    MultiColumnComboBoxView.prototype.bf = function (a, b) {
        this.cy();
        var c = this.d;
        c.viewportChanged = delegateRemove(c.viewportChanged, runOn(this, this.bf));
    };
    MultiColumnComboBoxView.prototype.bi = function (a, b) {
        if (b.isCompositionInProgress) {
            return;
        }
        this.f.gd(b);
        var c = b.value;
        this.b9(c);
    };
    MultiColumnComboBoxView.prototype.bj = function (a, b) {
        var c = this.j.cq;
        this.b9(c);
    };
    MultiColumnComboBoxView.prototype.bk = function (a, b) {
        this.cd();
    };
    MultiColumnComboBoxView.prototype.bl = function (a, b) {
        this.f.gf(b);
        if (b.defaultPrevented) {
            return;
        }
        var c = b.keyCode;
        this.ap = c;
        this.x = false;
        var d = b.modifiers;
        switch (c) {
            case 8:
                var e = this.j.selectionStart;
                if (0 == e) {
                    break;
                }
                var f = this.j.cq;
                if (stringIsNullOrEmpty(f)) {
                    break;
                }
                var g = f.length;
                var h = this.j.selectionEnd;
                var i = h - e;
                if (i > 0 && i < g && h == g) {
                    this.x = true;
                }
                break;
            case 40:
                if (d == 1) {
                    this.a3();
                    this.cv();
                    b.preventDefault();
                }
                else {
                    var j = this.e;
                    if (null == j) {
                        return;
                    }
                    var k = this.e.activeCell;
                    if (null != j.activeCell) {
                        this.d.kk(false, false);
                        b.preventDefault();
                    }
                    else {
                        var l = this.b();
                        if (null != l) {
                            var m = l.actualCount;
                            if (m > 0) {
                                this.ch(0);
                                b.preventDefault();
                            }
                        }
                    }
                }
                break;
            case 38:
                if (d == 1) {
                    this.az();
                    b.preventDefault();
                }
                else {
                    var n = this.e;
                    if (null == n) {
                        return;
                    }
                    var o = this.e.activeCell;
                    if (null != n.activeCell) {
                        this.d.kx(false, false);
                        b.preventDefault();
                    }
                    else {
                        var p = this.b();
                        if (null != p) {
                            var q = p.actualCount;
                            if (q > 0) {
                                this.ch(q - 1);
                                b.preventDefault();
                            }
                        }
                    }
                }
                break;
            case 13:
                if (this.n.ax) {
                    b.stopPropagation();
                }
                this.br();
                break;
            case 27:
                this.az();
                break;
        }
    };
    MultiColumnComboBoxView.prototype.bm = function (a, b) {
        if (false == this.o()) {
            this.j.dp();
            b.handled = true;
        }
    };
    MultiColumnComboBoxView.prototype.bn = function (a) {
        this.j.focus();
        var b = (a.originalEvent.relatedTarget);
        if (!this.u(b)) {
            this.by();
        }
    };
    MultiColumnComboBoxView.prototype.bo = function (a) {
        var b = (a.originalEvent.relatedTarget);
        if (!this.u(b)) {
            this.bz();
        }
    };
    MultiColumnComboBoxView.prototype.c3 = function (a) {
        var b = this.n;
        if (null == b || false == b.ax) {
            return;
        }
        var c = this.c4();
        this.m.ca(c);
    };
    MultiColumnComboBoxView.prototype.cq = function () {
        if (this.g.disallowTabFocus) {
            if (this.ai != null) {
                this.ai.setAttribute("tabIndex", "-1");
            }
            if (this.j != null) {
                this.j.be = -1;
            }
        }
        else {
            if (this.ai != null) {
                this.ai.setAttribute("tabIndex", "0");
            }
            if (this.j != null) {
                this.j.cu();
            }
        }
    };
    MultiColumnComboBoxView.prototype.cp = function () {
        if (this.m != null) {
            this.m.ar = this.g.bn;
        }
    };
    MultiColumnComboBoxView.prototype.cs = function () {
        if (this.m != null) {
            this.m.ay = this.g.br;
        }
    };
    MultiColumnComboBoxView.$t = markType(MultiColumnComboBoxView, 'MultiColumnComboBoxView');
    MultiColumnComboBoxView.ar = "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z";
    MultiColumnComboBoxView.at = "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z";
    MultiColumnComboBoxView.as = "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z";
    return MultiColumnComboBoxView;
}(Base));
export { MultiColumnComboBoxView };
/**
 * @hidden
 */
var MultiColumnComboBox = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(MultiColumnComboBox, _super);
    function MultiColumnComboBox() {
        var _this = _super.call(this) || this;
        _this.dd = null;
        _this.h1 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "BackgroundColor");
        _this.h2 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "BorderColor");
        _this.co = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "BorderWidth");
        _this.io = XInputGroup.m.ai(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "ContentPadding");
        _this.gy = XInputGroup.m.y(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "CornerRadius");
        _this.h3 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "FocusBorderColor");
        _this.cp = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "FocusBorderWidth");
        _this.h4 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineColor");
        _this.cq = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineOpacity");
        _this.cr = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineRippleOpacity");
        _this.h5 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineColor");
        _this.cs = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineOpacity");
        _this.ct = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineWidth");
        _this.h6 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineColor");
        _this.cu = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineOpacity");
        _this.h7 = XInputGroup.m.ad(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineRippleColor");
        _this.cv = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineRippleOpacity");
        _this.cw = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineRippleWidth");
        _this.cx = XInputGroup.m.i(MultiColumnComboBox.ag, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineWidth");
        _this.a5 = null;
        _this.a0 = null;
        _this.v = null;
        _this.a8 = false;
        _this.bc = true;
        _this.c = null;
        _this.m = ColumnWidth.a;
        _this.ha = null;
        _this.gz = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "BackgroundColor");
        _this.af = 0;
        _this.ae = 1;
        _this.hb = null;
        _this.g0 = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "BorderColor");
        _this.b2 = NaN;
        _this.bs = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "BorderWidth");
        _this.bh = true;
        _this.ik = new Thickness(1, NaN, NaN, NaN, NaN);
        _this.ij = ThemeResolver.ak(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "ContentPadding");
        _this.gv = new CornerRadius(1, NaN, NaN, NaN, NaN);
        _this.gu = ThemeResolver.aa(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "CornerRadius");
        _this.b = null;
        _this.al = 0;
        _this.ak = 0;
        _this.bk = true;
        _this.hc = null;
        _this.g1 = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "FocusBorderColor");
        _this.b3 = NaN;
        _this.bt = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "FocusBorderWidth");
        _this.hd = null;
        _this.g2 = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineColor");
        _this.b4 = NaN;
        _this.bu = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineOpacity");
        _this.b5 = NaN;
        _this.bv = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "FocusUnderlineRippleOpacity");
        _this.he = null;
        _this.g3 = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineColor");
        _this.b6 = NaN;
        _this.bw = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineOpacity");
        _this.b7 = NaN;
        _this.bx = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "HoverUnderlineWidth");
        _this.c7 = null;
        _this.fd = null;
        _this.hf = null;
        _this.g4 = MultiColumnComboBox.hy;
        _this.as = null;
        _this.ap = null;
        _this.be = false;
        _this.fg = null;
        _this.d1 = "No Matches Found";
        _this.hg = null;
        _this.g5 = MultiColumnComboBox.hz;
        _this.hh = null;
        _this.g6 = MultiColumnComboBox.h0;
        _this.at = null;
        _this.aq = null;
        _this.fo = "";
        _this.bb = true;
        _this.hi = MultiColumnComboBox.h8;
        _this.g7 = MultiColumnComboBox.h8;
        _this.au = null;
        _this.ar = null;
        _this.hj = null;
        _this.g8 = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineColor");
        _this.b8 = NaN;
        _this.by = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineOpacity");
        _this.hk = null;
        _this.g9 = ThemeResolver.af(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineRippleColor");
        _this.b9 = NaN;
        _this.bz = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineRippleOpacity");
        _this.ca = NaN;
        _this.b0 = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineRippleWidth");
        _this.cb = NaN;
        _this.b1 = ThemeResolver.k(MultiColumnComboBox.ag, XInputGroup.m, enumGetBox(InputGroupDisplayType_$type, 0), "UnderlineWidth");
        _this.a7 = true;
        _this.w = 0;
        _this.dg = null;
        _this.df = null;
        _this.d = null;
        _this.a = null;
        _this.c8 = null;
        _this.aa = 0;
        _this.bm = false;
        _this.a9 = false;
        _this.ba = false;
        _this.bd = false;
        _this.gotFocus = null;
        _this.lostFocus = null;
        _this.textValueChanged = null;
        _this.selectedValueChanged = null;
        _this.keyDown = null;
        _this.change = null;
        _this.changing = null;
        _this.propertyChanged = null;
        _this.m = new ColumnWidth();
        _this.m.f = 100;
        var a = _this.u();
        _this.v = a;
        a.bh(_this);
        return _this;
    }
    Object.defineProperty(MultiColumnComboBox.prototype, "a6", {
        get: function () {
            if (this.a5 == null) {
                this.a5 = new SRProvider(this.v.ad);
                this.a5.cb("MultiColumnComboBox");
            }
            return this.a5;
        },
        enumerable: false,
        configurable: true
    });
    MultiColumnComboBox.prototype.u = function () {
        return new MultiColumnComboBoxView();
    };
    MultiColumnComboBox.prototype.gm = function (a, b, c) {
        switch (a) {
            case "BackgroundColor":
                this.hl = this.hw != null ? this.hw : this.h1;
                break;
            case "BorderColor":
                this.hm = this.hx != null ? this.hx : this.h2;
                break;
            case "BorderWidth":
                this.cc = !isNaN_(this.cm) ? this.cm : this.co;
                break;
            case "ContentPadding":
                this.il = XInputGroup.oh(this.im, this.io);
                break;
            case "CornerRadius":
                this.gw = XInputGroup.kr(this.gx, this.gy);
                break;
            case "FocusBorderColor":
                this.hn = this.h9 != null ? this.h9 : this.h3;
                break;
            case "FocusBorderWidth":
                this.cd = !isNaN_(this.cy) ? this.cy : this.cp;
                break;
            case "FocusUnderlineColor":
                this.ho = this.ia != null ? this.ia : this.h4;
                break;
            case "FocusUnderlineOpacity":
                this.ce = !isNaN_(this.cz) ? this.cz : this.cq;
                break;
            case "FocusUnderlineRippleOpacity":
                this.cf = !isNaN_(this.c0) ? this.c0 : this.cr;
                break;
            case "HoverUnderlineColor":
                this.hp = this.ib != null ? this.ib : this.h5;
                break;
            case "HoverUnderlineOpacity":
                this.cg = !isNaN_(this.c1) ? this.c1 : this.cs;
                break;
            case "HoverUnderlineWidth":
                this.ch = !isNaN_(this.c2) ? this.c2 : this.ct;
                break;
            case "ItemsSource":
            case "ValueField":
            case "DataSourceDesiredProperties":
            case "Fields":
                this.v.cz();
                break;
            case "DefaultColumnWidth":
                this.v.cn(this.defaultColumnWidth);
                break;
            case "LabelTextColor":
                this.hq = this.ic != null ? this.ic : MultiColumnComboBox.hy;
                break;
            case "LabelTextStyle":
                this.av = this.a2 != null ? this.a2 : MultiColumnComboBox.ay;
                break;
            case "NoMatchesFoundLabelTextColor":
                this.hs = this.ie != null ? this.ie : MultiColumnComboBox.h0;
                break;
            case "NoMatchesFoundLabelBackgroundColor":
                this.hr = this.id != null ? this.id : MultiColumnComboBox.hz;
                break;
            case "NoMatchesFoundLabelTextStyle":
                this.aw = this.a3 != null ? this.a3 : MultiColumnComboBox.az;
                break;
            case "UnderlineColor":
                this.hu = this.ih != null ? this.ih : this.h6;
                break;
            case "UnderlineOpacity":
                this.ci = !isNaN_(this.c3) ? this.c3 : this.cu;
                break;
            case "UnderlineRippleColor":
                this.hv = this.ii != null ? this.ii : this.h7;
                break;
            case "UnderlineRippleOpacity":
                this.cj = !isNaN_(this.c4) ? this.c4 : this.cv;
                break;
            case "UnderlineRippleWidth":
                this.ck = !isNaN_(this.c5) ? this.c5 : this.cw;
                break;
            case "UnderlineWidth":
                this.cl = !isNaN_(this.c6) ? this.c6 : this.cx;
                break;
            case "BaseTheme":
                this.ah = this.ai == 0 ? 1 : this.ai;
                break;
            case "Density":
                this.am = this.density == 0 ? 0 : this.density;
                break;
            case "TextColor":
                this.ht = this.ig != null ? this.ig : MultiColumnComboBox.h8;
                break;
            case "TextStyle":
                this.ax = this.a4 != null ? this.a4 : null;
                break;
            case "ActualDensity":
            case "ActualBaseTheme":
            case "ActualTextColor":
            case "ActualTextStyle":
            case "DisplayType":
            case "ActualBackgroundColor":
            case "ActualBorderColor":
            case "ActualBorderWidth":
            case "ActualContentPadding":
            case "ActualCornerRadius":
            case "ActualFocusBorderColor":
            case "ActualFocusBorderWidth":
            case "ActualFocusUnderlineColor":
            case "ActualFocusUnderlineOpacity":
            case "ActualFocusUnderlineRippleOpacity":
            case "ActualHoverUnderlineColor":
            case "ActualHoverUnderlineOpacity":
            case "ActualHoverUnderlineWidth":
            case "ActualLabelTextColor":
            case "ActualLabelTextStyle":
            case "ActualUnderlineColor":
            case "ActualUnderlineOpacity":
            case "ActualUnderlineRippleColor":
            case "ActualUnderlineRippleOpacity":
            case "ActualUnderlineRippleWidth":
            case "ActualUnderlineWidth":
            case "DropDownButtonVisible":
            case "ColumnHeadersVisible":
            case "RowSeparatorsVisible":
            case "ActualNoMatchesFoundLabel":
            case "ActualNoMatchesFoundLabelTextColor":
            case "ActualNoMatchesFoundLabelTextStyle":
            case MultiColumnComboBox.d3:
                this.v.cm();
                break;
            case "NoMatchesFoundLabel":
                this.actualNoMatchesFoundLabel = stringIsNullOrEmpty(this.fh) ? "No Matches Found" : this.fh;
                break;
            case "ActualLabelVisible":
                this.v.c0();
                break;
            case "Label":
            case "PlaceholderText":
                this.v.cm();
                this.actualLabelVisible = !stringIsNullOrEmpty(this.fd);
                break;
            case "Text":
                this.v.cu();
                var d = b != null ? b.toString() : null;
                var e = c != null ? c.toString() : null;
                this.gk(new MultiColumnComboBoxTextChangedEventArgs(d, e));
                this.gl(1, e);
                break;
            case "Value":
                this.gj(new MultiColumnComboBoxValueChangedEventArgs(b, c));
                this.gl(0, c);
                break;
            case "ShowClearButton":
                this.v.cj();
                break;
            case "AllowFilter":
                this.v.a5(this.bg);
                break;
            case "SortMode":
                this.v.cr();
                break;
            case "DisallowTabFocus":
                this.v.cq();
                break;
            case "IsFixed":
                this.v.cp();
                break;
            case "UseTopLayer":
                this.v.cs();
                break;
        }
    };
    MultiColumnComboBox.prototype.gt = function () {
        this.v.c2();
    };
    Object.defineProperty(MultiColumnComboBox.prototype, "a1", {
        get: function () {
            if (null == this.a0) {
                this.a0 = new FontInfo();
                this.a0.q = "Verdana";
                this.a0.f = DeviceUtils.f(16);
            }
            return this.a0;
        },
        enumerable: false,
        configurable: true
    });
    MultiColumnComboBox.prototype.focus = function (a) {
        this.v.a6(a);
    };
    MultiColumnComboBox.prototype.setName = function (a) {
        this.v.ci(a);
    };
    Object.defineProperty(MultiColumnComboBox.prototype, "disallowTabFocus", {
        get: function () {
            return this.a8;
        },
        set: function (a) {
            var b = this.a8;
            this.a8 = a;
            if (b != this.a8) {
                this.gh("DisallowTabFocus", b, this.a8);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "bq", {
        get: function () {
            return this.bc;
        },
        set: function (a) {
            var b = this.bc;
            this.bc = a;
            if (b != this.bc) {
                this.gh("ShowClearButton", b, this.bc);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "g", {
        get: function () {
            return this.c;
        },
        set: function (a) {
            var b = this.c;
            this.c = a;
            if (b != this.c) {
                this.gh("Fields", b, this.c);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "defaultColumnWidth", {
        get: function () {
            return this.m;
        },
        set: function (a) {
            var b = this.m;
            this.m = a;
            if (b != this.m) {
                this.gh("DefaultColumnWidth", b, this.m);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hw", {
        get: function () {
            return this.ha;
        },
        set: function (a) {
            var b = this.ha;
            this.ha = a;
            if (b != this.ha) {
                this.gh("BackgroundColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hl", {
        get: function () {
            return this.gz;
        },
        set: function (a) {
            var b = this.gz;
            this.gz = a;
            if (b != this.gz) {
                this.gh("ActualBackgroundColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ai", {
        get: function () {
            return this.af;
        },
        set: function (a) {
            var b = this.af;
            this.af = a;
            if (b != this.af) {
                this.gh("BaseTheme", enumGetBox(BaseControlTheme_$type, b), enumGetBox(BaseControlTheme_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ah", {
        get: function () {
            return this.ae;
        },
        set: function (a) {
            var b = this.ae;
            this.ae = a;
            if (b != this.ae) {
                this.gh("ActualBaseTheme", enumGetBox(BaseControlTheme_$type, b), enumGetBox(BaseControlTheme_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hx", {
        get: function () {
            return this.hb;
        },
        set: function (a) {
            var b = this.hb;
            this.hb = a;
            if (b != this.hb) {
                this.gh("BorderColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hm", {
        get: function () {
            return this.g0;
        },
        set: function (a) {
            var b = this.g0;
            this.g0 = a;
            if (b != this.g0) {
                this.gh("ActualBorderColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cm", {
        get: function () {
            return this.b2;
        },
        set: function (a) {
            var b = this.b2;
            this.b2 = a;
            if (b != this.b2) {
                this.gh("BorderWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cc", {
        get: function () {
            return this.bs;
        },
        set: function (a) {
            var b = this.bs;
            this.bs = a;
            if (b != this.bs) {
                this.gh("ActualBorderWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "columnHeadersVisible", {
        get: function () {
            return this.bh;
        },
        set: function (a) {
            var b = this.bh;
            this.bh = a;
            if (b != this.bh) {
                this.gh("ColumnHeadersVisible", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "im", {
        get: function () {
            return this.ik;
        },
        set: function (a) {
            var b = this.ik;
            this.ik = a;
            if (b != this.ik) {
                this.gh("ContentPadding", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "il", {
        get: function () {
            return this.ij;
        },
        set: function (a) {
            var b = this.ij;
            this.ij = a;
            if (b != this.ij) {
                this.gh("ActualContentPadding", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "gx", {
        get: function () {
            return this.gv;
        },
        set: function (a) {
            var b = this.gv;
            this.gv = a;
            if (b != this.gv) {
                this.gh("CornerRadius", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "gw", {
        get: function () {
            return this.gu;
        },
        set: function (a) {
            var b = this.gu;
            this.gu = a;
            if (b != this.gu) {
                this.gh("ActualCornerRadius", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "f", {
        get: function () {
            return this.b;
        },
        set: function (a) {
            var b = this.b;
            this.b = a;
            if (b != this.b) {
                this.gh("DataSourceDesiredProperties", b, this.b);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "density", {
        get: function () {
            return this.al;
        },
        set: function (a) {
            var b = this.al;
            this.al = a;
            if (b != this.al) {
                this.gh("Density", enumGetBox(ControlDisplayDensity_$type, b), enumGetBox(ControlDisplayDensity_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "am", {
        get: function () {
            return this.ak;
        },
        set: function (a) {
            var b = this.ak;
            this.ak = a;
            if (b != this.ak) {
                this.gh("ActualDensity", enumGetBox(ControlDisplayDensity_$type, b), enumGetBox(ControlDisplayDensity_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "dropDownButtonVisible", {
        get: function () {
            return this.bk;
        },
        set: function (a) {
            var b = this.bk;
            this.bk = a;
            if (b != this.bk) {
                this.gh("DropDownButtonVisible", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "h9", {
        get: function () {
            return this.hc;
        },
        set: function (a) {
            var b = this.hc;
            this.hc = a;
            if (b != this.hc) {
                this.gh("FocusBorderColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hn", {
        get: function () {
            return this.g1;
        },
        set: function (a) {
            var b = this.g1;
            this.g1 = a;
            if (b != this.g1) {
                this.gh("ActualFocusBorderColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cy", {
        get: function () {
            return this.b3;
        },
        set: function (a) {
            var b = this.b3;
            this.b3 = a;
            if (b != this.b3) {
                this.gh("FocusBorderWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cd", {
        get: function () {
            return this.bt;
        },
        set: function (a) {
            var b = this.bt;
            this.bt = a;
            if (b != this.bt) {
                this.gh("ActualFocusBorderWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ia", {
        get: function () {
            return this.hd;
        },
        set: function (a) {
            var b = this.hd;
            this.hd = a;
            if (b != this.hd) {
                this.gh("FocusUnderlineColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ho", {
        get: function () {
            return this.g2;
        },
        set: function (a) {
            var b = this.g2;
            this.hd = a;
            if (b != this.g2) {
                this.gh("ActualFocusUnderlineColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cz", {
        get: function () {
            return this.b4;
        },
        set: function (a) {
            var b = this.b4;
            this.b4 = a;
            if (b != this.b4) {
                this.gh("FocusUnderlineOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ce", {
        get: function () {
            return this.bu;
        },
        set: function (a) {
            var b = this.bu;
            this.bu = a;
            if (b != this.bu) {
                this.gh("ActualFocusUnderlineOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c0", {
        get: function () {
            return this.b5;
        },
        set: function (a) {
            var b = this.b5;
            this.b5 = a;
            if (b != this.b5) {
                this.gh("FocusUnderlineRippleOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cf", {
        get: function () {
            return this.bv;
        },
        set: function (a) {
            var b = this.bv;
            this.bv = a;
            if (b != this.bv) {
                this.gh("ActualFocusUnderlineRippleOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ib", {
        get: function () {
            return this.he;
        },
        set: function (a) {
            var b = this.he;
            this.he = a;
            if (b != this.he) {
                this.gh("HoverUnderlineColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hp", {
        get: function () {
            return this.g3;
        },
        set: function (a) {
            var b = this.g3;
            this.g3 = a;
            if (b != this.g3) {
                this.gh("ActualHoverUnderlineColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c1", {
        get: function () {
            return this.b6;
        },
        set: function (a) {
            var b = this.b6;
            this.b6 = a;
            if (b != this.b6) {
                this.gh("HoverUnderlineOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cg", {
        get: function () {
            return this.bw;
        },
        set: function (a) {
            var b = this.bw;
            this.bw = a;
            if (b != this.bw) {
                this.gh("ActualHoverUnderlineOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c2", {
        get: function () {
            return this.b7;
        },
        set: function (a) {
            var b = this.b7;
            this.b7 = a;
            if (b != this.b7) {
                this.gh("HoverUnderlineWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ch", {
        get: function () {
            return this.bx;
        },
        set: function (a) {
            var b = this.bx;
            this.bx = a;
            if (b != this.bx) {
                this.gh("ActualHoverUnderlineWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "itemsSource", {
        get: function () {
            return this.c7;
        },
        set: function (a) {
            var b = this.c7;
            this.c7 = a;
            if (b != this.c7) {
                this.gh("ItemsSource", b, this.c7);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "actualDataSource", {
        get: function () {
            return this.v.b();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "fb", {
        get: function () {
            return this.fd;
        },
        set: function (a) {
            var b = this.fb;
            if (0 == StringComparer.b.compare(a, b)) {
                return;
            }
            this.fd = a;
            this.gh("Label", b, this.fd);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ic", {
        get: function () {
            return this.hf;
        },
        set: function (a) {
            var b = this.hf;
            this.hf = a;
            if (b != this.hf) {
                this.gh("LabelTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hq", {
        get: function () {
            return this.g4;
        },
        set: function (a) {
            var b = this.g4;
            this.g4 = a;
            if (b != this.g4) {
                this.gh("ActualLabelTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "a2", {
        get: function () {
            return this.as;
        },
        set: function (a) {
            var b = this.as;
            this.as = a;
            if (b != this.as) {
                this.gh("LabelTextStyle", b, this.as);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "av", {
        get: function () {
            return this.ap;
        },
        set: function (a) {
            var b = this.ap;
            this.ap = a;
            if (this.ap != b) {
                this.gh("ActualLabelTextStyle", b, this.ap);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "actualLabelVisible", {
        get: function () {
            return this.be;
        },
        set: function (a) {
            var b = this.be;
            this.be = a;
            if (b != this.be) {
                this.gh("ActualLabelVisible", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "fh", {
        get: function () {
            return this.fg;
        },
        set: function (a) {
            var b = this.fg;
            if (0 == StringComparer.b.compare(a, b)) {
                return;
            }
            this.fg = a;
            this.gh("NoMatchesFoundLabel", b, this.fg);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "actualNoMatchesFoundLabel", {
        get: function () {
            return this.d1;
        },
        set: function (a) {
            var b = this.d1;
            this.d1 = a;
            if (b != this.d1) {
                this.gh("ActualNoMatchesFoundLabel", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "id", {
        get: function () {
            return this.hg;
        },
        set: function (a) {
            var b = this.hg;
            this.hg = a;
            if (b != this.hg) {
                this.gh("NoMatchesFoundLabelBackgroundColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hr", {
        get: function () {
            return this.g5;
        },
        set: function (a) {
            var b = this.g5;
            this.g5 = a;
            if (b != this.g5) {
                this.gh(MultiColumnComboBox.d3, b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ie", {
        get: function () {
            return this.hh;
        },
        set: function (a) {
            var b = this.hh;
            this.hh = a;
            if (b != this.hh) {
                this.gh("NoMatchesFoundLabelTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hs", {
        get: function () {
            return this.g6;
        },
        set: function (a) {
            var b = this.g6;
            this.g6 = a;
            if (b != this.g6) {
                this.gh("ActualNoMatchesFoundLabelTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "a3", {
        get: function () {
            return this.at;
        },
        set: function (a) {
            var b = this.at;
            this.at = a;
            if (b != this.at) {
                this.gh("NoMatchesFoundLabelTextStyle", b, this.at);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "aw", {
        get: function () {
            return this.aq;
        },
        set: function (a) {
            var b = this.aq;
            this.aq = a;
            if (this.aq != b) {
                this.gh("ActualNoMatchesFoundLabelTextStyle", b, this.aq);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "fn", {
        get: function () {
            return this.fo;
        },
        set: function (a) {
            var b = this.fn;
            if (0 == StringComparer.b.compare(a, b)) {
                return;
            }
            this.fo = a;
            this.gh("PlaceholderText", b, this.fo);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "rowSeparatorsVisible", {
        get: function () {
            return this.bb;
        },
        set: function (a) {
            var b = this.bb;
            this.bb = a;
            if (b != this.bb) {
                this.gh("RowSeparatorsVisible", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ig", {
        get: function () {
            return this.hi;
        },
        set: function (a) {
            var b = this.hi;
            this.hi = a;
            if (b != this.hi) {
                this.gh("TextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ht", {
        get: function () {
            return this.g7;
        },
        set: function (a) {
            var b = this.g7;
            this.g7 = a;
            if (b != this.g7) {
                this.gh("ActualTextColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "a4", {
        get: function () {
            return this.au;
        },
        set: function (a) {
            var b = this.au;
            this.au = a;
            if (b != this.au) {
                this.gh("TextStyle", b, this.au);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ax", {
        get: function () {
            return this.ar;
        },
        set: function (a) {
            var b = this.ar;
            this.ar = a;
            if (this.ar != b) {
                this.gh("ActualTextStyle", b, this.ar);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ih", {
        get: function () {
            return this.hj;
        },
        set: function (a) {
            var b = this.hj;
            this.hj = a;
            if (b != this.hj) {
                this.gh("UnderlineColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hu", {
        get: function () {
            return this.g8;
        },
        set: function (a) {
            var b = this.g8;
            this.g8 = a;
            if (b != this.g8) {
                this.gh("ActualUnderlineColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c3", {
        get: function () {
            return this.b8;
        },
        set: function (a) {
            var b = this.b8;
            this.b8 = a;
            if (b != this.b8) {
                this.gh("UnderlineOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ci", {
        get: function () {
            return this.by;
        },
        set: function (a) {
            var b = this.by;
            this.by = a;
            if (b != this.by) {
                this.gh("ActualUnderlineOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ii", {
        get: function () {
            return this.hk;
        },
        set: function (a) {
            var b = this.hk;
            this.hk = a;
            if (b != this.hk) {
                this.gh("UnderlineRippleColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "hv", {
        get: function () {
            return this.g9;
        },
        set: function (a) {
            var b = this.g9;
            this.g9 = a;
            if (b != this.g9) {
                this.gh("ActualUnderlineRippleColor", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c4", {
        get: function () {
            return this.b9;
        },
        set: function (a) {
            var b = this.b9;
            this.b9 = a;
            if (b != this.b9) {
                this.gh("UnderlineRippleOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cj", {
        get: function () {
            return this.bz;
        },
        set: function (a) {
            var b = this.bz;
            this.bz = a;
            if (b != this.bz) {
                this.gh("ActualUnderlineRippleOpacity", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c5", {
        get: function () {
            return this.ca;
        },
        set: function (a) {
            var b = this.ca;
            this.ca = a;
            if (b != this.ca) {
                this.gh("UnderlineRippleWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ck", {
        get: function () {
            return this.b0;
        },
        set: function (a) {
            var b = this.b0;
            this.b0 = a;
            if (b != this.b0) {
                this.gh("ActualUnderlineRippleWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "c6", {
        get: function () {
            return this.cb;
        },
        set: function (a) {
            var b = this.cb;
            this.cb = a;
            if (b != this.cb) {
                this.gh("UnderlineWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "cl", {
        get: function () {
            return this.b1;
        },
        set: function (a) {
            var b = this.b1;
            this.b1 = a;
            if (b != this.b1) {
                this.gh("ActualUnderlineWidth", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "bg", {
        get: function () {
            return this.a7;
        },
        set: function (a) {
            var b = this.a7;
            this.a7 = a;
            if (b != this.a7) {
                this.gh("AllowFilter", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "x", {
        get: function () {
            return this.w;
        },
        set: function (a) {
            var b = this.w;
            this.w = a;
            if (b != this.w) {
                this.gh("SortMode", enumGetBox(SortMode_$type, b), enumGetBox(SortMode_$type, this.w));
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "fv", {
        get: function () {
            return this.dg;
        },
        set: function (a) {
            var b = this.dg;
            this.dg = a;
            if (b != this.dg) {
                this.gh("TextField", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "text", {
        get: function () {
            return this.df;
        },
        set: function (a) {
            var b = this.df;
            this.df = a;
            if (b != this.df) {
                this.gh("Text", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "j", {
        get: function () {
            return this.d;
        },
        set: function (a) {
            var b = this.d;
            this.d = a;
            if (b != this.d) {
                this.gh("ValueField", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "e", {
        get: function () {
            return this.a;
        },
        set: function (a) {
            var b = this.a;
            this.a = a;
            if (b != this.a) {
                this.gh("ActualValueField", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "value", {
        get: function () {
            return this.c8;
        },
        set: function (a) {
            var b = this.c8;
            this.c8 = a;
            if (b != this.c8) {
                this.gh("Value", b, a);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "ac", {
        get: function () {
            return this.aa;
        },
        set: function (a) {
            var b = this.aa;
            this.aa = a;
            if (b != this.aa) {
                this.gh("DisplayType", enumGetBox(InputGroupDisplayType_$type, b), enumGetBox(InputGroupDisplayType_$type, a));
            }
        },
        enumerable: false,
        configurable: true
    });
    MultiColumnComboBox.prototype.da = function (a, b) {
        var c = new FastReflectionHelper(false, b);
        return c.getPropertyValue(a);
    };
    MultiColumnComboBox.prototype.p = function () {
        var a = this.e5();
        return this.o(a);
    };
    MultiColumnComboBox.prototype.e5 = function () {
        return this.e4(this.fv);
    };
    MultiColumnComboBox.prototype.db = function (a) {
        var b = this.i();
        if (null == b || b.length == 0) {
            return null;
        }
        var c = new List$1(Base.$, 0);
        for (var e = 0; e < b.length; e++) {
            var d = b[e];
            var f = this.da(a, d);
            c.add1(f);
        }
        if (c.count == 1) {
            return c._inner[0];
        }
        return c.toArray();
    };
    MultiColumnComboBox.prototype.e3 = function (a) {
        var b = this.e5();
        var c;
        if (null != b) {
            var d = this.da(a, b);
            c = null != d ? d.toString() : null;
        }
        else {
            c = null;
        }
        return c;
    };
    MultiColumnComboBox.prototype.o = function (a) {
        var e_2, _a;
        var b = this.v.e;
        if (null == b) {
            return null;
        }
        var c = b.actualColumns;
        if (null == c || 0 == c.count) {
            return null;
        }
        if (stringIsNullOrEmpty(a)) {
            return c._inner[0];
        }
        try {
            for (var _b = __values(fromEnum(c)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var d = _c.value;
                if (0 == StringComparer.b.compare(d.lo, a)) {
                    return d;
                }
            }
        }
        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;
            }
        }
        return null;
    };
    MultiColumnComboBox.prototype.e4 = function (a) {
        if (stringIsNullOrEmpty(a)) {
            var b = this.actualDataSource;
            if (null == b) {
                return null;
            }
            var c = b.actualSchema;
            if (null == c) {
                return null;
            }
            var d = c.propertyNames;
            if (0 == d.length) {
                return null;
            }
            return d[0];
        }
        return a;
    };
    MultiColumnComboBox.prototype.h = function (a) {
        var b = new List$1(String_$type, 0);
        if (null == a || a.length == 0) {
            var c = this.e4(null);
            if (stringIsNullOrEmpty(c)) {
                return null;
            }
            b.add(c);
            return b.toArray();
        }
        for (var e = 0; e < a.length; e++) {
            var d = a[e];
            var f = this.e4(d);
            if (null != f) {
                b.add(f);
            }
        }
        if (b.count > 0) {
            return b.toArray();
        }
        return null;
    };
    MultiColumnComboBox.prototype.i = function () {
        var a = this.j;
        return this.h(a);
    };
    MultiColumnComboBox.prototype.gi = function (a) {
        this.gl(2, a);
    };
    MultiColumnComboBox.prototype.gl = function (a, b) {
        if (this.bm) {
            return;
        }
        this.bm = true;
        try {
            switch (a) {
                case 2:
                    {
                        var c = b;
                        var d = void 0;
                        var e = void 0;
                        if (null != c) {
                            d = this.e3(c);
                            e = this.db(c);
                        }
                        else {
                            d = stringEmpty();
                            e = null;
                        }
                        if (this.text != d) {
                            this.text = d;
                        }
                        if (this.value != e) {
                            this.value = e;
                        }
                    }
                    break;
                case 1:
                    this.v.cl(b.toString());
                    break;
                case 0:
                    this.v.ck(b);
                    break;
            }
        }
        finally {
            this.bm = false;
        }
        this.v.cj();
    };
    MultiColumnComboBox.prototype.gq = function (a) {
        this.text = a;
    };
    MultiColumnComboBox.prototype.gs = function () {
        this.ax = (null == this.a4) ? this.a1 : this.a4;
        this.av = (null == this.a2) ? this.a1 : this.a2;
    };
    MultiColumnComboBox.prototype.gr = function () {
    };
    MultiColumnComboBox.prototype.closeUp = function () {
        this.v.az();
    };
    MultiColumnComboBox.prototype.destroy = function () {
        this.provideRenderer(null);
    };
    MultiColumnComboBox.prototype.dropDown = function () {
        this.v.a3();
    };
    MultiColumnComboBox.prototype.select = function () {
        this.v.ce();
    };
    MultiColumnComboBox.prototype.notifySizeChanged = function () {
        this.v.bq();
    };
    MultiColumnComboBox.prototype.provideRenderer = function (a) {
        this.v.b4(a);
        this.actualNoMatchesFoundLabel = !stringIsNullOrWhiteSpace(this.a6.b1("NoMatches")) ? this.a6.b1("NoMatches") : "No Matches Found";
    };
    MultiColumnComboBox.prototype.c9 = function () {
        return this.l();
    };
    MultiColumnComboBox.prototype.ew = function () {
        var a = this.l();
        return a.am();
    };
    MultiColumnComboBox.prototype.l = function () {
        var a = new MultiColumnComboVisualModelExport();
        a.a = AppearanceHelper.a(this.hl);
        a.j = this.ah;
        a.b = AppearanceHelper.a(this.hm);
        a.p = this.cc;
        a.columnHeadersVisible = this.columnHeadersVisible;
        a.au = this.il;
        a.at = this.gw;
        a.k = this.am;
        a.dropDownButtonVisible = this.dropDownButtonVisible;
        a.q = this.ce;
        a.aa = this.fb;
        a.c = AppearanceHelper.a(this.hq);
        a.actualLabelVisible = this.actualLabelVisible;
        a.actualNoMatchesFoundLabel = this.actualNoMatchesFoundLabel;
        a.d = AppearanceHelper.a(this.hr);
        a.e = AppearanceHelper.a(this.hs);
        a.al = this.fn;
        a.rowSeparatorsVisible = this.rowSeparatorsVisible;
        a.f = AppearanceHelper.a(this.ht);
        a.g = AppearanceHelper.a(this.hu);
        a.r = this.ci;
        a.h = AppearanceHelper.a(this.hv);
        a.s = this.cj;
        a.t = this.ck;
        a.u = this.cl;
        a.an = this.text;
        a.y = this.value;
        a.i = this.v.e.exportVisualModel();
        if (this.av != null) {
            var b = this.av;
            if (this.v != null && b.q == null) {
                var c = this.v.ad;
                var d = FontUtil.getFontInfoFromString(c, b.fontString);
                b.q = d.q;
                b.f = d.f;
                b.r = d.r;
                b.t = d.t;
                b.u = d.u;
                b.v = d.v;
            }
            if (b.q != null) {
                a.ab = b.q;
            }
            if (!isNaN_(b.f)) {
                a.v = b.f;
            }
            if (b.v != null) {
                a.af = b.v;
            }
            if (b.t != null) {
                a.ad = b.t;
            }
            if (b.r != null) {
                a.ac = b.t;
            }
        }
        if (this.aw != null) {
            var e = this.aw;
            if (this.v != null && e.q == null) {
                var f = this.v.ad;
                var g = FontUtil.getFontInfoFromString(f, e.fontString);
                e.q = g.q;
                e.f = g.f;
                e.r = g.r;
                e.t = g.t;
                e.u = g.u;
                e.v = g.v;
            }
            if (e.q != null) {
                a.ag = e.q;
            }
            if (!isNaN_(e.f)) {
                a.w = e.f;
            }
            if (e.v != null) {
                a.ak = e.v;
            }
            if (e.t != null) {
                a.ai = e.t;
            }
            if (e.r != null) {
                a.ah = e.t;
            }
        }
        if (this.ax != null) {
            var h = this.ax;
            if (this.v != null && h.q == null) {
                var i = this.v.ad;
                var j = FontUtil.getFontInfoFromString(i, h.fontString);
                h.q = j.q;
                h.f = j.f;
                h.r = j.r;
                h.t = j.t;
                h.u = j.u;
                h.v = j.v;
            }
            if (h.q != null) {
                a.ao = h.q;
            }
            if (!isNaN_(h.f)) {
                a.x = h.f;
            }
            if (h.v != null) {
                a.as = h.v;
            }
            if (h.t != null) {
                a.aq = h.t;
            }
            if (h.r != null) {
                a.ap = h.t;
            }
        }
        return a;
    };
    Object.defineProperty(MultiColumnComboBox.prototype, "bn", {
        get: function () {
            return this.a9;
        },
        set: function (a) {
            var b = this.a9;
            this.a9 = a;
            if (b != this.a9) {
                this.gh("IsFixed", b, this.a9);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "bo", {
        get: function () {
            return this.ba;
        },
        set: function (a) {
            var b = this.ba;
            this.ba = a;
            if (b != this.ba) {
                this.gh("OpenAsChild", b, this.ba);
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MultiColumnComboBox.prototype, "br", {
        get: function () {
            return this.bd;
        },
        set: function (a) {
            var b = this.bd;
            this.bd = a;
            if (b != this.bd) {
                this.gh("UseTopLayer", b, this.bd);
            }
        },
        enumerable: false,
        configurable: true
    });
    MultiColumnComboBox.prototype.ge = function (a) {
        if (null != this.gotFocus) {
            this.gotFocus(this, a);
        }
    };
    MultiColumnComboBox.prototype.gg = function (a) {
        if (null != this.lostFocus) {
            this.lostFocus(this, a);
        }
    };
    MultiColumnComboBox.prototype.gk = function (a) {
        if (null != this.textValueChanged) {
            this.textValueChanged(this, a);
        }
    };
    MultiColumnComboBox.prototype.gj = function (a) {
        if (null != this.selectedValueChanged) {
            this.selectedValueChanged(this, a);
        }
    };
    MultiColumnComboBox.prototype.gh = function (a, b, c) {
        if (this.propertyChanged != null) {
            this.propertyChanged(this, new PropertyChangedEventArgs(a));
        }
        this.gm(a, b, c);
    };
    MultiColumnComboBox.prototype.gf = function (a) {
        if (null != this.keyDown) {
            this.keyDown(this, a);
        }
    };
    MultiColumnComboBox.prototype.gd = function (a) {
        if (null != this.changing) {
            this.changing(this, a);
        }
    };
    MultiColumnComboBox.$t = markType(MultiColumnComboBox, 'MultiColumnComboBox', Base.$, [INotifyPropertyChanged_$type]);
    MultiColumnComboBox.ag = 1;
    MultiColumnComboBox.hy = ThemeResolver.ah(MultiColumnComboBox.ag, XLabel.de, XLabel.c7);
    MultiColumnComboBox.h0 = ThemeResolver.ah(MultiColumnComboBox.ag, XLabel.de, XLabel.c7);
    MultiColumnComboBox.hz = BrushUtil.h(255, 255, 255, 255);
    MultiColumnComboBox.ay = null;
    MultiColumnComboBox.d3 = "ActualNoMatchesFoundLabelBackgroundColor";
    MultiColumnComboBox.az = null;
    MultiColumnComboBox.h8 = BrushUtil.h(221, 0, 0, 0);
    return MultiColumnComboBox;
}(Base));
export { MultiColumnComboBox };
/**
 * @hidden
 */
var MultiColumnComboBoxDataSourceNotificationHandler = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(MultiColumnComboBoxDataSourceNotificationHandler, _super);
    function MultiColumnComboBoxDataSourceNotificationHandler(a, b) {
        var _this = _super.call(this) || this;
        _this.a = null;
        _this.b = false;
        _this.a = a;
        _this.b = b;
        return _this;
    }
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.rangeActualized = function (a, b) {
        if (!this.b) {
            this.a.b0(a, b);
        }
        else {
            this.a.bu(a, b);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifySetItem = function (a, b, c) {
        if (!this.b) {
            this.a.b5(a, b, c);
        }
        else {
            this.a.bx(a, b, c);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifyClearItems = function () {
        if (!this.b) {
            this.a.bs();
        }
        else {
            this.a.bt();
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifyInsertItem = function (a, b) {
        if (!this.b) {
            this.a.b1(a, b);
        }
        else {
            this.a.bv(a, b);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.prototype.notifyRemoveItem = function (a, b) {
        if (!this.b) {
            this.a.b3(a, b);
        }
        else {
            this.a.bw(a, b);
        }
    };
    MultiColumnComboBoxDataSourceNotificationHandler.$t = markType(MultiColumnComboBoxDataSourceNotificationHandler, 'MultiColumnComboBoxDataSourceNotificationHandler', Base.$, [IDataSourceUpdateNotifier_$type]);
    return MultiColumnComboBoxDataSourceNotificationHandler;
}(Base));
export { MultiColumnComboBoxDataSourceNotificationHandler };