@affino/datagrid-vue-app 0.1.62 → 0.1.64

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.
Files changed (39) hide show
  1. package/README.md +16 -0
  2. package/dist/advanced-filter.js +1 -1
  3. package/dist/aggregations.js +1 -1
  4. package/dist/chunks/{DataGridAdvancedFilterPopover-C_MjEKFo.js → DataGridAdvancedFilterPopover-p_hnZLCA.js} +1 -1
  5. package/dist/chunks/{DataGridAdvancedFilterPopover.vue_vue_type_script_setup_true_lang-DxZakgyj.js → DataGridAdvancedFilterPopover.vue_vue_type_script_setup_true_lang-AVmOe3Bv.js} +1 -1
  6. package/dist/chunks/{DataGridAggregationsPopover-C8kdwv0O.js → DataGridAggregationsPopover-Bzbn6Nuy.js} +1 -1
  7. package/dist/chunks/{DataGridAggregationsPopover.vue_vue_type_script_setup_true_lang-t6v8MqIT.js → DataGridAggregationsPopover.vue_vue_type_script_setup_true_lang-TgxL5evy.js} +1 -1
  8. package/dist/chunks/DataGridFilterableCombobox.vue_vue_type_script_setup_true_lang-CpC_nuMk.js +419 -0
  9. package/dist/chunks/DataGridGanttStageEntry-DGDFifU8.js +12216 -0
  10. package/dist/chunks/useDataGridAppRowModel-DF6K2Rd8.js +5409 -0
  11. package/dist/gantt.js +1 -1
  12. package/dist/gestures/dataGridTouchPanGuard.d.ts +1 -0
  13. package/dist/index.js +597 -573
  14. package/dist/internal.js +3 -3
  15. package/dist/overlays/DataGridCellComboboxEditor.vue.d.ts +1 -0
  16. package/dist/perf/dataGridPerfTrace.d.ts +7 -0
  17. package/dist/stage/DataGridTableStageCenterPane.vue.d.ts +9 -0
  18. package/dist/stage/DataGridTableStageHeader.vue.d.ts +11 -1
  19. package/dist/stage/DataGridTableStagePinnedPane.vue.d.ts +10 -1
  20. package/dist/stage/dataGridMouseEventGuards.d.ts +17 -0
  21. package/dist/stage/dataGridTableStage.types.d.ts +4 -1
  22. package/dist/stage/dataGridTableStageBody.types.d.ts +15 -1
  23. package/dist/stage/useDataGridStageCellRendering.d.ts +4 -1
  24. package/dist/stage/useDataGridStageCellState.d.ts +2 -0
  25. package/dist/stage/useDataGridStageChromeCanvas.d.ts +1 -0
  26. package/dist/stage/useDataGridStageFocusRuntime.d.ts +3 -0
  27. package/dist/stage/useDataGridStageOverlays.d.ts +1 -0
  28. package/dist/stage/useDataGridStagePointerInteractions.d.ts +6 -0
  29. package/dist/stage/useDataGridStageRenderApis.d.ts +15 -1
  30. package/dist/stage/useDataGridStageRenderApis.grouped.d.ts +16 -2
  31. package/dist/stage/useDataGridStageRowIndex.d.ts +1 -0
  32. package/dist/stage/useDataGridStageViewportRuntime.d.ts +8 -2
  33. package/dist/stage/useDataGridTableStageHistory.d.ts +3 -0
  34. package/dist/stage/useDataGridTableStageRuntime.d.ts +1 -0
  35. package/dist/stage/useDataGridTableStageScrollSync.d.ts +8 -0
  36. package/package.json +3 -3
  37. package/dist/chunks/DataGridFilterableCombobox.vue_vue_type_script_setup_true_lang-xry4J3Lx.js +0 -389
  38. package/dist/chunks/DataGridGanttStageEntry-B-Igcclh.js +0 -11013
  39. package/dist/chunks/useDataGridAppRowModel-B8E788Tu.js +0 -5278
package/dist/internal.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { d as t, r } from "./chunks/dataGridOverlayThemeVars-vzY74EIz.js";
2
2
  import { buildDataGridChromePaneModel as i, buildDataGridChromeRenderModel as d } from "@affino/datagrid-chrome";
