@agile-team/mach-table 0.30.0 → 0.30.1

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.
@@ -812,6 +812,8 @@ interface ColumnState {
812
812
  flex?: number | null;
813
813
  /** Distinguishes responsive/definition width from an explicit user or API override. */
814
814
  widthMode?: "auto" | "manual";
815
+ /** Measured content basis for responsive fit sizing; independent of the rendered width. */
816
+ contentWidth?: number;
815
817
  pinned?: "left" | "right" | null;
816
818
  }
817
819
 
@@ -831,6 +833,7 @@ declare class Column<TData = any> {
831
833
  hide: boolean;
832
834
  pinned: PinnedDirection | null;
833
835
  manualWidth: number | null;
836
+ contentWidth: number | null;
834
837
  flex: number | null;
835
838
  currentWidth: number;
836
839
  parentGroup: ColumnGroup<TData> | null;
@@ -812,6 +812,8 @@ interface ColumnState {
812
812
  flex?: number | null;
813
813
  /** Distinguishes responsive/definition width from an explicit user or API override. */
814
814
  widthMode?: "auto" | "manual";
815
+ /** Measured content basis for responsive fit sizing; independent of the rendered width. */
816
+ contentWidth?: number;
815
817
  pinned?: "left" | "right" | null;
816
818
  }
817
819
 
@@ -831,6 +833,7 @@ declare class Column<TData = any> {
831
833
  hide: boolean;
832
834
  pinned: PinnedDirection | null;
833
835
  manualWidth: number | null;
836
+ contentWidth: number | null;
834
837
  flex: number | null;
835
838
  currentWidth: number;
836
839
  parentGroup: ColumnGroup<TData> | null;
package/dist/worker.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { ai as GridDataProcessorRequest, ag as GridDataProcessor, aj as GridDataProcessorResult } from './options-Cc31xFVh.cjs';
2
- export { ah as GridDataProcessorColumn, ak as GridDataProcessorRow } from './options-Cc31xFVh.cjs';
1
+ import { ai as GridDataProcessorRequest, ag as GridDataProcessor, aj as GridDataProcessorResult } from './options-XohbVBFI.cjs';
2
+ export { ah as GridDataProcessorColumn, ak as GridDataProcessorRow } from './options-XohbVBFI.cjs';
3
3
 
4
4
  type GridDataProcessorPayload<TData = any> = Omit<GridDataProcessorRequest<TData>, "signal">;
5
5
  interface GridWorkerProcessMessage<TData = any> {
package/dist/worker.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ai as GridDataProcessorRequest, ag as GridDataProcessor, aj as GridDataProcessorResult } from './options-Cc31xFVh.js';
2
- export { ah as GridDataProcessorColumn, ak as GridDataProcessorRow } from './options-Cc31xFVh.js';
1
+ import { ai as GridDataProcessorRequest, ag as GridDataProcessor, aj as GridDataProcessorResult } from './options-XohbVBFI.js';
2
+ export { ah as GridDataProcessorColumn, ak as GridDataProcessorRow } from './options-XohbVBFI.js';
3
3
 
4
4
  type GridDataProcessorPayload<TData = any> = Omit<GridDataProcessorRequest<TData>, "signal">;
5
5
  interface GridWorkerProcessMessage<TData = any> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-table",
3
- "version": "0.30.0",
3
+ "version": "0.30.1",
4
4
  "description": "Enterprise-grade, framework-agnostic TypeScript data grid with virtualization, editing, grouping and extensibility",
5
5
  "keywords": [
6
6
  "data-grid",
@@ -81,5 +81,5 @@
81
81
  "test": "vitest run",
82
82
  "test:coverage": "vitest run --coverage"
83
83
  },
84
- "readme": "<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/ChenyCHENYU/MachTable/main/assets/mach-table-logo.svg\" alt=\"MachTable\" width=\"760\" />\n</p>\n\n# @agile-team/mach-table\n\nMachTable 0.30.0 的框架无关 TypeScript Core:零运行时依赖,提供行列双虚拟化、领域化 API、单元格/整行编辑、树与分组、随机访问远程数据、区段隔离状态持久化和可诊断扩展系统。本版增加可选服务端导出请求快照,不改变现有网格行为。\n\n```bash\npnpm add @agile-team/mach-table\n```\n\n```ts\nimport { createGrid, indexColumn } from \"@agile-team/mach-table\";\nimport \"@agile-team/mach-table/styles/mach-table.css\";\n\nconst api = createGrid(document.querySelector(\"#grid\")!, {\n columnDefs: [\n indexColumn({ headerName: \"序号\" }),\n { field: \"id\", headerName: \"ID\", width: 120 },\n { field: \"name\", headerName: \"名称\", flex: 1, editable: true }\n ],\n rowData: [{ id: \"1\", name: \"MachTable\" }],\n rowKey: \"id\",\n enableColumnResize: true,\n persistence: { key: \"tenant:user:customers\", sections: [\"columns\"] }\n});\n\napi.batch((grid) => {\n grid.rows.transact({ update: [{ id: \"1\", name: \"Updated\" }] });\n grid.columns.setVisible(\"internalNote\", false);\n grid.view.refreshCells({ rowIds: [\"1\"] });\n});\n\nconst saved = await api.editing.save(orderApi.saveChanges);\nconsole.table(saved.conflicts);\nconsole.info(api.diagnostics.get());\n\n// 原生宿主卸载时必须销毁;Vue/React 适配器会自动处理。\napi.destroy();\n```\n\n`persistence.sections` 同时约束进入 store 的数据与恢复范围;异步 store 写入有序,晚到加载不会覆盖加载期间的用户操作。\n\n单元格编辑通过内置对勾/取消控件显式结束,普通鼠标和焦点变化不会误提交;Enter、Escape、Tab 仍提供完整键盘路径。筛选、列设置、上下文菜单和操作菜单会继承所属表格实例的主题变量,不受宿主页面全局样式影响。\n\n`loading: true` 默认展示轻量表格骨架与本地化状态文案,空数据默认展示内置插画;需要品牌化时再通过 `overlayLoadingTemplate`、`overlayNoRowsTemplate` 覆盖,基础页面无需重复实现 loading/empty DOM。\n\n公共命令按 `rows`、`columns`、`selection`、`editing`、`filtering`、`sorting`、`pagination`、`hierarchy`、`view`、`state`、`io`、`diagnostics` 划分。完整签名见 [GridApi](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/api/grid-api.md)。\n\n大型本地数据 Worker 使用独立入口:\n\n```ts\nimport { createWorkerDataProcessor } from \"@agile-team/mach-table/worker\";\n```\n\nVue/React 项目请只安装对应适配包,它会自动安装并重导出 Core:\n\n- [@agile-team/mach-table-vue](https://www.npmjs.com/package/@agile-team/mach-table-vue)\n- [@agile-team/mach-table-react](https://www.npmjs.com/package/@agile-team/mach-table-react)\n\n文档:[快速开始](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/getting-started.md) · [企业接入](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/enterprise-integration.md) · [API](https://github.com/ChenyCHENYU/MachTable/tree/main/docs/api)\n\nSource-available © ChenyCHENYU (Agile Team). 任何使用均须事先取得书面授权。详见 [LICENSE](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSE) 与[授权流程](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSING.md)。\n"
84
+ "readme": "<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/ChenyCHENYU/MachTable/main/assets/mach-table-logo.svg\" alt=\"MachTable\" width=\"760\" />\n</p>\n\n# @agile-team/mach-table\n\nMachTable 0.30.1 的框架无关 TypeScript Core:零运行时依赖,提供行列双虚拟化、领域化 API、单元格/整行编辑、树与分组、随机访问远程数据、区段隔离状态持久化和可诊断扩展系统。本版修正固定列重复扣宽,并让 `fit` 模式下的内容自适应保留响应能力与列宽记忆。\n\n```bash\npnpm add @agile-team/mach-table\n```\n\n```ts\nimport { createGrid, indexColumn } from \"@agile-team/mach-table\";\nimport \"@agile-team/mach-table/styles/mach-table.css\";\n\nconst api = createGrid(document.querySelector(\"#grid\")!, {\n columnDefs: [\n indexColumn({ headerName: \"序号\" }),\n { field: \"id\", headerName: \"ID\", width: 120 },\n { field: \"name\", headerName: \"名称\", flex: 1, editable: true }\n ],\n rowData: [{ id: \"1\", name: \"MachTable\" }],\n rowKey: \"id\",\n enableColumnResize: true,\n persistence: { key: \"tenant:user:customers\", sections: [\"columns\"] }\n});\n\napi.batch((grid) => {\n grid.rows.transact({ update: [{ id: \"1\", name: \"Updated\" }] });\n grid.columns.setVisible(\"internalNote\", false);\n grid.view.refreshCells({ rowIds: [\"1\"] });\n});\n\nconst saved = await api.editing.save(orderApi.saveChanges);\nconsole.table(saved.conflicts);\nconsole.info(api.diagnostics.get());\n\n// 原生宿主卸载时必须销毁;Vue/React 适配器会自动处理。\napi.destroy();\n```\n\n`persistence.sections` 同时约束进入 store 的数据与恢复范围;异步 store 写入有序,晚到加载不会覆盖加载期间的用户操作。\n\n单元格编辑通过内置对勾/取消控件显式结束,普通鼠标和焦点变化不会误提交;Enter、Escape、Tab 仍提供完整键盘路径。筛选、列设置、上下文菜单和操作菜单会继承所属表格实例的主题变量,不受宿主页面全局样式影响。\n\n`loading: true` 默认展示轻量表格骨架与本地化状态文案,空数据默认展示内置插画;需要品牌化时再通过 `overlayLoadingTemplate`、`overlayNoRowsTemplate` 覆盖,基础页面无需重复实现 loading/empty DOM。\n\n公共命令按 `rows`、`columns`、`selection`、`editing`、`filtering`、`sorting`、`pagination`、`hierarchy`、`view`、`state`、`io`、`diagnostics` 划分。完整签名见 [GridApi](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/api/grid-api.md)。\n\n大型本地数据 Worker 使用独立入口:\n\n```ts\nimport { createWorkerDataProcessor } from \"@agile-team/mach-table/worker\";\n```\n\nVue/React 项目请只安装对应适配包,它会自动安装并重导出 Core:\n\n- [@agile-team/mach-table-vue](https://www.npmjs.com/package/@agile-team/mach-table-vue)\n- [@agile-team/mach-table-react](https://www.npmjs.com/package/@agile-team/mach-table-react)\n\n文档:[快速开始](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/getting-started.md) · [企业接入](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/enterprise-integration.md) · [API](https://github.com/ChenyCHENYU/MachTable/tree/main/docs/api)\n\nSource-available © ChenyCHENYU (Agile Team). 任何使用均须事先取得书面授权。详见 [LICENSE](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSE) 与[授权流程](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSING.md)。\n"
85
85
  }
@@ -580,36 +580,36 @@
580
580
  overscroll-behavior: contain;
581
581
  }
