igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
75 lines (66 loc) • 2.07 kB
text/typescript
import { IgxGridActionButtonComponent } from './grid-action-button.component';
import { Directive, Input, AfterViewInit, QueryList, ViewChildren, IterableDiffers } from '@angular/core';
import { IgxActionStripComponent } from '../action-strip.component';
import { IgxRowDirective } from '../../grids/row.directive';
import { IgxIconService } from '../../icon/icon.service';
({
selector: '[igxGridActionsBase]',
standalone: true
})
export class IgxGridActionsBaseDirective implements AfterViewInit {
/** @hidden @internal **/
(IgxGridActionButtonComponent)
public buttons: QueryList<IgxGridActionButtonComponent>;
/**
* Gets/Sets if the action buttons will be rendered as menu items. When in menu, items will be rendered with text label.
*
* @example
* ```html
* <igx-grid-pinning-actions [asMenuItems]='true'></igx-grid-pinning-actions>
* <igx-grid-editing-actions [asMenuItems]='true'></igx-grid-editing-actions>
* ```
*/
()
public asMenuItems = false;
/** @hidden @internal **/
public strip: IgxActionStripComponent;
/**
* @hidden
* @internal
*/
public get grid() {
return this.strip.context.grid;
}
/**
* Getter to be used in template
*
* @hidden
* @internal
*/
public get isRowContext(): boolean {
return this.isRow(this.strip.context) && !this.strip.context.inEditMode;
}
constructor(protected iconService: IgxIconService,
protected differs: IterableDiffers) { }
/**
* @hidden
* @internal
*/
public ngAfterViewInit() {
if (this.asMenuItems) {
this.buttons.changes.subscribe(() => {
this.strip.cdr.detectChanges();
});
}
}
/**
* Check if the param is a row from a grid
*
* @hidden
* @internal
* @param context
*/
protected isRow(context): context is IgxRowDirective {
return context && context instanceof IgxRowDirective;
}
}