f858ab0fd6c01f2455368c8b50e81ad9e5901d8c
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' )
30 this.$overlay
= config
.$overlay
|| this.$element
;
33 this.populateFromModel();
35 this.model
.connect( this, { update
: 'onModelUpdate' } );
38 .addClass( 'mw-rcfilters-ui-filterGroupWidget' )
42 .addClass( 'mw-rcfilters-ui-filterGroupWidget-group' )
48 OO
.inheritClass( mw
.rcfilters
.ui
.FilterGroupWidget
, OO
.ui
.Widget
);
49 OO
.mixinClass( mw
.rcfilters
.ui
.FilterGroupWidget
, OO
.ui
.mixin
.GroupWidget
);
50 OO
.mixinClass( mw
.rcfilters
.ui
.FilterGroupWidget
, OO
.ui
.mixin
.LabelElement
);
53 * Respond to model update event
55 mw
.rcfilters
.ui
.FilterGroupWidget
.prototype.onModelUpdate = function () {
56 this.$element
.toggleClass(
57 'mw-rcfilters-ui-filterGroupWidget-active',
62 mw
.rcfilters
.ui
.FilterGroupWidget
.prototype.populateFromModel = function () {
66 this.model
.getItems().map( function ( filterItem
) {
67 return new mw
.rcfilters
.ui
.FilterItemWidget(
71 label
: filterItem
.getLabel(),
72 description
: filterItem
.getDescription(),
73 $overlay
: widget
.$overlay
83 * @return {string} Group name
85 mw
.rcfilters
.ui
.FilterGroupWidget
.prototype.getName = function () {
86 return this.model
.getName();
88 }( mediaWiki
, jQuery
) );