JSFiddle - React, Tailwind, and code Playground

by liyuankui

HTML

<script src="http://sydcanem.github.io/bootstrap-contextmenu/bootstrap-contextmenu.js"></script>
<h3>Context Menus</h3>
<hr>
<ul id="list2" data-toggle="context" data-target="#context-menu2" class='list'>
    <li>Apple</li>
    <li>Orange</li>
    <li>Pear</li>
    <li>Pineapple</li>
</ul>
<div id="context-menu2" style="position: absolute; z-index: 9999; top: 260px; left: 567px;" class="menu">
    <ul class="dropdown-menu" role="menu">
        <li class='with-postfix'><a tabindex="-1">Delete</a>

        </li>
        <li><a tabindex="-1">Another action</a>

        </li>
        <li><a tabindex="-1">Something else here</a>

        </li>
        <li class="dropdown-submenu"> <a tabindex="-1" href="#">More options</a>

            <ul class="dropdown-menu">
                <li><a tabindex="-1" href="#">Second level</a>

                </li>
                <li class="dropdown-submenu"> <a href="#">More..</a>

                    <ul class="dropdown-menu">
                        <li><a href="#">3rd level</a>

                        </li>
                        <li><a href="#">3rd level</a>

                        </li>
                    </ul>
                </li>
                <li><a href="#">Second level</a>

                </li>
                <li><a href="#">Second level</a>

                </li>
            </ul>
        </li>
        <li class="divider"></li>
        <li><a tabindex="-1">Separated link</a>

        </li>
    </ul>
</div>
<hr>
<ul id="list" data-toggle="context" data-target="#context-menu" class='list'>
    <li>Apple</li>
    <li>Orange</li>
    <li>Pear</li>
    <li>Pineapple</li>
</ul>
<div id="context-menu" style="position: absolute; z-index: 9999; top: 260px; left: 567px;" class="menu">
    <ul class="dropdown-menu" role="menu">
        <li class='with-postfix'><a tabindex="-1">Delete <span class='__post-fix'></span></a>

        </li>
        <li><a tabindex="-1">Another action</a>

        </li>
        <li><a...

CSS

.list {
    list-style: none;
}
.list li {
    border-bottom: 1px solid black;
    cursor:pointer;
}
.list li.selected {
    background: #dadada;
}
.__post-fix {
    font-weight:bolder;
}
.menu li {
    cursor: pointer;
}
.dropdown-submenu {
    position:relative;
}
.dropdown-submenu>.dropdown-menu {
    top:0;
    left:100%;
    margin-top:-6px;
    margin-left:-1px;
    -webkit-border-radius:0 6px 6px 6px;
    -moz-border-radius:0 6px 6px 6px;
    border-radius:0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
    display:block;
}
.dropdown-submenu>a:after {
    display:block;
    content:" ";
    float:right;
    width:0;
    height:0;
    border-color:transparent;
    border-style:solid;
    border-width:5px 0 5px 5px;
    border-left-color:#cccccc;
    margin-top:5px;
    margin-right:-10px;
}
.dropdown-submenu:hover>a:after {
    border-left-color:#ffffff;
}
.dropdown-submenu.pull-left {
    float:none;
}
.dropdown-submenu.pull-left>.dropdown-menu {
    left:-100%;
    margin-left:10px;
    -webkit-border-radius:6px 0 6px 6px;
    -moz-border-radius:6px 0 6px 6px;
    border-radius:6px 0 6px 6px;
}

JavaScript

$(document).mousedown(function (e) {
    $('li').removeClass('selected');
    $(e.target).addClass('selected');
    if (e.button == 2) {
        if (e.target.nodeName == "LI") $('.with-postfix .__post-fix').html(e.target.innerText);
    }
    return true;
});