1- import { Directive , AfterContentInit , ContentChild } from "@angular/core" ;
1+ import { Directive , AfterContentInit , ContentChild , ElementRef } from "@angular/core" ;
22import { IgGridSortingFeature } from "./iggridfeatures/iggridsorting.directive" ;
33import { IgGridFilteringFeature } from "./iggridfeatures/iggridfiltering.directive" ;
44import { IgGridPagingFeature } from "./iggridfeatures/iggridpaging.directive" ;
@@ -22,6 +22,7 @@ import { IgGridMultiColumnHeadersFeature } from "./iggridfeatures/iggridmulticol
2222} )
2323export class Features implements AfterContentInit {
2424 public allFeatures :Array < any > = new Array < any > ( )
25+
2526 @ContentChild ( IgGridSortingFeature ) sorting : IgGridSortingFeature ;
2627 @ContentChild ( IgGridFilteringFeature ) filtering : IgGridFilteringFeature ;
2728 @ContentChild ( IgGridPagingFeature ) paging : IgGridPagingFeature ;
@@ -40,6 +41,35 @@ export class Features implements AfterContentInit {
4041 @ContentChild ( IgGridAppendRowsOnDemandFeature ) appendRowsOnDemand : IgGridAppendRowsOnDemandFeature ;
4142 @ContentChild ( IgGridMultiColumnHeadersFeature ) multiColumnHeaders : IgGridMultiColumnHeadersFeature ;
4243
44+ addFeature ( name , parent ) {
45+ var nodeName = name . replace ( / ( [ A - Z ] ) / g, function ( g ) { return '-' + g [ 0 ] . toLowerCase ( ) } ) ;
46+ var el = document . createElement ( nodeName ) ;
47+ el = parent . appendChild ( el ) ;
48+ var child = new ElementRef ( el ) ;
49+
50+ switch ( nodeName ) {
51+ case "filtering" : this . filtering = new IgGridFilteringFeature ( child ) ; break ;
52+ case "sorting" : this . sorting = new IgGridSortingFeature ( child ) ; break ;
53+ case "paging" : this . paging = new IgGridPagingFeature ( child ) ; break ;
54+ case "updating" : this . updating = new IgGridUpdatingFeature ( child ) ; break ;
55+ case "group-by" : this . groupBy = new IgGridGroupByFeature ( child ) ; break ;
56+ case "moving" : this . moving = new IgGridColumnMovingFeature ( child ) ; break ;
57+ case "hiding" : this . hiding = new IgGridHidingFeature ( child ) ; break ;
58+ case "responsive" : this . responsive = new IgGridResponsiveFeature ( child ) ; break ;
59+ case "cell-merging" : this . cellMerging = new IgGridCellMergingFeature ( child ) ; break ;
60+ case "resizing" : this . resizing = new IgGridResizingFeature ( child ) ; break ;
61+ case "selection" : this . selection = new IgGridSelectionFeature ( child ) ; break ;
62+ case "row-selectors" : this . rowSelectors = new IgGridRowSelectorsFeature ( child ) ; break ;
63+ case "summaries" : this . summaries = new IgGridSummariesFeature ( child ) ; break ;
64+ case "column-fixing" : this . columnFixing = new IgGridColumnFixingFeature ( child ) ; break ;
65+ case "tooltips" : this . tooltips = new IgGridTooltipsFeature ( child ) ; break ;
66+ case "append-rows-on-demand" : this . appendRowsOnDemand = new IgGridAppendRowsOnDemandFeature ( child ) ; break ;
67+ case "multi-column-headers" : this . multiColumnHeaders = new IgGridMultiColumnHeadersFeature ( child ) ; break ;
68+ }
69+ this [ name ] . ngOnInit ( ) ;
70+ this . allFeatures . push ( this [ name ] ) ;
71+
72+ }
4373 ngAfterContentInit ( ) {
4474 this . filtering ? this . allFeatures . push ( this . filtering ) : null ;
4575 this . sorting ? this . allFeatures . push ( this . sorting ) : null ;
0 commit comments