omnibox-js
Version:
Turn your div into a chrome omnibox
117 lines (88 loc) • 3.89 kB
Markdown
# omnibox-js
Turn your `div` label into [chrome omnibox](https://developer.chrome.com/docs/extensions/reference/api/omnibox).
## Overview
A list of projects based on this library:
- [https://query.rs](https://query.rs)
- [Rust Search Extension](https://github.com/huhu/rust-search-extension)
- [Go Search Extension](https://github.com/huhu/go-search-extension)
- [C/C++ Search Extension](https://github.com/huhu/cpp-search-extension)
- [Kubernetes Search Extension](https://github.com/huhu/k8s-search-extension)
- [Js Search Extension](https://github.com/huhu/js-search-extension)
- [AWS Search Extension](https://github.com/pitkley/aws-search-extension)
- [R Search Extension](https://github.com/ShixiangWang/r-search-extension)
## API
### Omnibox
**constructor({ render, defaultSuggestion, maxSuggestionSize = 8, hint = false })**
```js
let omnibox = new Omnibox({
render: new Render(),
// The default suggestion title.
defaultSuggestion: "A handy search extension.",
// Max suggestion size for per page.
maxSuggestionSize: 8,
});
```
**bootstrap(config)**
Bootstrap the omnibox.
- **config**: The configuration object to bootstrap the Omnibox.
```js
{
// The default global search function
onSearch: function(query){},
onFormat: function(index, item){},
onAppend: function(query){},
onEmptyNavigate: function(content, disposition) {},
beforeNavigate: function(content) {},
afterNavigated: function(query, result) {},
}
```
- **config.onSearch**: A hook function to perform the default search.
- **config.onFormat**: A hook function to format the search result.
- **config.onAppend**: A hook function append the custom item to the result list.
- **config.beforeNavigate**: A hook function to before URL navigate. You have the last chance to modify the url before it navigated.
- **config.afterNavigate**: A hook function to after URL navigated. You have the chance to record the history here.
- **config.onEmptyNavigate**: If the content is a Non-URL which would navigate failed, then fallback to this hook function.
The `onSearch`, `beforeNavigate`, `afterNavigated`, and `onEmptyNavigate` in `Omnibox::boostrap(config)` can be `async` function.
**addPrefixQueryEvent(prefix, event)**
Add prefix query event.
**addRegexQueryEvent(regex, event)**
Add regex query event.
### QueryEvent
```js
{
name,
onSearch,
onFormat = undefined,
onAppend = undefined,
prefix = undefined,
regex = undefined,
// Whether enable the query as a default search.
// Default search means user can perform search without any sigils.
defaultSearch = false,
// The hook method to enable default search dynamically.
// This hook method is preferred over defaultSearch property.
isDefaultSearch = undefined,
// The default search priority. The smaller, the higher.
searchPriority = 0
}
```
The `onSearch` can be `async` function.
## Render
**constructor({ el, icon, placeholder })**
## Example
```
$ npx serve
┌───────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:3000 │
│ - Network: http://192.168.1.122:3000 │
│ │
│ Copied local address to clipboard! │
│ │
└───────────────────────────────────────────┘
$ open http://localhost:3000/examples/
```
## License
Licensed under Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)