@dropins/storefront-company-management 1.0.0 → 1.1.0-beta1

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.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{f as m,h as c}from"./chunks/network-error.js";import{g as I,r as P,s as G,a as L,b as M}from"./chunks/network-error.js";import{f as D}from"./chunks/fetchUserPermissions.js";import{a as w}from"./chunks/acceptCompanyInvitation.js";import{a as k,i as B}from"./chunks/isCompanyUser.js";import{c as Y,g as q}from"./chunks/getCustomerCompany.js";import{D as W,S as z,c as j,g as J}from"./chunks/createCompany.js";import{c as X,d as Z,a as $,g as ee,b as ae,u as re}from"./chunks/updateCompanyTeam.js";import{c as oe,g as ne,i as se,a as me,u as ie}from"./chunks/updateCompanyUserStatus.js";import{d as pe,g as le}from"./chunks/getCompanyUsers.js";import{g as Ce,u as ue}from"./chunks/updateCompany.js";import{a as ye,g as Ee}from"./chunks/getCompanyCreditHistory.js";import{g as he,v as Re}from"./chunks/validateCompanyEmail.js";import{G as p,t as l}from"./chunks/isCompanyRoleNameAvailable.js";import{c as Ae,d as _e,a as Ue,g as Se,i as be,u as Ne}from"./chunks/isCompanyRoleNameAvailable.js";import{f as d}from"./chunks/company-permissions.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";import"./chunks/fetch-error.js";const A=async e=>{try{const a=await m(p,{variables:e,method:"GET",cache:"no-cache"});return l(a)}catch(a){return c(a)}},_=e=>d(e),U=(e,a)=>{const n=new Set(a),r=t=>{var o;const s=((o=t.children)==null?void 0:o.map(r).filter(i=>i!==null))||[];return n.has(t.id)||s.length>0?{...t,children:s}:null};return e.map(r).filter(t=>t!==null)},S=async(e={})=>({success:!0,config:e}),C=`
3
+ import{D as I,S as P,c as G,g as L}from"./chunks/createCompany.js";import{a as H}from"./chunks/acceptCompanyInvitation.js";import{a as v,i as w}from"./chunks/isCompanyUser.js";import{f as c}from"./chunks/company-permissions.js";import{f as m,h as p}from"./chunks/network-error.js";import{g as k,r as B,s as Q,a as Y,b as q}from"./chunks/network-error.js";import{c as W,g as z}from"./chunks/getCustomerCompany.js";import{G as l,t as d}from"./chunks/isCompanyRoleNameAvailable.js";import{c as J,d as V,a as X,g as Z,i as $,u as ee}from"./chunks/isCompanyRoleNameAvailable.js";import{c as re,d as te,a as oe,g as ne,b as se,u as me}from"./chunks/updateCompanyTeam.js";import{c as ce,g as pe,i as le,a as de,u as Ce}from"./chunks/updateCompanyUserStatus.js";import{d as fe,g as ye}from"./chunks/getCompanyUsers.js";import{f as ge}from"./chunks/fetchUserPermissions.js";import{g as Re,u as Te}from"./chunks/updateCompany.js";import{a as _e,g as Ue}from"./chunks/getCompanyCreditHistory.js";import{g as be,v as Ne}from"./chunks/validateCompanyEmail.js";import"./chunks/fetch-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";const A=async e=>{try{const a=await m(l,{variables:e,method:"GET",cache:"no-cache"});return d(a)}catch(a){return p(a)}},_=e=>c(e),U=(e,a)=>{const n=new Set(a),r=t=>{var o;const s=((o=t.children)==null?void 0:o.map(r).filter(i=>i!==null))||[];return n.has(t.id)||s.length>0?{...t,children:s}:null};return e.map(r).filter(t=>t!==null)},S=async(e={})=>({success:!0,config:e}),C=`
4
4
  query CHECK_COMPANY_CREDIT_ENABLED {
5
5
  storeConfig{
6
6
  company_credit_enabled
@@ -21,5 +21,5 @@ import{f as m,h as c}from"./chunks/network-error.js";import{g as I,r as P,s as G
21
21
  }
22
22
  }
23
23
  }
24
- `,N=async()=>{var e,a,n;try{const r=await m(f,{method:"POST"});if((e=r.errors)!=null&&e.length)return!1;const t=(a=r.data)==null?void 0:a.customer;if(!t)return!1;const s=((n=t.companies)==null?void 0:n.items)??[];if(!Array.isArray(s)||s.length===0)return!1;const o=t.role;return o?o.id==="0"||typeof o.id=="number"&&o.id===0||o.name==="Company Administrator":!1}catch(r){return console.error("Error checking if customer is company admin:",r),!1}};export{u as CompanyCreditOperationType,W as DEFAULT_COUNTRY,z as STORE_CONFIG_DEFAULTS,w as acceptCompanyInvitation,k as allowCompanyRegistration,U as buildPermissionTree,b as checkCompanyCreditEnabled,Y as companyEnabled,j as createCompany,Ae as createCompanyRole,X as createCompanyTeam,oe as createCompanyUser,_e as deleteCompanyRole,Z as deleteCompanyTeam,pe as deleteCompanyUser,m as fetchGraphQl,D as fetchUserPermissions,_ as flattenPermissionIds,Ce as getCompany,Ue as getCompanyAclResources,ye as getCompanyCredit,Ee as getCompanyCreditHistory,A as getCompanyRole,Se as getCompanyRoles,$ as getCompanyStructure,ee as getCompanyTeam,ne as getCompanyUser,le as getCompanyUsers,I as getConfig,he as getCountries,q as getCustomerCompany,J as getStoreConfig,S as initialize,N as isCompanyAdmin,be as isCompanyRoleNameAvailable,B as isCompanyUser,se as isCompanyUserEmailAvailable,P as removeFetchGraphQlHeader,G as setEndpoint,L as setFetchGraphQlHeader,M as setFetchGraphQlHeaders,ue as updateCompany,Ne as updateCompanyRole,ae as updateCompanyStructure,re as updateCompanyTeam,me as updateCompanyUser,ie as updateCompanyUserStatus,Re as validateCompanyEmail};
24
+ `,N=async()=>{var e,a,n;try{const r=await m(f,{method:"POST"});if((e=r.errors)!=null&&e.length)return!1;const t=(a=r.data)==null?void 0:a.customer;if(!t)return!1;const s=((n=t.companies)==null?void 0:n.items)??[];if(!Array.isArray(s)||s.length===0)return!1;const o=t.role;return o?o.id==="0"||typeof o.id=="number"&&o.id===0||o.name==="Company Administrator":!1}catch(r){return console.error("Error checking if customer is company admin:",r),!1}};export{u as CompanyCreditOperationType,I as DEFAULT_COUNTRY,P as STORE_CONFIG_DEFAULTS,H as acceptCompanyInvitation,v as allowCompanyRegistration,U as buildPermissionTree,b as checkCompanyCreditEnabled,W as companyEnabled,G as createCompany,J as createCompanyRole,re as createCompanyTeam,ce as createCompanyUser,V as deleteCompanyRole,te as deleteCompanyTeam,fe as deleteCompanyUser,m as fetchGraphQl,ge as fetchUserPermissions,_ as flattenPermissionIds,Re as getCompany,X as getCompanyAclResources,_e as getCompanyCredit,Ue as getCompanyCreditHistory,A as getCompanyRole,Z as getCompanyRoles,oe as getCompanyStructure,ne as getCompanyTeam,pe as getCompanyUser,ye as getCompanyUsers,k as getConfig,be as getCountries,z as getCustomerCompany,L as getStoreConfig,S as initialize,N as isCompanyAdmin,$ as isCompanyRoleNameAvailable,w as isCompanyUser,le as isCompanyUserEmailAvailable,B as removeFetchGraphQlHeader,Q as setEndpoint,Y as setFetchGraphQlHeader,q as setFetchGraphQlHeaders,Te as updateCompany,ee as updateCompanyRole,se as updateCompanyStructure,me as updateCompanyTeam,de as updateCompanyUser,Ce as updateCompanyUserStatus,Ne as validateCompanyEmail};
25
25
  //# sourceMappingURL=api.js.map
