@WidgetComponent

nm-grid-contextmenu

File

src/app/shared/widgets/data-list/data-list-context-menu-component/data-list-context-menu.component.ts

Implements

AfterViewInit OnChanges

Metadata

selector nm-grid-contextmenu
styleUrls data-list-context-menu.component.scss
templateUrl ./data-list-context-menu.component.html

Index

Widget inputs
Widget outputs
Properties
Methods
Inputs
Outputs

Constructor

constructor(appContext: AppContext, dataListActionsService: DataListActionsService)
Parameters :
Name Type Optional
appContext AppContext no
dataListActionsService DataListActionsService no

Inputs

api

Type: DataListApi

cell
column
configuration

Type: any

grid
link

Type: Observable<string>

menuTrigger
selected-items

Type: Observable<SelectionParams>

total

Type: Observable<number>

Outputs

closeContextMenu $event type: EventEmitter
export $event type: EventEmitter

Methods

ngAfterViewInit
ngAfterViewInit()
Returns : void
ngOnChanges
ngOnChanges(changes: SimpleChanges)
Parameters :
Name Type Optional
changes SimpleChanges no
Returns : void
Public onExecute
onExecute()
Returns : void

Properties

_configuration
_configuration:
Private cellSubject
cellSubject:
Default value : new ReplaySubject<IgxGridCell>(1)
Private columnSubject
columnSubject:
Default value : new ReplaySubject<Column>(1)
menu
menu: InteractionMenuComponent
Type : InteractionMenuComponent
Decorators : ViewChild
Public menuObs
menuObs:
Default value : new Subject()
stateObservable
stateObservable: Observable<DataListState>
Type : Observable<DataListState>
visible
visible: boolean
Type : boolean
Default value : false

Accessors

cell
setcell(cell: )
Parameters :
Name Optional
cell no
Returns : void
column
setcolumn(column: )
Parameters :
Name Optional
column no
Returns : void
configuration
getconfiguration()
setconfiguration(configuration: any)
Parameters :
Name Type Optional
configuration any no
Returns : void
import {
  Component,
  Input,
  OnInit,
  ViewChild,
  Output,
  EventEmitter,
  AfterViewInit,
  OnChanges,
  SimpleChanges,
} from "@angular/core";
import { Observable, ReplaySubject, Subject } from "rxjs";
import { AppContext } from "../../../components/app-context/app.context";
import { MatMenu } from "@angular/material/menu";

import { DataListState } from "../default-footer-component/default-data-list-footer.component";
import { Column, SelectionParams } from "../../interfaces/list.interfaces";
import { DataListActionsService } from "../default-footer-component/data-list-actions.service";
import { IgxGridCell } from "@infragistics/igniteui-angular";
import { DataListApi } from "../data-list.api";
import { InteractionMenuComponent } from "../../../components/interactions/interaction-menu.component";

const DEFAULT_ACTION_CONFIGURATION = {
  hidden: false,
  selectors: {
    target: ["default-data-list-footer", "default-data-list-context-menu"],
  },
};

const CONDITION_HAS_SELECTION = [
  (config, param) => param && param.selected > 0,
];

const CONDITION_HAS_CONTENT = [(config, param) => param && param.total > 0];

@Component({
  selector: "nm-grid-contextmenu",
  styleUrls: ["./data-list-context-menu.component.scss"],
  templateUrl: "./data-list-context-menu.component.html",
})
export class DataListContextMenuComponent implements AfterViewInit, OnChanges {
  @Input()
  public menuTrigger;

  @ViewChild(InteractionMenuComponent) menu: InteractionMenuComponent;

  public menuObs = new Subject();

  @Input()
  public set cell(cell) {
    this.cellSubject.next(cell);
  }

  @Input("selected-items")
  selectedItems: Observable<SelectionParams>;

  @Input()
  total: Observable<number>;

  @Input()
  grid;

  @Input()
  public api: DataListApi;

  @Input()
  link: Observable<string>;

  @Input()
  public set column(column: Column) {
    this.columnSubject.next(column);
  }

  @Output()
  closeContextMenu = new EventEmitter();

  @Output()
  export = new EventEmitter<any>();

  @Input()
  public set configuration(configuration: any) {
    this._configuration = Object.assign(
      {},
      DEFAULT_ACTION_CONFIGURATION,
      configuration.contextmenu || {}
    );
  }

  _configuration;

  private columnSubject = new ReplaySubject<Column>(1);
  private cellSubject = new ReplaySubject<IgxGridCell>(1);

  visible: boolean = false;
  stateObservable: Observable<DataListState>;

  constructor(
    private appContext: AppContext,
    private dataListActionsService: DataListActionsService
  ) {}

  ngAfterViewInit(): void {
    this.menuObs.next(this.menu.menu);
  }

  public get configuration(): any {
    return this._configuration;
  }

  ngOnChanges(changes: SimpleChanges): void {
    //Wait till the api is here before initializing
    if (changes.api && this.api) {
      this.stateObservable = this.dataListActionsService.mapSelectionState(
        this.total,
        this.selectedItems,
        this.link,
        [],
        this.columnSubject,
        this.cellSubject,
        this.grid,
        this.api,
        this.export
      );
    }
  }

  public onExecute() {
    this.menuTrigger
      ? this.menuTrigger.closeMenu()
      : this.closeContextMenu.emit();
  }
}
<nm-interaction-menu
  [actions]="_configuration.selectors"
  [param]="stateObservable | async"
  (onExecute)="onExecute()"
>
</nm-interaction-menu>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""