com.phloxui
Version:
PhloxUI Ng2+ Framework
223 lines (222 loc) • 16.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, EventEmitter, Output } from '@angular/core';
import { AbstractHasDataHelp } from '../../../AbstractHasDataHelp';
import { Option } from '../../../../decorator/Option.decorator';
import { EventUtils } from '../../../../share/utils/EventUtils';
import { COLUMN_CHANGE_EVENT, BEFORE_COLUMN_CHANGE_EVENT } from '../../../../share/CustomEventType';
const /** @type {?} */ TYPE_NAME = "phx-column-display";
export class ColumnDisplay extends AbstractHasDataHelp {
/**
* @param {?} elementRef
*/
constructor(elementRef) {
super(elementRef);
this.columnChangeEvent = new EventEmitter();
this.beforeColumnChangeEvent = new EventEmitter();
this.columns = [];
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
}
/**
* @param {?} column
* @return {?}
*/
setColumns(column) {
this.columns = column;
}
/**
* @return {?}
*/
getColumns() {
return this.columns;
}
/**
* @param {?} $event
* @param {?} item
* @return {?}
*/
onColumnsDisplayChange($event, item) {
if ($event !== null || $event !== undefined) {
let /** @type {?} */ oldValue = $event.detail.data.oldValue;
let /** @type {?} */ newValue = $event.detail.data.newValue;
// update value
item.show = newValue;
// emit column change
let /** @type {?} */ data = {
oldValue: oldValue,
newValue: newValue,
column: item
};
EventUtils.handleBrowserEvent(this, 'beforeColumnChangeEvent', $event, null, (event) => {
// doEvent
}, ($event) => {
// emitBeforeEvent
this.emitBeforeColumnChangeEvent($event);
}, ($event, result) => {
// emitAfterEvent
this.emitColumnChangeEvent(data, $event);
}, ($event) => {
// doPrevented
});
}
}
/**
* @param {?=} $event
* @return {?}
*/
emitBeforeColumnChangeEvent($event) {
// emit event
if (this.beforeColumnChangeEvent !== null) {
let /** @type {?} */ data = {};
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_COLUMN_CHANGE_EVENT, this, data, null);
this.beforeColumnChangeEvent.emit(ev);
}
}
/**
* @param {?} data
* @param {?=} $event
* @return {?}
*/
emitColumnChangeEvent(data, $event) {
// emit event
if (this.columnChangeEvent !== null) {
let /** @type {?} */ ev = EventUtils.newCustomEvent(COLUMN_CHANGE_EVENT, this, data, null);
this.columnChangeEvent.emit(ev);
}
}
/**
* @return {?}
*/
getBeforeColumnChangeEvent() {
return this.beforeColumnChangeEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeColumnChangeEvent(event) {
this.beforeColumnChangeEvent = event;
}
/**
* @return {?}
*/
getColumnChangeEvent() {
return this.columnChangeEvent;
}
/**
* @param {?} event
* @return {?}
*/
setColumnChangeEvent(event) {
this.columnChangeEvent = event;
}
/**
* @return {?}
*/
isSelfDataDirty() {
return false;
}
/**
* @param {?} data
* @return {?}
*/
selfSaveData(data) {
}
/**
* @return {?}
*/
selfResetData() {
}
}
ColumnDisplay.TYPE_NAME = TYPE_NAME;
ColumnDisplay.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="phx-column-display">
<div *ngFor="let item of getColumns(); let i = index">
<div class="boder-column-display">
<material-checkbox [data]="item" [label]="item.label" [field]="'show'" (phxChange)="onColumnsDisplayChange($event, item)"></material-checkbox>
</div>
</div>
</div>
`
},] },
];
/** @nocollapse */
ColumnDisplay.ctorParameters = () => [
{ type: ElementRef, },
];
ColumnDisplay.propDecorators = {
"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 },],
"data": [{ type: Input },],
"columnChangeEvent": [{ type: Output, args: ['phxColumnChange',] },],
"beforeColumnChangeEvent": [{ type: Output, args: ['phxbeforeColumnChange',] },],
};
tslib_1.__decorate([
Option('columnChange'),
tslib_1.__metadata("design:type", EventEmitter)
], ColumnDisplay.prototype, "columnChangeEvent", void 0);
tslib_1.__decorate([
Option('beforeColumnChange'),
tslib_1.__metadata("design:type", EventEmitter)
], ColumnDisplay.prototype, "beforeColumnChangeEvent", void 0);
function ColumnDisplay_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ColumnDisplay.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ColumnDisplay.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ColumnDisplay.propDecorators;
/** @type {?} */
ColumnDisplay.TYPE_NAME;
/** @type {?} */
ColumnDisplay.prototype.dataParent;
/** @type {?} */
ColumnDisplay.prototype.ignoreParentData;
/** @type {?} */
ColumnDisplay.prototype.ignoreParentDisabled;
/** @type {?} */
ColumnDisplay.prototype.delegateHistory;
/** @type {?} */
ColumnDisplay.prototype.onDisabled;
/** @type {?} */
ColumnDisplay.prototype.onEnabled;
/** @type {?} */
ColumnDisplay.prototype.loadingEnabled;
/** @type {?} */
ColumnDisplay.prototype.i18nKey;
/** @type {?} */
ColumnDisplay.prototype.bypass;
/** @type {?} */
ColumnDisplay.prototype.options;
/** @type {?} */
ColumnDisplay.prototype.data;
/** @type {?} */
ColumnDisplay.prototype.columnChangeEvent;
/** @type {?} */
ColumnDisplay.prototype.beforeColumnChangeEvent;
/** @type {?} */
ColumnDisplay.prototype.columns;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uRGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL2VkaXRvci5pbnRlcm5hbC9yZWNvcmQuaW50ZXJuYWwvQ29sdW1uRGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQWlDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUtwRyx1QkFBTSxTQUFTLEdBQVcsb0JBQW9CLENBQUM7QUFjL0MsTUFBTSxvQkFBcUIsU0FBUSxtQkFBbUI7Ozs7SUFvQ3BELFlBQVksVUFBc0I7UUFDaEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ25COzs7O0lBRU0sUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7Ozs7O0lBR1osVUFBVSxDQUFDLE1BQXFCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDOzs7OztJQUdqQixVQUFVO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Ozs7Ozs7SUFHZixzQkFBc0Is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U0FBQyxpQkFBaUI7d0NBR3hCLE1BQU0sU0FBQyx1QkFBdUI7OztJQUo5QixNQUFNLENBQUMsY0FBYyxDQUFDO3NDQUVNLFlBQVk7OztJQUN4QyxNQUFNLENBQUMsb0JBQW9CLENBQUM7c0NBRU0sWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBUeXBlLCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhc0RhdGFIZWxwIH0gZnJvbSAnLi4vLi4vLi4vQWJzdHJhY3RIYXNEYXRhSGVscCc7XG5pbXBvcnQgeyBBYnN0cmFjdERhdGFFZGl0b3IgfSBmcm9tICcuLi8uLi9BYnN0cmFjdERhdGFFZGl0b3InO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9SZWNvcmRWaWV3TW9kZWwnO1xuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xuaW1wb3J0IHsgQ09MVU1OX0NIQU5HRV9FVkVOVCwgQkVGT1JFX0NPTFVNTl9DSEFOR0VfRVZFTlQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi8uLi8uLi9JSGFzRGF0YSc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1jb2x1bW4tZGlzcGxheVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWNvbHVtbi1kaXNwbGF5XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0Q29sdW1ucygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImJvZGVyLWNvbHVtbi1kaXNwbGF5XCI+XG4gICAgICA8bWF0ZXJpYWwtY2hlY2tib3ggW2RhdGFdPVwiaXRlbVwiIFtsYWJlbF09XCJpdGVtLmxhYmVsXCIgW2ZpZWxkXT1cIidzaG93J1wiIChwaHhDaGFuZ2UpPVwib25Db2x1bW5zRGlzcGxheUNoYW5nZSgkZXZlbnQsIGl0ZW0pXCI+PC9tYXRlcmlhbC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uRGlzcGxheSBleHRlbmRzIEFic3RyYWN0SGFzRGF0YUhlbHAgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XG5cbiAgLy8gLS0tIGZyb20gc2VsZlxuICBAT3B0aW9uKCdjb2x1bW5DaGFuZ2UnKVxuICBAT3V0cHV0KCdwaHhDb2x1bW5DaGFuZ2UnKVxuICBwcm90ZWN0ZWQgY29sdW1uQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKCdiZWZvcmVDb2x1bW5DaGFuZ2UnKVxuICBAT3V0cHV0KCdwaHhiZWZvcmVDb2x1bW5DaGFuZ2UnKVxuICBwcm90ZWN0ZWQgYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBwcml2YXRlIGNvbHVtbnM6IENvbHVtbk1vZGVsW107XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICAgIHRoaXMuY29sdW1uQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uOiBDb2x1bW5Nb2RlbFtdKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1uO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbnMoKTogQ29sdW1uTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbHVtbnNEaXNwbGF5Q2hhbmdlKCRldmVudDogQ3VzdG9tRXZlbnQsIGl0ZW06IENvbHVtbk1vZGVsKTogdm9pZCB7XG4gICAgaWYoJGV2ZW50ICE9PSBudWxsIHx8ICRldmVudCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgIGxldCBvbGRWYWx1ZSA9ICRldmVudC5kZXRhaWwuZGF0YS5vbGRWYWx1ZTtcbiAgICAgIGxldCBuZXdWYWx1ZSA9ICRldmVudC5kZXRhaWwuZGF0YS5uZXdWYWx1ZTtcblxuICAgICAgLy8gdXBkYXRlIHZhbHVlXG4gICAgICBpdGVtLnNob3cgPSBuZXdWYWx1ZTtcblxuICAgICAgLy8gZW1pdCBjb2x1bW4gY2hhbmdlXG4gICAgICBsZXQgZGF0YTogYW55ID0ge1xuICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgY29sdW1uOiBpdGVtXG4gICAgICB9O1xuXG4gICAgICBFdmVudFV0aWxzLmhhbmRsZUJyb3dzZXJFdmVudCh0aGlzLCAnYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQnLCAkZXZlbnQsIG51bGwsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gZG9FdmVudFxuICAgICAgfSwgKCRldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gZW1pdEJlZm9yZUV2ZW50XG4gICAgICAgIHRoaXMuZW1pdEJlZm9yZUNvbHVtbkNoYW5nZUV2ZW50KCRldmVudCk7XG4gICAgICB9LCAoJGV2ZW50OiBFdmVudCwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgLy8gZW1pdEFmdGVyRXZlbnRcbiAgICAgICAgdGhpcy5lbWl0Q29sdW1uQ2hhbmdlRXZlbnQoZGF0YSwgJGV2ZW50KTtcbiAgICAgIH0sICgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGRvUHJldmVudGVkXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0QmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQoJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGlmICh0aGlzLmJlZm9yZUNvbHVtbkNoYW5nZUV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgZGF0YTogYW55ID0ge307XG4gICAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KEJFRk9SRV9DT0xVTU5fQ0hBTkdFX0VWRU5ULCB0aGlzLCBkYXRhLCBudWxsKTtcblxuICAgICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudC5lbWl0KGV2KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdENvbHVtbkNoYW5nZUV2ZW50KGRhdGE6IGFueSwgJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGlmICh0aGlzLmNvbHVtbkNoYW5nZUV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KENPTFVNTl9DSEFOR0VfRVZFTlQsIHRoaXMsIGRhdGEsIG51bGwpO1xuXG4gICAgICB0aGlzLmNvbHVtbkNoYW5nZUV2ZW50LmVtaXQoZXYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRCZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0QmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkNoYW5nZUV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5DaGFuZ2VFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb2x1bW5DaGFuZ2VFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZUV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgc2VsZlJlc2V0RGF0YSgpOiB2b2lkIHtcbiAgfVxufVxuIl19