Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions projects/igniteui-angular/core/src/public_api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export * from './data-operations/grid-sorting-strategy';
export * from './data-operations/paging-state.interface';
export * from './data-operations/data-util';
export * from './data-operations/grid-types';
export * from './data-operations/operations';

// Services
export * from './services/public_api';
Expand Down
9 changes: 0 additions & 9 deletions projects/igniteui-angular/core/src/services/public_api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,7 @@
export * from './animation/angular-animation-player';
export * from './animation/angular-animation-service';
export * from './animation/animation';
export * from './csv/csv-exporter';
export * from './csv/csv-exporter-options';
export * from './csv/char-separated-value-data';
export { Direction as ɵDirection, DIR_DOCUMENT as ɵDIR_DOCUMENT, IgxDirectionality as ɵIgxDirectionality } from './direction/directionality';
export * from './excel/excel-exporter';
export * from './excel/excel-exporter-options';
export * from './pdf/pdf-exporter';
export * from './pdf/pdf-exporter-options';
export * from './exporter-common/base-export-service';
export * from './exporter-common/exporter-options-base';
export * from './overlay/overlay';
Comment on lines 5 to 6
Copy link

Copilot AI Nov 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Removed exporter service exports leave a formatting gap. The export statement on line 5 should have consistent spacing with line 6 (consider adding a blank line after line 5 or removing the existing blank line before line 6 for consistency).

Copilot uses AI. Check for mistakes.
export * from './overlay/position';
export * from './overlay/scroll';
Expand Down
4 changes: 3 additions & 1 deletion projects/igniteui-angular/grids/core/src/common/events.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { CancelableEventArgs, ColumnType, IBaseEventArgs, IFilteringExpressionsTree, IGroupingExpression, IgxBaseExporter, IgxExporterOptionsBase, ISortingExpression } from 'igniteui-angular/core';
import { CancelableEventArgs, ColumnType, IBaseEventArgs, IFilteringExpressionsTree, IGroupingExpression, ISortingExpression } from 'igniteui-angular/core';
import { GridKeydownTargetType } from './enums';
import { CellType, GridType, RowType } from './grid.interface';
import { IBaseSearchInfo } from 'igniteui-angular/directives';
import { IgxBaseExporter } from '../services/exporter-common/base-export-service';
import { IgxExporterOptionsBase } from '../services/exporter-common/exporter-options-base';

