@helveg/ngx-spreadsheet
Version:
Lightweight spreadsheet module for Angular
172 lines (163 loc) • 6.96 kB
TypeScript
import * as _angular_core from '@angular/core';
import { EventEmitter, ElementRef } from '@angular/core';
import { Observable } from 'rxjs';
declare class Cell {
tableId: string;
row: number;
col: number;
value: string;
editable: boolean;
id: string;
constructor(tableId: string, row: number, col: number, value: string, editable?: boolean);
withRow(index: number): Cell;
withCol(index: number): Cell;
}
interface ColumnOptions {
header?: string;
width?: number;
}
interface TableOptions {
rows?: number;
cols?: number;
data?: any[][];
columns?: ColumnOptions[];
canInsertRows?: boolean;
canInsertCols?: boolean;
}
type SettableTableOptions = keyof Table & keyof TableOptions;
declare class Table {
readonly id: string;
head: string[];
body: Cell[][];
canInsertRows: boolean;
canInsertCols: boolean;
protected options: TableOptions;
private constructor();
get data(): any[][];
get editing(): boolean;
recreate(options: TableOptions): Table;
static create(options: TableOptions): Table;
findCell(row: number, col: number): Cell | null;
findOrCreateCell(row: number, col: number): Cell | null;
insertColumn(colIndex: number): void;
deleteColumn(colIndex: number): void;
insertRow(rowIndex: number): void;
deleteRow(rowIndex: number): void;
get rowCount(): number;
get colCount(): number;
resize({ rows, cols }: {
rows?: number;
cols?: number;
}): void;
setOption<K extends keyof this & keyof TableOptions>(attr: K, value: this[K]): void;
}
declare class NgxContextMenuItemComponent {
label?: string;
disabled?: boolean;
divider?: boolean;
click: EventEmitter<number>;
clicked(index: number): void;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxContextMenuItemComponent, never>;
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxContextMenuItemComponent, "ngx-context-menu-item", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "divider": { "alias": "divider"; "required": false; }; }, { "click": "click"; }, never, never, true, never>;
}
declare class NgxContextMenuComponent {
menuElementRef: _angular_core.Signal<ElementRef<any>>;
itemTemplates: _angular_core.Signal<readonly NgxContextMenuItemComponent[]>;
closed: EventEmitter<any>;
target: number;
show(ev: MouseEvent, index: number): void;
click(): void;
private get menuElement();
private get menuStyle();
private get menuWidth();
private get menuHeight();
private get documentWidth();
private get documentHeight();
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxContextMenuComponent, never>;
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxContextMenuComponent, "ngx-context-menu", never, {}, { "closed": "closed"; }, ["itemTemplates"], never, true, never>;
}
declare class Anchor {
r: number;
c: number;
constructor(r: number, c: number);
}
declare class Range {
r1: number;
c1: number;
r2: number;
c2: number;
constructor(r1: number, c1: number, r2: number, c2: number);
calc(row: number, col: number): void;
includes(row: number, col: number): boolean;
equals(range: Range): boolean;
static of(row: number, col: number, row2?: number, col2?: number): Range;
static marge(a1: Anchor, a2: Anchor): Range;
}
declare class NgxSpreadsheetComponent {
private readonly injector;
readonly i18n: Omit<{} & {
INSERT_COLUMN_LEFT: string;
INSERT_COLUMN_RIGHT: string;
DELETE_COLUMN: string;
DELETE_ROW: string;
INSERT_ROW_BELOW: string;
INSERT_ROW_ABOVE: string;
}, "__proto__">;
theadContextMenu: _angular_core.Signal<NgxContextMenuComponent | undefined>;
tbodyContextMenu: _angular_core.Signal<NgxContextMenuComponent | undefined>;
data: _angular_core.ModelSignal<any[][] | undefined>;
dataChanged: _angular_core.OutputEmitterRef<any[][]>;
rows: _angular_core.ModelSignal<number | undefined>;
cols: _angular_core.ModelSignal<number | undefined>;
columns: _angular_core.ModelSignal<ColumnOptions[] | undefined>;
canInsertCols: _angular_core.ModelSignal<boolean>;
canInsertRows: _angular_core.ModelSignal<boolean>;
data$: Observable<any[][] | undefined>;
rows$: Observable<number | undefined>;
cols$: Observable<number | undefined>;
columns$: Observable<ColumnOptions[] | undefined>;
canInsertRows$: Observable<boolean>;
canInsertCols$: Observable<boolean>;
/**
* The table observable integrates all the reactive pipes into a higher order scan that
* can mutate or replace the table reference.
*/
table$: Observable<Table>;
copied: EventEmitter<string>;
table: Table | null;
activatedCell: Cell | null;
range: Range | null;
anchor: Anchor | null;
activeTheadIndex: number;
activeTbodyIndex: number;
private onMouseDown;
private onMouseMove;
private onMouseUp;
private onKeyDown;
private blockArrowKeys;
private onKeyUp;
trackByCell(index: number, value: Cell): string | null;
clickHeader(colIndex: number): void;
clickRow(rowIndex: number): void;
focus(ev: FocusEvent): void;
blur(ev: FocusEvent): void;
cellMouseUp(ev: Event, target: Cell): void;
setValue(ev: Event, target: Cell): void;
setEditable(ev: Event, editable: boolean): void;
showTheadMenu(ev: MouseEvent, index: number): boolean;
showTbodyMenu(ev: MouseEvent, index: number): boolean;
private moveTo;
private forceFocus;
private findCellByEventTarget;
private getPositionFromId;
private copy;
private paste;
private delete;
updateValue(table: Table, cell: any, $event: string): void;
selectAll(event$?: Event): void;
newRow(col: number): void;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxSpreadsheetComponent, never>;
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxSpreadsheetComponent, "ngx-spreadsheet", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "cols": { "alias": "cols"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "canInsertCols": { "alias": "canInsertCols"; "required": false; "isSignal": true; }; "canInsertRows": { "alias": "canInsertRows"; "required": false; "isSignal": true; }; }, { "data": "dataChange"; "dataChanged": "dataChanged"; "rows": "rowsChange"; "cols": "colsChange"; "columns": "columnsChange"; "canInsertCols": "canInsertColsChange"; "canInsertRows": "canInsertRowsChange"; "copied": "copied"; }, never, never, true, never>;
}
export { NgxSpreadsheetComponent, Table };
export type { ColumnOptions, SettableTableOptions, TableOptions };