JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://igniteui.com/js/modernizr.min.js"></script>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.core.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.lob.js"></script>
<script src="https://igniteui.com/js/external/knockout-latest.js"></script>
<script src="https://igniteui.com/js/external/knockout.mapping-latest.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/extensions/infragistics.ui.tree.knockout-extensions.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/extensions/infragistics.ui.editors.knockout-extensions.js"></script>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/themes/infragistics/infragistics.theme.css" rel="stylesheet"></link>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/structure/infragistics.css" rel="stylesheet"></link>

<div><span class="message">Getting data from server...</span></div>
    <div class="container">
        <div id="tree" data-bind="igTree: {
		    dataSource: data,
		    width: '100%',
            dataSourceType: 'json',
            singleBranchExpand: true,
		    bindings: {
			    textKey: 'CategoryName',
			    valueKey: 'ID',
                childDataProperty: 'Products',
                bindings: {
                    textKey: 'ProductName',
                    valueKey: 'ProductID'
                }
		    }
	    }"></div>
    </div>

    <div class="container">
        <div id="categoryEditorsContainer" tabindex="0">
            <h4>Category</h4>
            <table>
                <colgroup>
                    <col span="1" style="min-width: 30%;">
                    <col span="1" style="width: 68%;">
                </colgroup>
                <tr>
                    <td>Name:</td>
                  ...

CSS

.message
        {
            color: darkorange;
            font-weight: bold;
        }

        .container
        {
            width: 40%;
            position: relative;
            float: left;
            padding: 0px 10px 0px 10px;
        }

        #tree
        {
            border-right: 1px solid grey;
        }

        #categoryEditorsContainer, #productEditorsContainer
        {
            display: none;
        }

		@media screen and (max-width: 600px) {
    		.container { 
				width: 100%;
				clear: both;
				padding-top: 10px;
    		}
			#tree
			{
				border-right: none;
				border-bottom: 1px solid grey;
			}
        }

JavaScript

$(function () {
var viewModel;

        //  Define empty objects for Category and Product to be used when
        //  nothing is to be rendered in the editor controls
        ViewModel.prototype.categoryEmpty = {
            CategoryName: "",
            Description: "",
            ProductCount: 0
        };
        ViewModel.prototype.productEmpty = {
            ProductName: "",
            QuantityPerUnit: 0.0,
            UnitPrice: 0.0,
            UnitsInStock: 0.0,
            UnitsOnOrder: 0.0,
            Discontinued: false
        };

        //  Creates a ViewModel object
        function ViewModel(categories) {
            var self = this;

            this.data = categories;
            this.Category = ko.observable(self.categoryEmpty);
            this.Product = ko.observable(self.productEmpty);

            this.SetSelected = function (item) {
                if (item.ProductName != null) {
                    self.Product(item);
                }
                else if (item.CategoryName != null) {
                    self.Category(item);
                    self.Product(self.productEmpty);
                }
            };
        };

        $(function () {
            $(".message").ajaxError(function () {
                $(this).css("color", "red");
                $(this).text("Error getting product categories!");
            });
            //  Get all the Categories and their related Products from the Northwind database
               $.getJSON("https://www.igniteui.com/api/categories?callback=?", function (data) {
                viewModel = new ViewModel(ko.mapping.fromJS(data.d.results));

                viewModel.Category.subscribe(function (item) {
                    setContainerVisible(item, "#categoryEditorsContainer");
                });

                viewModel.Product.subscribe(function (item) {
                    setContainerVisible(item, "#productEditorsContainer");
                });

               ...