From 5e01c84f8545ce85e288c49562aa61b26e1bf00d Mon Sep 17 00:00:00 2001
From: Tyler Schicke <tyler_schicke@brown.edu>
Date: Tue, 5 Mar 2019 00:35:54 -0500
Subject: Started adding some comments

---
 src/client/views/EditableView.tsx | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

(limited to 'src/client/views/EditableView.tsx')

diff --git a/src/client/views/EditableView.tsx b/src/client/views/EditableView.tsx
index 88ef67afa..84b1b91c3 100644
--- a/src/client/views/EditableView.tsx
+++ b/src/client/views/EditableView.tsx
@@ -3,12 +3,30 @@ import { observer } from 'mobx-react';
 import { observable, action } from 'mobx';
 
 export interface EditableProps {
+    /**
+     * Called to get the initial value for editing
+     *  */
     GetValue(): string;
+
+    /**
+     * Called to apply changes
+     * @param value - The string entered by the user to set the value to
+     * @returns `true` if setting the value was successful, `false` otherwise
+     *  */
     SetValue(value: string): boolean;
+
+    /**
+     * The contents to render when not editing
+     */
     contents: any;
     height: number
 }
 
+/**
+ * Customizable view that can be given an arbitrary view to render normally,
+ * but can also be edited with customizable functions to get a string version
+ * of the content, and set the value based on the entered string.
+ */
 @observer
 export class EditableView extends React.Component<EditableProps> {
     @observable
@@ -17,8 +35,9 @@ export class EditableView extends React.Component<EditableProps> {
     @action
     onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
         if (e.key == "Enter" && !e.ctrlKey) {
-            this.props.SetValue(e.currentTarget.value);
-            this.editing = false;
+            if (this.props.SetValue(e.currentTarget.value)) {
+                this.editing = false;
+            }
         } else if (e.key == "Escape") {
             this.editing = false;
         }
-- 
cgit v1.2.3-70-g09d2

