Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add side navigation component with default styling #2915

Merged
merged 16 commits into from Mar 16, 2020
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 11 additions & 0 deletions scss/_base_placeholders.scss
Expand Up @@ -42,6 +42,13 @@
padding-top: calc(#{$table-cell-vertical-padding} - 1px);
}

// Default list styling
%vf-list {
list-style: none;
margin-left: 0;
padding-left: 0;
}

// Bars and borders
%vf-pseudo-border {
background-color: $color-mid-light;
Expand All @@ -53,13 +60,17 @@
}

%vf-pseudo-border--bottom {
position: relative;

&::after {
@extend %vf-pseudo-border;
bottom: 0;
}
}

%vf-pseudo-border--top {
position: relative;

&::after {
@extend %vf-pseudo-border;
top: 0;
Expand Down
4 changes: 1 addition & 3 deletions scss/_patterns_accordion.scss
Expand Up @@ -10,9 +10,7 @@
}

.p-accordion__group {
position: relative;

& + &::after {
& + & {
@extend %vf-pseudo-border--top;
}
}
Expand Down
7 changes: 0 additions & 7 deletions scss/_patterns_lists.scss
Expand Up @@ -263,13 +263,6 @@ $spv-list-item--inner: null;
@mixin vf-p-lists {
//Placeholders

// Default list styling
%vf-list {
list-style: none;
margin-left: 0;
padding-left: 0;
}

%numbered-step-container {
counter-reset: li;
display: flex;
Expand Down
104 changes: 104 additions & 0 deletions scss/_patterns_side-navigation.scss
@@ -0,0 +1,104 @@
@import 'settings';

@mixin vf-p-side-navigation {
.p-side-navigation__list {
@extend %vf-list;

.p-side-navigation > &:first-child {
// nudge from top to put text on baseline grid
padding-top: 0.5 * $spv-inner--x-small;
}

& + & {
@extend %vf-pseudo-border--top;

&::after {
left: $sph-inner;
top: -0.5 * $spv-outer--scaleable; // place border in the middle of the margin
}
}
}

.p-side-navigation__item--title {
font-weight: $font-weight-bold;
}

.p-side-navigation__text,
.p-side-navigation__link {
display: block;
padding: $spv-inner--x-small $sph-inner--small $spv-inner--x-small $sph-inner;

&.is-active,
&.is-selected {
font-weight: $font-weight-bold;
}

// nested 2 or 3 levels
.p-side-navigation__item .p-side-navigation__item & {
padding-left: 2 * $sph-inner;
}

.p-side-navigation__item .p-side-navigation__item .p-side-navigation__item & {
padding-left: 3 * $sph-inner;
}
}

.p-side-navigation__link {
@include vf-focus;

&:hover {
text-decoration: none;
}
}

// default light theme
@include vf-side-navigation-theme;
}

// theme
@mixin vf-side-navigation-theme(
// default text color in sidebar
$color-sidenav-text-default: $colors--light-theme--text-disabled,
// text color of highlighted items
$color-sidenav-text-active: $colors--light-theme--text-default,
// background color of active/hovered items
$color-sidenav-item-background-highlight: $colors--light-theme--background-highlighted,
// border color of active item
$color-sidenav-item-border-highlight: $color-brand,
// border color of items list
$color-sidenav-list-border: $colors--light-theme--border-default
) {
.p-side-navigation {
color: $color-sidenav-text-default;
}

.p-side-navigation__list::after {
background: $color-sidenav-list-border;
}

.p-side-navigation__text.is-selected {
color: $color-sidenav-text-active;
}

.p-side-navigation__link {
&,
&:visited {
color: $color-sidenav-text-default;
}

&:hover,
&.is-active,
&.is-selected {
color: $color-sidenav-text-active;
}

&:hover,
&.is-active {
background: $color-sidenav-item-background-highlight;
}

&.is-active {
@include vf-highlight-bar($color-sidenav-item-border-highlight, left);
}
}
}
2 changes: 2 additions & 0 deletions scss/_vanilla.scss
Expand Up @@ -33,6 +33,7 @@
@import 'patterns_pagination';
@import 'patterns_pull-quotes';
@import 'patterns_search-box';
@import 'patterns_side-navigation';
@import 'patterns_slider';
@import 'patterns_strip';
@import 'patterns_switch';
Expand Down Expand Up @@ -102,6 +103,7 @@
@include vf-p-pagination;
@include vf-p-pull-quotes;
@include vf-p-search-box;
@include vf-p-side-navigation;
@include vf-p-slider;
@include vf-p-strip;
@include vf-p-switch;
Expand Down
5 changes: 5 additions & 0 deletions scss/standalone/patterns_side-navigation.scss
@@ -0,0 +1,5 @@
@import '../base';
@include vf-base;

@import '../patterns_side-navigation';
@include vf-p-side-navigation;
2 changes: 1 addition & 1 deletion templates/_layouts/docs.html
Expand Up @@ -88,7 +88,7 @@
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/media-object' %}is-active{% endif %}" href="/docs/patterns/media-object">Media object</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/modal' %}is-active{% endif %}" href="/docs/patterns/modal">Modal</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/muted-heading' %}is-active{% endif %}" href="/docs/patterns/muted-heading">Muted heading</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/navigation' %}is-active{% endif %}" href="/docs/patterns/navigation">Navigation</a><div class="p-label--updated u-float-right u-no-margin--bottom">Updated</div></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/navigation' %}is-active{% endif %}" href="/docs/patterns/navigation">Navigation</a><div class="p-label--new u-float-right u-no-margin--bottom">New</div></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/notification' %}is-active{% endif %}" href="/docs/patterns/notification">Notifications</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/pagination' %}is-active{% endif %}" href="/docs/patterns/pagination">Pagination</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/docs/patterns/pull-quote' %}is-active{% endif %}" href="/docs/patterns/pull-quote">Quotes</a></li>
Expand Down
37 changes: 22 additions & 15 deletions templates/docs/component-status.md
Expand Up @@ -10,29 +10,23 @@ context:

When we add, make significant updates, or deprecate a component we update their status so that it’s clear what’s available to use. Check back here anytime to see current status information.

### What's new in Vanilla 2.8
### What's new in Vanilla 2.9

<table>
<thead>
<tr>
<th style="width: 20%">Component</th>
<th style="width: 10%">Status</th>
<th style="width: 15%">Status</th>
<th style="width: 10%">Version</th>
<th style="width: 60%">Notes</th>
<th style="width: 55%">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="/docs/patterns/navigation">Navigation</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.8.0</td>
<td>New navigation classes (<code>p-navigation__items</code>, <code>p-navigation__item</code>, <code>p-navigation__link</code>) were added to replace existing (<code>p-navigation__links</code>, <code>p-navigation__link</code>, and classless <code>&lt;a&gt;</code>).</td>
</tr>
<tr>
<th><a href="/docs/patterns/navigation">Navigation</a></th>
<td><div class="p-label--deprecated">Deprecated</div></td>
<td>2.8.0</td>
<td>Navigation classes <code>p-navigation__links</code>, <code>p-navigation__link</code>, and classless <code>&lt;a&gt;</code> are deprecated and will be removed in future release v3.0. Please use new class names (<code>p-navigation__items</code>, <code>p-navigation__item</code>, <code>p-navigation__link</code>) instead.</td>
<th><a href="/docs/patterns/navigation#side-navigation">Side navigation</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.9.0</td>
<td>New side navigation component was added.</td>
</tr>
</tbody>
</table>
Expand All @@ -43,12 +37,25 @@ When we add, make significant updates, or deprecate a component we update their
<thead>
<tr>
<th style="width: 20%">Component</th>
<th style="width: 10%">Status</th>
<th style="width: 15%">Status</th>
<th style="width: 10%">Version</th>
<th style="width: 60%">Notes</th>
<th style="width: 55%">Notes</th>
</tr>
</thead>
<tbody>
<!-- 2.8.0 -->
<tr>
<th><a href="/docs/patterns/navigation">Navigation</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.8.0</td>
<td>New navigation classes (<code>p-navigation__items</code>, <code>p-navigation__item</code>, <code>p-navigation__link</code>) were added to replace existing (<code>p-navigation__links</code>, <code>p-navigation__link</code>, and classless <code>&lt;a&gt;</code>).</td>
</tr>
<tr>
<th><a href="/docs/patterns/navigation">Navigation</a></th>
<td><div class="p-label--deprecated">Deprecated</div></td>
<td>2.8.0</td>
<td>Navigation classes <code>p-navigation__links</code>, <code>p-navigation__link</code>, and classless <code>&lt;a&gt;</code> are deprecated and will be removed in future release v3.0. Please use new class names (<code>p-navigation__items</code>, <code>p-navigation__item</code>, <code>p-navigation__link</code>) instead.</td>
</tr>
<!-- 2.7.0 -->
<tr>
<th><a href="/docs/patterns/contextual-menu#theming">Contextual menu</a></th>
Expand Down
59 changes: 59 additions & 0 deletions templates/docs/examples/patterns/side-navigation/default.html
@@ -0,0 +1,59 @@
{% extends "_layouts/examples.html" %}
{% block title %}Side navigation{% endblock %}

{% block standalone_css %}patterns_side-navigation{% endblock %}

{% block content %}
<div class="p-side-navigation">
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item--title">
<span class="p-side-navigation__text">Heading</span>
</li>
<li class="p-side-navigation__item">
<a class="p-side-navigation__link is-selected" href="#">Snap Store buttons</a>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">Snap Store buttons</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">GitHub badges</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link is-selected" href="#">Embeddable cards make it wrap</a>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">Third level of side nav</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link is-active" href="#">GitHub badges on third level</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Embeddable cards on third level</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">GitHub badges</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Embeddable cards</a>
</li>
</ul>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item--title">
<a class="p-side-navigation__link">Heading</a>
</li>
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">Snap Store buttons</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">GitHub badges</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Embeddable cards</a>
</li>
</ul>
</div>
{% endblock %}
75 changes: 75 additions & 0 deletions templates/docs/examples/patterns/side-navigation/docs.html
@@ -0,0 +1,75 @@
{% extends "_layouts/examples.html" %}
{% block title %}Side navigation / MAAS docs{% endblock %}

{% block standalone_css %}patterns_side-navigation{% endblock %}

{% block content %}
<div class="p-side-navigation">
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item--title">
<a class="p-side-navigation__link" href="#">Introduction</a>
</li>
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">About MAAS</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Explore MAAS</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Quick start</a>
</li>
</ul>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item--title">
<a class="p-side-navigation__link" href="#">Machines</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Commission machines</a>
</li>
<li class="p-side-navigation__item">
<span class="p-side-navigation__text is-selected">Testing</span>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">Hardware testings</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Network testing</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link is-active" href="#">Commissioning and hardware testing scripts</a>
</li>
</ul>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Deploy machines</a>
</li>
</ul>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item--title">
<a class="p-side-navigation__link">Concepts & terms</a>
</li>
</ul>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item--title">
<a class="p-side-navigation__link">Troubleshoot</a>
</li>
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">Getting help</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">MAAS 2.5 (and earlier) documentation</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Upgrading MAAS</a>
<ul class="p-side-navigation__list">
<li class="p-side-navigation__item">
<a class="p-side-navigation__link" href="#">Upgrade from 2.3 to 2.4</a>
</li>
<li class="p-side-navigation__item ">
<a class="p-side-navigation__link" href="#">Upgrade from 1.9 to 2.x</a>
</li>
</ul>
</li>
</ul>
</div>
{% endblock %}