]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Update DocSearch.js to latest version
authorPixelastic <tim@pixelastic.com>
Thu, 22 Nov 2018 14:34:34 +0000 (15:34 +0100)
committerXhmikosR <xhmikosr@gmail.com>
Thu, 22 Nov 2018 15:38:27 +0000 (17:38 +0200)
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 :)

site/docs/4.1/assets/js/src/search.js

index 546cca5c7e7d80e9728d28657c754431fa004615..459d412df9acb37abb48c80fa323ba2418c4fa94 100644 (file)
     algoliaOptions: {
       facetFilters: ['version:' + siteDocsVersion]
     },
-    handleSelected: function (input, event, suggestion) {
-      var url = suggestion.url
-      url = suggestion.isLvl1 ? url.split('#')[0] : url
-      // If it's a title we remove the anchor so it does not jump.
-      window.location.href = url
-    },
     transformData: function (hits) {
       return hits.map(function (hit) {
         var siteurl = getOrigin()
         // 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
       })
     },