Merge "Cache countable statistics to prevent multiple counting on import"
[lhc/web/wiklou.git] / resources / src / mediawiki.ui / components / radio.less
index 6d8978e..1928699 100644 (file)
 //
 // Markup:
 // <div class="mw-ui-radio">
-//   <input type="radio" id="kss-example-7" name="kss-example-7">
-//   <label for="kss-example-7">Standard radio</label>
+//   <input type="radio" id="kss-example-4" name="kss-example-4">
+//   <label for="kss-example-4">Standard radio</label>
 // </div>
 // <div class="mw-ui-radio">
-//   <input type="radio" id="kss-example-7-checked" name="kss-example-7" checked>
-//   <label for="kss-example-7-checked">Standard checked radio</label>
+//   <input type="radio" id="kss-example-4-checked" name="kss-example-4" checked>
+//   <label for="kss-example-4-checked">Standard checked radio</label>
 // </div>
 // <div class="mw-ui-radio">
-//   <input type="radio" id="kss-example-7-disabled" name="kss-example-7-disabled" disabled>
-//   <label for="kss-example-7-disabled">Disabled radio</label>
+//   <input type="radio" id="kss-example-4-disabled" name="kss-example-4-disabled" disabled>
+//   <label for="kss-example-4-disabled">Disabled radio</label>
 // </div>
 // <div class="mw-ui-radio">
-//   <input type="radio" id="kss-example-7-disabled-checked" name="kss-example-7-disabled" disabled checked>
-//   <label for="kss-example-7-disabled-checked">Disabled checked radio</label>
+//   <input type="radio" id="kss-example-4-disabled-checked" name="kss-example-4-disabled" disabled checked>
+//   <label for="kss-example-4-disabled-checked">Disabled checked radio</label>
 // </div>
 //
-// Styleguide 7.
+// Styleguide 4.
 .mw-ui-radio {
        display: inline-block;
        vertical-align: middle;
 
 @radioSize: 2em;
 
-// We use the not selector to cancel out styling on IE 8 and below
-.mw-ui-radio:not(#noop) {
+// We use the not selector to cancel out styling on IE 8 and below.
+// We also disable this styling on javascript disabled devices. This fixes the issue with
+// Opera Mini where checking/unchecking doesn't apply styling but potentially leaves other
+// more capable browsers with unstyled radio buttons.
+.client-js .mw-ui-radio:not(#noop) {
        // Position relatively so we can make use of absolute pseudo elements
        position: relative;
        line-height: @radioSize;
 
        * {
+               // reset font sizes (see bug 72727)
                font: inherit;
                vertical-align: middle;
        }
@@ -59,8 +63,9 @@
 
                // the pseudo before element of the label after the radio now looks like a radio
                & + label::before {
-                       cursor: pointer;
+                       .transition( 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) );
                        content: '';
+                       cursor: pointer;
                        .box-sizing(border-box);
                        position: absolute;
                        left: 0;
                        height: @radioSize;
                        background-color: #fff;
                        border: 1px solid @colorGray7;
-               }
-
-               // when the input is checked, style the label pseudo before element that followed as a checked radio
-               &:checked + label::before {
                        .background-image-svg('images/radio_checked.svg', 'images/radio_checked.png');
                        .background-size( @radioSize, @radioSize );
                        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 radio
+               &:checked + label::before {
+                       background-size: 100% 100%;
+               }
+
+               &:active + label::before {
+                       background-color: @colorGray13;
+                       border-color: @colorGray13;
                }
 
                &:focus + label::before {
                        border-bottom-width: 3px;
                }
 
-               &:active + label::before {
-                       background-color: @colorGray13;
-                       border-color: @colorGray13;
-               }
-
-               // disabled checked boxes have a gray background
+               // disabled radios have a gray background
                &:disabled + label::before {
                        cursor: default;
-                       border-color: @colorGray14;
                        background-color: @colorGray14;
+                       border-color: @colorGray14;
                }
 
-               // disabled and checked boxes have a white circle
+               // disabled and checked radios have a white circle
                &:disabled:checked + label::before {
                        .background-image-svg('images/radio_disabled.svg', 'images/radio_disabled.png');
                }