ringcentral-widget
Version: 
RingCentral Integration Widget Library
251 lines (200 loc) • 9 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = undefined;
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _presenceStatus = require('ringcentral-integration/modules/Presence/presenceStatus');
var _presenceStatus2 = _interopRequireDefault(_presenceStatus);
var _dndStatus = require('ringcentral-integration/modules/Presence/dndStatus');
var _dndStatus2 = _interopRequireDefault(_dndStatus);
var _IconLine = require('../IconLine');
var _IconLine2 = _interopRequireDefault(_IconLine);
var _Line = require('../Line');
var _Line2 = _interopRequireDefault(_Line);
var _Switch = require('../Switch');
var _Switch2 = _interopRequireDefault(_Switch);
var _PresenceStatusIcon = require('../PresenceStatusIcon');
var _PresenceStatusIcon2 = _interopRequireDefault(_PresenceStatusIcon);
var _DynamicsFont = require('../../assets/DynamicsFont/DynamicsFont.scss');
var _DynamicsFont2 = _interopRequireDefault(_DynamicsFont);
var _styles = require('./styles.scss');
var _styles2 = _interopRequireDefault(_styles);
var _i18n = require('./i18n');
var _i18n2 = _interopRequireDefault(_i18n);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getPresenceStatusName(currentUserStatus, currentDndStatus, currentLocale) {
  if (currentUserStatus !== _presenceStatus2.default.busy) {
    return _i18n2.default.getString(currentUserStatus, currentLocale);
  }
  return _i18n2.default.getString(currentUserStatus + currentDndStatus, currentLocale);
}
function PresenceItem(props) {
  var className = (0, _classnames2.default)(_styles2.default.presenceItem, props.selected ? _styles2.default.selected : null);
  var name = getPresenceStatusName(props.userStatus, props.dndStatus, props.currentLocale);
  return _react2.default.createElement(
    'a',
    { className: className, onClick: props.onClick },
    _react2.default.createElement(_PresenceStatusIcon2.default, {
      className: _styles2.default.statusIcon,
      userStatus: props.userStatus,
      dndStatus: props.dndStatus
    }),
    _react2.default.createElement(
      'span',
      { className: _styles2.default.statusName },
      name
    )
  );
}
PresenceItem.propTypes = {
  onClick: _propTypes2.default.func.isRequired,
  userStatus: _propTypes2.default.string.isRequired,
  dndStatus: _propTypes2.default.string,
  selected: _propTypes2.default.bool.isRequired,
  currentLocale: _propTypes2.default.string.isRequired
};
PresenceItem.defaultProps = {
  dndStatus: null
};
var PresenceSettingSection = function (_Component) {
  (0, _inherits3.default)(PresenceSettingSection, _Component);
  function PresenceSettingSection(props) {
    (0, _classCallCheck3.default)(this, PresenceSettingSection);
    var _this = (0, _possibleConstructorReturn3.default)(this, (PresenceSettingSection.__proto__ || (0, _getPrototypeOf2.default)(PresenceSettingSection)).call(this, props));
    _this.state = {
      showSelects: props.showPresenceSettings
    };
    _this.toggleShow = function () {
      _this.setState(function (preState) {
        return {
          showSelects: !preState.showSelects
        };
      });
    };
    _this.onCallQueueChange = function () {
      if (_this.state.dndStatus === _dndStatus2.default.doNotAcceptAnyCalls) {
        return;
      }
      _this.setState(function (preState) {
        return {
          dndStatus: preState.dndStatus === _dndStatus2.default.takeAllCalls ? _dndStatus2.default.doNotAcceptDepartmentCalls : _dndStatus2.default.takeAllCalls
        };
      });
      _this.props.toggleAcceptCallQueueCalls();
    };
    return _this;
  }
  (0, _createClass3.default)(PresenceSettingSection, [{
    key: 'render',
    value: function render() {
      var sectionClass = (0, _classnames2.default)(_styles2.default.section, this.state.showSelects ? _styles2.default.showDropdown : null);
      var acceptQueueCalls = this.props.isCallQueueMember ? _react2.default.createElement(
        _IconLine2.default,
        {
          icon: _react2.default.createElement(_Switch2.default, {
            checked: this.props.dndStatus === _dndStatus2.default.takeAllCalls,
            onChange: this.onCallQueueChange
          })
        },
        _i18n2.default.getString('acceptQueueCalls', this.props.currentLocale)
      ) : null;
      var currentStatus = getPresenceStatusName(this.props.userStatus, this.props.dndStatus, this.props.currentLocale);
      return _react2.default.createElement(
        'section',
        { className: sectionClass },
        _react2.default.createElement(
          _IconLine2.default,
          {
            icon: _react2.default.createElement(
              'span',
              { className: _styles2.default.dropdownIcon },
              _react2.default.createElement('i', { className: _DynamicsFont2.default.arrow })
            ),
            onClick: this.toggleShow
          },
          _react2.default.createElement(
            'div',
            { className: _styles2.default.title },
            _i18n2.default.getString('status', this.props.currentLocale)
          ),
          _react2.default.createElement(
            'div',
            { className: _styles2.default.subTitle },
            _react2.default.createElement(_PresenceStatusIcon2.default, {
              className: _styles2.default.statusIcon,
              userStatus: this.props.userStatus,
              dndStatus: this.props.dndStatus
            }),
            _react2.default.createElement(
              'span',
              { className: _styles2.default.statusName },
              currentStatus
            )
          )
        ),
        _react2.default.createElement(
          _Line2.default,
          { className: _styles2.default.presenceList },
          _react2.default.createElement(PresenceItem, {
            userStatus: _presenceStatus2.default.available,
            currentLocale: this.props.currentLocale,
            onClick: this.props.setAvailable,
            selected: this.props.userStatus === _presenceStatus2.default.available
          }),
          _react2.default.createElement(PresenceItem, {
            userStatus: _presenceStatus2.default.busy,
            dndStatus: _dndStatus2.default.takeAllCalls,
            currentLocale: this.props.currentLocale,
            onClick: this.props.setBusy,
            selected: this.props.userStatus === _presenceStatus2.default.busy && this.props.dndStatus !== _dndStatus2.default.doNotAcceptAnyCalls
          }),
          _react2.default.createElement(PresenceItem, {
            userStatus: _presenceStatus2.default.busy,
            dndStatus: _dndStatus2.default.doNotAcceptAnyCalls,
            currentLocale: this.props.currentLocale,
            onClick: this.props.setDoNotDisturb,
            selected: this.props.userStatus === _presenceStatus2.default.busy && this.props.dndStatus === _dndStatus2.default.doNotAcceptAnyCalls
          }),
          _react2.default.createElement(PresenceItem, {
            userStatus: _presenceStatus2.default.offline,
            currentLocale: this.props.currentLocale,
            onClick: this.props.setInvisible,
            selected: this.props.userStatus === _presenceStatus2.default.offline
          })
        ),
        acceptQueueCalls
      );
    }
  }]);
  return PresenceSettingSection;
}(_react.Component);
exports.default = PresenceSettingSection;
PresenceSettingSection.propTypes = {
  currentLocale: _propTypes2.default.string.isRequired,
  dndStatus: _propTypes2.default.string.isRequired,
  userStatus: _propTypes2.default.string.isRequired,
  isCallQueueMember: _propTypes2.default.bool.isRequired,
  setAvailable: _propTypes2.default.func.isRequired,
  setBusy: _propTypes2.default.func.isRequired,
  setDoNotDisturb: _propTypes2.default.func.isRequired,
  setInvisible: _propTypes2.default.func.isRequired,
  toggleAcceptCallQueueCalls: _propTypes2.default.func.isRequired,
  showPresenceSettings: _propTypes2.default.bool.isRequired
};
//# sourceMappingURL=index.js.map