UNPKG

declarations

Version:

[![npm version](https://badge.fury.io/js/declarations.svg)](https://www.npmjs.com/package/declarations)

239 lines (226 loc) 9.44 kB
// Type definitions for intl-tel-input // Project: https://github.com/jackocnr/intl-tel-input // Definitions by: Fidan Hakaj <https://github.com/fdnhkj/> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // Static methods that are defined in JQueryStatic.fn are not typed // as jquery.d.ts has no interface for fn // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/jquery/jquery.d.ts#L958 // fn: any; //TODO: Decide how we want to type this /// <reference path="../jquery/jquery.d.ts" /> declare namespace IntlTelInput { interface Options { /** * Whether or not to allow the dropdown. If disabled, there is no dropdown * arrow, and the selected flag is not clickable. Also we display the * selected flag on the right instead because it is just a marker of state. */ allowDropdown?: boolean; /** * If there is just a dial code in the input: remove it on blur or submit, * and re-add it on focus. This is to prevent just a dial code getting * submitted with the form. Requires nationalMode to be set to false. */ autoHideDialCode?: boolean; /** * Set the input's placeholder to an example number for the selected country. * You can specify the number type using the numberType option. * If there is already a placeholder attribute set on the input then that * will take precedence. Requires the utilsScript option. */ autoPlaceholder?: boolean; /** * Change the placeholder generated by autoPlaceholder. Must return a string. */ customPlaceholder?: (selectedCountryPlaceholder: string, selectedCountryData: CountryData) => string; /** * Specify the container for the country dropdown (use a jQuery selector * e.g. "body"). This is useful when the input is within a scrolling element, * or an element with overflow: hidden. Wherever you put the dropdown it * will automatically close on the window scroll event to prevent positioning * issues. If you want it to close when a different element is scrolled * (such as the input's parent), simply listen for the that scroll event, * and trigger $(window).scroll() e.g. */ dropdownContainer?: string; /** * Don't display the countries you specify. */ excludeCountries?: Array<string>; /** * Format the input value during initialisation. */ formatOnInit?: boolean; /** * When setting initialCountry to "auto", you must use this option to * specify a custom function that looks up the user's location. Also note * that when instantiating the plugin, we now return a deferred object, so * you can use .done(callback) to know when initialisation requests like * this have completed. * Note that the callback must still be called in the event of an error. */ geoIpLookup?: (callback: (countryCode: string) => void) => void; /** * Set the initial country selection by specifying it's country code. * You can also set it to "auto", which will lookup the user's country based * on their IP address (requires the geoIpLookup option). * Note that the "auto" option will not update the country selection if the * input already contains a number. If you leave initialCountry blank, * it will default to the first country in the list. */ initialCountry?: string; /** * Allow users to enter national numbers (and not have to think about * international dial codes). Formatting, validation and placeholders still * work. Then you can use getNumber to extract a full international number. * This option now defaults to true, and it is recommended that you leave it * that way as it provides a better experience for the user. */ nationalMode?: boolean; /** * Specify one of the keys from the global enum intlTelInputUtils.numberType * e.g. "FIXED_LINE" to tell the plugin you're expecting that type of number. * Currently this is only used to set the placeholder to the right type of number. */ numberType?: string; /** * Display only the countries you specify. */ onlyCountries?: Array<string>; /** * Specify the countries to appear at the top of the list. */ preferredCountries?: Array<string>; /** * Display the country dial code next to the selected flag so it's not part * of the typed number. Note that this will disable nationalMode because * technically we are dealing with international numbers, but with the * dial code separated. */ separateDialCode?: boolean; /** * Enable formatting/validation etc. by specifying the path to the included * utils.js script, which is fetched only when the page has finished loading * (on window.load) to prevent blocking. When instantiating the plugin, * we return a deferred object, so you can use .done(callback) to know when * initialisation requests like this have finished. Note that if you're * lazy loading the plugin script itself (intlTelInput.js) this will not * work and you will need to use the loadUtils method instead. */ utilsScript?: string; } interface CountryData { name: string; iso2: string; dialCode: string; } } declare namespace intlTelInputUtils { const enum numberFormat { E164 = 0, INTERNATIONAL = 1, NATIONAL = 2, RFC3966 = 3 } const enum numberType { FIXED_LINE = 0, MOBILE = 1, FIXED_LINE_OR_MOBILE = 2, TOLL_FREE = 3, PREMIUM_RATE = 4, SHARED_COST = 5, VOIP = 6, PERSONAL_NUMBER = 7, PAGER = 8, UAN = 9, VOICEMAIL = 10, UNKNOWN = -1 } const enum validationError { IS_POSSIBLE = 0, INVALID_COUNTRY_CODE = 1, TOO_SHORT = 2, TOO_LONG = 3, NOT_A_NUMBER = 4 } } interface JQuery { /** * Remove the plugin from the input, and unbind any event listeners. */ intlTelInput(method: 'destroy'): void; /** * Get the extension from the current number. * Requires the utilsScript option. * e.g. if the input value was "(702) 555-5555 ext. 1234", this would * return "1234". */ intlTelInput(method: 'getExtension'): string; /** * Get the current number in the given format (defaults to E.164 standard). * The different formats are available in the enum * intlTelInputUtils.numberFormat - taken from here. * Requires the utilsScript option. * Note that even if nationalMode is enabled, this can still return a full * international number. */ intlTelInput(method: 'getNumber'): string; /** * Get the type (fixed-line/mobile/toll-free etc) of the current number. * Requires the utilsScript option. * Returns an integer, which you can match against the various options in the * global enum intlTelInputUtils.numberType. * Note that in the US there's no way to differentiate between fixed-line and * mobile numbers, so instead it will return FIXED_LINE_OR_MOBILE. */ intlTelInput(method: 'getNumberType'): intlTelInputUtils.numberType; /** * Get the country data for the currently selected flag. */ intlTelInput(method: 'getSelectedCountryData'): IntlTelInput.CountryData; /** * Get more information about a validation error. * Requires the utilsScript option. * Returns an integer, which you can match against the various options in the * global enum intlTelInputUtils.validationError */ intlTelInput(method: 'getValidationError'): intlTelInputUtils.validationError; /** * Validate the current number. Expects an internationally formatted number * (unless nationalMode is enabled). If validation fails, you can use * getValidationError to get more information. * Requires the utilsScript option. * Also see getNumberType if you want to make sure the user enters a certain * type of number e.g. a mobile number. */ intlTelInput(method: 'isValidNumber'): boolean; intlTelInput(method: string): void; /** * Change the country selection (e.g. when the user is entering their address). * @param countryCode country code of the country to be set. */ intlTelInput(method: 'setCountry', countryCode: string): void; /** * Insert a number, and update the selected flag accordingly. * Note that by default, if nationalMode is enabled it will try to use * national formatting. * @param aNumber number to be set. */ intlTelInput(method: 'setNumber', aNumber: string): void; intlTelInput(method: string, value: string): void; /** * Get the current number in the given format (defaults to E.164 standard). * The different formats are available in the enum * intlTelInputUtils.numberFormat - taken from here. * Requires the utilsScript option. * Note that even if nationalMode is enabled, this can still return a full * international number. * @param numberFormat the format in which the number will be returned. */ intlTelInput(method: 'getNumber', numberFormat: intlTelInputUtils.numberFormat): string; intlTelInput(method: string, numberFormat: intlTelInputUtils.numberFormat): string; /** * initialise the plugin with optional options. * @param options options that can be provided during initialization. */ intlTelInput(options?: IntlTelInput.Options): JQueryDeferred<any>; }