Trevor Parscal has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/179000

Change subject: Split primary flag into primary and progressive
......................................................................

Split primary flag into primary and progressive

Using the primary was specifying both the blue styling to indicate its function 
and the primary placement in dialogs to indicate its importance, but in fact 
these are separate things that should have separate names.

Now "primary" is now split, so that "progressive" is used for the blue styling 
and "primary" only hints at the importance. In the case of the MediaWiki theme, 
buttons that are progressive, constructive or destructive are only given the 
strong treatment of a colored background if they are also primary.

Bug: T78040
Change-Id: Iee91d2c695f7fef3f78a2d44f05b431dbe30615d
---
M demos/pages/dialogs.js
M demos/pages/widgets.js
M demos/widgets.php
M php/elements/FlaggedElement.php
M php/themes/MediaWikiTheme.php
M src/elements/FlaggedElement.js
M src/themes/apex/common.less
M src/themes/apex/elements.less
M src/themes/apex/widgets.less
M src/themes/apex/windows.less
M src/themes/mediawiki/MediaWikiTheme.js
M src/themes/mediawiki/common.less
M src/themes/mediawiki/elements.less
M src/themes/mediawiki/images.json
M src/themes/mediawiki/widgets.less
M src/themes/mediawiki/windows.less
16 files changed, 132 insertions(+), 75 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/oojs/ui refs/changes/00/179000/1

diff --git a/demos/pages/dialogs.js b/demos/pages/dialogs.js
index 689bf6d..8535287 100644
--- a/demos/pages/dialogs.js
+++ b/demos/pages/dialogs.js
@@ -42,7 +42,7 @@
        OO.inheritClass( ProcessDialog, OO.ui.ProcessDialog );
        ProcessDialog.static.title = 'Process dialog';
        ProcessDialog.static.actions = [
-               { action: 'save', label: 'Done', flags: 'primary' },
+               { action: 'save', label: 'Done', flags: [ 'primary', 
'progressive' ] },
                { action: 'cancel', label: 'Cancel', flags: 'safe' }
        ];
        ProcessDialog.prototype.initialize = function () {
@@ -174,7 +174,7 @@
        OO.inheritClass( BookletDialog, OO.ui.ProcessDialog );
        BookletDialog.static.title = 'Booklet dialog';
        BookletDialog.static.actions = [
-               { action: 'save', label: 'Done', flags: 'primary' },
+               { action: 'save', label: 'Done', flags: [ 'primary', 
'progressive' ] },
                { action: 'cancel', label: 'Cancel', flags: 'safe' }
        ];
        BookletDialog.prototype.getBodyHeight = function () {
diff --git a/demos/pages/widgets.js b/demos/pages/widgets.js
index 3490a96..840ca35 100644
--- a/demos/pages/widgets.js
+++ b/demos/pages/widgets.js
@@ -102,11 +102,11 @@
                ),
                new OO.ui.FieldLayout(
                        new OO.ui.ButtonWidget( {
-                               label: 'Primary',
-                               flags: [ 'primary' ]
+                               label: 'Progressive',
+                               flags: [ 'progressive' ]
                        } ),
                        {
-                               label: 'ButtonWidget (primary)\u200E',
+                               label: 'ButtonWidget (progressive)\u200E',
                                align: 'top'
                        }
                ),
@@ -127,6 +127,36 @@
                        } ),
                        {
                                label: 'ButtonWidget (destructive)\u200E',
+                               align: 'top'
+                       }
+               ),
+               new OO.ui.FieldLayout(
+                       new OO.ui.ButtonWidget( {
+                               label: 'Primary progressive',
+                               flags: [ 'primary', 'progressive' ]
+                       } ),
+                       {
+                               label: 'ButtonWidget (primary, 
progressive)\u200E',
+                               align: 'top'
+                       }
+               ),
+               new OO.ui.FieldLayout(
+                       new OO.ui.ButtonWidget( {
+                               label: 'Primary constructive',
+                               flags: [ 'primary', 'constructive' ]
+                       } ),
+                       {
+                               label: 'ButtonWidget (primary, 
constructive)\u200E',
+                               align: 'top'
+                       }
+               ),
+               new OO.ui.FieldLayout(
+                       new OO.ui.ButtonWidget( {
+                               label: 'Primary destructive',
+                               flags: [ 'primary', 'destructive' ]
+                       } ),
+                       {
+                               label: 'ButtonWidget (primary, 
destructive)\u200E',
                                align: 'top'
                        }
                ),
