Jforrester has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/405543 )

Change subject: [WIP] doc: Convert from jsduck to JSDoc3
......................................................................

[WIP] doc: Convert from jsduck to JSDoc3

Bug: T185396
Change-Id: I65a7bbd8d0311c4537e06f89922f39b4d67f805e
---
M src/ActionSet.js
M src/Dialog.js
M src/Element.js
M src/Error.js
M src/Layout.js
M src/Tool.js
M src/ToolGroup.js
M src/Toolbar.js
M src/Widget.js
M src/Window.js
M src/WindowManager.js
M src/layouts/BookletLayout.js
M src/layouts/FieldLayout.js
M src/layouts/FieldsetLayout.js
M src/layouts/FormLayout.js
M src/layouts/HorizontalLayout.js
M src/layouts/IndexLayout.js
M src/layouts/MenuLayout.js
M src/layouts/PanelLayout.js
M src/layouts/StackLayout.js
M src/layouts/TabPanelLayout.js
M src/mixins/AccessKeyedElement.js
M src/mixins/ButtonElement.js
M src/mixins/ClippableElement.js
M src/mixins/DraggableElement.js
M src/mixins/DraggableGroupElement.js
M src/mixins/FlaggedElement.js
M src/mixins/FloatableElement.js
M src/mixins/GroupElement.js
M src/mixins/GroupWidget.js
M src/mixins/IconElement.js
M src/mixins/IndicatorElement.js
M src/mixins/ItemWidget.js
M src/mixins/LabelElement.js
M src/mixins/LookupElement.js
M src/mixins/PendingElement.js
M src/mixins/PopupElement.js
M src/mixins/RequestManager.js
M src/mixins/TabIndexedElement.js
M src/mixins/TitledElement.js
M src/toolgroups/ListToolGroup.js
M src/toolgroups/PopupToolGroup.js
M src/tools/PopupTool.js
M src/widgets/ActionWidget.js
M src/widgets/ButtonGroupWidget.js
M src/widgets/ButtonInputWidget.js
M src/widgets/ButtonOptionWidget.js
M src/widgets/ButtonSelectWidget.js
M src/widgets/ButtonWidget.js
M src/widgets/CapsuleItemWidget.js
M src/widgets/CapsuleMultiselectWidget.js
M src/widgets/CheckboxInputWidget.js
M src/widgets/CheckboxMultiselectInputWidget.js
M src/widgets/ComboBoxInputWidget.js
M src/widgets/DecoratedOptionWidget.js
M src/widgets/DropdownInputWidget.js
M src/widgets/DropdownWidget.js
M src/widgets/HiddenInputWidget.js
M src/widgets/IconWidget.js
M src/widgets/IndicatorWidget.js
M src/widgets/InputWidget.js
M src/widgets/LabelWidget.js
M src/widgets/MenuSelectWidget.js
M src/widgets/MenuTagMultiselectWidget.js
M src/widgets/MultilineTextInputWidget.js
M src/widgets/MultioptionWidget.js
M src/widgets/MultiselectWidget.js
M src/widgets/NumberInputWidget.js
M src/widgets/OptionWidget.js
M src/widgets/OutlineControlsWidget.js
M src/widgets/OutlineOptionWidget.js
M src/widgets/OutlineSelectWidget.js
M src/widgets/PopupButtonWidget.js
M src/widgets/PopupTagMultiselectWidget.js
M src/widgets/PopupWidget.js
M src/widgets/ProgressBarWidget.js
M src/widgets/RadioInputWidget.js
M src/widgets/RadioSelectInputWidget.js
M src/widgets/RadioSelectWidget.js
M src/widgets/SearchWidget.js
M src/widgets/SelectFileWidget.js
M src/widgets/SelectWidget.js
M src/widgets/TabSelectWidget.js
M src/widgets/TagItemWidget.js
M src/widgets/TagMultiselectWidget.js
M src/widgets/TextInputWidget.js
M src/widgets/ToggleButtonWidget.js
M src/widgets/ToggleSwitchWidget.js
M src/widgets/ToggleWidget.js
89 files changed, 368 insertions(+), 415 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/oojs/ui refs/changes/43/405543/1

diff --git a/src/ActionSet.js b/src/ActionSet.js
index bb7ea5a..ab58489 100644
--- a/src/ActionSet.js
+++ b/src/ActionSet.js
@@ -74,7 +74,7 @@
  *
  * @abstract
  * @class
- * @mixins OO.EventEmitter
+ * @mixes OO.EventEmitter
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -125,36 +125,33 @@
 /* Events */
 
 /**
- * @event click
- *
  * A 'click' event is emitted when an action is clicked.
  *
+ * @event click
  * @param {OO.ui.ActionWidget} action Action that was clicked
  */
 
 /**
- * @event add
- *
  * An 'add' event is emitted when actions are {@link #method-add added} to the 
action set.
  *
+ * @event add
  * @param {OO.ui.ActionWidget[]} added Actions added
  */
 
 /**
- * @event remove
- *
  * A 'remove' event is emitted when actions are {@link #method-remove removed}
  *  or {@link #clear cleared}.
  *
+ * @event remove
  * @param {OO.ui.ActionWidget[]} added Actions removed
  */
 
 /**
- * @event change
  *
  * A 'change' event is emitted when actions are {@link #method-add added}, 
{@link #clear cleared},
  * or {@link #method-remove removed} from the action set or when the {@link 
#setMode mode} is changed.
  *
+ * @event change
  */
 
 /* Methods */
diff --git a/src/Dialog.js b/src/Dialog.js
index 7ef81f8..71049b5 100644
--- a/src/Dialog.js
+++ b/src/Dialog.js
@@ -36,7 +36,7 @@
  * @abstract
  * @class
  * @extends OO.ui.Window
- * @mixins OO.ui.mixin.PendingElement
+ * @mixes OO.ui.mixin.PendingElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/Element.js b/src/Element.js
index abb91dc..fce5a18 100644
--- a/src/Element.js
+++ b/src/Element.js
@@ -8,18 +8,18 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string[]} [classes] The names of the CSS classes to apply to the 
element. CSS styles are added
+ * @param {string[]} [config.classes] The names of the CSS classes to apply to 
the element. CSS styles are added
  *  to the top level (e.g., the outermost div) of the element. See the [OOUI 
documentation on MediaWiki][2]
  *  for an example.
  *  [2]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Buttons_and_Switches#cssExample
