<!DOCTYPE html>
<html>

  <head>
    <title>PrimeReact QuickStart</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="style.css">
    
    <!-- PrimeReact style dependencies -->
    <link rel="stylesheet" href="https://unpkg.com/primereact@1.4.0/resources/themes/omega/theme.css" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
    <link rel="stylesheet" href="https://unpkg.com/primereact@1.4.0/resources/primereact.min.css" />
    
    <!-- Configure SystemJS -->
    <script src="https://unpkg.com/systemjs@0.20"></script>
    <script src="systemjs.config.js"></script>
  </head>

  <body>
    <div id="root"></div>
  </body>

</html>
body {
  padding: 2em;
  font-family: Arial, Helvetica, sans-serif;
}

# PrimeReact Issue Template
Please create a test case and attach the link of the plunkr to your github issue report.
/*global System */
'use strict';

System.config({
    transpiler: 'plugin-babel',
    babelOptions: {
        sourceMaps: false,
        stage0: true,
        react: true
    },
    meta: { },
    paths: {
      'npm:': 'https://unpkg.com/'
    },
    map: {
      // our app is within the app folder
      app: 'app/index.jsx', 
      "plugin-babel": 'https://unpkg.com/systemjs-plugin-babel@0.0.25/plugin-babel.js',
      "systemjs-babel-build": 'https://unpkg.com/systemjs-plugin-babel@0/systemjs-babel-browser.js',
      "react": "npm:react@16/umd/react.development.js",
      "react-dom": "npm:react-dom@16/umd/react-dom.development.js",
      "prop-types": "npm:prop-types/prop-types.js",
      "classnames": "npm:classnames@2.2.5",
      "font-awesome": "npm:font-awesome@4.7.0",
      "react-scripts": "npm:react-scripts@1.0.11",
      "react-transition-group": "npm:react-transition-group@2.2.1",
      "primereact": "npm:primereact@1.4.0"

    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      'https://unpkg.com/' : { defaultExtension: false },
    }
});
 
System.import('app');
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App />, document.getElementById('root'));
import React from 'react';
import {Button} from 'primereact/components/button/Button';
import {treeData} from './../dataHelper.js'; 
import {Tree} from 'primereact/components/tree/Tree';

export default class App extends React.Component {
    
    constructor(props) {
        super(props);
        this.state = {
          treeData,
          selectedNode: null
        }
    }

   modifyNodeLabel = ()=>{
      const id = Math.floor(Math.random()*1000);
      const newTree = this.state.treeData;
      treeData[1].label="2> Pictures changed "+id;
       this.setState({
        treeData:newTree
      })
   }

    addNewNodeAndSelect = ( parentId)=>{
      const id = Math.floor(Math.random()*100);
      const newNodeData =   {
                    "label": id+ "> New Node ",
                    "data": {
                      id,
                      parentId
                    },
                    "expandedIcon": "fa-folder-open",
                    "collapsedIcon": "fa-folder",
                    "children": [],
                    "selected": true,
                    "isSelected": true,
                    "expanded": true
                }
      const newTree = this.modifyTree(this.state.treeData,newNodeData );
      this.setState({
        treeData:newTree
      })
    }

     modifyTree = (currentTree, nodeAdd) =>{
       return currentTree.map((node)=>{
         if (node.children){
               if (node.data.id === nodeAdd.data.parentId){
                 node.expanded=true;
                 node.children.push(nodeAdd);
               }else{
                    node.children = this.modifyTree(node.children, nodeAdd);
               }
               return node;
           }else{
                if ( node.data.id === nodeAdd.data.parentId){
                  node.expanded=true;
                    node.children= [];
                    node.children.push(nodeAdd);
                }
               return node;
           }
       });
    }
    
    onSelectNode = (selectedEvent) => {
      this.setState({
        selectedNode: selectedEvent.selection.label
      })
    }
    
    render() {
        return (
          <div className="App">
            <div>
              <h2>PrimeReact Issue : https://forum.primefaces.org/viewtopic.php?f=57&t=55696 </h2>

            </div>
            <div>
              <Button label="Add node to NODE 1" onClick={()=>this.addNewNodeAndSelect(1)} />
                <Button label="Add node to NODE 2" onClick={()=>this.addNewNodeAndSelect(2)} />
                <Button label="Modify NODE 2 label" onClick={()=>this.modifyNodeLabel()} />
                              <p>Selected Node: {this.state.selectedNode}</p>
             <Tree value={this.state.treeData} selectionMode="single" selectionChange={this.onSelectNode}/>
            </div>
          </div>
        );
    }
}
export const treeData = [
            {
                "label": "1 > Documents",
                "data": {id:1},
                "expandedIcon": "fa-folder-open",
                "collapsedIcon": "fa-folder",
                "children": [{
                    "label": "111 > Work",
                    "data": {id: 111},
                    "expandedIcon": "fa-folder-open",
                    "collapsedIcon": "fa-folder",
                    "children": [
                      { "label": "11 > Expenses.doc", "icon": "fa-file-word-o", "data":{id:11} }, 
                    { "label": "12 > Resume.doc", "icon": "fa-file-word-o",  "data":{id:12} }
                    ]
                },
                {
                    "label": "112 > Home",
                    "data": {id: 112},
                    "expandedIcon": "fa-folder-open",
                    "collapsedIcon": "fa-folder",
                    "children": [{ "label": "21> Invoices.txt", "icon": "fa-file-word-o", "data":{id:21}}]
                }]
            },
            {
                "label": "2> Pictures",
                "data": {id: 2},
                "expandedIcon": "fa-folder-open",
                "collapsedIcon": "fa-folder",
                "children": [
                    { "label": "31 >barcelona.jpg", "icon": "fa-file-image-o", "data":{id:31} },
                    { "label": "32 > logo.jpg", "icon": "fa-file-image-o", "data":{id:32} },
                    { "label": "33> primeui.png", "icon": "fa-file-image-o", "data":{id:33} }]
            }
           
        ];