com.phloxui
Version:
PhloxUI Ng2+ Framework
1,150 lines (1,149 loc) • 95.4 kB
JavaScript
/**
* @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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