diff --git a/src/aurelia-slickgrid/extensions/__tests__/headerMenuExtension.spec.ts b/src/aurelia-slickgrid/extensions/__tests__/headerMenuExtension.spec.ts index ca7640bf3..759b59caf 100644 --- a/src/aurelia-slickgrid/extensions/__tests__/headerMenuExtension.spec.ts +++ b/src/aurelia-slickgrid/extensions/__tests__/headerMenuExtension.spec.ts @@ -405,7 +405,7 @@ describe('headerMenuExtension', () => { }); it('should trigger the command "clear-sort" and expect Sort Service to call "onBackendSortChanged" being called without the sorted column', () => { - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; const previousSortSpy = jest.spyOn(sortServiceStub, 'getCurrentColumnSorts').mockReturnValue([mockSortedCols[1]]).mockReturnValueOnce(mockSortedCols); const backendSortSpy = jest.spyOn(sortServiceStub, 'onBackendSortChanged'); const onCommandSpy = jest.spyOn(SharedService.prototype.gridOptions.headerMenu, 'onCommand'); @@ -423,7 +423,7 @@ describe('headerMenuExtension', () => { it('should trigger the command "clear-sort" and expect Sort Service to call "onLocalSortChanged" being called without the sorted column', () => { const copyGridOptionsMock = { ...gridOptionsMock, backendServiceApi: undefined } as unknown as GridOption; jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValue(copyGridOptionsMock); - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; const previousSortSpy = jest.spyOn(sortServiceStub, 'getCurrentColumnSorts').mockReturnValue([mockSortedCols[1]]).mockReturnValueOnce(mockSortedCols); const localSortSpy = jest.spyOn(sortServiceStub, 'onLocalSortChanged'); const onCommandSpy = jest.spyOn(SharedService.prototype.gridOptions.headerMenu, 'onCommand'); @@ -440,7 +440,7 @@ describe('headerMenuExtension', () => { it('should trigger the command "clear-sort" and expect "onSort" event triggered when no DataView is provided', () => { const copyGridOptionsMock = { ...gridOptionsMock, backendServiceApi: undefined } as unknown as GridOption; - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; jest.spyOn(SharedService.prototype, 'dataView', 'get').mockReturnValue(undefined); jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValue(copyGridOptionsMock); @@ -460,8 +460,8 @@ describe('headerMenuExtension', () => { it('should trigger the command "sort-asc" and expect Sort Service to call "onBackendSortChanged" being called without the sorted column', () => { jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValue(gridOptionsMock); - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; - const mockSortedOuput: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedOuput: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; const previousSortSpy = jest.spyOn(sortServiceStub, 'getCurrentColumnSorts').mockReturnValue([mockSortedCols[0]]); const backendSortSpy = jest.spyOn(sortServiceStub, 'onBackendSortChanged'); const onCommandSpy = jest.spyOn(SharedService.prototype.gridOptions.headerMenu, 'onCommand'); @@ -478,8 +478,8 @@ describe('headerMenuExtension', () => { it('should trigger the command "sort-desc" and expect Sort Service to call "onBackendSortChanged" being called without the sorted column', () => { jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValue(gridOptionsMock); - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; - const mockSortedOuput: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedOuput: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; const previousSortSpy = jest.spyOn(sortServiceStub, 'getCurrentColumnSorts').mockReturnValue([mockSortedCols[0]]); const backendSortSpy = jest.spyOn(sortServiceStub, 'onBackendSortChanged'); const onCommandSpy = jest.spyOn(SharedService.prototype.gridOptions.headerMenu, 'onCommand'); @@ -498,8 +498,8 @@ describe('headerMenuExtension', () => { const copyGridOptionsMock = { ...gridOptionsMock, backendServiceApi: undefined } as unknown as GridOption; jest.spyOn(SharedService.prototype, 'dataView', 'get').mockReturnValue(dataViewStub); jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValue(copyGridOptionsMock); - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; - const mockSortedOuput: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedOuput: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; const previousSortSpy = jest.spyOn(sortServiceStub, 'getCurrentColumnSorts').mockReturnValue([mockSortedCols[0]]); const localSortSpy = jest.spyOn(sortServiceStub, 'onLocalSortChanged'); const onCommandSpy = jest.spyOn(SharedService.prototype.gridOptions.headerMenu, 'onCommand'); @@ -518,8 +518,8 @@ describe('headerMenuExtension', () => { const copyGridOptionsMock = { ...gridOptionsMock, backendServiceApi: undefined } as unknown as GridOption; jest.spyOn(SharedService.prototype, 'dataView', 'get').mockReturnValue(undefined); jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValue(copyGridOptionsMock); - const mockSortedCols: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; - const mockSortedOuput: ColumnSort[] = [{ sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedCols: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: true, sortCol: { id: 'field2', field: 'field2' } }]; + const mockSortedOuput: ColumnSort[] = [{ columnId: 'field1', sortAsc: true, sortCol: { id: 'field1', field: 'field1' } }, { columnId: 'field2', sortAsc: false, sortCol: { id: 'field2', field: 'field2' } }]; const previousSortSpy = jest.spyOn(sortServiceStub, 'getCurrentColumnSorts').mockReturnValue([mockSortedCols[0]]); const onCommandSpy = jest.spyOn(SharedService.prototype.gridOptions.headerMenu, 'onCommand'); const setSortSpy = jest.spyOn(SharedService.prototype.grid, 'setSortColumns'); diff --git a/src/aurelia-slickgrid/extensions/headerMenuExtension.ts b/src/aurelia-slickgrid/extensions/headerMenuExtension.ts index 9c27515b0..d46c7976d 100644 --- a/src/aurelia-slickgrid/extensions/headerMenuExtension.ts +++ b/src/aurelia-slickgrid/extensions/headerMenuExtension.ts @@ -357,12 +357,13 @@ export class HeaderMenuExtension implements Extension { private sortColumn(event: Event, args: MenuCommandItemCallbackArgs, isSortingAsc = true) { if (args && args.column) { // get previously sorted columns - const sortedColsWithoutCurrent: ColumnSort[] = this.sortService.getCurrentColumnSorts(args.column.id + ''); + const columnDef = args.column; + const sortedColsWithoutCurrent: ColumnSort[] = this.sortService.getCurrentColumnSorts(columnDef.id + ''); let emitterType: EmitterType = EmitterType.local; // add to the column array, the column sorted by the header menu - sortedColsWithoutCurrent.push({ sortCol: args.column, sortAsc: isSortingAsc }); + sortedColsWithoutCurrent.push({ columnId: columnDef.id, sortCol: columnDef, sortAsc: isSortingAsc }); if (this.sharedService.gridOptions.backendServiceApi) { this.sortService.onBackendSortChanged(event, { multiColumnSort: true, sortCols: sortedColsWithoutCurrent, grid: this.sharedService.grid }); emitterType = EmitterType.remote;