diff --git a/src/vscode-table/vscode-table.test.ts b/src/vscode-table/vscode-table.test.ts index 0c65b4d9c..5659533c5 100644 --- a/src/vscode-table/vscode-table.test.ts +++ b/src/vscode-table/vscode-table.test.ts @@ -6,4 +6,11 @@ describe('vscode-table', () => { const el = document.createElement('vscode-table'); expect(el).to.instanceOf(VscodeTable); }); + + it('should not throw when removed from the DOM', () => { + const el = document.createElement('vscode-table'); + document.body.append(el); + + expect(() => el.remove()).not.to.throw(); + }); }); diff --git a/src/vscode-table/vscode-table.ts b/src/vscode-table/vscode-table.ts index 313904f0a..3bd9b88d0 100644 --- a/src/vscode-table/vscode-table.ts +++ b/src/vscode-table/vscode-table.ts @@ -138,8 +138,8 @@ export class VscodeTable extends VscElement { */ private _sashHovers: boolean[] = []; private _columns: string[] = []; - private _componentResizeObserver!: ResizeObserver; - private _headerResizeObserver!: ResizeObserver; + private _componentResizeObserver?: ResizeObserver; + private _headerResizeObserver?: ResizeObserver; private _bodyResizeObserver?: ResizeObserver; private _activeSashElementIndex = -1; private _activeSashCursorOffset = 0; @@ -170,8 +170,8 @@ export class VscodeTable extends VscElement { disconnectedCallback(): void { super.disconnectedCallback(); - this._componentResizeObserver.unobserve(this); - this._componentResizeObserver.disconnect(); + this._componentResizeObserver?.unobserve(this); + this._componentResizeObserver?.disconnect(); this._bodyResizeObserver?.disconnect(); }