fantasy-ngzorro 2.2.37 → 2.2.39

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.
@@ -102,20 +102,14 @@ export declare class HdTableComponent implements OnInit, OnDestroy {
102
102
  measuredVirtualItemSize: number;
103
103
  /** 记录当前是否处于虚拟滚动模式,用于切换 pageSize 时重建表格 */
104
104
  private virtualScrollActive;
105
- /** 列宽合计(含勾选/序号 + fluid 补宽),footer 表宽与横向 scroll 共用 */
105
+ /** 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用 */
106
106
  tableColWidthTotal: number;
107
- /**
108
- * fluid:声明列总宽 < 容器时,把差额补到最后一列业务列(不改缓存宽),
109
- * 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
110
- */
107
+ /** 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽) */
111
108
  fluidExtraWidth: number;
112
- /**
113
- * 列总宽未超出容器(fluid 补宽吃满):不需要真正横滚,
114
- * 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
115
- */
109
+ /** 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽 */
116
110
  fluidHorizontal: boolean;
117
- /** fluid 补宽目标列缓存,避免模板每格 CD 时反复扫 tableCols */
118
- private fluidExtraTargetCol;
111
+ /** 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建) */
112
+ private fluidExtraByCol;
119
113
  /** 数据更新后待复位纵向滚动位置 */
120
114
  private pendingResetScrollTop;
121
115
  /** 当前排序,表格重建后用于恢复表头排序态 */
@@ -175,7 +169,7 @@ export declare class HdTableComponent implements OnInit, OnDestroy {
175
169
  * 不锁死时表体会随位数变宽(1→~64px,199995→~67px),合计行对不齐。
176
170
  */
177
171
  readonly lineNumberColWidth = 72;
178
- /** 开启合计时序号列的 left(勾选列占 40px) */
172
+ /** 开启合计时序号列的 left(跟在勾选列后面) */
179
173
  readonly lineNumberLeft: string;
180
174
  readonly lineNumberColWidthPx: string;
181
175
  /**
@@ -183,10 +177,20 @@ export declare class HdTableComponent implements OnInit, OnDestroy {
183
177
  * 列少时也会设 scroll.x(补宽吃满),合计走固定表宽。
184
178
  */
185
179
  readonly isTotalFooterFluid: boolean;
186
- /** 展示用列宽:fluid 时最后一列业务列 = 声明宽 + fluidExtraWidth */
180
+ private isColVisible;
181
+ /** 业务列声明宽:未配置时按 fixColWidth */
182
+ private getColDeclaredWidth;
183
+ /** 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽 */
184
+ private getDeclaredColWidthTotal;
185
+ /** 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽 */
187
186
  getColDisplayWidth(col: HdTableColumn): number;
188
- /** 按当前 layout 刷新 fluid 补宽目标列(仅 dealScroll / sync 时调用) */
189
- private refreshFluidExtraTargetCol;
187
+ /**
188
+ * 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
189
+ * 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
190
+ */
191
+ private rebuildFluidExtraByCol;
192
+ /** 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用) */
193
+ private applyHorizontalLayout;
190
194
  /** fluid → 100%;固定 → scroll.x(与表体同一套横向宽度) */
191
195
  readonly totalFooterTableWidth: string;
192
196
  /** 当前页行号(跨页连续,从 1 开始) */
@@ -199,6 +203,8 @@ export declare class HdTableComponent implements OnInit, OnDestroy {
199
203
  initTable(): void;
200
204
  /** 虚拟/普通模式切换时重建表格,避免残留滚动容器 */
201
205
  applyTableScrollMode(forceRemount?: boolean): void;
206
+ /** 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局 */
207
+ private remountTable;
202
208
  /** 重建前预设 scroll,保证 AfterViewInit 时 header/body 结构已正确 */
203
209
  private presetScrollBeforeRemount;
204
210
  private afterTableRender;
@@ -234,16 +240,13 @@ export declare class HdTableComponent implements OnInit, OnDestroy {
234
240
  isDangerBtn(btn: OperateBtn, data: any): boolean;
235
241
  /** 虚拟滚动开启时使用视口最大高度 */
236
242
  private getVirtualScrollY;
237
- private hasTableData;
238
243
  /**
239
- * 按声明列总宽 + 容器宽,计算 scroll.x 与 fluid 补宽。
240
- * 列少:scroll.x = 内容区宽(clientWidth),差额加到最后业务列(勾选保持 40);
241
- * 列多:scroll.x = 声明总宽。
242
- * 比较是否超宽用 offsetWidth(含 Y 槽),避免「仅因纵滚条」误开横滚;
243
- * 补宽目标用 clientWidth,且 scroll.x 用 floor,避免表宽多 1px 逼出 X 轴滚动条。
244
+ * 按声明列宽合计 + 容器宽算出横向布局。
245
+ * 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
246
+ * 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
244
247
  */
245
248
  private resolveHorizontalLayout;
246
- /** 表格渲染后按实际容器宽度校正横向 scroll / fluid 补宽 */
249
+ /** 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变 */
247
250
  private syncHorizontalScroll;
248
251
  /** 手动把表体横向滚动同步到表头 / 合计 footer(兜底 ng-zorro 监听丢失的情况) */
249
252
  private syncHeaderBodyScrollLeft;
@@ -269,6 +272,11 @@ export declare class HdTableComponent implements OnInit, OnDestroy {
269
272
  private bindViewportResizeSync;
270
273
  private unbindViewportResizeSync;
271
274
  private scheduleViewportScrollSync;
275
+ /**
276
+ * 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
277
+ * 须在 applyHorizontalLayout 之后调用。
278
+ */
279
+ private refreshStickyOffsets;
272
280
  dealScroll(): void;
273
281
  currentPageDataChange($event: any): void;
274
282
  search(reset: boolean): void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fantasy-ngzorro",
3
- "version": "2.2.37",
4
- "description": "fix:hd-filter DateRange 空值保持 null;hd-table 空表也设 scroll.x 锁勾选列宽",
3
+ "version": "2.2.39",
4
+ "description": "fix:hd-table 列少时差额按声明宽比例分到各业务列",
5
5
  "peerDependencies": {
6
6
  "moment": "^2.24.0",
7
7
  "ng-zorro-antd": "^8.5.2",
@@ -11,7 +11,10 @@ export declare function measureTableColWidth(nzTable: NzTableComponent): number;
11
11
  * 这里用 offsetWidth(含滚动条槽)作为屏幕可展示宽度。
12
12
  */
13
13
  export declare function getTableScrollXViewportWidth(nzTable: NzTableComponent, hostClass?: string): number;
14
- /** 无数据或列宽未超出容器时不启用横向 scroll(fluid:表宽 100%,勾选/序号列由 CSS 锁宽) */
14
+ /**
15
+ * 无数据或列宽未超出容器时不启用横向 scroll(表宽 100%、table-layout: auto)。
16
+ * auto 布局下单元格 max-width 不生效,固定宽列会被均摊撑开;需要锁宽的场景见 hd-table 的横向布局。
17
+ */
15
18
  export declare function resolveAutoTableScroll(nzTable: NzTableComponent, hasData: boolean, colWidth?: number): HdTableScrollConfig | null;
16
19
  /** 取 ng-zorro 分体表头 / 表体滚动容器(含虚拟滚动) */
17
20
  export declare function getNzTableScrollElements(nzTable: NzTableComponent): {