laravel-jstools
Version:
JS tools for building front-side of Laravel applications
47 lines (46 loc) • 1.59 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Tree = void 0;
class Tree {
constructor(treeId, options, data) {
this.treeId = treeId;
this.$tree = $(`#${treeId}`);
this.$tree.jstree(options);
this.tree = this.$tree.jstree(true);
this.setHoverListener();
this.setData(data);
}
setHoverListener() {
this.$tree.on('hover_node.jstree', () => {
const bar = this.$tree.find('.jstree-wholerow-hovered');
bar.css('height', bar.parent().children('a.jstree-anchor').height() + 'px');
});
}
prepareData(data) {
const nodeData = [];
data.forEach((item) => {
const nodeItem = {};
nodeItem.id = `${this.treeId}_${item.value}`;
nodeItem.li_attr = { 'data-value': item.value };
nodeItem.a_attr = { 'data-value': item.value };
nodeItem.text = item.text;
nodeItem.children = this.prepareData(item.children);
nodeData.push(nodeItem);
});
return nodeData;
}
setData(data) {
this.tree.close_all();
this.tree.settings.core.data = this.prepareData(data);
this.tree.refresh();
}
select(value) {
this.tree.deselect_all();
this.tree.select_node(`${this.treeId}_${value}`);
}
getValue() {
const selected = this.tree.get_selected(true)[0];
return selected ? selected.li_attr['data-value'] : null;
}
}
exports.Tree = Tree;