afterwriting
Version:
Post-processing tools for Fountain screenplays
73 lines (58 loc) • 2.32 kB
JavaScript
define(function(require) {
var $ = require('jquery'),
BaseComponent = require('core/view/base-component'),
TopMenuPresenter = require('theme/aw-bubble/presenter/menu/top-menu-presenter'),
TopMenuItem = require('theme/aw-bubble/view/menu/top-menu-item');
var TopMenu = BaseComponent.extend({
$meta: {
presenter: TopMenuPresenter
},
html: '<div class="top-bar">' +
'<div><img data-prop="$closeIcon" class="content-action content-action--close" src="gfx/icons/close.svg" /><img data-prop="$expandIcon" class="content-action content-action--expand" src="gfx/icons/expand.svg" /></div>' +
'</div>',
$closeIcon: null,
$expandIcon: null,
sections: {
renderWith: {
property: 'section',
renderer: TopMenuItem
}
},
$create: function() {
this.$closeIcon.click(this.dispatch.bind(this, 'close'));
this.$expandIcon.click(this.dispatch.bind(this, 'expand'));
},
addInteractions: function() {
var y, revert = true;
$('.content').draggable({
axis: "y",
scroll: true,
scrollSensitivity: 25,
handle: '.content-action--close',
revert: function() {
return revert;
},
scrollSpeed: 25,
addClasses: false,
start: function() {
this.$closeIcon.off();
}.bind(this),
drag: function(event, data) {
revert = Math.abs(data.offset.top) <= 100;
},
stop: function() {
if (!revert) {
this.dispatch('swipe');
}
this.$closeIcon.click(this.dispatch.bind(this, 'close'));
}.bind(this)
});
},
setSelected: function(section) {
this.children.forEach(function(topMenuItem) {
topMenuItem.selected = topMenuItem.section === section;
});
}
});
return TopMenu;
});