UNPKG

domainr-search-box

Version:
130 lines (97 loc) 6.11 kB
# Domainr Search Box Drop-in [instant domain search](https://domainr.com/) for your site. ## Installation Make sure you have [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) installed. Run `npm install domainr-search-box` to create a local copy of the module. ## Usage From the `dist/` directory, include `domainr-search-box.min.js` and `domainr-search-box.css` on your page. Add an empty `div` underneath your `input`; the Domainr Search Box will fill it with results. To authenticate, use the API [for free via RapidAPI](https://rapidapi.com/domainr/api/Domainr) with your RapidAPI API key, or [contact us](mailto:sales@domainr.com) regarding high-volume usage. ### Plain JavaScript ```javascript var box = new domainr.SearchBox({ mashapeKey: yourRapidAPIKey, // your RapidAPI API key // clientId: yourClientId, // your high-volume clientId; not needed if using RapidAPI observe: yourInputElement, renderTo: yourResultsElement, onSelect: function(result) { ... } }); ``` ### jQuery ```javascript $('input#search') .domainrSearchBox({ mashapeKey: yourRapidAPIKey, // your RapidAPI API key clientId: yourClientId, // or alternatively your Client ID; not needed if using RapidAPI renderTo: yourResultsElementOrSelector, onSelect: function(result) { ... } }); ``` ## Reference ### Plain JavaScript #### SearchBox Create a `domainr.SearchBox` with `new domainr.SearchBox(options)`. The `options` argument is an object with the following possible properties: * `clientId`: Either this or `mashapeKey` are required. * `mashapeKey`: Either this or `clientId` are required. * `observe`: The DOM element to observe. * `renderTo`: The DOM element to contain the rendered autocomplete. * `renderWith`: A function that will render the autocomplete. It will receive a state object. * `limit`: A number for the max number of results to display. Optional; default = 20. * `registrar`: Registrar or Registry domain name, to limit search results to domains supported by a registrar or registry. e.g. `namecheap.com` or `donuts.co` * `defaults`: Include the given default zones (an array of strings) in your search, e.g. `["coffee", "cafe", "organic"]`. Results will be sorted according to the order of this array. * `searchDelay`: How many milliseconds after keyboard entry before the search is made (to avoid redundant network traffic). Optional; default = `250`. * `onSelect`: An optional function to be called when the user selects a domain (if omitted, a new window will open with a recommended registrar for that result). Receives a single object with these properties: * `domain` * `host` * `path` * `registerURL` * `status` * `subdomain` * `zone` #### Client Create a `domainr.Client` with `new domainr.Client(options)`. The `options` argument is an object with the following possible properties: * `clientId`: Either this or `mashapeKey` are required. * `mashapeKey`: Either this or clientId are required. * `baseURL`: Optional. The `domainr.Client` has the following methods: * `search(params, callback)`: Search with the given params and call the callback with the results upon completion. The `params` argument is an object with the following possible properties: * `defaults`: Comma-delimited string, e.g. `coffee,cafe,organic` * `location`: String, e.g. `de` * `query`: String. * `registrar`: String, e.g. `namecheap.com` or `donuts.co` * `status(domains, callback)`: Call the `status` API with the given domains (an array) and call the callback with the results upon completion. * `options(domain, callback)`: Call the `options` API with the given domain (a string) and call the callback with the results upon completion. * `zones(callback)`: Call the `zones` API and call the callback with the results upon completion. * `registerURL(domain, options)`: Returns a URL for registering the given domain (a string). The options parameter is an object; currently one property is accepted, `registrar`, to specify a specific registrar. ### jQuery Select the element you want to observe and call `.domainrSearchBox(options)` on it. Possible options include: * `clientId`: Either this or `mashapeKey` are required. * `mashapeKey`: Either this or `clientId` are required. * `renderTo`: Specification for which element to contain the rendered autocomplete. Can be anything jQuery will accept (selector, element, jQuery object). * `renderWith`: A function that will render the autocomplete. It will receive a state object. * `limit`: A number for the max number of results to display. Optional; default = 20. * `registrar`: Registrar or Registry domain name, to limit search results to domains supported by a registrar or registry. e.g. `namecheap.com` or `donuts.co` * `defaults`: Include the given default zones (an array of strings) in your search, e.g. `["coffee", "cafe", "organic"]`. Results will be sorted according to the order of this array. * `searchDelay`: How many milliseconds after keyboard entry before the search is made (to avoid redundant network traffic). Optional; default = 250. * `onSelect`: An optional function to be called when the user selects a domain (if omitted, a new window will open with a recommended registrar for that result). Receives a single object with these properties: * `domain` * `host` * `path` * `registerURL` * `status` * `subdomain` * `zone` ## Development You'll need to have [Node](https://nodejs.org/) and [Gulp](http://gulpjs.com/) installed. * `npm install -g gulp` to install Gulp. * `npm install` to install dependencies * `gulp build` to build the code. * `gulp watch` to watch the code, building on changes. * note: console output will appear when files are changed * `gulp` builds + watch, and runs the demo in a webpage. ### Publishing new versions - Always increment the version - `npm whoami` to see your current npm user - `npm publish` to publish it Note that the demo requires the code to be built. Also, you'll need to get a `mashapeKey` or `clientId` and set up a `config.js`; instructions are in `index.html`. © 2018 nb.io, LLC