mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-03 20:15:59 +01:00
(refs #1836) Add context menu to the database viewer
Also "Run query" button runs only selected text if some text is selected.
This commit is contained in:
@@ -34,6 +34,8 @@
|
|||||||
<script src="@helpers.assets("/vendors/ace/ace.js")" type="text/javascript" charset="utf-8"></script>
|
<script src="@helpers.assets("/vendors/ace/ace.js")" type="text/javascript" charset="utf-8"></script>
|
||||||
<script src="@helpers.assets("/vendors/vakata-jstree-3.3.4/jstree.min.js")" type="text/javascript" charset="utf-8"></script>
|
<script src="@helpers.assets("/vendors/vakata-jstree-3.3.4/jstree.min.js")" type="text/javascript" charset="utf-8"></script>
|
||||||
<link rel="stylesheet" href="@helpers.assets("/vendors/vakata-jstree-3.3.4/themes/default/style.min.css")" />
|
<link rel="stylesheet" href="@helpers.assets("/vendors/vakata-jstree-3.3.4/themes/default/style.min.css")" />
|
||||||
|
<script src="@helpers.assets("/vendors/jquery-contextmenu/jquery.contextMenu.min.js")" type="text/javascript" charset="utf-8"></script>
|
||||||
|
<link rel="stylesheet" href="@helpers.assets("/vendors/jquery-contextmenu/jquery.contextMenu.min.css")" />
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
$('#editor').text($('#initial').val());
|
$('#editor').text($('#initial').val());
|
||||||
@@ -41,15 +43,25 @@ $(function(){
|
|||||||
editor.setTheme("ace/theme/monokai");
|
editor.setTheme("ace/theme/monokai");
|
||||||
editor.getSession().setMode("ace/mode/sql");
|
editor.getSession().setMode("ace/mode/sql");
|
||||||
|
|
||||||
|
|
||||||
$('#table-tree').jstree();
|
$('#table-tree').jstree();
|
||||||
|
|
||||||
$('.table-link').click(function(e){
|
$.contextMenu({
|
||||||
var query = editor.getValue();
|
selector: '.table-link',
|
||||||
if(query != ''){
|
trigger: 'left',
|
||||||
query = query + '\n';
|
items: {
|
||||||
|
"select": { name: "Select",
|
||||||
|
callback: function(itemKey, opt){
|
||||||
|
editor.setValue('SELECT * FROM ' + opt.$trigger.text());
|
||||||
|
}
|
||||||
|
}@*,
|
||||||
|
"cut": {name: "Cut", icon: "cut"},
|
||||||
|
"copy": {name: "Copy", icon: "copy"},
|
||||||
|
"paste": {name: "Paste", icon: "paste"},
|
||||||
|
"delete": {name: "Delete", icon: "delete"},
|
||||||
|
"sep1": "---------",
|
||||||
|
"quit": {name: "Quit", icon: function($element, key, item){ return 'context-menu-icon context-menu-icon-quit'; }}
|
||||||
|
*@
|
||||||
}
|
}
|
||||||
editor.setValue(query + 'SELECT * FROM ' + $(e.target).text());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#clear-query').click(function(){
|
$('#clear-query').click(function(){
|
||||||
@@ -57,7 +69,10 @@ $(function(){
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('#run-query').click(function(){
|
$('#run-query').click(function(){
|
||||||
$.post('@context.path/admin/dbviewer/_query', { query: editor.getValue() }, function(data){
|
var selectedText = editor.getSession().doc.getTextRange(editor.selection.getRange()).trim();
|
||||||
|
|
||||||
|
$.post('@context.path/admin/dbviewer/_query', { query: selectedText == '' ? editor.getValue() : selectedText },
|
||||||
|
function(data){
|
||||||
if(data.type == "query"){
|
if(data.type == "query"){
|
||||||
var table = $('<table class="table table-bordered table-hover table-scroll">');
|
var table = $('<table class="table table-bordered table-hover table-scroll">');
|
||||||
|
|
||||||
@@ -85,8 +100,8 @@ $(function(){
|
|||||||
} else if(data.type == "error"){
|
} else if(data.type == "error"){
|
||||||
$('#result').empty().append($('<span class="error">').text(data.message));
|
$('#result').empty().append($('<span class="error">').text(data.message));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.eot
vendored
Normal file
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.eot
vendored
Normal file
Binary file not shown.
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.ttf
vendored
Normal file
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.ttf
vendored
Normal file
Binary file not shown.
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.woff
vendored
Normal file
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.woff
vendored
Normal file
Binary file not shown.
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.woff2
vendored
Normal file
BIN
src/main/webapp/assets/vendors/jquery-contextmenu/font/context-menu-icons.woff2
vendored
Normal file
Binary file not shown.
287
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.css
vendored
Normal file
287
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.css
vendored
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
/*!
|
||||||
|
* jQuery contextMenu - Plugin for simple contextMenu handling
|
||||||
|
*
|
||||||
|
* Version: v2.6.3
|
||||||
|
*
|
||||||
|
* Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)
|
||||||
|
* Web: http://swisnl.github.io/jQuery-contextMenu/
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011-2017 SWIS BV and contributors
|
||||||
|
*
|
||||||
|
* Licensed under
|
||||||
|
* MIT License http://www.opensource.org/licenses/mit-license
|
||||||
|
*
|
||||||
|
* Date: 2017-10-30T19:03:13.936Z
|
||||||
|
*/
|
||||||
|
@-webkit-keyframes cm-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translateY(-50%) rotate(0deg);
|
||||||
|
transform: translateY(-50%) rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translateY(-50%) rotate(359deg);
|
||||||
|
transform: translateY(-50%) rotate(359deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-o-keyframes cm-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translateY(-50%) rotate(0deg);
|
||||||
|
-o-transform: translateY(-50%) rotate(0deg);
|
||||||
|
transform: translateY(-50%) rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translateY(-50%) rotate(359deg);
|
||||||
|
-o-transform: translateY(-50%) rotate(359deg);
|
||||||
|
transform: translateY(-50%) rotate(359deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes cm-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translateY(-50%) rotate(0deg);
|
||||||
|
-o-transform: translateY(-50%) rotate(0deg);
|
||||||
|
transform: translateY(-50%) rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translateY(-50%) rotate(359deg);
|
||||||
|
-o-transform: translateY(-50%) rotate(359deg);
|
||||||
|
transform: translateY(-50%) rotate(359deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "context-menu-icons";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
|
||||||
|
src: url("font/context-menu-icons.eot?2wp27");
|
||||||
|
src: url("font/context-menu-icons.eot?2wp27#iefix") format("embedded-opentype"), url("font/context-menu-icons.woff2?2wp27") format("woff2"), url("font/context-menu-icons.woff?2wp27") format("woff"), url("font/context-menu-icons.ttf?2wp27") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-add:before {
|
||||||
|
content: "\EA01";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-copy:before {
|
||||||
|
content: "\EA02";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-cut:before {
|
||||||
|
content: "\EA03";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-delete:before {
|
||||||
|
content: "\EA04";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-edit:before {
|
||||||
|
content: "\EA05";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-loading:before {
|
||||||
|
content: "\EA06";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-paste:before {
|
||||||
|
content: "\EA07";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon-quit:before {
|
||||||
|
content: "\EA08";
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon::before {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
width: 2em;
|
||||||
|
font-family: "context-menu-icons";
|
||||||
|
font-size: 1em;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 1;
|
||||||
|
color: #2980b9;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-transform: translateY(-50%);
|
||||||
|
-ms-transform: translateY(-50%);
|
||||||
|
-o-transform: translateY(-50%);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon.context-menu-hover:before {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon.context-menu-disabled::before {
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon.context-menu-icon-loading:before {
|
||||||
|
-webkit-animation: cm-spin 2s infinite;
|
||||||
|
-o-animation: cm-spin 2s infinite;
|
||||||
|
animation: cm-spin 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-icon.context-menu-icon--fa {
|
||||||
|
display: list-item;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
.context-menu-icon.context-menu-icon--fa::before {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
width: 2em;
|
||||||
|
font-family: FontAwesome;
|
||||||
|
font-size: 1em;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 1;
|
||||||
|
color: #2980b9;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-transform: translateY(-50%);
|
||||||
|
-ms-transform: translateY(-50%);
|
||||||
|
-o-transform: translateY(-50%);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
.context-menu-icon.context-menu-icon--fa.context-menu-hover:before {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before {
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-list {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 13em;
|
||||||
|
max-width: 26em;
|
||||||
|
padding: .25em 0;
|
||||||
|
margin: .3em;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
list-style-type: none;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #bebebe;
|
||||||
|
border-radius: .2em;
|
||||||
|
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, .5);
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, .5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item {
|
||||||
|
position: relative;
|
||||||
|
padding: .2em 2em;
|
||||||
|
color: #2f2f2f;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-separator {
|
||||||
|
padding: 0;
|
||||||
|
margin: .35em 0;
|
||||||
|
border-bottom: 1px solid #e6e6e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item > label > input,
|
||||||
|
.context-menu-item > label > textarea {
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.context-menu-hover {
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #2980b9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.context-menu-disabled {
|
||||||
|
color: #bbb;
|
||||||
|
cursor: default;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input.context-menu-hover {
|
||||||
|
color: #2f2f2f;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-submenu:after {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
right: .5em;
|
||||||
|
z-index: 1;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
content: '';
|
||||||
|
border-color: transparent transparent transparent #2f2f2f;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: .25em 0 .25em .25em;
|
||||||
|
-webkit-transform: translateY(-50%);
|
||||||
|
-ms-transform: translateY(-50%);
|
||||||
|
-o-transform: translateY(-50%);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inputs
|
||||||
|
*/
|
||||||
|
.context-menu-item.context-menu-input {
|
||||||
|
padding: .3em .6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* vertically align inside labels */
|
||||||
|
.context-menu-input > label > * {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* position checkboxes and radios as icons */
|
||||||
|
.context-menu-input > label > input[type="checkbox"],
|
||||||
|
.context-menu-input > label > input[type="radio"] {
|
||||||
|
position: relative;
|
||||||
|
top: .12em;
|
||||||
|
margin-right: .4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input > label {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input > label,
|
||||||
|
.context-menu-input > label > input[type="text"],
|
||||||
|
.context-menu-input > label > textarea,
|
||||||
|
.context-menu-input > label > select {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input > label > textarea {
|
||||||
|
height: 7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item > .context-menu-list {
|
||||||
|
top: .3em;
|
||||||
|
/* re-positioned by js */
|
||||||
|
right: -.3em;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.context-menu-visible > .context-menu-list {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-accesskey {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
2101
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.js
vendored
Executable file
2101
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
16
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.css
vendored
Normal file
16
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.css
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
@charset "UTF-8";/*!
|
||||||
|
* jQuery contextMenu - Plugin for simple contextMenu handling
|
||||||
|
*
|
||||||
|
* Version: v2.6.3
|
||||||
|
*
|
||||||
|
* Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)
|
||||||
|
* Web: http://swisnl.github.io/jQuery-contextMenu/
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011-2017 SWIS BV and contributors
|
||||||
|
*
|
||||||
|
* Licensed under
|
||||||
|
* MIT License http://www.opensource.org/licenses/mit-license
|
||||||
|
*
|
||||||
|
* Date: 2017-10-30T19:03:13.936Z
|
||||||
|
*/@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?2wp27);src:url(font/context-menu-icons.eot?2wp27#iefix) format("embedded-opentype"),url(font/context-menu-icons.woff2?2wp27) format("woff2"),url(font/context-menu-icons.woff?2wp27) format("woff"),url(font/context-menu-icons.ttf?2wp27) format("truetype")}.context-menu-icon-add:before{content:"\EA01"}.context-menu-icon-copy:before{content:"\EA02"}.context-menu-icon-cut:before{content:"\EA03"}.context-menu-icon-delete:before{content:"\EA04"}.context-menu-icon-edit:before{content:"\EA05"}.context-menu-icon-loading:before{content:"\EA06"}.context-menu-icon-paste:before{content:"\EA07"}.context-menu-icon-quit:before{content:"\EA08"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline}
|
||||||
|
/*# sourceMappingURL=jquery.contextMenu.min.css.map */
|
||||||
1
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.css.map
vendored
Normal file
1
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.js
vendored
Executable file
2
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
1
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.js.map
vendored
Normal file
1
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.contextMenu.min.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
513
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.ui.position.js
vendored
Normal file
513
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.ui.position.js
vendored
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
/*! jQuery UI - v1.12.1 - 2016-09-16
|
||||||
|
* http://jqueryui.com
|
||||||
|
* Includes: position.js
|
||||||
|
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||||||
|
|
||||||
|
(function( factory ) {
|
||||||
|
if ( typeof define === "function" && define.amd ) {
|
||||||
|
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define([ "jquery" ], factory );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Browser globals
|
||||||
|
factory( jQuery );
|
||||||
|
}
|
||||||
|
}(function( $ ) {
|
||||||
|
|
||||||
|
$.ui = $.ui || {};
|
||||||
|
|
||||||
|
var version = $.ui.version = "1.12.1";
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* jQuery UI Position 1.12.1
|
||||||
|
* http://jqueryui.com
|
||||||
|
*
|
||||||
|
* Copyright jQuery Foundation and other contributors
|
||||||
|
* Released under the MIT license.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://api.jqueryui.com/position/
|
||||||
|
*/
|
||||||
|
|
||||||
|
//>>label: Position
|
||||||
|
//>>group: Core
|
||||||
|
//>>description: Positions elements relative to other elements.
|
||||||
|
//>>docs: http://api.jqueryui.com/position/
|
||||||
|
//>>demos: http://jqueryui.com/position/
|
||||||
|
|
||||||
|
|
||||||
|
( function() {
|
||||||
|
var cachedScrollbarWidth,
|
||||||
|
max = Math.max,
|
||||||
|
abs = Math.abs,
|
||||||
|
rhorizontal = /left|center|right/,
|
||||||
|
rvertical = /top|center|bottom/,
|
||||||
|
roffset = /[\+\-]\d+(\.[\d]+)?%?/,
|
||||||
|
rposition = /^\w+/,
|
||||||
|
rpercent = /%$/,
|
||||||
|
_position = $.fn.position;
|
||||||
|
|
||||||
|
function getOffsets( offsets, width, height ) {
|
||||||
|
return [
|
||||||
|
parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
|
||||||
|
parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseCss( element, property ) {
|
||||||
|
return parseInt( $.css( element, property ), 10 ) || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDimensions( elem ) {
|
||||||
|
var raw = elem[ 0 ];
|
||||||
|
if ( raw.nodeType === 9 ) {
|
||||||
|
return {
|
||||||
|
width: elem.width(),
|
||||||
|
height: elem.height(),
|
||||||
|
offset: { top: 0, left: 0 }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ( $.isWindow( raw ) ) {
|
||||||
|
return {
|
||||||
|
width: elem.width(),
|
||||||
|
height: elem.height(),
|
||||||
|
offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ( raw.preventDefault ) {
|
||||||
|
return {
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
offset: { top: raw.pageY, left: raw.pageX }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
width: elem.outerWidth(),
|
||||||
|
height: elem.outerHeight(),
|
||||||
|
offset: elem.offset()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$.position = {
|
||||||
|
scrollbarWidth: function() {
|
||||||
|
if ( cachedScrollbarWidth !== undefined ) {
|
||||||
|
return cachedScrollbarWidth;
|
||||||
|
}
|
||||||
|
var w1, w2,
|
||||||
|
div = $( "<div " +
|
||||||
|
"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
|
||||||
|
"<div style='height:100px;width:auto;'></div></div>" ),
|
||||||
|
innerDiv = div.children()[ 0 ];
|
||||||
|
|
||||||
|
$( "body" ).append( div );
|
||||||
|
w1 = innerDiv.offsetWidth;
|
||||||
|
div.css( "overflow", "scroll" );
|
||||||
|
|
||||||
|
w2 = innerDiv.offsetWidth;
|
||||||
|
|
||||||
|
if ( w1 === w2 ) {
|
||||||
|
w2 = div[ 0 ].clientWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.remove();
|
||||||
|
|
||||||
|
return ( cachedScrollbarWidth = w1 - w2 );
|
||||||
|
},
|
||||||
|
getScrollInfo: function( within ) {
|
||||||
|
var overflowX = within.isWindow || within.isDocument ? "" :
|
||||||
|
within.element.css( "overflow-x" ),
|
||||||
|
overflowY = within.isWindow || within.isDocument ? "" :
|
||||||
|
within.element.css( "overflow-y" ),
|
||||||
|
hasOverflowX = overflowX === "scroll" ||
|
||||||
|
( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
|
||||||
|
hasOverflowY = overflowY === "scroll" ||
|
||||||
|
( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
|
||||||
|
return {
|
||||||
|
width: hasOverflowY ? $.position.scrollbarWidth() : 0,
|
||||||
|
height: hasOverflowX ? $.position.scrollbarWidth() : 0
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getWithinInfo: function( element ) {
|
||||||
|
var withinElement = $( element || window ),
|
||||||
|
isWindow = $.isWindow( withinElement[ 0 ] ),
|
||||||
|
isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
|
||||||
|
hasOffset = !isWindow && !isDocument;
|
||||||
|
return {
|
||||||
|
element: withinElement,
|
||||||
|
isWindow: isWindow,
|
||||||
|
isDocument: isDocument,
|
||||||
|
offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
|
||||||
|
scrollLeft: withinElement.scrollLeft(),
|
||||||
|
scrollTop: withinElement.scrollTop(),
|
||||||
|
width: withinElement.outerWidth(),
|
||||||
|
height: withinElement.outerHeight()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.position = function( options ) {
|
||||||
|
if ( !options || !options.of ) {
|
||||||
|
return _position.apply( this, arguments );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make a copy, we don't want to modify arguments
|
||||||
|
options = $.extend( {}, options );
|
||||||
|
|
||||||
|
var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
|
||||||
|
target = $( options.of ),
|
||||||
|
within = $.position.getWithinInfo( options.within ),
|
||||||
|
scrollInfo = $.position.getScrollInfo( within ),
|
||||||
|
collision = ( options.collision || "flip" ).split( " " ),
|
||||||
|
offsets = {};
|
||||||
|
|
||||||
|
dimensions = getDimensions( target );
|
||||||
|
if ( target[ 0 ].preventDefault ) {
|
||||||
|
|
||||||
|
// Force left top to allow flipping
|
||||||
|
options.at = "left top";
|
||||||
|
}
|
||||||
|
targetWidth = dimensions.width;
|
||||||
|
targetHeight = dimensions.height;
|
||||||
|
targetOffset = dimensions.offset;
|
||||||
|
|
||||||
|
// Clone to reuse original targetOffset later
|
||||||
|
basePosition = $.extend( {}, targetOffset );
|
||||||
|
|
||||||
|
// Force my and at to have valid horizontal and vertical positions
|
||||||
|
// if a value is missing or invalid, it will be converted to center
|
||||||
|
$.each( [ "my", "at" ], function() {
|
||||||
|
var pos = ( options[ this ] || "" ).split( " " ),
|
||||||
|
horizontalOffset,
|
||||||
|
verticalOffset;
|
||||||
|
|
||||||
|
if ( pos.length === 1 ) {
|
||||||
|
pos = rhorizontal.test( pos[ 0 ] ) ?
|
||||||
|
pos.concat( [ "center" ] ) :
|
||||||
|
rvertical.test( pos[ 0 ] ) ?
|
||||||
|
[ "center" ].concat( pos ) :
|
||||||
|
[ "center", "center" ];
|
||||||
|
}
|
||||||
|
pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
|
||||||
|
pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
|
||||||
|
|
||||||
|
// Calculate offsets
|
||||||
|
horizontalOffset = roffset.exec( pos[ 0 ] );
|
||||||
|
verticalOffset = roffset.exec( pos[ 1 ] );
|
||||||
|
offsets[ this ] = [
|
||||||
|
horizontalOffset ? horizontalOffset[ 0 ] : 0,
|
||||||
|
verticalOffset ? verticalOffset[ 0 ] : 0
|
||||||
|
];
|
||||||
|
|
||||||
|
// Reduce to just the positions without the offsets
|
||||||
|
options[ this ] = [
|
||||||
|
rposition.exec( pos[ 0 ] )[ 0 ],
|
||||||
|
rposition.exec( pos[ 1 ] )[ 0 ]
|
||||||
|
];
|
||||||
|
} );
|
||||||
|
|
||||||
|
// Normalize collision option
|
||||||
|
if ( collision.length === 1 ) {
|
||||||
|
collision[ 1 ] = collision[ 0 ];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.at[ 0 ] === "right" ) {
|
||||||
|
basePosition.left += targetWidth;
|
||||||
|
} else if ( options.at[ 0 ] === "center" ) {
|
||||||
|
basePosition.left += targetWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.at[ 1 ] === "bottom" ) {
|
||||||
|
basePosition.top += targetHeight;
|
||||||
|
} else if ( options.at[ 1 ] === "center" ) {
|
||||||
|
basePosition.top += targetHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
|
||||||
|
basePosition.left += atOffset[ 0 ];
|
||||||
|
basePosition.top += atOffset[ 1 ];
|
||||||
|
|
||||||
|
return this.each( function() {
|
||||||
|
var collisionPosition, using,
|
||||||
|
elem = $( this ),
|
||||||
|
elemWidth = elem.outerWidth(),
|
||||||
|
elemHeight = elem.outerHeight(),
|
||||||
|
marginLeft = parseCss( this, "marginLeft" ),
|
||||||
|
marginTop = parseCss( this, "marginTop" ),
|
||||||
|
collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
|
||||||
|
scrollInfo.width,
|
||||||
|
collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
|
||||||
|
scrollInfo.height,
|
||||||
|
position = $.extend( {}, basePosition ),
|
||||||
|
myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
|
||||||
|
|
||||||
|
if ( options.my[ 0 ] === "right" ) {
|
||||||
|
position.left -= elemWidth;
|
||||||
|
} else if ( options.my[ 0 ] === "center" ) {
|
||||||
|
position.left -= elemWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.my[ 1 ] === "bottom" ) {
|
||||||
|
position.top -= elemHeight;
|
||||||
|
} else if ( options.my[ 1 ] === "center" ) {
|
||||||
|
position.top -= elemHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
position.left += myOffset[ 0 ];
|
||||||
|
position.top += myOffset[ 1 ];
|
||||||
|
|
||||||
|
collisionPosition = {
|
||||||
|
marginLeft: marginLeft,
|
||||||
|
marginTop: marginTop
|
||||||
|
};
|
||||||
|
|
||||||
|
$.each( [ "left", "top" ], function( i, dir ) {
|
||||||
|
if ( $.ui.position[ collision[ i ] ] ) {
|
||||||
|
$.ui.position[ collision[ i ] ][ dir ]( position, {
|
||||||
|
targetWidth: targetWidth,
|
||||||
|
targetHeight: targetHeight,
|
||||||
|
elemWidth: elemWidth,
|
||||||
|
elemHeight: elemHeight,
|
||||||
|
collisionPosition: collisionPosition,
|
||||||
|
collisionWidth: collisionWidth,
|
||||||
|
collisionHeight: collisionHeight,
|
||||||
|
offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
|
||||||
|
my: options.my,
|
||||||
|
at: options.at,
|
||||||
|
within: within,
|
||||||
|
elem: elem
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
|
if ( options.using ) {
|
||||||
|
|
||||||
|
// Adds feedback as second argument to using callback, if present
|
||||||
|
using = function( props ) {
|
||||||
|
var left = targetOffset.left - position.left,
|
||||||
|
right = left + targetWidth - elemWidth,
|
||||||
|
top = targetOffset.top - position.top,
|
||||||
|
bottom = top + targetHeight - elemHeight,
|
||||||
|
feedback = {
|
||||||
|
target: {
|
||||||
|
element: target,
|
||||||
|
left: targetOffset.left,
|
||||||
|
top: targetOffset.top,
|
||||||
|
width: targetWidth,
|
||||||
|
height: targetHeight
|
||||||
|
},
|
||||||
|
element: {
|
||||||
|
element: elem,
|
||||||
|
left: position.left,
|
||||||
|
top: position.top,
|
||||||
|
width: elemWidth,
|
||||||
|
height: elemHeight
|
||||||
|
},
|
||||||
|
horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
|
||||||
|
vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
|
||||||
|
};
|
||||||
|
if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
|
||||||
|
feedback.horizontal = "center";
|
||||||
|
}
|
||||||
|
if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
|
||||||
|
feedback.vertical = "middle";
|
||||||
|
}
|
||||||
|
if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
|
||||||
|
feedback.important = "horizontal";
|
||||||
|
} else {
|
||||||
|
feedback.important = "vertical";
|
||||||
|
}
|
||||||
|
options.using.call( this, props, feedback );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
elem.offset( $.extend( position, { using: using } ) );
|
||||||
|
} );
|
||||||
|
};
|
||||||
|
|
||||||
|
$.ui.position = {
|
||||||
|
fit: {
|
||||||
|
left: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
|
||||||
|
outerWidth = within.width,
|
||||||
|
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
|
||||||
|
overLeft = withinOffset - collisionPosLeft,
|
||||||
|
overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
|
||||||
|
newOverRight;
|
||||||
|
|
||||||
|
// Element is wider than within
|
||||||
|
if ( data.collisionWidth > outerWidth ) {
|
||||||
|
|
||||||
|
// Element is initially over the left side of within
|
||||||
|
if ( overLeft > 0 && overRight <= 0 ) {
|
||||||
|
newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
|
||||||
|
withinOffset;
|
||||||
|
position.left += overLeft - newOverRight;
|
||||||
|
|
||||||
|
// Element is initially over right side of within
|
||||||
|
} else if ( overRight > 0 && overLeft <= 0 ) {
|
||||||
|
position.left = withinOffset;
|
||||||
|
|
||||||
|
// Element is initially over both left and right sides of within
|
||||||
|
} else {
|
||||||
|
if ( overLeft > overRight ) {
|
||||||
|
position.left = withinOffset + outerWidth - data.collisionWidth;
|
||||||
|
} else {
|
||||||
|
position.left = withinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Too far left -> align with left edge
|
||||||
|
} else if ( overLeft > 0 ) {
|
||||||
|
position.left += overLeft;
|
||||||
|
|
||||||
|
// Too far right -> align with right edge
|
||||||
|
} else if ( overRight > 0 ) {
|
||||||
|
position.left -= overRight;
|
||||||
|
|
||||||
|
// Adjust based on position and margin
|
||||||
|
} else {
|
||||||
|
position.left = max( position.left - collisionPosLeft, position.left );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
top: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
|
||||||
|
outerHeight = data.within.height,
|
||||||
|
collisionPosTop = position.top - data.collisionPosition.marginTop,
|
||||||
|
overTop = withinOffset - collisionPosTop,
|
||||||
|
overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
|
||||||
|
newOverBottom;
|
||||||
|
|
||||||
|
// Element is taller than within
|
||||||
|
if ( data.collisionHeight > outerHeight ) {
|
||||||
|
|
||||||
|
// Element is initially over the top of within
|
||||||
|
if ( overTop > 0 && overBottom <= 0 ) {
|
||||||
|
newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
|
||||||
|
withinOffset;
|
||||||
|
position.top += overTop - newOverBottom;
|
||||||
|
|
||||||
|
// Element is initially over bottom of within
|
||||||
|
} else if ( overBottom > 0 && overTop <= 0 ) {
|
||||||
|
position.top = withinOffset;
|
||||||
|
|
||||||
|
// Element is initially over both top and bottom of within
|
||||||
|
} else {
|
||||||
|
if ( overTop > overBottom ) {
|
||||||
|
position.top = withinOffset + outerHeight - data.collisionHeight;
|
||||||
|
} else {
|
||||||
|
position.top = withinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Too far up -> align with top
|
||||||
|
} else if ( overTop > 0 ) {
|
||||||
|
position.top += overTop;
|
||||||
|
|
||||||
|
// Too far down -> align with bottom edge
|
||||||
|
} else if ( overBottom > 0 ) {
|
||||||
|
position.top -= overBottom;
|
||||||
|
|
||||||
|
// Adjust based on position and margin
|
||||||
|
} else {
|
||||||
|
position.top = max( position.top - collisionPosTop, position.top );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flip: {
|
||||||
|
left: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.offset.left + within.scrollLeft,
|
||||||
|
outerWidth = within.width,
|
||||||
|
offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
|
||||||
|
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
|
||||||
|
overLeft = collisionPosLeft - offsetLeft,
|
||||||
|
overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
|
||||||
|
myOffset = data.my[ 0 ] === "left" ?
|
||||||
|
-data.elemWidth :
|
||||||
|
data.my[ 0 ] === "right" ?
|
||||||
|
data.elemWidth :
|
||||||
|
0,
|
||||||
|
atOffset = data.at[ 0 ] === "left" ?
|
||||||
|
data.targetWidth :
|
||||||
|
data.at[ 0 ] === "right" ?
|
||||||
|
-data.targetWidth :
|
||||||
|
0,
|
||||||
|
offset = -2 * data.offset[ 0 ],
|
||||||
|
newOverRight,
|
||||||
|
newOverLeft;
|
||||||
|
|
||||||
|
if ( overLeft < 0 ) {
|
||||||
|
newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
|
||||||
|
outerWidth - withinOffset;
|
||||||
|
if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
|
||||||
|
position.left += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
} else if ( overRight > 0 ) {
|
||||||
|
newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
|
||||||
|
atOffset + offset - offsetLeft;
|
||||||
|
if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
|
||||||
|
position.left += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
top: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.offset.top + within.scrollTop,
|
||||||
|
outerHeight = within.height,
|
||||||
|
offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
|
||||||
|
collisionPosTop = position.top - data.collisionPosition.marginTop,
|
||||||
|
overTop = collisionPosTop - offsetTop,
|
||||||
|
overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
|
||||||
|
top = data.my[ 1 ] === "top",
|
||||||
|
myOffset = top ?
|
||||||
|
-data.elemHeight :
|
||||||
|
data.my[ 1 ] === "bottom" ?
|
||||||
|
data.elemHeight :
|
||||||
|
0,
|
||||||
|
atOffset = data.at[ 1 ] === "top" ?
|
||||||
|
data.targetHeight :
|
||||||
|
data.at[ 1 ] === "bottom" ?
|
||||||
|
-data.targetHeight :
|
||||||
|
0,
|
||||||
|
offset = -2 * data.offset[ 1 ],
|
||||||
|
newOverTop,
|
||||||
|
newOverBottom;
|
||||||
|
if ( overTop < 0 ) {
|
||||||
|
newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
|
||||||
|
outerHeight - withinOffset;
|
||||||
|
if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
|
||||||
|
position.top += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
} else if ( overBottom > 0 ) {
|
||||||
|
newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
|
||||||
|
offset - offsetTop;
|
||||||
|
if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
|
||||||
|
position.top += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flipfit: {
|
||||||
|
left: function() {
|
||||||
|
$.ui.position.flip.left.apply( this, arguments );
|
||||||
|
$.ui.position.fit.left.apply( this, arguments );
|
||||||
|
},
|
||||||
|
top: function() {
|
||||||
|
$.ui.position.flip.top.apply( this, arguments );
|
||||||
|
$.ui.position.fit.top.apply( this, arguments );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} )();
|
||||||
|
|
||||||
|
var position = $.ui.position;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}));
|
||||||
6
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.ui.position.min.js
vendored
Normal file
6
src/main/webapp/assets/vendors/jquery-contextmenu/jquery.ui.position.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user