UNPKG

@filerobot/approvals

Version:

Asset approvals package for Filerobot

111 lines 6.8 kB
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } import { useState } from 'react'; // import { useSelector } from 'react-redux' import { IconButton, Menu, MenuItem, MenuItemIcon, MenuItemLabel } from '@scaleflex/ui/core'; import MoreIcon from '@scaleflex/icons/more'; // import RenameIcon from '@scaleflex/icons/rename' import DeleteIcon from '@scaleflex/icons/remove'; // import { selectUserInfo } from '@filerobot/core/lib/slices/user.slice' import { APPROVAL_STATUSES } from '@filerobot/utils/lib/constants'; import { FV } from '@filerobot/common'; import AvatarWithStatus from '@filerobot/common/lib/AvatarWithStatus'; import { useExplorerI18n } from '@filerobot/explorer/lib/hooks'; import ApprovalStatus from '@filerobot/common/lib/ApprovalStatus'; import { useRemoveApproverModal } from '../../Modals/RemoveApprover/RemoveApprover.hooks'; import Styled from './DetailsView.styled'; import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime"; var MAX_VOTE_COMMENT_LENGTH = 100; var ApproversList = function ApproversList(_ref) { var _approval$approvers; var approval = _ref.approval, isRequester = _ref.isRequester, readOnly = _ref.readOnly; var i18n = useExplorerI18n(); // need to use i18n from explorer to use it in explorer and in approvals as explorer exist in both cases // const currentUserUuid = useSelector(selectUserInfo)?.uuid var _useState = useState(), _useState2 = _slicedToArray(_useState, 2), anchorEl = _useState2[0], setAnchorEl = _useState2[1]; var _useState3 = useState(), _useState4 = _slicedToArray(_useState3, 2), activeApprover = _useState4[0], setActiveApprover = _useState4[1]; var triggerRemoveApproverModal = useRemoveApproverModal(); var toggleMenu = function toggleMenu(event) { var approver = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; setAnchorEl(anchorEl || !event.currentTarget ? null : event.currentTarget); setActiveApprover(approver); }; var handleRemoveApproverClick = function handleRemoveApproverClick() { setAnchorEl(null); triggerRemoveApproverModal({ approverName: (activeApprover === null || activeApprover === void 0 ? void 0 : activeApprover.name) || (activeApprover === null || activeApprover === void 0 ? void 0 : activeApprover.email), approverUuid: activeApprover === null || activeApprover === void 0 ? void 0 : activeApprover.uuid, approvalUuid: approval.uuid }); }; var renderApprover = function renderApprover(approver) { return /*#__PURE__*/_jsxs(Styled.ApprovalItem, { active: (activeApprover === null || activeApprover === void 0 ? void 0 : activeApprover.uuid) === approver.uuid, children: [/*#__PURE__*/_jsxs(Styled.ApprovalItemBody, { children: [/*#__PURE__*/_jsx(Styled.ApprovalItemBodyAvatar, { children: /*#__PURE__*/_jsx(AvatarWithStatus, { photo: approver.photo, name: approver.name || approver.email, status: approver.response, i18n: i18n }) }), /*#__PURE__*/_jsxs(Styled.ApprovalItemBodyContent, { children: [/*#__PURE__*/_jsx(Styled.ApprovalItemBodyContentTitle, { children: approver.name || approver.email }), /*#__PURE__*/_jsxs(Styled.ApprovalItemBodyContentDesc, { children: [/*#__PURE__*/_jsx(ApprovalStatus, { statusCode: approver.response, showIcon: false, labelFontVariant: FV.TextMedium, i18n: i18n, date: approver.response === APPROVAL_STATUSES.NO_RESPONSE ? '' // Hide date for "Didn’t respond" status : approver === null || approver === void 0 ? void 0 : approver.responded_at }), approver.vote_comment && /*#__PURE__*/_jsx("div", { title: approver.vote_comment, children: "\u201C".concat(approver.vote_comment.length > MAX_VOTE_COMMENT_LENGTH ? "".concat(approver.vote_comment.slice(0, MAX_VOTE_COMMENT_LENGTH - 3), "...") : approver.vote_comment, "\u201D") })] })] })] }), isRequester && !readOnly && /*#__PURE__*/_jsx(Styled.ApprovalItemActions, { children: /*#__PURE__*/_jsx(IconButton, { color: "basic", onClick: function onClick(event) { return toggleMenu(event, approver); }, children: /*#__PURE__*/_jsx(MoreIcon, {}) }) })] }, approver.uuid); }; return /*#__PURE__*/_jsxs(_Fragment, { children: [/*#__PURE__*/_jsx(Styled.ApprovalsContainer, { children: ((approval === null || approval === void 0 ? void 0 : (_approval$approvers = approval.approvers) === null || _approval$approvers === void 0 ? void 0 : _approval$approvers.users) || []).map(renderApprover) }), !readOnly && /*#__PURE__*/_jsx(Menu, { enableOverlay: true, anchorEl: anchorEl, open: Boolean(anchorEl), onClose: toggleMenu, children: isRequester && /*#__PURE__*/_jsxs(MenuItem, { onClick: handleRemoveApproverClick, children: [/*#__PURE__*/_jsx(MenuItemIcon, { size: "md", children: /*#__PURE__*/_jsx(DeleteIcon, {}) }), /*#__PURE__*/_jsx(MenuItemLabel, { children: i18n('approvalsRemoveApproverMenuItemLabel') })] }) })] }); }; export default ApproversList;