Skip to content

Commit

Permalink
feat(icon-button): Add new package (#2748)
Browse files Browse the repository at this point in the history
  • Loading branch information
williamernest committed May 25, 2018
1 parent 16a6890 commit 39a4815
Show file tree
Hide file tree
Showing 31 changed files with 1,299 additions and 706 deletions.
62 changes: 25 additions & 37 deletions demos/card.html
Original file line number Diff line number Diff line change
Expand Up @@ -58,26 +58,20 @@ <h3 class="demo-card__subtitle mdc-typography--subtitle2">by Kurt Wagner</h3>
<button class="mdc-button mdc-card__action mdc-card__action--button">Bookmark</button>
</div>
<div class="mdc-card__action-icons">
<i class="mdc-icon-toggle material-icons mdc-card__action mdc-card__action--icon"
tabindex="0"
role="button"
<button class="mdc-icon-button material-icons mdc-card__action mdc-card__action--icon"
aria-pressed="false"
aria-label="Add to favorites"
title="Add to favorites"
data-toggle-on='{"content": "favorite", "label": "Remove from favorites"}'
data-toggle-off='{"content": "favorite_border", "label": "Add to favorites"}'>
favorite_border
</i>
<i class="material-icons mdc-card__action mdc-card__action--icon mdc-ripple-surface"
tabindex="0"
role="button"
data-toggle-on-content="favorite"
data-toggle-on-label="Remove from favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to favorites">favorite_border</button>
<button class="mdc-icon-button material-icons mdc-card__action mdc-card__action--icon"
data-mdc-ripple-is-unbounded
title="Share">share</i>
<i class="material-icons mdc-card__action mdc-card__action--icon mdc-ripple-surface"
tabindex="0"
role="button"
title="Share">share</button>
<button class="mdc-icon-button material-icons mdc-card__action mdc-card__action--icon"
data-mdc-ripple-is-unbounded
title="More options">more_vert</i>
title="More options">more_vert</button>
</div>
</div>
</div>
Expand Down Expand Up @@ -152,31 +146,25 @@ <h2 class="demo-card-article__title mdc-typography--headline5">Asia's clean ener
</div>
</a>
<div class="mdc-card__actions mdc-card__action-icons">
<i class="mdc-icon-toggle material-icons mdc-card__action mdc-card__action--icon"
tabindex="0"
role="button"
<button class="mdc-icon-button material-icons mdc-card__action mdc-card__action--icon"
aria-pressed="false"
aria-label="Add to favorites"
title="Add to favorites"
data-toggle-on='{"content": "favorite", "label": "Remove from favorites"}'
data-toggle-off='{"content": "favorite_border", "label": "Add to favorites"}'>
favorite_border
</i>
<i class="mdc-icon-toggle material-icons mdc-card__action mdc-card__action--icon"
tabindex="0"
role="button"
data-toggle-on-content="favorite"
data-toggle-on-label="Remove from favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to favorites">favorite_border</button>
<button class="mdc-icon-button material-icons mdc-card__action mdc-card__action--icon"
aria-pressed="false"
aria-label="Add bookmark"
title="Add bookmark"
data-toggle-on='{"content": "bookmark", "label": "Remove bookmark"}'
data-toggle-off='{"content": "bookmark_border", "label": "Add bookmark"}'>
bookmark_border
</i>
<i class="material-icons mdc-card__action mdc-card__action--icon mdc-ripple-surface"
tabindex="0"
role="button"
data-toggle-on-content="bookmark"
data-toggle-on-label="Remove bookmark"
data-toggle-off-content="bookmark_border"
data-toggle-off-label="Add bookmark">bookmark_border</button>
<button class="mdc-icon-button material-icons mdc-card__action mdc-card__action--icon"
data-mdc-ripple-is-unbounded
title="Share">share</i>
title="Share">share</button>
</div>
</div>

Expand Down Expand Up @@ -245,15 +233,15 @@ <h2 class="demo-card-article__title mdc-typography--headline5">Asia's clean ener
mdc.ripple.MDCRipple.attachTo(surface);
});

