DevExtreme React - Customize the Menu
By default, the slide-out menu is empty. To specify its content, declare a template for it. Although the slide-out menu can contain any widget, we recommend you place a collection widget there. For example, in the following code, the slide-out menu contains the TreeView widget. Note that this widget is placed into a dxTemplate whose name is assigned to the menuTemplate option of the SlideOutView. All the other code configures the TreeView and does not affect the SlideOutView directly.
<div id="slideOutView"> <div data-options="dxTemplate: { name: 'content' }"> <div id="toolbar"></div> <div id="chart"></div> </div> <div data-options="dxTemplate: { name: 'treeView' }"> <div id="treeView"></div> </div> </div>
$(function() { var slideOutView = $("#slideOutView").dxSlideOutView({ menuTemplate: 'treeView', contentTemplate: 'content' }).dxSlideOutView("instance"); var toolbar = $("#toolbar").dxToolbar({ // Toolbar is configured in the "Customize the View" article }).dxToolbar("instance"); var chart = $("#chart").dxChart({ // Chart is configured in the "Customize the View" article }).dxChart("instance"); $("#treeView").dxTreeView({ width: 200, selectionMode: "single", selectByClick: true, onContentReady: function (e) { e.component.selectItem("1_1"); }, dataSource: [{ id: '1', text: 'Fruits', expanded: true, items: [ { id: '1_1', text: 'Apples', china: 37001601, usa: 4110050 , turkey: 2889000 }, { id: '1_2', text: 'Oranges', china: 14400000, usa: 15700000, turkey: 1800000 } ] }, { id: '2', text: 'Vegetables', expanded: true, items: [ { id: '2_1', text: 'Cucumbers', china: 54300000, usa: 886480, turkey: 1800000 }, { id: '2_2', text: 'Tomatoes', china: 33911935, usa: 10965452, turkey: 5976732 } ] }], onItemSelectionChanged: function (e) { if(e.node.children.length < 1) { slideOutView.hideMenu(); var toolbarItems = toolbar.option("dataSource"); toolbarItems[1].text = e.node.itemData.text; toolbar.option("dataSource", toolbarItems); chart.option("dataSource", [e.node.itemData]); } } }); });
#slideOutView { height: auto; position: absolute; top: 0; bottom: 0; width: 100%; }
The menuTemplate option can also accept a function combining the HTML markup. In this case, you do not need to specify any markup for the slide-out menu in the HTML file.
<div id="slideOutView"> <div data-options="dxTemplate: { name: 'content' }"> <div id="toolbar"></div> <div id="chart"></div> </div> </div>
$(function() { var slideOutView = $("#slideOutView").dxSlideOutView({ menuTemplate: function (menu) { menu.append( $("<div />").attr("id", "treeView") ) }, contentTemplate: 'content' }).dxSlideOutView("instance"); // The rest is omitted for brevity });
By default, the menu slides out from the left side of the screen. To make it slide out from the right side, change the menuPosition option.
$(function() { var slideOutView = $("#slideOutView").dxSlideOutView({ menuTemplate: 'treeView', contentTemplate: 'content', menuPosition: 'inverted' // or "normal" }).dxSlideOutView("instance"); // ... });
In addition, you can use a 3rd-party template engine to customize the menu. For more information, see the 3rd-Party Template Engines article.
See Also
If you have technical questions, please create a support ticket in the DevExpress Support Center.