From 0e5657333fe17df739f5736efd834ea0e7f926d5 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 May 2017 23:21:02 +0100 Subject: [PATCH] Add app drawer and app dialog --- src/components/views/dialogs/AddAppDialog.js | 74 ++++++++++++++++++++ src/components/views/rooms/AppsDrawer.js | 52 ++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 src/components/views/dialogs/AddAppDialog.js create mode 100644 src/components/views/rooms/AppsDrawer.js diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js new file mode 100644 index 0000000000..4a3c1dfb5b --- /dev/null +++ b/src/components/views/dialogs/AddAppDialog.js @@ -0,0 +1,74 @@ +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from 'react'; +import sdk from '../../../index'; + +/** + * Prompt the user for address of iframe widget + * + * On success, `onFinished(true, newAppWidget)` is called. + */ +export default React.createClass({ + displayName: 'AddAppDialog', + propTypes: { + onFinished: React.PropTypes.func.isRequired, + }, + + getInitialState: function() { + }, + + componentDidMount: function() { + this.refs.input_value.select(); + }, + + onValueChange: function(ev) { + this.setState({ + value: ev.target.value, + }); + }, + + onFormSubmit: function(ev) { + ev.preventDefault(); + this.props.onFinished(true, this.state.value); + return false; + }, + + render: function() { + const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + return ( + +
+ Please enter the URL of the app / widget to add. +
+
+
+ +
+
+ +
+
+
+ ); + }, +}); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js new file mode 100644 index 0000000000..82abb07e5c --- /dev/null +++ b/src/components/views/rooms/AppsDrawer.js @@ -0,0 +1,52 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +const React = require('react'); +const AddAppDialog = require('../dialogs/AddAppDialog'); + +module.exports = React.createClass({ + displayName: 'AppsDrawer', + + propTypes: { + }, + + componentDidMount: function() { + }, + + getInitialState: function() { + // this.onClickAddWidget = this.onClickAddWidget.bind(this); + return { + addAppWidget: false, + }; + }, + + onClickAddWidget: function() { + this.setState({ + addAppWidget: true, + }); + }, + + render: function() { + return ( +
+
[+] Add a widget
+ {this.state.addAppWidget && AddAppDialog} +
+ ); + }, +});