comins-table 0.1.8 → 0.1.10
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.
- package/CHANGELOG.md +39 -1
- package/DESIGN.md +134 -0
- package/README.md +86 -21
- package/dist/clipboard.js +1 -1
- package/dist/component-renderer.d.ts.map +1 -1
- package/dist/{core-BF1H3EEK.js → core-D01wEe-7.js} +78 -70
- package/dist/core-D01wEe-7.js.map +1 -0
- package/dist/core.d.ts +12 -2
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -1
- package/dist/index.d.ts +80 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2838 -1689
- package/dist/index.js.map +1 -1
- package/dist/row-height.d.ts +25 -0
- package/dist/row-height.d.ts.map +1 -0
- package/dist/selection-data.d.ts +14 -0
- package/dist/selection-data.d.ts.map +1 -0
- package/dist/selection.d.ts +1 -1
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +1 -1
- package/dist/tree-drag.d.ts +46 -0
- package/dist/tree-drag.d.ts.map +1 -0
- package/dist/tree.d.ts +19 -0
- package/dist/tree.d.ts.map +1 -1
- package/dist/use-viewport.d.ts +28 -0
- package/dist/use-viewport.d.ts.map +1 -0
- package/dist/viewport-data.d.ts +73 -0
- package/dist/viewport-data.d.ts.map +1 -0
- package/dist/viewport-layout.d.ts +21 -0
- package/dist/viewport-layout.d.ts.map +1 -0
- package/dist/viewport-requests.d.ts +9 -0
- package/dist/viewport-requests.d.ts.map +1 -0
- package/dist/virtual-layout.d.ts +12 -2
- package/dist/virtual-layout.d.ts.map +1 -1
- package/package.json +4 -2
- package/styles.css +17 -0
- package/dist/core-BF1H3EEK.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CominsEventRow } from "./index";
|
|
2
|
+
export type CominsRowHeight = number | "auto";
|
|
3
|
+
export type CominsRowHeightParams<TData> = {
|
|
4
|
+
row: CominsEventRow<TData>;
|
|
5
|
+
};
|
|
6
|
+
export type CominsRowMeasurement<TData> = {
|
|
7
|
+
row: TData;
|
|
8
|
+
layoutKey: string;
|
|
9
|
+
contentRevision?: object;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function normalizeCominsRowHeight(value: number | undefined, fallback?: number): number;
|
|
13
|
+
export declare function resolveCominsRowHeight<TData>(input: {
|
|
14
|
+
value: CominsRowHeight | undefined;
|
|
15
|
+
rowHeight: number;
|
|
16
|
+
estimate?: number;
|
|
17
|
+
measurement?: CominsRowMeasurement<TData>;
|
|
18
|
+
row: TData;
|
|
19
|
+
layoutKey: string;
|
|
20
|
+
contentRevision?: object;
|
|
21
|
+
}): {
|
|
22
|
+
auto: boolean;
|
|
23
|
+
height: number;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=row-height.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-height.d.ts","sourceRoot":"","sources":["../src/row-height.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,qBAAqB,CAAC,KAAK,IAAI;IAAE,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,oBAAoB,CAAC,KAAK,IAAI;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,SAAK,UAEhF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE;IACnD,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,EAAE,KAAK,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;;;EAWA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type CominsCellAddress, type CominsCopiedCellRange, type CominsRowId, type CominsTableState } from "./core";
|
|
2
|
+
export type CominsSelectedCell = CominsCellAddress & {
|
|
3
|
+
value: unknown;
|
|
4
|
+
};
|
|
5
|
+
export type CominsCopyTarget = "auto" | "cells" | "rows";
|
|
6
|
+
export type CominsSelectionCopy = {
|
|
7
|
+
target: "cells" | "rows";
|
|
8
|
+
text: string;
|
|
9
|
+
data: CominsCopiedCellRange;
|
|
10
|
+
};
|
|
11
|
+
export declare function selectedRowData<T>(state: CominsTableState<T>): T[];
|
|
12
|
+
export declare function selectedCellValues<T>(state: CominsTableState<T>, order?: readonly CominsRowId[]): CominsSelectedCell[];
|
|
13
|
+
export declare function copySelectionData<T>(state: CominsTableState<T>, target?: CominsCopyTarget, order?: readonly CominsRowId[]): CominsSelectionCopy | null;
|
|
14
|
+
//# sourceMappingURL=selection-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-data.d.ts","sourceRoot":"","sources":["../src/selection-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAC5F,MAAM,QAAQ,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAE1G,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAGlE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,WAAW,EAAiB,GAAG,kBAAkB,EAAE,CASpI;AASD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,gBAAyB,EAAE,KAAK,GAAE,SAAS,WAAW,EAAiB,GAAG,mBAAmB,GAAG,IAAI,CAoC5K"}
|
package/dist/selection.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { clearCominsCellRange, clearCominsSelection, getCominsSelectedCellRange, isCominsCellInSelectedRange, isCominsCellSelected, isCominsRowSelected, selectCell, selectCellRange, selectRow, } from "./core";
|
|
2
|
-
export type { CominsCellAddress, CominsCellRange, CominsRowSelectionOptions, CominsSelectionState, } from "./core";
|
|
2
|
+
export type { CominsCellAddress, CominsCellRange, CominsCellSelectionOptions, CominsRowSelectionOptions, CominsSelectionState, } from "./core";
|
|
3
3
|
//# sourceMappingURL=selection.d.ts.map
|
package/dist/selection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,SAAS,GACV,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,SAAS,GACV,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,QAAQ,CAAC"}
|
package/dist/selection.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { D as e, E as t, L as n, R as r, T as i, b as a, i as o, r as s, z as c } from "./core-
|
|
1
|
+
import { D as e, E as t, L as n, R as r, T as i, b as a, i as o, r as s, z as c } from "./core-D01wEe-7.js";
|
|
2
2
|
export { s as clearCominsCellRange, o as clearCominsSelection, a as getCominsSelectedCellRange, i as isCominsCellInSelectedRange, t as isCominsCellSelected, e as isCominsRowSelected, n as selectCell, r as selectCellRange, c as selectRow };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import type { CominsRowId } from "./core";
|
|
3
|
+
import type { CominsEventRow, CominsRowDragReason, CominsRowDragResult, CominsRowDragTarget, CominsTableRowProps } from "./index";
|
|
4
|
+
import { type CominsTreeDropContext, type CominsTreeNode, type CominsTreeRowDragConfig, type CominsVisibleTreeRow } from "./tree";
|
|
5
|
+
export type CominsBeforeTreeRowDragPayload<T> = {
|
|
6
|
+
event: React.PointerEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>;
|
|
7
|
+
row: CominsEventRow<T>;
|
|
8
|
+
};
|
|
9
|
+
export type CominsTreeRowDragPayload<T> = {
|
|
10
|
+
event: PointerEvent | KeyboardEvent;
|
|
11
|
+
row: CominsEventRow<T>;
|
|
12
|
+
target: CominsRowDragTarget;
|
|
13
|
+
};
|
|
14
|
+
export type CominsAfterTreeRowDragPayload<T> = {
|
|
15
|
+
event: PointerEvent | KeyboardEvent | null;
|
|
16
|
+
row: CominsEventRow<T>;
|
|
17
|
+
target?: CominsRowDragTarget;
|
|
18
|
+
reason: CominsRowDragReason;
|
|
19
|
+
result: CominsRowDragResult;
|
|
20
|
+
};
|
|
21
|
+
type Options<T> = {
|
|
22
|
+
data: readonly CominsTreeNode<T>[];
|
|
23
|
+
entries: readonly CominsVisibleTreeRow<T>[];
|
|
24
|
+
getRowId: (row: T, index: number) => CominsRowId;
|
|
25
|
+
config?: CominsTreeRowDragConfig<T>;
|
|
26
|
+
sorted: boolean;
|
|
27
|
+
rowProps?: CominsTableRowProps<T>;
|
|
28
|
+
onChangeData?: (data: CominsTreeNode<T>[]) => void;
|
|
29
|
+
onBeforeRowDrag?: (payload: CominsBeforeTreeRowDragPayload<T>) => boolean | void;
|
|
30
|
+
onRowDrag?: (payload: CominsTreeRowDragPayload<T>) => void;
|
|
31
|
+
onAfterDragRow?: (payload: CominsAfterTreeRowDragPayload<T>) => void;
|
|
32
|
+
};
|
|
33
|
+
type Preview<T> = {
|
|
34
|
+
context: CominsTreeDropContext<T>;
|
|
35
|
+
valid: boolean;
|
|
36
|
+
};
|
|
37
|
+
export declare function useCominsTreeDrag<T>(options: Options<T>): {
|
|
38
|
+
announcement: string;
|
|
39
|
+
navigateRef: React.RefObject<((id: CominsRowId) => void) | null>;
|
|
40
|
+
restoreFocus: () => void;
|
|
41
|
+
onPointerDown: (event: React.PointerEvent<HTMLElement>, row: CominsEventRow<T>) => void;
|
|
42
|
+
onKeyDown: (event: React.KeyboardEvent<HTMLElement>, row: CominsEventRow<T>) => void;
|
|
43
|
+
preview: Preview<T> | null;
|
|
44
|
+
};
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=tree-drag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-drag.d.ts","sourceRoot":"","sources":["../src/tree-drag.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAElI,OAAO,EAAsB,KAAK,qBAAqB,EAA+B,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnL,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI;IAC9C,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1E,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI;IACxC,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;IACpC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,6BAA6B,CAAC,CAAC,IAAI;IAC7C,KAAK,EAAE,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC;IAC3C,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,KAAK,OAAO,CAAC,CAAC,IAAI;IAChB,IAAI,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,CAAC;IACjD,MAAM,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IACjF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACtE,CAAC;AACF,KAAK,OAAO,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAUxE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;;uCAGrB,WAAW,KAAK,IAAI;;2BAyFvB,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;uBA4E3D,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;;EAcnF"}
|
package/dist/tree.d.ts
CHANGED
|
@@ -7,6 +7,21 @@ export type CominsTreeNode<TItem> = {
|
|
|
7
7
|
export type CominsTreeExpansionOptions = {
|
|
8
8
|
defaultExpandAll?: boolean;
|
|
9
9
|
};
|
|
10
|
+
export type CominsTreeMoveDestination = {
|
|
11
|
+
parentId: CominsRowId | null;
|
|
12
|
+
beforeRowId: CominsRowId | null;
|
|
13
|
+
};
|
|
14
|
+
export type CominsTreeDropPosition = "before" | "after" | "inside";
|
|
15
|
+
export type CominsTreeDropContext<TItem> = {
|
|
16
|
+
source: CominsVisibleTreeRow<TItem>;
|
|
17
|
+
target: CominsVisibleTreeRow<TItem>;
|
|
18
|
+
destination: CominsTreeMoveDestination;
|
|
19
|
+
position: CominsTreeDropPosition;
|
|
20
|
+
};
|
|
21
|
+
export type CominsTreeRowDragConfig<TItem> = {
|
|
22
|
+
allowReparent?: boolean;
|
|
23
|
+
canDrop?: (context: CominsTreeDropContext<TItem>) => boolean;
|
|
24
|
+
};
|
|
10
25
|
export type CominsVisibleTreeRow<TItem> = {
|
|
11
26
|
depth: number;
|
|
12
27
|
expanded: boolean;
|
|
@@ -15,6 +30,10 @@ export type CominsVisibleTreeRow<TItem> = {
|
|
|
15
30
|
path: readonly number[];
|
|
16
31
|
rowId: CominsRowId;
|
|
17
32
|
};
|
|
33
|
+
/** Move a complete subtree. Invalid and unchanged moves retain the input reference. */
|
|
34
|
+
export declare function moveCominsTreeNode<TItem>(nodes: readonly CominsTreeNode<TItem>[], rowId: CominsRowId, destination: CominsTreeMoveDestination, getRowId: (item: TItem, index: number) => CominsRowId, options?: {
|
|
35
|
+
allowReparent?: boolean;
|
|
36
|
+
}): readonly CominsTreeNode<TItem>[];
|
|
18
37
|
export declare function flattenCominsTree<TItem>(nodes: readonly CominsTreeNode<TItem>[], getRowId: (item: TItem, index: number) => CominsRowId, options?: CominsTreeExpansionOptions): CominsVisibleTreeRow<TItem>[];
|
|
19
38
|
export declare function getCominsTreeLeafItems<TItem>(nodes: readonly CominsTreeNode<TItem>[]): TItem[];
|
|
20
39
|
export declare function toggleCominsTreeNode<TItem>(nodes: readonly CominsTreeNode<TItem>[], rowId: CominsRowId, getRowId: (item: TItem, index: number) => CominsRowId, options?: CominsTreeExpansionOptions): CominsTreeNode<TItem>[];
|
package/dist/tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI;IAClC,QAAQ,CAAC,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,KAAK,IAAI;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AA0EF,wBAAgB,iBAAiB,CAAC,KAAK,EACrC,KAAK,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,EACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EACrD,OAAO,GAAE,0BAA+B,GACvC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CA2B/B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,CAE9F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EACxC,KAAK,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,EACvC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EACrD,OAAO,GAAE,0BAA+B,GACvC,cAAc,CAAC,KAAK,CAAC,EAAE,CAWzB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EACxC,KAAK,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,EACvC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EACrD,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,GAC7B,cAAc,CAAC,KAAK,CAAC,EAAE,CAQzB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,KAAK,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,EACvC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,GAC7C,cAAc,CAAC,KAAK,CAAC,EAAE,CAOzB"}
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type CominsViewportData, type CominsViewportPatch, type CominsViewportRequest, type CominsViewportRevision } from "./viewport-data";
|
|
2
|
+
export type CominsViewportDatasource = {
|
|
3
|
+
revision: CominsViewportRevision;
|
|
4
|
+
maxConcurrentRequests?: number;
|
|
5
|
+
heightCacheSize?: number;
|
|
6
|
+
};
|
|
7
|
+
export type CominsViewportOptions<T> = {
|
|
8
|
+
rowCount: number;
|
|
9
|
+
queryKey: CominsViewportRevision;
|
|
10
|
+
getRows: (request: CominsViewportRequest) => readonly T[] | Promise<readonly T[]>;
|
|
11
|
+
blockSize?: number;
|
|
12
|
+
cacheSize?: number;
|
|
13
|
+
maxConcurrentRequests?: number;
|
|
14
|
+
heightCacheSize?: number;
|
|
15
|
+
onEdit?: (changes: readonly CominsViewportPatch<T>[]) => void;
|
|
16
|
+
};
|
|
17
|
+
/** State lives with the consumer. The Table receives a controlled snapshot and callbacks. */
|
|
18
|
+
export declare function useCominsViewport<T>(options: CominsViewportOptions<T>): {
|
|
19
|
+
data: CominsViewportData<T>;
|
|
20
|
+
tableProps: {
|
|
21
|
+
data: CominsViewportData<T>;
|
|
22
|
+
onChangeData: (next: CominsViewportData<T>) => void;
|
|
23
|
+
onViewportRequest: (request: CominsViewportRequest) => Promise<void>;
|
|
24
|
+
viewportDatasource: CominsViewportDatasource;
|
|
25
|
+
virtualized: true;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=use-viewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-viewport.d.ts","sourceRoot":"","sources":["../src/use-viewport.ts"],"names":[],"mappings":"AACA,OAAO,EAAsD,KAAK,kBAAkB,EAAgC,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/N,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;;;;6BA+B5B,kBAAkB,CAAC,CAAC,CAAC;qCAdP,qBAAqB;;;;EAyB5E"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { CominsRowId, CominsSelectionState } from "./core";
|
|
2
|
+
export type CominsViewportRevision = string | number;
|
|
3
|
+
export type CominsViewportRange = {
|
|
4
|
+
startIndex: number;
|
|
5
|
+
endIndex: number;
|
|
6
|
+
};
|
|
7
|
+
export type CominsViewportRequest = CominsViewportRange & {
|
|
8
|
+
revision: CominsViewportRevision;
|
|
9
|
+
requestId: string;
|
|
10
|
+
signal: AbortSignal;
|
|
11
|
+
retainRange: CominsViewportRange;
|
|
12
|
+
};
|
|
13
|
+
export type CominsViewportBlock<T> = {
|
|
14
|
+
startIndex: number;
|
|
15
|
+
rows: readonly T[];
|
|
16
|
+
version: number;
|
|
17
|
+
touched: number;
|
|
18
|
+
};
|
|
19
|
+
export type CominsViewportRequestState = CominsViewportRange & {
|
|
20
|
+
requestId: string;
|
|
21
|
+
status: "loading" | "error";
|
|
22
|
+
version: number;
|
|
23
|
+
};
|
|
24
|
+
export type CominsViewportPatch<T> = {
|
|
25
|
+
index: number;
|
|
26
|
+
row: T;
|
|
27
|
+
};
|
|
28
|
+
export type CominsViewportData<T> = {
|
|
29
|
+
revision: CominsViewportRevision;
|
|
30
|
+
rowCount: number;
|
|
31
|
+
blockSize: number;
|
|
32
|
+
cacheSize: number;
|
|
33
|
+
blocks: readonly CominsViewportBlock<T>[];
|
|
34
|
+
requests: readonly CominsViewportRequestState[];
|
|
35
|
+
retainRange: CominsViewportRange;
|
|
36
|
+
version: number;
|
|
37
|
+
clock: number;
|
|
38
|
+
changes: readonly CominsViewportPatch<T>[];
|
|
39
|
+
};
|
|
40
|
+
export type CominsViewportDataOptions = {
|
|
41
|
+
revision: CominsViewportRevision;
|
|
42
|
+
rowCount: number;
|
|
43
|
+
blockSize?: number;
|
|
44
|
+
cacheSize?: number;
|
|
45
|
+
};
|
|
46
|
+
export type CominsViewportDataEvent<T> = {
|
|
47
|
+
type: "request";
|
|
48
|
+
request: CominsViewportRequest;
|
|
49
|
+
} | {
|
|
50
|
+
type: "cancel";
|
|
51
|
+
request: CominsViewportRequest;
|
|
52
|
+
} | {
|
|
53
|
+
type: "error";
|
|
54
|
+
request: CominsViewportRequest;
|
|
55
|
+
} | {
|
|
56
|
+
type: "success";
|
|
57
|
+
request: CominsViewportRequest;
|
|
58
|
+
rows: readonly T[];
|
|
59
|
+
} | {
|
|
60
|
+
type: "retain";
|
|
61
|
+
range: CominsViewportRange;
|
|
62
|
+
} | {
|
|
63
|
+
type: "patch";
|
|
64
|
+
changes: readonly CominsViewportPatch<T>[];
|
|
65
|
+
} | {
|
|
66
|
+
type: "reset";
|
|
67
|
+
options: CominsViewportDataOptions;
|
|
68
|
+
};
|
|
69
|
+
export declare function normalizeCominsViewportInteger(value: number | undefined, fallback: number): number;
|
|
70
|
+
export declare function createCominsViewportData<T>(options: CominsViewportDataOptions): CominsViewportData<T>;
|
|
71
|
+
export declare function reduceCominsViewportData<T>(data: CominsViewportData<T>, event: CominsViewportDataEvent<T>): CominsViewportData<T>;
|
|
72
|
+
export declare function reconcileCominsViewportSelection(selection: CominsSelectionState, rowIds: readonly CominsRowId[], indices: readonly number[], columnIds: readonly string[]): CominsSelectionState;
|
|
73
|
+
//# sourceMappingURL=viewport-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport-data.d.ts","sourceRoot":"","sources":["../src/viewport-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CominsViewportRange } from "./viewport-data";
|
|
2
|
+
/** Sparse measured blocks only: storage does not depend on total dataset length. */
|
|
3
|
+
export declare class CominsViewportHeightIndex {
|
|
4
|
+
readonly rowCount: number;
|
|
5
|
+
readonly estimate: number;
|
|
6
|
+
readonly blockSize: number;
|
|
7
|
+
readonly maxBlocks: number;
|
|
8
|
+
private blocks;
|
|
9
|
+
private deltas;
|
|
10
|
+
constructor(rowCount: number, estimate: number, blockSize?: number, maxBlocks?: number);
|
|
11
|
+
clone(): CominsViewportHeightIndex;
|
|
12
|
+
get measuredBlockCount(): number;
|
|
13
|
+
get measuredRowCount(): number;
|
|
14
|
+
getHeight(index: number): number;
|
|
15
|
+
getPrefixHeight(endExclusive: number): number;
|
|
16
|
+
getTotalHeight(): number;
|
|
17
|
+
findIndexAtOffset(offset: number): number;
|
|
18
|
+
updateHeight(index: number, value: number): number;
|
|
19
|
+
retain(range: CominsViewportRange): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=viewport-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport-layout.d.ts","sourceRoot":"","sources":["../src/viewport-layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,oFAAoF;AACpF,qBAAa,yBAAyB;IAGxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAAE,QAAQ,CAAC,SAAS;IAAQ,QAAQ,CAAC,SAAS;IAF9G,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,MAAM,CAA6B;IAC3C,YAAqB,QAAQ,EAAE,MAAM,EAAW,QAAQ,EAAE,MAAM,EAAW,SAAS,SAAM,EAAW,SAAS,SAAK,EAAI;IACvH,KAAK,8BAKJ;IACD,IAAI,kBAAkB,WAA+B;IACrD,IAAI,gBAAgB,WAAsF;IAC1G,SAAS,CAAC,KAAK,EAAE,MAAM,UAA8F;IACrH,eAAe,CAAC,YAAY,EAAE,MAAM,UAQnC;IACD,cAAc,WAAkD;IAChE,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAW/B;IACD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAYxC;IACD,MAAM,CAAC,KAAK,EAAE,mBAAmB,QAShC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CominsViewportData, type CominsViewportRange, type CominsViewportRequest } from "./viewport-data";
|
|
2
|
+
export declare function useCominsViewportRequests<T>(input: {
|
|
3
|
+
data?: CominsViewportData<T>;
|
|
4
|
+
range: CominsViewportRange;
|
|
5
|
+
maxConcurrentRequests?: number;
|
|
6
|
+
onRequest?: (request: CominsViewportRequest) => void | Promise<void>;
|
|
7
|
+
onChangeData?: (data: CominsViewportData<T>) => void;
|
|
8
|
+
}): (index: number) => void;
|
|
9
|
+
//# sourceMappingURL=viewport-requests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport-requests.d.ts","sourceRoot":"","sources":["../src/viewport-requests.ts"],"names":[],"mappings":"AACA,OAAO,EAA4D,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1K,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,KAAK,EAAE;IAClD,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACtD,WA2CgB,MAAM,UAKtB"}
|
package/dist/virtual-layout.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CominsRowId } from "./core";
|
|
2
2
|
export declare const COMINS_MAX_PHYSICAL_TOTAL_HEIGHT = 1500000;
|
|
3
3
|
export type CominsDataVirtualSlot<TData> = {
|
|
4
|
+
absoluteIndex?: number;
|
|
4
5
|
dataIndex: number;
|
|
5
6
|
detail?: {
|
|
6
7
|
estimated: boolean;
|
|
@@ -9,6 +10,8 @@ export type CominsDataVirtualSlot<TData> = {
|
|
|
9
10
|
};
|
|
10
11
|
key: string;
|
|
11
12
|
kind: "data";
|
|
13
|
+
rowHeight?: number;
|
|
14
|
+
autoHeight?: boolean;
|
|
12
15
|
row: TData;
|
|
13
16
|
rowId: CominsRowId;
|
|
14
17
|
visibleIndex: number;
|
|
@@ -19,7 +22,13 @@ export type CominsGroupVirtualSlot = {
|
|
|
19
22
|
key: string;
|
|
20
23
|
kind: "group";
|
|
21
24
|
};
|
|
22
|
-
export type
|
|
25
|
+
export type CominsPlaceholderVirtualSlot = {
|
|
26
|
+
kind: "placeholder";
|
|
27
|
+
key: string;
|
|
28
|
+
absoluteIndex: number;
|
|
29
|
+
height: number;
|
|
30
|
+
};
|
|
31
|
+
export type CominsVirtualSlot<TData> = CominsDataVirtualSlot<TData> | CominsPlaceholderVirtualSlot | CominsGroupVirtualSlot;
|
|
23
32
|
export type CominsVirtualRange = {
|
|
24
33
|
endIndex: number;
|
|
25
34
|
logicalScrollTop: number;
|
|
@@ -40,6 +49,7 @@ export declare function createCominsDataVirtualSlot<TData>(input: {
|
|
|
40
49
|
detail: CominsDataVirtualSlot<TData>["detail"] | null;
|
|
41
50
|
row: TData;
|
|
42
51
|
rowHeight: number;
|
|
52
|
+
autoHeight?: boolean;
|
|
43
53
|
rowId: CominsRowId;
|
|
44
54
|
visibleIndex: number;
|
|
45
55
|
}): CominsDataVirtualSlot<TData>;
|
|
@@ -75,7 +85,7 @@ export declare function getCominsScrollScale(logicalTotalHeight: number, viewpor
|
|
|
75
85
|
scrollScale: number;
|
|
76
86
|
};
|
|
77
87
|
export declare function getCominsMixedVirtualRange(input: {
|
|
78
|
-
heightIndex: CominsHeightIndex
|
|
88
|
+
heightIndex: Pick<CominsHeightIndex, "getTotalHeight" | "getPrefixHeight" | "findIndexAtOffset">;
|
|
79
89
|
overscan: number;
|
|
80
90
|
physicalScrollTop: number;
|
|
81
91
|
viewportHeight: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-layout.d.ts","sourceRoot":"","sources":["../src/virtual-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,eAAO,MAAM,gCAAgC,UAAY,CAAC;AAE1D,MAAM,MAAM,qBAAqB,CAAC,KAAK,IAAI;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,KAAK,IAC/B,qBAAqB,CAAC,KAAK,CAAC,GAC5B,sBAAsB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,UAEtD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtD,GAAG,EAAE,KAAK,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,qBAAqB,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"virtual-layout.d.ts","sourceRoot":"","sources":["../src/virtual-layout.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "comins-table",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"homepage": "https://github.com/kim1124/comins-table#readme",
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "vite build && tsc -p tsconfig.build.json",
|
|
16
|
+
"check:docs": "node scripts/check-documentation-contract.mjs",
|
|
16
17
|
"check:hygiene": "node scripts/check-repository-hygiene.mjs",
|
|
17
18
|
"check:licenses": "node scripts/check-licenses.mjs",
|
|
18
19
|
"dev": "vite --config vite.example.config.ts",
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"test:run": "vitest run",
|
|
27
28
|
"test:licenses": "node --test test/license-gates.node.mjs",
|
|
28
29
|
"test:security": "node --test test/sensitive-data-gates.node.mjs test/package-artifact-gate.node.mjs test/npm-maintainer-gate.node.mjs",
|
|
29
|
-
"verify": "npm run check:hygiene && npm run test:security && npm run test:licenses && npm run check:licenses && npm run lint && npm run test:run && npm run build",
|
|
30
|
+
"verify": "npm run check:hygiene && npm run check:docs && npm run test:security && npm run test:licenses && npm run check:licenses && npm run lint && npm run test:run && npm run build",
|
|
30
31
|
"verify:e2e": "npm run test:e2e",
|
|
31
32
|
"verify:local": "npm run verify && npm run verify:e2e",
|
|
32
33
|
"verify:full": "npm run verify:local && npm run test:perf -- --workers=1",
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
},
|
|
55
56
|
"files": [
|
|
56
57
|
"dist",
|
|
58
|
+
"DESIGN.md",
|
|
57
59
|
"README.md",
|
|
58
60
|
"styles.css",
|
|
59
61
|
"CHANGELOG.md",
|
package/styles.css
CHANGED
|
@@ -302,6 +302,12 @@
|
|
|
302
302
|
padding-left: calc(var(--comins-tree-depth) * 16px);
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
+
.comins-table__tr[data-comins-tree-drop="before"] > td { box-shadow: inset 0 2px var(--comins-table-accent-strong); }
|
|
306
|
+
.comins-table__tr[data-comins-tree-drop="after"] > td { box-shadow: inset 0 -2px var(--comins-table-accent-strong); }
|
|
307
|
+
.comins-table__tr[data-comins-tree-drop="inside"] > td { box-shadow: inset 0 0 0 2px var(--comins-table-accent-strong); }
|
|
308
|
+
.comins-table__tr[data-comins-tree-drop-valid="false"] > td { box-shadow: inset 0 0 0 2px #dc2626; }
|
|
309
|
+
.comins-table__sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
310
|
+
|
|
305
311
|
.comins-tree-expander,
|
|
306
312
|
.comins-tree-expander-spacer {
|
|
307
313
|
flex: 0 0 24px;
|
|
@@ -326,6 +332,7 @@
|
|
|
326
332
|
background: inherit;
|
|
327
333
|
color: inherit;
|
|
328
334
|
font-weight: 600;
|
|
335
|
+
overflow: visible;
|
|
329
336
|
text-align: left;
|
|
330
337
|
}
|
|
331
338
|
|
|
@@ -333,7 +340,10 @@
|
|
|
333
340
|
align-items: center;
|
|
334
341
|
display: flex;
|
|
335
342
|
gap: 4px;
|
|
343
|
+
left: var(--comins-table-cell-padding-x);
|
|
336
344
|
min-width: 0;
|
|
345
|
+
position: sticky;
|
|
346
|
+
width: max-content;
|
|
337
347
|
}
|
|
338
348
|
|
|
339
349
|
.comins-row-group-content {
|
|
@@ -470,6 +480,7 @@
|
|
|
470
480
|
}
|
|
471
481
|
|
|
472
482
|
.comins-table__body-viewport {
|
|
483
|
+
position: relative;
|
|
473
484
|
box-sizing: border-box;
|
|
474
485
|
flex: 1 1 auto;
|
|
475
486
|
min-height: 0;
|
|
@@ -668,6 +679,12 @@
|
|
|
668
679
|
min-width: 0;
|
|
669
680
|
}
|
|
670
681
|
|
|
682
|
+
.comins-table__tr[data-comins-row-auto-height="true"] > .comins-table__td {
|
|
683
|
+
height: auto;
|
|
684
|
+
padding-top: var(--comins-table-cell-padding-y);
|
|
685
|
+
padding-bottom: var(--comins-table-cell-padding-y);
|
|
686
|
+
}
|
|
687
|
+
|
|
671
688
|
.comins-table__td {
|
|
672
689
|
background: var(--comins-table-cell-background);
|
|
673
690
|
border-bottom: 1px solid var(--comins-table-row-border);
|