diff --git a/skins/base/css/common.css b/skins/base/css/common.css index ba2f4eab61..4c2e7c0b8d 100644 --- a/skins/base/css/common.css +++ b/skins/base/css/common.css @@ -33,3 +33,31 @@ h2 { margin-top: 16px; margin-bottom: 16px; } + +.mx_Dialog_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #ccc; + opacity: 0.5; + z-index: -200; +} + +.mx_Dialog_Wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.mx_Dialog { + background-color: #fff; + margin: auto; + max-width: 500px; + z-index: -100; + position: relative; + top: 100px; +} diff --git a/src/Modal.js b/src/Modal.js new file mode 100644 index 0000000000..ca11a2101b --- /dev/null +++ b/src/Modal.js @@ -0,0 +1,58 @@ +/* +Copyright 2015 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'; + +var React = require('react'); +var q = require('q'); + +module.exports = { + DialogContainerId: "mx_Dialog_Container", + + getOrCreateContainer: function() { + var container = document.getElementById(this.DialogContainerId); + + if (!container) { + container = document.createElement("div"); + container.id = this.DialogContainerId; + document.body.appendChild(container); + } + + return container; + }, + + createDialog: function (Element, props) { + var self = this; + + var closeDialog = function() { + React.unmountComponentAtNode(self.getOrCreateContainer()); + + if (props && props.onFinished) props.onFinished.apply(arguments); + }; + + var dialog = ( +