Skip to content

Commit

Permalink
Merge pull request #2852 from bartaz/navigation-cleanup
Browse files Browse the repository at this point in the history
Improve class selectors for navigation
  • Loading branch information
anthonydillon committed Feb 28, 2020
2 parents e18446f + 02b057a commit cbb183d
Show file tree
Hide file tree
Showing 16 changed files with 534 additions and 379 deletions.
20 changes: 10 additions & 10 deletions docs/_layouts/default.html
Expand Up @@ -27,7 +27,7 @@
<div class="p-navigation__row--full-width">
<div class="p-navigation__banner">
<div class="p-navigation__logo">
<a class="p-navigation__link" href="https://vanillaframework.io">
<a class="p-navigation__item" href="https://vanillaframework.io">
<img class="p-navigation__image" src="https://assets.ubuntu.com/v1/d96d86b5-vanilla_black-orange_hex.svg" alt="Vanilla framework logo">
</a>
</div>
Expand All @@ -41,12 +41,12 @@
<span class="u-off-screen">
<a href="#main-content">Jump to main content</a>
</span>
<ul class="p-navigation__links">
<li class="p-navigation__link {% if '/examples' not in path %}is-selected{% endif %}"><a href="/">Docs</a></li>
<li class="p-navigation__link {% if '/examples' in path %}is-selected{% endif %}"><a href="/examples">Examples</a></li>
<li class="p-navigation__link"><a href="https://vanillaframework.io/accessibility">Accessibility</a></li>
<li class="p-navigation__link"><a href="https://vanillaframework.io/browser-support">Browser support</a></li>
<li class="p-navigation__link"><a href="https://vanillaframework.io/contribute">Contribute</a></li>
<ul class="p-navigation__items">
<li class="p-navigation__item {% if '/examples' not in path %}is-selected{% endif %}"><a class="p-navigation__link" href="/">Docs</a></li>
<li class="p-navigation__item {% if '/examples' in path %}is-selected{% endif %}"><a class="p-navigation__link" href="/examples">Examples</a></li>
<li class="p-navigation__item"><a class="p-navigation__link" href="https://vanillaframework.io/accessibility">Accessibility</a></li>
<li class="p-navigation__item"><a class="p-navigation__link" href="https://vanillaframework.io/browser-support">Browser support</a></li>
<li class="p-navigation__item"><a class="p-navigation__link" href="https://vanillaframework.io/contribute">Contribute</a></li>
</ul>
<form class="p-search-box" action="/search">
<input type="search" id="search-docs" class="p-search-box__input" name="q" {% if query %}value="{{ query }}"{% endif %} placeholder="Search the docs" title="Search the documentation" required />
Expand Down Expand Up @@ -80,7 +80,7 @@
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/base/forms' %}is-active{% endif %}" href="/base/forms">Forms</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/base/reset' %}is-active{% endif %}" href="/base/reset">Reset</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/base/tables' %}is-active{% endif %}" href="/base/tables">Tables</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/base/typography' %}is-active{% endif %}" href="/base/typography">Typography</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 == '/base/typography' %}is-active{% endif %}" href="/base/typography">Typography</a></li>
</ul>
</li>

Expand All @@ -92,7 +92,7 @@
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/breadcrumbs' %}is-active{% endif %}" href="/patterns/breadcrumbs">Breadcrumbs</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/buttons' %}is-active{% endif %}" href="/patterns/buttons">Buttons</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/card' %}is-active{% endif %}" href="/patterns/card">Cards</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/contextual-menu' %}is-active{% endif %}" href="/patterns/contextual-menu">Contextual menu</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 == '/patterns/contextual-menu' %}is-active{% endif %}" href="/patterns/contextual-menu">Contextual menu</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/grid' %}is-active{% endif %}" href="/patterns/grid">Grid</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/heading-icon' %}is-active{% endif %}" href="/patterns/heading-icon">Heading icon</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/icons' %}is-active{% endif %}" href="/patterns/icons">Icons</a></li>
Expand All @@ -106,7 +106,7 @@
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/media-object' %}is-active{% endif %}" href="/patterns/media-object">Media object</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/modal' %}is-active{% endif %}" href="/patterns/modal">Modal</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/muted-heading' %}is-active{% endif %}" href="/patterns/muted-heading">Muted heading</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/navigation' %}is-active{% endif %}" href="/patterns/navigation">Navigation</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/navigation' %}is-active{% endif %}" href="/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 == '/patterns/notification' %}is-active{% endif %}" href="/patterns/notification">Notifications</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/pagination' %}is-active{% endif %}" href="/patterns/pagination">Pagination</a></li>
<li class="p-sidebar-nav__item"><a class="p-link--soft {% if path == '/patterns/pull-quote' %}is-active{% endif %}" href="/patterns/pull-quote">Quotes</a></li>
Expand Down
76 changes: 46 additions & 30 deletions docs/component-status.md
Expand Up @@ -10,111 +10,127 @@ 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.7
### What's new in Vanilla 2.8

