Improve list view links

This commit is contained in:
Pierre Burgy 2017-04-11 15:38:15 +02:00
parent acacded075
commit 7ce955f44f
8 changed files with 48 additions and 16 deletions

View File

@ -22,11 +22,6 @@ import '../../styles/main.scss';
import styles from './styles.scss';
export class App extends React.Component { // eslint-disable-line react/prefer-stateless-function
static propTypes = {
children: React.PropTypes.node,
};
render() {
return (
<div>
@ -40,7 +35,12 @@ export class App extends React.Component { // eslint-disable-line react/prefer-s
}
}
App.contextTypes = {
router: React.PropTypes.object.isRequired,
};
App.propTypes = {
children: React.PropTypes.node,
plugins: React.PropTypes.object,
notifications: React.PropTypes.object,
onHideNotification: React.PropTypes.func,

View File

@ -16,11 +16,6 @@ const exposedComponents = {
};
export class PluginPage extends React.Component { // eslint-disable-line react/prefer-stateless-function
static propTypes = {
children: React.PropTypes.node,
};
render() {
const containers = this.props.plugins.valueSeq().map((plugin, i) => {
const Elem = plugin.get('mainComponent');
@ -41,6 +36,10 @@ export class PluginPage extends React.Component { // eslint-disable-line react/p
}
}
PluginPage.contextTypes = {
router: React.PropTypes.object.isRequired,
};
PluginPage.propTypes = {
plugins: React.PropTypes.object,
};

View File

@ -22,6 +22,7 @@ class Table extends React.Component { // eslint-disable-line react/prefer-statel
destination={destination}
headers={this.props.headers}
record={record}
history={this.props.history}
/>
);
});
@ -41,6 +42,10 @@ class Table extends React.Component { // eslint-disable-line react/prefer-statel
}
}
Table.contextTypes = {
router: React.PropTypes.object.isRequired,
};
Table.propTypes = {
records: React.PropTypes.array,
route: React.PropTypes.object,
@ -48,6 +53,7 @@ Table.propTypes = {
headers: React.PropTypes.array,
changeSort: React.PropTypes.func,
sort: React.PropTypes.string,
history: React.PropTypes.object,
};
export default Table;

View File

@ -40,7 +40,6 @@ class TableHeader extends React.Component { // eslint-disable-line react/prefer-
return (
<thead className={styles.tableHeader}>
<tr className={styles.tableHeader}>
<th>ID</th>
{headers}
<th></th>
</tr>

View File

@ -5,19 +5,25 @@
*/
import React from 'react';
import { Link } from 'react-router';
import { Link, browserHistory, Match, propTypes } from 'react-router';
import styles from './styles.scss';
class TableRow extends React.Component { // eslint-disable-line react/prefer-stateless-function
constructor(props) {
super(props);
this.goEditPage = this.goEditPage.bind(this);
}
goEditPage() {
this.context.router.push(this.props.destination);
}
render() {
const cells = this.props.headers.map((header, i) => (<td key={i} className={styles.tableRowCell}>{this.props.record[header.name]}</td>));
return (
<tr className={styles.tableRow}>
<td scope="row" className={styles.tableRowCell}>
<Link to={this.props.destination}>{this.props.record['id']}</Link>
</td>
<tr className={styles.tableRow} onClick={() => this.goEditPage(this.props.destination)}>
{cells}
<td className={styles.actions}>
<Link to={this.props.destination}>
@ -32,10 +38,15 @@ class TableRow extends React.Component { // eslint-disable-line react/prefer-sta
}
}
TableRow.contextTypes = {
router: React.PropTypes.object.isRequired
};
TableRow.propTypes = {
headers: React.PropTypes.array,
record: React.PropTypes.object,
destination: React.PropTypes.string,
history: React.PropTypes.object,
};
export default TableRow;

View File

@ -8,6 +8,7 @@
&:hover {
background: #F8FAFB;
cursor: pointer;
td:first-child {
border-left: 3px solid #1C5DE7;

View File

@ -34,6 +34,10 @@ class App extends React.Component { // eslint-disable-line react/prefer-stateles
}
}
App.contextTypes = {
router: React.PropTypes.object.isRequired,
};
App.propTypes = {
children: React.PropTypes.node,
loadModels: React.PropTypes.func,

View File

@ -70,6 +70,13 @@ export class List extends React.Component { // eslint-disable-line react/prefer-
type: value.type,
}));
// Add `id` column
tableHeaders.unshift({
name: 'id',
label: 'ID',
type: 'string',
});
content = (
<Table
records={this.props.records}
@ -78,6 +85,7 @@ export class List extends React.Component { // eslint-disable-line react/prefer-
headers={tableHeaders}
changeSort={this.props.changeSort}
sort={this.props.sort}
history={this.props.history}
/>
);
}
@ -109,6 +117,10 @@ export class List extends React.Component { // eslint-disable-line react/prefer-
}
}
List.contextTypes = {
router: React.PropTypes.object.isRequired
};
List.propTypes = {
setCurrentModelName: React.PropTypes.func,
records: React.PropTypes.oneOfType([