@mhmdaljefri/revogrid
Version:
Virtual reactive data grid component - RevoGrid.
398 lines (397 loc) • 13.5 kB
TypeScript
import { EventEmitter, VNode } from '../../stencil-public-runtime';
import ColumnDataProvider, { ColumnCollection } from '../../services/column.data.provider';
import { DataProvider } from '../../services/data.provider';
import DimensionProvider from '../../services/dimension.provider';
import ViewportProvider from '../../services/viewport.provider';
import { Edition, Selection, RevoGrid, ThemeSpace, RevoPlugin } from '../../interfaces';
import { AutoSizeColumnConfig } from '../../plugins/autoSizeColumn';
import { ColumnFilterConfig, FilterCollection } from '../../plugins/filter/filter.plugin';
import { DataInput } from '../../plugins/export/types';
import { GroupingOptions } from '../../plugins/groupingRow/grouping.row.types';
import { ColumnSource, RowSource } from '../data/columnService';
import { FocusedData } from './viewport.service';
export declare class RevoGridComponent {
/** Excel like show rgRow indexe per rgRow */
rowHeaders: RevoGrid.RowHeaders | boolean;
/**
* Defines how many rows/columns should be rendered outside visible area.
*/
frameSize: number;
/**
* Indicates default rgRow size.
* By default 0, means theme package size will be applied
*/
rowSize: number;
/** Indicates default column size. */
colSize: number;
/** When true, user can range selection. */
range: boolean;
/** When true, grid in read only mode. */
readonly: boolean;
/** When true, columns are resizable. */
resize: boolean;
/** When true cell focus appear. */
canFocus: boolean;
/** When true enable clipboard. */
useClipboard: boolean;
/**
* Columns - defines an array of grid columns.
* Can be column or grouped column.
*/
columns: (RevoGrid.ColumnRegular | RevoGrid.ColumnGrouping)[];
/**
* Source - defines main data source.
* Can be an Object or 2 dimensional array([][]);
* Keys/indexes referenced from columns Prop
*/
source: RevoGrid.DataType[];
/** Pinned top Source: {[T in ColumnProp]: any} - defines pinned top rows data source. */
pinnedTopSource: RevoGrid.DataType[];
/** Pinned bottom Source: {[T in ColumnProp]: any} - defines pinned bottom rows data source. */
pinnedBottomSource: RevoGrid.DataType[];
/** Row properies applied */
rowDefinitions: RevoGrid.RowDefinition[];
/** Custom editors register */
editors: Edition.Editors;
/**
* Custom grid plugins
* Has to be predefined during first grid init
* Every plugin should be inherited from BasePlugin
*/
plugins: RevoPlugin.PluginClass[];
/** Types
* Every type represent multiple column properties
* Types will be merged but can be replaced with column properties
*/
columnTypes: {
[name: string]: RevoGrid.ColumnType;
};
/** Theme name */
theme: ThemeSpace.Theme;
/**
* Row class property
* Define this property in rgRow object and this will be mapped as rgRow class
*/
rowClass: string;
/**
* Autosize config
* Enable columns autoSize, for more details check @autoSizeColumn plugin
* By default disabled, hence operation is not resource efficient
* true to enable with default params (double header separator click for autosize)
* or provide config
*/
autoSizeColumn: boolean | AutoSizeColumnConfig;
/**
* Enables filter plugin
* Can be boolean
* Can be filter collection
*/
filter: boolean | ColumnFilterConfig;
/**
* Trimmed rows
* Functionality which allows to hide rows from main data set
* @trimmedRows are physical rgRow indexes to hide
*/
trimmedRows: Record<number, boolean>;
/**
* Enables export plugin
* Can be boolean
* Can be export options
*/
exporting: boolean;
/**
* Group models by provided properties
* Define properties to be groped by
*/
grouping: GroupingOptions;
/**
* Defines stretch strategy for columns with @StretchColumn plugin
* if there are more space on the right last column size would be increased
*/
stretch: boolean | string;
/**
* Before edit event.
* Triggered before edit data applied.
* Use e.preventDefault() to prevent edit data set and use you own.
* Use e.val = {your value} to replace edit result with your own.
*/
beforeedit: EventEmitter<Edition.BeforeSaveDataDetails>;
/**
* Before range edit event.
* Triggered before range data applied, when range selection happened.
* Use e.preventDefault() to prevent edit data set and use you own.
*/
beforerangeedit: EventEmitter<Edition.BeforeRangeSaveDataDetails>;
/**
* After edit.
* Triggered when after data applied or Range changeged.
*/
afteredit: EventEmitter<Edition.BeforeSaveDataDetails | Edition.BeforeRangeSaveDataDetails>;
/**
* Before autofill.
* Triggered before autofill applied.
* Use e.preventDefault() to prevent edit data apply.
*/
beforeautofill: EventEmitter<Selection.ChangedRange>;
/**
* Before range apply.
* Triggered before range applied.
* Use e.preventDefault() to prevent range.
*/
beforeaange: EventEmitter<Selection.ChangedRange>;
/**
* Before rgRow order apply.
* Use e.preventDefault() to prevent rgRow order change.
*/
roworderchanged: EventEmitter<{
from: number;
to: number;
}>;
/**
* Before source update sorting apply.
* Use this event if you intended to prevent sorting on data update.
* Use e.preventDefault() to prevent sorting data change during rows source update.
*/
beforesourcesortingapply: EventEmitter;
/**
* Before sorting apply.
* Use e.preventDefault() to prevent sorting data change.
*/
beforesortingapply: EventEmitter<{
column: RevoGrid.ColumnRegular;
order: 'desc' | 'asc';
additive: boolean;
}>;
/**
* Before sorting event.
* Initial sorting triggered, if this event stops no other event called.
* Use e.preventDefault() to prevent sorting.
*/
beforesorting: EventEmitter<{
column: RevoGrid.ColumnRegular;
order: 'desc' | 'asc';
additive: boolean;
}>;
/**
* Row order change started.
* Use e.preventDefault() to prevent rgRow order change.
* Use e.text = 'new name' to change item name on start.
*/
rowdragstart: EventEmitter<{
pos: RevoGrid.PositionItem;
text: string;
}>;
/**
* On header click.
*/
headerclick: EventEmitter<RevoGrid.ColumnRegular>;
/**
* Before cell focus changed.
* Use e.preventDefault() to prevent cell focus change.
*/
beforecellfocus: EventEmitter<Edition.BeforeSaveDataDetails>;
/**
* Before grid focus lost happened.
* Use e.preventDefault() to prevent cell focus change.
*/
beforefocuslost: EventEmitter<FocusedData | null>;
/**
* Before data apply.
* You can override data source here
*/
beforesourceset: EventEmitter<{
type: RevoGrid.DimensionRows;
source: RevoGrid.DataType[];
}>;
/** After rows updated */
aftersourceset: EventEmitter<{
type: RevoGrid.DimensionRows;
source: RevoGrid.DataType[];
}>;
/** Before column update */
beforecolumnsset: EventEmitter<ColumnCollection>;
/** Before column applied but after column set gathered and viewport updated */
beforecolumnapplied: EventEmitter<ColumnCollection>;
/** Column updated */
aftercolumnsset: EventEmitter<{
columns: ColumnCollection;
order: Record<RevoGrid.ColumnProp, 'asc' | 'desc'>;
}>;
/**
* Before filter applied to data source
* Use e.preventDefault() to prevent cell focus change
* Update @collection if you wish to change filters
*/
beforefilterapply: EventEmitter<{
collection: FilterCollection;
}>;
/**
* Before filter trimmed values
* Use e.preventDefault() to prevent value trimming and filter apply
* Update @collection if you wish to change filters
* Update @itemsToFilter if you wish to filter indexes of trimming
*/
beforefiltertrimmed: EventEmitter<{
collection: FilterCollection;
itemsToFilter: Record<number, boolean>;
}>;
/**
* Before trimmed values
* Use e.preventDefault() to prevent value trimming
* Update @trimmed if you wish to filter indexes of trimming
*/
beforetrimmed: EventEmitter<{
trimmed: Record<number, boolean>;
trimmedType: string;
type: string;
}>;
/**
* Notify trimmed applied
*/
aftertrimmed: EventEmitter;
/**
* Triggered when view port scrolled
*/
viewportscroll: EventEmitter<RevoGrid.ViewPortScrollEvent>;
/**
* Before export
* Use e.preventDefault() to prevent export
* Replace data in Event in case you want to modify it in export
*/
beforeexport: EventEmitter<DataInput>;
/**
* Before edit started
* Use e.preventDefault() to prevent edit
*/
beforeeditstart: EventEmitter<Edition.BeforeSaveDataDetails>;
/**
* After column resize
* Get resized columns
*/
aftercolumnresize: EventEmitter<Record<RevoGrid.ColumnProp, RevoGrid.ColumnRegular>>;
/**
* Refreshes data viewport.
* Can be specific part as rgRow or pinned rgRow or 'all' by default.
*/
refresh(type?: RevoGrid.DimensionRows | 'all'): Promise<void>;
/** Scrolls view port to specified rgRow index */
scrollToRow(coordinate?: number): Promise<void>;
/** Scrolls view port to specified column index */
scrollToColumnIndex(coordinate?: number): Promise<void>;
/** Scrolls view port to specified column prop */
scrollToColumnProp(prop: RevoGrid.ColumnProp): Promise<void>;
/** Update columns */
updateColumns(cols: RevoGrid.ColumnRegular[]): Promise<void>;
/** Add trimmed by type */
addTrimmed(trimmed: Record<number, boolean>, trimmedType?: string, type?: RevoGrid.DimensionRows): Promise<CustomEvent<{
trimmed: Record<number, boolean>;
trimmedType: string;
type: string;
}>>;
/** Scrolls view port to coordinate */
scrollToCoordinate(cell: Partial<Selection.Cell>): Promise<void>;
/** Bring cell to edit mode */
setCellEdit(rgRow: number, prop: RevoGrid.ColumnProp, rowSource?: RevoGrid.DimensionRows): Promise<void>;
/**
* Register new virtual node inside of grid
* Used for additional items creation such as plugin elements
*/
registerVNode(elements: VNode[]): Promise<void>;
/** Get data from source */
getSource(type?: RevoGrid.DimensionRows): Promise<RevoGrid.DataType[]>;
/**
* Get data from visible part of source
* Trimmed/filtered rows will be excluded
* @param type - type of source
*/
getVisibleSource(type?: RevoGrid.DimensionRows): Promise<any[]>;
/**
* Provides access to rows internal store observer
* Can be used for plugin support
* @param type - type of source
*/
getSourceStore(type?: RevoGrid.DimensionRows): Promise<RowSource>;
/**
* Provides access to column internal store observer
* Can be used for plugin support
* @param type - type of column
*/
getColumnStore(type?: RevoGrid.DimensionCols): Promise<ColumnSource>;
/**
* Update column sorting
* @param column - full column details to update
* @param index - virtual column index
* @param order - order to apply
*/
updateColumnSorting(column: RevoGrid.ColumnRegular, index: number, order: 'asc' | 'desc', additive: boolean): Promise<RevoGrid.ColumnRegular>;
/**
* Clears column sorting
*/
clearSorting(): Promise<void>;
/**
* Receive all columns in data source
*/
getColumns(): Promise<RevoGrid.ColumnRegular[]>;
/**
* Clear current grid focus
*/
clearFocus(): Promise<void>;
/**
* Get all active plugins instances
*/
getPlugins(): Promise<RevoPlugin.Plugin[]>;
/**
* Get all active plugins instances
*/
getFocused(): Promise<FocusedData | null>;
/** Clear data which is outside of grid container */
private handleOutsideClick;
/** DRAG AND DROP */
onRowDragStarted(e: CustomEvent<{
pos: RevoGrid.PositionItem;
text: string;
event: MouseEvent;
}>): void;
onRowDragEnd(): void;
onRowDrag({ detail }: CustomEvent<RevoGrid.PositionItem>): void;
onRowMouseMove(e: CustomEvent<Selection.Cell>): void;
onBeforeEdit(e: CustomEvent<Edition.BeforeSaveDataDetails>): Promise<void>;
onBeforeRangeEdit(e: CustomEvent<Edition.BeforeRangeSaveDataDetails>): void;
onRangeChanged(e: CustomEvent<Selection.ChangedRange>): void;
onRowDropped(e: CustomEvent<{
from: number;
to: number;
}>): void;
onHeaderClick(e: CustomEvent<RevoGrid.InitialHeaderClick>): void;
onCellFocus(e: CustomEvent<Edition.BeforeSaveDataDetails>): void;
extraElements: VNode[];
uuid: string | null;
columnProvider: ColumnDataProvider;
dataProvider: DataProvider;
dimensionProvider: DimensionProvider;
viewportProvider: ViewportProvider;
private themeService;
private viewport;
private orderService;
private selectionStoreConnector;
private scrollingService;
/**
* Plugins
* Define plugins collection
*/
private internalPlugins;
private subscribers;
element: HTMLRevoGridElement;
columnChanged(newVal?: RevoGrid.ColumnDataSchema[]): void;
themeChanged(t: ThemeSpace.Theme): void;
dataChanged(source?: RevoGrid.DataType[]): void;
dataBottomChanged(newVal?: RevoGrid.DataType[]): void;
dataTopChanged(newVal?: RevoGrid.DataType[]): void;
rowDefChanged(newVal?: RevoGrid.RowDefinition[]): void;
trimmedRowsChanged(newVal?: Record<number, boolean>): void;
groupingChanged(newVal?: GroupingOptions): void;
applyStretch(isStretch: boolean | string): void;
connectedCallback(): void;
disconnectedCallback(): void;
render(): any;
}