Trilium Frontend API
    Preparing search index...

    Interface Options

    interface Options {
        addRowPos?: "top" | "bottom";
        ajaxConfig?: HttpMethod | AjaxConfig;
        ajaxContentType?: "form" | "json" | AjaxContentType;
        ajaxFiltering?: boolean;
        ajaxLoader?: boolean | (() => boolean);
        ajaxLoaderError?: string;
        ajaxLoaderLoading?: string;
        ajaxParams?: {};
        ajaxRequestFunc?: (url: string, config: any, params: any) => Promise<any>;
        ajaxRequesting?: (url: string, params: any) => boolean;
        ajaxResponse?: (url: string, params: any, response: any) => any;
        ajaxSorting?: boolean;
        ajaxURL?: string;
        ajaxURLGenerator?: (url: string, config: any, params: any) => string;
        autoColumns?: boolean | "full";
        autoColumnsDefinitions?:
            | (
                (
                    columnDefinitions?: ColumnDefinition[],
                ) => Partial<ColumnDefinition>[]
            )
            | Partial<ColumnDefinition>[]
            | Record<string, Partial<ColumnDefinition>>;
        autoResize?: boolean;
        autoTables?: boolean;
        clipboard?: boolean | "copy" | "paste";
        clipboardCopyConfig?: boolean | AdditionalExportOptions;
        clipboardCopyFormatter?:
            | "table"
            | ((type: "html" | "plain", output: string) => string);
        clipboardCopyHeader?: boolean;
        clipboardCopyRowRange?: RowRangeLookup;
        clipboardCopyStyled?: boolean;
        clipboardPasteAction?: "update" | "replace" | "range" | "insert";
        clipboardPasteParser?: string | ((clipboard: any) => any[]);
        columnCalcs?: boolean | "table" | "both" | "group";
        columnDefaults?: Partial<ColumnDefinition>;
        columnHeaderSortMulti?: boolean;
        columnHeaderVertAlign?: VerticalAlign;
        columns?: ColumnDefinition[];
        data?: any[];
        dataLoader?: boolean;
        dataLoaderError?: string;
        dataLoaderErrorTimeout?: number;
        dataLoaderLoading?: string | HTMLElement;
        dataReceiveParams?: Record<string, string>;
        dataSendParams?: Record<string, string>;
        dataTree?: boolean;
        dataTreeBranchElement?: string | boolean;
        dataTreeChildColumnCalcs?: boolean;
        dataTreeChildField?: string;
        dataTreeChildIndent?: number;
        dataTreeCollapseElement?: string | boolean | HTMLElement;
        dataTreeElementColumn?: string | boolean;
        dataTreeExpandElement?: string | boolean | HTMLElement;
        dataTreeFilter?: boolean;
        dataTreeSelectPropagate?: boolean;
        dataTreeSort?: boolean;
        dataTreeStartExpanded?:
            | boolean
            | boolean[]
            | ((row: RowComponent, level: number) => boolean);
        debugDeprecation?: boolean;
        debugEventsExternal?: boolean;
        debugEventsInternal?: boolean;
        debugInitialization?: boolean;
        debugInvalidComponentFuncs?: boolean;
        debugInvalidOptions?: boolean;
        downloadConfig?: AdditionalExportOptions;
        downloadDataFormatter?: (data: any) => any;
        downloadEncoder?: (fileContents: any, mimeType: string) => false | Blob;
        downloadReady?: (fileContents: any, blob: Blob) => false | Blob;
        downloadRowRange?: RowRangeLookup;
        editorEmptyValue?: any;
        editorEmptyValueFunc?: (value: unknown) => boolean;
        editTriggerEvent?: "click" | "dblclick" | "focus";
        filterMode?: SortMode;
        footerElement?: string | HTMLElement;
        frozenRows?: number | string[] | ((row: RowComponent) => boolean);
        frozenRowsField?: string;
        groupBy?: GroupArg;
        groupClickMenu?: GroupContextMenuSignature;
        groupClickPopup?: string;
        groupClosedShowCalcs?: boolean;
        groupContextMenu?: MenuObject<GroupComponent>[];
        groupContextPopup?: string;
        groupDblClickMenu?: GroupContextMenuSignature;
        groupDblClickPopup?: string;
        groupDblPopup?: string;
        groupHeader?:
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => string
            )
            | ((value: any, count: number, data: any) => string)[];
        groupHeaderClipboard?:
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => string
            )
            | ((value: any, count: number, data: any) => string)[];
        groupHeaderDownload?:
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => string
            )
            | ((value: any, count: number, data: any) => string)[];
        groupHeaderHtmlOutput?:
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => string
            )
            | ((value: any, count: number, data: any) => string)[];
        groupHeaderPrint?:
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => string
            )
            | ((value: any, count: number, data: any) => string)[];
        groupStartOpen?:
            | boolean
            | boolean[]
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => boolean
            )
            | (
                | boolean
                | (
                    (
                        value: any,
                        count: number,
                        data: any,
                        group: GroupComponent,
                    ) => boolean
                )
            )[];
        groupToggleElement?: false | "header" | "arrow";
        groupUpdateOnCellEdit?: boolean;
        groupValues?: GroupValuesArg;
        headerFilterLiveFilterDelay?: number;
        headerSort?: boolean;
        headerSortClickElement?: "header" | "icon";
        headerSortElement?:
            | string
            | ((column: ColumnComponent, dir: "desc" | "none" | "asc") => any);
        headerVisible?: boolean;
        height?: string | number | false;
        history?: boolean;
        htmlOutputConfig?: AdditionalExportOptions;
        importFormat?:
            | "csv"
            | "json"
            | "array"
            | ((fileContents: string) => unknown[]);
        importReader?: "binary" | "text" | "url" | "buffer";
        index?: string | number;
        initialFilter?: Filter[];
        initialHeaderFilter?: Pick<Filter, "value" | "field">[];
        initialSort?: Sorter[];
        invalidOptionWarning?: boolean;
        invalidOptionWarnings?: boolean;
        keybindings?: false | KeyBinding;
        langs?: any;
        layout?:
            | "fitData"
            | "fitColumns"
            | "fitDataFill"
            | "fitDataStretch"
            | "fitDataTable";
        layoutColumnsOnNewData?: boolean;
        locale?: string
        | boolean;
        maxHeight?: string | number;
        minHeight?: string | number;
        movableColumns?: boolean;
        movableRows?: boolean;
        movableRowsConnectedElements?: string | HTMLElement;
        movableRowsConnectedTables?:
            | string
            | string[]
            | HTMLElement
            | HTMLElement[];
        movableRowsReceiver?: | "update"
        | "add"
        | "replace"
        | "insert"
        | (
            (
                fromRow: RowComponent,
                toRow: RowComponent,
                fromTable: Tabulator,
            ) => any
        );
        movableRowsSender?:
            | false
            | "delete"
            | (
                (
                    fromRow: RowComponent,
                    toRow: RowComponent,
                    toTable: Tabulator,
                ) => any
            );
        nestedFieldSeparator?: string | boolean;
        pagination?: boolean;
        paginationAddRow?: "table" | "page";
        paginationButtonCount?: number;
        paginationCounter?:
            | "rows"
            | "pages"
            | (
                (
                    pageSize: number,
                    currentRow: number,
                    currentPage: number,
                    totalRows: number,
                    totalPages: number,
                ) => string | HTMLElement
            );
        paginationCounterElement?: string | HTMLElement;
        paginationElement?: string | HTMLElement;
        paginationInitialPage?: number;
        paginationMode?: SortMode;
        paginationSize?: number | true;
        paginationSizeSelector?: true | any[] | number[];
        persistence?: true | PersistenceOptions;
        persistenceID?: string;
        persistenceMode?: true | "local" | "cookie";
        persistenceReaderFunc?: (id: string, type: keyof PersistenceOptions) => any;
        persistenceWriterFunc?: (
            id: string,
            type: keyof PersistenceOptions,
            data: any,
        ) => any;
        persistentFilter?: boolean;
        persistentLayout?: boolean;
        persistentSort?: boolean;
        placeholder?:
            | string
            | HTMLElement
            | ((this: Tabulator | TabulatorFull) => string);
        placeholderHeaderFilter?:
            | string
            | HTMLElement
            | ((this: Tabulator | TabulatorFull) => string);
        popupContainer?: string | boolean | HTMLElement;
        printAsHtml?: boolean;
        printConfig?: AdditionalExportOptions;
        printFooter?: StandardStringParam;
        printFormatter?: (tableHolderElement: any, tableElement: any) => any;
        printHeader?: StandardStringParam;
        printRowRange?: RowRangeLookup | (() => RowComponent[]);
        printStyled?: boolean;
        progressiveLoad?: "load" | "scroll";
        progressiveLoadDelay?: number;
        progressiveLoadScrollMargin?: number;
        reactiveData?: boolean;
        renderHorizontal?: RenderMode;
        renderVertical?: RenderMode;
        renderVerticalBuffer?: number | boolean;
        resizableColumnFit?: boolean;
        resizableColumnGuide?: boolean;
        resizableRowGuide?: boolean;
        resizableRows?: boolean;
        responsiveLayout?: boolean | "hide" | "collapse";
        responsiveLayoutCollapseFormatter?: (data: any[]) => any;
        responsiveLayoutCollapseStartOpen?: boolean;
        responsiveLayoutCollapseUseFormatters?: boolean;
        rowClickMenu?: RowContextMenuSignature;
        rowClickPopup?: string;
        rowContextMenu?: RowContextMenuSignature;
        rowContextPopup?: string;
        rowDblClickMenu?: RowContextMenuSignature;
        rowDblClickPopup?: string;
        rowFormatter?: (row: RowComponent) => any;
        rowFormatterClipboard?: false | ((row: RowComponent) => any);
        rowFormatterHtmlOutput?: false | ((row: RowComponent) => any);
        rowFormatterPrint?: false | ((row: RowComponent) => any);
        rowHeader?:
            | boolean
            | {
                cellClick?: (e: MouseEvent, cell: CellComponent) => void;
                field?: string;
                formatter?: string;
                frozen?: boolean;
                headerHozAlign?: ColumnDefinitionAlign;
                headerSort?: boolean;
                hozAlign?: ColumnDefinitionAlign;
                minWidth?: number;
                resizable?: boolean;
                rowHandle?: boolean;
                titleFormatter?: string;
                width?: number;
            };
        rowHeight?: number;
        scrollToColumnIfVisible?: boolean;
        scrollToColumnPosition?: ScrollToColumnPosition;
        scrollToRowIfVisible?: boolean;
        scrollToRowPosition?: ScrollToRowPosition;
        selectableRange?: number
        | boolean;
        selectableRangeClearCells?: boolean;
        selectableRangeClearCellsValue?: unknown;
        selectableRangeColumns?: boolean;
        selectableRangeRows?: boolean;
        selectableRows?: number | boolean | "highlight";
        selectableRowsCheck?: (row: RowComponent) => boolean;
        selectableRowsPersistence?: boolean;
        selectableRowsRangeMode?: "click";
        selectableRowsRollingSelection?: boolean;
        sortMode?: SortMode;
        sortOrderReverse?: boolean;
        spreadsheet?: boolean;
        spreadsheetColumnDefinition?: { editor: string; resizable: string };
        spreadsheetColumns?: number;
        spreadsheetOutputFull?: boolean;
        spreadsheetRows?: number;
        spreadsheetSheets?: SpreadsheetSheet[];
        spreadsheetSheetTabs?: boolean;
        tabEndNewRow?: boolean | JSONRecord | ((row: RowComponent) => any);
        textDirection?: TextDirection;
        validationMode?: "manual" | "highlight" | "blocking";
    }

    Hierarchy (View Summary)

    Index

    Properties

    addRowPos? ajaxConfig? ajaxContentType? ajaxFiltering? ajaxLoader? ajaxLoaderError? ajaxLoaderLoading? ajaxParams? ajaxRequestFunc? ajaxRequesting? ajaxResponse? ajaxSorting? ajaxURL? ajaxURLGenerator? autoColumns? autoColumnsDefinitions? autoResize? autoTables? clipboard? clipboardCopyConfig? clipboardCopyFormatter? clipboardCopyHeader? clipboardCopyRowRange? clipboardCopyStyled? clipboardPasteAction? clipboardPasteParser? columnCalcs? columnDefaults? columnHeaderSortMulti? columnHeaderVertAlign? columns? data? dataLoader? dataLoaderError? dataLoaderErrorTimeout? dataLoaderLoading? dataReceiveParams? dataSendParams? dataTree? dataTreeBranchElement? dataTreeChildColumnCalcs? dataTreeChildField? dataTreeChildIndent? dataTreeCollapseElement? dataTreeElementColumn? dataTreeExpandElement? dataTreeFilter? dataTreeSelectPropagate? dataTreeSort? dataTreeStartExpanded? debugDeprecation? debugEventsExternal? debugEventsInternal? debugInitialization? debugInvalidComponentFuncs? debugInvalidOptions? downloadConfig? downloadDataFormatter? downloadEncoder? downloadReady? downloadRowRange? editorEmptyValue? editorEmptyValueFunc? editTriggerEvent? filterMode? footerElement? frozenRows? frozenRowsField? groupBy? groupClickMenu? groupClickPopup? groupClosedShowCalcs? groupContextMenu? groupContextPopup? groupDblClickMenu? groupDblClickPopup? groupDblPopup? groupHeader? groupHeaderClipboard? groupHeaderDownload? groupHeaderHtmlOutput? groupHeaderPrint? groupStartOpen? groupToggleElement? groupUpdateOnCellEdit? groupValues? headerFilterLiveFilterDelay? headerSort? headerSortClickElement? headerSortElement? headerVisible? height? history? htmlOutputConfig? importFormat? importReader? index? initialFilter? initialHeaderFilter? initialSort? invalidOptionWarning? invalidOptionWarnings? keybindings? langs? layout? layoutColumnsOnNewData? locale? maxHeight? minHeight? movableColumns? movableRows? movableRowsConnectedElements? movableRowsConnectedTables? movableRowsReceiver? movableRowsSender? nestedFieldSeparator? pagination? paginationAddRow? paginationButtonCount? paginationCounter? paginationCounterElement? paginationElement? paginationInitialPage? paginationMode? paginationSize? paginationSizeSelector? persistence? persistenceID? persistenceMode? persistenceReaderFunc? persistenceWriterFunc? persistentFilter? persistentLayout? persistentSort? placeholder? placeholderHeaderFilter? popupContainer? printAsHtml? printConfig? printFooter? printFormatter? printHeader? printRowRange? printStyled? progressiveLoad? progressiveLoadDelay? progressiveLoadScrollMargin? reactiveData? renderHorizontal? renderVertical? renderVerticalBuffer? resizableColumnFit? resizableColumnGuide? resizableRowGuide? resizableRows? responsiveLayout? responsiveLayoutCollapseFormatter? responsiveLayoutCollapseStartOpen? responsiveLayoutCollapseUseFormatters? rowClickMenu? rowClickPopup? rowContextMenu? rowContextPopup? rowDblClickMenu? rowDblClickPopup? rowFormatter? rowFormatterClipboard? rowFormatterHtmlOutput? rowFormatterPrint? rowHeader? rowHeight? scrollToColumnIfVisible? scrollToColumnPosition? scrollToRowIfVisible? scrollToRowPosition? selectableRange? selectableRangeClearCells? selectableRangeClearCellsValue? selectableRangeColumns? selectableRangeRows? selectableRows? selectableRowsCheck? selectableRowsPersistence? selectableRowsRangeMode? selectableRowsRollingSelection? sortMode? sortOrderReverse? spreadsheet? spreadsheetColumnDefinition? spreadsheetColumns? spreadsheetOutputFull? spreadsheetRows? spreadsheetSheets? spreadsheetSheetTabs? tabEndNewRow? textDirection? validationMode?

    Properties

    addRowPos?: "top" | "bottom"

    The position in the table for new rows to be added, "bottom" or "top".

    ajaxConfig?: HttpMethod | AjaxConfig

    The HTTP request type for Ajax requests or config object for the request.

    ajaxContentType?: "form" | "json" | AjaxContentType

    When using a request method other than "GET" Tabulator will send any parameters with a content type of form data. You can change the content type with the ajaxContentType option. This will ensure parameters are sent in the format you expect, with the correct headers. * * The ajaxContentType option can take one of two values: "form" - send parameters as form data (default option) "json" - send parameters as JSON encoded string If you want to use a custom content type then you can pass a content type formatter object into the ajaxContentType option. this object must have two properties, the headers property should contain all headers that should be sent with the request and the body property should contain a function that returns the body content of the request

    ajaxFiltering?: boolean

    Send filter config to server instead of processing locally

    ajaxLoader?: boolean | (() => boolean)

    Show loader while data is loading, can also take a function that must return a boolean.

    ajaxLoaderError?: string

    html for the loader element in the event of an error.

    ajaxLoaderLoading?: string

    html for loader element.

    ajaxParams?: {}

    Parameters to be passed to remote Ajax data loading request.

    ajaxRequestFunc?: (url: string, config: any, params: any) => Promise<any>

    callback function to replace inbuilt ajax request functionality

    ajaxRequesting?: (url: string, params: any) => boolean

    The ajaxRequesting callback is triggered when ever an ajax request is made.

    ajaxResponse?: (url: string, params: any, response: any) => any

    The ajaxResponse callback is triggered when a successful ajax request has been made. This callback can also be used to modify the received data before it is parsed by the table. If you use this callback it must return the data to be parsed by Tabulator, otherwise no data will be rendered.

    ajaxSorting?: boolean

    Send sorter config to server instead of processing locally

    ajaxURL?: string

    If you wish to retrieve your data from a remote source you can set the URL for the request in the ajaxURL option.

    ajaxURLGenerator?: (url: string, config: any, params: any) => string

    If you need more control over the url of the request that you can get from the ajaxURL and ajaxParams properties, the you can use the ajaxURLGenerator property to pass in a callback that will generate the URL for you.

    The callback should return a string representing the URL to be requested.

    autoColumns?: boolean | "full"

    If you set the autoColumns option to true, every time data is loaded into the table through the data option or through the setData function, Tabulator will examine the first row of the data and build columns to match that data.

    autoColumnsDefinitions?:
        | (
            (columnDefinitions?: ColumnDefinition[]) => Partial<ColumnDefinition>[]
        )
        | Partial<ColumnDefinition>[]
        | Record<string, Partial<ColumnDefinition>>
    autoResize?: boolean

    Tabulator will automatically attempt to redraw the data contained in the table if the containing element for the table is resized. To disable this functionality, set the autoResize property to false.

    autoTables?: boolean
    clipboard?: boolean | "copy" | "paste"

    You can enable clipboard functionality using the clipboard config option. It can take one of four possible values: true - enable clipboard copy and paste "copy" - enable only copy functionality "paste" - enable only paste functionality false - disable all clipboard functionality (default)

    clipboardCopyConfig?: boolean | AdditionalExportOptions

    By default Tabulator includes column headers, row groups and column calculations in the clipboard output.

    You can choose to remove column headers groups, row groups or column calculations from the output data by setting the values in the clipboardCopyConfig option in the table definition:

    clipboardCopyFormatter?:
        | "table"
        | ((type: "html" | "plain", output: string) => string)

    You can alter the finished output to the clipboard using the clipboardCopyFormatter callback. The callback function receives two arguments, the first is a string representing the type of content to be formatted (either "plain" or "html" depending on the type of data entering the clipboard). The second argument is the string that is about to be inserted into the clipboard. The function and should return a string that will be inserted into the clipboard.

    clipboardCopyHeader?: boolean

    By default Tabulator will include the column header titles in any clipboard data, this can be turned off by passing a value of false to the clipboardCopyHeader property:

    clipboardCopyRowRange?: RowRangeLookup

    The clipboardCopyRowRange option takes a Row Range Lookup value and allows you to choose which rows are included in the clipboard output:

    clipboardCopyStyled?: boolean

    By default Tabulator will copy some of the tables styling along with the data to give a better visual appearance when pasted into other documents.

    If you want to only copy the un-styled data then you should set the clipboardCopyStyled option to false in the table options object:

    clipboardPasteAction?: "update" | "replace" | "range" | "insert"

    Once the data has been parsed into row data, it will be passed to a paste action to be added to the table. There are three inbuilt paste actions:

    insert - Inserts data into the table using the addRows function (default) update - Updates data in the table using the updateOrAddData function replace - replaces all data in the table using the setData function

    clipboardPasteParser?: string | ((clipboard: any) => any[])

    Tabulator has one built in paste parser, that is designed to take a table formatted text string from the clipboard and turn it into row data. it breaks the data into rows on a newline character \n and breaks the rows down to columns on a tab character \t. It will then attempt to work out which columns in the data correspond to columns in the table. It tries three different ways to achieve this. First it checks the values of all columns in the first row of data to see if they match the titles of columns in the table. If any of the columns don't match it then tries the same approach but with the column fields. If either of those options match, Tabulator will map those columns to the incoming data and import it into rows. If there is no match then Tabulator will assume the columns in the data are in the same order as the visible columns in the table and import them that way.

    The inbuilt parser will reject any clipboard data that does not contain at least one row and two columns, in that case the clipboardPasteError will be triggered.

    If you extend the clipboard module to add your own parser, you can set it to be used as default with the clipboardPasteParser property. Built-in parsers are "table" and "range".

    columnCalcs?: boolean | "table" | "both" | "group"

    By default column calculations are shown at the top and bottom of the table, unless row grouping is enabled, in which case they are shown at the top and bottom of each group.

    The columnCalcs option lets you decided where the calculations should be displayed, it can take one of four values:

    true - show calcs at top and bottom of the table, unless grouped, then show in groups (boolean, default) both - show calcs at top and bottom of the table and show in groups table - show calcs at top and bottom of the table only group - show calcs in groups only

    columnDefaults?: Partial<ColumnDefinition>
    columnHeaderSortMulti?: boolean

    multiple or single column sorting

    columnHeaderVertAlign?: VerticalAlign

    You can use the columnHeaderVertAlign option to set how the text in your column headers should be vertically.

    columns?: ColumnDefinition[]

    The column definitions are provided to Tabulator in the columns property of the table constructor object and should take the format of an array of objects, with each object representing the configuration of one column.

    data?: any[]

    Array to hold data that should be loaded on table creation.

    dataLoader?: boolean
    dataLoaderError?: string
    dataLoaderErrorTimeout?: number
    dataLoaderLoading?: string | HTMLElement
    dataReceiveParams?: Record<string, string>

    Lookup list to link expected data fields from the server to their function

    default: {
    "current_page": "current_page",
    "last_page": "last_page",
    "data": "data",
    }
    dataSendParams?: Record<string, string>

    Lookup list to link fields expected by the server to their function

    default: {
    "page": "page",
    "size": "size",
    "sorters": "sorters",
    "filters": "filters",
    }
    dataTree?: boolean

    To enable data trees in your table, set the dataTree property to true in your table constructor:

    dataTreeBranchElement?: string | boolean

    Show tree branch icon.

    dataTreeChildColumnCalcs?: boolean

    When you are using the dataTree option with your table, the column calculations will by default only use the data for the top level rows and will ignore any children. To include child rows in the column calculations set the dataTreeChildColumnCalcs option to true in the table constructor.

    dataTreeChildField?: string

    By default Tabulator will look for child rows in the _children field of a row data object. You can change this to look in a different field using the dataTreeChildField property in your table constructor:

    dataTreeChildIndent?: number

    Tree level indent in pixels

    dataTreeCollapseElement?: string | boolean | HTMLElement

    The toggle button that allows users to collapse and expand the column can be customized to meet your needs. There are two options, dataTreeExpandElement and dataTreeCollapseElement, that can be set to replace the default toggle elements with your own.

    Both options can take either an html string representing the contents of the toggle element

    dataTreeElementColumn?: string | boolean

    By default the toggle element will be inserted into the first column on the table. If you want the toggle element to be inserted in a different column you can pass the field name of the column to the dataTreeElementColumn setup option.

    dataTreeExpandElement?: string | boolean | HTMLElement

    The toggle button that allows users to expand the column.

    dataTreeFilter?: boolean
    dataTreeSelectPropagate?: boolean

    Propagate selection events from parent rows to children.

    dataTreeSort?: boolean
    dataTreeStartExpanded?:
        | boolean
        | boolean[]
        | ((row: RowComponent, level: number) => boolean)

    By default all nodes on the tree will start collapsed, you can customize the initial expansion state of the tree using the dataTreeStartExpanded option.* This option can take one of three possible value types, either a boolean to indicate whether all nodes should start expanded or collapsed:

    debugDeprecation?: boolean

    Disable deprecation warnings

    debugEventsExternal?: boolean

    The debugEventsExternal option will create a console log for every external event that is fired so you can gain an understanding of which events you should be binding to.

    debugEventsInternal?: boolean

    The debugEventsInternal option will create a console log for every internal event that is fired so you can gain an understanding of which events you should be subscribing to in your modules.

    debugInitialization?: boolean

    Enabled by default this will provide a console warning if you try and call a function on the table before it has been initialized.

    debugInvalidComponentFuncs?: boolean

    Disable component function warnings

    debugInvalidOptions?: boolean

    Enabled by default this will provide a console warning if you are trying to set an option on the table that does not exist. With the new optional modular structure this is particularly valuable as it will prompt you if you are trying to use an option for a module that has not been installed

    downloadConfig?: AdditionalExportOptions

    By default Tabulator includes column headers, row groups and column calculations in the download output.

    You can choose to remove column headers groups, row groups or column calculations from the output data by setting the values in the downloadConfig option in the table definition:

    downloadDataFormatter?: (data: any) => any

    If you want to make any changes to the table data before it is parsed into the download file you can pass a mutator function to the downloadDataFormatter callback.

    downloadEncoder?: (fileContents: any, mimeType: string) => false | Blob

    The downloadEncoder callback allows you to intercept the download file data before the users is prompted to save the file.

    The first argument of the function is the file contents returned from the downloader, the second argument is the suggested mime type for the output. The function is should return a blob of the file to be downloaded.

    downloadReady?: (fileContents: any, blob: Blob) => false | Blob

    The downloadReady callback allows you to intercept the download file data before the users is prompted to save the file.

    In order for the download to proceed the downloadReady callback is expected to return a blob of file to be downloaded.

    If you would prefer to abort the download you can return false from this callback. This could be useful for example if you want to send the created file to a server via ajax rather than allowing the user to download the file.

    downloadRowRange?: RowRangeLookup

    By default, only the active rows (rows that have passed filtering) will be included in the download the downloadRowRange option takes a Row Range Lookup value and allows you to choose which rows are included in the download output.

    editorEmptyValue?: any

    The value to set in the cell after the user has finished editing the cell.

    editorEmptyValueFunc?: (value: unknown) => boolean

    The function to determine if the value is empty.

    editTriggerEvent?: "click" | "dblclick" | "focus"

    The editTriggerEvent option lets you choose which type of interaction event will trigger an edit on a cell.

    var table = new Tabulator("#example-table", {
    editTriggerEvent:"dblclick", // trigger edit on double click
    });

    This option can take one of three values:

    - focus - trigger edit when the cell has focus (default)
    - click - trigger edit on single click on cell
    - dblclick - trigger edit on double click on cell

    This option does not affect navigation behavior, cells edits will still be triggered when they are navigated to
    through arrow keys or tabs.
    filterMode?: SortMode
    footerElement?: string | HTMLElement

    Footer element to display for the table.

    frozenRows?: number | string[] | ((row: RowComponent) => boolean)

    Freeze rows of data

    frozenRowsField?: string
    groupBy?: GroupArg

    String/function to select field to group rows by

    groupClickMenu?: GroupContextMenuSignature
    groupClickPopup?: string
    groupClosedShowCalcs?: boolean

    show/hide column calculations when group is closed.

    groupContextMenu?: MenuObject<GroupComponent>[]
    groupContextPopup?: string
    groupDblClickMenu?: GroupContextMenuSignature
    groupDblClickPopup?: string
    groupDblPopup?: string
    groupHeader?:
        | (
            (value: any, count: number, data: any, group: GroupComponent) => string
        )
        | ((value: any, count: number, data: any) => string)[]

    You can use the setGroupHeader function to change the header generation function for each group. This function has one argument and takes the same values as passed to the groupHeader setup option.

    groupHeaderClipboard?:
        | (
            (value: any, count: number, data: any, group: GroupComponent) => string
        )
        | ((value: any, count: number, data: any) => string)[]

    When copying to clipboard you may want to apply a different group header from the one usually used in the table. You can now do this using the groupHeaderClipboard table option, which takes the same inputs as the standard groupHeader property.

    groupHeaderDownload?:
        | (
            (value: any, count: number, data: any, group: GroupComponent) => string
        )
        | ((value: any, count: number, data: any) => string)[]
    groupHeaderHtmlOutput?:
        | (
            (value: any, count: number, data: any, group: GroupComponent) => string
        )
        | ((value: any, count: number, data: any) => string)[]

    When the getHtml function is called you may want to apply a different group header from the one usually used in the table. You can now do this using the groupHeaderHtmlOutput table option, which takes the same inputs as the standard groupHeader property.

    groupHeaderPrint?:
        | (
            (value: any, count: number, data: any, group: GroupComponent) => string
        )
        | ((value: any, count: number, data: any) => string)[]

    When printing you may want to apply a different group header from the one usually used in the table. You can now do this using the groupHeaderPrint table option, which takes the same inputs as the standard groupHeader property.

    groupStartOpen?:
        | boolean
        | boolean[]
        | (
            (
                value: any,
                count: number,
                data: any,
                group: GroupComponent,
            ) => boolean
        )
        | (
            | boolean
            | (
                (
                    value: any,
                    count: number,
                    data: any,
                    group: GroupComponent,
                ) => boolean
            )
        )[]

    You can set the default open state of groups using the groupStartOpen property* * This can take one of three possible values:

    true - all groups start open (default value) false - all groups start closed function() - a callback to decide if a group should start open or closed Group Open Function If you want to decide on a group by group basis which should start open or closed then you can pass a function to the groupStartOpen property. This should return true if the group should start open or false if the group should start closed.

    groupToggleElement?: false | "header" | "arrow"

    By default Tabulator allows users to toggle a group open or closed by clicking on the arrow icon in the left of the group header. If you would prefer a different behavior you can use the groupToggleElement option to choose a different option:* * The option can take one of three values: arrow - toggle group on arrow element click header - toggle group on click anywhere on the group header element false - prevent clicking anywhere in the group toggling the group

    groupUpdateOnCellEdit?: boolean
    groupValues?: GroupValuesArg

    By default Tabulator will create groups for rows based on the values contained in the row data. if you want to explicitly define which field values groups should be created for at each level, you can use the groupValues option.

    This option takes an array of value arrays, each item in the first array should be a list of acceptable field values for groups at that level

    headerFilterLiveFilterDelay?: number

    When using real time header filtering, Tabulator will wait 300 milliseconds after a keystroke before triggering the filter. You can customize this delay by using the headerFilterLiveFilterDelay table setup option.

    headerSort?: boolean

    The headerSort option can now be set in the table options to affect all columns as well as in column definitions.

    headerSortClickElement?: "header" | "icon"
    headerSortElement?:
        | string
        | ((column: ColumnComponent, dir: "desc" | "none" | "asc") => any)
    headerVisible?: boolean

    By setting the headerVisible option to false you can hide the column headers and present the table as a simple list if needed.

    height?: string | number | false

    Sets the height of the containing element, can be set to any valid height css value. If set to false (the default), the height of the table will resize to fit the table data.

    history?: boolean

    Enable user interaction history functionality

    htmlOutputConfig?: AdditionalExportOptions
    importFormat?: "csv" | "json" | "array" | ((fileContents: string) => unknown[])
    importReader?: "binary" | "text" | "url" | "buffer"

    By default Tabulator will read in the file as plain text, which is the format used by all the built in importers. If you need to read the file data in a different format then you can use the importReader option to instruct the file reader to read in the file in a different format.

    index?: string | number

    A unique index value should be present for each row of data if you want to be able to programmatically alter that data at a later point, this should be either numeric or a string. By default Tabulator will look for this value in the id field for the data. If you wish to use a different field as the index, set this using the index option parameter.

    initialFilter?: Filter[]

    Array of filters to be applied on load.

    initialHeaderFilter?: Pick<Filter, "value" | "field">[]

    array of initial values for header filters.

    initialSort?: Sorter[]

    Array of sorters to be applied on load.

    invalidOptionWarning?: boolean
    invalidOptionWarnings?: boolean

    Setting the invalidOptionWarnings option to false will disable console warning messages for invalid properties in the table constructor and column definition object.

    keybindings?: false | KeyBinding

    Keybinding configuration object.

    langs?: any

    You can store as many languages as you like, creating an object inside the langs object with a property of the locale code for that language. A list of locale codes can be found here.

    At present there are three parts of the table that can be localized, the column headers, the header filter placeholder text and the pagination buttons. To localize the pagination buttons, create a pagination property inside your language object and give it the properties outlined below.

    If you wish you can also localize column titles by adding a columns property to your language object. You should store a property of the field name of the column you wish to change, with a value of its title. Any fields that match this will use this title instead of the one provided by the column definition array.

    layout?:
        | "fitData"
        | "fitColumns"
        | "fitDataFill"
        | "fitDataStretch"
        | "fitDataTable"

    By default Tabulator will use the fitData layout mode, which will resize the tables columns to fit the data held in each column, unless you specify a width or minWidth in the column constructor. If the width of all columns exceeds the width of the containing element, a scroll bar will appear.

    layoutColumnsOnNewData?: boolean

    To keep the layout of the columns consistent, once the column widths have been set on the first data load (either from the data property in the constructor or the setData function) they will not be changed when new data is loaded.

    If you would prefer that the column widths adjust to the data each time you load it into the table you can set the layoutColumnsOnNewData property to true.

    locale?: string | boolean

    You can set the current local in one of two ways. If you want to set it when the table is created, simply include the locale option in your Tabulator constructor. You can either pass in a string matching one of the language options you have defined, or pass in the boolean true which will cause Tabulator to auto-detect the browsers language settings from the navigator.language object.

    maxHeight?: string | number

    Can be set to any valid CSS value. By setting this you can allow your table to expand to fit the data, but not overflow its parent element. When there are too many rows to fit in the available space, the vertical scroll bar will be shown. This has the added benefit of improving load times on larger tables

    minHeight?: string | number

    With a variable table height you can set the minimum height of the table either defined in the min-height CSS property for the element or set it using the minHeight option in the table constructor, this can be set to any valid CSS value.

    movableColumns?: boolean

    To allow the user to move columns along the table, set the movableColumns parameter in the options:

    movableRows?: boolean

    To allow the user to move rows up and down the table, set the movableRows parameter in the options:

    movableRowsConnectedElements?: string | HTMLElement
    movableRowsConnectedTables?: string | string[] | HTMLElement | HTMLElement[]

    Tabulator also allows you to move rows between tables. To enable this you should supply either a valid CSS selector string a DOM node for the table or the Tabulator object for the table to the movableRowsConnectedTables option. if you want to connect to multiple tables then you can pass in an array of values to this option.

    movableRowsReceiver?:
        | "update"
        | "add"
        | "replace"
        | "insert"
        | (
            (
                fromRow: RowComponent,
                toRow: RowComponent,
                fromTable: Tabulator,
            ) => any
        )

    The movableRowsReceiver option should be set on the receiving tables, and sets the action that should be taken when the row is dropped into the table. There are several inbuilt receiver functions:

    • insert - inserts row next to the row it was dropped on, if not dropped on a row it is added to the table (default)
    • add - adds row to the table
    • update - updates the row it is dropped on with the sent rows data
    • replace - replaces the row it is dropped on with the sent row
    movableRowsSender?:
        | false
        | "delete"
        | ((fromRow: RowComponent, toRow: RowComponent, toTable: Tabulator) => any)

    The movableRowsSender option should be set on the sending table, and sets the action that should be taken after the row has been successfully dropped into the receiving table. There are several inbuilt sender functions:

    • false - do nothing(default)
    • delete - deletes the row from the table You can also pass a callback to the movableRowsSender option for custom sender functionality
    nestedFieldSeparator?: string | boolean

    If you need to use the . character as part of your field name, you can change the separator to any other character using the nestedFieldSeparator option Set to false to disable nested data parsing

    pagination?: boolean
    paginationAddRow?: "table" | "page"

    When using the addRow function on a paginated table, rows will be added relative to the current page (ie to the top or bottom of the current page), with overflowing rows being shifted onto the next page.

    If you would prefer rows to be added relative to the table (firs/last page) then you can use the paginationAddRow option. it can take one of two values:

    page - add rows relative to current page (default) table - add rows relative to the table

    paginationButtonCount?: number

    The number of pagination page buttons shown in the footer using the paginationButtonCount option. By default this has a value of 5.

    paginationCounter?:
        | "rows"
        | "pages"
        | (
            (
                pageSize: number,
                currentRow: number,
                currentPage: number,
                totalRows: number,
                totalPages: number,
            ) => string | HTMLElement
        )

    You can choose to display a pagination counter in the bottom left of the footer that shows a summary of the current number of rows shown out of the total. If you want to have a fully customized counter, then you can pass a function to the paginationCounter option

    The formatter function accepts 5 arguments:

    pageSize - Number of rows shown per page currentRow - First visible row position currentPage - Current page totalRows - Total rows in table totalPages - Total pages in table The function must return the contents of the counter, either the text value of the counter, valid HTML or a DOM node

    paginationCounterElement?: string | HTMLElement

    By default the counter will be displayed in the left of the table footer. If you would like it displayed in another element pass a DOM node or a CSS selector for that element.

    paginationElement?: string | HTMLElement

    By default the pagination controls are added to the footer of the table. If you wish the controls to be created in another element pass a DOM node or a CSS selector for that element to the paginationElement option.

    paginationInitialPage?: number

    Specify that a specific page should be loaded when the table first load.

    paginationMode?: SortMode
    paginationSize?: number | true

    Set the number of rows in each page.

    paginationSizeSelector?: true | any[] | number[]

    Setting this option to true will cause Tabulator to create a list of page size options, that are multiples of the current page size. In the example below, the list will have the values of 5, 10, 15 and 20.

    When using the page size selector like this, if you use the setPageSize function to set the page size to a value not in the list, the list will be regenerated using the new page size as the starting valuer

    persistence?: true | PersistenceOptions

    By setting the persistence property to true the table will persist the sort, filter, group (groupBy, groupStartOpen, groupHeader), pagination (paginationSize), and column (title, width, visibility, order) configuration of the table.

    persistenceID?: string

    ID tag used to identify persistent storage information.

    persistenceMode?: true | "local" | "cookie"

    Persistence information can either be stored in a cookie or in the localStorage object, you can use the persistenceMode to choose which. It can take three possible values:

    local - (string) Store the persistence information in the localStorage object cookie - (string) Store the persistence information in a cookie true - (boolean) check if localStorage is available and store persistence information, otherwise store in cookie (Default option)

    persistenceReaderFunc?: (id: string, type: keyof PersistenceOptions) => any

    The persistenceReaderFunc function will receive two arguments, the persistance id of the table, and the type of data to be written. This function must synchronously return the data in the format in which it was passed to the persistenceWriterFunc function. It should return a value of false if no data was present.

    persistenceWriterFunc?: (
        id: string,
        type: keyof PersistenceOptions,
        data: any,
    ) => any

    The persistenceWriterFunc function will receive three arguments, the persistance id of the table, the type of data to be written and an object or array representing the data

    persistentFilter?: boolean

    You can ensure the data filtering is stored for the next page load by setting the persistentFilter option to true.

    persistentLayout?: boolean

    Enable persistent storage of column layout information.

    persistentSort?: boolean

    You can ensure the data sorting is stored for the next page load by setting the persistentSort option to true.

    placeholder?:
        | string
        | HTMLElement
        | ((this: Tabulator | TabulatorFull) => string)

    placeholder element to display on empty table.

    placeholderHeaderFilter?:
        | string
        | HTMLElement
        | ((this: Tabulator | TabulatorFull) => string)
    popupContainer?: string | boolean | HTMLElement
    printAsHtml?: boolean

    By Default when a page is printed that includes a Tabulator it will be rendered on the page exactly as the table is drawn. While this ise useful in most cases, some users prefer to have more control over the print output, for example showing all rows of the table, instead of just those visible with the current position of the scroll bar.

    Tabulator provides a print styling mode that will replace the Tabulator with an HTML table for the printout giving you much more control over the look and feel of the table for the print out., to enable this mode, set the printAsHtml option to true in the table constructor.

    This will replace the table (in print outs only) with a simple HTML table with the class tabulator-print-table that you can use to style the table in any way you like.

    It also has the benefit that because it is an HTML table, if it causes a page break your browser will automatically add the column headers in at the top of the next page.

    The HTML table will contain column header groups, row groups, and column calculations.

    You can choose to remove any of these from the output data by setting the values in the printConfig option in the table definition

    printFooter?: StandardStringParam

    You can use the printFooter table setup option to define a footer to be displayed when the table is printed.

    printFormatter?: (tableHolderElement: any, tableElement: any) => any

    The printFormatter table setup option allows you to carry out any manipulation of the print output before it is displayed to the user for printing.

    printHeader?: StandardStringParam

    You can use the printHeader table setup option to define a header to be displayed when the table is printed.

    printRowRange?: RowRangeLookup | (() => RowComponent[])

    By default, only the rows currently visible in the Tabulator will be added to the HTML table. For custom row ranges it is also possible to pass a function into the printRowRange option that should return an array of Row Components

    printStyled?: boolean

    If you want your printed table to be styled to match your Tabulator you can set the printCopyStyle to true, this will copy key layout styling to the printed table.

    progressiveLoad?: "load" | "scroll"

    If you are loading a lot of data from a remote source into your table in one go, it can sometimes take a long time for the server to return the request, which can slow down the user experience.

    To speed things up in this situation Tabulator has a progressive load mode, this uses the pagination module to make a series of requests for part of the data set, one at a time, appending it to the table as the data arrives. This mode can be enable using the ajaxProgressiveLoad option. No pagination controls will be visible on screen, it just reuses the functionality of the pagination module to sequentially load the data.

    With this mode enabled, all of the settings outlined in the Ajax Documentation are still available

    There are two different progressive loading modes, to give you a choice of how data is loaded into the table.

    progressiveLoadDelay?: number

    By default tabulator will make the requests to fill the table as quickly as possible. On some servers these repeats requests from the same client may trigger rate limiting or security systems. In this case you can use the ajaxProgressiveLoadDelay option to add a delay in milliseconds between each page request.

    progressiveLoadScrollMargin?: number

    The ajaxProgressiveLoadScrollMargin property determines how close to the bottom of the table in pixels, the scroll bar must be before the next page worth of data is loaded, by default it is set to twice the height of the table.

    reactiveData?: boolean

    The reactivity systems allow Tabulator to watch arrays and objects passed into the table for changes and then automatically update the table.

    This approach means you no longer need to worry about calling a number of different functions on the table to make changes, you simply update the array or object you originally passed into the table and Tabulator will take care of the rest.

    You can enable reactive data by setting the reactiveData option to true in the table constructor, and then passing your data array to the data option.

    Once the table is built any changes to the array will automatically be replicated to the table without needing to call any functions on the table itself

    renderHorizontal?: RenderMode
    renderVertical?: RenderMode
    renderVerticalBuffer?: number | boolean

    Manually set the size of the virtual DOM buffer.

    resizableColumnFit?: boolean

    When the resizableColumnFit table definition option is set to true, when you resize a column, its adjacent column is resized in the opposite direction to keep the total width of the columns the same.

    resizableColumnGuide?: boolean

    Allows the user to control the height of columns in the table by dragging the border of the column. These guides will only appear if the resizableRows option is enabled.

    resizableRowGuide?: boolean

    Allows the user to control the height of rows in the table by dragging the bottom border of the row. These guides will only appear on columns with the resizable option enabled in their column definition.

    resizableRows?: boolean

    You can allow the user to manually resize rows by dragging the top or bottom border of a row. To enable this functionality, set the resizableRows property to true.

    responsiveLayout?: boolean | "hide" | "collapse"

    Responsive layout will automatically hide/show columns to fit the width of the Tabulator element. This allows for clean rendering of tables on smaller mobile devices, showing important data while avoiding horizontal scroll bars. You can enable responsive layouts using the responsiveLayout option.

    There are two responsive layout modes available:

    hide - hide columns that no longer fit in the table collapse - collapse columns that no longer fit on the table into a list under the row

    Hide Extra Columns By default, columns will be hidden from right to left as the width of the table decreases. You can choose exactly how columns are hidden using the responsive property in the column definition object.

    When responsive layout is enabled, all columns are given a default responsive value of 1. The higher you set this value the sooner that column will be hidden as the table width decreases. If two columns have the same responsive value then they are hidden from right to left (as defined in the column definition array, ignoring user moving of the columns). If you set the value to 0 then the column will never be hidden regardless of how narrow the table gets.

    responsiveLayoutCollapseFormatter?: (data: any[]) => any

    If you set the responsiveLayout option to collapse the values from hidden columns will be displayed in a title/value list under the row.

    In this mode an object containing the title of each hidden column and its value is generated and then used to generate a list displayed in a div .tabulator-responsive-collapse under the row data.

    The inbuilt collapse formatter creates a table to neatly display the hidden columns. If you would like to format the data in your own way you can use the responsiveLayoutCollapseFormatter, it take an object of the column values as an argument and must return the HTML content of the div.

    This function should return an empty string if there is no data to display.

    responsiveLayoutCollapseStartOpen?: boolean

    Collapsed lists are displayed to the user by default, if you would prefer they start closed so the user can open them you can use the responsiveLayoutCollapseStartOpen option.

    responsiveLayoutCollapseUseFormatters?: boolean

    By default any formatter set on the column is applied to the value that will appear in the list. while this works for most formatters it can cause issues with the progress formatter which relies on being inside a cell.

    If you would like to disable column formatting in the collapsed list, you can use the responsiveLayoutCollapseUseFormatters option:

    rowClickPopup?: string
    rowContextMenu?: RowContextMenuSignature
    rowContextPopup?: string
    rowDblClickMenu?: RowContextMenuSignature
    rowDblClickPopup?: string
    rowFormatter?: (row: RowComponent) => any

    Tabulator also allows you to define a row level formatter using the rowFormatter option. this lets you alter each row of the table based on the data it contains. The function accepts one argument, the RowComponent for the row being formatted.

    rowFormatterClipboard?: false | ((row: RowComponent) => any)

    When copying to the clipboard you may want to apply a different formatter may want to apply a different formatter from the one usually used to format the row. You can now do this using the rowFormatterClipboard table option, which takes the same inputs as the standard rowFormatter property. Passing a value of false into the formatter prevent the default row formatter from being run when the table is copied to the clipboard.

    rowFormatterHtmlOutput?: false | ((row: RowComponent) => any)

    When the getHtml function is called you may want to apply a different formatter may want to apply a different formatter from the one usually used to format the row

    rowFormatterPrint?: false | ((row: RowComponent) => any)

    When printing you may want to apply a different formatter may want to apply a different formatter from the one usually used to format the row.

    rowHeader?:
        | boolean
        | {
            cellClick?: (e: MouseEvent, cell: CellComponent) => void;
            field?: string;
            formatter?: string;
            frozen?: boolean;
            headerHozAlign?: ColumnDefinitionAlign;
            headerSort?: boolean;
            hozAlign?: ColumnDefinitionAlign;
            minWidth?: number;
            resizable?: boolean;
            rowHandle?: boolean;
            titleFormatter?: string;
            width?: number;
        }

    Sometimes it can be useful to add a visual header to the start of a row. The rowHeader option allows you to define a column definition for a stylized header column at the start of the row.

    This can be great for adding row number, movable row handles or row selections, and keeps the controls visually separated from the table data.

    rowHeight?: number
    scrollToColumnIfVisible?: boolean

    The default option for triggering a ScrollTo on a visible element can be set using the scrollToColumnIfVisible option. It can take a boolean value:

    true - scroll to column, even if it is visible (default) false - scroll to column, unless it is currently visible, then don't move

    scrollToColumnPosition?: ScrollToColumnPosition

    The default ScrollTo position can be set using the scrollToColumnPosition option. It can take one of three possible values:

    left - position column with its left edge at the left of the table (default) center - position column with its left edge in the center of the table right - position column with its right edge at the right of the table

    scrollToRowIfVisible?: boolean

    The default option for triggering a ScrollTo on a visible element can be set using the scrollToRowIfVisible option. It can take a boolean value:

    true - scroll to row, even if it is visible (default) false - scroll to row, unless it is currently visible, then don't move

    scrollToRowPosition?: ScrollToRowPosition

    The default ScrollTo position can be set using the scrollToRowPosition option. It can take one of four possible values:

    top - position row with its top edge at the top of the table (default) center - position row with its top edge in the center of the table bottom - position row with its bottom edge at the bottom of the table nearest - position row on the edge of the table it is closest to

    selectableRange?: number | boolean

    The selectableRange option can take one of a several values:

    • false - range selection is disabled
    • true - range selection is enabled, and you can add as many ranges as you want
    • integer - any integer value, this sets the maximum number of ranges that can be selected (when the maximum number of ranges is exceeded, the first selected range will be deselected to allow the next range to be selected).
    selectableRangeClearCells?: boolean

    If you want the user to be able to clear the values for all cells in the active range by pressing the backspace or delete keys, then you can enable this behavior using the selectableRangeClearCells option:

    var table = new Tabulator("#example-table", {
    selectableRangeClearCells:true,
    });
    selectableRangeClearCellsValue?: unknown

    By default the value of each cell in the range is set to undefined when this option is enabled and the user presses the backspace or delete keys. You can change the value the cells are set to using the selectableRangeClearCellsValue option

    var table = new Tabulator("#example-table", {
    selectableRangeClearCellsValue: "", //clear cells by setting value to an empty string
    });
    selectableRangeColumns?: boolean

    By default you can only select ranges by selecting cells on the table. If you would like to allow the user to select all cells in a column by clicking on the column header, then you can set the selectableRangeColumns option to true

    selectableRangeRows?: boolean

    By default you can only select ranges by selecting cells on the table. If you would like to allow the user to select all cells in row by clicking on the row header, then you can set the selectableRangeColumns option to true

    selectableRows?: number | boolean | "highlight"

    The selectableRows option can take one of a several values:

    • false - selectable rows are disabled
    • true - selectable rows are enabled, and you can select as many as you want
    • integer - any integer value, this sets the maximum number of rows that can be selected (when the maximum number of selected rows is exceeded, the first selected row will be deselected to allow the next row to be selected).
    • "highlight" (default) - rows have the same hover stylings as selectable rows but do not change state when clicked. This is great for when you want to show that a row is clickable but don't want it to be selectable.
    selectableRowsCheck?: (row: RowComponent) => boolean

    You many want to exclude certain rows from being selected. The selectableRowsCheck options allows you to pass a function to check if the current row should be selectable, returning true will allow row selection, false will result in nothing happening. The function should accept a RowComponent as its first argument.

    selectableRowsPersistence?: boolean

    By default Tabulator will maintain selected rows when the table is filtered, sorted or paginated (but NOT when the setData function is used). If you want the selected rows to be cleared whenever the table view is updated then set the selectableRowsPersistence option to false.

    var table = new Tabulator("#example-table", {
    selectableRows: true,
    selectableRowsPersistence: false, // disable selection persistence
    });
    selectableRowsRangeMode?: "click"

    By default you can select a range of rows by holding down the shift key and click dragging over a number of rows to toggle the selected state state of all rows the cursor passes over.

    If you would prefer to select a range of row by clicking on the first row then holding down shift and clicking on the end row then you can achieve this by setting the selectableRowsRangeMode to click.

    var table = new Tabulator("#example-table", {
    selectableRowsRangeMode:"click",
    });
    selectableRowsRollingSelection?: boolean

    By default, row selection works on a rolling basis, if you set the selectableRows option to a numeric value then when you select past this number of rows, the first row to be selected will be deselected. If you want to disable this behavior and instead prevent selection of new rows once the limit is reached you can set the selectableRowsRollingSelection option to false.

    var table = new Tabulator("#example-table", {
    selectableRows: 5,
    selectableRowsRollingSelection:false, // disable rolling selection
    });
    sortMode?: SortMode
    sortOrderReverse?: boolean

    reverse the order that multiple sorters are applied to the table.

    spreadsheet?: boolean

    Enables the spreadsheet mode on the table.

    The SpreadsheetModule must be installed to use this functionality.

    spreadsheetColumnDefinition?: { editor: string; resizable: string }
    spreadsheetColumns?: number
    spreadsheetOutputFull?: boolean
    spreadsheetRows?: number
    spreadsheetSheets?: SpreadsheetSheet[]
    spreadsheetSheetTabs?: boolean
    tabEndNewRow?: boolean | JSONRecord | ((row: RowComponent) => any)

    Allows you to specify the behavior when the user tabs from the last editable cell on the last row of the table.

    textDirection?: TextDirection
    validationMode?: "manual" | "highlight" | "blocking"

    There are now three different validation modes available to customize the validation experience:

    blocking - if a user enters an invalid value while editing, they are blocked from leaving the cell until a valid value is entered (default)

    highlight - if a user enters an invalid value, then the edit will complete as usual and they are allowed to exit the cell but a highlight is applied to the cell using the tabulator-validation-fail class

    manual - no validation is automatically performed on edit, but it can be triggered by calling the validate function on the table or any Component Object