Skip to content

Commit a4f112d

Browse files
drodrigulnHaroenvfrancoischalifourdhayab
authored
feat: add redirect url plugin (#1082)
The new Redirect URL plugin is used in conjunction with the dashboard / merchandising studio rule consequence "redirect to a url". It adds an item visually when a redirect matches, and a handler for onSubmit + onSelect to navigate to that URL. Co-authored-by: Haroen Viaene <[email protected]> Co-authored-by: François Chalifour <[email protected]> Co-authored-by: Dhaya <[email protected]>
1 parent 8048442 commit a4f112d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1403
-39
lines changed

.circleci/config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ aliases:
2929
mkdir -p packages/autocomplete-preset-algolia/dist
3030
mkdir -p packages/autocomplete-plugin-algolia-insights/dist
3131
mkdir -p packages/autocomplete-plugin-recent-searches/dist
32+
mkdir -p packages/autocomplete-plugin-redirect-url/dist
3233
mkdir -p packages/autocomplete-plugin-query-suggestions/dist
3334
mkdir -p packages/autocomplete-plugin-tags/dist
3435
@@ -38,6 +39,7 @@ aliases:
3839
cp -R /tmp/workspace/packages/autocomplete-preset-algolia/dist packages/autocomplete-preset-algolia
3940
cp -R /tmp/workspace/packages/autocomplete-plugin-algolia-insights/dist packages/autocomplete-plugin-algolia-insights
4041
cp -R /tmp/workspace/packages/autocomplete-plugin-recent-searches/dist packages/autocomplete-plugin-recent-searches
42+
cp -R /tmp/workspace/packages/autocomplete-plugin-redirect-url/dist packages/autocomplete-plugin-redirect-url
4143
cp -R /tmp/workspace/packages/autocomplete-plugin-query-suggestions/dist packages/autocomplete-plugin-query-suggestions
4244
cp -R /tmp/workspace/packages/autocomplete-plugin-tags/dist packages/autocomplete-plugin-tags
4345
@@ -83,6 +85,7 @@ jobs:
8385
mkdir -p /tmp/workspace/packages/autocomplete-preset-algolia/dist
8486
mkdir -p /tmp/workspace/packages/autocomplete-plugin-algolia-insights/dist
8587
mkdir -p /tmp/workspace/packages/autocomplete-plugin-recent-searches/dist
88+
mkdir -p /tmp/workspace/packages/autocomplete-plugin-redirect-url/dist
8689
mkdir -p /tmp/workspace/packages/autocomplete-plugin-query-suggestions/dist
8790
mkdir -p /tmp/workspace/packages/autocomplete-plugin-tags/dist
8891
@@ -92,6 +95,7 @@ jobs:
9295
cp -R packages/autocomplete-preset-algolia/dist /tmp/workspace/packages/autocomplete-preset-algolia
9396
cp -R packages/autocomplete-plugin-algolia-insights/dist /tmp/workspace/packages/autocomplete-plugin-algolia-insights
9497
cp -R packages/autocomplete-plugin-recent-searches/dist /tmp/workspace/packages/autocomplete-plugin-recent-searches
98+
cp -R packages/autocomplete-plugin-redirect-url/dist /tmp/workspace/packages/autocomplete-plugin-redirect-url
9599
cp -R packages/autocomplete-plugin-query-suggestions/dist /tmp/workspace/packages/autocomplete-plugin-query-suggestions
96100
cp -R packages/autocomplete-plugin-tags/dist /tmp/workspace/packages/autocomplete-plugin-tags
97101
- persist_to_workspace:

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ You can find more on the [documentation](https://www.algolia.com/doc/ui-librarie
101101
| [`autocomplete-plugin-recent-searches`](packages/autocomplete-plugin-recent-searches) | A plugin to add recent searches to Autocomplete | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches) |
102102
| [`autocomplete-plugin-query-suggestions`](packages/autocomplete-plugin-query-suggestions) | A plugin to add query suggestions to Autocomplete | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-query-suggestions) |
103103
| [`autocomplete-plugin-algolia-insights`](packages/autocomplete-plugin-algolia-insights) | A plugin to add Algolia Insights to Autocomplete | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights) |
104+
| [`autocomplete-plugin-redirect-url`](packages/autocomplete-plugin-redirect-url) | A plugin to enable redirect URLs | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-redirect-url) |
104105
| [`autocomplete-plugin-tags`](packages/autocomplete-plugin-tags) | A plugin to manage and display a list of tags in Autocomplete | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-tags) |
105106
| [`autocomplete-preset-algolia`](packages/autocomplete-preset-algolia) | Presets to use Algolia features with Autocomplete | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-preset-algolia) |
106107
| [`autocomplete-theme-classic`](packages/autocomplete-theme-classic) | Classic theme for Autocomplete | [Documentation](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-theme-classic) |

