mw.ui: checkbox: Add state change transition
[lhc/web/wiklou.git] / resources / src / mediawiki.ui / components / checkbox.less
index b479020..be0c638 100644 (file)
 //
 // Markup:
 // <div class="mw-ui-checkbox">
-//   <input type="checkbox" id="kss-example-5"><label for="kss-example-5">Standard checkbox</label>
+//   <input type="checkbox" id="kss-example-3">
+//   <label for="kss-example-3">Standard checkbox</label>
 // </div>
 // <div class="mw-ui-checkbox">
-//   <input type="checkbox" id="kss-example-5-checked" checked><label for="kss-example-5-checked">Standard checked checkbox</label>
+//   <input type="checkbox" id="kss-example-3-checked" checked>
+//   <label for="kss-example-3-checked">Standard checked checkbox</label>
 // </div>
 // <div class="mw-ui-checkbox">
-//   <input type="checkbox" id="kss-example-5-disabled" disabled><label for="kss-example-5-disabled">Disabled checkbox</label>
+//   <input type="checkbox" id="kss-example-3-disabled" disabled>
+//   <label for="kss-example-3-disabled">Disabled checkbox</label>
 // </div>
 // <div class="mw-ui-checkbox">
-//   <input type="checkbox" id="kss-example-5-disabled-checked" disabled checked><label for="kss-example-5-disabled-checked">Disabled checked checkbox</label>
+//   <input type="checkbox" id="kss-example-3-disabled-checked" disabled checked>
+//   <label for="kss-example-3-disabled-checked">Disabled checked checkbox</label>
 // </div>
 //
-// Styleguide 5.
+// Styleguide 3.
 .mw-ui-checkbox {
        display: inline-block;
        vertical-align: middle;
                height: @checkboxSize;
                // This is needed for Firefox mobile (See bug 71750 to workaround default Firefox stylesheet)
                max-width: none;
-               margin-right: .4em;
+               margin: 0;
+               margin-right: 0.4em;
 
                // the pseudo before element of the label after the checkbox now looks like a checkbox
                & + label::before {
+                       .transition( 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) );
                        content: '';
                        cursor: pointer;
+                       .box-sizing(border-box);
                        position: absolute;
                        left: 0;
                        border-radius: @borderRadius;
                        height: @checkboxSize;
                        background-color: #fff;
                        border: 1px solid @colorGray7;
-                       .box-sizing(border-box);
-               }
-
-               // when the input is checked, style the label pseudo before element that followed as a checked checkbox
-               &:checked + label::before {
                        .background-image-svg('images/checked.svg', 'images/checked.png');
                        .background-size( @checkboxSize - 0.2em, @checkboxSize - 0.2em );
                        background-repeat: no-repeat;
                        background-position: center center;
                        background-origin: border-box;
+                       background-size: 0 0;
+               }
+
+               // when the input is checked, style the label pseudo before element that followed as a checked checkbox
+               &:checked + label::before {
+                       background-size: 100% 100%;
                }
 
                &:active + label::before {
@@ -86,6 +94,7 @@
                        border-width: 2px;
                }
 
+               &:focus:hover + label::before,
                &:hover + label::before {
                        border-bottom-width: 3px;
                }