import { SlickEvent, SlickEventHandler } from '@slickgrid-universal/common'; import type { Column, ExternalResource, FormatterResultWithHtml, GridOption, OnAfterRowDetailToggleArgs, OnBeforeRowDetailToggleArgs, OnRowBackOrOutOfViewportRangeArgs, OnRowDetailAsyncEndUpdateArgs, OnRowDetailAsyncResponseArgs, PubSubService, RowDetailView, RowDetailViewOption, SlickDataView, SlickEventData, SlickGrid, SlickRowDetailView as UniversalRowDetailView, UsabilityOverrideFn } from '@slickgrid-universal/common'; /** * A plugin to add Row Detail Panel View (for example providing order detail info when clicking on the order row in the grid) * Original StackOverflow question & article making this possible (thanks to violet313) * https://stackoverflow.com/questions/10535164/can-slickgrids-row-height-be-dynamically-altered#29399927 * http://violet313.org/slickgrids/#intro */ export declare class SlickRowDetailView implements ExternalResource, UniversalRowDetailView { protected readonly pubSubService: PubSubService; pluginName: string; /** Fired when the async response finished */ onAsyncEndUpdate: SlickEvent; /** This event must be used with the "notify" by the end user once the Asynchronous Server call returns the item detail */ onAsyncResponse: SlickEvent; /** Fired after the row detail gets toggled */ onAfterRowDetailToggle: SlickEvent; /** Fired before the row detail gets toggled */ onBeforeRowDetailToggle: SlickEvent; /** Fired just before a row becomes out of viewport range (you can use this event to save inner Grid State before it gets destroyed) */ onBeforeRowOutOfViewportRange: SlickEvent; /** Fired after the row detail gets toggled */ onRowBackToViewportRange: SlickEvent; /** Fired after a row becomes out of viewport range (when user can't see the row anymore) */ onRowOutOfViewportRange: SlickEvent; protected _addonOptions: RowDetailView; protected _dataViewIdProperty: string; protected _eventHandler: SlickEventHandler; protected _expandableOverride: UsabilityOverrideFn | null; protected _expandedRowIds: Set; protected _grid: SlickGrid; protected _gridRowBuffer: number; protected _gridUid: string; protected _keyPrefix: string; protected _disposedRows: Set; protected _rowIdsOutOfViewport: Set; protected _renderedViewportRowIds: Set; protected _renderedCollapsedGroupIds: Set; protected _renderedIds: Set; protected _visibleRenderedCell?: { startRow: number; endRow: number; }; protected _backViewportTimer: any; protected _defaults: RowDetailView; /** Constructor of the SlickGrid 3rd party plugin, it can optionally receive options */ constructor(pubSubService: PubSubService); get addonOptions(): RowDetailView; /** Getter of SlickGrid DataView object */ get dataView(): SlickDataView; get dataViewIdProperty(): string; get eventHandler(): SlickEventHandler; /** Getter for the Grid Options pulled through the Grid Object */ get gridOptions(): GridOption; get gridUid(): string; set rowIdsOutOfViewport(rowIds: Array); /** * Initialize the Export Service * @param _grid */ init(grid: SlickGrid): void; /** Dispose of the Slick Row Detail View */ dispose(): void; create(columns: Column[], gridOptions: GridOption): UniversalRowDetailView | null; /** Get current plugin options */ getOptions(): RowDetailViewOption; /** set or change some of the plugin options */ setOptions(options: Partial): void; /** Collapse all of the open items */ collapseAll(): void; /** Collapse an Item so it is not longer seen */ collapseDetailView(itemId: number | string, isMultipleCollapsing?: boolean): void; /** Expand a row given the dataview item that is to be expanded */ expandDetailView(itemId: number | string): void; /** reset all Set rows/ids cache and start empty (but keep expanded rows ref) */ resetRenderedRows(): void; /** Saves the current state of the detail view */ saveDetailView(item: any): void; /** * subscribe to the onAsyncResponse so that the plugin knows when the user server side calls finished * the response has to be as "args.item" with it's data back */ handleOnAsyncResponse(e: SlickEventData, args: { item: any; detailView?: any; }): void; /** * Override the logic for showing (or not) the expand icon (use case example: only every 2nd row is expandable) * Method that user can pass to override the default behavior or making every row an expandable row. * In order word, user can choose which rows to be an available row detail (or not) by providing his own logic. * @param overrideFn: override function callback */ expandableOverride(overrideFn: UsabilityOverrideFn): void; getExpandableOverride(): UsabilityOverrideFn | null; /** Get the Column Definition of the first column dedicated to toggling the Row Detail View */ getColumnDefinition(): Column; /** return the currently expanded rows */ getExpandedRowIds(): Array; /** return the rows that are out of the viewport */ getOutOfViewportRows(): Array; /** Takes in the item we are filtering and if it is an expanded row returns it's parents row to filter on */ getFilterItem(item: any): any; /** Resize the Row Detail View */ resizeDetailView(item: any): void; /** * (re)calculate/sync row detail views that are out of range of the viewport and trigger events (when enabled) * @param {Boolean} [triggerEvent] - should trigger notify event which will re-render the detail view * @param {Number} [delay] - optional delay to execute the calculation of out of range views */ recalculateOutOfRangeViews(triggerEvent?: boolean, delay?: number): void; /** * create the row detail ctr node. this belongs to the dev & can be custom-styled as per * @param {Object} item */ protected applyTemplateNewLineHeight(item: any): void; protected notifyViewportChange(item: any, action: 'add' | 'remove', triggerEvent?: boolean): void; protected checkExpandableOverride(row: number, dataContext: any, grid: SlickGrid): boolean; /** Get the Row Detail padding (which are the rows dedicated to the detail panel) */ protected getPaddingItem(parent: any, offset: any): any; /** The Formatter of the toggling icon of the Row Detail */ protected detailSelectionFormatter(row: number, _cell: number, _val: any, _colDef: Column, dataContext: any, grid: SlickGrid): FormatterResultWithHtml | HTMLElement | ''; /** When row is getting toggled, we will handle the action of collapsing/expanding */ protected handleAccordionShowHide(item: any): void; /** Handle mouse click event */ protected handleClick(e: SlickEventData, args: { row: number; cell: number; }): void; /** Triggered when a one or all data Groups are collapsed */ protected handleGroupCollapsed(groupingKey: number | string | null): void; /** Triggered when a one or all data Groups are expanded */ protected handleGroupExpanded(groupingKey: number | string | null): void; protected handleRemoveRow(rowIndex: number): void; /** Get the item IDs of the Row Details that are expanded and under a specific Group */ protected getGroupItemIds(groupingKey: string | number): Array; protected notifyOutOfViewport(item: any): void; protected notifyBackToViewportWhenDomExist(item: any): void; /** * keep any row detail that are shown on top of the row that we're opening * but invalidate any rows that are after the row that we're opening */ protected reevaluateRenderedRowIds(item: any): void; protected syncOutOfViewportArray(rowId: number | string, isAdding: boolean): Set; protected toggleRowSelection(rowNumber: number, dataContext: any): void; } //# sourceMappingURL=slickRowDetailView.d.ts.map