blob: 41e0f424ac4afe911cedecae87647eac9a07a358 [file] [log] [blame]
<link rel="import" href="../../html/polymer.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-behaviors/paper-ripple-behavior.html">
<link rel="import" href="../shared_vars_css.html">
<dom-module id="cr-toggle">
<template>
<style>
:host {
--cr-toggle-checked-bar-color: var(--google-blue-600);
--cr-toggle-checked-button-color: var(--google-blue-600);
--cr-toggle-checked-ripple-color:
rgba(var(--google-blue-600-rgb), .2);
--cr-toggle-unchecked-bar-color: var(--google-grey-400);
--cr-toggle-unchecked-button-color: white;
--cr-toggle-unchecked-ripple-color:
rgba(var(--google-grey-600-rgb), .15);
-webkit-tap-highlight-color: transparent;
cursor: pointer;
display: block;
min-width: 34px;
outline: none;
position: relative;
width: 34px;
}
@media (prefers-color-scheme: dark) {
:host {
--cr-toggle-checked-bar-color: var(--google-blue-300);
--cr-toggle-checked-button-color: var(--google-blue-300);
--cr-toggle-checked-ripple-color:
rgba(var(--google-blue-300-rgb), .4);
--cr-toggle-unchecked-bar-color: var(--google-grey-500);
--cr-toggle-unchecked-button-color: var(--google-grey-300);
--cr-toggle-unchecked-ripple-color:
rgba(var(--google-grey-300-rgb), .4);
}
}
/* Keep the prefers-color-scheme and [dark] rules the same. */
:host([dark]) {
--cr-toggle-checked-bar-color: var(--google-blue-300);
--cr-toggle-checked-button-color: var(--google-blue-300);
--cr-toggle-checked-ripple-color:
rgba(var(--google-blue-300-rgb), .4);
--cr-toggle-unchecked-bar-color: var(--google-grey-500);
--cr-toggle-unchecked-button-color: var(--google-grey-300);
--cr-toggle-unchecked-ripple-color:
rgba(var(--google-grey-300-rgb), .4);
}
:host([disabled]) {
cursor: initial;
opacity: var(--cr-disabled-opacity);
pointer-events: none;
}
#bar {
background-color: var(--cr-toggle-unchecked-bar-color);
border-radius: 8px;
height: 12px;
left: 3px;
position: absolute;
top: 2px;
transition: background-color linear 80ms;
width: 28px;
z-index: 0;
}
:host([checked]) #bar {
background-color: var(--cr-toggle-checked-bar-color);
opacity: var(--cr-toggle-checked-bar-opacity, 0.5);
}
#knob {
background-color: var(--cr-toggle-unchecked-button-color);
border-radius: 50%;
box-shadow: var(--cr-toggle-box-shadow, 0 1px 3px 0 rgba(0, 0, 0, .4));
display: block;
height: 16px;
position: relative;
transition: transform linear 80ms, background-color linear 80ms;
width: 16px;
z-index: 1;
}
:host([checked]) #knob {
background-color: var(--cr-toggle-checked-button-color);
transform: translate3d(18px, 0, 0);
}
:host-context([dir=rtl]):host([checked]) #knob {
transform: translate3d(-18px, 0, 0);
}
paper-ripple {
--paper-ripple-opacity: 1;
color: var(--cr-toggle-unchecked-ripple-color);
height: var(--cr-toggle-ripple-diameter, 40px);
left: 50%;
outline: var(--cr-toggle-ripple-ring, none);
pointer-events: none;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
transition: color linear 80ms;
width: var(--cr-toggle-ripple-diameter, 40px);
}
:host([checked]) paper-ripple {
color: var(--cr-toggle-checked-ripple-color);
}
:host-context([dir=rtl]) paper-ripple {
left: auto;
right: 50%;
transform: translate(50%, -50%);
}
</style>
<span id="bar"></span>
<span id="knob"></span>
</template>
<script src="cr_toggle.js"></script>
</dom-module>