UNPKG

fomantic-ui

Version:

Fomantic empowers designers and developers by creating a shared vocabulary for UI.

497 lines (402 loc) 13.9 kB
declare namespace FomanticUI { interface Search { settings: SearchSettings; /** * Search for value currently set in search input. */ (behavior: 'query', callback: Function): 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: Function): JQuery; /** * Search object for specified query and return results. */ (behavior: 'search object', query: string, object: string, searchFields: string): 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'): string; /** * Returns JSON object matching searched title or id. */ (behavior: 'get result', value: string): object; /** * Sets search input to value. */ (behavior: 'set value', value: string): 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: Function): JQuery; /** * Hide results container. */ (behavior: 'hide results', callback: Function): JQuery; /** * Generates results using parser specified by 'settings.template'. */ (behavior: 'generate results', response: Function): JQuery; /** * Removes all events. */ (behavior: 'destroy'): JQuery; <K extends keyof SearchSettings>(behavior: 'setting', name: K, value?: undefined, ): Partial<Pick<SearchSettings, keyof SearchSettings>>; <K extends keyof SearchSettings>(behavior: 'setting', name: K, value: SearchSettings[K]): JQuery; (behavior: 'setting', value: Partial<Pick<SearchSettings, keyof SearchSettings>>): JQuery; (settings?: Partial<Pick<SearchSettings, keyof SearchSettings>>): JQuery; } /** * @see {@link https://fomantic-ui.com/modules/search.html#/settings} */ interface SearchSettings { // region Search Settings /** * Settings for API call. * @see {@link https://fomantic-ui.com/behaviors/api.html#/settings} * @default {} */ apiSettings: APISettings | JQueryAjaxSettings; /** * Minimum characters to query for results. * @default 1 */ minCharacters: number; /** * Whether search should show results on focus (must also match min character length). * @default true */ searchOnFocus: boolean; /** * Named transition to use when animating menu in and out. * Fade and slide down are available without including ui transitions. * @see {@link https://fomantic-ui.com/modules/transition.html} * @default 'fade' */ 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: boolean | object; /** * 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. * @default false */ showNoResults: boolean; /** * Specifying to "true" will use a fuzzy full text search, setting to "exact" will force the exact search to be matched somewhere in the string, setting to false will only match to start of string. * @default 'exact' */ fullTextSearch: 'exact' | boolean; /** * List mapping display content to JSON property, either with API or 'source'. * @default {} */ fields: object; /** * Specify object properties inside local source object which will be searched. * @default ['title', 'description'] */ 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. * EaseOutExpo is included with search, for additional options you must include `easing equations`. * @see {@link https://gsgd.co.uk/sandbox/jquery/easing/} * @default 'easeOutExpo' */ easing: string; /** * When activated, searches will also match results for base diacritic letters. * For example when searching for 'a', it will also match 'á' or 'â' or 'å' and so on... * It will also ignore diacritics for the searchterm, so if searching for 'ó', it will match 'ó', but also 'o', 'ô' or 'õ' and so on... * @default false */ ignoreDiacritics: boolean; // 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: object, response: object): boolean; /** * Callback after processing element template to add HTML to results. * Function should return 'false' to prevent default actions. */ onResultsAdd(this: JQuery, html: string): boolean; /** * Callback on search query. */ onSearchQuery(this: JQuery, query: string): void; /** * Callback on server response. */ onResults(this: JQuery, response: object): void; /** * Callback when results are opened. */ onResultsOpen(this: JQuery): void; /** * Callback when results are closed. */ onResultsClose(this: JQuery): void; // endregion // region Template Settings templates: Search.TemplateSettings; // endregion // region DOM Settings /** * DOM Selectors used internally. * Selectors used to find parts of a module. */ selector: Search.SelectorSettings; /** * Regular expressions used for matching. */ regExp: Search.RegExpSettings; /** * Class names used to determine element state. */ className: Search.ClassNameSettings; /** * HTML5 metadata attributes used internally. */ metadata: Search.MetadataSettings; // endregion // region Debug Settings /** * Name used in log statements * @default 'Search' */ name: string; /** * Event namespace. Makes sure module teardown does not effect other events attached to an element. * @default 'search' */ namespace: string; /** * Silences all console output including error messages, regardless of other debug settings. * @default false */ silent: boolean; /** * Debug output to console * @default false */ debug: boolean; /** * Show console.table output with performance metrics * @default true */ performance: boolean; /** * Debug output includes all internal behaviors * @default false */ verbose: boolean; error: Search.ErrorSettings; // endregion } namespace Search { type TemplateSettings = Partial<Pick<Settings.Templates, keyof Settings.Templates>>; type SelectorSettings = Partial<Pick<Settings.Selectors, keyof Settings.Selectors>>; type RegExpSettings = Partial<Pick<Settings.RegExps, keyof Settings.RegExps>>; type ClassNameSettings = Partial<Pick<Settings.ClassNames, keyof Settings.ClassNames>>; type MetadataSettings = Partial<Pick<Settings.Metadatas, keyof Settings.Metadatas>>; type ErrorSettings = Partial<Pick<Settings.Errors, keyof Settings.Errors>>; namespace Settings { interface Templates { /** * @default function(string) */ escape: Function; /** * @default function(message, type) */ message: Function; /** * @default function(response) */ category: Function; /** * @default function(response) */ standard: Function; } interface Selectors { /** * @default '.prompt' */ prompt: string; /** * @default '.search.button' */ searchButton: string; /** * @default '.results' */ results: string; /** * @default '.category' */ category: string; /** * @default '.result' */ result: string; } interface RegExps { /** * @default /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g */ escape: RegExp; /** * @default '(?:\s|^)' */ beginsWith: RegExp; } interface ClassNames { /** * @default 'active' */ active: string; /** * @default 'empty' */ empty: string; /** * @default 'focus' */ focus: string; /** * @default 'loading' */ loading: string; /** * @default 'down' */ pressed: string; } interface Metadatas { /** * @default 'cache' */ cache: string; /** * @default 'results' */ results: string; } interface Errors { /** * @default 'Cannot search. No source used, and Fomantic API module was not included' */ source: string; /** * @default 'No Results' */ noResultsHeader: 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; } } } }