com.phloxui
Version:
PhloxUI Ng2+ Framework
985 lines (984 loc) • 92 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { EventEmitter } from '@angular/core';
import { AbstractDataView } from '../AbstractDataView';
import { DataUtils } from '../../../share/utils/DataUtils';
import { Option } from '../../../decorator/Option.decorator';
import { LOST_FOCUS_EVENT, FOCUS_EVENT, DATA_CHANGE_EVENT, BEFORE_DATA_CHANGE_EVENT, BEFORE_LOST_FOCUS_EVENT, BEFORE_FOCUS_EVENT, START_VALIDATE_EVENT, END_VALIDATE_EVENT } from '../../../share/CustomEventType';
import { ValidationStatus } from '../../validate/ValidationStatus';
import { EventUtils } from '../../../share/utils/EventUtils';
const /** @type {?} */ NORMAL = 'normal';
const /** @type {?} */ SUCCESS = 'success';
const /** @type {?} */ WARNING = 'warning';
const /** @type {?} */ ERROR = 'error';
const /** @type {?} */ TYPE_AUTO = 'auto';
const /** @type {?} */ READ_ONLY = 'read-only';
/**
* @abstract
*/
export class AbstractInputDataView extends AbstractDataView {
/**
* @param {?} elementRef
* @param {?} needFocusService
*/
constructor(elementRef, needFocusService) {
super(elementRef);
this.needFocusService = needFocusService;
this.validators = [];
this.startValidateEvent = new EventEmitter();
this.endValidateEvent = new EventEmitter();
this.lostFocusEvent = new EventEmitter();
this.focusEvent = new EventEmitter();
this.changeEvent = new EventEmitter();
this.beforeChangeEvent = new EventEmitter();
this.beforeLostFocusEvent = new EventEmitter();
this.beforeFocusEvent = new EventEmitter();
this.elementRef = elementRef;
}
/**
* @return {?}
*/
get readOnly() {
return this._readOnly;
}
/**
* @param {?} readOnly
* @return {?}
*/
set readOnly(readOnly) {
this._readOnly = readOnly;
this.injectReadOnlyStyleClass();
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
// Auto resolve type of data
if (this.typeOfData === null || this.typeOfData === undefined || this.typeOfData.toLowerCase() === TYPE_AUTO) {
let /** @type {?} */ inputVal = this.getInputValue();
if (inputVal !== null && inputVal !== undefined) {
this.typeOfData = typeof inputVal;
}
}
}
/**
* @param {?} $event
* @return {?}
*/
emitLostFocusEvent($event) {
let /** @type {?} */ data = null;
let /** @type {?} */ ev = EventUtils.newCustomEvent(LOST_FOCUS_EVENT, this, data, $event);
if (this.lostFocusEvent !== null && this.lostFocusEvent !== undefined) {
this.lostFocusEvent.emit(ev);
}
}
/**
* @param {?} $event
* @return {?}
*/
emitFocusEvent($event) {
let /** @type {?} */ data = null;
let /** @type {?} */ ev = EventUtils.newCustomEvent(FOCUS_EVENT, this, data, $event);
if (this.focusEvent !== null && this.focusEvent !== undefined) {
this.focusEvent.emit(ev);
}
}
/**
* @param {?} value
* @return {?}
*/
doValidate(value) {
let /** @type {?} */ result = [];
if (this.validators !== null && typeof this.validators !== 'undefined') {
for (let /** @type {?} */ vdt of this.validators) {
let /** @type {?} */ vResult = vdt.validate(value);
result.push(vResult);
}
}
return result;
}
/**
* @param {?} typeOfData
* @param {?} inputVal
* @return {?}
*/
_castValueToData(typeOfData, inputVal) {
if (inputVal === null || inputVal === undefined) {
return inputVal;
}
if (typeOfData === null || typeOfData === undefined || typeOfData.toLowerCase() === AbstractInputDataView.TYPE_AUTO) {
// Auto resolve "typeOfData" of inputVal.
typeOfData = typeof inputVal;
}
if (typeOfData === 'string') {
return inputVal.toString();
}
else if (typeOfData === 'number') {
return Number(inputVal);
}
else if (typeOfData === 'boolean') {
return Boolean(inputVal);
}
// Object or Array
return inputVal;
}
/**
* @param {?} inputVal
* @return {?}
*/
_setValueToData(inputVal) {
if (inputVal !== null && inputVal !== undefined) {
if (this.typeOfData === null || this.typeOfData === undefined || this.typeOfData.toLowerCase() === AbstractInputDataView.TYPE_AUTO) {
// Auto resolve "typeOfData" of inputVal.
this.typeOfData = typeof inputVal;
}
}
inputVal = this._castValueToData(this.typeOfData, inputVal);
if (this.isMappingEnable()) {
let /** @type {?} */ tempArray = [];
let /** @type {?} */ dataArray = [];
if (Array.isArray(this.data)) {
dataArray = this.data;
}
else {
dataArray.push(this.data);
}
let /** @type {?} */ index = 0;
for (let /** @type {?} */ item of dataArray) {
if (typeof item === 'object' && !Array.isArray(item)) {
DataUtils.setDataValue(this.field, item, inputVal);
}
else {
tempArray.push({ value: inputVal, index: index });
}
index++;
}
// Update primitive values into dataArray members.
for (let /** @type {?} */ item of tempArray) {
let /** @type {?} */ idx = item.index;
let /** @type {?} */ val = item.value;
if (idx < dataArray.length) {
dataArray[idx] = val;
}
}
}
else {
this.data = inputVal;
}
// Update UI
this.onDataChange(this.data, inputVal);
this.validate(inputVal);
}
/**
* @param {?} oldValue
* @param {?} newValue
* @param {?} valueChange
* @param {?=} $event
* @return {?}
*/
emitBeforeChangeEvent(oldValue, newValue, valueChange, $event) {
let /** @type {?} */ eventData = {
data: this.data,
oldValue: oldValue,
newValue: newValue,
valueChange: valueChange
};
// emit event
let /** @type {?} */ data = eventData;
let /** @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.
let /** @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);
}
}
/**
* @param {?} oldValue
* @param {?} newValue
* @param {?} valueChange
* @param {?=} $event
* @return {?}
*/
emitChangeEvent(oldValue, newValue, valueChange, $event) {
let /** @type {?} */ eventData = {
data: this.data,
oldValue: oldValue,
newValue: newValue,
valueChange: valueChange
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(DATA_CHANGE_EVENT, this, data, $event);
if (this.changeEvent !== null && this.changeEvent !== undefined) {
this.changeEvent.emit(ev);
}
let /** @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 {?=} $event
* @return {?}
*/
emitBeforeFocusEvent($event) {
// emit event
let /** @type {?} */ data = null;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_FOCUS_EVENT, this, data, $event);
if (this.beforeFocusEvent !== null && this.beforeFocusEvent !== undefined) {
this.beforeFocusEvent.emit(ev);
}
}
/**
* @param {?=} $event
* @return {?}
*/
emitBeforeLostFocusEvent($event) {
// emit event
let /** @type {?} */ data = null;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_LOST_FOCUS_EVENT, this, data, $event);
if (this.beforeLostFocusEvent !== null && this.beforeLostFocusEvent !== undefined) {
this.beforeLostFocusEvent.emit(ev);
}
}
/**
* @return {?}
*/
injectStyleClasses() {
super.injectStyleClasses();
this.injectStatusStyleClass();
this.injectReadOnlyStyleClass();
}
/**
* @return {?}
*/
injectStatusStyleClass() {
// Auto inject status css class.
if (this.elementRef) {
// First, clear all old status css classes.
$(this.elementRef.nativeElement).removeClass(NORMAL);
$(this.elementRef.nativeElement).removeClass(WARNING);
$(this.elementRef.nativeElement).removeClass(ERROR);
$(this.elementRef.nativeElement).removeClass(SUCCESS);
// Then, add current status css class.
if (this.status) {
$(this.elementRef.nativeElement).addClass(this.status);
}
}
}
/**
* @return {?}
*/
injectReadOnlyStyleClass() {
// Auto inject read only css class.
if (this.elementRef) {
// First, clear old read only css class.
$(this.elementRef.nativeElement).removeClass(READ_ONLY);
// Then, add current read only css class.
if (this.readOnly) {
$(this.elementRef.nativeElement).addClass(READ_ONLY);
}
}
}
/**
* @param {?} oldValue
* @param {?} inputVal
* @param {?=} data
* @return {?}
*/
onDataChangePrevented(oldValue, inputVal, data) {
}
/**
* @return {?}
*/
isNormal() {
let /** @type {?} */ statusName = this.getStatus();
return statusName === NORMAL;
}
/**
* @return {?}
*/
isSuccess() {
let /** @type {?} */ statusName = this.getStatus();
return statusName === SUCCESS;
}
/**
* @return {?}
*/
isError() {
let /** @type {?} */ statusName = this.getStatus();
return statusName === ERROR;
}
/**
* @return {?}
*/
isWarning() {
let /** @type {?} */ statusName = this.getStatus();
return statusName === WARNING;
}
/**
* @return {?}
*/
focus() {
if (this.needFocusService === null || this.needFocusService === undefined) {
return;
}
this.needFocusService.setFocusingComponent(this, null);
}
/**
* @return {?}
*/
getValidationResultMessage() {
let /** @type {?} */ message = "";
if (this.validationResults === null || this.validationResults === undefined || this.validationResults.length === 0) {
return message;
}
let /** @type {?} */ status = 0;
if (this.getStatus() === ERROR) {
status = ValidationStatus.ERROR;
}
else if (this.getStatus() === WARNING) {
status = ValidationStatus.WARNING;
}
else if (this.getStatus() === SUCCESS) {
status = ValidationStatus.SUCCESS;
}
else if (this.getStatus() === NORMAL) {
status = ValidationStatus.NORMAL;
}
for (let /** @type {?} */ validationResult of this.validationResults) {
if (validationResult.getStatus() === status) {
let /** @type {?} */ mes = validationResult.getMessage();
if (mes === null || mes === undefined || mes === '') {
continue;
}
message += mes + ", ";
}
}
if (message.length > 0) {
return message.substring(0, message.length - 2);
}
else {
return null;
}
}
/**
* @return {?}
*/
isReadOnly() {
return this.readOnly;
}
/**
* @param {?} readOnly
* @return {?}
*/
setReadOnly(readOnly) {
this.readOnly = readOnly;
}
/**
* @return {?}
*/
getName() {
return this.name;
}
/**
* @param {?} name
* @return {?}
*/
setName(name) {
this.name = name;
}
/**
* @param {?} value
* @return {?}
*/
validate(value) {
// emit start validate
let /** @type {?} */ dataStart = value;
let /** @type {?} */ evStrat = EventUtils.newCustomEvent(START_VALIDATE_EVENT, this, dataStart, null);
this.startValidateEvent.emit(evStrat);
// validate
let /** @type {?} */ result = this.doValidate(value);
if (result === null || typeof result === undefined || !Array.isArray(result)) {
result = [];
}
// Keep the last validation results to be shown in UI
this.validationResults = result;
// Append custom result to "this.validationResults".
if (this.customValidationResult !== null && this.customValidationResult !== undefined) {
this.validationResults.push(this.customValidationResult);
}
this.status = NORMAL;
if (result !== null && result !== undefined && Array.isArray(result)) {
for (let /** @type {?} */ re of result) {
if (re === null || re === undefined) {
continue;
}
let /** @type {?} */ status = re.getStatus();
if (status === ValidationStatus.ERROR) {
this.status = ERROR;
break;
}
if (status === ValidationStatus.WARNING) {
this.status = WARNING;
}
else if (status === ValidationStatus.SUCCESS && this.status !== WARNING) {
this.status = SUCCESS;
}
else if (status === ValidationStatus.NORMAL && this.status !== WARNING && this.status !== SUCCESS) {
this.status = NORMAL;
}
}
}
this.onValidationEnd(value, result);
this.injectStatusStyleClass();
// emit end validate
let /** @type {?} */ dataEnd = {
value: value,
result: result,
};
let /** @type {?} */ evEnd = EventUtils.newCustomEvent(END_VALIDATE_EVENT, this, dataEnd, null);
this.endValidateEvent.emit(evEnd);
return result;
}
/**
* @return {?}
*/
selfValidateData() {
let /** @type {?} */ inputVal = this.getInputValue();
let /** @type {?} */ results = this.validate(inputVal);
return results;
}
/**
* @param {?} validator
* @return {?}
*/
addValidator(validator) {
if (validator === null || typeof validator === 'undefined') {
return;
}
// check contain if contain return false
let /** @type {?} */ index = this.validators.indexOf(validator);
if (index >= 0) {
return false;
}
let /** @type {?} */ i18nValidator = /** @type {?} */ (validator);
if (typeof this.i18nValue !== 'undefined' && typeof i18nValidator.applyI18N === 'function') {
let /** @type {?} */ value = this.i18nValue;
if (value === null) {
i18nValidator.applyI18N(null);
}
else {
if (value.validators !== null && typeof value.validators !== 'undefined') {
let /** @type {?} */ bypass = false;
if (typeof i18nValidator.isBypassKey === 'function') {
bypass = i18nValidator.isBypassKey();
}
if (bypass) {
i18nValidator.applyI18N(value);
}
else {
let /** @type {?} */ i18nCVal = value.validators[i18nValidator.getI18NKey()];
if (typeof i18nCVal !== 'undefined') {
i18nValidator.applyI18N(i18nCVal);
}
}
}
}
}
this.validators.push(validator);
return true;
}
/**
* @param {?} validator
* @return {?}
*/
removeValidator(validator) {
if (validator === null || typeof validator === 'undefined') {
return false;
}
let /** @type {?} */ index = this.validators.indexOf(validator);
if (index < 0) {
return false;
}
this.validators.splice(index, 1);
return true;
}
/**
* @return {?}
*/
getValidators() {
return this.validators;
}
/**
* @return {?}
*/
getStartValidateEvent() {
return this.startValidateEvent;
}
/**
* @param {?} event
* @return {?}
*/
setStartValidateEvent(event) {
this.startValidateEvent = event;
}
/**
* @return {?}
*/
getEndValidateEvent() {
return this.endValidateEvent;
}
/**
* @param {?} event
* @return {?}
*/
setEndValidateEvent(event) {
this.endValidateEvent = event;
}
/**
* @return {?}
*/
getBeforeLostFocusEvent() {
return this.beforeLostFocusEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeLostFocusEvent(event) {
this.beforeLostFocusEvent = event;
}
/**
* @return {?}
*/
getLostFocusEvent() {
return this.lostFocusEvent;
}
/**
* @param {?} event
* @return {?}
*/
setLostFocusEvent(event) {
this.lostFocusEvent = event;
}
/**
* @return {?}
*/
getBeforeFocusEvent() {
return this.beforeFocusEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeFocusEvent(event) {
this.beforeFocusEvent = event;
}
/**
* @return {?}
*/
getFocusEvent() {
return this.focusEvent;
}
/**
* @param {?} event
* @return {?}
*/
setFocusEvent(event) {
this.focusEvent = event;
}
/**
* @return {?}
*/
getBeforeChangeEvent() {
return this.beforeChangeEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeChangeEvent(event) {
this.beforeChangeEvent = event;
}
/**
* @return {?}
*/
getChangeEvent() {
return this.changeEvent;
}
/**
* @param {?} event
* @return {?}
*/
setChangeEvent(event) {
this.changeEvent = event;
}
/**
* @return {?}
*/
getCustomValidationResult() {
return this.customValidationResult;
}
/**
* @param {?} customResult
* @return {?}
*/
setCustomValidationResult(customResult) {
this.customValidationResult = customResult;
// Call validateData() to rebuild this.validationResults.
this.validateData();
}
/**
* @param {?} data
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
setData(data, $event, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
if (data === this.getData()) {
// Call super
super.setData(data);
}
else {
let /** @type {?} */ oldValue = this.getInputValue();
// New input value
let /** @type {?} */ inputVal = AbstractInputDataView.resolveInputValue(this.field, data);
EventUtils.handleBrowserEvent(this, 'beforeChangeEvent', $event, fireEvent, ($event) => {
// doEvent
// Call super
super.setData(data);
// Update UI
this.onDataChange(data, inputVal);
// Auto validate
this.validate(inputVal);
}, ($event) => {
// emitBeforeEvent
this.emitBeforeChangeEvent(oldValue, inputVal, false, $event);
}, ($event) => {
// emitAfterEvent
this.emitChangeEvent(oldValue, inputVal, false, $event);
}, ($event) => {
// doPrevented
this.onDataChangePrevented(oldValue, inputVal, data);
}, 'data');
}
}
/**
* @param {?} field
* @param {?} data
* @return {?}
*/
static resolveInputValue(field, data) {
return AbstractInputDataView.resolveMappedData(field, data);
}
/**
* @return {?}
*/
getInputValue() {
return AbstractInputDataView.resolveInputValue(this.field, this.data);
}
/**
* @param {?} inputVal
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
setInputValue(inputVal, $event, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
let /** @type {?} */ oldValue = this.getInputValue();
EventUtils.handleBrowserEvent(this, 'beforeChangeEvent', $event, fireEvent, ($event) => {
// doEvent
// Set input value into data object.
this._setValueToData(inputVal);
}, ($event) => {
// emitBeforeEvent
this.emitBeforeChangeEvent(oldValue, inputVal, true, $event);
}, ($event) => {
// emitAfterEvent
this.emitChangeEvent(oldValue, inputVal, true, $event);
}, ($event) => {
// doPrevented
this.onDataChangePrevented(oldValue, inputVal);
}, 'inputValue');
}
/**
* @param {?} value
* @return {?}
*/
applyI18N(value) {
if (typeof value === 'undefined') {
return;
}
super.applyI18N(value);
// iterate validator
if (this.validators !== null && typeof this.validators !== 'undefined') {
for (let /** @type {?} */ vt of this.validators) {
let /** @type {?} */ validator = /** @type {?} */ (vt);
// check if child is applicable
if (typeof validator.applyI18N === 'function') {
if (value === null) {
validator.applyI18N(null);
}
else {
if (value.validators !== null && typeof value.validators !== 'undefined') {
let /** @type {?} */ bypass = false;
if (typeof validator.isBypassKey === 'function' && validator.isBypassKey() === 'boolean') {
bypass = validator.isBypassKey();
}
if (bypass) {
validator.applyI18N(value);
}
else {
let /** @type {?} */ i18nCVal = value.validators[validator.getI18NKey()];
if (typeof i18nCVal !== 'undefined') {
validator.applyI18N(i18nCVal);
}
}
}
}
}
}
}
}
/**
* @return {?}
*/
getI18NKey() {
if (this.i18nKey === null || typeof this.i18nKey === 'undefined' || this.i18nKey === '') {
if (this.name === null || typeof this.name === 'undefined' || this.name === '') {
// lower case first charactor
let /** @type {?} */ className = this.constructor.name;
return className.charAt(0).toLowerCase() + className.slice(1);
}
return this.name;
}
return this.i18nKey;
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onLostFocus($event, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeLostFocusEvent', $event, fireEvent, ($event) => {
// doEvent
// Reset focus (blur()) on DOM
this.doLostFocus($event);
}, ($event) => {
// emitBeforeEvent
this.emitBeforeLostFocusEvent($event);
}, ($event) => {
// emitAfterEvent
this.emitLostFocusEvent($event);
}, ($event) => {
// doPrevented
// Regain focus back on DOM
setTimeout(() => {
this.doFocus($event);
}, 5);
});
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onFocus($event, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeFocusEvent', $event, fireEvent, ($event) => {
// doEvent
// Gain focus on DOM
this.doFocus($event);
}, ($event) => {
// emitBeforeEvent
this.emitBeforeFocusEvent($event);
}, ($event) => {
// emitAfterEvent
this.emitFocusEvent($event);
}, ($event) => {
// doPrevented
// Reset focus (blur()) on DOM
setTimeout(() => {
this.doLostFocus($event);
}, 5);
});
}
/**
* @return {?}
*/
getNeedFocusService() {
return this.needFocusService;
}
/**
* @return {?}
*/
getStatus() {
return this.status;
}
/**
* @param {?} status
* @return {?}
*/
setStatus(status) {
this.status = status;
}
/**
* @return {?}
*/
doPreload() { return new Promise((resolve, reject) => { resolve(null); }); }
/**
* @return {?}
*/
doLoaded() {
}
/**
* @return {?}
*/
resetValidationResult() {
this.setStatus(NORMAL);
this.injectStatusStyleClass();
}
}
AbstractInputDataView.TYPE_AUTO = TYPE_AUTO;
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], AbstractInputDataView.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], AbstractInputDataView.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option('readOnly'),
tslib_1.__metadata("design:type", Boolean),
tslib_1.__metadata("design:paramtypes", [Boolean])
], AbstractInputDataView.prototype, "readOnly", null);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], AbstractInputDataView.prototype, "changeEvent", void 0);
function AbstractInputDataView_tsickle_Closure_declarations() {
/** @type {?} */
AbstractInputDataView.TYPE_AUTO;
/** @type {?} */
AbstractInputDataView.prototype.name;
/** @type {?} */
AbstractInputDataView.prototype.typeOfData;
/** @type {?} */
AbstractInputDataView.prototype._readOnly;
/** @type {?} */
AbstractInputDataView.prototype.startValidateEvent;
/** @type {?} */
AbstractInputDataView.prototype.endValidateEvent;
/** @type {?} */
AbstractInputDataView.prototype.beforeFocusEvent;
/** @type {?} */
AbstractInputDataView.prototype.focusEvent;
/** @type {?} */
AbstractInputDataView.prototype.beforeLostFocusEvent;
/** @type {?} */
AbstractInputDataView.prototype.lostFocusEvent;
/** @type {?} */
AbstractInputDataView.prototype.beforeChangeEvent;
/** @type {?} */
AbstractInputDataView.prototype.changeEvent;
/** @type {?} */
AbstractInputDataView.prototype.status;
/** @type {?} */
AbstractInputDataView.prototype.needFocusService;
/** @type {?} */
AbstractInputDataView.prototype.validationResults;
/** @type {?} */
AbstractInputDataView.prototype.customValidationResult;
/** @type {?} */
AbstractInputDataView.prototype.validators;
/**
* @abstract
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
AbstractInputDataView.prototype.onValidationEnd = function (inputValue, results) { };
/**
* @abstract
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
AbstractInputDataView.prototype.onDataChange = function (data, inputVal) { };
/**
* @abstract
* @param {?} $event
* @return {?}
*/
AbstractInputDataView.prototype.doFocus = function ($event) { };
/**
* @abstract
* @param {?} $event
* @return {?}
*/
AbstractInputDataView.prototype.doLostFocus = function ($event) { };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbnB1dERhdGFWaWV3LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L0Fic3RyYWN0SW5wdXREYXRhVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBNEIsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSTdELE9BQU8sRUFDTCxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQzFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFjLG9CQUFvQixFQUM3RSxrQkFBa0IsRUFDbkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJN0QsdUJBQU0sTUFBTSxHQUFXLFFBQVEsQ0FBQztBQUNoQyx1QkFBTSxPQUFPLEdBQVcsU0FBUyxDQUFDO0FBQ2xDLHVCQUFNLE9BQU8sR0FBVyxTQUFTLENBQUM7QUFDbEMsdUJBQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQztBQUM5Qix1QkFBTSxTQUFTLEdBQVcsTUFBTSxDQUFDO0FBQ2pDLHVCQUFNLFNBQVMsR0FBVyxXQUFXLENBQUM7Ozs7QUFFdEMsTUFBTSw0QkFBc0MsU0FBUSxnQkFBZ0I7Ozs7O2dCQTRDL0MsVUFBc0IsRUFBRSxnQkFBa0M7UUFDM0UsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJ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