aboutsummaryrefslogtreecommitdiff
path: root/src/views/EditableView.tsx
diff options
context:
space:
mode:
authorHannah <hannah_chow@brown.edu>2019-02-07 15:50:23 -0500
committerHannah <hannah_chow@brown.edu>2019-02-07 15:50:23 -0500
commit090093a50397ddc2a8fc2c50f5097f4a4ea8a74c (patch)
tree32ed9f841109c3607ee70bc99ee4a6c9d5d1c06e /src/views/EditableView.tsx
parent5b55e1b6081393989ca35d2964da9604c2a93802 (diff)
started adding editable schema cells
Diffstat (limited to 'src/views/EditableView.tsx')
-rw-r--r--src/views/EditableView.tsx35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/views/EditableView.tsx b/src/views/EditableView.tsx
new file mode 100644
index 000000000..5f8d6ebcd
--- /dev/null
+++ b/src/views/EditableView.tsx
@@ -0,0 +1,35 @@
+import React = require('react')
+import { observer } from 'mobx-react';
+import { observable } from 'mobx';
+
+export interface EditableProps {
+ GetValue(): string;
+ SetValue(value: string): boolean;
+ contents: any;
+}
+
+@observer
+export class EditableView extends React.Component<EditableProps> {
+ @observable
+ editing: boolean = false;
+
+ onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
+ if (e.key == "Enter" && !e.ctrlKey) {
+ this.props.SetValue(e.currentTarget.value);
+ this.editing = false;
+ }
+ }
+
+ render() {
+ if (this.editing) {
+ return <input value={this.props.GetValue()} onKeyDown={this.onKeyDown}></input>
+ } else {
+ return (
+ <div>
+ {this.props.contents}
+ <button onClick={() => this.editing = true}>Edit</button>
+ </div>
+ )
+ }
+ }
+} \ No newline at end of file