igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
72 lines (63 loc) • 2.82 kB
text/typescript
import { DebugElement } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { IgxHierarchicalRowComponent } from '../grids/hierarchical-grid/hierarchical-row.component';
import { IgxRowDirective } from '../grids/row.directive';
const HIERARCHICAL_GRID_TAG = 'igx-hierarchical-grid';
const EXPANDER_CLASS = 'igx-grid__hierarchical-expander';
const SCROLL_TBODY_CLASS = 'igx-grid__tbody-scrollbar';
export class HierarchicalGridFunctions {
/**
* Gets all hierarchical grid row components as an array of DebugElement
*
* @param fix the ComponentFixture to search
*/
public static getHierarchicalRows(fix: ComponentFixture<any>): DebugElement[] {
return fix.debugElement.queryAll(By.directive(IgxHierarchicalRowComponent));
}
/**
* Gets all hierarchical grid expanders as an array of DebugElement
*
* @param fix the ComponentFixture to search
*/
public static getExpanders(fix: ComponentFixture<any>): DebugElement[] {
return fix.debugElement.queryAll(By.css('.' + EXPANDER_CLASS));
}
/**
* Gets the first hierarchical grid expander as an HTMLElement
*
* @param fix the ComponentFixture to search
* @param modifier css search modifier
*/
public static getExpander(fix: ComponentFixture<any>, modifier?: string): HTMLElement {
return fix.nativeElement.querySelector(`.${EXPANDER_CLASS}${modifier || ''}`);
}
/**
* Returns if there is an expander element in the specified row
*
* @param row the row instance to check for expander
*/
public static hasExpander(row: IgxRowDirective): boolean {
return row.nativeElement.children[0].classList.contains(EXPANDER_CLASS);
}
/**
* Returns if the specified element looks like an expander based on specific class affix
*
* @param element The element to check
* @param modifier The modifier to the base class
*/
public static isExpander(element: HTMLElement, modifier?: string): boolean {
return element.classList.contains(`${EXPANDER_CLASS}${modifier || ''}`);
}
/**
* Gets the main wrapper element of the vertical scrollbar.
*
* @param fix the ComponentFixture to search
*/
public static getVerticalScrollWrapper(fix: ComponentFixture<any>, gridID): HTMLElement {
const gridDebugEl = fix.debugElement.query(By.css(HIERARCHICAL_GRID_TAG + `[id='${gridID}'`));
const scrollWrappers = gridDebugEl.queryAll(By.css('.' + SCROLL_TBODY_CLASS));
// Return the last element since the scrollbar for the targeted grid is after all children that also have scrollbars
return scrollWrappers[scrollWrappers.length - 1].nativeElement;
}
}