# all files / src/widgets/ ToggleWidget.js

23.53% Statements 4/17
0% Branches 0/4
0% Functions 0/3
23.53% Lines 4/17

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71

    1×

    1×

    1×

    1×

     /**
     * ToggleWidget implements basic behavior of widgets with an on/off state.
     * Please see OO.ui.ToggleButtonWidget and OO.ui.ToggleSwitchWidget for examples.
     *
     * @abstract
     * @class
     * @extends OO.ui.Widget
     *
     * @constructor
     * @param {Object} [config] Configuration options
     * @cfg {boolean} [value=false] The toggle’s initial on/off state.
     *  By default, the toggle is in the 'off' state.
     */
    OO.ui.ToggleWidget = function OoUiToggleWidget( config ) {
    	// Configuration initialization
    	config = config || {};

    	// Parent constructor
    	OO.ui.ToggleWidget.parent.call( this, config );

    	// Properties
    	this.value = null;

    	// Initialization
    	this.$element.addClass( 'oo-ui-toggleWidget' );
    	this.setValue( !!config.value );
    };

    /* Setup */

    OO.inheritClass( OO.ui.ToggleWidget, OO.ui.Widget );

    /* Events */

    /**
     * @event change
     *
     * A change event is emitted when the on/off state of the toggle changes.
     *
     * @param {boolean} value Value representing the new state of the toggle
     */

    /* Methods */

    /**
     * Get the value representing the toggle’s state.
     *
     * @return {boolean} The on/off state of the toggle
     */
    OO.ui.ToggleWidget.prototype.getValue = function () {
    	return this.value;
    };

    /**
     * Set the state of the toggle: `true` for 'on', `false` for 'off'.
     *
     * @param {boolean} value The state of the toggle
     * @fires change
     * @chainable
     */
    OO.ui.ToggleWidget.prototype.setValue = function ( value ) {
    	value = !!value;
    	if ( this.value !== value ) {
    		this.value = value;
    		this.emit( 'change', value );
    		this.$element.toggleClass( 'oo-ui-toggleWidget-on', value );
    		this.$element.toggleClass( 'oo-ui-toggleWidget-off', !value );
    	}
    	return this;
    };