mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-28 16:09:17 +00:00
feat(grid): link cell detail to selection
This commit is contained in:
@@ -106,6 +106,7 @@ import {
|
||||
cellDetailEditorText,
|
||||
defaultCellDetailTab,
|
||||
formatJsonText,
|
||||
linkedCellDetailTarget,
|
||||
valueEditorActions,
|
||||
visibleCellDetailTabs,
|
||||
type CellDetailTab,
|
||||
@@ -2192,6 +2193,18 @@ function showCellDetails(rowIndex: number, colIndex: number) {
|
||||
showCellDetail.value = true;
|
||||
}
|
||||
|
||||
watch([selectedRange, showCellDetail, isEditingDetail], () => {
|
||||
const selectedCell = currentSelectedCellPosition();
|
||||
const target = linkedCellDetailTarget({
|
||||
isOpen: showCellDetail.value,
|
||||
isEditing: isEditingDetail.value,
|
||||
selectedCell: selectedCell ? { rowIndex: selectedCell.rowIndex, visibleColIndex: selectedCell.colIndex } : null,
|
||||
actualColumnIndex,
|
||||
});
|
||||
if (!target) return;
|
||||
detailCell.value = target;
|
||||
});
|
||||
|
||||
function openImagePreview(src: string, title: string) {
|
||||
imagePreviewSrc.value = src;
|
||||
imagePreviewTitle.value = title;
|
||||
|
||||
@@ -5,6 +5,18 @@ export interface CellDetailPresentationOptions {
|
||||
isEditable: boolean;
|
||||
}
|
||||
|
||||
export interface LinkedCellDetailOptions {
|
||||
isOpen: boolean;
|
||||
isEditing: boolean;
|
||||
selectedCell: { rowIndex: number; visibleColIndex: number } | null;
|
||||
actualColumnIndex: (visibleColIndex: number) => number;
|
||||
}
|
||||
|
||||
export interface CellDetailTarget {
|
||||
rowIndex: number;
|
||||
col: number;
|
||||
}
|
||||
|
||||
export function defaultCellDetailTab(): CellDetailTab {
|
||||
return "details";
|
||||
}
|
||||
@@ -35,6 +47,14 @@ export function valueEditorActions(options: { canSetNull: boolean; canFormatJson
|
||||
return actions;
|
||||
}
|
||||
|
||||
export function linkedCellDetailTarget(options: LinkedCellDetailOptions): CellDetailTarget | null {
|
||||
if (!options.isOpen || options.isEditing || !options.selectedCell) return null;
|
||||
return {
|
||||
rowIndex: options.selectedCell.rowIndex,
|
||||
col: options.actualColumnIndex(options.selectedCell.visibleColIndex),
|
||||
};
|
||||
}
|
||||
|
||||
export function isJsonColumnType(columnType: string | undefined): boolean {
|
||||
const base = (columnType ?? "")
|
||||
.trim()
|
||||
|
||||
Reference in New Issue
Block a user