Skip to content

Instantly share code, notes, and snippets.

@niusounds
Created December 16, 2016 09:02
Show Gist options
  • Save niusounds/8bf811320166c0d55e35e8b91fc888d2 to your computer and use it in GitHub Desktop.
Save niusounds/8bf811320166c0d55e35e8b91fc888d2 to your computer and use it in GitHub Desktop.
Use jsTree as a component for Angular 1.
angular.module('jsTree', [])
.component('jsTree', {
template: '<div id="js-tree"></div>',
bindings: {
core: '<',
pluginsConf: '<',
plugins: '<',
onInit: '&',
onLoading: '&',
onLoaded: '&',
onReady: '&',
onLoadNode: '&',
onLoadAll: '&',
onModel: '&',
onRedraw: '&',
onBeforeOpen: '&',
onOpenNode: '&',
onAfterOpen: '&',
onCloseNode: '&',
onAfterClose: '&',
onOpenAll: '&',
onCloseAll: '&',
onEnableNode: '&',
onDisableNode: '&',
onHideNode: '&',
onShowNode: '&',
onHideAll: '&',
onShowAll: '&',
onActivateNode: '&',
onHoverNode: '&',
onDehoverNode: '&',
onSelectNode: '&',
onChanged: '&',
onDeselectNode: '&',
onSelectAll: '&',
onDeselectAll: '&',
onSetState: '&',
onRefresh: '&',
onRefreshNode: '&',
onSetId: '&',
onSetText: '&',
onCreateNode: '&',
onRenameNode: '&',
onDeleteNode: '&',
onMoveNode: '&',
onCopyNode: '&',
onCut: '&',
onCopy: '&',
onPaste: '&',
onClearBuffer: '&',
onSetTheme: '&',
onShowStripes: '&',
onHideStripes: '&',
onShowDots: '&',
onHideDots: '&',
onShowIcons: '&',
onHideIcons: '&',
onShowEllipsis: '&',
onHideEllipsis: '&'
},
controller: class {
$onInit() {
// Create jsTree config object
let jsTreeConf = jQuery.extend({
core: this.core,
plugins: this.plugins
}, this.pluginsConf);
$('#js-tree')
.jstree(jsTreeConf)
// Bind events
.on('init.jstree', (ev, data) => this.onInit({ $event: ev, data }))
.on('loading.jstree', (ev, data) => this.onLoading({ $event: ev, data }))
.on('loaded.jstree', (ev, data) => this.onLoaded({ $event: ev, data }))
.on('ready.jstree', (ev, data) => this.onReady({ $event: ev, data }))
.on('load_node.jstree', (ev, data) => this.onLoadNode({ $event: ev, data }))
.on('load_all.jstree', (ev, data) => this.onLoadAll({ $event: ev, data }))
.on('model.jstree', (ev, data) => this.onModel({ $event: ev, data }))
.on('redraw.jstree', (ev, data) => this.onRedraw({ $event: ev, data }))
.on('before_open.jstree', (ev, data) => this.onBeforeOpen({ $event: ev, data }))
.on('open_node.jstree', (ev, data) => this.onOpenNode({ $event: ev, data }))
.on('after_open.jstree', (ev, data) => this.onAfterOpen({ $event: ev, data }))
.on('close_node.jstree', (ev, data) => this.onCloseNode({ $event: ev, data }))
.on('after_close.jstree', (ev, data) => this.onAfterClose({ $event: ev, data }))
.on('open_all.jstree', (ev, data) => this.onOpenAll({ $event: ev, data }))
.on('close_all.jstree', (ev, data) => this.onCloseAll({ $event: ev, data }))
.on('enable_node.jstree', (ev, data) => this.onEnableNode({ $event: ev, data }))
.on('disable_node.jstree', (ev, data) => this.onDisableNode({ $event: ev, data }))
.on('hide_node.jstree', (ev, data) => this.onHideNode({ $event: ev, data }))
.on('show_node.jstree', (ev, data) => this.onShowNode({ $event: ev, data }))
.on('hide_all.jstree', (ev, data) => this.onHideAll({ $event: ev, data }))
.on('show_all.jstree', (ev, data) => this.onShowAll({ $event: ev, data }))
.on('activate_node.jstree', (ev, data) => this.onActivateNode({ $event: ev, data }))
.on('hover_node.jstree', (ev, data) => this.onHoverNode({ $event: ev, data }))
.on('dehover_node.jstree', (ev, data) => this.onDehoverNode({ $event: ev, data }))
.on('select_node.jstree', (ev, data) => this.onSelectNode({ $event: ev, data }))
.on('changed.jstree', (ev, data) => this.onChanged({ $event: ev, data }))
.on('deselect_node.jstree', (ev, data) => this.onDeselectNode({ $event: ev, data }))
.on('select_all.jstree', (ev, data) => this.onSelectAll({ $event: ev, data }))
.on('deselect_all.jstree', (ev, data) => this.onDeselectAll({ $event: ev, data }))
.on('set_state.jstree', (ev, data) => this.onSetState({ $event: ev, data }))
.on('refresh.jstree', (ev, data) => this.onRefresh({ $event: ev, data }))
.on('refresh_node.jstree', (ev, data) => this.onRefreshNode({ $event: ev, data }))
.on('set_id.jstree', (ev, data) => this.onSetId({ $event: ev, data }))
.on('set_text.jstree', (ev, data) => this.onSetText({ $event: ev, data }))
.on('create_node.jstree', (ev, data) => this.onCreateNode({ $event: ev, data }))
.on('rename_node.jstree', (ev, data) => this.onRenameNode({ $event: ev, data }))
.on('delete_node.jstree', (ev, data) => this.onDeleteNode({ $event: ev, data }))
.on('move_node.jstree', (ev, data) => this.onMoveNode({ $event: ev, data }))
.on('copy_node.jstree', (ev, data) => this.onCopyNode({ $event: ev, data }))
.on('cut.jstree', (ev, data) => this.onCut({ $event: ev, data }))
.on('copy.jstree', (ev, data) => this.onCopy({ $event: ev, data }))
.on('paste.jstree', (ev, data) => this.onPaste({ $event: ev, data }))
.on('clear_buffer.jstree', (ev, data) => this.onClearBuffer({ $event: ev, data }))
.on('set_theme.jstree', (ev, data) => this.onSetTheme({ $event: ev, data }))
.on('show_stripes.jstree', (ev, data) => this.onShowStripes({ $event: ev, data }))
.on('hide_stripes.jstree', (ev, data) => this.onHideStripes({ $event: ev, data }))
.on('show_dots.jstree', (ev, data) => this.onShowDots({ $event: ev, data }))
.on('hide_dots.jstree', (ev, data) => this.onHideDots({ $event: ev, data }))
.on('show_icons.jstree', (ev, data) => this.onShowIcons({ $event: ev, data }))
.on('hide_icons.jstree', (ev, data) => this.onHideIcons({ $event: ev, data }))
.on('show_ellipsis.jstree', (ev, data) => this.onShowEllipsis({ $event: ev, data }))
.on('hide_ellipsis.jstree', (ev, data) => this.onHideEllipsis({ $event: ev, data }))
}
}
});
<js-tree core="core" plugins="plugins" on-ready="onReady($event, data)" on-select-node="onSelectNode($event, data)" on-move-node="onMoveNode($event, data)"></js-tree>
angular.module('App', ['jsTree'])
.controller('Main', function ($scope) {
$scope.core = {
multiple: false,
animation: true,
data: [{
text: 'Hello'
}, {
text: 'World!'
}]
};
$scope.plugins = ['dnd', 'wholerow'];
$scope.onReady = (ev, data) => {
console.log('ready', data.instance);
}
$scope.onSelectNode = (ev, data) => {
console.log('select', data);
}
$scope.onMoveNode = (ev, data) => {
console.log('move', data);
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment