import type { Bean } from '../context/bean'; import type { AgColumn } from '../entities/agColumn'; import type { ColKey } from '../entities/colDef'; import type { CellCtrl } from '../rendering/cell/cellCtrl'; import type { RowCtrl } from '../rendering/row/rowCtrl'; import type { Column } from './iColumn'; import type { AgGridCommon } from './iCommon'; import type { IRowNode } from './iRowNode'; export interface Note { /** Text content of the note. */ text: string; /** Set to `true` to make this note readonly. */ readOnly?: boolean; /** Optional author of the note. */ author?: string; /** Optional creation timestamp. */ createdAt?: string; /** Optional updated timestamp. */ updatedAt?: string; /** Optional application metadata to be associated with this note. */ metadata?: TMetadata; } export interface NoteParams { /** Column that the note is for. */ column: ColKey; /** Row that the note is for. */ rowNode: IRowNode; /** If using fullWidthRows the location is `cell` for normal cells. */ location?: 'cell'; } export interface FullWidthRowNoteParams { /** Full width row */ rowNode: IRowNode; /** Location is `fullWidthRow` for full width row notes. */ location: 'fullWidthRow'; /** If `embedFullWidthRows=true` identifies the pinned section the note has been applied to. */ pinned?: 'left' | 'right'; } export type GetNoteParams = NoteParams | FullWidthRowNoteParams; export type SetNoteParams = GetNoteParams & { /** Note to be saved. */ note: Note | undefined; }; export interface NotesDataSourceNoteParams { /** Column for the note. */ column: Column; /** Row for the note. */ rowNode: IRowNode; /** Location of the note. */ location?: 'cell'; } export interface NotesDataSourceFullWidthRowNoteParams { /** Row for the note. */ rowNode: IRowNode; /** Location of the note. */ location: 'fullWidthRow'; /** If `embedFullWidthRows=true` identifies the pinned section the note has been applied to. */ pinned?: 'left' | 'right'; } export type NotesDataSourceGetNoteParams = NotesDataSourceNoteParams; export interface NotesDataSourceSetNoteParams extends NotesDataSourceNoteParams { /** Note to be saved. */ note: Note | undefined; } export type FullWidthNotesDataSourceGetNoteParams = NotesDataSourceNoteParams | NotesDataSourceFullWidthRowNoteParams; export type FullWidthNotesDataSourceSetNoteParams = NotesDataSourceSetNoteParams | (NotesDataSourceFullWidthRowNoteParams & { /** Note to be saved. */ note: Note | undefined; }); export interface NotesDataSourceParams extends AgGridCommon { } interface BaseNotesDataSource { /** Initialise the data source so that the user can take a reference to the gridApi if needed. */ init?(params: NotesDataSourceParams): void; /** Called by the grid when the data source is being disposed. */ destroy?(): void; } /** * Control where notes are stored/retrieved from. * An implementation can store note state separately from the row data, or persist it remotely. */ export interface NotesDataSource extends BaseNotesDataSource { /** Return the note for the given cell. */ getNote(params: NotesDataSourceGetNoteParams): Note | undefined; /** Set or clear the note for the given cell. */ setNote(params: NotesDataSourceSetNoteParams): void; } /** * Control where notes are stored/retrieved from for both cells and full width rows. */ export interface FullWidthNotesDataSource extends BaseNotesDataSource { /** Enables full width row notes for this datasource. */ supportsFullWidthRows: true; /** Return the note for the given cell or full width row. */ getNote(params: FullWidthNotesDataSourceGetNoteParams): Note | undefined; /** Set or clear the note for the given cell or full width row. */ setNote(params: FullWidthNotesDataSourceSetNoteParams): void; } export interface RefreshNotesParams { /** Only refresh the provided rowNodes. If `undefined` refresh all rows. */ rowNodes?: IRowNode[]; /** Only refresh the provided columns. If `undefined` refresh all columns. */ columns?: (string | Column)[]; } /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface INoteAccess { params: GetNoteParams; rowNode: IRowNode; column: AgColumn; note: Note | undefined; isReadOnly: boolean; isSuppressed: boolean; canView: boolean; canCreate: boolean; canEdit: boolean; canDelete: boolean; } /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface INotesFeature { refresh(): void; show(params?: { focusEditor?: boolean; pinned?: 'left' | 'right'; }): void; hide(save?: boolean): void; destroy(): void; } /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface INotesDataService extends Bean { hasDataSource(): boolean; supportsFullWidthRows(): boolean; getNote(params: GetNoteParams): Note | undefined; setNote(params: SetNoteParams): void; } /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface INotesService extends Bean { hasDataSource(): boolean; onDataSourceChanged(): void; createNotesFeature(ctrl: CellCtrl): INotesFeature | undefined; createFullWidthNotesFeature(ctrl: RowCtrl): INotesFeature | undefined; getNoteAccess(params: GetNoteParams): INoteAccess | undefined; getNote(params: GetNoteParams): Note | undefined; showNote(params: GetNoteParams, focusEditor?: boolean): boolean; setNote(params: SetNoteParams): void; refreshNotes(params?: RefreshNotesParams): void; } export {};