summaryrefslogtreecommitdiffstats
path: root/front/odiparpack/app/components/Tables/tableParts/EditableCell.js
blob: 2c7ba8f81b3cb042194d81a58c7b880cfdf1ebcc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import React from 'react';
import PropTypes from 'prop-types';
import css from 'ba-styles/Table.scss';

import { TableCell, Input, TextField } from '@material-ui/core';

class EditableCell extends React.Component {
  handleUpdate(event) {
    event.persist();
    this.props.updateRow(event, this.props.branch);
  }

  render() {
    const {
      cellData,
      edited,
      inputType
    } = this.props;
    switch (inputType) {
      case 'text':
        return (
          <TableCell padding="none">
            <Input
              placeholder={cellData.type}
              name={cellData.type}
              className={css.crudInput}
              id={cellData.id.toString()}
              value={cellData.value}
              onChange={(event) => this.handleUpdate(event)}
              disabled={!edited}
              margin="none"
              inputProps={{
                'aria-label': 'Description',
              }}
            />
          </TableCell>
        );
      case 'number':
        return (
          <TableCell padding="none">
            <TextField
              id={cellData.id.toString()}
              name={cellData.type}
              className={css.crudInput}
              value={cellData.value}
              onChange={(event) => this.handleUpdate(event)}
              type="number"
              InputLabelProps={{
                shrink: true,
              }}
              margin="none"
              disabled={!edited}
            />
          </TableCell>
        );
      default:
        return (
          <TableCell padding="none">
            <Input
              placeholder={cellData.type}
              name={cellData.type}
              className={css.crudInput}
              id={cellData.id.toString()}
              value={cellData.value}
              onChange={(event) => this.handleUpdate(event)}
              disabled={!edited}
              margin="none"
              inputProps={{
                'aria-label': 'Description',
              }}
            />
          </TableCell>
        );
    }
  }
}

EditableCell.propTypes = {
  inputType: PropTypes.string.isRequired,
  cellData: PropTypes.object.isRequired,
  updateRow: PropTypes.func.isRequired,
  edited: PropTypes.bool.isRequired,
  branch: PropTypes.string.isRequired,
};

export default EditableCell;