jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/346216 )

Change subject: MediaWiki theme: Unify `padding` on ButtonElement
......................................................................


MediaWiki theme: Unify `padding` on ButtonElement

Unifying `padding` & positioning of labels/icons/indicators on
ButtonElement and derived widgets.
Also:
 - fixing IE 9 issue with `min-width` of framed icon-only buttons
and removing corresponding hack,
 - bringing frameless `:focus` state closer to framed button.

Bug: T161177
Change-Id: Ice3e3dc8e1c492934d44ab7d98fe3c31e600be35
---
M src/themes/mediawiki/common.less
M src/themes/mediawiki/elements.less
M src/themes/mediawiki/widgets.less
3 files changed, 130 insertions(+), 58 deletions(-)

Approvals:
  Bartosz Dziewoński: Looks good to me, but someone else must approve
  jenkins-bot: Verified
  Jforrester: Looks good to me, approved



diff --git a/src/themes/mediawiki/common.less b/src/themes/mediawiki/common.less
index d3ba9b5..1eadeb9 100644
--- a/src/themes/mediawiki/common.less
+++ b/src/themes/mediawiki/common.less
@@ -78,6 +78,10 @@
 @size-toggleswitch-grip-min: 16px;
 @size-dialog-bar-top: 44 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // equals `3.4375em`≈`44px`
 
