Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/files_rightclick.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorNastuzziSamy <samy@nastuzzi.fr>2018-05-02 13:42:17 +0300
committerNastuzziSamy <samy@nastuzzi.fr>2018-05-02 13:42:17 +0300
commit1cf0a44a31901b00b86a65d119d73dcfbf7253e1 (patch)
treef82403ebd81948be7b80f976b84c80696e5d3c60 /js
parent5d084e0a703d8bca76f34db9798f4bef2be911d6 (diff)
Add z-index et disabled options compatibility
Diffstat (limited to 'js')
-rw-r--r--js/files.js5
-rw-r--r--js/script.js71
2 files changed, 55 insertions, 21 deletions
diff --git a/js/files.js b/js/files.js
index 8699414..10516e0 100644
--- a/js/files.js
+++ b/js/files.js
@@ -18,9 +18,6 @@ var RightClick = RightClick || {};
if ($('tbody').has(event.target).length === 0)
return;
- event.stopPropagation();
- event.preventDefault();
-
var appName = 'files_rightclick';
var currentFile = $(event.target).closest('tr');
var leftToRemove = currentFile.find('.selection').width();
@@ -203,5 +200,5 @@ var RightClick = RightClick || {};
}
return options;
- });
+ }, $('#controls').css('z-index') - 1);
})(window, jQuery, RightClick);
diff --git a/js/script.js b/js/script.js
index 1cadc12..aa15816 100644
--- a/js/script.js
+++ b/js/script.js
@@ -48,6 +48,14 @@ var RightClick = RightClick || {};
return ul;
}
+ this.isDisabled = function () {
+ for (var name in this.options) {
+ if (!this.options[name].isDisabled())
+ return false;
+ }
+
+ return true;
+ }
this.add(options);
}
@@ -59,36 +67,58 @@ var RightClick = RightClick || {};
this.subOptions = subOptions;
this.generate = function () {
+ var a = $('<a>');
+ var iconSpan = $('<span>', {
+ 'class': this.icon
+ });
+ var textSpan = $('<span>', {
+ 'text': this.text
+ });
+
+ if (this.callback === undefined) {
+ a.attr('disabled', true).css({
+ 'cursor': 'default',
+ 'background-color': '#AAA'
+ });
+
+ iconSpan.css('cursor', 'default');
+ textSpan.css('cursor', 'default');
+ }
+
return $('<li>', {
- 'onClick': callback
- }).append(
- $('<a>').append(
- $('<span>', {
- 'class': this.icon
- })
- ).append(
- $('<span>', {
- 'text': this.text
- })
- )
- )
+ 'onClick': this.callback
+ }).append(a.append(iconSpan).append(textSpan));
};
+
+ this.isDisabled = function () {
+ return this.callback === undefined;
+ }
}
- exports.ContextMenu = function (context, options) {
+ exports.ContextMenu = function (context, options, zIndex) {
this.context = context;
this.options = options || new exports.Options();
+ this.params = {
+ 'z-index': zIndex || 100
+ };
if (context === undefined)
return undefined;
var onClick = function (event) {
+ event.stopPropagation();
+ event.preventDefault();
+
var $this = $(this);
- options = $.data($this[0], 'right_click-options');
+ var options = $.data($this[0], 'right_click-options');
+ var params = $.data($this[0], 'right_click-params');
if (typeof options === "function")
options = options(event);
+ if (options.nbr === 0)
+ return;
+
var div = $('<div>', {
'class': 'bubble open rightClickMenu'
}).append(options.generate());
@@ -96,20 +126,27 @@ var RightClick = RightClick || {};
div.appendTo($this);
var top = event.pageY + $this.position().top - $this.offset().top + 15;
- var left = event.pageX + $this.position().left - $this.offset().left - (div.width() / 2);
+ var left = event.pageX + $this.position().left - $this.offset().left - (div.width() / 2) - 5;
div.css({
'top': top,
'left': left,
- 'right': 'auto'
+ 'right': 'auto',
+ 'z-index': params['z-index']
});
- $('style.rightClickStyle').text('.rightClickMenu:after{transform:translateX(-50%);left:' + (div.width() / 2) + 'px}');
+ var optionsDisabled = options.isDisabled();
+
+ if (optionsDisabled)
+ div.css('background-color', '#AAA');
+
+ $('style.rightClickStyle').text('.rightClickMenu:after{transform:translateX(-50%);left:' + (div.width() / 2) + 'px;' + (optionsDisabled ? 'border-bottom-color:#AAA;' : '') + '}');
return false;
}
$.data(this.context[0], 'right_click-options', this.options);
+ $.data(this.context[0], 'right_click-params', this.params);
this.context.contextmenu(onClick);
};