UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

868 lines (867 loc) 69.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core'; import { NeedFocusService } from '../../../../../service/NeedFocusService.service'; import { I18N } from '../../../../../decorator/I18N.decorator'; import { Option } from '../../../../../decorator/Option.decorator'; import { AbstractSelectItems } from '../../../../../component/dataview/input/AbstractSelectItems'; import { BEFORE_SHOW_EVENT, SHOW_EVENT, BEFORE_HIDE_EVENT, HIDE_EVENT } from '../../../../../share/CustomEventType'; import { EventUtils } from '../../../../../share/utils/EventUtils'; import { FormControl } from '@angular/forms'; const /** @type {?} */ TYPE_NAME = "material-simple-multi-dropdown"; const /** @type {?} */ NORMAL = 'normal'; const /** @type {?} */ SUCCESS = 'success'; const /** @type {?} */ WARNING = 'warning'; const /** @type {?} */ ERROR = 'error'; export class MaterialSimpleMultiDropdownList extends AbstractSelectItems { /** * @param {?} needFocusService * @param {?} elementRef */ constructor(needFocusService, elementRef) { super(elementRef, needFocusService); this.beforeShowEvent = new EventEmitter(); this.showEvent = new EventEmitter(); this.beforeHideEvent = new EventEmitter(); this.hideEvent = new EventEmitter(); this.formControl = new FormControl(); } /** * @return {?} */ ngOnInit() { super.ngOnInit(); $(this.elementRef.nativeElement).find('mat-select.mat-select').focus(($event) => { if (this.isDisabled()) { return; } this.render(); this.onFocusing($event); }); $(this.elementRef.nativeElement).find('mat-select.mat-select').blur(($event) => { this.onLostFocusing($event); }); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { this.render(); } /** * @return {?} */ render() { let /** @type {?} */ matSelectPanel = $.find('.mat-select-panel'); if (matSelectPanel.length > 0 && this.dropdownHeight) { $(matSelectPanel).css("maxHeight", this.dropdownHeight); } if (matSelectPanel.length > 0 && this.dropdownWidth) { $(matSelectPanel).width(this.dropdownWidth); // $(matSelectPanel).css("minWidth", this.dropdownWidth); $(matSelectPanel).css("maxWidth", this.dropdownWidth); } } /** * @param {?} $event * @return {?} */ onClick($event) { if (this.isReadOnly()) { this.onFocusing($event); $event.preventDefault(); return; } if (this.isDisabled()) { $event.preventDefault(); return; } this.render(); } /** * @param {?} $event * @return {?} */ onFocusing($event) { this.needFocusService.setFocusingComponent(this, $event); } /** * @param {?} $event * @return {?} */ onLostFocusing($event) { this.needFocusService.resetFocusingComponent($event); } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onSelectionChange($event, fireEvent) { let /** @type {?} */ values = $event.value; let /** @type {?} */ items = []; if (!Array.isArray(values)) { values = [values]; } for (let /** @type {?} */ i = 0; i < values.length; i++) { let /** @type {?} */ index = this.getItemIndexFromValue(values[i]); let /** @type {?} */ item = this.getItemAtIndex(index); if (item) { items.push(item); } } this.setSelectedItems(items, $event, fireEvent); } /** * @param {?} selectedItems * @param {?=} $event * @param {?=} fireEvent * @param {?=} fireChangeEvent * @return {?} */ setSelectedItems(selectedItems, $event, fireEvent, fireChangeEvent) { if (selectedItems === null || selectedItems === undefined || !Array.isArray(selectedItems)) { selectedItems = []; } if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } let /** @type {?} */ sItems = []; let /** @type {?} */ newIndices = []; for (let /** @type {?} */ item of selectedItems) { let /** @type {?} */ idx = this.getItemIndex(item); if (idx >= 0) { newIndices.push(idx); sItems.push(item); } } // Only allow "item" which actually exists. selectedItems = sItems; let /** @type {?} */ oldIndex = this.getSelectedIndexes(); EventUtils.handleBrowserEvent(this, 'beforeSelectEvent', $event, fireEvent, ($event) => { // doEvent this._setSelectedItemsSaveData(selectedItems, true, $event, fireChangeEvent); }, ($event) => { // emitBeforeEvent this.emitBeforeSelectEvent(oldIndex, newIndices, $event); }, ($event, result) => { // emitAfterEvent this.emitSelectEvent(oldIndex, newIndices, $event); }, ($event) => { // doPrevented this.formControl.setValue(this.getSelectedData()); }); } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onOpenedChange($event, fireEvent) { if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } if ($event) { // show EventUtils.handleBrowserEvent(this, 'beforeShowEvent', $event, fireEvent, ($event) => { // doEvent }, ($event) => { // emitBeforeEvent this.emitBeforeShowEvent($event); }, ($event, result) => { // emitAfterEvent this.emitShowEvent($event); }, ($event) => { // doPrevented }); } else { // hide EventUtils.handleBrowserEvent(this, 'beforeHideEvent', $event, fireEvent, ($event) => { // doEvent }, ($event) => { // emitBeforeEvent this.emitBeforeHideEvent($event); }, ($event, result) => { // emitAfterEvent this.emitHideEvent($event); }, ($event) => { // doPrevented }); } this.render(); } /** * @return {?} */ _getSelectedData() { return this.getSelectedData(); } /** * @param {?=} $event * @return {?} */ emitBeforeShowEvent($event) { let /** @type {?} */ data = null; let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_SHOW_EVENT, this, data, $event); this.beforeShowEvent.emit(ev); } /** * @param {?=} $event * @return {?} */ emitShowEvent($event) { let /** @type {?} */ data = null; let /** @type {?} */ ev = EventUtils.newCustomEvent(SHOW_EVENT, this, data, $event); this.showEvent.emit(ev); } /** * @param {?=} $event * @return {?} */ emitBeforeHideEvent($event) { let /** @type {?} */ data = null; let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_HIDE_EVENT, this, data, $event); this.beforeHideEvent.emit(ev); } /** * @param {?=} $event * @return {?} */ emitHideEvent($event) { let /** @type {?} */ data = null; let /** @type {?} */ ev = EventUtils.newCustomEvent(HIDE_EVENT, this, data, $event); this.hideEvent.emit(ev); } /** * @return {?} */ _displayHelp() { let /** @type {?} */ hasHelp = this.hasHelp(); return hasHelp; } /** * @return {?} */ hasDescription() { if (this.description !== null && typeof this.description === 'string' && this.description !== '') { return true; } return false; } /** * @return {?} */ hasLabel() { if (this.label !== null && typeof this.label === 'string' && this.label !== '') { return true; } return false; } /** * @return {?} */ getDescription() { return this.description; } /** * @param {?} description * @return {?} */ setDescription(description) { this.description = description; } /** * @return {?} */ getLabel() { return this.label; } /** * @param {?} label * @return {?} */ setLabel(label) { this.label = label; } /** * @return {?} */ getResolveSelectedLabel() { if (this.selectedLabel === null || this.selectedLabel === undefined) { return this.selectedLabel; } if (typeof this.selectedLabel === 'function') { return this.selectedLabel.call(this, this.getSelectedItems()); } return this.selectedLabel; } /** * @return {?} */ getSelectedLabel() { return this.selectedLabel; } /** * @param {?} selectedLabel * @return {?} */ setSelectedLabel(selectedLabel) { this.selectedLabel = selectedLabel; } /** * @return {?} */ getAlign() { return this.align; } /** * @param {?} align * @return {?} */ setAlign(align) { this.align = align; } /** * @return {?} */ getWidth() { return this.width; } /** * @param {?} width * @return {?} */ setWidth(width) { this.width = width; } /** * @return {?} */ getHeight() { return this.height; } /** * @param {?} height * @return {?} */ setHeight(height) { this.height = height; } /** * @return {?} */ getDropdownWidth() { return this.dropdownWidth; } /** * @param {?} dropdownWidth * @return {?} */ setDropdownWidth(dropdownWidth) { this.dropdownWidth = dropdownWidth; this.render(); } /** * @return {?} */ getDropdownHeight() { return this.dropdownHeight; } /** * @param {?} dropdownHeight * @return {?} */ setDropdownHeight(dropdownHeight) { this.dropdownHeight = dropdownHeight; this.render(); } /** * @return {?} */ isDisableRipple() { return this.disableRipple; } /** * @param {?} disableRipple * @return {?} */ setDisableRipple(disableRipple) { this.disableRipple = disableRipple; } /** * @param {?} $event * @return {?} */ doFocus($event) { if ($(this.elementRef.nativeElement).find('mat-select.mat-select:focus').length <= 0) { $(this.elementRef.nativeElement).find('mat-select.mat-select').focus(); } } /** * @param {?} $event * @return {?} */ doLostFocus($event) { if ($(this.elementRef.nativeElement).find('mat-select.mat-select:focus').length > 0) { $(this.elementRef.nativeElement).find('mat-select.mat-select').blur(); } } /** * @param {?} oldValue * @param {?} inputVal * @param {?=} data * @return {?} */ onDataChangePrevented(oldValue, inputVal, data) { this.formControl.setValue(oldValue); } /** * @param {?} inputValue * @param {?} results * @return {?} */ onValidationEnd(inputValue, results) { } /** * @param {?} data * @param {?} inputVal * @return {?} */ onDataChange(data, inputVal) { } /** * @return {?} */ getBeforeShowEvent() { return this.beforeShowEvent; } /** * @param {?} event * @return {?} */ setBeforeShowEvent(event) { this.beforeShowEvent = event; } /** * @return {?} */ getShowEvent() { return this.showEvent; } /** * @param {?} event * @return {?} */ setShowEvent(event) { this.showEvent = event; } /** * @return {?} */ getBeforeHideEvent() { return this.beforeHideEvent; } /** * @param {?} event * @return {?} */ setBeforeHideEvent(event) { this.beforeHideEvent = event; } /** * @return {?} */ getHideEvent() { return this.hideEvent; } /** * @param {?} event * @return {?} */ setHideEvent(event) { this.hideEvent = event; } } MaterialSimpleMultiDropdownList.TYPE_NAME = TYPE_NAME; MaterialSimpleMultiDropdownList.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="material-simple-multi-dropdown" [style.width]="getWidth()" [class.readonly]="isReadOnly()" [class.dirty]="isDataDirty()" [ngClass]="'label-'+getAlign()"> <mat-form-field (click)="onClick($event)"> <mat-select [formControl]="formControl" [phxDisableControl]="isDisabled()" disableOptionCentering="true" [style.text-align]="getAlign()" [style.height]="getHeight()" placeholder="{{getLabel() | phx_text}}" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()" [multiple]="true" [disableRipple]="isDisableRipple()" (selectionChange)="onSelectionChange($event)" (openedChange)="onOpenedChange($event)" [value]="_getSelectedData()"> <mat-select-trigger *ngIf="getSelectedLabel() !== '' && getSelectedLabel() !== null && getSelectedLabel() !== undefined" [style.text-align]="getAlign()"> <span class="select-trigger" [style.text-align]="getAlign()"> {{getResolveSelectedLabel()}} </span> </mat-select-trigger> <ng-container *ngFor="let item of getItems()"> <mat-optgroup *ngIf="item.group" [label]="item.group" [style.width]="getDropdownWidth()"> </mat-optgroup> <mat-option *ngIf="!item.group" [value]="item.value" [style.text-align]="getAlign()"> {{item.label}} </mat-option> </ng-container> </mat-select> </mat-form-field> <div *ngIf="isReadOnly()" class="readonly-panel" (click)="onClick($event)"></div> <div class="validation" [style.display]="getValidationResultMessage() ? undefined : 'none'" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()"> <ng-template [ngIf]="getValidationResultMessage()" [ngIfElse]="validation_else"> {{getValidationResultMessage() | phx_text}} </ng-template> <ng-template #validation_else> <!-- We've to put whitespace if there is no validation msg to prevent empty dom --> <!-- since if validate msg's <div> dom is empty, the component positioning --> <!-- will be misplaced. --> {{ '&nbsp;' }} </ng-template> </div> <div class="description" [style.display]="getValidationResultMessage() ? 'none' : undefined" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()"> <ng-template [ngIf]="getDescription()" [ngIfElse]="description_else"> {{ getDescription() | phx_text }} </ng-template> <ng-template #description_else> <!-- We've to put whitespace if there is no description to prevent empty dom --> <!-- since if description's <div> dom is empty, the component positioning --> <!-- will be misplaced. --> {{ '&nbsp;' }} </ng-template> </div> <div class="help"> {{getHelp() | phx_text}} </div> </div> `, },] }, ]; /** @nocollapse */ MaterialSimpleMultiDropdownList.ctorParameters = () => [ { type: NeedFocusService, }, { type: ElementRef, }, ]; MaterialSimpleMultiDropdownList.propDecorators = { "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "field": [{ type: Input },], "name": [{ type: Input },], "typeOfData": [{ type: Input },], "readOnly": [{ type: Input },], "help": [{ type: Input },], "dataComparator": [{ type: Input, args: ['comparator',] },], "items": [{ type: Input },], "description": [{ type: Input },], "label": [{ type: Input },], "align": [{ type: Input },], "width": [{ type: Input },], "height": [{ type: Input },], "dropdownWidth": [{ type: Input },], "dropdownHeight": [{ type: Input },], "disableRipple": [{ type: Input },], "selectedLabel": [{ type: Input },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },], "endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },], "beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },], "focusEvent": [{ type: Output, args: ['phxFocus',] },], "beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },], "lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeSelectEvent": [{ type: Output, args: ['phxBeforeSelect',] },], "selectEvent": [{ type: Output, args: ['phxSelect',] },], "beforeShowEvent": [{ type: Output, args: ['phxBeforeShow',] },], "showEvent": [{ type: Output, args: ['phxShow',] },], "beforeHideEvent": [{ type: Output, args: ['phxBeforeHide',] },], "hideEvent": [{ type: Output, args: ['phxHide',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialSimpleMultiDropdownList.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialSimpleMultiDropdownList.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], MaterialSimpleMultiDropdownList.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], MaterialSimpleMultiDropdownList.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "field", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "name", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "typeOfData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "readOnly", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], MaterialSimpleMultiDropdownList.prototype, "help", void 0); tslib_1.__decorate([ Option('comparator'), tslib_1.__metadata("design:type", Object) ], MaterialSimpleMultiDropdownList.prototype, "dataComparator", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Array) ], MaterialSimpleMultiDropdownList.prototype, "items", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "description", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "label", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "align", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "width", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "height", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "dropdownWidth", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialSimpleMultiDropdownList.prototype, "dropdownHeight", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialSimpleMultiDropdownList.prototype, "disableRipple", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], MaterialSimpleMultiDropdownList.prototype, "selectedLabel", void 0); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('startValidate'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "startValidateEvent", void 0); tslib_1.__decorate([ Option('endValidate'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "endValidateEvent", void 0); tslib_1.__decorate([ Option('beforeFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "beforeFocusEvent", void 0); tslib_1.__decorate([ Option('focus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "focusEvent", void 0); tslib_1.__decorate([ Option('beforeLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "beforeLostFocusEvent", void 0); tslib_1.__decorate([ Option('lostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "lostFocusEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "beforeChangeEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeSelect'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "beforeSelectEvent", void 0); tslib_1.__decorate([ Option('select'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "selectEvent", void 0); tslib_1.__decorate([ Option('beforeShow'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "beforeShowEvent", void 0); tslib_1.__decorate([ Option('show'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "showEvent", void 0); tslib_1.__decorate([ Option('beforeHide'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "beforeHideEvent", void 0); tslib_1.__decorate([ Option('hide'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialSimpleMultiDropdownList.prototype, "hideEvent", void 0); function MaterialSimpleMultiDropdownList_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ MaterialSimpleMultiDropdownList.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ MaterialSimpleMultiDropdownList.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ MaterialSimpleMultiDropdownList.propDecorators; /** @type {?} */ MaterialSimpleMultiDropdownList.TYPE_NAME; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.dataParent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.ignoreParentData; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.data; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.ignoreParentDisabled; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.delegateHistory; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.onDisabled; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.onEnabled; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.loadingEnabled; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.i18nKey; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.bypass; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.options; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.disabled; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.field; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.name; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.typeOfData; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.readOnly; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.help; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.dataComparator; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.items; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.description; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.label; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.align; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.width; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.height; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.dropdownWidth; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.dropdownHeight; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.disableRipple; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.selectedLabel; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.formControl; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.loadEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.startValidateEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.endValidateEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.beforeFocusEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.focusEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.beforeLostFocusEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.lostFocusEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.beforeChangeEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.changeEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.beforeSelectEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.selectEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.beforeShowEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.showEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.beforeHideEvent; /** @type {?} */ MaterialSimpleMultiDropdownList.prototype.hideEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxTaW1wbGVNdWx0aURyb3Bkb3duTGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi90aGVtZS9tYXRlcmlhbC9jb21wb25lbnQvZGF0YXZpZXcvaW5wdXQvTWF0ZXJpYWxTaW1wbGVNdWx0aURyb3Bkb3duTGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUt0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3Qyx1QkFBTSxTQUFTLEdBQVcsZ0NBQWdDLENBQUM7QUFFM0QsdUJBQU0sTUFBTSxHQUFXLFFBQVEsQ0FBQztBQUNoQyx1QkFBTSxPQUFPLEdBQVcsU0FBUyxDQUFDO0FBQ2xDLHVCQUFNLE9BQU8sR0FBVyxTQUFTLENBQUM7QUFDbEMsdUJBQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQztBQW9EOUIsTUFBTSxzQ0FBdUMsU0FBUSxtQkFBbUI7Ozs7O0lBMkp0RSxZQUFZLGdCQUFrQyxFQUFFLFVBQXNCO1FBQ3BFLEtBQUssQ0FBQyxVQUFVLEVB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WTs7O0lBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUM7c0NBQ00sWUFBWTs7O0lBRWpDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFckMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFHbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFJbEMsTUFBTSxDQUFDLFlBQVksQ0FBQztzQ0FDTSxZQUFZOzs7SUFFdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztzQ0FDTSxZQUFZOzs7SUFFaEMsTUFBTSxDQUFDLFlBQVksQ0FBQztzQ0FDTSxZQUFZOzs7SUFFdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztzQ0FDTSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElIYXNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L0lIYXNEYXRhJztcclxuaW1wb3J0IHsgSUhhc0hlbHAgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSUhhc0hlbHAnO1xyXG5pbXBvcnQgeyBJRGF0YUNvbXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSURhdGFDb21wYXJhdG9yJztcclxuaW1wb3J0IHsgRGVmYXVsdFNlbGVjdEl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9tb2RlbC9EZWZhdWx0U2VsZWN0SXRlbU1vZGVsJztcclxuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvTmVlZEZvY3VzU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgQWJzdHJhY3RTZWxlY3RJdGVtcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9BYnN0cmFjdFNlbGVjdEl0ZW1zJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9tb2RlbC9WYWxpZGF0aW9uUmVzdWx0JztcclxuaW1wb3J0IHsgQkVGT1JFX1NIT1dfRVZFTlQsIFNIT1dfRVZFTlQsIEJFRk9SRV9ISURFX0VWRU5ULCBISURFX0VWRU5UIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcclxuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xyXG5pbXBvcnQgeyBJU2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L21vZGVsL0lTZWxlY3RJdGVtTW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJtYXRlcmlhbC1zaW1wbGUtbXVsdGktZHJvcGRvd25cIjtcclxuXHJcbmNvbnN0IE5PUk1BTDogc3RyaW5nID0gJ25vcm1hbCc7XHJcbmNvbnN0IFNVQ0NFU1M6IHN0cmluZyA9ICdzdWNjZXNzJztcclxuY29uc3QgV0FSTklORzogc3RyaW5nID0gJ3dhcm5pbmcnO1xyXG5jb25zdCBFUlJPUjogc3RyaW5nID0gJ2Vycm9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXHJcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1zaW1wbGUtbXVsdGktZHJvcGRvd25cIiBbc3R5bGUud2lkdGhdPVwiZ2V0V2lkdGgoKVwiIFtjbGFzcy5yZWFkb25seV09XCJpc1JlYWRPbmx5KClcIiBbY2xhc3MuZGlydHldPVwiaXNEYXRhRGlydHkoKVwiIFtuZ0NsYXNzXT1cIidsYWJlbC0nK2dldEFsaWduKClcIj5cclxuXHQ8bWF0LWZvcm0tZmllbGQgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxyXG5cdFx0PG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW3BoeERpc2FibGVDb250cm9sXT1cImlzRGlzYWJsZWQoKVwiIGRpc2FibGVPcHRpb25DZW50ZXJpbmc9XCJ0cnVlXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwiZ2V0QWxpZ24oKVwiIFtzdHlsZS5oZWlnaHRdPVwiZ2V0SGVpZ2h0KClcIiBwbGFjZWhvbGRlcj1cInt7Z2V0TGFiZWwoKSB8IHBoeF90ZXh0fX1cIiBbY2xhc3Mubm9ybWFsXT1cImlzTm9ybWFsKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5zdWNjZXNzXT1cImlzU3VjY2VzcygpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Mud2FybmluZ109XCJpc1dhcm5pbmcoKSAmJiAhaXNEaXNhYmxlZCgpXCJcclxuXHRcdCAgW2NsYXNzLmVycm9yXT1cImlzRXJyb3IoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW211bHRpcGxlXT1cInRydWVcIiBbZGlzYWJsZVJpcHBsZV09XCJpc0Rpc2FibGVSaXBwbGUoKVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiIChvcGVuZWRDaGFuZ2UpPVwib25PcGVuZWRDaGFuZ2UoJGV2ZW50KVwiIFt2YWx1ZV09XCJfZ2V0U2VsZWN0ZWREYXRhKClcIj5cclxuXHRcdFx0PG1hdC1zZWxlY3QtdHJpZ2dlciAqbmdJZj1cImdldFNlbGVjdGVkTGFiZWwoKSAhPT0gJycgJiYgZ2V0U2VsZWN0ZWRMYWJlbCgpICE9PSBudWxsICYmIGdldFNlbGVjdGVkTGFiZWwoKSAhPT0gdW5kZWZpbmVkXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwiZ2V0QWxpZ24oKVwiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwic2VsZWN0LXRyaWdnZXJcIiBbc3R5bGUudGV4dC1hbGlnbl09XCJnZXRBbGlnbigpXCI+XHJcblx0XHRcdFx0XHR7e2dldFJlc29sdmVTZWxlY3RlZExhYmVsKCl9fVxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0PC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKVwiPlxyXG5cdFx0XHRcdDxtYXQtb3B0Z3JvdXAgKm5nSWY9XCJpdGVtLmdyb3VwXCIgW2xhYmVsXT1cIml0ZW0uZ3JvdXBcIiBbc3R5bGUud2lkdGhdPVwiZ2V0RHJvcGRvd25XaWR0aCgpXCI+XHJcblx0XHRcdFx0PC9tYXQtb3B0Z3JvdXA+XHJcblx0XHRcdFx0PG1hdC1vcHRpb24gKm5nSWY9XCIhaXRlbS5ncm91cFwiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwiZ2V0QWxpZ24oKVwiPlxyXG5cdFx0XHRcdFx0e3tpdGVtLmxhYmVsfX1cclxuXHRcdFx0XHQ8L21hdC1vcHRpb24+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PC9tYXQtc2VsZWN0PlxyXG5cdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0PGRpdiAqbmdJZj1cImlzUmVhZE9ubHkoKVwiIGNsYXNzPVwicmVhZG9ubHktcGFuZWxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cInZhbGlkYXRpb25cIiBbc3R5bGUuZGlzcGxheV09XCJnZXRWYWxpZGF0aW9uUmVzdWx0TWVzc2FnZSgpID8gdW5kZWZpbmVkIDogJ25vbmUnXCIgW2NsYXNzLm5vcm1hbF09XCJpc05vcm1hbCgpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Muc3VjY2Vzc109XCJpc1N1Y2Nlc3MoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLndhcm5pbmddPVwiaXNXYXJuaW5nKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5lcnJvcl09XCJpc0Vycm9yKCkgJiYgIWlzRGlzYWJsZWQoKVwiPlxyXG5cdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldFZhbGlkYXRpb25SZXN1bHRNZXNzYWdlKClcIiBbbmdJZkVsc2VdPVwidmFsaWRhdGlvbl9lbHNlXCI+XHJcblx0XHRcdHt7Z2V0VmFsaWRhdGlvblJlc3VsdE1lc3NhZ2UoKSB8IHBoeF90ZXh0fX1cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHQ8bmctdGVtcGxhdGUgI3ZhbGlkYXRpb25fZWxzZT5cclxuXHRcdFx0PCEtLSBXZSd2ZSB0byBwdXQgd2hpdGVzcGFjZSBpZiB0aGVyZSBpcyBubyB2YWxpZGF0aW9uIG1zZyB0byBwcmV2ZW50IGVtcHR5IGRvbSAtLT5cclxuXHRcdFx0PCEtLSBzaW5jZSBpZiB2YWxpZGF0ZSBtc2cncyA8ZGl2PiBkb20gaXMgZW1wdHksIHRoZSBjb21wb25lbnQgcG9zaXRpb25pbmcgLS0+XHJcblx0XHRcdDwhLS0gd2lsbCBiZSBtaXNwbGFjZWQuIC0tPlxyXG5cdFx0XHR7eyAnJm5ic3A7JyB9fVxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbc3R5bGUuZGlzcGxheV09XCJnZXRWYWxpZGF0aW9uUmVzdWx0TWVzc2FnZSgpID8gJ25vbmUnIDogdW5kZWZpbmVkXCIgW2NsYXNzLm5vcm1hbF09XCJpc05vcm1hbCgpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Muc3VjY2Vzc109XCJpc1N1Y2Nlc3MoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLndhcm5pbmddPVwiaXNXYXJuaW5nKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5lcnJvcl09XCJpc0Vycm9yKCkgJiYgIWlzRGlzYWJsZWQoKVwiPlx