Add a toggle component
This commit is contained in:
parent
92553cb1f1
commit
6e2dfa1cf1
5 changed files with 165 additions and 3 deletions
55
styles/components/toggle.css
Normal file
55
styles/components/toggle.css
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
:host {
|
||||
display: block;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.slider {
|
||||
width: var(--size, 16px);
|
||||
height: var(--size, 16px);
|
||||
background: var(
|
||||
--slider-colour,
|
||||
var(--toggle-slider-unchecked-colour)
|
||||
);
|
||||
transition: all var(--speed, 150ms) ease-in-out;
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
label {
|
||||
display: flex;
|
||||
padding: var(--padding, 4px);
|
||||
height: calc(var(--size, 16px) + (var(--padding, 4px) * 2));
|
||||
width: calc((var(--size, 16px) * 2) + (var(--padding, 4px) * 2));
|
||||
border-radius: 9999px;
|
||||
background: var(
|
||||
--toggle-background,
|
||||
var(--toggle-background-colour)
|
||||
);
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
|
||||
/* Non-checked, clicking */
|
||||
&:active .slider {
|
||||
width: calc(var(--size, 16px) * 1.5);
|
||||
}
|
||||
|
||||
/* checked, non-clicking */
|
||||
& > :checked + .slider {
|
||||
transform: translateX(var(--size, 16px));
|
||||
background: var(
|
||||
--slider-checked-colour,
|
||||
var(--toggle-slider-checked-colour)
|
||||
);
|
||||
}
|
||||
|
||||
/* checked, clicking */
|
||||
&:active > :checked + .slider {
|
||||
width: calc(var(--size, 16px) * 1.5);
|
||||
transform: translateX(calc(var(--size, 16px) * 0.5));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue