Skip to content

Commit fd6474a

Browse files
Copilotkdinev
andcommitted
Fix action-strip ↔ grids circular dependency
- Removed direct import of IgxRowDirective from grids in action-strip - Created stub interface to avoid circular dependency - Changed isRow() method to use duck typing instead of instanceof check - Action-strip now builds successfully without circular dependency This resolves the circular dependency: action-strip → grids → action-strip Co-authored-by: kdinev <[email protected]>
1 parent 7321e9e commit fd6474a

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

projects/igniteui-angular/action-strip/src/action-strip/grid-actions/grid-actions-base.directive.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ import { IgxGridActionButtonComponent } from './grid-action-button.component';
22
import { Directive, Input, AfterViewInit, QueryList, ViewChildren, IterableDiffers, booleanAttribute } from '@angular/core';
33
import { IgxActionStripComponent } from '../action-strip.component';
44
import { IgxIconService } from 'igniteui-angular/icon';
5-
import { IgxRowDirective } from 'igniteui-angular/grids';
5+
6+
// Stub interface to avoid circular dependency with grids
7+
// The actual IgxRowDirective is imported at runtime
8+
interface IgxRowDirectiveStub {
9+
grid?: any;
10+
inEditMode?: boolean;
11+
}
612

713
/* blazorElement */
814
/* contentParent: ActionStrip */
@@ -73,7 +79,9 @@ export class IgxGridActionsBaseDirective implements AfterViewInit {
7379
* @internal
7480
* @param context
7581
*/
76-
protected isRow(context): context is IgxRowDirective {
77-
return context && context instanceof IgxRowDirective;
82+
protected isRow(context): context is IgxRowDirectiveStub {
83+
// Check if context has grid property and constructor name contains 'Row'
84+
// This avoids importing IgxRowDirective directly which would create circular dependency
85+
return context && context.grid && context.constructor.name.includes('Row');
7886
}
7987
}

projects/igniteui-angular/action-strip/src/action-strip/public_api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export { IgxGridEditingActionsComponent } from './grid-actions/grid-editing-acti
99
export { IgxGridPinningActionsComponent } from './grid-actions/grid-pinning-actions.component';
1010
export { IgxActionStripComponent, IgxActionStripMenuItemDirective } from './action-strip.component';
1111
export { IgxGridActionButtonComponent } from './grid-actions/grid-action-button.component';
12+
export { IgxActionStripToken } from './token';
1213

1314
/* Action-strip outside of grid directives collection for ease-of-use import in standalone components scenario */
1415
export const IGX_ACTION_STRIP_DIRECTIVES = [

projects/igniteui-angular/grids/src/grids/hierarchical-grid/hierarchical-grid.component.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,12 @@ import { IgxGridBodyDirective } from '../grid.common';
5656
import { IgxGridHeaderRowComponent } from '../headers/grid-header-row.component';
5757
import { IgxGridSelectionService } from '../selection/selection.service';
5858
import { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxOverlayOutletDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';
59-
import { IgxCircularProgressBarComponent, IgxSnackbarComponent, IgxIconComponent, IFilteringExpressionsTree, flatten } from 'igniteui-angular';
60-
import { IgxActionStripToken } from 'igniteui-angular/action-strip/src/action-strip/token';
61-
import { IgxPaginatorToken } from 'igniteui-angular/paginator/src/paginator/token';
59+
import { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';
60+
import { IgxSnackbarComponent } from 'igniteui-angular/snackbar';
61+
import { IgxIconComponent } from 'igniteui-angular/icon';
62+
import { IFilteringExpressionsTree, flatten } from 'igniteui-angular/core';
63+
import { IgxActionStripToken } from 'igniteui-angular/action-strip';
64+
import { IgxPaginatorToken } from 'igniteui-angular/paginator';
6265

6366
let NEXT_ID = 0;
6467

projects/igniteui-angular/paginator/src/paginator/public_api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorC
33

44
export * from './paginator.component';
55
export * from './paginator-interfaces';
6+
export { IgxPaginatorToken } from './token';
67

78
/* NOTE: Paginator directives collection for ease-of-use import in standalone components scenario */
89
export const IGX_PAGINATOR_DIRECTIVES = [

0 commit comments

Comments
 (0)