- * @cfg {string} [id] The HTML id attribute used in the rendered tag.
- * @cfg {string} [text] Text to insert
- * @cfg {Array} [content] An array of content elements to append (after #text).
+ * @param {string} [config.id] The HTML id attribute used in the rendered tag.
+ * @param {string} [config.text] Text to insert
+ * @param {Array} [config.content] An array of content elements to append 
(after #text).
  *  Strings will be html-escaped; use an OO.ui.HtmlSnippet to append raw HTML.
  *  Instances of OO.ui.Element will have their $element appended.
- * @cfg {jQuery} [$content] Content elements to append (after #text).
- * @cfg {jQuery} [$element] Wrapper element. Defaults to a new element with 
#getTagName.
- * @cfg {Mixed} [data] Custom data of any type or combination of types (e.g., 
string, number, array, object).
+ * @param {jQuery} [config.$content] Content elements to append (after #text).
+ * @param {jQuery} [config.$element] Wrapper element. Defaults to a new 
element with #getTagName.
+ * @param {Mixed} [config.data] Custom data of any type or combination of 
types (e.g., string, number, array, object).
  *  Data can also be specified with the #setData method.
  */
 OO.ui.Element = function OoUiElement( config ) {
diff --git a/src/Error.js b/src/Error.js
index 7b085cd..51b7cb6 100644
--- a/src/Error.js
+++ b/src/Error.js
@@ -19,9 +19,9 @@
  * @constructor
  * @param {string|jQuery} message Description of error
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [recoverable=true] Error is recoverable.
+ * @param {boolean} [config.recoverable=true] Error is recoverable.
  *  By default, errors are recoverable, and users can try the process again.
- * @cfg {boolean} [warning=false] Error is a warning.
+ * @param {boolean} [config.warning=false] Error is a warning.
  *  If the error is a warning, the error interface will include a
  *  'Dismiss' and a 'Continue' button. It is the responsibility of the 
developer to ensure that the warning
  *  is not triggered a second time if the user chooses to continue.
diff --git a/src/Layout.js b/src/Layout.js
index e88e73a..e8f0fea 100644
--- a/src/Layout.js
+++ b/src/Layout.js
@@ -8,7 +8,7 @@
  * @abstract
  * @class
  * @extends OO.ui.Element
- * @mixins OO.EventEmitter
+ * @mixes OO.EventEmitter
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/Tool.js b/src/Tool.js
index be7d727..76f118c 100644
--- a/src/Tool.js
+++ b/src/Tool.js
@@ -19,14 +19,14 @@
  * @abstract
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {OO.ui.ToolGroup} toolGroup
  * @param {Object} [config] Configuration options
- * @cfg {string|Function} [title] Title text or a function that returns text. 
If this config is omitted, the value of
+ * @param {string|Function} [config.title] Title text or a function that 
returns text. If this config is omitted, the value of
  *  the {@link #static-title static title} property is used.
  *
  *  The title is used in different ways depending on the type of toolgroup 
that contains the tool. The
diff --git a/src/ToolGroup.js b/src/ToolGroup.js
index 6947162..24f986e 100644
--- a/src/ToolGroup.js
+++ b/src/ToolGroup.js
@@ -21,10 +21,10 @@
  * @constructor
  * @param {OO.ui.Toolbar} toolbar
  * @param {Object} [config] Configuration options
- * @cfg {Array|string} [include] List of tools to include in the toolgroup, 
see above.
- * @cfg {Array|string} [exclude] List of tools to exclude from the toolgroup, 
see above.
- * @cfg {Array|string} [promote] List of tools to promote to the beginning of 
the toolgroup, see above.
- * @cfg {Array|string} [demote] List of tools to demote to the end of the 
toolgroup, see above.
+ * @param {Array|string} [config.include] List of tools to include in the 
toolgroup, see above.
+ * @param {Array|string} [config.exclude] List of tools to exclude from the 
toolgroup, see above.
+ * @param {Array|string} [config.promote] List of tools to promote to the 
beginning of the toolgroup, see above.
+ * @param {Array|string} [config.demote] List of tools to demote to the end of 
the toolgroup, see above.
  *  This setting is particularly useful when tools have been added to the 
toolgroup
  *  en masse (e.g., via the catch-all selector).
  */
diff --git a/src/Toolbar.js b/src/Toolbar.js
index 7720b5d..63fa473 100644
--- a/src/Toolbar.js
+++ b/src/Toolbar.js
@@ -268,17 +268,17 @@
  *
  * @class
  * @extends OO.ui.Element
- * @mixins OO.EventEmitter
- * @mixins OO.ui.mixin.GroupElement
+ * @mixes OO.EventEmitter
+ * @mixes OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {OO.ui.ToolFactory} toolFactory Factory for creating tools
  * @param {OO.ui.ToolGroupFactory} toolGroupFactory Factory for creating 
toolgroups
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [actions] Add an actions section to the toolbar. Actions are 
commands that are included
+ * @param {boolean} [config.actions] Add an actions section to the toolbar. 
Actions are commands that are included
  *  in the toolbar, but are not configured as tools. By default, actions are 
displayed on the right side of
  *  the toolbar.
- * @cfg {string} [position='top'] Whether the toolbar is positioned above 
('top') or below ('bottom') content.
+ * @param {string} [config.position='top'] Whether the toolbar is positioned 
above ('top') or below ('bottom') content.
  */
 OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {
        // Allow passing positional parameters inside the config object
diff --git a/src/Widget.js b/src/Widget.js
index 5220a35..e8ab6d0 100644
--- a/src/Widget.js
+++ b/src/Widget.js
@@ -6,11 +6,11 @@
  * @abstract
  * @class
  * @extends OO.ui.Element
- * @mixins OO.EventEmitter
+ * @mixes OO.EventEmitter
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [disabled=false] Disable the widget. Disabled widgets cannot 
be used and their
+ * @param {boolean} [config.disabled=false] Disable the widget. Disabled 
widgets cannot be used and their
  *  appearance reflects this state.
  */
 OO.ui.Widget = function OoUiWidget( config ) {
@@ -40,19 +40,18 @@
 /* Events */
 
 /**
- * @event disable
- *
  * A 'disable' event is emitted when the disabled state of the widget changes
  * (i.e. on disable **and** enable).
+ *
+ * @event disable
  *
  * @param {boolean} disabled Widget is disabled
  */
 
 /**
- * @event toggle
- *
  * A 'toggle' event is emitted when the visibility of the widget changes.
  *
+ * @event toggle
  * @param {boolean} visible Widget is visible
  */
 
diff --git a/src/Window.js b/src/Window.js
index 19e3535..fab9d19 100644
--- a/src/Window.js
+++ b/src/Window.js
@@ -36,11 +36,11 @@
  * @abstract
  * @class
  * @extends OO.ui.Element
- * @mixins OO.EventEmitter
+ * @mixes OO.EventEmitter
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [size] Symbolic name of the dialog size: `small`, `medium`, 
`large`, `larger` or
+ * @param {string} [config.size] Symbolic name of the dialog size: `small`, 
`medium`, `large`, `larger` or
  *  `full`.  If omitted, the value of the {@link #static-size static size} 
property will be used.
  */
 OO.ui.Window = function OoUiWindow( config ) {
diff --git a/src/WindowManager.js b/src/WindowManager.js
index 517ca45..d5f5fa4 100644
--- a/src/WindowManager.js
+++ b/src/WindowManager.js
@@ -43,14 +43,14 @@
  *
  * @class
  * @extends OO.ui.Element
- * @mixins OO.EventEmitter
+ * @mixes OO.EventEmitter
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.Factory} [factory] Window factory to use for automatic 
instantiation
+ * @param {OO.Factory} [config.factory] Window factory to use for automatic 
instantiation
  *  Note that window classes that are instantiated with a factory must have
  *  a {@link OO.ui.Dialog#static-name static name} property that specifies a 
symbolic name.
- * @cfg {boolean} [modal=true] Prevent interaction outside the dialog
+ * @param {boolean} [config.modal=true] Prevent interaction outside the dialog
  */
 OO.ui.WindowManager = function OoUiWindowManager( config ) {
        // Configuration initialization
diff --git a/src/layouts/BookletLayout.js b/src/layouts/BookletLayout.js
index cb97338..0e63b1a 100644
--- a/src/layouts/BookletLayout.js
+++ b/src/layouts/BookletLayout.js
@@ -43,10 +43,10 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [continuous=false] Show all pages, one after another
- * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a 
new page is displayed. Disabled on mobile.
- * @cfg {boolean} [outlined=false] Show the outline. The outline is used to 
navigate through the pages of the booklet.
- * @cfg {boolean} [editable=false] Show controls for adding, removing and 
reordering pages
+ * @param {boolean} [config.continuous=false] Show all pages, one after another
+ * @param {boolean} [config.autoFocus=true] Focus on the first focusable 
element when a new page is displayed. Disabled on mobile.
+ * @param {boolean} [config.outlined=false] Show the outline. The outline is 
used to navigate through the pages of the booklet.
+ * @param {boolean} [config.editable=false] Show controls for adding, removing 
and reordering pages
  */
 OO.ui.BookletLayout = function OoUiBookletLayout( config ) {
        // Configuration initialization
diff --git a/src/layouts/FieldLayout.js b/src/layouts/FieldLayout.js
index 3e5c57f..52ae8c3 100644
--- a/src/layouts/FieldLayout.js
+++ b/src/layouts/FieldLayout.js
@@ -21,21 +21,21 @@
  *
  * @class
  * @extends OO.ui.Layout
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {OO.ui.Widget} fieldWidget Field widget
  * @param {Object} [config] Configuration options
- * @cfg {string} [align='left'] Alignment of the label: 'left', 'right', 'top' 
or 'inline'
- * @cfg {Array} [errors] Error messages about the widget, which will be 
displayed below the widget.
+ * @param {string} [config.align='left'] Alignment of the label: 'left', 
'right', 'top' or 'inline'
+ * @param {Array} [config.errors] Error messages about the widget, which will 
be displayed below the widget.
  *  The array may contain strings or OO.ui.HtmlSnippet instances.
- * @cfg {Array} [notices] Notices about the widget, which will be displayed 
below the widget.
+ * @param {Array} [config.notices] Notices about the widget, which will be 
displayed below the widget.
  *  The array may contain strings or OO.ui.HtmlSnippet instances.
- * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is 
specified, a "help" icon will appear
+ * @param {string|OO.ui.HtmlSnippet} [config.help] Help text. When help text 
is specified, a "help" icon will appear
  *  in the upper-right corner of the rendered field; clicking it will display 
the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are 
always shown.
- * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, 
if `help` is given.
+ * @param {jQuery} [config.$overlay] Passed to OO.ui.PopupButtonWidget for 
help popup, if `help` is given.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
  *
  * @throws {Error} An error is thrown if no widget is specified
diff --git a/src/layouts/FieldsetLayout.js b/src/layouts/FieldsetLayout.js
index 1016516..a02e1b6 100644
--- a/src/layouts/FieldsetLayout.js
+++ b/src/layouts/FieldsetLayout.js
@@ -32,17 +32,17 @@
  *
  * @class
  * @extends OO.ui.Layout
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.FieldLayout[]} [items] An array of fields to add to the 
fieldset. See OO.ui.FieldLayout for more information about fields.
- * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is 
specified, a "help" icon will appear
+ * @param {OO.ui.FieldLayout[]} [config.items] An array of fields to add to 
the fieldset. See OO.ui.FieldLayout for more information about fields.
+ * @param {string|OO.ui.HtmlSnippet} [config.help] Help text. When help text 
is specified, a "help" icon will appear
  *  in the upper-right corner of the rendered field; clicking it will display 
the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are 
always shown.
- * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, 
if `help` is given.
+ * @param {jQuery} [config.$overlay] Passed to OO.ui.PopupButtonWidget for 
help popup, if `help` is given.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
  */
 OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) {
diff --git a/src/layouts/FormLayout.js b/src/layouts/FormLayout.js
index 20d24ca..13c91fe 100644
--- a/src/layouts/FormLayout.js
+++ b/src/layouts/FormLayout.js
@@ -51,14 +51,14 @@
  *
  * @class
  * @extends OO.ui.Layout
- * @mixins OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [method] HTML form `method` attribute
- * @cfg {string} [action] HTML form `action` attribute
- * @cfg {string} [enctype] HTML form `enctype` attribute
- * @cfg {OO.ui.FieldsetLayout[]} [items] Fieldset layouts to add to the form 
layout.
+ * @param {string} [config.method] HTML form `method` attribute
+ * @param {string} [config.action] HTML form `action` attribute
+ * @param {string} [config.enctype] HTML form `enctype` attribute
+ * @param {OO.ui.FieldsetLayout[]} [config.items] Fieldset layouts to add to 
the form layout.
  */
 OO.ui.FormLayout = function OoUiFormLayout( config ) {
        var action;
diff --git a/src/layouts/HorizontalLayout.js b/src/layouts/HorizontalLayout.js
index 1403401..3da8815 100644
--- a/src/layouts/HorizontalLayout.js
+++ b/src/layouts/HorizontalLayout.js
@@ -17,11 +17,11 @@
  *
  * @class
  * @extends OO.ui.Layout
- * @mixins OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.Widget[]|OO.ui.Layout[]} [items] Widgets or other layouts to 
add to the layout.
+ * @param {OO.ui.Widget[]|OO.ui.Layout[]} [config.items] Widgets or other 
layouts to add to the layout.
  */
 OO.ui.HorizontalLayout = function OoUiHorizontalLayout( config ) {
        // Configuration initialization
diff --git a/src/layouts/IndexLayout.js b/src/layouts/IndexLayout.js
index 4cc5aaf..3d6a474 100644
--- a/src/layouts/IndexLayout.js
+++ b/src/layouts/IndexLayout.js
@@ -34,8 +34,8 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [continuous=false] Show all tab panels, one after another
- * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a 
new tab panel is displayed. Disabled on mobile.
+ * @param {boolean} [config.continuous=false] Show all tab panels, one after 
another
+ * @param {boolean} [config.autoFocus=true] Focus on the first focusable 
element when a new tab panel is displayed. Disabled on mobile.
  */
 OO.ui.IndexLayout = function OoUiIndexLayout( config ) {
        // Configuration initialization
diff --git a/src/layouts/MenuLayout.js b/src/layouts/MenuLayout.js
index 866ccca..867d4b5 100644
--- a/src/layouts/MenuLayout.js
+++ b/src/layouts/MenuLayout.js
@@ -60,9 +60,9 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [expanded=true] Expand the layout to fill the entire parent 
element.
- * @cfg {boolean} [showMenu=true] Show menu
- * @cfg {string} [menuPosition='before'] Position of menu: `top`, `after`, 
`bottom` or `before`
+ * @param {boolean} [config.expanded=true] Expand the layout to fill the 
entire parent element.
+ * @param {boolean} [config.showMenu=true] Show menu
+ * @param {string} [config.menuPosition='before'] Position of menu: `top`, 
`after`, `bottom` or `before`
  */
 OO.ui.MenuLayout = function OoUiMenuLayout( config ) {
        // Configuration initialization
diff --git a/src/layouts/PanelLayout.js b/src/layouts/PanelLayout.js
index d2f0489..559d5cf 100644
--- a/src/layouts/PanelLayout.js
+++ b/src/layouts/PanelLayout.js
@@ -17,10 +17,10 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [scrollable=false] Allow vertical scrolling
- * @cfg {boolean} [padded=false] Add padding between the content and the edges 
of the panel.
- * @cfg {boolean} [expanded=true] Expand the panel to fill the entire parent 
element.
- * @cfg {boolean} [framed=false] Render the panel with a frame to visually 
separate it from outside content.
+ * @param {boolean} [config.scrollable=false] Allow vertical scrolling
+ * @param {boolean} [config.padded=false] Add padding between the content and 
the edges of the panel.
+ * @param {boolean} [config.expanded=true] Expand the panel to fill the entire 
parent element.
+ * @param {boolean} [config.framed=false] Render the panel with a frame to 
visually separate it from outside content.
  */
 OO.ui.PanelLayout = function OoUiPanelLayout( config ) {
        // Configuration initialization
diff --git a/src/layouts/StackLayout.js b/src/layouts/StackLayout.js
index 35a15dd..ca9af6c 100644
--- a/src/layouts/StackLayout.js
+++ b/src/layouts/StackLayout.js
@@ -24,12 +24,12 @@
  *
  * @class
  * @extends OO.ui.PanelLayout
- * @mixins OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [continuous=false] Show all panels, one after another. By 
default, only one panel is displayed at a time.
- * @cfg {OO.ui.Layout[]} [items] Panel layouts to add to the stack layout.
+ * @param {boolean} [config.continuous=false] Show all panels, one after 
another. By default, only one panel is displayed at a time.
+ * @param {OO.ui.Layout[]} [config.items] Panel layouts to add to the stack 
layout.
  */
 OO.ui.StackLayout = function OoUiStackLayout( config ) {
        // Configuration initialization
diff --git a/src/layouts/TabPanelLayout.js b/src/layouts/TabPanelLayout.js
index 429e81a..64bc19d 100644
--- a/src/layouts/TabPanelLayout.js
+++ b/src/layouts/TabPanelLayout.js
@@ -14,7 +14,7 @@
  * @constructor
  * @param {string} name Unique symbolic name of tab panel
  * @param {Object} [config] Configuration options
- * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] Label for tab 
panel's tab
+ * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.label] Label for 
tab panel's tab
  */
 OO.ui.TabPanelLayout = function OoUiTabPanelLayout( name, config ) {
        // Allow passing positional parameters inside the config object
diff --git a/src/mixins/AccessKeyedElement.js b/src/mixins/AccessKeyedElement.js
index 5ee7c0b..5faf3d2 100644
--- a/src/mixins/AccessKeyedElement.js
+++ b/src/mixins/AccessKeyedElement.js
@@ -13,15 +13,13 @@
  *     } );
  *     $( 'body' ).append( button.$element );
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$accessKeyed] The element to which the `accesskey` attribute 
is applied.
+ * @param {jQuery} [config.$accessKeyed] The element to which the `accesskey` 
attribute is applied.
  *  If this config is omitted, the accesskey functionality is applied to 
$element, the
  *  element created by the class.
- * @cfg {string|Function} [accessKey] The key or a function that returns the 
key. If
+ * @param {string|Function} [config.accessKey] The key or a function that 
returns the key. If
  *  this config is omitted, no accesskey will be added.
  */
 OO.ui.mixin.AccessKeyedElement = function OoUiMixinAccessKeyedElement( config 
) {
diff --git a/src/mixins/ButtonElement.js b/src/mixins/ButtonElement.js
index 40e3c01..c9744b3 100644
--- a/src/mixins/ButtonElement.js
+++ b/src/mixins/ButtonElement.js
@@ -5,14 +5,12 @@
  *
  * [1]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Buttons_and_Switches#Buttons
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$button] The button element created by the class.
+ * @param {jQuery} [config.$button] The button element created by the class.
  *  If this configuration is omitted, the button element will use a generated 
`<a>`.
- * @cfg {boolean} [framed=true] Render the button with a frame
+ * @param {boolean} [config.framed=true] Render the button with a frame
  */
 OO.ui.mixin.ButtonElement = function OoUiMixinButtonElement( config ) {
        // Configuration initialization
@@ -60,7 +58,7 @@
 /**
  * A 'click' event is emitted when the button element is clicked.
  *
- * @event click
+ * @event OO.ui.ButtonElement#click
  */
 
 /* Methods */
diff --git a/src/mixins/ClippableElement.js b/src/mixins/ClippableElement.js
index 512e5a8..3cb3af3 100644
--- a/src/mixins/ClippableElement.js
+++ b/src/mixins/ClippableElement.js
@@ -12,13 +12,11 @@
  * but you can build a static footer by setting #$clippableContainer to an 
element that contains
  * #$clippable and the footer.
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$clippable] Node to clip, assigned to #$clippable, omit to 
use #$element
- * @cfg {jQuery} [$clippableContainer] Node to keep visible, assigned to 
#$clippableContainer,
+ * @param {jQuery} [config.$clippable] Node to clip, assigned to #$clippable, 
omit to use #$element
+ * @param {jQuery} [config.$clippableContainer] Node to keep visible, assigned 
to #$clippableContainer,
  *   omit to use #$clippable
  */
 OO.ui.mixin.ClippableElement = function OoUiMixinClippableElement( config ) {
diff --git a/src/mixins/DraggableElement.js b/src/mixins/DraggableElement.js
index 47cda32..1a4d560 100644
--- a/src/mixins/DraggableElement.js
+++ b/src/mixins/DraggableElement.js
@@ -4,13 +4,11 @@
  * in conjunction with OO.ui.mixin.DraggableGroupElement, which provides a 
container for
  * the draggable elements.
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$handle] The part of the element which can be used for 
dragging, defaults to the whole element
- * @cfg {boolean} [draggable] The items are draggable. This can change with 
#toggleDraggable
+ * @param {jQuery} [config.$handle] The part of the element which can be used 
for dragging, defaults to the whole element
+ * @param {boolean} [config.draggable] The items are draggable. This can 
change with #toggleDraggable
  *  but the draggable state should be called from the DraggableGroupElement, 
which updates
  *  the whole group
  */
diff --git a/src/mixins/DraggableGroupElement.js 
b/src/mixins/DraggableGroupElement.js
index cee1db2..6f76299 100644
--- a/src/mixins/DraggableGroupElement.js
+++ b/src/mixins/DraggableGroupElement.js
@@ -3,17 +3,15 @@
  * contain draggable elements, which are items that can be clicked and dragged 
by a mouse.
  * The class is used with OO.ui.mixin.DraggableElement.
  *
- * @abstract
- * @class
- * @mixins OO.ui.mixin.GroupElement
+ * @mixin
+ * @mixes OO.ui.mixin.GroupElement
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [orientation] Item orientation: 'horizontal' or 'vertical'. 
The orientation
+ * @param {string} [config.orientation] Item orientation: 'horizontal' or 
'vertical'. The orientation
  *  should match the layout of the items. Items displayed in a single row
  *  or in several rows should use horizontal orientation. The vertical 
orientation should only be
  *  used when the items are displayed in a single column. Defaults to 
'vertical'
- * @cfg {boolean} [draggable] The items are draggable. This can change with 
#toggleDraggable
+ * @param {boolean} [config.draggable] The items are draggable. This can 
change with #toggleDraggable
  */
 OO.ui.mixin.DraggableGroupElement = function OoUiMixinDraggableGroupElement( 
config ) {
        // Configuration initialization
diff --git a/src/mixins/FlaggedElement.js b/src/mixins/FlaggedElement.js
index b6391d6..d5cb75d 100644
--- a/src/mixins/FlaggedElement.js
+++ b/src/mixins/FlaggedElement.js
@@ -29,15 +29,13 @@
  *
  * [1]: https://www.mediawiki.org/wiki/OOUI/Elements/Flagged
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string|string[]} [flags] The name or names of the flags (e.g., 
'progressive' or 'primary') to apply.
- *  Please see the [OOUI documentation on MediaWiki] [2] for more information 
about available flags.
+ * @param {string|string[]} [config.flags] The name or names of the flags 
(e.g., 'progressive' or 'primary') to apply.
+ *  Please see the [OOjs UI documentation on MediaWiki] [2] for more 
information about available flags.
  *  [2]: https://www.mediawiki.org/wiki/OOUI/Elements/Flagged
- * @cfg {jQuery} [$flagged] The flagged element. By default,
+ * @param {jQuery} [config.$flagged] The flagged element. By default,
  *  the flagged functionality is applied to the element created by the class 
($element).
  *  If a different element is specified, the flagged functionality will be 
applied to it instead.
  */
diff --git a/src/mixins/FloatableElement.js b/src/mixins/FloatableElement.js
index bbf2cf1..8b518eb 100644
--- a/src/mixins/FloatableElement.js
+++ b/src/mixins/FloatableElement.js
@@ -10,26 +10,24 @@
  * and visible, it's only done after you call #togglePositioning. You might 
want to do this inside
  * the #toggle method to display a floating popup, for example.
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$floatable] Node to position, assigned to #$floatable, omit 
to use #$element
- * @cfg {jQuery} [$floatableContainer] Node to position adjacent to
- * @cfg {string} [verticalPosition='below'] Where to position $floatable 
vertically:
+ * @param {jQuery} [config.$floatable] Node to position, assigned to 
#$floatable, omit to use #$element
+ * @param {jQuery} [config.$floatableContainer] Node to position adjacent to
+ * @param {string} [config.verticalPosition='below'] Where to position 
$floatable vertically:
  *  'below': Directly below $floatableContainer, aligning f's top edge with 
fC's bottom edge
  *  'above': Directly above $floatableContainer, aligning f's bottom edge with 
fC's top edge
  *  'top': Align the top edge with $floatableContainer's top edge
  *  'bottom': Align the bottom edge with $floatableContainer's bottom edge
  *  'center': Vertically align the center with $floatableContainer's center
- * @cfg {string} [horizontalPosition='start'] Where to position $floatable 
horizontally:
+ * @param {string} [config.horizontalPosition='start'] Where to position 
$floatable horizontally:
  *  'before': Directly before $floatableContainer, aligning f's end edge with 
fC's start edge
  *  'after': Directly after $floatableContainer, algining f's start edge with 
fC's end edge
  *  'start': Align the start (left in LTR, right in RTL) edge with 
$floatableContainer's start edge
  *  'end': Align the end (right in LTR, left in RTL) edge with 
$floatableContainer's end edge
  *  'center': Horizontally align the center with $floatableContainer's center
- * @cfg {boolean} [hideWhenOutOfView=true] Whether to hide the floatable 
element if the container
+ * @param {boolean} [config.hideWhenOutOfView=true] Whether to hide the 
floatable element if the container
  *  is out of view
  */
 OO.ui.mixin.FloatableElement = function OoUiMixinFloatableElement( config ) {
diff --git a/src/mixins/GroupElement.js b/src/mixins/GroupElement.js
index 0b78574..fe16700 100644
--- a/src/mixins/GroupElement.js
+++ b/src/mixins/GroupElement.js
@@ -6,13 +6,11 @@
  *
  * [1]: https://www.mediawiki.org/wiki/OOUI/Elements/Groups
  *
- * @abstract
- * @mixins OO.EmitterList
- * @class
+ * @mixin
+ * @mixes OO.EmitterList
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$group] The container element created by the class. If this 
configuration
+ * @param {jQuery} [config.$group] The container element created by the class. 
If this configuration
  *  is omitted, the group element will use a generated `<div>`.
  */
 OO.ui.mixin.GroupElement = function OoUiMixinGroupElement( config ) {
diff --git a/src/mixins/GroupWidget.js b/src/mixins/GroupWidget.js
index 45126ea..59bcf89 100644
--- a/src/mixins/GroupWidget.js
+++ b/src/mixins/GroupWidget.js
@@ -3,12 +3,9 @@
  *
  * Use together with OO.ui.mixin.ItemWidget to make disabled state inheritable.
  *
- * @private
- * @abstract
- * @class
- * @mixins OO.ui.mixin.GroupElement
+ * @mixin
+ * @mixes OO.ui.mixin.GroupElement
  *
- * @constructor
  * @param {Object} [config] Configuration options
  */
 OO.ui.mixin.GroupWidget = function OoUiMixinGroupWidget( config ) {
diff --git a/src/mixins/IconElement.js b/src/mixins/IconElement.js
index dd6c697..871c2d0 100644
--- a/src/mixins/IconElement.js
+++ b/src/mixins/IconElement.js
@@ -7,12 +7,10 @@
  *
  * [1]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Icons,_Indicators,_and_Labels#Icons
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$icon] The icon element created by the class. If this 
configuration is omitted,
+ * @param {jQuery} [config.$icon] The icon element created by the class. If 
this configuration is omitted,
  *  the icon element will use a generated `<span>`. To use a different HTML 
tag, or to specify that
  *  the icon element be set to an existing icon instead of the one generated 
by this class, set a
  *  value using a jQuery selection. For example:
@@ -23,7 +21,7 @@
  *     $icon: this.$element
  *     // Use an icon element from a child widget
  *     $icon: this.childwidget.$element
- * @cfg {Object|string} [icon=''] The symbolic name of the icon (e.g., 
‘remove’ or ‘menu’), or a map of
+ * @param {Object|string} [config.icon=''] The symbolic name of the icon 
(e.g., ‘remove’ or ‘menu’), or a map of
  *  symbolic names.  A map is used for i18n purposes and contains a `default` 
icon
  *  name and additional names keyed by language code. The `default` name is 
used when no icon is keyed
  *  by the user's language.
@@ -33,7 +31,7 @@
  *     { default: 'bold-a', en: 'bold-b', de: 'bold-f' }
  *  See the [OOUI documentation on MediaWiki] [2] for a list of icons included 
in the library.
  * [2]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Icons,_Indicators,_and_Labels#Icons
- * @cfg {string|Function} [iconTitle] A text string used as the icon title, or 
a function that returns title
+ * @param {string|Function} [config.iconTitle] A text string used as the icon 
title, or a function that returns title
  *  text. The icon title is displayed when users move the mouse over the icon.
  */
 OO.ui.mixin.IconElement = function OoUiMixinIconElement( config ) {
diff --git a/src/mixins/IndicatorElement.js b/src/mixins/IndicatorElement.js
index 5e2ad32..df9dae2 100644
--- a/src/mixins/IndicatorElement.js
+++ b/src/mixins/IndicatorElement.js
@@ -12,18 +12,16 @@
  *
  * [1]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Icons,_Indicators,_and_Labels#Indicators
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$indicator] The indicator element created by the class. If 
this
+ * @param {jQuery} [config.$indicator] The indicator element created by the 
class. If this
  *  configuration is omitted, the indicator element will use a generated 
`<span>`.
- * @cfg {string} [indicator] Symbolic name of the indicator (e.g., ‘clear’ or 
‘down’).
+ * @param {string} [config.indicator] Symbolic name of the indicator (e.g., 
‘alert’ or  ‘down’).
  *  See the [OOUI documentation on MediaWiki][2] for a list of indicators 
included
  *  in the library.
  * [2]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Icons,_Indicators,_and_Labels#Indicators
- * @cfg {string|Function} [indicatorTitle] A text string used as the indicator 
title,
+ * @param {string|Function} [config.indicatorTitle] A text string used as the 
indicator title,
  *  or a function that returns title text. The indicator title is displayed 
when users move
  *  the mouse over the indicator.
  */
diff --git a/src/mixins/ItemWidget.js b/src/mixins/ItemWidget.js
index 16009ac..a64a40f 100644
--- a/src/mixins/ItemWidget.js
+++ b/src/mixins/ItemWidget.js
@@ -7,10 +7,7 @@
  * Use together with OO.ui.mixin.GroupWidget to make disabled state 
inheritable.
  *
  * @private
- * @abstract
- * @class
- *
- * @constructor
+ * @mixin
  */
 OO.ui.mixin.ItemWidget = function OoUiMixinItemWidget() {
        //
diff --git a/src/mixins/LabelElement.js b/src/mixins/LabelElement.js
index 384f971..e5131c7 100644
--- a/src/mixins/LabelElement.js
+++ b/src/mixins/LabelElement.js
@@ -5,14 +5,12 @@
  *
  * [1]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Icons,_Indicators,_and_Labels#Labels
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$label] The label element created by the class. If this
+ * @param {jQuery} [config.$label] The label element created by the class. If 
this
  *  configuration is omitted, the label element will use a generated `<span>`.
- * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] The label text. The 
label can be specified
+ * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.label] The label 
text. The label can be specified
  *  as a plaintext string, a jQuery selection of elements, or a function that 
will produce a string
  *  in the future. See the [OOUI documentation on MediaWiki] [2] for examples.
  *  [2]: 
https://www.mediawiki.org/wiki/OOUI/Widgets/Icons,_Indicators,_and_Labels#Labels
diff --git a/src/mixins/LookupElement.js b/src/mixins/LookupElement.js
index 3c9be7e..41ef01b 100644
--- a/src/mixins/LookupElement.js
+++ b/src/mixins/LookupElement.js
@@ -12,18 +12,17 @@
  *
  * [1]: 
https://doc.wikimedia.org/oojs-ui/master/demos/#LookupElement-try-inputting-an-integer
  *
- * @class
+ * @mixin
  * @abstract
- * @mixins OO.ui.mixin.RequestManager
+ * @mixes OO.ui.mixin.RequestManager
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative 
positioning.
+ * @param {jQuery} [config.$overlay] Overlay for the lookup menu; defaults to 
relative positioning.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
- * @cfg {jQuery} [$container=this.$element] The container element. The lookup 
menu is rendered beneath the specified element.
- * @cfg {boolean} [allowSuggestionsWhenEmpty=false] Request and display a 
lookup menu when the text input is empty.
+ * @param {jQuery} [config.$container=this.$element] The container element. 
The lookup menu is rendered beneath the specified element.
+ * @param {boolean} [config.allowSuggestionsWhenEmpty=false] Request and 
display a lookup menu when the text input is empty.
  *  By default, the lookup menu is not generated and displayed until the user 
begins to type.
- * @cfg {boolean} [highlightFirst=true] Whether the first lookup result should 
be highlighted (so, that the user can
+ * @param {boolean} [config.highlightFirst=true] Whether the first lookup 
result should be highlighted (so, that the user can
  *  take it over into the input with simply pressing return) automatically or 
not.
  */
 OO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {
diff --git a/src/mixins/PendingElement.js b/src/mixins/PendingElement.js
index 5f30955..a37b836 100644
--- a/src/mixins/PendingElement.js
+++ b/src/mixins/PendingElement.js
@@ -50,11 +50,10 @@
  *     windowManager.openWindow( dialog );
  *
  * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$pending] Element to mark as pending, defaults to 
this.$element
+ * @param {jQuery} [config.$pending] Element to mark as pending, defaults to 
this.$element
  */
 OO.ui.mixin.PendingElement = function OoUiMixinPendingElement( config ) {
        // Configuration initialization
diff --git a/src/mixins/PopupElement.js b/src/mixins/PopupElement.js
index f038d51..71581fc 100644
--- a/src/mixins/PopupElement.js
+++ b/src/mixins/PopupElement.js
@@ -4,13 +4,11 @@
  * popup has an anchor, which is an arrow-like protrusion that points toward 
the popup’s origin.
  * See {@link OO.ui.PopupWidget PopupWidget} for an example.
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [popup] Configuration to pass to popup
- * @cfg {boolean} [popup.autoClose=true] Popup auto-closes when it loses focus
+ * @param {Object} [config.popup] Configuration to pass to popup
+ * @param {boolean} [config.popup.autoClose=true] Popup auto-closes when it 
loses focus
  */
 OO.ui.mixin.PopupElement = function OoUiMixinPopupElement( config ) {
        // Configuration initialization
diff --git a/src/mixins/RequestManager.js b/src/mixins/RequestManager.js
index b3a41e3..fb0512a 100644
--- a/src/mixins/RequestManager.js
+++ b/src/mixins/RequestManager.js
@@ -2,10 +2,7 @@
  * RequestManager is a mixin that manages the lifecycle of a promise-backed 
request for a widget, such as
  * the {@link OO.ui.mixin.LookupElement}.
  *
- * @class
- * @abstract
- *
- * @constructor
+ * @mixin
  */
 OO.ui.mixin.RequestManager = function OoUiMixinRequestManager() {
        this.requestCache = {};
diff --git a/src/mixins/TabIndexedElement.js b/src/mixins/TabIndexedElement.js
index 01fe2b3..e6471fe 100644
--- a/src/mixins/TabIndexedElement.js
+++ b/src/mixins/TabIndexedElement.js
@@ -24,15 +24,13 @@
  *     } );
  *     $( 'body' ).append( button1.$element, button2.$element, 
button3.$element, button4.$element );
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$tabIndexed] The element that should use the tabindex 
functionality. By default,
+ * @param {jQuery} [config.$tabIndexed] The element that should use the 
tabindex functionality. By default,
  *  the functionality is applied to the element created by the class 
($element). If a different element is specified, the tabindex
  *  functionality will be applied to it instead.
- * @cfg {string|number|null} [tabIndex=0] Number that specifies the element’s 
position in the tab-navigation
+ * @param {string|number|null} [config.tabIndex=0] Number that specifies the 
element’s position in the tab-navigation
  *  order (e.g., 1 for the first focusable element). Use 0 to use the default 
navigation order; use -1
  *  to remove the element from the tab-navigation flow.
  */
diff --git a/src/mixins/TitledElement.js b/src/mixins/TitledElement.js
index 389648e..63d5182 100644
--- a/src/mixins/TitledElement.js
+++ b/src/mixins/TitledElement.js
@@ -12,15 +12,13 @@
  *     } );
  *     $( 'body' ).append( button.$element );
  *
- * @abstract
- * @class
+ * @mixin
  *
- * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$titled] The element to which the `title` attribute is 
applied.
+ * @param {jQuery} [config.$titled] The element to which the `title` attribute 
is applied.
  *  If this config is omitted, the title functionality is applied to $element, 
the
  *  element created by the class.
- * @cfg {string|Function} [title] The title text or a function that returns 
text. If
+ * @param {string|Function} [config.title] The title text or a function that 
returns text. If
  *  this config is omitted, the value of the {@link #static-title static 
title} property is used.
  */
 OO.ui.mixin.TitledElement = function OoUiMixinTitledElement( config ) {
diff --git a/src/toolgroups/ListToolGroup.js b/src/toolgroups/ListToolGroup.js
index 778130c..7cb2713 100644
--- a/src/toolgroups/ListToolGroup.js
+++ b/src/toolgroups/ListToolGroup.js
@@ -80,14 +80,14 @@
  * @constructor
  * @param {OO.ui.Toolbar} toolbar
  * @param {Object} [config] Configuration options
- * @cfg {Array} [allowCollapse] Allow the specified tools to be collapsed. By 
default, collapsible tools
+ * @param {Array} [config.allowCollapse] Allow the specified tools to be 
collapsed. By default, collapsible tools
  *  will only be displayed if users click the ‘More’ option displayed at the 
bottom of the list. If
  *  the list is expanded, a ‘Fewer’ option permits users to collapse the list 
again. Any tools that
  *  are included in the toolgroup, but are not designated as collapsible, will 
always be displayed.
  *  To open a collapsible list in its expanded state, set #expanded to 'true'.
- * @cfg {Array} [forceExpand] Expand the specified tools. All other tools will 
be designated as collapsible.
+ * @param {Array} [config.forceExpand] Expand the specified tools. All other 
tools will be designated as collapsible.
  *  Unless #expanded is set to true, the collapsible tools will be collapsed 
when the list is first opened.
- * @cfg {boolean} [expanded=false] Expand collapsible tools. This config is 
only relevant if tools have
+ * @param {boolean} [config.expanded=false] Expand collapsible tools. This 
config is only relevant if tools have
  *  been designated as collapsible. When expanded is set to true, all tools in 
the group will be displayed
  *  when the list is first opened. Users can collapse the list with a ‘Fewer’ 
option at the bottom.
  */
diff --git a/src/toolgroups/PopupToolGroup.js b/src/toolgroups/PopupToolGroup.js
index 96345dd..1809baa 100644
--- a/src/toolgroups/PopupToolGroup.js
+++ b/src/toolgroups/PopupToolGroup.js
@@ -6,18 +6,18 @@
  * @abstract
  * @class
  * @extends OO.ui.ToolGroup
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.ClippableElement
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.ClippableElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {OO.ui.Toolbar} toolbar
  * @param {Object} [config] Configuration options
- * @cfg {string} [header] Text to display at the top of the popup
+ * @param {string} [config.header] Text to display at the top of the popup
  */
 OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
        // Allow passing positional parameters inside the config object
diff --git a/src/tools/PopupTool.js b/src/tools/PopupTool.js
index 8717051..71d8279 100644
--- a/src/tools/PopupTool.js
+++ b/src/tools/PopupTool.js
@@ -27,7 +27,7 @@
  * @abstract
  * @class
  * @extends OO.ui.Tool
- * @mixins OO.ui.mixin.PopupElement
+ * @mixes OO.ui.mixin.PopupElement
  *
  * @constructor
  * @param {OO.ui.ToolGroup} toolGroup
diff --git a/src/widgets/ActionWidget.js b/src/widgets/ActionWidget.js
index bd21623..1ad25aa 100644
--- a/src/widgets/ActionWidget.js
+++ b/src/widgets/ActionWidget.js
@@ -11,15 +11,15 @@
  *
  * @class
  * @extends OO.ui.ButtonWidget
- * @mixins OO.ui.mixin.PendingElement
+ * @mixes OO.ui.mixin.PendingElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [action] Symbolic name of the action (e.g., ‘continue’ or 
‘cancel’).
- * @cfg {string[]} [modes] Symbolic names of the modes (e.g., ‘edit’ or 
‘read’) in which the action
+ * @param {string} [config.action] Symbolic name of the action (e.g., 
‘continue’ or ‘cancel’).
+ * @param {string[]} [config.modes] Symbolic names of the modes (e.g., ‘edit’ 
or ‘read’) in which the action
  *  should be made available. See the action set's {@link 
OO.ui.ActionSet#setMode setMode} method
  *  for more information about setting modes.
- * @cfg {boolean} [framed=false] Render the action button with a frame
+ * @param {boolean} [config.framed=false] Render the action button with a frame
  */
 OO.ui.ActionWidget = function OoUiActionWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/ButtonGroupWidget.js b/src/widgets/ButtonGroupWidget.js
index 34518ba..28bf09a 100644
--- a/src/widgets/ButtonGroupWidget.js
+++ b/src/widgets/ButtonGroupWidget.js
@@ -24,11 +24,11 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.ButtonWidget[]} [items] Buttons to add
+ * @param {OO.ui.ButtonWidget[]} [config.items] Buttons to add
  */
 OO.ui.ButtonGroupWidget = function OoUiButtonGroupWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/ButtonInputWidget.js b/src/widgets/ButtonInputWidget.js
index 6619ed8..4f8a159 100644
--- a/src/widgets/ButtonInputWidget.js
+++ b/src/widgets/ButtonInputWidget.js
@@ -18,16 +18,16 @@
  *
  * @class
  * @extends OO.ui.InputWidget
- * @mixins OO.ui.mixin.ButtonElement
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.ButtonElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [type='button'] The value of the HTML `'type'` attribute: 
'button', 'submit' or 'reset'.
- * @cfg {boolean} [useInputTag=false] Use an `<input>` tag instead of a 
`<button>` tag, the default.
+ * @param {string} [config.type='button'] The value of the HTML `'type'` 
attribute: 'button', 'submit' or 'reset'.
+ * @param {boolean} [config.useInputTag=false] Use an `<input>` tag instead of 
a `<button>` tag, the default.
  *  Widgets configured to be an `<input>` do not support {@link #icon icons} 
and {@link #indicator indicators},
  *  non-plaintext {@link #label labels}, or {@link #value values}. In general, 
useInputTag should only
  *  be set to `true` when there’s need to support IE 6 in a form with multiple 
buttons.
diff --git a/src/widgets/ButtonOptionWidget.js 
b/src/widgets/ButtonOptionWidget.js
index 9bf0249..09c9ac4 100644
--- a/src/widgets/ButtonOptionWidget.js
+++ b/src/widgets/ButtonOptionWidget.js
@@ -8,10 +8,10 @@
  *
  * @class
  * @extends OO.ui.OptionWidget
- * @mixins OO.ui.mixin.ButtonElement
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.ButtonElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/ButtonSelectWidget.js 
b/src/widgets/ButtonSelectWidget.js
index 4e007c7..0e53539 100644
--- a/src/widgets/ButtonSelectWidget.js
+++ b/src/widgets/ButtonSelectWidget.js
@@ -34,7 +34,7 @@
  *
  * @class
  * @extends OO.ui.SelectWidget
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/ButtonWidget.js b/src/widgets/ButtonWidget.js
index 20eedaf..1e6f9ac 100644
--- a/src/widgets/ButtonWidget.js
+++ b/src/widgets/ButtonWidget.js
@@ -19,21 +19,21 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.ButtonElement
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.TabIndexedElement
- * @mixins OO.ui.mixin.AccessKeyedElement
+ * @mixes OO.ui.mixin.ButtonElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.AccessKeyedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [active=false] Whether button should be shown as active
- * @cfg {string} [href] Hyperlink to visit when the button is clicked.
- * @cfg {string} [target] The frame or window in which to open the hyperlink.
- * @cfg {boolean} [noFollow] Search engine traversal hint (default: true)
+ * @param {boolean} [config.active=false] Whether button should be shown as 
active
+ * @param {string} [config.href] Hyperlink to visit when the button is clicked.
+ * @param {string} [config.target] The frame or window in which to open the 
hyperlink.
+ * @param {boolean} [congif.noFollow] Search engine traversal hint (default: 
true)
  */
 OO.ui.ButtonWidget = function OoUiButtonWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/CapsuleItemWidget.js b/src/widgets/CapsuleItemWidget.js
index 9e87e78..2db2838 100644
--- a/src/widgets/CapsuleItemWidget.js
+++ b/src/widgets/CapsuleItemWidget.js
@@ -4,10 +4,10 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.ItemWidget
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.ItemWidget
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/CapsuleMultiselectWidget.js 
b/src/widgets/CapsuleMultiselectWidget.js
index f1ae151..d4e9450 100644
--- a/src/widgets/CapsuleMultiselectWidget.js
+++ b/src/widgets/CapsuleMultiselectWidget.js
@@ -40,26 +40,26 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupElement
- * @mixins OO.ui.mixin.PopupElement
- * @mixins OO.ui.mixin.TabIndexedElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.PopupElement
+ * @mixes OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.IconElement
  * @uses OO.ui.CapsuleItemWidget
  * @uses OO.ui.MenuSelectWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [placeholder] Placeholder text
- * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if 
not present in the menu.
- * @cfg {boolean} [allowDuplicates=false] Allow duplicate items to be added.
- * @cfg {Object} [menu] (required) Configuration options to pass to the
+ * @param {string} [config.placeholder] Placeholder text
+ * @param {boolean} [config.allowArbitrary=false] Allow data items to be added 
even if not present in the menu.
+ * @param {boolean} [config.allowDuplicates=false] Allow duplicate items to be 
added.
+ * @param {Object} [config.menu] (required) Configuration options to pass to 
the
  *  {@link OO.ui.MenuSelectWidget menu select widget}.
- * @cfg {Object} [popup] Configuration options to pass to the {@link 
OO.ui.PopupWidget popup widget}.
+ * @param {Object} [config.popup] Configuration options to pass to the {@link 
OO.ui.PopupWidget popup widget}.
  *  If specified, this popup will be shown instead of the menu (but the menu
  *  will still be used for item labels and allowArbitrary=false). The widgets
  *  in the popup should use {@link #addItemsFromData} or {@link #addItems} as 
necessary.
- * @cfg {jQuery} [$overlay=this.$element] Render the menu or popup into a 
separate layer.
+ * @param {jQuery} [config.$overlay=this.$element] Render the menu or popup 
into a separate layer.
  *  This configuration is useful in cases where the expanded menu is larger 
than
  *  its containing `<div>`. The specified overlay layer is usually on top of
  *  the containing `<div>` and has a larger area. By default, the menu uses
diff --git a/src/widgets/CheckboxInputWidget.js 
b/src/widgets/CheckboxInputWidget.js
index 46e29c2..eafdf99 100644
--- a/src/widgets/CheckboxInputWidget.js
+++ b/src/widgets/CheckboxInputWidget.js
@@ -37,7 +37,7 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [selected=false] Select the checkbox initially. By default, 
the checkbox is not selected.
+ * @param {boolean} [config.selected=false] Select the checkbox initially. By 
default, the checkbox is not selected.
  */
 OO.ui.CheckboxInputWidget = function OoUiCheckboxInputWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/CheckboxMultiselectInputWidget.js 
b/src/widgets/CheckboxMultiselectInputWidget.js
index 01fc9cd..6de3f9f 100644
--- a/src/widgets/CheckboxMultiselectInputWidget.js
+++ b/src/widgets/CheckboxMultiselectInputWidget.js
@@ -23,7 +23,7 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: 
…, label: …, disabled: … }`
+ * @param {Object[]} [config.options=[]] Array of menu options in the format 
`{ data: …, label: …, disabled: … }`
  */
 OO.ui.CheckboxMultiselectInputWidget = function 
OoUiCheckboxMultiselectInputWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/ComboBoxInputWidget.js 
b/src/widgets/ComboBoxInputWidget.js
index 57af795..8c7761a 100644
--- a/src/widgets/ComboBoxInputWidget.js
+++ b/src/widgets/ComboBoxInputWidget.js
@@ -56,9 +56,9 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: 
…, label: … }`
- * @cfg {Object} [menu] Configuration options to pass to the {@link 
OO.ui.MenuSelectWidget menu select widget}.
- * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This 
configuration is useful in cases where
+ * @param {Object[]} [config.options=[]] Array of menu options in the format 
`{ data: …, label: … }`
+ * @param {Object} [config.menu] Configuration options to pass to the {@link 
OO.ui.MenuSelectWidget menu select widget}.
+ * @param {jQuery} [config.$overlay] Render the menu into a separate layer. 
This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified 
overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the menu uses 
relative positioning.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
diff --git a/src/widgets/DecoratedOptionWidget.js 
b/src/widgets/DecoratedOptionWidget.js
index 1c4e6cd..231239d 100644
--- a/src/widgets/DecoratedOptionWidget.js
+++ b/src/widgets/DecoratedOptionWidget.js
@@ -27,8 +27,8 @@
  *
  * @class
  * @extends OO.ui.OptionWidget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/DropdownInputWidget.js 
b/src/widgets/DropdownInputWidget.js
index 0f83f0c..45c966d 100644
--- a/src/widgets/DropdownInputWidget.js
+++ b/src/widgets/DropdownInputWidget.js
@@ -28,8 +28,8 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: 
…, label: … }`
- * @cfg {Object} [dropdown] Configuration options for {@link 
OO.ui.DropdownWidget DropdownWidget}
+ * @param {Object[]} [config.options=[]] Array of menu options in the format 
`{ data: …, label: … }`
+ * @param {Object} [config.dropdown] Configuration options for {@link 
OO.ui.DropdownWidget DropdownWidget}
  */
 OO.ui.DropdownInputWidget = function OoUiDropdownInputWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/DropdownWidget.js b/src/widgets/DropdownWidget.js
index 67dfc0f..911f3de 100644
--- a/src/widgets/DropdownWidget.js
+++ b/src/widgets/DropdownWidget.js
@@ -40,16 +40,16 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to {@link 
OO.ui.MenuSelectWidget menu select widget}
- * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This 
configuration is useful in cases where
+ * @param {Object} [config.menu] Configuration options to pass to {@link 
OO.ui.MenuSelectWidget menu select widget}
+ * @param {jQuery} [config.$overlay] Render the menu into a separate layer. 
This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified 
overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the menu uses 
relative positioning.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
diff --git a/src/widgets/HiddenInputWidget.js b/src/widgets/HiddenInputWidget.js
index 34292ea..663562a 100644
--- a/src/widgets/HiddenInputWidget.js
+++ b/src/widgets/HiddenInputWidget.js
@@ -6,8 +6,8 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [value=''] The value of the input.
- * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.
+ * @param {string} [config.value=''] The value of the input.
+ * @param {string} [config.name=''] The value of the input’s HTML `name` 
attribute.
  */
 OO.ui.HiddenInputWidget = function OoUiHiddenInputWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/IconWidget.js b/src/widgets/IconWidget.js
index de85b55..b210a0d 100644
--- a/src/widgets/IconWidget.js
+++ b/src/widgets/IconWidget.js
@@ -19,9 +19,9 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.TitledElement
- * @mixins OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.FlaggedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/IndicatorWidget.js b/src/widgets/IndicatorWidget.js
index 383848c..afaefa2 100644
--- a/src/widgets/IndicatorWidget.js
+++ b/src/widgets/IndicatorWidget.js
@@ -20,8 +20,8 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/InputWidget.js b/src/widgets/InputWidget.js
index dea9a20..f161b53 100644
--- a/src/widgets/InputWidget.js
+++ b/src/widgets/InputWidget.js
@@ -9,18 +9,18 @@
  * @abstract
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.TabIndexedElement
- * @mixins OO.ui.mixin.TitledElement
- * @mixins OO.ui.mixin.AccessKeyedElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.AccessKeyedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.
- * @cfg {string} [value=''] The value of the input.
- * @cfg {string} [dir] The directionality of the input (ltr/rtl).
- * @cfg {string} [inputId] The value of the input’s HTML `id` attribute.
- * @cfg {Function} [inputFilter] The name of an input filter function. Input 
filters modify the value of an input
+ * @param {string} [config.name=''] The value of the input’s HTML `name` 
attribute.
+ * @param {string} [config.value=''] The value of the input.
+ * @param {string} [config.dir] The directionality of the input (ltr/rtl).
+ * @param {string} [config.inputId] The value of the input’s HTML `id` 
attribute.
+ * @param {Function} [config.inputFilter] The name of an input filter 
function. Input filters modify the value of an input
  *  before it is accepted.
  */
 OO.ui.InputWidget = function OoUiInputWidget( config ) {
diff --git a/src/widgets/LabelWidget.js b/src/widgets/LabelWidget.js
index 0820d4e..2a2274e 100644
--- a/src/widgets/LabelWidget.js
+++ b/src/widgets/LabelWidget.js
@@ -29,12 +29,12 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.InputWidget} [input] {@link OO.ui.InputWidget Input widget} 
that uses the label.
+ * @param {OO.ui.InputWidget} [config.input] {@link OO.ui.InputWidget Input 
widget} that uses the label.
  *  Clicking the label will focus the specified input field.
  */
 OO.ui.LabelWidget = function OoUiLabelWidget( config ) {
diff --git a/src/widgets/MenuSelectWidget.js b/src/widgets/MenuSelectWidget.js
index 4d94333..992bb2c 100644
--- a/src/widgets/MenuSelectWidget.js
+++ b/src/widgets/MenuSelectWidget.js
@@ -23,26 +23,26 @@
  *
  * @class
  * @extends OO.ui.SelectWidget
- * @mixins OO.ui.mixin.ClippableElement
- * @mixins OO.ui.mixin.FloatableElement
+ * @mixes OO.ui.mixin.ClippableElement
+ * @mixes OO.ui.mixin.FloatableElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.TextInputWidget} [input] Text input used to implement option 
highlighting for menu items that match
+ * @param {OO.ui.TextInputWidget} [config.input] Text input used to implement 
option highlighting for menu items that match
  *  the text the user types. This config is used by {@link 
OO.ui.ComboBoxInputWidget ComboBoxInputWidget}
  *  and {@link OO.ui.mixin.LookupElement LookupElement}
- * @cfg {jQuery} [$input] Text input used to implement option highlighting for 
menu items that match
+ * @param {jQuery} [config.$input] Text input used to implement option 
highlighting for menu items that match
  *  the text the user types. This config is used by {@link 
OO.ui.CapsuleMultiselectWidget CapsuleMultiselectWidget}
- * @cfg {OO.ui.Widget} [widget] Widget associated with the menu's active 
state. If the user clicks the mouse
+ * @param {OO.ui.Widget} [config.widget] Widget associated with the menu's 
active state. If the user clicks the mouse
  *  anywhere on the page outside of this widget, the menu is hidden. For 
example, if there is a button
  *  that toggles the menu's visibility on click, the menu will be hidden then 
re-shown when the user clicks
  *  that button, unless the button (or its parent widget) is passed in here.
- * @cfg {boolean} [autoHide=true] Hide the menu when the mouse is pressed 
outside the menu.
- * @cfg {jQuery} [$autoCloseIgnore] If these elements are clicked, don't 
auto-hide the menu.
- * @cfg {boolean} [hideOnChoose=true] Hide the menu when the user chooses an 
option.
- * @cfg {boolean} [filterFromInput=false] Filter the displayed options from 
the input
- * @cfg {boolean} [highlightOnFilter] Highlight the first result when filtering
- * @cfg {number} [width] Width of the menu
+ * @param {boolean} [config.autoHide=true] Hide the menu when the mouse is 
pressed outside the menu.
+ * @param {jQuery} [config.$autoCloseIgnore] If these elements are clicked, 
don't auto-hide the menu.
+ * @param {boolean} [config.hideOnChoose=true] Hide the menu when the user 
chooses an option.
+ * @param {boolean} [config.filterFromInput=false] Filter the displayed 
options from the input
+ * @param {boolean} [config.highlightOnFilter] Highlight the first result when 
filtering
+ * @param {number} [config.width] Width of the menu
  */
 OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/MenuTagMultiselectWidget.js 
b/src/widgets/MenuTagMultiselectWidget.js
index 52ea584..e93cc00 100644
--- a/src/widgets/MenuTagMultiselectWidget.js
+++ b/src/widgets/MenuTagMultiselectWidget.js
@@ -20,10 +20,10 @@
  *
  * @constructor
  * @param {Object} [config] Configuration object
- * @cfg {Object} [menu] Configuration object for the menu widget
- * @cfg {jQuery} [$overlay] An overlay for the menu.
+ * @param {Object} [config.menu] Configuration object for the menu widget
+ * @param {jQuery} [config.$overlay] An overlay for the menu.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
- * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: 
…, label: … }`
+ * @param {Object[]} [config.options=[]] Array of menu options in the format 
`{ data: …, label: … }`
  */
 OO.ui.MenuTagMultiselectWidget = function OoUiMenuTagMultiselectWidget( config 
) {
        config = config || {};
diff --git a/src/widgets/MultilineTextInputWidget.js 
b/src/widgets/MultilineTextInputWidget.js
index 112c3e5..d4192fc 100644
--- a/src/widgets/MultilineTextInputWidget.js
+++ b/src/widgets/MultilineTextInputWidget.js
@@ -4,12 +4,12 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {number} [rows] Number of visible lines in textarea. If used with 
`autosize`,
+ * @param {number} [config.rows] Number of visible lines in textarea. If used 
with `autosize`,
  *  specifies minimum number of rows to display.
- * @cfg {string} [labelPosition='after'] The position of the inline label 
relative to that of
- * @cfg {boolean} [autosize=false] Automatically resize the text input to fit 
its content.
+ * @param {string} [config.labelPosition='after'] The position of the inline 
label relative to that of
+ * @param {boolean} [config.autosize=false] Automatically resize the text 
input to fit its content.
  *  Use the #maxRows config to specify a maximum number of displayed rows.
- * @cfg {number} [maxRows] Maximum number of rows to display when #autosize is 
set to true.
+ * @param {number} [config.maxRows] Maximum number of rows to display when 
#autosize is set to true.
  *  Defaults to the maximum of `10` and `2 * rows`, or `10` if `rows` isn't 
provided.
  */
 OO.ui.MultilineTextInputWidget = function OoUiMultilineTextInputWidget( config 
) {
diff --git a/src/widgets/MultioptionWidget.js b/src/widgets/MultioptionWidget.js
index 995e03d..0cfb0eb 100644
--- a/src/widgets/MultioptionWidget.js
+++ b/src/widgets/MultioptionWidget.js
@@ -8,12 +8,12 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.ItemWidget
- * @mixins OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.ItemWidget
+ * @mixes OO.ui.mixin.LabelElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [selected=false] Whether the option is initially selected
+ * @param {boolean} [config.selected=false] Whether the option is initially 
selected
  */
 OO.ui.MultioptionWidget = function OoUiMultioptionWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/MultiselectWidget.js b/src/widgets/MultiselectWidget.js
index 4080653..480448c 100644
--- a/src/widgets/MultiselectWidget.js
+++ b/src/widgets/MultiselectWidget.js
@@ -8,11 +8,11 @@
  * @class
  * @abstract
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupWidget
+ * @mixes OO.ui.mixin.GroupWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.MultioptionWidget[]} [items] An array of options to add to the 
multiselect.
+ * @param {OO.ui.MultioptionWidget[]} [config.items] An array of options to 
add to the multiselect.
  */
 OO.ui.MultiselectWidget = function OoUiMultiselectWidget( config ) {
        // Parent constructor
diff --git a/src/widgets/NumberInputWidget.js b/src/widgets/NumberInputWidget.js
index 33b2012..db7f502 100644
--- a/src/widgets/NumberInputWidget.js
+++ b/src/widgets/NumberInputWidget.js
@@ -18,14 +18,14 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [minusButton] Configuration options to pass to the {@link 
OO.ui.ButtonWidget decrementing button widget}.
- * @cfg {Object} [plusButton] Configuration options to pass to the {@link 
OO.ui.ButtonWidget incrementing button widget}.
- * @cfg {boolean} [allowInteger=false] Whether the field accepts only integer 
values.
- * @cfg {number} [min=-Infinity] Minimum allowed value
- * @cfg {number} [max=Infinity] Maximum allowed value
- * @cfg {number} [step=1] Delta when using the buttons or up/down arrow keys
- * @cfg {number|null} [pageStep] Delta when using the page-up/page-down keys. 
Defaults to 10 times #step.
- * @cfg {boolean} [showButtons=true] Whether to show the plus and minus 
buttons.
+ * @param {Object} [config.minusButton] Configuration options to pass to the 
{@link OO.ui.ButtonWidget decrementing button widget}.
+ * @param {Object} [config.plusButton] Configuration options to pass to the 
{@link OO.ui.ButtonWidget incrementing button widget}.
+ * @param {boolean} [config.allowInteger=false] Whether the field accepts only 
integer values.
+ * @param {number} [config.min=-Infinity] Minimum allowed value
+ * @param {number} [config.max=Infinity] Maximum allowed value
+ * @param {number} [config.step=1] Delta when using the buttons or up/down 
arrow keys
+ * @param {number|null} [config.pageStep] Delta when using the 
page-up/page-down keys. Defaults to 10 times #step.
+ * @param {boolean} [config.showButtons=true] Whether to show the plus and 
minus buttons.
  */
 OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
        var $field = $( '<div>' )
diff --git a/src/widgets/OptionWidget.js b/src/widgets/OptionWidget.js
index 38b1eea..399e14c 100644
--- a/src/widgets/OptionWidget.js
+++ b/src/widgets/OptionWidget.js
@@ -8,10 +8,10 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.ItemWidget
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.AccessKeyedElement
+ * @mixes OO.ui.mixin.ItemWidget
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.AccessKeyedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/OutlineControlsWidget.js 
b/src/widgets/OutlineControlsWidget.js
index a60c709..0066a68 100644
--- a/src/widgets/OutlineControlsWidget.js
+++ b/src/widgets/OutlineControlsWidget.js
@@ -6,15 +6,15 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupElement
- * @mixins OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.GroupElement
+ * @mixes OO.ui.mixin.IconElement
  *
  * @constructor
  * @param {OO.ui.OutlineSelectWidget} outline Outline to control
  * @param {Object} [config] Configuration options
- * @cfg {Object} [abilities] List of abilties
- * @cfg {boolean} [abilities.move=true] Allow moving movable items
- * @cfg {boolean} [abilities.remove=true] Allow removing removable items
+ * @param {Object} [config.abilities] List of abilties
+ * @param {boolean} [config.abilities.move=true] Allow moving movable items
+ * @param {boolean} [config.abilities.remove=true] Allow removing removable 
items
  */
 OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, 
config ) {
        // Allow passing positional parameters inside the config object
diff --git a/src/widgets/OutlineOptionWidget.js 
b/src/widgets/OutlineOptionWidget.js
index 2d24fcd..d412a94 100644
--- a/src/widgets/OutlineOptionWidget.js
+++ b/src/widgets/OutlineOptionWidget.js
@@ -10,8 +10,8 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {number} [level] Indentation level
- * @cfg {boolean} [movable] Allow modification from {@link 
OO.ui.OutlineControlsWidget outline controls}.
+ * @param {number} [config.level] Indentation level
+ * @param {boolean} [config.movable] Allow modification from {@link 
OO.ui.OutlineControlsWidget outline controls}.
  */
 OO.ui.OutlineOptionWidget = function OoUiOutlineOptionWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/OutlineSelectWidget.js 
b/src/widgets/OutlineSelectWidget.js
index c00b026..b6bf6cb 100644
--- a/src/widgets/OutlineSelectWidget.js
+++ b/src/widgets/OutlineSelectWidget.js
@@ -6,7 +6,7 @@
  *
  * @class
  * @extends OO.ui.SelectWidget
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/PopupButtonWidget.js b/src/widgets/PopupButtonWidget.js
index bf15ece..7c8fae8 100644
--- a/src/widgets/PopupButtonWidget.js
+++ b/src/widgets/PopupButtonWidget.js
@@ -18,11 +18,11 @@
  *
  * @class
  * @extends OO.ui.ButtonWidget
- * @mixins OO.ui.mixin.PopupElement
+ * @mixes OO.ui.mixin.PopupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$overlay] Render the popup into a separate layer. This 
configuration is useful in cases where
+ * @param {jQuery} [config.$overlay] Render the popup into a separate layer. 
This configuration is useful in cases where
  *  the expanded popup is larger than its containing `<div>`. The specified 
overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the popup uses 
relative positioning.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
diff --git a/src/widgets/PopupTagMultiselectWidget.js 
b/src/widgets/PopupTagMultiselectWidget.js
index 84c8880..4980b68 100644
--- a/src/widgets/PopupTagMultiselectWidget.js
+++ b/src/widgets/PopupTagMultiselectWidget.js
@@ -19,13 +19,13 @@
  *
  * @class
  * @extends OO.ui.TagMultiselectWidget
- * @mixins OO.ui.mixin.PopupElement
+ * @mixes OO.ui.mixin.PopupElement
  *
  * @param {Object} config Configuration object
- * @cfg {jQuery} [$overlay] An overlay for the popup.
+ * @param {jQuery} [config.$overlay] An overlay for the popup.
  *  See <https://www.mediawiki.org/wiki/OOUI/Concepts#Overlays>.
- * @cfg {Object} [popup] Configuration options for the popup
- * @cfg {OO.ui.InputWidget} [popupInput] An input widget inside the popup that 
will be
+ * @param {Object} [config.popup] Configuration options for the popup
+ * @param {OO.ui.InputWidget} [config.popupInput] An input widget inside the 
popup that will be
  *  focused when the popup is opened and will be used as replacement for the
  *  general input in the widget.
  */
diff --git a/src/widgets/PopupWidget.js b/src/widgets/PopupWidget.js
index 790e0d5..7f22422 100644
--- a/src/widgets/PopupWidget.js
+++ b/src/widgets/PopupWidget.js
@@ -21,16 +21,16 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.ClippableElement
- * @mixins OO.ui.mixin.FloatableElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.ClippableElement
+ * @mixes OO.ui.mixin.FloatableElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {number} [width=320] Width of popup in pixels
- * @cfg {number} [height] Height of popup in pixels. Omit to use the automatic 
height.
- * @cfg {boolean} [anchor=true] Show anchor pointing to origin of popup
- * @cfg {string} [position='below'] Where to position the popup relative to 
$floatableContainer
+ * @param {number} [config.width=320] Width of popup in pixels
+ * @param {number} [config.height] Height of popup in pixels. Omit to use the 
automatic height.
+ * @param {boolean} [config.anchor=true] Show anchor pointing to origin of 
popup
+ * @param {string} [config.position='below'] Where to position the popup 
relative to $floatableContainer
  *  'above': Put popup above $floatableContainer; anchor points down to the 
horizontal center
  *           of $floatableContainer
  *  'below': Put popup below $floatableContainer; anchor points up to the 
horizontal center
@@ -39,7 +39,7 @@
  *            endwards (right/left) to the vertical center of 
$floatableContainer
  *  'after': Put popup to the right (LTR) / left (RTL) of $floatableContainer; 
anchor points
  *            startwards (left/right) to the vertical center of 
$floatableContainer
- * @cfg {string} [align='center'] How to align the popup to $floatableContainer
+ * @param {string} [config.align='center'] How to align the popup to 
$floatableContainer
  *  'forwards': If position is above/below, move the popup as far endwards 
(right in LTR, left in RTL)
  *              as possible while still keeping the anchor within the popup;
  *              if position is before/after, move the popup as far downwards 
as possible.
@@ -50,23 +50,23 @@
  *            of the popup with the center of $floatableContainer.
  * 'force-left': Alias for 'forwards' in LTR and 'backwards' in RTL
  * 'force-right': Alias for 'backwards' in RTL and 'forwards' in LTR
- * @cfg {boolean} [autoFlip=true] Whether to automatically switch the popup's 
position between
+ * @param {boolean} [config.autoFlip=true] Whether to automatically switch the 
popup's position between
  *  'above' and 'below', or between 'before' and 'after', if there is not 
enough space in the
  *  desired direction to display the popup without clipping
- * @cfg {jQuery} [$container] Constrain the popup to the boundaries of the 
specified container.
+ * @param {jQuery} [config.$container] Constrain the popup to the boundaries 
of the specified container.
  *  See the [OOUI docs on MediaWiki][3] for an example.
  *  [3]: https://www.mediawiki.org/wiki/OOUI/Widgets/Popups#containerExample
- * @cfg {number} [containerPadding=10] Padding between the popup and its 
container, specified as a number of pixels.
- * @cfg {jQuery} [$content] Content to append to the popup's body
- * @cfg {jQuery} [$footer] Content to append to the popup's footer
- * @cfg {boolean} [autoClose=false] Automatically close the popup when it 
loses focus.
- * @cfg {jQuery} [$autoCloseIgnore] Elements that will not close the popup 
when clicked.
+ * @param {number} [config.containerPadding=10] Padding between the popup and 
its container, specified as a number of pixels.
+ * @param {jQuery} [config.$content] Content to append to the popup's body
+ * @param {jQuery} [config.$footer] Content to append to the popup's footer
+ * @param {boolean} [config.autoClose=false] Automatically close the popup 
when it loses focus.
+ * @param {jQuery} [config.$autoCloseIgnore] Elements that will not close the 
popup when clicked.
  *  This config option is only relevant if #autoClose is set to `true`. See 
the [OOUI documentation on MediaWiki][2]
  *  for an example.
  *  [2]: https://www.mediawiki.org/wiki/OOUI/Widgets/Popups#autocloseExample
- * @cfg {boolean} [head=false] Show a popup header that contains a #label (if 
specified) and close
+ * @param {boolean} [config.head=false] Show a popup header that contains a 
#label (if specified) and close
  *  button.
- * @cfg {boolean} [padded=false] Add padding to the popup's body
+ * @param {boolean} [config.padded=false] Add padding to the popup's body
  */
 OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/ProgressBarWidget.js b/src/widgets/ProgressBarWidget.js
index c0b0dc3..781d4f4 100644
--- a/src/widgets/ProgressBarWidget.js
+++ b/src/widgets/ProgressBarWidget.js
@@ -30,7 +30,7 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {number|boolean} [progress=false] The type of progress bar 
(determinate or indeterminate).
+ * @param {number|boolean} [config.progress=false] The type of progress bar 
(determinate or indeterminate).
  *  To create a determinate progress bar, specify a number that reflects the 
initial percent complete.
  *  By default, the progress bar is indeterminate.
  */
diff --git a/src/widgets/RadioInputWidget.js b/src/widgets/RadioInputWidget.js
index 1790128..738a627 100644
--- a/src/widgets/RadioInputWidget.js
+++ b/src/widgets/RadioInputWidget.js
@@ -37,7 +37,7 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [selected=false] Select the radio button initially. By 
default, the radio button is not selected.
+ * @param {boolean} [config.selected=false] Select the radio button initially. 
By default, the radio button is not selected.
  */
 OO.ui.RadioInputWidget = function OoUiRadioInputWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/RadioSelectInputWidget.js 
b/src/widgets/RadioSelectInputWidget.js
index 953ec75..9032cea 100644
--- a/src/widgets/RadioSelectInputWidget.js
+++ b/src/widgets/RadioSelectInputWidget.js
@@ -24,7 +24,7 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: 
…, label: … }`
+ * @param {Object[]} [config.options=[]] Array of menu options in the format 
`{ data: …, label: … }`
  */
 OO.ui.RadioSelectInputWidget = function OoUiRadioSelectInputWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/RadioSelectWidget.js b/src/widgets/RadioSelectWidget.js
index 7c8a4eb..2e9e1ff 100644
--- a/src/widgets/RadioSelectWidget.js
+++ b/src/widgets/RadioSelectWidget.js
@@ -33,7 +33,7 @@
  *
  * @class
  * @extends OO.ui.SelectWidget
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/SearchWidget.js b/src/widgets/SearchWidget.js
index 662b660..e5779d9 100644
--- a/src/widgets/SearchWidget.js
+++ b/src/widgets/SearchWidget.js
@@ -15,8 +15,8 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string|jQuery} [placeholder] Placeholder text for query input
- * @cfg {string} [value] Initial query value
+ * @param {string|jQuery} [config.placeholder] Placeholder text for query input
+ * @param {string} [config.value] Initial query value
  */
 OO.ui.SearchWidget = function OoUiSearchWidget( config ) {
        // Configuration initialization
diff --git a/src/widgets/SelectFileWidget.js b/src/widgets/SelectFileWidget.js
index 69cd656..2e6d5e7 100644
--- a/src/widgets/SelectFileWidget.js
+++ b/src/widgets/SelectFileWidget.js
@@ -13,19 +13,19 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.PendingElement
- * @mixins OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.PendingElement
+ * @mixes OO.ui.mixin.LabelElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string[]|null} [accept=null] MIME types to accept. null accepts all 
types.
- * @cfg {string} [placeholder] Text to display when no file is selected.
- * @cfg {string} [notsupported] Text to display when file support is missing 
in the browser.
- * @cfg {boolean} [droppable=true] Whether to accept files by drag and drop.
- * @cfg {boolean} [showDropTarget=false] Whether to show a drop target. 
Requires droppable to be true.
- * @cfg {number} [thumbnailSizeLimit=20] File size limit in MiB above which to 
not try and show a
+ * @param {string[]|null} [config.accept=null] MIME types to accept. null 
accepts all types.
+ * @param {string} [config.placeholder] Text to display when no file is 
selected.
+ * @param {string} [config.notsupported] Text to display when file support is 
missing in the browser.
+ * @param {boolean} [config.droppable=true] Whether to accept files by drag 
and drop.
+ * @param {boolean} [config.showDropTarget=false] Whether to show a drop 
target. Requires droppable to be true.
+ * @param {number} [config.thumbnailSizeLimit=20] File size limit in MiB above 
which to not try and show a
  *  preview (for performance)
  */
 OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
diff --git a/src/widgets/SelectWidget.js b/src/widgets/SelectWidget.js
index a26f0df..1eda9ce 100644
--- a/src/widgets/SelectWidget.js
+++ b/src/widgets/SelectWidget.js
@@ -32,11 +32,11 @@
  * @abstract
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupWidget
+ * @mixes OO.ui.mixin.GroupWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.OptionWidget[]} [items] An array of options to add to the 
select.
+ * @param {OO.ui.OptionWidget[]} [config.items] An array of options to add to 
the select.
  *  Options are created with {@link OO.ui.OptionWidget OptionWidget} classes. 
See
  *  the [OOUI documentation on MediaWiki] [2] for examples.
  *  [2]: https://www.mediawiki.org/wiki/OOUI/Widgets/Selects_and_Options
@@ -91,51 +91,47 @@
 /* Events */
 
 /**
- * @event highlight
- *
  * A `highlight` event is emitted when the highlight is changed with the 
#highlightItem method.
  *
+ * @event OO.ui.SelectWidget#highlight
  * @param {OO.ui.OptionWidget|null} item Highlighted item
  */
 
 /**
- * @event press
- *
  * A `press` event is emitted when the #pressItem method is used to 
programmatically modify the
  * pressed state of an option.
  *
+ * @event OO.ui.SelectWidget#press
  * @param {OO.ui.OptionWidget|null} item Pressed item
  */
 
 /**
- * @event select
- *
  * A `select` event is emitted when the selection is modified programmatically 
with the #selectItem method.
  *
+ * @event OO.ui.SelectWidget#select
  * @param {OO.ui.OptionWidget|null} item Selected item
  */
 
 /**
- * @event choose
  * A `choose` event is emitted when an item is chosen with the #chooseItem 
method.
+ *
+ * @event OO.ui.SelectWidget#choose
  * @param {OO.ui.OptionWidget} item Chosen item
  */
 
 /**
- * @event add
- *
  * An `add` event is emitted when options are added to the select with the 
#addItems method.
  *
+ * @event OO.ui.SelectWidget#add
  * @param {OO.ui.OptionWidget[]} items Added items
  * @param {number} index Index of insertion point
  */
 
 /**
- * @event remove
- *
  * A `remove` event is emitted when options are removed from the select with 
the #clearItems
  * or #removeItems methods.
  *
+ * @event OO.ui.SelectWidget#remove
  * @param {OO.ui.OptionWidget[]} items Removed items
  */
 
diff --git a/src/widgets/TabSelectWidget.js b/src/widgets/TabSelectWidget.js
index a696815..b9ec2a7 100644
--- a/src/widgets/TabSelectWidget.js
+++ b/src/widgets/TabSelectWidget.js
@@ -5,7 +5,7 @@
  *
  * @class
  * @extends OO.ui.SelectWidget
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
diff --git a/src/widgets/TagItemWidget.js b/src/widgets/TagItemWidget.js
index d6ee7b9..001f6a3 100644
--- a/src/widgets/TagItemWidget.js
+++ b/src/widgets/TagItemWidget.js
@@ -4,15 +4,15 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.ItemWidget
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.TabIndexedElement
- * @mixins OO.ui.mixin.DraggableElement
+ * @mixes OO.ui.mixin.ItemWidget
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.DraggableElement
  *
  * @constructor
  * @param {Object} [config] Configuration object
- * @cfg {boolean} [valid=true] Item is valid
+ * @param {boolean} [config.valid=true] Item is valid
  */
 OO.ui.TagItemWidget = function OoUiTagItemWidget( config ) {
        config = config || {};
diff --git a/src/widgets/TagMultiselectWidget.js 
b/src/widgets/TagMultiselectWidget.js
index b7d35d0..b673543 100644
--- a/src/widgets/TagMultiselectWidget.js
+++ b/src/widgets/TagMultiselectWidget.js
@@ -17,36 +17,36 @@
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupWidget
- * @mixins OO.ui.mixin.DraggableGroupElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.TabIndexedElement
- * @mixins OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.GroupWidget
+ * @mixes OO.ui.mixin.DraggableGroupElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.FlaggedElement
  *
  * @constructor
  * @param {Object} config Configuration object
- * @cfg {Object} [input] Configuration options for the input widget
- * @cfg {OO.ui.InputWidget} [inputWidget] An optional input widget. If given, 
it will
+ * @param {Object} [config.input] Configuration options for the input widget
+ * @param {OO.ui.InputWidget} [config.inputWidget] An optional input widget. 
If given, it will
  *  replace the input widget used in the TagMultiselectWidget. If not given,
  *  TagMultiselectWidget creates its own.
- * @cfg {boolean} [inputPosition='inline'] Position of the input. Options are:
+ * @param {boolean} [config.inputPosition='inline'] Position of the input. 
Options are:
  *     - inline: The input is invisible, but exists inside the tag list, so
  *             the user types into the tag groups to add tags.
  *     - outline: The input is underneath the tag area.
  *     - none: No input supplied
- * @cfg {boolean} [allowEditTags=true] Allow editing of the tags by clicking 
them
- * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if
+ * @param {boolean} [config.allowEditTags=true] Allow editing of the tags by 
clicking them
+ * @param {boolean} [config.allowArbitrary=false] Allow data items to be added 
even if
  *  not present in the menu.
- * @cfg {Object[]} [allowedValues] An array representing the allowed items
+ * @param {Object[]} [config.allowedValues] An array representing the allowed 
items
  *  by their datas.
- * @cfg {boolean} [allowDuplicates=false] Allow duplicate items to be added
- * @cfg {boolean} [allowDisplayInvalidTags=false] Allow the display of
+ * @param {boolean} [config.allowDuplicates=false] Allow duplicate items to be 
added
+ * @param {boolean} [config.allowDisplayInvalidTags=false] Allow the display of
  *  invalid tags. These tags will display with an invalid state, and
  *  the widget as a whole will have an invalid state if any invalid tags
  *  are present.
- * @cfg {boolean} [allowReordering=true] Allow reordering of the items
- * @cfg {Object[]|String[]} [selected] A set of selected tags. If given,
+ * @param {boolean} [config.allowReordering=true] Allow reordering of the items
+ * @param {Object[]|String[]} [config.selected] A set of selected tags. If 
given,
  *  these will appear in the tag list on initialization, as long as they
  *  pass the validity tests.
  */
diff --git a/src/widgets/TextInputWidget.js b/src/widgets/TextInputWidget.js
index 45908d1..42ed364 100644
--- a/src/widgets/TextInputWidget.js
+++ b/src/widgets/TextInputWidget.js
@@ -19,28 +19,28 @@
  *
  * @class
  * @extends OO.ui.InputWidget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.PendingElement
- * @mixins OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.PendingElement
+ * @mixes OO.ui.mixin.LabelElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 
'password'
+ * @param {string} [config.type='text'] The value of the HTML `type` 
attribute: 'text', 'password'
  *  'email', 'url' or 'number'.
- * @cfg {string} [placeholder] Placeholder text
- * @cfg {boolean} [autofocus=false] Use an HTML `autofocus` attribute to
+ * @param {string} [config.placeholder] Placeholder text
+ * @param {boolean} [config.autofocus=false] Use an HTML `autofocus` attribute 
to
  *  instruct the browser to focus this widget.
- * @cfg {boolean} [readOnly=false] Prevent changes to the value of the text 
input.
- * @cfg {number} [maxLength] Maximum number of characters allowed in the input.
- * @cfg {string} [labelPosition='after'] The position of the inline label 
relative to that of
+ * @param {boolean} [config.readOnly=false] Prevent changes to the value of 
the text input.
+ * @param {number} [config.maxLength] Maximum number of characters allowed in 
the input.
+ * @param {string} [config.labelPosition='after'] The position of the inline 
label relative to that of
  *  the value or placeholder text: `'before'` or `'after'`
- * @cfg {boolean} [required=false] Mark the field as required with `true`. 
Implies `indicator: 'required'`.
+ * @param {boolean} [config.required=false] Mark the field as required with 
`true`. Implies `indicator: 'required'`.
  *  Note that `false` & setting `indicator: 'required' will result in no 
indicator shown.
- * @cfg {boolean} [autocomplete=true] Should the browser support autocomplete 
for this field
- * @cfg {boolean} [spellcheck] Should the browser support spellcheck for this 
field (`undefined` means
+ * @param {boolean} [config.autocomplete=true] Should the browser support 
autocomplete for this field
+ * @param {boolean} [config.spellcheck] Should the browser support spellcheck 
for this field (`undefined` means
  *  leaving it up to the browser).
- * @cfg {RegExp|Function|string} [validate] Validation pattern: when string, a 
symbolic name of a
+ * @param {RegExp|Function|string} [config.validate] Validation pattern: when 
string, a symbolic name of a
  *  pattern defined by the class: 'non-empty' (the value cannot be an empty 
string) or 'integer'
  *  (the value must contain only numbers); when RegExp, a regular expression 
that must match the
  *  value for it to be considered valid; when Function, a function receiving 
the value as parameter
diff --git a/src/widgets/ToggleButtonWidget.js 
b/src/widgets/ToggleButtonWidget.js
index 4f9adbf..ff897d7 100644
--- a/src/widgets/ToggleButtonWidget.js
+++ b/src/widgets/ToggleButtonWidget.js
@@ -22,17 +22,17 @@
  *
  * @class
  * @extends OO.ui.ToggleWidget
- * @mixins OO.ui.mixin.ButtonElement
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
- * @mixins OO.ui.mixin.FlaggedElement
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.ButtonElement
+ * @mixes OO.ui.mixin.IconElement
+ * @mixes OO.ui.mixin.IndicatorElement
+ * @mixes OO.ui.mixin.LabelElement
+ * @mixes OO.ui.mixin.TitledElement
+ * @mixes OO.ui.mixin.FlaggedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [value=false] The toggle button’s initial on/off
+ * @param {boolean} [config.value=false] The toggle button’s initial on/off
  *  state. By default, the button is in the 'off' state.
  */
 OO.ui.ToggleButtonWidget = function OoUiToggleButtonWidget( config ) {
diff --git a/src/widgets/ToggleSwitchWidget.js 
b/src/widgets/ToggleSwitchWidget.js
index 94ef374..354e40b 100644
--- a/src/widgets/ToggleSwitchWidget.js
+++ b/src/widgets/ToggleSwitchWidget.js
@@ -22,11 +22,11 @@
  *
  * @class
  * @extends OO.ui.ToggleWidget
- * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixes OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [value=false] The toggle switch’s initial on/off state.
+ * @param {boolean} [config.value=false] The toggle switch’s initial on/off 
state.
  *  By default, the toggle switch is in the 'off' position.
  */
 OO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {
diff --git a/src/widgets/ToggleWidget.js b/src/widgets/ToggleWidget.js
index ee5bff7..9969d9b 100644
--- a/src/widgets/ToggleWidget.js
+++ b/src/widgets/ToggleWidget.js
@@ -8,7 +8,7 @@
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [value=false] The toggle’s initial on/off state.
+ * @param {boolean} [config.value=false] The toggle’s initial on/off state.
  *  By default, the toggle is in the 'off' state.
  */
 OO.ui.ToggleWidget = function OoUiToggleWidget( config ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/405543
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I65a7bbd8d0311c4537e06f89922f39b4d67f805e
Gerrit-PatchSet: 1
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: Jforrester <[email protected]>
Gerrit-Reviewer: Prtksxna <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to