+@start-framed-icon-only: 7 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // equals `0.547em`≈`7px`; HACK: We have to break 
with `@padding-start-input-text-icon` to perfectly center in 
`@min-width-button-default`
+@start-framed-indicator-only: 13 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // equals `1.09375em`≈`14px`; `@size-indicator + 2 * 
@border-width-default`
+@start-framed-square-indicator-only: 9 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // equals `0.703125em`≈`9px`
+
 @width-button-combo-widget: @min-width-button-combo-widget;
 
 @height-icon-element: 100%;
@@ -89,6 +93,7 @@
 @border-disabled-filled: @border-width-default solid 
@border-color-disabled-filled;
 @border-dialog: @border-default;
 @border-dialog-bar: @border-width-default solid @border-color-dialog-bar;
+@border-frameless: @border-width-default solid @color-default-light;
 @border-menu: @border-default;
 
 @border-color-default: #a2a9b1;
@@ -106,11 +111,13 @@
 @border-color-dialog-bar: #c8ccd1;
 
 @border-radius-default: 2px;
+@border-radius-frameless: 1px; // Together with `@box-shadow-frameless` it 
results in well rounded border
 
 @border-width-default: 1px;
 @border-width-medium: 2px;
 
 @padding-default: @padding-top-default @padding-horizontal-default 
@padding-bottom-default;
+@padding-frameless: @padding-vertical-label 0;
 @padding-input-text: @padding-top-default @padding-horizontal-input-text 
@padding-bottom-default;
 @padding-menu: @padding-top-menu @padding-horizontal-default 
@padding-bottom-menu;
 @padding-menu-large: ( @padding-top-menu * 1.5 ) @padding-horizontal-default ( 
@padding-bottom-menu * 1.5 );
@@ -122,6 +129,10 @@
 @padding-bottom-default: 7 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // equals `0.547em`≈`7px`
 @padding-bottom-menu: 8 / @oo-ui-font-size-browser / @oo-ui-font-size-default;
 @padding-start-input-text-icon: 6 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // As long as we have whitespace in icon canvas, we 
need reduced `padding-left`.
+@padding-start-icon: @size-icon;
+@padding-start-icon-only: 26 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default; // equals `2.03125em`≈`26px`; 
@min-width-button-default - @padding-horizontal-default - 2 * 
@border-width-default;
+@padding-start-indicator-only: @padding-start-icon-only;
+@padding-start-indicator-plus: 32 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default;
 @padding-start-input-text-icon-label: 32 / @oo-ui-font-size-browser / 
@oo-ui-font-size-default;
 
 @box-shadow-dialog: 0 2px 2px 0 rgba( 0, 0, 0, 0.25 );
@@ -131,6 +142,7 @@
 @box-shadow-widget: inset 0 0 0 1px @background-color-default;
 @box-shadow-widget-focus: inset 0 0 0 1px @color-progressive;
 @box-shadow-progressive-focus: inset 0 0 0 1px @color-progressive, inset 0 0 0 
2px @color-default-light;
+@box-shadow-frameless-focus: 0 0 0 2px @color-progressive;
 @box-shadow-input-binary-active: inset 0 0 0 1px @color-progressive-active;
 @box-shadow-readonly-focus: inset 0 0 0 1px #c8ccd1;
 @box-shadow-erroneous-focus: inset 0 0 0 1px @color-erroneous;
diff --git a/src/themes/mediawiki/elements.less 
b/src/themes/mediawiki/elements.less
index eabe88c..738291b 100644
--- a/src/themes/mediawiki/elements.less
+++ b/src/themes/mediawiki/elements.less
@@ -4,18 +4,68 @@
 
 .theme-oo-ui-buttonElement () {
        > .oo-ui-buttonElement-button {
+               position: relative;
                font-weight: bold;
                text-decoration: none;
 
                &:focus {
-                       border-radius: @border-radius-default;
                        outline: 0;
+               }
+
+               > .oo-ui-iconElement-icon,
+               > .oo-ui-indicatorElement-indicator {
+                       position: absolute;
+                       top: 0;
+                       height: 100%;
                }
        }
 
-       &.oo-ui-iconElement > .oo-ui-buttonElement-button {
-               > .oo-ui-indicatorElement-indicator {
-                       margin-left: @size-indicator / 2;
+       &.oo-ui-iconElement {
+               > .oo-ui-buttonElement-button {
+                       > .oo-ui-iconElement-icon {
+                               display: block;
+                       }
+               }
+       }
+
+       &.oo-ui-labelElement > .oo-ui-buttonElement-button,
+       // Support `<input>` from ButtonInputWidget
+       > input.oo-ui-buttonElement-button {
+               line-height: @line-height-reset;
+       }
+
+       &.oo-ui-labelElement {
+               > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+                       line-height: @line-height-widget-singleline;
+               }
+
+               &.oo-ui-iconElement {
+                       > .oo-ui-buttonElement-button {
+                               padding-left: @padding-start-icon-only;
+                       }
+               }
+
+               &.oo-ui-indicatorElement {
+                       > .oo-ui-buttonElement-button {
+                               padding-right: @padding-start-indicator-plus;
+                       }
+               }
+       }
+
+       &.oo-ui-indicatorElement {
+               // Indicator (-only)
+               > .oo-ui-buttonElement-button {
+                       > .oo-ui-indicatorElement-indicator {
+                               display: block;
+                       }
+               }
+
+               // Indicator and label/icon
+               &.oo-ui-labelElement,
+               &.oo-ui-iconElement {
+                       > .oo-ui-buttonElement-button > 
.oo-ui-indicatorElement-indicator {
+                               right: @padding-horizontal-default;
+                       }
                }
        }
 
@@ -64,24 +114,34 @@
 
        &-frameless {
                > .oo-ui-buttonElement-button {
-                       .oo-ui-indicatorElement-indicator {
-                               margin-right: 0;
+                       border-radius: @border-radius-frameless;
+               }
+
+               &.oo-ui-iconElement {
+                       // Icon (-only) framed
+                       > .oo-ui-buttonElement-button {
+                               min-width: @size-icon;
+                               min-height: @size-icon;
+
+                               > .oo-ui-iconElement-icon {
+                                       left: 0;
+                               }
                        }
                }
 
                &.oo-ui-labelElement {
                        > .oo-ui-buttonElement-button {
-                               > .oo-ui-labelElement-label {
-                                       margin-left: 0.25em;
-                                       margin-right: 0.25em;
-                               }
+                               margin-left: -@border-width-default; // Address 
`border` below
+                               border: @border-frameless;
+                               padding: @padding-frameless;
                        }
                }
 
-               // Support `<input>` from ButtonInputWidget
-               > input.oo-ui-buttonElement-button {
-                       padding-left: 0.25em;
-                       padding-right: 0.25em;
+               &.oo-ui-indicatorElement {
+                       > .oo-ui-buttonElement-button {
+                               min-width: @size-indicator;
+                               min-height: @size-indicator;
+                       }
                }
 
                &.oo-ui-widget-enabled {
@@ -92,7 +152,7 @@
                                        color: @color-default-hover;
                                }
                                &:focus {
-                                       box-shadow: @box-shadow-widget-focus, 0 
0 0 1px @color-progressive-focus;
+                                       box-shadow: @box-shadow-frameless-focus;
                                }
                        }
 
@@ -147,57 +207,50 @@
        }
 
        &-framed {
-               &.oo-ui-iconElement.oo-ui-labelElement,
-               &.oo-ui-iconElement.oo-ui-indicatorElement {
-                       > .oo-ui-buttonElement-button {
-                               padding-left: 
@padding-start-input-text-icon-label;
-                       }
-               }
-
                > .oo-ui-buttonElement-button {
-                       position: relative;
                        min-height: @min-height-button-default;
                        border-radius: @border-radius-default;
                        padding: @padding-default;
                }
 
-               &.oo-ui-iconElement > .oo-ui-buttonElement-button {
-                       min-width: @min-width-button-default;
-               }
-
-               // Support: IE9
-               // Indirectly please IE9 as it doesn't like `min-width` on all 
kinds of buttons (T158728)
-               &.oo-ui-labelElement > .oo-ui-buttonElement-button,
-               &.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
-                       min-width: 0;
-               }
-
-               // Support `<input>` from ButtonInputWidget
-               > input.oo-ui-buttonElement-button,
-               &.oo-ui-labelElement > .oo-ui-buttonElement-button {
-                       line-height: @line-height-reset;
-               }
-
-               &.oo-ui-labelElement > .oo-ui-buttonElement-button > 
.oo-ui-labelElement-label {
-                       line-height: @line-height-widget-singleline;
-               }
-
                &.oo-ui-iconElement {
-                       > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon 
{
-                               display: block;
-                               position: absolute;
-                               top: 0;
-                               height: 100%;
-                               // Horizontally center the icon in icon-only 
buttons
-                               left: @padding-start-input-text-icon;
+                       // Icon (-only) framed
+                       > .oo-ui-buttonElement-button {
+                               padding-left: @padding-start-icon-only;
+
+                               > .oo-ui-iconElement-icon {
+                                       left: @start-framed-icon-only;
+                               }
+                       }
+
+                       // Icon and label/indicator framed
+                       &.oo-ui-labelElement,
+                       &.oo-ui-indicatorElement {
+                               > .oo-ui-buttonElement-button {
+                                       padding-left: 
@padding-start-input-text-icon-label;
+
+                                       > .oo-ui-iconElement-icon {
+                                               left: 
@padding-start-input-text-icon;
+                                       }
+                               }
                        }
                }
 
                &.oo-ui-indicatorElement {
-                       &.oo-ui-labelElement {
-                               > .oo-ui-buttonElement-button > 
.oo-ui-indicatorElement-indicator {
-                                       position: relative;
-                                       left: 0.275em;
+                       // Indicator (-only) framed
+                       > .oo-ui-buttonElement-button {
+                               padding-right: @padding-start-indicator-only;
+
+                               > .oo-ui-indicatorElement-indicator {
+                                       right: @start-framed-indicator-only;
+                               }
+                       }
+
+                       // Indicator and label/icon framed
+                       &.oo-ui-labelElement,
+                       &.oo-ui-iconElement {
+                               > .oo-ui-buttonElement-button {
+                                       padding-right: 
@padding-start-indicator-plus;
                                }
                        }
                }
diff --git a/src/themes/mediawiki/widgets.less 
b/src/themes/mediawiki/widgets.less
index a2dec1e..c3dfee7 100644
--- a/src/themes/mediawiki/widgets.less
+++ b/src/themes/mediawiki/widgets.less
@@ -81,7 +81,7 @@
        .oo-ui-buttonOptionWidget {
                .oo-ui-buttonElement-button {
                        border-radius: 0;
-                       margin-left: -1px;
+                       margin-left: -@border-width-default;
                }
 
                &:first-child .oo-ui-buttonElement-button {
@@ -95,6 +95,10 @@
                        border-top-right-radius: @border-radius-default;
                }
 
+               &.oo-ui-iconElement .oo-ui-iconElement-icon,
+               &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+                       position: absolute; // FIXME: Remove from 
ButtonOptionWidget after cleaning up when T161177 is resolved
+               }
        }
 
        &.oo-ui-widget-enabled {
@@ -455,14 +459,17 @@
                border-right-width: @border-width-default;
        }
 
-       &-dropdownButton {
+       &-dropdownButton.oo-ui-indicatorElement {
                width: @width-button-combo-widget;
 
                .oo-ui-buttonElement-button {
                        min-width: @min-width-button-combo-widget;
                        min-height: @min-height-button-default;
                        padding-left: 0;
-                       padding-right: 0;
+
+                       > .oo-ui-indicatorElement-indicator {
+                               right: @start-framed-square-indicator-only;
+                       }
                }
 
                .oo-ui-buttonElement-button,

-- 
To view, visit https://gerrit.wikimedia.org/r/346216
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ice3e3dc8e1c492934d44ab7d98fe3c31e600be35
Gerrit-PatchSet: 3
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: VolkerE <volke...@wikimedia.org>
Gerrit-Reviewer: Bartosz Dziewoński <matma....@gmail.com>
Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org>
Gerrit-Reviewer: VolkerE <volke...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to