fantasy-ngzorro 2.2.13 → 2.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  export declare class TotalOption {
2
2
  insertIndex: number;
3
- insertValue: any;
3
+ /** 合计值;hd-table 可不传,按 insertIndex 对应列对 content 自动求和 */
4
+ insertValue?: any;
4
5
  align?: string;
5
6
  showDecimal?: boolean;
6
7
  preserveNumber?: number;
@@ -1,12 +1,14 @@
1
- import { ChangeDetectorRef, EventEmitter, OnInit, SimpleChange, TemplateRef } from "@angular/core";
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, SimpleChange, TemplateRef } from "@angular/core";
2
2
  import { NzFormatBeforeDropEvent, NzFormatEmitEvent } from "ng-zorro-antd/core";
3
3
  import { NzResizeEvent } from "ng-zorro-antd/resizable";
4
4
  import { NzTableComponent } from "ng-zorro-antd/table";
5
5
  import { Observable } from "rxjs";
6
6
  import { Page } from "../model/common-type";
7
7
  import { CommonSessionService } from "../service/common-session.service";
8
- import { HdTableCellChange, HdTableColumn, HdTableTotalOption, OperateBtn, TableCacheOption, TreeGrid } from "./hd-table.service";
9
- export declare class HdTableComponent implements OnInit {
8
+ import { TotalOption } from "../hd-detail-lines/hd-detail-lines.service";
9
+ import { HdTableCellChange, HdTableColumn, OperateBtn, TableCacheOption, TreeGrid } from "./hd-table.service";
10
+ export declare class HdTableComponent implements OnInit, OnDestroy {
11
+ private hostEl;
10
12
  private cdr;
11
13
  private commonSessionService;
12
14
  uuid: string;
@@ -29,7 +31,12 @@ export declare class HdTableComponent implements OnInit {
29
31
  */
30
32
  rowInvalidField: string;
31
33
  showTableTotal: boolean;
32
- tableTotalOption: Array<HdTableTotalOption>;
34
+ tableTotalOption: Array<TotalOption>;
35
+ /**
36
+ * 合计列总数(含序号列,与 hd-detail-lines 一致);
37
+ * 不传则按当前可见数据列数 + 1(序号)推算。
38
+ */
39
+ columnsNumber: number | string;
33
40
  sortEvent: EventEmitter<{}>;
34
41
  selectEvent: EventEmitter<{}>;
35
42
  tableSearchEvent: EventEmitter<{}>;
@@ -90,14 +97,25 @@ export declare class HdTableComponent implements OnInit {
90
97
  /** 记录当前是否处于虚拟滚动模式,用于切换 pageSize 时重建表格 */
91
98
  private virtualScrollActive;
92
99
  /** 可见列总宽,用于判断是否需要横向滚动 */
93
- private tableColWidthTotal;
100
+ /** 列宽合计(含勾选/序号),footer 表宽与横向 scroll 共用 */
101
+ tableColWidthTotal: number;
94
102
  /** 数据更新后待复位纵向滚动位置 */
95
103
  private pendingResetScrollTop;
96
104
  /** 当前排序,表格重建后用于恢复表头排序态 */
97
105
  private currentSortKey;
98
106
  private currentSortValue;
99
107
  nzTableComponent: NzTableComponent;
100
- constructor(cdr: ChangeDetectorRef, commonSessionService: CommonSessionService);
108
+ private totalFooterScrollBoundBody;
109
+ private totalFooterScrollHandler;
110
+ private totalFooterSyncRetry;
111
+ /** 表体有竖滚条时合计 footer 才预留右侧滚动条槽 */
112
+ totalFooterNeedYGutter: boolean;
113
+ /** 视口/容器尺寸变化时重算 scroll.x 与合计对齐 */
114
+ private viewportResizeTimer;
115
+ private boundOnViewportResize;
116
+ private hostResizeObserver;
117
+ constructor(hostEl: ElementRef, cdr: ChangeDetectorRef, commonSessionService: CommonSessionService);
118
+ ngOnDestroy(): void;
101
119
  ngOnInit(): void;
102
120
  ngOnChanges(changes: SimpleChange): void;
103
121
  /** 是否走前端分页(对 content 切片,不请求后端) */
@@ -126,6 +144,23 @@ export declare class HdTableComponent implements OnInit {
126
144
  readonly useVirtualScroll: boolean;
127
145
  getRightSticky(col: HdTableColumn): string | null;
128
146
  getLeftSticky(col: HdTableColumn): string | null;
147
+ /**
148
+ * 序号列固定宽(含 padding,可容纳 6 位如 199995)。
149
+ * 不锁死时表体会随位数变宽(1→~64px,199995→~67px),合计行对不齐。
150
+ */
151
+ readonly lineNumberColWidth = 72;
152
+ /** 开启合计时序号列的 left(勾选列占 40px) */
153
+ readonly lineNumberLeft: string;
154
+ readonly lineNumberColWidthPx: string;
155
+ /**
156
+ * 列总宽未超出容器:无横向 scroll,表体列会被撑满,合计走 fluid(width:100%)。
157
+ * 列总宽超出:有 scroll.x,合计走固定表宽 + 横滚同步。
158
+ */
159
+ readonly isTotalFooterFluid: boolean;
160
+ /** fluid → 100%;固定 → scroll.x(与表体同一套横向宽度) */
161
+ readonly totalFooterTableWidth: string;
162
+ /** 当前页行号(跨页连续,从 1 开始) */
163
+ getLineNumber(index: number): number;
129
164
  trackByRow: (index: number, data: any) => string;
130
165
  /** 虚拟滚动按数组下标追踪,避免业务主键 trackBy 导致 CDK 行复用错位 */
131
166
  virtualTrackByRow: (index: number) => number;
@@ -170,15 +205,50 @@ export declare class HdTableComponent implements OnInit {
170
205
  /** 虚拟滚动开启时使用视口最大高度 */
171
206
  private getVirtualScrollY;
172
207
  private hasTableData;
173
- /** 列总宽超出外层容器才启用横向 scroll(不能用 table 自身宽度,会被 scroll.x 撑宽) */
208
+ /**
209
+ * 列总宽超出外层容器才启用横向 scroll。
210
+ * 以 dealScroll 累计的声明列宽为准,不用 DOM 自然测宽(内容不截断会偏大,导致列能放下也开横滚)。
211
+ */
174
212
  private resolveScrollX;
175
213
  /** 表格渲染后按实际容器宽度校正横向 scroll(只改 x,避免触发表头结构变化) */
176
214
  private syncHorizontalScroll;
177
- /** 手动把表体横向滚动同步到表头(兜底 ng-zorro 监听丢失的情况) */
215
+ /** 手动把表体横向滚动同步到表头 / 合计 footer(兜底 ng-zorro 监听丢失的情况) */
178
216
  private syncHeaderBodyScrollLeft;
217
+ /** 取表体横向滚动容器(虚拟滚动优先 viewport) */
218
+ private getTableBodyScrollEl;
219
+ private getTotalFooterScrollEl;
220
+ /** 表体是否出现纵向滚动条(含滚动条槽宽) */
221
+ private bodyHasVerticalScrollbar;
222
+ /**
223
+ * 合计 footer 与表体联动:
224
+ * - fluid(列未撑满):不横滚、不测宽,表宽 100% 与表体同比例拉伸;
225
+ * - fixed(有 scroll.x):同步 scrollLeft;
226
+ * - 仅当表体有竖滚条时预留右侧槽,行少无竖滚时不占位。
227
+ */
228
+ private syncTotalFooterWithBody;
229
+ private syncTotalFooterScrollLeft;
230
+ private bindTotalFooterScrollSync;
231
+ private unbindTotalFooterScrollSync;
232
+ /**
233
+ * 监听窗口 / 容器宽度变化:重新判定 scroll.x(fluid↔fixed)与合计右侧竖滚槽,
234
+ * 避免拉宽/缩窄屏幕后合计行宽与表体错位。
235
+ */
236
+ private bindViewportResizeSync;
237
+ private unbindViewportResizeSync;
238
+ private scheduleViewportScrollSync;
179
239
  dealScroll(): void;
180
240
  currentPageDataChange($event: any): void;
181
241
  search(reset: boolean): void;
242
+ /**
243
+ * 底部合计:与 hd-detail-lines 相同,使用 TotalOption(insertIndex / insertValue)。
244
+ * 开启后强制展示序号列,「合计」落在序号列下;
245
+ * insertIndex 从 1 起对应可见数据列;未传 insertValue 时按该列 name 对 content 求和。
246
+ */
247
+ calculateTableTotal(): void;
248
+ private getTableTotalCellMeta;
249
+ /** 合计单元格展示文案(对齐 detail-lines 小数规则) */
250
+ getTableTotalCellValue(col: HdTableColumn, colIndex: number): any;
251
+ getTableTotalCellAlign(col: HdTableColumn, colIndex: number): string;
182
252
  /** 底部「共 n 条」:非分页/前端分页用 content.length,服务端分页用 totalElements */
183
253
  getTableTotalCount(): number;
184
254
  resetStatus(): void;
@@ -72,11 +72,6 @@ export declare class OperateBtn {
72
72
  click?: (value: any) => void;
73
73
  permission?: (value: any) => boolean;
74
74
  }
75
- export declare class HdTableTotalOption {
76
- columnNumber: number;
77
- insertIndex: number;
78
- insertName: string;
79
- }
80
75
  export declare class TableCacheOption {
81
76
  pageSize: number;
82
77
  colWidths: Map<string, number>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fantasy-ngzorro",
3
- "version": "2.2.13",
4
- "description": "fix:hd-form-lines enableKeyboardOperate=false 时 Select 选中后不再自动跳格",
3
+ "version": "2.2.15",
4
+ "description": "fix:hd-table 列能放下不误开横滚;合计行按竖滚条显隐预留右槽,窗口缩放自动对齐",
5
5
  "peerDependencies": {
6
6
  "moment": "^2.24.0",
7
7
  "ng-zorro-antd": "^8.5.2",
@@ -5,6 +5,12 @@ export interface HdTableScrollConfig {
5
5
  }
6
6
  export declare function getTableViewportWidth(nzTable: NzTableComponent, hostClass?: string): number;
7
7
  export declare function measureTableColWidth(nzTable: NzTableComponent): number;
8
+ /**
9
+ * 用于判断是否需要 scroll.x 的视口宽。
10
+ * 有纵向滚动条时 clientWidth 会少一截,若直接拿去比列宽,会「竖滚条导致误开横滚」;
11
+ * 这里用 offsetWidth(含滚动条槽)作为屏幕可展示宽度。
12
+ */
13
+ export declare function getTableScrollXViewportWidth(nzTable: NzTableComponent, hostClass?: string): number;
8
14
  /** 无数据或列宽未超出容器时不启用横向 scroll */
9
15
  export declare function resolveAutoTableScroll(nzTable: NzTableComponent, hasData: boolean, colWidth?: number): HdTableScrollConfig | null;
10
16
  /** 取 ng-zorro 分体表头 / 表体滚动容器(含虚拟滚动) */