import { SurveyModel, Event, EventBase } from "survey-core"; import { IPermission, QuestionLocation, ITableState, IColumn, IColumnData } from "./config"; import { Details } from "./extensions/detailsextensions"; import { ITableExtension, TableExtensions } from "./extensions/tableextensions"; import { ITableOptions, ITable } from "./table-interfaces"; export type TabulatorFilter = { field: string; type: string; value: any; }; export type TabulatorSortOrder = { field: string; direction: undefined | "asc" | "desc"; }; export type GetDataUsingCallbackFn = (params: { filter?: Array; sort?: Array; offset?: number; limit?: number; callback?: (response: { data: Array; totalCount: number; error?: any; }) => void; }) => void; export type GetDataUsingPromiseFn = (params: { filter?: Array; sort?: Array; offset?: number; limit?: number; }) => Promise<{ data: Array; totalCount: number; error?: any; }>; export type GetDataFn = GetDataUsingCallbackFn | GetDataUsingPromiseFn; export declare class TableEvent extends EventBase { } export declare abstract class Table implements ITable { protected _survey: SurveyModel; protected data: Array | GetDataFn; protected _options: ITableOptions; protected _columnsData: Array; static showFilesAsImages: boolean; getShowFilesAsImages(): boolean; static haveCommercialLicense: boolean; protected tableData: any; protected extensions: TableExtensions; private haveCommercialLicense; protected _columns: Array; private _columnsByName; constructor(_survey: SurveyModel, data: Array | GetDataFn, _options?: ITableOptions, _columnsData?: Array); protected renderResult: HTMLElement; protected currentPageSize: number; protected currentPageNumber: number; protected _rows: TableRow[]; protected isColumnReorderEnabled: boolean; isInitialized: boolean; protected initialize(): void; getTableData(): Array; /** * Sets pagination selector content. */ paginationSizeSelector: number[]; onColumnsVisibilityChanged: TableEvent; onColumnsLocationChanged: TableEvent; onRowRemoved: TableEvent; renderDetailActions: (container: HTMLElement, row: TableRow) => HTMLElement; getData(): Object[] | GetDataFn; get survey(): SurveyModel; get options(): ITableOptions; abstract applyFilter(value: string): void; abstract applyColumnFilter(columnName: string, value: string): void; abstract sortByColumn(columnName: string, direction: string): void; render(targetNode: HTMLElement | string): void; enableColumnReorder(): void; disableColumnReorder(): void; getPageNumber(): number; setPageNumber(value: number): void; /** * Returns current page size. */ getPageSize(): number; /** * Sets current page size. */ setPageSize(value: number): void; getCreatedRows(): TableRow[]; clearCreatedRows(): void; get useNamesAsTitles(): boolean; get itemsDelimiter(): string; protected buildColumns: (survey: SurveyModel) => IColumn[]; private isNonValueQuestion; isColumnVisible(column: IColumn): boolean; get columns(): Array; set columns(columns: Array); protected setColumns(columns: Array): void; protected invalidateColumnsByNameCache(): void; private isInitTableDataProcessingValue; get isInitTableDataProcessing(): boolean; protected initTableData(data: Object[] | GetDataFn): void; protected processLoadedDataItem(item: any): any; moveColumn(from: number, to: number): void; setColumnLocation(columnName: string, location: QuestionLocation): void; getColumnByName(columnName: string): IColumn; setColumnVisibility(columnName: string, isVisible: boolean): void; hideAllColumns(): void; showAllColumns(): void; protected setAllColumnsVisibility(isVisible: boolean): void; setColumnWidth(columnName: string, width: string | number): void; removeRow(row: TableRow): void; /** * Returns current locale of the table. * If locales more than one, the language selection dropdown will be added in the toolbar */ get locale(): string; /** * Sets locale for table. */ set locale(newLocale: string); private _lockStateChanged; lockStateChanged(): void; unlockStateChanged(): void; protected stateChanged(): void; getLocales(): Array; protected supportSoftRefresh(): boolean; protected softRefresh(): void; protected hardRefresh(): void; refresh(hard?: boolean): void; destroy(): void; get isRendered(): boolean; /** * Table state getter. */ get state(): ITableState; /** * Table state setter. */ set state(newState: ITableState); /** * Resets table state. * @since 2.3.5 */ resetState(): void; private updateColumnsFromData; /** * Fires when table state changed. */ onStateChanged: TableEvent; /** * Gets table permissions. */ get permissions(): IPermission[]; /** * Sets table permissions. */ set permissions(permissions: IPermission[]); /** * Fires when permissions changed */ onPermissionsChangedCallback: any; protected get allowSorting(): boolean; allowExtension(extension: ITableExtension): boolean; } export declare abstract class TableRow { protected table: Table; protected extensionsContainer: HTMLElement; protected detailsContainer: HTMLElement; constructor(table: Table, extensionsContainer: HTMLElement, detailsContainer: HTMLElement); details: Details; extensions: TableExtensions; private detailedRowClass; private isDetailsExpanded; onToggleDetails: Event<(sender: TableRow, options: any) => any, TableRow, any>; /** * Returns row's html element */ abstract getElement(): HTMLElement; /** * Returns data, which is displayed in the row. */ abstract getRowData(): any; /** * Returns position of row in the table's data. */ abstract getDataPosition(): number; protected isSelected: boolean; render(): void; openDetails(): void; closeDetails(): void; toggleDetails(): void; getIsSelected(): boolean; toggleSelect(): void; remove(): void; private onColumnLocationChangedCallback; destroy(): void; }