@affino/datagrid-vue-app 0.1.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.
Files changed (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1062 -0
  3. package/dist/DataGrid.d.ts +430 -0
  4. package/dist/DataGrid.js +565 -0
  5. package/dist/DataGridDefaultRenderer.d.ts +2 -0
  6. package/dist/DataGridDefaultRenderer.js +2 -0
  7. package/dist/DataGridModuleHost.d.ts +2 -0
  8. package/dist/DataGridModuleHost.js +2 -0
  9. package/dist/DataGridRuntimeHost.d.ts +1 -0
  10. package/dist/DataGridRuntimeHost.js +1 -0
  11. package/dist/config/dataGridAdvancedFilter.d.ts +9 -0
  12. package/dist/config/dataGridAdvancedFilter.js +21 -0
  13. package/dist/config/dataGridAggregations.d.ts +17 -0
  14. package/dist/config/dataGridAggregations.js +21 -0
  15. package/dist/config/dataGridColumnLayout.d.ts +9 -0
  16. package/dist/config/dataGridColumnLayout.js +21 -0
  17. package/dist/config/dataGridFormulaOptions.d.ts +25 -0
  18. package/dist/config/dataGridFormulaOptions.js +137 -0
  19. package/dist/config/dataGridPublicProps.d.ts +6 -0
  20. package/dist/config/dataGridPublicProps.js +58 -0
  21. package/dist/config/dataGridSavedView.d.ts +17 -0
  22. package/dist/config/dataGridSavedView.js +73 -0
  23. package/dist/config/dataGridVirtualization.d.ts +14 -0
  24. package/dist/config/dataGridVirtualization.js +32 -0
  25. package/dist/dataGridAdvancedFilter.d.ts +1 -0
  26. package/dist/dataGridAdvancedFilter.js +1 -0
  27. package/dist/dataGridAggregations.d.ts +1 -0
  28. package/dist/dataGridAggregations.js +1 -0
  29. package/dist/dataGridAppContext.d.ts +2 -0
  30. package/dist/dataGridAppContext.js +1 -0
  31. package/dist/dataGridCellComboboxState.d.ts +10 -0
  32. package/dist/dataGridCellComboboxState.js +67 -0
  33. package/dist/dataGridColumnLayout.d.ts +1 -0
  34. package/dist/dataGridColumnLayout.js +1 -0
  35. package/dist/dataGridColumnMenu.d.ts +9 -0
  36. package/dist/dataGridColumnMenu.js +21 -0
  37. package/dist/dataGridEditability.d.ts +9 -0
  38. package/dist/dataGridEditability.js +1 -0
  39. package/dist/dataGridFilterableCombobox.d.ts +1 -0
  40. package/dist/dataGridFilterableCombobox.js +1 -0
  41. package/dist/dataGridFormulaOptions.d.ts +1 -0
  42. package/dist/dataGridFormulaOptions.js +1 -0
  43. package/dist/dataGridGantt.d.ts +3 -0
  44. package/dist/dataGridGantt.js +1 -0
  45. package/dist/dataGridGanttDependencySelection.d.ts +7 -0
  46. package/dist/dataGridGanttDependencySelection.js +46 -0
  47. package/dist/dataGridGanttLabel.d.ts +2 -0
  48. package/dist/dataGridGanttLabel.js +30 -0
  49. package/dist/dataGridGanttSplit.d.ts +20 -0
  50. package/dist/dataGridGanttSplit.js +31 -0
  51. package/dist/dataGridGanttWheel.d.ts +10 -0
  52. package/dist/dataGridGanttWheel.js +30 -0
  53. package/dist/dataGridOverlayThemeVars.d.ts +1 -0
  54. package/dist/dataGridOverlayThemeVars.js +32 -0
  55. package/dist/dataGridPublicProps.d.ts +1 -0
  56. package/dist/dataGridPublicProps.js +1 -0
  57. package/dist/dataGridTableStage.types.d.ts +1 -0
  58. package/dist/dataGridTableStage.types.js +1 -0
  59. package/dist/dataGridTableStageBody.types.d.ts +1 -0
  60. package/dist/dataGridTableStageBody.types.js +1 -0
  61. package/dist/dataGridTableStageContext.d.ts +1 -0
  62. package/dist/dataGridTableStageContext.js +1 -0
  63. package/dist/dataGridTheme.d.ts +1 -0
  64. package/dist/dataGridTheme.js +1 -0
  65. package/dist/dataGridVirtualization.d.ts +1 -0
  66. package/dist/dataGridVirtualization.js +1 -0
  67. package/dist/ensureDataGridAppStyles.d.ts +1 -0
  68. package/dist/ensureDataGridAppStyles.js +1 -0
  69. package/dist/gantt/dataGridGantt.d.ts +3 -0
  70. package/dist/gantt/dataGridGantt.js +1 -0
  71. package/dist/gantt/dataGridGanttDependencySelection.d.ts +7 -0
  72. package/dist/gantt/dataGridGanttDependencySelection.js +46 -0
  73. package/dist/gantt/dataGridGanttLabel.d.ts +2 -0
  74. package/dist/gantt/dataGridGanttLabel.js +30 -0
  75. package/dist/gantt/dataGridGanttSplit.d.ts +20 -0
  76. package/dist/gantt/dataGridGanttSplit.js +31 -0
  77. package/dist/gantt/dataGridGanttWheel.d.ts +10 -0
  78. package/dist/gantt/dataGridGanttWheel.js +30 -0
  79. package/dist/host/DataGridDefaultRenderer.d.ts +298 -0
  80. package/dist/host/DataGridDefaultRenderer.js +1847 -0
  81. package/dist/host/DataGridModuleHost.d.ts +24 -0
  82. package/dist/host/DataGridModuleHost.js +23 -0
  83. package/dist/host/DataGridRuntimeHost.d.ts +104 -0
  84. package/dist/host/DataGridRuntimeHost.js +174 -0
  85. package/dist/index.d.ts +16 -0
  86. package/dist/index.js +4 -0
  87. package/dist/internal.d.ts +21 -0
  88. package/dist/internal.js +14 -0
  89. package/dist/overlays/dataGridCellComboboxState.d.ts +10 -0
  90. package/dist/overlays/dataGridCellComboboxState.js +67 -0
  91. package/dist/overlays/dataGridColumnMenu.d.ts +47 -0
  92. package/dist/overlays/dataGridColumnMenu.js +190 -0
  93. package/dist/overlays/dataGridContextMenu.d.ts +80 -0
  94. package/dist/overlays/dataGridContextMenu.js +218 -0
  95. package/dist/overlays/dataGridFilterableCombobox.d.ts +5 -0
  96. package/dist/overlays/dataGridFilterableCombobox.js +74 -0
  97. package/dist/overlays/dataGridOverlayThemeVars.d.ts +1 -0
  98. package/dist/overlays/dataGridOverlayThemeVars.js +32 -0
  99. package/dist/stage/dataGridTableStage.types.d.ts +160 -0
  100. package/dist/stage/dataGridTableStage.types.js +1 -0
  101. package/dist/stage/dataGridTableStageBody.types.d.ts +105 -0
  102. package/dist/stage/dataGridTableStageBody.types.js +1 -0
  103. package/dist/stage/dataGridTableStageContext.d.ts +45 -0
  104. package/dist/stage/dataGridTableStageContext.js +88 -0
  105. package/dist/stage/useDataGridTableStageBindings.d.ts +11 -0
  106. package/dist/stage/useDataGridTableStageBindings.js +162 -0
  107. package/dist/stage/useDataGridTableStageCellIo.d.ts +28 -0
  108. package/dist/stage/useDataGridTableStageCellIo.js +62 -0
  109. package/dist/stage/useDataGridTableStageColumns.d.ts +22 -0
  110. package/dist/stage/useDataGridTableStageColumns.js +124 -0
  111. package/dist/stage/useDataGridTableStageFillAction.d.ts +19 -0
  112. package/dist/stage/useDataGridTableStageFillAction.js +28 -0
  113. package/dist/stage/useDataGridTableStageHistory.d.ts +31 -0
  114. package/dist/stage/useDataGridTableStageHistory.js +46 -0
  115. package/dist/stage/useDataGridTableStageRowSelection.d.ts +28 -0
  116. package/dist/stage/useDataGridTableStageRowSelection.js +107 -0
  117. package/dist/stage/useDataGridTableStageRuntime.d.ts +92 -0
  118. package/dist/stage/useDataGridTableStageRuntime.js +526 -0
  119. package/dist/stage/useDataGridTableStageScrollSync.d.ts +17 -0
  120. package/dist/stage/useDataGridTableStageScrollSync.js +49 -0
  121. package/dist/stage/useDataGridTableStageViewportKeyboard.d.ts +20 -0
  122. package/dist/stage/useDataGridTableStageViewportKeyboard.js +58 -0
  123. package/dist/stage/useDataGridTableStageVisualSelection.d.ts +24 -0
  124. package/dist/stage/useDataGridTableStageVisualSelection.js +83 -0
  125. package/dist/theme/dataGridTheme.d.ts +6 -0
  126. package/dist/theme/dataGridTheme.js +84 -0
  127. package/dist/theme/ensureDataGridAppStyles.d.ts +1 -0
  128. package/dist/theme/ensureDataGridAppStyles.js +2656 -0
  129. package/dist/useDataGridAppControlledState.d.ts +59 -0
  130. package/dist/useDataGridAppControlledState.js +390 -0
  131. package/dist/useDataGridAppRowModel.d.ts +14 -0
  132. package/dist/useDataGridAppRowModel.js +85 -0
  133. package/dist/useDataGridTableStageBindings.d.ts +1 -0
  134. package/dist/useDataGridTableStageBindings.js +1 -0
  135. package/dist/useDataGridTableStageCellIo.d.ts +28 -0
  136. package/dist/useDataGridTableStageCellIo.js +62 -0
  137. package/dist/useDataGridTableStageColumns.d.ts +21 -0
  138. package/dist/useDataGridTableStageColumns.js +122 -0
  139. package/dist/useDataGridTableStageFillAction.d.ts +19 -0
  140. package/dist/useDataGridTableStageFillAction.js +28 -0
  141. package/dist/useDataGridTableStageHistory.d.ts +31 -0
  142. package/dist/useDataGridTableStageHistory.js +46 -0
  143. package/dist/useDataGridTableStageRowSelection.d.ts +28 -0
  144. package/dist/useDataGridTableStageRowSelection.js +103 -0
  145. package/dist/useDataGridTableStageRuntime.d.ts +1 -0
  146. package/dist/useDataGridTableStageRuntime.js +1 -0
  147. package/dist/useDataGridTableStageScrollSync.d.ts +17 -0
  148. package/dist/useDataGridTableStageScrollSync.js +49 -0
  149. package/dist/useDataGridTableStageViewportKeyboard.d.ts +20 -0
  150. package/dist/useDataGridTableStageViewportKeyboard.js +58 -0
  151. package/dist/useDataGridTableStageVisualSelection.d.ts +24 -0
  152. package/dist/useDataGridTableStageVisualSelection.js +70 -0
  153. package/package.json +55 -0
@@ -0,0 +1,24 @@
1
+ import { type Component, type PropType, type VNode } from "vue";
2
+ export interface DataGridAppToolbarModule {
3
+ key: string;
4
+ component: Component;
5
+ props?: Record<string, unknown>;
6
+ }
7
+ export interface DataGridAppInspectorPanel {
8
+ component: Component;
9
+ props?: Record<string, unknown>;
10
+ }
11
+ declare const _default: import("vue").DefineComponent<{
12
+ modules: {
13
+ type: PropType<readonly DataGridAppToolbarModule[]>;
14
+ default: () => never[];
15
+ };
16
+ }, () => VNode | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
17
+ modules: {
18
+ type: PropType<readonly DataGridAppToolbarModule[]>;
19
+ default: () => never[];
20
+ };
21
+ }>>, {
22
+ modules: readonly DataGridAppToolbarModule[];
23
+ }, {}>;
24
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import { defineComponent, h } from "vue";
2
+ export default defineComponent({
3
+ name: "DataGridModuleHost",
4
+ props: {
5
+ modules: {
6
+ type: Array,
7
+ default: () => [],
8
+ },
9
+ },
10
+ setup(props) {
11
+ return () => {
12
+ if (props.modules.length === 0) {
13
+ return null;
14
+ }
15
+ return h("div", { class: "datagrid-app-toolbar" }, [
16
+ h("div", { class: "datagrid-app-toolbar__group" }, props.modules.map(module => (h(module.component, {
17
+ key: module.key,
18
+ ...(module.props ?? {}),
19
+ })))),
20
+ ]);
21
+ };
22
+ },
23
+ });
@@ -0,0 +1,104 @@
1
+ import { type PropType, type VNode } from "vue";
2
+ import type { CreateDataGridCoreOptions, DataGridApiPluginDefinition, DataGridColumnInput, DataGridCoreServiceRegistry, DataGridPaginationInput, DataGridRowModel } from "@affino/datagrid-vue";
3
+ import { type DataGridThemeProp } from "../theme/dataGridTheme";
4
+ type DataGridRuntimeOverrides = Omit<Partial<DataGridCoreServiceRegistry>, "rowModel" | "columnModel" | "viewport"> & {
5
+ viewport?: DataGridCoreServiceRegistry["viewport"];
6
+ };
7
+ declare const _default: import("vue").DefineComponent<{
8
+ rows: {
9
+ type: PropType<readonly unknown[]>;
10
+ default: () => never[];
11
+ };
12
+ rowModel: {
13
+ type: PropType<DataGridRowModel<unknown> | undefined>;
14
+ default: undefined;
15
+ };
16
+ columns: {
17
+ type: PropType<readonly DataGridColumnInput[]>;
18
+ default: () => never[];
19
+ };
20
+ theme: {
21
+ type: PropType<DataGridThemeProp>;
22
+ default: undefined;
23
+ };
24
+ plugins: {
25
+ type: PropType<readonly DataGridApiPluginDefinition<unknown>[]>;
26
+ default: () => never[];
27
+ };
28
+ services: {
29
+ type: PropType<DataGridRuntimeOverrides | undefined>;
30
+ default: undefined;
31
+ };
32
+ startupOrder: {
33
+ type: PropType<CreateDataGridCoreOptions["startupOrder"] | undefined>;
34
+ default: undefined;
35
+ };
36
+ autoStart: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
40
+ renderMode: {
41
+ type: PropType<"virtualization" | "pagination">;
42
+ default: string;
43
+ };
44
+ pagination: {
45
+ type: PropType<DataGridPaginationInput | null>;
46
+ default: null;
47
+ };
48
+ }, () => VNode, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("cell-change" | "selection-change")[], "cell-change" | "selection-change", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
49
+ rows: {
50
+ type: PropType<readonly unknown[]>;
51
+ default: () => never[];
52
+ };
53
+ rowModel: {
54
+ type: PropType<DataGridRowModel<unknown> | undefined>;
55
+ default: undefined;
56
+ };
57
+ columns: {
58
+ type: PropType<readonly DataGridColumnInput[]>;
59
+ default: () => never[];
60
+ };
61
+ theme: {
62
+ type: PropType<DataGridThemeProp>;
63
+ default: undefined;
64
+ };
65
+ plugins: {
66
+ type: PropType<readonly DataGridApiPluginDefinition<unknown>[]>;
67
+ default: () => never[];
68
+ };
69
+ services: {
70
+ type: PropType<DataGridRuntimeOverrides | undefined>;
71
+ default: undefined;
72
+ };
73
+ startupOrder: {
74
+ type: PropType<CreateDataGridCoreOptions["startupOrder"] | undefined>;
75
+ default: undefined;
76
+ };
77
+ autoStart: {
78
+ type: BooleanConstructor;
79
+ default: boolean;
80
+ };
81
+ renderMode: {
82
+ type: PropType<"virtualization" | "pagination">;
83
+ default: string;
84
+ };
85
+ pagination: {
86
+ type: PropType<DataGridPaginationInput | null>;
87
+ default: null;
88
+ };
89
+ }>> & {
90
+ "onCell-change"?: ((...args: any[]) => any) | undefined;
91
+ "onSelection-change"?: ((...args: any[]) => any) | undefined;
92
+ }, {
93
+ pagination: DataGridPaginationInput | null;
94
+ columns: readonly DataGridColumnInput<unknown>[];
95
+ rows: readonly unknown[];
96
+ rowModel: DataGridRowModel<unknown> | undefined;
97
+ renderMode: "virtualization" | "pagination";
98
+ startupOrder: readonly import("@affino/datagrid-core").DataGridCoreServiceName[] | undefined;
99
+ theme: DataGridThemeProp;
100
+ plugins: readonly DataGridApiPluginDefinition<unknown>[];
101
+ services: DataGridRuntimeOverrides | undefined;
102
+ autoStart: boolean;
103
+ }, {}>;
104
+ export default _default;
@@ -0,0 +1,174 @@
1
+ import { computed, defineComponent, h, mergeProps, onBeforeUnmount, provide, ref, watch, } from "vue";
2
+ import { useDataGridRuntime } from "@affino/datagrid-vue";
3
+ import { applyDataGridTheme, } from "../theme/dataGridTheme";
4
+ import { dataGridAppRootElementKey } from "../dataGridAppContext";
5
+ export default defineComponent({
6
+ name: "DataGridRuntimeHost",
7
+ inheritAttrs: false,
8
+ props: {
9
+ rows: {
10
+ type: Array,
11
+ default: () => [],
12
+ },
13
+ rowModel: {
14
+ type: Object,
15
+ default: undefined,
16
+ },
17
+ columns: {
18
+ type: Array,
19
+ default: () => [],
20
+ },
21
+ theme: {
22
+ type: [String, Object],
23
+ default: undefined,
24
+ },
25
+ plugins: {
26
+ type: Array,
27
+ default: () => [],
28
+ },
29
+ services: {
30
+ type: Object,
31
+ default: undefined,
32
+ },
33
+ startupOrder: {
34
+ type: Array,
35
+ default: undefined,
36
+ },
37
+ autoStart: {
38
+ type: Boolean,
39
+ default: true,
40
+ },
41
+ renderMode: {
42
+ type: String,
43
+ default: "virtualization",
44
+ },
45
+ pagination: {
46
+ type: Object,
47
+ default: null,
48
+ },
49
+ },
50
+ emits: ["cell-change", "selection-change"],
51
+ setup(props, { attrs, slots, emit, expose }) {
52
+ const rootElementRef = ref(null);
53
+ provide(dataGridAppRootElementKey, rootElementRef);
54
+ let themeObserver = null;
55
+ const runtime = useDataGridRuntime({
56
+ rows: computed(() => props.rows),
57
+ rowModel: props.rowModel,
58
+ columns: computed(() => props.columns),
59
+ plugins: props.plugins,
60
+ services: props.services,
61
+ startupOrder: props.startupOrder,
62
+ autoStart: props.autoStart,
63
+ });
64
+ const bodyRuntime = runtime;
65
+ const publicRuntime = {
66
+ api: runtime.api,
67
+ syncBodyRowsInRange: runtime.syncBodyRowsInRange,
68
+ rowPartition: runtime.rowPartition,
69
+ virtualWindow: runtime.virtualWindow,
70
+ columnSnapshot: runtime.columnSnapshot,
71
+ getBodyRowAtIndex: bodyRuntime.getBodyRowAtIndex,
72
+ resolveBodyRowIndexById: bodyRuntime.resolveBodyRowIndexById,
73
+ };
74
+ const syncPaginationState = () => {
75
+ if (props.renderMode === "pagination") {
76
+ const pagination = props.pagination ?? { pageSize: 100, currentPage: 0 };
77
+ runtime.api.rows.setPagination({
78
+ pageSize: Math.max(1, Math.trunc(pagination.pageSize)),
79
+ currentPage: Math.max(0, Math.trunc(pagination.currentPage)),
80
+ });
81
+ return;
82
+ }
83
+ runtime.api.rows.setPagination(null);
84
+ };
85
+ watch(() => props.renderMode, () => {
86
+ syncPaginationState();
87
+ }, { immediate: true });
88
+ watch(() => props.pagination, () => {
89
+ syncPaginationState();
90
+ }, { immediate: true, deep: true });
91
+ if (typeof document !== "undefined") {
92
+ themeObserver = new MutationObserver(() => {
93
+ const rootElement = rootElementRef.value;
94
+ if (!rootElement) {
95
+ return;
96
+ }
97
+ applyDataGridTheme(rootElement, props.theme);
98
+ });
99
+ themeObserver.observe(document.documentElement, {
100
+ attributes: true,
101
+ attributeFilter: ["class", "data-theme"],
102
+ });
103
+ }
104
+ watch([() => props.theme, rootElementRef], () => {
105
+ const rootElement = rootElementRef.value;
106
+ if (!rootElement) {
107
+ return;
108
+ }
109
+ applyDataGridTheme(rootElement, props.theme);
110
+ }, { immediate: true, deep: true });
111
+ const unsubscribeRowsChanged = runtime.api.events.on("rows:changed", payload => {
112
+ emit("cell-change", payload);
113
+ });
114
+ const unsubscribeSelectionChanged = runtime.api.events.on("selection:changed", payload => {
115
+ emit("selection-change", payload);
116
+ });
117
+ onBeforeUnmount(() => {
118
+ unsubscribeRowsChanged();
119
+ unsubscribeSelectionChanged();
120
+ themeObserver?.disconnect();
121
+ themeObserver = null;
122
+ });
123
+ const slotVirtualWindow = computed(() => {
124
+ const window = runtime.virtualWindow.value;
125
+ return {
126
+ ...(window ?? {}),
127
+ rowTotal: window?.rowTotal ?? runtime.rowPartition.value.bodyRowCount,
128
+ colTotal: runtime.columnSnapshot.value.visibleColumns.length,
129
+ };
130
+ });
131
+ expose({
132
+ api: runtime.api,
133
+ core: runtime.core,
134
+ runtime: publicRuntime,
135
+ rowModel: runtime.rowModel,
136
+ columnModel: runtime.columnModel,
137
+ columnSnapshot: runtime.columnSnapshot,
138
+ rowPartition: runtime.rowPartition,
139
+ setRows: runtime.setRows,
140
+ syncBodyRowsInRange: runtime.syncBodyRowsInRange,
141
+ getBodyRowAtIndex: bodyRuntime.getBodyRowAtIndex,
142
+ resolveBodyRowIndexById: bodyRuntime.resolveBodyRowIndexById,
143
+ virtualWindow: runtime.virtualWindow,
144
+ start: runtime.start,
145
+ stop: runtime.stop,
146
+ });
147
+ return () => h("div", mergeProps(attrs, {
148
+ ref: rootElementRef,
149
+ class: "affino-datagrid-app-root",
150
+ style: {
151
+ display: "flex",
152
+ flex: "1 1 auto",
153
+ width: "100%",
154
+ height: "100%",
155
+ minHeight: "0",
156
+ minWidth: "0",
157
+ },
158
+ }), slots.default?.({
159
+ api: runtime.api,
160
+ core: runtime.core,
161
+ runtime: publicRuntime,
162
+ grid: publicRuntime,
163
+ rowModel: runtime.rowModel,
164
+ columnModel: runtime.columnModel,
165
+ columnSnapshot: runtime.columnSnapshot.value,
166
+ rowPartition: runtime.rowPartition.value,
167
+ setRows: runtime.setRows,
168
+ syncBodyRowsInRange: runtime.syncBodyRowsInRange,
169
+ getBodyRowAtIndex: bodyRuntime.getBodyRowAtIndex,
170
+ resolveBodyRowIndexById: bodyRuntime.resolveBodyRowIndexById,
171
+ virtualWindow: slotVirtualWindow.value,
172
+ }) ?? []);
173
+ },
174
+ });
@@ -0,0 +1,16 @@
1
+ import type { Component } from "vue";
2
+ export declare const DataGrid: Component;
3
+ export type { DataGridAppColumnInput, DataGridDeclarativeFormulaOptions, } from "./config/dataGridFormulaOptions";
4
+ export type { DataGridCellEditablePredicate, DataGridCellEditablePredicateContext, } from "./dataGridEditability";
5
+ export type { DataGridThemePreset, DataGridThemeProp, } from "./theme/dataGridTheme";
6
+ export type { DataGridAdvancedFilterOptions, DataGridAdvancedFilterProp, } from "./config/dataGridAdvancedFilter";
7
+ export type { DataGridSavedViewSnapshot, DataGridSavedViewStorageLike, } from "./config/dataGridSavedView";
8
+ export type { DataGridColumnLayoutOptions, DataGridColumnLayoutProp, } from "./config/dataGridColumnLayout";
9
+ export { clearDataGridSavedViewInStorage, migrateDataGridSavedView, parseDataGridSavedView, readDataGridSavedViewFromStorage, serializeDataGridSavedView, writeDataGridSavedViewToStorage, } from "./config/dataGridSavedView";
10
+ export type { DataGridAggregationsOptions, DataGridAggregationsProp, } from "./config/dataGridAggregations";
11
+ export type { DataGridColumnMenuActionKey, DataGridColumnMenuActionOption, DataGridColumnMenuActionOptions, DataGridColumnMenuColumnOptions, DataGridColumnMenuDisabledReasons, DataGridColumnMenuItemKey, DataGridColumnMenuItemLabels, DataGridColumnMenuOptions, DataGridColumnMenuProp, } from "./overlays/dataGridColumnMenu";
12
+ export type { DataGridCellMenuActionKey, DataGridCellMenuActionOption, DataGridCellMenuActionOptions, DataGridCellMenuColumnOptions, DataGridCellMenuDisabledReasons, DataGridCellMenuItemKey, DataGridCellMenuItemLabels, DataGridCellMenuOptions, DataGridCellMenuProp, DataGridRowIndexMenuActionKey, DataGridRowIndexMenuActionOption, DataGridRowIndexMenuActionOptions, DataGridRowIndexMenuDisabledReasons, DataGridRowIndexMenuItemKey, DataGridRowIndexMenuItemLabels, DataGridRowIndexMenuOptions, DataGridRowIndexMenuProp, } from "./overlays/dataGridContextMenu";
13
+ export type { DataGridGroupByProp, DataGridPaginationProp, } from "./config/dataGridPublicProps";
14
+ export type { DataGridVirtualizationOptions, DataGridVirtualizationProp, } from "./config/dataGridVirtualization";
15
+ export type { DataGridAppViewMode, DataGridGanttDependencyRef, DataGridGanttDependencyType, DataGridGanttOptions, DataGridGanttProp, DataGridGanttZoomLevel, DataGridResolvedWorkingCalendar, DataGridTimelineHorizontalAlign, DataGridTimelineLine, DataGridTimelineModel, DataGridTimelineRange, DataGridTimelineRenderModels, DataGridTimelineSegment, DataGridTimelineSpan, DataGridTimelineViewport, DataGridWorkingCalendar, BuildDataGridTimelineRenderModelsInput, ResolveDataGridTimelineRangeInput, } from "./gantt/dataGridGantt";
16
+ export { default } from "./DataGrid";
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import DataGridComponent from "./DataGrid";
2
+ export const DataGrid = DataGridComponent;
3
+ export { clearDataGridSavedViewInStorage, migrateDataGridSavedView, parseDataGridSavedView, readDataGridSavedViewFromStorage, serializeDataGridSavedView, writeDataGridSavedViewToStorage, } from "./config/dataGridSavedView";
4
+ export { default } from "./DataGrid";
@@ -0,0 +1,21 @@
1
+ export { dataGridAppRootElementKey } from "./dataGridAppContext";
2
+ export { buildDataGridChromePaneModel, buildDataGridChromeRenderModel, } from "@affino/datagrid-chrome";
3
+ export { readDataGridOverlayThemeVars } from "./overlays/dataGridOverlayThemeVars";
4
+ export { default as DataGridDefaultRenderer } from "./host/DataGridDefaultRenderer";
5
+ export { default as DataGridGanttStage } from "./gantt/DataGridGanttStage.vue";
6
+ export { default as DataGridModuleHost } from "./host/DataGridModuleHost";
7
+ export { default as DataGridAdvancedFilterPopover } from "./overlays/DataGridAdvancedFilterPopover.vue";
8
+ export { default as DataGridTableStage } from "./stage/DataGridTableStage.vue";
9
+ export { buildDataGridTimelineRenderModels, normalizeDataGridGanttOptions, resolveDataGridTimelineRange, } from "./gantt/dataGridGantt";
10
+ export { resolveDataGridFormulaRowModelOptions } from "./config/dataGridFormulaOptions";
11
+ export { createDataGridTableStageContext, createDataGridTableStageContextFromProps, dataGridTableStageContextKey, provideDataGridTableStageContext, useDataGridTableStageCellsSection, useDataGridTableStageColumnsSection, useDataGridTableStageContext, useDataGridTableStageEditingSection, useDataGridTableStageInteractionSection, useDataGridTableStageLayoutSection, useDataGridTableStageMode, useDataGridTableStageRowHeightMode, useDataGridTableStageRowsSection, useDataGridTableStageSection, useDataGridTableStageSelectionSection, useDataGridTableStageViewportSection, } from "./stage/dataGridTableStageContext";
12
+ export type { AnyDataGridTableStageContext, DataGridTableStageContextSource, DataGridTableStageSectionKey, } from "./stage/dataGridTableStageContext";
13
+ export { useDataGridAppRowModel } from "./useDataGridAppRowModel";
14
+ export { useDataGridTableStageBindings } from "./stage/useDataGridTableStageBindings";
15
+ export { useDataGridTableStageRuntime } from "./stage/useDataGridTableStageRuntime";
16
+ export type { DataGridAppInspectorPanel, DataGridAppToolbarModule, } from "./host/DataGridModuleHost";
17
+ export type { BuildDataGridChromePaneModelInput, BuildDataGridChromeRenderModelInput, DataGridChromeBand, DataGridChromeLine, DataGridChromePaneModel, DataGridChromeRenderModel, DataGridChromeRowBand, DataGridChromeRowMetric, DataGridChromeVisibleRange, } from "@affino/datagrid-chrome";
18
+ export type { DataGridAppClientRowModelOptions, DataGridAppColumnInput, DataGridAppEnterpriseFormulaRuntimeOptions, ResolveDataGridFormulaRowModelOptionsInput, } from "./config/dataGridFormulaOptions";
19
+ export type { DataGridElementRefHandler, DataGridPendingEdge, DataGridTableMode, DataGridTableRow, DataGridTableStageSectionedProps, DataGridTableStageProps, UseDataGridTableStageBindingsOptions, } from "./stage/dataGridTableStage.types";
20
+ export type { DataGridAppViewMode, DataGridGanttBarFrame, DataGridGanttBarLayout, DataGridGanttCriticalTaskNode, DataGridGanttDependencyPath, DataGridGanttDependencyRef, DataGridGanttDependencyType, DataGridGanttHorizontalAlign, DataGridGanttOptions, DataGridGanttProp, DataGridGanttRowEditPatch, DataGridGanttTimelineState, DataGridGanttZoomLevel, DataGridResolvedGanttOptions, DataGridResolvedWorkingCalendar, DataGridTimelineHorizontalAlign, DataGridTimelineLine, DataGridTimelineModel, DataGridTimelineRange, DataGridTimelineRenderModels, DataGridTimelineSegment, DataGridTimelineSpan, DataGridTimelineViewport, DataGridWorkingCalendar, BuildDataGridTimelineRenderModelsInput, ResolveDataGridTimelineRangeInput, } from "./gantt/dataGridGantt";
21
+ export type { UseDataGridAppRowModelOptions, UseDataGridAppRowModelResult, } from "./useDataGridAppRowModel";
@@ -0,0 +1,14 @@
1
+ export { dataGridAppRootElementKey } from "./dataGridAppContext";
2
+ export { buildDataGridChromePaneModel, buildDataGridChromeRenderModel, } from "@affino/datagrid-chrome";
3
+ export { readDataGridOverlayThemeVars } from "./overlays/dataGridOverlayThemeVars";
4
+ export { default as DataGridDefaultRenderer } from "./host/DataGridDefaultRenderer";
5
+ export { default as DataGridGanttStage } from "./gantt/DataGridGanttStage.vue";
6
+ export { default as DataGridModuleHost } from "./host/DataGridModuleHost";
7
+ export { default as DataGridAdvancedFilterPopover } from "./overlays/DataGridAdvancedFilterPopover.vue";
8
+ export { default as DataGridTableStage } from "./stage/DataGridTableStage.vue";
9
+ export { buildDataGridTimelineRenderModels, normalizeDataGridGanttOptions, resolveDataGridTimelineRange, } from "./gantt/dataGridGantt";
10
+ export { resolveDataGridFormulaRowModelOptions } from "./config/dataGridFormulaOptions";
11
+ export { createDataGridTableStageContext, createDataGridTableStageContextFromProps, dataGridTableStageContextKey, provideDataGridTableStageContext, useDataGridTableStageCellsSection, useDataGridTableStageColumnsSection, useDataGridTableStageContext, useDataGridTableStageEditingSection, useDataGridTableStageInteractionSection, useDataGridTableStageLayoutSection, useDataGridTableStageMode, useDataGridTableStageRowHeightMode, useDataGridTableStageRowsSection, useDataGridTableStageSection, useDataGridTableStageSelectionSection, useDataGridTableStageViewportSection, } from "./stage/dataGridTableStageContext";
12
+ export { useDataGridAppRowModel } from "./useDataGridAppRowModel";
13
+ export { useDataGridTableStageBindings } from "./stage/useDataGridTableStageBindings";
14
+ export { useDataGridTableStageRuntime } from "./stage/useDataGridTableStageRuntime";
@@ -0,0 +1,10 @@
1
+ export interface DataGridCellComboboxState {
2
+ open: boolean;
3
+ filter: string;
4
+ activeIndex: number;
5
+ }
6
+ export declare function createDataGridCellComboboxState(initial?: Partial<DataGridCellComboboxState>): DataGridCellComboboxState;
7
+ export declare function setDataGridCellComboboxOpen(state: DataGridCellComboboxState, open: boolean): DataGridCellComboboxState;
8
+ export declare function setDataGridCellComboboxFilter(state: DataGridCellComboboxState, filter: string): DataGridCellComboboxState;
9
+ export declare function activateDataGridCellComboboxIndex(state: DataGridCellComboboxState, index: number, optionCount: number): DataGridCellComboboxState;
10
+ export declare function moveDataGridCellComboboxFocus(state: DataGridCellComboboxState, delta: number, optionCount: number, loop?: boolean): DataGridCellComboboxState;
@@ -0,0 +1,67 @@
1
+ export function createDataGridCellComboboxState(initial = {}) {
2
+ return {
3
+ open: initial.open ?? false,
4
+ filter: initial.filter ?? "",
5
+ activeIndex: initial.activeIndex ?? -1,
6
+ };
7
+ }
8
+ export function setDataGridCellComboboxOpen(state, open) {
9
+ if (state.open === open) {
10
+ return state;
11
+ }
12
+ return {
13
+ ...state,
14
+ open,
15
+ };
16
+ }
17
+ export function setDataGridCellComboboxFilter(state, filter) {
18
+ if (state.filter === filter) {
19
+ return state;
20
+ }
21
+ return {
22
+ ...state,
23
+ filter,
24
+ };
25
+ }
26
+ export function activateDataGridCellComboboxIndex(state, index, optionCount) {
27
+ const nextIndex = clampIndex(index, optionCount);
28
+ if (nextIndex === state.activeIndex) {
29
+ return state;
30
+ }
31
+ return {
32
+ ...state,
33
+ activeIndex: nextIndex,
34
+ };
35
+ }
36
+ export function moveDataGridCellComboboxFocus(state, delta, optionCount, loop = true) {
37
+ if (optionCount <= 0 || delta === 0) {
38
+ return state;
39
+ }
40
+ if (state.activeIndex < 0) {
41
+ return activateDataGridCellComboboxIndex(state, delta > 0 ? 0 : optionCount - 1, optionCount);
42
+ }
43
+ const rawTarget = state.activeIndex + Math.trunc(delta);
44
+ if (loop) {
45
+ return activateDataGridCellComboboxIndex(state, modulo(rawTarget, optionCount), optionCount);
46
+ }
47
+ return activateDataGridCellComboboxIndex(state, rawTarget, optionCount);
48
+ }
49
+ function clampIndex(index, optionCount) {
50
+ if (optionCount <= 0) {
51
+ return -1;
52
+ }
53
+ if (!Number.isFinite(index)) {
54
+ return 0;
55
+ }
56
+ const normalized = Math.trunc(index);
57
+ if (normalized < 0) {
58
+ return 0;
59
+ }
60
+ if (normalized >= optionCount) {
61
+ return optionCount - 1;
62
+ }
63
+ return normalized;
64
+ }
65
+ function modulo(value, divisor) {
66
+ return ((value % divisor) + divisor) % divisor;
67
+ }
@@ -0,0 +1,47 @@
1
+ export declare const DATAGRID_COLUMN_MENU_ITEM_KEYS: readonly ["sort", "group", "pin", "filter"];
2
+ export type DataGridColumnMenuItemKey = (typeof DATAGRID_COLUMN_MENU_ITEM_KEYS)[number];
3
+ export type DataGridColumnMenuItemLabels = Readonly<Partial<Record<DataGridColumnMenuItemKey, string>>>;
4
+ export type DataGridColumnMenuDisabledReasons = Readonly<Partial<Record<DataGridColumnMenuItemKey, string>>>;
5
+ export declare const DATAGRID_COLUMN_MENU_ACTION_KEYS: readonly ["sortAsc", "sortDesc", "clearSort", "toggleGroup", "pinMenu", "pinLeft", "pinRight", "unpin", "clearFilter", "addCurrentSelectionToFilter", "selectAllValues", "clearAllValues", "applyFilter", "cancelFilter"];
6
+ export type DataGridColumnMenuActionKey = (typeof DATAGRID_COLUMN_MENU_ACTION_KEYS)[number];
7
+ export interface DataGridColumnMenuActionOption {
8
+ hidden?: boolean;
9
+ disabled?: boolean;
10
+ disabledReason?: string;
11
+ label?: string;
12
+ }
13
+ export type DataGridColumnMenuActionOptions = Readonly<Partial<Record<DataGridColumnMenuActionKey, DataGridColumnMenuActionOption>>>;
14
+ export interface DataGridColumnMenuColumnOptions {
15
+ items?: readonly DataGridColumnMenuItemKey[];
16
+ hide?: readonly DataGridColumnMenuItemKey[];
17
+ disabled?: readonly DataGridColumnMenuItemKey[];
18
+ disabledReasons?: DataGridColumnMenuDisabledReasons;
19
+ labels?: DataGridColumnMenuItemLabels;
20
+ actions?: DataGridColumnMenuActionOptions;
21
+ }
22
+ export interface DataGridColumnMenuOptions {
23
+ enabled: boolean;
24
+ maxFilterValues: number;
25
+ items: readonly DataGridColumnMenuItemKey[];
26
+ disabled: readonly DataGridColumnMenuItemKey[];
27
+ disabledReasons: DataGridColumnMenuDisabledReasons;
28
+ labels: DataGridColumnMenuItemLabels;
29
+ actions: DataGridColumnMenuActionOptions;
30
+ columns: Readonly<Record<string, DataGridColumnMenuColumnOptions>>;
31
+ }
32
+ export type DataGridColumnMenuProp = boolean | {
33
+ enabled?: boolean;
34
+ maxFilterValues?: number;
35
+ items?: readonly DataGridColumnMenuItemKey[];
36
+ disabled?: readonly DataGridColumnMenuItemKey[];
37
+ disabledReasons?: DataGridColumnMenuDisabledReasons;
38
+ labels?: DataGridColumnMenuItemLabels;
39
+ actions?: DataGridColumnMenuActionOptions;
40
+ columns?: Readonly<Record<string, DataGridColumnMenuColumnOptions>>;
41
+ } | null;
42
+ export declare function resolveDataGridColumnMenu(input: DataGridColumnMenuProp | undefined): DataGridColumnMenuOptions;
43
+ export declare function resolveDataGridColumnMenuItems(options: DataGridColumnMenuOptions, columnKey: string): readonly DataGridColumnMenuItemKey[];
44
+ export declare function resolveDataGridColumnMenuDisabledItems(options: DataGridColumnMenuOptions, columnKey: string): readonly DataGridColumnMenuItemKey[];
45
+ export declare function resolveDataGridColumnMenuLabels(options: DataGridColumnMenuOptions, columnKey: string): DataGridColumnMenuItemLabels;
46
+ export declare function resolveDataGridColumnMenuDisabledReasons(options: DataGridColumnMenuOptions, columnKey: string): DataGridColumnMenuDisabledReasons;
47
+ export declare function resolveDataGridColumnMenuActionOptions(options: DataGridColumnMenuOptions, columnKey: string): DataGridColumnMenuActionOptions;