UNPKG

@atlaskit/mention

Version:

A React component used to display user profiles in a list for 'Mention' functionality

108 lines (107 loc) 4.89 kB
import { ServiceConfig } from '@atlaskit/util-service-support'; import { MentionDescription, MentionsResult } from '../types'; export declare type MentionStats = { [key: string]: any; }; export interface ResultCallback<T> { (result: T, query?: string, stats?: MentionStats): void; } export interface ErrorCallback { (error: Error, query?: string): void; } export interface InfoCallback { (info: string): void; } export interface MentionResourceConfig extends ServiceConfig { containerId?: string; productId?: string; shouldHighlightMention?: (mention: MentionDescription) => boolean; } export interface ResourceProvider<Result> { /** * Subscribe to ResourceProvider results * * @param {string} key subscriber key used to unsubscribe * @param {ResultCallback<Result>} callback This callback only receives latest results * @param {ErrorCallback} errCallback This callback will errors * @param {InfoCallback} infoCallback This callback will info * @param {ResultCallback<Result>} allResultsCallback This callback will receive all results */ subscribe(key: string, callback?: ResultCallback<Result>, errCallback?: ErrorCallback, infoCallback?: InfoCallback, allResultsCallback?: ResultCallback<Result>): void; /** * Unsubscribe to this resource provider results * @param {string} key key used when subscribing */ unsubscribe(key: string): void; } export declare type MentionContextIdentifier = { containerId?: string; objectId?: string; childObjectId?: string; sessionId?: string; }; export interface MentionProvider extends ResourceProvider<MentionDescription[]> { filter(query?: string, contextIdentifier?: MentionContextIdentifier): void; recordMentionSelection(mention: MentionDescription, contextIdentifier?: MentionContextIdentifier): void; shouldHighlightMention(mention: MentionDescription): boolean; isFiltering(query: string): boolean; } declare class AbstractResource<Result> implements ResourceProvider<Result> { protected changeListeners: Map<string, ResultCallback<Result>>; protected errListeners: Map<string, ErrorCallback>; protected infoListeners: Map<string, InfoCallback>; protected allResultsListeners: Map<string, ResultCallback<Result>>; constructor(); subscribe(key: string, callback?: ResultCallback<Result>, errCallback?: ErrorCallback, infoCallback?: InfoCallback, allResultsCallback?: ResultCallback<Result>): void; unsubscribe(key: string): void; } declare class AbstractMentionResource extends AbstractResource<MentionDescription[]> implements MentionProvider { shouldHighlightMention(_mention: MentionDescription): boolean; filter(query?: string): void; recordMentionSelection(_mention: MentionDescription): void; isFiltering(_query: string): boolean; protected _notifyListeners(mentionsResult: MentionsResult, stats?: MentionStats): void; protected _notifyAllResultsListeners(mentionsResult: MentionsResult): void; protected _notifyErrorListeners(error: Error, query?: string): void; protected _notifyInfoListeners(info: string): void; } /** * Provides a Javascript API */ export declare class MentionResource extends AbstractMentionResource { private config; private lastReturnedSearch; private activeSearches; constructor(config: MentionResourceConfig); shouldHighlightMention(mention: MentionDescription): boolean; notify(searchTime: number, mentionResult: MentionsResult, query?: string): void; notifyError(error: Error, query?: string): void; filter(query?: string, contextIdentifier?: MentionContextIdentifier): void; recordMentionSelection(mention: MentionDescription, contextIdentifier?: MentionContextIdentifier): Promise<void>; isFiltering(query: string): boolean; protected updateActiveSearches(query: string): void; protected verifyMentionConfig(config: MentionResourceConfig): void; private initialState; private getQueryParams; /** * Returns the initial mention display list before a search is performed for the specified * container. * * @param contextIdentifier * @returns Promise */ protected remoteInitialState(contextIdentifier?: MentionContextIdentifier): Promise<MentionsResult>; private search; protected remoteSearch(query: string, contextIdentifier?: MentionContextIdentifier): Promise<MentionsResult>; private transformServiceResponse; protected recordSelection(mention: MentionDescription, contextIdentifier?: MentionContextIdentifier): Promise<void>; } export declare class HttpError implements Error { name: string; message: string; statusCode: number; stack?: string; constructor(statusCode: number, statusMessage: string); } export { AbstractResource, AbstractMentionResource }; export default MentionResource;