mediawiki-extensions-Visual.../modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js
Timo Tijhof ee954cbdd5 Use String#slice instead of discouraged String#substr
Aside from the confusion and differences between substr() and
substring() and IE8 bugs with substr(), substr() was removed from
the spec as of ECMAScript 5. It's been standardised in the
optional Annex B section of ES5.

Change-Id: I221ef6ae6956ce20dd9bb74510500f747d04c3b1
2014-12-06 21:26:20 +00:00

61 lines
1.7 KiB
JavaScript

/*!
* VisualEditor UserInterface MWReferenceGroupInput class.
*
* @copyright 2011-2014 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* Creates an ve.ui.MWReferenceGroupInput object.
*
* @class
* @extends OO.ui.ComboBoxWidget
*
* @constructor
* @param {Object} [config] Configuration options
* @cfg {string} emptyGroupName Label of the placeholder item
*/
ve.ui.MWReferenceGroupInputWidget = function VeUiMWReferenceGroupInput( config ) {
config = config || {};
this.emptyGroupName = config.emptyGroupName;
// Parent constructor
OO.ui.ComboBoxWidget.call( this, $.extend( true, { input: { placeholder: config.emptyGroupName } }, config ) );
this.$element.addClass( 've-ui-mwReferenceGroupInputWidget' );
};
/* Inheritance */
OO.inheritClass( ve.ui.MWReferenceGroupInputWidget, OO.ui.ComboBoxWidget );
/* Methods */
/**
* Populate the reference group menu
*
* @param {ve.dm.InternalList} internalList Internal list with which to populate the menu
*/
ve.ui.MWReferenceGroupInputWidget.prototype.populateMenu = function ( internalList ) {
var placeholderGroupItem = new OO.ui.MenuOptionWidget( {
$: this.$,
data: '',
label: this.emptyGroupName,
flags: 'emptyGroupPlaceholder'
} );
this.menu.clearItems();
this.menu.addItems( [ placeholderGroupItem ].concat( $.map(
Object.keys( internalList.getNodeGroups() ),
function ( groupInternalName ) {
if ( groupInternalName.indexOf( 'mwReference/' ) === 0 ) {
var groupName = groupInternalName.slice( 'mwReference/'.length );
if ( groupName ) {
return new OO.ui.MenuOptionWidget( { data: groupName, label: groupName } );
}
}
}
) ), 0 );
this.menu.toggle( false );
};