From be107b50bd1072de63eb4344f63b3b27b75b3b65 Mon Sep 17 00:00:00 2001 From: Fahri Gedik Date: Wed, 3 Sep 2025 12:08:10 +0300 Subject: [PATCH] Refactor spinner and placeholder handling in directive Spinner is now always inserted before the first child of the parent, and placeholder removal is guarded by a parent check. This improves robustness when manipulating DOM elements in the directive. --- .../lib/directives/ngx-datatable-list.directive.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts index 87ac4b9ce1..0754300b0f 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts @@ -111,10 +111,13 @@ export class NgxDatatableListDirective implements OnChanges, OnInit, DoCheck { const spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent); const spinnerElement = spinnerRef.location.nativeElement; - if (placeholder?.parentNode === parent) { - this.renderer.insertBefore(parent, spinnerElement, placeholder); + + this.renderer.insertBefore(parent, spinnerElement, parent.firstChild); + + const placeholderParent = placeholder?.parentNode as Element | null; + if (placeholderParent) { + this.renderer.removeChild(placeholderParent, placeholder); } - this.renderer.removeChild(parent, placeholder); } protected setInitialValues() { @@ -185,4 +188,4 @@ export class NgxDatatableListDirective implements OnChanges, OnInit, DoCheck { this.setTablePage(maxPage); } } -} +} \ No newline at end of file