jenkins-bot has submitted this change and it was merged.
Change subject: Added .focus() to $.ui.TemplatedWidget and child widgets
......................................................................
Added .focus() to $.ui.TemplatedWidget and child widgets
Enforces consistency across $.ui.TemplatedWidget widgets.
Change-Id: I97583a451fd9e8148fd37689cb5bec60b81616bf
---
M lib/resources/jquery.ui/jquery.ui.TemplatedWidget.js
M lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
M lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
M lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.claimlistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
M lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
M lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
M lib/resources/jquery.wikibase/jquery.wikibase.listview.js
M lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
M lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgrouplistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
M lib/resources/jquery.wikibase/jquery.wikibase.sitelinklistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.sitelinkview.js
M lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.statementview.RankSelector.js
M lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
M lib/resources/jquery.wikibase/snakview/snakview.js
M lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
M lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.edittoolbar.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.movetoolbar.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.singlebuttontoolbar.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbarbutton.js
M lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbaritem.js
30 files changed, 265 insertions(+), 25 deletions(-)
Approvals:
Thiemo Mättig (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/resources/jquery.ui/jquery.ui.TemplatedWidget.js
b/lib/resources/jquery.ui/jquery.ui.TemplatedWidget.js
index 939994c..c4974c0 100644
--- a/lib/resources/jquery.ui/jquery.ui.TemplatedWidget.js
+++ b/lib/resources/jquery.ui/jquery.ui.TemplatedWidget.js
@@ -151,6 +151,13 @@
}
return response;
+ },
+
+ /**
+ * Applies focus to the widget.
+ */
+ focus: function() {
+ this.element.focus();
}
} );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
index 869a271..81abffa 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
@@ -373,11 +373,13 @@
},
/**
- * Puts Keyboard focus on the widget.
+ * @see jQuery.ui.TemplatedWidget.focus
*/
focus: function() {
if( this._isInEditMode ) {
this.$list.data( 'tagadata' ).getHelperTag().find(
'input' ).focus();
+ } else {
+ this.element.focus();
}
}
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
b/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
index d282541..1d06b7d 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
@@ -5,7 +5,7 @@
( function( wb, $, mw ) {
'use strict';
-var PARENT = $.TemplatedWidget;
+var PARENT = $.ui.TemplatedWidget;
/**
* References one single $menu instance that is reused for all badgeselector
instances.
@@ -22,6 +22,7 @@
/**
* Selector for toggling badges.
* @since 0.5
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {string[]} [value]
* Item ids of badges currently assigned.
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
index 7696c06..fd78b56 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
@@ -5,12 +5,12 @@
( function( wb, $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying claim groups (claimlistviews).
* @since 0.5
- * @extends jQuery.TemplatedWidget
+ * @extends jQuery.ui.TemplatedWidget
*
* @option
{wikibase.datamodel.ClaimGroupSet|{wikibase.datamodel.StatementGroupSet} [value]
* The claims to be displayed by this view. If null, the view will
display only an add
@@ -365,6 +365,20 @@
}
return response;
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ var listview = this.listview(),
+ $items = listview.items();
+
+ if( $items.length ) {
+ listview.listItemAdapter().liInstance( $items.first()
).focus();
+ } else {
+ this.element.focus();
+ }
}
} );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.claimlistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.claimlistview.js
index dd5b7e3..2cbab2c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.claimlistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.claimlistview.js
@@ -5,12 +5,12 @@
( function( mw, wb, $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing a list of statements
(wb.datamodel.Statement objects).
* @since 0.4
- * @extends jQuery.TemplatedWidget
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {wikibase.datamodel.ClaimGroup|wikibase.datamodel.StatementGroup}
[value]
* The list of statements to be displayed by this view. If null, the
view will initialize an
@@ -389,6 +389,20 @@
}
return response;
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ var listview = this.listview(),
+ $items = listview.items();
+
+ if( $items.length ) {
+ listview.listItemAdapter().liInstance( $items.first()
).focus();
+ } else {
+ this.element.focus();
+ }
}
} );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
index 95f2188..75cda6d 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
@@ -7,11 +7,12 @@
( function( mw, wb, $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing Wikibase Claims.
* @since 0.3
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {wb.datamodel.Claim|null} value The claim displayed by this view.
This can only be set initially,
* the value function doesn't work as a setter in this view. If this
is null, this view will
@@ -692,6 +693,13 @@
}
return response;
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ this.$mainSnak.data( 'snakview' ).focus();
}
} );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
index cb16fa7..a2ea587 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
@@ -337,11 +337,13 @@
},
/**
- * Puts Keyboard focus on the widget.
+ * @see jQuery.ui.TemplatedWidget.focus
*/
focus: function() {
if( this._isInEditMode ) {
this.$text.children( 'input' ).focus();
+ } else {
+ this.element.focus();
}
}
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
index c4a1707..6a9ad48 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -432,6 +432,13 @@
.removeClass( 'tocsection-' + i )
.addClass( 'tocsection-' + ( i + 1 ) );
} );
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ this.$label.data( 'labelview' ).focus();
}
} );
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
index 5c4c653..a0e0177 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
@@ -232,6 +232,9 @@
this.stopEditing( true );
},
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
focus: function() {
this.$fingerprintlistview.data( 'fingerprintlistview' ).focus();
},
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
index a1a580e..0854026 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
@@ -312,13 +312,17 @@
this.stopEditing( true );
},
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
focus: function() {
var listview = this.element.data( 'listview' ),
- lia = listview.listItemAdapter(),
$items = listview.items();
if( $items.length ) {
- lia.liInstance( $items.first() ).focus();
+ listview.listItemAdapter().liInstance( $items.first()
).focus();
+ } else {
+ this.element.focus();
}
},
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
index fb0425b..da33b4e 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
@@ -426,7 +426,7 @@
},
/**
- * Sets keyboard focus on the first input element.
+ * @see jQuery.ui.TemplatedWidget.focus
*/
focus: function() {
this.$labelview.data( 'labelview' ).focus();
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
index 0e4825f..7aef2aa 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
@@ -349,11 +349,13 @@
},
/**
- * Puts Keyboard focus on the widget.
+ * @see jQuery.ui.TemplatedWidget.focus
*/
focus: function() {
if( this._isInEditMode ) {
this.$text.children( 'input' ).focus();
+ } else {
+ this.element.focus();
}
}
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
index f5b0d86..d7288ab 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
@@ -7,11 +7,12 @@
( function( $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing several list items, each represented by
another widget.
* @since 0.4
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {*|null} value The values displayed by this view. Each value is
represented by a widget
* defined in the 'listItemAdapter' option.
@@ -397,6 +398,23 @@
enterNewItem: function() {
var $newLi = this.addItem();
this._trigger( 'enternewitem', null, [ $newLi ] );
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ var $items = this.items();
+
+ if( $items.length ) {
+ var item = this.listItemAdapter().liInstance(
$items.first() );
+ if( item.focus ) {
+ item.focus();
+ return;
+ }
+ }
+
+ this.element.focus();
}
} );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
index 3ead314..57ecc33 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
@@ -6,10 +6,12 @@
( function( mw, wb, $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing Wikibase Statements.
+ * @since 0.4
+ * @extends jQuery.ui.TemplatedWidget
*
* @option statementGuid {string} (REQUIRED) The GUID of the statement the
reference belongs to.
*
@@ -53,9 +55,6 @@
* (1) {jQuery.Event} event
* (2) {wb.RepoApiError|undefined} wb.RepoApiError object if an error
occurred, undefined if
* the current error state is resolved.
- *
- * @since 0.4
- * @extends jQuery.TemplatedWidget
*/
$.widget( 'wikibase.referenceview', PARENT, {
/**
@@ -586,6 +585,19 @@
}
return response;
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ var $items = this._listview.items();
+
+ if( $items.length ) {
+ this._listview.listItemAdapter().liInstance(
$items.first() ).focus();
+ } else {
+ this.element.focus();
+ }
}
} );
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgrouplistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgrouplistview.js
index 1995f5c..1f6eeec 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgrouplistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgrouplistview.js
@@ -10,7 +10,7 @@
/**
* Encapsulates multiple sitelinkgroupview widgets.
* @since 0.5
- * @extends jQuery.TemplatedWidget
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {Object[]} value
* Array of objects representing the widget's value.
@@ -105,6 +105,20 @@
}
return response;
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ var listview = this.$listview.data( 'listview' ),
+ $items = listview.items();
+
+ if( $items.length ) {
+ listview.listItemAdapter().liInstance( $items.first()
).focus();
+ } else {
+ this.element.focus();
+ }
}
} );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
index c891ec5..a02979b 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
@@ -269,6 +269,9 @@
this.stopEditing( true );
},
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
focus: function() {
this.$sitelinklistview.data( 'sitelinklistview' ).focus();
},
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinklistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinklistview.js
index 704a861..c285bba 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinklistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinklistview.js
@@ -10,7 +10,7 @@
/**
* Displays and allows editing multiple site links.
* @since 0.5
- * @extends jQuery.TemplatedWidget
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {wikibase.datamodel.SiteLink[]} [value]
* Default: []
@@ -632,6 +632,9 @@
this.stopEditing( true );
},
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
focus: function() {
// Focus first invalid/incomplete item or - if there is none -
the first item.
var listview = this.$listview.data( 'listview' ),
@@ -639,6 +642,7 @@
$items = listview.items();
if( !$items.length ) {
+ this.element.focus();
return;
}
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkview.js
index 2640d02..c8e2a43 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkview.js
@@ -465,7 +465,7 @@
},
/**
- * Sets keyboard focus on the first input element.
+ * @see jQuery.ui.TemplatedWidget.focus
*/
focus: function() {
var $siteselector = this.element.find( ':wikibase-siteselector'
),
@@ -478,6 +478,8 @@
$pagesuggester.focus();
} else if( $siteselector.length ) {
$siteselector.focus();
+ } else {
+ this.element.focus();
}
},
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js
index 9b85eae..e39b6fb 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js
@@ -7,11 +7,12 @@
( function( mw, wb, $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing a list of snaks (wb.datamodel.Snak objects).
* @since 0.4
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {wb.datamodel.SnakList|null} value The list of snaks displayed by
this view. This should only be
* set initially. If this is null, the view will start edit mode upon
initialization.
@@ -465,6 +466,19 @@
},
/**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ var $items = this._listview.items();
+
+ if( $items.length ) {
+ this._listview.listItemAdapter().liInstance(
$items.first() ).focus();
+ } else {
+ this.element.focus();
+ }
+ },
+
+ /**
* Moves a snak within the snak list.
* @since 0.4
*
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.statementview.RankSelector.js
b/lib/resources/jquery.wikibase/jquery.wikibase.statementview.RankSelector.js
index 272bafc..0e5068d 100644
---
a/lib/resources/jquery.wikibase/jquery.wikibase.statementview.RankSelector.js
+++
b/lib/resources/jquery.wikibase/jquery.wikibase.statementview.RankSelector.js
@@ -5,7 +5,7 @@
( function( mw, wb, $, util ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* The node of the rank selector menu to select a rank from.
@@ -16,6 +16,7 @@
/**
* Selector for choosing a statement rank.
* @since 0.5
+ * @extends jQuery.ui.TemplatedWidget
*
* @option [rank] {boolean} The rank that shall be selected.
* Default: wb.datamodel.Statement.RANK.NORMAL
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
index dbfd8b6..ee61459 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
@@ -7,11 +7,12 @@
( function( mw, wb, $ ) {
'use strict';
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing Wikibase Statements.
* @since 0.4
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {wikibase.datamodel.Statement|null} [value]
* The statement displayed by this view. This can only be set
initially, the value function
@@ -672,6 +673,13 @@
}
return true;
+ },
+
+ /**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ this._claimview.focus();
}
} );
diff --git a/lib/resources/jquery.wikibase/snakview/snakview.js
b/lib/resources/jquery.wikibase/snakview/snakview.js
index 3badefd..9e700e5 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.js
@@ -14,11 +14,12 @@
// Erase existing object to prevent jQuery.Widget detecting an existing
constructor:
delete $.wikibase.snakview;
- var PARENT = $.TemplatedWidget;
+ var PARENT = $.ui.TemplatedWidget;
/**
* View for displaying and editing Wikibase Snaks.
* @since 0.3
+ * @extends jQuery.ui.TemplatedWidget
*
* @option {Object|wb.datamodel.Snak|null} value The snak this view should
represent initially. If omitted,
* an empty view will be served, ready to take some input by the user.
The value can also be
@@ -342,6 +343,22 @@
} ),
/**
+ * @see jQuery.ui.TemplatedWidget.focus
+ */
+ focus: function() {
+ if( this._variation && this._variation.isFocusable() ) {
+ this._variation.focus();
+ } else {
+ var propertySelector = this._getPropertySelector();
+ if( propertySelector ) {
+ propertySelector.element.focus();
+ } else {
+ this.element.focus();
+ }
+ }
+ },
+
+ /**
* Ends the edit mode where the snak can be edited.
* @since 0.3
*
diff --git
a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
index 585a776..cc9d5d0 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
@@ -346,6 +346,13 @@
return true;
},
+ /*
+ * @see
jQuery.wikibase.snakview.variations.Variation.isFocusable
+ */
+ isFocusable: function() {
+ return true;
+ },
+
/**
* @see jQuery.wikibase.snakview.variations.Variation.focus
*/
diff --git
a/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
b/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
index 0a021f8..20f0bdc 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
@@ -191,6 +191,15 @@
stopEditing: function( dropValue ) {},
/**
+ * @since 0.5
+ *
+ * @return {boolean}
+ */
+ isFocusable: function() {
+ return false;
+ },
+
+ /**
* Will set the focus if there is some focusable input object.
*
* @since 0.4
diff --git
a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.edittoolbar.js
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.edittoolbar.js
index 9b0582b..08ddcce 100644
--- a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.edittoolbar.js
+++ b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.edittoolbar.js
@@ -481,6 +481,33 @@
}
return response;
+ },
+
+ /**
+ * @see jQuery.wikibase.toolbar.focus
+ */
+ focus: function() {
+ if( this._isInEditMode() ) {
+ var btnSave = this._buttons.save &&
this._buttons.save.data( 'toolbarbutton' ),
+ btnCancel = this._buttons.cancel &&
this._buttons.cancel.data( 'toolbarbutton' );
+
+ if( btnSave && !btnSave.option( 'disabled' ) ) {
+ btnSave.focus();
+ return;
+ } else if( btnCancel && btnCancel.option( 'disabled' )
) {
+ btnCancel.focus();
+ return;
+ }
+ } else {
+ var btnEdit = this._buttons.edit &&
this._buttons.edit.data( 'toolbarbutton' );
+
+ if( btnEdit && !btnEdit.option( 'disabled' ) ) {
+ btnEdit.focus();
+ return;
+ }
+ }
+
+ this.element.focus();
}
} );
diff --git
a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.movetoolbar.js
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.movetoolbar.js
index 3a980a5..80f4627 100644
--- a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.movetoolbar.js
+++ b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.movetoolbar.js
@@ -76,6 +76,22 @@
*/
getButton: function( buttonName ) {
return this._buttons[buttonName].data( 'toolbarbutton' );
+ },
+
+ /**
+ * @see jQuery.wikibase.toolbar.focus
+ */
+ focus: function() {
+ var buttonUp = this._buttons.up && this._buttons.up.data(
'toolbarbutton' ),
+ buttonDown = this._buttons.down &&
this._buttons.down.data( 'toolbarbutton' );
+
+ if( buttonUp && !buttonUp.option( 'disabled' ) ) {
+ buttonUp.focus();
+ } else if( buttonDown && !buttonDown.option( 'disabled' ) ) {
+ buttonDown.focus();
+ } else {
+ this.element.focus();
+ }
}
} );
diff --git
a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.singlebuttontoolbar.js
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.singlebuttontoolbar.js
index 6746904..794ca41 100644
---
a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.singlebuttontoolbar.js
+++
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.singlebuttontoolbar.js
@@ -89,10 +89,15 @@
return $defaultButton;
},
+ /**
+ * @see jQuery.wikibase.toolbaritem.focus
+ */
focus: function() {
var button = this.options.$content.first().data(
'toolbarbutton' );
if( button ) {
button.focus();
+ } else {
+ this.element.focus();
}
}
} );
diff --git a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
index 441cc23..8ddf7c1 100644
--- a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
+++ b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbar.js
@@ -167,6 +167,22 @@
$.each( this._getItems(), function() {
this[state]();
} );
+ },
+
+ /**
+ * @see jQuery.wikibase.toolbaritem.focus
+ */
+ focus: function() {
+ var items = this._getItems();
+
+ for( var i = 0; i < items.length; i++ ) {
+ if( !items[i].option( 'disabled' ) ) {
+ items[i].focus();
+ return;
+ }
+ }
+
+ this.element.focus();
}
} );
diff --git
a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbarbutton.js
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbarbutton.js
index ae2ec89..45fe88d 100644
--- a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbarbutton.js
+++ b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbarbutton.js
@@ -101,6 +101,9 @@
: this.options.$label;
},
+ /**
+ * @see jQuery.wikibase.toolbaritem.focus
+ */
focus: function() {
this.$link.focus();
},
diff --git
a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbaritem.js
b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbaritem.js
index 17d8dac..ddba1e1 100644
--- a/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbaritem.js
+++ b/lib/resources/jquery.wikibase/toolbar/jquery.wikibase.toolbaritem.js
@@ -5,7 +5,7 @@
( function( $ ) {
'use strict';
-var PARENT = $.TemplatedWidget;
+var PARENT = $.ui.TemplatedWidget;
/**
* Represents a generic item to be wrapped by a jQuery.wikibase.toolbar.
--
To view, visit https://gerrit.wikimedia.org/r/171554
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I97583a451fd9e8148fd37689cb5bec60b81616bf
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits