UNPKG

laravel-jstools

Version:

JS tools for building front-side of Laravel applications

47 lines (46 loc) 1.59 kB
"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;