modules/ve-mw/preinit/ve.init.MWVESwitchPopupWidget.js
/*!
* VisualEditor user interface MWVESwitchPopupWidget class.
*
* @copyright See AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
mw.libs.ve = mw.libs.ve || {};
/**
* @class
* @extends OO.ui.PopupWidget
*
* @constructor
* @param {string} mode Current edit mode
* @param {Object} [config] Configuration options
*/
mw.libs.ve.SwitchPopupWidget = function MWLibsVESwitchPopupWidget( mode, config ) {
const prefix = mode === 'visual' ? 'visualeditor-mweditmodewt' : 'visualeditor-mweditmodeve',
option = mode === 'visual' ? 'visualeditor-hidevisualswitchpopup' : 'visualeditor-hidesourceswitchpopup';
// Parent constructor
mw.libs.ve.SwitchPopupWidget.super.call( this, $.extend( {
autoClose: true,
head: true,
// The following messages are used here:
// * visualeditor-mweditmodewt-popup-title
// * visualeditor-mweditmodeve-popup-title
label: mw.msg( prefix + '-popup-title' ),
padded: true
}, config ) );
// The following messages are used here:
// * visualeditor-mweditmodewt-popup-body
// * visualeditor-mweditmodeve-popup-body
let $content = $( '<p>' ).text( mw.msg( prefix + '-popup-body' ) );
if ( mw.user.isNamed() ) {
const showAgainCheckbox = new OO.ui.CheckboxInputWidget()
.on( 'change', ( value ) => {
const configValue = value ? '1' : '';
new mw.Api().saveOption( option, configValue );
mw.user.options.set( option, configValue );
} );
const showAgainLayout = new OO.ui.FieldLayout( showAgainCheckbox, {
align: 'inline',
label: mw.msg( 'visualeditor-mweditmodeve-showagain' )
} );
$content = $content.add( showAgainLayout.$element );
}
this.$body.append( $content );
this.$element
// HACK: Pretend to be a PopupTool
// TODO: Create upstream PopupListToolGroup
.addClass( 've-init-mw-switchPopupWidget' );
};
/* Inheritance */
OO.inheritClass( mw.libs.ve.SwitchPopupWidget, OO.ui.PopupWidget );