Index: lib/src/paper-toggle-button/paper-toggle-button.html |
diff --git a/lib/src/paper-toggle-button/paper-toggle-button.html b/lib/src/paper-toggle-button/paper-toggle-button.html |
index 0ca416dfb8917af21081c6f1bef95f3b1570ad4b..f144f74ea6d70dfd15a339ad73208cde460cdf18 100644 |
--- a/lib/src/paper-toggle-button/paper-toggle-button.html |
+++ b/lib/src/paper-toggle-button/paper-toggle-button.html |
@@ -12,10 +12,11 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN |
<link rel="import" href="../paper-styles/color.html"> |
<link rel="import" href="../paper-styles/default-theme.html"> |
<link rel="import" href="../paper-ripple/paper-ripple.html"> |
-<link rel="import" href="../paper-behaviors/paper-inky-focus-behavior.html"> |
-<link rel="import" href="../iron-checked-element-behavior/iron-checked-element-behavior.html"> |
+<link rel="import" href="../paper-behaviors/paper-checked-element-behavior.html"> |
<!-- |
+Material design: [Switch](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-switch) |
+ |
`paper-toggle-button` provides a ON/OFF switch that user can toggle the state |
by tapping or by dragging the switch. |
@@ -39,6 +40,7 @@ Custom property | Description | Default |
`--paper-toggle-button-unchecked-button` | Mixin applied to the slider button when the input is not checked | `{}` |
`--paper-toggle-button-checked-bar` | Mixin applied to the slider when the input is checked | `{}` |
`--paper-toggle-button-checked-button` | Mixin applied to the slider button when the input is checked | `{}` |
+`--paper-toggle-button-label-color` | Label color | `--primary-text-color` |
@group Paper Elements |
@element paper-toggle-button |
@@ -47,7 +49,7 @@ Custom property | Description | Default |
--> |
<dom-module id="paper-toggle-button"> |
- <template> |
+ <template strip-whitespace> |
<style> |
:host { |
@@ -62,42 +64,6 @@ Custom property | Description | Default |
outline:none; |
} |
- :host .toggle-bar { |
- background-color: var(--paper-toggle-button-unchecked-bar-color, #000000); |
- @apply(--paper-toggle-button-unchecked-bar); |
- } |
- |
- :host .toggle-button { |
- background-color: var(--paper-toggle-button-unchecked-button-color, --paper-grey-50); |
- @apply(--paper-toggle-button-unchecked-button); |
- } |
- |
- :host([checked]) .toggle-bar { |
- background-color: var(--paper-toggle-button-checked-bar-color, --default-primary-color); |
- @apply(--paper-toggle-button-checked-bar); |
- } |
- |
- :host([checked]) .toggle-button { |
- background-color: var(--paper-toggle-button-checked-button-color, --default-primary-color); |
- @apply(--paper-toggle-button-checked-button); |
- } |
- |
- :host .toggle-ink { |
- color: var(--paper-toggle-button-unchecked-ink-color, --primary-text-color); |
- } |
- |
- :host([checked]) .toggle-ink { |
- color: var(--paper-toggle-button-checked-ink-color, --default-primary-color); |
- } |
- |
- /* ID selectors should not be overriden by users. */ |
- |
- #toggleContainer { |
- position: relative; |
- width: 36px; |
- height: 14px; |
- } |
- |
.toggle-bar { |
position: absolute; |
height: 100%; |
@@ -106,15 +72,8 @@ Custom property | Description | Default |
pointer-events: none; |
opacity: 0.4; |
transition: background-color linear .08s; |
- } |
- |
- :host([checked]) .toggle-bar { |
- opacity: 0.5; |
- } |
- |
- :host([disabled]) .toggle-bar { |
- background-color: #000; |
- opacity: 0.12; |
+ background-color: var(--paper-toggle-button-unchecked-bar-color, #000000); |
+ @apply(--paper-toggle-button-unchecked-bar); |
} |
.toggle-button { |
@@ -127,6 +86,8 @@ Custom property | Description | Default |
transition: -webkit-transform linear .08s, background-color linear .08s; |
transition: transform linear .08s, background-color linear .08s; |
will-change: transform; |
+ background-color: var(--paper-toggle-button-unchecked-button-color, --paper-grey-50); |
+ @apply(--paper-toggle-button-unchecked-button); |
} |
.toggle-button.dragging { |
@@ -134,11 +95,27 @@ Custom property | Description | Default |
transition: none; |
} |
+ :host([checked]:not([disabled])) .toggle-bar { |
+ opacity: 0.5; |
+ background-color: var(--paper-toggle-button-checked-bar-color, --default-primary-color); |
+ @apply(--paper-toggle-button-checked-bar); |
+ } |
+ |
+ :host([disabled]) .toggle-bar { |
+ background-color: #000; |
+ opacity: 0.12; |
+ } |
+ |
:host([checked]) .toggle-button { |
-webkit-transform: translate(16px, 0); |
transform: translate(16px, 0); |
} |
+ :host([checked]:not([disabled])) .toggle-button { |
+ background-color: var(--paper-toggle-button-checked-button-color, --default-primary-color); |
+ @apply(--paper-toggle-button-checked-button); |
+ } |
+ |
:host([disabled]) .toggle-button { |
background-color: #bdbdbd; |
opacity: 1; |
@@ -152,16 +129,39 @@ Custom property | Description | Default |
height: 48px; |
opacity: 0.5; |
pointer-events: none; |
+ color: var(--paper-toggle-button-unchecked-ink-color, --primary-text-color); |
+ } |
+ |
+ :host([checked]) .toggle-ink { |
+ color: var(--paper-toggle-button-checked-ink-color, --default-primary-color); |
+ } |
+ |
+ .toggle-container { |
+ display: inline-block; |
+ position: relative; |
+ width: 36px; |
+ height: 14px; |
+ } |
+ |
+ .toggle-label { |
+ position: relative; |
+ top: -2px; |
+ display: inline-block; |
+ vertical-align: middle; |
+ margin-left: 10px; |
+ white-space: normal; |
+ pointer-events: none; |
+ color: var(--paper-toggle-button-label-color, --primary-text-color); |
} |
</style> |
- <div id="toggleContainer"> |
+ <div class="toggle-container"> |
<div id="toggleBar" class="toggle-bar"></div> |
- <div id="toggleButton" class="toggle-button"> |
- <paper-ripple id="ink" class="toggle-ink circle" recenters></paper-ripple> |
- </div> |
+ <div id="toggleButton" class="toggle-button"></div> |
</div> |
+ <div class="toggle-label"><content></content></div> |
+ |
</template> |
<script> |
@@ -169,8 +169,7 @@ Custom property | Description | Default |
is: 'paper-toggle-button', |
behaviors: [ |
- Polymer.PaperInkyFocusBehavior, |
- Polymer.IronCheckedElementBehavior |
+ Polymer.PaperCheckedElementBehavior |
], |
hostAttributes: { |
@@ -196,20 +195,6 @@ Custom property | Description | Default |
track: '_ontrack' |
}, |
- ready: function() { |
- this._isReady = true; |
- }, |
- |
- // button-behavior hook |
- _buttonStateChanged: function() { |
- if (this.disabled) { |
- return; |
- } |
- if (this._isReady) { |
- this.checked = this.active; |
- } |
- }, |
- |
_ontrack: function(event) { |
var track = event.detail; |
if (track.state === 'start') { |
@@ -242,6 +227,16 @@ Custom property | Description | Default |
_trackEnd: function(track) { |
this.$.toggleButton.classList.remove('dragging'); |
this.transform('', this.$.toggleButton); |
+ }, |
+ |
+ // customize the element's ripple |
+ _createRipple: function() { |
+ this._rippleContainer = this.$.toggleButton; |
+ var ripple = Polymer.PaperRippleBehavior._createRipple(); |
+ ripple.id = 'ink'; |
+ ripple.setAttribute('recenters', ''); |
+ ripple.classList.add('circle', 'toggle-ink'); |
+ return ripple; |
} |
}); |