3
- import { D as l, a as n, r as G, b as D, c as S, d as u, u as g, e as b, f as T } from "./chunks/useDataGridAppRowModel-B8E788Tu.js";
4
- import { _ as p, a as c, c as R, b as x, d as C, p as f, u as v, e as M, f as h, g as w, h as y, i as F, j as P, k as A, l as O, m as _, n as E, o as H } from "./chunks/DataGridGanttStageEntry-B-Igcclh.js";
5
- import { _ as V } from "./chunks/DataGridAdvancedFilterPopover.vue_vue_type_script_setup_true_lang-DxZakgyj.js";
3
+ import { D as l, a as n, r as G, b as D, c as S, d as u, u as g, e as b, f as T } from "./chunks/useDataGridAppRowModel-DF6K2Rd8.js";
4
+ import { _ as p, a as c, c as R, b as x, d as C, p as f, u as v, e as M, f as h, g as w, h as y, i as F, j as P, k as A, l as O, m as _, n as E, o as H } from "./chunks/DataGridGanttStageEntry-DGDFifU8.js";
5
+ import { _ as V } from "./chunks/DataGridAdvancedFilterPopover.vue_vue_type_script_setup_true_lang-AVmOe3Bv.js";
6
6
  import { _ as k } from "./chunks/DataGridFindReplacePopover.vue_vue_type_script_setup_true_lang-BEVRKG31.js";
7
7
  import { buildDataGridTimelineRenderModels as B, normalizeDataGridGanttOptions as I, resolveDataGridTimelineRange as L } from "@affino/datagrid-gantt";
