@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 4.01 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),r=require("@mui/material/Stack"),s=require("@mui/material/Typography"),a=require("@mui/material/List"),t=require("@mui/material/ListItem"),l=require("@mui/material/ListItemText"),o=require("@mui/material/ListItemAvatar"),n=require("@mui/material/Tooltip"),d=require("@mui/material/Divider"),u=require("@mui/icons-material/AccountCircle"),c=require("@mui/material/Avatar"),m=require("../../../locales/index.js"),p=require("../../locale.json.js"),v=require("../../../Dialog/Dialog.container.js"),x=require("../../model/index.js"),h=require("../../../util/functions/index.js"),b=require("../PermissionPicker/PermissionPicker.component.js"),j=require("../../../StatusAvatar/StatusAvatar.container.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=f(r),y=f(s),L=f(a),q=f(t),P=f(l),C=f(o),k=f(n),M=f(d),A=f(u),S=f(c);const w="NexusAccessManager";exports.AccessManager=r=>{const{users:s=[],onUserPermissionChange:a,onUserRemoved:t,onUserResend:l,onShowBottomSheet:o,isMobile:n,editable:d=!0,isMeOwner:u=!0,...c}=r,[f,R]=i.useState(void 0),[T,I]=i.useState(!1),O=m.useTranslate(p.default),$=s.length>0,B=e=>{const{isMe:i,disabled:r,id:s,permissionLevel:a=""}=e,t=[{label:O("Resend Invite"),onClick:()=>{l?.(s,a)}},{label:O(i?"Leave":"Remove"),onClick:()=>{R(e),I(!0)}}],o=i||u?[{label:O(i?"Leave":"Remove"),onClick:()=>{R(e),I(!0)}}]:[];return r?t:o};return e.jsxs(e.Fragment,{children:[e.jsx(g.default,{"data-testid":`${w}-root`,...c,children:$?e.jsxs(e.Fragment,{children:[e.jsx(M.default,{sx:{mb:2,mx:-4}}),e.jsx(L.default,{disablePadding:!0,children:s.map((i=>{const{id:r,email:s,disabled:t,permissionLevel:u=x.PermissionType.readOnly,permissionLevels:c,permissionEditable:m=!0,isOwner:p,isMe:v,...f}=i;let g=c||x.defaultLevels(O);g=!d&&v?g.filter((e=>e.value===u)):g;const L=h.getFullName(i)||s,M=g?.find((e=>e.value===u)),T=`${s} (${O("Invite sent")})`;return e.jsxs(q.default,{"data-testid":`${w}-userInfo`,disableGutters:!0,sx:{cursor:t?"default":"pointer",pl:2},onClick:t?void 0:()=>(e=>{const i={user:e,extraActions:[{label:O("Resend Invite"),onClick:()=>{l?.(e?.id||"",e?.permissionLevel||"")}},{label:O(e.isMe?"Leave":"Remove"),onClick:()=>{R(e),I(!0)}}],editable:e.permissionEditable&&Boolean(a)||!1,permissionLevels:e.permissionLevels||x.defaultLevels(O),permissionLevel:e.permissionLevel||x.PermissionType.readOnly,onPermissionChange:i=>a?.(e.id,i)};o&&o(i)})(i),children:[e.jsx(C.default,{children:t?e.jsx(S.default,{sx:{bgcolor:e=>`rgba(${e.vars.palette.text.primaryChannel} / 0.3)`},children:e.jsx(A.default,{sx:{color:"background.paper"},fontSize:"small"})}):e.jsx(j.StatusAvatar,{...f,disabled:t})}),e.jsx(P.default,{primary:e.jsx(k.default,{title:e.jsx("div",{translate:"no",children:t?T:s}),children:e.jsx(y.default,{variant:"body2",component:"span",translate:"no",children:t?T:L})}),secondary:n?M?.label:void 0,primaryTypographyProps:{sx:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:t?"text.disabled":"text.primary"}},secondaryTypographyProps:{variant:"body2",sx:{color:t?"text.disabled":"text.secondary"}}}),p?e.jsx(y.default,{sx:{fontSize:12,fontWeight:700,mr:2.5},color:"text.secondary",children:O("owner")}):e.jsx(b.PermissionPicker,{useBottomsheet:n,isMobile:n,disabled:!v&&!d,disabledMessage:d||v?"":O("UserPermissionTooltip"),user:i,permissionLevels:g,editable:Boolean(m)&&Boolean(a),permissionLevel:u,onPermissionChange:e=>a?.(r,e),extraActions:B(i)})]},r)}))})]}):e.jsx(e.Fragment,{})}),e.jsx(v.Dialog,{sx:{"& .NexusDialog-paper":{width:"430px"}},open:T,onClose:()=>I(!1),title:`${O(f?.isMe?"Leave":"Remove access")}?`,rightActions:[{variant:"text",children:O("Cancel"),onClick:()=>{I(!1)}},{variant:"contained",children:O(f?.isMe?"Leave":"Remove"),color:"error",onClick:()=>{t?.(f?.id||""),I(!1)}}],children:e.jsx("p",{children:O("lose access",{0:f?.isMe?O("You"):f&&h.getFullName(f)||f?.email})})})]})};