Merge "includes: Replace implicit Bugzilla bug numbers with Phab ones"
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / ui / mw.rcfilters.ui.FilterItemHighlightButton.js
1 ( function ( mw, $ ) {
2 /**
3 * A button to configure highlight for a filter item
4 *
5 * @extends OO.ui.PopupButtonWidget
6 *
7 * @constructor
8 * @param {mw.rcfilters.Controller} controller RCFilters controller
9 * @param {mw.rcfilters.dm.FilterItem} model Filter item model
10 * @param {Object} [config] Configuration object
11 */
12 mw.rcfilters.ui.FilterItemHighlightButton = function MwRcfiltersUiFilterItemHighlightButton( controller, model, config ) {
13 config = config || {};
14
15 this.colorPickerWidget = new mw.rcfilters.ui.HighlightColorPickerWidget( controller, model );
16
17 // Parent
18 mw.rcfilters.ui.FilterItemHighlightButton.parent.call( this, $.extend( {}, config, {
19 icon: 'edit',
20 indicator: 'down',
21 popup: {
22 anchor: false,
23 padded: true,
24 align: 'backwards',
25 width: 290,
26 $content: this.colorPickerWidget.$element
27 }
28 } ) );
29
30 this.controller = controller;
31 this.model = model;
32
33 // Event
34 this.model.connect( this, { update: 'onModelUpdate' } );
35 this.colorPickerWidget.connect( this, { chooseColor: 'onChooseColor' } );
36
37 this.$element
38 .addClass( 'mw-rcfilters-ui-filterItemHighlightButton' );
39 };
40
41 /* Initialization */
42
43 OO.inheritClass( mw.rcfilters.ui.FilterItemHighlightButton, OO.ui.PopupButtonWidget );
44
45 /* Methods */
46
47 /**
48 * Respond to item model update event
49 */
50 mw.rcfilters.ui.FilterItemHighlightButton.prototype.onModelUpdate = function () {
51 var currentColor = this.model.getHighlightColor(),
52 widget = this;
53
54 this.$icon.toggleClass(
55 'mw-rcfilters-ui-filterItemHighlightButton-circle',
56 currentColor !== null
57 );
58
59 mw.rcfilters.HighlightColors.forEach( function ( c ) {
60 widget.$icon
61 .toggleClass(
62 'mw-rcfilters-ui-filterItemHighlightButton-circle-color-' + c,
63 c === currentColor
64 );
65 } );
66 };
67
68 mw.rcfilters.ui.FilterItemHighlightButton.prototype.onChooseColor = function () {
69 this.popup.toggle( false );
70 };
71 }( mediaWiki, jQuery ) );