Commit f39347f1 authored by Alain Takoudjou's avatar Alain Takoudjou

Add default contextual menu for connected users

parent 868eb3f7
/* Main context menu outer */
.contextualMenu{
font-size: 13px;
position: absolute;
padding: 8px 0;
background: var(--contextualMenuBg);
box-shadow: var(--contextualMenuShadow);
border-radius: var(--contextualMenuRadius);
margin:0;
list-style: none;
color: var(--contextualMenuText);
}
/* Menu seperator item */
.contextualMenuSeperator{
display: block;
position: relative;
padding: 5px 5px;
}
.contextualMenuSeperator span{
display: block;
width:100%;
height:1px;
background: var(--contextualSeperator);
}
/* Default menu item */
.contextualMenuItemOuter {
position: relative;
}
.contextualMenuItem{
display: block;
padding: 5px 8px;
cursor: default;
}
.contextualMenuItem:hover{
background: var(--contextualHover);
}
.contextualMenuItemIcon{
float: left;
width:16px;
height: 16px;
}
.contextualMenuItemTitle{
text-align: left;
line-height: 16px;
display: inline-block;
padding: 0px 0px 0px 7px;
}
.contextualMenuItemTip{
float: right;
padding: 0px 0px 0px 50px;
text-align: right;
line-height: 16px;
}
.contextualMenuItemOverflow{
float: right;
width:16px;
height: 16px;
padding: 1px 0px 0px 7px;
}
.contextualMenuItemOverflow .contextualMenuItemOverflowLine{
display: block;
height: 1px;
margin: 3px 2px;
background: var(--contextualOverflowIcon);
}
.contextualMenuItemOverflow.hidden{
display: none;
}
.contextualMenuItem.disabled{
opacity: 0.4;
}
.contextualMenuItem.disabled:hover{
background: none;
}
/* Submenu item */
.contextualSubMenu{
padding: 0;
margin: 0;
background: var(--contextualSubMenuBg);
border-radius: var(--contextualMenuRadius);
width: 100%;
height: auto;
max-height: 1000px;
transition: max-height 0.5s;
overflow: hidden;
}
.contextualSubMenu .contextualMenuItem:hover{
background: var(--contextualHover);
}
.contextualMenuHidden{
max-height: 0;
}
/* Multi item button */
.contextualMultiItem{
display: flex;
position: relative;
}
.contextualMultiItem .contextualMenuItemOuter{
flex: auto;
display: inline-block;
}
/* Hover menu */
.contextualHoverMenuOuter{
position: relative;
}
.contextualHoverMenuItem{
display: block;
padding: 5px 8px;
cursor: default;
}
.contextualHoverMenuItem.disabled{
opacity: 0.4;
}
.contextualHoverMenuItem.disabled:hover{
background: none;
}
.contextualHoverMenuItem:hover{
background: var(--contextualHover);
}
.contextualHoverMenuOuter > .contextualHoverMenu{
display: none;
}
.contextualHoverMenuOuter:hover > .contextualHoverMenu{
display: block;
position: absolute;
left: 100%;
top: 0;
background: var(--contextualMenuBg);
box-shadow: var(--contextualMenuShadow);
border-radius: var(--contextualMenuRadius);
padding: 8px 0;
width: 100%;
z-index: 1000;
list-style: none;
}
\ No newline at end of file
:root{
--contextualMenuBg: rgb(255 255 255);
--contextualMenuShadow: 1px 1px 5px #a4a4a4;
--contextualMenuRadius: 0;
--contextualMenuText: #687281;
--contextualSubMenuBg: rgb(255 255 255);
--contextualHover: #e1e1e1;
--contextualOverflowIcon: #999;
--contextualSeperator: #d0d3d3;
}
.contextualMenu {
font-size: .9em;
padding: 5px 0;
}
.nav-fixed .topnav { .nav-fixed .topnav {
z-index: 1039; z-index: 1039;
} }
...@@ -1158,7 +1174,6 @@ legend { ...@@ -1158,7 +1174,6 @@ legend {
transition: all 0.3s; transition: all 0.3s;
background: #ffffff; background: #ffffff;
border-right: 1px solid #dcdcdc; border-right: 1px solid #dcdcdc;
z-index: 1039;
} }
#left-sidebar .galene-header { #left-sidebar .galene-header {
...@@ -1208,7 +1223,6 @@ header .collapse { ...@@ -1208,7 +1223,6 @@ header .collapse {
margin: 0; margin: 0;
height: calc(100% - 84px); height: calc(100% - 84px);
width: 100%; width: 100%;
z-index: 1;
position: relative; position: relative;
display: block; display: block;
background-color: #fff; background-color: #fff;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<title>Galène</title> <title>Galène</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="ScreenOrientation" content="autoRotate:disabled"> <meta http-equiv="ScreenOrientation" content="autoRotate:disabled">
<link rel="stylesheet" type="text/css" href="/css/contextual.css">
<link rel="stylesheet" type="text/css" href="/common.css"/> <link rel="stylesheet" type="text/css" href="/common.css"/>
<link rel="stylesheet" type="text/css" href="/galene.css"/> <link rel="stylesheet" type="text/css" href="/galene.css"/>
<link rel="author" href="https://www.irif.fr/~jch/"/> <link rel="author" href="https://www.irif.fr/~jch/"/>
...@@ -248,6 +249,8 @@ ...@@ -248,6 +249,8 @@
<script src="/protocol.js" defer></script> <script src="/protocol.js" defer></script>
<script src="/scripts/toastify.js" defer></script> <script src="/scripts/toastify.js" defer></script>
<!-- See https://github.com/LucasReade/Contextual.js -->
<script src="/scripts/contextual.js" defer></script>
<script src="/galene.js" defer></script> <script src="/galene.js" defer></script>
</body> </body>
</html> </html>
...@@ -1362,6 +1362,38 @@ function stringCompare(a, b) { ...@@ -1362,6 +1362,38 @@ function stringCompare(a, b) {
return 0 return 0
} }
/**
* @param {HTMLElement} user
* @param {string} name
*/
function setUserContectMenu(user, name) {
user.addEventListener('contextmenu', event => {
event.preventDefault();
/** @ts-ignore */
new Contextual({
isSticky: false,
width: '250px',
items: [{
label: 'Send private message',
onClick: () => {
let input = /** @type{HTMLInputElement} */
(document.getElementById('input'));
input.value = '/msg ' + name + ' ';
input.focus();
},
enabled: true
},
{type: 'seperator'},
{
label: 'Show commands',
onClick: () => {
commands.help.f(null, null);
}
}]
});
});
}
/** /**
* @param {string} id * @param {string} id
* @param {string} name * @param {string} name
...@@ -1391,6 +1423,7 @@ function addUser(id, name) { ...@@ -1391,6 +1423,7 @@ function addUser(id, name) {
} }
} }
div.appendChild(user); div.appendChild(user);
setUserContectMenu(user, name);
} }
/** /**
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment