mirror of
https://github.com/inspec/inspec
synced 2024-11-29 08:00:33 +00:00
Merge pull request #1190 from chef/mw/nav
Website: Fix buggy behavior in nav and add global message
This commit is contained in:
commit
bf623e6a7d
7 changed files with 133 additions and 10 deletions
|
@ -4,10 +4,7 @@ const $navToggle = $('.main-nav--toggle');
|
||||||
const navBreakpoint = 730; // this should match $nav-breakpoint in _nav.scss
|
const navBreakpoint = 730; // this should match $nav-breakpoint in _nav.scss
|
||||||
const $mainContent = $('#main-content');
|
const $mainContent = $('#main-content');
|
||||||
const $mainNav = $('#main-nav');
|
const $mainNav = $('#main-nav');
|
||||||
|
const $mainNavCtas = $('#main-nav-ctas');
|
||||||
$(document).ready(function() {
|
|
||||||
$mainContent.css('min-height', $mainNav.outerHeight() - $('#main-nav-ctas').outerHeight());
|
|
||||||
});
|
|
||||||
|
|
||||||
$navToggle.click(function() {
|
$navToggle.click(function() {
|
||||||
$(this).toggleClass('is-active');
|
$(this).toggleClass('is-active');
|
||||||
|
@ -22,17 +19,57 @@ $(window).resize(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
// toggles fixed nav position when the window is too short
|
// toggles fixed nav position when the window is too short
|
||||||
const footerOffsetTop = $("#main-footer").offset().top;
|
var footerOffsetTop, navOffsetBottom;
|
||||||
var navOffsetBottom;
|
|
||||||
|
|
||||||
function toggleFixedNavPosition() {
|
function toggleFixedNavPosition() {
|
||||||
navOffsetBottom = $mainNav.outerHeight() + $(window).scrollTop();
|
navOffsetBottom = $mainNav.outerHeight() + $(window).scrollTop();
|
||||||
|
footerOffsetTop = $("#main-footer").offset().top;
|
||||||
|
|
||||||
$mainNav.toggleClass("is-fixed-bottom", footerOffsetTop < navOffsetBottom)
|
$mainNav.toggleClass("is-fixed-bottom", (footerOffsetTop < navOffsetBottom) && $(window).height() <= 759)
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleFixedNavPosition();
|
$(document).ready(function() {
|
||||||
|
$mainContent.css('min-height', $mainNav.outerHeight() - $('#main-nav-ctas').outerHeight());
|
||||||
|
toggleFixedNavPosition();
|
||||||
|
});
|
||||||
|
|
||||||
$(window).scroll(function() {
|
$(window).scroll(function() {
|
||||||
toggleFixedNavPosition();
|
toggleFixedNavPosition();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// handle nav when global message exists
|
||||||
|
// gm_session_id is set on at template level
|
||||||
|
var globalMessageHeight;
|
||||||
|
const $globalMessage = $("#global-message");
|
||||||
|
|
||||||
|
function adjustNavPosition() {
|
||||||
|
globalMessageHeight = $globalMessage.outerHeight();
|
||||||
|
|
||||||
|
if ($globalMessage.is(":visible")) {
|
||||||
|
$mainNav.css('top', globalMessageHeight);
|
||||||
|
$mainNavCtas.css('top', globalMessageHeight);
|
||||||
|
$mainContent.css('margin-top', globalMessageHeight + 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!localStorage.getItem(gm_session_id)) {
|
||||||
|
$globalMessage.addClass('is-visible');
|
||||||
|
adjustNavPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("#global-message .dismiss-button").click(function(e) {
|
||||||
|
$globalMessage.removeClass('is-visible')
|
||||||
|
$mainNav.css('top', '');
|
||||||
|
$mainNavCtas.css('top', '');
|
||||||
|
$mainContent.css('margin-top', 100);
|
||||||
|
localStorage.setItem(gm_session_id, "true");
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$(window).resize(function() {
|
||||||
|
if(!localStorage.getItem(gm_session_id)) {
|
||||||
|
adjustNavPosition();
|
||||||
|
}
|
||||||
|
});
|
18
www/source/layouts/_global-message.slim
Normal file
18
www/source/layouts/_global-message.slim
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/ If you update the content, you need to update the value of gm_session_id
|
||||||
|
/ in order for the Div to show.
|
||||||
|
|
||||||
|
#global-message
|
||||||
|
.container
|
||||||
|
.row
|
||||||
|
.columns.small-8.medium-8.medium-push-2.medium-text-center
|
||||||
|
a href="https://www.chef.io/webinars/?commid=225819" target="_blank"
|
||||||
|
strong Upcoming Webinar: Compliance as Code with InSpec 1.0 Oct 25 10AM PST
|
||||||
|
| Register now!
|
||||||
|
|
||||||
|
.columns.small-4.medium-2.text-right
|
||||||
|
span.dismiss-button
|
||||||
|
i.fa.fa-times-circle-o
|
||||||
|
| Dismiss
|
||||||
|
|
||||||
|
javascript:
|
||||||
|
gm_session_id = 'inspecGlobalMessage1';
|
|
@ -16,6 +16,8 @@ html
|
||||||
== stylesheet_link_tag :site
|
== stylesheet_link_tag :site
|
||||||
|
|
||||||
body class="#{page_classes}"
|
body class="#{page_classes}"
|
||||||
|
= partial "layouts/global-message"
|
||||||
|
|
||||||
.container
|
.container
|
||||||
= partial "layouts/nav"
|
= partial "layouts/nav"
|
||||||
|
|
||||||
|
|
47
www/source/stylesheets/_global-message.scss
Normal file
47
www/source/stylesheets/_global-message.scss
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#global-message {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 95;
|
||||||
|
top: -200px;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: 15px 0;
|
||||||
|
background-color: $inspec-blue;
|
||||||
|
color: $white;
|
||||||
|
font-size: 15px;
|
||||||
|
transition: top 0.3s ease;
|
||||||
|
|
||||||
|
&.is-visible {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dismiss-button {
|
||||||
|
margin: 3px;
|
||||||
|
color: $white;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: 700;
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:hover, a:visited, a:active, a:link {
|
||||||
|
color: $white;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 649px) {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include nav-small {
|
||||||
|
position: fixed;
|
||||||
|
top: -200px;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include nav-large {
|
||||||
|
z-index: 1100;
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,7 +14,9 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-content {
|
#main-content {
|
||||||
|
position: relative;
|
||||||
margin-top: 64px;
|
margin-top: 64px;
|
||||||
|
transition: margin 0.3s ease;
|
||||||
|
|
||||||
@include nav-small {
|
@include nav-small {
|
||||||
padding: 0 $side-nav-padding-small;
|
padding: 0 $side-nav-padding-small;
|
||||||
|
|
|
@ -23,16 +23,27 @@ $nav-breakpoint: 730px;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: $white;
|
background: $white;
|
||||||
|
transition: top 0.3s ease;
|
||||||
|
|
||||||
@include nav-large {
|
@include nav-large {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
width: $side-nav-width;
|
width: $side-nav-width;
|
||||||
|
}
|
||||||
|
|
||||||
&.is-fixed-bottom {
|
&.is-fixed-bottom {
|
||||||
bottom: 137px;
|
@include nav-large {
|
||||||
|
top: auto !important;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: 640px) and (max-width: 879px) {
|
||||||
|
bottom: 156px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 880px) {
|
||||||
|
bottom: 141px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,6 +113,10 @@ $nav-breakpoint: 730px;
|
||||||
.sidebar-layout-docs & {
|
.sidebar-layout-docs & {
|
||||||
max-height: calc(100vh - 64px);
|
max-height: calc(100vh - 64px);
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
|
|
||||||
|
@include nav-large {
|
||||||
|
max-height: calc(100vh - 107px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,6 +158,7 @@ $nav-breakpoint: 730px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-nav-ctas {
|
#main-nav-ctas {
|
||||||
|
transition: top 0.3s ease;
|
||||||
background: $white;
|
background: $white;
|
||||||
|
|
||||||
@include nav-small {
|
@include nav-small {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
@import "settings";
|
@import "settings";
|
||||||
@import "buttons";
|
@import "buttons";
|
||||||
@import "nav";
|
@import "nav";
|
||||||
|
@import "global-message";
|
||||||
@import "sidebar";
|
@import "sidebar";
|
||||||
@import "footer";
|
@import "footer";
|
||||||
@import "layout";
|
@import "layout";
|
||||||
|
|
Loading…
Reference in a new issue