summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Cite/modules/ve-cite/ve.ui.MWReferenceGroupInputWidget.js
diff options
context:
space:
mode:
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.js60
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 );
+};