]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / extensions / Cite / modules / ve-cite / ve.ui.MWReferenceGroupInputWidget.js
diff --git a/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js b/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js
new file mode 100644 (file)
index 0000000..63fe251
--- /dev/null
@@ -0,0 +1,60 @@
+/*!
+ * VisualEditor UserInterface MWReferenceGroupInput class.
+ *
+ * @copyright 2011-2017 Cite 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.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 );
+};