%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/MobileFrontend/src/mobile.startup/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/MobileFrontend/src/mobile.startup/Panel.js |
var
mfExtend = require( './mfExtend' ),
View = require( './View' );
/**
* An abstract class for a {@link View} that comprises a simple panel.
* @class Panel
* @extends View
*
* @param {Object} options Configuration options
*/
function Panel() {
View.apply( this, arguments );
}
mfExtend( Panel, View, {
/**
* @inheritdoc
* @memberof Panel
* @instance
*/
className: 'panel',
// in milliseconds
minHideDelay: 10,
events: {
'click .cancel': 'onCancel'
},
/**
* Cancel event handler
* @memberof Panel
* @instance
* @param {Object} ev Event Object
*/
onCancel: function ( ev ) {
ev.preventDefault();
this.hide();
},
/**
* Shows panel after a slight delay
* @memberof Panel
* @instance
* @method
*/
show: function () {
var self = this;
if ( !self.isVisible() ) {
// use setTimeout to allow the browser to redraw if render() was called
// just before show(); this is important for animations to work
// (0ms doesn't work on Firefox, 10ms is enough)
setTimeout( function () {
self.$el.addClass( 'visible animated' );
self.emit( 'show' );
}, self.minHideDelay );
}
},
/**
* Hides panel
* @memberof Panel
* @instance
*/
hide: function () {
var self = this;
// see comment in show()
setTimeout( function () {
self.$el.removeClass( 'visible' );
self.emit( 'hide' );
}, self.minHideDelay );
},
/**
* Determines if panel is visible
* @memberof Panel
* @instance
* @return {boolean} Panel is visible
*/
isVisible: function () {
return this.$el.hasClass( 'visible' );
},
/**
* Shows or hides panel
* @memberof Panel
* @instance
*/
toggle: function () {
if ( this.isVisible() ) {
this.hide();
} else {
this.show();
}
}
} );
module.exports = Panel;