Closed kayvanbree closed 6 years ago
It should be possible to define context from within a component. This way you can use this in the action method:
context = [ { text: 'Select element', context: ['select-element'], action: (args: any) => { this.selected = args.element; } } ];
Right now Contexr adds context every time such a component is created.
import { Component } from '@angular/core'; import {ContexrService} from '../../../../projects/contexr/src/lib/providers/contexr.service'; @Component({ selector: 'app-example-page', templateUrl: './example-page.component.html', styleUrls: ['./example-page.component.css'] }) export class ExamplePageComponent { dataSource = [ {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, ]; displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; selected; context = [ { text: 'Select element', context: ['select-element'], action: (args: any) => { this.selected = args.element; } } ]; constructor(private contexr: ContexrService) { this.contexr.registerContextMenuItems(this.context); } }
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8"> <!-- Position Column --> <ng-container matColumnDef="position"> <th mat-header-cell *matHeaderCellDef> No. </th> <td mat-cell *matCellDef="let element"> {{element.position}} </td> </ng-container> <!-- Name Column --> <ng-container matColumnDef="name"> <th mat-header-cell *matHeaderCellDef> Name </th> <td mat-cell *matCellDef="let element"> {{element.name}} </td> </ng-container> <!-- Weight Column --> <ng-container matColumnDef="weight"> <th mat-header-cell *matHeaderCellDef> Weight </th> <td mat-cell *matCellDef="let element"> {{element.weight}} </td> </ng-container> <!-- Symbol Column --> <ng-container matColumnDef="symbol"> <th mat-header-cell *matHeaderCellDef> Symbol </th> <td mat-cell *matCellDef="let element"> {{element.symbol}} </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;" [ctx]="'select-element'" [ctxArgs]="{element: row}" ></tr> </table> <div class="element" *ngIf="selected"> <h1>Selected element</h1> <mat-card> <mat-card-header> {{selected.name}} </mat-card-header> <mat-card-content> <ul> <li>Weight: <b>{{selected.weight}}</b></li> <li>Symbol: <b>{{selected.symbol}}</b></li> </ul> </mat-card-content> </mat-card> </div>
This is now possible on develop branch
It should be possible to define context from within a component. This way you can use this in the action method:
Right now Contexr adds context every time such a component is created.
Example code