diff options
Diffstat (limited to 'themes/docsy/assets/js')
-rw-r--r-- | themes/docsy/assets/js/anchor.js | 49 | ||||
-rw-r--r-- | themes/docsy/assets/js/base.js | 65 | ||||
-rw-r--r-- | themes/docsy/assets/js/search.js | 43 |
3 files changed, 157 insertions, 0 deletions
diff --git a/themes/docsy/assets/js/anchor.js b/themes/docsy/assets/js/anchor.js new file mode 100644 index 0000000..9d8a0e6 --- /dev/null +++ b/themes/docsy/assets/js/anchor.js @@ -0,0 +1,49 @@ +/* + * Copyright 2018 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +(function ($) { + 'use strict'; + + // Headers' anchor link that shows on hover + $(function () { + // append anchor links to headings in markdown. + var article = document.getElementsByTagName('main')[0]; + if (!article) { + return; + } + var headings = article.querySelectorAll('h1, h2, h3, h4, h5, h6'); + headings.forEach(function (heading) { + if (heading.id) { + var a = document.createElement('a'); + // set visibility: hidden, not display: none to avoid layout change + a.style.visibility = 'hidden'; + // [a11y] hide this from screen readers, etc.. + a.setAttribute('aria-hidden', 'true'); + // material insert_link icon in svg format + a.innerHTML = ' <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/></svg>'; + a.href = '#' + heading.id; + heading.insertAdjacentElement('beforeend', a); + heading.addEventListener('mouseenter', function () { + a.style.visibility = 'initial'; + }); + heading.addEventListener('mouseleave', function () { + a.style.visibility = 'hidden'; + }); + } + }); + }); + +}(jQuery)); diff --git a/themes/docsy/assets/js/base.js b/themes/docsy/assets/js/base.js new file mode 100644 index 0000000..49f27d0 --- /dev/null +++ b/themes/docsy/assets/js/base.js @@ -0,0 +1,65 @@ +/* + * Copyright 2018 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +(function($) { + + 'use strict'; + + $(function() { + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover(); + + $('.popover-dismiss').popover({ + trigger: 'focus' + }) + }); + + + function bottomPos(element) { + return element.offset().top + element.outerHeight(); + } + + // Bootstrap Fixed Header + $(function() { + var promo = $(".js-td-cover"); + if (!promo.length) { + return + } + + var promoOffset = bottomPos(promo); + var navbarOffset = $('.js-navbar-scroll').offset().top; + + var threshold = Math.ceil($('.js-navbar-scroll').outerHeight()); + if ((promoOffset - navbarOffset) < threshold) { + $('.js-navbar-scroll').addClass('navbar-bg-onscroll'); + } + + + $(window).on('scroll', function() { + var navtop = $('.js-navbar-scroll').offset().top - $(window).scrollTop(); + var promoOffset = bottomPos($('.js-td-cover')); + var navbarOffset = $('.js-navbar-scroll').offset().top; + if ((promoOffset - navbarOffset) < threshold) { + $('.js-navbar-scroll').addClass('navbar-bg-onscroll'); + } else { + $('.js-navbar-scroll').removeClass('navbar-bg-onscroll'); + $('.js-navbar-scroll').addClass('navbar-bg-onscroll--fade'); + } + }); + }); + + +}(jQuery)); diff --git a/themes/docsy/assets/js/search.js b/themes/docsy/assets/js/search.js new file mode 100644 index 0000000..83fbb15 --- /dev/null +++ b/themes/docsy/assets/js/search.js @@ -0,0 +1,43 @@ +/* +Copyright 2018 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +(function($) { + + 'use strict'; + + var Search = { + init: function() { + $(document).ready(function() { + $(document).on('keypress', '.td-search-input', function(e) { + if (e.keyCode !== 13) { + return + } + + var query = $(this).val(); + var searchPage = "{{ "search/" | absURL }}?q=" + query; + document.location = searchPage; + + return false; + }); + + }); + }, + }; + + Search.init(); + + +}(jQuery)); |