/
device-preview.js
86 lines (71 loc) · 2.31 KB
/
device-preview.js
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var $ = window.jQuery,
DevicePreviewModule;
DevicePreviewModule = Marionette.Module.extend( {
device : 'desktop',
onBeforeStart : function() {
var module = this;
var api = {
/**
* Returns the current device preview size.
*
* @since 1.7.4
*
* @returns {*}
*/
getDevice : function() {
return module.device;
}
};
app.channel.reply( 'sidebar:device', api.getDevice );
},
/**
* Initializes the module.
*
* @since 1.7.4
*/
onStart : function() {
var module = this;
this.$buttons = $( '.tailor-sidebar .devices button' );
this.preview = document.querySelector( '.tailor-preview' );
this.viewport = this.preview.querySelector( '.tailor-preview__viewport' );
this.mediaQueries = window._media_queries;
//this.setActive( this.$buttons.get(0) );
this.setDevice( this.$buttons.get(0).getAttribute( 'data-device' ) );
this.addEventListeners();
/**
* Fires when the module is initialized.
*
* @since ≈
*
* @param this
*/
app.channel.trigger( 'module:devicePreview:ready', this );
},
/**
* Adds the required event listeners.
*
* @since 1.7.4
*/
addEventListeners : function() {
this.$buttons.on( 'click', this.onClick.bind( this ) );
app.channel.on( 'sidebar:device', this.setDevice.bind(this) );
},
onClick: function( e ) {
this.setDevice( e.target.getAttribute( 'data-device' ) );
},
setDevice: function( device ) {
this.device = device;
// Update buttons
var $button = this.$buttons.filter( "[data-device='" + this.device + "']" );
this.$buttons.removeClass( 'is-active' ).attr( 'aria-pressed', false );
$button.addClass( 'is-active' ).attr( 'aria-pressed', true );
// Update preview window
if ( this.mediaQueries.hasOwnProperty( this.device ) && this.mediaQueries[ this.device ].max ) {
this.viewport.style.maxWidth = this.mediaQueries[ this.device ].max;
}
else {
this.viewport.style.maxWidth ='';
}
}
} );
module.exports = DevicePreviewModule;