/** The event arguments when data from a grid is being copied. */
export interface IGridClipboardEvent {
Expand Down
11 changes: 11 additions & 0 deletions projects/igniteui-angular/grids/core/src/public_api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,17 @@ export * from './pivot-grid.interface';
export * from './pivot-grid-dimensions';
export * from './pivot-grid-aggregate';
export * from './watch-changes';
// Exporter services (moved from core)
export * from './services/exporter-common/base-export-service';
export * from './services/exporter-common/exporter-options-base';
export * from './services/exporter-common/export-utilities';
export * from './services/csv/csv-exporter';
export * from './services/csv/csv-exporter-options';
export * from './services/csv/char-separated-value-data';
export * from './services/excel/excel-exporter';
export * from './services/excel/excel-exporter-options';
export * from './services/pdf/pdf-exporter';
export * from './services/pdf/pdf-exporter-options';

/*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ExportUtilities } from '../exporter-common/export-utilities';
import { yieldingLoop } from '../../core/utils';
import { IColumnInfo } from '../exporter-common/base-export-service';
import { yieldingLoop } from 'igniteui-angular/core';

/**
* @hidden
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,23 @@ import { ExportUtilities } from '../exporter-common/export-utilities';
import { TestMethods } from '../exporter-common/test-methods.spec';
import { IgxCsvExporterService } from './csv-exporter';
import { CsvFileTypes, IgxCsvExporterOptions } from './csv-exporter-options';
import { CSVWrapper } from './csv-verification-wrapper.spec';
import { IgxTreeGridPrimaryForeignKeyComponent } from '../../../../test-utils/tree-grid-components.spec';
import { IgxTreeGridPrimaryForeignKeyComponent } from '../../../../../test-utils/tree-grid-components.spec';
import { ReorderedColumnsComponent,
GridIDNameJobTitleComponent,
ProductsComponent,
ColumnsAddedOnInitComponent,
EmptyGridComponent } from '../../../../test-utils/grid-samples.spec';
import { SampleTestData } from '../../../../test-utils/sample-test-data.spec';
EmptyGridComponent } from '../../../../../test-utils/grid-samples.spec';
import { SampleTestData } from '../../../../../test-utils/sample-test-data.spec';
import { first } from 'rxjs/operators';
import { DefaultSortingStrategy, SortingDirection } from '../../data-operations/sorting-strategy';
import { IgxStringFilteringOperand, IgxNumberFilteringOperand } from '../../data-operations/filtering-condition';
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { wait } from '../../../../test-utils/ui-interactions.spec';
import { IgxPivotGridTestBaseComponent } from '../../../../test-utils/pivot-grid-samples.spec';
import { wait } from '../../../../../test-utils/ui-interactions.spec';
import { IgxPivotGridTestBaseComponent } from '../../../../../test-utils/pivot-grid-samples.spec';
import { IgxGridComponent } from 'igniteui-angular/grids/grid';
import { IgxTreeGridComponent } from 'igniteui-angular/grids/tree-grid';
import { IgxPivotGridComponent } from 'igniteui-angular/grids/pivot-grid';
import { IgxPivotNumericAggregate } from 'igniteui-angular/grids/core';
import { DefaultSortingStrategy, FilteringExpressionsTree, FilteringLogic, IgxNumberFilteringOperand, IgxStringFilteringOperand, SortingDirection } from 'igniteui-angular/core';
import { CSVWrapper } from './csv-verification-wrapper.spec';

describe('CSV Grid Exporter', () => {
let exporter: IgxCsvExporterService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { ExportUtilities } from '../exporter-common/export-utilities';
import { IgxCsvExporterService } from './csv-exporter';
import { CsvFileTypes, IgxCsvExporterOptions } from './csv-exporter-options';
import { CSVWrapper } from './csv-verification-wrapper.spec';
import { SampleTestData } from '../../../../test-utils/sample-test-data.spec';
import { SampleTestData } from '../../../../../test-utils/sample-test-data.spec';
import { first } from 'rxjs/operators';

describe('CSV exporter', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { DEFAULT_OWNER, ExportHeaderType, IColumnInfo, IExportRecord, IgxBaseExp
import { ExportUtilities } from '../exporter-common/export-utilities';
import { CharSeparatedValueData } from './char-separated-value-data';
import { CsvFileTypes, IgxCsvExporterOptions } from './csv-exporter-options';
import { IBaseEventArgs } from '../../core/utils';
import { IBaseEventArgs } from 'igniteui-angular/core';

export interface ICsvExportEndedEventArgs extends IBaseEventArgs {
csvData?: string;
Expand Down Expand Up @@ -51,13 +51,13 @@ export class IgxCsvExporterService extends IgxBaseExporter {

protected exportDataImplementation(data: IExportRecord[], options: IgxCsvExporterOptions, done: () => void) {
const dimensionKeys = data[0]?.dimensionKeys;
data = dimensionKeys?.length ?
data = dimensionKeys?.length ?
data.map((item) => item.rawData):
data.map((item) => item.data);
const columnList = this._ownersMap.get(DEFAULT_OWNER);
const columns = columnList?.columns.filter(c => c.headerType === ExportHeaderType.ColumnHeader);
if (dimensionKeys) {
const dimensionCols = dimensionKeys.map((key) => {
const dimensionCols = dimensionKeys.map((key) => {
const columnInfo: IColumnInfo = {
header: key,
field: key,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@

export class CSVWrapper {
private _data: string;
private _hasValues = true;
private _delimiter = '';
private _eor = '\r\n';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import { ExportUtilities } from '../exporter-common/export-utilities';
import { TestMethods } from '../exporter-common/test-methods.spec';
import { IgxExcelExporterService } from './excel-exporter';
import { IgxExcelExporterOptions } from './excel-exporter-options';
import { ZipWrapper } from './zip-verification-wrapper.spec';
import { FileContentData } from './test-data.service.spec';
import {
ReorderedColumnsComponent,
GridIDNameJobTitleComponent,
Expand All @@ -25,32 +23,30 @@ import {
GridCustomSummaryWithUndefinedZeroAndValidNumberComponent,
GridCustomSummaryWithUndefinedAndNullComponent,
GridCustomSummaryWithDateComponent
} from '../../../../test-utils/grid-samples.spec';
import { SampleTestData } from '../../../../test-utils/sample-test-data.spec';
} from '../../../../../test-utils/grid-samples.spec';
import { SampleTestData } from '../../../../../test-utils/sample-test-data.spec';
import { first } from 'rxjs/operators';
import { DefaultSortingStrategy, SortingDirection } from '../../data-operations/sorting-strategy';
import { IgxStringFilteringOperand } from '../../data-operations/filtering-condition';
import { IgxTreeGridPrimaryForeignKeyComponent, IgxTreeGridSummariesKeyComponent } from '../../../../test-utils/tree-grid-components.spec';
import { IgxTreeGridPrimaryForeignKeyComponent, IgxTreeGridSummariesKeyComponent } from '../../../../../test-utils/tree-grid-components.spec';

import { IgxNumberFilteringOperand } from '../../data-operations/filtering-condition';
import { UIInteractions, wait } from '../../../../test-utils/ui-interactions.spec';
import { UIInteractions, wait } from '../../../../../test-utils/ui-interactions.spec';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
import { IgxHierarchicalGridExportComponent,
IgxHierarchicalGridMCHCollapsibleComponent,
IgxHierarchicalGridMultiColumnHeaderIslandsExportComponent,
IgxHierarchicalGridMultiColumnHeadersExportComponent,
IgxHierarchicalGridSummariesExportComponent
} from '../../../../test-utils/hierarchical-grid-components.spec';
import { GridFunctions } from '../../../../test-utils/grid-functions.spec';
import { IgxPivotGridMultipleRowComponent, IgxPivotGridTestComplexHierarchyComponent, SALES_DATA } from '../../../../test-utils/pivot-grid-samples.spec';
} from '../../../../../test-utils/hierarchical-grid-components.spec';
import { GridFunctions } from '../../../../../test-utils/grid-functions.spec';
import { IgxPivotGridMultipleRowComponent, IgxPivotGridTestComplexHierarchyComponent, SALES_DATA } from '../../../../../test-utils/pivot-grid-samples.spec';
import { IgxHierarchicalRowComponent } from 'igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component';
import { IgxTreeGridComponent } from 'igniteui-angular/grids/tree-grid';
import { IgxPivotGridComponent } from 'igniteui-angular/grids/pivot-grid';
import { IgxPivotNumericAggregate, PivotRowLayoutType } from 'igniteui-angular/grids/core';
import { IgxHierarchicalGridComponent } from 'igniteui-angular/grids/hierarchical-grid';
import { IgxGridComponent } from 'igniteui-angular/grids/grid';
import { FileContentData } from './test-data.service.spec';
import { ZipWrapper } from './zip-verification-wrapper.spec';
import { DefaultSortingStrategy, FilteringExpressionsTree, FilteringLogic, IgxNumberFilteringOperand, IgxStringFilteringOperand, SortingDirection } from 'igniteui-angular/core';

describe('Excel Exporter', () => {
let exporter: IgxExcelExporterService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { IgxExcelExporterOptions } from './excel-exporter-options';
import { IColumnExportingEventArgs } from '../exporter-common/base-export-service';
import { ZipWrapper } from './zip-verification-wrapper.spec';
import { FileContentData } from './test-data.service.spec';
import { SampleTestData } from '../../../../test-utils/sample-test-data.spec';
import { SampleTestData } from '../../../../../test-utils/sample-test-data.spec';
import { first } from 'rxjs/operators';

describe('Excel Exporter', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import { IExcelFolder } from './excel-interfaces';
import { ExportRecordType, IExportRecord, IgxBaseExporter, DEFAULT_OWNER, ExportHeaderType, GRID_LEVEL_COL } from '../exporter-common/base-export-service';
import { ExportUtilities } from '../exporter-common/export-utilities';
import { WorksheetData } from './worksheet-data';
import { IBaseEventArgs } from '../../core/utils';
import { WorksheetFile } from './excel-files';
import { IBaseEventArgs } from 'igniteui-angular/core';

export interface IExcelExportEndedEventArgs extends IBaseEventArgs {
xlsx?: Object
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { ExcelStrings } from './excel-strings';
import { WorksheetData } from './worksheet-data';

import { strToU8 } from 'fflate';
import { yieldingLoop } from '../../core/utils';
import { ExportHeaderType, ExportRecordType, IExportRecord, IColumnList, IColumnInfo, GRID_ROOT_SUMMARY, GRID_PARENT, GRID_LEVEL_COL } from '../exporter-common/base-export-service';
import { yieldingLoop } from 'igniteui-angular/core';

/**
* @hidden
Expand Down Expand Up @@ -645,7 +645,7 @@ export class WorksheetFile implements IExcelFile {
rowCoordinate = startValue + 1;
}

const columnValue = currentCol.headerType === ExportHeaderType.PivotMergedHeader ?
const columnValue = currentCol.headerType === ExportHeaderType.PivotMergedHeader ?
dictionary.saveValue(currentCol.field, true, true) :
dictionary.saveValue(currentCol.header, true, false);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
import { EventEmitter } from '@angular/core';
import { cloneArray, cloneValue, columnFieldPath, IBaseEventArgs, resolveNestedPath, yieldingLoop } from '../../core/utils';
import { DataUtil } from '../../data-operations/data-util';
import { ExportUtilities } from './export-utilities';
import { IgxExporterOptionsBase } from './exporter-options-base';
import type { ITreeGridRecord, ColumnType, GridTypeBase, IPathSegment, IgxSummaryResult, GridColumnDataType } from '../../data-operations/grid-types';
import { GridSummaryCalculationMode } from '../../data-operations/grid-types';
import { TreeGridFilteringStrategy } from '../../data-operations/tree-grid-filtering-strategy';
import { IGroupingState } from '../../data-operations/groupby-state.interface';
import { getHierarchy, isHierarchyMatch } from '../../data-operations/operations';
import { IGroupByExpandState } from '../../data-operations/groupby-expand-state.interface';
import { IFilteringState } from '../../data-operations/filtering-state.interface';
import { type ITreeGridRecord, type ColumnType, type GridTypeBase, type IPathSegment, type IgxSummaryResult, type GridColumnDataType, DataUtil, FilterUtil, GridSummaryCalculationMode, IBaseEventArgs, IFilteringState, IGroupByExpandState, IGroupByRecord, IGroupingState, TreeGridFilteringStrategy, cloneArray, cloneValue, columnFieldPath, resolveNestedPath, yieldingLoop, getHierarchy, isHierarchyMatch } from 'igniteui-angular/core';
Copy link

Copilot AI Nov 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The consolidated import on line 4 is extremely long with 22 named imports. Consider splitting this into multiple imports grouped by related functionality (e.g., types, utilities, data operations) to improve readability.

Suggested change
import { type ITreeGridRecord, type ColumnType, type GridTypeBase, type IPathSegment, type IgxSummaryResult, type GridColumnDataType, DataUtil, FilterUtil, GridSummaryCalculationMode, IBaseEventArgs, IFilteringState, IGroupByExpandState, IGroupByRecord, IGroupingState, TreeGridFilteringStrategy, cloneArray, cloneValue, columnFieldPath, resolveNestedPath, yieldingLoop, getHierarchy, isHierarchyMatch } from 'igniteui-angular/core';
// Types
import { type ITreeGridRecord, type ColumnType, type GridTypeBase, type IPathSegment, type IgxSummaryResult, type GridColumnDataType, type IBaseEventArgs, type IFilteringState, type IGroupByExpandState, type IGroupByRecord, type IGroupingState } from 'igniteui-angular/core';
// Utilities
import { DataUtil, FilterUtil, cloneArray, cloneValue, columnFieldPath, resolveNestedPath, yieldingLoop, getHierarchy, isHierarchyMatch } from 'igniteui-angular/core';
// Strategies and Enums
import { TreeGridFilteringStrategy, GridSummaryCalculationMode } from 'igniteui-angular/core';

Copilot uses AI. Check for mistakes.

import { DatePipe, FormatWidth, getLocaleCurrencyCode, getLocaleDateFormat, getLocaleDateTimeFormat } from '@angular/common';
import { IGroupByRecord } from '../../data-operations/groupby-record.interface';
import { FilterUtil } from '../../data-operations/filtering-strategy';


export enum ExportRecordType {
GroupedRecord = 'GroupedRecord',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

import { TestBed } from '@angular/core/testing';
import { GridIDNameJobTitleComponent } from '../../../../test-utils/grid-samples.spec';
import { IgxStringFilteringOperand } from '../../data-operations/filtering-condition';
import { wait } from '../../../../test-utils/ui-interactions.spec';
import { GridIDNameJobTitleComponent } from '../../../../../test-utils/grid-samples.spec';
import { wait } from '../../../../../test-utils/ui-interactions.spec';
import { IgxGridComponent } from 'igniteui-angular/grids/grid';
import { IgxStringFilteringOperand } from 'igniteui-angular/core';

export class TestMethods {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import { TestBed, waitForAsync } from '@angular/core/testing';
import { ExportUtilities } from '../exporter-common/export-utilities';
import { IgxPdfExporterService } from './pdf-exporter';
import { IgxPdfExporterOptions } from './pdf-exporter-options';
import { GridIDNameJobTitleComponent } from '../../../../test-utils/grid-samples.spec';
import { GridIDNameJobTitleComponent } from '../../../../../test-utils/grid-samples.spec';
import { first } from 'rxjs/operators';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NestedColumnGroupsGridComponent, ColumnGroupTestComponent, BlueWhaleGridComponent } from '../../../../test-utils/grid-mch-sample.spec';
import { IgxHierarchicalGridTestBaseComponent } from '../../../../test-utils/hierarchical-grid-components.spec';
import { IgxTreeGridSortingComponent, IgxTreeGridPrimaryForeignKeyComponent } from '../../../../test-utils/tree-grid-components.spec';
import { NestedColumnGroupsGridComponent, ColumnGroupTestComponent, BlueWhaleGridComponent } from '../../../../../test-utils/grid-mch-sample.spec';
import { IgxHierarchicalGridTestBaseComponent } from '../../../../../test-utils/hierarchical-grid-components.spec';
import { IgxTreeGridSortingComponent, IgxTreeGridPrimaryForeignKeyComponent } from '../../../../../test-utils/tree-grid-components.spec';
import { CustomSummariesComponent } from 'igniteui-angular/grids/grid/src/grid-summary.spec';
import { IgxHierarchicalGridComponent } from 'igniteui-angular/grids/hierarchical-grid';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ExportUtilities } from '../exporter-common/export-utilities';
import { IgxPdfExporterService } from './pdf-exporter';
import { IgxPdfExporterOptions } from './pdf-exporter-options';
import { SampleTestData } from '../../../../test-utils/sample-test-data.spec';
import { SampleTestData } from '../../../../../test-utils/sample-test-data.spec';
import { first } from 'rxjs/operators';
import { ExportRecordType, ExportHeaderType, DEFAULT_OWNER, IExportRecord, IColumnInfo, IColumnList, GRID_LEVEL_COL } from '../exporter-common/base-export-service';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { jsPDF } from 'jspdf';
import { DEFAULT_OWNER, ExportHeaderType, ExportRecordType, GRID_LEVEL_COL, IExportRecord, IgxBaseExporter } from '../exporter-common/base-export-service';
import { ExportUtilities } from '../exporter-common/export-utilities';
import { IgxPdfExporterOptions } from './pdf-exporter-options';
import { IBaseEventArgs } from '../../core/utils';
import { IBaseEventArgs } from 'igniteui-angular/core';

export interface IPdfExportEndedEventArgs extends IBaseEventArgs {
pdf?: jsPDF;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,17 @@ import { Component, Input, Output, EventEmitter, Inject, booleanAttribute } from
import { first } from 'rxjs/operators';
import { BaseToolbarDirective } from './grid-toolbar.base';
import { IgxExcelTextDirective, IgxCSVTextDirective, IgxPdfTextDirective } from './common';
import {
CsvFileTypes,
IgxBaseExporter,
IgxCsvExporterOptions,
IgxCsvExporterService,
IgxExcelExporterOptions,
IgxExcelExporterService,
IgxPdfExporterOptions,
IgxPdfExporterService
} from 'igniteui-angular/core';
import { GridType } from '../common/grid.interface';
import { IgxToolbarToken } from './token';
import { IgxButtonDirective, IgxRippleDirective, IgxToggleDirective } from 'igniteui-angular/directives';
import { IgxIconComponent } from 'igniteui-angular/icon';
import { CsvFileTypes, IgxCsvExporterOptions } from '../services/csv/csv-exporter-options';
import { IgxExcelExporterOptions } from '../services/excel/excel-exporter-options';
import { IgxPdfExporterOptions } from '../services/pdf/pdf-exporter-options';
import { IgxBaseExporter } from '../services/exporter-common/base-export-service';
import { IgxExcelExporterService } from '../services/excel/excel-exporter';
import { IgxCsvExporterService } from '../services/csv/csv-exporter';
import { IgxPdfExporterService } from '../services/pdf/pdf-exporter';

export type IgxExporterOptions = IgxCsvExporterOptions | IgxExcelExporterOptions | IgxPdfExporterOptions;

Expand Down
Loading