From d4e60ac503d4d2c20e8a3b0cb4b5a5228f81add0 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Tue, 10 Dec 2024 22:43:20 -0500 Subject: [PATCH 1/4] feat: allow using AngularSlickgrid component w/o grid options --- .../__tests__/angular-slickgrid.component.spec.ts | 2 +- .../components/angular-slickgrid.component.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts index ea609ae2a..495e209be 100644 --- a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts +++ b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts @@ -460,7 +460,7 @@ describe('Angular-Slickgrid Custom Component instantiated via Constructor', () = component.ngAfterViewInit(); component.dataset = []; } catch (e: any) { - expect(e.toString()).toContain('Using `` requires [gridOptions] and [columnDefinitions]'); + expect(e.toString()).toContain('Using `` requires [columnDefinitions]'); component.destroy(); done(); } 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 275068586..a97c99f3c 100644 --- a/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +++ b/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts @@ -156,7 +156,7 @@ export class AngularSlickgridComponent implements AfterViewInit, On @Input() customDataView: any; @Input() gridId = ''; - @Input() gridOptions!: GridOption; + @Input() gridOptions: GridOption = {}; @Input() get paginationOptions(): Pagination | undefined { @@ -359,8 +359,8 @@ export class AngularSlickgridComponent implements AfterViewInit, On } ngAfterViewInit() { - if (!this.gridOptions || !this.columnDefinitions) { - throw new Error('Using `` requires [gridOptions] and [columnDefinitions], it seems that you might have forgot to provide them since at least of them is undefined.'); + if (!this.columnDefinitions) { + throw new Error('Using `` requires [columnDefinitions], it seems that you might have forgot to provide the missing bindable input.'); } this.initialization(this._eventHandler); @@ -459,7 +459,7 @@ export class AngularSlickgridComponent implements AfterViewInit, On } emptyGridContainerElm() { - const gridContainerId = this.gridOptions?.gridContainerId ?? 'grid1'; + const gridContainerId = this.gridOptions?.gridContainerId || 'grid1'; const gridContainerElm = document.querySelector(`#${gridContainerId}`); emptyElement(gridContainerElm); } @@ -502,7 +502,7 @@ export class AngularSlickgridComponent implements AfterViewInit, On this._eventPubSubService.publish('onBeforeGridCreate', true); // make sure the dataset is initialized (if not it will throw an error that it cannot getLength of null) - this._dataset = this._dataset || []; + this._dataset ||= []; this.gridOptions = this.mergeGridOptions(this.gridOptions); this._paginationOptions = this.gridOptions?.pagination; this.locales = this.gridOptions?.locales ?? Constants.locales; From 23b8b3d9915f65dbf63930854039777e6f583d28 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Tue, 10 Dec 2024 22:48:18 -0500 Subject: [PATCH 2/4] chore: fix failing unit test --- .../components/__tests__/angular-slickgrid.component.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts index 495e209be..3b928a3c4 100644 --- a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts +++ b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts @@ -454,9 +454,9 @@ describe('Angular-Slickgrid Custom Component instantiated via Constructor', () = expect(component.gridOptions.enableMouseWheelScrollHandler).toBeTrue(); }); - it('should throw an error when [gridOptions] and/or [columnDefinitions] is undefined', (done) => { + it('should throw an error when [columnDefinitions] is undefined', (done) => { try { - component.gridOptions = undefined as any; + component.columnDefinitions = undefined as any; component.ngAfterViewInit(); component.dataset = []; } catch (e: any) { From 13bdc5cf3a48d8736cd97035f3cedd4de66d8f71 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Tue, 10 Dec 2024 22:51:06 -0500 Subject: [PATCH 3/4] chore: fix failing unit test --- .../components/__tests__/angular-slickgrid.component.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts index 3b928a3c4..eac28a732 100644 --- a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts +++ b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts @@ -457,6 +457,7 @@ describe('Angular-Slickgrid Custom Component instantiated via Constructor', () = it('should throw an error when [columnDefinitions] is undefined', (done) => { try { component.columnDefinitions = undefined as any; + component.gridOptions = gridOptions; component.ngAfterViewInit(); component.dataset = []; } catch (e: any) { From 396582b550443ce0c050b5e3ba5f919d38781cdb Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Tue, 10 Dec 2024 22:54:28 -0500 Subject: [PATCH 4/4] chore: fix failing unit test --- .../__tests__/angular-slickgrid.component.spec.ts | 2 +- .../components/angular-slickgrid.component.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts index eac28a732..5d6755c71 100644 --- a/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts +++ b/src/app/modules/angular-slickgrid/components/__tests__/angular-slickgrid.component.spec.ts @@ -456,7 +456,7 @@ describe('Angular-Slickgrid Custom Component instantiated via Constructor', () = it('should throw an error when [columnDefinitions] is undefined', (done) => { try { - component.columnDefinitions = undefined as any; + component.columnDefinitions = '' as any; component.gridOptions = gridOptions; component.ngAfterViewInit(); component.dataset = []; 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 a97c99f3c..715a8cab4 100644 --- a/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +++ b/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts @@ -424,8 +424,10 @@ export class AngularSlickgridComponent implements AfterViewInit, On } this.backendServiceApi = undefined; } - for (const prop of Object.keys(this.columnDefinitions)) { - (this.columnDefinitions as any)[prop] = null; + if (this.columnDefinitions) { + for (const prop of Object.keys(this.columnDefinitions)) { + (this.columnDefinitions as any)[prop] = null; + } } for (const prop of Object.keys(this.sharedService)) { (this.sharedService as any)[prop] = null;