582
582
 
583
- .mach-body-viewport--scroll {
584
- scrollbar-width: thin;
585
- scrollbar-color: var(--mach-scrollbar-thumb) transparent;
586
- }
587
-
588
- .mach-body-viewport--scroll::-webkit-scrollbar {
589
- width: 10px;
590
- height: 10px;
591
- }
592
-
593
- .mach-body-viewport--scroll::-webkit-scrollbar-track {
594
- background: transparent;
595
- }
596
-
597
- .mach-body-viewport--scroll::-webkit-scrollbar-thumb {
598
- background: var(--mach-scrollbar-thumb);
599
- border-radius: 999px;
600
- border: 3px solid transparent;
601
- background-clip: padding-box;
602
- transition: background-color var(--mach-transition);
603
- }
604
-
605
- .mach-body-viewport--scroll::-webkit-scrollbar-thumb:hover {
606
- background: color-mix(in srgb, var(--mach-scrollbar-thumb) 60%, var(--mach-primary));
607
- background-clip: padding-box;
608
- }
609
-
610
- .mach-body-viewport--scroll::-webkit-scrollbar-thumb:active {
611
- background: var(--mach-primary);
612
- background-clip: padding-box;
583
+ .mach-body-viewport--scroll {
584
+ scrollbar-width: thin;
585
+ scrollbar-color: var(--mach-scrollbar-thumb) transparent;
586
+ }
587
+
588
+ .mach-body-viewport--scroll::-webkit-scrollbar {
589
+ width: 10px;
590
+ height: 10px;
591
+ }
592
+
593
+ .mach-body-viewport--scroll::-webkit-scrollbar-track {
594
+ background: transparent;
595
+ }
596
+
597
+ .mach-body-viewport--scroll::-webkit-scrollbar-thumb {
598
+ background: var(--mach-scrollbar-thumb);
599
+ border-radius: 999px;
600
+ border: 3px solid transparent;
601
+ background-clip: padding-box;
602
+ transition: background-color var(--mach-transition);
603
+ }
604
+
605
+ .mach-body-viewport--scroll::-webkit-scrollbar-thumb:hover {
606
+ background: color-mix(in srgb, var(--mach-scrollbar-thumb) 60%, var(--mach-primary));
607
+ background-clip: padding-box;
608
+ }
609
+
610
+ .mach-body-viewport--scroll::-webkit-scrollbar-thumb:active {
611
+ background: var(--mach-primary);
612
+ background-clip: padding-box;
613
613
  }
614
614
 
615
615
  .mach-body-viewport--scroll::-webkit-scrollbar-corner {
@@ -2160,7 +2160,7 @@ input.mach-select-all {
2160
2160
  .mach-context-menu-item:disabled {
2161
2161
  opacity: 0.45;
2162
2162
  cursor: not-allowed;
2163
- }
2163
+ }
2164
2164
 
2165
2165
  .mach-pagination {
2166
2166
  display: flex;