@sedeh/into-pipes
Version:
Have you ever wanted to transform data in different parts of your application into interactive objects without writing a single line of code?
65 lines • 10.6 kB
JavaScript
import { Component, EventEmitter } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class TableComponent {
constructor() {
this.headers = [];
this.rows = [];
this.disabled = false;
this.active = true;
this.validate = (item, newValue) => true;
this.onIntoComponentChange = new EventEmitter();
}
static settingsPatterns() {
return ['table::']; //id, name
}
transform(source, data, args) {
this.source = source;
this.id = args.length ? args[0] : '';
this.name = args.length > 1 ? args[1] : undefined;
if (typeof source === 'object') {
this.rows.push(source);
this.getHeaders(source);
}
else if (source instanceof Array) {
if (typeof source[0] === 'object') {
this.rows = source;
this.getHeaders(source[0]);
}
else {
source.map((item) => {
this.rows.push({ value: item });
});
this.headers.push('value');
}
}
else {
this.rows.push({ value: source });
this.headers.push('value');
}
}
getHeaders(obj) {
Object.keys(obj).map((item) => {
this.headers.push(item);
});
}
}
TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TableComponent, selector: "table-component", ngImport: i0, template: `
<table [id]="id" class="piped-table">
<caption *ngIf="name" [textContent]="name"></caption>
<tr><th scope="col" *ngFor="let header of headers" [textContent]="header"></th></tr>
<tr *ngFor="let row of rows"><td *ngFor="let header of headers" [textContent]="row[header]"></td></tr>
</table>
`, isInline: true, styles: [":host .piped-table{padding:0;width:100%;border-collapse:collapse}:host .piped-table caption{background-color:var(--sedeh-caption-background-color, #c3e5e2);border-radius:2px;color:var(--sedeh-caption-color, #1b1b1b);caption-side:top;font-size:14px;padding:var(--sedeh-padding, 5px);margin-bottom:var(--sedeh-margin-bottom, 5px);text-align:left}:host .piped-table th{-webkit-user-select:none;user-select:none;height:24px;position:relative;white-space:nowrap;font-weight:400;text-transform:uppercase;font-size:14px;padding-top:var(--sedeh-padding-top, 5px);padding-bottom:var(--sedeh-padding-bottom, 5px);text-align:left}:host .piped-table td{padding-left:3px;min-height:var(--sedeh-min-height, 25px)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TableComponent, decorators: [{
type: Component,
args: [{ selector: 'table-component', template: `
<table [id]="id" class="piped-table">
<caption *ngIf="name" [textContent]="name"></caption>
<tr><th scope="col" *ngFor="let header of headers" [textContent]="header"></th></tr>
<tr *ngFor="let row of rows"><td *ngFor="let header of headers" [textContent]="row[header]"></td></tr>
</table>
`, styles: [":host .piped-table{padding:0;width:100%;border-collapse:collapse}:host .piped-table caption{background-color:var(--sedeh-caption-background-color, #c3e5e2);border-radius:2px;color:var(--sedeh-caption-color, #1b1b1b);caption-side:top;font-size:14px;padding:var(--sedeh-padding, 5px);margin-bottom:var(--sedeh-margin-bottom, 5px);text-align:left}:host .piped-table th{-webkit-user-select:none;user-select:none;height:24px;position:relative;white-space:nowrap;font-weight:400;text-transform:uppercase;font-size:14px;padding-top:var(--sedeh-padding-top, 5px);padding-bottom:var(--sedeh-padding-bottom, 5px);text-align:left}:host .piped-table td{padding-left:3px;min-height:var(--sedeh-min-height, 25px)}\n"] }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW50by1waXBlcy9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBcUJ4RCxNQUFNLE9BQU8sY0FBYztJQWxCM0I7UUFzQkksWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGFBQVEsR0FBRyxDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztRQUVqRCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBcUMzQztJQW5DRyxNQUFNLENBQUMsZ0JBQWdCO1FBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVU7SUFDbEMsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFXLEVBQUUsSUFBUyxFQUFFLElBQVc7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRSxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVqRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxNQUFNLFlBQVksS0FBSyxFQUFFO1lBQ2hDLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QjtpQkFBTTtnQkFDSCxNQUFNLENBQUMsR0FBRyxDQUNOLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztnQkFDbEMsQ0FBQyxDQUNKLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDOUI7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFDTyxVQUFVLENBQUMsR0FBUTtRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FDaEIsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7NEdBOUNRLGNBQWM7Z0dBQWQsY0FBYyx1REFoQmI7Ozs7OztLQU1UOzRGQVVRLGNBQWM7a0JBbEIxQixTQUFTOytCQUNJLGlCQUFpQixZQUNqQjs7Ozs7O0tBTVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQaXBlQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi4vY29tbW9uL3BpcGUuY29tcG9uZW50LmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndGFibGUtY29tcG9uZW50JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8dGFibGUgW2lkXT1cImlkXCIgY2xhc3M9XCJwaXBlZC10YWJsZVwiPlxyXG4gICAgICAgIDxjYXB0aW9uICpuZ0lmPVwibmFtZVwiIFt0ZXh0Q29udGVudF09XCJuYW1lXCI+PC9jYXB0aW9uPlxyXG4gICAgICAgIDx0cj48dGggc2NvcGU9XCJjb2xcIiAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGhlYWRlcnNcIiBbdGV4dENvbnRlbnRdPVwiaGVhZGVyXCI+PC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NcIj48dGQgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBoZWFkZXJzXCIgW3RleHRDb250ZW50XT1cInJvd1toZWFkZXJdXCI+PC90ZD48L3RyPlxyXG4gICAgPC90YWJsZT5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgICBgXHJcbiAgICAgICAgOmhvc3QgLnBpcGVkLXRhYmxlIHtwYWRkaW5nOiAwO3dpZHRoOiAxMDAlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7fVxyXG4gICAgICAgIDpob3N0IC5waXBlZC10YWJsZSBjYXB0aW9uIHtiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWRlaC1jYXB0aW9uLWJhY2tncm91bmQtY29sb3IsICNjM2U1ZTIpO2JvcmRlci1yYWRpdXM6IDJweDtjb2xvcjogdmFyKC0tc2VkZWgtY2FwdGlvbi1jb2xvciwgIzFiMWIxYik7Y2FwdGlvbi1zaWRlOiB0b3A7Zm9udC1zaXplOiAxNHB4O3BhZGRpbmc6IHZhcigtLXNlZGVoLXBhZGRpbmcsIDVweCk7bWFyZ2luLWJvdHRvbTogdmFyKC0tc2VkZWgtbWFyZ2luLWJvdHRvbSwgNXB4KTt0ZXh0LWFsaWduOiBsZWZ0O31cclxuICAgICAgICA6aG9zdCAucGlwZWQtdGFibGUgdGgge3VzZXItc2VsZWN0OiBub25lO2hlaWdodDogMjRweDtwb3NpdGlvbjogcmVsYXRpdmU7d2hpdGUtc3BhY2U6IG5vd3JhcDtmb250LXdlaWdodDogbm9ybWFsO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Zm9udC1zaXplOiAxNHB4O3BhZGRpbmctdG9wOiB2YXIoLS1zZWRlaC1wYWRkaW5nLXRvcCwgNXB4KTtwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2VkZWgtcGFkZGluZy1ib3R0b20sIDVweCk7dGV4dC1hbGlnbjogbGVmdDt9XHJcbiAgICAgICAgOmhvc3QgLnBpcGVkLXRhYmxlIHRkIHtwYWRkaW5nLWxlZnQ6IDNweDttaW4taGVpZ2h0OiB2YXIoLS1zZWRlaC1taW4taGVpZ2h0LCAyNXB4KTt9XHJcbiAgICAgICAgYFxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBQaXBlQ29tcG9uZW50SW50ZXJmYWNlIHtcclxuICAgIHNvdXJjZSE6IHN0cmluZztcclxuICAgIGlkITogc3RyaW5nO1xyXG4gICAgbmFtZSE6IHN0cmluZztcclxuICAgIGhlYWRlcnM6IGFueVtdID0gW107XHJcbiAgICByb3dzOiBhbnlbXSA9IFtdO1xyXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIGFjdGl2ZSA9IHRydWU7XHJcbiAgICB2YWxpZGF0ZSA9IChpdGVtOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHRydWU7XHJcblxyXG5cdG9uSW50b0NvbXBvbmVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBzdGF0aWMgc2V0dGluZ3NQYXR0ZXJucygpIHtcclxuICAgICAgICByZXR1cm4gWyd0YWJsZTo6J107IC8vaWQsIG5hbWVcclxuICAgIH1cclxuICAgIHRyYW5zZm9ybShzb3VyY2U6IGFueSwgZGF0YTogYW55LCBhcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIHRoaXMuc291cmNlPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy5pZD0gYXJncy5sZW5ndGggPyBhcmdzWzBdIDogJyc7XHJcbiAgICAgICAgdGhpcy5uYW1lPSBhcmdzLmxlbmd0aCA+IDEgPyBhcmdzWzFdIDogdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dzLnB1c2goc291cmNlKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRIZWFkZXJzKHNvdXJjZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVswXSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm93cyA9IHNvdXJjZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0SGVhZGVycyhzb3VyY2VbMF0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc291cmNlLm1hcChcclxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd3MucHVzaCh7dmFsdWU6IGl0ZW19KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlcnMucHVzaCgndmFsdWUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93cy5wdXNoKHt2YWx1ZTogc291cmNlfSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGVhZGVycy5wdXNoKCd2YWx1ZScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgZ2V0SGVhZGVycyhvYmo6IGFueSkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKG9iaikubWFwKFxyXG4gICAgICAgICAgICAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==