From 7d96984ff70a71d6caf0001270fbaa6f862ecbdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Silva=20and=20Jeff=20Taggart?= Date: Fri, 9 Aug 2013 10:50:12 +0100 Subject: [PATCH] adding application.js to fix searchbar dropdown --- _layouts/default.html | 1 + js/application.js | 119 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 js/application.js diff --git a/_layouts/default.html b/_layouts/default.html index 8cfa48c..934bbe3 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -14,6 +14,7 @@ + diff --git a/js/application.js b/js/application.js new file mode 100644 index 0000000..8a9bad4 --- /dev/null +++ b/js/application.js @@ -0,0 +1,119 @@ +$(function(){ + + $.fn.springPopover = function(){ + this.each(function(i,e){ + var $e = $(e); + var contents = $e.html(); + + $e.html(""+$e.data('title')+""). + popover({content: contents, trigger: 'click', html: true}); + }); + + return this; + }; + + + //OPENS ITEM DROPDOWN WIDGET + $(".js-item--open-dropdown").click(function () { + var dropdownItem = $(this).parents(".js-item-dropdown--wrapper"); + var documentHeight = $(document).height(); + var headerHeight = $("header").outerHeight(); + var footerHeight = $("footer").outerHeight(); + var scrimHeight = documentHeight - headerHeight - footerHeight; + + dropdownItem.toggleClass("js-open"); + dropdownItem.siblings().removeClass("js-open"); + $(this).parents(".js-item-dropdown-widget--wrapper").siblings().find(".js-item-dropdown--wrapper").removeClass("js-open"); + + $("#scrim").addClass("js-show").css("height", scrimHeight).css("top", headerHeight); + $("#scrim").click(function() { + $(".js-item-dropdown--wrapper").removeClass("js-open"); + $(this).removeClass("js-show"); + }); + }); + + //OPENS SEARCH DROPDOWN + $(".js-search-input-open").click(function() { + $(".nav-search").addClass("js-highlight"); + var inputContainer = $(".js-search-dropdown"); + var input = $(".js-search-input"); + inputContainer.addClass("js-show"); + + //FOCUSES SEARCH INPUT ON OPEN + setTimeout(function() { + input.focus(); + }, 100); + + //CLOSES SEARCH DROPDOWN + $(".body--container, .js-search-input-close").click(function() { + inputContainer.removeClass("js-show"); + $(".nav-search").removeClass("js-highlight"); + $("#scrim").removeClass("js-show"); + }); + }); + + + //AUTO OPENS SEARCH DROPDOWN ON SEARCH VIEW AND + if (window.location.pathname == "/search") { + $(".nav-search").addClass("js-highlight"); + $(".js-search-dropdown").addClass("js-show no-animation"); + + //PREPOPULATES INPUT WITH SEARCH QUERY AND + var searchQuery = decodeURIComponent(window.location.search.replace(/\+/g," ")); + var seachStart = searchQuery.search("q="); + var searchString = searchQuery.substr(seachStart+2); + + $(".js-search-input").val(searchString); + + //PREPOPULATES TITLE WITH SEARCH QUERY + $(".js-search-results--title").html(searchString); + + //CLOSES SEARCH DROPDOWN + $(".js-search-input-close").click(function() { + $(".js-search-dropdown").removeClass("js-show no-animation"); + $(".nav-search").removeClass("js-highlight"); + }); + }; + + $.fn.showPreferredLink = function() { + this.find("li").hide(); + this.find("li." + detectOs() + detectArch()).show(); + return this; + }; + $('.download-links').showPreferredLink(); +}); + + + + +var detectOs = function() { + if (navigator.appVersion.indexOf("Win")!=-1) return "Windows"; + if (navigator.appVersion.indexOf("Mac")!=-1) return "Mac"; + if (navigator.appVersion.indexOf("Linux")!=-1) return "Linux"; + return "Unknown"; +} + +var detectArch = function() { + if (navigator.platform.indexOf("Win64") !== -1) { + return "64" + } + + if (navigator.platform.indexOf("Linux x86_64") !== -1) { + return "64"; + } + + if (/Mac OS X 10.[0-5]/.test(navigator.userAgent)) { + return "32" + } + + if (navigator.userAgent.indexOf("Mac OS X") !== -1) { + return "64" + } + + return "32"; +} + + + + +