<table>
<thead>
<tr>
<th style="width: 25%">Component</th>
<th style="width: 25%">Status</th>
<th style="width: 50%">Notes</th>
<th style="width: 20%">Component</th>
<th style="width: 10%">Status</th>
<th style="width: 10%">Version</th>
<th style="width: 60%">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="/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="/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>
</tbody>
</table>

#### Previously in Vanilla

<table>
<thead>
<tr>
<th style="width: 20%">Component</th>
<th style="width: 10%">Status</th>
<th style="width: 10%">Version</th>
<th style="width: 60%">Notes</th>
</tr>
</thead>
<tbody>
<!-- 2.7.0 -->
<tr>
<th><a href="/patterns/contextual-menu#theming">Contextual menu</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.7.0</td>
<td>Added dark theme to contextual menu.</td>
</tr>
<tr>
<th><a href="/base/typography#heading-classes">Heading classes</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.7.0</td>
<td>New heading classes with numbers (<code>p-heading--1</code>, ...) were added for consistency with other class names we use.</td>
</tr>
<tr>
<th><a href="/base/typography#heading-classes">Heading classes</a></th>
<td><div class="p-label--deprecated">Deprecated</div></td>
<td>2.7.0</td>
<td>Heading classes with numbers as words (<code>p-heading--one</code>, <code>--two</code>, ...) are deprecated and will be removed in future release v3.0. Please use class names with numbers (<code>p-heading--1</code>, <code>--2</code>, ...) instead.</td>
</tr>
</tbody>
</table>

#### Previously in Vanilla 2.6

<table>
<thead>
<tr>
<th style="width: 25%">Component</th>
<th style="width: 25%">Status</th>
<th style="width: 50%">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="/base/forms/#range">Range input</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.6.0</td>
<td>Styling of Slider component was added to all <code>&lt;input type="range"&gt;</code> elements by default. This makes <code>p-slider</code> class optional for styling range inputs.</td>
</tr>
<tr>
<th><a href="/base/forms/#checkbox">Checkbox, radio button</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.6.0</td>
<td>New `is-table-header` added to properly align checkboxes and radio buttons used in table headers.</td>
</tr>
<tr>
<th><a href="/patterns/slider">Slider</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.6.0</td>
<td>Styling of Slider component was added to all <code>&lt;input type="range"&gt;</code> elements by default. This makes <code>p-slider</code> class optional for styling range inputs.</td>
</tr>
</tbody>
</table>

#### Previously in Vanilla 2.5

<table>
<thead>
<tr>
<th style="width: 25%">Component</th>
<th style="width: 25%">Status</th>
<th style="width: 50%">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<th><a href="/patterns/contextual-menu/#indicator">Contextual menu</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.5.0</td>
<td>Optional state indicator was added to contextual menu</td>
</tr>
<tr>
<th><a href="/utilities/font-metrics/">Font metrics</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.5.0</td>
<td>Added <code>u-visualise-font-metrics</code> utility to visualise font metrics</td>
</tr>
<tr>
<th><a href="/base/typography/#line-length">Line length</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.5.0</td>
<td>Added <code>$max-width--default</code> variable and <code>u-no-max-width</code> utility to control line length</td>
</tr>
<tr>
<th><a href="/utilities/table-cell-padding-overlap/">Table cell padding overlap</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.5.0</td>
<td>Added <code>u-table-cell-padding-overlap</code> utility to overlap table cell padding</td>
</tr>
<tr>
<th><a href="/utilities/truncate/">Truncation</a></th>
<td><div class="p-label--new">New</div></td>
<td>2.5.0</td>
<td>Added <code>u-truncate</code> utility to truncate text with ellipsis</td>
</tr>
<tr>
<th><a href="/patterns/icons/#social">Social icons</a></th>
<td><div class="p-label--updated">Updated</div></td>
<td>2.5.0</td>
<td>Updated style of social icons. Added new <code>.p-icon--rss</code> and <code>p-icon--email</code> icons.</td>
</tr>
<tr>
<th><a href="/patterns/icons/#social">Social icons</a></th>
<td><div class="p-label--deprecated">Deprecated</div></td>
<td>2.5.0</td>
<td>We will be removing <code>p-icon--canonical</code> and <code>p-icon--ubuntu</code> from social icon set in future release v3.0</td>
</tr>

</tbody>
</table>

Expand Down
80 changes: 80 additions & 0 deletions docs/examples/patterns/navigation/_script.js
@@ -0,0 +1,80 @@
/**
Toggles visibility of given subnav by toggling is-active class to it
and setting aria-hidden attribute on dropdown contents.
@param {HTMLElement} subnav Root element of subnavigation to open.
*/
function toggleSubnav(subnav, open) {
if (open) {
subnav.classList.add('is-active');
} else {
subnav.classList.remove('is-active');
}

var toggle = subnav.querySelector('.p-subnav__toggle');

if (toggle) {
var dropdown = document.getElementById(toggle.getAttribute('aria-controls'));

if (dropdown) {
dropdown.setAttribute('aria-hidden', open ? 'true' : false);
}
}
}

