import type { ILineUpFlags } from '../config' ; import type { Column , IGroupData , IGroupItem } from '../model' ; import type { IDataProvider } from '../provider' ; import type { IImposer , IRenderContext , ISummaryRenderer } from '../renderer' ; import type DialogManager from './dialogs/DialogManager' ; import type { IDialogContext } from './dialogs' ; export interface IUIOptions { default mode : 'menu' | 'menu+shortcut' | 'shortcut' | ( ( col : Column , mode : 'sidePanel' | 'header' ) => 'menu' | 'menu+shortcut' | 'shortcut' ) ; default order : number ; featureLevel : 'basic' | 'advanced' ; featureCategory : 'ranking' | 'model' | 'ui' ; } export interface IOnClickHandler { ( col , evt , ctx , level , viaShortcut ) : any ; } export interface IToolbarAction { title : string ; enabled ? ( col ) : boolean ; onClick : IOnClickHandler ; options : Partial < IUIOptions > ; } export interface IToolbarDialogAddonHandler { elems : string | ( HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement ) [ ] ; reset ( ) : void ; submit ( ) : boolean | undefined ; cancel ( ) : void ; } export interface IToolbarDialogAddon { title : string ; order : number ; append ( col , node , dialog , ctx ) : IToolbarDialogAddonHandler ; } export interface IRenderInfo { type : string ; label : string ; } export interface IRankingHeaderContextContainer { readonly idPrefix : string ; readonly document : Document ; readonly provider : IDataProvider ; readonly dialogManager : DialogManager ; asElement ( html ) : HTMLElement ; sanitize ( text ) : string ; resolveToolbarActions ( col , keys ) : IToolbarAction [ ] ; resolveToolbarDialogAddons ( col , keys ) : IToolbarDialogAddon [ ] ; readonly flags : ILineUpFlags ; getPossibleRenderer ( col ) : { item : IRenderInfo [ ] ; group : IRenderInfo [ ] ; summary : IRenderInfo [ ] ; } ; summaryRenderer ( co , interactive , imposer ? ) : ISummaryRenderer ; readonly caches : { toolbar : Map < string , IToolbarAction [ ] > ; toolbarAddons : Map < string , IToolbarDialogAddon [ ] > ; } ; } export interface IRankingBodyContext extends IRankingHeaderContextContainer , IRenderContext { isGroup ( index ) : boolean ; getGroup ( index ) : IGroupData ; getRow ( index ) : IGroupItem ; } export declare type IRankingHeaderContext = Readonly < IRankingHeaderContextContainer > ; export declare type IRankingContext = Readonly < IRankingBodyContext > ; export enum EMode { ITEM = 'item' , BAND = 'band' }