interface JQuery { search: SemanticUI.Search; } declare namespace SemanticUI { interface Search { settings: SearchSettings; /** * Search for value currently set in search input */ (behavior: 'query', callback?: () => void): JQuery; /** * Displays message in search results with text, using template matching type */ (behavior: 'display message', text: string, type: string): JQuery; /** * Cancels current remote search query */ (behavior: 'cancel query'): JQuery; /** * Search local object for specified query and display results */ (behavior: 'search local', query: string): JQuery; /** * Whether has minimum characters */ (behavior: 'has minimum characters'): boolean; /** * Search remote endpoint for specified query and display results */ (behavior: 'search remote', query: string, callback?: () => void): JQuery; /** * Search object for specified query and return results */ (behavior: 'search object', query: string, object: any, searchFields: string[]): any; /** * Cancels current remote search request */ (behavior: 'cancel query'): JQuery; /** * Whether search is currently focused */ (behavior: 'is focused'): boolean; /** * Whether search results are visible */ (behavior: 'is visible'): boolean; /** * Whether search results are empty */ (behavior: 'is empty'): boolean; /** * Returns current search value */ (behavior: 'get value'): any; /** * Returns JSON object matching searched title or id (see above) */ (behavior: 'get result', value: any): any; /** * Sets search input to value */ (behavior: 'set value', value: any): JQuery; /** * Reads cached results for query */ (behavior: 'read cache', query: string): JQuery; /** * Clears value from cache, if no parameter passed clears all cache */ (behavior: 'clear cache', query?: string): JQuery; /** * Writes cached results for query */ (behavior: 'write cache', query: string): JQuery; /** * Adds HTML to results and displays */ (behavior: 'add results', html: string): JQuery; /** * Shows results container */ (behavior: 'show results', callback?: () => void): JQuery; /** * Hides results container */ (behavior: 'hide results', callback?: () => void): JQuery; /** * Generates results using parser specified by settings.template */ (behavior: 'generate results', response: any): JQuery; /** * Removes all events */ (behavior: 'destroy'): JQuery; (behavior: 'setting', name: K, value?: undefined): SearchSettings._Impl[K]; (behavior: 'setting', name: K, value: SearchSettings._Impl[K]): JQuery; (behavior: 'setting', value: SearchSettings): JQuery; (settings?: SearchSettings): JQuery; } /** * @see {@link http://semantic-ui.com/modules/search.html#/settings} */ type SearchSettings = SearchSettings.Param; namespace SearchSettings { type Param = (Pick<_Impl, 'apiSettings'> | Pick<_Impl, 'type'> | Pick<_Impl, 'minCharacters'> | Pick<_Impl, 'transition'> | Pick<_Impl, 'duration'> | Pick<_Impl, 'maxResults'> | Pick<_Impl, 'cache'> | Pick<_Impl, 'source'> | Pick<_Impl, 'selectFirstResult'> | Pick<_Impl, 'showNoResults'> | Pick<_Impl, 'searchFullText'> | Pick<_Impl, 'fields'> | Pick<_Impl, 'searchFields'> | Pick<_Impl, 'hideDelay'> | Pick<_Impl, 'searchDelay'> | Pick<_Impl, 'easing'> | Pick<_Impl, 'onSelect'> | Pick<_Impl, 'onResultsAdd'> | Pick<_Impl, 'onSearchQuery'> | Pick<_Impl, 'onResults'> | Pick<_Impl, 'onResultsOpen'> | Pick<_Impl, 'onResultsClose'> | Pick<_Impl, 'templates'> | Pick<_Impl, 'regExp'> | Pick<_Impl, 'selector'> | Pick<_Impl, 'metadata'> | Pick<_Impl, 'className'> | Pick<_Impl, 'error'> | Pick<_Impl, 'namespace'> | Pick<_Impl, 'name'> | Pick<_Impl, 'silent'> | Pick<_Impl, 'debug'> | Pick<_Impl, 'performance'> | Pick<_Impl, 'verbose'>) & Partial>; interface _Impl { type: string; // region Behavior /** * Settings for API call. * * @see {@link http://semantic-ui.com/behaviors/api.html#/usage} */ apiSettings: ApiSettings; /** * Minimum characters to query for results * * @default 1 */ minCharacters: number; /** * Named transition to use when animating menu in and out. Fade and slide down are available without including ui transitions * * @default 'fade' * @see {@link http://semantic-ui.com/modules/transition.html} */ transition: string; /** * Duration of animation events * * @default 300 */ duration: number; /** * Maximum results to display when using local and simple search, maximum category count for category search * * @default 7 */ maxResults: number; /** * Caches results locally to avoid requerying server * * @default true */ cache: boolean; /** * Specify a Javascript object which will be searched locally * * @default false */ source: false | any; /** * Whether the search should automatically select the first search result after searching * * @default false */ selectFirstResult: boolean; /** * Whether a "no results" message should be shown if no results are found. (These messages can be modified using the template object specified below) * * @default false */ showNoResults: boolean; /** * Return local results that match anywhere inside your content * * @default true */ searchFullText: boolean; /** * List mapping display content to JSON property, either with API or source. */ fields: Search.FieldsSettings; /** * Specify object properties inside local source object which will be searched */ searchFields: string[]; /** * Delay before hiding results after search blur * * @default 0 */ hideDelay: number; /** * Delay before querying results on inputchange * * @default 100 */ searchDelay: number; /** * Easing equation when using fallback Javascript animation * * @default 'easeOutExpo' */ easing: string; // endregion // region Callbacks /** * Callback on element selection by user. * The first parameter includes the filtered response results for that element. * The function should return false to prevent default action (closing search results and selecting value). */ onSelect(this: JQuery, result: any, response: any): false | void; /** * Callback after processing element template to add HTML to results. Function should return false to prevent default actions. */ onResultsAdd(this: JQuery, html: string): false | void; /** * Callback on search query */ onSearchQuery(this: JQuery, query: string): void; /** * Callback on server response */ onResults(this: JQuery, response: any): void; /** * Callback when results are opened */ onResultsOpen(this: JQuery): void; /** * Callback when results are closed */ onResultsClose(this: JQuery): void; // endregion // region Templates templates: Search.TemplatesSettings; // endregion // region DOM Settings /** * Regular expressions used for matching */ regExp: Search.RegExpSettings; /** * Selectors used to find parts of a module */ selector: Search.SelectorSettings; /** * HTML5 metadata attributes used internally */ metadata: Search.MetadataSettings; /** * Class names used to determine element state */ className: Search.ClassNameSettings; // endregion // region Debug Settings error: Search.ErrorSettings; // endregion // region Component Settings // region DOM Settings /** * Event namespace. Makes sure module teardown does not effect other events attached to an element. */ namespace: string; // endregion // region Debug Settings /** * Name used in log statements */ name: string; /** * Silences all console output including error messages, regardless of other debug settings. */ silent: boolean; /** * Debug output to console */ debug: boolean; /** * Show console.table output with performance metrics */ performance: boolean; /** * Debug output includes all internal behaviors */ verbose: boolean; // endregion // endregion } } namespace Search { type FieldsSettings = FieldsSettings.Param; namespace FieldsSettings { type Param = (Pick<_Impl, 'categories'> | Pick<_Impl, 'categoryName'> | Pick<_Impl, 'categoryResults'> | Pick<_Impl, 'description'> | Pick<_Impl, 'image'> | Pick<_Impl, 'price'> | Pick<_Impl, 'results'> | Pick<_Impl, 'title'> | Pick<_Impl, 'action'> | Pick<_Impl, 'actionText'> | Pick<_Impl, 'actionURL'>) & Partial>; interface _Impl { /** * array of categories (category view) * * @default 'results' */ categories: string; /** * name of category (category view) * * @default 'name' */ categoryName: string; /** * array of results (category view) * * @default 'results' */ categoryResults: string; /** * result description * * @default 'description' */ description: string; /** * result image * * @default 'image' */ image: string; /** * result price * * @default 'price' */ price: string; /** * array of results (standard) * * @default 'results' */ results: string; /** * result title * * @default 'title' */ title: string; /** * "view more" object name * * @default 'action' */ action: string; /** * "view more" text * * @default 'text' */ actionText: string; /** * "view more" url * * @default 'url' */ actionURL: string; } } type TemplatesSettings = TemplatesSettings.Param; namespace TemplatesSettings { type Param = (Pick<_Impl, 'escape'> | Pick<_Impl, 'message'> | Pick<_Impl, 'category'> | Pick<_Impl, 'standard'>) & Partial>; interface _Impl { escape(string: string): string; message(message: string, type: string): string; category(response: any): string; standard(response: any): string; } } type RegExpSettings = RegExpSettings.Param; namespace RegExpSettings { type Param = (Pick<_Impl, 'escape'> | Pick<_Impl, 'beginsWith'>) & Partial>; interface _Impl { /** * @default /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g */ escape: RegExp; /** * @default '(?:\s|^)' */ beginsWith: string; } } type SelectorSettings = SelectorSettings.Param; namespace SelectorSettings { type Param = (Pick<_Impl, 'prompt'> | Pick<_Impl, 'searchButton'> | Pick<_Impl, 'results'> | Pick<_Impl, 'category'> | Pick<_Impl, 'result'>) & Partial>; interface _Impl { /** * @default '.prompt' */ prompt: string; /** * @default '.search.button' */ searchButton: string; /** * @default '.results' */ results: string; /** * @default '.category' */ category: string; /** * @default '.result' */ result: string; } } type MetadataSettings = MetadataSettings.Param; namespace MetadataSettings { type Param = (Pick<_Impl, 'cache'> | Pick<_Impl, 'results'>) & Partial>; interface _Impl { /** * @default 'cache' */ cache: string; /** * @default 'results' */ results: string; } } type ClassNameSettings = ClassNameSettings.Param; namespace ClassNameSettings { type Param = (Pick<_Impl, 'active'> | Pick<_Impl, 'empty'> | Pick<_Impl, 'focus'> | Pick<_Impl, 'loading'> | Pick<_Impl, 'pressed'>) & Partial>; interface _Impl { /** * @default 'active' */ active: string; /** * @default 'empty' */ empty: string; /** * @default 'focus' */ focus: string; /** * @default 'loading' */ loading: string; /** * @default 'down' */ pressed: string; } } type ErrorSettings = ErrorSettings.Param; namespace ErrorSettings { type Param = (Pick<_Impl, 'source'> | Pick<_Impl, 'noResults'> | Pick<_Impl, 'logging'> | Pick<_Impl, 'noTemplate'> | Pick<_Impl, 'serverError'> | Pick<_Impl, 'maxResults'> | Pick<_Impl, 'method'>) & Partial>; interface _Impl { /** * @default 'Cannot search. No source used, and Semantic API module was not included' */ source: string; /** * @default 'Your search returned no results' */ noResults: string; /** * @default 'Error in debug logging, exiting.' */ logging: string; /** * @default 'A valid template name was not specified.' */ noTemplate: string; /** * @default 'There was an issue with querying the server.' */ serverError: string; /** * @default 'Results must be an array to use maxResults setting' */ maxResults: string; /** * @default 'The method you called is not defined.' */ method: string; } } } }