[].forEach.call(document.querySelectorAll('.mdc-icon-toggle'), function(iconToggle) {
mdc.iconToggle.MDCIconToggle.attachTo(iconToggle);
[].forEach.call(document.querySelectorAll('.mdc-icon-button[data-toggle-on-content]'), function(iconButtonToggle) {
mdc.iconButton.MDCIconButtonToggle.attachTo(iconButtonToggle);
});

document.addEventListener('MDCIconToggle:change', function(evt) {
document.addEventListener('MDCIconButtonToggle:change', function(evt) {
evt.target.setAttribute('title', evt.target.getAttribute('aria-label'));
});

[].forEach.call(document.querySelectorAll('.mdc-ripple-surface'), function(surface) {
[].forEach.call(document.querySelectorAll('.mdc-ripple-surface, [data-mdc-ripple-is-unbounded]'), function(surface) {
mdc.ripple.MDCRipple.attachTo(surface);
});

Expand Down
2 changes: 1 addition & 1 deletion demos/card.scss
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
@import "../packages/mdc-card/mdc-card";
@import "../packages/mdc-checkbox/mdc-checkbox";
@import "../packages/mdc-form-field/mdc-form-field";
@import "../packages/mdc-icon-toggle/mdc-icon-toggle";
@import "../packages/mdc-icon-button/mdc-icon-button";
@import "../packages/mdc-list/mdc-list";
@import "../packages/mdc-ripple/mdc-ripple";

Expand Down
256 changes: 256 additions & 0 deletions demos/icon-button.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
<!DOCTYPE html>
<!--
Copyright 2018 Google Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License
-->
<html>
<head>
<meta charset="utf-8">
<title>Icon Button - Material Components Demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" href="/images/logo_components_color_2x_web_48dp.png">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Mono">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css">
<link rel="stylesheet" href="/assets/icon-button.css">
<script src="/ready.js"></script>
</head>
<body class="mdc-typography">
<header class="mdc-toolbar mdc-toolbar--fixed">
<div class="mdc-toolbar__row">
<section class="mdc-toolbar__section mdc-toolbar__section--align-start">
<a href="/" class="catalog-back mdc-toolbar__menu-icon"><i class="material-icons">&#xE5C4;</i></a>
<span class="mdc-toolbar__title catalog-title">Icon Buttons</span>
</section>
</div>
</header>
<main>
<div class="mdc-toolbar-fixed-adjust"></div>
<section class="hero">
<div class="demo-wrapper">
<button class="mdc-icon-button material-icons"
aria-label="Add to favorites"
aria-pressed="false"
data-demo-toggle
data-toggle-on-content="favorite"
data-toggle-on-label="Remove From Favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to Favorites">favorite_border</button>
</div>
</section>

<section class="example">
<div>
<div>
<h1 class="mdc-typography--headline5">Buttons</h1>
</div>
<div class="toggle-examples-container">
<div class="toggle-example">
<h2 class="mdc-typography--headline6">Material Icons</h2>
<div class="demo-wrapper">
<button class="mdc-icon-button material-icons"
role="button"
aria-label="Add to favorites"
aria-pressed="false">favorite</button>
<button class="mdc-icon-button material-icons"
aria-label="Airplane Mode active"
aria-pressed="false">airplanemode_active</button>
<a href="#"
class="mdc-icon-button material-icons"
aria-label="Transit directions"
aria-pressed="false">directions_transit</a>
</div>
</div>

<div class="toggle-example">
<h2 class="mdc-typography--headline6">SVG Icon</h2>
<div class="demo-wrapper">
<button class="mdc-icon-button"
aria-label="Add to favorites"
aria-pressed="false">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M23 12c0-6.07-4.93-11-11-11S1 5.93 1 12s4.93 11 11 11 11-4.93 11-11zM5 17.64C3.75 16.1 3 14.14 3 12c0-2.13.76-4.08 2-5.63v11.27zM17.64 5H6.36C7.9 3.75 9.86 3 12 3s4.1.75 5.64 2zM12 14.53L8.24 7h7.53L12 14.53zM17 9v8h-4l4-8zm-6 8H7V9l4 8zm6.64 2c-1.55 1.25-3.51 2-5.64 2s-4.1-.75-5.64-2h11.28zM21 12c0 2.14-.75 4.1-2 5.64V6.37c1.24 1.55 2 3.5 2 5.63z"/>
</svg>
</button>
</div>
</div>

<div class="toggle-example">
<h2 class="mdc-typography--headline6">Disabled Buttons</h2>
<div class="demo-wrapper">
<button class="mdc-icon-button material-icons"
aria-label="Airplane Mode active"
aria-pressed="false"
disabled>airplanemode_active</button>
<button class="mdc-icon-button"
aria-label="Add to favorites"
aria-pressed="false"
disabled>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M23 12c0-6.07-4.93-11-11-11S1 5.93 1 12s4.93 11 11 11 11-4.93 11-11zM5 17.64C3.75 16.1 3 14.14 3 12c0-2.13.76-4.08 2-5.63v11.27zM17.64 5H6.36C7.9 3.75 9.86 3 12 3s4.1.75 5.64 2zM12 14.53L8.24 7h7.53L12 14.53zM17 9v8h-4l4-8zm-6 8H7V9l4 8zm6.64 2c-1.55 1.25-3.51 2-5.64 2s-4.1-.75-5.64-2h11.28zM21 12c0 2.14-.75 4.1-2 5.64V6.37c1.24 1.55 2 3.5 2 5.63z"/>
</svg>
</button>
</div>
</div>

<div class="toggle-example">
<h2 class="mdc-typography--headline6">Larger Buttons</h2>
<div class="demo-wrapper">
<button class="mdc-icon-button material-icons demo-icon-button-large"
aria-label="Airplane Mode active"
aria-pressed="false">airplanemode_active</button>
<button class="mdc-icon-button demo-icon-button-large"
aria-label="Add to favorites"
aria-pressed="false">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M23 12c0-6.07-4.93-11-11-11S1 5.93 1 12s4.93 11 11 11 11-4.93 11-11zM5 17.64C3.75 16.1 3 14.14 3 12c0-2.13.76-4.08 2-5.63v11.27zM17.64 5H6.36C7.9 3.75 9.86 3 12 3s4.1.75 5.64 2zM12 14.53L8.24 7h7.53L12 14.53zM17 9v8h-4l4-8zm-6 8H7V9l4 8zm6.64 2c-1.55 1.25-3.51 2-5.64 2s-4.1-.75-5.64-2h11.28zM21 12c0 2.14-.75 4.1-2 5.64V6.37c1.24 1.55 2 3.5 2 5.63z"/>
</svg>
</button>
</div>
</div>
</div>
</div>
</section>

<section class="example">
<div>
<div>
<h1 class="mdc-typography--headline5">Button Toggles</h1>
</div>
<div class="toggle-examples-container">
<div class="toggle-example">
<h2 class="mdc-typography--headline6">Using Material Icons</h2>
<div class="demo-wrapper">
<button
id="add-to-favorites"
class="mdc-icon-button material-icons"
aria-label="Add to favorites"
aria-pressed="false"
data-demo-toggle
data-toggle-on-content="favorite"
data-toggle-on-label="Remove From Favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to Favorites">favorite_border</button>
</div>
<p>Favorited? <span id="favorited-status">no</span></p>
</div>

<div class="toggle-example">
<h2 class="mdc-typography--headline6">Using Font Awesome</h2>
<div class="demo-wrapper">
<button class="mdc-icon-button mdc-icon-button--on"
aria-label="Unstar this item"
aria-pressed="true" data-demo-toggle
data-icon-inner-selector=".fa"
data-toggle-on-class="fa-star"
data-toggle-on-label="Unstar this item"
data-toggle-off-class="fa-star-o"
data-toggle-off-label="Star this item">
<i class="fa fa-star" aria-hidden="true"></i>
</button>
</div>
</div>

<div class="toggle-example">
<h2 class="mdc-typography--headline6">Disabled Icons</h2>
<div class="demo-wrapper">
<button class="mdc-icon-button material-icons"
aria-label="Add to favorites"
aria-pressed="false"
data-demo-toggle
disabled
data-toggle-on-content="favorite"
data-toggle-on-label="Remove From Favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to Favorites">favorite_border</button>
</div>
</div>
</div>

<div class="toggle-example">
<h2 class="mdc-typography--headline6">Additional Color Combinations</h2>
<div id="demo-color-combos">
<div id="light-on-bg" class="demo-color-combo">
<div>
<button class="mdc-icon-button material-icons mdc-theme--on-primary"
aria-label="Add to favorites"
aria-pressed="false"
data-demo-toggle
data-toggle-on-content="favorite"
data-toggle-on-label="Remove From Favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to Favorites">favorite_border</button>
</div>
<div class="mdc-theme--on-primary">Light icon on background</div>
</div>
<div id="dark-on-bg" class="demo-color-combo">
<div class="mdc-theme--primary">
<button class="mdc-icon-button material-icons"
aria-label="Add to favorites"
aria-pressed="false"
data-demo-toggle
data-toggle-on-content="favorite"
data-toggle-on-label="Remove From Favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to Favorites">favorite_border</button>
</div>
<div>Dark icon on background</div>
</div>
<div id="custom-color-combo" class="demo-color-combo">
<div>
<button class="mdc-icon-button material-icons"
aria-label="Add to favorites"
aria-pressed="false"
data-demo-toggle
data-toggle-on-content="favorite"
data-toggle-on-label="Remove From Favorites"
data-toggle-off-content="favorite_border"
data-toggle-off-label="Add to Favorites">favorite_border</button>
</div>
<div>Custom color</div>
</div>
</div>
</div>
</div>
</section>
</main>

<script src="/assets/material-components-web.js" async></script>
<script src="/assets/common.js" async></script>
<script>
demoReady(function() {
var nodes = document.querySelectorAll('[data-demo-toggle]');
for (var i = 0, node; node = nodes[i]; i++) {
mdc.iconButton.MDCIconButtonToggle.attachTo(node);
}

var buttons = document.querySelectorAll('.mdc-icon-button:not([data-demo-toggle])');
for (var x = 0, button; button = buttons[x]; x++) {
mdc.ripple.MDCRipple.attachTo(button, {isUnbounded: true});
}

var addToFavorites = document.getElementById('add-to-favorites');
var favoritedStatus = document.getElementById('favorited-status');
addToFavorites.addEventListener('MDCIconButtonToggle:change', function(evt) {
var newStatus = evt.detail.isOn ? 'yes' : 'no';
favoritedStatus.textContent = newStatus;
});
});
</script>
</body>
</html>
Loading

0 comments on commit 39a4815

Please sign in to comment.