import React from 'react'; import PropTypes from 'prop-types'; import Modal from 'react-bootstrap/es/Modal'; import Button from 'react-bootstrap/es/Button'; import { HotTable } from '@handsontable/react'; import MarkdownTable from '../../models/MarkdownTable'; export default class HandsontableModal extends React.Component { constructor(props) { super(props); this.state = { show: false, markdownTableOnInit: HandsontableModal.getDefaultMarkdownTable(), markdownTable: HandsontableModal.getDefaultMarkdownTable() }; this.settings = { height: 300, rowHeaders: true, colHeaders: true, fixedRowsTop: [0, 1], contextMenu: ['row_above', 'row_below', 'col_left', 'col_right', '---------', 'remove_row', 'remove_col', '---------', 'alignment'], stretchH: 'all', selectionMode: 'multiple', }; this.init = this.init.bind(this); this.reset = this.reset.bind(this); this.cancel = this.cancel.bind(this); this.save = this.save.bind(this); } init(markdownTable) { const initMarkdownTable = markdownTable || HandsontableModal.getDefaultMarkdownTable(); this.setState({ markdownTableOnInit: initMarkdownTable }); this.setState({ markdownTable: initMarkdownTable.clone() }); } show(markdownTable) { this.init(markdownTable); this.setState({ show: true }); } reset() { this.setState({ markdownTable: this.state.markdownTableOnInit.clone() }); } cancel() { this.setState({ show: false }); } save() { if (this.props.onSave != null) { this.props.onSave(this.state.markdownTable); } this.setState({ show: false }); } render() { return ( Edit Table
); } static getDefaultMarkdownTable() { return new MarkdownTable([ ['col1', 'col2', 'col3'], ['', '', ''], ['', '', ''], ]); } } HandsontableModal.propTypes = { onSave: PropTypes.func };