Skip to content

Commit 5f6c957

Browse files
authored
implement new docsearch layout using designated slot for results panel; place footer below list (PR #109)
1 parent e0bb7df commit 5f6c957

File tree

3 files changed

+60
-22
lines changed

3 files changed

+60
-22
lines changed

src/css/header.css

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,6 @@ body {
6565
width: 100%;
6666
}
6767

68-
#search > .algolia-autocomplete {
69-
display: inherit !important;
70-
position: static !important;
71-
flex: auto;
72-
}
73-
7468
#search .query {
7569
border: 1px solid var(--navbar-button-border-color);
7670
color: inherit;

src/css/vendor/docsearch.css

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,46 @@
11
@import "docsearch.js/dist/cdn/docsearch.css";
22

3+
.algolia-autocomplete-results {
4+
position: absolute;
5+
top: 100%;
6+
width: inherit;
7+
}
8+
9+
.algolia-autocomplete {
10+
left: auto !important;
11+
width: inherit;
12+
}
13+
314
.algolia-autocomplete .ds-dropdown-menu {
4-
max-width: none;
5-
min-width: auto;
6-
width: 100%;
7-
font-size: initial;
815
background: var(--color-white);
916
border: 1px solid var(--navbar-button-border-color);
1017
border-radius: var(--navbar-menu-border-radius);
1118
box-shadow: var(--navbar-menu-box-shadow);
19+
display: flex !important;
20+
flex-direction: column;
21+
max-height: calc(var(--viewport-height) - var(--navbar-height) - 4rem);
22+
max-width: none;
23+
min-width: auto;
24+
position: absolute;
25+
top: 0;
26+
width: inherit;
1227
}
1328

1429
.algolia-autocomplete .ds-dropdown-menu::before {
1530
border-color: var(--navbar-button-border-color);
1631
border-radius: 0;
1732
}
1833

19-
.algolia-autocomplete .ds-dropdown-menu > :first-child {
20-
max-height: calc(var(--viewport-height) - var(--navbar-height) - 4rem);
21-
padding-bottom: 0;
22-
border: none;
34+
.algolia-autocomplete .ds-dropdown-menu .ds-dataset-1 {
2335
background: none;
36+
border: none;
2437
border-radius: 0;
2538
overscroll-behavior: none;
39+
padding: 0 8px;
2640
}
2741

2842
.algolia-autocomplete .ds-dropdown-menu .ds-suggestions {
29-
margin-top: 4px;
43+
margin: 4px 0 8px;
3044
}
3145

3246
.algolia-autocomplete .algolia-docsearch-suggestion {
@@ -46,21 +60,35 @@
4660
font-weight: normal;
4761
}
4862

49-
.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column::after {
63+
.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column::after {
5064
display: none;
5165
}
5266

53-
.algolia-docsearch-suggestion--subcategory-column-text::after {
67+
.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column-text::after {
5468
content: "|";
5569
padding: 0 0.5em;
5670
}
5771

58-
.algolia-autocomplete .ds-dropdown-menu > :first-child > :last-child {
59-
margin-bottom: 8px;
72+
.algolia-autocomplete .ds-footer {
73+
background-color: rgba(164, 167, 174, 0.1);
74+
border-top: 1px solid rgba(225, 225, 225, 0.5);
75+
padding: 10px 8px 8px;
76+
}
77+
78+
.algolia-autocomplete .ds-footer::after {
79+
content: "";
80+
display: table;
81+
clear: both;
82+
}
83+
84+
.algolia-autocomplete .algolia-docsearch-footer {
85+
margin-top: 0;
86+
width: 112px;
87+
height: 16px;
6088
}
6189

6290
@media screen and (min-width: 769px) {
63-
.algolia-docsearch-suggestion--subcategory-column-text::after {
91+
.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column-text::after {
6492
display: none;
6593
}
6694
}
@@ -70,7 +98,7 @@
7098
width: 28rem;
7199
}
72100

73-
.algolia-autocomplete .ds-dropdown-menu > :first-child {
101+
.algolia-autocomplete .ds-dropdown-menu {
74102
max-height: calc(var(--viewport-height) - var(--navbar-height));
75103
}
76104
}

src/js/vendor/docsearch.bundle.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,27 @@
1919
advancedSyntaxFeatures: ['exactPhrase'],
2020
}
2121
var searchField = document.getElementById(config.searchFieldId || 'search')
22+
searchField.appendChild(Object.assign(document.createElement('div'), { className: 'algolia-autocomplete-results' }))
2223
var controller = docsearch({
2324
appId: config.appId,
2425
apiKey: config.apiKey,
2526
indexName: config.indexName,
2627
inputSelector: '#' + searchField.id + ' .query',
27-
autocompleteOptions: { autoselect: false, debug: true, hint: false, minLength: 2 },
28+
autocompleteOptions: {
29+
autoselect: false,
30+
debug: true,
31+
hint: false,
32+
minLength: 2,
33+
appendTo: '#' + searchField.id + ' .algolia-autocomplete-results',
34+
autoWidth: false,
35+
templates: {
36+
footer:
37+
'<div class="ds-footer"><div class="algolia-docsearch-footer">' +
38+
'Search by <a class="algolia-docsearch-footer--logo" href="https://www.algolia.com/docsearch" ' +
39+
'target="_blank" rel="noopener">Algolia</a>' +
40+
'</div></div>',
41+
},
42+
},
2843
algoliaOptions: baseAlgoliaOptions,
2944
transformData: protectHitOrder,
3045
queryHook:
@@ -38,6 +53,7 @@
3853
var input = controller.input
3954
var typeahead = input.data('aaAutocomplete')
4055
var dropdown = typeahead.dropdown
56+
delete dropdown.datasets[0].templates.footer
4157
var menu = dropdown.$menu
4258
typeahead.setVal() // clear value on page reload
4359
input.on('autocomplete:closed', clearSearch.bind(typeahead))

0 commit comments

Comments
 (0)