package/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["/@dropins/storefront-company-management/src/api/companyRoles/getCompanyRole.ts","/@dropins/storefront-company-management/src/api/companyRoles/utils.ts","/@dropins/storefront-company-management/src/api/initialize/initialize.ts","/@dropins/storefront-company-management/src/api/checkCompanyCreditEnabled/graphql/checkCompanyCreditEnabled.graphql.ts","/@dropins/storefront-company-management/src/api/checkCompanyCreditEnabled/checkCompanyCreditEnabled.ts","/@dropins/storefront-company-management/src/types/api/getCompanyCreditHistoryParams.types.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/graphql/isCompanyAdmin.graphql.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/isCompanyAdmin.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 { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { GET_COMPANY_ROLE } from './graphql/queries';\nimport { GetCompanyRoleVariables, GetCompanyRoleResponse } from '../../types/api/companyRoles.types';\nimport { CompanyRoleModel } from '../../data/models/company-role';\nimport { transformGetCompanyRoleResponse } from '../../data/transforms/transform-company-roles';\n\n/**\n * Retrieves complete details for a specific company role by ID.\n * \n * Returns role name, assigned user count, and the complete permission tree\n * structure with this role's granted permissions. Used when editing an\n * existing role or viewing role details.\n * \n * **Permissions Required:**\n * - `Magento_Company::roles_view` (minimum) - To view role details\n * - `Magento_Company::roles_edit` - To modify the role (additional permission)\n * \n * @param variables - Query parameters containing the role ID\n * @returns Promise resolving to complete role details including permissions\n * @throws Error if network request fails, user lacks permission, or role not found\n * \n * @example\n * ```typescript\n * const role = await getCompanyRole({ id: 'cm9sZS8xMjM=' });\n * console.log(`Role: ${role.name}`);\n * console.log(`Users: ${role.usersCount}`);\n * console.log(`Permissions: ${role.permissions.length} categories`);\n * ```\n */\nexport const getCompanyRole = async (\n variables: GetCompanyRoleVariables\n): Promise<CompanyRoleModel> => {\n try {\n const response: GetCompanyRoleResponse = await fetchGraphQl(GET_COMPANY_ROLE, {\n variables,\n method: 'GET',\n cache: 'no-cache',\n });\n\n return transformGetCompanyRoleResponse(response);\n } catch (error) {\n return handleNetworkError(error as Error);\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 { flattenIdsToArray } from '../../lib/company-permissions';\nimport { CompanyAclResourceModel } from '../../data/models/company-role';\n\n/**\n * Helper function to flatten ACL resources into a list of permission IDs\n */\nexport const flattenPermissionIds = (resources: CompanyAclResourceModel[]): string[] => {\n return flattenIdsToArray(resources);\n};\n\n/**\n * Helper function to build a permission tree from flat permission IDs\n */\nexport const buildPermissionTree = (\n allResources: CompanyAclResourceModel[],\n selectedIds: string[]\n): CompanyAclResourceModel[] => {\n const selectedSet = new Set(selectedIds);\n \n const filterTree = (resource: CompanyAclResourceModel): CompanyAclResourceModel | null => {\n const filteredChildren = resource.children\n ?.map(filterTree)\n .filter((child): child is CompanyAclResourceModel => child !== null) || [];\n \n if (selectedSet.has(resource.id) || filteredChildren.length > 0) {\n return {\n ...resource,\n children: filteredChildren,\n };\n }\n \n return null;\n };\n \n return allResources\n .map(filterTree)\n .filter((resource): resource is CompanyAclResourceModel => resource !== null);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n// import { events } from '@adobe-commerce/event-bus';\n\n\nimport { CompanyDropinConfig } from '../../types/api/initialize.types';\n\nexport const initialize = async (config: CompanyDropinConfig = {}) => {\n return {\n success: true,\n config,\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 CHECK_COMPANY_CREDIT_ENABLED = /* GraphQL */ `\n query CHECK_COMPANY_CREDIT_ENABLED {\n storeConfig{\n company_credit_enabled\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 { CHECK_COMPANY_CREDIT_ENABLED } from \"./graphql/checkCompanyCreditEnabled.graphql\";\nimport { CheckCompanyCreditEnabledResponse } from '../../types/api/checkCompanyCreditEnabled.types';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const checkCompanyCreditEnabled = async (): Promise<CheckCompanyCreditEnabledResponse> => {\n try {\n const response = await fetchGraphQl(CHECK_COMPANY_CREDIT_ENABLED, {\n method: 'GET',\n cache: 'no-cache',\n });\n\n // If there are errors, return false with error message\n if (response.errors?.length) {\n return {\n creditEnabled: false,\n error: 'Unable to check company credit configuration'\n };\n }\n\n // Check if company credit is enabled in store config\n const companyCreditEnabled = response.data?.storeConfig?.company_credit_enabled;\n \n if (companyCreditEnabled === true) {\n return {\n creditEnabled: true\n };\n }\n\n // If company credit is disabled or not configured\n return {\n creditEnabled: false,\n error: 'Company credit is not enabled in store configuration'\n };\n\n } catch (error) {\n return {\n creditEnabled: false,\n error: 'Company credit functionality not available'\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\nexport enum CompanyCreditOperationType {\n ALLOCATION = 'ALLOCATION',\n UPDATE = 'UPDATE',\n PURCHASE = 'PURCHASE',\n REIMBURSEMENT = 'REIMBURSEMENT'\n}\n\nexport interface CompanyCreditHistoryFilterInput {\n /**\n * The purchase order number associated with the company credit operation.\n */\n customReferenceNumber?: string;\n\n /**\n * The type of the company credit operation.\n */\n operationType?: CompanyCreditOperationType;\n\n /**\n * The name of the person submitting the company credit operation.\n */\n updatedBy?: string;\n}\n\nexport interface GetCompanyCreditHistoryParams {\n /**\n * Filter criteria for narrowing the results of a credit history search.\n */\n filter?: CompanyCreditHistoryFilterInput;\n\n /**\n * Number of items to return per page.\n * @default 20\n */\n pageSize?: number;\n\n /**\n * Current page number.\n * @default 1\n */\n currentPage?: number;\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_CUSTOMER_COMPANIES_WITH_ROLES = /* GraphQL */ `\n query GET_CUSTOMER_COMPANIES_WITH_ROLES {\n customer {\n companies(input: {}) {\n items {\n id\n name\n }\n }\n role {\n id\n name\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 { fetchGraphQl } from '../fetch-graphql';\nimport { GET_CUSTOMER_COMPANIES_WITH_ROLES } from './graphql/isCompanyAdmin.graphql';\n\ninterface CompanyRole {\n id: string;\n name: string;\n}\n\ninterface CompanyBasicInfo {\n id: string;\n name: string;\n}\n\ninterface CustomerCompaniesWithRolesResponse {\n customer: {\n companies: {\n items: CompanyBasicInfo[];\n };\n role: CompanyRole | null;\n } | null;\n}\n\n/**\n * Check if the current authenticated customer is a company administrator in any company\n * @returns Promise<boolean> - true if customer is a company admin in at least one company, false otherwise\n */\nexport const isCompanyAdmin = async (): Promise<boolean> => {\n try {\n const response = await fetchGraphQl<CustomerCompaniesWithRolesResponse>(GET_CUSTOMER_COMPANIES_WITH_ROLES, {\n method: 'POST',\n });\n\n if (response.errors?.length) {\n return false;\n }\n\n const customer = response.data?.customer;\n if (!customer) {\n return false;\n }\n\n // Check if user is part of at least one company\n const companies = customer.companies?.items ?? [];\n if (!Array.isArray(companies) || companies.length === 0) {\n return false;\n }\n\n // Check if user has admin role\n const customerRole = customer.role;\n if (!customerRole) {\n return false;\n }\n\n // Check if user is company administrator by role ID or name\n return customerRole.id === '0' || \n (typeof customerRole.id === 'number' && customerRole.id === 0) ||\n customerRole.name === 'Company Administrator';\n } catch (error) {\n console.error('Error checking if customer is company admin:', error);\n return false;\n }\n};\n"],"names":["getCompanyRole","variables","response","fetchGraphQl","GET_COMPANY_ROLE","transformGetCompanyRoleResponse","error","handleNetworkError","flattenPermissionIds","resources","flattenIdsToArray","buildPermissionTree","allResources","selectedIds","selectedSet","filterTree","resource","filteredChildren","_a","child","initialize","config","CHECK_COMPANY_CREDIT_ENABLED","checkCompanyCreditEnabled","_c","_b","CompanyCreditOperationType","GET_CUSTOMER_COMPANIES_WITH_ROLES","isCompanyAdmin","customer","companies","customerRole"],"mappings":"ooCA+CO,MAAMA,EAAiB,MAC5BC,GAC8B,CAC9B,GAAI,CACF,MAAMC,EAAmC,MAAMC,EAAaC,EAAkB,CAC5E,UAAAH,EACA,OAAQ,MACR,MAAO,UAAA,CACR,EAED,OAAOI,EAAgCH,CAAQ,CACjD,OAASI,EAAO,CACd,OAAOC,EAAmBD,CAAc,CAC1C,CACF,ECtCaE,EAAwBC,GAC5BC,EAAkBD,CAAS,EAMvBE,EAAsB,CACjCC,EACAC,IAC8B,CAC9B,MAAMC,EAAc,IAAI,IAAID,CAAW,EAEjCE,EAAcC,GAAsE,OACxF,MAAMC,IAAmBC,EAAAF,EAAS,WAAT,YAAAE,EACrB,IAAIH,GACL,OAAQI,GAA4CA,IAAU,QAAS,CAAA,EAE1E,OAAIL,EAAY,IAAIE,EAAS,EAAE,GAAKC,EAAiB,OAAS,EACrD,CACL,GAAGD,EACH,SAAUC,CAAA,EAIP,IACT,EAEA,OAAOL,EACJ,IAAIG,CAAU,EACd,OAAQC,GAAkDA,IAAa,IAAI,CAChF,EChCaI,EAAa,MAAOC,EAA8B,MACtD,CACL,QAAS,GACT,OAAAA,CAAA,GCRSC,EAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECI7CC,EAA4B,SAAwD,WAC/F,GAAI,CACF,MAAMrB,EAAW,MAAMC,EAAamB,EAA8B,CAChE,OAAQ,MACR,MAAO,UAAA,CACR,EAGD,OAAIJ,EAAAhB,EAAS,SAAT,MAAAgB,EAAiB,OACZ,CACL,cAAe,GACf,MAAO,8CAAA,IAKkBM,GAAAC,EAAAvB,EAAS,OAAT,YAAAuB,EAAe,cAAf,YAAAD,EAA4B,0BAE5B,GACpB,CACL,cAAe,EAAA,EAKZ,CACL,cAAe,GACf,MAAO,sDAAA,CAGX,MAAgB,CACd,MAAO,CACL,cAAe,GACf,MAAO,4CAAA,CAEX,CACF,ECxCO,IAAKE,GAAAA,IACVA,EAAA,WAAa,aACbA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,cAAgB,gBAJNA,IAAAA,GAAA,CAAA,CAAA,ECAL,MAAMC,EAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EC0BlDC,EAAiB,SAA8B,WAC1D,GAAI,CACF,MAAM1B,EAAW,MAAMC,EAAiDwB,EAAmC,CACzG,OAAQ,MAAA,CACT,EAED,IAAIT,EAAAhB,EAAS,SAAT,MAAAgB,EAAiB,OACnB,MAAO,GAGT,MAAMW,GAAWJ,EAAAvB,EAAS,OAAT,YAAAuB,EAAe,SAChC,GAAI,CAACI,EACH,MAAO,GAIT,MAAMC,IAAYN,EAAAK,EAAS,YAAT,YAAAL,EAAoB,QAAS,CAAA,EAC/C,GAAI,CAAC,MAAM,QAAQM,CAAS,GAAKA,EAAU,SAAW,EACpD,MAAO,GAIT,MAAMC,EAAeF,EAAS,KAC9B,OAAKE,EAKEA,EAAa,KAAO,KACnB,OAAOA,EAAa,IAAO,UAAYA,EAAa,KAAO,GAC5DA,EAAa,OAAS,wBANpB,EAOX,OAASzB,EAAO,CACd,eAAQ,MAAM,+CAAgDA,CAAK,EAC5D,EACT,CACF"}
1
+ {"version":3,"file":"api.js","sources":["/@dropins/storefront-company-management/src/api/companyRoles/getCompanyRole.ts","/@dropins/storefront-company-management/src/api/companyRoles/utils.ts","/@dropins/storefront-company-management/src/api/initialize/initialize.ts","/@dropins/storefront-company-management/src/api/checkCompanyCreditEnabled/graphql/checkCompanyCreditEnabled.graphql.ts","/@dropins/storefront-company-management/src/api/checkCompanyCreditEnabled/checkCompanyCreditEnabled.ts","/@dropins/storefront-company-management/src/types/api/getCompanyCreditHistoryParams.types.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/graphql/isCompanyAdmin.graphql.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/isCompanyAdmin.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 { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { GET_COMPANY_ROLE } from './graphql/queries';\nimport { GetCompanyRoleVariables, GetCompanyRoleResponse } from '../../types/api/companyRoles.types';\nimport { CompanyRoleModel } from '../../data/models/company-role';\nimport { transformGetCompanyRoleResponse } from '../../data/transforms/transform-company-roles';\n\n/**\n * Retrieves complete details for a specific company role by ID.\n * \n * Returns role name, assigned user count, and the complete permission tree\n * structure with this role's granted permissions. Used when editing an\n * existing role or viewing role details.\n * \n * **Permissions Required:**\n * - `Magento_Company::roles_view` (minimum) - To view role details\n * - `Magento_Company::roles_edit` - To modify the role (additional permission)\n * \n * @param variables - Query parameters containing the role ID\n * @returns Promise resolving to complete role details including permissions\n * @throws Error if network request fails, user lacks permission, or role not found\n * \n * @example\n * ```typescript\n * const role = await getCompanyRole({ id: 'cm9sZS8xMjM=' });\n * console.log(`Role: ${role.name}`);\n * console.log(`Users: ${role.usersCount}`);\n * console.log(`Permissions: ${role.permissions.length} categories`);\n * ```\n */\nexport const getCompanyRole = async (\n variables: GetCompanyRoleVariables\n): Promise<CompanyRoleModel> => {\n try {\n const response: GetCompanyRoleResponse = await fetchGraphQl(GET_COMPANY_ROLE, {\n variables,\n method: 'GET',\n cache: 'no-cache',\n });\n\n return transformGetCompanyRoleResponse(response);\n } catch (error) {\n return handleNetworkError(error as Error);\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 { flattenIdsToArray } from '../../lib/company-permissions';\nimport { CompanyAclResourceModel } from '../../data/models/company-role';\n\n/**\n * Helper function to flatten ACL resources into a list of permission IDs\n */\nexport const flattenPermissionIds = (resources: CompanyAclResourceModel[]): string[] => {\n return flattenIdsToArray(resources);\n};\n\n/**\n * Helper function to build a permission tree from flat permission IDs\n */\nexport const buildPermissionTree = (\n allResources: CompanyAclResourceModel[],\n selectedIds: string[]\n): CompanyAclResourceModel[] => {\n const selectedSet = new Set(selectedIds);\n \n const filterTree = (resource: CompanyAclResourceModel): CompanyAclResourceModel | null => {\n const filteredChildren = resource.children\n ?.map(filterTree)\n .filter((child): child is CompanyAclResourceModel => child !== null) || [];\n \n if (selectedSet.has(resource.id) || filteredChildren.length > 0) {\n return {\n ...resource,\n children: filteredChildren,\n };\n }\n \n return null;\n };\n \n return allResources\n .map(filterTree)\n .filter((resource): resource is CompanyAclResourceModel => resource !== null);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n// import { events } from '@adobe-commerce/event-bus';\n\n\nimport { CompanyDropinConfig } from '../../types/api/initialize.types';\n\nexport const initialize = async (config: CompanyDropinConfig = {}) => {\n return {\n success: true,\n config,\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 CHECK_COMPANY_CREDIT_ENABLED = /* GraphQL */ `\n query CHECK_COMPANY_CREDIT_ENABLED {\n storeConfig{\n company_credit_enabled\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 { CHECK_COMPANY_CREDIT_ENABLED } from \"./graphql/checkCompanyCreditEnabled.graphql\";\nimport { CheckCompanyCreditEnabledResponse } from '../../types/api/checkCompanyCreditEnabled.types';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const checkCompanyCreditEnabled = async (): Promise<CheckCompanyCreditEnabledResponse> => {\n try {\n const response = await fetchGraphQl(CHECK_COMPANY_CREDIT_ENABLED, {\n method: 'GET',\n cache: 'no-cache',\n });\n\n // If there are errors, return false with error message\n if (response.errors?.length) {\n return {\n creditEnabled: false,\n error: 'Unable to check company credit configuration'\n };\n }\n\n // Check if company credit is enabled in store config\n const companyCreditEnabled = response.data?.storeConfig?.company_credit_enabled;\n \n if (companyCreditEnabled === true) {\n return {\n creditEnabled: true\n };\n }\n\n // If company credit is disabled or not configured\n return {\n creditEnabled: false,\n error: 'Company credit is not enabled in store configuration'\n };\n\n } catch (error) {\n return {\n creditEnabled: false,\n error: 'Company credit functionality not available'\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\nexport enum CompanyCreditOperationType {\n ALLOCATION = 'ALLOCATION',\n UPDATE = 'UPDATE',\n PURCHASE = 'PURCHASE',\n REIMBURSEMENT = 'REIMBURSEMENT'\n}\n\nexport interface CompanyCreditHistoryFilterInput {\n /**\n * The purchase order number associated with the company credit operation.\n */\n customReferenceNumber?: string;\n\n /**\n * The type of the company credit operation.\n */\n operationType?: CompanyCreditOperationType;\n\n /**\n * The name of the person submitting the company credit operation.\n */\n updatedBy?: string;\n}\n\nexport interface GetCompanyCreditHistoryParams {\n /**\n * Filter criteria for narrowing the results of a credit history search.\n */\n filter?: CompanyCreditHistoryFilterInput;\n\n /**\n * Number of items to return per page.\n * @default 20\n */\n pageSize?: number;\n\n /**\n * Current page number.\n * @default 1\n */\n currentPage?: number;\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_CUSTOMER_COMPANIES_WITH_ROLES = /* GraphQL */ `\n query GET_CUSTOMER_COMPANIES_WITH_ROLES {\n customer {\n companies(input: {}) {\n items {\n id\n name\n }\n }\n role {\n id\n name\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 { fetchGraphQl } from '../fetch-graphql';\nimport { GET_CUSTOMER_COMPANIES_WITH_ROLES } from './graphql/isCompanyAdmin.graphql';\n\ninterface CompanyRole {\n id: string;\n name: string;\n}\n\ninterface CompanyBasicInfo {\n id: string;\n name: string;\n}\n\ninterface CustomerCompaniesWithRolesResponse {\n customer: {\n companies: {\n items: CompanyBasicInfo[];\n };\n role: CompanyRole | null;\n } | null;\n}\n\n/**\n * Check if the current authenticated customer is a company administrator in any company\n * @returns Promise<boolean> - true if customer is a company admin in at least one company, false otherwise\n */\nexport const isCompanyAdmin = async (): Promise<boolean> => {\n try {\n const response = await fetchGraphQl<CustomerCompaniesWithRolesResponse>(GET_CUSTOMER_COMPANIES_WITH_ROLES, {\n method: 'POST',\n });\n\n if (response.errors?.length) {\n return false;\n }\n\n const customer = response.data?.customer;\n if (!customer) {\n return false;\n }\n\n // Check if user is part of at least one company\n const companies = customer.companies?.items ?? [];\n if (!Array.isArray(companies) || companies.length === 0) {\n return false;\n }\n\n // Check if user has admin role\n const customerRole = customer.role;\n if (!customerRole) {\n return false;\n }\n\n // Check if user is company administrator by role ID or name\n return customerRole.id === '0' || \n (typeof customerRole.id === 'number' && customerRole.id === 0) ||\n customerRole.name === 'Company Administrator';\n } catch (error) {\n console.error('Error checking if customer is company admin:', error);\n return false;\n }\n};\n"],"names":["getCompanyRole","variables","response","fetchGraphQl","GET_COMPANY_ROLE","transformGetCompanyRoleResponse","error","handleNetworkError","flattenPermissionIds","resources","flattenIdsToArray","buildPermissionTree","allResources","selectedIds","selectedSet","filterTree","resource","filteredChildren","_a","child","initialize","config","CHECK_COMPANY_CREDIT_ENABLED","checkCompanyCreditEnabled","_c","_b","CompanyCreditOperationType","GET_CUSTOMER_COMPANIES_WITH_ROLES","isCompanyAdmin","customer","companies","customerRole"],"mappings":"moCA+CO,MAAMA,EAAiB,MAC5BC,GAC8B,CAC9B,GAAI,CACF,MAAMC,EAAmC,MAAMC,EAAaC,EAAkB,CAC5E,UAAAH,EACA,OAAQ,MACR,MAAO,UAAA,CACR,EAED,OAAOI,EAAgCH,CAAQ,CACjD,OAASI,EAAO,CACd,OAAOC,EAAmBD,CAAc,CAC1C,CACF,ECtCaE,EAAwBC,GAC5BC,EAAkBD,CAAS,EAMvBE,EAAsB,CACjCC,EACAC,IAC8B,CAC9B,MAAMC,EAAc,IAAI,IAAID,CAAW,EAEjCE,EAAcC,GAAsE,OACxF,MAAMC,IAAmBC,EAAAF,EAAS,WAAT,YAAAE,EACrB,IAAIH,GACL,OAAQI,GAA4CA,IAAU,QAAS,CAAA,EAE1E,OAAIL,EAAY,IAAIE,EAAS,EAAE,GAAKC,EAAiB,OAAS,EACrD,CACL,GAAGD,EACH,SAAUC,CAAA,EAIP,IACT,EAEA,OAAOL,EACJ,IAAIG,CAAU,EACd,OAAQC,GAAkDA,IAAa,IAAI,CAChF,EChCaI,EAAa,MAAOC,EAA8B,MACtD,CACL,QAAS,GACT,OAAAA,CAAA,GCRSC,EAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECI7CC,EAA4B,SAAwD,WAC/F,GAAI,CACF,MAAMrB,EAAW,MAAMC,EAAamB,EAA8B,CAChE,OAAQ,MACR,MAAO,UAAA,CACR,EAGD,OAAIJ,EAAAhB,EAAS,SAAT,MAAAgB,EAAiB,OACZ,CACL,cAAe,GACf,MAAO,8CAAA,IAKkBM,GAAAC,EAAAvB,EAAS,OAAT,YAAAuB,EAAe,cAAf,YAAAD,EAA4B,0BAE5B,GACpB,CACL,cAAe,EAAA,EAKZ,CACL,cAAe,GACf,MAAO,sDAAA,CAGX,MAAgB,CACd,MAAO,CACL,cAAe,GACf,MAAO,4CAAA,CAEX,CACF,ECxCO,IAAKE,GAAAA,IACVA,EAAA,WAAa,aACbA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,cAAgB,gBAJNA,IAAAA,GAAA,CAAA,CAAA,ECAL,MAAMC,EAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EC0BlDC,EAAiB,SAA8B,WAC1D,GAAI,CACF,MAAM1B,EAAW,MAAMC,EAAiDwB,EAAmC,CACzG,OAAQ,MAAA,CACT,EAED,IAAIT,EAAAhB,EAAS,SAAT,MAAAgB,EAAiB,OACnB,MAAO,GAGT,MAAMW,GAAWJ,EAAAvB,EAAS,OAAT,YAAAuB,EAAe,SAChC,GAAI,CAACI,EACH,MAAO,GAIT,MAAMC,IAAYN,EAAAK,EAAS,YAAT,YAAAL,EAAoB,QAAS,CAAA,EAC/C,GAAI,CAAC,MAAM,QAAQM,CAAS,GAAKA,EAAU,SAAW,EACpD,MAAO,GAIT,MAAMC,EAAeF,EAAS,KAC9B,OAAKE,EAKEA,EAAa,KAAO,KACnB,OAAOA,EAAa,IAAO,UAAYA,EAAa,KAAO,GAC5DA,EAAa,OAAS,wBANpB,EAOX,OAASzB,EAAO,CACd,eAAQ,MAAM,+CAAgDA,CAAK,EAC5D,EACT,CACF"}
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
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 d}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:d(["company-company-loaders","company-company-loaders--card-loader"]),children:l})},p=({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})})]}),z=({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))]}),h=()=>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,z as a,h as b,u as c,p as d};
3
+ import{jsx as e,jsxs as t}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 d}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:d(["company-company-loaders","company-company-loaders--card-loader"]),children:l})},p=({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})})]}),z=({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))]}),h=()=>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,z as a,h as b,u as c,p as d};
4
4
  //# sourceMappingURL=CompanyLoaders.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as t,jsxs as g,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{classes as me,Slot as pe}from"@dropins/tools/lib.js";import{useState as V,useRef as J,useEffect as j,useCallback as U,useMemo as G}from"@dropins/tools/preact-hooks.js";import{events as ge}from"@dropins/tools/event-bus.js";import{p as he,E as fe}from"../chunks/acdl.js";import{u as ye}from"../chunks/useCompanyContextListener.js";import{g as ve,u as Ce}from"../chunks/updateCompany.js";import{g as ue,v as Ae}from"../chunks/validateCompanyEmail.js";import{useText as H}from"@dropins/tools/i18n.js";import{u as Ne}from"../chunks/useInLineAlert.js";import{c as Ie}from"../chunks/CompanyLoaders.js";import{Card as Q,IllustratedMessage as _e,Button as X,Field as R,Input as L,Picker as ce,Header as Ee,InLineAlert as be,ProgressSpinner as xe}from"@dropins/tools/components.js";import"../chunks/fetchUserPermissions.js";import"../chunks/company-permissions.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact-compat.js";const $e=({company:a,slots:e,showEditForm:u,handleShowEditForm:f})=>{const n=H({editButton:"Company.shared.buttons.edit",noDataMessage:"Company.CompanyProfile.companyProfileCard.noDataMessage",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",legalAddress:"Company.shared.fields.legalAddress",contacts:"Company.CompanyProfile.companyProfileCard.contacts",companyAdministrator:"Company.CompanyProfile.companyProfileCard.companyAdministrator",salesRepresentative:"Company.CompanyProfile.companyProfileCard.salesRepresentative",paymentInformation:"Company.CompanyProfile.companyProfileCard.paymentInformation",shippingInformation:"Company.CompanyProfile.companyProfileCard.shippingInformation",availablePaymentMethods:"Company.CompanyProfile.companyProfileCard.availablePaymentMethods",availableShippingMethods:"Company.CompanyProfile.companyProfileCard.availableShippingMethods",noPaymentMethods:"Company.CompanyProfile.companyProfileCard.noPaymentMethods",noShippingMethods:"Company.CompanyProfile.companyProfileCard.noShippingMethods"});if(!a)return t(Q,{variant:"secondary",className:"account-company-profile-card",children:t("div",{className:"account-company-profile-card__wrapper",children:t("div",{className:"account-company-profile-card__content",children:t("div",{className:"account-company-profile-card__no-data",children:t(_e,{message:t("p",{children:n.noDataMessage})})})})})});const o=a.permissionsFlags||{canViewAccount:!0,canViewAddress:!0,canViewContacts:!0,canViewPaymentInformation:!0,canViewShippingInformation:!0},r=[o.canViewAccount?{name:"name",label:n.companyName,value:a.name||"",legalName:a.legalName||""}:null,o.canViewAccount?{name:"email",label:n.email,value:a.email||""}:null,o.canViewAccount?{name:"vatTaxId",label:n.vatTaxId,value:a.vatTaxId||""}:null,o.canViewAccount?{name:"resellerId",label:n.resellerId,value:a.resellerId||""}:null].filter(Boolean);return t(Q,{variant:"secondary",className:me(["account-company-profile-card",["account-company-profile-card-short",u]]),children:g("div",{className:"account-company-profile-card__wrapper",children:[t("div",{className:"account-company-profile-card__actions",children:(a.canEditAccount||a.canEditAddress)&&t(X,{type:"button",variant:"tertiary",onClick:f,children:n.editButton})}),t("div",{className:"account-company-profile-card__content",children:(()=>{var y,p;const A=g(K,{children:[r.map((l,d)=>{if(!l.value)return null;let v;return l.name==="name"&&l.legalName?v=`${l.label}: ${l.value} (${l.legalName})`:v=l.label?`${l.label}: ${l.value}`:l.value,t("p",{"data-testid":`${l.name}_${d}`,children:v},`${l.name}_${d}`)}),o.canViewAddress&&a.legalAddress&&g("div",{className:"company-legal-address",children:[t("p",{children:g("strong",{children:[n.legalAddress,":"]})}),(y=a.legalAddress.street)==null?void 0:y.map((l,d)=>t("p",{children:l},d)),g("p",{children:[a.legalAddress.city,", ",(p=a.legalAddress.region)==null?void 0:p.region," ",a.legalAddress.postcode]}),t("p",{children:a.legalAddress.countryCode}),a.legalAddress.telephone&&g("p",{children:["Phone: ",a.legalAddress.telephone]})]}),o.canViewContacts&&(a.companyAdmin||a.salesRepresentative)&&g("div",{className:"company-contacts",children:[t("p",{children:g("strong",{children:[n.contacts,":"]})}),a.companyAdmin&&g("div",{className:"company-contact",children:[t("p",{children:g("strong",{children:[n.companyAdministrator,":"]})}),g("p",{children:[a.companyAdmin.firstname," ",a.companyAdmin.lastname]}),a.companyAdmin.jobTitle&&t("p",{children:a.companyAdmin.jobTitle}),t("p",{children:a.companyAdmin.email})]}),a.salesRepresentative&&g("div",{className:"company-contact",children:[t("p",{children:g("strong",{children:[n.salesRepresentative,":"]})}),g("p",{children:[a.salesRepresentative.firstname," ",a.salesRepresentative.lastname]}),t("p",{children:a.salesRepresentative.email})]})]}),o.canViewPaymentInformation&&g("div",{className:"company-payment-methods",children:[t("p",{children:g("strong",{children:[n.paymentInformation,":"]})}),a.availablePaymentMethods&&a.availablePaymentMethods.length>0?g(K,{children:[t("p",{children:g("strong",{children:[n.availablePaymentMethods,":"]})}),t("ul",{className:"payment-methods-list",children:a.availablePaymentMethods.map((l,d)=>t("li",{children:l.title},`payment_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:n.noPaymentMethods})})]}),o.canViewShippingInformation&&g("div",{className:"company-shipping-methods",children:[t("p",{children:g("strong",{children:[n.shippingInformation,":"]})}),a.availableShippingMethods&&a.availableShippingMethods.length>0?g(K,{children:[t("p",{children:g("strong",{children:[n.availableShippingMethods,":"]})}),t("ul",{className:"shipping-methods-list",children:a.availableShippingMethods.map((l,d)=>t("li",{children:l.title},`shipping_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:n.noShippingMethods})})]})]});return e!=null&&e.CompanyData?t(pe,{name:"CompanyData",slot:e.CompanyData,context:{companyData:r,Default:A}}):A})()})]})})},Te=({handleSetInLineAlert:a,editFormRef:e})=>{const u=H({companySuccess:"Company.CompanyProfile.editCompanyProfile.companySuccess",companyError:"Company.CompanyProfile.editCompanyProfile.companyError",loadError:"Company.CompanyProfile.messages.loadError",updateError:"Company.CompanyProfile.messages.updateError",noDataToUpdate:"Company.CompanyProfile.messages.noDataToUpdate"}),{companySuccess:f,companyError:n,loadError:o,updateError:r,noDataToUpdate:A}=u,[y,p]=V(null),[l,d]=V(!0),[v,N]=V(!1),[_,T]=V(!1),[m,k]=V([]),[D,C]=V({}),z=J(a),w=J(!1),P=J(!1);j(()=>{z.current=a},[a]);const O=U(h=>{C(h)},[]),F=U((h,B)=>{a&&(h==="success"?a({type:"success",text:B??f}):h==="error"?a({type:"error",text:B??n}):a(),N(!1))},[a,f,n]),S=U(async()=>{if(w.current)return null;w.current=!0,d(!0);try{const h=await ve();return h&&p(h),d(!1),h}catch(h){return console.error("Failed to load company:",h),d(!1),z.current&&z.current({type:"error",text:o}),null}finally{w.current=!1}},[o]);j(()=>{P.current||(P.current=!0,S())},[S]),ye(U(()=>{d(!0),T(!1),C({}),S()},[S])),j(()=>{ue().then(h=>{k(h.availableCountries)}).catch(h=>{console.error("Failed to load countries:",h)})},[]);const W=U(()=>{T(!0),F("success",""),C({})},[F]);j(()=>{_&&(e!=null&&e.current)&&setTimeout(()=>{var h;(h=e.current)==null||h.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)},[_,e]);const q=U(h=>{h==null||h(),T(!1),C({})},[]),Y=U(async h=>{try{if(N(!0),!h){F("error",A);return}const B=await Ce(h);p(B),T(!1),C({}),F("success"),he(fe.EDIT_COMPANY_EVENT,{...h,companyId:y==null?void 0:y.id}),ge.emit("company/updated",{company:B})}catch(B){console.error("Failed to update company:",B),F("error",B.message||r)}finally{N(!1)}},[y,F,r,A]);return{company:y,countries:m,loading:l,submitLoading:v,showEditForm:_,inputChange:D,handleShowEditForm:W,handleHideEditForm:q,handleUpdateCompany:Y,handleInputChange:O,renderAlertMessage:F,saving:v}},we=a=>{const[e,u]=V(null),[f,n]=V(!0);j(()=>{let p=!0;return ue().then(({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:v})=>{p&&(u({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:v}),n(!1))}).catch(()=>{p&&n(!1)}),()=>{p=!1}},[]);const o=G(()=>(e==null?void 0:e.availableCountries)||[],[e]),r=G(()=>{if(!a||!e)return[];const p=e.availableCountries.find(l=>l.value===a);return!(p!=null&&p.availableRegions)||p.availableRegions.length===0?[]:p.availableRegions.map(l=>({text:l.name,value:`${l.code},${l.id}`}))},[a,e]),A=G(()=>!a||!e?!1:e.countriesWithRequiredRegion.includes(a),[a,e]),y=G(()=>r.length>0,[r]);return{countryOptions:o,regionOptions:r,isRegionRequired:A,hasRegionOptions:y,loadingCountries:f}},Pe=({loading:a,value:e,errors:u,touched:f,onBlur:n,namePrefix:o="",fieldPathPrefix:r=""})=>{const A=H({accountInformation:"Company.shared.fields.accountInformation",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId"}),y=o?`${o}_`:"",p=v=>r?`${r}.${v}`:v,l=v=>N=>{const _=N.target;n(p(v),_.value)},d={disabled:!!a,variant:"primary",size:"medium"};return g("div",{className:"account-edit-company-profile-form__group",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:A.accountInformation}),t(R,{label:A.companyName,required:!0,className:"account-edit-company-profile-form__field",error:f.name&&u.name?u.name:void 0,children:t(L,{name:`${y}name`,type:"text",value:e.name,onBlur:l("name"),...d,maxLength:40})}),t(R,{label:A.legalName,className:"account-edit-company-profile-form__field",children:t(L,{name:`${y}legalName`,type:"text",value:e.legalName,onBlur:l("legalName"),...d,maxLength:80})}),t(R,{label:A.email,required:!0,className:"account-edit-company-profile-form__field",error:f.email&&u.email?u.email:void 0,children:t(L,{name:`${y}email`,type:"email",value:e.email,onBlur:l("email"),...d})}),t(R,{label:A.vatTaxId,className:"account-edit-company-profile-form__field",children:t(L,{name:`${y}vatTaxId`,type:"text",value:e.vatTaxId,onBlur:l("vatTaxId"),...d,maxLength:40})}),t(R,{label:A.resellerId,className:"account-edit-company-profile-form__field",children:t(L,{name:`${y}resellerId`,type:"text",value:e.resellerId,onBlur:l("resellerId"),...d,maxLength:40})})]})},Fe=({loading:a,loadingCountries:e,value:u,errors:f,touched:n,onChange:o,onBlur:r,countryOptions:A,regionOptions:y,isRegionRequired:p,hasRegionOptions:l,namePrefix:d="legalAddress",fieldPathPrefix:v="legalAddress",requiredConfig:N})=>{var z;const _=H({legalAddress:"Company.shared.fields.legalAddress",streetAddress:"Company.shared.fields.streetAddress",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",zipPostalCode:"Company.shared.fields.zipPostalCode",phoneNumber:"Company.shared.fields.phoneNumber"}),T={street:`${d}_street`,street2:`${d}_street2`,city:`${d}_city`,countryCode:`${d}_countryCode`,region:`${d}_region`,postcode:`${d}_postcode`,telephone:`${d}_telephone`},m={street:`${v}.street`,street2:`${v}.street2`,city:`${v}.city`,countryCode:`${v}.countryCode`,region:`${v}.region`,regionCode:`${v}.regionCode`,postcode:`${v}.postcode`,telephone:`${v}.telephone`},k={street:(N==null?void 0:N.street)??!0,city:(N==null?void 0:N.city)??!0,postcode:(N==null?void 0:N.postcode)??!0,telephone:(N==null?void 0:N.telephone)??!0},D=w=>P=>{const O=P.target;r(w,O.value)},C={disabled:!!a,variant:"primary",size:"medium"};return g("div",{className:"account-edit-company-profile-form__section",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:_.legalAddress}),t(R,{label:_.streetAddress,required:k.street,className:"account-edit-company-profile-form__field",error:n[m.street]&&f[m.street]?f[m.street]:void 0,children:t(L,{name:T.street,type:"text",value:u.street,onBlur:D(m.street),...C})}),t(R,{label:`${_.streetAddress} 2`,className:"account-edit-company-profile-form__field",children:t(L,{name:T.street2,type:"text",value:u.street2,onBlur:D(m.street2),...C})}),t(R,{label:_.city,required:k.city,className:"account-edit-company-profile-form__field",error:n[m.city]&&f[m.city]?f[m.city]:void 0,children:t(L,{name:T.city,type:"text",value:u.city,onBlur:D(m.city),...C})}),t(R,{label:_.country,required:!0,className:"account-edit-company-profile-form__field",error:n[m.countryCode]&&f[m.countryCode]?f[m.countryCode]:void 0,children:t(ce,{name:T.countryCode,floatingLabel:`${_.country} *`,placeholder:_.country,options:A,value:u.countryCode,handleSelect:w=>{const P=w.target;o(m.countryCode)(P.value)},onBlur:()=>r(m.countryCode),disabled:!!a||e})}),t(R,{label:_.stateProvince,required:p,className:"account-edit-company-profile-form__field",error:n["legalAddress.region"]&&f["legalAddress.region"]?f["legalAddress.region"]:void 0,children:l?t(ce,{name:"legalAddress_region",floatingLabel:`${_.stateProvince} ${p?"*":""}`,placeholder:_.stateProvince,options:y,value:u.regionCode&&((z=y.find(w=>w.value.split(",")[0]===u.regionCode))==null?void 0:z.value)||"",handleSelect:w=>{var S;const P=w.target,[O]=P.value.split(","),F=((S=y.find(W=>W.value===P.value))==null?void 0:S.text)||"";o(m.region)(F),o(m.regionCode)(O)},onBlur:()=>r(m.region),disabled:!!a||e},`region_picker_${u.countryCode}`):t(L,{name:T.region,type:"text",value:u.region,onBlur:D(m.region),...C,disabled:!!a||e},`region_input_${u.countryCode}`)}),t(R,{label:_.zipPostalCode,required:k.postcode,className:"account-edit-company-profile-form__field",error:n[m.postcode]&&f[m.postcode]?f[m.postcode]:void 0,children:t(L,{name:T.postcode,type:"text",value:u.postcode,onBlur:D(m.postcode),...C})}),t(R,{label:_.phoneNumber,required:k.telephone,className:"account-edit-company-profile-form__field",error:n[m.telephone]&&f[m.telephone]?f[m.telephone]:void 0,children:t(L,{name:T.telephone,type:"tel",value:u.telephone,onBlur:D(m.telephone),...C})})]})},Me=({inLineAlertProps:a,company:e,loading:u=!1,onSubmit:f,onCancel:n})=>{var S,W,q,Y,h,B,Z,ee,te,ae,re,se,le,ne;const o=H({title:"Company.EditCompanyProfile.title",cancel:"Company.shared.buttons.cancel",save:"Company.shared.buttons.save",saving:"Company.shared.buttons.saving",required:"Company.shared.validation.required",invalidEmail:"Company.shared.validation.invalidEmail",companyNameRequired:"Company.shared.validation.companyNameRequired",emailRequired:"Company.shared.validation.emailRequired",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyNameLengthError:"Company.shared.validation.companyNameLengthError",legalNameLengthError:"Company.shared.validation.legalNameLengthError",vatTaxIdLengthError:"Company.shared.validation.vatTaxIdLengthError",resellerIdLengthError:"Company.shared.validation.resellerIdLengthError"}),[r,A]=V({name:(e==null?void 0:e.name)||"",email:(e==null?void 0:e.email)||"",legalName:(e==null?void 0:e.legalName)||"",vatTaxId:(e==null?void 0:e.vatTaxId)||"",resellerId:(e==null?void 0:e.resellerId)||"",legalAddress:{street:((W=(S=e==null?void 0:e.legalAddress)==null?void 0:S.street)==null?void 0:W[0])||"",street2:((Y=(q=e==null?void 0:e.legalAddress)==null?void 0:q.street)==null?void 0:Y[1])||"",city:((h=e==null?void 0:e.legalAddress)==null?void 0:h.city)||"",region:((Z=(B=e==null?void 0:e.legalAddress)==null?void 0:B.region)==null?void 0:Z.region)||"",regionCode:((te=(ee=e==null?void 0:e.legalAddress)==null?void 0:ee.region)==null?void 0:te.regionCode)||"",countryCode:((ae=e==null?void 0:e.legalAddress)==null?void 0:ae.countryCode)||"",postcode:((re=e==null?void 0:e.legalAddress)==null?void 0:re.postcode)||"",telephone:((se=e==null?void 0:e.legalAddress)==null?void 0:se.telephone)||""}}),[y,p]=V({}),[l,d]=V({}),v=((le=e==null?void 0:e.permissionsFlags)==null?void 0:le.canEditAccount)===!0,N=((ne=e==null?void 0:e.permissionsFlags)==null?void 0:ne.canEditAddress)===!0,{countryOptions:_,regionOptions:T,isRegionRequired:m,hasRegionOptions:k,loadingCountries:D}=we(r.legalAddress.countryCode),C=(s,i)=>s==="name"?i.trim()?i.length>40?o.companyNameLengthError:null:o.companyNameRequired:s==="email"?i.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(i)?null:o.invalidEmail:o.emailRequired:s==="legalName"?i.length>80?o.legalNameLengthError:null:s==="vatTaxId"?i.length>40?o.vatTaxIdLengthError:null:s==="resellerId"?i.length>40?o.resellerIdLengthError:null:s==="legalAddress.street"||s==="legalAddress.city"||s==="legalAddress.postcode"||s==="legalAddress.telephone"||s==="legalAddress.countryCode"?i.trim()?null:o.required:s==="legalAddress.region"&&m&&!i.trim()?o.required:null,z=()=>{var $,M;const s={};let i=!0;const x=(($=e==null?void 0:e.permissionsFlags)==null?void 0:$.canEditAccount)===!0,c=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0;if(x){const I=C("name",r.name);I&&(s.name=I,i=!1);const E=C("email",r.email);if(E&&(s.email=E,i=!1),r.legalName){const b=C("legalName",r.legalName);b&&(s.legalName=b,i=!1)}if(r.vatTaxId){const b=C("vatTaxId",r.vatTaxId);b&&(s.vatTaxId=b,i=!1)}if(r.resellerId){const b=C("resellerId",r.resellerId);b&&(s.resellerId=b,i=!1)}}if(c){const I=C("legalAddress.street",r.legalAddress.street);I&&(s["legalAddress.street"]=I,i=!1);const E=C("legalAddress.city",r.legalAddress.city);E&&(s["legalAddress.city"]=E,i=!1);const b=C("legalAddress.postcode",r.legalAddress.postcode);b&&(s["legalAddress.postcode"]=b,i=!1);const oe=C("legalAddress.telephone",r.legalAddress.telephone);oe&&(s["legalAddress.telephone"]=oe,i=!1);const ie=C("legalAddress.countryCode",r.legalAddress.countryCode);ie&&(s["legalAddress.countryCode"]=ie,i=!1);const de=C("legalAddress.region",r.legalAddress.region);de&&(s["legalAddress.region"]=de,i=!1)}return p(s),i},w=async s=>{var $,M;s.preventDefault();const i=(($=e==null?void 0:e.permissionsFlags)==null?void 0:$.canEditAccount)===!0,x=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0,c={};if(i&&(c.name=!0,c.email=!0,c.legalName=!0,c.vatTaxId=!0,c.resellerId=!0),x&&(c["legalAddress.street"]=!0,c["legalAddress.street2"]=!0,c["legalAddress.city"]=!0,c["legalAddress.region"]=!0,c["legalAddress.regionCode"]=!0,c["legalAddress.countryCode"]=!0,c["legalAddress.postcode"]=!0,c["legalAddress.telephone"]=!0),d(c),!!z()){if(i&&r.email!==(e==null?void 0:e.email)){const I=await Ae(r.email);if(!I.isValid){p(E=>({...E,email:I.error||o.emailNotAvailable}));return}}if(f){const I={};i&&(I.name=r.name,I.email=r.email,I.legalName=r.legalName,I.vatTaxId=r.vatTaxId,I.resellerId=r.resellerId),x&&(I.legalAddress={street:[r.legalAddress.street,r.legalAddress.street2].filter(Boolean),city:r.legalAddress.city,region:{region:r.legalAddress.region,regionCode:r.legalAddress.regionCode},countryCode:r.legalAddress.countryCode,postcode:r.legalAddress.postcode,telephone:r.legalAddress.telephone}),await f(I)}}},P=(s,i)=>{if(s.startsWith("legalAddress.")){const x=s.split(".")[1];x==="countryCode"?(A(c=>({...c,legalAddress:{...c.legalAddress,[x]:i,region:"",regionCode:""}})),p(c=>{const $={...c};return delete $["legalAddress.region"],delete $["legalAddress.regionCode"],$}),d(c=>{const $={...c};return delete $["legalAddress.region"],delete $["legalAddress.regionCode"],$})):A(x==="region"?c=>({...c,legalAddress:{...c.legalAddress,region:i,regionCode:k?c.legalAddress.regionCode:i}}):c=>({...c,legalAddress:{...c.legalAddress,[x]:i}}))}else A(x=>({...x,[s]:i}))},O=s=>i=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");x.has(s)&&!v||c&&!N||(P(s,i),y[s]&&p(M=>{const I={...M};return delete I[s],I}))},F=(s,i)=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");if(x.has(s)&&!v||c&&!N)return;i!==void 0&&P(s,i),d(E=>({...E,[s]:!0}));let M=i;if(M===void 0)if(s.startsWith("legalAddress.")){const E=s.split(".")[1],b=r.legalAddress[E];M=typeof b=="string"?b:""}else{const E=r[s];M=typeof E=="string"?E:""}const I=C(s,M);p(I?E=>({...E,[s]:I}):E=>{const b={...E};return delete b[s],b})};return g(Q,{variant:"secondary",className:"account-edit-company-profile",children:[t(Ee,{title:o.title,divider:!1,className:"account-edit-company-profile__title"}),a!=null&&a.text?t(be,{className:"account-edit-company-profile__notification",type:a.type,variant:"secondary",heading:a.text,icon:a.icon,"data-testid":"editCompanyInLineAlert"}):null,g("form",{className:"account-edit-company-profile-form",onSubmit:w,children:[v&&t(Pe,{loading:u,value:{name:r.name,email:r.email,legalName:r.legalName,vatTaxId:r.vatTaxId,resellerId:r.resellerId},errors:y,touched:l,onBlur:F}),N&&t(Fe,{loading:u,loadingCountries:D,value:r.legalAddress,errors:y,touched:l,onChange:O,onBlur:F,countryOptions:_,regionOptions:T,isRegionRequired:m,hasRegionOptions:k}),g("div",{className:"account-edit-company-profile__actions",children:[t(X,{disabled:u,type:"button",variant:"secondary",onClick:()=>n==null?void 0:n(),children:o.cancel}),t(X,{disabled:u||!v&&!N,type:"submit",variant:"primary",children:o.save})]})]}),u&&g("div",{className:"account-edit-company-profile__loading-overlay","data-testid":"editCompanyLoadingOverlay",children:[t(xe,{size:"large"}),t("div",{className:"account-edit-company-profile__loading-text",children:o.saving})]})]})},Qe=({className:a,slots:e})=>{const{inLineAlertProps:u,handleSetInLineAlert:f}=Ne(),n=J(null),{company:o,loading:r,saving:A,showEditForm:y,handleShowEditForm:p,handleHideEditForm:l,handleUpdateCompany:d}=Te({handleSetInLineAlert:f,editFormRef:n});return r?t("div",{"data-testid":"companyProfileLoader",children:t(Ie,{withCard:!0})}):g("div",{className:me(["account-company-profile",a]),children:[t($e,{company:o,slots:e,showEditForm:y,handleShowEditForm:p}),y?t("div",{ref:n,children:t(Me,{inLineAlertProps:u,company:o,loading:A,onSubmit:d,onCancel:l})}):null]})};export{Qe as CompanyProfile,Qe as default};
