@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.
- package/LICENSE +21 -0
- package/README.md +1062 -0
- package/dist/DataGrid.d.ts +430 -0
- package/dist/DataGrid.js +565 -0
- package/dist/DataGridDefaultRenderer.d.ts +2 -0
- package/dist/DataGridDefaultRenderer.js +2 -0
- package/dist/DataGridModuleHost.d.ts +2 -0
- package/dist/DataGridModuleHost.js +2 -0
- package/dist/DataGridRuntimeHost.d.ts +1 -0
- package/dist/DataGridRuntimeHost.js +1 -0
- package/dist/config/dataGridAdvancedFilter.d.ts +9 -0
- package/dist/config/dataGridAdvancedFilter.js +21 -0
- package/dist/config/dataGridAggregations.d.ts +17 -0
- package/dist/config/dataGridAggregations.js +21 -0
- package/dist/config/dataGridColumnLayout.d.ts +9 -0
- package/dist/config/dataGridColumnLayout.js +21 -0
- package/dist/config/dataGridFormulaOptions.d.ts +25 -0
- package/dist/config/dataGridFormulaOptions.js +137 -0
- package/dist/config/dataGridPublicProps.d.ts +6 -0
- package/dist/config/dataGridPublicProps.js +58 -0
- package/dist/config/dataGridSavedView.d.ts +17 -0
- package/dist/config/dataGridSavedView.js +73 -0
- package/dist/config/dataGridVirtualization.d.ts +14 -0
- package/dist/config/dataGridVirtualization.js +32 -0
- package/dist/dataGridAdvancedFilter.d.ts +1 -0
- package/dist/dataGridAdvancedFilter.js +1 -0
- package/dist/dataGridAggregations.d.ts +1 -0
- package/dist/dataGridAggregations.js +1 -0
- package/dist/dataGridAppContext.d.ts +2 -0
- package/dist/dataGridAppContext.js +1 -0
- package/dist/dataGridCellComboboxState.d.ts +10 -0
- package/dist/dataGridCellComboboxState.js +67 -0
- package/dist/dataGridColumnLayout.d.ts +1 -0
- package/dist/dataGridColumnLayout.js +1 -0
- package/dist/dataGridColumnMenu.d.ts +9 -0
- package/dist/dataGridColumnMenu.js +21 -0
- package/dist/dataGridEditability.d.ts +9 -0
- package/dist/dataGridEditability.js +1 -0
- package/dist/dataGridFilterableCombobox.d.ts +1 -0
- package/dist/dataGridFilterableCombobox.js +1 -0
- package/dist/dataGridFormulaOptions.d.ts +1 -0
- package/dist/dataGridFormulaOptions.js +1 -0
- package/dist/dataGridGantt.d.ts +3 -0
- package/dist/dataGridGantt.js +1 -0
- package/dist/dataGridGanttDependencySelection.d.ts +7 -0
- package/dist/dataGridGanttDependencySelection.js +46 -0
- package/dist/dataGridGanttLabel.d.ts +2 -0
- package/dist/dataGridGanttLabel.js +30 -0
- package/dist/dataGridGanttSplit.d.ts +20 -0
- package/dist/dataGridGanttSplit.js +31 -0
- package/dist/dataGridGanttWheel.d.ts +10 -0
- package/dist/dataGridGanttWheel.js +30 -0
- package/dist/dataGridOverlayThemeVars.d.ts +1 -0
- package/dist/dataGridOverlayThemeVars.js +32 -0
- package/dist/dataGridPublicProps.d.ts +1 -0
- package/dist/dataGridPublicProps.js +1 -0
- package/dist/dataGridTableStage.types.d.ts +1 -0
- package/dist/dataGridTableStage.types.js +1 -0
- package/dist/dataGridTableStageBody.types.d.ts +1 -0
- package/dist/dataGridTableStageBody.types.js +1 -0
- package/dist/dataGridTableStageContext.d.ts +1 -0
- package/dist/dataGridTableStageContext.js +1 -0
- package/dist/dataGridTheme.d.ts +1 -0
- package/dist/dataGridTheme.js +1 -0
- package/dist/dataGridVirtualization.d.ts +1 -0
- package/dist/dataGridVirtualization.js +1 -0
- package/dist/ensureDataGridAppStyles.d.ts +1 -0
- package/dist/ensureDataGridAppStyles.js +1 -0
- package/dist/gantt/dataGridGantt.d.ts +3 -0
- package/dist/gantt/dataGridGantt.js +1 -0
- package/dist/gantt/dataGridGanttDependencySelection.d.ts +7 -0
- package/dist/gantt/dataGridGanttDependencySelection.js +46 -0
- package/dist/gantt/dataGridGanttLabel.d.ts +2 -0
- package/dist/gantt/dataGridGanttLabel.js +30 -0
- package/dist/gantt/dataGridGanttSplit.d.ts +20 -0
- package/dist/gantt/dataGridGanttSplit.js +31 -0
- package/dist/gantt/dataGridGanttWheel.d.ts +10 -0
- package/dist/gantt/dataGridGanttWheel.js +30 -0
- package/dist/host/DataGridDefaultRenderer.d.ts +298 -0
- package/dist/host/DataGridDefaultRenderer.js +1847 -0
- package/dist/host/DataGridModuleHost.d.ts +24 -0
- package/dist/host/DataGridModuleHost.js +23 -0
- package/dist/host/DataGridRuntimeHost.d.ts +104 -0
- package/dist/host/DataGridRuntimeHost.js +174 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +4 -0
- package/dist/internal.d.ts +21 -0
- package/dist/internal.js +14 -0
- package/dist/overlays/dataGridCellComboboxState.d.ts +10 -0
- package/dist/overlays/dataGridCellComboboxState.js +67 -0
- package/dist/overlays/dataGridColumnMenu.d.ts +47 -0
- package/dist/overlays/dataGridColumnMenu.js +190 -0
- package/dist/overlays/dataGridContextMenu.d.ts +80 -0
- package/dist/overlays/dataGridContextMenu.js +218 -0
- package/dist/overlays/dataGridFilterableCombobox.d.ts +5 -0
- package/dist/overlays/dataGridFilterableCombobox.js +74 -0
- package/dist/overlays/dataGridOverlayThemeVars.d.ts +1 -0
- package/dist/overlays/dataGridOverlayThemeVars.js +32 -0
- package/dist/stage/dataGridTableStage.types.d.ts +160 -0
- package/dist/stage/dataGridTableStage.types.js +1 -0
- package/dist/stage/dataGridTableStageBody.types.d.ts +105 -0
- package/dist/stage/dataGridTableStageBody.types.js +1 -0
- package/dist/stage/dataGridTableStageContext.d.ts +45 -0
- package/dist/stage/dataGridTableStageContext.js +88 -0
- package/dist/stage/useDataGridTableStageBindings.d.ts +11 -0
- package/dist/stage/useDataGridTableStageBindings.js +162 -0
- package/dist/stage/useDataGridTableStageCellIo.d.ts +28 -0
- package/dist/stage/useDataGridTableStageCellIo.js +62 -0
- package/dist/stage/useDataGridTableStageColumns.d.ts +22 -0
- package/dist/stage/useDataGridTableStageColumns.js +124 -0
- package/dist/stage/useDataGridTableStageFillAction.d.ts +19 -0
- package/dist/stage/useDataGridTableStageFillAction.js +28 -0
- package/dist/stage/useDataGridTableStageHistory.d.ts +31 -0
- package/dist/stage/useDataGridTableStageHistory.js +46 -0
- package/dist/stage/useDataGridTableStageRowSelection.d.ts +28 -0
- package/dist/stage/useDataGridTableStageRowSelection.js +107 -0
- package/dist/stage/useDataGridTableStageRuntime.d.ts +92 -0
- package/dist/stage/useDataGridTableStageRuntime.js +526 -0
- package/dist/stage/useDataGridTableStageScrollSync.d.ts +17 -0
- package/dist/stage/useDataGridTableStageScrollSync.js +49 -0
- package/dist/stage/useDataGridTableStageViewportKeyboard.d.ts +20 -0
- package/dist/stage/useDataGridTableStageViewportKeyboard.js +58 -0
- package/dist/stage/useDataGridTableStageVisualSelection.d.ts +24 -0
- package/dist/stage/useDataGridTableStageVisualSelection.js +83 -0
- package/dist/theme/dataGridTheme.d.ts +6 -0
- package/dist/theme/dataGridTheme.js +84 -0
- package/dist/theme/ensureDataGridAppStyles.d.ts +1 -0
- package/dist/theme/ensureDataGridAppStyles.js +2656 -0
- package/dist/useDataGridAppControlledState.d.ts +59 -0
- package/dist/useDataGridAppControlledState.js +390 -0
- package/dist/useDataGridAppRowModel.d.ts +14 -0
- package/dist/useDataGridAppRowModel.js +85 -0
- package/dist/useDataGridTableStageBindings.d.ts +1 -0
- package/dist/useDataGridTableStageBindings.js +1 -0
- package/dist/useDataGridTableStageCellIo.d.ts +28 -0
- package/dist/useDataGridTableStageCellIo.js +62 -0
- package/dist/useDataGridTableStageColumns.d.ts +21 -0
- package/dist/useDataGridTableStageColumns.js +122 -0
- package/dist/useDataGridTableStageFillAction.d.ts +19 -0
- package/dist/useDataGridTableStageFillAction.js +28 -0
- package/dist/useDataGridTableStageHistory.d.ts +31 -0
- package/dist/useDataGridTableStageHistory.js +46 -0
- package/dist/useDataGridTableStageRowSelection.d.ts +28 -0
- package/dist/useDataGridTableStageRowSelection.js +103 -0
- package/dist/useDataGridTableStageRuntime.d.ts +1 -0
- package/dist/useDataGridTableStageRuntime.js +1 -0
- package/dist/useDataGridTableStageScrollSync.d.ts +17 -0
- package/dist/useDataGridTableStageScrollSync.js +49 -0
- package/dist/useDataGridTableStageViewportKeyboard.d.ts +20 -0
- package/dist/useDataGridTableStageViewportKeyboard.js +58 -0
- package/dist/useDataGridTableStageVisualSelection.d.ts +24 -0
- package/dist/useDataGridTableStageVisualSelection.js +70 -0
- package/package.json +55 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ComputedRef, type Ref } from "vue";
|
|
2
|
+
import type { DataGridCopyRange } from "@affino/datagrid-vue/advanced";
|
|
3
|
+
import type { DataGridPendingEdge, DataGridTableMode, DataGridTableStageAnchorCell } from "./dataGridTableStage.types";
|
|
4
|
+
export interface UseDataGridTableStageVisualSelectionOptions {
|
|
5
|
+
mode: Ref<DataGridTableMode>;
|
|
6
|
+
viewportRowStart: Ref<number>;
|
|
7
|
+
selectionAnchorCell: ComputedRef<DataGridTableStageAnchorCell | null>;
|
|
8
|
+
fillPreviewRange: Ref<DataGridCopyRange | null>;
|
|
9
|
+
isFillDragging: Ref<boolean>;
|
|
10
|
+
interactionSelectionRange: Ref<DataGridCopyRange | null>;
|
|
11
|
+
resolveCommittedSelectionRange: () => DataGridCopyRange | null;
|
|
12
|
+
isCommittedSelectionAnchorCell: (rowOffset: number, columnIndex: number) => boolean;
|
|
13
|
+
isCommittedCellSelected: (rowOffset: number, columnIndex: number) => boolean;
|
|
14
|
+
shouldHighlightCommittedSelectedCell: (rowOffset: number, columnIndex: number) => boolean;
|
|
15
|
+
isCommittedCellOnSelectionEdge: (rowOffset: number, columnIndex: number, edge: DataGridPendingEdge) => boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface UseDataGridTableStageVisualSelectionResult {
|
|
18
|
+
selectionRange: ComputedRef<DataGridCopyRange | null>;
|
|
19
|
+
isSelectionAnchorCell: (rowOffset: number, columnIndex: number) => boolean;
|
|
20
|
+
isCellSelected: (rowOffset: number, columnIndex: number) => boolean;
|
|
21
|
+
shouldHighlightSelectedCell: (rowOffset: number, columnIndex: number) => boolean;
|
|
22
|
+
isCellOnSelectionEdge: (rowOffset: number, columnIndex: number, edge: DataGridPendingEdge) => boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function useDataGridTableStageVisualSelection(options: UseDataGridTableStageVisualSelectionOptions): UseDataGridTableStageVisualSelectionResult;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { computed } from "vue";
|
|
2
|
+
export function useDataGridTableStageVisualSelection(options) {
|
|
3
|
+
const selectionRange = computed(() => (options.interactionSelectionRange.value ?? options.resolveCommittedSelectionRange()));
|
|
4
|
+
const resolveVisualAnchorCell = () => {
|
|
5
|
+
const range = selectionRange.value;
|
|
6
|
+
if (range
|
|
7
|
+
&& range.startRow === range.endRow
|
|
8
|
+
&& range.startColumn === range.endColumn) {
|
|
9
|
+
return {
|
|
10
|
+
rowIndex: range.startRow,
|
|
11
|
+
columnIndex: range.startColumn,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return options.selectionAnchorCell.value;
|
|
15
|
+
};
|
|
16
|
+
const resolveVisualSelectionRange = () => selectionRange.value;
|
|
17
|
+
const isVisualFillSelectionActive = () => {
|
|
18
|
+
return options.mode.value === "base" && options.isFillDragging.value && Boolean(options.fillPreviewRange.value);
|
|
19
|
+
};
|
|
20
|
+
const isCellWithinRange = (range, rowOffset, columnIndex) => {
|
|
21
|
+
const rowIndex = options.viewportRowStart.value + rowOffset;
|
|
22
|
+
return (rowIndex >= range.startRow
|
|
23
|
+
&& rowIndex <= range.endRow
|
|
24
|
+
&& columnIndex >= range.startColumn
|
|
25
|
+
&& columnIndex <= range.endColumn);
|
|
26
|
+
};
|
|
27
|
+
const isSelectionAnchorCell = (rowOffset, columnIndex) => {
|
|
28
|
+
const anchorCell = resolveVisualAnchorCell();
|
|
29
|
+
if (anchorCell) {
|
|
30
|
+
return anchorCell.rowIndex === options.viewportRowStart.value + rowOffset
|
|
31
|
+
&& anchorCell.columnIndex === columnIndex;
|
|
32
|
+
}
|
|
33
|
+
return options.isCommittedSelectionAnchorCell(rowOffset, columnIndex);
|
|
34
|
+
};
|
|
35
|
+
const isCellSelected = (rowOffset, columnIndex) => {
|
|
36
|
+
if (!isVisualFillSelectionActive()) {
|
|
37
|
+
return options.isCommittedCellSelected(rowOffset, columnIndex);
|
|
38
|
+
}
|
|
39
|
+
const range = resolveVisualSelectionRange();
|
|
40
|
+
return range ? isCellWithinRange(range, rowOffset, columnIndex) : false;
|
|
41
|
+
};
|
|
42
|
+
const shouldHighlightSelectedCell = (rowOffset, columnIndex) => {
|
|
43
|
+
if (!isVisualFillSelectionActive()) {
|
|
44
|
+
return options.shouldHighlightCommittedSelectedCell(rowOffset, columnIndex);
|
|
45
|
+
}
|
|
46
|
+
const range = resolveVisualSelectionRange();
|
|
47
|
+
if (!range || !isCellWithinRange(range, rowOffset, columnIndex)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const isSingleCell = range.startRow === range.endRow && range.startColumn === range.endColumn;
|
|
51
|
+
if (isSingleCell) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return !isSelectionAnchorCell(rowOffset, columnIndex);
|
|
55
|
+
};
|
|
56
|
+
const isCellOnSelectionEdge = (rowOffset, columnIndex, edge) => {
|
|
57
|
+
if (!isVisualFillSelectionActive()) {
|
|
58
|
+
return options.isCommittedCellOnSelectionEdge(rowOffset, columnIndex, edge);
|
|
59
|
+
}
|
|
60
|
+
const range = resolveVisualSelectionRange();
|
|
61
|
+
if (!range || !isCellWithinRange(range, rowOffset, columnIndex)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const rowIndex = options.viewportRowStart.value + rowOffset;
|
|
65
|
+
switch (edge) {
|
|
66
|
+
case "top":
|
|
67
|
+
return rowIndex === range.startRow;
|
|
68
|
+
case "right":
|
|
69
|
+
return columnIndex === range.endColumn;
|
|
70
|
+
case "bottom":
|
|
71
|
+
return rowIndex === range.endRow;
|
|
72
|
+
case "left":
|
|
73
|
+
return columnIndex === range.startColumn;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
selectionRange,
|
|
78
|
+
isSelectionAnchorCell,
|
|
79
|
+
isCellSelected,
|
|
80
|
+
shouldHighlightSelectedCell,
|
|
81
|
+
isCellOnSelectionEdge,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type DataGridStyleConfig, type DataGridThemeTokens } from "@affino/datagrid-theme";
|
|
2
|
+
export type DataGridThemePreset = "default" | "industrial-neutral" | "industrialNeutral" | "sugar";
|
|
3
|
+
export type DataGridThemeProp = DataGridThemePreset | DataGridStyleConfig | Partial<DataGridThemeTokens> | null | undefined;
|
|
4
|
+
export declare function resolveDataGridThemeTokens(theme: DataGridThemeProp): DataGridThemeTokens;
|
|
5
|
+
export declare function applyDataGridTheme(rootElement: HTMLElement, theme: DataGridThemeProp): DataGridThemeTokens;
|
|
6
|
+
export declare function clearDataGridTheme(rootElement: HTMLElement): void;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { applyGridTheme, defaultStyleConfig, industrialNeutralTheme, resolveGridThemeTokens, sugarTheme, } from "@affino/datagrid-theme";
|
|
2
|
+
const DATA_GRID_THEME_PRESETS = {
|
|
3
|
+
default: defaultStyleConfig,
|
|
4
|
+
"industrial-neutral": industrialNeutralTheme,
|
|
5
|
+
industrialNeutral: industrialNeutralTheme,
|
|
6
|
+
sugar: sugarTheme,
|
|
7
|
+
};
|
|
8
|
+
function mergeTokenVariants(base, override) {
|
|
9
|
+
if (!base && !override) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const merged = {
|
|
13
|
+
...(base ?? {}),
|
|
14
|
+
};
|
|
15
|
+
for (const [variantKey, tokens] of Object.entries(override ?? {})) {
|
|
16
|
+
merged[variantKey] = {
|
|
17
|
+
...(merged[variantKey] ?? {}),
|
|
18
|
+
...tokens,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return merged;
|
|
22
|
+
}
|
|
23
|
+
function mergeStyleConfigs(base, override) {
|
|
24
|
+
return {
|
|
25
|
+
...base,
|
|
26
|
+
...override,
|
|
27
|
+
grid: { ...(base.grid ?? {}), ...(override.grid ?? {}) },
|
|
28
|
+
header: { ...(base.header ?? {}), ...(override.header ?? {}) },
|
|
29
|
+
body: { ...(base.body ?? {}), ...(override.body ?? {}) },
|
|
30
|
+
group: { ...(base.group ?? {}), ...(override.group ?? {}) },
|
|
31
|
+
summary: { ...(base.summary ?? {}), ...(override.summary ?? {}) },
|
|
32
|
+
state: { ...(base.state ?? {}), ...(override.state ?? {}) },
|
|
33
|
+
tokens: { ...(base.tokens ?? {}), ...(override.tokens ?? {}) },
|
|
34
|
+
tokenVariants: mergeTokenVariants(base.tokenVariants, override.tokenVariants),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function isStyleConfig(input) {
|
|
38
|
+
if (!input || typeof input !== "object") {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return ("tokens" in input
|
|
42
|
+
|| "tokenVariants" in input
|
|
43
|
+
|| "activeTokenVariant" in input
|
|
44
|
+
|| "defaultTokenVariant" in input
|
|
45
|
+
|| "inheritThemeFromDocument" in input
|
|
46
|
+
|| "documentDarkClass" in input
|
|
47
|
+
|| "grid" in input
|
|
48
|
+
|| "header" in input
|
|
49
|
+
|| "body" in input
|
|
50
|
+
|| "group" in input
|
|
51
|
+
|| "summary" in input
|
|
52
|
+
|| "state" in input);
|
|
53
|
+
}
|
|
54
|
+
function resolveThemeStyleConfig(theme) {
|
|
55
|
+
if (theme == null) {
|
|
56
|
+
return defaultStyleConfig;
|
|
57
|
+
}
|
|
58
|
+
if (typeof theme === "string") {
|
|
59
|
+
if (theme === "sugar") {
|
|
60
|
+
return mergeStyleConfigs(defaultStyleConfig, sugarTheme);
|
|
61
|
+
}
|
|
62
|
+
return DATA_GRID_THEME_PRESETS[theme] ?? defaultStyleConfig;
|
|
63
|
+
}
|
|
64
|
+
if (isStyleConfig(theme)) {
|
|
65
|
+
return mergeStyleConfigs(defaultStyleConfig, theme);
|
|
66
|
+
}
|
|
67
|
+
return mergeStyleConfigs(defaultStyleConfig, {
|
|
68
|
+
tokens: theme,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export function resolveDataGridThemeTokens(theme) {
|
|
72
|
+
const styleConfig = resolveThemeStyleConfig(theme);
|
|
73
|
+
return resolveGridThemeTokens(styleConfig ?? defaultStyleConfig, {
|
|
74
|
+
document: typeof document === "undefined" ? undefined : document,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
export function applyDataGridTheme(rootElement, theme) {
|
|
78
|
+
const tokens = resolveDataGridThemeTokens(theme);
|
|
79
|
+
applyGridTheme(rootElement, tokens);
|
|
80
|
+
return tokens;
|
|
81
|
+
}
|
|
82
|
+
export function clearDataGridTheme(rootElement) {
|
|
83
|
+
applyDataGridTheme(rootElement, "default");
|
|
84
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ensureDataGridAppStyles(): void;
|