8
8
  export {
@@ -7,6 +7,7 @@ type __VLS_Props = {
7
7
  placeholder?: string;
8
8
  initialFilter?: string;
9
9
  openOnMount?: boolean;
10
+ disabled?: boolean;
10
11
  };
11
12
  declare const __VLS_export: import("vue").DefineComponent<__VLS_TypePropsToOption<__VLS_Props>, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
13
  commit: (value: string, target?: CommitTarget | undefined) => void;
@@ -5,6 +5,12 @@ export type DataGridPerfSample = {
5
5
  totalMs: number;
6
6
  [key: string]: string | number;
7
7
  };
8
+ export type DataGridPerfSampleInput = {
9
+ scope: string;
10
+ totalMs: number;
11
+ ts?: number;
12
+ [key: string]: string | number | undefined;
13
+ };
8
14
  export type DataGridPerfSummary = {
9
15
  scope: string;
10
16
  count: number;
@@ -25,3 +31,4 @@ export declare function resolveDataGridPerfNow(): number;
25
31
  export declare function createDataGridPerfStore(): DataGridPerfStore;
26
32
  export declare function resolveDataGridPerfStore(): DataGridPerfStore | null;
27
33
  export declare function recordDataGridPerfSample(sample: DataGridPerfSample): void;
34
+ export declare function recordDataGridPerfSampleIfEnabled(sample: DataGridPerfSampleInput): void;
@@ -74,6 +74,10 @@ declare const __VLS_export: import("vue").DefineComponent<{
74
74
  type: PropType<((layer: string, value: string) => void) | undefined>;
75
75
  default: undefined;
76
76
  };
77
+ perfTraceEnabled: {
78
+ type: BooleanConstructor;
79
+ default: boolean;
80
+ };
77
81
  renderApi: {
78
82
  type: PropType<DataGridTableStageCenterPaneRenderApi>;
79
83
  required: true;
@@ -151,6 +155,10 @@ declare const __VLS_export: import("vue").DefineComponent<{
151
155
  type: PropType<((layer: string, value: string) => void) | undefined>;
152
156
  default: undefined;
153
157
  };
158
+ perfTraceEnabled: {
159
+ type: BooleanConstructor;
160
+ default: boolean;
161
+ };
154
162
  renderApi: {
155
163
  type: PropType<DataGridTableStageCenterPaneRenderApi>;
156
164
  required: true;
@@ -170,6 +178,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
170
178
  handleWheel: (event: WheelEvent) => void;
171
179
  handleContextMenu: (event: MouseEvent) => void;
172
180
  overlayLanes: readonly DataGridTableStageOverlayLane[];
181
+ perfTraceEnabled: boolean;
173
182
  }, {}>;
174
183
  declare const _default: typeof __VLS_export;
175
184
  export default _default;
@@ -36,6 +36,10 @@ declare const __VLS_base: import("vue").DefineComponent<{
36
36
  type: BooleanConstructor;
37
37
  required: true;
38
38
  };
39
+ isCoarsePointer: {
40
+ type: BooleanConstructor;
41
+ default: boolean;
42
+ };
39
43
  onLinkedViewportWheel: {
40
44
  type: PropType<(event: WheelEvent) => void>;
41
45
  required: true;
@@ -69,11 +73,17 @@ declare const __VLS_base: import("vue").DefineComponent<{
69
73
  type: BooleanConstructor;
70
74
  required: true;
71
75
  };
76
+ isCoarsePointer: {
77
+ type: BooleanConstructor;
78
+ default: boolean;
79
+ };
72
80
  onLinkedViewportWheel: {
73
81
  type: PropType<(event: WheelEvent) => void>;
74
82
  required: true;
75
83
  };
76
- }>>, {}, {}>;
84
+ }>>, {
85
+ isCoarsePointer: boolean;
86
+ }, {}>;
77
87
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
78
88
  declare const _default: typeof __VLS_export;
79
89
  export default _default;
@@ -1,4 +1,4 @@
1
- import type { PropType } from "vue";
1
+ import { type PropType } from "vue";
2
2
  import type { DataGridTableStagePinnedPaneProps, DataGridTableStagePinnedPaneRenderApi } from "./dataGridTableStageBody.types";
3
3
  declare var __VLS_1: {};
4
4
  type __VLS_Slots = {} & {
@@ -17,6 +17,10 @@ declare const __VLS_base: import("vue").DefineComponent<{
17
17
  type: PropType<(event: MouseEvent) => void>;
18
18
  default: undefined;
19
19
  };
20
+ perfTraceEnabled: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
20
24
  }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
21
25
  pane: {
22
26
  type: PropType<DataGridTableStagePinnedPaneProps>;
@@ -30,8 +34,13 @@ declare const __VLS_base: import("vue").DefineComponent<{
30
34
  type: PropType<(event: MouseEvent) => void>;
31
35
  default: undefined;
32
36
  };
37
+ perfTraceEnabled: {
38
+ type: BooleanConstructor;
39
+ default: boolean;
40
+ };
33
41
  }>>, {
34
42
  handleContextMenu: (event: MouseEvent) => void;
43
+ perfTraceEnabled: boolean;
35
44
  }, {}>;
36
45
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
46
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,17 @@
1
+ export type DataGridInteractionMode = "desktop" | "touch" | "auto";
2
+ export interface DataGridInteractionModeInput {
3
+ interactionMode?: DataGridInteractionMode;
4
+ isCoarsePointer?: boolean;
5
+ }
6
+ export interface DataGridMouseEventPolicy {
7
+ interactionMode: Exclude<DataGridInteractionMode, "auto">;
8
+ touchGenerated: boolean;
9
+ nativeScrollPriority: boolean;
10
+ preventDefaultAllowed: boolean;
11
+ }
12
+ export declare function isTouchGeneratedMouseEvent(event: MouseEvent): boolean;
13
+ export declare function resolveDataGridInteractionMode(input?: DataGridInteractionModeInput): Exclude<DataGridInteractionMode, "auto">;
14
+ export declare function shouldPrioritizeNativeScrollForMouseDown(event: MouseEvent, input?: DataGridInteractionModeInput): boolean;
15
+ export declare function shouldPrioritizeNativeScrollForMouseEvent(event: MouseEvent, input?: DataGridInteractionModeInput): boolean;
16
+ export declare function resolveDataGridMouseEventPolicy(event: MouseEvent, input?: DataGridInteractionModeInput): DataGridMouseEventPolicy;
17
+ export declare function shouldAllowGridPreventDefaultForMouseEvent(event: MouseEvent, input?: DataGridInteractionModeInput): boolean;
@@ -158,6 +158,9 @@ export interface DataGridTableStageEditingSection<TRow extends Record<string, un
158
158
  editingCellValue: string;
159
159
  editingCellInitialFilter: string;
160
160
  editingCellOpenOnMount: boolean;
161
+ editingCellValidationMessage: string | null;
162
+ editingCellPending: boolean;
163
+ editingCellRejectedReason: string | null;
161
164
  isEditingCell: (row: DataGridTableRow<TRow>, columnKey: string) => boolean;
162
165
  startInlineEdit: (row: DataGridTableRow<TRow>, columnKey: string, options?: {
163
166
  draftValue?: string;
@@ -216,7 +219,7 @@ interface DataGridTableStageBindingsSource<TRow extends Record<string, unknown>>
216
219
  }
217
220
  export interface UseDataGridTableStageBindingsOptions<TRow extends Record<string, unknown>> extends Omit<{
218
221
  [K in keyof DataGridTableStageBindingsSource<TRow>]: DataGridMaybeRef<DataGridTableStageBindingsSource<TRow>[K]>;
219
- }, "editingCellValue" | "headerViewportRef" | "bodyViewportRef" | "updateEditingCellValue"> {
222
+ }, "editingCellValue" | "headerViewportRef" | "bodyViewportRef"> {
220
223
  editingCellValueRef: Ref<string>;
221
224
  headerViewportRef: Ref<HTMLElement | null>;
222
225
  bodyViewportRef: Ref<HTMLElement | null>;
@@ -49,6 +49,7 @@ export interface DataGridTableStageBodyRenderApiBase {
49
49
  resolveCellCustomStyle: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => CSSProperties;
50
50
  columnIndexByKey: (columnKey: string) => number;
51
51
  cellTabIndex: (rowOffset: number, columnIndex: number) => number;
52
+ cellAriaSelected: (rowOffset: number, columnIndex: number) => "true" | "false";
52
53
  cellAriaRole: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => string | undefined;
53
54
  cellAriaChecked: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
54
55
  cellAriaPressed: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
@@ -59,12 +60,25 @@ export interface DataGridTableStageBodyRenderApiBase {
59
60
  handleCellMouseMove: (event: MouseEvent, rowOffset: number, columnIndex: number) => void;
60
61
  clearRangeMoveHandleHover: () => void;
61
62
  handleCellKeydown: (event: KeyboardEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
62
- startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number) => void;
63
+ startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number, event?: MouseEvent) => void;
64
+ handleTouchSelectionHandleMouseDown: (event: MouseEvent) => void;
65
+ handleTouchSelectionHandleTouchStart: (event: TouchEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
66
+ handleTouchSelectionHandleTouchMove: (event: TouchEvent) => void;
67
+ handleTouchSelectionHandleTouchEnd: (event: TouchEvent) => void;
68
+ handleTouchRangeMoveHandleMouseDown: (event: MouseEvent) => void;
69
+ handleTouchRangeMoveHandleTouchStart: (event: TouchEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
70
+ handleTouchRangeMoveHandleTouchMove: (event: TouchEvent) => void;
71
+ handleTouchRangeMoveHandleTouchEnd: (event: TouchEvent) => void;
63
72
  isCellEditableSafe: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
64
73
  isFillHandleCellSafe: (rowOffset: number, columnIndex: number) => boolean;
74
+ isTouchSelectionAnchorHandleCell: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => boolean;
75
+ isTouchRangeMoveHandleCell: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => boolean;
65
76
  isEditingCellSafe: (row: DataGridTableStageBodyRow, columnKey: string) => boolean;
66
77
  handleFillHandleMouseDown: (event: MouseEvent) => void;
67
78
  handleFillHandleDoubleClick: (event: MouseEvent) => void;
79
+ handleFillHandleTouchStart: (event: TouchEvent) => void;
80
+ handleFillHandleTouchMove: (event: TouchEvent) => void;
81
+ handleFillHandleTouchEnd: (event: TouchEvent) => void;
68
82
  isSelectEditorCell: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
69
83
  resolveSelectEditorValue: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => string;
70
84
  resolveSelectEditorOptions: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => readonly DataGridTableStageSelectEditorOption[];
@@ -14,9 +14,12 @@ export interface UseDataGridStageCellRenderingOptions {
14
14
  isCellEditableSafe: (row: DataGridTableRow<Record<string, unknown>>, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
15
15
  isEditingCellSafe: (row: DataGridTableRow<Record<string, unknown>>, columnKey: string) => boolean;
16
16
  columnIndexByKey: (columnKey: string) => number;
17
+ suppressInlineEditStart?: Readonly<Ref<boolean>>;
18
+ preferLightweightCellRendering?: Readonly<Ref<boolean>>;
19
+ perfTraceEnabled?: boolean;
17
20
  }
18
21
  export interface UseDataGridStageCellRenderingResult {
19
- startInlineEditIfAllowed: (row: DataGridTableRow<Record<string, unknown>>, column: DataGridTableStageBodyColumn, rowOffset: number) => void;
22
+ startInlineEditIfAllowed: (row: DataGridTableRow<Record<string, unknown>>, column: DataGridTableStageBodyColumn, rowOffset: number, event?: MouseEvent) => void;
20
23
  resolveCellEditorMode: (row: DataGridTableRow<Record<string, unknown>>, column: DataGridTableStageBodyColumn) => "none" | "text" | "select" | "date" | "datetime";
21
24
  resolveSelectEditorOptions: (row: DataGridTableRow<Record<string, unknown>>, column: DataGridTableStageBodyColumn) => readonly DataGridTableStageSelectEditorOption[];
22
25
  resolveSelectEditorOptionsLoader: (row: DataGridTableRow<Record<string, unknown>>, column: DataGridTableStageBodyColumn) => DataGridTableStageSelectEditorOptionsLoader | undefined;
@@ -8,6 +8,7 @@ export interface UseDataGridStageCellStateOptions {
8
8
  isCellEditableSafe: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
9
9
  isEditingCellSafe: (row: DataGridTableStageBodyRow, columnKey: string) => boolean;
10
10
  resolveCellEditorMode: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => "none" | "text" | "select" | "date" | "datetime";
11
+ isCellSelectedSafe: (rowOffset: number, columnIndex: number) => boolean;
11
12
  isVisualSelectionAnchorCell: (rowOffset: number, columnIndex: number) => boolean;
12
13
  shouldHighlightSelectedCellVisual: (rowOffset: number, columnIndex: number) => boolean;
13
14
  isRangeMoveHandleHoverCell: (rowOffset: number, columnIndex: number) => boolean;
@@ -18,6 +19,7 @@ export interface UseDataGridStageCellStateOptions {
18
19
  export interface UseDataGridStageCellStateResult {
19
20
  builtInCellClasses: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => Record<string, boolean>;
20
21
  cellStateClasses: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => Record<string, boolean>;
22
+ cellAriaSelected: (rowOffset: number, columnIndex: number) => "true" | "false";
21
23
  cellAriaRole: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => string | undefined;
22
24
  cellAriaChecked: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
23
25
  cellAriaPressed: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
@@ -27,6 +27,7 @@ export interface UseDataGridStageChromeCanvasOptions {
27
27
  headerChromeRenderModel: ComputedRef<DataGridChromeRenderModel>;
28
28
  pinnedBottomChromeRenderModel: ComputedRef<DataGridChromeRenderModel>;
29
29
  hasPivotHeaderGroups: ComputedRef<boolean>;
30
+ perfTraceEnabled?: boolean;
30
31
  }
31
32
  export interface UseDataGridStageChromeCanvasResult {
32
33
  syncBodyViewportMetrics: () => void;
@@ -13,6 +13,9 @@ export interface UseDataGridStageFocusRuntimeOptions {
13
13
  resolveAbsoluteRowIndex: (row: DataGridTableStageBodyRow, rowOffset: number) => number;
14
14
  isSelectionAnchorCellSafe: (rowOffset: number, columnIndex: number) => boolean;
15
15
  isCellEditableSafe: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
16
+ isBodyViewportScrolling?: Readonly<Ref<boolean>>;
17
+ runWhenBodyViewportScrollIdle?: (callback: () => void) => void;
18
+ shouldRestoreAnchorFocus?: () => boolean;
16
19
  }
17
20
  export interface UseDataGridStageFocusRuntimeResult {
18
21
  isVisibleCellEditableByAbsoluteCoord: (rowIndex: number, columnIndex: number) => boolean;
@@ -24,6 +24,7 @@ export interface UseDataGridStageOverlaysOptions {
24
24
  resolveVisibleRangeBounds: (range: DataGridOverlayRange | null) => DataGridStageOverlayBounds | null;
25
25
  resolvePinnedBottomVisibleRangeBounds: (range: DataGridOverlayRange | null) => DataGridStageOverlayBounds | null;
26
26
  customOverlays: ComputedRef<readonly DataGridTableStageCustomOverlay[]>;
27
+ perfTraceEnabled?: boolean;
27
28
  }
28
29
  export interface UseDataGridStageOverlaysResult {
29
30
  leftSelectionOverlaySegments: ComputedRef<readonly DataGridTableStageOverlaySegment[]>;
@@ -2,6 +2,7 @@ import { type Ref } from "vue";
2
2
  import type { DataGridTableMode } from "./dataGridTableStage.types";
3
3
  import type { DataGridOverlayRange } from "@affino/datagrid-vue";
4
4
  import type { DataGridTableStageBodyColumn, DataGridTableStageBodyRow } from "./dataGridTableStageBody.types";
5
+ import { type DataGridInteractionModeInput } from "./dataGridMouseEventGuards";
5
6
  export interface UseDataGridStagePointerInteractionsOptions {
6
7
  mode: Readonly<Ref<DataGridTableMode>>;
7
8
  selection: Readonly<Ref<{
@@ -15,6 +16,8 @@ export interface UseDataGridStagePointerInteractionsOptions {
15
16
  displayRows: Readonly<Ref<readonly DataGridTableStageBodyRow[]>>;
16
17
  viewportRowStart: Readonly<Ref<number>>;
17
18
  fillActionMenuOpen: Ref<boolean>;
19
+ interactionModeInput?: Readonly<Ref<DataGridInteractionModeInput>>;
20
+ suppressHoverInteractions?: Readonly<Ref<boolean>>;
18
21
  isCellSelectedSafe: (rowOffset: number, columnIndex: number) => boolean;
19
22
  isCellEditableSafe: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
20
23
  isCellOnSelectionEdgeSafe: (rowOffset: number, columnIndex: number, edge: "top" | "right" | "bottom" | "left") => boolean;
@@ -25,6 +28,9 @@ export interface UseDataGridStagePointerInteractionsResult {
25
28
  handleCellMouseMove: (event: MouseEvent, rowOffset: number, columnIndex: number) => void;
26
29
  handleFillHandleMouseDown: (event: MouseEvent) => void;
27
30
  handleFillHandleDoubleClick: (event: MouseEvent) => void;
31
+ handleFillHandleTouchStart: (event: TouchEvent) => void;
32
+ handleFillHandleTouchMove: (event: TouchEvent) => void;
33
+ handleFillHandleTouchEnd: (event: TouchEvent) => void;
28
34
  resetGlobalFillDragCursor: () => void;
29
35
  }
30
36
  export declare function useDataGridStagePointerInteractions(options: UseDataGridStagePointerInteractionsOptions): UseDataGridStagePointerInteractionsResult;
@@ -62,6 +62,8 @@ export interface UseDataGridStageRenderApisOptions {
62
62
  isCellEditableSafe: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
63
63
  isEditingCellSafe: (row: DataGridTableStageBodyRow, columnKey: string) => boolean;
64
64
  isCellSelectedSafe: (rowOffset: number, columnIndex: number) => boolean;
65
+ isTouchSelectionAnchorHandleCell: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => boolean;
66
+ isTouchRangeMoveHandleCell: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => boolean;
65
67
  isSelectionAnchorCellSafe: (rowOffset: number, columnIndex: number) => boolean;
66
68
  shouldHighlightSelectedCellVisual: (rowOffset: number, columnIndex: number) => boolean;
67
69
  isCellInFillPreviewSafe: (rowOffset: number, columnIndex: number) => boolean;
@@ -96,6 +98,7 @@ export interface UseDataGridStageRenderApisOptions {
96
98
  bodyCellSelectionStyle: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number, columnIndex: number) => CSSProperties;
97
99
  resolveCellCustomStyle: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => CSSProperties;
98
100
  cellTabIndex: (rowOffset: number, columnIndex: number) => number;
101
+ cellAriaSelected: (rowOffset: number, columnIndex: number) => "true" | "false";
99
102
  cellAriaRole: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => string | undefined;
100
103
  cellAriaChecked: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
101
104
  cellAriaPressed: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
@@ -106,9 +109,20 @@ export interface UseDataGridStageRenderApisOptions {
106
109
  handleCellMouseMove: (event: MouseEvent, rowOffset: number, columnIndex: number) => void;
107
110
  clearRangeMoveHandleHover: () => void;
108
111
  handleCellKeydown: (event: KeyboardEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
109
- startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number) => void;
112
+ startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number, event?: MouseEvent) => void;
113
+ handleTouchSelectionHandleMouseDown: (event: MouseEvent) => void;
114
+ handleTouchSelectionHandleTouchStart: (event: TouchEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
115
+ handleTouchSelectionHandleTouchMove: (event: TouchEvent) => void;
116
+ handleTouchSelectionHandleTouchEnd: (event: TouchEvent) => void;
117
+ handleTouchRangeMoveHandleMouseDown: (event: MouseEvent) => void;
118
+ handleTouchRangeMoveHandleTouchStart: (event: TouchEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
119
+ handleTouchRangeMoveHandleTouchMove: (event: TouchEvent) => void;
120
+ handleTouchRangeMoveHandleTouchEnd: (event: TouchEvent) => void;
110
121
  handleFillHandleMouseDown: (event: MouseEvent) => void;
111
122
  handleFillHandleDoubleClick: (event: MouseEvent) => void;
123
+ handleFillHandleTouchStart: (event: TouchEvent) => void;
124
+ handleFillHandleTouchMove: (event: TouchEvent) => void;
125
+ handleFillHandleTouchEnd: (event: TouchEvent) => void;
112
126
  isSelectEditorCell: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
113
127
  resolveSelectEditorValue: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => string;
114
128
  resolveSelectEditorOptions: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => readonly DataGridTableStageSelectEditorOption[];
@@ -40,6 +40,8 @@ type CellRuntime = Readonly<Ref<{
40
40
  isCellEditableSafe: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => boolean;
41
41
  isEditingCellSafe: (row: DataGridTableStageBodyRow, columnKey: string) => boolean;
42
42
  isCellSelectedSafe: (rowOffset: number, columnIndex: number) => boolean;
43
+ isTouchSelectionAnchorHandleCell: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => boolean;
44
+ isTouchRangeMoveHandleCell: (row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => boolean;
43
45
  isSelectionAnchorCellSafe: (rowOffset: number, columnIndex: number) => boolean;
44
46
  shouldHighlightSelectedCellVisual: (rowOffset: number, columnIndex: number) => boolean;
45
47
  isCellInFillPreviewSafe: (rowOffset: number, columnIndex: number) => boolean;
@@ -56,6 +58,7 @@ type CellRuntime = Readonly<Ref<{
56
58
  bodyCellSelectionStyle: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number, columnIndex: number) => CSSProperties;
57
59
  resolveCellCustomStyle: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => CSSProperties;
58
60
  cellTabIndex: (rowOffset: number, columnIndex: number) => number;
61
+ cellAriaSelected: (rowOffset: number, columnIndex: number) => "true" | "false";
59
62
  cellAriaRole: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => string | undefined;
60
63
  cellAriaChecked: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
61
64
  cellAriaPressed: (row: DataGridTableStageBodyRow, rowOffset: number, column: DataGridTableStageBodyColumn, columnIndex: number) => "true" | "false" | "mixed" | undefined;
@@ -66,9 +69,20 @@ type CellRuntime = Readonly<Ref<{
66
69
  handleCellMouseMove: (event: MouseEvent, rowOffset: number, columnIndex: number) => void;
67
70
  clearRangeMoveHandleHover: () => void;
68
71
  handleCellKeydown: (event: KeyboardEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
69
- startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number) => void;
72
+ startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number, event?: MouseEvent) => void;
73
+ handleTouchSelectionHandleMouseDown: (event: MouseEvent) => void;
74
+ handleTouchSelectionHandleTouchStart: (event: TouchEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
75
+ handleTouchSelectionHandleTouchMove: (event: TouchEvent) => void;
76
+ handleTouchSelectionHandleTouchEnd: (event: TouchEvent) => void;
77
+ handleTouchRangeMoveHandleMouseDown: (event: MouseEvent) => void;
78
+ handleTouchRangeMoveHandleTouchStart: (event: TouchEvent, row: DataGridTableStageBodyRow, rowOffset: number, columnIndex: number) => void;
79
+ handleTouchRangeMoveHandleTouchMove: (event: TouchEvent) => void;
80
+ handleTouchRangeMoveHandleTouchEnd: (event: TouchEvent) => void;
70
81
  handleFillHandleMouseDown: (event: MouseEvent) => void;
71
82
  handleFillHandleDoubleClick: (event: MouseEvent) => void;
83
+ handleFillHandleTouchStart: (event: TouchEvent) => void;
84
+ handleFillHandleTouchMove: (event: TouchEvent) => void;
85
+ handleFillHandleTouchEnd: (event: TouchEvent) => void;
72
86
  shouldRenderCheckboxCell: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => boolean;
73
87
  checkboxIndicatorClass: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => Record<string, boolean>;
74
88
  checkboxIndicatorMarkClass: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => Record<string, boolean>;
@@ -100,7 +114,7 @@ type EditorRuntime = Readonly<Ref<{
100
114
  readDisplayCell: (row: DataGridTableStageBodyRow, columnKey: string) => string;
101
115
  }>>;
102
116
  editing: Readonly<Ref<DataGridTableStageEditingSection<Record<string, unknown>>>>;
103
- startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number) => void;
117
+ startInlineEditIfAllowed: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn, rowOffset: number, event?: MouseEvent) => void;
104
118
  resolveCellEditorMode: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => "none" | "text" | "select" | "date" | "datetime";
105
119
  resolveSelectEditorOptions: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => readonly DataGridTableStageSelectEditorOption[];
106
120
  resolveSelectEditorOptionsLoader: (row: DataGridTableStageBodyRow, column: DataGridTableStageBodyColumn) => DataGridTableStageSelectEditorOptionsLoader | undefined;
@@ -7,6 +7,7 @@ export interface UseDataGridStageRowIndexOptions {
7
7
  layout: Readonly<Ref<DataGridTableStageLayoutSection>>;
8
8
  viewportRowStart: Readonly<Ref<number>>;
9
9
  selectionRange: Readonly<Ref<DataGridOverlayRange | null>>;
10
+ selectionRanges?: Readonly<Ref<readonly DataGridOverlayRange[]>>;
10
11
  visibleColumns: Readonly<Ref<readonly DataGridTableStageBodyColumn[]>>;
11
12
  isHoveredRow: (row: DataGridTableStageBodyRow, rowOffset: number) => boolean;
12
13
  isStripedRow: (row: DataGridTableStageBodyRow, rowOffset: number) => boolean;
@@ -1,11 +1,12 @@
1
1
  import { type ComponentPublicInstance, type Ref } from "vue";
2
2
  import type { DataGridTableStageViewportSection } from "./dataGridTableStage.types";
3
+ type GridChromeRedrawMode = "full" | "center-scroll";
3
4
  export interface UseDataGridStageViewportRuntimeSyncers {
4
5
  syncBodyViewportMetrics: () => void;
5
6
  syncPinnedBottomViewportMetrics: () => void;
6
7
  syncPinnedBottomViewportScrollLeft: () => void;
7
- scheduleGridChromeRedraw: (mode?: "full" | "center-scroll") => void;
8
- flushGridChromeRedraw: (mode?: "full" | "center-scroll") => void;
8
+ scheduleGridChromeRedraw: (mode?: GridChromeRedrawMode) => void;
9
+ flushGridChromeRedraw: (mode?: GridChromeRedrawMode) => void;
9
10
  connectGridChromeResizeObserver: () => void;
10
11
  disconnectGridChromeResizeObserver: () => void;
11
12
  }
@@ -15,6 +16,7 @@ export interface UseDataGridStageViewportRuntimeOptions {
15
16
  gridChromeSyncers: Readonly<Ref<UseDataGridStageViewportRuntimeSyncers>>;
16
17
  leftPaneContentRef: Readonly<Ref<HTMLElement | null>>;
17
18
  rightPaneContentRef: Readonly<Ref<HTMLElement | null>>;
19
+ perfTraceEnabled?: boolean;
18
20
  }
19
21
  export interface UseDataGridStageViewportRuntimeResult {
20
22
  bodyViewportEl: Ref<HTMLElement | null>;
@@ -27,6 +29,9 @@ export interface UseDataGridStageViewportRuntimeResult {
27
29
  bodyViewportTopOffset: Ref<number>;
28
30
  headerShellHeight: Ref<number>;
29
31
  headerViewportClientWidth: Ref<number>;
32
+ isBodyViewportScrolling: Ref<boolean>;
33
+ isBodyViewportScrollIdle: Ref<boolean>;
34
+ runWhenBodyViewportScrollIdle: (callback: () => void) => void;
30
35
  captureBodyViewportRef: (value: Element | ComponentPublicInstance | null) => void;
31
36
  capturePinnedBottomViewportRef: (value: Element | ComponentPublicInstance | null) => void;
32
37
  handleCenterViewportScroll: (event: Event) => void;
@@ -35,3 +40,4 @@ export interface UseDataGridStageViewportRuntimeResult {
35
40
  handleBodyViewportWheel: (event: WheelEvent) => void;
36
41
  }
37
42
  export declare function useDataGridStageViewportRuntime(options: UseDataGridStageViewportRuntimeOptions): UseDataGridStageViewportRuntimeResult;
43
+ export {};
@@ -1,3 +1,4 @@
1
+ import type { DataGridAppHistoryRestorationState } from "@affino/datagrid-vue/app";
1
2
  import type { DataGridCopyRange } from "@affino/datagrid-vue/advanced";
2
3
  import type { DataGridHistoryController } from "../dataGridHistory";
3
4
  export interface DataGridTableStageHistoryAdapter {
@@ -27,6 +28,8 @@ export interface UseDataGridTableStageHistoryOptions<TRow extends Record<string,
27
28
  syncViewport: () => void;
28
29
  enabled?: boolean;
29
30
  maxHistoryDepth?: number;
31
+ captureRestorationState?: () => DataGridAppHistoryRestorationState | null;
32
+ applyRestorationState?: (state: DataGridAppHistoryRestorationState) => void | Promise<void>;
30
33
  history?: DataGridTableStageHistoryAdapter;
31
34
  }
32
35
  export interface UseDataGridTableStageHistoryResult extends DataGridHistoryController {
@@ -81,6 +81,7 @@ export interface UseDataGridTableStageRuntimeOptions<TRow extends Record<string,
81
81
  getRow?: DataGridRowModel<TRow>["getRow"];
82
82
  getRowCount?: DataGridRowModel<TRow>["getRowCount"];
83
83
  getRowsInRange?: DataGridRowModel<TRow>["getRowsInRange"];
84
+ getLoadedRowIntervals?: DataGridRowModel<TRow>["getLoadedRowIntervals"];
84
85
  dataSource?: {
85
86
  resolveFillBoundary?: (request: DataGridAppResolveFillBoundaryRequest) => Promise<DataGridAppResolveFillBoundaryResult> | DataGridAppResolveFillBoundaryResult;
86
87
  commitFillOperation?: (request: {
@@ -6,10 +6,18 @@ export interface UseDataGridTableStageScrollSyncOptions {
6
6
  stopColumnResize: () => void;
7
7
  handleInteractionWindowMouseMove: (event: MouseEvent) => void;
8
8
  handleInteractionWindowMouseUp: () => void;
9
+ handleInteractionWindowPointerUp: () => void;
10
+ handleInteractionWindowPointerCancel: () => void;
11
+ handleInteractionWindowBlur: () => void;
12
+ handleInteractionWindowContextMenuCapture: (event: MouseEvent) => boolean;
9
13
  syncViewport: (event: Event) => void;
10
14
  }
11
15
  export interface UseDataGridTableStageScrollSyncResult {
12
16
  handleWindowMouseMove: (event: MouseEvent) => void;
17
+ handleWindowPointerUp: (event: PointerEvent) => void;
18
+ handleWindowPointerCancel: (event: PointerEvent) => void;
19
+ handleWindowBlur: () => void;
20
+ handleWindowContextMenuCapture: (event: MouseEvent) => boolean;
13
21
  handleHeaderWheel: (event: WheelEvent) => void;
14
22
  handleHeaderScroll: (event: Event) => void;
15
23
  handleWindowMouseUp: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@affino/datagrid-vue-app",
3
- "version": "0.1.62",
3
+ "version": "0.1.64",
4
4
  "description": "Declarative Vue DataGrid component for Affino",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -47,8 +47,8 @@
47
47
  "@affino/popover-vue": "^1.1.0",
48
48
  "@affino/datagrid-chrome": "0.1.1",
49
49
  "@affino/datagrid-gantt": "0.1.2",
50
- "@affino/datagrid-vue": "0.3.44",
51
- "@affino/datagrid-theme": "0.2.3"
50
+ "@affino/datagrid-theme": "0.2.3",
51
+ "@affino/datagrid-vue": "0.3.46"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "vue": "^3.3.0"