/**
Closes all subnavs on the page.
*/
function closeAllSubnavs() {
var subnavs = document.querySelectorAll('.p-subnav');
for (var i = 0, l = subnavs.length; i < l; i++) {
toggleSubnav(subnavs[i], false);
}
}

/**
Attaches click event listener to subnav toggle.
@param {HTMLElement} subnavToggle Toggle element of subnavigation.
*/
function setupSubnavToggle(subnavToggle) {
subnavToggle.addEventListener('click', function(event) {
event.preventDefault();
event.stopPropagation();

var subnav = subnavToggle.parentElement;
var isActive = subnav.classList.contains('is-active');

closeAllSubnavs();
if (!isActive) {
toggleSubnav(subnav, true);
}
});
}

// Setup all subnav toggles on the page
var subnavToggles = document.querySelectorAll('.p-subnav__toggle');

for (var i = 0, l = subnavToggles.length; i < l; i++) {
setupSubnavToggle(subnavToggles[i]);
}

// Close all menus if anything else on the page is clicked
document.addEventListener('click', function(event) {
var target = event.target;

if (target.closest) {
if (!target.closest('.p-subnav__toggle') && !target.closest('.p-subnav__item')) {
closeAllSubnavs();
}
} else if (target.msMatchesSelector) {
// IE friendly `Element.closest` equivalent
// as in https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
do {
if (target.msMatchesSelector('.p-subnav__toggle') || target.msMatchesSelector('.p-subnav__item')) {
return;
}
target = target.parentElement || target.parentNode;
} while (target !== null && target.nodeType === 1);

closeAllSubnavs();
}
});
18 changes: 9 additions & 9 deletions docs/examples/patterns/navigation/default-dark.html
Expand Up @@ -8,7 +8,7 @@
<div class="p-navigation__row">
<div class="p-navigation__banner">
<div class="p-navigation__logo">
<a class="p-navigation__link" href="#">
<a class="p-navigation__item" href="#">
<img class="p-navigation__image" src="https://assets.ubuntu.com/v1/3c7954dd-logo-canonical-white.svg" alt="" width="95" />
</a>
</div>
Expand All @@ -19,18 +19,18 @@
<span class="u-off-screen">
<a href="#main-content">Jump to main content</a>
</span>
<ul class="p-navigation__links" role="menu">
<li class="p-navigation__link is-selected" role="menuitem">
<a href="#">Products</a>
<ul class="p-navigation__items" role="menu">
<li class="p-navigation__item is-selected" role="menuitem">
<a class="p-navigation__link" href="#">Products</a>
</li>
<li class="p-navigation__link" role="menuitem">
<a href="#">Services</a>
<li class="p-navigation__item" role="menuitem">
<a class="p-navigation__link" href="#">Services</a>
</li>
<li class="p-navigation__link" role="menuitem">
<a href="#">Partners</a>
<li class="p-navigation__item" role="menuitem">
<a class="p-navigation__link" href="#">Partners</a>
</li>
<li class="p-navigation__link" role="menuitem">
<a href="#">About</a>
<a class="p-navigation__link" href="#">About</a>
</li>
</ul>
</nav>
Expand Down
18 changes: 9 additions & 9 deletions docs/examples/patterns/navigation/default.html
Expand Up @@ -8,7 +8,7 @@
<div class="p-navigation__row">
<div class="p-navigation__banner">
<div class="p-navigation__logo">
<a class="p-navigation__link" href="#">
<a class="p-navigation__item" href="#">
<img class="p-navigation__image" src="https://assets.ubuntu.com/v1/5d6da5c4-logo-canonical-aubergine.svg" alt="" width="95" />
</a>
</div>
Expand All @@ -19,18 +19,18 @@
<span class="u-off-screen">
<a href="#main-content">Jump to main content</a>
</span>
<ul class="p-navigation__links" role="menu">
<li class="p-navigation__link is-selected" role="menuitem">
<a href="#">Products</a>
<ul class="p-navigation__items" role="menu">
<li class="p-navigation__item is-selected" role="menuitem">
<a class="p-navigation__link" href="#">Products</a>
</li>
<li class="p-navigation__link" role="menuitem">
<a href="#">Services</a>
<li class="p-navigation__item" role="menuitem">
<a class="p-navigation__link" href="#">Services</a>
</li>
<li class="p-navigation__link" role="menuitem">
<a href="#">Partners</a>
<li class="p-navigation__item" role="menuitem">
<a class="p-navigation__link" href="#">Partners</a>
</li>
<li class="p-navigation__link" role="menuitem">
<a href="#">About</a>
<a class="p-navigation__link" href="#">About</a>
</li>
</ul>
</nav>
Expand Down

0 comments on commit cbb183d

Please sign in to comment.