Localisation updates from https://translatewiki.net.
[mediawiki.git] / resources / src / mediawiki.rcfilters / ui / MarkSeenButtonWidget.js
blobe2c7e38e2ce9aa10787775da55fc3fa4c17eade5
1 /**
2  * Button for marking all changes as seen on the Watchlist.
3  *
4  * @class mw.rcfilters.ui.MarkSeenButtonWidget
5  * @ignore
6  * @extends OO.ui.ButtonWidget
7  *
8  * @param {mw.rcfilters.Controller} controller
9  * @param {mw.rcfilters.dm.ChangesListViewModel} model Changes list view model
10  * @param {Object} [config] Configuration object
11  */
12 const MarkSeenButtonWidget = function MwRcfiltersUiMarkSeenButtonWidget( controller, model, config ) {
13         config = config || {};
15         // Parent
16         MarkSeenButtonWidget.super.call( this, Object.assign( {
17                 label: mw.msg( 'rcfilters-watchlist-markseen-button' ),
18                 icon: 'checkAll'
19         }, config ) );
21         this.controller = controller;
22         this.model = model;
24         // Events
25         this.connect( this, { click: 'onClick' } );
26         this.model.connect( this, { update: 'onModelUpdate' } );
28         this.$element.addClass( 'mw-rcfilters-ui-markSeenButtonWidget' );
30         this.onModelUpdate();
33 /* Initialization */
35 OO.inheritClass( MarkSeenButtonWidget, OO.ui.ButtonWidget );
37 /* Methods */
39 /**
40  * Respond to the button being clicked
41  */
42 MarkSeenButtonWidget.prototype.onClick = function () {
43         this.controller.markAllChangesAsSeen();
44         // assume there's no more unseen changes until the next model update
45         this.setDisabled( true );
48 /**
49  * Respond to the model being updated with new changes
50  */
51 MarkSeenButtonWidget.prototype.onModelUpdate = function () {
52         this.setDisabled( !this.model.hasUnseenWatchedChanges() );
55 module.exports = MarkSeenButtonWidget;