// This file is being considered for Core as part of T252774. // Notes: // // - Usage requires three elements: a hidden checkbox input, a button, and a show / hide target. // - By convention, the checked state is considered expanded or visible. Unchecked is considered // hidden. // - Please see additional documentation in checkboxHack.js for example HTML and JavaScript // integration. // // Example supplemental styles (to be added on a per use case basis): // // - Animate target in and out from start (left in LTR) to end (right in LTR): // // .mw-checkbox-hack-checkbox:not( :checked ) ~ .mw-checkbox-hack-target { // // Turn off presentation so that screen readers get the same effect as visually // // hiding. Visibility and opacity can be animated. If animation is unnecessary, all // // of this can be replaced with `display: none` instead to avoid hidden rendering. // visibility: hidden; // opacity: 0; // @timing: @transition-duration-base ease-in-out; // .transition( transform @timing, opacity @timing, visibility @timing; ); // .transform( translateX( -100% ) ); // } // // - Show / hide the target instantly without animation: // // .mw-checkbox-hack-checkbox:not( :checked ) ~ .mw-checkbox-hack-target { // display: none; // } @import 'mediawiki.ui/variables.less'; @import 'mediawiki.mixins.less'; .mw-checkbox-hack-checkbox { // We don't want the browser to focus on the checkbox so we remove it from the // accessibility tree. Instead, we want the label button to receive focus // which has a tabindex of '0'. display: none; } .mw-checkbox-hack-button { // Labels are inlined by default but are also an icon having width and height specified. display: inline-block; // Use the hand icon for the toggle button which is actually a checkbox label. cursor: pointer; }