SEO-friendly Tree View Plugin For Bootstrap 4 - bstree
File Size: | 135 KB |
---|---|
Views Total: | 10385 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

bstree is a simple-to-use jQuery/Bootstrap 4 plugin used to present hierarchical data in a semantic, collapsible tree view with checkboxes.
Features:
- SEO friendly. The plugin renders a tree view from nested HTML lists.
- Supports Three State Checkbox: checked, unchecked, or indeterminate.
- Font Awesome icons.
- Lots of configuration options.
How to use it:
1. Load the needed jQuery library, Bootstrap 4 framework, and Font Awesome iconic font in the html document.
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
2. Download and import the jQuery bstree plugin's files.
<link rel="stylesheet" href="bstree.css"> <script src="jquery.bstree.js"></script>
3. Insert your hierarchical data in nested HTML lists as follows:
- data-id: node ID
- date-level: node level
<div id="mytree" class="bstree"> <ul> <li data-id="root" data-level="0"><span>Racine</span> <ul> <li data-id="ACL" data-level="1"><span>Alsace - Champagne-Ardenne - Lorraine</span> <ul> <li data-id="ALS" data-level="2"><span>Alsace</span> <ul> <li data-id="ALS01" data-level="3"><span>Colmar</span></li> <li data-id="ALS02" data-level="3"><span>Mulhouse</span></li> <li data-id="ALS03" data-level="3"><span>Darmstadt</span></li> </ul> </li> <li data-id="CHA" data-level="2"><span>Champagne-Ardenne</span> <ul> <li data-id="CHA01" data-level="3"><span>Bazeilles</span></li> <li data-id="CHA02" data-level="3"><span>Châlons-en-Champagne</span></li> <li data-id="CHA03" data-level="3"><span>Charleville-Mézières</span></li> </ul> </li> <li data-id="LOR" data-level="2"><span>Lorraine</span> <ul> <li data-id="LOR01" data-level="3"><span>Cosnes-et-Romain</span></li> <li data-id="LOR02" data-level="3"><span>Épinal</span></li> <li data-id="LOR03" data-level="3"><span>Forbach</span></li> </ul> </li> </ul> </li> </ul> </li> </ul> </div>
4. Call the function to render a basic tree view on the page.
$('document').ready(function () { $('#mytree').bstree() })
5. Add checkboxes to the nodes.
<input id="bstree-data" type="hidden" name="bstree-data" data-ancestors="ALS:IDF"> <div id="mytree" class="bstree"> ... </div>
$('document').ready(function () { $hiddenInput = $('#bstree-data') $('#mytree').bstree({ dataSource: $hiddenInput, initValues: $hiddenInput.data('ancestors'), onDataPush: function (values) { var def = '<strong class="pull-left">Values: </strong>' for (var i in values) { def += '<span class="pull-left">' + values[i] + ' </span>' } $('#status').html(def) }, updateNodeTitle: function (node, title) { return '[' + node.attr('data-id') + '] ' + title + ' (' + node.attr('data-level') + ')' } }) })
6. All default configuration options to customize the tree view.
$('#mytree').bstree({ DEBUG: false, dataSource: '', // the source control id initValues: '', dataSeparator: ':', // the separator used for the exploded data chevronOpened: '<i class="fa fa-toggle-down fa-lg"></i>', // the icon used for an opened node chevronClosed: '<i class="fa fa-toggle-right fa-lg"></i>', // the icon used for a closed node isExpanded: false, // sets if nodes are initially expanded nodeClass: pluginName + '-node', // generic node class compositeClass: pluginName + '-composite', // composite node class leafClass: pluginName + '-leaf', // leaf node class childrenClass: pluginName + '-children', // node children class innerContainerClass: pluginName + '-inner-container', chevronClass: pluginName + '-chevron', // chevron icon class labelClass: pluginName + '-label', // label class labelContainerClass: pluginName + '-label-container', iconClass: pluginName + '-icon', // label icon class expandedClass: pluginName + '-expanded', // opened node class closedClass: pluginName + '-closed', // closed node class checkboxClass: pluginName + '-checkbox', // checkbox class incompleteClass: pluginName + '-incomplete', // incomplete node class vLineClass: pluginName + '-vline', dataClass: pluginName + '-data', openTitle: 'Open', closeTitle: 'Close', checkboxTitle: 'Do action', updateNodeTitle: null, onDataPush: null })
This awesome jQuery plugin is developed by glimberger. For more Advanced Usages, please check the demo page or visit the official website.