Repository URL to install this package:
|
Version:
3.12.20 ▾
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
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(arr) { if (Array.isArray(arr)) return arr; }
import { useState, useMemo } from 'react';
import { PC } from '@filerobot/common';
import { DeleteOutline, Group } from '@scaleflex/icons';
import { IconButton, Arrow } from '@scaleflex/ui/core';
import { useTheme } from '@scaleflex/ui/theme/hooks';
import Styled from './ManageAccess.styled';
import AccessPopper from './AccessPopper';
import { getGalleryRoleLabel } from '../../GalleryRoleSelect/GalleryRoleSelect.utils';
import { useExplorer, useExplorerI18n } from '../../../hooks';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
var AccessItem = function AccessItem(_ref) {
var _access$role, _access$role2, _access$role3;
var access = _ref.access,
isInheritMode = _ref.isInheritMode,
deleteAccessFromState = _ref.deleteAccessFromState,
changeAccessRoleState = _ref.changeAccessRoleState,
defaultAccessRoleId = _ref.defaultAccessRoleId,
accessesUuidsWithLowerRole = _ref.accessesUuidsWithLowerRole;
var theme = useTheme();
var i18n = useExplorerI18n(function (_ref2) {
var i18n = _ref2.i18n;
return i18n;
});
var _useExplorer = useExplorer(),
usersAndTeams = _useExplorer.opts.usersAndTeams;
var isTeam = Boolean(access.isTeam);
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
hasPhotoLoadError = _useState2[0],
setHasPhotoLoadError = _useState2[1];
var _useState3 = useState(null),
_useState4 = _slicedToArray(_useState3, 2),
detailsAnchorEl = _useState4[0],
setDetailsAnchorEl = _useState4[1];
var item = useMemo(function () {
var accessItem = isTeam ? access === null || access === void 0 ? void 0 : access.team : access === null || access === void 0 ? void 0 : access.user;
if (!(accessItem !== null && accessItem !== void 0 && accessItem.uuid)) {
return accessItem;
}
var itemFromList = (usersAndTeams || []).find(function (userOrTeam) {
return (userOrTeam === null || userOrTeam === void 0 ? void 0 : userOrTeam.uuid) === (accessItem === null || accessItem === void 0 ? void 0 : accessItem.uuid);
});
return itemFromList || accessItem;
}, [access, usersAndTeams]);
var renderAvatar = function renderAvatar() {
var _item$name, _item$name$match;
return /*#__PURE__*/_jsx(Styled.AccessItemAvatar, {
isImage: Boolean(!hasPhotoLoadError && (item === null || item === void 0 ? void 0 : item.photo_uri)),
children: !hasPhotoLoadError && item !== null && item !== void 0 && item.photo_uri ? /*#__PURE__*/_jsx("img", {
src: item === null || item === void 0 ? void 0 : item.photo_uri,
alt: "Photo",
onError: function onError() {
return setHasPhotoLoadError(true);
},
onLoad: function onLoad() {
return setHasPhotoLoadError(false);
}
}) : /*#__PURE__*/_jsx("div", {
children: isTeam ? /*#__PURE__*/_jsx(Group, {
color: theme.palette[PC.AccentStateless],
size: 20
}) : item === null || item === void 0 ? void 0 : (_item$name = item.name) === null || _item$name === void 0 ? void 0 : (_item$name$match = _item$name.match(/\w/)) === null || _item$name$match === void 0 ? void 0 : _item$name$match[0]
})
});
};
var handleDetailsToggle = function handleDetailsToggle(_ref3) {
var target = _ref3.target;
setDetailsAnchorEl(function (_value) {
return _value ? null : target;
});
};
var handleChangeRole = function handleChangeRole(newRole) {
setDetailsAnchorEl(null);
changeAccessRoleState({
id: newRole === null || newRole === void 0 ? void 0 : newRole.id,
name: newRole === null || newRole === void 0 ? void 0 : newRole.name
});
};
return /*#__PURE__*/_jsxs(_Fragment, {
children: [detailsAnchorEl && /*#__PURE__*/_jsx(AccessPopper, {
anchorEl: detailsAnchorEl,
onClose: handleDetailsToggle,
roleId: access === null || access === void 0 ? void 0 : (_access$role = access.role) === null || _access$role === void 0 ? void 0 : _access$role.id,
onChange: handleChangeRole,
defaultAccessRoleId: defaultAccessRoleId
}), /*#__PURE__*/_jsxs(Styled.AccessItem, {
children: [/*#__PURE__*/_jsxs(Styled.AccessItemNameContainer, {
children: [renderAvatar(), /*#__PURE__*/_jsxs("div", {
children: [/*#__PURE__*/_jsx("div", {
children: item === null || item === void 0 ? void 0 : item.name
}), (item === null || item === void 0 ? void 0 : item.email) && /*#__PURE__*/_jsx(Styled.Hint, {
withMargin: false,
children: item.email
})]
})]
}), /*#__PURE__*/_jsxs(Styled.AccessItemRole, {
error: accessesUuidsWithLowerRole.includes(access.access_uuid),
children: [access !== null && access !== void 0 && (_access$role2 = access.role) !== null && _access$role2 !== void 0 && _access$role2.name ? /*#__PURE__*/_jsx("span", {
children: getGalleryRoleLabel(access === null || access === void 0 ? void 0 : (_access$role3 = access.role) === null || _access$role3 === void 0 ? void 0 : _access$role3.name, i18n)
}) : '', !isInheritMode && /*#__PURE__*/_jsx(IconButton, {
size: "xs",
color: "basic",
onClick: handleDetailsToggle,
children: /*#__PURE__*/_jsx(Arrow, {
type: detailsAnchorEl ? 'top' : 'bottom',
IconProps: {
size: 12
}
})
})]
}), /*#__PURE__*/_jsx(Styled.AccessItemActions, {
children: !isInheritMode && /*#__PURE__*/_jsx(IconButton, {
size: "xs",
color: "basic",
onClick: deleteAccessFromState,
children: /*#__PURE__*/_jsx(DeleteOutline, {
size: 14
})
})
})]
}, access.access_uuid)]
});
};
export default AccessItem;