mirror of
https://github.com/tenrok/bootstrap.git
synced 2026-06-05 16:42:29 +03:00
3e25bf403a
The latest (2.6.2) docsearch.js version now displays results as standard `<a href>` links, allowing users to `ctrl`-click on them to trigger default browser behavior of opening in a new tab. To maintain backward compatibility, this behavior has only been enabled to users that didn't define their own `handleSelected` method. This PR updates your `docsearch()` code to take advantage of the new `<a href>` template, by removing your custom `handleSelected` and moving its behavior to the `transformData` call. Namely, what you wanted to avoid was jumping to the first `<h1>` of the pages, which would prevent users from seeing the header. This PR checks if the suggestion targets the `#content` anchor (meaning it goes to this first `<h1>`) and remove it. Behavior should be the same, but at least now you can enjoy the `ctrl`-click :)
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
|
|
// IT'S ALL JUST JUNK FOR OUR DOCS!
|
|
// ++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
(function () {
|
|
'use strict'
|
|
|
|
if (!window.docsearch) {
|
|
return
|
|
}
|
|
|
|
var inputElement = document.getElementById('search-input')
|
|
var siteDocsVersion = inputElement.getAttribute('data-docs-version')
|
|
|
|
function getOrigin() {
|
|
var location = window.location
|
|
var origin = location.origin
|
|
|
|
if (!origin) {
|
|
var port = location.port ? ':' + location.port : ''
|
|
|
|
origin = location.protocol + '//' + location.hostname + port
|
|
}
|
|
|
|
return origin
|
|
}
|
|
|
|
window.docsearch({
|
|
apiKey: '5990ad008512000bba2cf951ccf0332f',
|
|
indexName: 'bootstrap',
|
|
inputSelector: '#search-input',
|
|
algoliaOptions: {
|
|
facetFilters: ['version:' + siteDocsVersion]
|
|
},
|
|
transformData: function (hits) {
|
|
return hits.map(function (hit) {
|
|
var siteurl = getOrigin()
|
|
var urlRE = /^https?:\/\/getbootstrap\.com/
|
|
|
|
// When in production, return the result as is,
|
|
// otherwise remove our url from it.
|
|
hit.url = siteurl.match(urlRE) ? hit.url : hit.url.replace(urlRE, '')
|
|
|
|
// Prevent jumping to first header
|
|
if (hit.anchor === 'content') {
|
|
hit.url = hit.url.replace(/#content$/, '')
|
|
hit.anchor = null
|
|
}
|
|
|
|
return hit
|
|
})
|
|
},
|
|
debug: false // Set debug to true if you want to inspect the dropdown
|
|
})
|
|
}())
|