@@ -177,10 +207,10 @@
                        new OO.ui.ButtonWidget( {
                                label: 'Icon',
                                icon: 'picture',
-                               flags: [ 'primary' ]
+                               flags: [ 'progressive' ]
                        } ),
                        {
-                               label: 'ButtonWidget (icon, 
constructive)\u200E',
+                               label: 'ButtonWidget (icon, progressive)\u200E',
                                align: 'top'
                        }
                ),
@@ -230,12 +260,12 @@
                new OO.ui.FieldLayout(
                        new OO.ui.ButtonWidget( {
                                framed: false,
-                               flags: [ 'primary' ],
+                               flags: [ 'progressive' ],
                                icon: 'check',
-                               label: 'Primary'
+                               label: 'Progressive'
                        } ),
                        {
-                               label: 'ButtonWidget (frameless, 
primary)\u200E',
+                               label: 'ButtonWidget (frameless, 
progressive)\u200E',
                                align: 'top'
                        }
                ),
@@ -387,7 +417,7 @@
                                        new OO.ui.ButtonWidget( { icon: 
'picture', indicator: 'down' } ),
                                        new OO.ui.ToggleButtonWidget( {
                                                label: 'One',
-                                               flags: [ 'primary' ]
+                                               flags: [ 'progressive' ]
                                        } ),
                                        new OO.ui.ToggleButtonWidget( {
                                                label: 'Two',
@@ -415,7 +445,7 @@
                                        new OO.ui.ButtonOptionWidget( {
                                                data: 'b',
                                                label: 'One',
-                                               flags: [ 'primary' ]
+                                               flags: [ 'progressive' ]
                                        } ),
                                        new OO.ui.ButtonOptionWidget( {
                                                data: 'c',
diff --git a/demos/widgets.php b/demos/widgets.php
index 1217289..b29554f 100644
--- a/demos/widgets.php
+++ b/demos/widgets.php
@@ -52,13 +52,22 @@
                                $styles = array(
                                        array(),
                                        array(
-                                               'flags' => array( 'primary' ),
+                                               'flags' => array( 'progressive' 
),
                                        ),
                                        array(
                                                'flags' => array( 
'constructive' ),
                                        ),
                                        array(
                                                'flags' => array( 'destructive' 
),
+                                       ),
+                                       array(
+                                               'flags' => array( 'primary', 
'progressive' ),
+                                       ),
+                                       array(
+                                               'flags' => array( 'primary', 
'constructive' ),
+                                       ),
+                                       array(
+                                               'flags' => array( 'primary', 
'destructive' ),
                                        ),
                                );
                                $states = array(
@@ -116,10 +125,10 @@
                                        array(
                                                // Determined empirically
                                                'widths' => array( 83, 108, 
127, 58, 52, 77, 83, 58, 42 ),
-                                               'heights' => array( 1, 1, 1, 1 
),
+                                               'heights' => array( 1, 1, 1, 1, 
1, 1, 1 ),
                                        )
                                );
-                               $grid->setAttributes( array( 'style' => 
'height: 12em; position: relative;' ) );
+                               $grid->setAttributes( array( 'style' => 
'height: 24em; position: relative;' ) );
 
                                echo new OOUI\FieldsetLayout( array(
                                        'label' => 'Regular buttons',
@@ -165,7 +174,7 @@
                                                                        ) ),
                                                                        new 
OOUI\ButtonWidget( array(
                                                                                
'label' => 'One',
-                                                                               
'flags' => array( 'primary' ),
+                                                                               
'flags' => array( 'progressive' ),
                                                                        ) ),
                                                                        new 
OOUI\ButtonWidget( array(
                                                                                
'label' => 'Two',
@@ -231,7 +240,7 @@
                                                                        'name' 
=> 'login',
                                                                        'label' 
=> 'Log in',
                                                                        'type' 
=> 'submit',
-                                                                       'flags' 
=> 'primary',
+                                                                       'flags' 
=> [ 'primary', 'progressive' ],
                                                                        'icon' 
=> 'check',
                                                                ) ),
                                                                array(
diff --git a/php/elements/FlaggedElement.php b/php/elements/FlaggedElement.php
index 0cddd65..7d2fae8 100644
--- a/php/elements/FlaggedElement.php
+++ b/php/elements/FlaggedElement.php
@@ -21,8 +21,8 @@
        /**
         * @param Element $element Element being mixed into
         * @param array $config Configuration options
-        * @param string|string[] $config['flags'] Styling flags, e.g. 
'primary', 'destructive' or
-        *   'constructive'
+        * @param string|string[] $config['flags'] Flags describing importance 
and functionality, e.g.
+        *   'primary', 'safe', 'progressive', 'destructive' or 'constructive'
         */
        public function __construct( Element $element, array $config = array() 
) {
                // Parent constructor
diff --git a/php/themes/MediaWikiTheme.php b/php/themes/MediaWikiTheme.php
index 54ff8af..8fd501f 100644
--- a/php/themes/MediaWikiTheme.php
+++ b/php/themes/MediaWikiTheme.php
@@ -9,7 +9,7 @@
        public function getElementClasses( Element $element ) {
                $variants = array(
                        'invert' => false,
-                       'primary' => false,
+                       'progressive' => false,
                        'constructive' => false,
                        'destructive' => false
                );
@@ -18,16 +18,14 @@
                $classes = parent::getElementClasses( $element );
 
                if ( $element->supports( array( 'isFramed', 'isDisabled', 
'hasFlag' ) ) ) {
-                       if ( $element->isFramed() && !$element->isDisabled() ) {
-                               if (
-                                       $element->hasFlag( 'primary' ) ||
-                                       $element->hasFlag( 'constructive' ) ||
-                                       $element->hasFlag( 'destructive' )
-                               ) {
-                                       $variants['invert'] = true;
-                               }
+                       if (
+                               !$element->isDisabled() &&
+                               $element->isFramed() &&
+                               $element->hasFlag( 'primary' )
+                       ) {
+                               $variants['invert'] = true;
                        } else {
-                               $variants['primary'] = $element->hasFlag( 
'primary' );
+                               $variants['progressive'] = $element->hasFlag( 
'progressive' );
                                $variants['constructive'] = $element->hasFlag( 
'constructive' );
                                $variants['destructive'] = $element->hasFlag( 
'destructive' );
                        }
diff --git a/src/elements/FlaggedElement.js b/src/elements/FlaggedElement.js
index f86b9c8..4bafa62 100644
--- a/src/elements/FlaggedElement.js
+++ b/src/elements/FlaggedElement.js
@@ -9,7 +9,8 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string|string[]} [flags] Styling flags, e.g. 'primary', 'destructive' 
or 'constructive'
+ * @cfg {string|string[]} [flags] Flags describing importance and 
functionality, e.g. 'primary',
+ *   'safe', 'progressive', 'destructive' or 'constructive'
  * @cfg {jQuery} [$flagged] Flagged node, assigned to #$flagged, omit to use 
#$element
  */
 OO.ui.FlaggedElement = function OoUiFlaggedElement( config ) {
diff --git a/src/themes/apex/common.less b/src/themes/apex/common.less
index db2a971..6cca9fa 100644
--- a/src/themes/apex/common.less
+++ b/src/themes/apex/common.less
@@ -3,14 +3,14 @@
 
 // Theme variables
 
-@primary: #087ecc;
+@progressive: #087ecc;
 @constructive: #76ab36;
 @destructive: #d45353;
 
-@primary-gradient-start: #eaf4fa;
-@primary-gradient-end: #b0d9ee;
-@primary-border: #a6cee1;
-@primary-border-selected: #9dc2d4;
+@progressive-gradient-start: #eaf4fa;
+@progressive-gradient-end: #b0d9ee;
+@progressive-border: #a6cee1;
+@progressive-border-selected: #9dc2d4;
 
 @constructive-gradient-start: #f0fbe1;
 @constructive-gradient-end: #c3e59a;
diff --git a/src/themes/apex/elements.less b/src/themes/apex/elements.less
index be7993f..3605c68 100644
--- a/src/themes/apex/elements.less
+++ b/src/themes/apex/elements.less
@@ -59,8 +59,8 @@
                }
 
                &.oo-ui-flaggedElement {
-                       &-primary > .oo-ui-buttonElement-button > 
.oo-ui-labelElement-label {
-                               color: @primary;
+                       &-progressive > .oo-ui-buttonElement-button > 
.oo-ui-labelElement-label {
+                               color: @progressive;
                        }
 
                        &-constructive > .oo-ui-buttonElement-button > 
.oo-ui-labelElement-label {
@@ -127,22 +127,22 @@
                }
 
                &.oo-ui-flaggedElement {
-                       &-primary {
+                       &-progressive {
                                > .oo-ui-buttonElement-button {
-                                       border: solid 1px @primary-border;
-                                       
.oo-ui-vertical-gradient(@primary-gradient-start, @primary-gradient-end);
+                                       border: solid 1px @progressive-border;
+                                       
.oo-ui-vertical-gradient(@progressive-gradient-start, 
@progressive-gradient-end);
 
                                        &:hover,
                                        &:focus {
-                                               border-color: 
@primary-border-selected;
+                                               border-color: 
@progressive-border-selected;
                                        }
                                }
 
                                &.oo-ui-widget-enabled > 
.oo-ui-buttonElement-button:active,
                                &.oo-ui-buttonElement-active > 
.oo-ui-buttonElement-button,
                                &.oo-ui-buttonElement-pressed > 
.oo-ui-buttonElement-button {
-                                       border: solid 1px @primary-border;
-                                       
.oo-ui-vertical-gradient(@primary-gradient-end, @primary-gradient-start);
+                                       border: solid 1px @progressive-border;
+                                       
.oo-ui-vertical-gradient(@progressive-gradient-end, 
@progressive-gradient-start);
                                }
                        }
 
diff --git a/src/themes/apex/widgets.less b/src/themes/apex/widgets.less
index a0ffbbf..ac23f78 100644
--- a/src/themes/apex/widgets.less
+++ b/src/themes/apex/widgets.less
@@ -630,22 +630,22 @@
 
 .theme-oo-ui-progressBarWidget () {
        max-width: 50em;
-       border: solid 1px @primary-border;
+       border: solid 1px @progressive-border;
        border-radius: 0.25em;
        overflow: hidden;
 
        &-bar {
                height: 1em;
-               border-right: solid 1px @primary-border;
+               border-right: solid 1px @progressive-border;
                .oo-ui-transition(width 200ms, margin-left 200ms);
-               .oo-ui-vertical-gradient(@primary-gradient-start, 
@primary-gradient-end);
+               .oo-ui-vertical-gradient(@progressive-gradient-start, 
@progressive-gradient-end);
        }
        &-indeterminate {
                .oo-ui-progressBarWidget-bar {
                        .oo-ui-animation(oo-ui-progressBarWidget-slide 2s 
infinite linear);
                        width: 40%;
                        margin-left: -10%;
-                       border-left: solid 1px @primary-border;
+                       border-left: solid 1px @progressive-border;
                }
        }
        &.oo-ui-widget-disabled {
diff --git a/src/themes/apex/windows.less b/src/themes/apex/windows.less
index b9d54b3..9c19d83 100644
--- a/src/themes/apex/windows.less
+++ b/src/themes/apex/windows.less
@@ -87,7 +87,7 @@
                        }
 
                        &.oo-ui-flaggedElement {
-                               &-primary {
+                               &-progressive {
                                        &:hover {
                                                background-color: 
rgba(8,126,204,0.05);
                                        }
@@ -207,7 +207,7 @@
                                }
 
                                &.oo-ui-flaggedElement {
-                                       &-primary {
+                                       &-progressive {
                                                &:hover {
                                                        background-color: 
rgba(8,126,204,0.05);
                                                }
diff --git a/src/themes/mediawiki/MediaWikiTheme.js 
b/src/themes/mediawiki/MediaWikiTheme.js
index 31a7d34..c257f59 100644
--- a/src/themes/mediawiki/MediaWikiTheme.js
+++ b/src/themes/mediawiki/MediaWikiTheme.js
@@ -23,7 +23,7 @@
        var variant,
                variants = {
                        invert: false,
-                       primary: false,
+                       progressive: false,
                        constructive: false,
                        destructive: false
                },
@@ -31,16 +31,10 @@
                classes = 
OO.ui.MediaWikiTheme.super.prototype.getElementClasses.call( this, element );
 
        if ( element.supports( [ 'isFramed', 'isDisabled', 'hasFlag' ] ) ) {
-               if ( element.isFramed() && !element.isDisabled() ) {
-                       if (
-                               element.hasFlag( 'primary' ) ||
-                               element.hasFlag( 'constructive' ) ||
-                               element.hasFlag( 'destructive' )
-                       ) {
-                               variants.invert = true;
-                       }
+               if ( !element.isDisabled() && element.isFramed() && 
element.hasFlag( 'primary' ) ) {
+                       variants.invert = true;
                } else {
-                       variants.primary = element.hasFlag( 'primary' );
+                       variants.progressive = element.hasFlag( 'progressive' );
                        variants.constructive = element.hasFlag( 'constructive' 
);
                        variants.destructive = element.hasFlag( 'destructive' );
                }
diff --git a/src/themes/mediawiki/common.less b/src/themes/mediawiki/common.less
index 65f5acb..2a292f6 100644
--- a/src/themes/mediawiki/common.less
+++ b/src/themes/mediawiki/common.less
@@ -3,18 +3,18 @@
 
 // Theme variables
 
-@primary: #598ad1;
+@progressive: #598ad1;
 @constructive: #00c697;
 @destructive: #e81915;
 
-@primary-selected: #015ccc;
+@progressive-selected: #015ccc;
 @constructive-selected: #008c6d;
 @destructive-selected: #a7170f;
 
 @background: #ffffff;
 
 @disabled-percentage: 20%;
-@disabled-primary: darken( @primary, @disabled-percentage );
+@disabled-progressive: darken( @progressive, @disabled-percentage );
 @disabled-constructive: darken( @constructive, @disabled-percentage );
 @disabled-destructive: darken( @destructive, @disabled-percentage );
 
@@ -24,8 +24,8 @@
 
 @disabled-button-border: solid 1px #cdcdcd;
 
-@primary-fill: #0274ff;
-@primary-fill-selected: #015ccc;
+@progressive-fill: #0274ff;
+@progressive-fill-selected: #015ccc;
 
 @constructive-fill: #00Af89;
 @constructive-fill-selected: #008c6d;
diff --git a/src/themes/mediawiki/elements.less 
b/src/themes/mediawiki/elements.less
index ed988bc..2a4a397 100644
--- a/src/themes/mediawiki/elements.less
+++ b/src/themes/mediawiki/elements.less
@@ -63,8 +63,8 @@
                        }
 
                        &.oo-ui-flaggedElement {
-                               &-primary {
-                                       
.mediawiki-frameless-button-colored(@primary, @primary-selected);
+                               &-progressive {
+                                       
.mediawiki-frameless-button-colored(@progressive, @progressive-selected);
                                }
 
                                &-constructive {
@@ -141,8 +141,8 @@
                        }
 
                        &.oo-ui-flaggedElement {
-                               &-primary {
-                                       
.mediawiki-framed-button-colored(@primary-fill, @primary-fill-selected);
+                               &-progressive {
+                                       
.mediawiki-framed-button-colored(@progressive-fill, @progressive-fill-selected);
                                }
 
                                &-constructive {
@@ -151,6 +151,19 @@
 
                                &-destructive {
                                        
.mediawiki-framed-button-colored(@destructive-fill, @destructive-fill-selected);
+                               }
+                       }
+                       &.oo-ui-flaggedElement-primary.oo-ui-flaggedElement {
+                               &-progressive {
+                                       
.mediawiki-framed-primary-button-colored(@progressive-fill, 
@progressive-fill-selected);
+                               }
+
+                               &-constructive {
+                                       
.mediawiki-framed-primary-button-colored(@constructive-fill, 
@constructive-fill-selected);
+                               }
+
+                               &-destructive {
+                                       
.mediawiki-framed-primary-button-colored(@destructive-fill, 
@destructive-fill-selected);
                                }
                        }
                }
@@ -182,6 +195,18 @@
 
 .mediawiki-framed-button-colored( @neutral, @active ) {
        > .oo-ui-buttonElement-button {
+               color: @neutral;
+
+               &:hover,
+               &:focus {
+                       box-shadow: inset 0 -0.2em 0 0 @active, 0 0.1em 0 0 
rgba(0,0,0,0.1);
+                       border-bottom-color: @active;
+               }
+       }
+}
+
+.mediawiki-framed-primary-button-colored( @neutral, @active ) {
+       > .oo-ui-buttonElement-button {
                text-shadow: 1px 1px 0 rgba(0,0,0,0.2);
                color: @background;
                background-color: @neutral;
diff --git a/src/themes/mediawiki/images.json b/src/themes/mediawiki/images.json
index 5be0929..b528946 100644
--- a/src/themes/mediawiki/images.json
+++ b/src/themes/mediawiki/images.json
@@ -5,7 +5,7 @@
                                "color": "#FFFFFF",
                                "global": true
                        },
-                       "primary": {
+                       "progressive": {
                                "color": "#598AD1"
                        },
                        "constructive": {
diff --git a/src/themes/mediawiki/widgets.less 
b/src/themes/mediawiki/widgets.less
index e6f2f40..6adf643 100644
--- a/src/themes/mediawiki/widgets.less
+++ b/src/themes/mediawiki/widgets.less
@@ -228,7 +228,7 @@
                background-color: #fff;
                color: black;
                border: solid 1px #ccc;
-               box-shadow: inset 0 0 0 0 @primary-fill;
+               box-shadow: inset 0 0 0 0 @progressive-fill;
                border-radius: 0.1em;
                .oo-ui-transition(box-shadow 0.1s);
                .oo-ui-box-sizing(border-box);
@@ -250,7 +250,7 @@
                textarea:focus {
                        outline: none;
                        border-color: #aaa;
-                       box-shadow: inset 0.4em 0 0 0 @primary-fill;
+                       box-shadow: inset 0.4em 0 0 0 @progressive-fill;
                }
 
                input[readonly],
@@ -648,13 +648,13 @@
 
 .theme-oo-ui-progressBarWidget () {
        max-width: 50em;
-       border: solid 1px @primary-fill;
+       border: solid 1px @progressive-fill;
        border-radius: 0.1em;
        overflow: hidden;
 
        &-bar {
                height: 1em;
-               background: @primary-fill;
+               background: @progressive-fill;
                .oo-ui-transition(width 200ms, margin-left 200ms);
        }
        &-indeterminate {
diff --git a/src/themes/mediawiki/windows.less 
b/src/themes/mediawiki/windows.less
index a374fb9..8e2742c 100644
--- a/src/themes/mediawiki/windows.less
+++ b/src/themes/mediawiki/windows.less
@@ -80,7 +80,7 @@
                        }
 
                        &.oo-ui-flaggedElement {
-                               &-primary {
+                               &-progressive {
                                        &:hover {
                                                background-color: 
rgba(8,126,204,0.05);
                                        }
@@ -200,7 +200,7 @@
                                }
 
                                &.oo-ui-flaggedElement {
-                                       &-primary {
+                                       &-progressive {
                                                &:hover {
                                                        background-color: 
rgba(8,126,204,0.05);
                                                }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iee91d2c695f7fef3f78a2d44f05b431dbe30615d
Gerrit-PatchSet: 1
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: Trevor Parscal <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to