diff options
Diffstat (limited to 'demo/react.html')
-rw-r--r-- | demo/react.html | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/demo/react.html b/demo/react.html deleted file mode 100644 index 2194537..0000000 --- a/demo/react.html +++ /dev/null @@ -1,148 +0,0 @@ -<!doctype html> -<!-- -title: Overview -order: 1 -layout: page ---> - -<html> - -<head> - <title>vaadin-core-elements Code Examples - React Integration</title> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - - <script src="../../webcomponentsjs/webcomponents-lite.js"></script> - <link rel="import" href="common.html"> - -</head> - -<body unresolved> - - <section> - <h1>React Integration</h1> - <p>This example demonstrates using vaadin-grid with React framework. - As React doesn't support custom attributes for elements, - vaadin-grid DOM API can't be fully utilized in the initialization.</p> - <p>Fortunately vaadin-grid also provides corresponding JavaScript APIs.</p> - <p><strong>Note:</strong> vaadin-grid is not a React component. Instead, it must be - used with React like any JavaScript class. Please see the code example below or the - <a href='https://facebook.github.io/react/docs/component-specs.html'>React documentation</a> - for more information.</p> - <code-example> - <div demo> - <div id="reactdemo"> - </div> - <script type="text/jsx"> - // Create the UserGrid class - var UserGrid = React.createClass({ - render: function(){ - return ( - <vaadin-grid></vaadin-grid> - ) - }, - - componentDidMount: function() { - var _this = this; - var vGrid = _this.getDOMNode(); - - // Let the mounted <vaadin-grid> upgrade - (function wait() { - if (vGrid.selection) { - // Assign the data source - vGrid.items = _this.items; - vGrid.size = 1000; - - // Bind selection listener - vGrid.addEventListener("selected-items-changed", _this.onRowSelect); - - var pictureRenderer = function(cell) { - cell.element.innerHTML = "<img style='width: 30px' src='" + cell.data + "'></img>"; - }; - - // Define columns - vGrid.columns = [ - {name: "user.picture.thumbnail", width: 100, renderer: pictureRenderer}, - {name: "user.name.first"}, - {name: "user.name.last"}, - {name: "user.email"}, - ]; - - } else { - setTimeout( wait, 50 ); - } - })(); - }, - - items: function(params, callback) { - var url = 'https://randomuser.me/api?index=' + params.index + '&results=' + params.count; - getJSON(url, function(data) { - callback(data.results); - }); - }, - - onRowSelect: function(e) { - var onUserSelect = this.props.onUserSelect; - var index = e.target.selection.selected()[0]; - e.target.getItem(index, function(err, data) { - onUserSelect(err ? undefined : data.user); - }); - } - }); - - var UserApp = React.createClass({ - - render: function() { - var userImage; - if (this.state.selected) { - userImage = <img className="user-image" src={this.state.selected.picture.large} ></img>; - } - - return ( - <div> - <UserGrid onUserSelect={this.userSelect}></UserGrid> - {userImage} - </div> - ); - }, - - getInitialState: function() { - return {}; - }, - - userSelect: function(user) { - this.setState({selected: user}); - } - }); - - HTMLImports.whenReady(function(){ - React.render(<UserApp></UserApp>, document.getElementById('reactdemo')); - }); - - </script> - </div> - <code hidden> - document.body.removeAttribute('unresolved'); - </code> - </code-example> - <iframe id='react-embed' src='react-demo-embed.html' style='width: 100%; height: 550px; border: none; display: none;'></iframe> - <script> - var codeExample = document.querySelector("code-example"); - (function wait() { - if (codeExample.async) { - codeExample.async(function() { - var demo = document.querySelector("div[demo]"); - var embed = document.getElementById("react-embed"); - demo.innerHTML = ""; - demo.appendChild(embed); - embed.style.display = "block"; - }); - } else { - setTimeout( wait, 50 ); - } - })(); - </script> - </section> - -</body> -</html> |