From 1f9af6eab4c1eec796a9a9771572371ae2a2ae16 Mon Sep 17 00:00:00 2001 From: Ghislain Beaulac Date: Mon, 3 Aug 2020 11:13:22 -0400 Subject: [PATCH] fix(core): add missing `inlineFilters` DataView optional flag --- .../__tests__/angular-slickgrid-constructor.spec.ts | 4 ++-- .../components/angular-slickgrid.component.ts | 10 ++++++---- .../models/dataViewOption.interface.ts | 7 +++++++ .../angular-slickgrid/models/gridOption.interface.ts | 3 ++- src/app/modules/angular-slickgrid/models/index.ts | 1 + 5 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 src/app/modules/angular-slickgrid/models/dataViewOption.interface.ts diff --git a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid-constructor.spec.ts b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid-constructor.spec.ts index 3bcae00b4..725bd5288 100644 --- a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid-constructor.spec.ts +++ b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid-constructor.spec.ts @@ -459,7 +459,7 @@ describe('Angular-Slickgrid Custom Component instantiated via Constructor', () = component.ngAfterViewInit(); expect(extensionSpy).toHaveBeenCalledWith('groupItemMetaProvider'); - expect(dataviewSpy).toHaveBeenCalledWith({ groupItemMetadataProvider: expect.anything() }); + expect(dataviewSpy).toHaveBeenCalledWith({ groupItemMetadataProvider: expect.anything(), inlineFilters: false }); expect(groupMetaSpy).toHaveBeenCalledWith(); expect(sharedMetaSpy).toHaveBeenCalledWith(mockGroupItemMetaProvider); @@ -476,7 +476,7 @@ describe('Angular-Slickgrid Custom Component instantiated via Constructor', () = component.ngAfterViewInit(); expect(extensionSpy).toHaveBeenCalledWith('groupItemMetaProvider'); - expect(dataviewSpy).toHaveBeenCalledWith({ groupItemMetadataProvider: expect.anything() }); + expect(dataviewSpy).toHaveBeenCalledWith({ groupItemMetadataProvider: expect.anything(), inlineFilters: false }); expect(groupMetaSpy).toHaveBeenCalledWith(); expect(sharedMetaSpy).toHaveBeenCalledWith(mockGroupItemMetaProvider); diff --git a/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts b/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts index 29889fe3d..e03718598 100644 --- a/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +++ b/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts @@ -22,7 +22,7 @@ import { Column, ColumnEditor, CustomFooterOption, - ExtensionList, + DataViewOption, ExtensionName, GraphqlPaginatedResult, GraphqlResult, @@ -729,14 +729,16 @@ export class AngularSlickgridComponent implements AfterViewInit, OnDestroy, OnIn this._isLocalGrid = !this.backendServiceApi; // considered a local grid if it doesn't have a backend service set if (!this.customDataView) { + const dataviewInlineFilters = this.gridOptions.dataView && this.gridOptions.dataView.inlineFilters || false; + let dataViewOptions: DataViewOption = { inlineFilters: dataviewInlineFilters }; + if (this.gridOptions.draggableGrouping || this.gridOptions.enableGrouping) { this.extensionUtility.loadExtensionDynamically(ExtensionName.groupItemMetaProvider); this.groupItemMetadataProvider = new Slick.Data.GroupItemMetadataProvider(); this.sharedService.groupItemMetadataProvider = this.groupItemMetadataProvider; - this.dataView = new Slick.Data.DataView({ groupItemMetadataProvider: this.groupItemMetadataProvider }); - } else { - this.dataView = new Slick.Data.DataView(); + dataViewOptions = { ...dataViewOptions, groupItemMetadataProvider: this.groupItemMetadataProvider }; } + this.dataView = new Slick.Data.DataView(dataViewOptions); } // for convenience to the user, we provide the property "editor" as an Angular-Slickgrid editor complex object diff --git a/src/app/modules/angular-slickgrid/models/dataViewOption.interface.ts b/src/app/modules/angular-slickgrid/models/dataViewOption.interface.ts new file mode 100644 index 000000000..585791de0 --- /dev/null +++ b/src/app/modules/angular-slickgrid/models/dataViewOption.interface.ts @@ -0,0 +1,7 @@ +export interface DataViewOption { + /** Defaults to false, use with great care as this will break built-in filters */ + inlineFilters?: boolean; + + /** Optionally provide a Group Item Metatadata Provider when using Grouping/DraggableGrouping feature */ + groupItemMetadataProvider?: any; +} diff --git a/src/app/modules/angular-slickgrid/models/gridOption.interface.ts b/src/app/modules/angular-slickgrid/models/gridOption.interface.ts index 21739caf2..78d42b3b4 100644 --- a/src/app/modules/angular-slickgrid/models/gridOption.interface.ts +++ b/src/app/modules/angular-slickgrid/models/gridOption.interface.ts @@ -8,6 +8,7 @@ import { ColumnPicker, ColumnReorderFunction, ContextMenu, + DataViewOption, DraggableGrouping, EditCommand, ExcelCopyBufferOption, @@ -117,7 +118,7 @@ export interface GridOption { datasetIdPropertyName?: string; /** Some of the SlickGrid DataView options */ - dataView?: { + dataView?: DataViewOption & { /** * Defaults to true, when using row selection, * if you don't want the items that are not visible (due to being filtered out or being on a different page) to stay selected, diff --git a/src/app/modules/angular-slickgrid/models/index.ts b/src/app/modules/angular-slickgrid/models/index.ts index 6381c1eb1..45f371dd4 100644 --- a/src/app/modules/angular-slickgrid/models/index.ts +++ b/src/app/modules/angular-slickgrid/models/index.ts @@ -30,6 +30,7 @@ export * from './currentPagination.interface'; export * from './currentRowSelection.interface'; export * from './currentSorter.interface'; export * from './customFooterOption.interface'; +export * from './dataViewOption.interface'; export * from './delimiterType.enum'; export * from './draggableGrouping.interface'; export * from './editCommand.interface';