update from RIFT as of 696b75d2fe9fb046261b08c616f1bcf6c0b54a9b third try
[osm/UI.git] / skyquake / framework / widgets / panel / panel.jsx
index e8a3118..03877b0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  *   Copyright 2016 RIFT.IO Inc
  *
  *   Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,6 +18,7 @@
 import React, {Component} from 'react';
 import 'style/core.css';
 import './panel.scss';
+import circleXImage from '../../../node_modules/open-iconic/svg/circle-x.svg';
 export class Panel extends Component {
     constructor(props) {
         super(props)
@@ -25,20 +26,28 @@ export class Panel extends Component {
     render() {
         let self = this;
         let {children, className, title, ...props} = self.props;
-        let classRoot = className ? ' ' + className : ' '
+        let classRoot = className ? ' ' + className : ' ';
+        let hasCorners = this.props['no-corners'];
         let titleTag = title ? <header className="skyquakePanel-title">{title}</header> : '';
+        let closeButton = (
+            <a onClick={self.props.hasCloseButton}
+              className={"close-btn"}>
+              <img src={circleXImage} title="Close card" />
+              </a>
+        );
         return (
             <section className={'skyquakePanel' + classRoot} style={props.style}>
-                <i className="corner-accent top left"></i>
-                <i className="corner-accent top right"></i>
+                {  self.props.hasCloseButton ? closeButton : null}
+                { !hasCorners ? <i className="corner-accent top left"></i> : null }
+                { !hasCorners ? <i className="corner-accent top right"></i> : null }
                 {titleTag}
                 <div className="skyquakePanel-wrapper">
                     <div className={(classRoot ? 'skyquakePanel-body ' + decorateClassNames(classRoot, '-body') : 'skyquakePanel-body')}>
                             {children}
                     </div>
                 </div>
-                <i className="corner-accent bottom left"></i>
-                <i className="corner-accent bottom right"></i>
+                { !hasCorners ? <i className="corner-accent bottom left"></i> : null }
+                { !hasCorners ? <i className="corner-accent bottom right"></i> : null }
             </section>
         )
     }
@@ -50,17 +59,28 @@ Panel.defaultProps = {
 
 export class PanelWrapper extends Component {
     render() {
-        return (<div className={'skyquakePanelWrapper'}>
+        let wrapperClass = 'skyquakePanelWrapper';
+        let {className, column, style, ...props} = this.props;
+        if(className) {
+            wrapperClass = `${wrapperClass} ${className}`
+        }
+        if(column) {
+            style.flexDirection = 'column';
+        }
+        return (
+        <div className={wrapperClass} style={style} {...props}>
             {this.props.children}
         </div>)
     }
 }
-
+PanelWrapper.defaultProps = {
+    style: {}
+}
 export default Panel;
 
 
 function decorateClassNames(className, addendum) {
-    return className.split(' ').map(function(c) {
+    return className.trim().split(' ').map(function(c) {
         return c + addendum
     }).join(' ');
 }