File

src/lib/table/table-column-dropdown.component.ts

Metadata

selector plex-table-columns
template <plex-dropdown icon="format-list-checks" type="info" size="sm" class="d-inline-block ml-1" [right]="true">
    <plex-grid cols="3">
        <ng-container *ngFor="let column of columns$ | async">
            <plex-bool [label]="column.label" [(ngModel)]="estadoColumnas[column.key]" (change)="onColumnChange()" *ngIf="column.opcional">
            </plex-bool>
        </ng-container>
    </plex-grid>
</plex-dropdown>

Inputs

selected

Type: IPlexColumnDisplay

Outputs

change $event type: EventEmitter

Constructor

constructor(table: PlexColumnDirective)

Methods

onColumnChange
onColumnChange()
Returns: void

Properties

columns$
columns$: Observable<IPlexTableColumns[]>
estadoColumnas
estadoColumnas: IPlexColumnDisplay
table
table: PlexColumnDirective
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
import { Observable } from 'rxjs';
import { first, tap } from 'rxjs/operators';
import { PlexColumnDirective } from './columns.directive';
import { IPlexColumnDisplay, IPlexTableColumns } from './table.interfaces';


@Component({
    selector: 'plex-table-columns',
    template: `
        <plex-dropdown icon="format-list-checks" type="info" size="sm" class="d-inline-block ml-1" [right]="true">
            <plex-grid cols="3">
                <ng-container *ngFor="let column of columns$ | async">
                    <plex-bool [label]="column.label" [(ngModel)]="estadoColumnas[column.key]" (change)="onColumnChange()" *ngIf="column.opcional">
                    </plex-bool>
                </ng-container>
            </plex-grid>
        </plex-dropdown>
    `,
})
export class PlexTableColumnsComponent implements OnChanges, OnInit {

    @Input() selected: IPlexColumnDisplay = null;

    @Output() change = new EventEmitter<IPlexColumnDisplay>();

    estadoColumnas: IPlexColumnDisplay = {};


    columns$: Observable<IPlexTableColumns[]>;

    constructor(
        public table: PlexColumnDirective
    ) {

        if (this.table) {
            this.columns$ = this.table.columns$;
            this.table.setColumnHandler(this);
        }

    }

    ngOnInit() {
        if (!this.selected) {
            this.columns$.pipe(
                first(),
                tap(cols => {
                    cols.forEach(col => {
                        this.estadoColumnas[col.key] = true;
                    });
                    this.change.emit({ ...this.estadoColumnas });
                })
            ).subscribe();
        }
    }

    ngOnChanges(changes: SimpleChanges) {
        if (changes.selected) {
            this.estadoColumnas = { ...changes.selected.currentValue };
            this.change.emit({ ...this.estadoColumnas });
        }
    }

    onColumnChange() {
        this.change.emit({ ...this.estadoColumnas });
    }
}

results matching ""

    No results matching ""