Demo - Wijmo TreeView
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.grapecity.com/wijmo/5.latest/styles/wijmo.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.nav.min.js"></script>
<div class="container">
<div id="theTree"></div>
<div id="selection"></div>
<div id="click"></div>
</div>
CSS
/* default trees on this sample */
.wj-treeview {
display:block;
//height: 350px;
font-size: 120%;
margin-bottom: 8px;
padding: 6px;
background: #f0f0f0;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
body {
margin-bottom: 24pt;
}
.wj-node select{
float: right;
}
.wj-treeview .wj-nodelist .wj-node:before {
border: none;
}
.wj-treeview .wj-nodelist > .wj-nodelist > .wj-node,
.wj-treeview .wj-nodelist > .wj-nodelist > .wj-nodelist {
font-size: 100%;
border-left: 1px dashed ;
}
.separator::before {
content: '--';
margin-left: -10px;
color: black;
}
JavaScript
onload = function() {
//var oldFn = wijmo.nav.TreeNode.prototype.setChecked;
wijmo.nav.TreeNode.prototype.setChecked = function(checked) {
let cb = this.checkBox;
cb.checked = checked;
cb.indeterminate = false;
}
// create the tree
var tree = new wijmo.nav.TreeView('#theTree', {
itemsSource: getData(),
displayMemberPath: 'header',
childItemsPath: 'items',
showCheckboxes: true,
checkOnClick: false,
selectedItemChanged: function(s, e) {
var msg = wijmo.format('You selected item <b>{header}</b>.', s.selectedItem);
document.getElementById('selection').innerHTML = msg;
},
itemClicked: function(s, e) {
var msg = wijmo.format('You clicked item <b>{header}</b>.', s.selectedItem);
document.getElementById('click').innerHTML = msg;
},
formatItem: function (s, e) {
if (e.dataItem.newItem) {
e.element.innerHTML +=
'<select style="margin-left:6px"><option value="item 1">item1</option><option value="item 2">item2</option></select>';
var el = e.element.querySelector("select");
el.addEventListener("click", function(e){
e.preventDefault();
e.stopPropagation();
});
}
if (e.level != 0) {
var oldHTML = e.element.innerHTML, span = '';
span = `<span class="separator"></span>`;
e.element.innerHTML = span + oldHTML;
}
}
});
tree.removeEventListener(tree.hostElement, 'keydown');
// window["tree"] = tree;
// get the tree data
function getData() {
return [
{ header: 'Electronics', img: 'resources/electronics.png', items: [
{ header: 'Trimmers/Shavers' },
{ header: 'Tablets' },
{ header: 'Phones', img: 'resources/phones.png', items: [
{ header: 'Apple', items: [
{ header: 'Apple', items: [
{ header: 'Apple' },
{ header: 'Motorola', newItem: true },
...