@import '../../minerva.less/minerva.variables'; @import '../../minerva.less/minerva.mixins'; // Toast notifications // // Styleguide 3. .drawer { background-color: @colorGray15; // needed for Android 4.x position: absolute; // needed for MSIE 9 (Windows Phone 7) width: 100%; } // Basic toast notification // // Toast must have visible class to be shown // // Markup: //
// Notification for user. //
// // Styleguide 3.1. .mw-notification, .toast, .drawer { .box-sizing( border-box ); position: fixed; bottom: 0; left: 0; right: 0; box-shadow: 0 -1px 8px 0 rgba( 0, 0, 0, 0.35 ); word-wrap: break-word; // needs to be higher than for overlays to show on top of overlays z-index: @z-indexOverOverlay; // don't use visibility: hidden in old browsers that don't support animations display: none; &.visible, &.mw-notification-visible { display: block; } } .mw-notification, .toast { font-size: 0.9em; padding: 0.9em 1em; background-color: @toastNotificationColor; color: #fff; margin: 0 10% 20px; width: 80%; text-align: center; border-radius: @borderRadius; // Toast notification error state // // When the toast message needs to convey that an error has occurred add the error class // // Markup: //
// An error occurred. //
// // Styleguide 3.2. &.mw-notification-type-error { // FIXME: Use `mobile.startup.images` to serve this file. // Styling icon with the class mw-notification-type-error // allows extensions ot use mw.notify( msg, 'error' ) and have those styled as errors. // see https://github.com/search?l=JavaScript&q=org%3Awikimedia+mw.notify&type=Code .background-image( 'images/error.svg' ); background-size: 24px; background-position: 16px 50%; background-repeat: no-repeat; padding-left: 5%; width: 75%; border: 0; // FIXME: this is needed because a global .error adds border } a { color: @colorProgressive; &.new { color: @colorDestructive; } } } .mw-notification-area { z-index: @z-indexOverOverlay; position: fixed; bottom: 0; width: 100%; } .animations { .mw-notification, .drawer { @duration: 0.25s; display: block; visibility: hidden; /* we can't determine the actual size of the drawer in CSS, so this is * an estimate; it doesn't have to be exact because it's used only for * the sliding animation, not for hiding the drawer */ .transform( translate( 0, 100px ) ); // counter translate with bottom to avoid empty blank space at the bottom // especially on browsers that don't support position: fixed bottom: 100px; opacity: 0; // Only apply the transition when an animation is needed (when drawer/toast hidden/shown) &.animated, &.mw-notification-tag-toast { // delay visibility transition to make other transitions visible // http://fvsch.com/code/transition-fade/test5.html // need to assign to a temporary variable to preserve commas // https://github.com/leafo/lessphp/issues/105#issuecomment-2872598 @transition: @duration, opacity @duration, visibility 0s @duration, bottom 0s @duration; .transition-transform( @transition ); } &.visible, &.mw-notification-visible { bottom: 0; // need to assign to a temporary variable to preserve commas // https://github.com/leafo/lessphp/issues/105#issuecomment-2872598 @transition: @duration, opacity @duration; .transition-transform( @transition ); visibility: visible; opacity: 1; .transform( translate( 0, 0 ) ); } } }