@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) • 1.93 kB
JavaScript
import{jsx as e,jsxs as i}from"react/jsx-runtime";import r from"@mui/icons-material/Check";import t from"@mui/material/Divider";import o from"@mui/material/List";import a from"@mui/material/ListItem";import m from"@mui/material/ListItemButton";import l from"@mui/material/ListItemText";import s from"@mui/material/ListItemAvatar";import n from"@mui/material/ListItemIcon";import{defaultLevels as p}from"../../model/index.js";import{getFullName as d}from"../../../util/functions/index.js";import{useTranslate as c}from"../../../locales/index.js";import h from"../../locale.json.js";import{BottomSheet as u}from"../../../common/BottomSheet/BottomSheet.js";import{StatusAvatar as v}from"../../../StatusAvatar/StatusAvatar.container.js";const f="NexusPermissionSheet",y=y=>{const{open:x,shareConfig:b,handleClose:L}=y,j=c(h),{permissionLevels:C=p(j),permissionLevel:g="viewer",editable:$,onPermissionChange:I,user:S,extraActions:w=[]}=b,P=S?d(S)||S?.email:"",k=C.find((e=>e.value===g));return e(u,{className:`${f}-root`,onClose:L,open:x,children:i(o,{"data-testid":`${f}-list`,children:[S&&i(a,{sx:{height:64},children:[e(s,{children:e(v,{...S})}),e(l,{"data-testid":`${f}-user`,primary:P,secondary:k?.label,primaryTypographyProps:{variant:"body1",style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}})]}),S&&e(t,{}),$&&C.map((t=>i(m,{"data-testid":`${f}-permission-${t.value}`,dense:!0,onClick:()=>{I?.(t.value),L()},children:[e(n,{sx:{minWidth:35},children:e(r,{sx:{visibility:g===t.value?"visible":"hidden"}})}),e(l,{primary:t.label,primaryTypographyProps:{variant:"body2"}})]},t.value))),$&&w.length>0&&e(t,{}),w.map((i=>e(m,{"data-testid":`${f}-extra-${i.label}`,dense:!0,onClick:()=>{i.onClick(),L()},children:e(l,{primary:i.label,primaryTypographyProps:{variant:"body2",color:i.label===j("Remove")||i.label===j("Leave")?"error.main":"text.primary"}})},i.label)))]})})};export{y as MobilePermissionSheet};