@dropins/storefront-company-management 1.0.0-beta17 → 1.0.0-beta18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as e,jsxs as t}from"@dropins/tools/preact-jsx-runtime.js";import{Skeleton as i,SkeletonRow as a,Card as n}from"@dropins/tools/components.js";import{classes as o}from"@dropins/tools/lib.js";const u=({testId:r,withCard:l=!0})=>{const s=t(i,{"data-testid":r||"companySkeletonLoader",children:[e(a,{variant:"heading",size:"xlarge",fullWidth:!1,lines:1}),e(a,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(a,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1})]});return l?s:e(n,{variant:"secondary",className:o(["company-company-loaders","company-company-loaders--card-loader"]),children:s})},h=({testId:r})=>e("div",{className:"company-users-skeleton-loader","data-testid":r||"companyUsersSkeletonLoader",children:e(i,{children:e(a,{variant:"row",size:"small",fullWidth:!0,lines:3})})}),p=({testId:r})=>t("div",{className:"company-credit-skeleton-loader","data-testid":r||"companyCreditSkeletonLoader",children:[e(i,{children:e(a,{variant:"row",size:"small",lines:2})}),e(i,{children:e(a,{variant:"row",size:"small",lines:2})}),e(i,{children:e(a,{variant:"row",size:"small",lines:2})})]}),y=({testId:r})=>e("div",{className:"company-credit-history-skeleton-loader","data-testid":r||"companyCreditHistorySkeletonLoader",children:e(i,{children:e(a,{variant:"row",size:"small",fullWidth:!0,lines:3})})}),z=({rows:r=6})=>t(i,{"data-testid":"companyStructureLoader",children:[e(a,{variant:"heading",size:"medium"}),e(a,{variant:"empty",size:"small"}),Array.from({length:r}).map((l,s)=>e(a,{size:"large",fullWidth:!0},s))]}),g=()=>t(i,{"data-testid":"companyUserFormLoader",children:[e(a,{variant:"heading",size:"medium"}),e(a,{variant:"empty",size:"small"}),e(a,{size:"large"}),e(a,{size:"large"}),e(a,{size:"large"}),e(a,{size:"large"}),e(a,{size:"large",fullWidth:!0}),e(a,{size:"large"}),e(a,{size:"large"})]}),v=()=>t(i,{"data-testid":"companyTeamFormLoader",children:[e(a,{variant:"heading",size:"medium"}),e(a,{variant:"empty",size:"small"}),e(a,{size:"large"}),e(a,{size:"large",fullWidth:!0}),e(a,{size:"large"})]});export{h as C,v as a,z as b,g as c,u as d,p as e,y as f};
3
+ import{jsxs as t,jsx as e}from"@dropins/tools/preact-jsx-runtime.js";import{Card as s,Skeleton as r,SkeletonRow as a}from"@dropins/tools/components.js";import{classes as o}from"@dropins/tools/lib.js";const u=({testId:i,withCard:n=!0})=>{const l=t(r,{"data-testid":i||"companySkeletonLoader",children:[e(a,{variant:"heading",size:"xlarge",fullWidth:!1,lines:1}),e(a,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(a,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1})]});return n?l:e(s,{variant:"secondary",className:o(["company-company-loaders","company-company-loaders--card-loader"]),children:l})},h=({testId:i})=>t("div",{className:"company-credit-skeleton-loader","data-testid":i||"companyCreditSkeletonLoader",children:[e(r,{children:e(a,{variant:"row",size:"small",lines:2})}),e(r,{children:e(a,{variant:"row",size:"small",lines:2})}),e(r,{children:e(a,{variant:"row",size:"small",lines:2})})]}),p=({testId:i})=>e("div",{className:"company-credit-history-skeleton-loader","data-testid":i||"companyCreditHistorySkeletonLoader",children:e(r,{children:e(a,{variant:"row",size:"small",fullWidth:!0,lines:3})})}),y=({rows:i=6})=>t(r,{"data-testid":"companyStructureLoader",children:[e(a,{variant:"heading",size:"medium"}),e(a,{variant:"empty",size:"small"}),Array.from({length:i}).map((n,l)=>e(a,{size:"large",fullWidth:!0},l))]}),z=()=>t(r,{"data-testid":"companyUserFormLoader",children:[e(a,{variant:"heading",size:"medium"}),e(a,{variant:"empty",size:"small"}),e(a,{size:"large"}),e(a,{size:"large"}),e(a,{size:"large"}),e(a,{size:"large"}),e(a,{size:"large",fullWidth:!0}),e(a,{size:"large"}),e(a,{size:"large"})]}),g=()=>t(r,{"data-testid":"companyTeamFormLoader",children:[e(a,{variant:"heading",size:"medium"}),e(a,{variant:"empty",size:"small"}),e(a,{size:"large"}),e(a,{size:"large",fullWidth:!0}),e(a,{size:"large"})]});export{g as C,y as a,z as b,u as c,h as d,p as e};
4
4
  //# sourceMappingURL=CompanyLoaders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompanyLoaders.js","sources":["/@dropins/storefront-company-management/src/components/CompanyLoaders/CompanyLoaders.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { Skeleton, SkeletonRow, Card } from '@adobe-commerce/elsie/components';\nimport './CompanyLoaders.css';\nimport { classes } from '@adobe-commerce/elsie/lib';\n\nexport const CompanyCardLoader = ({\n testId,\n withCard = true,\n}: {\n testId?: string;\n withCard?: boolean;\n}) => {\n const defaultSkeleton = (\n <Skeleton data-testid={testId || 'companySkeletonLoader'}>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n </Skeleton>\n );\n\n if (withCard) {\n return defaultSkeleton;\n }\n\n return (\n <Card\n variant=\"secondary\"\n className={classes([\n 'company-company-loaders',\n 'company-company-loaders--card-loader',\n ])}\n >\n {defaultSkeleton}\n </Card>\n );\n};\n\nexport const CompanyUsersTableLoader = ({ testId }: { testId?: string }) => {\n return (\n <div className=\"company-users-skeleton-loader\" data-testid={testId || 'companyUsersSkeletonLoader'}>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" fullWidth={true} lines={3} />\n </Skeleton>\n </div>\n );\n};\n\nexport const CompanyCreditLoader = ({ testId }: { testId?: string }) => {\n return (\n <div className=\"company-credit-skeleton-loader\" data-testid={testId || 'companyCreditSkeletonLoader'}>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" lines={2} />\n </Skeleton>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" lines={2} />\n </Skeleton>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" lines={2} />\n </Skeleton>\n </div>\n );\n};\n\nexport const CompanyCreditHistoryLoader = ({ testId }: { testId?: string }) => {\n return (\n <div className=\"company-credit-history-skeleton-loader\" data-testid={testId || 'companyCreditHistorySkeletonLoader'}>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" fullWidth={true} lines={3} />\n </Skeleton>\n </div>\n );\n};\n\nexport const CompanyStructureLoader = ({ rows = 6 }: { rows?: number }) => {\n return (\n <Skeleton data-testid=\"companyStructureLoader\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n {Array.from({ length: rows }).map((_, i) => (\n <SkeletonRow key={i} size=\"large\" fullWidth={true} />\n ))}\n </Skeleton>\n );\n};\n\nexport const CompanyUserFormLoader = () => {\n return (\n <Skeleton data-testid=\"companyUserFormLoader\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" fullWidth={true} />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n </Skeleton>\n );\n};\n\nexport const CompanyTeamFormLoader = () => {\n return (\n <Skeleton data-testid=\"companyTeamFormLoader\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" fullWidth={true} />\n <SkeletonRow size=\"large\" />\n </Skeleton>\n );\n};\n"],"names":["CompanyCardLoader","testId","withCard","defaultSkeleton","jsxs","Skeleton","jsx","SkeletonRow","Card","classes","CompanyUsersTableLoader","CompanyCreditLoader","CompanyCreditHistoryLoader","CompanyStructureLoader","rows","_","i","CompanyUserFormLoader","CompanyTeamFormLoader"],"mappings":"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"}
1
+ {"version":3,"file":"CompanyLoaders.js","sources":["/@dropins/storefront-company-management/src/components/CompanyLoaders/CompanyLoaders.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { Skeleton, SkeletonRow, Card } from '@adobe-commerce/elsie/components';\nimport './CompanyLoaders.css';\nimport { classes } from '@adobe-commerce/elsie/lib';\n\nexport const CompanyCardLoader = ({\n testId,\n withCard = true,\n}: {\n testId?: string;\n withCard?: boolean;\n}) => {\n const defaultSkeleton = (\n <Skeleton data-testid={testId || 'companySkeletonLoader'}>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n </Skeleton>\n );\n\n if (withCard) {\n return defaultSkeleton;\n }\n\n return (\n <Card\n variant=\"secondary\"\n className={classes([\n 'company-company-loaders',\n 'company-company-loaders--card-loader',\n ])}\n >\n {defaultSkeleton}\n </Card>\n );\n};\n\nexport const CompanyUsersTableLoader = ({ testId }: { testId?: string }) => {\n return (\n <div className=\"company-users-skeleton-loader\" data-testid={testId || 'companyUsersSkeletonLoader'}>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" fullWidth={true} lines={3} />\n </Skeleton>\n </div>\n );\n};\n\nexport const CompanyCreditLoader = ({ testId }: { testId?: string }) => {\n return (\n <div className=\"company-credit-skeleton-loader\" data-testid={testId || 'companyCreditSkeletonLoader'}>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" lines={2} />\n </Skeleton>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" lines={2} />\n </Skeleton>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" lines={2} />\n </Skeleton>\n </div>\n );\n};\n\nexport const CompanyCreditHistoryLoader = ({ testId }: { testId?: string }) => {\n return (\n <div className=\"company-credit-history-skeleton-loader\" data-testid={testId || 'companyCreditHistorySkeletonLoader'}>\n <Skeleton>\n <SkeletonRow variant=\"row\" size=\"small\" fullWidth={true} lines={3} />\n </Skeleton>\n </div>\n );\n};\n\nexport const CompanyStructureLoader = ({ rows = 6 }: { rows?: number }) => {\n return (\n <Skeleton data-testid=\"companyStructureLoader\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n {Array.from({ length: rows }).map((_, i) => (\n <SkeletonRow key={i} size=\"large\" fullWidth={true} />\n ))}\n </Skeleton>\n );\n};\n\nexport const CompanyUserFormLoader = () => {\n return (\n <Skeleton data-testid=\"companyUserFormLoader\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" fullWidth={true} />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" />\n </Skeleton>\n );\n};\n\nexport const CompanyTeamFormLoader = () => {\n return (\n <Skeleton data-testid=\"companyTeamFormLoader\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n <SkeletonRow size=\"large\" />\n <SkeletonRow size=\"large\" fullWidth={true} />\n <SkeletonRow size=\"large\" />\n </Skeleton>\n );\n};\n"],"names":["CompanyCardLoader","testId","withCard","defaultSkeleton","jsxs","Skeleton","jsx","SkeletonRow","Card","classes","CompanyCreditLoader","CompanyCreditHistoryLoader","CompanyStructureLoader","rows","_","i","CompanyUserFormLoader","CompanyTeamFormLoader"],"mappings":"wMAoBO,MAAMA,EAAoB,CAAC,CAChC,OAAAC,EACA,SAAAC,EAAW,EACb,IAGM,CACJ,MAAMC,EACJC,EAACC,EAAA,CAAS,cAAaJ,GAAU,wBAC/B,SAAA,CAAAK,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,CAAA,EAC1E,EAGF,OAAIL,EACKC,EAIPG,EAACE,EAAA,CACC,QAAQ,YACR,UAAWC,EAAQ,CACjB,0BACA,sCAAA,CACD,EAEA,SAAAN,CAAA,CAAA,CAGP,EAYaO,EAAsB,CAAC,CAAE,OAAAT,OAEjC,MAAA,CAAI,UAAU,iCAAiC,cAAaA,GAAU,8BACrE,SAAA,CAAAK,EAACD,EAAA,CACC,WAACE,EAAA,CAAY,QAAQ,MAAM,KAAK,QAAQ,MAAO,CAAA,CAAG,CAAA,CACpD,EACAD,EAACD,EAAA,CACC,SAAAC,EAACC,EAAA,CAAY,QAAQ,MAAM,KAAK,QAAQ,MAAO,CAAA,CAAG,CAAA,CACpD,EACAD,EAACD,EAAA,CACC,SAAAC,EAACC,EAAA,CAAY,QAAQ,MAAM,KAAK,QAAQ,MAAO,CAAA,CAAG,CAAA,CACpD,CAAA,EACF,EAISI,EAA6B,CAAC,CAAE,OAAAV,KAEzCK,EAAC,OAAI,UAAU,yCAAyC,cAAaL,GAAU,qCAC3E,WAACI,EAAA,CACC,SAAAC,EAACC,GAAY,QAAQ,MAAM,KAAK,QAAQ,UAAW,GAAM,MAAO,EAAG,EACrE,CAAA,CACJ,EAISK,EAAyB,CAAC,CAAE,KAAAC,EAAO,KAE5CT,EAACC,EAAA,CAAS,cAAY,yBACpB,SAAA,CAAAC,EAACC,EAAA,CAAY,QAAQ,UAAU,KAAK,SAAS,EAC7CD,EAACC,EAAA,CAAY,QAAQ,QAAQ,KAAK,QAAQ,EACzC,MAAM,KAAK,CAAE,OAAQM,CAAA,CAAM,EAAE,IAAI,CAACC,EAAGC,MACnCR,EAAA,CAAoB,KAAK,QAAQ,UAAW,EAAA,EAA3BQ,CAAiC,CACpD,CAAA,EACH,EAISC,EAAwB,IAEjCZ,EAACC,EAAA,CAAS,cAAY,wBACpB,SAAA,CAAAC,EAACC,EAAA,CAAY,QAAQ,UAAU,KAAK,SAAS,EAC7CD,EAACC,EAAA,CAAY,QAAQ,QAAQ,KAAK,QAAQ,EAC1CD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,EAC1BD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,EAC1BD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,EAC1BD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,EAC1BD,EAACC,EAAA,CAAY,KAAK,QAAQ,UAAW,GAAM,EAC3CD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,EAC1BD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,CAAA,EAC5B,EAISU,EAAwB,IAEjCb,EAACC,EAAA,CAAS,cAAY,wBACpB,SAAA,CAAAC,EAACC,EAAA,CAAY,QAAQ,UAAU,KAAK,SAAS,EAC7CD,EAACC,EAAA,CAAY,QAAQ,QAAQ,KAAK,QAAQ,EAC1CD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,EAC1BD,EAACC,EAAA,CAAY,KAAK,QAAQ,UAAW,GAAM,EAC3CD,EAACC,EAAA,CAAY,KAAK,OAAA,CAAQ,CAAA,EAC5B"}
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as P,jsx as o}from"@dropins/tools/preact-jsx-runtime.js";import{memo as D}from"@dropins/tools/preact-compat.js";import{useState as d,useEffect as H}from"@dropins/tools/preact-hooks.js";import{Card as J,InLineAlert as K,ProgressSpinner as Q,Field as S,Input as A,Picker as z,Button as O}from"@dropins/tools/components.js";import{i as W}from"./company-permissions.js";import{g as X,c as Y,u as Z,i as ee}from"./updateCompanyUser.js";import{useText as G}from"@dropins/tools/i18n.js";import{u as ae}from"./useCompanyRoles.js";import{c as te}from"./CompanyLoaders.js";function re(q){const{mode:I,entityId:h,parentStructureId:T,onSaved:w,onError:N,onSuccess:v}=q,u=G({firstNameRequired:"Company.CompanyStructure.shared.validation.firstNameRequired",lastNameRequired:"Company.CompanyStructure.shared.validation.lastNameRequired",emailRequired:"Company.CompanyStructure.shared.validation.emailRequired",emailInvalid:"Company.CompanyStructure.shared.validation.emailInvalid",jobTitleRequired:"Company.CompanyStructure.shared.validation.jobTitleRequired",workPhoneRequired:"Company.CompanyStructure.shared.validation.workPhoneRequired",selectRole:"Company.CompanyStructure.shared.validation.selectRole",createUserError:"Company.CompanyStructure.messages.createUserError",saveUserError:"Company.CompanyStructure.messages.saveUserError",createUserSuccess:"Company.CompanyStructure.messages.createUserSuccess",updateUserSuccess:"Company.CompanyStructure.messages.updateUserSuccess"}),[r,U]=d({firstName:"",lastName:"",email:"",jobTitle:"",telephone:"",roleId:"",status:"ACTIVE"}),[x,c]=d({}),[m,p]=d({}),[V,R]=d(!1),[y,j]=d(null),[_,E]=d(null),[b,k]=d(""),[l,a]=d(""),[i,B]=d(!1);H(()=>{I!=="edit"||!h||(R(!0),X(h).then(e=>{var f;if(!e)return;const t=e.email||"";U(g=>({...g,firstName:e.firstName||"",lastName:e.lastName||"",email:t,jobTitle:e.jobTitle||"",telephone:e.telephone||"",status:e.status||"ACTIVE"})),a(t),(f=e==null?void 0:e.role)!=null&&f.id&&U(g=>({...g,roleId:e.role.id})),B((e==null?void 0:e.isCompanyAdmin)??!1)}).finally(()=>R(!1)))},[I,h]);const F=e=>/.+@.+\..+/.test(e),M=(e,t)=>e==="firstName"?t!=null&&t.trim()?null:u.firstNameRequired:e==="lastName"?t!=null&&t.trim()?null:u.lastNameRequired:e==="email"?t!=null&&t.trim()?F(t.trim())?null:u.emailInvalid:u.emailRequired:e==="roleId"?t?null:u.selectRole:null,$=(e,t)=>{U(f=>({...f,[e]:t})),e==="email"&&E(null),y&&j(null)};return{values:r,errors:x,touched:m,loading:V,setValue:$,onBlur:async(e,t)=>{t!==void 0&&$(e,t),p(C=>({...C,[e]:!0}));const f=t!==void 0?t:r[e],g=M(e,f);if(c(g?C=>({...C,[e]:g}):C=>{const s={...C};return delete s[e],s}),e==="email"){const s=(t!==void 0?t:r.email||"").trim();if(I==="edit"&&s.toLowerCase()===(l||"").trim().toLowerCase()){E(null);return}if(F(s)&&s!==b){const n=await ee(s);k(s),E(n),n===!1&&c(L=>({...L,email:"A user with this email address is already a member of your company."}))}}},submit:async()=>{const e=["firstName","lastName","email","roleId"],t={};for(const s of e){const n=M(s,r[s]);n&&(t[s]=n)}if(c(t),p({firstName:!0,lastName:!0,email:!0,roleId:!0}),Object.keys(t).length||_===!1){setTimeout(()=>{const s=document.querySelector(".company-user-form__content .dropin-field__hint--error");if(s){const n=s.closest(".dropin-field");if(n){n.scrollIntoView({behavior:"smooth",block:"center"});const L=n.querySelector("input, select");L&&L.focus()}}},100);return}const f=`${r.firstName||""} ${r.lastName||""}`.trim()||r.email||"",C=i||W({id:r.roleId})?"ACTIVE":r.status;try{if(I==="add"){const s=await Y({email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",roleId:r.roleId,status:C,targetId:T??null});if(!s){const n=u.createUserError;N?N(n):j(n);return}w({label:f,structureId:s.structureId,entityId:s.id,type:"user"}),v&&v(u.createUserSuccess)}else h&&(await Z({id:h,email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",status:C,roleId:r.roleId}),w({label:f,entityId:h,type:"user"}),v&&v(u.updateUserSuccess))}catch(s){const n=s instanceof Error?s.message:u.saveUserError;N?N(n):j(n)}},isCompanyAdmin:i,generalError:y}}const fe=D(({mode:q,entityId:I,parentStructureId:h,permissions:T,onSaved:w,onCancel:N,onError:v,onSuccess:u})=>{const r=(T==null?void 0:T.canEditUsers)??!1,{roles:U,isLoading:x}=ae(),{values:c,errors:m,touched:p,loading:V,setValue:R,onBlur:y,submit:j,isCompanyAdmin:_,generalError:E}=re({mode:q,entityId:I,parentStructureId:h,onSaved:w,onError:v?a=>{v(a),N()}:void 0,onSuccess:u}),[b,k]=d(!1),l=G({addUser:"Company.CompanyStructure.shared.titles.addUser",editUser:"Company.CompanyStructure.shared.titles.editUser",jobTitle:"Company.CompanyStructure.shared.fields.jobTitle",userRole:"Company.CompanyStructure.shared.fields.userRole",firstName:"Company.CompanyStructure.shared.fields.firstName",lastName:"Company.CompanyStructure.shared.fields.lastName",email:"Company.CompanyStructure.shared.fields.email",workPhoneNumber:"Company.CompanyStructure.shared.fields.workPhoneNumber",status:"Company.CompanyStructure.shared.fields.status",selectRole:"Company.CompanyStructure.shared.options.selectRole",active:"Company.CompanyStructure.shared.options.active",inactive:"Company.CompanyStructure.shared.options.inactive",companyAdministrator:"Company.CompanyStructure.shared.options.companyAdministrator",save:"Company.CompanyStructure.shared.buttons.save",cancel:"Company.CompanyStructure.shared.buttons.cancel"});return P("div",{children:[o("h3",{className:"acm-structure-panel__title",children:q==="add"?l.addUser:l.editUser}),P(J,{variant:"secondary",className:`company-user-form__card ${b?"is-working":""}`,children:[!v&&E?o(K,{className:"company-user-form__notification",type:"error",variant:"secondary",heading:E}):null,b?o("div",{className:"company-user-form__overlay","aria-live":"polite",children:o(Q,{size:"small"})}):null,V||x?o(te,{}):P("div",{className:"company-user-form__content",children:[o(S,{label:l.jobTitle,className:"acm-structure-panel__field",error:p.jobTitle&&m.jobTitle?m.jobTitle:void 0,children:o(A,{name:"job_title",type:"text",value:c.jobTitle||"",onBlur:a=>{const i=a.target;y("jobTitle",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.userRole,required:!0,className:"acm-structure-panel__field",error:!_&&p.roleId&&m.roleId?m.roleId:void 0,disabled:_,children:_?o(z,{name:"role",value:"MA==",options:[{value:"MA==",text:l.companyAdministrator}]}):o(z,{name:"role",value:c.roleId||"placeholder",onChange:a=>{var i,B;return R("roleId",String(((i=a==null?void 0:a.target)==null?void 0:i.value)==="placeholder"?"":((B=a==null?void 0:a.target)==null?void 0:B.value)??""))},onBlur:a=>{const i=a.target;y("roleId",i.value==="placeholder"?"":i.value)},options:[{value:"placeholder",text:l.selectRole,disabled:!0},...U.map(a=>({value:a.id,text:a.name}))]})}),o(S,{label:l.firstName,required:!0,className:"acm-structure-panel__field",error:p.firstName&&m.firstName?m.firstName:void 0,children:o(A,{name:"first_name",type:"text",value:c.firstName,onBlur:a=>{const i=a.target;y("firstName",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.lastName,required:!0,className:"acm-structure-panel__field",error:p.lastName&&m.lastName?m.lastName:void 0,children:o(A,{name:"last_name",type:"text",value:c.lastName,onBlur:a=>{const i=a.target;y("lastName",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.email,required:!0,className:"acm-structure-panel__field",error:p.email&&m.email?m.email:void 0,children:o(A,{name:"email",type:"email",value:c.email,onBlur:a=>{const i=a.target;y("email",i.value)},placeholder:"jdoe@example.com",variant:"primary",size:"medium"})}),o(S,{label:l.workPhoneNumber,className:"acm-structure-panel__field",error:p.telephone&&m.telephone?m.telephone:void 0,children:o(A,{name:"telephone",type:"text",value:c.telephone||"",onBlur:a=>{const i=a.target;y("telephone",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.status,className:"acm-structure-panel__field",disabled:_||!r,children:o(z,{name:"status",value:c.status,onChange:a=>{var i;return R("status",String(((i=a==null?void 0:a.target)==null?void 0:i.value)??"ACTIVE"))},options:[{value:"ACTIVE",text:l.active},{value:"INACTIVE",text:l.inactive}]})})]})]}),V||x?null:P("div",{className:"acm-structure-modal__actions",children:[o(O,{type:"button",variant:"primary",disabled:b||!r,onClick:async()=>{if(!b){k(!0);try{await j()}finally{k(!1)}}},children:l.save}),o(O,{type:"button",variant:"secondary",disabled:b,onClick:N,children:l.cancel})]})]})});export{fe as C};
3
+ import{jsxs as P,jsx as o}from"@dropins/tools/preact-jsx-runtime.js";import{memo as D}from"@dropins/tools/preact-compat.js";import{useState as d,useEffect as H}from"@dropins/tools/preact-hooks.js";import{Card as J,InLineAlert as K,ProgressSpinner as Q,Field as S,Input as A,Picker as z,Button as O}from"@dropins/tools/components.js";import{i as W}from"./company-permissions.js";import{g as X,c as Y,u as Z,i as ee}from"./updateCompanyUser.js";import{useText as G}from"@dropins/tools/i18n.js";import{u as ae}from"./useCompanyRoles.js";import{b as te}from"./CompanyLoaders.js";function re(q){const{mode:I,entityId:h,parentStructureId:T,onSaved:w,onError:N,onSuccess:v}=q,u=G({firstNameRequired:"Company.CompanyStructure.shared.validation.firstNameRequired",lastNameRequired:"Company.CompanyStructure.shared.validation.lastNameRequired",emailRequired:"Company.CompanyStructure.shared.validation.emailRequired",emailInvalid:"Company.CompanyStructure.shared.validation.emailInvalid",jobTitleRequired:"Company.CompanyStructure.shared.validation.jobTitleRequired",workPhoneRequired:"Company.CompanyStructure.shared.validation.workPhoneRequired",selectRole:"Company.CompanyStructure.shared.validation.selectRole",createUserError:"Company.CompanyStructure.messages.createUserError",saveUserError:"Company.CompanyStructure.messages.saveUserError",createUserSuccess:"Company.CompanyStructure.messages.createUserSuccess",updateUserSuccess:"Company.CompanyStructure.messages.updateUserSuccess"}),[r,U]=d({firstName:"",lastName:"",email:"",jobTitle:"",telephone:"",roleId:"",status:"ACTIVE"}),[x,c]=d({}),[m,p]=d({}),[V,R]=d(!1),[y,j]=d(null),[_,E]=d(null),[b,k]=d(""),[l,a]=d(""),[i,B]=d(!1);H(()=>{I!=="edit"||!h||(R(!0),X(h).then(e=>{var f;if(!e)return;const t=e.email||"";U(g=>({...g,firstName:e.firstName||"",lastName:e.lastName||"",email:t,jobTitle:e.jobTitle||"",telephone:e.telephone||"",status:e.status||"ACTIVE"})),a(t),(f=e==null?void 0:e.role)!=null&&f.id&&U(g=>({...g,roleId:e.role.id})),B((e==null?void 0:e.isCompanyAdmin)??!1)}).finally(()=>R(!1)))},[I,h]);const F=e=>/.+@.+\..+/.test(e),M=(e,t)=>e==="firstName"?t!=null&&t.trim()?null:u.firstNameRequired:e==="lastName"?t!=null&&t.trim()?null:u.lastNameRequired:e==="email"?t!=null&&t.trim()?F(t.trim())?null:u.emailInvalid:u.emailRequired:e==="roleId"?t?null:u.selectRole:null,$=(e,t)=>{U(f=>({...f,[e]:t})),e==="email"&&E(null),y&&j(null)};return{values:r,errors:x,touched:m,loading:V,setValue:$,onBlur:async(e,t)=>{t!==void 0&&$(e,t),p(C=>({...C,[e]:!0}));const f=t!==void 0?t:r[e],g=M(e,f);if(c(g?C=>({...C,[e]:g}):C=>{const s={...C};return delete s[e],s}),e==="email"){const s=(t!==void 0?t:r.email||"").trim();if(I==="edit"&&s.toLowerCase()===(l||"").trim().toLowerCase()){E(null);return}if(F(s)&&s!==b){const n=await ee(s);k(s),E(n),n===!1&&c(L=>({...L,email:"A user with this email address is already a member of your company."}))}}},submit:async()=>{const e=["firstName","lastName","email","roleId"],t={};for(const s of e){const n=M(s,r[s]);n&&(t[s]=n)}if(c(t),p({firstName:!0,lastName:!0,email:!0,roleId:!0}),Object.keys(t).length||_===!1){setTimeout(()=>{const s=document.querySelector(".company-user-form__content .dropin-field__hint--error");if(s){const n=s.closest(".dropin-field");if(n){n.scrollIntoView({behavior:"smooth",block:"center"});const L=n.querySelector("input, select");L&&L.focus()}}},100);return}const f=`${r.firstName||""} ${r.lastName||""}`.trim()||r.email||"",C=i||W({id:r.roleId})?"ACTIVE":r.status;try{if(I==="add"){const s=await Y({email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",roleId:r.roleId,status:C,targetId:T??null});if(!s){const n=u.createUserError;N?N(n):j(n);return}w({label:f,structureId:s.structureId,entityId:s.id,type:"user"}),v&&v(u.createUserSuccess)}else h&&(await Z({id:h,email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",status:C,roleId:r.roleId}),w({label:f,entityId:h,type:"user"}),v&&v(u.updateUserSuccess))}catch(s){const n=s instanceof Error?s.message:u.saveUserError;N?N(n):j(n)}},isCompanyAdmin:i,generalError:y}}const fe=D(({mode:q,entityId:I,parentStructureId:h,permissions:T,onSaved:w,onCancel:N,onError:v,onSuccess:u})=>{const r=(T==null?void 0:T.canEditUsers)??!1,{roles:U,isLoading:x}=ae(),{values:c,errors:m,touched:p,loading:V,setValue:R,onBlur:y,submit:j,isCompanyAdmin:_,generalError:E}=re({mode:q,entityId:I,parentStructureId:h,onSaved:w,onError:v?a=>{v(a),N()}:void 0,onSuccess:u}),[b,k]=d(!1),l=G({addUser:"Company.CompanyStructure.shared.titles.addUser",editUser:"Company.CompanyStructure.shared.titles.editUser",jobTitle:"Company.CompanyStructure.shared.fields.jobTitle",userRole:"Company.CompanyStructure.shared.fields.userRole",firstName:"Company.CompanyStructure.shared.fields.firstName",lastName:"Company.CompanyStructure.shared.fields.lastName",email:"Company.CompanyStructure.shared.fields.email",workPhoneNumber:"Company.CompanyStructure.shared.fields.workPhoneNumber",status:"Company.CompanyStructure.shared.fields.status",selectRole:"Company.CompanyStructure.shared.options.selectRole",active:"Company.CompanyStructure.shared.options.active",inactive:"Company.CompanyStructure.shared.options.inactive",companyAdministrator:"Company.CompanyStructure.shared.options.companyAdministrator",save:"Company.CompanyStructure.shared.buttons.save",cancel:"Company.CompanyStructure.shared.buttons.cancel"});return P("div",{children:[o("h3",{className:"acm-structure-panel__title",children:q==="add"?l.addUser:l.editUser}),P(J,{variant:"secondary",className:`company-user-form__card ${b?"is-working":""}`,children:[!v&&E?o(K,{className:"company-user-form__notification",type:"error",variant:"secondary",heading:E}):null,b?o("div",{className:"company-user-form__overlay","aria-live":"polite",children:o(Q,{size:"small"})}):null,V||x?o(te,{}):P("div",{className:"company-user-form__content",children:[o(S,{label:l.jobTitle,className:"acm-structure-panel__field",error:p.jobTitle&&m.jobTitle?m.jobTitle:void 0,children:o(A,{name:"job_title",type:"text",value:c.jobTitle||"",onBlur:a=>{const i=a.target;y("jobTitle",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.userRole,required:!0,className:"acm-structure-panel__field",error:!_&&p.roleId&&m.roleId?m.roleId:void 0,disabled:_,children:_?o(z,{name:"role",value:"MA==",options:[{value:"MA==",text:l.companyAdministrator}]}):o(z,{name:"role",value:c.roleId||"placeholder",onChange:a=>{var i,B;return R("roleId",String(((i=a==null?void 0:a.target)==null?void 0:i.value)==="placeholder"?"":((B=a==null?void 0:a.target)==null?void 0:B.value)??""))},onBlur:a=>{const i=a.target;y("roleId",i.value==="placeholder"?"":i.value)},options:[{value:"placeholder",text:l.selectRole,disabled:!0},...U.map(a=>({value:a.id,text:a.name}))]})}),o(S,{label:l.firstName,required:!0,className:"acm-structure-panel__field",error:p.firstName&&m.firstName?m.firstName:void 0,children:o(A,{name:"first_name",type:"text",value:c.firstName,onBlur:a=>{const i=a.target;y("firstName",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.lastName,required:!0,className:"acm-structure-panel__field",error:p.lastName&&m.lastName?m.lastName:void 0,children:o(A,{name:"last_name",type:"text",value:c.lastName,onBlur:a=>{const i=a.target;y("lastName",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.email,required:!0,className:"acm-structure-panel__field",error:p.email&&m.email?m.email:void 0,children:o(A,{name:"email",type:"email",value:c.email,onBlur:a=>{const i=a.target;y("email",i.value)},placeholder:"jdoe@example.com",variant:"primary",size:"medium"})}),o(S,{label:l.workPhoneNumber,className:"acm-structure-panel__field",error:p.telephone&&m.telephone?m.telephone:void 0,children:o(A,{name:"telephone",type:"text",value:c.telephone||"",onBlur:a=>{const i=a.target;y("telephone",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.status,className:"acm-structure-panel__field",disabled:_||!r,children:o(z,{name:"status",value:c.status,onChange:a=>{var i;return R("status",String(((i=a==null?void 0:a.target)==null?void 0:i.value)??"ACTIVE"))},options:[{value:"ACTIVE",text:l.active},{value:"INACTIVE",text:l.inactive}]})})]})]}),V||x?null:P("div",{className:"acm-structure-modal__actions",children:[o(O,{type:"button",variant:"primary",disabled:b||!r,onClick:async()=>{if(!b){k(!0);try{await j()}finally{k(!1)}}},children:l.save}),o(O,{type:"button",variant:"secondary",disabled:b,onClick:N,children:l.cancel})]})]})});export{fe as C};
4
4
  //# sourceMappingURL=CompanyUserForm.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as e,jsxs as L,Fragment as M}from"@dropins/tools/preact-jsx-runtime.js";import{useState as h,useRef as T,useMemo as k,useCallback as D,useEffect as R}from"@dropins/tools/preact-hooks.js";/* empty css */import{Card as I,InLineAlert as A,Price as B,Table as U,Button as _,Picker as Z}from"@dropins/tools/components.js";import{events as G}from"@dropins/tools/event-bus.js";import{g as $,a as q}from"../chunks/getCompanyCreditHistory.js";import{e as J,f as K}from"../chunks/CompanyLoaders.js";import{useText as j}from"@dropins/tools/i18n.js";import{classes as Q}from"@dropins/tools/lib.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";const V=20,F=1,W=({initialParams:l={},translations:s})=>{const[c,a]=h([]),[m,p]=h(!1),[t,d]=h(l.currentPage||F),[u,r]=h(l.pageSize||V),[S,C]=h(0),[g,H]=h(1),[N,v]=h(""),b=T(s);b.current=s;const x=T(l),z=k(()=>({...x.current,currentPage:t,pageSize:u}),[t,u]),f=D(async()=>{var o;p(!0);try{const y=await $(z);y?(a(y.items),C(y.totalCount||y.items.length),H(((o=y.pageInfo)==null?void 0:o.totalPages)||1),v(b.current.ariaDataLoaded.replace("{count}",y.items.length.toString()))):(a([]),C(0),H(1),v(b.current.ariaDataError))}catch(y){console.error("Failed to load company credit history:",y),a([]),C(0),H(1),v(b.current.ariaDataError)}finally{p(!1)}},[z]);R(()=>{f()},[f]);const E=D(o=>{let y;if(typeof o=="string")y=o;else if("target"in o&&o.target&&"value"in o.target)y=o.target.value;else return;const w=parseInt(y,10);isNaN(w)||(r(w),d(F))},[]),n=D(()=>{t>1&&d(t-1)},[t]),i=D(()=>{t<g&&d(t+1)},[t,g]),P=D(o=>{o>=1&&o<=g&&o!==t&&d(o)},[t,g]),O=D(async()=>{await f()},[f]);return{items:c,currentPage:t,pageSize:u,totalItems:S,totalPages:g,loading:m,announcement:N,handlePageSizeChange:E,handlePreviousPage:n,handleNextPage:i,handlePageChange:P,refreshCreditHistory:O}},X=({className:l,...s})=>{var g,H,N,v,b,x,z,f,E;const c=j({creditAvailable:"Company.CompanyCredit.creditAvailable",creditLimit:"Company.CompanyCredit.creditLimit",outstandingBalance:"Company.CompanyCredit.outstandingBalance",noData:"Company.shared.messages.noData",loading:"Company.shared.messages.loading",loadError:"Company.CompanyCredit.messages.loadError"}),[a,m]=h(null),[p,t]=h(!1),[d,u]=h(null),r=T(!1),S=T(!1),C=D(async()=>{if(!r.current){r.current=!0,t(!0),u(null);try{const n=await q();m(n)}catch(n){console.error("Failed to load company credit:",n),u(c.loadError),m(null)}finally{t(!1),r.current=!1}}},[c.loadError]);return R(()=>{S.current||(S.current=!0,C())},[C]),R(()=>{const n=()=>{m(null),S.current=!1,C()},i=G.on("companyContext/changed",n,{eager:!0});return()=>{var P;(P=i==null?void 0:i.off)==null||P.call(i)}},[C]),p?e("div",{...s,className:l,children:e(I,{variant:"primary",className:"company-management-company-credit-loading",children:e(J,{testId:"companyCreditLoader"})})}):d?e("div",{...s,className:l,children:e(A,{heading:d,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:d})})}):e("div",{...s,className:l,children:a===null||!a.credit?e(A,{heading:c.noData,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:c.noData})}):L("div",{className:"company-management-company-credit-grid",children:[e(I,{variant:"secondary",className:"company-management-company-credit-outstanding-balance",children:L("p",{children:[c.outstandingBalance,e("br",{}),e(B,{size:"large",amount:((g=a.credit.outstanding_balance)==null?void 0:g.value)??0,currency:((H=a.credit.outstanding_balance)==null?void 0:H.currency)??"",className:(((N=a.credit.outstanding_balance)==null?void 0:N.value)??0)<0?"company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-available-credit",children:L("p",{children:[c.creditAvailable,e("br",{}),e(B,{size:"large",amount:((v=a.credit.available_credit)==null?void 0:v.value)??0,currency:((b=a.credit.available_credit)==null?void 0:b.currency)??"",className:(((x=a.credit.available_credit)==null?void 0:x.value)??0)<0?"company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-credit-limit",children:L("p",{children:[c.creditLimit,e("br",{}),e(B,{size:"large",amount:((z=a.credit.credit_limit)==null?void 0:z.value)??0,currency:((f=a.credit.credit_limit)==null?void 0:f.currency)??"",className:(((E=a.credit.credit_limit)==null?void 0:E.value)??0)<0?".company-management-company-credit-grid .company-management-company-credit-negative":void 0})]})})]})})},Y=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],aa=l=>l.split("_").map(s=>s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()).join(" "),ea=({className:l,initialParams:s={},...c})=>{const a=j({loading:"Company.shared.messages.loading",noData:"Company.shared.messages.noData",error:"Company.shared.messages.error",dateColumn:"Company.CompanyCreditHistory.columns.date",operationColumn:"Company.CompanyCreditHistory.columns.operation",amountColumn:"Company.CompanyCreditHistory.columns.amount",outstandingBalanceColumn:"Company.CompanyCreditHistory.columns.outstandingBalance",availableCreditColumn:"Company.CompanyCreditHistory.columns.availableCredit",creditLimitColumn:"Company.CompanyCreditHistory.columns.creditLimit",customReferenceColumn:"Company.CompanyCreditHistory.columns.customReference",updatedByColumn:"Company.CompanyCreditHistory.columns.updatedBy",itemsRangeText:"Company.CompanyCreditHistory.pagination.itemsRange",itemsPerPageLabel:"Company.CompanyCreditHistory.pagination.itemsPerPage",showLabel:"Company.CompanyCreditHistory.pagination.show",perPageLabel:"Company.CompanyCreditHistory.pagination.perPage",ariaDataLoaded:"Company.CompanyCreditHistory.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyCreditHistory.ariaLabels.dataError",ariaLoadingHistory:"Company.CompanyCreditHistory.ariaLabels.loadingHistory",ariaHistoryTable:"Company.CompanyCreditHistory.ariaLabels.historyTable",ariaPaginationNav:"Company.CompanyCreditHistory.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyCreditHistory.ariaLabels.pageSizeSelector",ariaPreviousPage:"Company.CompanyCreditHistory.ariaLabels.previousPage",ariaNextPage:"Company.CompanyCreditHistory.ariaLabels.nextPage",ariaGoToPage:"Company.CompanyCreditHistory.ariaLabels.goToPage",ariaCurrentPage:"Company.CompanyCreditHistory.ariaLabels.currentPage",ariaShowingHistory:"Company.CompanyCreditHistory.ariaLabels.showingHistory",ariaPageNavigation:"Company.CompanyCreditHistory.ariaLabels.pageNavigation"}),{items:m,loading:p,currentPage:t,pageSize:d,totalItems:u,totalPages:r,announcement:S,handlePageSizeChange:C,handlePreviousPage:g,handleNextPage:H,handlePageChange:N,refreshCreditHistory:v}=W({initialParams:s,translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}}),b=u===0?0:(t-1)*d+1,x=Math.min(t*d,u),z=()=>{if(r<=5)return Array.from({length:r},(i,P)=>P+1);const n=[];return t<=3?n.push(1,2,3,4,"...",r):t>=r-2?n.push(1,"...",r-3,r-2,r-1,r):n.push(1,"...",t-1,t,t+1,"...",r),n};R(()=>{const n=()=>{v()},i=G.on("companyContext/changed",n,{eager:!0});return()=>{var P;(P=i==null?void 0:i.off)==null||P.call(i)}},[v]);const f=k(()=>[{key:"date",label:a.dateColumn},{key:"operation",label:a.operationColumn},{key:"amount",label:a.amountColumn},{key:"outstandingBalance",label:a.outstandingBalanceColumn},{key:"availableCredit",label:a.availableCreditColumn},{key:"creditLimit",label:a.creditLimitColumn},{key:"customReference",label:a.customReferenceColumn},{key:"updatedBy",label:a.updatedByColumn}],[a.dateColumn,a.operationColumn,a.amountColumn,a.outstandingBalanceColumn,a.availableCreditColumn,a.creditLimitColumn,a.customReferenceColumn,a.updatedByColumn]),E=k(()=>m.map(n=>({date:new Date(n.date).toLocaleDateString(),operation:aa(n.type),amount:n.amount.value===0?"":e("span",{children:e(B,{amount:n.amount.value,currency:n.amount.currency,size:"small",className:"company-management-price-normal"})}),outstandingBalance:e(B,{amount:n.balance.outstandingBalance.value,currency:n.balance.outstandingBalance.currency,size:"small",className:"company-management-price-normal"}),availableCredit:e(B,{amount:n.balance.availableCredit.value,currency:n.balance.availableCredit.currency,size:"small",className:"company-management-price-normal"}),creditLimit:e(B,{amount:n.balance.creditLimit.value,currency:n.balance.creditLimit.currency,size:"small",className:"company-management-price-normal"}),customReference:n.customReferenceNumber||"",updatedBy:n.updatedBy.name})),[m]);return L("section",{...c,className:Q(["company-management-company-credit-history-display",l]),children:[e("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:S}),e("div",{"aria-busy":p,children:p?e("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:e(K,{testId:"companyCreditHistoryLoader"})}):e(M,{children:m.length?e(U,{className:"company-management-company-credit-history-table",columns:f,rowData:E,mobileLayout:"stacked","aria-label":a.ariaHistoryTable,summary:a.ariaShowingHistory.replace("{count}",m.length.toString())}):e("div",{className:"company-management-company-credit-history-empty",children:e("p",{children:a.noData})})})}),!p&&m.length>0&&L("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[e("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsRangeText.replace("{start}",b.toString()).replace("{end}",x.toString()).replace("{total}",u.toString())}),r>1&&L("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[e(_,{variant:"secondary",onClick:g,disabled:t===1||p,"aria-label":a.ariaPreviousPage,className:"paginationButton",children:"<"}),z().map((n,i)=>n==="..."?e("span",{className:"paginationEllipsis",children:"..."},`ellipsis-${i}`):e(_,{variant:t===n?"primary":"secondary",onClick:()=>N==null?void 0:N(n),disabled:p,"aria-label":t===n?a.ariaCurrentPage.replace("{page}",String(n)):a.ariaGoToPage.replace("{page}",String(n)),"aria-current":t===n?"page":void 0,className:"paginationButton",children:n},n)),e(_,{variant:"secondary",onClick:H,disabled:t===r||p,"aria-label":a.ariaNextPage,className:"paginationButton",children:">"})]}),L("div",{className:"pageSizeSelector",children:[e("label",{htmlFor:"page-size-select",id:"page-size-label",children:e("span",{children:a.showLabel})}),e(Z,{id:"page-size-select",name:"pageSize",value:d.toString(),options:Y,handleSelect:C,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),e("span",{id:"page-size-description",children:a.perPageLabel})]})]})]})},pa=({creditHistoryParams:l={},showCreditHistory:s=!0,className:c,children:a,...m})=>L("section",{...m,className:c,children:[e(X,{}),s&&e(ea,{initialParams:l,style:{marginTop:"24px"}}),a]});export{pa as CompanyCredit,pa as default};
3
+ import{jsx as e,jsxs as L,Fragment as M}from"@dropins/tools/preact-jsx-runtime.js";import{useState as h,useRef as T,useMemo as k,useCallback as D,useEffect as R}from"@dropins/tools/preact-hooks.js";/* empty css */import{Card as I,InLineAlert as A,Price as B,Table as U,Button as _,Picker as Z}from"@dropins/tools/components.js";import{events as G}from"@dropins/tools/event-bus.js";import{g as $,a as q}from"../chunks/getCompanyCreditHistory.js";import{d as J,e as K}from"../chunks/CompanyLoaders.js";import{useText as j}from"@dropins/tools/i18n.js";import{classes as Q}from"@dropins/tools/lib.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";const V=20,F=1,W=({initialParams:l={},translations:s})=>{const[c,a]=h([]),[m,p]=h(!1),[t,d]=h(l.currentPage||F),[u,r]=h(l.pageSize||V),[S,C]=h(0),[g,H]=h(1),[N,v]=h(""),b=T(s);b.current=s;const x=T(l),z=k(()=>({...x.current,currentPage:t,pageSize:u}),[t,u]),f=D(async()=>{var o;p(!0);try{const y=await $(z);y?(a(y.items),C(y.totalCount||y.items.length),H(((o=y.pageInfo)==null?void 0:o.totalPages)||1),v(b.current.ariaDataLoaded.replace("{count}",y.items.length.toString()))):(a([]),C(0),H(1),v(b.current.ariaDataError))}catch(y){console.error("Failed to load company credit history:",y),a([]),C(0),H(1),v(b.current.ariaDataError)}finally{p(!1)}},[z]);R(()=>{f()},[f]);const E=D(o=>{let y;if(typeof o=="string")y=o;else if("target"in o&&o.target&&"value"in o.target)y=o.target.value;else return;const w=parseInt(y,10);isNaN(w)||(r(w),d(F))},[]),n=D(()=>{t>1&&d(t-1)},[t]),i=D(()=>{t<g&&d(t+1)},[t,g]),P=D(o=>{o>=1&&o<=g&&o!==t&&d(o)},[t,g]),O=D(async()=>{await f()},[f]);return{items:c,currentPage:t,pageSize:u,totalItems:S,totalPages:g,loading:m,announcement:N,handlePageSizeChange:E,handlePreviousPage:n,handleNextPage:i,handlePageChange:P,refreshCreditHistory:O}},X=({className:l,...s})=>{var g,H,N,v,b,x,z,f,E;const c=j({creditAvailable:"Company.CompanyCredit.creditAvailable",creditLimit:"Company.CompanyCredit.creditLimit",outstandingBalance:"Company.CompanyCredit.outstandingBalance",noData:"Company.shared.messages.noData",loading:"Company.shared.messages.loading",loadError:"Company.CompanyCredit.messages.loadError"}),[a,m]=h(null),[p,t]=h(!1),[d,u]=h(null),r=T(!1),S=T(!1),C=D(async()=>{if(!r.current){r.current=!0,t(!0),u(null);try{const n=await q();m(n)}catch(n){console.error("Failed to load company credit:",n),u(c.loadError),m(null)}finally{t(!1),r.current=!1}}},[c.loadError]);return R(()=>{S.current||(S.current=!0,C())},[C]),R(()=>{const n=()=>{m(null),S.current=!1,C()},i=G.on("companyContext/changed",n,{eager:!0});return()=>{var P;(P=i==null?void 0:i.off)==null||P.call(i)}},[C]),p?e("div",{...s,className:l,children:e(I,{variant:"primary",className:"company-management-company-credit-loading",children:e(J,{testId:"companyCreditLoader"})})}):d?e("div",{...s,className:l,children:e(A,{heading:d,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:d})})}):e("div",{...s,className:l,children:a===null||!a.credit?e(A,{heading:c.noData,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:c.noData})}):L("div",{className:"company-management-company-credit-grid",children:[e(I,{variant:"secondary",className:"company-management-company-credit-outstanding-balance",children:L("p",{children:[c.outstandingBalance,e("br",{}),e(B,{size:"large",amount:((g=a.credit.outstanding_balance)==null?void 0:g.value)??0,currency:((H=a.credit.outstanding_balance)==null?void 0:H.currency)??"",className:(((N=a.credit.outstanding_balance)==null?void 0:N.value)??0)<0?"company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-available-credit",children:L("p",{children:[c.creditAvailable,e("br",{}),e(B,{size:"large",amount:((v=a.credit.available_credit)==null?void 0:v.value)??0,currency:((b=a.credit.available_credit)==null?void 0:b.currency)??"",className:(((x=a.credit.available_credit)==null?void 0:x.value)??0)<0?"company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-credit-limit",children:L("p",{children:[c.creditLimit,e("br",{}),e(B,{size:"large",amount:((z=a.credit.credit_limit)==null?void 0:z.value)??0,currency:((f=a.credit.credit_limit)==null?void 0:f.currency)??"",className:(((E=a.credit.credit_limit)==null?void 0:E.value)??0)<0?".company-management-company-credit-grid .company-management-company-credit-negative":void 0})]})})]})})},Y=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],aa=l=>l.split("_").map(s=>s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()).join(" "),ea=({className:l,initialParams:s={},...c})=>{const a=j({loading:"Company.shared.messages.loading",noData:"Company.shared.messages.noData",error:"Company.shared.messages.error",dateColumn:"Company.CompanyCreditHistory.columns.date",operationColumn:"Company.CompanyCreditHistory.columns.operation",amountColumn:"Company.CompanyCreditHistory.columns.amount",outstandingBalanceColumn:"Company.CompanyCreditHistory.columns.outstandingBalance",availableCreditColumn:"Company.CompanyCreditHistory.columns.availableCredit",creditLimitColumn:"Company.CompanyCreditHistory.columns.creditLimit",customReferenceColumn:"Company.CompanyCreditHistory.columns.customReference",updatedByColumn:"Company.CompanyCreditHistory.columns.updatedBy",itemsRangeText:"Company.CompanyCreditHistory.pagination.itemsRange",itemsPerPageLabel:"Company.CompanyCreditHistory.pagination.itemsPerPage",showLabel:"Company.CompanyCreditHistory.pagination.show",perPageLabel:"Company.CompanyCreditHistory.pagination.perPage",ariaDataLoaded:"Company.CompanyCreditHistory.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyCreditHistory.ariaLabels.dataError",ariaLoadingHistory:"Company.CompanyCreditHistory.ariaLabels.loadingHistory",ariaHistoryTable:"Company.CompanyCreditHistory.ariaLabels.historyTable",ariaPaginationNav:"Company.CompanyCreditHistory.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyCreditHistory.ariaLabels.pageSizeSelector",ariaPreviousPage:"Company.CompanyCreditHistory.ariaLabels.previousPage",ariaNextPage:"Company.CompanyCreditHistory.ariaLabels.nextPage",ariaGoToPage:"Company.CompanyCreditHistory.ariaLabels.goToPage",ariaCurrentPage:"Company.CompanyCreditHistory.ariaLabels.currentPage",ariaShowingHistory:"Company.CompanyCreditHistory.ariaLabels.showingHistory",ariaPageNavigation:"Company.CompanyCreditHistory.ariaLabels.pageNavigation"}),{items:m,loading:p,currentPage:t,pageSize:d,totalItems:u,totalPages:r,announcement:S,handlePageSizeChange:C,handlePreviousPage:g,handleNextPage:H,handlePageChange:N,refreshCreditHistory:v}=W({initialParams:s,translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}}),b=u===0?0:(t-1)*d+1,x=Math.min(t*d,u),z=()=>{if(r<=5)return Array.from({length:r},(i,P)=>P+1);const n=[];return t<=3?n.push(1,2,3,4,"...",r):t>=r-2?n.push(1,"...",r-3,r-2,r-1,r):n.push(1,"...",t-1,t,t+1,"...",r),n};R(()=>{const n=()=>{v()},i=G.on("companyContext/changed",n,{eager:!0});return()=>{var P;(P=i==null?void 0:i.off)==null||P.call(i)}},[v]);const f=k(()=>[{key:"date",label:a.dateColumn},{key:"operation",label:a.operationColumn},{key:"amount",label:a.amountColumn},{key:"outstandingBalance",label:a.outstandingBalanceColumn},{key:"availableCredit",label:a.availableCreditColumn},{key:"creditLimit",label:a.creditLimitColumn},{key:"customReference",label:a.customReferenceColumn},{key:"updatedBy",label:a.updatedByColumn}],[a.dateColumn,a.operationColumn,a.amountColumn,a.outstandingBalanceColumn,a.availableCreditColumn,a.creditLimitColumn,a.customReferenceColumn,a.updatedByColumn]),E=k(()=>m.map(n=>({date:new Date(n.date).toLocaleDateString(),operation:aa(n.type),amount:n.amount.value===0?"":e("span",{children:e(B,{amount:n.amount.value,currency:n.amount.currency,size:"small",className:"company-management-price-normal"})}),outstandingBalance:e(B,{amount:n.balance.outstandingBalance.value,currency:n.balance.outstandingBalance.currency,size:"small",className:"company-management-price-normal"}),availableCredit:e(B,{amount:n.balance.availableCredit.value,currency:n.balance.availableCredit.currency,size:"small",className:"company-management-price-normal"}),creditLimit:e(B,{amount:n.balance.creditLimit.value,currency:n.balance.creditLimit.currency,size:"small",className:"company-management-price-normal"}),customReference:n.customReferenceNumber||"",updatedBy:n.updatedBy.name})),[m]);return L("section",{...c,className:Q(["company-management-company-credit-history-display",l]),children:[e("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:S}),e("div",{"aria-busy":p,children:p?e("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:e(K,{testId:"companyCreditHistoryLoader"})}):e(M,{children:m.length?e(U,{className:"company-management-company-credit-history-table",columns:f,rowData:E,mobileLayout:"stacked","aria-label":a.ariaHistoryTable,summary:a.ariaShowingHistory.replace("{count}",m.length.toString())}):e("div",{className:"company-management-company-credit-history-empty",children:e("p",{children:a.noData})})})}),!p&&m.length>0&&L("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[e("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsRangeText.replace("{start}",b.toString()).replace("{end}",x.toString()).replace("{total}",u.toString())}),r>1&&L("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[e(_,{variant:"secondary",onClick:g,disabled:t===1||p,"aria-label":a.ariaPreviousPage,className:"paginationButton",children:"<"}),z().map((n,i)=>n==="..."?e("span",{className:"paginationEllipsis",children:"..."},`ellipsis-${i}`):e(_,{variant:t===n?"primary":"secondary",onClick:()=>N==null?void 0:N(n),disabled:p,"aria-label":t===n?a.ariaCurrentPage.replace("{page}",String(n)):a.ariaGoToPage.replace("{page}",String(n)),"aria-current":t===n?"page":void 0,className:"paginationButton",children:n},n)),e(_,{variant:"secondary",onClick:H,disabled:t===r||p,"aria-label":a.ariaNextPage,className:"paginationButton",children:">"})]}),L("div",{className:"pageSizeSelector",children:[e("label",{htmlFor:"page-size-select",id:"page-size-label",children:e("span",{children:a.showLabel})}),e(Z,{id:"page-size-select",name:"pageSize",value:d.toString(),options:Y,handleSelect:C,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),e("span",{id:"page-size-description",children:a.perPageLabel})]})]})]})},pa=({creditHistoryParams:l={},showCreditHistory:s=!0,className:c,children:a,...m})=>L("section",{...m,className:c,children:[e(X,{}),s&&e(ea,{initialParams:l,style:{marginTop:"24px"}}),a]});export{pa as CompanyCredit,pa as default};
4
4
  //# sourceMappingURL=CompanyCredit.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as t,jsxs as h,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{classes as me,Slot as ge}from"@dropins/tools/lib.js";import{Card as Q,Button as X,Field as R,Input as V,Picker as ce,Header as ue,InLineAlert as he,ProgressSpinner as fe}from"@dropins/tools/components.js";import{useState as L,useRef as J,useEffect as H,useCallback as U,useMemo as G}from"@dropins/tools/preact-hooks.js";import{events as ye}from"@dropins/tools/event-bus.js";import{p as ve,E as Ce}from"../chunks/acdl.js";import{u as Ae}from"../chunks/useCompanyContextListener.js";import{g as Ne,u as Ie}from"../chunks/updateCompany.js";import{g as pe,v as _e}from"../chunks/validateCompanyEmail.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ee}from"../chunks/useInLineAlert.js";import{d as be}from"../chunks/CompanyLoaders.js";import"../chunks/fetchUserPermissions.js";import"../chunks/company-permissions.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact-compat.js";const xe=({company:a,slots:e,showEditForm:u,handleShowEditForm:y})=>{const o=j({editButton:"Company.shared.buttons.edit",noDataMessage:"Company.CompanyProfile.companyProfileCard.noDataMessage",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",legalAddress:"Company.shared.fields.legalAddress",contacts:"Company.CompanyProfile.companyProfileCard.contacts",companyAdministrator:"Company.CompanyProfile.companyProfileCard.companyAdministrator",salesRepresentative:"Company.CompanyProfile.companyProfileCard.salesRepresentative",paymentInformation:"Company.CompanyProfile.companyProfileCard.paymentInformation",shippingInformation:"Company.CompanyProfile.companyProfileCard.shippingInformation",availablePaymentMethods:"Company.CompanyProfile.companyProfileCard.availablePaymentMethods",availableShippingMethods:"Company.CompanyProfile.companyProfileCard.availableShippingMethods",noPaymentMethods:"Company.CompanyProfile.companyProfileCard.noPaymentMethods",noShippingMethods:"Company.CompanyProfile.companyProfileCard.noShippingMethods"});if(!a)return t(Q,{variant:"secondary",className:"account-company-profile-card",children:t("div",{className:"account-company-profile-card__wrapper",children:t("div",{className:"account-company-profile-card__content",children:t("div",{className:"account-company-profile-card__no-data",children:t("p",{children:o.noDataMessage})})})})});const i=a.permissionsFlags||{canViewAccount:!0,canViewAddress:!0,canViewContacts:!0,canViewPaymentInformation:!0,canViewShippingInformation:!0},r=[i.canViewAccount?{name:"name",label:o.companyName,value:a.name||"",legalName:a.legalName||""}:null,i.canViewAccount?{name:"email",label:o.email,value:a.email||""}:null,i.canViewAccount?{name:"vatTaxId",label:o.vatTaxId,value:a.vatTaxId||""}:null,i.canViewAccount?{name:"resellerId",label:o.resellerId,value:a.resellerId||""}:null].filter(Boolean);return t(Q,{variant:"secondary",className:me(["account-company-profile-card",["account-company-profile-card-short",u]]),children:h("div",{className:"account-company-profile-card__wrapper",children:[t("div",{className:"account-company-profile-card__actions",children:(a.canEditAccount||a.canEditAddress)&&t(X,{type:"button",variant:"tertiary",onClick:y,children:o.editButton})}),t("div",{className:"account-company-profile-card__content",children:(()=>{var v,p;const N=h(K,{children:[r.map((l,d)=>{if(!l.value)return null;let g;return l.name==="name"&&l.legalName?g=`${l.label}: ${l.value} (${l.legalName})`:g=l.label?`${l.label}: ${l.value}`:l.value,t("p",{"data-testid":`${l.name}_${d}`,children:g},`${l.name}_${d}`)}),i.canViewAddress&&a.legalAddress&&h("div",{className:"company-legal-address",children:[t("p",{children:h("strong",{children:[o.legalAddress,":"]})}),(v=a.legalAddress.street)==null?void 0:v.map((l,d)=>t("p",{children:l},d)),h("p",{children:[a.legalAddress.city,", ",(p=a.legalAddress.region)==null?void 0:p.region," ",a.legalAddress.postcode]}),t("p",{children:a.legalAddress.countryCode}),a.legalAddress.telephone&&h("p",{children:["Phone: ",a.legalAddress.telephone]})]}),i.canViewContacts&&(a.companyAdmin||a.salesRepresentative)&&h("div",{className:"company-contacts",children:[t("p",{children:h("strong",{children:[o.contacts,":"]})}),a.companyAdmin&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.companyAdministrator,":"]})}),h("p",{children:[a.companyAdmin.firstname," ",a.companyAdmin.lastname]}),a.companyAdmin.jobTitle&&t("p",{children:a.companyAdmin.jobTitle}),t("p",{children:a.companyAdmin.email})]}),a.salesRepresentative&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.salesRepresentative,":"]})}),h("p",{children:[a.salesRepresentative.firstname," ",a.salesRepresentative.lastname]}),t("p",{children:a.salesRepresentative.email})]})]}),i.canViewPaymentInformation&&h("div",{className:"company-payment-methods",children:[t("p",{children:h("strong",{children:[o.paymentInformation,":"]})}),a.availablePaymentMethods&&a.availablePaymentMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availablePaymentMethods,":"]})}),t("ul",{className:"payment-methods-list",children:a.availablePaymentMethods.map((l,d)=>t("li",{children:l.title},`payment_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noPaymentMethods})})]}),i.canViewShippingInformation&&h("div",{className:"company-shipping-methods",children:[t("p",{children:h("strong",{children:[o.shippingInformation,":"]})}),a.availableShippingMethods&&a.availableShippingMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availableShippingMethods,":"]})}),t("ul",{className:"shipping-methods-list",children:a.availableShippingMethods.map((l,d)=>t("li",{children:l.title},`shipping_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noShippingMethods})})]})]});return e!=null&&e.CompanyData?t(ge,{name:"CompanyData",slot:e.CompanyData,context:{companyData:r,Default:N}}):N})()})]})})},Te=({handleSetInLineAlert:a,editFormRef:e})=>{const u=j({companySuccess:"Company.CompanyProfile.editCompanyProfile.companySuccess",companyError:"Company.CompanyProfile.editCompanyProfile.companyError",loadError:"Company.CompanyProfile.messages.loadError",updateError:"Company.CompanyProfile.messages.updateError",noDataToUpdate:"Company.CompanyProfile.messages.noDataToUpdate"}),{companySuccess:y,companyError:o,loadError:i,updateError:r,noDataToUpdate:N}=u,[v,p]=L(null),[l,d]=L(!0),[g,C]=L(!1),[_,$]=L(!1),[m,k]=L([]),[D,A]=L({}),z=J(a),w=J(!1),P=J(!1);H(()=>{z.current=a},[a]);const O=U(f=>{A(f)},[]),F=U((f,B)=>{a&&(f==="success"?a({type:"success",text:B??y}):f==="error"?a({type:"error",text:B??o}):a(),C(!1))},[a,y,o]),S=U(async()=>{if(w.current)return null;w.current=!0,d(!0);try{const f=await Ne();return f&&p(f),d(!1),f}catch(f){return console.error("Failed to load company:",f),d(!1),z.current&&z.current({type:"error",text:i}),null}finally{w.current=!1}},[i]);H(()=>{P.current||(P.current=!0,S())},[S]),Ae(U(()=>{d(!0),$(!1),A({}),S()},[S])),H(()=>{pe().then(f=>{k(f.availableCountries)}).catch(f=>{console.error("Failed to load countries:",f)})},[]);const W=U(()=>{$(!0),F("success",""),A({})},[F]);H(()=>{_&&(e!=null&&e.current)&&setTimeout(()=>{var f;(f=e.current)==null||f.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)},[_,e]);const q=U(f=>{f==null||f(),$(!1),A({})},[]),Y=U(async f=>{try{if(C(!0),!f){F("error",N);return}const B=await Ie(f);p(B),$(!1),A({}),F("success"),ve(Ce.EDIT_COMPANY_EVENT,{...f,companyId:v==null?void 0:v.id}),ye.emit("company/updated",{company:B})}catch(B){console.error("Failed to update company:",B),F("error",B.message||r)}finally{C(!1)}},[v,F,r,N]);return{company:v,countries:m,loading:l,submitLoading:g,showEditForm:_,inputChange:D,handleShowEditForm:W,handleHideEditForm:q,handleUpdateCompany:Y,handleInputChange:O,renderAlertMessage:F,saving:g}},$e=a=>{const[e,u]=L(null),[y,o]=L(!0);H(()=>{let p=!0;return pe().then(({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g})=>{p&&(u({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g}),o(!1))}).catch(()=>{p&&o(!1)}),()=>{p=!1}},[]);const i=G(()=>(e==null?void 0:e.availableCountries)||[],[e]),r=G(()=>{if(!a||!e)return[];const p=e.availableCountries.find(l=>l.value===a);return!(p!=null&&p.availableRegions)||p.availableRegions.length===0?[]:p.availableRegions.map(l=>({text:l.name,value:`${l.code},${l.id}`}))},[a,e]),N=G(()=>!a||!e?!1:e.countriesWithRequiredRegion.includes(a),[a,e]),v=G(()=>r.length>0,[r]);return{countryOptions:i,regionOptions:r,isRegionRequired:N,hasRegionOptions:v,loadingCountries:y}},we=({loading:a,value:e,errors:u,touched:y,onBlur:o,namePrefix:i="",fieldPathPrefix:r=""})=>{const N=j({companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId"}),v=i?`${i}_`:"",p=g=>r?`${r}.${g}`:g,l=g=>C=>{const _=C.target;o(p(g),_.value)},d={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__group",children:[t(R,{label:N.companyName,required:!0,className:"account-edit-company-profile-form__field",error:y.name&&u.name?u.name:void 0,children:t(V,{name:`${v}name`,type:"text",value:e.name,onBlur:l("name"),...d,maxLength:40})}),t(R,{label:N.legalName,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}legalName`,type:"text",value:e.legalName,onBlur:l("legalName"),...d,maxLength:80})}),t(R,{label:N.email,required:!0,className:"account-edit-company-profile-form__field",error:y.email&&u.email?u.email:void 0,children:t(V,{name:`${v}email`,type:"email",value:e.email,onBlur:l("email"),...d})}),t(R,{label:N.vatTaxId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}vatTaxId`,type:"text",value:e.vatTaxId,onBlur:l("vatTaxId"),...d,maxLength:40})}),t(R,{label:N.resellerId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}resellerId`,type:"text",value:e.resellerId,onBlur:l("resellerId"),...d,maxLength:40})})]})},Pe=({loading:a,loadingCountries:e,value:u,errors:y,touched:o,onChange:i,onBlur:r,countryOptions:N,regionOptions:v,isRegionRequired:p,hasRegionOptions:l,namePrefix:d="legalAddress",fieldPathPrefix:g="legalAddress",requiredConfig:C})=>{var z;const _=j({legalAddress:"Company.shared.fields.legalAddress",streetAddress:"Company.shared.fields.streetAddress",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",zipPostalCode:"Company.shared.fields.zipPostalCode",phoneNumber:"Company.shared.fields.phoneNumber"}),$={street:`${d}_street`,street2:`${d}_street2`,city:`${d}_city`,countryCode:`${d}_countryCode`,region:`${d}_region`,postcode:`${d}_postcode`,telephone:`${d}_telephone`},m={street:`${g}.street`,street2:`${g}.street2`,city:`${g}.city`,countryCode:`${g}.countryCode`,region:`${g}.region`,regionCode:`${g}.regionCode`,postcode:`${g}.postcode`,telephone:`${g}.telephone`},k={street:(C==null?void 0:C.street)??!0,city:(C==null?void 0:C.city)??!0,postcode:(C==null?void 0:C.postcode)??!0,telephone:(C==null?void 0:C.telephone)??!0},D=w=>P=>{const O=P.target;r(w,O.value)},A={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__section",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:_.legalAddress}),t(R,{label:_.streetAddress,required:k.street,className:"account-edit-company-profile-form__field",error:o[m.street]&&y[m.street]?y[m.street]:void 0,children:t(V,{name:$.street,type:"text",value:u.street,onBlur:D(m.street),...A})}),t(R,{label:`${_.streetAddress} 2`,className:"account-edit-company-profile-form__field",children:t(V,{name:$.street2,type:"text",value:u.street2,onBlur:D(m.street2),...A})}),t(R,{label:_.city,required:k.city,className:"account-edit-company-profile-form__field",error:o[m.city]&&y[m.city]?y[m.city]:void 0,children:t(V,{name:$.city,type:"text",value:u.city,onBlur:D(m.city),...A})}),t(R,{label:_.country,required:!0,className:"account-edit-company-profile-form__field",error:o[m.countryCode]&&y[m.countryCode]?y[m.countryCode]:void 0,children:t(ce,{name:$.countryCode,floatingLabel:`${_.country} *`,placeholder:_.country,options:N,value:u.countryCode,handleSelect:w=>{const P=w.target;i(m.countryCode)(P.value)},onBlur:()=>r(m.countryCode),disabled:!!a||e})}),t(R,{label:_.stateProvince,required:p,className:"account-edit-company-profile-form__field",error:o["legalAddress.region"]&&y["legalAddress.region"]?y["legalAddress.region"]:void 0,children:l?t(ce,{name:"legalAddress_region",floatingLabel:`${_.stateProvince} ${p?"*":""}`,placeholder:_.stateProvince,options:v,value:u.regionCode&&((z=v.find(w=>w.value.split(",")[0]===u.regionCode))==null?void 0:z.value)||"",handleSelect:w=>{var S;const P=w.target,[O]=P.value.split(","),F=((S=v.find(W=>W.value===P.value))==null?void 0:S.text)||"";i(m.region)(F),i(m.regionCode)(O)},onBlur:()=>r(m.region),disabled:!!a||e},`region_picker_${u.countryCode}`):t(V,{name:$.region,type:"text",value:u.region,onBlur:D(m.region),...A,disabled:!!a||e},`region_input_${u.countryCode}`)}),t(R,{label:_.zipPostalCode,required:k.postcode,className:"account-edit-company-profile-form__field",error:o[m.postcode]&&y[m.postcode]?y[m.postcode]:void 0,children:t(V,{name:$.postcode,type:"text",value:u.postcode,onBlur:D(m.postcode),...A})}),t(R,{label:_.phoneNumber,required:k.telephone,className:"account-edit-company-profile-form__field",error:o[m.telephone]&&y[m.telephone]?y[m.telephone]:void 0,children:t(V,{name:$.telephone,type:"tel",value:u.telephone,onBlur:D(m.telephone),...A})})]})},Fe=({inLineAlertProps:a,company:e,loading:u=!1,onSubmit:y,onCancel:o})=>{var S,W,q,Y,f,B,Z,ee,te,ae,re,se,le,ne;const i=j({title:"Company.EditCompanyProfile.title",cancel:"Company.shared.buttons.cancel",save:"Company.shared.buttons.save",saving:"Company.shared.buttons.saving",required:"Company.shared.validation.required",invalidEmail:"Company.shared.validation.invalidEmail",companyNameRequired:"Company.shared.validation.companyNameRequired",emailRequired:"Company.shared.validation.emailRequired",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyNameLengthError:"Company.shared.validation.companyNameLengthError",legalNameLengthError:"Company.shared.validation.legalNameLengthError",vatTaxIdLengthError:"Company.shared.validation.vatTaxIdLengthError",resellerIdLengthError:"Company.shared.validation.resellerIdLengthError"}),[r,N]=L({name:(e==null?void 0:e.name)||"",email:(e==null?void 0:e.email)||"",legalName:(e==null?void 0:e.legalName)||"",vatTaxId:(e==null?void 0:e.vatTaxId)||"",resellerId:(e==null?void 0:e.resellerId)||"",legalAddress:{street:((W=(S=e==null?void 0:e.legalAddress)==null?void 0:S.street)==null?void 0:W[0])||"",street2:((Y=(q=e==null?void 0:e.legalAddress)==null?void 0:q.street)==null?void 0:Y[1])||"",city:((f=e==null?void 0:e.legalAddress)==null?void 0:f.city)||"",region:((Z=(B=e==null?void 0:e.legalAddress)==null?void 0:B.region)==null?void 0:Z.region)||"",regionCode:((te=(ee=e==null?void 0:e.legalAddress)==null?void 0:ee.region)==null?void 0:te.regionCode)||"",countryCode:((ae=e==null?void 0:e.legalAddress)==null?void 0:ae.countryCode)||"",postcode:((re=e==null?void 0:e.legalAddress)==null?void 0:re.postcode)||"",telephone:((se=e==null?void 0:e.legalAddress)==null?void 0:se.telephone)||""}}),[v,p]=L({}),[l,d]=L({}),g=((le=e==null?void 0:e.permissionsFlags)==null?void 0:le.canEditAccount)===!0,C=((ne=e==null?void 0:e.permissionsFlags)==null?void 0:ne.canEditAddress)===!0,{countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k,loadingCountries:D}=$e(r.legalAddress.countryCode),A=(s,n)=>s==="name"?n.trim()?n.length>40?i.companyNameLengthError:null:i.companyNameRequired:s==="email"?n.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)?null:i.invalidEmail:i.emailRequired:s==="legalName"?n.length>80?i.legalNameLengthError:null:s==="vatTaxId"?n.length>40?i.vatTaxIdLengthError:null:s==="resellerId"?n.length>40?i.resellerIdLengthError:null:s==="legalAddress.street"||s==="legalAddress.city"||s==="legalAddress.postcode"||s==="legalAddress.telephone"||s==="legalAddress.countryCode"?n.trim()?null:i.required:s==="legalAddress.region"&&m&&!n.trim()?i.required:null,z=()=>{var T,M;const s={};let n=!0;const x=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,c=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0;if(x){const I=A("name",r.name);I&&(s.name=I,n=!1);const E=A("email",r.email);if(E&&(s.email=E,n=!1),r.legalName){const b=A("legalName",r.legalName);b&&(s.legalName=b,n=!1)}if(r.vatTaxId){const b=A("vatTaxId",r.vatTaxId);b&&(s.vatTaxId=b,n=!1)}if(r.resellerId){const b=A("resellerId",r.resellerId);b&&(s.resellerId=b,n=!1)}}if(c){const I=A("legalAddress.street",r.legalAddress.street);I&&(s["legalAddress.street"]=I,n=!1);const E=A("legalAddress.city",r.legalAddress.city);E&&(s["legalAddress.city"]=E,n=!1);const b=A("legalAddress.postcode",r.legalAddress.postcode);b&&(s["legalAddress.postcode"]=b,n=!1);const oe=A("legalAddress.telephone",r.legalAddress.telephone);oe&&(s["legalAddress.telephone"]=oe,n=!1);const ie=A("legalAddress.countryCode",r.legalAddress.countryCode);ie&&(s["legalAddress.countryCode"]=ie,n=!1);const de=A("legalAddress.region",r.legalAddress.region);de&&(s["legalAddress.region"]=de,n=!1)}return p(s),n},w=async s=>{var T,M;s.preventDefault();const n=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,x=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0,c={};if(n&&(c.name=!0,c.email=!0,c.legalName=!0,c.vatTaxId=!0,c.resellerId=!0),x&&(c["legalAddress.street"]=!0,c["legalAddress.street2"]=!0,c["legalAddress.city"]=!0,c["legalAddress.region"]=!0,c["legalAddress.regionCode"]=!0,c["legalAddress.countryCode"]=!0,c["legalAddress.postcode"]=!0,c["legalAddress.telephone"]=!0),d(c),!!z()){if(n&&r.email!==(e==null?void 0:e.email)){const I=await _e(r.email);if(!I.isValid){p(E=>({...E,email:I.error||i.emailNotAvailable}));return}}if(y){const I={};n&&(I.name=r.name,I.email=r.email,I.legalName=r.legalName,I.vatTaxId=r.vatTaxId,I.resellerId=r.resellerId),x&&(I.legalAddress={street:[r.legalAddress.street,r.legalAddress.street2].filter(Boolean),city:r.legalAddress.city,region:{region:r.legalAddress.region,regionCode:r.legalAddress.regionCode},countryCode:r.legalAddress.countryCode,postcode:r.legalAddress.postcode,telephone:r.legalAddress.telephone}),await y(I)}}},P=(s,n)=>{if(s.startsWith("legalAddress.")){const x=s.split(".")[1];x==="countryCode"?(N(c=>({...c,legalAddress:{...c.legalAddress,[x]:n,region:"",regionCode:""}})),p(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T}),d(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T})):N(x==="region"?c=>({...c,legalAddress:{...c.legalAddress,region:n,regionCode:k?c.legalAddress.regionCode:n}}):c=>({...c,legalAddress:{...c.legalAddress,[x]:n}}))}else N(x=>({...x,[s]:n}))},O=s=>n=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");x.has(s)&&!g||c&&!C||(P(s,n),v[s]&&p(M=>{const I={...M};return delete I[s],I}))},F=(s,n)=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");if(x.has(s)&&!g||c&&!C)return;n!==void 0&&P(s,n),d(E=>({...E,[s]:!0}));let M=n;if(M===void 0)if(s.startsWith("legalAddress.")){const E=s.split(".")[1],b=r.legalAddress[E];M=typeof b=="string"?b:""}else{const E=r[s];M=typeof E=="string"?E:""}const I=A(s,M);p(I?E=>({...E,[s]:I}):E=>{const b={...E};return delete b[s],b})};return h(Q,{variant:"secondary",className:"account-edit-company-profile",children:[t(ue,{title:i.title,divider:!1,className:"account-edit-company-profile__title"}),a!=null&&a.text?t(he,{className:"account-edit-company-profile__notification",type:a.type,variant:"secondary",heading:a.text,icon:a.icon,"data-testid":"editCompanyInLineAlert"}):null,h("form",{className:"account-edit-company-profile-form",onSubmit:w,children:[g&&t(we,{loading:u,value:{name:r.name,email:r.email,legalName:r.legalName,vatTaxId:r.vatTaxId,resellerId:r.resellerId},errors:v,touched:l,onBlur:F}),C&&t(Pe,{loading:u,loadingCountries:D,value:r.legalAddress,errors:v,touched:l,onChange:O,onBlur:F,countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k}),h("div",{className:"account-edit-company-profile__actions",children:[t(X,{disabled:u,type:"button",variant:"secondary",onClick:()=>o==null?void 0:o(),children:i.cancel}),t(X,{disabled:u||!g&&!C,type:"submit",variant:"primary",children:i.save})]})]}),u&&h("div",{className:"account-edit-company-profile__loading-overlay","data-testid":"editCompanyLoadingOverlay",children:[t(fe,{size:"large"}),t("div",{className:"account-edit-company-profile__loading-text",children:i.saving})]})]})},Ke=({className:a,withHeader:e=!0,slots:u})=>{const y=j({containerTitle:"Company.CompanyProfile.containerTitle"}),{inLineAlertProps:o,handleSetInLineAlert:i}=Ee(),r=J(null),{company:N,loading:v,saving:p,showEditForm:l,handleShowEditForm:d,handleHideEditForm:g,handleUpdateCompany:C}=Te({handleSetInLineAlert:i,editFormRef:r});return v?t("div",{"data-testid":"companyProfileLoader",children:t(be,{withCard:!0})}):h("div",{className:me(["account-company-profile",a]),children:[e?t(ue,{title:y.containerTitle,divider:!1,className:"company-profile__title"}):null,t(xe,{company:N,slots:u,showEditForm:l,handleShowEditForm:d}),l?t("div",{ref:r,children:t(Fe,{inLineAlertProps:o,company:N,loading:p,onSubmit:C,onCancel:g})}):null]})};export{Ke as CompanyProfile,Ke as default};
3
+ import{jsx as t,jsxs as h,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{classes as me,Slot as ge}from"@dropins/tools/lib.js";import{Card as Q,Button as X,Field as R,Input as V,Picker as ce,Header as ue,InLineAlert as he,ProgressSpinner as fe}from"@dropins/tools/components.js";import{useState as L,useRef as J,useEffect as H,useCallback as U,useMemo as G}from"@dropins/tools/preact-hooks.js";import{events as ye}from"@dropins/tools/event-bus.js";import{p as ve,E as Ce}from"../chunks/acdl.js";import{u as Ae}from"../chunks/useCompanyContextListener.js";import{g as Ne,u as Ie}from"../chunks/updateCompany.js";import{g as pe,v as _e}from"../chunks/validateCompanyEmail.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ee}from"../chunks/useInLineAlert.js";import{c as be}from"../chunks/CompanyLoaders.js";import"../chunks/fetchUserPermissions.js";import"../chunks/company-permissions.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact-compat.js";const xe=({company:a,slots:e,showEditForm:u,handleShowEditForm:y})=>{const o=j({editButton:"Company.shared.buttons.edit",noDataMessage:"Company.CompanyProfile.companyProfileCard.noDataMessage",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",legalAddress:"Company.shared.fields.legalAddress",contacts:"Company.CompanyProfile.companyProfileCard.contacts",companyAdministrator:"Company.CompanyProfile.companyProfileCard.companyAdministrator",salesRepresentative:"Company.CompanyProfile.companyProfileCard.salesRepresentative",paymentInformation:"Company.CompanyProfile.companyProfileCard.paymentInformation",shippingInformation:"Company.CompanyProfile.companyProfileCard.shippingInformation",availablePaymentMethods:"Company.CompanyProfile.companyProfileCard.availablePaymentMethods",availableShippingMethods:"Company.CompanyProfile.companyProfileCard.availableShippingMethods",noPaymentMethods:"Company.CompanyProfile.companyProfileCard.noPaymentMethods",noShippingMethods:"Company.CompanyProfile.companyProfileCard.noShippingMethods"});if(!a)return t(Q,{variant:"secondary",className:"account-company-profile-card",children:t("div",{className:"account-company-profile-card__wrapper",children:t("div",{className:"account-company-profile-card__content",children:t("div",{className:"account-company-profile-card__no-data",children:t("p",{children:o.noDataMessage})})})})});const i=a.permissionsFlags||{canViewAccount:!0,canViewAddress:!0,canViewContacts:!0,canViewPaymentInformation:!0,canViewShippingInformation:!0},r=[i.canViewAccount?{name:"name",label:o.companyName,value:a.name||"",legalName:a.legalName||""}:null,i.canViewAccount?{name:"email",label:o.email,value:a.email||""}:null,i.canViewAccount?{name:"vatTaxId",label:o.vatTaxId,value:a.vatTaxId||""}:null,i.canViewAccount?{name:"resellerId",label:o.resellerId,value:a.resellerId||""}:null].filter(Boolean);return t(Q,{variant:"secondary",className:me(["account-company-profile-card",["account-company-profile-card-short",u]]),children:h("div",{className:"account-company-profile-card__wrapper",children:[t("div",{className:"account-company-profile-card__actions",children:(a.canEditAccount||a.canEditAddress)&&t(X,{type:"button",variant:"tertiary",onClick:y,children:o.editButton})}),t("div",{className:"account-company-profile-card__content",children:(()=>{var v,p;const N=h(K,{children:[r.map((l,d)=>{if(!l.value)return null;let g;return l.name==="name"&&l.legalName?g=`${l.label}: ${l.value} (${l.legalName})`:g=l.label?`${l.label}: ${l.value}`:l.value,t("p",{"data-testid":`${l.name}_${d}`,children:g},`${l.name}_${d}`)}),i.canViewAddress&&a.legalAddress&&h("div",{className:"company-legal-address",children:[t("p",{children:h("strong",{children:[o.legalAddress,":"]})}),(v=a.legalAddress.street)==null?void 0:v.map((l,d)=>t("p",{children:l},d)),h("p",{children:[a.legalAddress.city,", ",(p=a.legalAddress.region)==null?void 0:p.region," ",a.legalAddress.postcode]}),t("p",{children:a.legalAddress.countryCode}),a.legalAddress.telephone&&h("p",{children:["Phone: ",a.legalAddress.telephone]})]}),i.canViewContacts&&(a.companyAdmin||a.salesRepresentative)&&h("div",{className:"company-contacts",children:[t("p",{children:h("strong",{children:[o.contacts,":"]})}),a.companyAdmin&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.companyAdministrator,":"]})}),h("p",{children:[a.companyAdmin.firstname," ",a.companyAdmin.lastname]}),a.companyAdmin.jobTitle&&t("p",{children:a.companyAdmin.jobTitle}),t("p",{children:a.companyAdmin.email})]}),a.salesRepresentative&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.salesRepresentative,":"]})}),h("p",{children:[a.salesRepresentative.firstname," ",a.salesRepresentative.lastname]}),t("p",{children:a.salesRepresentative.email})]})]}),i.canViewPaymentInformation&&h("div",{className:"company-payment-methods",children:[t("p",{children:h("strong",{children:[o.paymentInformation,":"]})}),a.availablePaymentMethods&&a.availablePaymentMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availablePaymentMethods,":"]})}),t("ul",{className:"payment-methods-list",children:a.availablePaymentMethods.map((l,d)=>t("li",{children:l.title},`payment_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noPaymentMethods})})]}),i.canViewShippingInformation&&h("div",{className:"company-shipping-methods",children:[t("p",{children:h("strong",{children:[o.shippingInformation,":"]})}),a.availableShippingMethods&&a.availableShippingMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availableShippingMethods,":"]})}),t("ul",{className:"shipping-methods-list",children:a.availableShippingMethods.map((l,d)=>t("li",{children:l.title},`shipping_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noShippingMethods})})]})]});return e!=null&&e.CompanyData?t(ge,{name:"CompanyData",slot:e.CompanyData,context:{companyData:r,Default:N}}):N})()})]})})},Te=({handleSetInLineAlert:a,editFormRef:e})=>{const u=j({companySuccess:"Company.CompanyProfile.editCompanyProfile.companySuccess",companyError:"Company.CompanyProfile.editCompanyProfile.companyError",loadError:"Company.CompanyProfile.messages.loadError",updateError:"Company.CompanyProfile.messages.updateError",noDataToUpdate:"Company.CompanyProfile.messages.noDataToUpdate"}),{companySuccess:y,companyError:o,loadError:i,updateError:r,noDataToUpdate:N}=u,[v,p]=L(null),[l,d]=L(!0),[g,C]=L(!1),[_,$]=L(!1),[m,k]=L([]),[D,A]=L({}),z=J(a),w=J(!1),P=J(!1);H(()=>{z.current=a},[a]);const O=U(f=>{A(f)},[]),F=U((f,B)=>{a&&(f==="success"?a({type:"success",text:B??y}):f==="error"?a({type:"error",text:B??o}):a(),C(!1))},[a,y,o]),S=U(async()=>{if(w.current)return null;w.current=!0,d(!0);try{const f=await Ne();return f&&p(f),d(!1),f}catch(f){return console.error("Failed to load company:",f),d(!1),z.current&&z.current({type:"error",text:i}),null}finally{w.current=!1}},[i]);H(()=>{P.current||(P.current=!0,S())},[S]),Ae(U(()=>{d(!0),$(!1),A({}),S()},[S])),H(()=>{pe().then(f=>{k(f.availableCountries)}).catch(f=>{console.error("Failed to load countries:",f)})},[]);const W=U(()=>{$(!0),F("success",""),A({})},[F]);H(()=>{_&&(e!=null&&e.current)&&setTimeout(()=>{var f;(f=e.current)==null||f.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)},[_,e]);const q=U(f=>{f==null||f(),$(!1),A({})},[]),Y=U(async f=>{try{if(C(!0),!f){F("error",N);return}const B=await Ie(f);p(B),$(!1),A({}),F("success"),ve(Ce.EDIT_COMPANY_EVENT,{...f,companyId:v==null?void 0:v.id}),ye.emit("company/updated",{company:B})}catch(B){console.error("Failed to update company:",B),F("error",B.message||r)}finally{C(!1)}},[v,F,r,N]);return{company:v,countries:m,loading:l,submitLoading:g,showEditForm:_,inputChange:D,handleShowEditForm:W,handleHideEditForm:q,handleUpdateCompany:Y,handleInputChange:O,renderAlertMessage:F,saving:g}},$e=a=>{const[e,u]=L(null),[y,o]=L(!0);H(()=>{let p=!0;return pe().then(({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g})=>{p&&(u({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g}),o(!1))}).catch(()=>{p&&o(!1)}),()=>{p=!1}},[]);const i=G(()=>(e==null?void 0:e.availableCountries)||[],[e]),r=G(()=>{if(!a||!e)return[];const p=e.availableCountries.find(l=>l.value===a);return!(p!=null&&p.availableRegions)||p.availableRegions.length===0?[]:p.availableRegions.map(l=>({text:l.name,value:`${l.code},${l.id}`}))},[a,e]),N=G(()=>!a||!e?!1:e.countriesWithRequiredRegion.includes(a),[a,e]),v=G(()=>r.length>0,[r]);return{countryOptions:i,regionOptions:r,isRegionRequired:N,hasRegionOptions:v,loadingCountries:y}},we=({loading:a,value:e,errors:u,touched:y,onBlur:o,namePrefix:i="",fieldPathPrefix:r=""})=>{const N=j({companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId"}),v=i?`${i}_`:"",p=g=>r?`${r}.${g}`:g,l=g=>C=>{const _=C.target;o(p(g),_.value)},d={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__group",children:[t(R,{label:N.companyName,required:!0,className:"account-edit-company-profile-form__field",error:y.name&&u.name?u.name:void 0,children:t(V,{name:`${v}name`,type:"text",value:e.name,onBlur:l("name"),...d,maxLength:40})}),t(R,{label:N.legalName,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}legalName`,type:"text",value:e.legalName,onBlur:l("legalName"),...d,maxLength:80})}),t(R,{label:N.email,required:!0,className:"account-edit-company-profile-form__field",error:y.email&&u.email?u.email:void 0,children:t(V,{name:`${v}email`,type:"email",value:e.email,onBlur:l("email"),...d})}),t(R,{label:N.vatTaxId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}vatTaxId`,type:"text",value:e.vatTaxId,onBlur:l("vatTaxId"),...d,maxLength:40})}),t(R,{label:N.resellerId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}resellerId`,type:"text",value:e.resellerId,onBlur:l("resellerId"),...d,maxLength:40})})]})},Pe=({loading:a,loadingCountries:e,value:u,errors:y,touched:o,onChange:i,onBlur:r,countryOptions:N,regionOptions:v,isRegionRequired:p,hasRegionOptions:l,namePrefix:d="legalAddress",fieldPathPrefix:g="legalAddress",requiredConfig:C})=>{var z;const _=j({legalAddress:"Company.shared.fields.legalAddress",streetAddress:"Company.shared.fields.streetAddress",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",zipPostalCode:"Company.shared.fields.zipPostalCode",phoneNumber:"Company.shared.fields.phoneNumber"}),$={street:`${d}_street`,street2:`${d}_street2`,city:`${d}_city`,countryCode:`${d}_countryCode`,region:`${d}_region`,postcode:`${d}_postcode`,telephone:`${d}_telephone`},m={street:`${g}.street`,street2:`${g}.street2`,city:`${g}.city`,countryCode:`${g}.countryCode`,region:`${g}.region`,regionCode:`${g}.regionCode`,postcode:`${g}.postcode`,telephone:`${g}.telephone`},k={street:(C==null?void 0:C.street)??!0,city:(C==null?void 0:C.city)??!0,postcode:(C==null?void 0:C.postcode)??!0,telephone:(C==null?void 0:C.telephone)??!0},D=w=>P=>{const O=P.target;r(w,O.value)},A={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__section",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:_.legalAddress}),t(R,{label:_.streetAddress,required:k.street,className:"account-edit-company-profile-form__field",error:o[m.street]&&y[m.street]?y[m.street]:void 0,children:t(V,{name:$.street,type:"text",value:u.street,onBlur:D(m.street),...A})}),t(R,{label:`${_.streetAddress} 2`,className:"account-edit-company-profile-form__field",children:t(V,{name:$.street2,type:"text",value:u.street2,onBlur:D(m.street2),...A})}),t(R,{label:_.city,required:k.city,className:"account-edit-company-profile-form__field",error:o[m.city]&&y[m.city]?y[m.city]:void 0,children:t(V,{name:$.city,type:"text",value:u.city,onBlur:D(m.city),...A})}),t(R,{label:_.country,required:!0,className:"account-edit-company-profile-form__field",error:o[m.countryCode]&&y[m.countryCode]?y[m.countryCode]:void 0,children:t(ce,{name:$.countryCode,floatingLabel:`${_.country} *`,placeholder:_.country,options:N,value:u.countryCode,handleSelect:w=>{const P=w.target;i(m.countryCode)(P.value)},onBlur:()=>r(m.countryCode),disabled:!!a||e})}),t(R,{label:_.stateProvince,required:p,className:"account-edit-company-profile-form__field",error:o["legalAddress.region"]&&y["legalAddress.region"]?y["legalAddress.region"]:void 0,children:l?t(ce,{name:"legalAddress_region",floatingLabel:`${_.stateProvince} ${p?"*":""}`,placeholder:_.stateProvince,options:v,value:u.regionCode&&((z=v.find(w=>w.value.split(",")[0]===u.regionCode))==null?void 0:z.value)||"",handleSelect:w=>{var S;const P=w.target,[O]=P.value.split(","),F=((S=v.find(W=>W.value===P.value))==null?void 0:S.text)||"";i(m.region)(F),i(m.regionCode)(O)},onBlur:()=>r(m.region),disabled:!!a||e},`region_picker_${u.countryCode}`):t(V,{name:$.region,type:"text",value:u.region,onBlur:D(m.region),...A,disabled:!!a||e},`region_input_${u.countryCode}`)}),t(R,{label:_.zipPostalCode,required:k.postcode,className:"account-edit-company-profile-form__field",error:o[m.postcode]&&y[m.postcode]?y[m.postcode]:void 0,children:t(V,{name:$.postcode,type:"text",value:u.postcode,onBlur:D(m.postcode),...A})}),t(R,{label:_.phoneNumber,required:k.telephone,className:"account-edit-company-profile-form__field",error:o[m.telephone]&&y[m.telephone]?y[m.telephone]:void 0,children:t(V,{name:$.telephone,type:"tel",value:u.telephone,onBlur:D(m.telephone),...A})})]})},Fe=({inLineAlertProps:a,company:e,loading:u=!1,onSubmit:y,onCancel:o})=>{var S,W,q,Y,f,B,Z,ee,te,ae,re,se,le,ne;const i=j({title:"Company.EditCompanyProfile.title",cancel:"Company.shared.buttons.cancel",save:"Company.shared.buttons.save",saving:"Company.shared.buttons.saving",required:"Company.shared.validation.required",invalidEmail:"Company.shared.validation.invalidEmail",companyNameRequired:"Company.shared.validation.companyNameRequired",emailRequired:"Company.shared.validation.emailRequired",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyNameLengthError:"Company.shared.validation.companyNameLengthError",legalNameLengthError:"Company.shared.validation.legalNameLengthError",vatTaxIdLengthError:"Company.shared.validation.vatTaxIdLengthError",resellerIdLengthError:"Company.shared.validation.resellerIdLengthError"}),[r,N]=L({name:(e==null?void 0:e.name)||"",email:(e==null?void 0:e.email)||"",legalName:(e==null?void 0:e.legalName)||"",vatTaxId:(e==null?void 0:e.vatTaxId)||"",resellerId:(e==null?void 0:e.resellerId)||"",legalAddress:{street:((W=(S=e==null?void 0:e.legalAddress)==null?void 0:S.street)==null?void 0:W[0])||"",street2:((Y=(q=e==null?void 0:e.legalAddress)==null?void 0:q.street)==null?void 0:Y[1])||"",city:((f=e==null?void 0:e.legalAddress)==null?void 0:f.city)||"",region:((Z=(B=e==null?void 0:e.legalAddress)==null?void 0:B.region)==null?void 0:Z.region)||"",regionCode:((te=(ee=e==null?void 0:e.legalAddress)==null?void 0:ee.region)==null?void 0:te.regionCode)||"",countryCode:((ae=e==null?void 0:e.legalAddress)==null?void 0:ae.countryCode)||"",postcode:((re=e==null?void 0:e.legalAddress)==null?void 0:re.postcode)||"",telephone:((se=e==null?void 0:e.legalAddress)==null?void 0:se.telephone)||""}}),[v,p]=L({}),[l,d]=L({}),g=((le=e==null?void 0:e.permissionsFlags)==null?void 0:le.canEditAccount)===!0,C=((ne=e==null?void 0:e.permissionsFlags)==null?void 0:ne.canEditAddress)===!0,{countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k,loadingCountries:D}=$e(r.legalAddress.countryCode),A=(s,n)=>s==="name"?n.trim()?n.length>40?i.companyNameLengthError:null:i.companyNameRequired:s==="email"?n.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)?null:i.invalidEmail:i.emailRequired:s==="legalName"?n.length>80?i.legalNameLengthError:null:s==="vatTaxId"?n.length>40?i.vatTaxIdLengthError:null:s==="resellerId"?n.length>40?i.resellerIdLengthError:null:s==="legalAddress.street"||s==="legalAddress.city"||s==="legalAddress.postcode"||s==="legalAddress.telephone"||s==="legalAddress.countryCode"?n.trim()?null:i.required:s==="legalAddress.region"&&m&&!n.trim()?i.required:null,z=()=>{var T,M;const s={};let n=!0;const x=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,c=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0;if(x){const I=A("name",r.name);I&&(s.name=I,n=!1);const E=A("email",r.email);if(E&&(s.email=E,n=!1),r.legalName){const b=A("legalName",r.legalName);b&&(s.legalName=b,n=!1)}if(r.vatTaxId){const b=A("vatTaxId",r.vatTaxId);b&&(s.vatTaxId=b,n=!1)}if(r.resellerId){const b=A("resellerId",r.resellerId);b&&(s.resellerId=b,n=!1)}}if(c){const I=A("legalAddress.street",r.legalAddress.street);I&&(s["legalAddress.street"]=I,n=!1);const E=A("legalAddress.city",r.legalAddress.city);E&&(s["legalAddress.city"]=E,n=!1);const b=A("legalAddress.postcode",r.legalAddress.postcode);b&&(s["legalAddress.postcode"]=b,n=!1);const oe=A("legalAddress.telephone",r.legalAddress.telephone);oe&&(s["legalAddress.telephone"]=oe,n=!1);const ie=A("legalAddress.countryCode",r.legalAddress.countryCode);ie&&(s["legalAddress.countryCode"]=ie,n=!1);const de=A("legalAddress.region",r.legalAddress.region);de&&(s["legalAddress.region"]=de,n=!1)}return p(s),n},w=async s=>{var T,M;s.preventDefault();const n=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,x=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0,c={};if(n&&(c.name=!0,c.email=!0,c.legalName=!0,c.vatTaxId=!0,c.resellerId=!0),x&&(c["legalAddress.street"]=!0,c["legalAddress.street2"]=!0,c["legalAddress.city"]=!0,c["legalAddress.region"]=!0,c["legalAddress.regionCode"]=!0,c["legalAddress.countryCode"]=!0,c["legalAddress.postcode"]=!0,c["legalAddress.telephone"]=!0),d(c),!!z()){if(n&&r.email!==(e==null?void 0:e.email)){const I=await _e(r.email);if(!I.isValid){p(E=>({...E,email:I.error||i.emailNotAvailable}));return}}if(y){const I={};n&&(I.name=r.name,I.email=r.email,I.legalName=r.legalName,I.vatTaxId=r.vatTaxId,I.resellerId=r.resellerId),x&&(I.legalAddress={street:[r.legalAddress.street,r.legalAddress.street2].filter(Boolean),city:r.legalAddress.city,region:{region:r.legalAddress.region,regionCode:r.legalAddress.regionCode},countryCode:r.legalAddress.countryCode,postcode:r.legalAddress.postcode,telephone:r.legalAddress.telephone}),await y(I)}}},P=(s,n)=>{if(s.startsWith("legalAddress.")){const x=s.split(".")[1];x==="countryCode"?(N(c=>({...c,legalAddress:{...c.legalAddress,[x]:n,region:"",regionCode:""}})),p(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T}),d(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T})):N(x==="region"?c=>({...c,legalAddress:{...c.legalAddress,region:n,regionCode:k?c.legalAddress.regionCode:n}}):c=>({...c,legalAddress:{...c.legalAddress,[x]:n}}))}else N(x=>({...x,[s]:n}))},O=s=>n=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");x.has(s)&&!g||c&&!C||(P(s,n),v[s]&&p(M=>{const I={...M};return delete I[s],I}))},F=(s,n)=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");if(x.has(s)&&!g||c&&!C)return;n!==void 0&&P(s,n),d(E=>({...E,[s]:!0}));let M=n;if(M===void 0)if(s.startsWith("legalAddress.")){const E=s.split(".")[1],b=r.legalAddress[E];M=typeof b=="string"?b:""}else{const E=r[s];M=typeof E=="string"?E:""}const I=A(s,M);p(I?E=>({...E,[s]:I}):E=>{const b={...E};return delete b[s],b})};return h(Q,{variant:"secondary",className:"account-edit-company-profile",children:[t(ue,{title:i.title,divider:!1,className:"account-edit-company-profile__title"}),a!=null&&a.text?t(he,{className:"account-edit-company-profile__notification",type:a.type,variant:"secondary",heading:a.text,icon:a.icon,"data-testid":"editCompanyInLineAlert"}):null,h("form",{className:"account-edit-company-profile-form",onSubmit:w,children:[g&&t(we,{loading:u,value:{name:r.name,email:r.email,legalName:r.legalName,vatTaxId:r.vatTaxId,resellerId:r.resellerId},errors:v,touched:l,onBlur:F}),C&&t(Pe,{loading:u,loadingCountries:D,value:r.legalAddress,errors:v,touched:l,onChange:O,onBlur:F,countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k}),h("div",{className:"account-edit-company-profile__actions",children:[t(X,{disabled:u,type:"button",variant:"secondary",onClick:()=>o==null?void 0:o(),children:i.cancel}),t(X,{disabled:u||!g&&!C,type:"submit",variant:"primary",children:i.save})]})]}),u&&h("div",{className:"account-edit-company-profile__loading-overlay","data-testid":"editCompanyLoadingOverlay",children:[t(fe,{size:"large"}),t("div",{className:"account-edit-company-profile__loading-text",children:i.saving})]})]})},Ke=({className:a,withHeader:e=!0,slots:u})=>{const y=j({containerTitle:"Company.CompanyProfile.containerTitle"}),{inLineAlertProps:o,handleSetInLineAlert:i}=Ee(),r=J(null),{company:N,loading:v,saving:p,showEditForm:l,handleShowEditForm:d,handleHideEditForm:g,handleUpdateCompany:C}=Te({handleSetInLineAlert:i,editFormRef:r});return v?t("div",{"data-testid":"companyProfileLoader",children:t(be,{withCard:!0})}):h("div",{className:me(["account-company-profile",a]),children:[e?t(ue,{title:y.containerTitle,divider:!1,className:"company-profile__title"}):null,t(xe,{company:N,slots:u,showEditForm:l,handleShowEditForm:d}),l?t("div",{ref:r,children:t(Fe,{inLineAlertProps:o,company:N,loading:p,onSubmit:C,onCancel:g})}):null]})};export{Ke as CompanyProfile,Ke as default};
4
4
  //# sourceMappingURL=CompanyProfile.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as D,jsx as t,Fragment as de}from"@dropins/tools/preact-jsx-runtime.js";import{useState as I,useEffect as Z,useRef as oe,useCallback as O}from"@dropins/tools/preact-hooks.js";import{Slot as ve,classes as he}from"@dropins/tools/lib.js";import{Card as ae,InLineAlert as re,ProgressSpinner as le,Field as me,Input as pe,Button as A,Modal as ye,Header as be}from"@dropins/tools/components.js";import{f as fe}from"../chunks/fetchUserPermissions.js";import{b as Ce}from"../chunks/company-permissions.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ie}from"../chunks/useCompanyContextListener.js";import{a as Te,i as we}from"../chunks/isCompanyUser.js";import*as ge from"@dropins/tools/preact-compat.js";import{memo as Se}from"@dropins/tools/preact-compat.js";import{T as Ee}from"../chunks/Tree.js";import{C as Ne}from"../chunks/CompanyUserForm.js";import{events as te}from"@dropins/tools/event-bus.js";import{p as ce,E as ie}from"../chunks/acdl.js";import{g as Ue,c as Me,u as xe,a as _e,b as ke,d as De}from"../chunks/updateCompanyTeam.js";import{d as Ae}from"../chunks/updateCompanyUser.js";import{u as Pe}from"../chunks/useInLineAlert.js";import{a as Le,b as Fe}from"../chunks/CompanyLoaders.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";const Ve=u=>ge.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...u},ge.createElement("path",{vectorEffect:"non-scaling-stroke",fillRule:"evenodd",clipRule:"evenodd",d:"M1 20.8953L12.1922 1.5L23.395 20.8953H1ZM13.0278 13.9638L13.25 10.0377V9H11.25V10.0377L11.4722 13.9638H13.0278ZM11.2994 16V17.7509H13.2253V16H11.2994Z",fill:"currentColor"}));function Re(u){const{mode:E,entityId:m,parentStructureId:d,onSaved:e,onError:g,onSuccess:i}=u,n=j({teamTitleRequired:"Company.CompanyStructure.shared.validation.teamTitleRequired",createTeamError:"Company.CompanyStructure.messages.createTeamError",saveTeamError:"Company.CompanyStructure.messages.saveTeamError",createTeamSuccess:"Company.CompanyStructure.messages.createTeamSuccess",updateTeamSuccess:"Company.CompanyStructure.messages.updateTeamSuccess"}),[p,o]=I({id:"",name:"",description:""}),[h,S]=I({}),[y,k]=I({}),[w,N]=I(!1),[F,P]=I(null);Z(()=>{E!=="edit"||!m||(N(!0),Ue(m).then(f=>{f&&o({id:f.id,name:f.name||"",description:f.description||""})}).finally(()=>N(!1)))},[E,m]);const H=(f,T)=>f==="name"?T.trim()?null:n.teamTitleRequired:null,x=(f,T)=>{o(U=>({...U,[f]:T})),F&&P(null)};return{values:p,errors:h,touched:y,loading:w,setValue:x,onBlur:(f,T)=>{T!==void 0&&x(f,T),k(L=>({...L,[f]:!0}));const U=T!==void 0?T:p[f]||"",v=H(f,U);S(v?L=>({...L,[f]:v}):L=>{const V={...L};return delete V[f],V})},submit:async()=>{const f=H("name",p.name);if(f){S({name:f}),k({name:!0});return}const T=p.name;try{if(E==="add"){const U=await Me({name:p.name,description:p.description||null,targetId:d??null});if(!U){const v=n.createTeamError;g?g(v):P(v);return}e({label:T,structureId:U.structureId,entityId:U.id,type:"team",description:p.description||void 0}),i&&i(n.createTeamSuccess)}else m&&(await xe({id:m,name:p.name,description:p.description||null}),e({label:T,entityId:m,type:"team",description:p.description||void 0}),i&&i(n.updateTeamSuccess))}catch(U){const v=U instanceof Error?U.message:n.saveTeamError;g?g(v):P(v)}},generalError:F}}const ze=Se(({mode:u,entityId:E,parentStructureId:m,permissions:d,onSaved:e,onCancel:g,onError:i,onSuccess:n})=>{const p=(d==null?void 0:d.canEditUsers)??!1,{values:o,errors:h,touched:S,loading:y,onBlur:k,submit:w,generalError:N}=Re({mode:u,entityId:E,parentStructureId:m,onSaved:e,onError:i?x=>{i(x),g()}:void 0,onSuccess:n}),[F,P]=I(!1),H=j({addTeam:"Company.CompanyStructure.shared.titles.addTeam",editTeam:"Company.CompanyStructure.shared.titles.editTeam",teamTitle:"Company.CompanyStructure.shared.fields.teamTitle",description:"Company.CompanyStructure.shared.fields.description"});return D("div",{children:[t("h3",{className:"acm-structure-panel__title",children:u==="add"?H.addTeam:H.editTeam}),D(ae,{variant:"secondary",className:`company-team-form__card ${F?"is-working":""}`,children:[!i&&N?t(re,{className:"company-team-form__notification",type:"error",variant:"secondary",heading:N}):null,F?t("div",{className:"company-team-form__overlay","aria-live":"polite",children:t(le,{size:"small"})}):null,y?t(Le,{}):D("div",{className:"company-team-form__content",children:[t(me,{label:H.teamTitle,required:!0,className:"acm-structure-panel__field",error:S.name&&h.name?h.name:void 0,children:t(pe,{name:"team_title",type:"text",value:o.name,onBlur:x=>{const Y=x.target;k("name",Y.value)},variant:"primary",size:"medium",disabled:!p})}),t(me,{label:H.description,className:"acm-structure-panel__field",children:t(pe,{name:"team_description",type:"textarea",value:o.description||"",onBlur:x=>{const Y=x.target;k("description",Y.value)},variant:"primary",size:"medium",disabled:!p})})]})]}),y?null:D("div",{className:"acm-structure-modal__actions",children:[t(A,{type:"button",variant:"primary",onClick:async()=>{if(!F){P(!0);try{await w()}finally{P(!1)}}},disabled:F||!p,children:"Save"}),t(A,{type:"button",variant:"secondary",disabled:F,onClick:g,children:"Cancel"})]})]})});function Be({handleSetInLineAlert:u,permissions:E}={permissions:null}){const m=(E==null?void 0:E.canViewUsers)??!1,d=j({loadError:"Company.CompanyStructure.messages.loadError",updateError:"Company.CompanyStructure.messages.updateError",failedToMoveItem:"Company.CompanyStructure.messages.failedToMoveItem",removeUserSuccess:"Company.CompanyStructure.messages.removeUserSuccess",deleteTeamSuccess:"Company.CompanyStructure.messages.deleteTeamSuccess",removeMultipleSuccess:"Company.CompanyStructure.messages.removeMultipleSuccess",moveUserSuccess:"Company.CompanyStructure.messages.moveUserSuccess",moveTeamSuccess:"Company.CompanyStructure.messages.moveTeamSuccess"}),{loadError:e,updateError:g}=d,[i,n]=I(null),[p,o]=I(!0),[h,S]=I(!1),[y,k]=I(!1),[w,N]=I(new Set),[F,P]=I(null),[H,x]=I(new Set),[Y,G]=I({}),f=oe(u),T=oe(!1),U=oe(!1);Z(()=>{f.current=u},[u]);const v=O((a,l)=>{u&&(a==="success"?u({type:"success",text:l}):a==="error"?u({type:"error",text:l}):u(),S(!1))},[u]),L=O(async()=>{if(T.current)return null;if(T.current=!0,!m)return o(!1),n(null),N(new Set),P(null),x(new Set),T.current=!1,null;o(!0);try{const l=await _e();return n(l),N(new Set(l.map(_=>_.id))),o(!1),l}catch{return o(!1),f.current&&f.current({type:"error",text:e}),null}finally{T.current=!1}},[m,e]);Z(()=>{m&&!U.current&&(U.current=!0,L())},[m,L]),Z(()=>{const a=()=>{o(!0),N(new Set),P(null),x(new Set),L()},l=te.on("companyContext/changed",a,{eager:!0});return()=>{l==null||l.off()}},[L]);const V=O(async(a,l)=>{try{if(S(!0),!await ke({id:a,parentId:l}))return v("error",d.failedToMoveItem),!1;const b=new Map(i==null?void 0:i.map(c=>[c.id,c])).get(a),r=(b==null?void 0:b.type)==="team"?d.moveTeamSuccess:d.moveUserSuccess;return n(c=>c?c.map(C=>C.id===a?{...C,parentId:l}:C):null),N(c=>new Set([...c,l])),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"move",nodeId:a,newParentId:l}),te.emit("companyStructure/updated",{message:"Structure updated",action:"move",nodeId:a,newParentId:l,nodes:i||[]}),v("success",r),!0}catch(_){const R=_ instanceof Error?_.message:g;return v("error",R),!1}finally{S(!1)}},[i,v,g,d.failedToMoveItem,d.moveUserSuccess,d.moveTeamSuccess]),ne=O(()=>{i&&N(new Set(i.map(a=>a.id)))},[i]),q=O(()=>{if(i){const a=i.filter(l=>l.parentId===null).map(l=>l.id);N(new Set(a))}},[i]),$=O(a=>{n(l=>{const _=l?[...l,{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}]:[{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}];return te.emit("companyStructure/updated",{message:"Structure updated",action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodes:_}),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodeType:a.type}),_}),a.parentId&&N(l=>new Set([...l,a.parentId]))},[]),K=O((a,l,_)=>{l&&n(R=>R?R.map(b=>a.includes(b.id)?{...b,label:l,description:_}:b):null)},[]),Q=O(async a=>{if(a.length)try{S(!0);const l=new Map((i||[]).map(b=>[b.id,b])),_=a.map(b=>l.get(b)).filter(Boolean);for(const b of a){const r=l.get(b);!r||!r.entityId||(r.type==="team"?await De(r.entityId):await Ae({id:r.entityId}))}n(b=>{if(!b)return null;const r=new Set(a);return b.filter(c=>!r.has(c.id))}),P(null),x(new Set),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"remove",nodeIds:a}),te.emit("companyStructure/updated",{message:"Structure updated",action:"remove",nodeIds:a,nodes:i||[]});let R;if(a.length===1){const b=_[0];R=(b==null?void 0:b.type)==="team"?d.deleteTeamSuccess:d.removeUserSuccess}else R=d.removeMultipleSuccess.replace("{count}",a.length.toString());v("success",R)}catch(l){const _=l instanceof Error?l.message:g;v("error",_)}finally{S(!1)}},[i,v,g,d.removeUserSuccess,d.deleteTeamSuccess,d.removeMultipleSuccess]),X=O(a=>{G(a)},[]),W=O(()=>{k(!0),v("success",""),G({})},[v]),ee=O(a=>{a==null||a(),k(!1),G({})},[]);return{nodes:i,loading:p,submitLoading:h,showEditForm:y,inputChange:Y,expanded:w,setExpanded:N,selected:F,setSelected:P,selectedMany:H,setSelectedMany:x,move:V,expandAll:ne,collapseAll:q,insertNode:$,renameNodes:K,removeNodes:Q,handleInputChange:X,handleShowEditForm:W,handleHideEditForm:ee,renderAlertMessage:v,working:h}}const Oe=Se(({permissions:u,slots:E})=>{var b;const m=(u==null?void 0:u.canEditUsers)??!1,d=(u==null?void 0:u.canViewUsers)??!1,e=j({expandAll:"Company.CompanyStructure.shared.buttons.expandAll",collapseAll:"Company.CompanyStructure.shared.buttons.collapseAll",addUser:"Company.CompanyStructure.shared.buttons.addUser",addTeam:"Company.CompanyStructure.shared.buttons.addTeam",editSelected:"Company.CompanyStructure.shared.buttons.editSelected",remove:"Company.CompanyStructure.shared.buttons.remove",ok:"Company.CompanyStructure.shared.buttons.ok",cancel:"Company.CompanyStructure.shared.buttons.cancel",close:"Company.CompanyStructure.shared.buttons.close",deleting:"Company.CompanyStructure.shared.buttons.deleting",removing:"Company.CompanyStructure.shared.buttons.removing",noStructureData:"Company.CompanyStructure.messages.noStructureData",processing:"Company.CompanyStructure.shared.messages.processing",cannotDeleteUser:"Company.CompanyStructure.messages.cannotDeleteUser",cannotDeleteTeam:"Company.CompanyStructure.messages.cannotDeleteTeam",removeUserConfirm:"Company.CompanyStructure.messages.removeUserConfirm",deleteTeamConfirm:"Company.CompanyStructure.messages.deleteTeamConfirm",removeItemsConfirm:"Company.CompanyStructure.messages.removeItemsConfirm",teamDescription:"Company.CompanyStructure.shared.messages.teamDescription",removeUserMessage:"Company.CompanyStructure.messages.removeUserMessage",cannotDeleteUserMessage:"Company.CompanyStructure.messages.cannotDeleteUserMessage",cannotDeleteTeamMessage:"Company.CompanyStructure.messages.cannotDeleteTeamMessage",removeItemsMessage:"Company.CompanyStructure.messages.removeItemsMessage",companyStructureActions:"Company.CompanyStructure.shared.ariaLabels.companyStructureActions",expandAllNodes:"Company.CompanyStructure.shared.ariaLabels.expandAllNodes",collapseAllNodes:"Company.CompanyStructure.shared.ariaLabels.collapseAllNodes",addUserAria:"Company.CompanyStructure.shared.ariaLabels.addUser",addTeamAria:"Company.CompanyStructure.shared.ariaLabels.addTeam",editSelectedAria:"Company.CompanyStructure.shared.ariaLabels.editSelected",removeSelectedAria:"Company.CompanyStructure.shared.ariaLabels.removeSelected",showDescription:"Company.CompanyStructure.shared.ariaLabels.showDescription",delete:"Company.CompanyStructure.shared.options.delete",expand:"Company.CompanyStructure.shared.options.expand",collapse:"Company.CompanyStructure.shared.options.collapse",deleteTeamMessage:"Company.CompanyStructure.messages.deleteTeamMessage"}),{inLineAlertProps:g,handleSetInLineAlert:i}=Pe(),{nodes:n,loading:p,submitLoading:o,expanded:h,setExpanded:S,selected:y,setSelected:k,selectedMany:w,setSelectedMany:N,move:F,expandAll:P,collapseAll:H,insertNode:x,renameNodes:Y,removeNodes:G}=Be({handleSetInLineAlert:i,permissions:u}),[f,T]=I(null),[U,v]=I("add"),[L,V]=I(!1),[ne,q]=I([]),[$,K]=I({title:"",body:"",confirmLabel:e.remove,blocked:!1}),[Q,X]=I(null),W=()=>T(null),ee=((b=n==null?void 0:n.find(r=>r.parentId===null))==null?void 0:b.id)??null,a=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label})),l=(r,c)=>{let C=r;const s=new Map(a.map(z=>[z.id,z])),M=new Set;for(;C&&!M.has(C);){M.add(C);const z=s.get(C);if(!z)break;if(z.parentId===c)return!0;C=z.parentId??null}return!1},_=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label,type:r.type,description:r.description,entityId:r.entityId})),R=D(de,{children:[(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=m&&r.length===1,C=m&&r.length>=1;return t(ae,{variant:"secondary",className:"acm-structure-toolbar-card acm-structure-toolbar-card--spaced",children:D("div",{className:"acm-structure-toolbar",role:"toolbar","aria-label":e.companyStructureActions,children:[t(A,{type:"button",variant:"secondary",onClick:P,"aria-label":e.expandAllNodes,disabled:!d,"aria-disabled":!d,children:e.expandAll}),t(A,{type:"button",variant:"secondary",onClick:H,"aria-label":e.collapseAllNodes,disabled:!d,"aria-disabled":!d,children:e.collapseAll}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("user")},"aria-label":e.addUserAria,disabled:!m,"aria-disabled":!m,children:e.addUser}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("team")},"aria-label":e.addTeamAria,disabled:!m,"aria-disabled":!m,children:e.addTeam}),t(A,{type:"button",variant:"primary",disabled:!c,"aria-disabled":!c,"aria-label":e.editSelectedAria,onClick:()=>{if(!c)return;const s=r,M=n==null?void 0:n.find(z=>z.id===s[0]);(M==null?void 0:M.type)==="user"?(v("edit"),T("user")):(v("edit"),T("team"))},children:e.editSelected}),t(A,{type:"button",variant:"secondary",disabled:!C||o,"aria-disabled":!C||o,"aria-label":e.removeSelectedAria,onClick:()=>{if(!C||o)return;const s=r;if(s.length===1){const M=n==null?void 0:n.find(J=>J.id===s[0]);if(!M)return;(n==null?void 0:n.some(J=>J.parentId===M.id))?(K({title:M.type==="user"?e.cannotDeleteUser:e.cannotDeleteTeam,body:M.type==="user"?e.cannotDeleteUserMessage:e.cannotDeleteTeamMessage,confirmLabel:void 0,blocked:!0}),q([]),V(!0)):(K({title:M.type==="user"?e.removeUserConfirm:e.deleteTeamConfirm,body:M.type==="user"?e.removeUserMessage:e.deleteTeamMessage,confirmLabel:M.type==="user"?e.remove:e.delete,blocked:!1}),q(s),V(!0))}else K({title:e.removeItemsConfirm.replace("{count}",s.length.toString()),body:e.removeItemsMessage,confirmLabel:e.remove,blocked:!1}),q(s),V(!0)},children:e.remove})]})})})(),f?D("div",{className:"acm-structure-panel",children:[o?D("div",{className:"acm-structure-working","aria-live":"polite",children:[t(le,{size:"small"})," ",e.processing]}):null,f==="user"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(Ne,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null,f==="team"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(ze,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId,description:s.description}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label,s.description),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null]}):null,D(ae,{variant:"secondary",className:`acm-structure-tree-card ${o?"is-working":""}`,children:[g&&g.text?t(re,{className:"acm-structure-panel__notification",type:g.type||"success",variant:"secondary",heading:g.text}):null,!p&&!o&&n&&n.length===0?t(re,{className:"acm-structure-panel__notification",type:"warning",variant:"secondary",heading:e.noStructureData}):null,!p&&o?t("div",{className:"acm-structure-tree-overlay","aria-live":"polite",children:t(le,{size:"medium"})}):null,p?t("div",{className:"acm-structure-tree-content",children:t(Fe,{rows:8})}):t("div",{className:"acm-structure-tree-content",children:t(Ee,{rootId:null,items:a,expandedIds:h,selectedId:y,selectedIds:w,onExpandedChange:S,onSelectedChange:k,onSelectedIdsChange:N,renderExpander:({expanded:r,toggle:c})=>t("button",{type:"button",className:`acm-structure-expander acm-structure-expander-button ${r?"is-open":""}`,"aria-label":r?e.collapse:e.expand,onClick:C=>{C.stopPropagation(),c()},children:r?"−":"+"}),renderNode:({item:r,hasChildren:c,select:C,expander:s,checkbox:M,icon:z})=>{var J;return D("div",{className:"acm-structure-row",onClick:C,children:[c?s?t("span",{onClick:B=>B.stopPropagation(),children:s()}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}),t("span",{className:"acm-structure-handle","aria-hidden":!0}),z?t("span",{onClick:B=>B.stopPropagation(),children:z()}):t("span",{className:`acm-structure-icon ${((J=n==null?void 0:n.find(B=>B.id===r.id))==null?void 0:J.type)==="team"?"is-team":"is-user"}`,"aria-hidden":!0}),M?t("span",{onClick:B=>B.stopPropagation(),children:M()}):null,t("span",{className:"acm-structure-label",children:r.label}),(()=>{const B=n==null?void 0:n.find(se=>se.id===r.id),ue=(B==null?void 0:B.type)==="team"&&B.description||"";return ue?t(A,{type:"button",variant:"secondary",onClick:se=>{se.stopPropagation(),X({id:r.id,text:ue})},"aria-label":e.showDescription,className:"acm-structure-description-button",children:"?"}):null})()]})},draggable:()=>!o&&m,canDrop:(r,c)=>{if(!m||r===c)return!1;const C=n==null?void 0:n.find(s=>s.id===r);return C&&C.parentId===c?!1:!l(c,r)},onMove:async({id:r,newParentId:c})=>{m&&await F(r,c)}})})]}),L?t(ye,{open:L,onClose:()=>{o||(V(!1),q([]))},children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:$.title}),t("div",{children:$.body}),t("div",{className:"acm-structure-modal-actions",children:$.blocked?t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.ok}):D(de,{children:[t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.cancel}),t(A,{type:"button",variant:"primary",disabled:o,onClick:async()=>{await G(ne),V(!1),q([])},children:o?$.confirmLabel===e.delete?e.deleting:e.removing:$.confirmLabel||e.remove})]})})]})}):null,Q?t(ye,{open:!!Q,onClose:()=>X(null),children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:e.teamDescription}),t("div",{children:Q.text}),t("div",{className:"acm-structure-modal-actions",children:t(A,{type:"button",variant:"secondary",onClick:()=>X(null),children:e.close})})]})}):null]});return E!=null&&E.StructureData?t(ve,{name:"StructureData",slot:E.StructureData,context:{structureData:_,Default:R}}):R}),He=()=>{const u=j({fetchPermissionsError:"Company.CompanyStructure.messages.fetchPermissionsError"}),[E,m]=I(null),[d,e]=I(!0),[g,i]=I(null),n=O(async()=>{var p,o;try{e(!0),i(null);const{roleResponse:h}=await fe(),S=(o=(p=h==null?void 0:h.data)==null?void 0:p.customer)==null?void 0:o.role,y=Ce(S);m(y)}catch(h){i(h instanceof Error?h:new Error(u.fetchPermissionsError))}finally{e(!1)}},[u.fetchPermissionsError]);return Z(()=>{let p=!0;return(async()=>{var h,S;try{e(!0),i(null);const{roleResponse:y}=await fe();if(!p)return;const k=(S=(h=y==null?void 0:y.data)==null?void 0:h.customer)==null?void 0:S.role,w=Ce(k);m(w)}catch(y){if(!p)return;i(y instanceof Error?y:new Error(u.fetchPermissionsError))}finally{p&&e(!1)}})(),()=>{p=!1}},[]),{permissions:E,loading:d,error:g,refreshPermissions:n}},Ye="/customer/company/create",qe=({className:u,children:E,createCompanyAccountUrl:m=Ye,...d})=>{const e=j({individualUserMessage:"Company.CustomerCompanyInfo.individualUserMessage",createAccountCta:"Company.CustomerCompanyInfo.createAccountCta"}),g=e.individualUserMessage||"You don't have a company account yet.";return t(ae,{variant:"secondary",className:he(["company-management-company-structure-card",u]),...d,children:D("div",{children:[t(re,{type:"warning",variant:"secondary",heading:g,icon:t(Ve,{}),className:"company-management-company-structure-card__alert","data-testid":"company-structure-inline-alert"}),t("div",{className:"company-management-company-structure-card__cta",children:t(A,{as:"a",href:m,variant:"primary","data-testid":"company-structure-create-company-button",children:e.createAccountCta||"Create a Company Account"})})]})})},yt=({className:u,withHeader:E=!1,slots:m,isAuthenticated:d=!1,onRedirectLogin:e,onRedirectAccount:g})=>{const i=j({containerTitle:"Company.CompanyStructure.containerTitle"}),{permissions:n,refreshPermissions:p}=He(),[o,h]=I("loading");return Ie(p),Z(()=>{let S=!0;return(async()=>{try{if(!d){S&&h("redirect-login");return}if(!await Te()){S&&(console.log("Company registration disabled - redirecting to account dashboard"),h("redirect-account"));return}await we()?S&&h("show-structure"):S&&h("show-empty")}catch(y){console.error("Error in CompanyStructure - redirecting to login page:",y),S&&h("redirect-login")}})(),()=>{S=!1}},[d]),Z(()=>{o==="redirect-login"&&e&&e(),o==="redirect-account"&&g&&g()},[o,e,g]),o==="loading"||o==="redirect-login"||o==="redirect-account"?null:o==="show-empty"?t(qe,{className:u}):o==="show-structure"?D("div",{className:he(["account-company-structure",u]),children:[E?t(be,{title:i.containerTitle,divider:!1,className:"company-structure__title"}):null,t(Oe,{slots:m,permissions:n})]}):null};export{yt as CompanyStructure,yt as default};
3
+ import{jsxs as D,jsx as t,Fragment as de}from"@dropins/tools/preact-jsx-runtime.js";import{useState as I,useEffect as Z,useRef as oe,useCallback as O}from"@dropins/tools/preact-hooks.js";import{Slot as ve,classes as he}from"@dropins/tools/lib.js";import{Card as ae,InLineAlert as re,ProgressSpinner as le,Field as me,Input as pe,Button as A,Modal as ye,Header as be}from"@dropins/tools/components.js";import{f as fe}from"../chunks/fetchUserPermissions.js";import{b as Ce}from"../chunks/company-permissions.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ie}from"../chunks/useCompanyContextListener.js";import{a as Te,i as we}from"../chunks/isCompanyUser.js";import*as ge from"@dropins/tools/preact-compat.js";import{memo as Se}from"@dropins/tools/preact-compat.js";import{T as Ee}from"../chunks/Tree.js";import{C as Ne}from"../chunks/CompanyUserForm.js";import{events as te}from"@dropins/tools/event-bus.js";import{p as ce,E as ie}from"../chunks/acdl.js";import{g as Ue,c as Me,u as xe,a as _e,b as ke,d as De}from"../chunks/updateCompanyTeam.js";import{d as Ae}from"../chunks/updateCompanyUser.js";import{u as Pe}from"../chunks/useInLineAlert.js";import{C as Le,a as Fe}from"../chunks/CompanyLoaders.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";const Ve=u=>ge.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...u},ge.createElement("path",{vectorEffect:"non-scaling-stroke",fillRule:"evenodd",clipRule:"evenodd",d:"M1 20.8953L12.1922 1.5L23.395 20.8953H1ZM13.0278 13.9638L13.25 10.0377V9H11.25V10.0377L11.4722 13.9638H13.0278ZM11.2994 16V17.7509H13.2253V16H11.2994Z",fill:"currentColor"}));function Re(u){const{mode:E,entityId:m,parentStructureId:d,onSaved:e,onError:g,onSuccess:i}=u,n=j({teamTitleRequired:"Company.CompanyStructure.shared.validation.teamTitleRequired",createTeamError:"Company.CompanyStructure.messages.createTeamError",saveTeamError:"Company.CompanyStructure.messages.saveTeamError",createTeamSuccess:"Company.CompanyStructure.messages.createTeamSuccess",updateTeamSuccess:"Company.CompanyStructure.messages.updateTeamSuccess"}),[p,o]=I({id:"",name:"",description:""}),[h,S]=I({}),[y,k]=I({}),[w,N]=I(!1),[F,P]=I(null);Z(()=>{E!=="edit"||!m||(N(!0),Ue(m).then(f=>{f&&o({id:f.id,name:f.name||"",description:f.description||""})}).finally(()=>N(!1)))},[E,m]);const H=(f,T)=>f==="name"?T.trim()?null:n.teamTitleRequired:null,x=(f,T)=>{o(U=>({...U,[f]:T})),F&&P(null)};return{values:p,errors:h,touched:y,loading:w,setValue:x,onBlur:(f,T)=>{T!==void 0&&x(f,T),k(L=>({...L,[f]:!0}));const U=T!==void 0?T:p[f]||"",v=H(f,U);S(v?L=>({...L,[f]:v}):L=>{const V={...L};return delete V[f],V})},submit:async()=>{const f=H("name",p.name);if(f){S({name:f}),k({name:!0});return}const T=p.name;try{if(E==="add"){const U=await Me({name:p.name,description:p.description||null,targetId:d??null});if(!U){const v=n.createTeamError;g?g(v):P(v);return}e({label:T,structureId:U.structureId,entityId:U.id,type:"team",description:p.description||void 0}),i&&i(n.createTeamSuccess)}else m&&(await xe({id:m,name:p.name,description:p.description||null}),e({label:T,entityId:m,type:"team",description:p.description||void 0}),i&&i(n.updateTeamSuccess))}catch(U){const v=U instanceof Error?U.message:n.saveTeamError;g?g(v):P(v)}},generalError:F}}const ze=Se(({mode:u,entityId:E,parentStructureId:m,permissions:d,onSaved:e,onCancel:g,onError:i,onSuccess:n})=>{const p=(d==null?void 0:d.canEditUsers)??!1,{values:o,errors:h,touched:S,loading:y,onBlur:k,submit:w,generalError:N}=Re({mode:u,entityId:E,parentStructureId:m,onSaved:e,onError:i?x=>{i(x),g()}:void 0,onSuccess:n}),[F,P]=I(!1),H=j({addTeam:"Company.CompanyStructure.shared.titles.addTeam",editTeam:"Company.CompanyStructure.shared.titles.editTeam",teamTitle:"Company.CompanyStructure.shared.fields.teamTitle",description:"Company.CompanyStructure.shared.fields.description"});return D("div",{children:[t("h3",{className:"acm-structure-panel__title",children:u==="add"?H.addTeam:H.editTeam}),D(ae,{variant:"secondary",className:`company-team-form__card ${F?"is-working":""}`,children:[!i&&N?t(re,{className:"company-team-form__notification",type:"error",variant:"secondary",heading:N}):null,F?t("div",{className:"company-team-form__overlay","aria-live":"polite",children:t(le,{size:"small"})}):null,y?t(Le,{}):D("div",{className:"company-team-form__content",children:[t(me,{label:H.teamTitle,required:!0,className:"acm-structure-panel__field",error:S.name&&h.name?h.name:void 0,children:t(pe,{name:"team_title",type:"text",value:o.name,onBlur:x=>{const Y=x.target;k("name",Y.value)},variant:"primary",size:"medium",disabled:!p})}),t(me,{label:H.description,className:"acm-structure-panel__field",children:t(pe,{name:"team_description",type:"textarea",value:o.description||"",onBlur:x=>{const Y=x.target;k("description",Y.value)},variant:"primary",size:"medium",disabled:!p})})]})]}),y?null:D("div",{className:"acm-structure-modal__actions",children:[t(A,{type:"button",variant:"primary",onClick:async()=>{if(!F){P(!0);try{await w()}finally{P(!1)}}},disabled:F||!p,children:"Save"}),t(A,{type:"button",variant:"secondary",disabled:F,onClick:g,children:"Cancel"})]})]})});function Be({handleSetInLineAlert:u,permissions:E}={permissions:null}){const m=(E==null?void 0:E.canViewUsers)??!1,d=j({loadError:"Company.CompanyStructure.messages.loadError",updateError:"Company.CompanyStructure.messages.updateError",failedToMoveItem:"Company.CompanyStructure.messages.failedToMoveItem",removeUserSuccess:"Company.CompanyStructure.messages.removeUserSuccess",deleteTeamSuccess:"Company.CompanyStructure.messages.deleteTeamSuccess",removeMultipleSuccess:"Company.CompanyStructure.messages.removeMultipleSuccess",moveUserSuccess:"Company.CompanyStructure.messages.moveUserSuccess",moveTeamSuccess:"Company.CompanyStructure.messages.moveTeamSuccess"}),{loadError:e,updateError:g}=d,[i,n]=I(null),[p,o]=I(!0),[h,S]=I(!1),[y,k]=I(!1),[w,N]=I(new Set),[F,P]=I(null),[H,x]=I(new Set),[Y,G]=I({}),f=oe(u),T=oe(!1),U=oe(!1);Z(()=>{f.current=u},[u]);const v=O((a,l)=>{u&&(a==="success"?u({type:"success",text:l}):a==="error"?u({type:"error",text:l}):u(),S(!1))},[u]),L=O(async()=>{if(T.current)return null;if(T.current=!0,!m)return o(!1),n(null),N(new Set),P(null),x(new Set),T.current=!1,null;o(!0);try{const l=await _e();return n(l),N(new Set(l.map(_=>_.id))),o(!1),l}catch{return o(!1),f.current&&f.current({type:"error",text:e}),null}finally{T.current=!1}},[m,e]);Z(()=>{m&&!U.current&&(U.current=!0,L())},[m,L]),Z(()=>{const a=()=>{o(!0),N(new Set),P(null),x(new Set),L()},l=te.on("companyContext/changed",a,{eager:!0});return()=>{l==null||l.off()}},[L]);const V=O(async(a,l)=>{try{if(S(!0),!await ke({id:a,parentId:l}))return v("error",d.failedToMoveItem),!1;const b=new Map(i==null?void 0:i.map(c=>[c.id,c])).get(a),r=(b==null?void 0:b.type)==="team"?d.moveTeamSuccess:d.moveUserSuccess;return n(c=>c?c.map(C=>C.id===a?{...C,parentId:l}:C):null),N(c=>new Set([...c,l])),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"move",nodeId:a,newParentId:l}),te.emit("companyStructure/updated",{message:"Structure updated",action:"move",nodeId:a,newParentId:l,nodes:i||[]}),v("success",r),!0}catch(_){const R=_ instanceof Error?_.message:g;return v("error",R),!1}finally{S(!1)}},[i,v,g,d.failedToMoveItem,d.moveUserSuccess,d.moveTeamSuccess]),ne=O(()=>{i&&N(new Set(i.map(a=>a.id)))},[i]),q=O(()=>{if(i){const a=i.filter(l=>l.parentId===null).map(l=>l.id);N(new Set(a))}},[i]),$=O(a=>{n(l=>{const _=l?[...l,{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}]:[{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}];return te.emit("companyStructure/updated",{message:"Structure updated",action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodes:_}),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodeType:a.type}),_}),a.parentId&&N(l=>new Set([...l,a.parentId]))},[]),K=O((a,l,_)=>{l&&n(R=>R?R.map(b=>a.includes(b.id)?{...b,label:l,description:_}:b):null)},[]),Q=O(async a=>{if(a.length)try{S(!0);const l=new Map((i||[]).map(b=>[b.id,b])),_=a.map(b=>l.get(b)).filter(Boolean);for(const b of a){const r=l.get(b);!r||!r.entityId||(r.type==="team"?await De(r.entityId):await Ae({id:r.entityId}))}n(b=>{if(!b)return null;const r=new Set(a);return b.filter(c=>!r.has(c.id))}),P(null),x(new Set),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"remove",nodeIds:a}),te.emit("companyStructure/updated",{message:"Structure updated",action:"remove",nodeIds:a,nodes:i||[]});let R;if(a.length===1){const b=_[0];R=(b==null?void 0:b.type)==="team"?d.deleteTeamSuccess:d.removeUserSuccess}else R=d.removeMultipleSuccess.replace("{count}",a.length.toString());v("success",R)}catch(l){const _=l instanceof Error?l.message:g;v("error",_)}finally{S(!1)}},[i,v,g,d.removeUserSuccess,d.deleteTeamSuccess,d.removeMultipleSuccess]),X=O(a=>{G(a)},[]),W=O(()=>{k(!0),v("success",""),G({})},[v]),ee=O(a=>{a==null||a(),k(!1),G({})},[]);return{nodes:i,loading:p,submitLoading:h,showEditForm:y,inputChange:Y,expanded:w,setExpanded:N,selected:F,setSelected:P,selectedMany:H,setSelectedMany:x,move:V,expandAll:ne,collapseAll:q,insertNode:$,renameNodes:K,removeNodes:Q,handleInputChange:X,handleShowEditForm:W,handleHideEditForm:ee,renderAlertMessage:v,working:h}}const Oe=Se(({permissions:u,slots:E})=>{var b;const m=(u==null?void 0:u.canEditUsers)??!1,d=(u==null?void 0:u.canViewUsers)??!1,e=j({expandAll:"Company.CompanyStructure.shared.buttons.expandAll",collapseAll:"Company.CompanyStructure.shared.buttons.collapseAll",addUser:"Company.CompanyStructure.shared.buttons.addUser",addTeam:"Company.CompanyStructure.shared.buttons.addTeam",editSelected:"Company.CompanyStructure.shared.buttons.editSelected",remove:"Company.CompanyStructure.shared.buttons.remove",ok:"Company.CompanyStructure.shared.buttons.ok",cancel:"Company.CompanyStructure.shared.buttons.cancel",close:"Company.CompanyStructure.shared.buttons.close",deleting:"Company.CompanyStructure.shared.buttons.deleting",removing:"Company.CompanyStructure.shared.buttons.removing",noStructureData:"Company.CompanyStructure.messages.noStructureData",processing:"Company.CompanyStructure.shared.messages.processing",cannotDeleteUser:"Company.CompanyStructure.messages.cannotDeleteUser",cannotDeleteTeam:"Company.CompanyStructure.messages.cannotDeleteTeam",removeUserConfirm:"Company.CompanyStructure.messages.removeUserConfirm",deleteTeamConfirm:"Company.CompanyStructure.messages.deleteTeamConfirm",removeItemsConfirm:"Company.CompanyStructure.messages.removeItemsConfirm",teamDescription:"Company.CompanyStructure.shared.messages.teamDescription",removeUserMessage:"Company.CompanyStructure.messages.removeUserMessage",cannotDeleteUserMessage:"Company.CompanyStructure.messages.cannotDeleteUserMessage",cannotDeleteTeamMessage:"Company.CompanyStructure.messages.cannotDeleteTeamMessage",removeItemsMessage:"Company.CompanyStructure.messages.removeItemsMessage",companyStructureActions:"Company.CompanyStructure.shared.ariaLabels.companyStructureActions",expandAllNodes:"Company.CompanyStructure.shared.ariaLabels.expandAllNodes",collapseAllNodes:"Company.CompanyStructure.shared.ariaLabels.collapseAllNodes",addUserAria:"Company.CompanyStructure.shared.ariaLabels.addUser",addTeamAria:"Company.CompanyStructure.shared.ariaLabels.addTeam",editSelectedAria:"Company.CompanyStructure.shared.ariaLabels.editSelected",removeSelectedAria:"Company.CompanyStructure.shared.ariaLabels.removeSelected",showDescription:"Company.CompanyStructure.shared.ariaLabels.showDescription",delete:"Company.CompanyStructure.shared.options.delete",expand:"Company.CompanyStructure.shared.options.expand",collapse:"Company.CompanyStructure.shared.options.collapse",deleteTeamMessage:"Company.CompanyStructure.messages.deleteTeamMessage"}),{inLineAlertProps:g,handleSetInLineAlert:i}=Pe(),{nodes:n,loading:p,submitLoading:o,expanded:h,setExpanded:S,selected:y,setSelected:k,selectedMany:w,setSelectedMany:N,move:F,expandAll:P,collapseAll:H,insertNode:x,renameNodes:Y,removeNodes:G}=Be({handleSetInLineAlert:i,permissions:u}),[f,T]=I(null),[U,v]=I("add"),[L,V]=I(!1),[ne,q]=I([]),[$,K]=I({title:"",body:"",confirmLabel:e.remove,blocked:!1}),[Q,X]=I(null),W=()=>T(null),ee=((b=n==null?void 0:n.find(r=>r.parentId===null))==null?void 0:b.id)??null,a=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label})),l=(r,c)=>{let C=r;const s=new Map(a.map(z=>[z.id,z])),M=new Set;for(;C&&!M.has(C);){M.add(C);const z=s.get(C);if(!z)break;if(z.parentId===c)return!0;C=z.parentId??null}return!1},_=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label,type:r.type,description:r.description,entityId:r.entityId})),R=D(de,{children:[(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=m&&r.length===1,C=m&&r.length>=1;return t(ae,{variant:"secondary",className:"acm-structure-toolbar-card acm-structure-toolbar-card--spaced",children:D("div",{className:"acm-structure-toolbar",role:"toolbar","aria-label":e.companyStructureActions,children:[t(A,{type:"button",variant:"secondary",onClick:P,"aria-label":e.expandAllNodes,disabled:!d,"aria-disabled":!d,children:e.expandAll}),t(A,{type:"button",variant:"secondary",onClick:H,"aria-label":e.collapseAllNodes,disabled:!d,"aria-disabled":!d,children:e.collapseAll}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("user")},"aria-label":e.addUserAria,disabled:!m,"aria-disabled":!m,children:e.addUser}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("team")},"aria-label":e.addTeamAria,disabled:!m,"aria-disabled":!m,children:e.addTeam}),t(A,{type:"button",variant:"primary",disabled:!c,"aria-disabled":!c,"aria-label":e.editSelectedAria,onClick:()=>{if(!c)return;const s=r,M=n==null?void 0:n.find(z=>z.id===s[0]);(M==null?void 0:M.type)==="user"?(v("edit"),T("user")):(v("edit"),T("team"))},children:e.editSelected}),t(A,{type:"button",variant:"secondary",disabled:!C||o,"aria-disabled":!C||o,"aria-label":e.removeSelectedAria,onClick:()=>{if(!C||o)return;const s=r;if(s.length===1){const M=n==null?void 0:n.find(J=>J.id===s[0]);if(!M)return;(n==null?void 0:n.some(J=>J.parentId===M.id))?(K({title:M.type==="user"?e.cannotDeleteUser:e.cannotDeleteTeam,body:M.type==="user"?e.cannotDeleteUserMessage:e.cannotDeleteTeamMessage,confirmLabel:void 0,blocked:!0}),q([]),V(!0)):(K({title:M.type==="user"?e.removeUserConfirm:e.deleteTeamConfirm,body:M.type==="user"?e.removeUserMessage:e.deleteTeamMessage,confirmLabel:M.type==="user"?e.remove:e.delete,blocked:!1}),q(s),V(!0))}else K({title:e.removeItemsConfirm.replace("{count}",s.length.toString()),body:e.removeItemsMessage,confirmLabel:e.remove,blocked:!1}),q(s),V(!0)},children:e.remove})]})})})(),f?D("div",{className:"acm-structure-panel",children:[o?D("div",{className:"acm-structure-working","aria-live":"polite",children:[t(le,{size:"small"})," ",e.processing]}):null,f==="user"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(Ne,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null,f==="team"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(ze,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId,description:s.description}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label,s.description),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null]}):null,D(ae,{variant:"secondary",className:`acm-structure-tree-card ${o?"is-working":""}`,children:[g&&g.text?t(re,{className:"acm-structure-panel__notification",type:g.type||"success",variant:"secondary",heading:g.text}):null,!p&&!o&&n&&n.length===0?t(re,{className:"acm-structure-panel__notification",type:"warning",variant:"secondary",heading:e.noStructureData}):null,!p&&o?t("div",{className:"acm-structure-tree-overlay","aria-live":"polite",children:t(le,{size:"medium"})}):null,p?t("div",{className:"acm-structure-tree-content",children:t(Fe,{rows:8})}):t("div",{className:"acm-structure-tree-content",children:t(Ee,{rootId:null,items:a,expandedIds:h,selectedId:y,selectedIds:w,onExpandedChange:S,onSelectedChange:k,onSelectedIdsChange:N,renderExpander:({expanded:r,toggle:c})=>t("button",{type:"button",className:`acm-structure-expander acm-structure-expander-button ${r?"is-open":""}`,"aria-label":r?e.collapse:e.expand,onClick:C=>{C.stopPropagation(),c()},children:r?"−":"+"}),renderNode:({item:r,hasChildren:c,select:C,expander:s,checkbox:M,icon:z})=>{var J;return D("div",{className:"acm-structure-row",onClick:C,children:[c?s?t("span",{onClick:B=>B.stopPropagation(),children:s()}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}),t("span",{className:"acm-structure-handle","aria-hidden":!0}),z?t("span",{onClick:B=>B.stopPropagation(),children:z()}):t("span",{className:`acm-structure-icon ${((J=n==null?void 0:n.find(B=>B.id===r.id))==null?void 0:J.type)==="team"?"is-team":"is-user"}`,"aria-hidden":!0}),M?t("span",{onClick:B=>B.stopPropagation(),children:M()}):null,t("span",{className:"acm-structure-label",children:r.label}),(()=>{const B=n==null?void 0:n.find(se=>se.id===r.id),ue=(B==null?void 0:B.type)==="team"&&B.description||"";return ue?t(A,{type:"button",variant:"secondary",onClick:se=>{se.stopPropagation(),X({id:r.id,text:ue})},"aria-label":e.showDescription,className:"acm-structure-description-button",children:"?"}):null})()]})},draggable:()=>!o&&m,canDrop:(r,c)=>{if(!m||r===c)return!1;const C=n==null?void 0:n.find(s=>s.id===r);return C&&C.parentId===c?!1:!l(c,r)},onMove:async({id:r,newParentId:c})=>{m&&await F(r,c)}})})]}),L?t(ye,{open:L,onClose:()=>{o||(V(!1),q([]))},children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:$.title}),t("div",{children:$.body}),t("div",{className:"acm-structure-modal-actions",children:$.blocked?t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.ok}):D(de,{children:[t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.cancel}),t(A,{type:"button",variant:"primary",disabled:o,onClick:async()=>{await G(ne),V(!1),q([])},children:o?$.confirmLabel===e.delete?e.deleting:e.removing:$.confirmLabel||e.remove})]})})]})}):null,Q?t(ye,{open:!!Q,onClose:()=>X(null),children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:e.teamDescription}),t("div",{children:Q.text}),t("div",{className:"acm-structure-modal-actions",children:t(A,{type:"button",variant:"secondary",onClick:()=>X(null),children:e.close})})]})}):null]});return E!=null&&E.StructureData?t(ve,{name:"StructureData",slot:E.StructureData,context:{structureData:_,Default:R}}):R}),He=()=>{const u=j({fetchPermissionsError:"Company.CompanyStructure.messages.fetchPermissionsError"}),[E,m]=I(null),[d,e]=I(!0),[g,i]=I(null),n=O(async()=>{var p,o;try{e(!0),i(null);const{roleResponse:h}=await fe(),S=(o=(p=h==null?void 0:h.data)==null?void 0:p.customer)==null?void 0:o.role,y=Ce(S);m(y)}catch(h){i(h instanceof Error?h:new Error(u.fetchPermissionsError))}finally{e(!1)}},[u.fetchPermissionsError]);return Z(()=>{let p=!0;return(async()=>{var h,S;try{e(!0),i(null);const{roleResponse:y}=await fe();if(!p)return;const k=(S=(h=y==null?void 0:y.data)==null?void 0:h.customer)==null?void 0:S.role,w=Ce(k);m(w)}catch(y){if(!p)return;i(y instanceof Error?y:new Error(u.fetchPermissionsError))}finally{p&&e(!1)}})(),()=>{p=!1}},[]),{permissions:E,loading:d,error:g,refreshPermissions:n}},Ye="/customer/company/create",qe=({className:u,children:E,createCompanyAccountUrl:m=Ye,...d})=>{const e=j({individualUserMessage:"Company.CustomerCompanyInfo.individualUserMessage",createAccountCta:"Company.CustomerCompanyInfo.createAccountCta"}),g=e.individualUserMessage||"You don't have a company account yet.";return t(ae,{variant:"secondary",className:he(["company-management-company-structure-card",u]),...d,children:D("div",{children:[t(re,{type:"warning",variant:"secondary",heading:g,icon:t(Ve,{}),className:"company-management-company-structure-card__alert","data-testid":"company-structure-inline-alert"}),t("div",{className:"company-management-company-structure-card__cta",children:t(A,{as:"a",href:m,variant:"primary","data-testid":"company-structure-create-company-button",children:e.createAccountCta||"Create a Company Account"})})]})})},yt=({className:u,withHeader:E=!1,slots:m,isAuthenticated:d=!1,onRedirectLogin:e,onRedirectAccount:g})=>{const i=j({containerTitle:"Company.CompanyStructure.containerTitle"}),{permissions:n,refreshPermissions:p}=He(),[o,h]=I("loading");return Ie(p),Z(()=>{let S=!0;return(async()=>{try{if(!d){S&&h("redirect-login");return}if(!await Te()){S&&(console.log("Company registration disabled - redirecting to account dashboard"),h("redirect-account"));return}await we()?S&&h("show-structure"):S&&h("show-empty")}catch(y){console.error("Error in CompanyStructure - redirecting to login page:",y),S&&h("redirect-login")}})(),()=>{S=!1}},[d]),Z(()=>{o==="redirect-login"&&e&&e(),o==="redirect-account"&&g&&g()},[o,e,g]),o==="loading"||o==="redirect-login"||o==="redirect-account"?null:o==="show-empty"?t(qe,{className:u}):o==="show-structure"?D("div",{className:he(["account-company-structure",u]),children:[E?t(be,{title:i.containerTitle,divider:!1,className:"company-structure__title"}):null,t(Oe,{slots:m,permissions:n})]}):null};export{yt as CompanyStructure,yt as default};
4
4
  //# sourceMappingURL=CompanyStructure.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as n,jsxs as N}from"@dropins/tools/preact-jsx-runtime.js";import{useState as U,useRef as D,useMemo as z,useCallback as u,useEffect as V}from"@dropins/tools/preact-hooks.js";import{Button as L,InLineAlert as j,Picker as Z,Modal as R}from"@dropins/tools/components.js";import{u as H,T as J}from"../chunks/useUserPermissions.js";import{C as $}from"../chunks/CompanyUserForm.js";import{classes as Q}from"@dropins/tools/lib.js";import{u as W}from"../chunks/useCustomerCompanyInfo.js";import"@dropins/tools/event-bus.js";import{u as q}from"../chunks/useInLineAlert.js";import{g as X,u as Y}from"../chunks/updateCompanyUserStatus.js";import{useText as K}from"@dropins/tools/i18n.js";import{d as ee}from"../chunks/updateCompanyUser.js";import{f as ae}from"../chunks/fetchUserPermissions.js";import{u as te}from"../chunks/useCompanyContextListener.js";import{C as ne}from"../chunks/CompanyLoaders.js";import"@dropins/tools/preact.js";import"../chunks/company-permissions.js";import"@dropins/tools/preact-compat.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/fetch-error.js";import"../chunks/getCustomerCompany.js";const se=s=>{try{return atob(s)}catch{return s}},re=s=>!s||typeof s!="string"?s:se(s),oe=(s,i)=>!s||typeof s!="string"?"":s==="ACTIVE"&&i.statusActive?i.statusActive:s==="INACTIVE"&&i.statusInactive?i.statusInactive:s.charAt(0).toUpperCase()+s.slice(1).toLowerCase(),ie=(s,i)=>{const l=(s==null?void 0:s.trim())||"",c=(i==null?void 0:i.trim())||"";return`${l} ${c}`.trim()},le=({filterType:s,onFilterChange:i,translations:l})=>{const c=[{type:"all",label:l.showAllUsers,ariaLabel:l.showAllUsers},{type:"active",label:l.showActiveUsers,ariaLabel:l.showActiveUsers},{type:"inactive",label:l.showInactiveUsers,ariaLabel:l.showInactiveUsers}];return n("div",{className:"filterButtons",role:"group","aria-label":l.ariaFilterOptions,children:c.filter(a=>a.type!==s).map(a=>n(L,{variant:"tertiary",onClick:()=>i(a.type),"aria-label":a.ariaLabel,children:a.label},a.type))})},ce=20,G=1,me=({translations:s})=>{const[i,l]=U([]),[c,a]=U(!1),[o,h]=U(G),[d,k]=U(ce),[P,B]=U("all"),[b,I]=U(0),[m,E]=U(1),[_,M]=U(""),[w,A]=U(null),t=D(s);t.current=s;const f=z(()=>{switch(P){case"active":return{status:"ACTIVE"};case"inactive":return{status:"INACTIVE"};default:return}},[P]),C=u(async()=>{a(!0);try{const e=await X({pageSize:d,currentPage:o,filter:f});l(e.users),I(e.totalCount||e.users.length),E(e.pageInfo.totalPages),M(t.current.ariaDataLoaded.replace("{count}",e.users.length.toString()))}catch{l([]),I(0),E(1),M(t.current.ariaDataError)}finally{a(!1)}},[d,o,f]),y=u(async()=>{try{const{allowedIds:e}=await ae();A(e)}catch{A(new Set)}},[]);V(()=>{C()},[C]),V(()=>{y()},[y]);const T=u(e=>{B(e),h(G)},[]),S=u(e=>{let g;if(typeof e=="string")g=e;else if("target"in e&&e.target&&"value"in e.target)g=e.target.value;else return;const v=parseInt(g,10);isNaN(v)||(k(v),h(G))},[]),x=u(()=>{o>1&&h(o-1)},[o]),F=u(()=>{o<m&&h(o+1)},[o,m]),r=(w==null?void 0:w.has("Magento_Company::users_edit"))||!1,p=u(async()=>{await y(),await C()},[y,C]);return{users:i,userPermissions:w,currentPage:o,pageSize:d,totalItems:b,totalPages:m,filterType:P,filter:f,loading:c,announcement:_,canEditUsers:r,handleFilterChange:T,handlePageSizeChange:S,handlePreviousPage:x,handleNextPage:F,refreshUsers:p}},O=s=>{const[i,l]=U(!1),[c,a]=U(null),o=u(d=>{d&&a(d),l(!0)},[]),h=u(()=>{l(!1),a(null),s==null||s()},[s]);return{isOpen:i,selectedId:c,open:o,close:h}},pe=({className:s,userId:i,userStatus:l,onClose:c,isOpen:a=!1,onSuccess:o,...h})=>{const[d,k]=U(!1),[P,B]=U(!1),{inLineAlertProps:b,showError:I,clearAlert:m}=q(),{companyInfo:E}=W(),_=D(null),M=D(null),w=`modal-title-${i}`,A=`modal-desc-${i}`,t=K({title:"Company.CompanyUsers.managementModal.title",setActiveText:"Company.CompanyUsers.managementModal.setActiveText",setInactiveText:"Company.CompanyUsers.managementModal.setInactiveText",deleteText:"Company.CompanyUsers.managementModal.deleteText",setActiveButton:"Company.CompanyUsers.managementModal.setActiveButton",setInactiveButton:"Company.CompanyUsers.managementModal.setInactiveButton",settingActiveButton:"Company.CompanyUsers.managementModal.settingActiveButton",settingInactiveButton:"Company.CompanyUsers.managementModal.settingInactiveButton",deleteButton:"Company.CompanyUsers.managementModal.deleteButton",deletingButton:"Company.CompanyUsers.managementModal.deletingButton",cancelButton:"Company.CompanyUsers.managementModal.cancelButton",setActiveErrorGeneric:"Company.CompanyUsers.managementModal.setActiveErrorGeneric",setActiveErrorSpecific:"Company.CompanyUsers.managementModal.setActiveErrorSpecific",setInactiveErrorGeneric:"Company.CompanyUsers.managementModal.setInactiveErrorGeneric",setInactiveErrorSpecific:"Company.CompanyUsers.managementModal.setInactiveErrorSpecific",deleteErrorGeneric:"Company.CompanyUsers.managementModal.deleteErrorGeneric",deleteErrorSpecific:"Company.CompanyUsers.managementModal.deleteErrorSpecific",setActiveSuccess:"Company.CompanyUsers.managementModal.setActiveSuccess",setInactiveSuccess:"Company.CompanyUsers.managementModal.setInactiveSuccess",deleteSuccess:"Company.CompanyUsers.managementModal.deleteSuccess",ariaCloseModal:"Company.CompanyUsers.managementModal.ariaLabels.closeModal",ariaModalDescription:"Company.CompanyUsers.managementModal.ariaLabels.modalDescription"}),f=u(r=>{const p=(E==null?void 0:E.companyName)||"";return r.replace(/%1/g,p)},[E==null?void 0:E.companyName]),C=u(async()=>{if(P)return;const r=l==="ACTIVE"?"INACTIVE":"ACTIVE",p=r==="ACTIVE";B(!0),m();try{if((await Y({id:i,status:r})).success){const g=p?t.setActiveSuccess:t.setInactiveSuccess;o&&o(g),c()}else{const g=p?t.setActiveErrorSpecific:t.setInactiveErrorSpecific;I(f(g))}}catch(e){const g=e instanceof Error?e.message:p?t.setActiveErrorGeneric:t.setInactiveErrorGeneric;I(f(g))}finally{B(!1)}},[i,l,c,P,m,I,f,t.setActiveErrorSpecific,t.setInactiveErrorSpecific,t.setActiveErrorGeneric,t.setInactiveErrorGeneric,t.setActiveSuccess,t.setInactiveSuccess,o]),y=u(async()=>{if(!d){k(!0),m();try{(await ee({id:i})).success?(o&&o(t.deleteSuccess),c()):I(f(t.deleteErrorSpecific))}catch(r){const p=r instanceof Error?r.message:t.deleteErrorGeneric;I(f(p))}finally{k(!1)}}},[i,c,d,m,I,f,t.deleteErrorSpecific,t.deleteErrorGeneric,t.deleteSuccess,o]),T=u(()=>{m(),c()},[c,m]),S=u(r=>{if(r.key==="Escape"&&(m(),c()),r.key==="Tab"){const p=_.current;if(!p)return;const e=p.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),g=e[0],v=e[e.length-1];r.shiftKey?document.activeElement===g&&(v.focus(),r.preventDefault()):document.activeElement===v&&(g.focus(),r.preventDefault())}},[c,m]),x=u(r=>{r.target===r.currentTarget&&(m(),c())},[c,m]),F=u(()=>{m(),c()},[c,m]);return V(()=>{if(a)return M.current=document.activeElement,document.addEventListener("keydown",S),setTimeout(()=>{const r=_.current;if(r){const p=r.querySelector("button");p?p.focus():r.focus()}},100),()=>{document.removeEventListener("keydown",S)};M.current&&M.current.focus()},[a,S]),a?n("div",{className:Q(["company-management-company-users-management-modal-overlay",s]),onClick:x,...h,children:N("div",{ref:_,className:"company-management-company-users-management-modal",role:"dialog","aria-modal":"true","aria-labelledby":w,"aria-describedby":A,tabIndex:-1,children:[N("div",{className:"company-management-company-users-management-modal__header",children:[n("h2",{id:w,className:"company-management-company-users-management-modal__title",children:t.title}),n("button",{className:"company-management-company-users-management-modal__close",onClick:F,"aria-label":t.ariaCloseModal,children:"×"})]}),N("div",{id:A,className:"company-management-company-users-management-modal__content",children:[n("p",{className:"company-management-company-users-management-modal__text",children:l==="ACTIVE"?t.setInactiveText:t.setActiveText}),n("p",{className:"company-management-company-users-management-modal__text",children:t.deleteText})]}),(b==null?void 0:b.text)&&n("div",{className:"company-management-company-users-management-modal__alert",role:"alert","aria-live":"assertive",children:n(j,{type:"error",heading:b.text,icon:b.icon,"data-testid":"companyUsersManagementModalAlert"})}),N("div",{className:"company-management-company-users-management-modal__actions",children:[n(L,{variant:"primary",onClick:C,disabled:P,className:"company-management-company-users-management-modal__button-primary",children:P?l==="ACTIVE"?t.settingInactiveButton:t.settingActiveButton:l==="ACTIVE"?t.setInactiveButton:t.setActiveButton}),n(L,{variant:"tertiary",onClick:y,disabled:d,className:"company-management-company-users-management-modal__button-delete",children:d?t.deletingButton:t.deleteButton}),n(L,{variant:"secondary",onClick:T,className:"company-management-company-users-management-modal__button-cancel",children:t.cancelButton})]})]})}):null},de=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],De=({children:s,className:i,...l})=>{const{permissions:c}=H(),a=K({showAllUsers:"Company.CompanyUsers.filters.showAll",showActiveUsers:"Company.CompanyUsers.filters.showActive",showInactiveUsers:"Company.CompanyUsers.filters.showInactive",idColumn:"Company.CompanyUsers.columns.id",nameColumn:"Company.CompanyUsers.columns.name",emailColumn:"Company.CompanyUsers.columns.email",roleColumn:"Company.CompanyUsers.columns.role",teamColumn:"Company.CompanyUsers.columns.team",statusColumn:"Company.CompanyUsers.columns.status",actionsColumn:"Company.CompanyUsers.columns.actions",statusActive:"Company.CompanyUsers.status.active",statusInactive:"Company.CompanyUsers.status.inactive",emptyTeam:"Company.CompanyUsers.emptyTeam",emptyActions:"Company.CompanyUsers.emptyActions",itemsText:"Company.CompanyUsers.pagination.itemsCount",itemsPerPageLabel:"Company.CompanyUsers.pagination.itemsPerPage",showLabel:"Company.CompanyUsers.pagination.show",perPageLabel:"Company.CompanyUsers.pagination.perPage",previousPage:"Company.CompanyUsers.pagination.previous",nextPage:"Company.CompanyUsers.pagination.next",pageInfo:"Company.CompanyUsers.pagination.pageInfo",ariaLoadingUsers:"Company.CompanyUsers.ariaLabels.loadingUsers",ariaUsersTable:"Company.CompanyUsers.ariaLabels.usersTable",ariaFilterOptions:"Company.CompanyUsers.ariaLabels.filterOptions",ariaPaginationNav:"Company.CompanyUsers.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyUsers.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyUsers.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyUsers.ariaLabels.nextPageFull",ariaCurrentPage:"Company.CompanyUsers.ariaLabels.currentPage",ariaShowingUsers:"Company.CompanyUsers.ariaLabels.showingUsers",ariaDataLoaded:"Company.CompanyUsers.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyUsers.ariaLabels.dataError",ariaPageNavigation:"Company.CompanyUsers.ariaLabels.pageNavigation",manageUser:"Company.CompanyUsers.actions.manage",editUser:"Company.CompanyUsers.actions.edit",ariaManageUser:"Company.CompanyUsers.ariaLabels.manageUser",ariaEditUser:"Company.CompanyUsers.ariaLabels.editUser",addNewUser:"Company.CompanyUsers.actions.addNewUser"}),{users:o,loading:h,currentPage:d,pageSize:k,filterType:P,totalItems:B,totalPages:b,announcement:I,canEditUsers:m,handleFilterChange:E,handlePageSizeChange:_,handlePreviousPage:M,handleNextPage:w,refreshUsers:A}=me({translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}}),t=D(a);t.current=a;const f=u(()=>{A()},[A]);te(f);const C=O(A),y=O(A),T=O(A),{inLineAlertProps:S,handleSetInLineAlert:x}=q(),F=z(()=>{const e=t.current;return[{key:"id",label:e.idColumn},{key:"name",label:e.nameColumn},{key:"email",label:e.emailColumn},{key:"role",label:e.roleColumn},{key:"team",label:e.teamColumn},{key:"status",label:e.statusColumn},{key:"actions",label:e.actionsColumn}]},[]),r=z(()=>o.map(e=>{const g=ie(e.firstName,e.lastName),v=t.current;return{id:re(e.id),name:g,email:e.email,role:e.role,team:e.team||v.emptyTeam,status:oe(e.status,v),actions:m?N("div",{className:"user-actions",children:[n(L,{variant:"tertiary",onClick:()=>y.open(e.id),"aria-label":v.ariaEditUser.replace("{name}",g),className:"edit-user-button",children:v.editUser}),n(L,{variant:"tertiary",onClick:()=>C.open(e.id),"aria-label":v.ariaManageUser.replace("{name}",g),className:"manage-user-button",children:v.manageUser})]}):n("span",{className:"no-actions",children:v.emptyActions})}}),[o,m,y,C]),p=z(()=>o.find(e=>e.id===C.selectedId),[o,C.selectedId]);return N("section",{className:i,...l,children:[n("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:I}),n(le,{filterType:P,onFilterChange:E,translations:{showAllUsers:a.showAllUsers,showActiveUsers:a.showActiveUsers,showInactiveUsers:a.showInactiveUsers,ariaFilterOptions:a.ariaFilterOptions}}),S&&S.text?n(j,{className:"company-users__alert",type:S.type||"success",variant:"secondary",heading:S.text,icon:S.icon}):null,n("div",{"aria-busy":h,children:h?N("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:[n(ne,{testId:"companyUsersTableLoader"}),n("span",{className:"sr-only",children:a.ariaLoadingUsers})]}):n(J,{className:"companyUsersTable",columns:F,rowData:r,mobileLayout:"stacked","aria-label":a.ariaUsersTable,summary:a.ariaShowingUsers.replace("{count}",o.length.toString())})}),N("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[n("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsText.replace("{count}",B.toString())}),b>1&&N("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[n(L,{variant:"secondary",onClick:M,disabled:d===1,"aria-label":a.ariaPreviousPageFull.replace("{current}",d.toString()),children:a.previousPage}),n("span",{"aria-current":"page","aria-live":"polite",children:a.pageInfo.replace("{current}",d.toString()).replace("{total}",b.toString())}),n(L,{variant:"secondary",onClick:w,disabled:d===b,"aria-label":a.ariaNextPageFull.replace("{current}",d.toString()),children:a.nextPage})]}),N("div",{className:"pageSizeSelector",children:[n("label",{htmlFor:"page-size-select",id:"page-size-label",children:n("span",{children:a.showLabel})}),n(Z,{id:"page-size-select",name:"pageSize",value:k.toString(),options:de,onChange:_,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),n("span",{id:"page-size-description",children:a.perPageLabel})]})]}),m&&n("div",{className:"addUserButtonContainer",children:n(L,{variant:"primary",onClick:()=>T.open(),"aria-label":a.addNewUser,children:a.addNewUser})}),s,T.isOpen&&m&&n(R,{open:T.isOpen,onClose:T.close,size:"medium",children:n($,{mode:"add",entityId:void 0,parentStructureId:void 0,permissions:c,onSaved:T.close,onCancel:T.close,onError:e=>{x({text:e,type:"error"})},onSuccess:e=>{x({text:e,type:"success"})}})}),y.selectedId&&y.isOpen&&m&&n(R,{open:y.isOpen,onClose:y.close,size:"medium",children:n($,{mode:"edit",entityId:y.selectedId,parentStructureId:void 0,permissions:c,onSaved:y.close,onCancel:y.close,onError:e=>{x({text:e,type:"error"})},onSuccess:e=>{x({text:e,type:"success"})}})}),C.selectedId&&m&&p&&n(pe,{isOpen:C.isOpen,userId:C.selectedId,userStatus:p.status||"ACTIVE",onClose:C.close,onSuccess:e=>{x({text:e,type:"success"})}})]})};export{De as CompanyUsers,De as default};
3
+ import{jsx as r,jsxs as w}from"@dropins/tools/preact-jsx-runtime.js";import{useState as f,useRef as z,useMemo as D,useCallback as u,useEffect as V}from"@dropins/tools/preact-hooks.js";import{Button as F,InLineAlert as K,ActionButton as $,Pagination as J,Picker as Q,Modal as j}from"@dropins/tools/components.js";import{u as W,T as X}from"../chunks/useUserPermissions.js";import{C as q}from"../chunks/CompanyUserForm.js";import{classes as Y}from"@dropins/tools/lib.js";import{u as ee}from"../chunks/useCustomerCompanyInfo.js";import{u as Z}from"../chunks/useInLineAlert.js";import{g as ae,u as te}from"../chunks/updateCompanyUserStatus.js";import{useText as H}from"@dropins/tools/i18n.js";import{d as ne}from"../chunks/updateCompanyUser.js";import{f as se}from"../chunks/fetchUserPermissions.js";import{u as re}from"../chunks/useCompanyContextListener.js";import"@dropins/tools/preact.js";import"../chunks/company-permissions.js";import"@dropins/tools/preact-compat.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";import"../chunks/fetch-error.js";import"../chunks/CompanyLoaders.js";import"../chunks/getCustomerCompany.js";const oe=s=>{try{return atob(s)}catch{return s}},ie=s=>!s||typeof s!="string"?s:oe(s),ce=(s,l)=>!s||typeof s!="string"?"":s==="ACTIVE"&&l.statusActive?l.statusActive:s==="INACTIVE"&&l.statusInactive?l.statusInactive:s.charAt(0).toUpperCase()+s.slice(1).toLowerCase(),le=(s,l)=>{const m=(s==null?void 0:s.trim())||"",p=(l==null?void 0:l.trim())||"";return`${m} ${p}`.trim()},me=({filterType:s,onFilterChange:l,translations:m})=>{const p=[{type:"all",label:m.showAllUsers,ariaLabel:m.showAllUsers},{type:"active",label:m.showActiveUsers,ariaLabel:m.showActiveUsers},{type:"inactive",label:m.showInactiveUsers,ariaLabel:m.showInactiveUsers}];return r("div",{className:"filterButtons",role:"group","aria-label":m.ariaFilterOptions,children:p.filter(n=>n.type!==s).map(n=>r(F,{variant:"tertiary",onClick:()=>l(n.type),"aria-label":n.ariaLabel,children:n.label},n.type))})},pe=10,G=1,de=({translations:s})=>{const[l,m]=f([]),[p,n]=f(!1),[o,U]=f(G),[g,N]=f(pe),[A,P]=f("all"),[S,b]=f(0),[c,I]=f(1),[L,x]=f(""),[v,T]=f(null),t=z(s);t.current=s;const d=D(()=>{switch(A){case"active":return{status:"ACTIVE"};case"inactive":return{status:"INACTIVE"};default:return}},[A]),y=u(async()=>{n(!0);try{const a=await ae({pageSize:g,currentPage:o,filter:d});m(a.users),b(a.totalCount||a.users.length),I(a.pageInfo.totalPages),x(t.current.ariaDataLoaded.replace("{count}",a.users.length.toString()))}catch{m([]),b(0),I(1),x(t.current.ariaDataError)}finally{n(!1)}},[g,o,d]),h=u(async()=>{try{const{allowedIds:a}=await se();T(a)}catch{T(new Set)}},[]);V(()=>{y()},[y]),V(()=>{h()},[h]);const M=u(a=>{P(a),U(G)},[]),E=u(a=>{let _;if(typeof a=="string")_=a;else if("target"in a&&a.target&&"value"in a.target)_=a.target.value;else return;const R=parseInt(_,10);isNaN(R)||(N(R),U(G))},[]),B=u(()=>{o>1&&U(o-1)},[o]),k=u(()=>{o<c&&U(o+1)},[o,c]),i=u(a=>{a>=1&&a<=c&&U(a)},[c]),e=(v==null?void 0:v.has("Magento_Company::users_edit"))||!1,C=u(async()=>{await h(),await y()},[h,y]);return{users:l,userPermissions:v,currentPage:o,pageSize:g,totalItems:S,totalPages:c,filterType:A,filter:d,loading:p,announcement:L,canEditUsers:e,handleFilterChange:M,handlePageSizeChange:E,handlePreviousPage:B,handleNextPage:k,handlePageChange:i,refreshUsers:C}},O=s=>{const[l,m]=f(!1),[p,n]=f(null),o=u(g=>{g&&n(g),m(!0)},[]),U=u(()=>{m(!1),n(null),s==null||s()},[s]);return{isOpen:l,selectedId:p,open:o,close:U}},ue=({className:s,userId:l,userStatus:m,onClose:p,isOpen:n=!1,onSuccess:o,...U})=>{const[g,N]=f(!1),[A,P]=f(!1),{inLineAlertProps:S,showError:b,clearAlert:c}=Z(),{companyInfo:I}=ee(),L=z(null),x=z(null),v=`modal-title-${l}`,T=`modal-desc-${l}`,t=H({title:"Company.CompanyUsers.managementModal.title",setActiveText:"Company.CompanyUsers.managementModal.setActiveText",setInactiveText:"Company.CompanyUsers.managementModal.setInactiveText",deleteText:"Company.CompanyUsers.managementModal.deleteText",setActiveButton:"Company.CompanyUsers.managementModal.setActiveButton",setInactiveButton:"Company.CompanyUsers.managementModal.setInactiveButton",settingActiveButton:"Company.CompanyUsers.managementModal.settingActiveButton",settingInactiveButton:"Company.CompanyUsers.managementModal.settingInactiveButton",deleteButton:"Company.CompanyUsers.managementModal.deleteButton",deletingButton:"Company.CompanyUsers.managementModal.deletingButton",cancelButton:"Company.CompanyUsers.managementModal.cancelButton",setActiveErrorGeneric:"Company.CompanyUsers.managementModal.setActiveErrorGeneric",setActiveErrorSpecific:"Company.CompanyUsers.managementModal.setActiveErrorSpecific",setInactiveErrorGeneric:"Company.CompanyUsers.managementModal.setInactiveErrorGeneric",setInactiveErrorSpecific:"Company.CompanyUsers.managementModal.setInactiveErrorSpecific",deleteErrorGeneric:"Company.CompanyUsers.managementModal.deleteErrorGeneric",deleteErrorSpecific:"Company.CompanyUsers.managementModal.deleteErrorSpecific",setActiveSuccess:"Company.CompanyUsers.managementModal.setActiveSuccess",setInactiveSuccess:"Company.CompanyUsers.managementModal.setInactiveSuccess",deleteSuccess:"Company.CompanyUsers.managementModal.deleteSuccess",ariaCloseModal:"Company.CompanyUsers.managementModal.ariaLabels.closeModal",ariaModalDescription:"Company.CompanyUsers.managementModal.ariaLabels.modalDescription"}),d=u(i=>{const e=(I==null?void 0:I.companyName)||"";return i.replace(/%1/g,e)},[I==null?void 0:I.companyName]),y=u(async()=>{if(A)return;const i=m==="ACTIVE"?"INACTIVE":"ACTIVE",e=i==="ACTIVE";P(!0),c();try{if((await te({id:l,status:i})).success){const a=e?t.setActiveSuccess:t.setInactiveSuccess;o&&o(a),p()}else{const a=e?t.setActiveErrorSpecific:t.setInactiveErrorSpecific;b(d(a))}}catch(C){const a=C instanceof Error?C.message:e?t.setActiveErrorGeneric:t.setInactiveErrorGeneric;b(d(a))}finally{P(!1)}},[l,m,p,A,c,b,d,t.setActiveErrorSpecific,t.setInactiveErrorSpecific,t.setActiveErrorGeneric,t.setInactiveErrorGeneric,t.setActiveSuccess,t.setInactiveSuccess,o]),h=u(async()=>{if(!g){N(!0),c();try{(await ne({id:l})).success?(o&&o(t.deleteSuccess),p()):b(d(t.deleteErrorSpecific))}catch(i){const e=i instanceof Error?i.message:t.deleteErrorGeneric;b(d(e))}finally{N(!1)}}},[l,p,g,c,b,d,t.deleteErrorSpecific,t.deleteErrorGeneric,t.deleteSuccess,o]),M=u(()=>{c(),p()},[p,c]),E=u(i=>{if(i.key==="Escape"&&(c(),p()),i.key==="Tab"){const e=L.current;if(!e)return;const C=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),a=C[0],_=C[C.length-1];i.shiftKey?document.activeElement===a&&(_.focus(),i.preventDefault()):document.activeElement===_&&(a.focus(),i.preventDefault())}},[p,c]),B=u(i=>{i.target===i.currentTarget&&(c(),p())},[p,c]),k=u(()=>{c(),p()},[p,c]);return V(()=>{if(n)return x.current=document.activeElement,document.addEventListener("keydown",E),setTimeout(()=>{const i=L.current;if(i){const e=i.querySelector("button");e?e.focus():i.focus()}},100),()=>{document.removeEventListener("keydown",E)};x.current&&x.current.focus()},[n,E]),n?r("div",{className:Y(["company-management-company-users-management-modal-overlay",s]),onClick:B,...U,children:w("div",{ref:L,className:"company-management-company-users-management-modal",role:"dialog","aria-modal":"true","aria-labelledby":v,"aria-describedby":T,tabIndex:-1,children:[w("div",{className:"company-management-company-users-management-modal__header",children:[r("h2",{id:v,className:"company-management-company-users-management-modal__title",children:t.title}),r("button",{className:"company-management-company-users-management-modal__close",onClick:k,"aria-label":t.ariaCloseModal,children:"×"})]}),w("div",{id:T,className:"company-management-company-users-management-modal__content",children:[r("p",{className:"company-management-company-users-management-modal__text",children:m==="ACTIVE"?t.setInactiveText:t.setActiveText}),r("p",{className:"company-management-company-users-management-modal__text",children:t.deleteText})]}),(S==null?void 0:S.text)&&r("div",{className:"company-management-company-users-management-modal__alert",role:"alert","aria-live":"assertive",children:r(K,{type:"error",heading:S.text,icon:S.icon,"data-testid":"companyUsersManagementModalAlert"})}),w("div",{className:"company-management-company-users-management-modal__actions",children:[r(F,{variant:"primary",onClick:y,disabled:A,className:"company-management-company-users-management-modal__button-primary",children:A?m==="ACTIVE"?t.settingInactiveButton:t.settingActiveButton:m==="ACTIVE"?t.setInactiveButton:t.setActiveButton}),r(F,{variant:"tertiary",onClick:h,disabled:g,className:"company-management-company-users-management-modal__button-delete",children:g?t.deletingButton:t.deleteButton}),r(F,{variant:"secondary",onClick:M,className:"company-management-company-users-management-modal__button-cancel",children:t.cancelButton})]})]})}):null},ye=[{text:"10",value:"10"},{text:"20",value:"20"},{text:"50",value:"50"},{text:"100",value:"100"}],Ge=({children:s,className:l,...m})=>{const{permissions:p}=W(),n=H({showAllUsers:"Company.CompanyUsers.filters.showAll",showActiveUsers:"Company.CompanyUsers.filters.showActive",showInactiveUsers:"Company.CompanyUsers.filters.showInactive",idColumn:"Company.CompanyUsers.columns.id",nameColumn:"Company.CompanyUsers.columns.name",emailColumn:"Company.CompanyUsers.columns.email",roleColumn:"Company.CompanyUsers.columns.role",teamColumn:"Company.CompanyUsers.columns.team",statusColumn:"Company.CompanyUsers.columns.status",actionsColumn:"Company.CompanyUsers.columns.actions",statusActive:"Company.CompanyUsers.status.active",statusInactive:"Company.CompanyUsers.status.inactive",emptyTeam:"Company.CompanyUsers.emptyTeam",emptyActions:"Company.CompanyUsers.emptyActions",itemsRange:"Company.CompanyUsers.pagination.itemsRange",itemsPerPageLabel:"Company.CompanyUsers.pagination.itemsPerPage",showLabel:"Company.CompanyUsers.pagination.show",previousPage:"Company.CompanyUsers.pagination.previous",nextPage:"Company.CompanyUsers.pagination.next",pageInfo:"Company.CompanyUsers.pagination.pageInfo",ariaUsersTable:"Company.CompanyUsers.ariaLabels.usersTable",ariaFilterOptions:"Company.CompanyUsers.ariaLabels.filterOptions",ariaPaginationNav:"Company.CompanyUsers.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyUsers.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyUsers.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyUsers.ariaLabels.nextPageFull",ariaCurrentPage:"Company.CompanyUsers.ariaLabels.currentPage",ariaShowingUsers:"Company.CompanyUsers.ariaLabels.showingUsers",ariaDataLoaded:"Company.CompanyUsers.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyUsers.ariaLabels.dataError",ariaPageNavigation:"Company.CompanyUsers.ariaLabels.pageNavigation",manageUser:"Company.CompanyUsers.actions.manage",editUser:"Company.CompanyUsers.actions.edit",ariaManageUser:"Company.CompanyUsers.ariaLabels.manageUser",ariaEditUser:"Company.CompanyUsers.ariaLabels.editUser",addNewUser:"Company.CompanyUsers.actions.addNewUser",noUsersFound:"Company.CompanyUsers.noUsersFound"}),{users:o,loading:U,currentPage:g,pageSize:N,filterType:A,totalItems:P,totalPages:S,announcement:b,canEditUsers:c,handleFilterChange:I,handlePageSizeChange:L,handlePageChange:x,refreshUsers:v}=de({translations:{ariaDataLoaded:n.ariaDataLoaded,ariaDataError:n.ariaDataError}}),T=z(n);T.current=n;const t=u(()=>{v()},[v]);re(t);const d=O(v),y=O(v),h=O(v),{inLineAlertProps:M,handleSetInLineAlert:E}=Z(),B=D(()=>{const e=T.current;return[{key:"id",label:e.idColumn},{key:"name",label:e.nameColumn},{key:"email",label:e.emailColumn},{key:"role",label:e.roleColumn},{key:"team",label:e.teamColumn},{key:"status",label:e.statusColumn},{key:"actions",label:e.actionsColumn}]},[]),k=D(()=>o.map(e=>{const C=le(e.firstName,e.lastName),a=T.current;return{id:ie(e.id),name:C,email:e.email,role:e.role,team:e.team||a.emptyTeam,status:ce(e.status,a),actions:c?w("div",{className:"user-actions",children:[r($,{onClick:()=>y.open(e.id),"aria-label":a.ariaEditUser.replace("{name}",C),className:"edit-user-button",children:a.editUser}),r($,{onClick:()=>d.open(e.id),"aria-label":a.ariaManageUser.replace("{name}",C),className:"manage-user-button",children:a.manageUser})]}):r("span",{className:"no-actions",children:a.emptyActions})}}),[o,c,y,d]),i=D(()=>o.find(e=>e.id===d.selectedId),[o,d.selectedId]);return w("section",{className:l,...m,children:[r("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:b}),r(me,{filterType:A,onFilterChange:I,translations:{showAllUsers:n.showAllUsers,showActiveUsers:n.showActiveUsers,showInactiveUsers:n.showInactiveUsers,ariaFilterOptions:n.ariaFilterOptions}}),M&&M.text?r(K,{className:"company-users__alert",type:M.type||"success",variant:"secondary",heading:M.text,icon:M.icon}):null,w("div",{"aria-busy":U,children:[r(X,{className:"companyUsersTable",columns:B,rowData:k,mobileLayout:"stacked",loading:U,"aria-label":n.ariaUsersTable,summary:n.ariaShowingUsers.replace("{count}",o.length.toString())}),!U&&o.length===0&&r("div",{className:"companyUsersTable__empty",children:n.noUsersFound})]}),o.length>0&&w("nav",{"aria-label":n.ariaPaginationNav,className:"paginationContainer",children:[r("div",{"aria-live":"polite","aria-atomic":"true",children:(()=>{const e=P===0?0:(g-1)*N+1,C=Math.min(g*N,P);return n.itemsRange.replace("{start}",e.toString()).replace("{end}",C.toString()).replace("{total}",P.toString())})()}),S>1&&r(J,{currentPage:g,totalPages:S,onChange:x,className:"paginationButtons"}),w("div",{className:"pageSizeSelector",children:[r("label",{htmlFor:"page-size-select",id:"page-size-label",children:r("span",{children:n.showLabel})}),r(Q,{id:"page-size-select",name:"pageSize",value:N.toString(),options:ye,onChange:L,"aria-labelledby":"page-size-label"})]})]}),c&&r("div",{className:"addUserButtonContainer",children:r(F,{variant:"primary",onClick:()=>h.open(),"aria-label":n.addNewUser,children:n.addNewUser})}),s,h.isOpen&&c&&r(j,{open:h.isOpen,onClose:h.close,size:"medium",children:r(q,{mode:"add",entityId:void 0,parentStructureId:void 0,permissions:p,onSaved:h.close,onCancel:h.close,onError:e=>{E({text:e,type:"error"})},onSuccess:e=>{E({text:e,type:"success"})}})}),y.selectedId&&y.isOpen&&c&&r(j,{open:y.isOpen,onClose:y.close,size:"medium",children:r(q,{mode:"edit",entityId:y.selectedId,parentStructureId:void 0,permissions:p,onSaved:y.close,onCancel:y.close,onError:e=>{E({text:e,type:"error"})},onSuccess:e=>{E({text:e,type:"success"})}})}),d.selectedId&&c&&i&&r(ue,{isOpen:d.isOpen,userId:d.selectedId,userStatus:i.status||"ACTIVE",onClose:d.close,onSuccess:e=>{E({text:e,type:"success"})}})]})};export{Ge as CompanyUsers,Ge as default};
4
4
  //# sourceMappingURL=CompanyUsers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompanyUsers.js","sources":["/@dropins/storefront-company-management/src/lib/encoding.ts","/@dropins/storefront-company-management/src/lib/userHelpers.ts","/@dropins/storefront-company-management/src/components/CompanyUsersFilters/CompanyUsersFilters.tsx","/@dropins/storefront-company-management/src/hooks/containers/useCompanyUsers.tsx","/@dropins/storefront-company-management/src/hooks/useModal.ts","/@dropins/storefront-company-management/src/components/CompanyUsersManagementModal/CompanyUsersManagementModal.tsx","/@dropins/storefront-company-management/src/containers/CompanyUsers/CompanyUsers.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Encodes a string to base64\n * @param value - The string to encode\n * @returns The base64 encoded string\n * @throws Error if encoding fails\n */\nexport const encodeBase64 = (value: string): string => {\n try {\n return btoa(value);\n } catch (error) {\n throw new Error(`Failed to encode base64: ${error}`);\n }\n};\n\n/**\n * Decodes a base64 encoded string\n * @param encoded - The base64 encoded string to decode\n * @returns The decoded string, or the original string if decoding fails\n */\nexport const decodeBase64 = (encoded: string): string => {\n try {\n return atob(encoded);\n } catch {\n // Return original if decoding fails (graceful fallback)\n return encoded;\n }\n};\n\n/**\n * Safely encodes a user ID to base64 for API transmission\n * @param userId - The user ID to encode\n * @returns The base64 encoded user ID\n * @throws Error if userId is empty or encoding fails\n */\nexport const encodeUserId = (userId: string): string => {\n if (!userId || typeof userId !== 'string') {\n throw new Error('User ID must be a non-empty string');\n }\n \n return encodeBase64(userId);\n};\n\n/**\n * Safely decodes a base64 encoded user ID from API response\n * @param encodedUserId - The base64 encoded user ID\n * @returns The decoded user ID, or the original string if decoding fails\n */\nexport const decodeUserId = (encodedUserId: string): string => {\n if (!encodedUserId || typeof encodedUserId !== 'string') {\n return encodedUserId;\n }\n \n return decodeBase64(encodedUserId);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Formats a user status string for display\n * @param status - The raw status string (e.g., 'ACTIVE', 'INACTIVE')\n * @param translations - Translation object containing statusActive and statusInactive keys\n * @returns The formatted status string for display\n */\nexport const formatUserStatus = (status: string, translations: { statusActive?: string; statusInactive?: string }): string => {\n if (!status || typeof status !== 'string') {\n return '';\n }\n\n // Use translations for known statuses\n if (status === 'ACTIVE' && translations.statusActive) {\n return translations.statusActive;\n }\n \n if (status === 'INACTIVE' && translations.statusInactive) {\n return translations.statusInactive;\n }\n\n // Fallback to formatted string if status is unknown or no translation available\n return status.charAt(0).toUpperCase() + status.slice(1).toLowerCase();\n};\n\n/**\n * Formats a user's full name by combining first and last name\n * @param firstName - The user's first name\n * @param lastName - The user's last name\n * @returns The formatted full name, trimmed of extra spaces\n */\nexport const formatUserName = (firstName: string, lastName: string): string => {\n const first = firstName?.trim() || '';\n const last = lastName?.trim() || '';\n \n return `${first} ${last}`.trim();\n};\n\n/**\n * Checks if a user has a specific status\n * @param userStatus - The user's current status\n * @param expectedStatus - The status to check against\n * @returns true if the user has the expected status\n */\nexport const hasUserStatus = (userStatus: string, expectedStatus: string): boolean => {\n return userStatus?.toUpperCase() === expectedStatus?.toUpperCase();\n};\n\n/**\n * Gets the opposite status for toggling (ACTIVE <-> INACTIVE)\n * @param currentStatus - The current user status\n * @returns The opposite status, or the current status if not recognized\n */\nexport const getToggleStatus = (currentStatus: string): string => {\n const status = currentStatus?.toUpperCase();\n \n switch (status) {\n case 'ACTIVE':\n return 'INACTIVE';\n case 'INACTIVE':\n return 'ACTIVE';\n default:\n return currentStatus;\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Button } from '@adobe-commerce/elsie/components';\n\nexport type FilterType = 'all' | 'active' | 'inactive';\n\nexport interface CompanyUsersFiltersProps {\n filterType: FilterType;\n onFilterChange: (filter: FilterType) => void;\n translations: {\n showAllUsers: string;\n showActiveUsers: string;\n showInactiveUsers: string;\n ariaFilterOptions: string;\n };\n}\n\nexport const CompanyUsersFilters = ({\n filterType,\n onFilterChange,\n translations\n}: CompanyUsersFiltersProps) => {\n const filters: Array<{ type: FilterType; label: string; ariaLabel: string }> = [\n { type: 'all', label: translations.showAllUsers, ariaLabel: translations.showAllUsers },\n { type: 'active', label: translations.showActiveUsers, ariaLabel: translations.showActiveUsers },\n { type: 'inactive', label: translations.showInactiveUsers, ariaLabel: translations.showInactiveUsers }\n ];\n\n return (\n <div className=\"filterButtons\" role=\"group\" aria-label={translations.ariaFilterOptions}>\n {filters\n .filter(filter => filter.type !== filterType)\n .map(filter => (\n <Button\n key={filter.type}\n variant=\"tertiary\"\n onClick={() => onFilterChange(filter.type)}\n aria-label={filter.ariaLabel}\n >\n {filter.label}\n </Button>\n ))}\n </div>\n );\n};\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState, useCallback, useRef, useMemo } from 'preact/hooks';\nimport { getCompanyUsers } from '@/company-management/api';\nimport { fetchUserPermissions } from '@/company-management/api/fetchUserPermissions/fetchUserPermissions';\nimport { \n CompanyUser, \n CompanyUsersFilter, \n CompanyUserStatus \n} from '@/company-management/types';\n\nexport type FilterType = 'all' | 'active' | 'inactive';\n\n// Constants\nconst DEFAULT_PAGE_SIZE = 20;\nconst FIRST_PAGE = 1;\n\nexport interface UseCompanyUsersProps {\n translations: {\n ariaDataLoaded: string;\n ariaDataError: string;\n };\n}\n\nexport interface UseCompanyUsersReturn {\n // Core data\n users: CompanyUser[];\n userPermissions: Set<string> | null;\n \n // Pagination state\n currentPage: number;\n pageSize: number;\n totalItems: number;\n totalPages: number;\n \n // Filter state\n filterType: FilterType;\n filter: CompanyUsersFilter | undefined;\n \n // Loading states\n loading: boolean;\n \n // UI state\n announcement: string;\n \n // Computed values\n canEditUsers: boolean;\n \n // Actions\n handleFilterChange: (newFilter: FilterType) => void;\n handlePageSizeChange: (event: Event | { target?: { value: string } } | string) => void;\n handlePreviousPage: () => void;\n handleNextPage: () => void;\n refreshUsers: () => Promise<void>;\n}\n\nexport const useCompanyUsers = ({ translations }: UseCompanyUsersProps): UseCompanyUsersReturn => {\n const [users, setUsers] = useState<CompanyUser[]>([]);\n const [loading, setLoading] = useState(false);\n const [currentPage, setCurrentPage] = useState(FIRST_PAGE);\n const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE);\n const [filterType, setFilterType] = useState<FilterType>('all');\n const [totalItems, setTotalItems] = useState(0);\n const [totalPages, setTotalPages] = useState(1);\n const [announcement, setAnnouncement] = useState('');\n const [userPermissions, setUserPermissions] = useState<Set<string> | null>(null);\n\n // Stable reference to translations to prevent unnecessary re-renders\n const translationsRef = useRef(translations);\n translationsRef.current = translations;\n\n // Memoized filter based on current filter type\n const filter = useMemo((): CompanyUsersFilter | undefined => {\n switch (filterType) {\n case 'active':\n return { status: 'ACTIVE' as CompanyUserStatus };\n case 'inactive':\n return { status: 'INACTIVE' as CompanyUserStatus };\n default:\n return undefined;\n }\n }, [filterType]);\n\n // Fetch users data\n const fetchUsers = useCallback(async () => {\n setLoading(true);\n try {\n const response = await getCompanyUsers({\n pageSize,\n currentPage,\n filter\n });\n \n // Batch state updates for better performance\n setUsers(response.users);\n setTotalItems(response.totalCount || response.users.length);\n setTotalPages(response.pageInfo.totalPages);\n setAnnouncement(translationsRef.current.ariaDataLoaded.replace('{count}', response.users.length.toString()));\n } catch (error) {\n // Batch error state updates\n setUsers([]);\n setTotalItems(0);\n setTotalPages(1);\n setAnnouncement(translationsRef.current.ariaDataError);\n } finally {\n setLoading(false);\n }\n }, [pageSize, currentPage, filter]);\n\n // Fetch user permissions\n const fetchPermissions = useCallback(async () => {\n try {\n const { allowedIds } = await fetchUserPermissions();\n setUserPermissions(allowedIds);\n } catch (error) {\n setUserPermissions(new Set()); // Empty set on error\n }\n }, []);\n\n // Fetch users when dependencies change\n useEffect(() => {\n fetchUsers();\n }, [fetchUsers]);\n\n // Fetch permissions on component mount\n useEffect(() => {\n fetchPermissions();\n }, [fetchPermissions]);\n\n // Handle filter changes\n const handleFilterChange = useCallback((newFilter: FilterType) => {\n setFilterType(newFilter);\n setCurrentPage(FIRST_PAGE); // Reset to first page when filter changes\n }, []);\n\n // Handle page size change\n const handlePageSizeChange = useCallback((event: Event | { target?: { value: string } } | string) => {\n let value: string;\n if (typeof event === 'string') {\n value = event;\n } else if ('target' in event && event.target && 'value' in event.target) {\n value = event.target.value;\n } else {\n return;\n }\n const newSize = parseInt(value, 10);\n if (!isNaN(newSize)) {\n setPageSize(newSize);\n setCurrentPage(FIRST_PAGE); // Reset to first page when page size changes\n }\n }, []);\n\n // Handle page navigation\n const handlePreviousPage = useCallback(() => {\n if (currentPage > 1) {\n setCurrentPage(currentPage - 1);\n }\n }, [currentPage]);\n\n const handleNextPage = useCallback(() => {\n if (currentPage < totalPages) {\n setCurrentPage(currentPage + 1);\n }\n }, [currentPage, totalPages]);\n\n // Check if user has permission to edit company users\n const canEditUsers = userPermissions?.has('Magento_Company::users_edit') || false;\n\n // Expose refresh function for external use (e.g., after modal operations)\n const refreshUsers = useCallback(async () => {\n await fetchPermissions();\n await fetchUsers();\n }, [fetchPermissions, fetchUsers]);\n\n return {\n // Core data\n users,\n userPermissions,\n \n // Pagination state\n currentPage,\n pageSize,\n totalItems,\n totalPages,\n \n // Filter state\n filterType,\n filter,\n \n // Loading states\n loading,\n \n // UI state\n announcement,\n \n // Computed values\n canEditUsers,\n \n // Actions\n handleFilterChange,\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n refreshUsers,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useState, useCallback } from 'preact/hooks';\n\nexport interface UseModalResult {\n isOpen: boolean;\n selectedId: string | null;\n open: (id?: string) => void;\n close: () => void;\n}\n\nexport const useModal = (onClose?: () => void): UseModalResult => {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n\n const open = useCallback((id?: string) => {\n if (id) {\n setSelectedId(id);\n }\n setIsOpen(true);\n }, []);\n\n const close = useCallback(() => {\n setIsOpen(false);\n setSelectedId(null);\n onClose?.();\n }, [onClose]);\n\n return { isOpen, selectedId, open, close };\n};\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useState, useCallback, useEffect, useRef } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Button, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { deleteCompanyUser, updateCompanyUserStatus } from '@/company-management/api';\nimport type { CompanyUserStatus } from '@/company-management/types';\nimport { useInLineAlert, useCustomerCompanyInfo } from '@/company-management/hooks';\nimport '@/company-management/components/CompanyUsersManagementModal/CompanyUsersManagementModal.css';\n\nexport interface CompanyUsersManagementModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClose'> {\n /** The ID of the user to manage */\n userId: string;\n /** The current status of the user */\n userStatus: CompanyUserStatus;\n /** Callback function called when the modal should be closed */\n onClose: () => void;\n /** Whether the modal is currently open */\n isOpen?: boolean;\n /** Callback for success messages */\n onSuccess?: (message: string) => void;\n}\n\nexport const CompanyUsersManagementModal: FunctionComponent<CompanyUsersManagementModalProps> = ({\n className,\n userId,\n userStatus,\n onClose,\n isOpen = false,\n onSuccess,\n ...props\n}) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const [isTogglingStatus, setIsTogglingStatus] = useState(false);\n const { inLineAlertProps, showError, clearAlert } = useInLineAlert();\n const { companyInfo } = useCustomerCompanyInfo();\n \n // Refs for accessibility\n const modalRef = useRef<HTMLDivElement>(null);\n const previousFocusRef = useRef<HTMLElement | null>(null);\n const titleId = `modal-title-${userId}`;\n const descriptionId = `modal-desc-${userId}`;\n\n // Text translations\n const translations = useText({\n title: 'Company.CompanyUsers.managementModal.title',\n setActiveText: 'Company.CompanyUsers.managementModal.setActiveText',\n setInactiveText: 'Company.CompanyUsers.managementModal.setInactiveText',\n deleteText: 'Company.CompanyUsers.managementModal.deleteText',\n setActiveButton: 'Company.CompanyUsers.managementModal.setActiveButton',\n setInactiveButton: 'Company.CompanyUsers.managementModal.setInactiveButton',\n settingActiveButton: 'Company.CompanyUsers.managementModal.settingActiveButton',\n settingInactiveButton: 'Company.CompanyUsers.managementModal.settingInactiveButton',\n deleteButton: 'Company.CompanyUsers.managementModal.deleteButton',\n deletingButton: 'Company.CompanyUsers.managementModal.deletingButton',\n cancelButton: 'Company.CompanyUsers.managementModal.cancelButton',\n setActiveErrorGeneric: 'Company.CompanyUsers.managementModal.setActiveErrorGeneric',\n setActiveErrorSpecific: 'Company.CompanyUsers.managementModal.setActiveErrorSpecific',\n setInactiveErrorGeneric: 'Company.CompanyUsers.managementModal.setInactiveErrorGeneric',\n setInactiveErrorSpecific: 'Company.CompanyUsers.managementModal.setInactiveErrorSpecific',\n deleteErrorGeneric: 'Company.CompanyUsers.managementModal.deleteErrorGeneric',\n deleteErrorSpecific: 'Company.CompanyUsers.managementModal.deleteErrorSpecific',\n setActiveSuccess: 'Company.CompanyUsers.managementModal.setActiveSuccess',\n setInactiveSuccess: 'Company.CompanyUsers.managementModal.setInactiveSuccess',\n deleteSuccess: 'Company.CompanyUsers.managementModal.deleteSuccess',\n ariaCloseModal: 'Company.CompanyUsers.managementModal.ariaLabels.closeModal',\n ariaModalDescription: 'Company.CompanyUsers.managementModal.ariaLabels.modalDescription',\n });\n\n const replaceCompanyNamePlaceholder = useCallback((message: string): string => {\n const companyName = companyInfo?.companyName || '';\n return message.replace(/%1/g, companyName);\n }, [companyInfo?.companyName]);\n\n const handleToggleStatus = useCallback(async () => {\n if (isTogglingStatus) return;\n \n const newStatus = userStatus === 'ACTIVE' ? 'INACTIVE' : 'ACTIVE';\n const isActivating = newStatus === 'ACTIVE';\n \n setIsTogglingStatus(true);\n clearAlert();\n try {\n const result = await updateCompanyUserStatus({ id: userId, status: newStatus });\n if (result.success) {\n const successMsg = isActivating ? translations.setActiveSuccess : translations.setInactiveSuccess;\n if (onSuccess) {\n onSuccess(successMsg);\n }\n onClose();\n } else {\n const errorMsg = isActivating ? translations.setActiveErrorSpecific : translations.setInactiveErrorSpecific;\n showError(replaceCompanyNamePlaceholder(errorMsg));\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : (isActivating ? translations.setActiveErrorGeneric : translations.setInactiveErrorGeneric);\n showError(replaceCompanyNamePlaceholder(errorMessage));\n } finally {\n setIsTogglingStatus(false);\n }\n }, [userId, userStatus, onClose, isTogglingStatus, clearAlert, showError, replaceCompanyNamePlaceholder, translations.setActiveErrorSpecific, translations.setInactiveErrorSpecific, translations.setActiveErrorGeneric, translations.setInactiveErrorGeneric, translations.setActiveSuccess, translations.setInactiveSuccess, onSuccess]);\n\n const handleDelete = useCallback(async () => {\n if (isDeleting) return;\n \n setIsDeleting(true);\n clearAlert();\n try {\n const result = await deleteCompanyUser({ id: userId });\n if (result.success) {\n if (onSuccess) {\n onSuccess(translations.deleteSuccess);\n }\n onClose();\n } else {\n showError(replaceCompanyNamePlaceholder(translations.deleteErrorSpecific));\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : translations.deleteErrorGeneric;\n showError(replaceCompanyNamePlaceholder(errorMessage));\n } finally {\n setIsDeleting(false);\n }\n }, [userId, onClose, isDeleting, clearAlert, showError, replaceCompanyNamePlaceholder, translations.deleteErrorSpecific, translations.deleteErrorGeneric, translations.deleteSuccess, onSuccess]);\n\n const handleCancel = useCallback(() => {\n clearAlert();\n onClose();\n }, [onClose, clearAlert]);\n\n // Handle Escape key\n const handleKeyDown = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n clearAlert();\n onClose();\n }\n \n // Focus trapping\n if (event.key === 'Tab') {\n const modal = modalRef.current;\n if (!modal) return;\n \n const focusableElements = modal.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n \n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n lastElement.focus();\n event.preventDefault();\n }\n } else if (document.activeElement === lastElement) {\n // Tab\n firstElement.focus();\n event.preventDefault();\n }\n }\n }, [onClose, clearAlert]);\n\n const handleOverlayClick = useCallback((event: MouseEvent) => {\n if (event.target === event.currentTarget) {\n clearAlert();\n onClose();\n }\n }, [onClose, clearAlert]);\n\n const handleCloseClick = useCallback(() => {\n clearAlert();\n onClose();\n }, [onClose, clearAlert]);\n\n // Focus management and event listeners\n useEffect(() => {\n if (isOpen) {\n // Store current focus\n previousFocusRef.current = document.activeElement as HTMLElement;\n \n // Add keyboard event listener\n document.addEventListener('keydown', handleKeyDown);\n \n // Focus the modal after a brief delay to ensure it's rendered\n setTimeout(() => {\n const modal = modalRef.current;\n if (modal) {\n const firstButton = modal.querySelector('button') as HTMLElement;\n if (firstButton) {\n firstButton.focus();\n } else {\n modal.focus();\n }\n }\n }, 100);\n \n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }\n \n // Restore focus when modal closes\n if (previousFocusRef.current) {\n previousFocusRef.current.focus();\n }\n }, [isOpen, handleKeyDown]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div \n className={classes(['company-management-company-users-management-modal-overlay', className])}\n onClick={handleOverlayClick}\n {...props}\n >\n <div \n ref={modalRef}\n className=\"company-management-company-users-management-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n >\n <div className=\"company-management-company-users-management-modal__header\">\n <h2 \n id={titleId}\n className=\"company-management-company-users-management-modal__title\"\n >\n {translations.title}\n </h2>\n <button\n className=\"company-management-company-users-management-modal__close\"\n onClick={handleCloseClick}\n aria-label={translations.ariaCloseModal}\n >\n ×\n </button>\n </div>\n \n <div \n id={descriptionId}\n className=\"company-management-company-users-management-modal__content\"\n >\n <p className=\"company-management-company-users-management-modal__text\">\n {userStatus === 'ACTIVE' ? translations.setInactiveText : translations.setActiveText}\n </p>\n <p className=\"company-management-company-users-management-modal__text\">\n {translations.deleteText}\n </p>\n </div>\n\n {inLineAlertProps?.text && (\n <div \n className=\"company-management-company-users-management-modal__alert\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n <InLineAlert\n type=\"error\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n data-testid=\"companyUsersManagementModalAlert\"\n />\n </div>\n )}\n\n <div className=\"company-management-company-users-management-modal__actions\">\n <Button\n variant=\"primary\"\n onClick={handleToggleStatus}\n disabled={isTogglingStatus}\n className=\"company-management-company-users-management-modal__button-primary\"\n >\n {isTogglingStatus \n ? (userStatus === 'ACTIVE' ? translations.settingInactiveButton : translations.settingActiveButton)\n : (userStatus === 'ACTIVE' ? translations.setInactiveButton : translations.setActiveButton)\n }\n </Button>\n \n <Button\n variant=\"tertiary\"\n onClick={handleDelete}\n disabled={isDeleting}\n className=\"company-management-company-users-management-modal__button-delete\"\n >\n {isDeleting ? translations.deletingButton : translations.deleteButton}\n </Button>\n \n <Button\n variant=\"secondary\"\n onClick={handleCancel}\n className=\"company-management-company-users-management-modal__button-cancel\"\n >\n {translations.cancelButton}\n </Button>\n </div>\n </div>\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback, useRef, useMemo } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { \n Button, \n Picker,\n Modal,\n InLineAlert\n} from '@adobe-commerce/elsie/components';\nimport { Table } from '@adobe-commerce/elsie/components/Table/Table';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { formatUserStatus, formatUserName, decodeUserId } from '@/company-management/lib';\nimport { CompanyUserStatus } from '@/company-management/types';\nimport { CompanyUserForm } from '@/company-management/components/CompanyUserForm';\nimport { CompanyUsersManagementModal } from '@/company-management/components/CompanyUsersManagementModal';\nimport { CompanyUsersTableLoader } from '@/company-management/components/CompanyLoaders';\nimport { CompanyUsersFilters } from '@/company-management/components/CompanyUsersFilters';\nimport { useCompanyUsers, useModal, useCompanyContextListener, useUserPermissions, useInLineAlert } from '@/company-management/hooks';\nimport './CompanyUsers.css';\n\nexport interface CompanyUsersProps extends HTMLAttributes<HTMLElement> {}\n\n// Constants\nconst PAGE_SIZE_OPTIONS = [\n { text: '20', value: '20' },\n { text: '30', value: '30' },\n { text: '50', value: '50' },\n { text: '100', value: '100' },\n { text: '200', value: '200' }\n];\n\nexport const CompanyUsers: Container<CompanyUsersProps> = ({ children, className, ...props }) => {\n // Get user permissions\n const { permissions } = useUserPermissions();\n\n // Text translations using proper useText pattern\n const translations = useText({\n showAllUsers: 'Company.CompanyUsers.filters.showAll',\n showActiveUsers: 'Company.CompanyUsers.filters.showActive',\n showInactiveUsers: 'Company.CompanyUsers.filters.showInactive',\n idColumn: 'Company.CompanyUsers.columns.id',\n nameColumn: 'Company.CompanyUsers.columns.name',\n emailColumn: 'Company.CompanyUsers.columns.email',\n roleColumn: 'Company.CompanyUsers.columns.role',\n teamColumn: 'Company.CompanyUsers.columns.team',\n statusColumn: 'Company.CompanyUsers.columns.status',\n actionsColumn: 'Company.CompanyUsers.columns.actions',\n statusActive: 'Company.CompanyUsers.status.active',\n statusInactive: 'Company.CompanyUsers.status.inactive',\n emptyTeam: 'Company.CompanyUsers.emptyTeam',\n emptyActions: 'Company.CompanyUsers.emptyActions',\n itemsText: 'Company.CompanyUsers.pagination.itemsCount',\n itemsPerPageLabel: 'Company.CompanyUsers.pagination.itemsPerPage',\n showLabel: 'Company.CompanyUsers.pagination.show',\n perPageLabel: 'Company.CompanyUsers.pagination.perPage',\n previousPage: 'Company.CompanyUsers.pagination.previous',\n nextPage: 'Company.CompanyUsers.pagination.next',\n pageInfo: 'Company.CompanyUsers.pagination.pageInfo',\n // Accessibility labels\n ariaLoadingUsers: 'Company.CompanyUsers.ariaLabels.loadingUsers',\n ariaUsersTable: 'Company.CompanyUsers.ariaLabels.usersTable',\n ariaFilterOptions: 'Company.CompanyUsers.ariaLabels.filterOptions',\n ariaPaginationNav: 'Company.CompanyUsers.ariaLabels.paginationNav',\n ariaPageSizeSelector: 'Company.CompanyUsers.ariaLabels.pageSizeSelector',\n ariaPreviousPageFull: 'Company.CompanyUsers.ariaLabels.previousPageFull',\n ariaNextPageFull: 'Company.CompanyUsers.ariaLabels.nextPageFull',\n ariaCurrentPage: 'Company.CompanyUsers.ariaLabels.currentPage',\n ariaShowingUsers: 'Company.CompanyUsers.ariaLabels.showingUsers',\n ariaDataLoaded: 'Company.CompanyUsers.ariaLabels.dataLoaded',\n ariaDataError: 'Company.CompanyUsers.ariaLabels.dataError',\n ariaPageNavigation: 'Company.CompanyUsers.ariaLabels.pageNavigation',\n manageUser: 'Company.CompanyUsers.actions.manage',\n editUser: 'Company.CompanyUsers.actions.edit',\n ariaManageUser: 'Company.CompanyUsers.ariaLabels.manageUser',\n ariaEditUser: 'Company.CompanyUsers.ariaLabels.editUser',\n addNewUser: 'Company.CompanyUsers.actions.addNewUser'\n });\n\n // Use the company users hook to manage all user data and pagination\n const {\n users,\n loading,\n currentPage,\n pageSize,\n filterType,\n totalItems,\n totalPages,\n announcement,\n canEditUsers,\n handleFilterChange,\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n refreshUsers\n } = useCompanyUsers({\n translations: {\n ariaDataLoaded: translations.ariaDataLoaded,\n ariaDataError: translations.ariaDataError\n }\n });\n\n // Stable reference to translations to prevent unnecessary re-renders\n const translationsRef = useRef(translations);\n translationsRef.current = translations;\n\n // Handle company context changes using reusable hook\n const handleCompanyContextChange = useCallback(() => {\n refreshUsers();\n }, [refreshUsers]);\n\n useCompanyContextListener(handleCompanyContextChange);\n\n // Modal management using useModal hook\n const manageModal = useModal(refreshUsers);\n const editModal = useModal(refreshUsers);\n const addModal = useModal(refreshUsers);\n\n // Alert management for displaying errors\n const { inLineAlertProps, handleSetInLineAlert } = useInLineAlert();\n\n // Prepare table columns - memoized to prevent unnecessary re-renders (optimized)\n const columns = useMemo(() => {\n const currentTranslations = translationsRef.current;\n return [\n { key: 'id', label: currentTranslations.idColumn },\n { key: 'name', label: currentTranslations.nameColumn },\n { key: 'email', label: currentTranslations.emailColumn },\n { key: 'role', label: currentTranslations.roleColumn },\n { key: 'team', label: currentTranslations.teamColumn },\n { key: 'status', label: currentTranslations.statusColumn },\n { key: 'actions', label: currentTranslations.actionsColumn }\n ];\n }, []); // No dependencies - only recompute when component mounts\n\n\n // Prepare table row data - memoized for performance (optimized)\n const rowData = useMemo(() => users.map((user) => {\n const fullName = formatUserName(user.firstName, user.lastName);\n const currentTranslations = translationsRef.current;\n \n // Decode ID for display only (base64 -> plain text)\n const displayId = decodeUserId(user.id);\n \n return {\n id: displayId,\n name: fullName,\n email: user.email,\n role: user.role,\n team: user.team || currentTranslations.emptyTeam,\n status: formatUserStatus(user.status, currentTranslations),\n actions: canEditUsers ? (\n <div className=\"user-actions\">\n <Button\n variant=\"tertiary\"\n onClick={() => editModal.open(user.id)}\n aria-label={currentTranslations.ariaEditUser.replace('{name}', fullName)}\n className=\"edit-user-button\"\n >\n {currentTranslations.editUser}\n </Button>\n <Button\n variant=\"tertiary\"\n onClick={() => manageModal.open(user.id)}\n aria-label={currentTranslations.ariaManageUser.replace('{name}', fullName)}\n className=\"manage-user-button\"\n >\n {currentTranslations.manageUser}\n </Button>\n </div>\n ) : (\n <span className=\"no-actions\">{currentTranslations.emptyActions}</span>\n )\n };\n }), [users, canEditUsers, editModal, manageModal]);\n\n // Memoize selected user for performance\n const selectedUser = useMemo(() => \n users.find(user => user.id === manageModal.selectedId),\n [users, manageModal.selectedId]\n );\n\n return (\n <section className={className} {...props}>\n {/* Screen reader announcements */}\n <div className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </div>\n\n {/* Filter buttons */}\n <CompanyUsersFilters\n filterType={filterType}\n onFilterChange={handleFilterChange}\n translations={{\n showAllUsers: translations.showAllUsers,\n showActiveUsers: translations.showActiveUsers,\n showInactiveUsers: translations.showInactiveUsers,\n ariaFilterOptions: translations.ariaFilterOptions\n }}\n />\n\n {/* Alert messages */}\n {inLineAlertProps && inLineAlertProps.text ? (\n <InLineAlert\n className=\"company-users__alert\"\n type={inLineAlertProps.type || 'success'}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n\n {/* Table with loading state */}\n <div aria-busy={loading}>\n {loading ? (\n <div className=\"loadingContainer\" role=\"status\" aria-live=\"polite\">\n <CompanyUsersTableLoader testId=\"companyUsersTableLoader\" />\n <span className=\"sr-only\">{translations.ariaLoadingUsers}</span>\n </div>\n ) : (\n <Table\n className=\"companyUsersTable\"\n columns={columns}\n rowData={rowData}\n mobileLayout=\"stacked\"\n aria-label={translations.ariaUsersTable}\n summary={translations.ariaShowingUsers.replace('{count}', users.length.toString())}\n />\n )}\n </div>\n\n {/* Pagination controls */}\n <nav aria-label={translations.ariaPaginationNav} className=\"paginationContainer\">\n {/* Items count on the left */}\n <div aria-live=\"polite\" aria-atomic=\"true\">\n {translations.itemsText.replace('{count}', totalItems.toString())}\n </div>\n\n {/* Pagination buttons in the center (only show when multiple pages) */}\n {totalPages > 1 && (\n <div className=\"paginationButtons\" role=\"group\" aria-label={translations.ariaPageNavigation}>\n <Button\n variant=\"secondary\"\n onClick={handlePreviousPage}\n disabled={currentPage === 1}\n aria-label={translations.ariaPreviousPageFull.replace('{current}', currentPage.toString())}\n >\n {translations.previousPage}\n </Button>\n <span aria-current=\"page\" aria-live=\"polite\">\n {translations.pageInfo.replace('{current}', currentPage.toString()).replace('{total}', totalPages.toString())}\n </span>\n <Button\n variant=\"secondary\"\n onClick={handleNextPage}\n disabled={currentPage === totalPages}\n aria-label={translations.ariaNextPageFull.replace('{current}', currentPage.toString())}\n >\n {translations.nextPage}\n </Button>\n </div>\n )}\n\n {/* Page size picker on the right */}\n <div className=\"pageSizeSelector\">\n <label htmlFor=\"page-size-select\" id=\"page-size-label\">\n <span>{translations.showLabel}</span>\n </label>\n <Picker\n id=\"page-size-select\"\n name=\"pageSize\"\n value={pageSize.toString()}\n options={PAGE_SIZE_OPTIONS}\n onChange={handlePageSizeChange}\n aria-labelledby=\"page-size-label\"\n aria-describedby=\"page-size-description\"\n />\n <span id=\"page-size-description\">{translations.perPageLabel}</span>\n </div>\n </nav>\n\n {/* Add New User Button */}\n {canEditUsers && (\n <div className=\"addUserButtonContainer\">\n <Button\n variant=\"primary\"\n onClick={() => addModal.open()}\n aria-label={translations.addNewUser}\n >\n {translations.addNewUser}\n </Button>\n </div>\n )}\n\n {children}\n\n {/* User Add Modal (for adding new user) */}\n {addModal.isOpen && canEditUsers && (\n <Modal\n open={addModal.isOpen}\n onClose={addModal.close}\n size=\"medium\"\n >\n <CompanyUserForm\n mode=\"add\"\n entityId={undefined}\n parentStructureId={undefined}\n permissions={permissions}\n onSaved={addModal.close}\n onCancel={addModal.close}\n onError={(error) => {\n handleSetInLineAlert({ text: error, type: 'error' });\n }}\n onSuccess={(message) => {\n handleSetInLineAlert({ text: message, type: 'success' });\n }}\n />\n </Modal>\n )}\n\n {/* User Edit Modal (for editing user information) */}\n {editModal.selectedId && editModal.isOpen && canEditUsers && (\n <Modal\n open={editModal.isOpen}\n onClose={editModal.close}\n size=\"medium\"\n >\n <CompanyUserForm\n mode=\"edit\"\n entityId={editModal.selectedId}\n parentStructureId={undefined}\n permissions={permissions}\n onSaved={editModal.close}\n onCancel={editModal.close}\n onError={(error) => {\n handleSetInLineAlert({ text: error, type: 'error' });\n }}\n onSuccess={(message) => {\n handleSetInLineAlert({ text: message, type: 'success' });\n }}\n />\n </Modal>\n )}\n\n {/* User Management Modal (for status changes and deletion) */}\n {manageModal.selectedId && canEditUsers && selectedUser && (\n <CompanyUsersManagementModal\n isOpen={manageModal.isOpen}\n userId={manageModal.selectedId}\n userStatus={(selectedUser.status as CompanyUserStatus) || 'ACTIVE'}\n onClose={manageModal.close}\n onSuccess={(message) => {\n handleSetInLineAlert({ text: message, type: 'success' });\n }}\n />\n )}\n </section>\n );\n};\n"],"names":["decodeBase64","encoded","decodeUserId","encodedUserId","formatUserStatus","status","translations","formatUserName","firstName","lastName","first","last","CompanyUsersFilters","filterType","onFilterChange","filters","filter","jsx","Button","DEFAULT_PAGE_SIZE","FIRST_PAGE","useCompanyUsers","users","setUsers","useState","loading","setLoading","currentPage","setCurrentPage","pageSize","setPageSize","setFilterType","totalItems","setTotalItems","totalPages","setTotalPages","announcement","setAnnouncement","userPermissions","setUserPermissions","translationsRef","useRef","useMemo","fetchUsers","useCallback","response","getCompanyUsers","fetchPermissions","allowedIds","fetchUserPermissions","useEffect","handleFilterChange","newFilter","handlePageSizeChange","event","value","newSize","handlePreviousPage","handleNextPage","canEditUsers","refreshUsers","useModal","onClose","isOpen","setIsOpen","selectedId","setSelectedId","open","id","close","CompanyUsersManagementModal","className","userId","userStatus","onSuccess","props","isDeleting","setIsDeleting","isTogglingStatus","setIsTogglingStatus","inLineAlertProps","showError","clearAlert","useInLineAlert","companyInfo","useCustomerCompanyInfo","modalRef","previousFocusRef","titleId","descriptionId","useText","replaceCompanyNamePlaceholder","message","companyName","handleToggleStatus","newStatus","isActivating","updateCompanyUserStatus","successMsg","errorMsg","error","errorMessage","handleDelete","deleteCompanyUser","handleCancel","handleKeyDown","modal","focusableElements","firstElement","lastElement","handleOverlayClick","handleCloseClick","firstButton","classes","jsxs","InLineAlert","PAGE_SIZE_OPTIONS","CompanyUsers","children","permissions","useUserPermissions","handleCompanyContextChange","useCompanyContextListener","manageModal","editModal","addModal","handleSetInLineAlert","columns","currentTranslations","rowData","user","fullName","selectedUser","CompanyUsersTableLoader","Table","Picker","Modal","CompanyUserForm"],"mappings":"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"}
1
+ {"version":3,"file":"CompanyUsers.js","sources":["/@dropins/storefront-company-management/src/lib/encoding.ts","/@dropins/storefront-company-management/src/lib/userHelpers.ts","/@dropins/storefront-company-management/src/components/CompanyUsersFilters/CompanyUsersFilters.tsx","/@dropins/storefront-company-management/src/hooks/containers/useCompanyUsers.tsx","/@dropins/storefront-company-management/src/hooks/useModal.ts","/@dropins/storefront-company-management/src/components/CompanyUsersManagementModal/CompanyUsersManagementModal.tsx","/@dropins/storefront-company-management/src/containers/CompanyUsers/CompanyUsers.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Encodes a string to base64\n * @param value - The string to encode\n * @returns The base64 encoded string\n * @throws Error if encoding fails\n */\nexport const encodeBase64 = (value: string): string => {\n try {\n return btoa(value);\n } catch (error) {\n throw new Error(`Failed to encode base64: ${error}`);\n }\n};\n\n/**\n * Decodes a base64 encoded string\n * @param encoded - The base64 encoded string to decode\n * @returns The decoded string, or the original string if decoding fails\n */\nexport const decodeBase64 = (encoded: string): string => {\n try {\n return atob(encoded);\n } catch {\n // Return original if decoding fails (graceful fallback)\n return encoded;\n }\n};\n\n/**\n * Safely encodes a user ID to base64 for API transmission\n * @param userId - The user ID to encode\n * @returns The base64 encoded user ID\n * @throws Error if userId is empty or encoding fails\n */\nexport const encodeUserId = (userId: string): string => {\n if (!userId || typeof userId !== 'string') {\n throw new Error('User ID must be a non-empty string');\n }\n \n return encodeBase64(userId);\n};\n\n/**\n * Safely decodes a base64 encoded user ID from API response\n * @param encodedUserId - The base64 encoded user ID\n * @returns The decoded user ID, or the original string if decoding fails\n */\nexport const decodeUserId = (encodedUserId: string): string => {\n if (!encodedUserId || typeof encodedUserId !== 'string') {\n return encodedUserId;\n }\n \n return decodeBase64(encodedUserId);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Formats a user status string for display\n * @param status - The raw status string (e.g., 'ACTIVE', 'INACTIVE')\n * @param translations - Translation object containing statusActive and statusInactive keys\n * @returns The formatted status string for display\n */\nexport const formatUserStatus = (status: string, translations: { statusActive?: string; statusInactive?: string }): string => {\n if (!status || typeof status !== 'string') {\n return '';\n }\n\n // Use translations for known statuses\n if (status === 'ACTIVE' && translations.statusActive) {\n return translations.statusActive;\n }\n \n if (status === 'INACTIVE' && translations.statusInactive) {\n return translations.statusInactive;\n }\n\n // Fallback to formatted string if status is unknown or no translation available\n return status.charAt(0).toUpperCase() + status.slice(1).toLowerCase();\n};\n\n/**\n * Formats a user's full name by combining first and last name\n * @param firstName - The user's first name\n * @param lastName - The user's last name\n * @returns The formatted full name, trimmed of extra spaces\n */\nexport const formatUserName = (firstName: string, lastName: string): string => {\n const first = firstName?.trim() || '';\n const last = lastName?.trim() || '';\n \n return `${first} ${last}`.trim();\n};\n\n/**\n * Checks if a user has a specific status\n * @param userStatus - The user's current status\n * @param expectedStatus - The status to check against\n * @returns true if the user has the expected status\n */\nexport const hasUserStatus = (userStatus: string, expectedStatus: string): boolean => {\n return userStatus?.toUpperCase() === expectedStatus?.toUpperCase();\n};\n\n/**\n * Gets the opposite status for toggling (ACTIVE <-> INACTIVE)\n * @param currentStatus - The current user status\n * @returns The opposite status, or the current status if not recognized\n */\nexport const getToggleStatus = (currentStatus: string): string => {\n const status = currentStatus?.toUpperCase();\n \n switch (status) {\n case 'ACTIVE':\n return 'INACTIVE';\n case 'INACTIVE':\n return 'ACTIVE';\n default:\n return currentStatus;\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Button } from '@adobe-commerce/elsie/components';\n\nexport type FilterType = 'all' | 'active' | 'inactive';\n\nexport interface CompanyUsersFiltersProps {\n filterType: FilterType;\n onFilterChange: (filter: FilterType) => void;\n translations: {\n showAllUsers: string;\n showActiveUsers: string;\n showInactiveUsers: string;\n ariaFilterOptions: string;\n };\n}\n\nexport const CompanyUsersFilters = ({\n filterType,\n onFilterChange,\n translations\n}: CompanyUsersFiltersProps) => {\n const filters: Array<{ type: FilterType; label: string; ariaLabel: string }> = [\n { type: 'all', label: translations.showAllUsers, ariaLabel: translations.showAllUsers },\n { type: 'active', label: translations.showActiveUsers, ariaLabel: translations.showActiveUsers },\n { type: 'inactive', label: translations.showInactiveUsers, ariaLabel: translations.showInactiveUsers }\n ];\n\n return (\n <div className=\"filterButtons\" role=\"group\" aria-label={translations.ariaFilterOptions}>\n {filters\n .filter(filter => filter.type !== filterType)\n .map(filter => (\n <Button\n key={filter.type}\n variant=\"tertiary\"\n onClick={() => onFilterChange(filter.type)}\n aria-label={filter.ariaLabel}\n >\n {filter.label}\n </Button>\n ))}\n </div>\n );\n};\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState, useCallback, useRef, useMemo } from 'preact/hooks';\nimport { getCompanyUsers } from '@/company-management/api';\nimport { fetchUserPermissions } from '@/company-management/api/fetchUserPermissions/fetchUserPermissions';\nimport { \n CompanyUser, \n CompanyUsersFilter, \n CompanyUserStatus \n} from '@/company-management/types';\n\nexport type FilterType = 'all' | 'active' | 'inactive';\n\n// Constants\nconst DEFAULT_PAGE_SIZE = 10;\nconst FIRST_PAGE = 1;\n\nexport interface UseCompanyUsersProps {\n translations: {\n ariaDataLoaded: string;\n ariaDataError: string;\n };\n}\n\nexport interface UseCompanyUsersReturn {\n // Core data\n users: CompanyUser[];\n userPermissions: Set<string> | null;\n \n // Pagination state\n currentPage: number;\n pageSize: number;\n totalItems: number;\n totalPages: number;\n \n // Filter state\n filterType: FilterType;\n filter: CompanyUsersFilter | undefined;\n \n // Loading states\n loading: boolean;\n \n // UI state\n announcement: string;\n \n // Computed values\n canEditUsers: boolean;\n \n // Actions\n handleFilterChange: (newFilter: FilterType) => void;\n handlePageSizeChange: (event: Event | { target?: { value: string } } | string) => void;\n handlePreviousPage: () => void;\n handleNextPage: () => void;\n handlePageChange: (newPage: number) => void;\n refreshUsers: () => Promise<void>;\n}\n\nexport const useCompanyUsers = ({ translations }: UseCompanyUsersProps): UseCompanyUsersReturn => {\n const [users, setUsers] = useState<CompanyUser[]>([]);\n const [loading, setLoading] = useState(false);\n const [currentPage, setCurrentPage] = useState(FIRST_PAGE);\n const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE);\n const [filterType, setFilterType] = useState<FilterType>('all');\n const [totalItems, setTotalItems] = useState(0);\n const [totalPages, setTotalPages] = useState(1);\n const [announcement, setAnnouncement] = useState('');\n const [userPermissions, setUserPermissions] = useState<Set<string> | null>(null);\n\n // Stable reference to translations to prevent unnecessary re-renders\n const translationsRef = useRef(translations);\n translationsRef.current = translations;\n\n // Memoized filter based on current filter type\n const filter = useMemo((): CompanyUsersFilter | undefined => {\n switch (filterType) {\n case 'active':\n return { status: 'ACTIVE' as CompanyUserStatus };\n case 'inactive':\n return { status: 'INACTIVE' as CompanyUserStatus };\n default:\n return undefined;\n }\n }, [filterType]);\n\n // Fetch users data\n const fetchUsers = useCallback(async () => {\n setLoading(true);\n try {\n const response = await getCompanyUsers({\n pageSize,\n currentPage,\n filter\n });\n \n // Batch state updates for better performance\n setUsers(response.users);\n setTotalItems(response.totalCount || response.users.length);\n setTotalPages(response.pageInfo.totalPages);\n setAnnouncement(translationsRef.current.ariaDataLoaded.replace('{count}', response.users.length.toString()));\n } catch (error) {\n // Batch error state updates\n setUsers([]);\n setTotalItems(0);\n setTotalPages(1);\n setAnnouncement(translationsRef.current.ariaDataError);\n } finally {\n setLoading(false);\n }\n }, [pageSize, currentPage, filter]);\n\n // Fetch user permissions\n const fetchPermissions = useCallback(async () => {\n try {\n const { allowedIds } = await fetchUserPermissions();\n setUserPermissions(allowedIds);\n } catch (error) {\n setUserPermissions(new Set()); // Empty set on error\n }\n }, []);\n\n // Fetch users when dependencies change\n useEffect(() => {\n fetchUsers();\n }, [fetchUsers]);\n\n // Fetch permissions on component mount\n useEffect(() => {\n fetchPermissions();\n }, [fetchPermissions]);\n\n // Handle filter changes\n const handleFilterChange = useCallback((newFilter: FilterType) => {\n setFilterType(newFilter);\n setCurrentPage(FIRST_PAGE); // Reset to first page when filter changes\n }, []);\n\n // Handle page size change\n const handlePageSizeChange = useCallback((event: Event | { target?: { value: string } } | string) => {\n let value: string;\n if (typeof event === 'string') {\n value = event;\n } else if ('target' in event && event.target && 'value' in event.target) {\n value = event.target.value;\n } else {\n return;\n }\n const newSize = parseInt(value, 10);\n if (!isNaN(newSize)) {\n setPageSize(newSize);\n setCurrentPage(FIRST_PAGE); // Reset to first page when page size changes\n }\n }, []);\n\n // Handle page navigation\n const handlePreviousPage = useCallback(() => {\n if (currentPage > 1) {\n setCurrentPage(currentPage - 1);\n }\n }, [currentPage]);\n\n const handleNextPage = useCallback(() => {\n if (currentPage < totalPages) {\n setCurrentPage(currentPage + 1);\n }\n }, [currentPage, totalPages]);\n\n const handlePageChange = useCallback((newPage: number) => {\n if (newPage >= 1 && newPage <= totalPages) {\n setCurrentPage(newPage);\n }\n }, [totalPages]);\n\n // Check if user has permission to edit company users\n const canEditUsers = userPermissions?.has('Magento_Company::users_edit') || false;\n\n // Expose refresh function for external use (e.g., after modal operations)\n const refreshUsers = useCallback(async () => {\n await fetchPermissions();\n await fetchUsers();\n }, [fetchPermissions, fetchUsers]);\n\n return {\n // Core data\n users,\n userPermissions,\n \n // Pagination state\n currentPage,\n pageSize,\n totalItems,\n totalPages,\n \n // Filter state\n filterType,\n filter,\n \n // Loading states\n loading,\n \n // UI state\n announcement,\n \n // Computed values\n canEditUsers,\n \n // Actions\n handleFilterChange,\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n handlePageChange,\n refreshUsers,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useState, useCallback } from 'preact/hooks';\n\nexport interface UseModalResult {\n isOpen: boolean;\n selectedId: string | null;\n open: (id?: string) => void;\n close: () => void;\n}\n\nexport const useModal = (onClose?: () => void): UseModalResult => {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n\n const open = useCallback((id?: string) => {\n if (id) {\n setSelectedId(id);\n }\n setIsOpen(true);\n }, []);\n\n const close = useCallback(() => {\n setIsOpen(false);\n setSelectedId(null);\n onClose?.();\n }, [onClose]);\n\n return { isOpen, selectedId, open, close };\n};\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useState, useCallback, useEffect, useRef } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Button, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { deleteCompanyUser, updateCompanyUserStatus } from '@/company-management/api';\nimport type { CompanyUserStatus } from '@/company-management/types';\nimport { useInLineAlert, useCustomerCompanyInfo } from '@/company-management/hooks';\nimport '@/company-management/components/CompanyUsersManagementModal/CompanyUsersManagementModal.css';\n\nexport interface CompanyUsersManagementModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClose'> {\n /** The ID of the user to manage */\n userId: string;\n /** The current status of the user */\n userStatus: CompanyUserStatus;\n /** Callback function called when the modal should be closed */\n onClose: () => void;\n /** Whether the modal is currently open */\n isOpen?: boolean;\n /** Callback for success messages */\n onSuccess?: (message: string) => void;\n}\n\nexport const CompanyUsersManagementModal: FunctionComponent<CompanyUsersManagementModalProps> = ({\n className,\n userId,\n userStatus,\n onClose,\n isOpen = false,\n onSuccess,\n ...props\n}) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const [isTogglingStatus, setIsTogglingStatus] = useState(false);\n const { inLineAlertProps, showError, clearAlert } = useInLineAlert();\n const { companyInfo } = useCustomerCompanyInfo();\n \n // Refs for accessibility\n const modalRef = useRef<HTMLDivElement>(null);\n const previousFocusRef = useRef<HTMLElement | null>(null);\n const titleId = `modal-title-${userId}`;\n const descriptionId = `modal-desc-${userId}`;\n\n // Text translations\n const translations = useText({\n title: 'Company.CompanyUsers.managementModal.title',\n setActiveText: 'Company.CompanyUsers.managementModal.setActiveText',\n setInactiveText: 'Company.CompanyUsers.managementModal.setInactiveText',\n deleteText: 'Company.CompanyUsers.managementModal.deleteText',\n setActiveButton: 'Company.CompanyUsers.managementModal.setActiveButton',\n setInactiveButton: 'Company.CompanyUsers.managementModal.setInactiveButton',\n settingActiveButton: 'Company.CompanyUsers.managementModal.settingActiveButton',\n settingInactiveButton: 'Company.CompanyUsers.managementModal.settingInactiveButton',\n deleteButton: 'Company.CompanyUsers.managementModal.deleteButton',\n deletingButton: 'Company.CompanyUsers.managementModal.deletingButton',\n cancelButton: 'Company.CompanyUsers.managementModal.cancelButton',\n setActiveErrorGeneric: 'Company.CompanyUsers.managementModal.setActiveErrorGeneric',\n setActiveErrorSpecific: 'Company.CompanyUsers.managementModal.setActiveErrorSpecific',\n setInactiveErrorGeneric: 'Company.CompanyUsers.managementModal.setInactiveErrorGeneric',\n setInactiveErrorSpecific: 'Company.CompanyUsers.managementModal.setInactiveErrorSpecific',\n deleteErrorGeneric: 'Company.CompanyUsers.managementModal.deleteErrorGeneric',\n deleteErrorSpecific: 'Company.CompanyUsers.managementModal.deleteErrorSpecific',\n setActiveSuccess: 'Company.CompanyUsers.managementModal.setActiveSuccess',\n setInactiveSuccess: 'Company.CompanyUsers.managementModal.setInactiveSuccess',\n deleteSuccess: 'Company.CompanyUsers.managementModal.deleteSuccess',\n ariaCloseModal: 'Company.CompanyUsers.managementModal.ariaLabels.closeModal',\n ariaModalDescription: 'Company.CompanyUsers.managementModal.ariaLabels.modalDescription',\n });\n\n const replaceCompanyNamePlaceholder = useCallback((message: string): string => {\n const companyName = companyInfo?.companyName || '';\n return message.replace(/%1/g, companyName);\n }, [companyInfo?.companyName]);\n\n const handleToggleStatus = useCallback(async () => {\n if (isTogglingStatus) return;\n \n const newStatus = userStatus === 'ACTIVE' ? 'INACTIVE' : 'ACTIVE';\n const isActivating = newStatus === 'ACTIVE';\n \n setIsTogglingStatus(true);\n clearAlert();\n try {\n const result = await updateCompanyUserStatus({ id: userId, status: newStatus });\n if (result.success) {\n const successMsg = isActivating ? translations.setActiveSuccess : translations.setInactiveSuccess;\n if (onSuccess) {\n onSuccess(successMsg);\n }\n onClose();\n } else {\n const errorMsg = isActivating ? translations.setActiveErrorSpecific : translations.setInactiveErrorSpecific;\n showError(replaceCompanyNamePlaceholder(errorMsg));\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : (isActivating ? translations.setActiveErrorGeneric : translations.setInactiveErrorGeneric);\n showError(replaceCompanyNamePlaceholder(errorMessage));\n } finally {\n setIsTogglingStatus(false);\n }\n }, [userId, userStatus, onClose, isTogglingStatus, clearAlert, showError, replaceCompanyNamePlaceholder, translations.setActiveErrorSpecific, translations.setInactiveErrorSpecific, translations.setActiveErrorGeneric, translations.setInactiveErrorGeneric, translations.setActiveSuccess, translations.setInactiveSuccess, onSuccess]);\n\n const handleDelete = useCallback(async () => {\n if (isDeleting) return;\n \n setIsDeleting(true);\n clearAlert();\n try {\n const result = await deleteCompanyUser({ id: userId });\n if (result.success) {\n if (onSuccess) {\n onSuccess(translations.deleteSuccess);\n }\n onClose();\n } else {\n showError(replaceCompanyNamePlaceholder(translations.deleteErrorSpecific));\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : translations.deleteErrorGeneric;\n showError(replaceCompanyNamePlaceholder(errorMessage));\n } finally {\n setIsDeleting(false);\n }\n }, [userId, onClose, isDeleting, clearAlert, showError, replaceCompanyNamePlaceholder, translations.deleteErrorSpecific, translations.deleteErrorGeneric, translations.deleteSuccess, onSuccess]);\n\n const handleCancel = useCallback(() => {\n clearAlert();\n onClose();\n }, [onClose, clearAlert]);\n\n // Handle Escape key\n const handleKeyDown = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n clearAlert();\n onClose();\n }\n \n // Focus trapping\n if (event.key === 'Tab') {\n const modal = modalRef.current;\n if (!modal) return;\n \n const focusableElements = modal.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n \n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n lastElement.focus();\n event.preventDefault();\n }\n } else if (document.activeElement === lastElement) {\n // Tab\n firstElement.focus();\n event.preventDefault();\n }\n }\n }, [onClose, clearAlert]);\n\n const handleOverlayClick = useCallback((event: MouseEvent) => {\n if (event.target === event.currentTarget) {\n clearAlert();\n onClose();\n }\n }, [onClose, clearAlert]);\n\n const handleCloseClick = useCallback(() => {\n clearAlert();\n onClose();\n }, [onClose, clearAlert]);\n\n // Focus management and event listeners\n useEffect(() => {\n if (isOpen) {\n // Store current focus\n previousFocusRef.current = document.activeElement as HTMLElement;\n \n // Add keyboard event listener\n document.addEventListener('keydown', handleKeyDown);\n \n // Focus the modal after a brief delay to ensure it's rendered\n setTimeout(() => {\n const modal = modalRef.current;\n if (modal) {\n const firstButton = modal.querySelector('button') as HTMLElement;\n if (firstButton) {\n firstButton.focus();\n } else {\n modal.focus();\n }\n }\n }, 100);\n \n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }\n \n // Restore focus when modal closes\n if (previousFocusRef.current) {\n previousFocusRef.current.focus();\n }\n }, [isOpen, handleKeyDown]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div \n className={classes(['company-management-company-users-management-modal-overlay', className])}\n onClick={handleOverlayClick}\n {...props}\n >\n <div \n ref={modalRef}\n className=\"company-management-company-users-management-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n >\n <div className=\"company-management-company-users-management-modal__header\">\n <h2 \n id={titleId}\n className=\"company-management-company-users-management-modal__title\"\n >\n {translations.title}\n </h2>\n <button\n className=\"company-management-company-users-management-modal__close\"\n onClick={handleCloseClick}\n aria-label={translations.ariaCloseModal}\n >\n ×\n </button>\n </div>\n \n <div \n id={descriptionId}\n className=\"company-management-company-users-management-modal__content\"\n >\n <p className=\"company-management-company-users-management-modal__text\">\n {userStatus === 'ACTIVE' ? translations.setInactiveText : translations.setActiveText}\n </p>\n <p className=\"company-management-company-users-management-modal__text\">\n {translations.deleteText}\n </p>\n </div>\n\n {inLineAlertProps?.text && (\n <div \n className=\"company-management-company-users-management-modal__alert\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n <InLineAlert\n type=\"error\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n data-testid=\"companyUsersManagementModalAlert\"\n />\n </div>\n )}\n\n <div className=\"company-management-company-users-management-modal__actions\">\n <Button\n variant=\"primary\"\n onClick={handleToggleStatus}\n disabled={isTogglingStatus}\n className=\"company-management-company-users-management-modal__button-primary\"\n >\n {isTogglingStatus \n ? (userStatus === 'ACTIVE' ? translations.settingInactiveButton : translations.settingActiveButton)\n : (userStatus === 'ACTIVE' ? translations.setInactiveButton : translations.setActiveButton)\n }\n </Button>\n \n <Button\n variant=\"tertiary\"\n onClick={handleDelete}\n disabled={isDeleting}\n className=\"company-management-company-users-management-modal__button-delete\"\n >\n {isDeleting ? translations.deletingButton : translations.deleteButton}\n </Button>\n \n <Button\n variant=\"secondary\"\n onClick={handleCancel}\n className=\"company-management-company-users-management-modal__button-cancel\"\n >\n {translations.cancelButton}\n </Button>\n </div>\n </div>\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback, useRef, useMemo } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { \n Button, \n Picker,\n Modal,\n InLineAlert,\n ActionButton,\n Pagination\n} from '@adobe-commerce/elsie/components';\nimport { Table } from '@adobe-commerce/elsie/components/Table/Table';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { formatUserStatus, formatUserName, decodeUserId } from '@/company-management/lib';\nimport { CompanyUserStatus } from '@/company-management/types';\nimport { CompanyUserForm } from '@/company-management/components/CompanyUserForm';\nimport { CompanyUsersManagementModal } from '@/company-management/components/CompanyUsersManagementModal';\nimport { CompanyUsersFilters } from '@/company-management/components/CompanyUsersFilters';\nimport { useCompanyUsers, useModal, useCompanyContextListener, useUserPermissions, useInLineAlert } from '@/company-management/hooks';\nimport './CompanyUsers.css';\n\nexport interface CompanyUsersProps extends HTMLAttributes<HTMLElement> {}\n\n// Constants\nconst PAGE_SIZE_OPTIONS = [\n { text: '10', value: '10' },\n { text: '20', value: '20' },\n { text: '50', value: '50' },\n { text: '100', value: '100' }\n];\n\nexport const CompanyUsers: Container<CompanyUsersProps> = ({ children, className, ...props }) => {\n // Get user permissions\n const { permissions } = useUserPermissions();\n\n // Text translations using proper useText pattern\n const translations = useText({\n showAllUsers: 'Company.CompanyUsers.filters.showAll',\n showActiveUsers: 'Company.CompanyUsers.filters.showActive',\n showInactiveUsers: 'Company.CompanyUsers.filters.showInactive',\n idColumn: 'Company.CompanyUsers.columns.id',\n nameColumn: 'Company.CompanyUsers.columns.name',\n emailColumn: 'Company.CompanyUsers.columns.email',\n roleColumn: 'Company.CompanyUsers.columns.role',\n teamColumn: 'Company.CompanyUsers.columns.team',\n statusColumn: 'Company.CompanyUsers.columns.status',\n actionsColumn: 'Company.CompanyUsers.columns.actions',\n statusActive: 'Company.CompanyUsers.status.active',\n statusInactive: 'Company.CompanyUsers.status.inactive',\n emptyTeam: 'Company.CompanyUsers.emptyTeam',\n emptyActions: 'Company.CompanyUsers.emptyActions',\n itemsRange: 'Company.CompanyUsers.pagination.itemsRange',\n itemsPerPageLabel: 'Company.CompanyUsers.pagination.itemsPerPage',\n showLabel: 'Company.CompanyUsers.pagination.show',\n previousPage: 'Company.CompanyUsers.pagination.previous',\n nextPage: 'Company.CompanyUsers.pagination.next',\n pageInfo: 'Company.CompanyUsers.pagination.pageInfo',\n // Accessibility labels\n ariaUsersTable: 'Company.CompanyUsers.ariaLabels.usersTable',\n ariaFilterOptions: 'Company.CompanyUsers.ariaLabels.filterOptions',\n ariaPaginationNav: 'Company.CompanyUsers.ariaLabels.paginationNav',\n ariaPageSizeSelector: 'Company.CompanyUsers.ariaLabels.pageSizeSelector',\n ariaPreviousPageFull: 'Company.CompanyUsers.ariaLabels.previousPageFull',\n ariaNextPageFull: 'Company.CompanyUsers.ariaLabels.nextPageFull',\n ariaCurrentPage: 'Company.CompanyUsers.ariaLabels.currentPage',\n ariaShowingUsers: 'Company.CompanyUsers.ariaLabels.showingUsers',\n ariaDataLoaded: 'Company.CompanyUsers.ariaLabels.dataLoaded',\n ariaDataError: 'Company.CompanyUsers.ariaLabels.dataError',\n ariaPageNavigation: 'Company.CompanyUsers.ariaLabels.pageNavigation',\n manageUser: 'Company.CompanyUsers.actions.manage',\n editUser: 'Company.CompanyUsers.actions.edit',\n ariaManageUser: 'Company.CompanyUsers.ariaLabels.manageUser',\n ariaEditUser: 'Company.CompanyUsers.ariaLabels.editUser',\n addNewUser: 'Company.CompanyUsers.actions.addNewUser',\n noUsersFound: 'Company.CompanyUsers.noUsersFound'\n });\n\n // Use the company users hook to manage all user data and pagination\n const {\n users,\n loading,\n currentPage,\n pageSize,\n filterType,\n totalItems,\n totalPages,\n announcement,\n canEditUsers,\n handleFilterChange,\n handlePageSizeChange,\n handlePageChange,\n refreshUsers\n } = useCompanyUsers({\n translations: {\n ariaDataLoaded: translations.ariaDataLoaded,\n ariaDataError: translations.ariaDataError\n }\n });\n\n // Stable reference to translations to prevent unnecessary re-renders\n const translationsRef = useRef(translations);\n translationsRef.current = translations;\n\n // Handle company context changes using reusable hook\n const handleCompanyContextChange = useCallback(() => {\n refreshUsers();\n }, [refreshUsers]);\n\n useCompanyContextListener(handleCompanyContextChange);\n\n // Modal management using useModal hook\n const manageModal = useModal(refreshUsers);\n const editModal = useModal(refreshUsers);\n const addModal = useModal(refreshUsers);\n\n // Alert management for displaying errors\n const { inLineAlertProps, handleSetInLineAlert } = useInLineAlert();\n\n // Prepare table columns - memoized to prevent unnecessary re-renders (optimized)\n const columns = useMemo(() => {\n const currentTranslations = translationsRef.current;\n return [\n { key: 'id', label: currentTranslations.idColumn },\n { key: 'name', label: currentTranslations.nameColumn },\n { key: 'email', label: currentTranslations.emailColumn },\n { key: 'role', label: currentTranslations.roleColumn },\n { key: 'team', label: currentTranslations.teamColumn },\n { key: 'status', label: currentTranslations.statusColumn },\n { key: 'actions', label: currentTranslations.actionsColumn }\n ];\n }, []); // No dependencies - only recompute when component mounts\n\n\n // Prepare table row data - memoized for performance (optimized)\n const rowData = useMemo(() => users.map((user) => {\n const fullName = formatUserName(user.firstName, user.lastName);\n const currentTranslations = translationsRef.current;\n \n // Decode ID for display only (base64 -> plain text)\n const displayId = decodeUserId(user.id);\n \n return {\n id: displayId,\n name: fullName,\n email: user.email,\n role: user.role,\n team: user.team || currentTranslations.emptyTeam,\n status: formatUserStatus(user.status, currentTranslations),\n actions: canEditUsers ? (\n <div className=\"user-actions\">\n <ActionButton\n onClick={() => editModal.open(user.id)}\n aria-label={currentTranslations.ariaEditUser.replace('{name}', fullName)}\n className=\"edit-user-button\"\n >\n {currentTranslations.editUser}\n </ActionButton>\n <ActionButton\n onClick={() => manageModal.open(user.id)}\n aria-label={currentTranslations.ariaManageUser.replace('{name}', fullName)}\n className=\"manage-user-button\"\n >\n {currentTranslations.manageUser}\n </ActionButton>\n </div>\n ) : (\n <span className=\"no-actions\">{currentTranslations.emptyActions}</span>\n )\n };\n }), [users, canEditUsers, editModal, manageModal]);\n\n // Memoize selected user for performance\n const selectedUser = useMemo(() => \n users.find(user => user.id === manageModal.selectedId),\n [users, manageModal.selectedId]\n );\n\n return (\n <section className={className} {...props}>\n {/* Screen reader announcements */}\n <div className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </div>\n\n {/* Filter buttons */}\n <CompanyUsersFilters\n filterType={filterType}\n onFilterChange={handleFilterChange}\n translations={{\n showAllUsers: translations.showAllUsers,\n showActiveUsers: translations.showActiveUsers,\n showInactiveUsers: translations.showInactiveUsers,\n ariaFilterOptions: translations.ariaFilterOptions\n }}\n />\n\n {/* Alert messages */}\n {inLineAlertProps && inLineAlertProps.text ? (\n <InLineAlert\n className=\"company-users__alert\"\n type={inLineAlertProps.type || 'success'}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n\n {/* Table with loading state */}\n <div aria-busy={loading}>\n <Table\n className=\"companyUsersTable\"\n columns={columns}\n rowData={rowData}\n mobileLayout=\"stacked\"\n loading={loading}\n aria-label={translations.ariaUsersTable}\n summary={translations.ariaShowingUsers.replace('{count}', users.length.toString())}\n />\n {!loading && users.length === 0 && (\n <div className=\"companyUsersTable__empty\">\n {translations.noUsersFound}\n </div>\n )}\n </div>\n\n {/* Pagination controls (only show when there are users) */}\n {users.length > 0 && (\n <nav aria-label={translations.ariaPaginationNav} className=\"paginationContainer\">\n {/* Items count on the left */}\n <div aria-live=\"polite\" aria-atomic=\"true\">\n {(() => {\n const startItem = totalItems === 0 ? 0 : (currentPage - 1) * pageSize + 1;\n const endItem = Math.min(currentPage * pageSize, totalItems);\n return translations.itemsRange\n .replace('{start}', startItem.toString())\n .replace('{end}', endItem.toString())\n .replace('{total}', totalItems.toString());\n })()}\n </div>\n\n {/* Pagination component in the center (only show when multiple pages) */}\n {totalPages > 1 && (\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onChange={handlePageChange}\n className=\"paginationButtons\"\n />\n )}\n\n {/* Page size picker on the right */}\n <div className=\"pageSizeSelector\">\n <label htmlFor=\"page-size-select\" id=\"page-size-label\">\n <span>{translations.showLabel}</span>\n </label>\n <Picker\n id=\"page-size-select\"\n name=\"pageSize\"\n value={pageSize.toString()}\n options={PAGE_SIZE_OPTIONS}\n onChange={handlePageSizeChange}\n aria-labelledby=\"page-size-label\"\n />\n </div>\n </nav>\n )}\n\n {/* Add New User Button */}\n {canEditUsers && (\n <div className=\"addUserButtonContainer\">\n <Button\n variant=\"primary\"\n onClick={() => addModal.open()}\n aria-label={translations.addNewUser}\n >\n {translations.addNewUser}\n </Button>\n </div>\n )}\n\n {children}\n\n {/* User Add Modal (for adding new user) */}\n {addModal.isOpen && canEditUsers && (\n <Modal\n open={addModal.isOpen}\n onClose={addModal.close}\n size=\"medium\"\n >\n <CompanyUserForm\n mode=\"add\"\n entityId={undefined}\n parentStructureId={undefined}\n permissions={permissions}\n onSaved={addModal.close}\n onCancel={addModal.close}\n onError={(error) => {\n handleSetInLineAlert({ text: error, type: 'error' });\n }}\n onSuccess={(message) => {\n handleSetInLineAlert({ text: message, type: 'success' });\n }}\n />\n </Modal>\n )}\n\n {/* User Edit Modal (for editing user information) */}\n {editModal.selectedId && editModal.isOpen && canEditUsers && (\n <Modal\n open={editModal.isOpen}\n onClose={editModal.close}\n size=\"medium\"\n >\n <CompanyUserForm\n mode=\"edit\"\n entityId={editModal.selectedId}\n parentStructureId={undefined}\n permissions={permissions}\n onSaved={editModal.close}\n onCancel={editModal.close}\n onError={(error) => {\n handleSetInLineAlert({ text: error, type: 'error' });\n }}\n onSuccess={(message) => {\n handleSetInLineAlert({ text: message, type: 'success' });\n }}\n />\n </Modal>\n )}\n\n {/* User Management Modal (for status changes and deletion) */}\n {manageModal.selectedId && canEditUsers && selectedUser && (\n <CompanyUsersManagementModal\n isOpen={manageModal.isOpen}\n userId={manageModal.selectedId}\n userStatus={(selectedUser.status as CompanyUserStatus) || 'ACTIVE'}\n onClose={manageModal.close}\n onSuccess={(message) => {\n handleSetInLineAlert({ text: message, type: 'success' });\n }}\n />\n )}\n </section>\n );\n};\n"],"names":["decodeBase64","encoded","decodeUserId","encodedUserId","formatUserStatus","status","translations","formatUserName","firstName","lastName","first","last","CompanyUsersFilters","filterType","onFilterChange","filters","filter","jsx","Button","DEFAULT_PAGE_SIZE","FIRST_PAGE","useCompanyUsers","users","setUsers","useState","loading","setLoading","currentPage","setCurrentPage","pageSize","setPageSize","setFilterType","totalItems","setTotalItems","totalPages","setTotalPages","announcement","setAnnouncement","userPermissions","setUserPermissions","translationsRef","useRef","useMemo","fetchUsers","useCallback","response","getCompanyUsers","fetchPermissions","allowedIds","fetchUserPermissions","useEffect","handleFilterChange","newFilter","handlePageSizeChange","event","value","newSize","handlePreviousPage","handleNextPage","handlePageChange","newPage","canEditUsers","refreshUsers","useModal","onClose","isOpen","setIsOpen","selectedId","setSelectedId","open","id","close","CompanyUsersManagementModal","className","userId","userStatus","onSuccess","props","isDeleting","setIsDeleting","isTogglingStatus","setIsTogglingStatus","inLineAlertProps","showError","clearAlert","useInLineAlert","companyInfo","useCustomerCompanyInfo","modalRef","previousFocusRef","titleId","descriptionId","useText","replaceCompanyNamePlaceholder","message","companyName","handleToggleStatus","newStatus","isActivating","updateCompanyUserStatus","successMsg","errorMsg","error","errorMessage","handleDelete","deleteCompanyUser","handleCancel","handleKeyDown","modal","focusableElements","firstElement","lastElement","handleOverlayClick","handleCloseClick","firstButton","classes","jsxs","InLineAlert","PAGE_SIZE_OPTIONS","CompanyUsers","children","permissions","useUserPermissions","handleCompanyContextChange","useCompanyContextListener","manageModal","editModal","addModal","handleSetInLineAlert","columns","currentTranslations","rowData","user","fullName","ActionButton","selectedUser","Table","startItem","endItem","Pagination","Picker","Modal","CompanyUserForm"],"mappings":"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"}
@@ -27,6 +27,7 @@ export interface UseCompanyUsersReturn {
27
27
  } | string) => void;
28
28
  handlePreviousPage: () => void;
29
29
  handleNextPage: () => void;
30
+ handlePageChange: (newPage: number) => void;
30
31
  refreshUsers: () => Promise<void>;
31
32
  }
32
33
  export declare const useCompanyUsers: ({ translations }: UseCompanyUsersProps) => UseCompanyUsersReturn;
@@ -230,7 +230,7 @@ declare const _default: {
230
230
  },
231
231
  "emptyTeam": "-",
232
232
  "pagination": {
233
- "itemsCount": "{count} Item(s)",
233
+ "itemsRange": "Items {start}-{end} of {total}",
234
234
  "itemsPerPage": "Items per page:",
235
235
  "show": "Show",
236
236
  "perPage": "per page",
@@ -239,6 +239,7 @@ declare const _default: {
239
239
  "pageInfo": "Page {current} of {total}"
240
240
  },
241
241
  "emptyActions": "",
242
+ "noUsersFound": "No users found.",
242
243
  "actions": {
243
244
  "manage": "Manage",
244
245
  "edit": "Edit",
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-company-management", "version": "1.0.0-beta17", "@dropins/tools": "^1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-company-management", "version": "1.0.0-beta18", "@dropins/tools": "^1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
package/render.js CHANGED
@@ -2,7 +2,7 @@
2
2
  All Rights Reserved. */
3
3
  (function(n,t){try{if(typeof document<"u"){const e=document.createElement("style"),r=t.styleId;for(const a in t.attributes)e.setAttribute(a,t.attributes[a]);e.setAttribute("data-dropin",r),e.appendChild(document.createTextNode(n));const o=document.querySelector('style[data-dropin="sdk"]');if(o)o.after(e);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(e):document.head.append(e)}}}catch(e){console.error("dropin-styles (injectCodeFunction)",e)}})(`.company-management-role-and-permission-table{display:flex;flex-direction:column;gap:16px}.roles-table-container{margin-top:0;margin-bottom:20px;overflow-x:auto}.company-management-role-and-permission-table .dropin-table__table{border:none;table-layout:fixed;width:100%}.company-management-role-and-permission-table .dropin-table__header__cell,.company-management-role-and-permission-table .dropin-table__body__cell{border-bottom:1px solid var(--color-neutral-400, #b0b0b0);padding:6px 8px;height:auto;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(1),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(1){width:70px}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(2),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(2){width:auto;min-width:380px}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(3),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(3){width:70px}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(4),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(4){width:240px;white-space:normal;padding:6px 4px}.company-management-role-and-permission-table .dropin-table__header__row,.company-management-role-and-permission-table .dropin-table__body__row{border:none;height:40px}.company-management-role-and-permission-table .dropin-table__header__cell{font-weight:600}.roles-and-permissions-page{max-width:1200px;margin:0 auto;padding:24px}.roles-and-permissions-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:24px}.page-header{margin-bottom:24px}.page-header h1{font-weight:600;color:#333;margin:0}.page-content{display:flex;flex-direction:column;gap:16px}.roles-actions{display:flex;align-items:center;gap:2px;justify-content:flex-start}.roles-actions button{padding:0;min-width:auto;text-decoration:none;background:none!important;border:none!important}.roles-actions button:hover{text-decoration:underline}.roles-actions .separator{color:#ccc;margin:0 2px}.role-actions-container{display:flex;gap:8px;align-items:center}.role-action-wrapper{display:inline-flex;align-items:center}.role-action-wrapper .separator{display:inline-flex;align-items:center;height:100%}.role-action-button{padding:0!important;min-height:auto!important}.page-footer,.table-footer{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding:16px 0;border-top:1px solid var(--color-neutral-200, #e5e5e5);position:relative}.pagination-section{display:flex;align-items:center;gap:16px}.page-actions{margin-top:24px}@media (max-width: 768px){.company-management-role-and-permission-table{gap:12px}.roles-table-container{margin-bottom:16px}}@media only screen and (min-width: 768px){.roles-and-permissions-page,.roles-and-permissions-card{padding:32px}}@media only screen and (min-width: 1024px){.page-footer{flex-direction:row;justify-content:space-between}.page-actions{margin-top:0}}@media only screen and (min-width: 1366px){.roles-and-permissions-page{max-width:1400px}}@media only screen and (min-width: 1920px){.roles-and-permissions-page{max-width:1600px}}.table-footer-left{display:flex;align-items:center;flex:1}.table-footer-center{display:flex;align-items:center;justify-content:center;position:absolute;left:50%;transform:translate(-50%)}.table-footer-right{display:flex;align-items:center;justify-content:flex-end;flex:1}.item-count{color:var(--color-neutral-700, #555);font-weight:500}.pagination-controls{display:flex;align-items:center;gap:8px}.pagination-label{color:var(--color-neutral-700, #555)}.page-size-picker{min-width:80px;max-width:100px}.page-size-picker .dropin-picker__button{padding:6px 10px!important;min-height:32px!important;display:flex!important;align-items:center!important;justify-content:space-between!important}.page-size-picker .dropin-picker__option{padding:6px 10px!important}.page-navigation{display:flex;align-items:center;gap:4px}.page-num-button,.page-nav-button{min-width:32px!important;padding:4px 8px!important}.page-num-button.active{font-weight:600;background-color:var(--color-neutral-200, #e5e5e5)!important}.page-ellipsis{padding:4px 8px;color:var(--color-neutral-600, #666)}.page-info{color:var(--color-neutral-700, #555);font-weight:500;white-space:nowrap}@media (max-width: 768px){.table-footer,.page-footer{flex-direction:column;align-items:center;gap:12px}.table-footer-left{align-self:flex-start}.table-footer-center{position:static;transform:none;left:auto}.table-footer-right{align-self:flex-end}.pagination-controls{gap:6px}}.edit-role-and-permission{max-width:800px;margin:0 auto}.edit-role-and-permission__title,.edit-role-and-permission__notification{margin-bottom:1.5rem}.edit-role-and-permission-form{position:relative}.edit-role-and-permission__section{margin-bottom:2rem}.edit-role-and-permission__section-title{margin-bottom:1rem}.edit-role-and-permission__permissions-description,.edit-role-and-permission__permissions-description *{font-weight:400!important}.edit-role-and-permission__validation-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%);z-index:1}.edit-role-and-permission .dropin-field__label:after{content:" *";color:var(--color-neutral-600, #666);font-weight:400}.edit-role-and-permission__tree-controls{display:flex;gap:.5rem;margin-bottom:1rem}.edit-role-and-permission__tree-container{border:1px solid var(--color-neutral-300);border-radius:.375rem;padding:1rem;background-color:var(--color-neutral-50);min-height:200px}.edit-role-and-permission__tree-loading{text-align:center;padding:2rem;color:var(--color-neutral-600)}.edit-role-and-permission__tree-node{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;min-height:2rem}.edit-role-and-permission__tree-expander{width:1.625rem;height:1.625rem;min-width:1.625rem;min-height:1.625rem;border:1px solid var(--color-neutral-400);border-radius:.25rem;background:var(--color-neutral-100);color:var(--color-neutral-700);font-size:1.05rem;font-weight:600;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;padding:0;pointer-events:auto}.edit-role-and-permission__tree-spacer{width:1.625rem;height:1.625rem;min-width:1.625rem;min-height:1.625rem;flex-shrink:0;display:inline-block}.edit-role-and-permission__tree-expander:hover{background:var(--color-neutral-200);border-color:var(--color-neutral-500)}.edit-role-and-permission__tree-expander:focus{outline:2px solid var(--color-primary-600);outline-offset:2px}.edit-role-and-permission__tree-label{color:var(--color-neutral-800);-webkit-user-select:none;user-select:none}.edit-role-and-permission__actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:2rem}.edit-role-and-permission__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#fffc;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;border-radius:inherit}.edit-role-and-permission__loading-text{margin-top:1rem;color:var(--color-neutral-600)}.edit-role-and-permission .acm-tree__item{margin:.125rem 0;padding-left:0!important}.edit-role-and-permission .acm-tree__group{padding-left:3rem!important}@media (max-width: 768px){.edit-role-and-permission{max-width:100%;margin:0}.edit-role-and-permission__tree-container{padding:.75rem}.edit-role-and-permission__actions{flex-direction:column;gap:.75rem}.edit-role-and-permission__tree-controls{flex-wrap:wrap}}.delete-role-modal{min-width:320px!important;max-width:400px!important;width:auto!important}.delete-role-modal__content{margin-bottom:16px}.delete-role-modal__content p{margin:0 0 8px;line-height:1.4}.delete-role-modal__content p:last-child{margin-bottom:0}.delete-role-modal__actions{display:flex;gap:8px;justify-content:flex-end;flex-direction:row;align-items:center;margin-top:12px;flex-wrap:nowrap}.delete-role-modal__confirm-btn,.delete-role-modal__cancel-btn,.delete-role-modal__ok-btn{min-width:70px;flex-shrink:0;padding:8px 16px}.delete-role-modal .delete-role-modal__actions{display:flex!important;flex-direction:row!important;gap:8px!important;justify-content:flex-end!important;flex-wrap:nowrap!important}
4
4
  .customer-company-info-card .dropin-card__content{gap:0}.customer-company-info-card__content p{font:var(--type-body-1-default-font);margin:0 0 var(--spacing-xsmall) 0;line-height:var(--spacing-xbig);padding:0}
5
- .company-management-company-users-management-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.company-management-company-users-management-modal{background:#fff;border-radius:8px;box-shadow:0 8px 32px #0003;max-width:480px;width:90%;max-height:90vh;overflow-y:auto;position:relative;outline:none}.company-management-company-users-management-modal:focus{box-shadow:0 8px 32px #0003,0 0 0 3px #2563eb80}.company-management-company-users-management-modal__header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 16px;border-bottom:1px solid #e5e5e5}.company-management-company-users-management-modal__title{margin:0;font-size:20px;font-weight:600;color:#333;line-height:1.2}.company-management-company-users-management-modal__close{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:4px;line-height:1;border-radius:4px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background-color .2s ease}.company-management-company-users-management-modal__close:hover{background-color:#f5f5f5;color:#333}.company-management-company-users-management-modal__close:focus{outline:2px solid #2563eb;outline-offset:2px;background-color:#f5f5f5}.company-management-company-users-management-modal__content{padding:24px}.company-management-company-users-management-modal__text{margin:0 0 16px;color:#666;line-height:1.5;font-size:14px}.company-management-company-users-management-modal__text:last-child{margin-bottom:0}.company-management-company-users-management-modal__alert{margin:0 24px 16px}.company-management-company-users-management-modal__actions{display:flex;gap:12px;padding:16px 24px 24px;border-top:1px solid #e5e5e5;justify-content:flex-end;flex-wrap:wrap}.company-management-company-users-management-modal__button-primary{order:1}.company-management-company-users-management-modal__button-delete{order:2;background:none;border:none;color:#2563eb;font-size:14px;font-weight:500;cursor:pointer;padding:8px 16px;border-radius:4px;transition:all .2s ease;text-decoration:none;line-height:1.4}.company-management-company-users-management-modal__button-delete:hover{background-color:#eff6ff;text-decoration:underline}.company-management-company-users-management-modal__button-delete:disabled{opacity:.6;cursor:not-allowed}.company-management-company-users-management-modal__button-delete:disabled:hover{background-color:transparent;text-decoration:none}.company-management-company-users-management-modal__button-delete:focus{outline:2px solid #2563eb;outline-offset:2px}.company-management-company-users-management-modal__button-cancel{order:3}@media only screen and (max-width: 768px){.company-management-company-users-management-modal{margin:16px;width:calc(100% - 32px)}.company-management-company-users-management-modal__actions{flex-direction:column;gap:8px}.company-management-company-users-management-modal__actions button{width:100%;order:initial!important}.company-management-company-users-management-modal__button-primary{order:1!important}.company-management-company-users-management-modal__button-delete{order:2!important}.company-management-company-users-management-modal__button-cancel{order:3!important}.company-management-company-users-management-modal__alert{margin:0 16px 16px}}.filterButtons{margin-bottom:16px;display:flex;gap:8px}.loadingContainer{padding:32px;text-align:center}.paginationContainer{margin-top:16px;display:flex;justify-content:space-between;align-items:center}.paginationButtons{display:flex;align-items:center;gap:8px}.pageSizeSelector{display:flex;align-items:center;gap:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.user-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.edit-user-button,.manage-user-button{font-size:14px;padding:4px;min-height:auto}.addUserButtonContainer{margin-top:16px}.companyUsersTable{width:100%;table-layout:auto}.companyUsersTable th,.companyUsersTable td{white-space:normal;word-break:break-word;vertical-align:top}.companyUsersTable th:nth-child(1),.companyUsersTable td:nth-child(1){width:50px}.companyUsersTable th:nth-child(2),.companyUsersTable td:nth-child(2){width:100px}.companyUsersTable th:nth-child(3),.companyUsersTable td:nth-child(3){width:180px;word-break:break-all;overflow-wrap:anywhere}.companyUsersTable th:nth-child(4),.companyUsersTable td:nth-child(4){width:100px}.companyUsersTable th:nth-child(5),.companyUsersTable td:nth-child(5){width:100px}.companyUsersTable th:nth-child(6),.companyUsersTable td:nth-child(6){width:60px}.companyUsersTable th:nth-child(7),.companyUsersTable td:nth-child(7){width:110px}
5
+ .company-management-company-users-management-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.company-management-company-users-management-modal{background:#fff;border-radius:8px;box-shadow:0 8px 32px #0003;max-width:480px;width:90%;max-height:90vh;overflow-y:auto;position:relative;outline:none}.company-management-company-users-management-modal:focus{box-shadow:0 8px 32px #0003,0 0 0 3px #2563eb80}.company-management-company-users-management-modal__header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 16px;border-bottom:1px solid #e5e5e5}.company-management-company-users-management-modal__title{margin:0;font-size:20px;font-weight:600;color:#333;line-height:1.2}.company-management-company-users-management-modal__close{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:4px;line-height:1;border-radius:4px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background-color .2s ease}.company-management-company-users-management-modal__close:hover{background-color:#f5f5f5;color:#333}.company-management-company-users-management-modal__close:focus{outline:2px solid #2563eb;outline-offset:2px;background-color:#f5f5f5}.company-management-company-users-management-modal__content{padding:24px}.company-management-company-users-management-modal__text{margin:0 0 16px;color:#666;line-height:1.5;font-size:14px}.company-management-company-users-management-modal__text:last-child{margin-bottom:0}.company-management-company-users-management-modal__alert{margin:0 24px 16px}.company-management-company-users-management-modal__actions{display:flex;gap:12px;padding:16px 24px 24px;border-top:1px solid #e5e5e5;justify-content:flex-end;flex-wrap:wrap}.company-management-company-users-management-modal__button-primary{order:1}.company-management-company-users-management-modal__button-delete{order:2;background:none;border:none;color:#2563eb;font-size:14px;font-weight:500;cursor:pointer;padding:8px 16px;border-radius:4px;transition:all .2s ease;text-decoration:none;line-height:1.4}.company-management-company-users-management-modal__button-delete:hover{background-color:#eff6ff;text-decoration:underline}.company-management-company-users-management-modal__button-delete:disabled{opacity:.6;cursor:not-allowed}.company-management-company-users-management-modal__button-delete:disabled:hover{background-color:transparent;text-decoration:none}.company-management-company-users-management-modal__button-delete:focus{outline:2px solid #2563eb;outline-offset:2px}.company-management-company-users-management-modal__button-cancel{order:3}@media only screen and (max-width: 768px){.company-management-company-users-management-modal{margin:16px;width:calc(100% - 32px)}.company-management-company-users-management-modal__actions{flex-direction:column;gap:8px}.company-management-company-users-management-modal__actions button{width:100%;order:initial!important}.company-management-company-users-management-modal__button-primary{order:1!important}.company-management-company-users-management-modal__button-delete{order:2!important}.company-management-company-users-management-modal__button-cancel{order:3!important}.company-management-company-users-management-modal__alert{margin:0 16px 16px}}.filterButtons{margin-bottom:var(--spacing-medium);display:flex;gap:var(--spacing-xsmall)}.loadingContainer{padding:var(--spacing-big);text-align:center}.paginationContainer{margin-top:var(--spacing-medium);display:flex;justify-content:space-between;align-items:center}.paginationButtons{display:flex;align-items:center;gap:var(--spacing-xsmall)}.pageSizeSelector{display:flex;align-items:center;gap:var(--spacing-xxsmall)}.sr-only{position:absolute;width:var(--shape-border-width-1);height:var(--shape-border-width-1);padding:0;margin:calc(-1 * var(--shape-border-width-1));overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:var(--shape-border-width-0)}.user-actions{display:flex;gap:var(--spacing-xsmall);align-items:center;flex-wrap:wrap}.edit-user-button,.manage-user-button{font-size:var(--type-body-2-default-size);padding:var(--spacing-xxsmall);min-height:auto}.addUserButtonContainer{margin-top:var(--spacing-medium)}.companyUsersTable{width:100%;table-layout:auto}.companyUsersTable th,.companyUsersTable td{white-space:normal;word-break:break-word;vertical-align:top}.companyUsersTable th{padding:var(--spacing-xsmall)}.companyUsersTable th:nth-child(1),.companyUsersTable td:nth-child(1){width:50px}.companyUsersTable th:nth-child(2),.companyUsersTable td:nth-child(2){width:100px}.companyUsersTable th:nth-child(3),.companyUsersTable td:nth-child(3){width:180px;word-break:break-all;overflow-wrap:anywhere}.companyUsersTable th:nth-child(4),.companyUsersTable td:nth-child(4){width:100px}.companyUsersTable th:nth-child(5),.companyUsersTable td:nth-child(5){width:100px}.companyUsersTable th:nth-child(6),.companyUsersTable td:nth-child(6){width:60px}.companyUsersTable th:nth-child(7),.companyUsersTable td:nth-child(7){width:110px}.companyUsersTable__empty{text-align:center;padding:var(--spacing-medium);border:var(--shape-border-width-1) solid var(--color-neutral-400);color:var(--color-neutral-600);background-color:var(--color-neutral-50)}
6
6
  .dropin-table{container-type:inline-size;overflow-x:auto;font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-table__table{border:var(--shape-border-width-1) solid var(--color-neutral-400);border-collapse:collapse;width:100%}.dropin-table__caption{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);text-align:left;margin-bottom:var(--spacing-small);caption-side:top}.dropin-table__header__cell{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.dropin-table__header__cell{color:var(--color-neutral-800);text-align:left;white-space:nowrap}.dropin-table__header__cell--sortable{cursor:pointer}.dropin-table__header__row{border-bottom:var(--shape-border-width-1) solid var(--color-neutral-400)}.dropin-table__header__row th{padding:var(--spacing-small) var(--spacing-medium)}.dropin-table__body__row:nth-child(2n){background-color:var(--color-neutral-100)}.dropin-table__body__row.dropin-table__body__row--expanded{background-color:var(--color-neutral-200)}.dropin-table__body__cell{padding:var(--spacing-small) var(--spacing-medium)}.dropin-table__header__sort-button{vertical-align:middle}.dropin-table__row-details{display:none}.dropin-table__row-details--expanded{display:table-row}.dropin-table__row-details__cell{padding:var(--spacing-small) var(--spacing-medium);background-color:var(--color-neutral-200)}.dropin-table__row-details--expanded .dropin-table__row-details__cell>*:last-child{margin:0}.dropin-table__row-details__cell h1,.dropin-table__row-details__cell h2,.dropin-table__row-details__cell h3,.dropin-table__row-details__cell h4,.dropin-table__row-details__cell h5,.dropin-table__row-details__cell h6{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);margin:0}.dropin-table__row-details__cell p,.dropin-table__row-details__cell span{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}@container (max-width: 600px){.dropin-table--mobile-layout-stacked .dropin-table__header{display:none}.dropin-table--mobile-layout-stacked .dropin-table__body__row{padding:var(--spacing-medium);display:block}.dropin-table--mobile-layout-stacked .dropin-table__body__cell{display:block;font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);padding:var(--spacing-xsmall) 0}.dropin-table--mobile-layout-stacked .dropin-table__body__cell:first-child{padding-top:0}.dropin-table--mobile-layout-stacked .dropin-table__body__cell:last-child{padding-bottom:0}.dropin-table--mobile-layout-stacked .dropin-table__body__cell:before{content:attr(data-label);font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);display:block;margin-bottom:var(--spacing-xxsmall)}.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell{display:block;padding:var(--spacing-medium)}.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell>*:first-child{border-top:var(--shape-border-width-1) solid var(--color-neutral-400);padding-top:var(--spacing-medium);margin-top:calc(var(--spacing-medium) * -1)}.dropin-table--mobile-layout-stacked .dropin-table__row-details--expanded .dropin-table__row-details__cell>*:last-child{margin:0}.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell h1,.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell h2,.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell h3,.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell h4,.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell h5,.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell h6{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell p,.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell span{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}}
7
7
  .company-team-form__card{position:relative}.company-team-form__card.is-working .company-team-form__content{pointer-events:none}.company-team-form__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff9;display:flex;align-items:center;justify-content:center;z-index:1}.company-team-form__content .dropin-field[required] .dropin-field__label:after{content:" *";color:var(--color-alert-800, #c5281c)}.acm-structure-toolbar-card{overflow:visible}.acm-structure-toolbar-card--spaced{margin-bottom:var(--spacing-small)}.acm-structure-toolbar{display:flex;flex-wrap:wrap;gap:var(--spacing-xsmall);align-items:center;padding:var(--spacing-xsmall)}.acm-structure-toolbar>*{flex:0 1 auto;min-width:0}.acm-structure-toolbar button,.acm-structure-toolbar [role=button]{display:inline-flex;width:auto;flex:0 1 auto;min-width:0}.acm-structure-tree-card{padding:var(--spacing-xsmall) var(--spacing-xsmall) var(--spacing-xsmall);position:relative}.acm-structure-tree-card.is-working .acm-structure-tree-content{pointer-events:none}.acm-structure-working{display:inline-flex;gap:var(--spacing-xsmall);align-items:center}.acm-structure-tree-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff9;display:flex;align-items:center;justify-content:center;z-index:1;pointer-events:all}.acm-structure-modal-content{display:grid;gap:var(--spacing-small)}.acm-structure-modal-title{margin:0}.acm-structure-modal-actions{display:flex;gap:var(--spacing-xsmall);justify-content:flex-end}.acm-structure-expander-button{min-width:18px;min-height:18px}.acm-structure-description-button{margin-left:var(--spacing-xsmall);padding:0 var(--spacing-xsmall)}.acm-structure-row{display:flex;align-items:center;gap:var(--spacing-xsmall);line-height:var(--spacing-medium)}.acm-structure-expander{width:18px;height:18px;border:1px solid var(--color-neutral-300);border-radius:50%;background:var(--color-neutral-0);position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--type-caption-1-default-font-size);font-weight:700;color:var(--color-neutral-600);flex-shrink:0}.acm-structure-expander--placeholder{visibility:hidden}.acm-structure-handle{width:12px;height:12px;background:linear-gradient(var(--color-neutral-400) 0 0) left/2px 100% no-repeat,linear-gradient(var(--color-neutral-400) 0 0) center/2px 100% no-repeat,linear-gradient(var(--color-neutral-400) 0 0) right/2px 100% no-repeat;opacity:.5}.acm-structure-icon{width:18px;height:18px;border-radius:50%;background:var(--color-neutral-200);display:inline-block}.acm-structure-icon.is-team{background:var(--color-blue-100)}.acm-structure-icon.is-user{background:var(--color-neutral-100)}.acm-structure-label{cursor:pointer}.acm-structure-modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:1000}.acm-structure-modal{width:560px;background:var(--color-neutral-0);border-radius:var(--shape-border-radius-1);box-shadow:0 8px 24px #0003;padding:var(--spacing-medium) var(--spacing-medium) var(--spacing-small)}.acm-structure-modal__title{margin:0 0 var(--spacing-small);font-size:var(--type-headline-3-default-font-size)}.acm-structure-modal__body{display:grid;gap:var(--spacing-small)}.acm-structure-modal__body label{display:grid;gap:var(--spacing-xsmall);font-weight:600}.acm-structure-modal__body input,.acm-structure-modal__body textarea,.acm-structure-modal__body select{padding:var(--spacing-xsmall);border:1px solid var(--color-neutral-300);border-radius:var(--shape-border-radius-1);font:inherit}.acm-structure-modal__body .req{color:var(--color-red-600)}.acm-structure-modal__actions{display:flex;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.acm-structure-modal__actions .secondary{background:var(--color-neutral-100)}.acm-structure-panel{background:var(--color-neutral-0);border:1px solid var(--color-neutral-200);border-radius:var(--shape-border-radius-1);padding:var(--spacing-medium);margin-bottom:var(--spacing-small)}.acm-structure-panel__title{margin:0 0 var(--spacing-small);font-size:var(--type-headline-3-default-font-size)}.company-management-company-structure-card{border:0;box-shadow:none}.company-management-company-structure-card__cta{margin-top:40px;display:flex;justify-content:flex-start}.company-management-company-structure-card__cta .dropin-button{width:auto;min-width:200px;max-width:300px}.company-management-company-structure-card__alert{box-shadow:0 1px 2px #00000014;padding:8px 12px;line-height:1.2;display:flex;align-items:center}.company-management-company-structure-card__alert svg{width:16px;height:16px}
8
8
  .acm-tree-root{display:block}.acm-tree,.acm-tree__group{list-style:none;margin:0;padding-left:0}.acm-tree__item{position:relative;padding-left:0}.acm-tree__item[aria-selected=true]>.acm-structure-row .acm-structure-label,.acm-tree__item[aria-selected=true]>.acm-tree__row .acm-tree__label{background:var(--color-neutral-100);color:var(--color-neutral-800);border-radius:var(--shape-border-radius-1);padding:var(--spacing-xsmall) var(--spacing-small)}.acm-tree__item:before{content:"";position:absolute;left:var(--spacing-xsmall);top:0;bottom:0;border-left:1px dashed var(--color-neutral-300);pointer-events:none}.acm-tree__item:after{content:"";position:absolute;left:var(--spacing-xsmall);top:var(--spacing-small);width:var(--spacing-medium);height:var(--spacing-xsmall);border-bottom:1px dashed var(--color-neutral-300);pointer-events:none}.acm-tree__group>.acm-tree__item:last-child:before{bottom:var(--spacing-small)}.acm-tree-root{--acm-tree-indent: var(--spacing-medium)}.acm-tree__item[data-level="1"]{padding-left:0}.acm-tree__item[data-level="1"]:before,.acm-tree__item[data-level="1"]:after{display:none}.acm-tree>.acm-tree__item[data-level="1"]{margin-top:var(--spacing-xsmall)}.acm-tree__item[data-level]:not([data-level="1"]){padding-left:var(--spacing-medium)}
@@ -11,5 +11,5 @@ All Rights Reserved. */
11
11
  .company-profile__title{margin-bottom:var(--spacing-medium)}.account-company-profile-card-short{margin-bottom:var(--spacing-small)}.account-company-profile-card .dropin-card__content{gap:0}.account-company-profile-card__wrapper{display:grid;grid-template-columns:1fr;align-items:start;gap:var(--grid-1-gutters) 0}.account-company-profile-card .account-company-profile-card__actions{margin-left:auto;display:flex;justify-content:space-between;align-items:center;gap:0 var(--grid-2-gutters)}@media (max-width: 300px){.account-company-profile-card .account-company-profile-card__actions{align-items:self-end;flex-direction:column-reverse}}.account-company-profile-card .account-company-profile-card__actions button{cursor:pointer;margin:0;padding:0}.account-company-profile-card__content p{font:var(--type-body-1-default-font);margin:0 var(--spacing-xsmall) 0 0;line-height:var(--spacing-xbig);padding:0}.account-company-profile-card__content p:nth-child(1),.account-company-profile-card__content p:nth-child(2){font:var(--type-body-1-strong-font);font-weight:500;margin:0 var(--spacing-xsmall) var(--spacing-xsmall) 0}.account-company-profile-card__content .company-legal-address{margin-top:var(--spacing-medium)}.account-company-profile-card__content .company-legal-address p{margin-bottom:var(--spacing-xsmall)}.account-company-profile-card__content .company-legal-address p:first-child{font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__no-data{text-align:center;color:var(--color-neutral-600);font:var(--type-body-2-default-font);padding:var(--spacing-medium)}.account-company-profile-card__content .company-contacts{margin-top:var(--spacing-medium);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-company-profile-card__content .company-contacts>p:first-child{font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__content .company-contact{margin-bottom:var(--spacing-medium);padding:var(--spacing-small);background-color:var(--color-neutral-50);border-radius:var(--shape-border-radius-1)}.account-company-profile-card__content .company-contact p{margin-bottom:var(--spacing-xsmall)}.account-company-profile-card__content .company-contact p:first-child{font-weight:500;color:var(--color-neutral-700)}.account-company-profile-card__content .company-payment-methods{margin-top:var(--spacing-medium);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-company-profile-card__content .company-payment-methods>p:first-child,.account-company-profile-card__content .company-payment-methods>p:nth-child(2){font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__content .company-payment-methods p{margin-bottom:var(--spacing-xsmall)}.account-edit-company-profile__title{margin-bottom:var(--spacing-medium)}.account-edit-company-profile .dropin-card__content{gap:0}.account-edit-company-profile .account-edit-company-profile__notification{margin-bottom:var(--spacing-medium)}.account-edit-company-profile .account-edit-company-profile-form__field:nth-child(n+3){grid-column:span 2}.account-edit-company-profile .account-edit-company-profile__actions{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);grid-column:span 2;margin-top:var(--spacing-medium)}.account-edit-company-profile .account-edit-company-profile__actions button{min-width:144px}.account-edit-company-profile-form{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-medium) var(--grid-2-gutters)}@media (max-width: 768px){.account-edit-company-profile-form{grid-template-columns:1fr}.account-edit-company-profile .account-edit-company-profile-form__field:nth-child(n+3){grid-column:span 1}.account-edit-company-profile .account-edit-company-profile__actions{grid-column:span 1;flex-direction:column;gap:var(--spacing-small)}.account-edit-company-profile .account-edit-company-profile__actions button{width:100%}}.account-edit-company-profile-form__section{grid-column:span 2;margin-top:var(--spacing-large);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-edit-company-profile-form__section-title{font:var(--type-headline-2-default-font);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-xsmall)}@media (max-width: 768px){.account-edit-company-profile-form__section{grid-column:span 1}}.account-edit-company-profile__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--spacing-medium);z-index:10;border-radius:var(--border-radius-medium)}.account-edit-company-profile__loading-text{font:var(--type-body-1-default-font);color:var(--color-neutral-700);font-weight:500}.account-edit-company-profile{position:relative}
12
12
  .company-management-company-credit-grid{display:grid;grid-template-columns:1fr;gap:16px}@media only screen and (min-width: 768px){.company-management-company-credit-grid{grid-template-columns:1fr 1fr 1fr}}.company-management-company-credit-grid .company-management-company-credit-negative{color:#eb550c}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.company-management-company-credit-history-table{font-size:smaller}.company-management-company-credit-history-table thead th{white-space:normal;word-wrap:break-word;overflow-wrap:break-word;min-width:auto}.paginationContainer{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-medium);margin-top:var(--spacing-medium);flex-wrap:wrap}.paginationButtons{display:flex;align-items:center;gap:var(--spacing-xxsmall);flex-wrap:wrap}.paginationButton{min-width:var(--spacing-big);height:var(--spacing-big);padding:var(--spacing-xxsmall) var(--spacing-xsmall)}.paginationEllipsis{padding:var(--spacing-xxsmall) var(--spacing-xsmall);display:inline-flex;align-items:center;justify-content:center;min-width:var(--spacing-big)}.pageSizeSelector{display:flex;align-items:center;gap:var(--spacing-xsmall)}.company-management-price-normal{font-weight:400}@media only screen and (max-width: 767px){.paginationContainer{flex-direction:column;align-items:stretch;gap:var(--spacing-small)}.paginationButtons{justify-content:center;order:2}.pageSizeSelector{justify-content:center;order:3}}
13
13
  .company-company-loaders--card-loader{margin-bottom:var(--spacing-small)}.company-company-loaders--picker-loader div:first-child{max-width:200px}.company-company-loaders--picker-loader div:nth-child(3){max-width:400px}.company-credit-skeleton-loader{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}`,{styleId:"company-management"});
14
- import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Render as i}from"@dropins/tools/lib.js";import{useState as n,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as c}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";const m={shared:{fields:{companyName:"Company Name",companyEmail:"Company Email",email:"Email",legalName:"Legal Name",vatTaxId:"VAT/Tax ID",resellerId:"Reseller ID",legalAddress:"Legal Address",streetAddress:"Street Address",city:"City",country:"Country",stateProvince:"State/Province",zipPostalCode:"ZIP/Postal Code",phoneNumber:"Phone Number",status:"Status",region:"Region",postalCode:"Postal Code",jobTitle:"Job Title",workPhoneNumber:"Work Phone Number",userRole:"User Role",title:"New Company",companyInformation:"Company Information",street:"Street Address",streetLine2:"Street Address Line 2",postcode:"ZIP/Postal Code",telephone:"Phone Number",companyAdmin:"Company Administrator",adminJobTitle:"Job Title",adminWorkTelephone:"Work Phone Number",adminEmail:"Email",adminFirstname:"First Name",adminLastname:"Last Name",adminGender:"Gender",address:"Address",submit:"Register Company",submitting:"Registering...",required:"Required",createCompanyError:"Failed to create company. Please try again.",unexpectedError:"An unexpected error occurred. Please try again."},buttons:{edit:"Edit",cancel:"Cancel",save:"Save Changes",saving:"Saving...",close:"Close",confirm:"Confirm"},validation:{required:"This field is required",invalidEmail:"Please enter a valid email address",companyNameRequired:"Company name is required",emailRequired:"Email is required",emailNotAvailable:"This email is already used by another company",phoneInvalid:"Please enter a valid phone number",postalCodeInvalid:"Please enter a valid postal code",companyNameLengthError:"Company name must not exceed 40 characters",legalNameLengthError:"Legal name must not exceed 80 characters",vatTaxIdLengthError:"VAT/Tax ID must not exceed 40 characters",resellerIdLengthError:"Reseller ID must not exceed 40 characters",roleNameRequired:"This is a required field.",roleNameExists:"User role with this name already exists. Enter a different name to save this role."},messages:{loading:"Loading...",noData:"No data available",error:"An error occurred",success:"Operation completed successfully"},loading:"Loading...",ariaLabels:{editButton:"Edit company profile",cancelButton:"Cancel editing",saveButton:"Save company profile changes",closeButton:"Close dialog"}},CompanyProfile:{containerTitle:"Company Profile",editCompanyProfile:{containerTitle:"Edit Company Profile",companySuccess:"Company profile updated successfully",companyError:"Failed to update company profile",buttonSecondary:"Cancel",buttonPrimary:"Save Changes"},companyProfileCard:{noDataMessage:"Company profile not available. Please contact your administrator.",contacts:"Contacts",companyAdministrator:"Company Administrator",salesRepresentative:"Sales Representative",paymentInformation:"Payment Information",availablePaymentMethods:"Available Payment Methods",shippingInformation:"Shipping Information",availableShippingMethods:"Available Shipping Methods",noPaymentMethods:"This company has no payment methods. Please contact store administrator.",noShippingMethods:"This company has no shipping methods. Please contact store administrator.",companyDetails:"Company Details",addressInformation:"Address Information"},messages:{loadError:"Failed to load company profile",updateError:"Failed to update company profile",loadingProfile:"Loading company profile...",savingProfile:"Saving company profile...",noDataToUpdate:"No data to update"}},CompanyStructure:{containerTitle:"Company Structure",shared:{buttons:{addUser:"Add User",addTeam:"Add Team",editSelected:"Edit",remove:"Remove",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",deleting:"Deleting…",removing:"Removing…",expandAll:"Expand All",collapseAll:"Collapse All"},titles:{addUser:"Add User",editUser:"Edit User",addTeam:"Add Team",editTeam:"Edit Team"},fields:{jobTitle:"Job Title",userRole:"User Role",firstName:"First Name",lastName:"Last Name",email:"Email",workPhoneNumber:"Work Phone Number",status:"Status",teamTitle:"Team Title",description:"Description"},options:{selectRole:"Select role…",active:"Active",inactive:"Inactive",companyAdministrator:"Company Administrator",delete:"Delete",expand:"Expand",collapse:"Collapse"},ariaLabels:{addUser:"Add user",addTeam:"Add team",editSelected:"Edit selected",removeSelected:"Remove selected",showDescription:"Show description",companyStructureActions:"Company structure actions",expandAllNodes:"Expand all nodes",collapseAllNodes:"Collapse all nodes"},messages:{processing:"Processing…",teamDescription:"Team description"},validation:{firstNameRequired:"First name is required",lastNameRequired:"Last name is required",emailRequired:"Email is required",emailInvalid:"Enter a valid email",jobTitleRequired:"Job title is required",workPhoneRequired:"Work phone number is required",selectRole:"Select a role",teamTitleRequired:"Team title is required"}},messages:{loadError:"Failed to load company structure",updateError:"Failed to update company structure",noStructureData:"No structure data.",cannotDeleteUser:"Cannot Delete User",cannotDeleteTeam:"Cannot Delete This Team",removeUserConfirm:"Remove this user from Company structure?",deleteTeamConfirm:"Delete this team?",removeItemsConfirm:"Remove {count} item(s)?",removeUserMessage:"Removing a user changes the account status to Inactive. The user's content is still available to the Company administrator, but the user cannot log in.",cannotDeleteUserMessage:"This user has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",cannotDeleteTeamMessage:"This team has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",removeItemsMessage:"This action will remove the selected items from the company structure.",deleteTeamMessage:"This action cannot be undone. Are you sure you want to delete this team?",failedToMoveItem:"Failed to move item",createUserError:"Failed to create user. You may not have permission to perform this action.",createTeamError:"Failed to create team. You may not have permission to perform this action.",saveUserError:"An error occurred while saving the user.",saveTeamError:"An error occurred while saving the team.",createUserSuccess:"The customer was successfully created.",updateUserSuccess:"The customer was successfully updated.",createTeamSuccess:"The team was successfully created.",updateTeamSuccess:"The team was successfully updated.",removeUserSuccess:"User was successfully removed from company structure.",deleteTeamSuccess:"Team was successfully deleted.",removeMultipleSuccess:"{count} item(s) were successfully removed.",moveUserSuccess:"User was successfully moved.",moveTeamSuccess:"Team was successfully moved.",loadRolesError:"Failed to load roles",fetchPermissionsError:"Failed to fetch permissions"}},CompanyUsers:{filters:{showAll:"Show All Users",showActive:"Show Active Users",showInactive:"Show Inactive Users"},columns:{id:"ID",name:"Name",email:"Email",role:"Role",team:"Team",status:"Status",actions:"Actions"},status:{active:"Active",inactive:"Inactive"},emptyTeam:"-",pagination:{itemsCount:"{count} Item(s)",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},emptyActions:"",actions:{manage:"Manage",edit:"Edit",addNewUser:"Add New User"},ariaLabels:{loadingUsers:"Loading company users",usersTable:"Company users table",filterOptions:"User filter options",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",currentPage:"Current page {current} of {total}",showingUsers:"Showing {count} users",dataLoaded:"Loaded {count} users",dataError:"Failed to load users.",manageUser:"Manage user {name}",editUser:"Edit user {name}"},managementModal:{title:"Manage user",setActiveText:`Reactivate the user's account by selecting "Set as Active".`,setInactiveText:`Temporarily lock the user's account by selecting "Set as Inactive".`,deleteText:`Permanently delete the user's account and all associated content by selecting "Delete". This action cannot be reverted.`,setActiveButton:"Set as Active",setInactiveButton:"Set as Inactive",settingActiveButton:"Setting Active...",settingInactiveButton:"Setting Inactive...",deleteButton:"Delete",deletingButton:"Deleting...",cancelButton:"Cancel",setActiveErrorGeneric:"An unexpected error occurred while setting user as active.",setActiveErrorSpecific:"Failed to set user as active.",setInactiveErrorGeneric:"An unexpected error occurred while setting user as inactive.",setInactiveErrorSpecific:"Failed to set user as inactive.",deleteErrorGeneric:"An unexpected error occurred.",deleteErrorSpecific:"Failed to delete user.",setActiveSuccess:"User was successfully activated.",setInactiveSuccess:"User was successfully deactivated.",deleteSuccess:"User was successfully deleted.",ariaLabels:{closeModal:"Close modal",modalDescription:"User management options including setting as inactive or deleting the user account"}}},CompanyRegistration:{success:{pendingApproval:"Thank you! We're reviewing your request and will contact you soon.",companyDetails:"Company Information"}},CustomerCompanyInfo:{individualUserMessage:"You don't have a company account yet.",createAccountCta:"Create a Company Account"},CompanyCredit:{title:"Company Credit",creditAvailable:"Available Credit",creditLimit:"Credit Limit",outstandingBalance:"Outstanding Balance",messages:{loadError:"Failed to load company credit"}},CompanyCreditHistory:{title:"Credit History",columns:{date:"Date",operation:"Operation",amount:"Amount",outstandingBalance:"Outstanding Balance",availableCredit:"Available Credit",creditLimit:"Credit Limit",customReference:"Custom Reference Number",updatedBy:"Updated By"},pagination:{itemsRange:"Items {start} to {end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page"},ariaLabels:{dataLoaded:"Loaded {count} credit history entries",dataError:"Failed to load credit history entries. Please try again.",loadingHistory:"Loading credit history",historyTable:"Credit history table",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPage:"Previous page",nextPage:"Next page",goToPage:"Go to page {page}",currentPage:"Current page {page}",showingHistory:"Showing {count} credit history entries"}},EditRoleAndPermission:{createTitle:"Add New Role",editTitle:"Edit Role",roleInformation:"Role Information",roleName:"Role Name",rolePermissions:"Role Permissions",permissionsDescription:"Granting permissions does not affect which features are available for your company account. The merchant must enable features to make them available for your account.",expandAll:"Expand All",collapseAll:"Collapse All",saveRole:"Save Role"},FormText:{requiredFieldError:"This is a required field.",numericError:"Only numeric values are allowed.",alphaNumWithSpacesError:"Only alphanumeric characters and spaces are allowed.",alphaNumericError:"Only alphanumeric characters are allowed.",alphaError:"Only alphabetic characters are allowed.",emailError:"Please enter a valid email address.",phoneError:"Please enter a valid phone number.",postalCodeError:"Please enter a valid postal code.",lengthTextError:"Text length must be between {min} and {max} characters.",urlError:"Please enter a valid URL",nameError:"Please enter a valid name",selectCountry:"Please select a country",selectRegion:"Please select a region, state or province",selectCountryFirst:"Please select a country first",companyNameLengthError:"Company name must be between {min} and {max} characters."},RolesAndPermissions:{containerTitle:"Company Roles & Permissions",noAccess:{title:"Access Restricted",message:"You do not have permission to view roles and permissions. Please contact your company administrator."},error:{title:"Error Loading Roles",message:"An error occurred while loading roles and permissions. Please try again."},deleteModal:{title:"Delete This Role?",message:"This action cannot be undone. Are you sure you want to delete this role?",confirm:"Delete",cancel:"Cancel"},cannotDeleteModal:{title:"Cannot Delete Role",message:"This role cannot be deleted because users are assigned to it. Reassign the users to another role to continue.",ok:"OK"},alerts:{createSuccess:'Role "{roleName}" created successfully!',createError:"Failed to create role. Please try again.",createErrorPermissions:"Failed to create role. Please check your permissions and try again.",updateSuccess:'Role "{roleName}" updated successfully!',updateError:"Failed to update role. Please try again.",updateErrorPermissions:"Failed to update role. Please check your permissions and try again.",deleteError:"Failed to delete role. Please try again."}},RoleAndPermissionTable:{addNewRole:"Add New Role",columnId:"ID",columnRole:"Role",columnUsers:"Users",columnActions:"Actions",editButton:"Edit",duplicateButton:"Duplicate",deleteButton:"Delete",viewOnlyLabel:"View Only",systemRoleLabel:"System Role",itemCount:"Item(s)",show:"Show",perPage:"per page",deleteRole:{success:'You have deleted role "{roleName}".'}},Table:{sortedAscending:"Sorted ascending by {label}",sortedDescending:"Sorted descending by {label}",sortBy:"Sort by {label}"}},u={Company:m},p={default:u},g=({children:t})=>{const[r,o]=n("en_US");return l(()=>{const e=d.on("locale",s=>{o(s)},{eager:!0});return()=>{e==null||e.off()}},[]),a(c,{lang:r,langDefinitions:p,children:t})},P=new i(a(g,{}));export{P as render};
14
+ import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Render as i}from"@dropins/tools/lib.js";import{useState as n,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as c}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";const m={shared:{fields:{companyName:"Company Name",companyEmail:"Company Email",email:"Email",legalName:"Legal Name",vatTaxId:"VAT/Tax ID",resellerId:"Reseller ID",legalAddress:"Legal Address",streetAddress:"Street Address",city:"City",country:"Country",stateProvince:"State/Province",zipPostalCode:"ZIP/Postal Code",phoneNumber:"Phone Number",status:"Status",region:"Region",postalCode:"Postal Code",jobTitle:"Job Title",workPhoneNumber:"Work Phone Number",userRole:"User Role",title:"New Company",companyInformation:"Company Information",street:"Street Address",streetLine2:"Street Address Line 2",postcode:"ZIP/Postal Code",telephone:"Phone Number",companyAdmin:"Company Administrator",adminJobTitle:"Job Title",adminWorkTelephone:"Work Phone Number",adminEmail:"Email",adminFirstname:"First Name",adminLastname:"Last Name",adminGender:"Gender",address:"Address",submit:"Register Company",submitting:"Registering...",required:"Required",createCompanyError:"Failed to create company. Please try again.",unexpectedError:"An unexpected error occurred. Please try again."},buttons:{edit:"Edit",cancel:"Cancel",save:"Save Changes",saving:"Saving...",close:"Close",confirm:"Confirm"},validation:{required:"This field is required",invalidEmail:"Please enter a valid email address",companyNameRequired:"Company name is required",emailRequired:"Email is required",emailNotAvailable:"This email is already used by another company",phoneInvalid:"Please enter a valid phone number",postalCodeInvalid:"Please enter a valid postal code",companyNameLengthError:"Company name must not exceed 40 characters",legalNameLengthError:"Legal name must not exceed 80 characters",vatTaxIdLengthError:"VAT/Tax ID must not exceed 40 characters",resellerIdLengthError:"Reseller ID must not exceed 40 characters",roleNameRequired:"This is a required field.",roleNameExists:"User role with this name already exists. Enter a different name to save this role."},messages:{loading:"Loading...",noData:"No data available",error:"An error occurred",success:"Operation completed successfully"},loading:"Loading...",ariaLabels:{editButton:"Edit company profile",cancelButton:"Cancel editing",saveButton:"Save company profile changes",closeButton:"Close dialog"}},CompanyProfile:{containerTitle:"Company Profile",editCompanyProfile:{containerTitle:"Edit Company Profile",companySuccess:"Company profile updated successfully",companyError:"Failed to update company profile",buttonSecondary:"Cancel",buttonPrimary:"Save Changes"},companyProfileCard:{noDataMessage:"Company profile not available. Please contact your administrator.",contacts:"Contacts",companyAdministrator:"Company Administrator",salesRepresentative:"Sales Representative",paymentInformation:"Payment Information",availablePaymentMethods:"Available Payment Methods",shippingInformation:"Shipping Information",availableShippingMethods:"Available Shipping Methods",noPaymentMethods:"This company has no payment methods. Please contact store administrator.",noShippingMethods:"This company has no shipping methods. Please contact store administrator.",companyDetails:"Company Details",addressInformation:"Address Information"},messages:{loadError:"Failed to load company profile",updateError:"Failed to update company profile",loadingProfile:"Loading company profile...",savingProfile:"Saving company profile...",noDataToUpdate:"No data to update"}},CompanyStructure:{containerTitle:"Company Structure",shared:{buttons:{addUser:"Add User",addTeam:"Add Team",editSelected:"Edit",remove:"Remove",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",deleting:"Deleting…",removing:"Removing…",expandAll:"Expand All",collapseAll:"Collapse All"},titles:{addUser:"Add User",editUser:"Edit User",addTeam:"Add Team",editTeam:"Edit Team"},fields:{jobTitle:"Job Title",userRole:"User Role",firstName:"First Name",lastName:"Last Name",email:"Email",workPhoneNumber:"Work Phone Number",status:"Status",teamTitle:"Team Title",description:"Description"},options:{selectRole:"Select role…",active:"Active",inactive:"Inactive",companyAdministrator:"Company Administrator",delete:"Delete",expand:"Expand",collapse:"Collapse"},ariaLabels:{addUser:"Add user",addTeam:"Add team",editSelected:"Edit selected",removeSelected:"Remove selected",showDescription:"Show description",companyStructureActions:"Company structure actions",expandAllNodes:"Expand all nodes",collapseAllNodes:"Collapse all nodes"},messages:{processing:"Processing…",teamDescription:"Team description"},validation:{firstNameRequired:"First name is required",lastNameRequired:"Last name is required",emailRequired:"Email is required",emailInvalid:"Enter a valid email",jobTitleRequired:"Job title is required",workPhoneRequired:"Work phone number is required",selectRole:"Select a role",teamTitleRequired:"Team title is required"}},messages:{loadError:"Failed to load company structure",updateError:"Failed to update company structure",noStructureData:"No structure data.",cannotDeleteUser:"Cannot Delete User",cannotDeleteTeam:"Cannot Delete This Team",removeUserConfirm:"Remove this user from Company structure?",deleteTeamConfirm:"Delete this team?",removeItemsConfirm:"Remove {count} item(s)?",removeUserMessage:"Removing a user changes the account status to Inactive. The user's content is still available to the Company administrator, but the user cannot log in.",cannotDeleteUserMessage:"This user has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",cannotDeleteTeamMessage:"This team has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",removeItemsMessage:"This action will remove the selected items from the company structure.",deleteTeamMessage:"This action cannot be undone. Are you sure you want to delete this team?",failedToMoveItem:"Failed to move item",createUserError:"Failed to create user. You may not have permission to perform this action.",createTeamError:"Failed to create team. You may not have permission to perform this action.",saveUserError:"An error occurred while saving the user.",saveTeamError:"An error occurred while saving the team.",createUserSuccess:"The customer was successfully created.",updateUserSuccess:"The customer was successfully updated.",createTeamSuccess:"The team was successfully created.",updateTeamSuccess:"The team was successfully updated.",removeUserSuccess:"User was successfully removed from company structure.",deleteTeamSuccess:"Team was successfully deleted.",removeMultipleSuccess:"{count} item(s) were successfully removed.",moveUserSuccess:"User was successfully moved.",moveTeamSuccess:"Team was successfully moved.",loadRolesError:"Failed to load roles",fetchPermissionsError:"Failed to fetch permissions"}},CompanyUsers:{filters:{showAll:"Show All Users",showActive:"Show Active Users",showInactive:"Show Inactive Users"},columns:{id:"ID",name:"Name",email:"Email",role:"Role",team:"Team",status:"Status",actions:"Actions"},status:{active:"Active",inactive:"Inactive"},emptyTeam:"-",pagination:{itemsRange:"Items {start}-{end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},emptyActions:"",noUsersFound:"No users found.",actions:{manage:"Manage",edit:"Edit",addNewUser:"Add New User"},ariaLabels:{loadingUsers:"Loading company users",usersTable:"Company users table",filterOptions:"User filter options",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",currentPage:"Current page {current} of {total}",showingUsers:"Showing {count} users",dataLoaded:"Loaded {count} users",dataError:"Failed to load users.",manageUser:"Manage user {name}",editUser:"Edit user {name}"},managementModal:{title:"Manage user",setActiveText:`Reactivate the user's account by selecting "Set as Active".`,setInactiveText:`Temporarily lock the user's account by selecting "Set as Inactive".`,deleteText:`Permanently delete the user's account and all associated content by selecting "Delete". This action cannot be reverted.`,setActiveButton:"Set as Active",setInactiveButton:"Set as Inactive",settingActiveButton:"Setting Active...",settingInactiveButton:"Setting Inactive...",deleteButton:"Delete",deletingButton:"Deleting...",cancelButton:"Cancel",setActiveErrorGeneric:"An unexpected error occurred while setting user as active.",setActiveErrorSpecific:"Failed to set user as active.",setInactiveErrorGeneric:"An unexpected error occurred while setting user as inactive.",setInactiveErrorSpecific:"Failed to set user as inactive.",deleteErrorGeneric:"An unexpected error occurred.",deleteErrorSpecific:"Failed to delete user.",setActiveSuccess:"User was successfully activated.",setInactiveSuccess:"User was successfully deactivated.",deleteSuccess:"User was successfully deleted.",ariaLabels:{closeModal:"Close modal",modalDescription:"User management options including setting as inactive or deleting the user account"}}},CompanyRegistration:{success:{pendingApproval:"Thank you! We're reviewing your request and will contact you soon.",companyDetails:"Company Information"}},CustomerCompanyInfo:{individualUserMessage:"You don't have a company account yet.",createAccountCta:"Create a Company Account"},CompanyCredit:{title:"Company Credit",creditAvailable:"Available Credit",creditLimit:"Credit Limit",outstandingBalance:"Outstanding Balance",messages:{loadError:"Failed to load company credit"}},CompanyCreditHistory:{title:"Credit History",columns:{date:"Date",operation:"Operation",amount:"Amount",outstandingBalance:"Outstanding Balance",availableCredit:"Available Credit",creditLimit:"Credit Limit",customReference:"Custom Reference Number",updatedBy:"Updated By"},pagination:{itemsRange:"Items {start} to {end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page"},ariaLabels:{dataLoaded:"Loaded {count} credit history entries",dataError:"Failed to load credit history entries. Please try again.",loadingHistory:"Loading credit history",historyTable:"Credit history table",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPage:"Previous page",nextPage:"Next page",goToPage:"Go to page {page}",currentPage:"Current page {page}",showingHistory:"Showing {count} credit history entries"}},EditRoleAndPermission:{createTitle:"Add New Role",editTitle:"Edit Role",roleInformation:"Role Information",roleName:"Role Name",rolePermissions:"Role Permissions",permissionsDescription:"Granting permissions does not affect which features are available for your company account. The merchant must enable features to make them available for your account.",expandAll:"Expand All",collapseAll:"Collapse All",saveRole:"Save Role"},FormText:{requiredFieldError:"This is a required field.",numericError:"Only numeric values are allowed.",alphaNumWithSpacesError:"Only alphanumeric characters and spaces are allowed.",alphaNumericError:"Only alphanumeric characters are allowed.",alphaError:"Only alphabetic characters are allowed.",emailError:"Please enter a valid email address.",phoneError:"Please enter a valid phone number.",postalCodeError:"Please enter a valid postal code.",lengthTextError:"Text length must be between {min} and {max} characters.",urlError:"Please enter a valid URL",nameError:"Please enter a valid name",selectCountry:"Please select a country",selectRegion:"Please select a region, state or province",selectCountryFirst:"Please select a country first",companyNameLengthError:"Company name must be between {min} and {max} characters."},RolesAndPermissions:{containerTitle:"Company Roles & Permissions",noAccess:{title:"Access Restricted",message:"You do not have permission to view roles and permissions. Please contact your company administrator."},error:{title:"Error Loading Roles",message:"An error occurred while loading roles and permissions. Please try again."},deleteModal:{title:"Delete This Role?",message:"This action cannot be undone. Are you sure you want to delete this role?",confirm:"Delete",cancel:"Cancel"},cannotDeleteModal:{title:"Cannot Delete Role",message:"This role cannot be deleted because users are assigned to it. Reassign the users to another role to continue.",ok:"OK"},alerts:{createSuccess:'Role "{roleName}" created successfully!',createError:"Failed to create role. Please try again.",createErrorPermissions:"Failed to create role. Please check your permissions and try again.",updateSuccess:'Role "{roleName}" updated successfully!',updateError:"Failed to update role. Please try again.",updateErrorPermissions:"Failed to update role. Please check your permissions and try again.",deleteError:"Failed to delete role. Please try again."}},RoleAndPermissionTable:{addNewRole:"Add New Role",columnId:"ID",columnRole:"Role",columnUsers:"Users",columnActions:"Actions",editButton:"Edit",duplicateButton:"Duplicate",deleteButton:"Delete",viewOnlyLabel:"View Only",systemRoleLabel:"System Role",itemCount:"Item(s)",show:"Show",perPage:"per page",deleteRole:{success:'You have deleted role "{roleName}".'}},Table:{sortedAscending:"Sorted ascending by {label}",sortedDescending:"Sorted descending by {label}",sortBy:"Sort by {label}"}},u={Company:m},p={default:u},g=({children:t})=>{const[r,o]=n("en_US");return l(()=>{const e=d.on("locale",s=>{o(s)},{eager:!0});return()=>{e==null||e.off()}},[]),a(c,{lang:r,langDefinitions:p,children:t})},P=new i(a(g,{}));export{P as render};
15
15
  //# sourceMappingURL=render.js.map
package/render.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["/@dropins/storefront-company-management/src/render/Provider.tsx","/@dropins/storefront-company-management/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CompanyProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CompanyProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"g0aA0BMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAoD,CAAC,CAChE,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
1
+ {"version":3,"file":"render.js","sources":["/@dropins/storefront-company-management/src/render/Provider.tsx","/@dropins/storefront-company-management/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CompanyProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CompanyProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"82aA0BMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAoD,CAAC,CAChE,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}