jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/382353 )
Change subject: Generalize icon and indicator positioning & visibility ...................................................................... Generalize icon and indicator positioning & visibility Generalizing icon and indicator positioning & visibility foremost in WikimediaUI theme. This results in much cleaner and simpler output, easier debuggability and saves about 2% output CSS. Bug: T161177 Change-Id: I9d0cbf5d069ae0ecdb56501fb6f352ba68d29c1f --- M src/styles/elements/ButtonElement.less M src/styles/elements/IconElement.less M src/styles/elements/IndicatorElement.less M src/styles/layouts/FieldsetLayout.less M src/styles/toolgroups/BarToolGroup.less M src/styles/toolgroups/PopupToolGroup.less M src/styles/widgets/ButtonOptionWidget.less M src/styles/widgets/CapsuleMultiselectWidget.less M src/styles/widgets/DecoratedOptionWidget.less M src/styles/widgets/DropdownWidget.less M src/styles/widgets/SelectFileWidget.less M src/styles/widgets/TextInputWidget.less M src/themes/apex/elements.less M src/themes/apex/layouts.less M src/themes/apex/tools.less M src/themes/apex/widgets.less M src/themes/wikimediaui/elements.less M src/themes/wikimediaui/layouts.less M src/themes/wikimediaui/tools.less M src/themes/wikimediaui/widgets.less 20 files changed, 152 insertions(+), 154 deletions(-) Approvals: jenkins-bot: Verified Jforrester: Looks good to me, approved diff --git a/src/styles/elements/ButtonElement.less b/src/styles/elements/ButtonElement.less index 67524b9..c89263b 100644 --- a/src/styles/elements/ButtonElement.less +++ b/src/styles/elements/ButtonElement.less @@ -20,23 +20,10 @@ border-color: transparent; padding: 0; } - - > .oo-ui-iconElement-icon, - > .oo-ui-indicatorElement-indicator { - display: none; - } } &.oo-ui-widget-disabled > .oo-ui-buttonElement-button { cursor: default; - } - - &.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, - &.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, - &-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - // Vertical align text - display: inline-block; - vertical-align: middle; } &-frameless { diff --git a/src/styles/elements/IconElement.less b/src/styles/elements/IconElement.less index 120454b..a7bdc13 100644 --- a/src/styles/elements/IconElement.less +++ b/src/styles/elements/IconElement.less @@ -6,12 +6,15 @@ background-size: contain; background-position: center center; background-repeat: no-repeat; + display: none; + position: absolute; + top: 0; // Support: IE11, Edge 12+ (T94494), Firefox 31.5 (T93636) min-width: @min-size-icon; width: @size-icon; // Support: IE11, Edge 12+ (T94494), Firefox 31.5 (T93636) min-height: @min-size-icon; - height: @size-icon; + height: 100%; } .theme-oo-ui-iconElement(); diff --git a/src/styles/elements/IndicatorElement.less b/src/styles/elements/IndicatorElement.less index b4a6a6d..9819345 100644 --- a/src/styles/elements/IndicatorElement.less +++ b/src/styles/elements/IndicatorElement.less @@ -6,12 +6,15 @@ background-size: contain; background-position: center center; background-repeat: no-repeat; + display: none; + position: absolute; + top: 0; // Support: IE11, Edge 12+ (T94494), Firefox 31.5 (T93636) min-width: @min-size-indicator; width: @size-indicator; // Support: IE11, Edge 12+ (T94494), Firefox 31.5 (T93636) min-height: @min-size-indicator; - height: @size-indicator; + height: 100%; } .theme-oo-ui-indicatorElement(); diff --git a/src/styles/layouts/FieldsetLayout.less b/src/styles/layouts/FieldsetLayout.less index aaee46b..8d8e8e1 100644 --- a/src/styles/layouts/FieldsetLayout.less +++ b/src/styles/layouts/FieldsetLayout.less @@ -11,11 +11,6 @@ display: table-cell; // Prevent overflowing content in Firefox (responsive layouts) } - &.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { - display: block; - position: absolute; - } - &.oo-ui-labelElement > .oo-ui-fieldsetLayout-header { color: inherit; // Correct the color inheritance from `fieldset` elements in IE display: inline-table; // Correct the text wrapping in Edge and IE diff --git a/src/styles/toolgroups/BarToolGroup.less b/src/styles/toolgroups/BarToolGroup.less index 5cd99c5..3add9ce 100644 --- a/src/styles/toolgroups/BarToolGroup.less +++ b/src/styles/toolgroups/BarToolGroup.less @@ -15,11 +15,6 @@ } &.oo-ui-iconElement > .oo-ui-tool-link { - .oo-ui-iconElement-icon { - display: inline-block; - vertical-align: top; - } - .oo-ui-tool-title { display: none; } diff --git a/src/styles/toolgroups/PopupToolGroup.less b/src/styles/toolgroups/PopupToolGroup.less index 50b094e..6793397 100644 --- a/src/styles/toolgroups/PopupToolGroup.less +++ b/src/styles/toolgroups/PopupToolGroup.less @@ -6,11 +6,6 @@ &-handle { display: block; cursor: pointer; - - .oo-ui-indicatorElement-indicator, - .oo-ui-iconElement-icon { - position: absolute; - } } &.oo-ui-widget-disabled { @@ -46,7 +41,6 @@ vertical-align: middle; white-space: nowrap; - .oo-ui-iconElement-icon, .oo-ui-tool-accel, .oo-ui-tool-title { display: table-cell; diff --git a/src/styles/widgets/ButtonOptionWidget.less b/src/styles/widgets/ButtonOptionWidget.less index 39ab531..46cb615 100644 --- a/src/styles/widgets/ButtonOptionWidget.less +++ b/src/styles/widgets/ButtonOptionWidget.less @@ -7,12 +7,5 @@ cursor: default; } - &.oo-ui-iconElement .oo-ui-iconElement-icon, - &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - position: static; - display: inline-block; - vertical-align: middle; - } - .theme-oo-ui-buttonOptionWidget(); } diff --git a/src/styles/widgets/CapsuleMultiselectWidget.less b/src/styles/widgets/CapsuleMultiselectWidget.less index ba93b3b..d5d33f0 100644 --- a/src/styles/widgets/CapsuleMultiselectWidget.less +++ b/src/styles/widgets/CapsuleMultiselectWidget.less @@ -8,13 +8,6 @@ width: 100%; display: block; position: relative; - - > .oo-ui-iconElement-icon, - > .oo-ui-indicatorElement-indicator { - position: absolute; - top: 0; - height: 100%; - } } &-content { diff --git a/src/styles/widgets/DecoratedOptionWidget.less b/src/styles/widgets/DecoratedOptionWidget.less index 2a230d4..5cbf4dd 100644 --- a/src/styles/widgets/DecoratedOptionWidget.less +++ b/src/styles/widgets/DecoratedOptionWidget.less @@ -1,10 +1,5 @@ @import '../common'; .oo-ui-decoratedOptionWidget { - > .oo-ui-iconElement-icon, - > .oo-ui-indicatorElement-indicator { - position: absolute; - } - .theme-oo-ui-decoratedOptionWidget(); } diff --git a/src/styles/widgets/DropdownWidget.less b/src/styles/widgets/DropdownWidget.less index f75bec6..708e7c9 100644 --- a/src/styles/widgets/DropdownWidget.less +++ b/src/styles/widgets/DropdownWidget.less @@ -14,13 +14,6 @@ cursor: default; .oo-ui-unselectable(); .oo-ui-box-sizing( border-box ); - - .oo-ui-iconElement-icon, - .oo-ui-indicatorElement-indicator { - position: absolute; - top: 0; - height: 100%; - } } &.oo-ui-widget-enabled &-handle { diff --git a/src/styles/widgets/SelectFileWidget.less b/src/styles/widgets/SelectFileWidget.less index 2a050a6..39bf52f 100644 --- a/src/styles/widgets/SelectFileWidget.less +++ b/src/styles/widgets/SelectFileWidget.less @@ -43,13 +43,6 @@ overflow: hidden; .oo-ui-box-sizing( border-box ); - > .oo-ui-indicatorElement-indicator, - > .oo-ui-iconElement-icon { - position: absolute; - top: 0; - height: 100%; - } - .oo-ui-widget-disabled & { cursor: default; .oo-ui-unselectable(); @@ -76,8 +69,7 @@ height: 8.815em; .oo-ui-selectFileWidget-dropLabel, - .oo-ui-selectFileWidget-selectButton, - .oo-ui-iconElement-icon { + .oo-ui-selectFileWidget-selectButton { display: none; } diff --git a/src/styles/widgets/TextInputWidget.less b/src/styles/widgets/TextInputWidget.less index 0734dc3..68760ba 100644 --- a/src/styles/widgets/TextInputWidget.less +++ b/src/styles/widgets/TextInputWidget.less @@ -47,20 +47,6 @@ } } - > .oo-ui-iconElement-icon, - > .oo-ui-indicatorElement-indicator, - > .oo-ui-labelElement-label { - display: none; - } - - &.oo-ui-iconElement > .oo-ui-iconElement-icon, - &.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { - display: block; - position: absolute; - top: 0; - height: 100%; - } - &.oo-ui-widget-enabled { > .oo-ui-iconElement-icon, > .oo-ui-indicatorElement-indicator { diff --git a/src/themes/apex/elements.less b/src/themes/apex/elements.less index b416814..02850c0 100644 --- a/src/themes/apex/elements.less +++ b/src/themes/apex/elements.less @@ -19,12 +19,15 @@ line-height: @size-icon; } - &.oo-ui-iconElement { - .oo-ui-iconElement-icon { - height: 100%; - margin-left: 0; - } + &.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, + &.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, + &-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + // Vertical align text + display: inline-block; + vertical-align: middle; + } + &.oo-ui-iconElement { .oo-ui-indicatorElement-indicator { margin-left: @size-indicator / 2; } @@ -278,6 +281,9 @@ .theme-oo-ui-iconElement () { .oo-ui-iconElement-icon, &.oo-ui-iconElement-icon { + position: static; + top: auto; + height: @size-icon; opacity: 0.8; } } @@ -285,6 +291,9 @@ .theme-oo-ui-indicatorElement () { .oo-ui-indicatorElement-indicator, &.oo-ui-indicatorElement-indicator { + position: static; + top: auto; + height: @size-indicator; opacity: 0.8; } } diff --git a/src/themes/apex/layouts.less b/src/themes/apex/layouts.less index 31b9821..4f13a2b 100644 --- a/src/themes/apex/layouts.less +++ b/src/themes/apex/layouts.less @@ -156,8 +156,10 @@ } &.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { - left: 0; + display: block; + position: absolute; top: 0.25em; + left: 0; } > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget { diff --git a/src/themes/apex/tools.less b/src/themes/apex/tools.less index 312165b..03c92ef 100644 --- a/src/themes/apex/tools.less +++ b/src/themes/apex/tools.less @@ -131,6 +131,8 @@ padding: 0.3125em; .oo-ui-iconElement-icon { + display: inline-block; + vertical-align: top; height: 1.875em; width: 1.875em; } @@ -434,11 +436,16 @@ } &-handle { + .oo-ui-indicatorElement-indicator, + .oo-ui-iconElement-icon { + position: absolute; + top: 0; + } + .oo-ui-indicatorElement-indicator { width: 0.9375em; height: 0.9375em; margin: 0.78125em; - top: 0; right: 0; .oo-ui-toolbar-narrow & { @@ -449,7 +456,6 @@ width: 1.875em; height: 1.875em; margin: 0.3125em; - top: 0; left: 0.3125em; .oo-ui-toolbar-narrow & { @@ -491,9 +497,11 @@ padding: 0.3125em 0 0.3125em 0.3125em; .oo-ui-iconElement-icon { - height: 1.875em; - width: 1.875em; + display: table-cell; min-width: 1.875em; + width: 1.875em; + height: 1.875em; + vertical-align: middle; } .oo-ui-tool-title { diff --git a/src/themes/apex/widgets.less b/src/themes/apex/widgets.less index 6094c78..3bd5106 100644 --- a/src/themes/apex/widgets.less +++ b/src/themes/apex/widgets.less @@ -1,6 +1,11 @@ @import 'common'; -.theme-oo-ui-widget () {} +.theme-oo-ui-widget () { + &.oo-ui-iconElement .oo-ui-iconElement-icon, + &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + display: block; + } +} .theme-oo-ui-actionWidget () { &.oo-ui-pendingElement-pending { @@ -85,6 +90,13 @@ &.oo-ui-optionWidget-pressed, &.oo-ui-optionWidget-highlighted { background-color: transparent; + } + + &.oo-ui-iconElement .oo-ui-iconElement-icon, + &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + position: static; + display: inline-block; + vertical-align: middle; } } @@ -239,6 +251,13 @@ .oo-ui-box-sizing( border-box ); + > .oo-ui-iconElement-icon, + > .oo-ui-indicatorElement-indicator { + position: absolute; + top: 0; + height: 100%; + } + > .oo-ui-capsuleMultiselectWidget-content { > input { border: 0; @@ -353,6 +372,7 @@ &.oo-ui-iconElement .oo-ui-iconElement-icon, &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + position: absolute; top: 0; height: 100%; } @@ -390,6 +410,13 @@ &:focus { outline: 0; + } + + .oo-ui-iconElement-icon, + .oo-ui-indicatorElement-indicator { + position: absolute; + top: 0; + height: 100%; } .oo-ui-iconElement-icon { @@ -482,6 +509,13 @@ .theme-oo-ui-iconWidget () { line-height: 2.5em; + &.oo-ui-iconElement.oo-ui-iconElement-icon { + display: inline-block; + position: static; + top: auto; + height: @size-icon; + } + &.oo-ui-widget-disabled { opacity: 0.2; } @@ -490,6 +524,13 @@ .theme-oo-ui-indicatorWidget () { line-height: 2.5em; margin: @size-indicator / 2; + + &.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { + display: inline-block; + position: static; + top: auto; + height: @size-icon; + } &.oo-ui-widget-disabled { opacity: 0.2; @@ -506,6 +547,10 @@ .theme-oo-ui-menuOptionWidget () { &.oo-ui-optionWidget { + > .oo-ui-indicatorElement-indicator { + display: none; + } + &-selected { background-color: transparent; @@ -516,6 +561,7 @@ background-repeat: no-repeat; background-size: contain; display: block; + position: absolute; left: 0.5em; top: 0; min-width: @min-size-icon; @@ -919,6 +965,11 @@ &-selectButton { > .oo-ui-buttonElement-button { border-radius: 0 @border-radius-base @border-radius-base 0; + + .oo-ui-iconElement-icon, + .oo-ui-indicatorElement-indicator { + display: none; + } } } @@ -929,14 +980,19 @@ border-radius: @border-radius-base 0 0 @border-radius-base; border-width: 1px 0 1px 1px; + > .oo-ui-indicatorElement-indicator, > .oo-ui-iconElement-icon { - left: 0; - margin-left: 0.3em; + position: absolute; + top: 0; + height: 100%; + } + + > .oo-ui-iconElement-icon { + left: 0.3em; } > .oo-ui-indicatorElement-indicator { - right: 0; - margin-right: 0.775em; + right: 0.775em; } } @@ -1316,6 +1372,20 @@ } } + > .oo-ui-iconElement-icon, + > .oo-ui-indicatorElement-indicator, + > .oo-ui-labelElement-label { + display: none; + } + + &.oo-ui-iconElement > .oo-ui-iconElement-icon, + &.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { + display: block; + position: absolute; + top: 0; + height: 100%; + } + &.oo-ui-iconElement { input, textarea { diff --git a/src/themes/wikimediaui/elements.less b/src/themes/wikimediaui/elements.less index 237244f..90c0823 100644 --- a/src/themes/wikimediaui/elements.less +++ b/src/themes/wikimediaui/elements.less @@ -13,21 +13,6 @@ &:focus { 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-iconElement-icon { - display: block; - } - } } // ButtonInputWidget's `<input>` @@ -53,13 +38,6 @@ } &.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 { diff --git a/src/themes/wikimediaui/layouts.less b/src/themes/wikimediaui/layouts.less index 9529b57..681df01 100644 --- a/src/themes/wikimediaui/layouts.less +++ b/src/themes/wikimediaui/layouts.less @@ -1,6 +1,10 @@ @import 'common'; -.theme-oo-ui-layout () {} +.theme-oo-ui-layout () { + &.oo-ui-iconElement .oo-ui-iconElement-icon { + display: block; + } +} .theme-oo-ui-bookletLayout () { &-stackLayout { @@ -136,8 +140,11 @@ display: table; } - .oo-ui-iconWidget { + .oo-ui-iconElement.oo-ui-iconElement-icon { display: table-cell; + position: static; + top: auto; + height: @size-icon; } .oo-ui-labelWidget { @@ -146,6 +153,10 @@ line-height: @line-height-message; vertical-align: middle; } + } + + &.oo-ui-fieldLayout-messages.oo-ui-iconElement .oo-ui-iconElement-icon { + display: table-cell; } &-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { @@ -166,6 +177,10 @@ .theme-oo-ui-fieldsetLayout () { .oo-ui-fieldsetLayout-header { max-width: 50em; + + .oo-ui-iconElement-icon { + height: @size-icon; + } } + .oo-ui-fieldsetLayout, @@ -184,11 +199,6 @@ &.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { padding-left: @padding-start-fieldset-header-iconized; line-height: @line-height-fieldset-header-iconized; - } - - &.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { - top: 0; - left: 0; } .oo-ui-fieldsetLayout-help { // Assuming that this is a PopupButtonWidget diff --git a/src/themes/wikimediaui/tools.less b/src/themes/wikimediaui/tools.less index 3480665..ab59092 100644 --- a/src/themes/wikimediaui/tools.less +++ b/src/themes/wikimediaui/tools.less @@ -92,11 +92,7 @@ } &.oo-ui-iconElement .oo-ui-iconElement-icon { - display: block; - position: absolute; - top: 0; left: @start-tool-icon-indicator; - height: 100%; } .oo-ui-tool-title { @@ -241,11 +237,7 @@ .oo-ui-tool { &-link { .oo-ui-iconElement-icon { - background-image: none; - position: absolute; - top: 0; left: @start-tool-icon-indicator; - height: 100%; } } @@ -280,12 +272,6 @@ &-handle { .oo-ui-box-sizing( border-box ); - - .oo-ui-iconElement-icon, - .oo-ui-indicatorElement-indicator { - top: 0; - height: 100%; - } .oo-ui-iconElement-icon { left: @start-tool-icon-indicator; @@ -374,10 +360,6 @@ .oo-ui-tool-link { // Tool-Links in PopupToolGroups always have a `-title` element padding: @padding-top-tool-label @padding-horizontal-base @padding-bottom-tool-label @padding-start-tool; - - .oo-ui-iconElement-icon { - display: block; - } .oo-ui-tool-title { color: @color-base; diff --git a/src/themes/wikimediaui/widgets.less b/src/themes/wikimediaui/widgets.less index d4dfebb..a6b0c13 100644 --- a/src/themes/wikimediaui/widgets.less +++ b/src/themes/wikimediaui/widgets.less @@ -1,6 +1,11 @@ @import 'common'; -.theme-oo-ui-widget () {} +.theme-oo-ui-widget () { + &.oo-ui-iconElement .oo-ui-iconElement-icon, + &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { + display: block; + } +} .theme-oo-ui-actionWidget () {} @@ -108,11 +113,6 @@ &:last-child .oo-ui-buttonElement-button { border-bottom-right-radius: @border-radius-base; border-top-right-radius: @border-radius-base; - } - - &.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-disabled + .oo-ui-widget-disabled { @@ -521,12 +521,6 @@ padding: @padding-menu; line-height: @line-height-reset; - &.oo-ui-iconElement .oo-ui-iconElement-icon, - &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - top: 0; - height: 100%; - } - &.oo-ui-iconElement { padding-left: @padding-start-menu-icon-label; @@ -738,6 +732,13 @@ .theme-oo-ui-iconWidget () { line-height: 2.5; + &.oo-ui-iconElement.oo-ui-iconElement-icon { + display: inline-block; + position: static; + top: auto; + height: @size-icon; + } + &.oo-ui-widget-disabled { opacity: @opacity-base--disabled; } @@ -746,6 +747,13 @@ .theme-oo-ui-indicatorWidget () { line-height: 2.5; margin: @size-indicator / 2; + + &.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator { + display: inline-block; + position: static; + top: auto; + height: @size-indicator; + } &.oo-ui-widget-disabled { opacity: @opacity-base--disabled; @@ -1335,6 +1343,7 @@ border-right-width: 0; > .oo-ui-iconElement-icon { + display: none; top: -@border-width-base; // Address `border-top` of parent element left: @padding-start-input-text-icon; min-height: @min-height-widget-base; @@ -1342,6 +1351,7 @@ } > .oo-ui-indicatorElement-indicator { + display: none; top: -@border-width-base; // Address `border-top` of parent element right: @padding-horizontal-base; min-height: @min-height-widget-base; -- To view, visit https://gerrit.wikimedia.org/r/382353 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9d0cbf5d069ae0ecdb56501fb6f352ba68d29c1f Gerrit-PatchSet: 5 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: Legoktm <lego...@member.fsf.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