UNPKG

air-lib

Version:

This is Air's angular component library

1,115 lines 114 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, Output, EventEmitter, ElementRef, forwardRef } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; import { SelectItem } from './select-item'; import { stripTags } from './select-pipes'; import { escapeRegexp } from './common'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; // Customization: NEW STRING: import { MessageEvent } from '../../../services/Broadcaster/message-event'; import { AutocompleteCountSettings } from '../../../entities/auto-complete-count-settings'; /** @type {?} */ var styles = "\n .ui-select-toggle {\n position: relative;\n }\n\n /* Fix Bootstrap dropdown position when inside a input-group */\n .input-group > .dropdown {\n /* Instead of relative */\n position: static;\n }\n\n .ui-select-match > .btn {\n /* Instead of center because of .btn */\n text-align: left !important;\n }\n\n .ui-select-match > .caret {\n position: absolute;\n top: 45%;\n right: 15px;\n }\n\n .ui-disabled {\n background-color: transparent;\n border-radius: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 5;\n opacity: 0;\n top: 0;\n left: 0;\n cursor: not-allowed;\n }\n\n .ui-select-choices {\n width: 100%;\n height: auto;\n max-height: 200px;\n overflow-x: hidden;\n margin-top: 0;\n }\n\n .ui-select-multiple .ui-select-choices {\n margin-top: 1px;\n }\n .ui-select-choices-row>a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .ui-select-choices-row.active>a {\n color: #000;\n text-decoration: none;\n outline: 0;\n background-color: #f5f5f5;\n }\n\n .ui-select-multiple {\n height: auto;\n padding:3px 3px 0 3px;\n }\n\n .ui-select-multiple input.ui-select-search {\n background-color: transparent !important; /* To prevent double background when disabled */\n border: none;\n outline: none;\n box-shadow: none;\n height: 1.6666em;\n padding: 0;\n margin-bottom: 3px;\n\n }\n .ui-select-match .close {\n font-size: 1.6em;\n line-height: 0.75;\n }\n\n .ui-select-multiple .ui-select-match-item {\n outline: 0;\n margin: 0 3px 3px 0;\n }\n .ui-select-toggle > .caret {\n position: absolute;\n height: 10px;\n top: 50%;\n right: 10px;\n margin-top: -2px;\n }\n.autocomplete-count{\n font-weight: 400;\n}\n.ui-select-choices-row:hover {\n background-color: #f5f5f5;\n}\n.text-muted{\n color: #cccccc;\n}\n"; var SelectComponent = /** @class */ (function () { // Customization: NEW STRINGS: function SelectComponent(element, sanitizer, messageEvent) { this.sanitizer = sanitizer; this.messageEvent = messageEvent; this.editInputData = true; this.allowClear = false; this.placeholder = ''; this.idField = 'id'; this.textField = 'text'; this.multiple = false; this.isSearch = false; this.allowSearchIcons = false; this.hasError = false; this.searchPrepared = new EventEmitter(); // Customization: NEW STRINGS: this.componentId = ''; this.enterKeySuppress = false; this.opened = new EventEmitter(); this.closed = new EventEmitter(); this.inputText = new EventEmitter(); this.data = new EventEmitter(); this.selected = new EventEmitter(); this.removed = new EventEmitter(); this.typed = new EventEmitter(); this.options = []; this.itemObjects = []; this.inputMode = false; this.optionsOpened = false; this.inputValue = ''; this._items = []; this._disabled = false; this._active = []; this.propagateChange = function (_) { }; // Customization: COMMENTED STRINGS: // public constructor(element: ElementRef, private sanitizer: DomSanitizer) { this.element = element; this.clickedOutside = this.clickedOutside.bind(this); } Object.defineProperty(SelectComponent.prototype, "items", { set: /** * @param {?} value * @return {?} */ function (value) { if (!value) { this._items = this.itemObjects = []; } else { this._items = value.filter(function (item) { // if ((typeof item === 'string' && item) || (typeof item === 'object' && item && item.text && item.id)) { if ((typeof item === 'string') || (typeof item === 'object' && item.text)) { return item; } }); this.itemObjects = this._items.map(function (item) { return new SelectItem(item); }); // Customization: NEW STRING: this.options = this.itemObjects; } }, enumerable: true, configurable: true }); Object.defineProperty(SelectComponent.prototype, "disabled", { get: /** * @return {?} */ function () { return this._disabled; }, set: /** * @param {?} value * @return {?} */ function (value) { this._disabled = value; if (this._disabled === true) { this.hideOptions(); } }, enumerable: true, configurable: true }); Object.defineProperty(SelectComponent.prototype, "active", { get: /** * @return {?} */ function () { return this._active; }, set: /** * @param {?} selectedItems * @return {?} */ function (selectedItems) { var _this = this; // Customization: NEW STRINGS: if (this.activeOption) { this.activeOption.id = ''; this.activeOption.text = ''; } if (!selectedItems || selectedItems.length === 0) { this._active = []; } else { /** @type {?} */ var areItemsStrings_1 = typeof selectedItems[0] === 'string'; this._active = selectedItems.map(function (item) { /** @type {?} */ var data = areItemsStrings_1 ? item : { id: item[_this.idField], text: item[_this.textField] }; return new SelectItem(data); }); } }, enumerable: true, configurable: true }); Object.defineProperty(SelectComponent.prototype, "title", { get: /** * @return {?} */ function () { return this._title; }, set: /** * @param {?} searchTitle * @return {?} */ function (searchTitle) { if (searchTitle) { this._title = searchTitle; } }, enumerable: true, configurable: true }); Object.defineProperty(SelectComponent.prototype, "autocompleteCountSettings", { set: /** * @param {?} autocompleteCountSettings * @return {?} */ function (autocompleteCountSettings) { if (autocompleteCountSettings) { this.optionsAutocomplete = autocompleteCountSettings; } }, enumerable: true, configurable: true }); Object.defineProperty(SelectComponent.prototype, "searchString", { set: /** * @param {?} value * @return {?} */ function (value) { if (value) { this.inputValue = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SelectComponent.prototype, "firstItemHasChildren", { get: /** * @return {?} */ function () { return this.itemObjects[0] && this.itemObjects[0].hasChildren(); }, enumerable: true, configurable: true }); /** * @param {?} obj * @return {?} */ SelectComponent.prototype.writeValue = /** * @param {?} obj * @return {?} */ function (obj) { this.active = obj; }; /** * @param {?} fn * @return {?} */ SelectComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.propagateChange = fn; }; /** * @param {?} fn * @return {?} */ SelectComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { // throw new Error("Method not implemented."); }; /** * @param {?} isDisabled * @return {?} */ SelectComponent.prototype.setDisabledState = /** * @param {?} isDisabled * @return {?} */ function (isDisabled) { // throw new Error("Method not implemented."); }; /** * @param {?} value * @param {?=} e * @return {?} */ SelectComponent.prototype.selectMatch = /** * @param {?} value * @param {?=} e * @return {?} */ function (value, e) { if (e === void 0) { e = null; } if (value.id.indexOf('noclick') > -1) { return; } if (e) { e.stopPropagation(); e.preventDefault(); } if (this.options.length <= 0) { return; } if (this.multiple === true) { this.active.push(value); this.data.next(this.active); } if (this.multiple === false) { this.active[0] = value; this.data.next(this.active[0]); } this.doEvent('selected', value); this.hideOptions(); if (this.multiple === true) { this.focusToInput(''); } else { this.focusToInput(stripTags(value.text)); this.element.nativeElement.querySelector('.ui-select-container').focus(); } }; /** * @param {?} html * @return {?} */ SelectComponent.prototype.sanitize = /** * @param {?} html * @return {?} */ function (html) { return this.sanitizer.bypassSecurityTrustHtml(html); }; /** * @param {?} e * @param {?=} isUpMode * @return {?} */ SelectComponent.prototype.inputEvent = /** * @param {?} e * @param {?=} isUpMode * @return {?} */ function (e, isUpMode) { if (isUpMode === void 0) { isUpMode = false; } // Customization: NEW STRING: if (e.type === 'keyup') { /** @type {?} */ var inputText = document.getElementById(this.componentId + '-input-text'); if (this.inputText && inputText) { this.inputText.emit(inputText.value); this.searchText = inputText.value; } } // tab if (e.keyCode === 9) { return; } if (!this.isSearch && isUpMode && (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 38 || e.keyCode === 40)) { e.preventDefault(); return; } // backspace if (!isUpMode && e.keyCode === 8) { /** @type {?} */ var el = this.element.nativeElement .querySelector('div.ui-select-container > input'); if (!el.value || el.value.length <= 0) { if (this.active.length > 0) { this.remove(this.active[this.active.length - 1]); } e.preventDefault(); } } // esc if (!isUpMode && e.keyCode === 27) { this.hideOptions(); this.element.nativeElement.children[0].focus(); e.preventDefault(); return; } // del if (!isUpMode && e.keyCode === 46) { if (this.active.length > 0) { this.remove(this.active[this.active.length - 1]); } e.preventDefault(); } // left if (!isUpMode && e.keyCode === 37 && this._items.length > 0) { this.behavior.first(); e.preventDefault(); return; } // right if (!isUpMode && e.keyCode === 39 && this._items.length > 0) { this.behavior.last(); e.preventDefault(); return; } // up if (!isUpMode && e.keyCode === 38) { this.behavior.prev(); e.preventDefault(); return; } // down if (!isUpMode && e.keyCode === 40) { this.behavior.next(); e.preventDefault(); return; } // enter if (e.keyCode === 13) { // Customization: NEW STRINGS: if (this.isSearch) { this.selectionPrepared(e.target.value); } else { if (this.active.indexOf(this.activeOption) === -1) { this.selectActiveMatch(); this.behavior.next(); } e.preventDefault(); return; } } /** @type {?} */ var target = e.target || e.srcElement; if (target && target.value) { this.inputValue = target.value; this.behavior.filter(new RegExp(escapeRegexp(this.inputValue), 'ig')); this.doEvent('typed', this.inputValue); } }; /** * @return {?} */ SelectComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.behavior = (this.firstItemHasChildren) ? new ChildrenBehavior(this) : new GenericBehavior(this); // Customization: NEW STRING: this.registerBroadcastEvent(); }; /** * @param {?} item * @return {?} */ SelectComponent.prototype.remove = /** * @param {?} item * @return {?} */ function (item) { if (this._disabled === true) { return; } if (this.multiple === true && this.active) { /** @type {?} */ var index = this.active.indexOf(item); this.active.splice(index, 1); this.data.next(this.active); this.doEvent('removed', item); } if (this.multiple === false) { this.active = []; this.data.next(this.active); this.removed.emit(this.active); } }; /** * @param {?} type * @param {?} value * @return {?} */ SelectComponent.prototype.doEvent = /** * @param {?} type * @param {?} value * @return {?} */ function (type, value) { if (((/** @type {?} */ (this)))[type] && value) { ((/** @type {?} */ (this)))[type].next(value); } if (type === 'selected') { this.propagateChange(value); } }; /** * @return {?} */ SelectComponent.prototype.clickedOutside = /** * @return {?} */ function () { this.inputMode = false; this.optionsOpened = false; // Customization: NEW STRING: this.closed.emit(); }; /** * @param {?} e * @return {?} */ SelectComponent.prototype.matchClick = /** * @param {?} e * @return {?} */ function (e) { if (this._disabled === true) { return; } this.inputMode = !this.inputMode; if (this.inputMode === true && ((this.multiple === true && e) || this.multiple === false)) { /** @type {?} */ var editableValue_1 = ''; if (e.target.textContent && this.editInputData) { editableValue_1 = e.target.textContent; // @ts-ignore this.searchSettings.presetList.forEach(function (item) { if (item.text === editableValue_1) { editableValue_1 = ''; } }); // @ts-ignore if (editableValue_1 === this.searchSettings.placeholder) { editableValue_1 = ''; } } else { editableValue_1 = ''; } this.focusToInput(editableValue_1); this.open(); } }; /** * @param {?} event * @return {?} */ SelectComponent.prototype.mainClick = /** * @param {?} event * @return {?} */ function (event) { if (this.inputMode === true || this._disabled === true) { return; } if (event.keyCode === 46) { event.preventDefault(); this.inputEvent(event); return; } if (event.keyCode === 8) { event.preventDefault(); this.inputEvent(event, true); return; } if (event.keyCode === 9 || event.keyCode === 13 || event.keyCode === 27 || (event.keyCode >= 37 && event.keyCode <= 40)) { event.preventDefault(); return; } this.inputMode = true; /** @type {?} */ var value = String .fromCharCode(96 <= event.keyCode && event.keyCode <= 105 ? event.keyCode - 48 : event.keyCode) .toLowerCase(); this.focusToInput(value); this.open(); /** @type {?} */ var target = event.target || event.srcElement; target.value = value; this.inputEvent(event); }; /** * @param {?} value * @return {?} */ SelectComponent.prototype.selectActive = /** * @param {?} value * @return {?} */ function (value) { this.activeOption = value; }; /** * @param {?} value * @return {?} */ SelectComponent.prototype.isActive = /** * @param {?} value * @return {?} */ function (value) { return this.activeOption && (this.activeOption.text === value.text); }; /** * @param {?=} value * @return {?} */ SelectComponent.prototype.focusToInput = /** * @param {?=} value * @return {?} */ function (value) { var _this = this; if (value === void 0) { value = ''; } setTimeout(function () { /** @type {?} */ var el = _this.element.nativeElement.querySelector('div.ui-select-container > input'); if (el) { el.focus(); el.value = value; } }, 0); }; /** * @private * @return {?} */ SelectComponent.prototype.open = /** * @private * @return {?} */ function () { var _this = this; this.options = this.itemObjects .filter(function (option) { return (_this.multiple === false || _this.multiple === true && !_this.active.find(function (o) { return option.text === o.text; })); }); if (this.options.length > 0) { this.behavior.first(); } this.optionsOpened = true; // Customization: NEW STRINGS: this.emitBroadcastEvent(); this.opened.emit(); }; /** * @private * @return {?} */ SelectComponent.prototype.hideOptions = /** * @private * @return {?} */ function () { this.inputMode = false; this.optionsOpened = false; }; /** * @private * @return {?} */ SelectComponent.prototype.selectActiveMatch = /** * @private * @return {?} */ function () { this.selectMatch(this.activeOption); }; // Customization: NEW STRINGS: // Customization: NEW STRINGS: /** * @private * @return {?} */ SelectComponent.prototype.registerBroadcastEvent = // Customization: NEW STRINGS: /** * @private * @return {?} */ function () { var _this = this; this.messageEvent.on() .subscribe(function (message) { if (message !== _this.componentId) { _this.clickedOutside(); } }); }; /** * @private * @return {?} */ SelectComponent.prototype.emitBroadcastEvent = /** * @private * @return {?} */ function () { this.messageEvent.fire(this.componentId); }; /** * @param {?} value * @return {?} */ SelectComponent.prototype.selectionPrepared = /** * @param {?} value * @return {?} */ function (value) { this.searchPrepared.emit(value); this.hideOptions(); }; SelectComponent.decorators = [ { type: Component, args: [{ // tslint:disable-next-line:component-selector selector: 'ng-select', // Customization: NEW STRING: providers: [MessageEvent, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(function () { return SelectComponent; }), multi: true } ], template: "\n\n <div tabindex=\"0\"\n *ngIf=\"multiple === false\"\n (keyup)=\"mainClick($event)\"\n [offClick]=\"clickedOutside\"\n class=\"ui-select-container dropdown open\" [ngClass]=\"{'ui-select-focusud':inputMode, 'has-error': hasError}\">\n <div [ngClass]=\"{'ui-disabled': disabled}\"></div>\n <div *ngIf=\"title\" class='title-input'>{{title}}</div>\n <div class=\"ui-select-match\"\n *ngIf=\"!inputMode\">\n <span tabindex=\"-1\"\n class=\"btn btn-default btn-secondary form-control ui-select-toggle\"\n (click)=\"matchClick($event)\"\n style=\"outline: 0;\">\n <span *ngIf=\"active.length <= 0 || active[0].id ==''\" class=\"ui-select-placeholder text-muted\">{{placeholder}}</span>\n <span *ngIf=\"active.length > 0\" class=\"ui-select-match-text\"\n [ngClass]=\"{'ui-select-allow-clear': allowClear && active.length > 0}\"\n [innerHTML]=\"sanitize(active[0].text)\"></span>\n <i class=\"dropdown-toggle pull-right\"></i>\n <i *ngIf=\"!isSearch\" class=\"caret pull-right\"></i>\n </span>\n </div>\n <div class='ui-block-icons'>\n <a *ngIf=\"allowClear && active.length>0\" class=\"icons rotate45\" (click)=\"remove(activeOption)\">\n <i class=\"ui-close\">+</i>\n </a>\n <a *ngIf=\"allowSearchIcons && active.length > 0\" class=\"icons\" (click)=\"selectionPrepared(searchText)\">\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\n </a>\n </div>\n <input #search type=\"text\" autocomplete=\"false\" tabindex=\"-1\" id=\"{{componentId}}-input-text\"\n (keyup)=\"inputEvent($event, true)\"\n [disabled]=\"disabled\"\n class=\"form-control ui-select-search\"\n *ngIf=\"inputMode\"\n placeholder=\"{{active.length <= 0 ? placeholder : ''}}\">\n <!-- options template -->\n <ul *ngIf=\"optionsOpened && options && options.length > 0 && !firstItemHasChildren\"\n class=\"ui-select-choices dropdown-menu\" role=\"menu\">\n <li *ngFor=\"let o of options\" role=\"menuitem\">\n <div class=\"ui-select-choices-row\"\n (click)=\"selectMatch(o, $event)\" [ngClass]=\"{'active': o.text == active[0]?.text}\">\n <a href=\"javascript:void(0)\" class=\"dropdown-item\">\n <div [innerHtml]=\"sanitize(o.text | highlight:inputValue)\"></div>\n </a>\n </div>\n </li>\n <li *ngIf=\"optionsAutocomplete?.hasAutocompleteCount\">\n <div class=\"autocomplete-count color-link p-l-30\"><i [innerHTML]=\"optionsAutocomplete?.autocompleteCountString\"></i></div>\n </li>\n </ul>\n\n <ul *ngIf=\"optionsOpened && options && options.length > 0 && firstItemHasChildren\"\n class=\"ui-select-choices dropdown-menu\" role=\"menu\">\n <li *ngFor=\"let c of options; let index=index\" role=\"menuitem\">\n <div class=\"divider dropdown-divider\" *ngIf=\"index > 0\"></div>\n <div class=\"dropdown-header\">{{c.text}}</div>\n\n <div *ngFor=\"let o of c.children\"\n class=\"ui-select-choices-row\"\n [class.active]=\"isActive(o)\"\n (mouseenter)=\"selectActive(o)\"\n (click)=\"selectMatch(o, $event)\"\n [ngClass]=\"{'active': isActive(o)}\">\n <a href=\"javascript:void(0)\" class=\"dropdown-item\">\n <div [innerHtml]=\"sanitize(o.text | highlight:inputValue)\"></div>\n </a>\n </div>\n </li>\n </ul>\n </div>\n\n <div tabindex=\"0\"\n *ngIf=\"multiple === true\"\n (keyup)=\"mainClick($event)\"\n (focus)=\"focusToInput('')\"\n [offClick]=\"clickedOutside\"\n class=\"ui-select-container ui-select-multiple dropdown form-control open\">\n <div [ngClass]=\"{'ui-disabled': disabled}\"></div>\n <span class=\"ui-select-match\">\n <span *ngFor=\"let a of active\">\n <span class=\"ui-select-match-item btn btn-default btn-secondary btn-xs\"\n tabindex=\"-1\"\n type=\"button\"\n [ngClass]=\"{'btn-default': true}\">\n <a class=\"close\"\n style=\"margin-left: 5px; padding: 0;\"\n (click)=\"remove(a)\">&times;</a>\n <span>{{a.text}}</span>\n </span>\n </span>\n </span>\n <input type=\"text\"\n (keydown)=\"inputEvent($event)\"\n (keyup)=\"inputEvent($event, true)\"\n (click)=\"matchClick($event)\"\n [disabled]=\"disabled\"\n id=\"{{componentId}}-input-text\"\n autocomplete=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"form-control ui-select-search\"\n placeholder=\"{{active.length <= 0 ? placeholder : ''}}\"\n role=\"combobox\">\n <!-- options template -->\n <ul *ngIf=\"optionsOpened && options && options.length > 0 && !firstItemHasChildren\"\n class=\"ui-select-choices dropdown-menu\" role=\"menu\">\n <li *ngFor=\"let o of options\" role=\"menuitem\">\n <div class=\"ui-select-choices-row\"\n [class.active]=\"isActive(o)\"\n (mouseenter)=\"selectActive(o)\"\n (click)=\"selectMatch(o, $event)\">\n <a href=\"javascript:void(0)\" class=\"dropdown-item\">\n <div [innerHtml]=\"sanitize(o.text | highlight:inputValue)\"></div>\n </a>\n </div>\n </li>\n </ul>\n\n <ul *ngIf=\"optionsOpened && options && options.length > 0 && firstItemHasChildren\"\n class=\"ui-select-choices dropdown-menu\" role=\"menu\">\n <li *ngFor=\"let c of options; let index=index\" role=\"menuitem\">\n <div class=\"divider dropdown-divider\" *ngIf=\"index > 0\"></div>\n <div class=\"dropdown-header\">{{c.text}}</div>\n\n <div *ngFor=\"let o of c.children\"\n class=\"ui-select-choices-row\"\n [class.active]=\"isActive(o)\"\n (mouseenter)=\"selectActive(o)\"\n (click)=\"selectMatch(o, $event)\"\n [ngClass]=\"{'active': isActive(o)}\">\n <a href=\"javascript:void(0)\" class=\"dropdown-item\">\n <div [innerHtml]=\"sanitize(o.text | highlight:inputValue)\"></div>\n </a>\n </div>\n </li>\n </ul>\n </div>\n ", styles: [styles] }] } ]; SelectComponent.ctorParameters = function () { return [ { type: ElementRef }, { type: DomSanitizer }, { type: MessageEvent } ]; }; SelectComponent.propDecorators = { items: [{ type: Input }], disabled: [{ type: Input }], active: [{ type: Input }], title: [{ type: Input }], autocompleteCountSettings: [{ type: Input }], searchString: [{ type: Input }], editInputData: [{ type: Input }], searchSettings: [{ type: Input }], allowClear: [{ type: Input }], placeholder: [{ type: Input }], idField: [{ type: Input }], textField: [{ type: Input }], multiple: [{ type: Input }], isSearch: [{ type: Input }], allowSearchIcons: [{ type: Input }], hasError: [{ type: Input }], searchPrepared: [{ type: Output }], componentId: [{ type: Input }], enterKeySuppress: [{ type: Input }], opened: [{ type: Output }], closed: [{ type: Output }], inputText: [{ type: Output }], data: [{ type: Output }], selected: [{ type: Output }], removed: [{ type: Output }], typed: [{ type: Output }] }; return SelectComponent; }()); export { SelectComponent }; if (false) { /** @type {?} */ SelectComponent.prototype.editInputData; /** @type {?} */ SelectComponent.prototype.searchSettings; /** @type {?} */ SelectComponent.prototype.allowClear; /** @type {?} */ SelectComponent.prototype.placeholder; /** @type {?} */ SelectComponent.prototype.idField; /** @type {?} */ SelectComponent.prototype.textField; /** @type {?} */ SelectComponent.prototype.multiple; /** @type {?} */ SelectComponent.prototype.isSearch; /** * @type {?} * @private */ SelectComponent.prototype._title; /** @type {?} */ SelectComponent.prototype.allowSearchIcons; /** @type {?} */ SelectComponent.prototype.hasError; /** @type {?} */ SelectComponent.prototype.searchPrepared; /** @type {?} */ SelectComponent.prototype.searchText; /** @type {?} */ SelectComponent.prototype.optionsAutocomplete; /** @type {?} */ SelectComponent.prototype.componentId; /** @type {?} */ SelectComponent.prototype.enterKeySuppress; /** @type {?} */ SelectComponent.prototype.opened; /** @type {?} */ SelectComponent.prototype.closed; /** @type {?} */ SelectComponent.prototype.inputText; /** @type {?} */ SelectComponent.prototype.data; /** @type {?} */ SelectComponent.prototype.selected; /** @type {?} */ SelectComponent.prototype.removed; /** @type {?} */ SelectComponent.prototype.typed; /** @type {?} */ SelectComponent.prototype.options; /** @type {?} */ SelectComponent.prototype.itemObjects; /** @type {?} */ SelectComponent.prototype.activeOption; /** @type {?} */ SelectComponent.prototype.element; /** @type {?} */ SelectComponent.prototype.inputMode; /** @type {?} */ SelectComponent.prototype.optionsOpened; /** * @type {?} * @private */ SelectComponent.prototype.behavior; /** @type {?} */ SelectComponent.prototype.inputValue; /** * @type {?} * @private */ SelectComponent.prototype._items; /** * @type {?} * @private */ SelectComponent.prototype._disabled; /** * @type {?} * @private */ SelectComponent.prototype._active; /** @type {?} */ SelectComponent.prototype.propagateChange; /** * @type {?} * @private */ SelectComponent.prototype.sanitizer; /** * @type {?} * @private */ SelectComponent.prototype.messageEvent; } var Behavior = /** @class */ (function () { function Behavior(actor) { this.optionsMap = new Map(); this.actor = actor; } /** * @return {?} */ Behavior.prototype.fillOptionsMap = /** * @return {?} */ function () { var _this = this; this.optionsMap.clear(); /** @type {?} */ var startPos = 0; this.actor.itemObjects .map(function (item) { startPos = item.fillChildrenHash(_this.optionsMap, startPos); }); }; /** * @param {?=} optionsMap * @return {?} */ Behavior.prototype.ensureHighlightVisible = /** * @param {?=} optionsMap * @return {?} */ function (optionsMap) { if (optionsMap === void 0) { optionsMap = null; } /** @type {?} */ var container = this.actor.element.nativeElement.querySelector('.ui-select-choices-content'); if (!container) { return; } /** @type {?} */ var choices = container.querySelectorAll('.ui-select-choices-row'); if (choices.length < 1) { return; } /** @type {?} */ var activeIndex = this.getActiveIndex(optionsMap); if (activeIndex < 0) { return; } /** @type {?} */ var highlighted = choices[activeIndex]; if (!highlighted) { return; } /** @type {?} */ var posY = highlighted.offsetTop + highlighted.clientHeight - container.scrollTop; /** @type {?} */ var height = container.offsetHeight; if (posY > height) { container.scrollTop += posY - height; } else if (posY < highlighted.clientHeight) { container.scrollTop -= highlighted.clientHeight - posY; } }; /** * @private * @param {?=} optionsMap * @return {?} */ Behavior.prototype.getActiveIndex = /** * @private * @param {?=} optionsMap * @return {?} */ function (optionsMap) { if (optionsMap === void 0) { optionsMap = null; } /** @type {?} */ var ai = this.actor.options.indexOf(this.actor.activeOption); if (ai < 0 && optionsMap !== null) { /** @type {?} */ var a = optionsMap.get(this.actor.activeOption.id); if (a) { ai = a; } else { ai = 0; } } return ai; }; return Behavior; }()); export { Behavior }; if (false) { /** @type {?} */ Behavior.prototype.optionsMap; /** @type {?} */ Behavior.prototype.actor; } var GenericBehavior = /** @class */ (function (_super) { tslib_1.__extends(GenericBehavior, _super); function GenericBehavior(actor) { return _super.call(this, actor) || this; } /** * @return {?} */ GenericBehavior.prototype.first = /** * @return {?} */ function () { this.actor.activeOption = this.actor.options[0]; _super.prototype.ensureHighlightVisible.call(this); }; /** * @return {?} */ GenericBehavior.prototype.last = /** * @return {?} */ function () { this.actor.activeOption = this.actor.options[this.actor.options.length - 1]; _super.prototype.ensureHighlightVisible.call(this); }; /** * @return {?} */ GenericBehavior.prototype.prev = /** * @return {?} */ function () { /** @type {?} */ var index = this.actor.options.indexOf(this.actor.activeOption); this.actor.activeOption = this.actor .options[index - 1 < 0 ? this.actor.options.length - 1 : index - 1]; _super.prototype.ensureHighlightVisible.call(this); }; /** * @return {?} */ GenericBehavior.prototype.next = /** * @return {?} */ function () { /** @type {?} */ var index = this.actor.options.indexOf(this.actor.activeOption); this.actor.activeOption = this.actor .options[index + 1 > this.actor.options.length - 1 ? 0 : index + 1]; _super.prototype.ensureHighlightVisible.call(this); }; /** * @param {?} query * @return {?} */ GenericBehavior.prototype.filter = /** * @param {?} query * @return {?} */ function (query) { var _this = this; /** @type {?} */ var options = this.actor.itemObjects .filter(function (option) { return stripTags(option.text).match(query) && (_this.actor.multiple === false || (_this.actor.multiple === true && _this.actor.active.map(function (item) { return item.id; }).indexOf(option.id) < 0)); }); this.actor.options = options; if (this.actor.options.length > 0) { this.actor.activeOption = this.actor.options[0]; _super.prototype.ensureHighlightVisible.call(this); } }; return GenericBehavior; }(Behavior)); export { GenericBehavior }; var ChildrenBehavior = /** @class */ (function (_super) { tslib_1.__extends(ChildrenBehavior, _super); function ChildrenBehavior(actor) { return _super.call(this, actor) || this; } /** * @return {?} */ ChildrenBehavior.prototype.first = /** * @return {?} */ function () { this.actor.activeOption = this.actor.options[0].children[0]; this.fillOptionsMap(); this.ensureHighlightVisible(this.optionsMap); }; /** * @return {?} */ ChildrenBehavior.prototype.last = /** * @return {?} */ function () { this.actor.activeOption = this.actor .options[this.actor.options.length - 1] .children[this.actor.options[this.actor.options.length - 1].children.length - 1]; this.fillOptionsMap(); this.ensureHighlightVisible(this.optionsMap); }; /** * @return {?} */ ChildrenBehavior.prototype.prev = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var indexParent = this.actor.options .findIndex(function (option) { return _this.actor.activeOption.parent && _this.actor.activeOption.parent.id === option.id; }); /** @type {?} */ var index = this.actor.options[indexParent].children .findIndex(function (option) { return _this.actor.activeOption && _this.actor.activeOption.id === option.id; }); this.actor.activeOption = this.actor.options[indexParent].children[index - 1]; if (!this.actor.activeOption) { if (this.actor.options[indexParent - 1]) { this.actor.activeOption = this.actor .options[indexParent - 1] .children[this.actor.options[indexParent - 1].children.length - 1]; } } if (!this.actor.activeOption) { this.last(); } this.fillOptionsMap(); this.ensureHighlightVisible(this.optionsMap); }; /** * @return {?} */ ChildrenBehavior.prototype.next = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var indexParent = this.actor.options .findIndex(function (option) { return _this.actor.activeOption.parent && _this.actor.activeOption.parent.id === option.id; }); /** @type {?} */ var index = this.actor.options[indexParent].children .findIndex(function (option) { return _this.actor.activeOption && _this.actor.activeOption.id === option.id; }); this.actor.activeOption = this.actor.options[indexParent].children[index + 1]; if (!this.actor.activeOption) { if (this.actor.options[indexParent + 1]) { this.actor.activeOption = this.actor.options[indexParent + 1].children[0]; } } if (!this.actor.activeOption) { this.first(); } this.fillOptionsMap(); this.ensureHighlightVisible(this.optionsMap); }; /** * @param {?} query * @return {?} */ ChildrenBehavior.prototype.filter = /** * @param {?} query * @return {?} */ function (query) { var e_1, _a; /** @type {?} */ var options = []; /** @type {?} */ var optionsMap = new Map(); /** @type {?} */ var startPos = 0; try { // tslint:disable-next-line:prefer-const for (var _b = tslib_1.__values(this.actor.itemObjects), _c = _b.next(); !_c.done; _c = _b.next()) { var si = _c.value; /** @type {?} */ var children = si.children.filter(function (option) { return query.test(option.text); }); startPos = si.fillChildrenHash(optionsMap, startPos); if (children.length > 0) { /** @type {?} */ var newSi = si.getSimilar(); newSi.children = children; options.push(newSi); } } } 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.actor.options = options; if (this.actor.options.length > 0) { this.actor.activeOption = this.actor.options[0].children[0]; _super.prototype.ensureHighlightVisible.call(this, optionsMap); } }; return ChildrenBehavior; }(Behavior)); export { ChildrenBehavior }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL25nMi1zZWxlY3QtY3VzdG9tL3NlbGVjdC9zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7O0lBRXJGLE1BQU0sR0FBRyw4Z0VBc0dkO0FBRUQ7SUE4T0ksOEJBQThCO0lBQzlCLHlCQUFtQixPQUFtQixFQUFVLFNBQXVCLEVBQzNELFlBQTBCO1FBRFUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUMzRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVl0QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixjQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVWLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNoQyxh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