mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-30 00:42:53 +00:00
70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
|
define([
|
||
|
'jquery',
|
||
|
'underscore',
|
||
|
'backbone',
|
||
|
'common',
|
||
|
], function($, _, Backbone, Common) {
|
||
|
'use strict';
|
||
|
|
||
|
/*
|
||
|
* Dropdown View.
|
||
|
*/
|
||
|
|
||
|
// There can be only one visible dropdown view
|
||
|
$(document).click(function(e) {
|
||
|
var view = app.ui.currentDropdown;
|
||
|
var target = e.target || event.srcElement;
|
||
|
|
||
|
if (!view) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
if (!view.$('.js-dropdown-content').is(target)
|
||
|
&& !view.$('.js-dropdown-content').find('*').is(target))
|
||
|
{
|
||
|
view.hide();
|
||
|
if (app.ui.currentHighlightedItem) {
|
||
|
app.ui.currentHighlightedItem.rmHighlight();
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
});
|
||
|
|
||
|
var DropdownView = Backbone.View.extend({
|
||
|
|
||
|
toggleClass: '.js-dropdown-toggle',
|
||
|
popupClass: '.js-dropdown-content',
|
||
|
|
||
|
initialize: function(options) {
|
||
|
this.$el.on('click', '.js-dropdown-toggle', _.bind(this.toggleDropdown, this));
|
||
|
},
|
||
|
|
||
|
hide: function() {
|
||
|
app.ui.currentDropdown = null;
|
||
|
this.$('.js-dropdown-content').addClass('hide');
|
||
|
},
|
||
|
|
||
|
show: function() {
|
||
|
app.ui.currentDropdown = this;
|
||
|
this.$('.js-dropdown-content').removeClass('hide');
|
||
|
},
|
||
|
|
||
|
toggleDropdown: function() {
|
||
|
if (app.ui.currentDropdown && app.ui.currentDropdown != this) {
|
||
|
app.ui.currentDropdown.hide();
|
||
|
}
|
||
|
|
||
|
if (this.$('.js-dropdown-content').is(':hidden')) {
|
||
|
this.show();
|
||
|
} else {
|
||
|
this.hide();
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
return DropdownView;
|
||
|
});
|