UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

83 lines (82 loc) 3.3 kB
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; })[];