From f5c597a9e351b8dfb84f0fe3f09046e772482fc6 Mon Sep 17 00:00:00 2001
From: Jason <jason.daurus@gmail.com>
Date: Wed, 15 Jun 2016 00:46:59 +0800
Subject: [web] Editor & Prompt

---
 .../js/components/ValueEditor/ValidateEditor.jsx   | 58 ++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100755 web/src/js/components/ValueEditor/ValidateEditor.jsx

(limited to 'web/src/js/components/ValueEditor/ValidateEditor.jsx')

diff --git a/web/src/js/components/ValueEditor/ValidateEditor.jsx b/web/src/js/components/ValueEditor/ValidateEditor.jsx
new file mode 100755
index 00000000..ea4e8803
--- /dev/null
+++ b/web/src/js/components/ValueEditor/ValidateEditor.jsx
@@ -0,0 +1,58 @@
+import React, { Component, PropTypes } from 'react'
+import ReactDOM from 'react-dom'
+import EditorBase from './EditorBase'
+
+export default class ValidateEditor extends Component {
+
+    static propTypes = {
+        content: PropTypes.string.isRequired,
+        onDone: PropTypes.func.isRequired,
+        onInput: PropTypes.func,
+        isValid: PropTypes.func,
+        className: PropTypes.string,
+    }
+
+    constructor(props) {
+        super(props)
+        this.state = { currentContent: props.content }
+        this.onInput = this.onInput.bind(this)
+        this.onDone = this.onDone.bind(this)
+    }
+
+    componentWillReceiveProps(nextProps) {
+        this.setState({ currentContent: nextProps.content })
+    }
+
+    onInput(currentContent) {
+        this.setState({ currentContent })
+        this.props.onInput && this.props.onInput(currentContent)
+    }
+
+    onDone(content) {
+        if (this.props.isValid && !this.props.isValid(content)) {
+            this.refs.editor.reset()
+            content = this.props.content
+        }
+        this.props.onDone(content)
+    }
+
+    render() {
+        let className = this.props.className || ''
+        if (this.props.isValid) {
+            if (this.props.isValid(this.state.currentContent)) {
+                className += ' has-success'
+            } else {
+                className += ' has-warning'
+            }
+        }
+        return (
+            <EditorBase
+                {...this.props}
+                ref="editor"
+                className={className}
+                onDone={this.onDone}
+                onInput={this.onInput}
+            />
+        )
+    }
+}
-- 
cgit v1.2.3

