mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
172 lines
3.5 KiB
SCSS
172 lines
3.5 KiB
SCSS
@import "../../core/style/variables";
|
|
|
|
// TODO(jelbourn): This goes away.
|
|
@import "../../core/style/default-theme";
|
|
|
|
$switch-width: 36px !default;
|
|
$switch-height: $baseline-grid * 3 !default;
|
|
$switch-bar-height: 14px !default;
|
|
$switch-thumb-size: 20px !default;
|
|
|
|
md-switch {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
margin: 15px;
|
|
white-space: nowrap;
|
|
cursor: pointer;
|
|
outline: none;
|
|
user-select: none;
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.md-switch-container {
|
|
cursor: grab;
|
|
width: $switch-width;
|
|
height: $switch-height;
|
|
position: relative;
|
|
user-select: none;
|
|
margin-right: 8px;
|
|
}
|
|
|
|
// If the user moves his mouse off the switch, stil display grabbing cursor
|
|
&:not([disabled]) {
|
|
.md-switch-dragging,
|
|
&.md-switch-dragging .md-switch-container {
|
|
cursor: grabbing;
|
|
}
|
|
}
|
|
|
|
.md-switch-label {
|
|
border: 0 transparent;
|
|
}
|
|
|
|
.md-switch-bar {
|
|
left: 1px;
|
|
width: $switch-width - 2px;
|
|
top: $switch-height / 2 - $switch-bar-height / 2;
|
|
height: $switch-bar-height;
|
|
border-radius: 8px;
|
|
position: absolute;
|
|
}
|
|
|
|
.md-switch-thumb-container {
|
|
top: $switch-height / 2 - $switch-thumb-size / 2;
|
|
left: 0;
|
|
width: $switch-width - $switch-thumb-size;
|
|
position: absolute;
|
|
transform: translate3d(0,0,0);
|
|
z-index: 1;
|
|
}
|
|
|
|
&[aria-checked="true"] .md-switch-thumb-container {
|
|
transform: translate3d(100%, 0, 0);
|
|
}
|
|
|
|
.md-switch-thumb {
|
|
position: absolute;
|
|
margin: 0;
|
|
left: 0;
|
|
top: 0;
|
|
outline: none;
|
|
height: $switch-thumb-size;
|
|
width: $switch-thumb-size;
|
|
border-radius: 50%;
|
|
box-shadow: $whiteframe-shadow-z1;
|
|
|
|
// todo
|
|
.md-ripple-container {
|
|
position: absolute;
|
|
display: block;
|
|
width: auto;
|
|
height: auto;
|
|
left: -$switch-thumb-size;
|
|
top: -$switch-thumb-size;
|
|
right: -$switch-thumb-size;
|
|
bottom: -$switch-thumb-size;
|
|
}
|
|
}
|
|
|
|
&:not(.md-switch-dragging) {
|
|
.md-switch-bar,
|
|
.md-switch-thumb-container,
|
|
.md-switch-thumb {
|
|
transition: $swift-ease-in-out;
|
|
transition-property: transform, background-color;
|
|
}
|
|
.md-switch-bar,
|
|
.md-switch-thumb {
|
|
transition-delay: 0.05s;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// TODO(jelbourn): Why are these not defined in terms of the theme?
|
|
@media screen and (-ms-high-contrast: active) {
|
|
md-switch .md-switch-bar {
|
|
background-color: #666;
|
|
}
|
|
md-switch[aria-checked="true"] .md-switch-bar {
|
|
background-color: #9E9E9E;
|
|
}
|
|
md-switch.md-default-theme .md-switch-thumb {
|
|
background-color: #fff;
|
|
}
|
|
}
|
|
|
|
|
|
// THEME
|
|
|
|
md-switch {
|
|
.md-switch-thumb {
|
|
background-color: md-color($md-background, 50);
|
|
}
|
|
.md-switch-bar {
|
|
background-color: md-color($md-background, 500);
|
|
}
|
|
|
|
&[aria-checked="true"] {
|
|
.md-switch-thumb {
|
|
background-color: md-color($md-accent);
|
|
}
|
|
.md-switch-bar {
|
|
background-color: md-color($md-accent, 0.5);
|
|
}
|
|
|
|
&.md-primary {
|
|
.md-switch-thumb {
|
|
background-color: md-color($md-primary);
|
|
}
|
|
.md-switch-bar {
|
|
background-color: md-color($md-primary, 0.5);
|
|
}
|
|
}
|
|
|
|
&.md-warn {
|
|
.md-switch-thumb {
|
|
background-color: md-color($md-warn);
|
|
}
|
|
.md-switch-bar {
|
|
background-color: md-color($md-warn, 0.5);
|
|
}
|
|
}
|
|
}
|
|
|
|
&[disabled] {
|
|
.md-switch-thumb {
|
|
background-color: md-color($md-background, 400);
|
|
}
|
|
.md-switch-bar {
|
|
background-color: md-color($md-foreground, divider);
|
|
}
|
|
}
|
|
|
|
&:focus {
|
|
.md-switch-label:not(:empty) {
|
|
border: 1px dotted md-color($md-foreground, text);
|
|
}
|
|
}
|
|
}
|