diff --git a/npm/ng-packs/packages/components/dynamic-form/src/dynamic-form-field/dynamic-form-field.component.html b/npm/ng-packs/packages/components/dynamic-form/src/dynamic-form-field/dynamic-form-field.component.html
index ed33dca227..3b00b4c171 100644
--- a/npm/ng-packs/packages/components/dynamic-form/src/dynamic-form-field/dynamic-form-field.component.html
+++ b/npm/ng-packs/packages/components/dynamic-form/src/dynamic-form-field/dynamic-form-field.component.html
@@ -51,7 +51,8 @@
}
@@ -136,17 +147,17 @@
[placement]="prop.tooltip.placement || 'auto'"
container="body"
[class.pointer]="prop.sortable"
- (click)="prop.sortable && sortFn(column)"
+ (click)="prop.sortable && sortFn()"
>
{{ column.name }}
} @else {
-
+
{{ column.name }}
}
-
+
@if (!row['_' + prop.name].component) {
@@ -186,7 +197,7 @@
row['_' + prop.name].component;
injector: row['_' + prop.name].injector
"
- >
+ />
}
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
index 3112ab0a74..7c8409d650 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
@@ -23,7 +23,12 @@ import { AsyncPipe, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } fro
import { Observable, filter, map, Subject, debounceTime, distinctUntilChanged } from 'rxjs';
import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
-import { NgxDatatableModule, SelectionType, DatatableComponent } from '@swimlane/ngx-datatable';
+import {
+ NgxDatatableModule,
+ SelectionType,
+ DatatableComponent,
+ ScrollEvent,
+} from '@swimlane/ngx-datatable';
import {
ABP,
@@ -130,7 +135,7 @@ export class ExtensibleTableComponent implements AfterViewInit, OnDestr
// Internal signals
protected readonly _data = signal([]);
- private readonly _actionsColumnWidth = signal(DEFAULT_ACTIONS_COLUMN_WIDTH);
+ protected readonly _actionsColumnWidth = signal(DEFAULT_ACTIONS_COLUMN_WIDTH);
readonly rowDetailComponent = contentChild(ExtensibleTableRowDetailComponent);
@@ -162,6 +167,27 @@ export class ExtensibleTableComponent implements AfterViewInit, OnDestr
return this.rowDetailComponent()?.rowHeight() ?? this.rowDetailHeight();
}
+ protected readonly effectiveRowDetailRowHeight = computed(
+ (): number | ((row?: R, index?: number) => number) | undefined => {
+ const height = this.effectiveRowDetailHeight;
+
+ if (typeof height === 'number') {
+ return height as number;
+ }
+
+ if (typeof height === 'function') {
+ return height as (row?: R, index?: number) => number;
+ }
+
+ if (typeof height === 'string' && !height.endsWith('%')) {
+ const parsed = Number.parseInt(height, 10);
+ return Number.isNaN(parsed) ? undefined : parsed;
+ }
+
+ return undefined;
+ },
+ );
+
hasAtLeastOnePermittedAction: boolean;
readonly propList: EntityPropList;
@@ -299,17 +325,16 @@ export class ExtensibleTableComponent implements AfterViewInit, OnDestr
this.selectionChange.emit(selected);
}
- onScroll(scrollEvent: Event): void {
+ onScroll(scrollEvent: ScrollEvent): void {
if (!this.shouldHandleScroll()) {
return;
}
- const target = scrollEvent.target as HTMLElement;
- if (!target) {
- return;
- }
+ const table = this.table();
+ const viewportHeight = table.bodyHeight;
+ const scrollHeight = table.bodyComponent.scrollHeight();
- if (this.isNearScrollBottom(target)) {
+ if (scrollEvent.offsetY + viewportHeight >= scrollHeight - this.scrollThreshold()) {
this.loadMoreSubject.next();
}
}
@@ -318,11 +343,6 @@ export class ExtensibleTableComponent implements AfterViewInit, OnDestr
return this.infiniteScroll() && !this.isLoading();
}
- private isNearScrollBottom(element: HTMLElement): boolean {
- const { offsetHeight, scrollTop, scrollHeight } = element;
- return offsetHeight + scrollTop >= scrollHeight - this.scrollThreshold();
- }
-
private triggerLoadMore(): void {
this.loadMore.emit();
}
diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json
index abb9cc876d..ba34aa21d2 100644
--- a/npm/ng-packs/packages/components/package.json
+++ b/npm/ng-packs/packages/components/package.json
@@ -12,7 +12,7 @@
},
"dependencies": {
"chart.js": "^3.5.1",
- "ng-zorro-antd": "~21.0.0-next.1",
+ "ng-zorro-antd": "~21.3.1",
"@ctrl/tinycolor": "^4.0.0",
"tslib": "^2.0.0"
},
diff --git a/npm/ng-packs/packages/components/project.json b/npm/ng-packs/packages/components/project.json
index d80db9b26d..763b7d00e1 100644
--- a/npm/ng-packs/packages/components/project.json
+++ b/npm/ng-packs/packages/components/project.json
@@ -31,7 +31,7 @@
"executor": "@nx/vitest:test",
"outputs": ["{options.reportsDirectory}"],
"options": {
- "reportsDirectory": "../../coverage/packages/components"
+ "reportsDirectory": "{projectRoot}/../../coverage/packages/components"
}
}
}
diff --git a/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts b/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
index 1cfbbb09f9..82f9871103 100644
--- a/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
+++ b/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
@@ -163,23 +163,25 @@ export class TreeComponent implements OnInit {
}
}
- onCheckboxChange(event: { keys: any[] }) {
- this._checkedKeys.set([...event.keys]);
- this.checkedKeysChange.emit(event.keys);
+ onCheckboxChange(event: NzFormatEmitEvent) {
+ this._checkedKeys.set([...event.keys as any[]]);
+ this.checkedKeysChange.emit(event.keys as any[]);
}
- onExpandedKeysChange(event: { keys: string[] } & NzFormatEmitEvent) {
- this._expandedKeys.set([...event.keys]);
- this.expandedKeysChange.emit(event.keys);
+ onExpandedKeysChange(event: NzFormatEmitEvent) {
+ this._expandedKeys.set([...event.keys as string[]]);
+ this.expandedKeysChange.emit(event.keys as string[]);
this.nzExpandChange.emit(event);
}
- onDrop(event: DropEvent) {
+ onDrop(event: NzFormatEmitEvent) {
event.event?.stopPropagation();
event.event?.preventDefault();
- event.pos = this.dropPosition;
- this.dropOver.emit(event);
+ this.dropOver.emit({
+ ...event,
+ pos: this.dropPosition,
+ });
}
initDropdown(key: string, dropdown: NgbDropdown) {
diff --git a/npm/ng-packs/packages/components/tsconfig.lib.json b/npm/ng-packs/packages/components/tsconfig.lib.json
index e4e2e20714..e66d468e91 100644
--- a/npm/ng-packs/packages/components/tsconfig.lib.json
+++ b/npm/ng-packs/packages/components/tsconfig.lib.json
@@ -12,7 +12,7 @@
},
"exclude": [
"src/test-setup.ts",
- "src/**/*.spec.ts",
+ "**/*.spec.ts",
"jest.config.ts",
"vite.config.ts",
"vite.config.mts",
@@ -27,5 +27,5 @@
"src/**/*.spec.jsx",
"src/test-setup.ts"
],
- "include": ["src/**/*.ts"]
+ "include": ["**/*.ts"]
}