@coko/client
Version:
Client side common code for coko apps
127 lines (126 loc) • 5.76 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _icons = require("@ant-design/icons");
var _toolkit = require("../../toolkit");
var _common = require("../common");
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
var StyledInviteStatus = (0, _styledComponents["default"])(_common.InviteStatus)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n font-size: 12px;\n margin: 0 ", ";\n"])), (0, _toolkit.grid)(1));
var InviteStatusWrapper = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: inline-block;\n"])));
var InviteActionWrapper = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([""])));
var RemoveInviteWrapper = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n &:hover {\n cursor: pointer;\n }\n"])));
var InviteRowProp = function InviteRowProp(props) {
var canInvite = props.canInvite,
className = props.className,
data = props.data,
onClickInvite = props.onClickInvite,
onClickRemove = props.onClickRemove,
onClickRevokeInvitation = props.onClickRevokeInvitation,
type = props.type;
var id = data.id,
invited = data.invited,
acceptedInvitation = data.acceptedInvitation,
rejectedInvitation = data.rejectedInvitation,
invitationRevoked = data.invitationRevoked,
reviewSubmitted = data.reviewSubmitted;
var reviewPending = invited && acceptedInvitation && !reviewSubmitted;
var submitted = invited && acceptedInvitation && reviewSubmitted;
var rejected = invited && rejectedInvitation;
var revoked = invited && invitationRevoked;
var responsePending = invited && !invitationRevoked && !acceptedInvitation && !rejectedInvitation;
var notInvited = !invited && !invitationRevoked;
var makeStatusText = function makeStatusText() {
if (reviewPending) return 'accepted invitation - pending review';
if (submitted) return 'review submitted';
if (rejected) return 'rejected invitation';
if (revoked) return 'invitation revoked';
if (responsePending) return 'invited';
if (notInvited) return 'not invited';
return null;
};
var makeStatus = function makeStatus() {
if (reviewPending) return 'success';
if (submitted) return 'primary';
if (rejected) return 'error';
if (revoked) return 'error';
if (responsePending) return 'success';
if (notInvited) return null;
return null;
};
var handleRemove = function handleRemove() {
onClickRemove(id);
};
if (type === 'status') {
return /*#__PURE__*/_react["default"].createElement(InviteStatusWrapper, {
className: className
}, /*#__PURE__*/_react["default"].createElement(StyledInviteStatus, {
reverseColors: true,
status: makeStatus()
}, makeStatusText()));
}
if (type === 'action') {
return /*#__PURE__*/_react["default"].createElement(InviteActionWrapper, {
className: className
}, notInvited && /*#__PURE__*/_react["default"].createElement(_common.Button, {
disabled: !canInvite,
onClick: function onClick() {
return onClickInvite(id);
},
type: "primary"
}, "Invite"), revoked && /*#__PURE__*/_react["default"].createElement(_common.Button, {
disabled: !canInvite,
onClick: function onClick() {
return onClickInvite(id);
},
type: "primary"
}, "Reinvite"), responsePending && /*#__PURE__*/_react["default"].createElement(_common.Button, {
onClick: function onClick() {
return onClickRevokeInvitation(id);
},
type: "primary"
}, "Revoke invite"));
}
if (type === 'remove' && notInvited) {
return /*#__PURE__*/_react["default"].createElement(RemoveInviteWrapper, {
className: className,
onClick: handleRemove
}, /*#__PURE__*/_react["default"].createElement(_icons.CloseOutlined, null));
}
return null;
};
InviteRowProp.propTypes = {
/** Whether more reviewers can be invited */
canInvite: _propTypes["default"].bool,
/** Current row's invite status fields */
data: _propTypes["default"].shape({
id: _propTypes["default"].string.isRequired,
invited: _propTypes["default"].bool,
acceptedInvitation: _propTypes["default"].bool,
rejectedInvitation: _propTypes["default"].bool,
invitationRevoked: _propTypes["default"].bool,
reviewSubmitted: _propTypes["default"].bool
}).isRequired,
/** Function to run when "invite" is clicked on a row from the pool */
onClickInvite: _propTypes["default"].func,
/** Function to run when the "X" is clicked on a row from the pool */
onClickRemove: _propTypes["default"].func,
/** Function to run when "Revoke invitiation" is clicked on a row from the pool */
onClickRevokeInvitation: _propTypes["default"].func,
/** Type of invite prop being rendered */
type: _propTypes["default"].string.isRequired
};
InviteRowProp.defaultProps = {
canInvite: false,
onClickInvite: function onClickInvite() {},
onClickRemove: function onClickRemove() {},
onClickRevokeInvitation: function onClickRevokeInvitation() {}
};
var _default = InviteRowProp;
exports["default"] = _default;