UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

243 lines (242 loc) 17.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, Output, EventEmitter, ElementRef } from '@angular/core'; import { AbstractHasFormatterDataView } from './AbstractHasFormatterDataView'; import { DATA_CHANGE_EVENT } from '../../share/CustomEventType'; import { FormatterFactory } from '../../service/FormatterFactory.service'; import { Option } from '../../decorator/Option.decorator'; import { EventUtils } from '../../share/utils/EventUtils'; var /** @type {?} */ TYPE_NAME = "phx-string-editor-data-view"; var /** @type {?} */ DEFAULT_FIELD = "label"; var StringEditorDataView = /** @class */ (function (_super) { tslib_1.__extends(StringEditorDataView, _super); function StringEditorDataView(elementRef, formatterFactory) { var _this = _super.call(this, elementRef, formatterFactory) || this; _this.DEFAULT_FIELD_NAME = "label"; _this.handler = new EventEmitter(); _this.changeEvent = new EventEmitter(); return _this; } /** * @return {?} */ StringEditorDataView.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); // Auto set default field if not specified if (this.field === null || typeof this.field !== 'string') { this.field = DEFAULT_FIELD; } if (this.data !== null && typeof this.data !== 'undefined') { this.setData(this.data); } }; /** * @param {?} changes * @return {?} */ StringEditorDataView.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes['data'] !== null && typeof changes['data'] !== 'undefined') { var /** @type {?} */ oldData = changes['data'].previousValue; var /** @type {?} */ newData = changes['data'].currentValue; if (oldData !== newData) { this.setData(newData); } } }; /** * @param {?} $event * @return {?} */ StringEditorDataView.prototype.onValueChanged = /** * @param {?} $event * @return {?} */ function ($event) { var /** @type {?} */ data = { data: this.value, source: ($event === null || typeof $event === 'undefined') ? undefined : $event.target }; var /** @type {?} */ ev = EventUtils.newCustomEvent(DATA_CHANGE_EVENT, this, data, $event); this.changeEvent.emit(ev); this.handler.emit(ev); this.handler.emit($event); }; /** * @param {?} data * @return {?} */ StringEditorDataView.prototype.setData = /** * @param {?} data * @return {?} */ function (data) { _super.prototype.setData.call(this, data); this.value = this.getFormattedData(); }; /** * @return {?} */ StringEditorDataView.prototype.getEventHandler = /** * @return {?} */ function () { return this.handler; }; /** * @param {?} event * @return {?} */ StringEditorDataView.prototype.setEventHandler = /** * @param {?} event * @return {?} */ function (event) { this.handler = event; }; /** * @return {?} */ StringEditorDataView.prototype.getChangeEvent = /** * @return {?} */ function () { return this.changeEvent; }; /** * @param {?} event * @return {?} */ StringEditorDataView.prototype.setChangeEvent = /** * @param {?} event * @return {?} */ function (event) { this.changeEvent = event; }; /** * @return {?} */ StringEditorDataView.prototype.isSelfDataDirty = /** * @return {?} */ function () { return false; }; /** * @return {?} */ StringEditorDataView.prototype.selfSaveData = /** * @return {?} */ function () { }; /** * @return {?} */ StringEditorDataView.prototype.selfResetData = /** * @return {?} */ function () { }; StringEditorDataView.TYPE_NAME = TYPE_NAME; StringEditorDataView.DEFAULT_FIELD = DEFAULT_FIELD; StringEditorDataView.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<div class=\"phx-string-editor-data-view\"><input type=\"text\" class=\"form-control\" [(ngModel)]=\"value\" (input)=\"onValueChanged($event)\"></div>\n" },] }, ]; /** @nocollapse */ StringEditorDataView.ctorParameters = function () { return [ { type: ElementRef, }, { type: FormatterFactory, }, ]; }; StringEditorDataView.propDecorators = { "data": [{ type: Input },], "field": [{ type: Input },], "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "handler": [{ type: Output, args: ['phxHandler',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", EventEmitter) ], StringEditorDataView.prototype, "handler", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], StringEditorDataView.prototype, "changeEvent", void 0); return StringEditorDataView; }(AbstractHasFormatterDataView)); export { StringEditorDataView }; function StringEditorDataView_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ StringEditorDataView.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ StringEditorDataView.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ StringEditorDataView.propDecorators; /** @type {?} */ StringEditorDataView.TYPE_NAME; /** @type {?} */ StringEditorDataView.DEFAULT_FIELD; /** @type {?} */ StringEditorDataView.prototype.value; /** @type {?} */ StringEditorDataView.prototype.DEFAULT_FIELD_NAME; /** @type {?} */ StringEditorDataView.prototype.data; /** @type {?} */ StringEditorDataView.prototype.field; /** @type {?} */ StringEditorDataView.prototype.dataParent; /** @type {?} */ StringEditorDataView.prototype.ignoreParentData; /** @type {?} */ StringEditorDataView.prototype.ignoreParentDisabled; /** @type {?} */ StringEditorDataView.prototype.delegateHistory; /** @type {?} */ StringEditorDataView.prototype.onDisabled; /** @type {?} */ StringEditorDataView.prototype.onEnabled; /** @type {?} */ StringEditorDataView.prototype.loadingEnabled; /** @type {?} */ StringEditorDataView.prototype.i18nKey; /** @type {?} */ StringEditorDataView.prototype.bypass; /** @type {?} */ StringEditorDataView.prototype.options; /** @type {?} */ StringEditorDataView.prototype.disabled; /** @type {?} */ StringEditorDataView.prototype.handler; /** @type {?} */ StringEditorDataView.prototype.changeEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyaW5nRWRpdG9yRGF0YVZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L1N0cmluZ0VkaXRvckRhdGFWaWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQscUJBQU0sU0FBUyxHQUFXLDZCQUE2QixDQUFDO0FBRXhELHFCQUFNLGFBQWEsR0FBVyxPQUFPLENBQUM7O0lBU0ksZ0RBQTRCO0lBMkNsRSw4QkFBWSxVQUFzQixFQUFFLGdCQUFrQztRQUF0RSxZQUNJLGtCQUFNLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxTQUl0QzttQ0F4Q29DLE9BQU87UUFzQ3hDLEtBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O0tBQ3pDOzs7O0lBR00sdUNBQVE7Ozs7UUFDYixpQkFBTSxRQUFRLFdBQUUsQ0FBQzs7UUFHakIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFD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QixNQUFNLEVBQUU7MENBRVUsWUFBWTs7O1FBQzlCLE1BQU0sQ0FBQyxRQUFRLENBQUM7MENBRU0sWUFBWTs7K0JBOUR2QztFQXFCMEMsNEJBQTRCO1NBQXpELG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRhVmlldyB9IGZyb20gJy4vSURhdGFWaWV3JztcbmltcG9ydCB7IEFic3RyYWN0SGFzRm9ybWF0dGVyRGF0YVZpZXcgfSBmcm9tICcuL0Fic3RyYWN0SGFzRm9ybWF0dGVyRGF0YVZpZXcnO1xuaW1wb3J0IHsgRGF0YVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRGF0YVV0aWxzJztcbmltcG9ydCB7IERBVEFfQ0hBTkdFX0VWRU5UIH0gZnJvbSAnLi4vLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcbmltcG9ydCB7IEZvcm1hdHRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL0Zvcm1hdHRlckZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBFdmVudFV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRXZlbnRVdGlscyc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uL0lIYXNEYXRhJztcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1zdHJpbmctZWRpdG9yLWRhdGEtdmlld1wiO1xuXG5jb25zdCBERUZBVUxUX0ZJRUxEOiBzdHJpbmcgPSBcImxhYmVsXCI7XG5cbi8vIFdhaXRpbmcgZm9yIHJlbW92ZS4gVXNlIFRleHRCb3ggaW5zdGFkZSB0aGlzIGNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gICAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1zdHJpbmctZWRpdG9yLWRhdGEtdmlld1wiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCI+PC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0VkaXRvckRhdGFWaWV3IGV4dGVuZHMgQWJzdHJhY3RIYXNGb3JtYXR0ZXJEYXRhVmlldyBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0ZJRUxEOiBzdHJpbmcgPSBERUZBVUxUX0ZJRUxEO1xuXG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIERFRkFVTFRfRklFTERfTkFNRTogc3RyaW5nID0gXCJsYWJlbFwiO1xuXG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICAgIEBJbnB1dCgpXG4gICAgcHJvdGVjdGVkIGZpZWxkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREaXNhYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBkZWxlZ2F0ZUhpc3Rvcnk6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgb25FbmFibGVkOiBGdW5jdGlvbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBsb2FkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gICAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgICBwcm90ZWN0ZWQgYnlwYXNzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM6IGFueTtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBAT3B0aW9uKClcbiAgICBAT3V0cHV0KCdwaHhIYW5kbGVyJylcbiAgICBwcm90ZWN0ZWQgaGFuZGxlcjogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgQE9wdGlvbignY2hhbmdlJylcbiAgICBAT3V0cHV0KCdwaHhDaGFuZ2UnKVxuICAgIHByb3RlY3RlZCBjaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBmb3JtYXR0ZXJGYWN0b3J5OiBGb3JtYXR0ZXJGYWN0b3J5KSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGZvcm1hdHRlckZhY3RvcnkpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgIC8vIEF1dG8gc2V0IGRlZmF1bHQgZmllbGQgaWYgbm90IHNwZWNpZmllZFxuICAgICAgaWYgKHRoaXMuZmllbGQgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMuZmllbGQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZmllbGQgPSBERUZBVUxUX0ZJRUxEO1xuICAgICAgfVxuXG4gICAgICBpZih0aGlzLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KSB7XG4gICAgICBpZiAoY2hhbmdlc1snZGF0YSddICE9PSBudWxsICYmIHR5cGVvZiBjaGFuZ2VzWydkYXRhJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxldCBvbGREYXRhID0gY2hhbmdlc1snZGF0YSddLnByZXZpb3VzVmFsdWU7XG4gICAgICAgIGxldCBuZXdEYXRhOiBhbnkgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICAgIGlmIChvbGREYXRhICE9PSBuZXdEYXRhKSB7XG4gICAgICAgICAgdGhpcy5zZXREYXRhKG5ld0RhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICBkYXRhOiB0aGlzLnZhbHVlLFxuICAgICAgICAgIHNvdXJjZTogKCRldmVudCA9PT0gbnVsbCB8fCB0eXBlb2YgJGV2ZW50ID09PSAndW5kZWZpbmVkJykgPyB1bmRlZmluZWQgOiAkZXZlbnQudGFyZ2V0XG4gICAgICAgIH07XG4gICAgICAgIGxldCBldiA9IEV2ZW50VXRpbHMubmV3Q3VzdG9tRXZlbnQoREFUQV9DSEFOR0VfRVZFTlQsIHRoaXMsIGRhdGEsICRldmVudCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2KTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLmVtaXQoZXYpO1xuICAgICAgICB0aGlzLmhhbmRsZXIuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgICAgc3VwZXIuc2V0RGF0YShkYXRhKTtcblxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkRGF0YSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFdmVudEhhbmRsZXIoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFdmVudEhhbmRsZXIoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGFuZ2VFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZUV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDaGFuZ2VFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudCA9IGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGZEYXRhRGlydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZlNhdmVEYXRhKCk6IHZvaWQge1xuXG4gICAgfVxuXG4gICAgcHVibGljIHNlbGZSZXNldERhdGEoKTogdm9pZCB7XG5cbiAgICB9XG59XG4iXX0=