diff --git a/browser/main/Components/BlueprintForm.jsx b/browser/main/Components/BlueprintForm.jsx
new file mode 100644
index 00000000..a054b61f
--- /dev/null
+++ b/browser/main/Components/BlueprintForm.jsx
@@ -0,0 +1,93 @@
+var React = require('react/addons')
+var ReactRouter = require('react-router')
+var CodeEditor = require('./CodeEditor')
+var Catalyst = require('../Mixins/Catalyst')
+var Select = require('react-select')
+var request = require('superagent')
+
+var getOptions = function (input, callback) {
+ request
+ .get('http://localhost:8000/tags/search')
+ .query({name: input})
+ .send()
+ .end(function (err, res) {
+ if (err) {
+ callback(err)
+ return
+ }
+ callback(null, {
+ options: res.body.map(function (tag) {
+ return {
+ label: tag.name,
+ value: tag.name
+ }
+ }),
+ complete: true
+ })
+ })
+}
+
+var BlueprintForm = React.createClass({
+ mixins: [Catalyst.LinkedStateMixin, ReactRouter.State],
+ propTypes: {
+ close: React.PropTypes.func
+ },
+ getInitialState: function () {
+ return {
+ blueprint: {
+ title: '',
+ content: '',
+ Tags: []
+ }
+ }
+ },
+ componentDidMount: function () {
+ React.findDOMNode(this.refs.title).focus()
+ },
+ handleTagsChange: function (selected, all) {
+ var blueprint = this.state.blueprint
+ blueprint.Tags = all
+ this.setState({blueprint: blueprint})
+ },
+ handleContentChange: function (e, value) {
+ var blueprint = this.state.blueprint
+ blueprint.content = value
+ this.setState({blueprint: blueprint})
+ },
+ submit: function () {
+ console.log(this.state.blueprint)
+ },
+ render: function () {
+ return (
+
+ )
+ }
+})
+
+module.exports = BlueprintForm
diff --git a/browser/main/Components/LaunchModal.jsx b/browser/main/Components/LaunchModal.jsx
index b6ee893b..272fbe23 100644
--- a/browser/main/Components/LaunchModal.jsx
+++ b/browser/main/Components/LaunchModal.jsx
@@ -1,81 +1,10 @@
var React = require('react/addons')
var ReactRouter = require('react-router')
-var CodeEditor = require('./CodeEditor')
var Catalyst = require('../Mixins/Catalyst')
-
-var Select = require('react-select')
-
var PlanetStore = require('../Stores/PlanetStore')
var SnippetForm = require('./SnippetForm')
-
-var options = [
- { value: 'one', label: 'One' },
- { value: 'two', label: 'Two' }
-]
-
-var BlueprintForm = React.createClass({
- mixins: [Catalyst.LinkedStateMixin, ReactRouter.State],
- propTypes: {
- close: React.PropTypes.func
- },
- getInitialState: function () {
- return {
- blueprint: {
- title: '',
- content: '',
- Tags: []
- }
- }
- },
- componentDidMount: function () {
- React.findDOMNode(this.refs.title).focus()
- },
- handleBlueprintTagsChange: function (selected, all) {
- var blueprint = this.state.blueprint
- blueprint.Tags = all
- this.setState({blueprint: blueprint})
- },
- handleBlueprintContentChange: function (e, value) {
- var blueprint = this.state.blueprint
- blueprint.content = value
- this.setState({blueprint: blueprint})
- },
- submit: function () {
- console.log(this.state.blueprint)
- },
- render: function () {
- return (
-
- )
- }
-})
+var BlueprintForm = require('./BlueprintForm')
var LaunchModal = React.createClass({
mixins: [Catalyst.LinkedStateMixin, ReactRouter.State],
diff --git a/browser/main/Components/SnippetForm.jsx b/browser/main/Components/SnippetForm.jsx
index a34f80ab..2895b5c3 100644
--- a/browser/main/Components/SnippetForm.jsx
+++ b/browser/main/Components/SnippetForm.jsx
@@ -2,15 +2,31 @@ var React = require('react/addons')
var ReactRouter = require('react-router')
var CodeEditor = require('./CodeEditor')
var Catalyst = require('../Mixins/Catalyst')
-
var Select = require('react-select')
-
+var request = require('superagent')
var PlanetActions = require('../Actions/PlanetActions')
-var options = [
- { value: 'one', label: 'One' },
- { value: 'two', label: 'Two' }
-]
+var getOptions = function (input, callback) {
+ request
+ .get('http://localhost:8000/tags/search')
+ .query({name: input})
+ .send()
+ .end(function (err, res) {
+ if (err) {
+ callback(err)
+ return
+ }
+ callback(null, {
+ options: res.body.map(function (tag) {
+ return {
+ label: tag.name,
+ value: tag.name
+ }
+ }),
+ complete: false
+ })
+ })
+}
var SnippetForm = React.createClass({
mixins: [Catalyst.LinkedStateMixin, ReactRouter.State],
@@ -31,12 +47,12 @@ var SnippetForm = React.createClass({
componentDidMount: function () {
React.findDOMNode(this.refs.description).focus()
},
- handleSnippetTagsChange: function (selected, all) {
+ handleTagsChange: function (selected, all) {
var snippet = this.state.snippet
snippet.Tags = all
this.setState({snippet: snippet})
},
- handleSnippetContentChange: function (e, value) {
+ handleContentChange: function (e, value) {
var snippet = this.state.snippet
snippet.content = value
this.setState({snippet: snippet})
@@ -67,7 +83,7 @@ var SnippetForm = React.createClass({
-
+
diff --git a/browser/styles/shared/modal.styl b/browser/styles/shared/modal.styl
index b87b1993..42b0c7c3 100644
--- a/browser/styles/shared/modal.styl
+++ b/browser/styles/shared/modal.styl
@@ -28,6 +28,7 @@
margin 0
border-radius 0
border-width 1px
+ width 150px
&:nth-child(1)
border-top-left-radius 10px
border-bottom-left-radius 10px