diff options
Diffstat (limited to 'www/wiki/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js')
-rw-r--r-- | www/wiki/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/www/wiki/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js b/www/wiki/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js new file mode 100644 index 00000000..ebe72aa1 --- /dev/null +++ b/www/wiki/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js @@ -0,0 +1,60 @@ +/*! + * VisualEditor UserInterface MWReferenceGroupInput class. + * + * @copyright 2011-2018 VisualEditor Team's Cite sub-team and others; see AUTHORS.txt + * @license MIT + */ + +/** + * Creates an ve.ui.MWReferenceGroupInput object. + * + * @class + * @extends OO.ui.ComboBoxInputWidget + * + * @constructor + * @param {Object} [config] Configuration options + * @cfg {string} emptyGroupName Label of the placeholder item + */ +ve.ui.MWReferenceGroupInputWidget = function VeUiMWReferenceGroupInputWidget( config ) { + config = config || {}; + + this.emptyGroupName = config.emptyGroupName; + + // Parent constructor + ve.ui.MWReferenceGroupInputWidget.super.call( this, ve.extendObject( { placeholder: config.emptyGroupName }, config ) ); + + this.$element.addClass( 've-ui-mwReferenceGroupInputWidget' ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.ui.MWReferenceGroupInputWidget, OO.ui.ComboBoxInputWidget ); + +/* 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( { + data: '', + label: this.emptyGroupName, + flags: 'emptyGroupPlaceholder' + } ); + this.menu.clearItems(); + this.menu.addItems( [ placeholderGroupItem ].concat( $.map( + Object.keys( internalList.getNodeGroups() ), + function ( groupInternalName ) { + var groupName; + if ( groupInternalName.indexOf( 'mwReference/' ) === 0 ) { + groupName = groupInternalName.slice( 'mwReference/'.length ); + if ( groupName ) { + return new OO.ui.MenuOptionWidget( { data: groupName, label: groupName } ); + } + } + } + ) ), 0 ); + this.menu.toggle( false ); +}; |