diff --git a/packages/stark-ui/src/modules/table/components/table.component.spec.ts b/packages/stark-ui/src/modules/table/components/table.component.spec.ts index 61931efe43..8ff83117a4 100644 --- a/packages/stark-ui/src/modules/table/components/table.component.spec.ts +++ b/packages/stark-ui/src/modules/table/components/table.component.spec.ts @@ -138,28 +138,16 @@ describe("TableComponent", () => { }); describe("on change", () => { - it("should trigger resetFilterValueOnDataChange and applyFilter methods when data changes", () => { + it("should trigger resetFilterValueOnDataChange and sortData methods when data changes", () => { spyOn(component, "resetFilterValueOnDataChange"); - spyOn(component, "applyFilter"); + spyOn(component, "sortData"); - (component.resetFilterValueOnDataChange).and.returnValue(false); (component.resetFilterValueOnDataChange).calls.reset(); + (component.sortData).calls.reset(); hostComponent.dummyData = [{ name: "test-data" }]; hostFixture.detectChanges(); - - (component.resetFilterValueOnDataChange).and.returnValue(false); - (component.resetFilterValueOnDataChange).calls.reset(); - hostComponent.dummyData = [{ name: "test-data-2" }]; - hostFixture.detectChanges(); expect(component.resetFilterValueOnDataChange).toHaveBeenCalledTimes(1); - expect(component.applyFilter).not.toHaveBeenCalled(); - - (component.resetFilterValueOnDataChange).and.returnValue(true); - (component.resetFilterValueOnDataChange).calls.reset(); - hostComponent.dummyData = [{ name: "test-data-1" }]; - hostFixture.detectChanges(); - expect(component.resetFilterValueOnDataChange).toHaveBeenCalledTimes(1); - expect(component.applyFilter).toHaveBeenCalledTimes(1); + expect(component.sortData).toHaveBeenCalledTimes(1); }); it("should assign right value to isFixedHeaderEnabled when fixedHeader changes", () => { diff --git a/packages/stark-ui/src/modules/table/components/table.component.ts b/packages/stark-ui/src/modules/table/components/table.component.ts index 9c19aa3e83..c8fda34e31 100644 --- a/packages/stark-ui/src/modules/table/components/table.component.ts +++ b/packages/stark-ui/src/modules/table/components/table.component.ts @@ -341,8 +341,13 @@ export class StarkTableComponent extends AbstractStarkUiComponent implements OnI */ // tslint:disable-next-line:cognitive-complexity public ngOnChanges(changes: SimpleChanges): void { - if (changes["data"] && !changes["data"].isFirstChange() && this.resetFilterValueOnDataChange()) { - this.applyFilter(); + if (changes["data"] && !changes["data"].isFirstChange()) { + this.resetFilterValueOnDataChange(); + + // When data changes, we should sort it again in any case because: + // * orderProperties could contain some sort rules + // * every column could have a sort rule defined + this.sortData(); } if (changes["orderProperties"] && !changes["orderProperties"].isFirstChange()) { @@ -644,6 +649,8 @@ export class StarkTableComponent extends AbstractStarkUiComponent implements OnI .filter((columnToFilter: StarkTableColumnComponent) => columnToFilter.sortDirection) .sort((column1: StarkTableColumnComponent, column2: StarkTableColumnComponent) => column1.sortPriority - column2.sortPriority); + // FIXME If "multiSort" is empty or equal to "true", isMultiSorting is true. Otherwise, "isMultisorting" should stay false. + // Should remove this condition ? this.isMultiSorting = sortableColumns.length > 1; this.data.sort((row1: object, row2: object) => {