# Options
The options prop is optional if you would like to override some of the default options.
{
/* Whether node can be expanded or is a leaf node */
isExpandable (node: ITreeNode): boolean;
/* Getter for node children, is awaited.
* Useful when you need to retreive children asynchronously */
getChildren (node: ITreeNode): ITreeNode[] | Promise<ITreeNode[]>;
/* Virtual scrolling is crucial when using large number of nodes */
virtualScrolling: {
useVirtualScrolling: boolean;
/* When enabled, you have to define the node's height.
If variable size mode is enabled, provide minimal height of each item.
Does not matter if some are bigger */
itemSize: number;
/* When enabled, each item can have variable height.
May have impact on performance */
enableVariableSize: boolean;
/** Refer to @link https://github.com/Akryum/vue-virtual-scroller for available options.
* You should not define here 'items', 'itemSize' and 'minItemSize'
*/
vueVirtualScrollerOptions: object;
};
/* Node evaluators executed during tree traversal. See TBD */
nodeEvaluators: INodeEvaluator[];
/* Search by node name utility */
matchTermEvaluator: {
enabled: boolean;
/* Classname appended to nodes that match the search term */
highlightClass: string;
};
/* Varisous visual options of the tree */
visual: {
/* Show icons for folders (i.e. nodes for which isExpandle is true) */
showIconForFolders: boolean;
/* Show left dotted line for folder's content */
showFolderBorders: boolean;
/* When enabled, there is utility to hide and show the tree */
useTreeVisibilityToggle: boolean;
};
i18n: {
show_all: string;
term_search: string;
select_root: string;
};
}
# Default options
Default options
{
isExpandable: node.children.some((child) => {
return !child.__filtered && child.__visible;
}),
getChildren: (node) => node.children;,
virtualScrolling: {
useVirtualScrolling: false,
itemSize: 0,
enableVariableSize: false,
vueVirtualScrollerOptions: {
buffer: 1000,
direction: 'vertical',
sizeField: 'size',
typeField: 'type',
pageMode: false,
prerender: 0,
emitUpdate: false,
keyField: 'id',
},
},
nodeEvaluators: [],
matchTermEvaluator: {
enabled: true,
highlightClass: 'bg-yellow-400',
},
visual: {
showIconForFolders: true,
showFolderBorders: true,
useTreeVisibilityToggle: true,
},
i18n: {
show_all: 'Show all',
term_search: 'Search',
select_root: 'Select root',
},
};
# Example with custom options
<template>
<div id="app">
<performant-vue-tree :trees="treeData" :options="options" />
</div>
</template>
<script lang="ts">
import Vue from 'vue'
import performantTree from 'performant-vue-tree'
export default Vue.extend({
name: 'App',
components: {
performantTree
},
data () {
return {
treeData: [
{
id: 'root1',
children: []
}
],
options: {
matchTermEvaluator: {
enabled: false;
};
virtualScrolling: {
useVirtualScrolling: true,
minItemSize: 17.5,
},
}
},
},
})
</script>