Code coverage report for src/components/dialog.cjsx

Statements: 22.22% (6 / 27)      Branches: 0% (0 / 19)      Functions: 0% (0 / 3)      Lines: 22.22% (6 / 27)      Ignored: none     

All files » src/components/ » dialog.cjsx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82                                                                                                                                                        
var BS, CloseButton, React, TutorDialog;
 
React = require('react');
 
BS = require('react-bootstrap');
 
TutorDialog = require('./tutor-dialog');
 
CloseButton = require('openstax-react-components').CloseButton;
 
 
/*
<Dialog
  className='my-dialog-class'
  header='Dialog Title'
  confirmMsg='Are you sure you want to close?'
  isChanged={-> true}
  onCancel={-> alert 'Cancelling'}
  >
  body text
</Dialog>
 */
 
module.exports = React.createClass({
  displayName: 'Dialog',
  propTypes: {
    header: React.PropTypes.node.isRequired,
    onCancel: React.PropTypes.func.isRequired,
    isChanged: React.PropTypes.func,
    confirmMsg: React.PropTypes.string,
    footer: React.PropTypes.node,
    cancel: React.PropTypes.any,
    primary: React.PropTypes.node,
    onPrimary: React.PropTypes.func
  },
  onCancel: function() {
    var confirmMsg, isChanged, onCancel, ref;
    ref = this.props, isChanged = ref.isChanged, confirmMsg = ref.confirmMsg, onCancel = ref.onCancel;
    if ((typeof isChanged === "function" ? isChanged() : void 0) && confirmMsg) {
      return TutorDialog.show({
        title: 'Unsaved Changes',
        body: confirmMsg
      }).then(function() {
        return onCancel();
      });
    } else {
      return onCancel();
    }
  },
  render: function() {
    var cancel, cancelBtn, className, classes, closeBtn, footer, header, isChanged, primary, ref;
    ref = this.props, className = ref.className, header = ref.header, footer = ref.footer, primary = ref.primary, cancel = ref.cancel, isChanged = ref.isChanged;
    if (cancel) {
      cancelBtn = React.createElement(BS.Button, {
        "aria-role": 'close',
        "onClick": this.onCancel
      }, cancel);
    }
    closeBtn = React.createElement(CloseButton, {
      "onClick": this.onCancel
    });
    header = [header, closeBtn];
    if (footer || primary || cancelBtn) {
      footer = [primary, cancelBtn, footer];
    }
    classes = ['dialog default-dialog'];
    if (typeof isChanged === "function" ? isChanged() : void 0) {
      classes.push('is-changed');
    }
    if (className) {
      classes.push(className);
    }
    className = classes.join(' ');
    return React.createElement(BS.Panel, {
      "className": className,
      "header": header,
      "footer": footer
    }, this.props.children);
  }
});