ringcentral-widget
Version:
RingCentral Integration Widget Library
384 lines (311 loc) • 12.7 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 _formatMessage = require('format-message');
var _formatMessage2 = _interopRequireDefault(_formatMessage);
var _callingOptions = require('ringcentral-integration/modules/CallingSettings/callingOptions');
var _callingOptions2 = _interopRequireDefault(_callingOptions);
var _rcTooltip = require('rc-tooltip');
var _rcTooltip2 = _interopRequireDefault(_rcTooltip);
require('rc-tooltip/assets/bootstrap_white.css');
var _DynamicsFont = require('../../assets/DynamicsFont/DynamicsFont.scss');
var _DynamicsFont2 = _interopRequireDefault(_DynamicsFont);
var _Revert = require('../../assets/images/Revert.svg');
var _Revert2 = _interopRequireDefault(_Revert);
var _styles = require('./styles.scss');
var _styles2 = _interopRequireDefault(_styles);
var _i18n = require('./i18n');
var _i18n2 = _interopRequireDefault(_i18n);
var _BackHeader = require('../BackHeader');
var _BackHeader2 = _interopRequireDefault(_BackHeader);
var _Panel = require('../Panel');
var _Panel2 = _interopRequireDefault(_Panel);
var _Switch = require('../Switch');
var _Switch2 = _interopRequireDefault(_Switch);
var _IconField = require('../IconField');
var _IconField2 = _interopRequireDefault(_IconField);
var _InputField = require('../InputField');
var _InputField2 = _interopRequireDefault(_InputField);
var _TextInput = require('../TextInput');
var _TextInput2 = _interopRequireDefault(_TextInput);
var _DropdownSelect = require('../DropdownSelect');
var _DropdownSelect2 = _interopRequireDefault(_DropdownSelect);
var _Button = require('../Button');
var _Button2 = _interopRequireDefault(_Button);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var CallingSettingsPanel = function (_Component) {
(0, _inherits3.default)(CallingSettingsPanel, _Component);
function CallingSettingsPanel(props) {
(0, _classCallCheck3.default)(this, CallingSettingsPanel);
var _this = (0, _possibleConstructorReturn3.default)(this, (CallingSettingsPanel.__proto__ || (0, _getPrototypeOf2.default)(CallingSettingsPanel)).call(this, props));
_this.onSave = function () {
if (typeof _this.props.onSave === 'function') {
var _this$state = _this.state,
callWith = _this$state.callWith,
myLocation = _this$state.myLocation,
ringoutPrompt = _this$state.ringoutPrompt;
_this.props.onSave({
callWith: callWith,
myLocation: myLocation,
ringoutPrompt: ringoutPrompt
});
}
};
_this.onReset = function () {
var _this$props = _this.props,
callWith = _this$props.callWith,
myLocation = _this$props.myLocation,
ringoutPrompt = _this$props.ringoutPrompt;
_this.setState({
callWith: callWith,
myLocation: myLocation,
ringoutPrompt: ringoutPrompt
});
};
_this.onCallWithChange = function (callWith) {
_this.setState({
callWith: callWith,
myLocation: _this.props.availableNumbers[callWith] && _this.props.availableNumbers[callWith][0] || ''
});
};
_this.onMyLocationChange = function (myLocation) {
_this.setState({
myLocation: myLocation
});
};
_this.onMyLocationTextChange = function (e) {
var myLocation = e.target.value;
_this.setState({
myLocation: myLocation
});
};
_this.onRingoutPromptChange = function (checked) {
_this.setState({
ringoutPrompt: checked
});
};
_this.renderHandler = function (option) {
var brand = _this.props.brand;
return (0, _formatMessage2.default)(_i18n2.default.getString(option, _this.props.currentLocale), { brand: brand });
};
_this.state = {
callWith: props.callWith,
ringoutPrompt: props.ringoutPrompt,
myLocation: props.myLocation
};
return _this;
}
(0, _createClass3.default)(CallingSettingsPanel, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(newProps) {
if (newProps.callWith !== this.props.callWith) {
this.setState({
callWith: newProps.callWith
});
}
if (newProps.ringoutPrompt !== this.props.ringoutPrompt) {
this.setState({
ringoutPrompt: newProps.ringoutPrompt
});
}
if (newProps.myLocation !== this.props.myLocation) {
this.setState({
myLocation: newProps.myLocation
});
}
}
}, {
key: 'getTooltipContent',
value: function getTooltipContent() {
var _this2 = this;
var contentKeys = void 0;
if (this.state.callWith === _callingOptions2.default.browser || this.state.callWith === _callingOptions2.default.softphone) {
contentKeys = [this.state.callWith + 'Tooltip'];
} else {
contentKeys = [this.state.callWith + 'Tooltip', this.state.callWith + 'Tooltip1'];
}
return _react2.default.createElement(
'div',
null,
contentKeys.map(function (contentKey) {
return _react2.default.createElement(
'div',
{ key: contentKey },
(0, _formatMessage2.default)(_i18n2.default.getString(contentKey, _this2.props.currentLocale), { brand: _this2.props.brand })
);
})
);
}
}, {
key: 'render',
value: function render() {
var _this3 = this;
var _props = this.props,
currentLocale = _props.currentLocale,
callWith = _props.callWith,
callWithOptions = _props.callWithOptions,
myLocation = _props.myLocation,
ringoutPrompt = _props.ringoutPrompt,
onBackButtonClick = _props.onBackButtonClick,
availableNumbers = _props.availableNumbers,
className = _props.className,
disabled = _props.disabled;
var buttons = [];
var hasChanges = this.state.callWith !== callWith || this.state.myLocation !== myLocation || this.state.ringoutPrompt !== ringoutPrompt;
buttons.push({
label: _react2.default.createElement(_Revert2.default, { width: '19', className: _styles2.default.revertIcon }),
onClick: this.onReset,
placement: 'right',
hidden: !hasChanges
});
var ringout = this.state.callWith !== _callingOptions2.default.softphone && this.state.callWith !== _callingOptions2.default.browser ? _react2.default.createElement(
'div',
null,
_react2.default.createElement(
'div',
{ className: _styles2.default.ringoutHint },
_i18n2.default.getString('ringoutHint', currentLocale)
),
_react2.default.createElement(
_InputField2.default,
{
className: _styles2.default.inputField,
label: _i18n2.default.getString('myLocationLabel', currentLocale) },
availableNumbers[this.state.callWith] ? _react2.default.createElement(_DropdownSelect2.default, {
className: _styles2.default.select,
value: this.state.myLocation,
onChange: this.onMyLocationChange,
options: availableNumbers[this.state.callWith],
disabled: disabled,
dropdownAlign: 'left',
titleEnabled: true
}) : _react2.default.createElement(_TextInput2.default, {
value: this.state.myLocation,
maxLength: 30,
onChange: this.onMyLocationTextChange })
),
_react2.default.createElement(
_IconField2.default,
{
className: _styles2.default.iconField,
icon: _react2.default.createElement(_Switch2.default, {
checked: this.state.ringoutPrompt,
onChange: this.onRingoutPromptChange
})
},
_i18n2.default.getString('press1ToStartCallLabel', currentLocale)
)
) : null;
var toolTip = this.getTooltipContent();
return _react2.default.createElement(
'div',
{ className: (0, _classnames2.default)(_styles2.default.root, className) },
_react2.default.createElement(
_BackHeader2.default,
{
buttons: buttons,
onBackClick: onBackButtonClick
},
_i18n2.default.getString('title', currentLocale)
),
_react2.default.createElement(
_Panel2.default,
{ className: _styles2.default.content },
_react2.default.createElement(
_InputField2.default,
{
className: _styles2.default.inputField,
label: _react2.default.createElement(
'span',
null,
_i18n2.default.getString('makeCallsWith', currentLocale),
_react2.default.createElement(
_rcTooltip2.default,
{
placement: 'bottom',
trigger: 'click',
overlay: toolTip,
align: {
offset: [0, 47]
},
arrowContent: _react2.default.createElement('div', { className: 'rc-tooltip-arrow-inner' }),
getTooltipContainer: function getTooltipContainer() {
return _this3.tooltipContainner;
}
},
_react2.default.createElement('i', { className: (0, _classnames2.default)(_DynamicsFont2.default.information, _styles2.default.infoIcon) })
)
),
noBorder: true
},
_react2.default.createElement(_DropdownSelect2.default, {
className: _styles2.default.select,
value: this.state.callWith,
onChange: this.onCallWithChange,
options: callWithOptions,
dropdownAlign: 'left',
renderFunction: this.renderHandler,
renderValue: this.renderHandler,
disabled: disabled,
titleEnabled: true
}),
_react2.default.createElement('div', {
className: _styles2.default.tooltipContainner,
ref: function ref(tooltipContainner) {
_this3.tooltipContainner = tooltipContainner;
}
})
),
ringout,
_react2.default.createElement(
_Button2.default,
{
className: (0, _classnames2.default)(_styles2.default.saveButton, !hasChanges ? _styles2.default.disabled : null),
onClick: this.onSave,
disabled: !hasChanges
},
_i18n2.default.getString('save', currentLocale)
)
)
);
}
}]);
return CallingSettingsPanel;
}(_react.Component);
exports.default = CallingSettingsPanel;
CallingSettingsPanel.propTypes = {
brand: _propTypes2.default.string.isRequired,
className: _propTypes2.default.string,
currentLocale: _propTypes2.default.string.isRequired,
callWithOptions: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,
callWith: _propTypes2.default.string.isRequired,
myLocation: _propTypes2.default.string.isRequired,
ringoutPrompt: _propTypes2.default.bool.isRequired,
availableNumbers: _propTypes2.default.object.isRequired,
onBackButtonClick: _propTypes2.default.func.isRequired,
onSave: _propTypes2.default.func.isRequired,
disabled: _propTypes2.default.bool
};
CallingSettingsPanel.defaultProps = {
className: null,
disabled: false
};
//# sourceMappingURL=index.js.map