app/react/Forms/components/Nested.js
Definition for rule 'node/no-restricted-import' was not found.import PropTypes from 'prop-types';import React, { Component } from 'react';import { MarkDown } from './MarkDown'; Export statements should appear at the end of the file
Prefer named exports.export default class Nested extends Component { constructor(props) { super(props); this.state = { value: this.parseValue(this.props.value) }; } Expected 'this' to be used by class method 'parseValue'.
parseValue should be placed after onChange parseValue(rows = []) { if (!rows[0]) { return ''; } const keys = Object.keys(rows[0]).sort(); let result = `| ${keys.join(' | ')} |\n`; result += `| ${keys.map(() => '-').join(' | ')} |\n`; result += `${rows .map(row => `| ${keys.map(key => (row[key] || []).join(',')).join(' | ')}`) .join(' |\n')} |`; return result; } onChange(e) { const value = e.target.value || ''; let formatedValues = []; this.setState({ value }); if (value) { const rows = value.split('\n').filter(row => row); const keys = rows[0] .split('|') .map(key => key.trim()) .filter(key => key); const entries = rows.splice(2); formatedValues = entries.map(row => row .split('|') .splice(1) .reduce((result, val, index) => { if (!keys[index]) { return result; } const values = val .split(',') .map(v => v.trim()) .filter(v => v);Assignment to property of function parameter 'result'. result[keys[index]] = values; return result; }, {}) ); } this.props.onChange(formatedValues); } render() {JSX props should not use .bind() return <MarkDown onChange={this.onChange.bind(this)} value={this.state.value} />; }} Nested.propTypes = {propType "onChange" is not required, but has no corresponding defaultProps declaration. onChange: PropTypes.func,Prop type "array" is forbidden
propType "value" is not required, but has no corresponding defaultProps declaration. value: PropTypes.array,};