3
+ import{jsx as t,jsxs as g,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as pe,classes as me}from"@dropins/tools/lib.js";import{useState as V,useRef as J,useEffect as j,useCallback as U,useMemo as G}from"@dropins/tools/preact-hooks.js";import{events as ge}from"@dropins/tools/event-bus.js";import{p as he,E as fe}from"../chunks/acdl.js";import{u as ye}from"../chunks/useCompanyContextListener.js";import{g as ve,u as Ce}from"../chunks/updateCompany.js";import{g as ue,v as Ae}from"../chunks/validateCompanyEmail.js";import{useText as H}from"@dropins/tools/i18n.js";import{u as Ne}from"../chunks/useInLineAlert.js";import{c as Ie}from"../chunks/CompanyLoaders.js";import{Card as Q,IllustratedMessage as _e,Button as X,Field as R,Input as L,Picker as ce,Header as Ee,InLineAlert as be,ProgressSpinner as xe}from"@dropins/tools/components.js";import"../chunks/fetchUserPermissions.js";import"../chunks/company-permissions.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact-compat.js";const $e=({company:a,slots:e,showEditForm:u,handleShowEditForm:f})=>{const n=H({editButton:"Company.shared.buttons.edit",noDataMessage:"Company.CompanyProfile.companyProfileCard.noDataMessage",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",legalAddress:"Company.shared.fields.legalAddress",contacts:"Company.CompanyProfile.companyProfileCard.contacts",companyAdministrator:"Company.CompanyProfile.companyProfileCard.companyAdministrator",salesRepresentative:"Company.CompanyProfile.companyProfileCard.salesRepresentative",paymentInformation:"Company.CompanyProfile.companyProfileCard.paymentInformation",shippingInformation:"Company.CompanyProfile.companyProfileCard.shippingInformation",availablePaymentMethods:"Company.CompanyProfile.companyProfileCard.availablePaymentMethods",availableShippingMethods:"Company.CompanyProfile.companyProfileCard.availableShippingMethods",noPaymentMethods:"Company.CompanyProfile.companyProfileCard.noPaymentMethods",noShippingMethods:"Company.CompanyProfile.companyProfileCard.noShippingMethods"});if(!a)return t(Q,{variant:"secondary",className:"account-company-profile-card",children:t("div",{className:"account-company-profile-card__wrapper",children:t("div",{className:"account-company-profile-card__content",children:t("div",{className:"account-company-profile-card__no-data",children:t(_e,{message:t("p",{children:n.noDataMessage})})})})})});const o=a.permissionsFlags||{canViewAccount:!0,canViewAddress:!0,canViewContacts:!0,canViewPaymentInformation:!0,canViewShippingInformation:!0},r=[o.canViewAccount?{name:"name",label:n.companyName,value:a.name||"",legalName:a.legalName||""}:null,o.canViewAccount?{name:"email",label:n.email,value:a.email||""}:null,o.canViewAccount?{name:"vatTaxId",label:n.vatTaxId,value:a.vatTaxId||""}:null,o.canViewAccount?{name:"resellerId",label:n.resellerId,value:a.resellerId||""}:null].filter(Boolean);return t(Q,{variant:"secondary",className:me(["account-company-profile-card",["account-company-profile-card-short",u]]),children:g("div",{className:"account-company-profile-card__wrapper",children:[t("div",{className:"account-company-profile-card__actions",children:(a.canEditAccount||a.canEditAddress)&&t(X,{type:"button",variant:"tertiary",onClick:f,children:n.editButton})}),t("div",{className:"account-company-profile-card__content",children:(()=>{var y,p;const A=g(K,{children:[r.map((l,d)=>{if(!l.value)return null;let v;return l.name==="name"&&l.legalName?v=`${l.label}: ${l.value} (${l.legalName})`:v=l.label?`${l.label}: ${l.value}`:l.value,t("p",{"data-testid":`${l.name}_${d}`,children:v},`${l.name}_${d}`)}),o.canViewAddress&&a.legalAddress&&g("div",{className:"company-legal-address",children:[t("p",{children:g("strong",{children:[n.legalAddress,":"]})}),(y=a.legalAddress.street)==null?void 0:y.map((l,d)=>t("p",{children:l},d)),g("p",{children:[a.legalAddress.city,", ",(p=a.legalAddress.region)==null?void 0:p.region," ",a.legalAddress.postcode]}),t("p",{children:a.legalAddress.countryCode}),a.legalAddress.telephone&&g("p",{children:["Phone: ",a.legalAddress.telephone]})]}),o.canViewContacts&&(a.companyAdmin||a.salesRepresentative)&&g("div",{className:"company-contacts",children:[t("p",{children:g("strong",{children:[n.contacts,":"]})}),a.companyAdmin&&g("div",{className:"company-contact",children:[t("p",{children:g("strong",{children:[n.companyAdministrator,":"]})}),g("p",{children:[a.companyAdmin.firstname," ",a.companyAdmin.lastname]}),a.companyAdmin.jobTitle&&t("p",{children:a.companyAdmin.jobTitle}),t("p",{children:a.companyAdmin.email})]}),a.salesRepresentative&&g("div",{className:"company-contact",children:[t("p",{children:g("strong",{children:[n.salesRepresentative,":"]})}),g("p",{children:[a.salesRepresentative.firstname," ",a.salesRepresentative.lastname]}),t("p",{children:a.salesRepresentative.email})]})]}),o.canViewPaymentInformation&&g("div",{className:"company-payment-methods",children:[t("p",{children:g("strong",{children:[n.paymentInformation,":"]})}),a.availablePaymentMethods&&a.availablePaymentMethods.length>0?g(K,{children:[t("p",{children:g("strong",{children:[n.availablePaymentMethods,":"]})}),t("ul",{className:"payment-methods-list",children:a.availablePaymentMethods.map((l,d)=>t("li",{children:l.title},`payment_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:n.noPaymentMethods})})]}),o.canViewShippingInformation&&g("div",{className:"company-shipping-methods",children:[t("p",{children:g("strong",{children:[n.shippingInformation,":"]})}),a.availableShippingMethods&&a.availableShippingMethods.length>0?g(K,{children:[t("p",{children:g("strong",{children:[n.availableShippingMethods,":"]})}),t("ul",{className:"shipping-methods-list",children:a.availableShippingMethods.map((l,d)=>t("li",{children:l.title},`shipping_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:n.noShippingMethods})})]})]});return e!=null&&e.CompanyData?t(pe,{name:"CompanyData",slot:e.CompanyData,context:{companyData:r,Default:A}}):A})()})]})})},Te=({handleSetInLineAlert:a,editFormRef:e})=>{const u=H({companySuccess:"Company.CompanyProfile.editCompanyProfile.companySuccess",companyError:"Company.CompanyProfile.editCompanyProfile.companyError",loadError:"Company.CompanyProfile.messages.loadError",updateError:"Company.CompanyProfile.messages.updateError",noDataToUpdate:"Company.CompanyProfile.messages.noDataToUpdate"}),{companySuccess:f,companyError:n,loadError:o,updateError:r,noDataToUpdate:A}=u,[y,p]=V(null),[l,d]=V(!0),[v,N]=V(!1),[_,T]=V(!1),[m,k]=V([]),[D,C]=V({}),z=J(a),w=J(!1),P=J(!1);j(()=>{z.current=a},[a]);const O=U(h=>{C(h)},[]),F=U((h,B)=>{a&&(h==="success"?a({type:"success",text:B??f}):h==="error"?a({type:"error",text:B??n}):a(),N(!1))},[a,f,n]),S=U(async()=>{if(w.current)return null;w.current=!0,d(!0);try{const h=await ve();return h&&p(h),d(!1),h}catch(h){return console.error("Failed to load company:",h),d(!1),z.current&&z.current({type:"error",text:o}),null}finally{w.current=!1}},[o]);j(()=>{P.current||(P.current=!0,S())},[S]),ye(U(()=>{d(!0),T(!1),C({}),S()},[S])),j(()=>{ue().then(h=>{k(h.availableCountries)}).catch(h=>{console.error("Failed to load countries:",h)})},[]);const W=U(()=>{T(!0),F("success",""),C({})},[F]);j(()=>{_&&(e!=null&&e.current)&&setTimeout(()=>{var h;(h=e.current)==null||h.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)},[_,e]);const q=U(h=>{h==null||h(),T(!1),C({})},[]),Y=U(async h=>{try{if(N(!0),!h){F("error",A);return}const B=await Ce(h);p(B),T(!1),C({}),F("success"),he(fe.EDIT_COMPANY_EVENT,{...h,companyId:y==null?void 0:y.id}),ge.emit("company/updated",{company:B})}catch(B){console.error("Failed to update company:",B),F("error",B.message||r)}finally{N(!1)}},[y,F,r,A]);return{company:y,countries:m,loading:l,submitLoading:v,showEditForm:_,inputChange:D,handleShowEditForm:W,handleHideEditForm:q,handleUpdateCompany:Y,handleInputChange:O,renderAlertMessage:F,saving:v}},we=a=>{const[e,u]=V(null),[f,n]=V(!0);j(()=>{let p=!0;return ue().then(({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:v})=>{p&&(u({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:v}),n(!1))}).catch(()=>{p&&n(!1)}),()=>{p=!1}},[]);const o=G(()=>(e==null?void 0:e.availableCountries)||[],[e]),r=G(()=>{if(!a||!e)return[];const p=e.availableCountries.find(l=>l.value===a);return!(p!=null&&p.availableRegions)||p.availableRegions.length===0?[]:p.availableRegions.map(l=>({text:l.name,value:`${l.code},${l.id}`}))},[a,e]),A=G(()=>!a||!e?!1:e.countriesWithRequiredRegion.includes(a),[a,e]),y=G(()=>r.length>0,[r]);return{countryOptions:o,regionOptions:r,isRegionRequired:A,hasRegionOptions:y,loadingCountries:f}},Pe=({loading:a,value:e,errors:u,touched:f,onBlur:n,namePrefix:o="",fieldPathPrefix:r=""})=>{const A=H({accountInformation:"Company.shared.fields.accountInformation",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId"}),y=o?`${o}_`:"",p=v=>r?`${r}.${v}`:v,l=v=>N=>{const _=N.target;n(p(v),_.value)},d={disabled:!!a,variant:"primary",size:"medium"};return g("div",{className:"account-edit-company-profile-form__group",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:A.accountInformation}),t(R,{label:A.companyName,required:!0,className:"account-edit-company-profile-form__field",error:f.name&&u.name?u.name:void 0,children:t(L,{name:`${y}name`,type:"text",value:e.name,onBlur:l("name"),...d,maxLength:40})}),t(R,{label:A.legalName,className:"account-edit-company-profile-form__field",children:t(L,{name:`${y}legalName`,type:"text",value:e.legalName,onBlur:l("legalName"),...d,maxLength:80})}),t(R,{label:A.email,required:!0,className:"account-edit-company-profile-form__field",error:f.email&&u.email?u.email:void 0,children:t(L,{name:`${y}email`,type:"email",value:e.email,onBlur:l("email"),...d})}),t(R,{label:A.vatTaxId,className:"account-edit-company-profile-form__field",children:t(L,{name:`${y}vatTaxId`,type:"text",value:e.vatTaxId,onBlur:l("vatTaxId"),...d,maxLength:40})}),t(R,{label:A.resellerId,className:"account-edit-company-profile-form__field",children:t(L,{name:`${y}resellerId`,type:"text",value:e.resellerId,onBlur:l("resellerId"),...d,maxLength:40})})]})},Fe=({loading:a,loadingCountries:e,value:u,errors:f,touched:n,onChange:o,onBlur:r,countryOptions:A,regionOptions:y,isRegionRequired:p,hasRegionOptions:l,namePrefix:d="legalAddress",fieldPathPrefix:v="legalAddress",requiredConfig:N})=>{var z;const _=H({legalAddress:"Company.shared.fields.legalAddress",streetAddress:"Company.shared.fields.streetAddress",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",zipPostalCode:"Company.shared.fields.zipPostalCode",phoneNumber:"Company.shared.fields.phoneNumber"}),T={street:`${d}_street`,street2:`${d}_street2`,city:`${d}_city`,countryCode:`${d}_countryCode`,region:`${d}_region`,postcode:`${d}_postcode`,telephone:`${d}_telephone`},m={street:`${v}.street`,street2:`${v}.street2`,city:`${v}.city`,countryCode:`${v}.countryCode`,region:`${v}.region`,regionCode:`${v}.regionCode`,postcode:`${v}.postcode`,telephone:`${v}.telephone`},k={street:(N==null?void 0:N.street)??!0,city:(N==null?void 0:N.city)??!0,postcode:(N==null?void 0:N.postcode)??!0,telephone:(N==null?void 0:N.telephone)??!0},D=w=>P=>{const O=P.target;r(w,O.value)},C={disabled:!!a,variant:"primary",size:"medium"};return g("div",{className:"account-edit-company-profile-form__section",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:_.legalAddress}),t(R,{label:_.streetAddress,required:k.street,className:"account-edit-company-profile-form__field",error:n[m.street]&&f[m.street]?f[m.street]:void 0,children:t(L,{name:T.street,type:"text",value:u.street,onBlur:D(m.street),...C})}),t(R,{label:`${_.streetAddress} 2`,className:"account-edit-company-profile-form__field",children:t(L,{name:T.street2,type:"text",value:u.street2,onBlur:D(m.street2),...C})}),t(R,{label:_.city,required:k.city,className:"account-edit-company-profile-form__field",error:n[m.city]&&f[m.city]?f[m.city]:void 0,children:t(L,{name:T.city,type:"text",value:u.city,onBlur:D(m.city),...C})}),t(R,{label:_.country,required:!0,className:"account-edit-company-profile-form__field",error:n[m.countryCode]&&f[m.countryCode]?f[m.countryCode]:void 0,children:t(ce,{name:T.countryCode,floatingLabel:`${_.country} *`,placeholder:_.country,options:A,value:u.countryCode,handleSelect:w=>{const P=w.target;o(m.countryCode)(P.value)},onBlur:()=>r(m.countryCode),disabled:!!a||e})}),t(R,{label:_.stateProvince,required:p,className:"account-edit-company-profile-form__field",error:n["legalAddress.region"]&&f["legalAddress.region"]?f["legalAddress.region"]:void 0,children:l?t(ce,{name:"legalAddress_region",floatingLabel:`${_.stateProvince} ${p?"*":""}`,placeholder:_.stateProvince,options:y,value:u.regionCode&&((z=y.find(w=>w.value.split(",")[0]===u.regionCode))==null?void 0:z.value)||"",handleSelect:w=>{var S;const P=w.target,[O]=P.value.split(","),F=((S=y.find(W=>W.value===P.value))==null?void 0:S.text)||"";o(m.region)(F),o(m.regionCode)(O)},onBlur:()=>r(m.region),disabled:!!a||e},`region_picker_${u.countryCode}`):t(L,{name:T.region,type:"text",value:u.region,onBlur:D(m.region),...C,disabled:!!a||e},`region_input_${u.countryCode}`)}),t(R,{label:_.zipPostalCode,required:k.postcode,className:"account-edit-company-profile-form__field",error:n[m.postcode]&&f[m.postcode]?f[m.postcode]:void 0,children:t(L,{name:T.postcode,type:"text",value:u.postcode,onBlur:D(m.postcode),...C})}),t(R,{label:_.phoneNumber,required:k.telephone,className:"account-edit-company-profile-form__field",error:n[m.telephone]&&f[m.telephone]?f[m.telephone]:void 0,children:t(L,{name:T.telephone,type:"tel",value:u.telephone,onBlur:D(m.telephone),...C})})]})},Me=({inLineAlertProps:a,company:e,loading:u=!1,onSubmit:f,onCancel:n})=>{var S,W,q,Y,h,B,Z,ee,te,ae,re,se,le,ne;const o=H({title:"Company.EditCompanyProfile.title",cancel:"Company.shared.buttons.cancel",save:"Company.shared.buttons.save",saving:"Company.shared.buttons.saving",required:"Company.shared.validation.required",invalidEmail:"Company.shared.validation.invalidEmail",companyNameRequired:"Company.shared.validation.companyNameRequired",emailRequired:"Company.shared.validation.emailRequired",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyNameLengthError:"Company.shared.validation.companyNameLengthError",legalNameLengthError:"Company.shared.validation.legalNameLengthError",vatTaxIdLengthError:"Company.shared.validation.vatTaxIdLengthError",resellerIdLengthError:"Company.shared.validation.resellerIdLengthError"}),[r,A]=V({name:(e==null?void 0:e.name)||"",email:(e==null?void 0:e.email)||"",legalName:(e==null?void 0:e.legalName)||"",vatTaxId:(e==null?void 0:e.vatTaxId)||"",resellerId:(e==null?void 0:e.resellerId)||"",legalAddress:{street:((W=(S=e==null?void 0:e.legalAddress)==null?void 0:S.street)==null?void 0:W[0])||"",street2:((Y=(q=e==null?void 0:e.legalAddress)==null?void 0:q.street)==null?void 0:Y[1])||"",city:((h=e==null?void 0:e.legalAddress)==null?void 0:h.city)||"",region:((Z=(B=e==null?void 0:e.legalAddress)==null?void 0:B.region)==null?void 0:Z.region)||"",regionCode:((te=(ee=e==null?void 0:e.legalAddress)==null?void 0:ee.region)==null?void 0:te.regionCode)||"",countryCode:((ae=e==null?void 0:e.legalAddress)==null?void 0:ae.countryCode)||"",postcode:((re=e==null?void 0:e.legalAddress)==null?void 0:re.postcode)||"",telephone:((se=e==null?void 0:e.legalAddress)==null?void 0:se.telephone)||""}}),[y,p]=V({}),[l,d]=V({}),v=((le=e==null?void 0:e.permissionsFlags)==null?void 0:le.canEditAccount)===!0,N=((ne=e==null?void 0:e.permissionsFlags)==null?void 0:ne.canEditAddress)===!0,{countryOptions:_,regionOptions:T,isRegionRequired:m,hasRegionOptions:k,loadingCountries:D}=we(r.legalAddress.countryCode),C=(s,i)=>s==="name"?i.trim()?i.length>40?o.companyNameLengthError:null:o.companyNameRequired:s==="email"?i.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(i)?null:o.invalidEmail:o.emailRequired:s==="legalName"?i.length>80?o.legalNameLengthError:null:s==="vatTaxId"?i.length>40?o.vatTaxIdLengthError:null:s==="resellerId"?i.length>40?o.resellerIdLengthError:null:s==="legalAddress.street"||s==="legalAddress.city"||s==="legalAddress.postcode"||s==="legalAddress.telephone"||s==="legalAddress.countryCode"?i.trim()?null:o.required:s==="legalAddress.region"&&m&&!i.trim()?o.required:null,z=()=>{var $,M;const s={};let i=!0;const x=(($=e==null?void 0:e.permissionsFlags)==null?void 0:$.canEditAccount)===!0,c=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0;if(x){const I=C("name",r.name);I&&(s.name=I,i=!1);const E=C("email",r.email);if(E&&(s.email=E,i=!1),r.legalName){const b=C("legalName",r.legalName);b&&(s.legalName=b,i=!1)}if(r.vatTaxId){const b=C("vatTaxId",r.vatTaxId);b&&(s.vatTaxId=b,i=!1)}if(r.resellerId){const b=C("resellerId",r.resellerId);b&&(s.resellerId=b,i=!1)}}if(c){const I=C("legalAddress.street",r.legalAddress.street);I&&(s["legalAddress.street"]=I,i=!1);const E=C("legalAddress.city",r.legalAddress.city);E&&(s["legalAddress.city"]=E,i=!1);const b=C("legalAddress.postcode",r.legalAddress.postcode);b&&(s["legalAddress.postcode"]=b,i=!1);const oe=C("legalAddress.telephone",r.legalAddress.telephone);oe&&(s["legalAddress.telephone"]=oe,i=!1);const ie=C("legalAddress.countryCode",r.legalAddress.countryCode);ie&&(s["legalAddress.countryCode"]=ie,i=!1);const de=C("legalAddress.region",r.legalAddress.region);de&&(s["legalAddress.region"]=de,i=!1)}return p(s),i},w=async s=>{var $,M;s.preventDefault();const i=(($=e==null?void 0:e.permissionsFlags)==null?void 0:$.canEditAccount)===!0,x=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0,c={};if(i&&(c.name=!0,c.email=!0,c.legalName=!0,c.vatTaxId=!0,c.resellerId=!0),x&&(c["legalAddress.street"]=!0,c["legalAddress.street2"]=!0,c["legalAddress.city"]=!0,c["legalAddress.region"]=!0,c["legalAddress.regionCode"]=!0,c["legalAddress.countryCode"]=!0,c["legalAddress.postcode"]=!0,c["legalAddress.telephone"]=!0),d(c),!!z()){if(i&&r.email!==(e==null?void 0:e.email)){const I=await Ae(r.email);if(!I.isValid){p(E=>({...E,email:I.error||o.emailNotAvailable}));return}}if(f){const I={};i&&(I.name=r.name,I.email=r.email,I.legalName=r.legalName,I.vatTaxId=r.vatTaxId,I.resellerId=r.resellerId),x&&(I.legalAddress={street:[r.legalAddress.street,r.legalAddress.street2].filter(Boolean),city:r.legalAddress.city,region:{region:r.legalAddress.region,regionCode:r.legalAddress.regionCode},countryCode:r.legalAddress.countryCode,postcode:r.legalAddress.postcode,telephone:r.legalAddress.telephone}),await f(I)}}},P=(s,i)=>{if(s.startsWith("legalAddress.")){const x=s.split(".")[1];x==="countryCode"?(A(c=>({...c,legalAddress:{...c.legalAddress,[x]:i,region:"",regionCode:""}})),p(c=>{const $={...c};return delete $["legalAddress.region"],delete $["legalAddress.regionCode"],$}),d(c=>{const $={...c};return delete $["legalAddress.region"],delete $["legalAddress.regionCode"],$})):A(x==="region"?c=>({...c,legalAddress:{...c.legalAddress,region:i,regionCode:k?c.legalAddress.regionCode:i}}):c=>({...c,legalAddress:{...c.legalAddress,[x]:i}}))}else A(x=>({...x,[s]:i}))},O=s=>i=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");x.has(s)&&!v||c&&!N||(P(s,i),y[s]&&p(M=>{const I={...M};return delete I[s],I}))},F=(s,i)=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");if(x.has(s)&&!v||c&&!N)return;i!==void 0&&P(s,i),d(E=>({...E,[s]:!0}));let M=i;if(M===void 0)if(s.startsWith("legalAddress.")){const E=s.split(".")[1],b=r.legalAddress[E];M=typeof b=="string"?b:""}else{const E=r[s];M=typeof E=="string"?E:""}const I=C(s,M);p(I?E=>({...E,[s]:I}):E=>{const b={...E};return delete b[s],b})};return g(Q,{variant:"secondary",className:"account-edit-company-profile",children:[t(Ee,{title:o.title,divider:!1,className:"account-edit-company-profile__title"}),a!=null&&a.text?t(be,{className:"account-edit-company-profile__notification",type:a.type,variant:"secondary",heading:a.text,icon:a.icon,"data-testid":"editCompanyInLineAlert"}):null,g("form",{className:"account-edit-company-profile-form",onSubmit:w,children:[v&&t(Pe,{loading:u,value:{name:r.name,email:r.email,legalName:r.legalName,vatTaxId:r.vatTaxId,resellerId:r.resellerId},errors:y,touched:l,onBlur:F}),N&&t(Fe,{loading:u,loadingCountries:D,value:r.legalAddress,errors:y,touched:l,onChange:O,onBlur:F,countryOptions:_,regionOptions:T,isRegionRequired:m,hasRegionOptions:k}),g("div",{className:"account-edit-company-profile__actions",children:[t(X,{disabled:u,type:"button",variant:"secondary",onClick:()=>n==null?void 0:n(),children:o.cancel}),t(X,{disabled:u||!v&&!N,type:"submit",variant:"primary",children:o.save})]})]}),u&&g("div",{className:"account-edit-company-profile__loading-overlay","data-testid":"editCompanyLoadingOverlay",children:[t(xe,{size:"large"}),t("div",{className:"account-edit-company-profile__loading-text",children:o.saving})]})]})},Qe=({className:a,slots:e})=>{const{inLineAlertProps:u,handleSetInLineAlert:f}=Ne(),n=J(null),{company:o,loading:r,saving:A,showEditForm:y,handleShowEditForm:p,handleHideEditForm:l,handleUpdateCompany:d}=Te({handleSetInLineAlert:f,editFormRef:n});return r?t("div",{"data-testid":"companyProfileLoader",children:t(Ie,{withCard:!0})}):g("div",{className:me(["account-company-profile",a]),children:[t($e,{company:o,slots:e,showEditForm:y,handleShowEditForm:p}),y?t("div",{ref:n,children:t(Me,{inLineAlertProps:u,company:o,loading:A,onSubmit:d,onCancel:l})}):null]})};export{Qe as CompanyProfile,Qe as default};
4
4
  //# sourceMappingURL=CompanyProfile.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as r,jsxs as w}from"@dropins/tools/preact-jsx-runtime.js";import{useState as f,useRef as z,useMemo as D,useCallback as u,useEffect as V}from"@dropins/tools/preact-hooks.js";import{Button as F,InLineAlert as K,ActionButton as $,Pagination as J,Picker as Q,Modal as j}from"@dropins/tools/components.js";import{u as W,T as X}from"../chunks/useUserPermissions.js";import{C as q}from"../chunks/CompanyUserForm.js";import{classes as Y}from"@dropins/tools/lib.js";import{u as ee}from"../chunks/useCustomerCompanyInfo.js";import"@dropins/tools/event-bus.js";import{u as Z}from"../chunks/useInLineAlert.js";import{g as ae,d as te}from"../chunks/getCompanyUsers.js";import{useText as H}from"@dropins/tools/i18n.js";import{u as ne}from"../chunks/updateCompanyUserStatus.js";import{f as se}from"../chunks/fetchUserPermissions.js";import{u as re}from"../chunks/useCompanyContextListener.js";import"@dropins/tools/preact.js";import"../chunks/company-permissions.js";import"@dropins/tools/preact-compat.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/fetch-error.js";import"../chunks/CompanyLoaders.js";import"../chunks/getCustomerCompany.js";const oe=s=>{try{return atob(s)}catch{return s}},ie=s=>!s||typeof s!="string"?s:oe(s),ce=(s,l)=>!s||typeof s!="string"?"":s==="ACTIVE"&&l.statusActive?l.statusActive:s==="INACTIVE"&&l.statusInactive?l.statusInactive:s.charAt(0).toUpperCase()+s.slice(1).toLowerCase(),le=(s,l)=>{const m=(s==null?void 0:s.trim())||"",p=(l==null?void 0:l.trim())||"";return`${m} ${p}`.trim()},me=({filterType:s,onFilterChange:l,translations:m})=>{const p=[{type:"all",label:m.showAllUsers,ariaLabel:m.showAllUsers},{type:"active",label:m.showActiveUsers,ariaLabel:m.showActiveUsers},{type:"inactive",label:m.showInactiveUsers,ariaLabel:m.showInactiveUsers}];return r("div",{className:"filterButtons",role:"group","aria-label":m.ariaFilterOptions,children:p.filter(n=>n.type!==s).map(n=>r(F,{variant:"tertiary",onClick:()=>l(n.type),"aria-label":n.ariaLabel,children:n.label},n.type))})},pe=10,G=1,de=({translations:s})=>{const[l,m]=f([]),[p,n]=f(!1),[o,U]=f(G),[g,N]=f(pe),[A,P]=f("all"),[S,b]=f(0),[c,I]=f(1),[L,x]=f(""),[v,T]=f(null),t=z(s);t.current=s;const d=D(()=>{switch(A){case"active":return{status:"ACTIVE"};case"inactive":return{status:"INACTIVE"};default:return}},[A]),y=u(async()=>{n(!0);try{const a=await ae({pageSize:g,currentPage:o,filter:d});m(a.users),b(a.totalCount||a.users.length),I(a.pageInfo.totalPages),x(t.current.ariaDataLoaded.replace("{count}",a.users.length.toString()))}catch{m([]),b(0),I(1),x(t.current.ariaDataError)}finally{n(!1)}},[g,o,d]),h=u(async()=>{try{const{allowedIds:a}=await se();T(a)}catch{T(new Set)}},[]);V(()=>{y()},[y]),V(()=>{h()},[h]);const M=u(a=>{P(a),U(G)},[]),E=u(a=>{let _;if(typeof a=="string")_=a;else if("target"in a&&a.target&&"value"in a.target)_=a.target.value;else return;const R=parseInt(_,10);isNaN(R)||(N(R),U(G))},[]),B=u(()=>{o>1&&U(o-1)},[o]),k=u(()=>{o<c&&U(o+1)},[o,c]),i=u(a=>{a>=1&&a<=c&&U(a)},[c]),e=(v==null?void 0:v.has("Magento_Company::users_edit"))||!1,C=u(async()=>{await h(),await y()},[h,y]);return{users:l,userPermissions:v,currentPage:o,pageSize:g,totalItems:S,totalPages:c,filterType:A,filter:d,loading:p,announcement:L,canEditUsers:e,handleFilterChange:M,handlePageSizeChange:E,handlePreviousPage:B,handleNextPage:k,handlePageChange:i,refreshUsers:C}},O=s=>{const[l,m]=f(!1),[p,n]=f(null),o=u(g=>{g&&n(g),m(!0)},[]),U=u(()=>{m(!1),n(null),s==null||s()},[s]);return{isOpen:l,selectedId:p,open:o,close:U}},ue=({className:s,userId:l,userStatus:m,onClose:p,isOpen:n=!1,onSuccess:o,...U})=>{const[g,N]=f(!1),[A,P]=f(!1),{inLineAlertProps:S,showError:b,clearAlert:c}=Z(),{companyInfo:I}=ee(),L=z(null),x=z(null),v=`modal-title-${l}`,T=`modal-desc-${l}`,t=H({title:"Company.CompanyUsers.managementModal.title",setActiveText:"Company.CompanyUsers.managementModal.setActiveText",setInactiveText:"Company.CompanyUsers.managementModal.setInactiveText",deleteText:"Company.CompanyUsers.managementModal.deleteText",setActiveButton:"Company.CompanyUsers.managementModal.setActiveButton",setInactiveButton:"Company.CompanyUsers.managementModal.setInactiveButton",settingActiveButton:"Company.CompanyUsers.managementModal.settingActiveButton",settingInactiveButton:"Company.CompanyUsers.managementModal.settingInactiveButton",deleteButton:"Company.CompanyUsers.managementModal.deleteButton",deletingButton:"Company.CompanyUsers.managementModal.deletingButton",cancelButton:"Company.CompanyUsers.managementModal.cancelButton",setActiveErrorGeneric:"Company.CompanyUsers.managementModal.setActiveErrorGeneric",setActiveErrorSpecific:"Company.CompanyUsers.managementModal.setActiveErrorSpecific",setInactiveErrorGeneric:"Company.CompanyUsers.managementModal.setInactiveErrorGeneric",setInactiveErrorSpecific:"Company.CompanyUsers.managementModal.setInactiveErrorSpecific",deleteErrorGeneric:"Company.CompanyUsers.managementModal.deleteErrorGeneric",deleteErrorSpecific:"Company.CompanyUsers.managementModal.deleteErrorSpecific",setActiveSuccess:"Company.CompanyUsers.managementModal.setActiveSuccess",setInactiveSuccess:"Company.CompanyUsers.managementModal.setInactiveSuccess",deleteSuccess:"Company.CompanyUsers.managementModal.deleteSuccess",ariaCloseModal:"Company.CompanyUsers.managementModal.ariaLabels.closeModal",ariaModalDescription:"Company.CompanyUsers.managementModal.ariaLabels.modalDescription"}),d=u(i=>{const e=(I==null?void 0:I.companyName)||"";return i.replace(/%1/g,e)},[I==null?void 0:I.companyName]),y=u(async()=>{if(A)return;const i=m==="ACTIVE"?"INACTIVE":"ACTIVE",e=i==="ACTIVE";P(!0),c();try{if((await ne({id:l,status:i})).success){const a=e?t.setActiveSuccess:t.setInactiveSuccess;o&&o(a),p()}else{const a=e?t.setActiveErrorSpecific:t.setInactiveErrorSpecific;b(d(a))}}catch(C){const a=C instanceof Error?C.message:e?t.setActiveErrorGeneric:t.setInactiveErrorGeneric;b(d(a))}finally{P(!1)}},[l,m,p,A,c,b,d,t.setActiveErrorSpecific,t.setInactiveErrorSpecific,t.setActiveErrorGeneric,t.setInactiveErrorGeneric,t.setActiveSuccess,t.setInactiveSuccess,o]),h=u(async()=>{if(!g){N(!0),c();try{(await te({id:l})).success?(o&&o(t.deleteSuccess),p()):b(d(t.deleteErrorSpecific))}catch(i){const e=i instanceof Error?i.message:t.deleteErrorGeneric;b(d(e))}finally{N(!1)}}},[l,p,g,c,b,d,t.deleteErrorSpecific,t.deleteErrorGeneric,t.deleteSuccess,o]),M=u(()=>{c(),p()},[p,c]),E=u(i=>{if(i.key==="Escape"&&(c(),p()),i.key==="Tab"){const e=L.current;if(!e)return;const C=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),a=C[0],_=C[C.length-1];i.shiftKey?document.activeElement===a&&(_.focus(),i.preventDefault()):document.activeElement===_&&(a.focus(),i.preventDefault())}},[p,c]),B=u(i=>{i.target===i.currentTarget&&(c(),p())},[p,c]),k=u(()=>{c(),p()},[p,c]);return V(()=>{if(n)return x.current=document.activeElement,document.addEventListener("keydown",E),setTimeout(()=>{const i=L.current;if(i){const e=i.querySelector("button");e?e.focus():i.focus()}},100),()=>{document.removeEventListener("keydown",E)};x.current&&x.current.focus()},[n,E]),n?r("div",{className:Y(["company-management-company-users-management-modal-overlay",s]),onClick:B,...U,children:w("div",{ref:L,className:"company-management-company-users-management-modal",role:"dialog","aria-modal":"true","aria-labelledby":v,"aria-describedby":T,tabIndex:-1,children:[w("div",{className:"company-management-company-users-management-modal__header",children:[r("h2",{id:v,className:"company-management-company-users-management-modal__title",children:t.title}),r("button",{className:"company-management-company-users-management-modal__close",onClick:k,"aria-label":t.ariaCloseModal,children:"×"})]}),w("div",{id:T,className:"company-management-company-users-management-modal__content",children:[r("p",{className:"company-management-company-users-management-modal__text",children:m==="ACTIVE"?t.setInactiveText:t.setActiveText}),r("p",{className:"company-management-company-users-management-modal__text",children:t.deleteText})]}),(S==null?void 0:S.text)&&r("div",{className:"company-management-company-users-management-modal__alert",role:"alert","aria-live":"assertive",children:r(K,{type:"error",heading:S.text,icon:S.icon,"data-testid":"companyUsersManagementModalAlert"})}),w("div",{className:"company-management-company-users-management-modal__actions",children:[r(F,{variant:"primary",onClick:y,disabled:A,className:"company-management-company-users-management-modal__button-primary",children:A?m==="ACTIVE"?t.settingInactiveButton:t.settingActiveButton:m==="ACTIVE"?t.setInactiveButton:t.setActiveButton}),r(F,{variant:"tertiary",onClick:h,disabled:g,className:"company-management-company-users-management-modal__button-delete",children:g?t.deletingButton:t.deleteButton}),r(F,{variant:"secondary",onClick:M,className:"company-management-company-users-management-modal__button-cancel",children:t.cancelButton})]})]})}):null},ye=[{text:"10",value:"10"},{text:"20",value:"20"},{text:"50",value:"50"},{text:"100",value:"100"}],Ge=({children:s,className:l,...m})=>{const{permissions:p}=W(),n=H({showAllUsers:"Company.CompanyUsers.filters.showAll",showActiveUsers:"Company.CompanyUsers.filters.showActive",showInactiveUsers:"Company.CompanyUsers.filters.showInactive",idColumn:"Company.CompanyUsers.columns.id",nameColumn:"Company.CompanyUsers.columns.name",emailColumn:"Company.CompanyUsers.columns.email",roleColumn:"Company.CompanyUsers.columns.role",teamColumn:"Company.CompanyUsers.columns.team",statusColumn:"Company.CompanyUsers.columns.status",actionsColumn:"Company.CompanyUsers.columns.actions",statusActive:"Company.CompanyUsers.status.active",statusInactive:"Company.CompanyUsers.status.inactive",emptyTeam:"Company.CompanyUsers.emptyTeam",emptyActions:"Company.CompanyUsers.emptyActions",itemsRange:"Company.CompanyUsers.pagination.itemsRange",itemsPerPageLabel:"Company.CompanyUsers.pagination.itemsPerPage",showLabel:"Company.CompanyUsers.pagination.show",previousPage:"Company.CompanyUsers.pagination.previous",nextPage:"Company.CompanyUsers.pagination.next",pageInfo:"Company.CompanyUsers.pagination.pageInfo",ariaUsersTable:"Company.CompanyUsers.ariaLabels.usersTable",ariaFilterOptions:"Company.CompanyUsers.ariaLabels.filterOptions",ariaPaginationNav:"Company.CompanyUsers.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyUsers.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyUsers.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyUsers.ariaLabels.nextPageFull",ariaCurrentPage:"Company.CompanyUsers.ariaLabels.currentPage",ariaShowingUsers:"Company.CompanyUsers.ariaLabels.showingUsers",ariaDataLoaded:"Company.CompanyUsers.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyUsers.ariaLabels.dataError",ariaPageNavigation:"Company.CompanyUsers.ariaLabels.pageNavigation",manageUser:"Company.CompanyUsers.actions.manage",editUser:"Company.CompanyUsers.actions.edit",ariaManageUser:"Company.CompanyUsers.ariaLabels.manageUser",ariaEditUser:"Company.CompanyUsers.ariaLabels.editUser",addNewUser:"Company.CompanyUsers.actions.addNewUser",noUsersFound:"Company.CompanyUsers.noUsersFound"}),{users:o,loading:U,currentPage:g,pageSize:N,filterType:A,totalItems:P,totalPages:S,announcement:b,canEditUsers:c,handleFilterChange:I,handlePageSizeChange:L,handlePageChange:x,refreshUsers:v}=de({translations:{ariaDataLoaded:n.ariaDataLoaded,ariaDataError:n.ariaDataError}}),T=z(n);T.current=n;const t=u(()=>{v()},[v]);re(t);const d=O(v),y=O(v),h=O(v),{inLineAlertProps:M,handleSetInLineAlert:E}=Z(),B=D(()=>{const e=T.current;return[{key:"id",label:e.idColumn},{key:"name",label:e.nameColumn},{key:"email",label:e.emailColumn},{key:"role",label:e.roleColumn},{key:"team",label:e.teamColumn},{key:"status",label:e.statusColumn},{key:"actions",label:e.actionsColumn}]},[]),k=D(()=>o.map(e=>{const C=le(e.firstName,e.lastName),a=T.current;return{id:ie(e.id),name:C,email:e.email,role:e.role,team:e.team||a.emptyTeam,status:ce(e.status,a),actions:c?w("div",{className:"user-actions",children:[r($,{onClick:()=>y.open(e.id),"aria-label":a.ariaEditUser.replace("{name}",C),className:"edit-user-button",children:a.editUser}),r($,{onClick:()=>d.open(e.id),"aria-label":a.ariaManageUser.replace("{name}",C),className:"manage-user-button",children:a.manageUser})]}):r("span",{className:"no-actions",children:a.emptyActions})}}),[o,c,y,d]),i=D(()=>o.find(e=>e.id===d.selectedId),[o,d.selectedId]);return w("section",{className:l,...m,children:[r("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:b}),r(me,{filterType:A,onFilterChange:I,translations:{showAllUsers:n.showAllUsers,showActiveUsers:n.showActiveUsers,showInactiveUsers:n.showInactiveUsers,ariaFilterOptions:n.ariaFilterOptions}}),M&&M.text?r(K,{className:"company-users__alert",type:M.type||"success",variant:"secondary",heading:M.text,icon:M.icon}):null,w("div",{"aria-busy":U,children:[r(X,{className:"companyUsersTable",columns:B,rowData:k,mobileLayout:"stacked",loading:U,"aria-label":n.ariaUsersTable,summary:n.ariaShowingUsers.replace("{count}",o.length.toString())}),!U&&o.length===0&&r("div",{className:"companyUsersTable__empty",children:n.noUsersFound})]}),o.length>0&&w("nav",{"aria-label":n.ariaPaginationNav,className:"paginationContainer",children:[r("div",{"aria-live":"polite","aria-atomic":"true",children:(()=>{const e=P===0?0:(g-1)*N+1,C=Math.min(g*N,P);return n.itemsRange.replace("{start}",e.toString()).replace("{end}",C.toString()).replace("{total}",P.toString())})()}),S>1&&r(J,{currentPage:g,totalPages:S,onChange:x,className:"paginationButtons"}),w("div",{className:"pageSizeSelector",children:[r("label",{htmlFor:"page-size-select",id:"page-size-label",children:r("span",{children:n.showLabel})}),r(Q,{id:"page-size-select",name:"pageSize",value:N.toString(),options:ye,onChange:L,"aria-labelledby":"page-size-label","aria-label":n.ariaPageSizeSelector||n.itemsPerPageLabel||"Items per page"})]})]}),c&&r("div",{className:"addUserButtonContainer",children:r(F,{variant:"primary",onClick:()=>h.open(),"aria-label":n.addNewUser,children:n.addNewUser})}),s,h.isOpen&&c&&r(j,{open:h.isOpen,onClose:h.close,size:"medium",children:r(q,{mode:"add",entityId:void 0,parentStructureId:void 0,permissions:p,onSaved:h.close,onCancel:h.close,onError:e=>{E({text:e,type:"error"})},onSuccess:e=>{E({text:e,type:"success"})}})}),y.selectedId&&y.isOpen&&c&&r(j,{open:y.isOpen,onClose:y.close,size:"medium",children:r(q,{mode:"edit",entityId:y.selectedId,parentStructureId:void 0,permissions:p,onSaved:y.close,onCancel:y.close,onError:e=>{E({text:e,type:"error"})},onSuccess:e=>{E({text:e,type:"success"})}})}),d.selectedId&&c&&i&&r(ue,{isOpen:d.isOpen,userId:d.selectedId,userStatus:i.status||"ACTIVE",onClose:d.close,onSuccess:e=>{E({text:e,type:"success"})}})]})};export{Ge as CompanyUsers,Ge as default};
3
+ import{jsx as r,jsxs as w}from"@dropins/tools/preact-jsx-runtime.js";import{useState as f,useRef as z,useMemo as D,useCallback as u,useEffect as V}from"@dropins/tools/preact-hooks.js";import{Button as F,InLineAlert as K,ActionButton as $,Pagination as J,Picker as Q,Modal as j}from"@dropins/tools/components.js";import{u as W,T as X}from"../chunks/useUserPermissions.js";import{C as q}from"../chunks/CompanyUserForm.js";import{classes as Y}from"@dropins/tools/lib.js";import{u as ee}from"../chunks/useCustomerCompanyInfo.js";import{u as Z}from"../chunks/useInLineAlert.js";import{g as ae,d as te}from"../chunks/getCompanyUsers.js";import{useText as H}from"@dropins/tools/i18n.js";import{u as ne}from"../chunks/updateCompanyUserStatus.js";import{f as se}from"../chunks/fetchUserPermissions.js";import{u as re}from"../chunks/useCompanyContextListener.js";import"@dropins/tools/preact.js";import"../chunks/company-permissions.js";import"@dropins/tools/preact-compat.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";import"../chunks/fetch-error.js";import"../chunks/CompanyLoaders.js";import"../chunks/getCustomerCompany.js";const oe=s=>{try{return atob(s)}catch{return s}},ie=s=>!s||typeof s!="string"?s:oe(s),ce=(s,l)=>!s||typeof s!="string"?"":s==="ACTIVE"&&l.statusActive?l.statusActive:s==="INACTIVE"&&l.statusInactive?l.statusInactive:s.charAt(0).toUpperCase()+s.slice(1).toLowerCase(),le=(s,l)=>{const m=(s==null?void 0:s.trim())||"",p=(l==null?void 0:l.trim())||"";return`${m} ${p}`.trim()},me=({filterType:s,onFilterChange:l,translations:m})=>{const p=[{type:"all",label:m.showAllUsers,ariaLabel:m.showAllUsers},{type:"active",label:m.showActiveUsers,ariaLabel:m.showActiveUsers},{type:"inactive",label:m.showInactiveUsers,ariaLabel:m.showInactiveUsers}];return r("div",{className:"filterButtons",role:"group","aria-label":m.ariaFilterOptions,children:p.filter(n=>n.type!==s).map(n=>r(F,{variant:"tertiary",onClick:()=>l(n.type),"aria-label":n.ariaLabel,children:n.label},n.type))})},pe=10,G=1,de=({translations:s})=>{const[l,m]=f([]),[p,n]=f(!1),[o,U]=f(G),[g,N]=f(pe),[A,P]=f("all"),[S,b]=f(0),[c,I]=f(1),[L,x]=f(""),[v,T]=f(null),t=z(s);t.current=s;const d=D(()=>{switch(A){case"active":return{status:"ACTIVE"};case"inactive":return{status:"INACTIVE"};default:return}},[A]),y=u(async()=>{n(!0);try{const a=await ae({pageSize:g,currentPage:o,filter:d});m(a.users),b(a.totalCount||a.users.length),I(a.pageInfo.totalPages),x(t.current.ariaDataLoaded.replace("{count}",a.users.length.toString()))}catch{m([]),b(0),I(1),x(t.current.ariaDataError)}finally{n(!1)}},[g,o,d]),h=u(async()=>{try{const{allowedIds:a}=await se();T(a)}catch{T(new Set)}},[]);V(()=>{y()},[y]),V(()=>{h()},[h]);const M=u(a=>{P(a),U(G)},[]),E=u(a=>{let _;if(typeof a=="string")_=a;else if("target"in a&&a.target&&"value"in a.target)_=a.target.value;else return;const R=parseInt(_,10);isNaN(R)||(N(R),U(G))},[]),B=u(()=>{o>1&&U(o-1)},[o]),k=u(()=>{o<c&&U(o+1)},[o,c]),i=u(a=>{a>=1&&a<=c&&U(a)},[c]),e=(v==null?void 0:v.has("Magento_Company::users_edit"))||!1,C=u(async()=>{await h(),await y()},[h,y]);return{users:l,userPermissions:v,currentPage:o,pageSize:g,totalItems:S,totalPages:c,filterType:A,filter:d,loading:p,announcement:L,canEditUsers:e,handleFilterChange:M,handlePageSizeChange:E,handlePreviousPage:B,handleNextPage:k,handlePageChange:i,refreshUsers:C}},O=s=>{const[l,m]=f(!1),[p,n]=f(null),o=u(g=>{g&&n(g),m(!0)},[]),U=u(()=>{m(!1),n(null),s==null||s()},[s]);return{isOpen:l,selectedId:p,open:o,close:U}},ue=({className:s,userId:l,userStatus:m,onClose:p,isOpen:n=!1,onSuccess:o,...U})=>{const[g,N]=f(!1),[A,P]=f(!1),{inLineAlertProps:S,showError:b,clearAlert:c}=Z(),{companyInfo:I}=ee(),L=z(null),x=z(null),v=`modal-title-${l}`,T=`modal-desc-${l}`,t=H({title:"Company.CompanyUsers.managementModal.title",setActiveText:"Company.CompanyUsers.managementModal.setActiveText",setInactiveText:"Company.CompanyUsers.managementModal.setInactiveText",deleteText:"Company.CompanyUsers.managementModal.deleteText",setActiveButton:"Company.CompanyUsers.managementModal.setActiveButton",setInactiveButton:"Company.CompanyUsers.managementModal.setInactiveButton",settingActiveButton:"Company.CompanyUsers.managementModal.settingActiveButton",settingInactiveButton:"Company.CompanyUsers.managementModal.settingInactiveButton",deleteButton:"Company.CompanyUsers.managementModal.deleteButton",deletingButton:"Company.CompanyUsers.managementModal.deletingButton",cancelButton:"Company.CompanyUsers.managementModal.cancelButton",setActiveErrorGeneric:"Company.CompanyUsers.managementModal.setActiveErrorGeneric",setActiveErrorSpecific:"Company.CompanyUsers.managementModal.setActiveErrorSpecific",setInactiveErrorGeneric:"Company.CompanyUsers.managementModal.setInactiveErrorGeneric",setInactiveErrorSpecific:"Company.CompanyUsers.managementModal.setInactiveErrorSpecific",deleteErrorGeneric:"Company.CompanyUsers.managementModal.deleteErrorGeneric",deleteErrorSpecific:"Company.CompanyUsers.managementModal.deleteErrorSpecific",setActiveSuccess:"Company.CompanyUsers.managementModal.setActiveSuccess",setInactiveSuccess:"Company.CompanyUsers.managementModal.setInactiveSuccess",deleteSuccess:"Company.CompanyUsers.managementModal.deleteSuccess",ariaCloseModal:"Company.CompanyUsers.managementModal.ariaLabels.closeModal",ariaModalDescription:"Company.CompanyUsers.managementModal.ariaLabels.modalDescription"}),d=u(i=>{const e=(I==null?void 0:I.companyName)||"";return i.replace(/%1/g,e)},[I==null?void 0:I.companyName]),y=u(async()=>{if(A)return;const i=m==="ACTIVE"?"INACTIVE":"ACTIVE",e=i==="ACTIVE";P(!0),c();try{if((await ne({id:l,status:i})).success){const a=e?t.setActiveSuccess:t.setInactiveSuccess;o&&o(a),p()}else{const a=e?t.setActiveErrorSpecific:t.setInactiveErrorSpecific;b(d(a))}}catch(C){const a=C instanceof Error?C.message:e?t.setActiveErrorGeneric:t.setInactiveErrorGeneric;b(d(a))}finally{P(!1)}},[l,m,p,A,c,b,d,t.setActiveErrorSpecific,t.setInactiveErrorSpecific,t.setActiveErrorGeneric,t.setInactiveErrorGeneric,t.setActiveSuccess,t.setInactiveSuccess,o]),h=u(async()=>{if(!g){N(!0),c();try{(await te({id:l})).success?(o&&o(t.deleteSuccess),p()):b(d(t.deleteErrorSpecific))}catch(i){const e=i instanceof Error?i.message:t.deleteErrorGeneric;b(d(e))}finally{N(!1)}}},[l,p,g,c,b,d,t.deleteErrorSpecific,t.deleteErrorGeneric,t.deleteSuccess,o]),M=u(()=>{c(),p()},[p,c]),E=u(i=>{if(i.key==="Escape"&&(c(),p()),i.key==="Tab"){const e=L.current;if(!e)return;const C=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),a=C[0],_=C[C.length-1];i.shiftKey?document.activeElement===a&&(_.focus(),i.preventDefault()):document.activeElement===_&&(a.focus(),i.preventDefault())}},[p,c]),B=u(i=>{i.target===i.currentTarget&&(c(),p())},[p,c]),k=u(()=>{c(),p()},[p,c]);return V(()=>{if(n)return x.current=document.activeElement,document.addEventListener("keydown",E),setTimeout(()=>{const i=L.current;if(i){const e=i.querySelector("button");e?e.focus():i.focus()}},100),()=>{document.removeEventListener("keydown",E)};x.current&&x.current.focus()},[n,E]),n?r("div",{className:Y(["company-management-company-users-management-modal-overlay",s]),onClick:B,...U,children:w("div",{ref:L,className:"company-management-company-users-management-modal",role:"dialog","aria-modal":"true","aria-labelledby":v,"aria-describedby":T,tabIndex:-1,children:[w("div",{className:"company-management-company-users-management-modal__header",children:[r("h2",{id:v,className:"company-management-company-users-management-modal__title",children:t.title}),r("button",{className:"company-management-company-users-management-modal__close",onClick:k,"aria-label":t.ariaCloseModal,children:"×"})]}),w("div",{id:T,className:"company-management-company-users-management-modal__content",children:[r("p",{className:"company-management-company-users-management-modal__text",children:m==="ACTIVE"?t.setInactiveText:t.setActiveText}),r("p",{className:"company-management-company-users-management-modal__text",children:t.deleteText})]}),(S==null?void 0:S.text)&&r("div",{className:"company-management-company-users-management-modal__alert",role:"alert","aria-live":"assertive",children:r(K,{type:"error",heading:S.text,icon:S.icon,"data-testid":"companyUsersManagementModalAlert"})}),w("div",{className:"company-management-company-users-management-modal__actions",children:[r(F,{variant:"primary",onClick:y,disabled:A,className:"company-management-company-users-management-modal__button-primary",children:A?m==="ACTIVE"?t.settingInactiveButton:t.settingActiveButton:m==="ACTIVE"?t.setInactiveButton:t.setActiveButton}),r(F,{variant:"tertiary",onClick:h,disabled:g,className:"company-management-company-users-management-modal__button-delete",children:g?t.deletingButton:t.deleteButton}),r(F,{variant:"secondary",onClick:M,className:"company-management-company-users-management-modal__button-cancel",children:t.cancelButton})]})]})}):null},ye=[{text:"10",value:"10"},{text:"20",value:"20"},{text:"50",value:"50"},{text:"100",value:"100"}],Ge=({children:s,className:l,...m})=>{const{permissions:p}=W(),n=H({showAllUsers:"Company.CompanyUsers.filters.showAll",showActiveUsers:"Company.CompanyUsers.filters.showActive",showInactiveUsers:"Company.CompanyUsers.filters.showInactive",idColumn:"Company.CompanyUsers.columns.id",nameColumn:"Company.CompanyUsers.columns.name",emailColumn:"Company.CompanyUsers.columns.email",roleColumn:"Company.CompanyUsers.columns.role",teamColumn:"Company.CompanyUsers.columns.team",statusColumn:"Company.CompanyUsers.columns.status",actionsColumn:"Company.CompanyUsers.columns.actions",statusActive:"Company.CompanyUsers.status.active",statusInactive:"Company.CompanyUsers.status.inactive",emptyTeam:"Company.CompanyUsers.emptyTeam",emptyActions:"Company.CompanyUsers.emptyActions",itemsRange:"Company.CompanyUsers.pagination.itemsRange",itemsPerPageLabel:"Company.CompanyUsers.pagination.itemsPerPage",showLabel:"Company.CompanyUsers.pagination.show",previousPage:"Company.CompanyUsers.pagination.previous",nextPage:"Company.CompanyUsers.pagination.next",pageInfo:"Company.CompanyUsers.pagination.pageInfo",ariaUsersTable:"Company.CompanyUsers.ariaLabels.usersTable",ariaFilterOptions:"Company.CompanyUsers.ariaLabels.filterOptions",ariaPaginationNav:"Company.CompanyUsers.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyUsers.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyUsers.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyUsers.ariaLabels.nextPageFull",ariaCurrentPage:"Company.CompanyUsers.ariaLabels.currentPage",ariaShowingUsers:"Company.CompanyUsers.ariaLabels.showingUsers",ariaDataLoaded:"Company.CompanyUsers.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyUsers.ariaLabels.dataError",ariaPageNavigation:"Company.CompanyUsers.ariaLabels.pageNavigation",manageUser:"Company.CompanyUsers.actions.manage",editUser:"Company.CompanyUsers.actions.edit",ariaManageUser:"Company.CompanyUsers.ariaLabels.manageUser",ariaEditUser:"Company.CompanyUsers.ariaLabels.editUser",addNewUser:"Company.CompanyUsers.actions.addNewUser",noUsersFound:"Company.CompanyUsers.noUsersFound"}),{users:o,loading:U,currentPage:g,pageSize:N,filterType:A,totalItems:P,totalPages:S,announcement:b,canEditUsers:c,handleFilterChange:I,handlePageSizeChange:L,handlePageChange:x,refreshUsers:v}=de({translations:{ariaDataLoaded:n.ariaDataLoaded,ariaDataError:n.ariaDataError}}),T=z(n);T.current=n;const t=u(()=>{v()},[v]);re(t);const d=O(v),y=O(v),h=O(v),{inLineAlertProps:M,handleSetInLineAlert:E}=Z(),B=D(()=>{const e=T.current;return[{key:"id",label:e.idColumn},{key:"name",label:e.nameColumn},{key:"email",label:e.emailColumn},{key:"role",label:e.roleColumn},{key:"team",label:e.teamColumn},{key:"status",label:e.statusColumn},{key:"actions",label:e.actionsColumn}]},[]),k=D(()=>o.map(e=>{const C=le(e.firstName,e.lastName),a=T.current;return{id:ie(e.id),name:C,email:e.email,role:e.role,team:e.team||a.emptyTeam,status:ce(e.status,a),actions:c?w("div",{className:"user-actions",children:[r($,{onClick:()=>y.open(e.id),"aria-label":a.ariaEditUser.replace("{name}",C),className:"edit-user-button",children:a.editUser}),r($,{onClick:()=>d.open(e.id),"aria-label":a.ariaManageUser.replace("{name}",C),className:"manage-user-button",children:a.manageUser})]}):r("span",{className:"no-actions",children:a.emptyActions})}}),[o,c,y,d]),i=D(()=>o.find(e=>e.id===d.selectedId),[o,d.selectedId]);return w("section",{className:l,...m,children:[r("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:b}),r(me,{filterType:A,onFilterChange:I,translations:{showAllUsers:n.showAllUsers,showActiveUsers:n.showActiveUsers,showInactiveUsers:n.showInactiveUsers,ariaFilterOptions:n.ariaFilterOptions}}),M&&M.text?r(K,{className:"company-users__alert",type:M.type||"success",variant:"secondary",heading:M.text,icon:M.icon}):null,w("div",{"aria-busy":U,children:[r(X,{className:"companyUsersTable",columns:B,rowData:k,mobileLayout:"stacked",loading:U,"aria-label":n.ariaUsersTable,summary:n.ariaShowingUsers.replace("{count}",o.length.toString())}),!U&&o.length===0&&r("div",{className:"companyUsersTable__empty",children:n.noUsersFound})]}),o.length>0&&w("nav",{"aria-label":n.ariaPaginationNav,className:"paginationContainer",children:[r("div",{"aria-live":"polite","aria-atomic":"true",children:(()=>{const e=P===0?0:(g-1)*N+1,C=Math.min(g*N,P);return n.itemsRange.replace("{start}",e.toString()).replace("{end}",C.toString()).replace("{total}",P.toString())})()}),S>1&&r(J,{currentPage:g,totalPages:S,onChange:x,className:"paginationButtons"}),w("div",{className:"pageSizeSelector",children:[r("label",{htmlFor:"page-size-select",id:"page-size-label",children:r("span",{children:n.showLabel})}),r(Q,{id:"page-size-select",name:"pageSize",value:N.toString(),options:ye,onChange:L,"aria-labelledby":"page-size-label","aria-label":n.ariaPageSizeSelector||n.itemsPerPageLabel||"Items per page"})]})]}),c&&r("div",{className:"addUserButtonContainer",children:r(F,{variant:"primary",onClick:()=>h.open(),"aria-label":n.addNewUser,children:n.addNewUser})}),s,h.isOpen&&c&&r(j,{open:h.isOpen,onClose:h.close,size:"medium",children:r(q,{mode:"add",entityId:void 0,parentStructureId:void 0,permissions:p,onSaved:h.close,onCancel:h.close,onError:e=>{E({text:e,type:"error"})},onSuccess:e=>{E({text:e,type:"success"})}})}),y.selectedId&&y.isOpen&&c&&r(j,{open:y.isOpen,onClose:y.close,size:"medium",children:r(q,{mode:"edit",entityId:y.selectedId,parentStructureId:void 0,permissions:p,onSaved:y.close,onCancel:y.close,onError:e=>{E({text:e,type:"error"})},onSuccess:e=>{E({text:e,type:"success"})}})}),d.selectedId&&c&&i&&r(ue,{isOpen:d.isOpen,userId:d.selectedId,userStatus:i.status||"ACTIVE",onClose:d.close,onSuccess:e=>{E({text:e,type:"success"})}})]})};export{Ge as CompanyUsers,Ge as default};
4
4
  //# sourceMappingURL=CompanyUsers.js.map
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-company-management", "version": "1.0.0", "@dropins/tools": "^1.6.0", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-company-management", "version": "1.1.0-beta1", "@dropins/tools": "^1.7.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}