@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
83 lines (82 loc) • 3.3 kB
TypeScript
import { TableRow } from './types';
import { TableTdWidgetHelper } from './td-helper';
import { ContextMenuOption } from '../components/context-menu.component';
/** Services needed by TableTdManager (ported from Angular DI). */
export interface TableTdManagerServices {
/** Angular DomService → designer inject('useFormSchema'): getExpressions/getComponents/getControlsInCmpWidthBinding */
formSchemaUtils: any;
/** Angular DesignViewModelService → inject('designViewModelUtils'): getDgViewModel(id).removeField([...]) */
designViewModelUtils: any;
/** Angular MessagerService → default FMessageBoxService; injectable stub for testing */
messageBox?: {
question: (message: string, detail: string, ok: () => void, cancel?: () => void) => void;
};
}
export interface TableTdManagerComponent {
id: string;
rows: TableRow[];
}
export interface MenuItem {
id: string;
title: string;
disable?: boolean;
handle?: () => void;
}
export type MenuConfig = (MenuItem | '-')[];
/**
* Ported from Angular `TableTdManager` (table/component/td-manager/td-manager.ts).
* Merge/split/insert/delete logic unchanged; service mappings updated for Vue.
*/
export declare class TableTdManager {
component: TableTdManagerComponent;
private services;
/** redrawTable.next replacement; payload may contain { clearPropertyPanel } */
private redraw;
/** refreshSchamaTree.next replacement */
private emitCanvasChanged;
private viewModelId;
tableTdHelper: TableTdWidgetHelper;
selectedColumnIndex: number;
selectedRowIndex: number;
targetColumn: any;
targetRow: any;
menuConfig: MenuConfig;
private tableUtils;
constructor(component: TableTdManagerComponent, services: TableTdManagerServices,
/** redrawTable.next replacement; payload may contain { clearPropertyPanel } */
redraw: (payload?: any) => void,
/** refreshSchamaTree.next replacement */
emitCanvasChanged: () => void, viewModelId: string);
/** Called by design component on right-click / widget-panel icon click to set the current target cell. */
setTarget(rowIndex: number, colIndex: number): void;
getMenuConfig(): MenuConfig;
private question;
insertColumnToLeft(): void;
insertColumnToRight(): void;
insertRowToTop(): void;
insertRowToBottom(): void;
showMergeColumnToRight(): boolean;
mergeColumnToRight(): void;
confirmToMergeColumnToRight(rightColumn: any, targetColspan: number): void;
showMergeRowToBottom(): boolean;
mergeRowToBottom(): void;
confirmToMergeRowToBottom(bottomColumn: any, targetRowspan: number): void;
private resetTd;
showSplitColumns(): boolean;
splitColumns(): void;
showSplitRows(): boolean;
splitRows(): void;
showRemoveColumn(): boolean;
removeColumn(): void;
confirmRemoveColumn(): void;
checkIfHasEditorInColumn(): boolean;
showRemoveRow(): boolean;
removeRow(): void;
checkIfHasEditorInRow(): boolean;
confirmRemoveRow(): void;
}
export type { ContextMenuOption };
/** Maps the ported menuConfig to context menu items, preserving separators. */
export declare function menuConfigToOptions(menu: MenuConfig, onAfter: () => void): (ContextMenuOption | {
separator: true;
})[];