@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) • 2.66 kB
JavaScript
import{jsx as e,jsxs as i,Fragment as t}from"react/jsx-runtime";import o from"@mui/material/Alert";import a from"@mui/material/Button";import m from"@mui/material/Stack";import{useTheme as r}from"@mui/material/styles";import n from"@mui/material/useMediaQuery";import{useState as l,useMemo as s,useCallback as d}from"react";import p from"@mui/material/TextField";import c from"@mui/material/Box";import u from"@mui/material/Tooltip";import{useTranslate as v}from"../../../locales/index.js";import{defaultLevels as h,PermissionType as f}from"../../model/index.js";import{PermissionPicker as g}from"../PermissionPicker/PermissionPicker.component.js";import{styles as x}from"./EmailInvite.styles.js";import b from"../../locale.json.js";import{EmailAutoComplete as P}from"../../../common/EmailAutoComplete/EmailAutoComplete.js";const y=y=>{const C=v(b),{availableUsers:j,loading:E,onSearch:I,onInvite:S,inviteMessage:w,initialPermissionLevel:A,permissionLevels:L=h(C),canEditInvitePermission:k=!1,showComment:B=!1,onPermissionChange:D,emailLimit:M,canInvite:N,sx:T,...U}=y,[F,K]=l([]),[O,Q]=l(void 0),[W,q]=l(A||f.readOnly),[z,G]=l(void 0),H=r(),J=n(H.breakpoints.down("sm")),R=F.map((e=>e.email)),V=s((()=>W&&(R.length>0||R.length<1&&O?.valid)&&F.every((e=>e.valid))&&!1!==O?.valid&&(!M||R.length+(O?1:0)<=M)&&!1!==N),[W,R.length,O,F,M,N]),X=d((e=>{q(e),D&&D(e)}),[D]),Y=()=>{B?S?.([...R,...O?.valid?[O?.email]:[]],W,z):S?.([...R,...O?.valid?[O?.email]:[]],W),K([]),Q(void 0)},Z=e(g,{permissionLevels:L,editable:k&&!1!==N,permissionLevel:W,onPermissionChange:X,useBottomsheet:J,isMobile:!1});return i(t,{children:[e(u,{title:!1===N?C("InviteTooltip"):"",placement:"bottom",arrow:!0,children:i(m,{direction:{xs:"column",sm:"row"},alignItems:{xs:"stretch",sm:"center"},sx:[{pt:"1px"},...Array.isArray(T)?T:[T]],...U,children:[i(c,{flexDirection:{xs:"column",sm:"row"},width:"100%",children:[e(P,{availableUsers:j||[],loading:E,emails:F,emailLimit:M,onEmailsChange:(e,i)=>{Q(i),K(e)},disabled:!1===N,placeholder:F.length?"":C("Enter email addresses"),endAdornment:Z,onEnterKeySubmit:()=>{V&&Y()},onSearch:I}),B&&e(p,{fullWidth:!0,"data-testid":"NexusShareDialog-comment-input",multiline:!0,variant:"outlined",placeholder:C("addComment"),value:z,onChange:e=>G(e.target.value),sx:{mt:4},slotProps:{input:{inputProps:{"data-testid":"comment-input","aria-label":"comment input"}}}})]}),e(a,{"data-testid":"NexusShareDialog-inviteButton",sx:x.inviteButton,variant:"contained",disabled:!V,onClick:Y,children:C("Invite")})]})}),w&&e(o,{"data-testid":"NexusShareDialog-message",variant:"standard",severity:"info",sx:x.alertMessage,children:w})]})};export{y as EmailInvite};