UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,150 lines (1,149 loc) 95.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { EventEmitter } from '@angular/core'; import { AbstractInputDataView } from './AbstractInputDataView'; import { DataUtils } from '../../../share/utils/DataUtils'; import { Option } from '../../../decorator/Option.decorator'; import { I18N } from '../../../decorator/I18N.decorator'; import { EventUtils } from '../../../share/utils/EventUtils'; import { BEFORE_SELECT_EVENT, SELECT_EVENT, DATA_CHANGE_EVENT, BEFORE_DATA_CHANGE_EVENT } from '../../../share/CustomEventType'; /** * @abstract */ var AbstractSelectItems = /** @class */ (function (_super) { tslib_1.__extends(AbstractSelectItems, _super); function AbstractSelectItems(elementRef, needFocusService) { var _this = _super.call(this, elementRef, needFocusService) || this; _this.beforeSelectEvent = new EventEmitter(); _this.selectEvent = new EventEmitter(); _this.selectedItems = []; _this.items = []; _this._load = false; _this._isSetOriginal = false; return _this; } /** * @return {?} */ AbstractSelectItems.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); // recall setData to do some function this.setData(this.data); }; /** * @param {?} items * @return {?} */ AbstractSelectItems.prototype._setSelectedItems = /** * @param {?} items * @return {?} */ function (items) { this.selectedItems = items; }; /** * @param {?} data * @return {?} */ AbstractSelectItems.prototype.parseDataToSelectItems = /** * @param {?} data * @return {?} */ function (data) { var /** @type {?} */ valueArray = []; var /** @type {?} */ selectedItemList = []; var /** @type {?} */ isMappingMode = AbstractSelectItems.isFieldMappingEnable(this.field, data); if (isMappingMode) { // field not null && data is object or array of object if (Array.isArray(data)) { if (data.length > 0) { // only resolve selected items from data at index 0. data = data[0]; } else { data = undefined; } } if (data !== null && data !== undefined) { var /** @type {?} */ parseData = DataUtils.getDataValue(this.field, data); if (parseData !== null && parseData !== undefined) { if (Array.isArray(parseData)) { valueArray = parseData.concat([]); } else { valueArray.push(parseData); } } } } else { // data is not object or object with no field or array of primitive aka. data == selectedItem value. if (Array.isArray(data)) { try { for (var data_1 = tslib_1.__values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) { var r = data_1_1.value; valueArray.push(r); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1); } finally { if (e_1) throw e_1.error; } } } else { valueArray.push(data); } } try { for (var valueArray_1 = tslib_1.__values(valueArray), valueArray_1_1 = valueArray_1.next(); !valueArray_1_1.done; valueArray_1_1 = valueArray_1.next()) { var val = valueArray_1_1.value; var /** @type {?} */ index = this.getItemIndexFromValue(val); if (index >= 0 && index < this.items.length) { selectedItemList.push(this.items[index]); } } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (valueArray_1_1 && !valueArray_1_1.done && (_b = valueArray_1.return)) _b.call(valueArray_1); } finally { if (e_2) throw e_2.error; } } return selectedItemList; var e_1, _a, e_2, _b; }; /** * @param {?} selectedItems * @param {?=} isSaveToData * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractSelectItems.prototype._setSelectedItemsSaveData = /** * @param {?} selectedItems * @param {?=} isSaveToData * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (selectedItems, isSaveToData, $event, fireEvent) { if (isSaveToData === void 0) { isSaveToData = true; } if (fireEvent === void 0) { fireEvent = true; } // update inner data and set to super data to chainging var /** @type {?} */ finalSelectedItems = []; // only value in items are allow if (selectedItems !== null && typeof selectedItems !== 'undefined') { try { for (var selectedItems_1 = tslib_1.__values(selectedItems), selectedItems_1_1 = selectedItems_1.next(); !selectedItems_1_1.done; selectedItems_1_1 = selectedItems_1.next()) { var item = selectedItems_1_1.value; if (this.items.indexOf(item) >= 0) { finalSelectedItems.push(item); } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (selectedItems_1_1 && !selectedItems_1_1.done && (_a = selectedItems_1.return)) _a.call(selectedItems_1); } finally { if (e_3) throw e_3.error; } } } this._setSelectedItems(finalSelectedItems); var /** @type {?} */ parseValues = this.getSelectedData(); if (isSaveToData) { _super.prototype.setInputValue.call(this, parseValues, $event, fireEvent); } if (!this._isSetOriginal) { this.originalData = undefined; if (Array.isArray(this.data)) { this.originalData = []; try { for (var _b = tslib_1.__values(this.data), _c = _b.next(); !_c.done; _c = _b.next()) { var d = _c.value; if (typeof this.data === 'object') { this.originalData.push(JSON.parse(JSON.stringify(d))); } else { this.originalData.push(d); } } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (_c && !_c.done && (_d = _b.return)) _d.call(_b); } finally { if (e_4) throw e_4.error; } } } else { if (typeof this.data === 'object') { this.originalData = JSON.parse(JSON.stringify(this.data)); } else { this.originalData = this.data; } } this._isSetOriginal = true; } _super.prototype.setData.call(this, this.data); var e_3, _a, e_4, _d; }; /** * @param {?} data * @param {?=} isSaveToData * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractSelectItems.prototype._setData = /** * @param {?} data * @param {?=} isSaveToData * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (data, isSaveToData, $event, fireEvent) { if (isSaveToData === void 0) { isSaveToData = true; } var /** @type {?} */ selectedItemList = this.parseDataToSelectItems(data); _super.prototype.setData.call(this, data); if (this._preloadData === undefined) { this._preloadData = data; } this._setSelectedItemsSaveData(selectedItemList, isSaveToData, $event, fireEvent); }; // Override emitBeforeChangeEvent to inject "oldIndex" & "newIndex" in eventData. /** * @param {?} oldValue * @param {?} newValue * @param {?} valueChange * @param {?=} $event * @return {?} */ AbstractSelectItems.prototype.emitBeforeChangeEvent = /** * @param {?} oldValue * @param {?} newValue * @param {?} valueChange * @param {?=} $event * @return {?} */ function (oldValue, newValue, valueChange, $event) { var /** @type {?} */ oldIndex = this.getItemIndexFromValue(oldValue); var /** @type {?} */ newIndex = this.getItemIndexFromValue(newValue); var /** @type {?} */ eventData = { data: this.data, oldValue: oldValue, newValue: newValue, oldIndex: oldIndex, newIndex: newIndex, valueChange: valueChange }; // emit event var /** @type {?} */ data = eventData; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_DATA_CHANGE_EVENT, this, data, $event); // We've to emitBeforeChangeEvent() on parent first since it might be prevented from parent. // In this case, the child change event should be prevented also. var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && parent !== undefined) { if (typeof parent.getBeforeChangeEvent === 'function') { // In most cases, we'll emitBeforeChangeEvent() on parent with the same event object ("ev"). // to make it preventable from parent. parent.getBeforeChangeEvent().emit(ev); } else if (typeof parent.emitBeforeChangeEvent === 'function') { // Fall back method if parent doesn't have getBeforeChangeEvent() method. parent.emitBeforeChangeEvent(oldValue, newValue, $event); } } if (this.beforeChangeEvent !== null && this.beforeChangeEvent !== undefined) { this.beforeChangeEvent.emit(ev); } }; // Override edmitChangeEvent to inject "oldIndex" & "newIndex" in eventData. /** * @param {?} oldValue * @param {?} newValue * @param {?} valueChange * @param {?=} $event * @return {?} */ AbstractSelectItems.prototype.emitChangeEvent = /** * @param {?} oldValue * @param {?} newValue * @param {?} valueChange * @param {?=} $event * @return {?} */ function (oldValue, newValue, valueChange, $event) { var /** @type {?} */ oldIndex = this.getItemIndexFromValue(oldValue); var /** @type {?} */ newIndex = this.getItemIndexFromValue(newValue); var /** @type {?} */ eventData = { data: this.data, oldValue: oldValue, newValue: newValue, oldIndex: oldIndex, newIndex: newIndex, valueChange: valueChange }; // emit event var /** @type {?} */ data = eventData; var /** @type {?} */ ev = EventUtils.newCustomEvent(DATA_CHANGE_EVENT, this, data, $event); if (this.changeEvent !== null && this.changeEvent !== undefined) { this.changeEvent.emit(ev); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && parent !== undefined) { if (typeof parent.getChangeEvent === 'function') { // In most cases, we'll emitChangeEvent() on parent with the same event object ("ev"). parent.getChangeEvent().emit(ev); } else if (typeof parent.emitChangeEvent === 'function') { // Fall back method if parent doesn't have getChangeEvent() method. parent.emitChangeEvent(oldValue, newValue, $event); } } }; /** * @param {?} oldIndices * @param {?} newIndices * @param {?} $event * @return {?} */ AbstractSelectItems.prototype.emitBeforeSelectEvent = /** * @param {?} oldIndices * @param {?} newIndices * @param {?} $event * @return {?} */ function (oldIndices, newIndices, $event) { var /** @type {?} */ oItems = []; if (oldIndices !== null && oldIndices !== undefined) { try { for (var oldIndices_1 = tslib_1.__values(oldIndices), oldIndices_1_1 = oldIndices_1.next(); !oldIndices_1_1.done; oldIndices_1_1 = oldIndices_1.next()) { var oldIndex = oldIndices_1_1.value; var /** @type {?} */ oItem = this.getItemAtIndex(oldIndex); oItems.push(oItem); } } catch (e_5_1) { e_5 = { error: e_5_1 }; } finally { try { if (oldIndices_1_1 && !oldIndices_1_1.done && (_a = oldIndices_1.return)) _a.call(oldIndices_1); } finally { if (e_5) throw e_5.error; } } } var /** @type {?} */ nItems = []; if (newIndices !== null && newIndices !== undefined) { try { for (var newIndices_1 = tslib_1.__values(newIndices), newIndices_1_1 = newIndices_1.next(); !newIndices_1_1.done; newIndices_1_1 = newIndices_1.next()) { var newIndex = newIndices_1_1.value; var /** @type {?} */ nItem = this.getItemAtIndex(newIndex); nItems.push(nItem); } } catch (e_6_1) { e_6 = { error: e_6_1 }; } finally { try { if (newIndices_1_1 && !newIndices_1_1.done && (_b = newIndices_1.return)) _b.call(newIndices_1); } finally { if (e_6) throw e_6.error; } } } var /** @type {?} */ data = { item: nItems && nItems.length > 0 ? nItems[0] : null, items: nItems, index: newIndices && newIndices.length > 0 ? newIndices[0] : -1, indices: newIndices, oldItem: oItems && oItems.length > 0 ? oItems[0] : null, oldItems: oItems, oldIndex: oldIndices && oldIndices.length > 0 ? oldIndices[0] : -1, oldIndices: oldIndices }; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_SELECT_EVENT, this, data, $event); this.beforeSelectEvent.emit(ev); var e_5, _a, e_6, _b; }; /** * @param {?} oldIndices * @param {?} newIndices * @param {?} $event * @return {?} */ AbstractSelectItems.prototype.emitSelectEvent = /** * @param {?} oldIndices * @param {?} newIndices * @param {?} $event * @return {?} */ function (oldIndices, newIndices, $event) { var /** @type {?} */ oItems = []; if (oldIndices !== null && oldIndices !== undefined) { try { for (var oldIndices_2 = tslib_1.__values(oldIndices), oldIndices_2_1 = oldIndices_2.next(); !oldIndices_2_1.done; oldIndices_2_1 = oldIndices_2.next()) { var oldIndex = oldIndices_2_1.value; var /** @type {?} */ oItem = this.getItemAtIndex(oldIndex); oItems.push(oItem); } } catch (e_7_1) { e_7 = { error: e_7_1 }; } finally { try { if (oldIndices_2_1 && !oldIndices_2_1.done && (_a = oldIndices_2.return)) _a.call(oldIndices_2); } finally { if (e_7) throw e_7.error; } } } var /** @type {?} */ nItems = []; if (newIndices !== null && newIndices !== undefined) { try { for (var newIndices_2 = tslib_1.__values(newIndices), newIndices_2_1 = newIndices_2.next(); !newIndices_2_1.done; newIndices_2_1 = newIndices_2.next()) { var newIndex = newIndices_2_1.value; var /** @type {?} */ nItem = this.getItemAtIndex(newIndex); nItems.push(nItem); } } catch (e_8_1) { e_8 = { error: e_8_1 }; } finally { try { if (newIndices_2_1 && !newIndices_2_1.done && (_b = newIndices_2.return)) _b.call(newIndices_2); } finally { if (e_8) throw e_8.error; } } } var /** @type {?} */ data = { item: nItems && nItems.length > 0 ? nItems[0] : null, items: nItems, index: newIndices && newIndices.length > 0 ? newIndices[0] : -1, indices: newIndices, oldItem: oItems && oItems.length > 0 ? oItems[0] : null, oldItems: oItems, oldIndex: oldIndices && oldIndices.length > 0 ? oldIndices[0] : -1, oldIndices: oldIndices }; var /** @type {?} */ ev = EventUtils.newCustomEvent(SELECT_EVENT, this, data, $event); this.selectEvent.emit(ev); var e_7, _a, e_8, _b; }; /** * @param {?} items * @return {?} */ AbstractSelectItems.prototype.parseData = /** * @param {?} items * @return {?} */ function (items) { var /** @type {?} */ result = []; if (items !== null && typeof items !== 'undefined') { try { for (var items_1 = tslib_1.__values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) { var item = items_1_1.value; result.push(item.getValue()); } } catch (e_9_1) { e_9 = { error: e_9_1 }; } finally { try { if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1); } finally { if (e_9) throw e_9.error; } } } return result; var e_9, _a; }; /** * @param {?} o1 * @param {?} o2 * @return {?} */ AbstractSelectItems.prototype.equalData = /** * @param {?} o1 * @param {?} o2 * @return {?} */ function (o1, o2) { if (this.dataComparator !== null && typeof this.dataComparator !== 'undefined') { return this.dataComparator.equals(o1, o2); } else { try { return JSON.stringify(o1) === JSON.stringify(o2); } catch (/** @type {?} */ e) { return (o1 === o2); } } }; /** * @param {?} o1 * @param {?} o2 * @return {?} */ AbstractSelectItems.prototype.compareData = /** * @param {?} o1 * @param {?} o2 * @return {?} */ function (o1, o2) { if (this.dataComparator !== null && typeof this.dataComparator !== 'undefined') { return this.dataComparator.compare(o1, o2); } return -1; }; /** * @param {?} index * @return {?} */ AbstractSelectItems.prototype.getItemAtIndex = /** * @param {?} index * @return {?} */ function (index) { if (index >= 0) { if (this.items !== null && typeof this.items !== 'undefined') { if (index < this.items.length) { return this.items[index]; } } } return null; }; /** * @return {?} */ AbstractSelectItems.prototype.loadedItems = /** * @return {?} */ function () { if (this._load) { return; } this._load = true; this._isSetOriginal = false; this._setData(this._preloadData, true, null, false); }; /** * @param {?} data * @return {?} */ AbstractSelectItems.prototype.setPreloadData = /** * @param {?} data * @return {?} */ function (data) { this._preloadData = data; }; // for getting data to be set into mapping object // for ex. in subclass(selectOneItems this method will return single value instead of array) /** * @return {?} */ AbstractSelectItems.prototype.getSelectedData = /** * @return {?} */ function () { return this.parseData(this.getSelectedItems()); }; /** * @return {?} */ AbstractSelectItems.prototype.unload = /** * @return {?} */ function () { this._preloadData = null; this._load = false; }; /** * @return {?} */ AbstractSelectItems.prototype.getItems = /** * @return {?} */ function () { return this.items; }; /** * @param {?} items * @return {?} */ AbstractSelectItems.prototype.setItems = /** * @param {?} items * @return {?} */ function (items) { this.items = items; // recall setData to do some function this.setData(this.data); }; /** * @return {?} */ AbstractSelectItems.prototype.getSelectedValues = /** * @return {?} */ function () { var /** @type {?} */ result = []; if (this.selectedItems !== null && typeof this.selectedItems !== 'undefined') { try { for (var _a = tslib_1.__values(this.selectedItems), _b = _a.next(); !_b.done; _b = _a.next()) { var item = _b.value; result.push(item.getValue()); } } catch (e_10_1) { e_10 = { error: e_10_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_10) throw e_10.error; } } } return result; var e_10, _c; }; /** * @param {?} index * @return {?} */ AbstractSelectItems.prototype.isIndexSelected = /** * @param {?} index * @return {?} */ function (index) { if (this.getSelectedIndexes().indexOf(index) == -1 || index === null || typeof index !== 'number') { return false; } else { return true; } }; /** * @param {?} item * @return {?} */ AbstractSelectItems.prototype.isItemSelected = /** * @param {?} item * @return {?} */ function (item) { if (this.getSelectedItems().indexOf(item) == -1 || item === null || typeof item === 'undefined') { return false; } else { return true; } }; /** * @return {?} */ AbstractSelectItems.prototype.getSelectedItems = /** * @return {?} */ function () { return this.selectedItems; }; /** * @return {?} */ AbstractSelectItems.prototype.getSelectedIndexes = /** * @return {?} */ function () { var /** @type {?} */ indexes = []; if (this.selectedItems !== null && typeof this.selectedItems !== 'undefined' && this.items !== null && typeof this.items !== 'undefined' && Array.isArray(this.items)) { try { for (var _a = tslib_1.__values(this.selectedItems), _b = _a.next(); !_b.done; _b = _a.next()) { var selected = _b.value; var /** @type {?} */ sIndex = this.items.indexOf(selected); if (sIndex <= -1) { continue; } if (indexes.indexOf(sIndex) <= -1) { indexes.push(sIndex); } } } catch (e_11_1) { e_11 = { error: e_11_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_11) throw e_11.error; } } } return indexes; var e_11, _c; }; /** * @param {?} selectedItems * @param {?=} $event * @param {?=} fireEvent * @param {?=} fireChangeEvent * @return {?} */ AbstractSelectItems.prototype.setSelectedItems = /** * @param {?} selectedItems * @param {?=} $event * @param {?=} fireEvent * @param {?=} fireChangeEvent * @return {?} */ function (selectedItems, $event, fireEvent, fireChangeEvent) { var _this = this; if (selectedItems === null || selectedItems === undefined || !Array.isArray(selectedItems)) { selectedItems = []; } if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } var /** @type {?} */ sItems = []; var /** @type {?} */ newIndices = []; try { for (var selectedItems_2 = tslib_1.__values(selectedItems), selectedItems_2_1 = selectedItems_2.next(); !selectedItems_2_1.done; selectedItems_2_1 = selectedItems_2.next()) { var item = selectedItems_2_1.value; var /** @type {?} */ idx = this.getItemIndex(item); if (idx >= 0) { newIndices.push(idx); sItems.push(item); } } } catch (e_12_1) { e_12 = { error: e_12_1 }; } finally { try { if (selectedItems_2_1 && !selectedItems_2_1.done && (_a = selectedItems_2.return)) _a.call(selectedItems_2); } finally { if (e_12) throw e_12.error; } } // Only allow "item" which actually exists. selectedItems = sItems; var /** @type {?} */ oldIndex = this.getSelectedIndexes(); EventUtils.handleBrowserEvent(this, 'beforeSelectEvent', $event, fireEvent, function ($event) { // doEvent // doEvent _this._setSelectedItemsSaveData(selectedItems, true, $event, fireChangeEvent); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeSelectEvent(oldIndex, newIndices, $event); }, function ($event, result) { // emitAfterEvent // emitAfterEvent _this.emitSelectEvent(oldIndex, newIndices, $event); }, function ($event) { // doPrevented }); var e_12, _a; }; /** * @param {?} indices * @param {?=} $event * @param {?=} fireEvent * @param {?=} fireChangeEvent * @return {?} */ AbstractSelectItems.prototype.setSelectedIndexes = /** * @param {?} indices * @param {?=} $event * @param {?=} fireEvent * @param {?=} fireChangeEvent * @return {?} */ function (indices, $event, fireEvent, fireChangeEvent) { if (indices === null || indices === undefined || !Array.isArray(indices)) { indices = []; } if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } var /** @type {?} */ sItems = []; if (indices !== null && typeof indices !== 'undefined' && Array.isArray(indices)) { if (this.items !== null && typeof this.items !== 'undefined' && Array.isArray(this.items)) { try { for (var indices_1 = tslib_1.__values(indices), indices_1_1 = indices_1.next(); !indices_1_1.done; indices_1_1 = indices_1.next()) { var index = indices_1_1.value; if (index < 0 || index < this.items.length) { var /** @type {?} */ item = this.items[index]; if (sItems.indexOf(item) >= 0) { continue; } sItems.push(item); } } } catch (e_13_1) { e_13 = { error: e_13_1 }; } finally { try { if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1); } finally { if (e_13) throw e_13.error; } } } } this.setSelectedItems(sItems, $event, fireEvent, fireChangeEvent); var e_13, _a; }; /** * @param {?} inputVal * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractSelectItems.prototype.setInputValue = /** * @param {?} inputVal * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (inputVal, $event, fireEvent) { // should be array if not wrap into array var /** @type {?} */ valContainer = []; if (!Array.isArray(inputVal)) { valContainer.push(inputVal); } else { valContainer = inputVal; } var /** @type {?} */ selectIndexes = []; try { for (var valContainer_1 = tslib_1.__values(valContainer), valContainer_1_1 = valContainer_1.next(); !valContainer_1_1.done; valContainer_1_1 = valContainer_1.next()) { var value = valContainer_1_1.value; var /** @type {?} */ index = this.getItemIndexFromValue(value); if (index <= -1) { continue; } selectIndexes.push(index); } } catch (e_14_1) { e_14 = { error: e_14_1 }; } finally { try { if (valContainer_1_1 && !valContainer_1_1.done && (_a = valContainer_1.return)) _a.call(valContainer_1); } finally { if (e_14) throw e_14.error; } } if (selectIndexes.length > 0) { this.setSelectedIndexes(selectIndexes); } if (!this.isMappingEnable() && this._preloadData === undefined) { this._preloadData = inputVal; } var e_14, _a; }; /** * @param {?} data * @return {?} */ AbstractSelectItems.prototype.setData = /** * @param {?} data * @return {?} */ function (data) { this._setData(data, true, null, true); }; /** * @return {?} */ AbstractSelectItems.prototype.isSelfDataDirty = /** * @return {?} */ function () { if (Array.isArray(this.originalData) && Array.isArray(this.data)) { if (this.originalData.length !== this.data.length) { return true; } try { // one of data not match return true; for (var _a = tslib_1.__values(this.data), _b = _a.next(); !_b.done; _b = _a.next()) { var d = _b.value; var /** @type {?} */ parseData = d; if (this.field !== null && typeof this.field !== 'undefined' && typeof parseData === 'object') { parseData = DataUtils.getDataValue(this.field, parseData); } try { for (var _c = tslib_1.__values(this.originalData), _d = _c.next(); !_d.done; _d = _c.next()) { var ori = _d.value; var /** @type {?} */ oriParseData = ori; if (this.field !== null && typeof this.field !== 'undefined' && typeof oriParseData === 'object') { oriParseData = DataUtils.getDataValue(this.field, oriParseData); } if (!this.equalData(parseData, oriParseData)) { return true; } } } catch (e_15_1) { e_15 = { error: e_15_1 }; } finally { try { if (_d && !_d.done && (_e = _c.return)) _e.call(_c); } finally { if (e_15) throw e_15.error; } } } } catch (e_16_1) { e_16 = { error: e_16_1 }; } finally { try { if (_b && !_b.done && (_f = _a.return)) _f.call(_a); } finally { if (e_16) throw e_16.error; } } } else if ((typeof this.originalData === 'undefined' || this.originalData === null) && (typeof this.data === 'undefined' || this.data === null)) { return false; } else { var /** @type {?} */ parseData = this.data; if (this.field !== null && typeof this.field !== 'undefined' && typeof parseData === 'object') { parseData = DataUtils.getDataValue(this.field, parseData); } var /** @type {?} */ oriParseData = this.originalData; if (this.field !== null && typeof this.field !== 'undefined' && typeof oriParseData === 'object') { oriParseData = DataUtils.getDataValue(this.field, oriParseData); } return (!this.equalData(parseData, oriParseData)); } return false; var e_16, _f, e_15, _e; }; /** * @param {?} data * @return {?} */ AbstractSelectItems.prototype.selfSaveData = /** * @param {?} data * @return {?} */ function (data) { if (typeof this.data === 'object') { this.originalData = JSON.parse(JSON.stringify(this.data)); } else { this.originalData = this.data; } }; /** * @return {?} */ AbstractSelectItems.prototype.selfResetData = /** * @return {?} */ function () { var /** @type {?} */ selectedItemList = this.parseDataToSelectItems(this.originalData); this.setSelectedItems(selectedItemList); }; /** * @return {?} */ AbstractSelectItems.prototype.resetOriginalData = /** * @return {?} */ function () { this._isSetOriginal = false; this.originalData = undefined; }; /** * @param {?} value * @return {?} */ AbstractSelectItems.prototype.containsItemValue = /** * @param {?} value * @return {?} */ function (value) { var /** @type {?} */ index = this.getItemIndexFromValue(value); return index > -1; }; /** * @param {?} item * @return {?} */ AbstractSelectItems.prototype.getItemIndex = /** * @param {?} item * @return {?} */ function (item) { if (item === null || typeof item === 'undefined') { return -1; } if (this.items !== null && typeof this.items !== 'undefined') { for (var /** @type {?} */ i = 0; i < this.items.length; i++) { if (item === this.items[i]) { return i; } } } return -1; }; /** * @param {?} value * @return {?} */ AbstractSelectItems.prototype.getItemIndexFromValue = /** * @param {?} value * @return {?} */ function (value) { var /** @type {?} */ indices = this.getItemIndexesFromValue(value); if (indices !== null && indices !== undefined && indices.length > 0) { // Return the first item's index found. return indices[0]; } // Return -1 if not found. return -1; }; /** * @param {?} value * @return {?} */ AbstractSelectItems.prototype.getItemIndexesFromValue = /** * @param {?} value * @return {?} */ function (value) { var /** @type {?} */ re = []; if (this.items !== null && typeof this.items !== 'undefined') { for (var /** @type {?} */ i = 0; i < this.items.length; i++) { var /** @type {?} */ item = this.items[i]; // Use equalData() to check equal using comparator (if available). var /** @type {?} */ equal = this.equalData(item.getValue(), value); if (equal) { re.push(i); } } } return re; }; /** * @return {?} */ AbstractSelectItems.prototype.doPreload = /** * @return {?} */ function () { return new Promise(function (resolve, reject) { resolve(null); }); }; /** * @return {?} */ AbstractSelectItems.prototype.doLoaded = /** * @return {?} */ function () { }; /** * @return {?} */ AbstractSelectItems.prototype.getBeforeSelectEvent = /** * @return {?} */ function () { return this.beforeSelectEvent; }; /** * @param {?} event * @return {?} */ AbstractSelectItems.prototype.setBeforeSelectEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeSelectEvent = event; }; /** * @return {?} */ AbstractSelectItems.prototype.getSelectEvent = /** * @return {?} */ function () { return this.selectEvent; }; /** * @param {?} event * @return {?} */ AbstractSelectItems.prototype.setSelectEvent = /** * @param {?} event * @return {?} */ function (event) { this.selectEvent = event; }; /** * @return {?} */ AbstractSelectItems.prototype.getDataComparator = /** * @return {?} */ function () { return this.dataComparator; }; /** * @param {?} dataComp * @return {?} */ AbstractSelectItems.prototype.setDataComparator = /** * @param {?} dataComp * @return {?} */ function (dataComp) { this.dataComparator = dataComp; }; tslib_1.__decorate([ Option('comparator'), tslib_1.__metadata("design:type", Object) ], AbstractSelectItems.prototype, "dataComparator", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Array) ], AbstractSelectItems.prototype, "items", void 0); tslib_1.__decorate([ Option('beforeSelect'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractSelectItems.prototype, "beforeSelectEvent", void 0); tslib_1.__decorate([ Option('select'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractSelectItems.prototype, "selectEvent", void 0); return AbstractSelectItems; }(AbstractInputDataView)); export { AbstractSelectItems }; function AbstractSelectItems_tsickle_Closure_declarations() { /** @type {?} */ AbstractSelectItems.prototype.dataComparator; /** @type {?} */ AbstractSelectItems.prototype.items; /** @type {?} */ AbstractSelectItems.prototype.beforeSelectEvent; /** @type {?} */ AbstractSelectItems.prototype.selectEvent; /** @type {?} */ AbstractSelectItems.prototype.data; /** @type {?} */ AbstractSelectItems.prototype.selectedItems; /** @type {?} */ AbstractSelectItems.prototype._preloadData; /** @type {?} */ AbstractSelectItems.prototype._load; /** @type {?} */ AbstractSelectItems.prototype._isSetOriginal; /** @type {?} */ AbstractSelectItems.prototype.originalData; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RTZWxlY3RJdGVtcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9BYnN0cmFjdFNlbGVjdEl0ZW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUE2QixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFFTCxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQy9FLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0lBRVUsK0NBQXFCO0lBa0JyRSw2QkFBWSxVQUFzQixFQUFFLGdCQUFrQztRQUF0RSxZQUNFLGtCQUFNLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxTQVFwQztRQU5DLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxLQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixLQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixLQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzs7S0FDN0I7Ozs7SUFFTSxzQ0FBUTs7OztRQUNiLGlCQUFNLFFBQVEsV0FBRSxDQUFDOztRQUdqQixJQUFJ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