From 1fda2494ea177d0ee690e7726db1e2a9e02bd7c7 Mon Sep 17 00:00:00 2001 From: Jacques Erasmus Date: Fri, 15 Nov 2019 10:33:33 +0000 Subject: Display version banner for outdated docs Added the ability to display a version banner for outdated docs --- content/assets/stylesheets/_variables.scss | 4 ++++ content/assets/stylesheets/stylesheet.scss | 27 ++++++++++++++++++---- content/frontend/bundles/default.js | 19 ++++++++++++++- .../components/version_banner/version_banner.vue | 24 +++++++++++++++++++ layouts/default.html | 4 +++- lib/helpers/versions.rb | 18 +++++++++++++++ 6 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 content/frontend/components/version_banner/version_banner.vue diff --git a/content/assets/stylesheets/_variables.scss b/content/assets/stylesheets/_variables.scss index 759ebabe..76b29eaa 100644 --- a/content/assets/stylesheets/_variables.scss +++ b/content/assets/stylesheets/_variables.scss @@ -22,6 +22,10 @@ $h-margin-bottom: 10px; // Padding $nav-item-padding: 7px; +// Heights +$page-header-height: 53px; +$version-banner-height: 31px; + // GitLab colors // Tanuki $color-tanuki-dark: rgb(226, 67, 41); diff --git a/content/assets/stylesheets/stylesheet.scss b/content/assets/stylesheets/stylesheet.scss index 1279b3d7..b333f195 100644 --- a/content/assets/stylesheets/stylesheet.scss +++ b/content/assets/stylesheets/stylesheet.scss @@ -1,5 +1,5 @@ --- -version: 65 +version: 66 --- @import "variables"; @@ -289,9 +289,14 @@ li { float: left; } +// main content +.wrapper.show-version-banner .main { + padding-top: calc(#{$page-header-height} + #{$version-banner-height}); +} + .main { margin: auto 15%; - padding: 55px 40px 0; + padding: $page-header-height 40px 0; position: relative; width: auto; max-width: 900px; @@ -444,11 +449,15 @@ li { } //global nav +.wrapper.show-version-banner .nav-wrapper { + padding-top: calc(#{$page-header-height} + #{$version-banner-height}); +} + .nav-wrapper { display: flex; flex-direction: column; position: fixed; - padding-top: 56px; + padding-top: $page-header-height; max-width: 220px; width: 50px; height: 100vh; @@ -895,6 +904,7 @@ a.global-nav-link { background: $main-background-color; position: fixed; width: 100%; + height: $page-header-height; padding: 6px 24px; border-bottom: 1px solid $border-color; text-align: left; @@ -1231,7 +1241,7 @@ a.global-nav-link { z-index: 1000; position: fixed; width: 100%; - height: 57px; + height: $page-header-height; padding: 4px 24px; text-align: left; display: flex; @@ -1791,3 +1801,12 @@ li { // scss-lint:enable ImportantRule //end of in-page styles + +.version-banner { + z-index: 5; + line-height: 2; + top: $page-header-height; + height: $version-banner-height; + background: $gds-gray-50; + border-bottom: 1px solid $gds-gray-200; +} diff --git a/content/frontend/bundles/default.js b/content/frontend/bundles/default.js index 878f513e..fa5e6e50 100644 --- a/content/frontend/bundles/default.js +++ b/content/frontend/bundles/default.js @@ -1,9 +1,26 @@ import Vue from 'vue'; import NavigationToggle from '../components/navigation_toggle/navigation_toggle.vue'; +import VersionBanner from '../components/version_banner/version_banner.vue'; document.addEventListener( 'DOMContentLoaded', () => { + const versionBanner = document.querySelector('#js-version-banner'); + const isOutdated = versionBanner.hasAttribute('data-is-outdated'); + const { latestVersionUrl, archivesUrl } = versionBanner.dataset; + + new Vue({ + el: versionBanner, + components: { + VersionBanner, + }, + render(createElement) { + return createElement(VersionBanner, { + props: { isOutdated, latestVersionUrl, archivesUrl } + }); + }, + }); + new Vue({ el: '#js-nav-toggle', components: { @@ -16,6 +33,6 @@ document.addEventListener( } }); }, - }) + }); } ); diff --git a/content/frontend/components/version_banner/version_banner.vue b/content/frontend/components/version_banner/version_banner.vue new file mode 100644 index 00000000..97edd59c --- /dev/null +++ b/content/frontend/components/version_banner/version_banner.vue @@ -0,0 +1,24 @@ + + + diff --git a/layouts/default.html b/layouts/default.html index ce379cc1..f76195a1 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -7,7 +7,9 @@ <%= render '/gtm.*' %> <%= render '/header.*' %> -
+
data-latest-version-url="<%= @item.identifier.without_ext + '.html' %>" data-archives-url="/archives/">
+ +