tc-ui-toolkit
Version:
React components used to develop tools for the desktop app translationCore
166 lines (141 loc) • 14.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactBootstrap = require("react-bootstrap");
var _editHelpers = require("../VerseEditor/helpers/editHelpers");
var _BaseDialog = _interopRequireDefault(require("./BaseDialog"));
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
/**
* Renders a dialog to submit user feedback.
*
* @class
*
* @property {Function} translate - the localization function
* @property {Function} onClose - callback when the dialog is closed
* @property {Function} onSubmit - callback when the feedback is submitted.
* @property {Function} open - controls whether the dialog is open or closed
* @property {Function} [includeLogs=true] - indicates if logs should be included
* @property {string} [message=''] - the feedback message
* @property {string} [email=''] - the user's email
* @property {string} [category=null] - the feedback category
*/
var CommentsDialog = /*#__PURE__*/function (_React$Component) {
(0, _inherits2["default"])(CommentsDialog, _React$Component);
var _super = _createSuper(CommentsDialog);
function CommentsDialog(props) {
var _this;
(0, _classCallCheck2["default"])(this, CommentsDialog);
_this = _super.call(this, props);
_this._handleSubmit = _this._handleSubmit.bind((0, _assertThisInitialized2["default"])(_this));
_this._handleClose = _this._handleClose.bind((0, _assertThisInitialized2["default"])(_this));
_this._handleCommentChange = _this._handleCommentChange.bind((0, _assertThisInitialized2["default"])(_this));
var comment = props.comment;
_this.state = {
comment: comment
};
return _this;
}
(0, _createClass2["default"])(CommentsDialog, [{
key: "UNSAFE_componentWillReceiveProps",
value: function UNSAFE_componentWillReceiveProps(nextProps) {
var comment = nextProps.comment;
if (comment !== this.state.comment) {
// only update state if comment changed
this.setState({
comment: comment
});
}
}
}, {
key: "_handleCommentChange",
value: function _handleCommentChange(event) {
var newComment = event.target.value;
if (newComment !== this.state.comment) {
// only update state if comment changed
this.setState({
comment: newComment
});
}
}
}, {
key: "_handleSubmit",
value: function _handleSubmit() {
var onSubmit = this.props.onSubmit;
onSubmit(this.state.comment);
}
}, {
key: "_handleClose",
value: function _handleClose() {
var onClose = this.props.onClose;
onClose();
}
}, {
key: "render",
value: function render() {
var _this$props = this.props,
open = _this$props.open,
translate = _this$props.translate,
verseTitle = _this$props.verseTitle,
comment = _this$props.comment;
var currentComment = this.state.comment;
var isSaveEnabled = currentComment !== comment;
var saveButton = /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Glyphicon, {
glyph: "ok",
style: {
marginRight: '10px'
}
}), translate('buttons.save_button'));
return /*#__PURE__*/_react["default"].createElement(_BaseDialog["default"], {
key: "CommentsDialog-".concat(verseTitle),
onSubmit: this._handleSubmit,
primaryLabel: saveButton,
primaryActionEnabled: isSaveEnabled,
secondaryLabel: translate('buttons.cancel_button'),
onClose: this._handleClose,
title: translate('comment_title', {
passage: verseTitle
}),
bodyStyle: {
overflowY: 'auto',
padding: '0 10px 0 10px'
},
contentStyle: {
width: '500px'
},
open: open
}, /*#__PURE__*/_react["default"].createElement("textarea", {
id: "verse-editor-field",
rows: 8,
className: "edit-screen",
autoFocus: true,
onFocus: _editHelpers.moveCursorToEnd,
onChange: this._handleCommentChange,
value: currentComment
}));
}
}]);
return CommentsDialog;
}(_react["default"].Component);
CommentsDialog.propTypes = {
comment: _propTypes["default"].string.isRequired,
verseTitle: _propTypes["default"].string.isRequired,
translate: _propTypes["default"].func.isRequired,
onClose: _propTypes["default"].func.isRequired,
onSubmit: _propTypes["default"].func.isRequired,
open: _propTypes["default"].bool.isRequired
};
var _default = CommentsDialog;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db21tZW50c0RpYWxvZy9Db21tZW50c0RpYWxvZy5qcyJdLCJuYW1lcyI6WyJDb21tZW50c0RpYWxvZyIsInByb3BzIiwiX2hhbmRsZVN1Ym1pdCIsImJpbmQiLCJfaGFuZGxlQ2xvc2UiLCJfaGFuZGxlQ29tbWVudENoYW5nZSIsImNvbW1lbnQiLCJzdGF0ZSIsIm5leHRQcm9wcyIsInNldFN0YXRlIiwiZXZlbnQiLCJuZXdDb21tZW50IiwidGFyZ2V0IiwidmFsdWUiLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJvcGVuIiwidHJhbnNsYXRlIiwidmVyc2VUaXRsZSIsImN1cnJlbnRDb21tZW50IiwiaXNTYXZlRW5hYmxlZCIsInNhdmVCdXR0b24iLCJtYXJnaW5SaWdodCIsInBhc3NhZ2UiLCJvdmVyZmxvd1kiLCJwYWRkaW5nIiwid2lkdGgiLCJtb3ZlQ3Vyc29yVG9FbmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYm9vbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7OztJQWNNQSxjOzs7OztBQUNKLDBCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7QUFDakIsOEJBQU1BLEtBQU47QUFDQSxVQUFLQyxhQUFMLEdBQXFCLE1BQUtBLGFBQUwsQ0FBbUJDLElBQW5CLGdEQUFyQjtBQUNBLFVBQUtDLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkQsSUFBbEIsZ0RBQXBCO0FBQ0EsVUFBS0Usb0JBQUwsR0FBNEIsTUFBS0Esb0JBQUwsQ0FBMEJGLElBQTFCLGdEQUE1QjtBQUppQixRQU1URyxPQU5TLEdBTUdMLEtBTkgsQ0FNVEssT0FOUztBQVFqQixVQUFLQyxLQUFMLEdBQWE7QUFBRUQsTUFBQUEsT0FBTyxFQUFQQTtBQUFGLEtBQWI7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QVVHLElBQVYsQ0FBZUQsVUFIRDtBQUl6QmxCLEVBQUFBLE9BQU8sRUFBRWdCLHNCQUFVRyxJQUFWLENBQWVELFVBSkM7QUFLekJuQixFQUFBQSxRQUFRLEVBQUVpQixzQkFBVUcsSUFBVixDQUFlRCxVQUxBO0FBTXpCakIsRUFBQUEsSUFBSSxFQUFFZSxzQkFBVUksSUFBVixDQUFlRjtBQU5JLENBQTNCO2VBU2VqQyxjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBHbHlwaGljb24gfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xuaW1wb3J0IHsgbW92ZUN1cnNvclRvRW5kIH0gZnJvbSAnLi4vVmVyc2VFZGl0b3IvaGVscGVycy9lZGl0SGVscGVycyc7XG5pbXBvcnQgQmFzZURpYWxvZyBmcm9tICcuL0Jhc2VEaWFsb2cnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBkaWFsb2cgdG8gc3VibWl0IHVzZXIgZmVlZGJhY2suXG4gKlxuICogQGNsYXNzXG4gKlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gdHJhbnNsYXRlIC0gdGhlIGxvY2FsaXphdGlvbiBmdW5jdGlvblxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gb25DbG9zZSAtIGNhbGxiYWNrIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWRcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IG9uU3VibWl0IC0gY2FsbGJhY2sgd2hlbiB0aGUgZmVlZGJhY2sgaXMgc3VibWl0dGVkLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gb3BlbiAtIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBpcyBvcGVuIG9yIGNsb3NlZFxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gW2luY2x1ZGVMb2dzPXRydWVdIC0gaW5kaWNhdGVzIGlmIGxvZ3Mgc2hvdWxkIGJlIGluY2x1ZGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lc3NhZ2U9JyddIC0gdGhlIGZlZWRiYWNrIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZW1haWw9JyddIC0gdGhlIHVzZXIncyBlbWFpbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjYXRlZ29yeT1udWxsXSAtIHRoZSBmZWVkYmFjayBjYXRlZ29yeVxuICovXG5jbGFzcyBDb21tZW50c0RpYWxvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuX2hhbmRsZVN1Ym1pdCA9IHRoaXMuX2hhbmRsZVN1Ym1pdC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX2hhbmRsZUNsb3NlID0gdGhpcy5faGFuZGxlQ2xvc2UuYmluZCh0aGlzKTtcbiAgICB0aGlzLl9oYW5kbGVDb21tZW50Q2hhbmdlID0gdGhpcy5faGFuZGxlQ29tbWVudENoYW5nZS5iaW5kKHRoaXMpO1xuXG4gICAgY29uc3QgeyBjb21tZW50IH0gPSBwcm9wcztcblxuICAgIHRoaXMuc3RhdGUgPSB7IGNvbW1lbnQgfTtcbiAgfVxuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHsgY29tbWVudCB9ID0gbmV4dFByb3BzO1xuXG4gICAgaWYgKGNvbW1lbnQgIT09IHRoaXMuc3RhdGUuY29tbWVudCkgeyAvLyBvbmx5IHVwZGF0ZSBzdGF0ZSBpZiBjb21tZW50IGNoYW5nZWRcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb21tZW50IH0pO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVDb21tZW50Q2hhbmdlKGV2ZW50KSB7XG4gICAgY29uc3QgbmV3Q29tbWVudCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuICAgIGlmIChuZXdDb21tZW50ICE9PSB0aGlzLnN0YXRlLmNvbW1lbnQpIHsgLy8gb25seSB1cGRhdGUgc3RhdGUgaWYgY29tbWVudCBjaGFuZ2VkXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29tbWVudDogbmV3Q29tbWVudCB9KTtcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlU3VibWl0KCkge1xuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XG4gICAgb25TdWJtaXQodGhpcy5zdGF0ZS5jb21tZW50KTtcbiAgfVxuXG4gIF9oYW5kbGVDbG9zZSgpIHtcbiAgICBjb25zdCB7IG9uQ2xvc2UgfSA9IHRoaXMucHJvcHM7XG4gICAgb25DbG9zZSgpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9wZW4sXG4gICAgICB0cmFuc2xhdGUsXG4gICAgICB2ZXJzZVRpdGxlLFxuICAgICAgY29tbWVudCxcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHsgY29tbWVudDogY3VycmVudENvbW1lbnQgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgaXNTYXZlRW5hYmxlZCA9IGN1cnJlbnRDb21tZW50ICE9PSBjb21tZW50O1xuXG4gICAgY29uc3Qgc2F2ZUJ1dHRvbiA9IDxkaXY+XG4gICAgICA8R2x5cGhpY29uIGdseXBoPSdvaycgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6ICcxMHB4JyB9fSAvPlxuICAgICAge3RyYW5zbGF0ZSgnYnV0dG9ucy5zYXZlX2J1dHRvbicpfVxuICAgIDwvZGl2PjtcblxuICAgIHJldHVybiAoXG4gICAgICA8QmFzZURpYWxvZ1xuICAgICAgICBrZXk9e2BDb21tZW50c0RpYWxvZy0ke3ZlcnNlVGl0bGV9YH1cbiAgICAgICAgb25TdWJtaXQ9e3RoaXMuX2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgcHJpbWFyeUxhYmVsPXtzYXZlQnV0dG9ufVxuICAgICAgICBwcmltYXJ5QWN0aW9uRW5hYmxlZD17aXNTYXZlRW5hYmxlZH1cbiAgICAgICAgc2Vjb25kYXJ5TGFiZWw9e3RyYW5zbGF0ZSgnYnV0dG9ucy5jYW5jZWxfYnV0dG9uJyl9XG4gICAgICAgIG9uQ2xvc2U9e3RoaXMuX2hhbmRsZUNsb3NlfVxuICAgICAgICB0aXRsZT17dHJhbnNsYXRlKCdjb21tZW50X3RpdGxlJywgeyBwYXNzYWdlOiB2ZXJzZVRpdGxlIH0pfVxuICAgICAgICBib2R5U3R5bGU9e3sgb3ZlcmZsb3dZOiAnYXV0bycsIHBhZGRpbmc6ICcwIDEwcHggMCAxMHB4JyB9fVxuICAgICAgICBjb250ZW50U3R5bGU9e3sgd2lkdGg6ICc1MDBweCcgfX1cbiAgICAgICAgb3Blbj17b3Blbn0+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIGlkPVwidmVyc2UtZWRpdG9yLWZpZWxkXCJcbiAgICAgICAgICByb3dzPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT0nZWRpdC1zY3JlZW4nXG4gICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgIG9uRm9jdXM9e21vdmVDdXJzb3JUb0VuZH1cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5faGFuZGxlQ29tbWVudENoYW5nZX1cbiAgICAgICAgICB2YWx1ZT17Y3VycmVudENvbW1lbnR9Lz5cbiAgICAgIDwvQmFzZURpYWxvZz5cbiAgICApO1xuICB9XG59XG5cbkNvbW1lbnRzRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgY29tbWVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB2ZXJzZVRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21tZW50c0RpYWxvZztcbiJdfQ==