@dropins/storefront-company-management 1.0.0-alpha2021 → 1.0.0-alpha2022
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.
- package/api/getCompanyStructure/graphql/getCompanyStructure.graphql.d.ts +1 -1
- package/chunks/CompanyLoaders.js +1 -1
- package/chunks/CompanyLoaders.js.map +1 -1
- package/chunks/CompanyUserForm.js +1 -1
- package/chunks/CompanyUserForm.js.map +1 -1
- package/chunks/getCompanyCreditHistory.js +1 -1
- package/chunks/getCompanyCreditHistory.js.map +1 -1
- package/chunks/updateCompanyTeam.js +8 -8
- package/chunks/updateCompanyTeam.js.map +1 -1
- package/chunks/useInLineAlert.js +1 -1
- package/chunks/useInLineAlert.js.map +1 -1
- package/chunks/useUserPermissions.js +1 -1
- package/chunks/useUserPermissions.js.map +1 -1
- package/containers/CompanyCredit.js +1 -1
- package/containers/CompanyCredit.js.map +1 -1
- package/containers/CompanyProfile.js +1 -1
- package/containers/CompanyStructure.js +1 -1
- package/containers/CompanyStructure.js.map +1 -1
- package/containers/CompanyUsers.js +1 -1
- package/containers/CompanyUsers.js.map +1 -1
- package/data/transforms/transform-company-structure.d.ts +0 -1
- package/hooks/containers/useCompanyUsers.d.ts +1 -0
- package/hooks/useCompanyTeamForm.d.ts +4 -0
- package/hooks/useCompanyUserForm.d.ts +7 -0
- package/i18n/en_US.json.d.ts +18 -11
- package/package.json +1 -1
- package/render.js +6 -6
- package/render.js.map +1 -1
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
* is strictly forbidden unless prior written permission is obtained
|
|
15
15
|
* from Adobe.
|
|
16
16
|
*******************************************************************/
|
|
17
|
-
export declare const GET_COMPANY_STRUCTURE = "\n query getCompanyStructure {\n company {\n structure {\n items {\n id\n parent_id\n entity {\n __typename\n ... on CompanyTeam { companyTeamId: id structure_id name description }\n ... on Customer { customerId: id structure_id firstname lastname
|
|
17
|
+
export declare const GET_COMPANY_STRUCTURE = "\n query getCompanyStructure {\n company {\n structure {\n items {\n id\n parent_id\n entity {\n __typename\n ... on CompanyTeam { companyTeamId: id structure_id name description }\n ... on Customer { customerId: id structure_id firstname lastname }\n }\n }\n }\n }\n }\n";
|
|
18
18
|
//# sourceMappingURL=getCompanyStructure.graphql.d.ts.map
|
package/chunks/CompanyLoaders.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{
|
|
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","
|
|
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
|
|
3
|
+
import{jsxs as F,jsx as s}from"@dropins/tools/preact-jsx-runtime.js";import{memo as X}from"@dropins/tools/preact-compat.js";import{useState as p,useEffect as J}from"@dropins/tools/preact-hooks.js";import{Card as K,InLineAlert as Q,ProgressSpinner as W,Field as T,Input as A,Picker as P,Button as D}from"@dropins/tools/components.js";import{i as Y}from"./company-permissions.js";import{g as Z,c as ee,u as te,i as ae}from"./updateCompanyUser.js";import{useText as H}from"@dropins/tools/i18n.js";import{u as re}from"./useCompanyRoles.js";import{b as se}from"./CompanyLoaders.js";const y={firstName:255,lastName:255,email:254,jobTitle:255,telephone:20};function oe(M){const{mode:x,entityId:g,parentStructureId:j,onSaved:q,onError:b,onSuccess:v}=M,l=H({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",firstNameMaxLength:"Company.CompanyStructure.shared.validation.firstNameMaxLength",lastNameMaxLength:"Company.CompanyStructure.shared.validation.lastNameMaxLength",emailMaxLength:"Company.CompanyStructure.shared.validation.emailMaxLength",jobTitleMaxLength:"Company.CompanyStructure.shared.validation.jobTitleMaxLength",telephoneMaxLength:"Company.CompanyStructure.shared.validation.telephoneMaxLength",createUserError:"Company.CompanyStructure.messages.createUserError",saveUserError:"Company.CompanyStructure.messages.saveUserError",createUserSuccess:"Company.CompanyStructure.messages.createUserSuccess",updateUserSuccess:"Company.CompanyStructure.messages.updateUserSuccess"}),[r,L]=p({firstName:"",lastName:"",email:"",jobTitle:"",telephone:"",roleId:"",status:"ACTIVE"}),[w,u]=p({}),[m,h]=p({}),[V,U]=p(!1),[f,R]=p(null),[_,E]=p(null),[S,k]=p(""),[i,a]=p(""),[o,B]=p(!1);J(()=>{x!=="edit"||!g||(U(!0),Z(g).then(e=>{var C;if(!e)return;const t=e.email||"";L(N=>({...N,firstName:e.firstName||"",lastName:e.lastName||"",email:t,jobTitle:e.jobTitle||"",telephone:e.telephone||"",status:e.status||"ACTIVE"})),a(t),(C=e==null?void 0:e.role)!=null&&C.id&&L(N=>({...N,roleId:e.role.id})),B((e==null?void 0:e.isCompanyAdmin)??!1)}).finally(()=>U(!1)))},[x,g]);const z=e=>/.+@.+\..+/.test(e),$=(e,t)=>e==="firstName"?t!=null&&t.trim()?t.length>y.firstName?l.firstNameMaxLength:null:l.firstNameRequired:e==="lastName"?t!=null&&t.trim()?t.length>y.lastName?l.lastNameMaxLength:null:l.lastNameRequired:e==="email"?t!=null&&t.trim()?t.length>y.email?l.emailMaxLength:z(t.trim())?null:l.emailInvalid:l.emailRequired:e==="jobTitle"?t&&t.length>y.jobTitle?l.jobTitleMaxLength:null:e==="telephone"?t&&t.length>y.telephone?l.telephoneMaxLength:null:e==="roleId"?t?null:l.selectRole:null,G=(e,t)=>{L(C=>({...C,[e]:t})),e==="email"&&E(null),f&&R(null)};return{values:r,errors:w,touched:m,loading:V,setValue:G,onBlur:async(e,t)=>{t!==void 0&&G(e,t),h(I=>({...I,[e]:!0}));const C=t!==void 0?t:r[e],N=$(e,C);if(u(N?I=>({...I,[e]:N}):I=>{const d={...I};return delete d[e],d}),e==="email"){const d=(t!==void 0?t:r.email||"").trim();if(x==="edit"&&d.toLowerCase()===(i||"").trim().toLowerCase()){E(null);return}if(z(d)&&d!==S){const n=await ae(d);k(d),E(n),n===!1&&u(c=>({...c,email:"A user with this email address is already a member of your company."}))}}},submit:async()=>{const e=["firstName","lastName","email","roleId","jobTitle","telephone"],t={},C={};for(const n of e){C[n]=!0;const c=$(n,r[n]);c&&(t[n]=c)}if(u(t),h(C),Object.keys(t).length||_===!1){setTimeout(()=>{const n=document.querySelector(".company-user-form__content .dropin-field__hint--error");if(n){const c=n.closest(".dropin-field");if(c){c.scrollIntoView({behavior:"smooth",block:"center"});const O=c.querySelector("input, select");O&&O.focus()}}},100);return}const N=`${r.firstName||""} ${r.lastName||""}`.trim()||r.email||"",d=o||Y({id:r.roleId})?"ACTIVE":r.status;try{if(x==="add"){const n=await ee({email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",roleId:r.roleId,status:d,targetId:j??null});if(!n){const c=l.createUserError;b?b(c):R(c);return}q({label:N,structureId:n.structureId,entityId:n.id,type:"user"}),v&&v(l.createUserSuccess)}else g&&(await te({id:g,email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",status:d,roleId:r.roleId}),q({label:N,entityId:g,type:"user"}),v&&v(l.updateUserSuccess))}catch(n){const c=n instanceof Error?n.message:l.saveUserError;b?b(c):R(c)}},isCompanyAdmin:o,generalError:f}}const Ce=X(({mode:M,entityId:x,parentStructureId:g,permissions:j,onSaved:q,onCancel:b,onError:v,onSuccess:l})=>{const r=(j==null?void 0:j.canEditUsers)??!1,{roles:L,isLoading:w}=re(),{values:u,errors:m,touched:h,loading:V,setValue:U,onBlur:f,submit:R,isCompanyAdmin:_,generalError:E}=oe({mode:M,entityId:x,parentStructureId:g,onSaved:q,onError:v?a=>{v(a),b()}:void 0,onSuccess:l}),[S,k]=p(!1),i=H({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 F("div",{children:[s("h3",{className:"acm-structure-panel__title",children:M==="add"?i.addUser:i.editUser}),F(K,{variant:"secondary",className:`company-user-form__card ${S?"is-working":""}`,children:[!v&&E?s(Q,{className:"company-user-form__notification",type:"error",variant:"secondary",heading:E}):null,S?s("div",{className:"company-user-form__overlay","aria-live":"polite",children:s(W,{size:"small"})}):null,V||w?s(se,{}):F("div",{className:"company-user-form__content",children:[s(T,{label:i.jobTitle,className:"acm-structure-panel__field",error:h.jobTitle&&m.jobTitle?m.jobTitle:void 0,children:s(A,{name:"job_title",type:"text",value:u.jobTitle||"",onBlur:a=>{const o=a.target;f("jobTitle",o.value)},variant:"primary",size:"medium",maxLength:y.jobTitle})}),s(T,{label:i.userRole,required:!0,className:"acm-structure-panel__field",error:!_&&h.roleId&&m.roleId?m.roleId:void 0,disabled:_,children:_?s(P,{name:"role",value:"MA==",options:[{value:"MA==",text:i.companyAdministrator}]}):s(P,{name:"role",value:u.roleId||"placeholder",onChange:a=>{var o,B;return U("roleId",String(((o=a==null?void 0:a.target)==null?void 0:o.value)==="placeholder"?"":((B=a==null?void 0:a.target)==null?void 0:B.value)??""))},onBlur:a=>{const o=a.target;f("roleId",o.value==="placeholder"?"":o.value)},options:[{value:"placeholder",text:i.selectRole,disabled:!0},...L.map(a=>({value:a.id,text:a.name}))]})}),s(T,{label:i.firstName,required:!0,className:"acm-structure-panel__field",error:h.firstName&&m.firstName?m.firstName:void 0,children:s(A,{name:"first_name",type:"text",value:u.firstName,onBlur:a=>{const o=a.target;f("firstName",o.value)},variant:"primary",size:"medium",maxLength:y.firstName})}),s(T,{label:i.lastName,required:!0,className:"acm-structure-panel__field",error:h.lastName&&m.lastName?m.lastName:void 0,children:s(A,{name:"last_name",type:"text",value:u.lastName,onBlur:a=>{const o=a.target;f("lastName",o.value)},variant:"primary",size:"medium",maxLength:y.lastName})}),s(T,{label:i.email,required:!0,className:"acm-structure-panel__field",error:h.email&&m.email?m.email:void 0,children:s(A,{name:"email",type:"email",value:u.email,onBlur:a=>{const o=a.target;f("email",o.value)},placeholder:"jdoe@example.com",variant:"primary",size:"medium",maxLength:y.email})}),s(T,{label:i.workPhoneNumber,className:"acm-structure-panel__field",error:h.telephone&&m.telephone?m.telephone:void 0,children:s(A,{name:"telephone",type:"text",value:u.telephone||"",onBlur:a=>{const o=a.target;f("telephone",o.value)},variant:"primary",size:"medium",maxLength:y.telephone})}),s(T,{label:i.status,className:"acm-structure-panel__field",disabled:_||!r,children:s(P,{name:"status",value:u.status,onChange:a=>{var o;return U("status",String(((o=a==null?void 0:a.target)==null?void 0:o.value)??"ACTIVE"))},options:[{value:"ACTIVE",text:i.active},{value:"INACTIVE",text:i.inactive}]})})]})]}),V||w?null:F("div",{className:"acm-structure-modal__actions",children:[s(D,{type:"button",variant:"primary",disabled:S||!r,onClick:async()=>{if(!S){k(!0);try{await R()}finally{k(!1)}}},children:i.save}),s(D,{type:"button",variant:"secondary",disabled:S,onClick:b,children:i.cancel})]})]})});export{Ce as C};
|
|
4
4
|
//# sourceMappingURL=CompanyUserForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyUserForm.js","sources":["/@dropins/storefront-company-management/src/hooks/useCompanyUserForm.ts","/@dropins/storefront-company-management/src/components/CompanyUserForm/CompanyUserForm.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 { useEffect, useState } from 'preact/hooks';\nimport { createCompanyUser, getCompanyUser, isCompanyUserEmailAvailable, updateCompanyUser } from '@/company-management/api';\nimport { isCompanyAdministrator } from '@/company-management/lib';\nimport { CompanyUserModel } from '@/company-management/data/models';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport type UserStatus = 'ACTIVE' | 'INACTIVE';\n\n\nexport function useCompanyUserForm(opts: {\n mode: 'add' | 'edit';\n entityId?: string;\n parentStructureId?: string | null;\n onSaved: (result: { label: string; structureId?: string; entityId?: string; type: 'user' }) => void;\n onError?: (error: string) => void;\n onSuccess?: (message: string) => void;\n}) {\n const { mode, entityId, parentStructureId, onSaved, onError, onSuccess } = opts;\n \n const translations = useText({\n firstNameRequired: 'Company.CompanyStructure.shared.validation.firstNameRequired',\n lastNameRequired: 'Company.CompanyStructure.shared.validation.lastNameRequired',\n emailRequired: 'Company.CompanyStructure.shared.validation.emailRequired',\n emailInvalid: 'Company.CompanyStructure.shared.validation.emailInvalid',\n jobTitleRequired: 'Company.CompanyStructure.shared.validation.jobTitleRequired',\n workPhoneRequired: 'Company.CompanyStructure.shared.validation.workPhoneRequired',\n selectRole: 'Company.CompanyStructure.shared.validation.selectRole',\n createUserError: 'Company.CompanyStructure.messages.createUserError',\n saveUserError: 'Company.CompanyStructure.messages.saveUserError',\n createUserSuccess: 'Company.CompanyStructure.messages.createUserSuccess',\n updateUserSuccess: 'Company.CompanyStructure.messages.updateUserSuccess',\n });\n const [values, setValues] = useState<Partial<CompanyUserModel> & { roleId: string; status: UserStatus }>({ \n firstName: '', \n lastName: '', \n email: '', \n jobTitle: '', \n telephone: '', \n roleId: '', \n status: 'ACTIVE' \n });\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [touched, setTouched] = useState<Record<string, boolean>>({});\n const [loading, setLoading] = useState(false);\n const [generalError, setGeneralError] = useState<string | null>(null);\n const [emailAvailable, setEmailAvailable] = useState<boolean | null>(null);\n const [emailChecked, setEmailChecked] = useState<string>('');\n const [originalEmail, setOriginalEmail] = useState<string>('');\n const [isCompanyAdmin, setIsCompanyAdmin] = useState<boolean>(false);\n\n useEffect(() => {\n if (mode !== 'edit' || !entityId) return;\n setLoading(true);\n void getCompanyUser(entityId).then((u) => {\n if (!u) return;\n const loadedEmail = u.email || '';\n setValues((v) => ({ ...v, firstName: u.firstName || '', lastName: u.lastName || '', email: loadedEmail, jobTitle: u.jobTitle || '', telephone: u.telephone || '', status: (u.status || 'ACTIVE') as UserStatus }));\n setOriginalEmail(loadedEmail);\n if (u?.role?.id) setValues((v) => ({ ...v, roleId: u.role!.id }));\n setIsCompanyAdmin(u?.isCompanyAdmin ?? false);\n }).finally(() => setLoading(false));\n }, [mode, entityId]);\n\n const isEmailValid = (value: string): boolean => /.+@.+\\..+/.test(value);\n const validateField = (field: keyof CompanyUserModel | 'roleId', value: any): string | null => {\n if (field === 'firstName') return value?.trim() ? null : translations.firstNameRequired;\n if (field === 'lastName') return value?.trim() ? null : translations.lastNameRequired;\n if (field === 'email') {\n if (!value?.trim()) return translations.emailRequired;\n return isEmailValid(value.trim()) ? null : translations.emailInvalid;\n }\n // jobTitle and telephone are now optional fields (USF-3012)\n if (field === 'roleId') return value ? null : translations.selectRole;\n return null;\n };\n\n const setValue = (field: keyof CompanyUserModel | 'roleId', value: any) => {\n setValues((v) => ({ ...v, [field]: value }));\n if (field === 'email') setEmailAvailable(null);\n if (generalError) setGeneralError(null);\n };\n\n const onBlur = async (field: keyof CompanyUserModel | 'roleId', value?: any) => {\n // Update form data if value is provided (this preserves spaces and other characters)\n if (value !== undefined) {\n setValue(field, value);\n }\n \n setTouched((t) => ({ ...t, [field]: true }));\n \n // Use provided value or current state value for validation\n const valueToValidate = value !== undefined ? value : values[field];\n const err = validateField(field, valueToValidate);\n if (err) {\n setErrors((p) => ({ ...p, [field]: err }));\n } else {\n // Clear error if field is now valid\n setErrors((p) => {\n const newErrors = { ...p };\n delete newErrors[field];\n return newErrors;\n });\n }\n \n if (field === 'email') {\n const emailValue = value !== undefined ? value : (values.email || '');\n const trimmed = emailValue.trim();\n if (mode === 'edit' && trimmed.toLowerCase() === (originalEmail || '').trim().toLowerCase()) {\n setEmailAvailable(null);\n return;\n }\n if (isEmailValid(trimmed) && trimmed !== emailChecked) {\n const available = await isCompanyUserEmailAvailable(trimmed);\n setEmailChecked(trimmed);\n setEmailAvailable(available);\n if (available === false) setErrors((p) => ({ ...p, email: 'A user with this email address is already a member of your company.' }));\n }\n }\n };\n\n const submit = async () => {\n // Only validate required fields (USF-3012: jobTitle and telephone are now optional)\n const fields: (keyof CompanyUserModel | 'roleId')[] = ['firstName', 'lastName', 'email', 'roleId'];\n const next: Record<string, string> = {};\n for (const f of fields) {\n const err = validateField(f, values[f]);\n if (err) next[f as string] = err;\n }\n setErrors(next);\n setTouched({ firstName: true, lastName: true, email: true, roleId: true });\n if (Object.keys(next).length || emailAvailable === false) {\n // Scroll to the first error field\n setTimeout(() => {\n const firstErrorField = document.querySelector('.company-user-form__content .dropin-field__hint--error');\n if (firstErrorField) {\n const fieldContainer = firstErrorField.closest('.dropin-field');\n if (fieldContainer) {\n fieldContainer.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const input = fieldContainer.querySelector('input, select') as HTMLElement;\n if (input) {\n input.focus();\n }\n }\n }\n }, 100);\n return;\n }\n\n const label = `${values.firstName || ''} ${values.lastName || ''}`.trim() || values.email || '';\n const adminEffective = isCompanyAdmin || isCompanyAdministrator({ id: values.roleId });\n const effectiveStatus = adminEffective ? 'ACTIVE' : values.status;\n try {\n if (mode === 'add') {\n const res = await createCompanyUser({ email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', roleId: values.roleId, status: effectiveStatus, targetId: parentStructureId ?? null });\n if (!res) {\n const errorMessage = translations.createUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n return;\n }\n onSaved({ label, structureId: res.structureId, entityId: res.id, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.createUserSuccess);\n }\n } else if (entityId) {\n await updateCompanyUser({ id: entityId, email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', status: effectiveStatus, roleId: values.roleId });\n onSaved({ label, entityId, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.updateUserSuccess);\n }\n }\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : translations.saveUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n }\n };\n\n return { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError };\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 *******************************************************************/\nimport { FunctionComponent } from 'preact';\nimport { memo } from 'preact/compat';\nimport { useState } from 'preact/hooks';\nimport { Field, Input, Button, Card, Picker, ProgressSpinner, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CompanyUserFormLoader } from '@/company-management/components/CompanyLoaders';\nimport { useCompanyUserForm } from '@/company-management/hooks/useCompanyUserForm';\nimport { useCompanyRoles } from '@/company-management/hooks/useCompanyRoles';\nimport { CompanyUserFormProps } from '@/company-management/types/companyForm.types';\nimport './CompanyUserForm.css';\n\n/**\n * CompanyUserForm component for creating and editing company users\n * Provides form fields for user information including name, email, role, and status\n */\nexport const CompanyUserForm: FunctionComponent<CompanyUserFormProps> = memo(({ mode, entityId, parentStructureId, permissions, onSaved, onCancel, onError, onSuccess }) => {\n const canEditUsers = permissions?.canEditUsers ?? false;\n const { roles, isLoading: rolesLoading } = useCompanyRoles();\n const { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError } = useCompanyUserForm({ \n mode, \n entityId, \n parentStructureId, \n onSaved,\n onError: onError ? (error: string) => {\n onError(error);\n onCancel();\n } : undefined,\n onSuccess\n });\n const [saving, setSaving] = useState(false);\n \n const translations = useText({\n addUser: 'Company.CompanyStructure.shared.titles.addUser',\n editUser: 'Company.CompanyStructure.shared.titles.editUser',\n jobTitle: 'Company.CompanyStructure.shared.fields.jobTitle',\n userRole: 'Company.CompanyStructure.shared.fields.userRole',\n firstName: 'Company.CompanyStructure.shared.fields.firstName',\n lastName: 'Company.CompanyStructure.shared.fields.lastName',\n email: 'Company.CompanyStructure.shared.fields.email',\n workPhoneNumber: 'Company.CompanyStructure.shared.fields.workPhoneNumber',\n status: 'Company.CompanyStructure.shared.fields.status',\n selectRole: 'Company.CompanyStructure.shared.options.selectRole',\n active: 'Company.CompanyStructure.shared.options.active',\n inactive: 'Company.CompanyStructure.shared.options.inactive',\n companyAdministrator: 'Company.CompanyStructure.shared.options.companyAdministrator',\n save: 'Company.CompanyStructure.shared.buttons.save',\n cancel: 'Company.CompanyStructure.shared.buttons.cancel',\n });\n\n return (\n <div>\n <h3 className=\"acm-structure-panel__title\">{mode === 'add' ? translations.addUser : translations.editUser}</h3>\n <Card variant=\"secondary\" className={`company-user-form__card ${saving ? 'is-working' : ''}`}>\n {!onError && generalError ? (\n <InLineAlert \n className=\"company-user-form__notification\" \n type=\"error\" \n variant=\"secondary\" \n heading={generalError} \n />\n ) : null}\n {saving ? <div className=\"company-user-form__overlay\" aria-live=\"polite\"><ProgressSpinner size=\"small\" /></div> : null}\n {loading || rolesLoading ? (\n <CompanyUserFormLoader />\n ) : (\n <div className=\"company-user-form__content\">\n\n <Field label={translations.jobTitle} className=\"acm-structure-panel__field\" error={touched.jobTitle && errors.jobTitle ? errors.jobTitle : undefined}>\n <Input name=\"job_title\" type=\"text\" value={values.jobTitle || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('jobTitle', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.userRole} required className=\"acm-structure-panel__field\" error={!isCompanyAdmin && touched.roleId && errors.roleId ? errors.roleId : undefined} disabled={isCompanyAdmin}>\n {isCompanyAdmin ? (\n <Picker name=\"role\" value={'MA=='} options={[{ value: 'MA==', text: translations.companyAdministrator }]} />\n ) : (\n <Picker\n name=\"role\"\n value={values.roleId || 'placeholder'}\n onChange={(e: any) => setValue('roleId', String(e?.target?.value === 'placeholder' ? '' : e?.target?.value ?? ''))}\n onBlur={(e: Event) => { const target = e.target as HTMLSelectElement; void onBlur('roleId', target.value === 'placeholder' ? '' : target.value); }}\n options={[{ value: 'placeholder', text: translations.selectRole, disabled: true }, ...roles.map((r) => ({ value: r.id, text: r.name }))]}\n />\n )}\n </Field>\n\n <Field label={translations.firstName} required className=\"acm-structure-panel__field\" error={touched.firstName && errors.firstName ? errors.firstName : undefined}>\n <Input name=\"first_name\" type=\"text\" value={values.firstName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('firstName', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.lastName} required className=\"acm-structure-panel__field\" error={touched.lastName && errors.lastName ? errors.lastName : undefined}>\n <Input name=\"last_name\" type=\"text\" value={values.lastName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('lastName', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.email} required className=\"acm-structure-panel__field\" error={touched.email && errors.email ? errors.email : undefined}>\n <Input name=\"email\" type=\"email\" value={values.email} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; void onBlur('email', target.value); }} placeholder=\"jdoe@example.com\" variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.workPhoneNumber} className=\"acm-structure-panel__field\" error={touched.telephone && errors.telephone ? errors.telephone : undefined}>\n <Input name=\"telephone\" type=\"text\" value={values.telephone || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('telephone', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.status} className=\"acm-structure-panel__field\" disabled={isCompanyAdmin || !canEditUsers}>\n <Picker\n name=\"status\"\n value={values.status}\n onChange={(e: any) => setValue('status', String(e?.target?.value ?? 'ACTIVE'))}\n options={[{ value: 'ACTIVE', text: translations.active }, { value: 'INACTIVE', text: translations.inactive }]}\n />\n </Field>\n </div>\n )}\n </Card>\n {!(loading || rolesLoading) ? (\n <div className=\"acm-structure-modal__actions\">\n <Button type=\"button\" variant=\"primary\" disabled={saving || !canEditUsers} onClick={async () => { if (saving) return; setSaving(true); try { await submit(); } finally { setSaving(false); } }}>\n {translations.save}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n disabled={saving}\n onClick={onCancel}\n >\n {translations.cancel}\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default CompanyUserForm;\n"],"names":["useCompanyUserForm","opts","mode","entityId","parentStructureId","onSaved","onError","onSuccess","translations","useText","values","setValues","useState","errors","setErrors","touched","setTouched","loading","setLoading","generalError","setGeneralError","emailAvailable","setEmailAvailable","emailChecked","setEmailChecked","originalEmail","setOriginalEmail","isCompanyAdmin","setIsCompanyAdmin","useEffect","getCompanyUser","u","loadedEmail","v","_a","isEmailValid","value","validateField","field","setValue","t","valueToValidate","err","p","newErrors","trimmed","available","isCompanyUserEmailAvailable","fields","next","f","firstErrorField","fieldContainer","input","label","effectiveStatus","isCompanyAdministrator","res","createCompanyUser","errorMessage","updateCompanyUser","error","CompanyUserForm","memo","permissions","onCancel","canEditUsers","roles","rolesLoading","useCompanyRoles","onBlur","submit","saving","setSaving","jsx","jsxs","Card","InLineAlert","ProgressSpinner","CompanyUserFormLoader","Field","Input","e","target","Picker","_b","r","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CompanyUserForm.js","sources":["/@dropins/storefront-company-management/src/hooks/useCompanyUserForm.ts","/@dropins/storefront-company-management/src/components/CompanyUserForm/CompanyUserForm.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 { useEffect, useState } from 'preact/hooks';\nimport { createCompanyUser, getCompanyUser, isCompanyUserEmailAvailable, updateCompanyUser } from '@/company-management/api';\nimport { isCompanyAdministrator } from '@/company-management/lib';\nimport { CompanyUserModel } from '@/company-management/data/models';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport type UserStatus = 'ACTIVE' | 'INACTIVE';\n\n// Field length constants (based on Magento backend validation)\nexport const FIELD_MAX_LENGTHS = {\n firstName: 255,\n lastName: 255,\n email: 254,\n jobTitle: 255,\n telephone: 20,\n} as const;\n\nexport function useCompanyUserForm(opts: {\n mode: 'add' | 'edit';\n entityId?: string;\n parentStructureId?: string | null;\n onSaved: (result: { label: string; structureId?: string; entityId?: string; type: 'user' }) => void;\n onError?: (error: string) => void;\n onSuccess?: (message: string) => void;\n}) {\n const { mode, entityId, parentStructureId, onSaved, onError, onSuccess } = opts;\n \n const translations = useText({\n firstNameRequired: 'Company.CompanyStructure.shared.validation.firstNameRequired',\n lastNameRequired: 'Company.CompanyStructure.shared.validation.lastNameRequired',\n emailRequired: 'Company.CompanyStructure.shared.validation.emailRequired',\n emailInvalid: 'Company.CompanyStructure.shared.validation.emailInvalid',\n jobTitleRequired: 'Company.CompanyStructure.shared.validation.jobTitleRequired',\n workPhoneRequired: 'Company.CompanyStructure.shared.validation.workPhoneRequired',\n selectRole: 'Company.CompanyStructure.shared.validation.selectRole',\n firstNameMaxLength: 'Company.CompanyStructure.shared.validation.firstNameMaxLength',\n lastNameMaxLength: 'Company.CompanyStructure.shared.validation.lastNameMaxLength',\n emailMaxLength: 'Company.CompanyStructure.shared.validation.emailMaxLength',\n jobTitleMaxLength: 'Company.CompanyStructure.shared.validation.jobTitleMaxLength',\n telephoneMaxLength: 'Company.CompanyStructure.shared.validation.telephoneMaxLength',\n createUserError: 'Company.CompanyStructure.messages.createUserError',\n saveUserError: 'Company.CompanyStructure.messages.saveUserError',\n createUserSuccess: 'Company.CompanyStructure.messages.createUserSuccess',\n updateUserSuccess: 'Company.CompanyStructure.messages.updateUserSuccess',\n });\n const [values, setValues] = useState<Partial<CompanyUserModel> & { roleId: string; status: UserStatus }>({ \n firstName: '', \n lastName: '', \n email: '', \n jobTitle: '', \n telephone: '', \n roleId: '', \n status: 'ACTIVE' \n });\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [touched, setTouched] = useState<Record<string, boolean>>({});\n const [loading, setLoading] = useState(false);\n const [generalError, setGeneralError] = useState<string | null>(null);\n const [emailAvailable, setEmailAvailable] = useState<boolean | null>(null);\n const [emailChecked, setEmailChecked] = useState<string>('');\n const [originalEmail, setOriginalEmail] = useState<string>('');\n const [isCompanyAdmin, setIsCompanyAdmin] = useState<boolean>(false);\n\n useEffect(() => {\n if (mode !== 'edit' || !entityId) return;\n setLoading(true);\n void getCompanyUser(entityId).then((u) => {\n if (!u) return;\n const loadedEmail = u.email || '';\n setValues((v) => ({ ...v, firstName: u.firstName || '', lastName: u.lastName || '', email: loadedEmail, jobTitle: u.jobTitle || '', telephone: u.telephone || '', status: (u.status || 'ACTIVE') as UserStatus }));\n setOriginalEmail(loadedEmail);\n if (u?.role?.id) setValues((v) => ({ ...v, roleId: u.role!.id }));\n setIsCompanyAdmin(u?.isCompanyAdmin ?? false);\n }).finally(() => setLoading(false));\n }, [mode, entityId]);\n\n const isEmailValid = (value: string): boolean => /.+@.+\\..+/.test(value);\n const validateField = (field: keyof CompanyUserModel | 'roleId', value: any): string | null => {\n if (field === 'firstName') {\n if (!value?.trim()) return translations.firstNameRequired;\n if (value.length > FIELD_MAX_LENGTHS.firstName) return translations.firstNameMaxLength;\n return null;\n }\n if (field === 'lastName') {\n if (!value?.trim()) return translations.lastNameRequired;\n if (value.length > FIELD_MAX_LENGTHS.lastName) return translations.lastNameMaxLength;\n return null;\n }\n if (field === 'email') {\n if (!value?.trim()) return translations.emailRequired;\n if (value.length > FIELD_MAX_LENGTHS.email) return translations.emailMaxLength;\n return isEmailValid(value.trim()) ? null : translations.emailInvalid;\n }\n // jobTitle and telephone are now optional fields (USF-3012)\n if (field === 'jobTitle') {\n if (value && value.length > FIELD_MAX_LENGTHS.jobTitle) return translations.jobTitleMaxLength;\n return null;\n }\n if (field === 'telephone') {\n if (value && value.length > FIELD_MAX_LENGTHS.telephone) return translations.telephoneMaxLength;\n return null;\n }\n if (field === 'roleId') return value ? null : translations.selectRole;\n return null;\n };\n\n const setValue = (field: keyof CompanyUserModel | 'roleId', value: any) => {\n setValues((v) => ({ ...v, [field]: value }));\n if (field === 'email') setEmailAvailable(null);\n if (generalError) setGeneralError(null);\n };\n\n const onBlur = async (field: keyof CompanyUserModel | 'roleId', value?: any) => {\n // Update form data if value is provided (this preserves spaces and other characters)\n if (value !== undefined) {\n setValue(field, value);\n }\n \n setTouched((t) => ({ ...t, [field]: true }));\n \n // Use provided value or current state value for validation\n const valueToValidate = value !== undefined ? value : values[field];\n const err = validateField(field, valueToValidate);\n if (err) {\n setErrors((p) => ({ ...p, [field]: err }));\n } else {\n // Clear error if field is now valid\n setErrors((p) => {\n const newErrors = { ...p };\n delete newErrors[field];\n return newErrors;\n });\n }\n \n if (field === 'email') {\n const emailValue = value !== undefined ? value : (values.email || '');\n const trimmed = emailValue.trim();\n if (mode === 'edit' && trimmed.toLowerCase() === (originalEmail || '').trim().toLowerCase()) {\n setEmailAvailable(null);\n return;\n }\n if (isEmailValid(trimmed) && trimmed !== emailChecked) {\n const available = await isCompanyUserEmailAvailable(trimmed);\n setEmailChecked(trimmed);\n setEmailAvailable(available);\n if (available === false) setErrors((p) => ({ ...p, email: 'A user with this email address is already a member of your company.' }));\n }\n }\n };\n\n const submit = async () => {\n // Validate all fields including optional ones for length (USF-3474)\n const fields: (keyof CompanyUserModel | 'roleId')[] = ['firstName', 'lastName', 'email', 'roleId', 'jobTitle', 'telephone'];\n const next: Record<string, string> = {};\n const touchedFields: Record<string, boolean> = {};\n \n for (const f of fields) {\n touchedFields[f as string] = true;\n const err = validateField(f, values[f]);\n if (err) next[f as string] = err;\n }\n \n setErrors(next);\n setTouched(touchedFields);\n \n if (Object.keys(next).length || emailAvailable === false) {\n // Scroll to the first error field\n setTimeout(() => {\n const firstErrorField = document.querySelector('.company-user-form__content .dropin-field__hint--error');\n if (firstErrorField) {\n const fieldContainer = firstErrorField.closest('.dropin-field');\n if (fieldContainer) {\n fieldContainer.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const input = fieldContainer.querySelector('input, select') as HTMLElement;\n if (input) {\n input.focus();\n }\n }\n }\n }, 100);\n return;\n }\n\n const label = `${values.firstName || ''} ${values.lastName || ''}`.trim() || values.email || '';\n const adminEffective = isCompanyAdmin || isCompanyAdministrator({ id: values.roleId });\n const effectiveStatus = adminEffective ? 'ACTIVE' : values.status;\n try {\n if (mode === 'add') {\n const res = await createCompanyUser({ email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', roleId: values.roleId, status: effectiveStatus, targetId: parentStructureId ?? null });\n if (!res) {\n const errorMessage = translations.createUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n return;\n }\n onSaved({ label, structureId: res.structureId, entityId: res.id, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.createUserSuccess);\n }\n } else if (entityId) {\n await updateCompanyUser({ id: entityId, email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', status: effectiveStatus, roleId: values.roleId });\n onSaved({ label, entityId, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.updateUserSuccess);\n }\n }\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : translations.saveUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n }\n };\n\n return { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError };\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 *******************************************************************/\nimport { FunctionComponent } from 'preact';\nimport { memo } from 'preact/compat';\nimport { useState } from 'preact/hooks';\nimport { Field, Input, Button, Card, Picker, ProgressSpinner, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CompanyUserFormLoader } from '@/company-management/components/CompanyLoaders';\nimport { useCompanyUserForm, FIELD_MAX_LENGTHS } from '@/company-management/hooks/useCompanyUserForm';\nimport { useCompanyRoles } from '@/company-management/hooks/useCompanyRoles';\nimport { CompanyUserFormProps } from '@/company-management/types/companyForm.types';\nimport './CompanyUserForm.css';\n\n/**\n * CompanyUserForm component for creating and editing company users\n * Provides form fields for user information including name, email, role, and status\n */\nexport const CompanyUserForm: FunctionComponent<CompanyUserFormProps> = memo(({ mode, entityId, parentStructureId, permissions, onSaved, onCancel, onError, onSuccess }) => {\n const canEditUsers = permissions?.canEditUsers ?? false;\n const { roles, isLoading: rolesLoading } = useCompanyRoles();\n const { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError } = useCompanyUserForm({ \n mode, \n entityId, \n parentStructureId, \n onSaved,\n onError: onError ? (error: string) => {\n onError(error);\n onCancel();\n } : undefined,\n onSuccess\n });\n const [saving, setSaving] = useState(false);\n \n const translations = useText({\n addUser: 'Company.CompanyStructure.shared.titles.addUser',\n editUser: 'Company.CompanyStructure.shared.titles.editUser',\n jobTitle: 'Company.CompanyStructure.shared.fields.jobTitle',\n userRole: 'Company.CompanyStructure.shared.fields.userRole',\n firstName: 'Company.CompanyStructure.shared.fields.firstName',\n lastName: 'Company.CompanyStructure.shared.fields.lastName',\n email: 'Company.CompanyStructure.shared.fields.email',\n workPhoneNumber: 'Company.CompanyStructure.shared.fields.workPhoneNumber',\n status: 'Company.CompanyStructure.shared.fields.status',\n selectRole: 'Company.CompanyStructure.shared.options.selectRole',\n active: 'Company.CompanyStructure.shared.options.active',\n inactive: 'Company.CompanyStructure.shared.options.inactive',\n companyAdministrator: 'Company.CompanyStructure.shared.options.companyAdministrator',\n save: 'Company.CompanyStructure.shared.buttons.save',\n cancel: 'Company.CompanyStructure.shared.buttons.cancel',\n });\n\n return (\n <div>\n <h3 className=\"acm-structure-panel__title\">{mode === 'add' ? translations.addUser : translations.editUser}</h3>\n <Card variant=\"secondary\" className={`company-user-form__card ${saving ? 'is-working' : ''}`}>\n {!onError && generalError ? (\n <InLineAlert \n className=\"company-user-form__notification\" \n type=\"error\" \n variant=\"secondary\" \n heading={generalError} \n />\n ) : null}\n {saving ? <div className=\"company-user-form__overlay\" aria-live=\"polite\"><ProgressSpinner size=\"small\" /></div> : null}\n {loading || rolesLoading ? (\n <CompanyUserFormLoader />\n ) : (\n <div className=\"company-user-form__content\">\n\n <Field label={translations.jobTitle} className=\"acm-structure-panel__field\" error={touched.jobTitle && errors.jobTitle ? errors.jobTitle : undefined}>\n <Input name=\"job_title\" type=\"text\" value={values.jobTitle || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('jobTitle', target.value); }} variant=\"primary\" size=\"medium\" maxLength={FIELD_MAX_LENGTHS.jobTitle} />\n </Field>\n\n <Field label={translations.userRole} required className=\"acm-structure-panel__field\" error={!isCompanyAdmin && touched.roleId && errors.roleId ? errors.roleId : undefined} disabled={isCompanyAdmin}>\n {isCompanyAdmin ? (\n <Picker name=\"role\" value={'MA=='} options={[{ value: 'MA==', text: translations.companyAdministrator }]} />\n ) : (\n <Picker\n name=\"role\"\n value={values.roleId || 'placeholder'}\n onChange={(e: any) => setValue('roleId', String(e?.target?.value === 'placeholder' ? '' : e?.target?.value ?? ''))}\n onBlur={(e: Event) => { const target = e.target as HTMLSelectElement; void onBlur('roleId', target.value === 'placeholder' ? '' : target.value); }}\n options={[{ value: 'placeholder', text: translations.selectRole, disabled: true }, ...roles.map((r) => ({ value: r.id, text: r.name }))]}\n />\n )}\n </Field>\n\n <Field label={translations.firstName} required className=\"acm-structure-panel__field\" error={touched.firstName && errors.firstName ? errors.firstName : undefined}>\n <Input name=\"first_name\" type=\"text\" value={values.firstName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('firstName', target.value); }} variant=\"primary\" size=\"medium\" maxLength={FIELD_MAX_LENGTHS.firstName} />\n </Field>\n\n <Field label={translations.lastName} required className=\"acm-structure-panel__field\" error={touched.lastName && errors.lastName ? errors.lastName : undefined}>\n <Input name=\"last_name\" type=\"text\" value={values.lastName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('lastName', target.value); }} variant=\"primary\" size=\"medium\" maxLength={FIELD_MAX_LENGTHS.lastName} />\n </Field>\n\n <Field label={translations.email} required className=\"acm-structure-panel__field\" error={touched.email && errors.email ? errors.email : undefined}>\n <Input name=\"email\" type=\"email\" value={values.email} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; void onBlur('email', target.value); }} placeholder=\"jdoe@example.com\" variant=\"primary\" size=\"medium\" maxLength={FIELD_MAX_LENGTHS.email} />\n </Field>\n\n <Field label={translations.workPhoneNumber} className=\"acm-structure-panel__field\" error={touched.telephone && errors.telephone ? errors.telephone : undefined}>\n <Input name=\"telephone\" type=\"text\" value={values.telephone || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('telephone', target.value); }} variant=\"primary\" size=\"medium\" maxLength={FIELD_MAX_LENGTHS.telephone} />\n </Field>\n\n <Field label={translations.status} className=\"acm-structure-panel__field\" disabled={isCompanyAdmin || !canEditUsers}>\n <Picker\n name=\"status\"\n value={values.status}\n onChange={(e: any) => setValue('status', String(e?.target?.value ?? 'ACTIVE'))}\n options={[{ value: 'ACTIVE', text: translations.active }, { value: 'INACTIVE', text: translations.inactive }]}\n />\n </Field>\n </div>\n )}\n </Card>\n {!(loading || rolesLoading) ? (\n <div className=\"acm-structure-modal__actions\">\n <Button type=\"button\" variant=\"primary\" disabled={saving || !canEditUsers} onClick={async () => { if (saving) return; setSaving(true); try { await submit(); } finally { setSaving(false); } }}>\n {translations.save}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n disabled={saving}\n onClick={onCancel}\n >\n {translations.cancel}\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default CompanyUserForm;\n"],"names":["FIELD_MAX_LENGTHS","useCompanyUserForm","opts","mode","entityId","parentStructureId","onSaved","onError","onSuccess","translations","useText","values","setValues","useState","errors","setErrors","touched","setTouched","loading","setLoading","generalError","setGeneralError","emailAvailable","setEmailAvailable","emailChecked","setEmailChecked","originalEmail","setOriginalEmail","isCompanyAdmin","setIsCompanyAdmin","useEffect","getCompanyUser","u","loadedEmail","v","_a","isEmailValid","value","validateField","field","setValue","t","valueToValidate","err","p","newErrors","trimmed","available","isCompanyUserEmailAvailable","fields","next","touchedFields","f","firstErrorField","fieldContainer","input","label","effectiveStatus","isCompanyAdministrator","res","createCompanyUser","errorMessage","updateCompanyUser","error","CompanyUserForm","memo","permissions","onCancel","canEditUsers","roles","rolesLoading","useCompanyRoles","onBlur","submit","saving","setSaving","jsx","jsxs","Card","InLineAlert","ProgressSpinner","CompanyUserFormLoader","Field","Input","e","target","Picker","_b","r","Button"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{f as R,h as z}from"./network-error.js";const G=c=>{var r,n,l,e,u,d,t,a,_,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{credit:{available_credit:{currency:((e=(l=(n=(r=c==null?void 0:c.data)==null?void 0:r.company)==null?void 0:n.credit)==null?void 0:l.available_credit)==null?void 0:e.currency)||"",value:((a=(t=(d=(u=c==null?void 0:c.data)==null?void 0:u.company)==null?void 0:d.credit)==null?void 0:t.available_credit)==null?void 0:a.value)||0},credit_limit:{currency:((g=(o=(y=(_=c==null?void 0:c.data)==null?void 0:_.company)==null?void 0:y.credit)==null?void 0:o.credit_limit)==null?void 0:g.currency)||"",value:((C=(f=(v=(b=c==null?void 0:c.data)==null?void 0:b.company)==null?void 0:v.credit)==null?void 0:f.credit_limit)==null?void 0:C.value)||0},outstanding_balance:{currency:((T=(i=(p=(h=c==null?void 0:c.data)==null?void 0:h.company)==null?void 0:p.credit)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((D=(P=(I=(E=c==null?void 0:c.data)==null?void 0:E.company)==null?void 0:I.credit)==null?void 0:P.outstanding_balance)==null?void 0:D.value)||0}}}},N=c=>{var n,l,e,u,d,t;const r=(l=(n=c==null?void 0:c.data)==null?void 0:n.company)==null?void 0:l.credit_history;return{items:((e=r==null?void 0:r.items)==null?void 0:e.map(a=>{var _,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{amount:{currency:((_=a==null?void 0:a.amount)==null?void 0:_.currency)||"",value:((y=a==null?void 0:a.amount)==null?void 0:y.value)||0},balance:{availableCredit:{currency:((g=(o=a==null?void 0:a.balance)==null?void 0:o.available_credit)==null?void 0:g.currency)||"",value:((v=(b=a==null?void 0:a.balance)==null?void 0:b.available_credit)==null?void 0:v.value)||0},creditLimit:{currency:((C=(f=a==null?void 0:a.balance)==null?void 0:f.credit_limit)==null?void 0:C.currency)||"",value:((p=(h=a==null?void 0:a.balance)==null?void 0:h.credit_limit)==null?void 0:p.value)||0},outstandingBalance:{currency:((T=(i=a==null?void 0:a.balance)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((I=(E=a==null?void 0:a.balance)==null?void 0:E.outstanding_balance)==null?void 0:I.value)||0}},customReferenceNumber:(a==null?void 0:a.custom_reference_number)||void 0,date:(a==null?void 0:a.date)||"",type:(a==null?void 0:a.
|
|
3
|
+
import{f as R,h as z}from"./network-error.js";const G=c=>{var r,n,l,e,u,d,t,a,_,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{credit:{available_credit:{currency:((e=(l=(n=(r=c==null?void 0:c.data)==null?void 0:r.company)==null?void 0:n.credit)==null?void 0:l.available_credit)==null?void 0:e.currency)||"",value:((a=(t=(d=(u=c==null?void 0:c.data)==null?void 0:u.company)==null?void 0:d.credit)==null?void 0:t.available_credit)==null?void 0:a.value)||0},credit_limit:{currency:((g=(o=(y=(_=c==null?void 0:c.data)==null?void 0:_.company)==null?void 0:y.credit)==null?void 0:o.credit_limit)==null?void 0:g.currency)||"",value:((C=(f=(v=(b=c==null?void 0:c.data)==null?void 0:b.company)==null?void 0:v.credit)==null?void 0:f.credit_limit)==null?void 0:C.value)||0},outstanding_balance:{currency:((T=(i=(p=(h=c==null?void 0:c.data)==null?void 0:h.company)==null?void 0:p.credit)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((D=(P=(I=(E=c==null?void 0:c.data)==null?void 0:E.company)==null?void 0:I.credit)==null?void 0:P.outstanding_balance)==null?void 0:D.value)||0}}}},N=c=>{var n,l,e,u,d,t;const r=(l=(n=c==null?void 0:c.data)==null?void 0:n.company)==null?void 0:l.credit_history;return{items:((e=r==null?void 0:r.items)==null?void 0:e.map(a=>{var _,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{amount:{currency:((_=a==null?void 0:a.amount)==null?void 0:_.currency)||"",value:((y=a==null?void 0:a.amount)==null?void 0:y.value)||0},balance:{availableCredit:{currency:((g=(o=a==null?void 0:a.balance)==null?void 0:o.available_credit)==null?void 0:g.currency)||"",value:((v=(b=a==null?void 0:a.balance)==null?void 0:b.available_credit)==null?void 0:v.value)||0},creditLimit:{currency:((C=(f=a==null?void 0:a.balance)==null?void 0:f.credit_limit)==null?void 0:C.currency)||"",value:((p=(h=a==null?void 0:a.balance)==null?void 0:h.credit_limit)==null?void 0:p.value)||0},outstandingBalance:{currency:((T=(i=a==null?void 0:a.balance)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((I=(E=a==null?void 0:a.balance)==null?void 0:E.outstanding_balance)==null?void 0:I.value)||0}},customReferenceNumber:(a==null?void 0:a.custom_reference_number)||void 0,date:(a==null?void 0:a.date)||"",type:(a==null?void 0:a.type)||"",updatedBy:{name:((P=a==null?void 0:a.updated_by)==null?void 0:P.name)||"",type:((D=a==null?void 0:a.updated_by)==null?void 0:D.type)||""}}}))||[],pageInfo:{currentPage:((u=r==null?void 0:r.page_info)==null?void 0:u.current_page)||1,pageSize:((d=r==null?void 0:r.page_info)==null?void 0:d.page_size)||20,totalPages:((t=r==null?void 0:r.page_info)==null?void 0:t.total_pages)||0},totalCount:(r==null?void 0:r.total_count)||0}},S=`
|
|
4
4
|
query GET_COMPANY_CREDIT
|
|
5
5
|
{
|
|
6
6
|
company {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompanyCreditHistory.js","sources":["/@dropins/storefront-company-management/src/data/transforms/transform-company-credit.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-credit-history.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/graphql/getCompanyCredit.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/getCompanyCredit.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/graphql/getCompanyCreditHistory.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/getCompanyCreditHistory.ts"],"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 { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { CompanyCreditInfo } from '@/company-management/data/models/company-credit-info';\n\nexport const transformCompanyCredit = (\n response: CompanyCreditResponse\n): CompanyCreditInfo => {\n return {\n credit: {\n available_credit: {\n currency: response?.data?.company?.credit?.available_credit?.currency || '',\n value: response?.data?.company?.credit?.available_credit?.value || 0,\n },\n credit_limit: {\n currency: response?.data?.company?.credit?.credit_limit?.currency || '',\n value: response?.data?.company?.credit?.credit_limit?.value || 0,\n },\n outstanding_balance: {\n currency: response?.data?.company?.credit?.outstanding_balance?.currency || '',\n value: response?.data?.company?.credit?.outstanding_balance?.value || 0,\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 { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { CompanyCreditHistory } from '@/company-management/data/models/company-credit-history';\n\nexport const transformCompanyCreditHistory = (\n response: CompanyCreditHistoryResponse\n): CompanyCreditHistory => {\n const creditHistory = response?.data?.company?.credit_history;\n\n return {\n items: creditHistory?.items?.map(item => ({\n amount: {\n currency: item?.amount?.currency || '',\n value: item?.amount?.value || 0,\n },\n balance: {\n availableCredit: {\n currency: item?.balance?.available_credit?.currency || '',\n value: item?.balance?.available_credit?.value || 0,\n },\n creditLimit: {\n currency: item?.balance?.credit_limit?.currency || '',\n value: item?.balance?.credit_limit?.value || 0,\n },\n outstandingBalance: {\n currency: item?.balance?.outstanding_balance?.currency || '',\n value: item?.balance?.outstanding_balance?.value || 0,\n },\n },\n customReferenceNumber: item?.custom_reference_number || undefined,\n date: item?.date || '',\n type: item?.operation_type || '',\n updatedBy: {\n name: item?.updated_by?.name || '',\n type: item?.updated_by?.type || '',\n },\n })) || [],\n pageInfo: {\n currentPage: creditHistory?.page_info?.current_page || 1,\n pageSize: creditHistory?.page_info?.page_size || 20,\n totalPages: creditHistory?.page_info?.total_pages || 0,\n },\n totalCount: creditHistory?.total_count || 0,\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\nexport const GET_COMPANY_CREDIT = /* GraphQL */ `\n query GET_COMPANY_CREDIT \n {\n company {\n credit {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\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 { GET_COMPANY_CREDIT } from \"./graphql/getCompanyCredit.graphql\";\nimport { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { transformCompanyCredit } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditInfo } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCredit = async (): Promise<CompanyCreditInfo | null> => {\n\n return await fetchGraphQl(GET_COMPANY_CREDIT, {\n method: 'GET',\n cache: 'no-cache',\n })\n .then((response: CompanyCreditResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCredit(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\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\nexport const GET_COMPANY_CREDIT_HISTORY = /* GraphQL */ `\n query GET_COMPANY_CREDIT_HISTORY($filter: CompanyCreditHistoryFilterInput, $pageSize: Int, $currentPage: Int) {\n company {\n credit_history(\n filter: $filter\n pageSize: $pageSize\n currentPage: $currentPage\n ) {\n items {\n amount {\n currency\n value\n }\n balance {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\n }\n custom_reference_number\n date\n type\n updated_by {\n name\n type\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\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 { GET_COMPANY_CREDIT_HISTORY } from \"./graphql/getCompanyCreditHistory.graphql\";\nimport { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\nimport { transformCompanyCreditHistory } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditHistory } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCreditHistory = async (params: GetCompanyCreditHistoryParams = {}): Promise<CompanyCreditHistory | null> => {\n const { filter, pageSize = 20, currentPage = 1 } = params;\n\n // Transform camelCase filter to snake_case for GraphQL\n const graphqlFilter = filter ? {\n custom_reference_number: filter.customReferenceNumber,\n operation_type: filter.operationType,\n updated_by: filter.updatedBy,\n } : null;\n\n return await fetchGraphQl(GET_COMPANY_CREDIT_HISTORY, {\n method: 'GET',\n cache: 'no-cache',\n variables: {\n filter: graphqlFilter,\n pageSize,\n currentPage,\n },\n })\n .then((response: CompanyCreditHistoryResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCreditHistory(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};\n"],"names":["transformCompanyCredit","response","_d","_c","_b","_a","_h","_g","_f","_e","_l","_k","_j","_i","_p","_o","_n","_m","_t","_s","_r","_q","_x","_w","_v","_u","transformCompanyCreditHistory","creditHistory","item","GET_COMPANY_CREDIT","getCompanyCredit","fetchGraphQl","handleNetworkError","GET_COMPANY_CREDIT_HISTORY","getCompanyCreditHistory","params","filter","pageSize","currentPage","graphqlFilter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getCompanyCreditHistory.js","sources":["/@dropins/storefront-company-management/src/data/transforms/transform-company-credit.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-credit-history.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/graphql/getCompanyCredit.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/getCompanyCredit.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/graphql/getCompanyCreditHistory.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/getCompanyCreditHistory.ts"],"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 { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { CompanyCreditInfo } from '@/company-management/data/models/company-credit-info';\n\nexport const transformCompanyCredit = (\n response: CompanyCreditResponse\n): CompanyCreditInfo => {\n return {\n credit: {\n available_credit: {\n currency: response?.data?.company?.credit?.available_credit?.currency || '',\n value: response?.data?.company?.credit?.available_credit?.value || 0,\n },\n credit_limit: {\n currency: response?.data?.company?.credit?.credit_limit?.currency || '',\n value: response?.data?.company?.credit?.credit_limit?.value || 0,\n },\n outstanding_balance: {\n currency: response?.data?.company?.credit?.outstanding_balance?.currency || '',\n value: response?.data?.company?.credit?.outstanding_balance?.value || 0,\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 { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { CompanyCreditHistory } from '@/company-management/data/models/company-credit-history';\n\nexport const transformCompanyCreditHistory = (\n response: CompanyCreditHistoryResponse\n): CompanyCreditHistory => {\n const creditHistory = response?.data?.company?.credit_history;\n\n return {\n items: creditHistory?.items?.map(item => ({\n amount: {\n currency: item?.amount?.currency || '',\n value: item?.amount?.value || 0,\n },\n balance: {\n availableCredit: {\n currency: item?.balance?.available_credit?.currency || '',\n value: item?.balance?.available_credit?.value || 0,\n },\n creditLimit: {\n currency: item?.balance?.credit_limit?.currency || '',\n value: item?.balance?.credit_limit?.value || 0,\n },\n outstandingBalance: {\n currency: item?.balance?.outstanding_balance?.currency || '',\n value: item?.balance?.outstanding_balance?.value || 0,\n },\n },\n customReferenceNumber: item?.custom_reference_number || undefined,\n date: item?.date || '',\n type: item?.type || '',\n updatedBy: {\n name: item?.updated_by?.name || '',\n type: item?.updated_by?.type || '',\n },\n })) || [],\n pageInfo: {\n currentPage: creditHistory?.page_info?.current_page || 1,\n pageSize: creditHistory?.page_info?.page_size || 20,\n totalPages: creditHistory?.page_info?.total_pages || 0,\n },\n totalCount: creditHistory?.total_count || 0,\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\nexport const GET_COMPANY_CREDIT = /* GraphQL */ `\n query GET_COMPANY_CREDIT \n {\n company {\n credit {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\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 { GET_COMPANY_CREDIT } from \"./graphql/getCompanyCredit.graphql\";\nimport { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { transformCompanyCredit } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditInfo } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCredit = async (): Promise<CompanyCreditInfo | null> => {\n\n return await fetchGraphQl(GET_COMPANY_CREDIT, {\n method: 'GET',\n cache: 'no-cache',\n })\n .then((response: CompanyCreditResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCredit(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\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\nexport const GET_COMPANY_CREDIT_HISTORY = /* GraphQL */ `\n query GET_COMPANY_CREDIT_HISTORY($filter: CompanyCreditHistoryFilterInput, $pageSize: Int, $currentPage: Int) {\n company {\n credit_history(\n filter: $filter\n pageSize: $pageSize\n currentPage: $currentPage\n ) {\n items {\n amount {\n currency\n value\n }\n balance {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\n }\n custom_reference_number\n date\n type\n updated_by {\n name\n type\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\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 { GET_COMPANY_CREDIT_HISTORY } from \"./graphql/getCompanyCreditHistory.graphql\";\nimport { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\nimport { transformCompanyCreditHistory } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditHistory } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCreditHistory = async (params: GetCompanyCreditHistoryParams = {}): Promise<CompanyCreditHistory | null> => {\n const { filter, pageSize = 20, currentPage = 1 } = params;\n\n // Transform camelCase filter to snake_case for GraphQL\n const graphqlFilter = filter ? {\n custom_reference_number: filter.customReferenceNumber,\n operation_type: filter.operationType,\n updated_by: filter.updatedBy,\n } : null;\n\n return await fetchGraphQl(GET_COMPANY_CREDIT_HISTORY, {\n method: 'GET',\n cache: 'no-cache',\n variables: {\n filter: graphqlFilter,\n pageSize,\n currentPage,\n },\n })\n .then((response: CompanyCreditHistoryResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCreditHistory(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};\n"],"names":["transformCompanyCredit","response","_d","_c","_b","_a","_h","_g","_f","_e","_l","_k","_j","_i","_p","_o","_n","_m","_t","_s","_r","_q","_x","_w","_v","_u","transformCompanyCreditHistory","creditHistory","item","GET_COMPANY_CREDIT","getCompanyCredit","fetchGraphQl","handleNetworkError","GET_COMPANY_CREDIT_HISTORY","getCompanyCreditHistory","params","filter","pageSize","currentPage","graphqlFilter"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{f as o,h as
|
|
3
|
+
import{f as o,h as u}from"./network-error.js";import{h as i}from"./fetch-error.js";const d=`
|
|
4
4
|
mutation createCompanyTeam($input: CompanyTeamCreateInput!) {
|
|
5
5
|
createCompanyTeam(input: $input) { __typename team { id structure_id name } }
|
|
6
6
|
}
|
|
7
|
-
`;async function f(a){const n={name:a.name,description:a.description,target_id:a.targetId};return await o(d,{variables:{input:n}}).then(e=>{var r,m,p;if((r=e.errors)!=null&&r.length)return
|
|
7
|
+
`;async function f(a){const n={name:a.name,description:a.description,target_id:a.targetId};return await o(d,{variables:{input:n}}).then(e=>{var r,m,p;if((r=e.errors)!=null&&r.length)return i(e.errors);const t=(p=(m=e==null?void 0:e.data)==null?void 0:m.createCompanyTeam)==null?void 0:p.team;return t?{id:t.id,structureId:t.structure_id,name:t.name}:null}).catch(u)}const c=`
|
|
8
8
|
mutation deleteCompanyTeam($id: ID!) {
|
|
9
9
|
deleteCompanyTeam(id: $id) { __typename }
|
|
10
10
|
}
|
|
11
|
-
`;async function E(a){return await o(c,{variables:{id:a}}).then(n=>{var e,t;return(e=n.errors)!=null&&e.length?
|
|
11
|
+
`;async function E(a){return await o(c,{variables:{id:a}}).then(n=>{var e,t;return(e=n.errors)!=null&&e.length?i(n.errors):!!((t=n==null?void 0:n.data)!=null&&t.deleteCompanyTeam)}).catch(u)}function y(a){return a.items.map(t=>({structureId:t.entity.structure_id,parentStructureId:t.parent_id||null,label:t.entity.__typename==="CompanyTeam"?t.entity.name||"":`${t.entity.firstname||""} ${t.entity.lastname||""}`.trim(),type:t.entity.__typename==="CompanyTeam"?"team":"user",entityId:(t.entity.__typename==="CompanyTeam"?t.entity.companyTeamId:t.entity.customerId)||"",description:t.entity.__typename==="CompanyTeam"&&t.entity.description||null})).map(t=>{const r=t.parentStructureId||null,m=!r||r==="MA=="?null:r;return{id:t.structureId,parentId:m,label:t.label,type:t.type,entityId:t.entityId,description:t.description}})}const s=a=>{if(!a)throw new Error("Invalid response: missing team data");return{id:a.id,name:a.name,description:a.description}},T=`
|
|
12
12
|
query getCompanyStructure {
|
|
13
13
|
company {
|
|
14
14
|
structure {
|
|
@@ -18,25 +18,25 @@ import{f as o,h as i}from"./network-error.js";import{h as u}from"./fetch-error.j
|
|
|
18
18
|
entity {
|
|
19
19
|
__typename
|
|
20
20
|
... on CompanyTeam { companyTeamId: id structure_id name description }
|
|
21
|
-
... on Customer { customerId: id structure_id firstname lastname
|
|
21
|
+
... on Customer { customerId: id structure_id firstname lastname }
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
`;async function g(){return await o(
|
|
27
|
+
`;async function g(){return await o(T,{method:"GET",cache:"no-cache"}).then(a=>{var e;if((e=a.errors)!=null&&e.length)return i(a.errors);const n=a.data.company.structure;return y(n)}).catch(u)}const l=`
|
|
28
28
|
query getCompanyTeam($id: ID!) {
|
|
29
29
|
company { team(id: $id) { id name description } }
|
|
30
30
|
}
|
|
31
|
-
`;async function A(a){return await o(
|
|
31
|
+
`;async function A(a){return await o(l,{variables:{id:a}}).then(n=>{var t,r,m;if((t=n.errors)!=null&&t.length)return i(n.errors);const e=(m=(r=n==null?void 0:n.data)==null?void 0:r.company)==null?void 0:m.team;return e?s(e):null}).catch(u)}const _=`
|
|
32
32
|
mutation updateCompanyStructure($treeId: ID!, $parentTreeId: ID!) {
|
|
33
33
|
updateCompanyStructure(input: { tree_id: $treeId, parent_tree_id: $parentTreeId }) {
|
|
34
34
|
__typename
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
`;async function $(a){const n={treeId:a.id,parentTreeId:a.parentId};return await o(_,{variables:n}).then(e=>{var t,r;return(t=e.errors)!=null&&t.length?
|
|
37
|
+
`;async function $(a){const n={treeId:a.id,parentTreeId:a.parentId};return await o(_,{variables:n}).then(e=>{var t,r;return(t=e.errors)!=null&&t.length?i(e.errors):!!((r=e==null?void 0:e.data)!=null&&r.updateCompanyStructure)}).catch(u)}const C=`
|
|
38
38
|
mutation updateCompanyTeam($input: CompanyTeamUpdateInput!) {
|
|
39
39
|
updateCompanyTeam(input: $input) { __typename team { id name } }
|
|
40
40
|
}
|
|
41
|
-
`;async function
|
|
41
|
+
`;async function M(a){const n={id:a.id,name:a.name,description:a.description};return await o(C,{variables:{input:n}}).then(e=>{var t,r,m,p;return(t=e.errors)!=null&&t.length?i(e.errors):!!((p=(m=(r=e==null?void 0:e.data)==null?void 0:r.updateCompanyTeam)==null?void 0:m.team)!=null&&p.id)}).catch(u)}export{g as a,$ as b,f as c,E as d,A as g,M as u};
|
|
42
42
|
//# sourceMappingURL=updateCompanyTeam.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateCompanyTeam.js","sources":["/@dropins/storefront-company-management/src/api/createCompanyTeam/graphql/createCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/createCompanyTeam/createCompanyTeam.ts","/@dropins/storefront-company-management/src/api/deleteCompanyTeam/graphql/deleteCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/deleteCompanyTeam/deleteCompanyTeam.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-structure.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-team.ts","/@dropins/storefront-company-management/src/api/getCompanyStructure/graphql/getCompanyStructure.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyStructure/getCompanyStructure.ts","/@dropins/storefront-company-management/src/api/getCompanyTeam/graphql/getCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyTeam/getCompanyTeam.ts","/@dropins/storefront-company-management/src/api/updateCompanyStructure/graphql/updateCompanyStructure.graphql.ts","/@dropins/storefront-company-management/src/api/updateCompanyStructure/updateCompanyStructure.ts","/@dropins/storefront-company-management/src/api/updateCompanyTeam/graphql/updateCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/updateCompanyTeam/updateCompanyTeam.ts"],"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\nexport const CREATE_COMPANY_TEAM = /* GraphQL */ `\n mutation createCompanyTeam($input: CompanyTeamCreateInput!) {\n createCompanyTeam(input: $input) { __typename team { id structure_id name } }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { CreateCompanyTeamInput, CreateCompanyTeamResult } from '../../types/api/createCompanyTeam.types';\nimport { CREATE_COMPANY_TEAM } from './graphql/createCompanyTeam.graphql';\n\n/**\n * Creates a new company team with the provided information\n * \n * @param input - Team information including name, description, and target location\n * @returns Promise resolving to created team result or null if creation failed\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function createCompanyTeam(input: CreateCompanyTeamInput): Promise<CreateCompanyTeamResult | null> {\n // Transform camelCase input to GraphQL snake_case format\n const transformedInput = {\n name: input.name,\n description: input.description,\n target_id: input.targetId,\n };\n\n return await fetchGraphQl<{ createCompanyTeam?: { team?: { id: string; structure_id?: string; name: string } } }>(CREATE_COMPANY_TEAM, { variables: { input: transformedInput } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n const team = res?.data?.createCompanyTeam?.team;\n if (!team) return null;\n \n // Transform GraphQL snake_case response to camelCase\n return {\n id: team.id,\n structureId: team.structure_id,\n name: team.name,\n };\n })\n .catch(handleNetworkError);\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\nexport const DELETE_COMPANY_TEAM = /* GraphQL */ `\n mutation deleteCompanyTeam($id: ID!) {\n deleteCompanyTeam(id: $id) { __typename }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError, handleFetchError } from '@/company-management/lib';\nimport { DELETE_COMPANY_TEAM } from './graphql/deleteCompanyTeam.graphql';\n\n/**\n * Deletes a company team by their ID\n * \n * @param id - The ID of the company team to delete (base64 encoded UID from GraphQL)\n * @returns Promise resolving to boolean indicating success\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function deleteCompanyTeam(id: string): Promise<boolean> {\n return await fetchGraphQl<{ deleteCompanyTeam?: { __typename: string } }>(DELETE_COMPANY_TEAM, { variables: { id } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n return !!res?.data?.deleteCompanyTeam;\n })\n .catch(handleNetworkError);\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 *******************************************************************/\nimport type { CompanyStructureNode } from '../models/company-structure';\n\n// Internal GraphQL response interface (snake_case for direct GraphQL mapping)\ninterface CompanyStructureResponse {\n items: CompanyStructureItemResponse[];\n}\n\ninterface CompanyStructureItemResponse {\n id: string;\n parent_id: string | null;\n entity: {\n __typename: 'CompanyTeam' | 'Customer';\n companyTeamId?: string;\n customerId?: string;\n structure_id: string;\n firstname?: string;\n lastname?: string;\n job_title?: string | null;\n name?: string;\n description?: string | null;\n };\n}\n\nexport function transformCompanyStructure(response: CompanyStructureResponse): CompanyStructureNode[] {\n const typed = response.items.map((i) => ({\n structureId: i.entity.structure_id,\n parentStructureId: i.parent_id || null,\n label: i.entity.__typename === 'CompanyTeam' ? (i.entity.name || '') : `${i.entity.firstname || ''} ${i.entity.lastname || ''}`.trim(),\n type: i.entity.__typename === 'CompanyTeam' ? ('team' as const) : ('user' as const),\n entityId: (i.entity.__typename === 'CompanyTeam' ? i.entity.companyTeamId : i.entity.customerId) || '',\n description: i.entity.__typename === 'CompanyTeam' ? i.entity.description || null : (i.entity.job_title || null),\n }));\n\n const mapped: CompanyStructureNode[] = typed.map((t) => {\n const parentRaw = t.parentStructureId || null;\n const parentTyped = !parentRaw || parentRaw === 'MA==' ? null : parentRaw;\n return { id: t.structureId, parentId: parentTyped, label: t.label, type: t.type, entityId: t.entityId, description: t.description };\n });\n return mapped;\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 { CompanyTeamModel } from '../models/company-team';\n\n// GraphQL response interface (snake_case for direct GraphQL mapping)\ninterface CompanyTeamResponse {\n id: string;\n name: string;\n description?: string | null;\n}\n\nexport const transformCompanyTeam = (response: CompanyTeamResponse): CompanyTeamModel => {\n // Validate response structure\n if (!response) {\n throw new Error('Invalid response: missing team data');\n }\n\n // Transform GraphQL snake_case response to camelCase model\n return {\n id: response.id,\n name: response.name,\n description: response.description,\n // Extended properties for UI and business logic\n // Note: memberCount should be calculated from structure data in components when needed\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\nexport const GET_COMPANY_STRUCTURE = /* GraphQL */ `\n query getCompanyStructure {\n company {\n structure {\n items {\n id\n parent_id\n entity {\n __typename\n ... on CompanyTeam { companyTeamId: id structure_id name description }\n ... on Customer { customerId: id structure_id firstname lastname job_title }\n }\n }\n }\n }\n }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { CompanyStructureNode } from '../../data/models';\nimport { transformCompanyStructure } from '../../data/transforms';\nimport { CompanyStructureResponse } from '../../types/api/getCompanyStructure.types';\nimport { GET_COMPANY_STRUCTURE } from './graphql/getCompanyStructure.graphql';\n\n/**\n * Retrieves the company organizational structure as a tree of nodes\n * \n * @returns Promise resolving to array of CompanyStructureNode representing the company hierarchy\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function getCompanyStructure(): Promise<CompanyStructureNode[]> {\n return await fetchGraphQl<{ company: { structure: CompanyStructureResponse } }>(GET_COMPANY_STRUCTURE, { method: 'GET', cache: 'no-cache' })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n const structure = res.data.company.structure;\n \n // Use transformer to convert GraphQL response to model\n return transformCompanyStructure(structure);\n })\n .catch(handleNetworkError);\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\nexport const GET_COMPANY_TEAM = /* GraphQL */ `\n query getCompanyTeam($id: ID!) {\n company { team(id: $id) { id name description } }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError, handleFetchError } from '@/company-management/lib';\nimport { CompanyTeamModel } from '../../data/models';\nimport { transformCompanyTeam } from '../../data/transforms';\nimport { GET_COMPANY_TEAM } from './graphql/getCompanyTeam.graphql';\n\n/**\n * Retrieves a specific company team by their ID\n * \n * @param id - The ID of the company team to retrieve (base64 encoded UID from GraphQL)\n * @returns Promise resolving to CompanyTeamModel or null if team not found\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function getCompanyTeam(id: string): Promise<CompanyTeamModel | null> {\n return await fetchGraphQl<{ company: { team?: { id: string; name: string; description?: string | null } } }>(GET_COMPANY_TEAM, { variables: { id } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n const team = res?.data?.company?.team;\n if (!team) return null;\n \n // Pure data transformation (no permissions)\n return transformCompanyTeam(team);\n })\n .catch(handleNetworkError);\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\nexport const UPDATE_COMPANY_STRUCTURE = /* GraphQL */ `\n mutation updateCompanyStructure($treeId: ID!, $parentTreeId: ID!) {\n updateCompanyStructure(input: { tree_id: $treeId, parent_tree_id: $parentTreeId }) {\n __typename\n }\n }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { UpdateCompanyStructureInput } from '../../types/api/updateCompanyStructure.types';\nimport { UPDATE_COMPANY_STRUCTURE } from './graphql/updateCompanyStructure.graphql';\n\n/**\n * Updates the company structure by moving a node to a new parent\n * \n * @param input - Object containing the node ID and new parent ID\n * @returns Promise resolving to boolean indicating success\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function updateCompanyStructure(input: UpdateCompanyStructureInput): Promise<boolean> {\n // Transform camelCase input to GraphQL snake_case format\n const transformedInput = {\n treeId: input.id,\n parentTreeId: input.parentId,\n };\n\n return await fetchGraphQl<{ updateCompanyStructure?: { __typename: string } }>(UPDATE_COMPANY_STRUCTURE, {\n variables: transformedInput,\n })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n return !!res?.data?.updateCompanyStructure;\n })\n .catch(handleNetworkError);\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\nexport const UPDATE_COMPANY_TEAM = /* GraphQL */ `\n mutation updateCompanyTeam($input: CompanyTeamUpdateInput!) {\n updateCompanyTeam(input: $input) { __typename team { id name } }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError, handleFetchError } from '@/company-management/lib';\nimport { UpdateCompanyTeamInput } from '../../types/api/updateCompanyTeam.types';\nimport { UPDATE_COMPANY_TEAM } from './graphql/updateCompanyTeam.graphql';\n\n/**\n * Updates an existing company team with the provided information\n * \n * @param input - Team information including ID (base64 encoded UID) and fields to update\n * @returns Promise resolving to boolean indicating success\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function updateCompanyTeam(input: UpdateCompanyTeamInput): Promise<boolean> {\n // Transform camelCase input to GraphQL snake_case format\n const transformedInput = {\n id: input.id,\n name: input.name,\n description: input.description,\n };\n\n return await fetchGraphQl<{ updateCompanyTeam?: { team?: { id: string } } }>(UPDATE_COMPANY_TEAM, { variables: { input: transformedInput } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n return !!res?.data?.updateCompanyTeam?.team?.id;\n })\n .catch(handleNetworkError);\n}\n"],"names":["CREATE_COMPANY_TEAM","createCompanyTeam","input","transformedInput","fetchGraphQl","res","_a","handleFetchError","team","_c","_b","handleNetworkError","DELETE_COMPANY_TEAM","deleteCompanyTeam","id","transformCompanyStructure","response","i","parentRaw","parentTyped","transformCompanyTeam","GET_COMPANY_STRUCTURE","getCompanyStructure","structure","GET_COMPANY_TEAM","getCompanyTeam","UPDATE_COMPANY_STRUCTURE","updateCompanyStructure","UPDATE_COMPANY_TEAM","updateCompanyTeam","_d"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updateCompanyTeam.js","sources":["/@dropins/storefront-company-management/src/api/createCompanyTeam/graphql/createCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/createCompanyTeam/createCompanyTeam.ts","/@dropins/storefront-company-management/src/api/deleteCompanyTeam/graphql/deleteCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/deleteCompanyTeam/deleteCompanyTeam.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-structure.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-team.ts","/@dropins/storefront-company-management/src/api/getCompanyStructure/graphql/getCompanyStructure.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyStructure/getCompanyStructure.ts","/@dropins/storefront-company-management/src/api/getCompanyTeam/graphql/getCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyTeam/getCompanyTeam.ts","/@dropins/storefront-company-management/src/api/updateCompanyStructure/graphql/updateCompanyStructure.graphql.ts","/@dropins/storefront-company-management/src/api/updateCompanyStructure/updateCompanyStructure.ts","/@dropins/storefront-company-management/src/api/updateCompanyTeam/graphql/updateCompanyTeam.graphql.ts","/@dropins/storefront-company-management/src/api/updateCompanyTeam/updateCompanyTeam.ts"],"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\nexport const CREATE_COMPANY_TEAM = /* GraphQL */ `\n mutation createCompanyTeam($input: CompanyTeamCreateInput!) {\n createCompanyTeam(input: $input) { __typename team { id structure_id name } }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { CreateCompanyTeamInput, CreateCompanyTeamResult } from '../../types/api/createCompanyTeam.types';\nimport { CREATE_COMPANY_TEAM } from './graphql/createCompanyTeam.graphql';\n\n/**\n * Creates a new company team with the provided information\n * \n * @param input - Team information including name, description, and target location\n * @returns Promise resolving to created team result or null if creation failed\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function createCompanyTeam(input: CreateCompanyTeamInput): Promise<CreateCompanyTeamResult | null> {\n // Transform camelCase input to GraphQL snake_case format\n const transformedInput = {\n name: input.name,\n description: input.description,\n target_id: input.targetId,\n };\n\n return await fetchGraphQl<{ createCompanyTeam?: { team?: { id: string; structure_id?: string; name: string } } }>(CREATE_COMPANY_TEAM, { variables: { input: transformedInput } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n const team = res?.data?.createCompanyTeam?.team;\n if (!team) return null;\n \n // Transform GraphQL snake_case response to camelCase\n return {\n id: team.id,\n structureId: team.structure_id,\n name: team.name,\n };\n })\n .catch(handleNetworkError);\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\nexport const DELETE_COMPANY_TEAM = /* GraphQL */ `\n mutation deleteCompanyTeam($id: ID!) {\n deleteCompanyTeam(id: $id) { __typename }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError, handleFetchError } from '@/company-management/lib';\nimport { DELETE_COMPANY_TEAM } from './graphql/deleteCompanyTeam.graphql';\n\n/**\n * Deletes a company team by their ID\n * \n * @param id - The ID of the company team to delete (base64 encoded UID from GraphQL)\n * @returns Promise resolving to boolean indicating success\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function deleteCompanyTeam(id: string): Promise<boolean> {\n return await fetchGraphQl<{ deleteCompanyTeam?: { __typename: string } }>(DELETE_COMPANY_TEAM, { variables: { id } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n return !!res?.data?.deleteCompanyTeam;\n })\n .catch(handleNetworkError);\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 *******************************************************************/\nimport type { CompanyStructureNode } from '../models/company-structure';\n\n// Internal GraphQL response interface (snake_case for direct GraphQL mapping)\ninterface CompanyStructureResponse {\n items: CompanyStructureItemResponse[];\n}\n\ninterface CompanyStructureItemResponse {\n id: string;\n parent_id: string | null;\n entity: {\n __typename: 'CompanyTeam' | 'Customer';\n companyTeamId?: string;\n customerId?: string;\n structure_id: string;\n firstname?: string;\n lastname?: string;\n name?: string;\n description?: string | null;\n };\n}\n\nexport function transformCompanyStructure(response: CompanyStructureResponse): CompanyStructureNode[] {\n const typed = response.items.map((i) => ({\n structureId: i.entity.structure_id,\n parentStructureId: i.parent_id || null,\n label: i.entity.__typename === 'CompanyTeam' ? (i.entity.name || '') : `${i.entity.firstname || ''} ${i.entity.lastname || ''}`.trim(),\n type: i.entity.__typename === 'CompanyTeam' ? ('team' as const) : ('user' as const),\n entityId: (i.entity.__typename === 'CompanyTeam' ? i.entity.companyTeamId : i.entity.customerId) || '',\n description: i.entity.__typename === 'CompanyTeam' ? i.entity.description || null : null,\n }));\n\n const mapped: CompanyStructureNode[] = typed.map((t) => {\n const parentRaw = t.parentStructureId || null;\n const parentTyped = !parentRaw || parentRaw === 'MA==' ? null : parentRaw;\n return { id: t.structureId, parentId: parentTyped, label: t.label, type: t.type, entityId: t.entityId, description: t.description };\n });\n return mapped;\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 { CompanyTeamModel } from '../models/company-team';\n\n// GraphQL response interface (snake_case for direct GraphQL mapping)\ninterface CompanyTeamResponse {\n id: string;\n name: string;\n description?: string | null;\n}\n\nexport const transformCompanyTeam = (response: CompanyTeamResponse): CompanyTeamModel => {\n // Validate response structure\n if (!response) {\n throw new Error('Invalid response: missing team data');\n }\n\n // Transform GraphQL snake_case response to camelCase model\n return {\n id: response.id,\n name: response.name,\n description: response.description,\n // Extended properties for UI and business logic\n // Note: memberCount should be calculated from structure data in components when needed\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\nexport const GET_COMPANY_STRUCTURE = /* GraphQL */ `\n query getCompanyStructure {\n company {\n structure {\n items {\n id\n parent_id\n entity {\n __typename\n ... on CompanyTeam { companyTeamId: id structure_id name description }\n ... on Customer { customerId: id structure_id firstname lastname }\n }\n }\n }\n }\n }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { CompanyStructureNode } from '../../data/models';\nimport { transformCompanyStructure } from '../../data/transforms';\nimport { CompanyStructureResponse } from '../../types/api/getCompanyStructure.types';\nimport { GET_COMPANY_STRUCTURE } from './graphql/getCompanyStructure.graphql';\n\n/**\n * Retrieves the company organizational structure as a tree of nodes\n * \n * @returns Promise resolving to array of CompanyStructureNode representing the company hierarchy\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function getCompanyStructure(): Promise<CompanyStructureNode[]> {\n return await fetchGraphQl<{ company: { structure: CompanyStructureResponse } }>(GET_COMPANY_STRUCTURE, { method: 'GET', cache: 'no-cache' })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n const structure = res.data.company.structure;\n \n // Use transformer to convert GraphQL response to model\n return transformCompanyStructure(structure);\n })\n .catch(handleNetworkError);\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\nexport const GET_COMPANY_TEAM = /* GraphQL */ `\n query getCompanyTeam($id: ID!) {\n company { team(id: $id) { id name description } }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError, handleFetchError } from '@/company-management/lib';\nimport { CompanyTeamModel } from '../../data/models';\nimport { transformCompanyTeam } from '../../data/transforms';\nimport { GET_COMPANY_TEAM } from './graphql/getCompanyTeam.graphql';\n\n/**\n * Retrieves a specific company team by their ID\n * \n * @param id - The ID of the company team to retrieve (base64 encoded UID from GraphQL)\n * @returns Promise resolving to CompanyTeamModel or null if team not found\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function getCompanyTeam(id: string): Promise<CompanyTeamModel | null> {\n return await fetchGraphQl<{ company: { team?: { id: string; name: string; description?: string | null } } }>(GET_COMPANY_TEAM, { variables: { id } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n const team = res?.data?.company?.team;\n if (!team) return null;\n \n // Pure data transformation (no permissions)\n return transformCompanyTeam(team);\n })\n .catch(handleNetworkError);\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\nexport const UPDATE_COMPANY_STRUCTURE = /* GraphQL */ `\n mutation updateCompanyStructure($treeId: ID!, $parentTreeId: ID!) {\n updateCompanyStructure(input: { tree_id: $treeId, parent_tree_id: $parentTreeId }) {\n __typename\n }\n }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { UpdateCompanyStructureInput } from '../../types/api/updateCompanyStructure.types';\nimport { UPDATE_COMPANY_STRUCTURE } from './graphql/updateCompanyStructure.graphql';\n\n/**\n * Updates the company structure by moving a node to a new parent\n * \n * @param input - Object containing the node ID and new parent ID\n * @returns Promise resolving to boolean indicating success\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function updateCompanyStructure(input: UpdateCompanyStructureInput): Promise<boolean> {\n // Transform camelCase input to GraphQL snake_case format\n const transformedInput = {\n treeId: input.id,\n parentTreeId: input.parentId,\n };\n\n return await fetchGraphQl<{ updateCompanyStructure?: { __typename: string } }>(UPDATE_COMPANY_STRUCTURE, {\n variables: transformedInput,\n })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n return !!res?.data?.updateCompanyStructure;\n })\n .catch(handleNetworkError);\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\nexport const UPDATE_COMPANY_TEAM = /* GraphQL */ `\n mutation updateCompanyTeam($input: CompanyTeamUpdateInput!) {\n updateCompanyTeam(input: $input) { __typename team { id name } }\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 *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError, handleFetchError } from '@/company-management/lib';\nimport { UpdateCompanyTeamInput } from '../../types/api/updateCompanyTeam.types';\nimport { UPDATE_COMPANY_TEAM } from './graphql/updateCompanyTeam.graphql';\n\n/**\n * Updates an existing company team with the provided information\n * \n * @param input - Team information including ID (base64 encoded UID) and fields to update\n * @returns Promise resolving to boolean indicating success\n * @throws {Error} When network errors or GraphQL errors occur\n */\nexport async function updateCompanyTeam(input: UpdateCompanyTeamInput): Promise<boolean> {\n // Transform camelCase input to GraphQL snake_case format\n const transformedInput = {\n id: input.id,\n name: input.name,\n description: input.description,\n };\n\n return await fetchGraphQl<{ updateCompanyTeam?: { team?: { id: string } } }>(UPDATE_COMPANY_TEAM, { variables: { input: transformedInput } })\n .then((res) => {\n if (res.errors?.length) return handleFetchError(res.errors);\n return !!res?.data?.updateCompanyTeam?.team?.id;\n })\n .catch(handleNetworkError);\n}\n"],"names":["CREATE_COMPANY_TEAM","createCompanyTeam","input","transformedInput","fetchGraphQl","res","_a","handleFetchError","team","_c","_b","handleNetworkError","DELETE_COMPANY_TEAM","deleteCompanyTeam","id","transformCompanyStructure","response","i","parentRaw","parentTyped","transformCompanyTeam","GET_COMPANY_STRUCTURE","getCompanyStructure","structure","GET_COMPANY_TEAM","getCompanyTeam","UPDATE_COMPANY_STRUCTURE","updateCompanyStructure","UPDATE_COMPANY_TEAM","updateCompanyTeam","_d"],"mappings":"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"}
|