UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

344 lines (331 loc) • 9.81 kB
import { IEndpointError } from '../rest/EndpointError'; import { IQuery } from '../rest/Query'; import { IQueryResults } from '../rest/QueryResults'; import { IEndpointCallOptions, ISearchEndpoint } from '../rest/SearchEndpointInterface'; import { Component } from '../ui/Base/Component'; import { QueryBuilder } from '../ui/Base/QueryBuilder'; /** * Argument sent to all handlers bound on {@link QueryEvents.newQuery} */ export interface INewQueryEventArgs { /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; /** * If this property is set to true by any handlers, the query will not be executed. */ cancel: boolean; shouldRedirectStandaloneSearchbox: boolean; origin?: Component; } /** * Argument sent to all handlers bound on {@link QueryEvents.buildingQuery} */ export interface IBuildingQueryEventArgs { /** * Allow handlers to modify the query by using the {@link QueryBuilder} */ queryBuilder: QueryBuilder; /** * Determine if the query is a "search-as-you-type" */ searchAsYouType: boolean; /** * If this property is set to true by any handlers, the query will not be executed. */ cancel: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.doneBuildingQuery} */ export interface IDoneBuildingQueryEventArgs { /** * Allow handlers to modify the query by using the {@link QueryBuilder} */ queryBuilder: QueryBuilder; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; /** * If this property is set to true by any handlers, the query will not be executed. */ cancel: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.duringQuery} */ export interface IDuringQueryEventArgs { /** * The {@link QueryBuilder} that was used for the current query */ queryBuilder: QueryBuilder; /** * The query that was just executed */ query: IQuery; /** * A promises for the results that will be returned by the Search API */ promise: Promise<IQueryResults>; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.querySuccess} */ export interface IQuerySuccessEventArgs { /** * The query that was just executed */ query: IQuery; /** * The results returned by the query that was executed */ results: IQueryResults; /** * The {@link QueryBuilder} that was used for the current query */ queryBuilder: QueryBuilder; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.fetchMoreSuccess} */ export interface IFetchMoreSuccessEventArgs { /** * The query that was just executed */ query: IQuery; /** * The results returned by the query that was executed */ results: IQueryResults; /** * The {@link QueryBuilder} that was used for the current query */ queryBuilder: QueryBuilder; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.queryError} */ export interface IQueryErrorEventArgs { /** * The {@link QueryBuilder} that was used for the current query */ queryBuilder: QueryBuilder; /** * The endpoint on which the error happened. */ endpoint: ISearchEndpoint; /** * The query that was just executed */ query: IQuery; /** * The error info / message itself. */ error: IEndpointError; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.preprocessResults} */ export interface IPreprocessResultsEventArgs { /** * The {@link QueryBuilder} that was used for the current query */ queryBuilder: QueryBuilder; /** * The query that was just executed */ query: IQuery; /** * The results returned by the query that was executed */ results: IQueryResults; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; } /** * Argument sent to all handlers bound on {@link QueryEvents.preprocessMoreResults} */ export interface IPreprocessMoreResultsEventArgs { /** * The results returned by the query that was executed */ results: IQueryResults; } /** * Argument sent to all handlers bound on {@link QueryEvents.noResults} */ export interface INoResultsEventArgs { /** * The {@link QueryBuilder} that was used for the current query */ queryBuilder: QueryBuilder; /** * The query that was just executed */ query: IQuery; /** * The results returned by the query that was executed */ results: IQueryResults; /** * Whether the query is a search-as-you-type */ searchAsYouType: boolean; /** * If set to true by any handler, the last query will automatically be re-executed again. */ retryTheQuery: boolean; } export interface IBuildingCallOptionsEventArgs { options: IEndpointCallOptions; } /** * This static class is there to contains the different string definition for all the events related to query. * * Note that these events will only be triggered when the {@link QueryController.executeQuery} method is used, either directly or by using {@link executeQuery} */ export class QueryEvents { /** * Triggered when a new query is launched. * * All bound handlers will receive {@link INewQueryEventArgs} as an argument. * * The string value is `newQuery`. * @type {string} */ public static newQuery = 'newQuery'; /** * Triggered when the query is being built. * * This is typically where all components will contribute their part to the {@link IQuery} using the {@link QueryBuilder}. * * All bound handlers will receive {@link IBuildingQueryEventArgs} as an argument. * * The string value is `buildingQuery`. * @type {string} */ public static buildingQuery = 'buildingQuery'; /** * Triggered when the query is done being built. * * This is typically where the facet will add it's {@link IGroupByRequest} to the {@link IQuery}. * * All bound handlers will receive {@link IDoneBuildingQueryEventArgs} as an argument. * * The string value is `doneBuildingQuery`. * @type {string} */ public static doneBuildingQuery = 'doneBuildingQuery'; /** * Triggered when the query is being executed on the Search API. * * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument. * * The string value is `duringQuery`. * @type {string} */ public static duringQuery = 'duringQuery'; /** * Triggered when more results are being fetched on the Search API (think : infinite scrolling, or pager). * * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument. * * The string value is `duringFetchMoreQuery`. * @type {string} */ public static duringFetchMoreQuery = 'duringFetchMoreQuery'; /** * Triggered when a query successfully returns from the Search API. * * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument. * * The string value is `querySuccess`. * @type {string} */ public static querySuccess = 'querySuccess'; /** * Triggered when a more results were successfully returned from the Search API. (think : infinite scrolling, or pager). * * All bound handlers will receive {@link IFetchMoreSuccessEventArgs} as an argument. * * The string value is `fetchMoreSuccess`. * @type {string} */ public static fetchMoreSuccess = 'fetchMoreSuccess'; /** * Triggered after the main query success event has finished executing. * * This is typically where facets will process the {@link IGroupByResult} and render themselves. * * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument. * * The string value is `deferredQuerySuccess`. * @type {string} */ public static deferredQuerySuccess = 'deferredQuerySuccess'; /** * Triggered when there was an error executing a query on the Search API. * * All bound handlers will receive {@link IQueryErrorEventArgs} as an argument. * * The string value is `queryError`. * @type {string} */ public static queryError = 'queryError'; /** * Triggered before the {@link QueryEvents.querySuccess} event. * * This allows external code to modify the results before rendering them. * * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results. * * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument. * * The string value is `preprocessResults`. * @type {string} */ public static preprocessResults = 'preprocessResults'; /** * Triggered before the {@link QueryEvents.fetchMoreSuccess} event. * * This allows external code to modify the results before rendering them. * * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results. * * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument. * * The string value is `preprocessMoreResults`. * @type {string} */ public static preprocessMoreResults = 'preprocessMoreResults'; /** * Triggered when there is no result for a particular query. * * All bound handlers will receive {@link INoResultsEventArgs} as an argument. * * The string value is `noResults`. * @type {string} */ public static noResults = 'noResults'; public static buildingCallOptions = 'buildingCallOptions'; }