react-kendo
Version:
React Component Library for Kendo UI Widgets. There exists a React Component named for every Kendo widget in the kendo.ui namespace. Tested on React 0.12 and KendoUI 2014.3.1411.
181 lines (150 loc) • 4.54 kB
Markdown
# react-kendo
[![npm version][npm-image]][npm-url]
[![Build status][travis-image]][travis-url]
[![Dependency Status][daviddm-image]][daviddm-url]
React Component Library for Kendo UI Widgets. There exists a React Component
named for every Kendo widget in the
[kendo.ui](http://docs.telerik.com/kendo-ui/api/javascript/ui/ui) namespace.
Tested on React 0.13 and KendoUI 2014.3.1411.
## Install
```sh
$ npm install react-kendo --save
```
```html
<script src="http://cdn.kendostatic.com/2014.3.1411/js/kendo.all.min.js"></script>
<link href='http://cdn.kendostatic.com/2014.3.1411/styles/kendo.common.min.css' rel='stylesheet'>
<!-- and so forth... -->
```
Please note: Kendo Professional Components require
[a License](http://www.telerik.com/purchase/kendo-ui).
## Usage
```js
var React = require('react');
var k = React.Kendo = require('react-kendo');
/**
* Instead of, e.g.
* $('#my-splitter').kendoSplitter(splitterOptions);
*/
var splitterOptions = {
orientation: 'horizontal',
panes: [
{ collapsible: false, size: '300px' },
{ resizable: true }
]
};
var treeOptions = { /* ... */ };
var gridOptions = { /* ... */ };
var Workstation = React.createClass({
render: function () {
return (
<k.Splitter options={splitterOptions}>
<k.TreeView options={treeOptions} />
<k.Grid options={gridOptions} />
</k.Splitter>
);
}
});
```
## Properties
### `options`
The main Kendo options object that is sent into the constructor. e.g.
`$('#my-splitter').kendoSplitter(options);`
### `tag`
The `tag` property specifies the html tag that the Kendo widget will be bound
to. This is `div` by default, but can be set to
[any tag supported by React](http://facebook.github.io/react/docs/tags-and-attributes.html#html-elements).
### `reactive`
Version 0.13 and later support automatically re-initializing the Kendo Widget
when the `options` property is updated. This is useful for re-loading Grids
with new data, among other things. This is `false` by default.
### `debug`
Set `debug=true` to log detailed information on the lifecycle events of your
react-kendo component.
## Additional Components
### `React.Kendo.Template`
A React Component that represents a [Kendo Template](http://docs.telerik.com/kendo-ui/framework/templates/overview).
Easily create a Kendo Template from a React Component. Additionally mixin
`React.Kendo.TemplateMixin`.
```js
var k = React.Kendo;
var MyListItem = React.createClass({
mixins: [
k.TemplateMixin
],
render: function () {
var item = this.props.item;
return (
<span>{item.title}</span>
);
}
});
var KendoList = React.createClass({
render: function () {
return (
<k.ListView options={
template: function (item) {
return k.Template(<MyListItem item={item} />);
}
} />
);
}
});
```
### `React.Kendo.RowTemplate`
Use this component for Kendo Grid [Row
Templates](http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-rowTemplate).
```js
var MyGridRow = React.createClass({
mixins: [
k.TemplateMixin
],
render: function () {
var row = this.props.row;
return (
<span>{row.myField}</span>
);
}
});
var KendoList = React.createClass({
render: function () {
return (
<k.Grid options={
template: function (row) {
return k.RowTemplate(<MyGridRow row={row} />);
}
} />
);
}
});
```
## Supplemental Functions
`react-kendo` also includes some extra functionality that isn't included in
Kendo. These functions are added to the Kendo components via React mixins.
### `Grid.enableDraggableRows(group, options)`
Invoke this function to make Grid rows draggable. This is not possible by
default in the kendo-ui library.
```js
var k = React.Kendo;
var KendoList = React.createClass({
componentDidMount: function () {
this.refs.grid.enableDraggableRows('myGroup', {
drag: function (e) {
// some custom stuff
}
});
},
render: function () {
return (
<k.Grid ref='grid' options={...} />
);
}
});
```
## License
MIT
[npm-image]: https://img.shields.io/npm/v/react-kendo.svg?style=flat-square
[npm-url]: https://npmjs.org/package/react-kendo
[travis-image]: https://img.shields.io/travis/tjwebb/react-kendo.svg?style=flat-square
[travis-url]: https://travis-ci.org/tjwebb/react-kendo
[daviddm-image]: http://img.shields.io/david/tjwebb/react-kendo.svg?style=flat-square
[daviddm-url]: https://david-dm.org/tjwebb/react-kendo