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