UNPKG

@vega/review-tool

Version:
158 lines (126 loc) 4.42 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _EditReviewItem = require('./styles/EditReviewItem.css'); var _EditReviewItem2 = _interopRequireDefault(_EditReviewItem); var _formBuilder = require('part:@lyra/form-builder'); var _schema = require('part:@lyra/base/schema'); var _schema2 = _interopRequireDefault(_schema); var _client = require('part:@lyra/base/client'); var _client2 = _interopRequireDefault(_client); var _dateFns = require('date-fns'); var _default = require('part:@lyra/components/buttons/default'); var _default2 = _interopRequireDefault(_default); var _blockContentToReact = require('@lyra/block-content-to-react'); var _blockContentToReact2 = _interopRequireDefault(_blockContentToReact); var _Field = require('./Field'); var _Field2 = _interopRequireDefault(_Field); var _Pointer = require('./Pointer'); var _Pointer2 = _interopRequireDefault(_Pointer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /*:: type Props = { reviewer: any, reviewItem: any, readOnly: boolean, isCompleted: boolean }*/ const serializers = { types: { pointer: _Pointer2.default } }; class EditReviewItem extends _react2.default.Component /*:: <Props>*/ { constructor(...args) { var _temp; return _temp = super(...args), this.state = { focusPath: [] }, this.handleFocus = nextFocusPath => { this.setState({ focusPath: nextFocusPath }); }, this.handleSubmit = () => { if ( // eslint-disable-next-line no-alert window.confirm('Submit will conclude this review. There is no undoing this. Go ahead?')) { _client2.default.patch(this.props.reviewItem._id).set({ completedAt: new Date().toISOString() }).commit(); } }, _temp; } renderReviewContent(props) { const readOnly = this.props.readOnly; const focusPath = this.state.focusPath; if (!readOnly) { return _react2.default.createElement(_Field2.default, { fieldName: 'content', type: props.type, value: props.value, onChange: props.onChange, onFocus: this.handleFocus, focusPath: focusPath, readOnly: readOnly }); } return _react2.default.createElement( 'div', null, _react2.default.createElement(_blockContentToReact2.default, { blocks: props.value.content, serializers: serializers, className: _EditReviewItem2.default.blockContent }) ); } render() { var _props = this.props; const reviewItem = _props.reviewItem, readOnly = _props.readOnly, isCompleted = _props.isCompleted; const focusPath = this.state.focusPath; if (!reviewItem._id) { return _react2.default.createElement( 'div', null, 'No invite found. Are you sure you have been invited to review this article?' ); } return _react2.default.createElement( 'div', { className: _EditReviewItem2.default.root }, _react2.default.createElement( _formBuilder.WithFormBuilderValue, { documentId: reviewItem._id, typeName: 'reviewItem', schema: _schema2.default }, props => props.isLoading ? 'Loading…' : _react2.default.createElement( 'form', { onSubmit: e => e.preventDefault(), className: _EditReviewItem2.default.form }, this.renderReviewContent(props), _react2.default.createElement('br', null), !readOnly && !isCompleted && _react2.default.createElement(_Field2.default, { fieldName: 'recommendation', type: props.type, value: props.value, onChange: props.onChange, onFocus: this.handleFocus, focusPath: focusPath, readOnly: readOnly }) ) ), isCompleted && reviewItem.completedAt && _react2.default.createElement( 'span', null, 'Completed ', (0, _dateFns.distanceInWordsToNow)(reviewItem.completedAt), ' ago' ), !isCompleted && !readOnly && _react2.default.createElement( _default2.default, { onClick: this.handleSubmit, color: 'primary' }, 'Submit' ) ); } } exports.default = EditReviewItem;