@@ -172,17 +172,12 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
172172 @Input ( )
173173 public set fields ( fields : FieldType [ ] ) {
174174 this . _fields = fields ;
175-
175+
176+ this . _fields = this . _fields ?. map ( f => ( { ...f , filters : this . getFilters ( f ) , pipeArgs : this . getPipeArgs ( f ) } ) ) ;
177+
176178 if ( ! this . _fields && this . isAdvancedFiltering ( ) ) {
177179 this . _fields = this . entities [ 0 ] . fields ;
178180 }
179-
180- if ( this . _fields ) {
181- this . _fields . forEach ( field => {
182- this . setFilters ( field ) ;
183- this . setFormat ( field ) ;
184- } ) ;
185- }
186181 }
187182
188183 /**
@@ -1188,7 +1183,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
11881183 if ( ! this . selectedField ) {
11891184 this . fieldSelect . input . nativeElement . focus ( ) ;
11901185 } else if ( this . selectedField . filters . condition ( this . selectedCondition ) ?. isUnary ) {
1191- this . conditionSelect . input . nativeElement . focus ( ) ;
1186+ this . conditionSelect ? .input . nativeElement . focus ( ) ;
11921187 } else {
11931188 const input = this . searchValueInput ?. nativeElement || this . picker ?. getEditElement ( ) ;
11941189 input ?. focus ( ) ;
@@ -1492,16 +1487,19 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
14921487 return ctx ;
14931488 }
14941489
1495- private setFormat ( field : FieldType ) {
1496- if ( ! field . pipeArgs ) {
1497- field . pipeArgs = { digitsInfo : DEFAULT_PIPE_DIGITS_INFO } ;
1490+ private getPipeArgs ( field : FieldType ) {
1491+ let pipeArgs = { ...field . pipeArgs } ;
1492+ if ( ! pipeArgs ) {
1493+ pipeArgs = { digitsInfo : DEFAULT_PIPE_DIGITS_INFO } ;
14981494 }
14991495
1500- if ( ! field . pipeArgs . format ) {
1501- field . pipeArgs . format = field . dataType === DataType . Time ?
1496+ if ( ! pipeArgs . format ) {
1497+ pipeArgs . format = field . dataType === DataType . Time ?
15021498 DEFAULT_PIPE_TIME_FORMAT : field . dataType === DataType . DateTime ?
15031499 DEFAULT_PIPE_DATE_TIME_FORMAT : DEFAULT_PIPE_DATE_FORMAT ;
15041500 }
1501+
1502+ return pipeArgs ;
15051503 }
15061504
15071505 private selectDefaultCondition ( ) {
@@ -1510,30 +1508,24 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
15101508 }
15111509 }
15121510
1513- private setFilters ( field : FieldType ) {
1511+ private getFilters ( field : FieldType ) {
15141512 if ( ! field . filters ) {
15151513 switch ( field . dataType ) {
15161514 case DataType . Boolean :
1517- field . filters = IgxBooleanFilteringOperand . instance ( ) ;
1518- break ;
1515+ return IgxBooleanFilteringOperand . instance ( ) ;
15191516 case DataType . Number :
15201517 case DataType . Currency :
15211518 case DataType . Percent :
1522- field . filters = IgxNumberFilteringOperand . instance ( ) ;
1523- break ;
1519+ return IgxNumberFilteringOperand . instance ( ) ;
15241520 case DataType . Date :
1525- field . filters = IgxDateFilteringOperand . instance ( ) ;
1526- break ;
1521+ return IgxDateFilteringOperand . instance ( ) ;
15271522 case DataType . Time :
1528- field . filters = IgxTimeFilteringOperand . instance ( ) ;
1529- break ;
1523+ return IgxTimeFilteringOperand . instance ( ) ;
15301524 case DataType . DateTime :
1531- field . filters = IgxDateTimeFilteringOperand . instance ( ) ;
1532- break ;
1525+ return IgxDateTimeFilteringOperand . instance ( ) ;
15331526 case DataType . String :
15341527 default :
1535- field . filters = IgxStringFilteringOperand . instance ( ) ;
1536- break ;
1528+ return IgxStringFilteringOperand . instance ( ) ;
15371529 }
15381530 }
15391531 }
0 commit comments