5 * @extends OO.ui.Widget
6 * @mixins OO.ui.mixin.GroupWidget
7 * @mixins OO.ui.mixin.LabelElement
10 * @param {mw.rcfilters.Controller} controller Controller
11 * @param {mw.rcfilters.dm.FilterGroup} model Filter group model
12 * @param {Object} config Configuration object
14 mw
.rcfilters
.ui
.FilterGroupWidget
= function MwRcfiltersUiFilterGroupWidget( controller
, model
, config
) {
15 config
= config
|| {};
18 mw
.rcfilters
.ui
.FilterGroupWidget
.parent
.call( this, config
);
20 this.controller
= controller
;
24 OO
.ui
.mixin
.GroupWidget
.call( this, config
);
25 OO
.ui
.mixin
.LabelElement
.call( this, $.extend( {}, config
, {
26 label
: this.model
.getTitle(),
28 .addClass( 'mw-rcfilters-ui-filterGroupWidget-title' )
32 this.populateFromModel();
34 this.model
.connect( this, { update
: 'onModelUpdate' } );
37 .addClass( 'mw-rcfilters-ui-filterGroupWidget' )
41 .addClass( 'mw-rcfilters-ui-filterGroupWidget-group' )
47 OO
.inheritClass( mw
.rcfilters
.ui
.FilterGroupWidget
, OO
.ui
.Widget
);
48 OO
.mixinClass( mw
.rcfilters
.ui
.FilterGroupWidget
, OO
.ui
.mixin
.GroupWidget
);
49 OO
.mixinClass( mw
.rcfilters
.ui
.FilterGroupWidget
, OO
.ui
.mixin
.LabelElement
);
52 * Respond to model update event
54 mw
.rcfilters
.ui
.FilterGroupWidget
.prototype.onModelUpdate = function () {
55 this.$element
.toggleClass(
56 'mw-rcfilters-ui-filterGroupWidget-active',
61 mw
.rcfilters
.ui
.FilterGroupWidget
.prototype.populateFromModel = function () {
65 this.model
.getItems().map( function ( filterItem
) {
66 return new mw
.rcfilters
.ui
.FilterItemWidget(
70 label
: filterItem
.getLabel(),
71 description
: filterItem
.getDescription()
81 * @return {string} Group name
83 mw
.rcfilters
.ui
.FilterGroupWidget
.prototype.getName = function () {
84 return this.model
.getName();
86 }( mediaWiki
, jQuery
) );