Skip to content

Instantly share code, notes, and snippets.

@GioviQ
Created February 14, 2018 14:08
Show Gist options
  • Save GioviQ/9bb5d69c85c262161dbbbbe501394996 to your computer and use it in GitHub Desktop.
Save GioviQ/9bb5d69c85c262161dbbbbe501394996 to your computer and use it in GitHub Desktop.
toggle-switch knockout component
ko.components.register('toggle-switch', {
viewModel: function (params) {
this.checked = params.checked;
},
template: '<label class="switch">' +
'<input type="checkbox" data-bind="checked: checked" />' +
'<span class="slider round"></span></label>'
});
<div class="form-group">
<label>Turn on / off</label><br />
<toggle-switch params="checked: onOff"></toggle-switch>
</div>
/* The switch - the box around the slider */
label.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* Hide default HTML checkbox */
label.switch input {display:none;}
/* The slider */
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
-moz-transition: .4s;
-o-transition: .4s;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
-moz-transition: .4s;
-o-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: #2196F3;
}
input:focus + .slider {
-moz-box-shadow: 0 0 1px #2196F3;
-webkit-box-shadow: 0 0 1px #2196F3;
box-shadow: 0 0 1px #2196F3;
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
-moz-transform: translateX(26px);
-o-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
-moz-border-radius: 34px;
-webkit-border-radius: 34px;
border-radius: 34px;
}
.slider.round:before {
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
border-radius: 50%;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment