123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- //
- // Switch
- // --------------------------------------------------
- // Switch wrapper
- // --------------------------------------------------
- .@{switch-name} {
- font-size: @component-font-size-base; // 15px
- line-height: @switch-height;
- display: inline-block;
- cursor: pointer;
- border-radius: @switch-border-radius;
- position: relative;
- text-align: left;
- overflow: hidden;
- vertical-align: middle;
- width: @switch-width;
- height: @switch-height;
- -webkit-mask-box-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgODAgMjkiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDgwIDI5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik04MCwxNC41YzAsOC02LjUsMTQuNS0xNC41LDE0LjVoLTUxQzYuNSwyOSwwLDIyLjUsMCwxNC41bDAsMEMwLDYuNSw2LjUsMCwxNC41LDBoNTFDNzMuNSwwLDgwLDYuNSw4MCwxNC41TDgwLDE0LjV6Ii8+DQo8L3N2Zz4NCg==) 0 0 stretch;
- user-select: none;
- // Handlers wrapp
- > div {
- display: inline-block;
- width: 132px;
- border-radius: @switch-border-radius;
- transform: translate3d(0, 0, 0);
- // Handlers
- > span {
- font-weight: 700;
- line-height: 19px;
- cursor: pointer;
- display: inline-block;
- height: 100%;
- padding-bottom: 5px;
- padding-top: 5px;
- text-align: center;
- z-index: 1;
- width: 66px;
- transition: box-shadow .25s ease-out;
- > [class^="fui-"] {
- text-indent: 0;
- }
- }
- > label {
- cursor: pointer;
- display: block;
- position: absolute;
- width: 100%;
- height: 100%;
- text-indent: -9999px;
- font-size: 0;
- top: 0;
- left: 0;
- margin: 0;
- z-index: 200;
- .opacity(0);
- }
- }
- input[type="radio"],
- input[type="checkbox"] {
- position: absolute !important;
- margin: 0;
- top: 0;
- left: 0;
- z-index: -1;
- .opacity(0);
- }
- }
- // `On` handler
- .@{switch-name}-handle-on {
- .border-left-radius(@switch-border-radius);
- .@{switch-name}-off & {
- .switch-handle-off-variant(default, @gray-light, mix(@brand-primary, white, 63%));
- .switch-handle-off-variant(primary, @brand-primary, @brand-secondary);
- .switch-handle-off-variant(success, @brand-success, @inverse);
- .switch-handle-off-variant(warning, @brand-warning, @inverse);
- .switch-handle-off-variant(info, @brand-info, @inverse);
- .switch-handle-off-variant(danger, @brand-danger, @inverse);
- }
- }
- // `Off` handler
- .@{switch-name}-handle-off {
- .border-right-radius(@switch-border-radius);
- &:before {
- display: inline-block;
- content: " ";
- border: 4px solid transparent;
- border-radius: 50%;
- text-align: center;
- vertical-align: top;
- padding: 0;
- height: 29px;
- width: 29px;
- position: absolute;
- top: 0;
- left: 51px;
- z-index: 100;
- background-clip: padding-box;
- transition: border-color .25s ease-out, background-color .25s ease-out;
- }
- }
- // Switch `animate` state
- .@{switch-name}-animate {
- > div {
- transition: margin-left .25s ease-out;
- }
- }
- .@{switch-name}-on > div {
- margin-left: 0;
- }
- .@{switch-name}-off > div {
- margin-left: -51px;
- }
- // Switch `disabled` states
- .@{switch-name}-disabled,
- .@{switch-name}-readonly {
- .opacity(.5);
- cursor: default;
- > div > span,
- > div > label {
- cursor: default !important;
- }
- }
- // Switch `focus` state
- .@{switch-name}-focused {
- outline: 0;
- }
- // Handler feedback states
- // --------------------------------------------------
- .@{switch-name}-default {
- .switch-variant(@inverse, @gray-light, @gray-light, mix(@brand-primary, white, 63%));
- }
- .@{switch-name}-primary {
- .switch-variant(@brand-secondary, @brand-primary, @brand-primary, @brand-secondary);
- }
- .@{switch-name}-info {
- .switch-variant(@inverse, @brand-info, @brand-info, @inverse);
- }
- .@{switch-name}-success {
- .switch-variant(@inverse, @brand-success, @brand-success, @inverse);
- }
- .@{switch-name}-warning {
- .switch-variant(@inverse, @brand-warning, @brand-warning, @inverse);
- }
- .@{switch-name}-danger {
- .switch-variant(@inverse, @brand-danger, @brand-danger, @inverse);
- }
- // Square skin
- // --------------------------------------------------
- .@{switch-name}-square {
- .@{switch-name} {
- -webkit-mask-box-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgODAgMjkiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDgwIDI5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGQ9Ik04MCwyNWMwLDIuMi0xLjgsNC00LDRINGMtMi4yLDAtNC0xLjgtNC00VjRjMC0yLjIsMS44LTQsNC00aDcyYzIuMiwwLDQsMS44LDQsNFYyNXoiLz4NCjwvc3ZnPg0K) 0 0 stretch;
- border-radius: @border-radius-base;
- > div {
- border-radius: @border-radius-base;
- }
- .@{switch-name}-handle-on {
- text-indent: -15px;
- .border-left-radius(@border-radius-base);
- }
- .@{switch-name}-handle-off {
- text-indent: 15px;
- .border-right-radius(@border-radius-base);
- &:before {
- border: none;
- .border-left-radius(0);
- .border-right-radius((@border-radius-base - 2));
- }
- }
- }
- .@{switch-name}-off {
- .@{switch-name}-handle-off:before {
- .border-left-radius((@border-radius-base - 2));
- .border-right-radius(0);
- }
- }
- }
|