bundlesize.config.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
"files": [
33
{
44
"path": "packages/autocomplete-core/dist/umd/index.production.js",
5-
"maxSize": "6.25 kB"
5+
"maxSize": "6.5 kB"
66
},
77
{
88
"path": "packages/autocomplete-js/dist/umd/index.production.js",
9-
"maxSize": "17.75 kB"
9+
"maxSize": "18 kB"
1010
},
1111
{
1212
"path": "packages/autocomplete-preset-algolia/dist/umd/index.production.js",
@@ -16,6 +16,10 @@
1616
"path": "packages/autocomplete-plugin-algolia-insights/dist/umd/index.production.js",
1717
"maxSize": "2 kB"
1818
},
19+
{
20+
"path": "packages/autocomplete-plugin-redirect-url/dist/umd/index.production.js",
21+
"maxSize": "2 kB"
22+
},
1923
{
2024
"path": "packages/autocomplete-plugin-recent-searches/dist/umd/index.production.js",
2125
"maxSize": "3 kB"

examples/redirect-url/README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Autocomplete Redirect URL example
2+
3+
This example helps you quickly bootstrap a basic Autocomplete with redirect functionality enabled.
4+
5+
<p align="center"><img src="capture.png?raw=true" alt="A capture of the Autocomplete redirect URL example" /></p>
6+
7+
## Demo
8+
9+
[Access the demo](https://codesandbox.io/s/github/algolia/autocomplete/tree/next/examples/redirect-url)
10+
11+
## How to run this example locally
12+
13+
### 1. Clone this repository
14+
15+
```sh
16+
git clone [email protected]:algolia/autocomplete.git
17+
```
18+
19+
### 2. Install the dependencies and run the server
20+
21+
```sh
22+
yarn
23+
yarn workspace @algolia/autocomplete-example-redirect-url start
24+
```
25+
26+
Alternatively, you may use npm:
27+
28+
```sh
29+
cd examples/redirect-url
30+
npm install
31+
npm start
32+
```
33+
34+
Open <http://localhost:1234> to see your app.
35+
36+
## Additional resources
37+
Learn more [how to get started with Autocomplete](https://www.algolia.com/doc/ui-libraries/autocomplete/introduction/getting-started/) in the Algolia documentation.
38+

examples/redirect-url/app.tsx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { autocomplete, getAlgoliaResults } from '@algolia/autocomplete-js';
2+
import { createRedirectUrlPlugin } from '@algolia/autocomplete-plugin-redirect-url';
3+
import algoliasearch from 'algoliasearch/lite';
4+
5+
import '@algolia/autocomplete-theme-classic';
6+
7+
const appId = 'latency';
8+
const apiKey = '6be0576ff61c053d5f9a3225e2a90f76';
9+
const searchClient = algoliasearch(appId, apiKey);
10+
11+
autocomplete<{ name: string }>({
12+
container: '#autocomplete',
13+
placeholder: 'Search',
14+
openOnFocus: true,
15+
plugins: [createRedirectUrlPlugin()],
16+
getSources({ query }) {
17+
return [
18+
{
19+
sourceId: 'demo-source',
20+
templates: {
21+
item(params) {
22+
const { item, html } = params;
23+
return html`<a class="aa-ItemLink">${item.name}</a>`;
24+
},
25+
},
26+
getItemInputValue({ item }) {
27+
return item.name;
28+
},
29+
getItems() {
30+
return getAlgoliaResults({
31+
searchClient,
32+
queries: [
33+
{
34+
indexName: 'instant_search',
35+
query,
36+
params: {
37+
ruleContexts: ['enable-redirect-url'], // note: only needed for this demo data
38+
hitsPerPage: 10,
39+
},
40+
},
41+
],
42+
});
43+
},
44+
},
45+
];
46+
},
47+
});

examples/redirect-url/capture.png

163 KB
Loading

examples/redirect-url/env.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as preact from 'preact';
2+
3+
// Parcel picks the `source` field of the monorepo packages and thus doesn't
4+
// apply the Babel config. We therefore need to manually override the constants
5+
// in the app, as well as the React pragmas.
6+
// See https://twitter.com/devongovett/status/1134231234605830144
7+
(global as any).__DEV__ = process.env.NODE_ENV !== 'production';
8+
(global as any).__TEST__ = false;
9+
(global as any).h = preact.h;
10+
(global as any).React = preact;

examples/redirect-url/favicon.png

43.1 KB
Loading

examples/redirect-url/index.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<html lang="en">
2+
<head>
3+
<meta charset="UTF-8" />
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
5+
6+
<link rel="shortcut icon" href="favicon.png" type="image/x-icon" />
7+
<link rel="stylesheet" href="style.css" />
8+
9+
<title>Redirect URL | Autocomplete</title>
10+
</head>
11+
12+
<body>
13+
<div class="container">
14+
<div id="autocomplete"></div>
15+
</div>
16+
17+
<script type="module" src="env.ts"></script>
18+
<script type="module" src="app.tsx"></script>
19+
</body>
20+
</html>

examples/redirect-url/package.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"name": "@algolia/autocomplete-example-redirect-url",
3+
"description": "Autocomplete example for Redirect URL plugin",
4+
"version": "1.7.4",
5+
"private": true,
6+
"license": "MIT",
7+
"scripts": {
8+
"build": "parcel build index.html",
9+
"start": "parcel index.html"
10+
},
11+
"dependencies": {
12+
"@algolia/autocomplete-js": "1.7.4",
13+
"@algolia/autocomplete-plugin-redirect-url": "1.7.4",
14+
"@algolia/autocomplete-theme-classic": "1.7.4",
15+
"algoliasearch": "4.14.3",
16+
"preact": "10.5.13"
17+
},
18+
"devDependencies": {
19+
"parcel": "2.8.2"
20+
},
21+
"keywords": [
22+
"algolia",
23+
"autocomplete",
24+
"javascript"
25+
]
26+
}

0 commit comments

Comments
 (0)