wikimedia/mediawiki-extensions-VisualEditor

View on GitHub
modules/ve-mw/preinit/ve.init.MWVESwitchPopupWidget.js

Summary

Maintainability
A
25 mins
Test Coverage
/*!
 * 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 );