@dropins/storefront-company-management 1.0.0-alpha2011 → 1.0.0-alpha2020
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/chunks/CompanyUserForm.js +1 -1
- package/chunks/CompanyUserForm.js.map +1 -1
- package/chunks/getCompanyCreditHistory.js +1 -1
- package/chunks/getCompanyCreditHistory.js.map +1 -1
- package/containers/CompanyCredit.js +1 -1
- package/containers/CompanyCredit.js.map +1 -1
- package/containers/CompanyProfile.js +1 -1
- package/containers/CompanyStructure.js +1 -1
- package/containers/CompanyUsers.js +1 -1
- package/i18n/en_US.json.d.ts +8 -9
- package/package.json +1 -1
- package/render.js +3 -3
- package/render.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as P,jsx as o}from"@dropins/tools/preact-jsx-runtime.js";import{memo as D}from"@dropins/tools/preact-compat.js";import{useState as d,useEffect as H}from"@dropins/tools/preact-hooks.js";import{Card as J,InLineAlert as K,ProgressSpinner as Q,Field as S,Input as A,Picker as z,Button as O}from"@dropins/tools/components.js";import{
|
|
3
|
+
import{jsxs as P,jsx as o}from"@dropins/tools/preact-jsx-runtime.js";import{memo as D}from"@dropins/tools/preact-compat.js";import{useState as d,useEffect as H}from"@dropins/tools/preact-hooks.js";import{Card as J,InLineAlert as K,ProgressSpinner as Q,Field as S,Input as A,Picker as z,Button as O}from"@dropins/tools/components.js";import{c as W}from"./CompanyLoaders.js";import{i as X}from"./company-permissions.js";import{g as Y,c as Z,u as ee,i as ae}from"./updateCompanyUser.js";import{useText as G}from"@dropins/tools/i18n.js";import{u as te}from"./useCompanyRoles.js";function re(q){const{mode:I,entityId:h,parentStructureId:T,onSaved:w,onError:N,onSuccess:v}=q,u=G({firstNameRequired:"Company.CompanyStructure.shared.validation.firstNameRequired",lastNameRequired:"Company.CompanyStructure.shared.validation.lastNameRequired",emailRequired:"Company.CompanyStructure.shared.validation.emailRequired",emailInvalid:"Company.CompanyStructure.shared.validation.emailInvalid",jobTitleRequired:"Company.CompanyStructure.shared.validation.jobTitleRequired",workPhoneRequired:"Company.CompanyStructure.shared.validation.workPhoneRequired",selectRole:"Company.CompanyStructure.shared.validation.selectRole",createUserError:"Company.CompanyStructure.messages.createUserError",saveUserError:"Company.CompanyStructure.messages.saveUserError",createUserSuccess:"Company.CompanyStructure.messages.createUserSuccess",updateUserSuccess:"Company.CompanyStructure.messages.updateUserSuccess"}),[r,U]=d({firstName:"",lastName:"",email:"",jobTitle:"",telephone:"",roleId:"",status:"ACTIVE"}),[x,c]=d({}),[m,p]=d({}),[V,R]=d(!1),[y,j]=d(null),[_,E]=d(null),[b,k]=d(""),[l,a]=d(""),[i,B]=d(!1);H(()=>{I!=="edit"||!h||(R(!0),Y(h).then(e=>{var f;if(!e)return;const t=e.email||"";U(g=>({...g,firstName:e.firstName||"",lastName:e.lastName||"",email:t,jobTitle:e.jobTitle||"",telephone:e.telephone||"",status:e.status||"ACTIVE"})),a(t),(f=e==null?void 0:e.role)!=null&&f.id&&U(g=>({...g,roleId:e.role.id})),B((e==null?void 0:e.isCompanyAdmin)??!1)}).finally(()=>R(!1)))},[I,h]);const F=e=>/.+@.+\..+/.test(e),M=(e,t)=>e==="firstName"?t!=null&&t.trim()?null:u.firstNameRequired:e==="lastName"?t!=null&&t.trim()?null:u.lastNameRequired:e==="email"?t!=null&&t.trim()?F(t.trim())?null:u.emailInvalid:u.emailRequired:e==="roleId"?t?null:u.selectRole:null,$=(e,t)=>{U(f=>({...f,[e]:t})),e==="email"&&E(null),y&&j(null)};return{values:r,errors:x,touched:m,loading:V,setValue:$,onBlur:async(e,t)=>{t!==void 0&&$(e,t),p(C=>({...C,[e]:!0}));const f=t!==void 0?t:r[e],g=M(e,f);if(c(g?C=>({...C,[e]:g}):C=>{const s={...C};return delete s[e],s}),e==="email"){const s=(t!==void 0?t:r.email||"").trim();if(I==="edit"&&s.toLowerCase()===(l||"").trim().toLowerCase()){E(null);return}if(F(s)&&s!==b){const n=await ae(s);k(s),E(n),n===!1&&c(L=>({...L,email:"A user with this email address is already a member of your company."}))}}},submit:async()=>{const e=["firstName","lastName","email","roleId"],t={};for(const s of e){const n=M(s,r[s]);n&&(t[s]=n)}if(c(t),p({firstName:!0,lastName:!0,email:!0,roleId:!0}),Object.keys(t).length||_===!1){setTimeout(()=>{const s=document.querySelector(".company-user-form__content .dropin-field__hint--error");if(s){const n=s.closest(".dropin-field");if(n){n.scrollIntoView({behavior:"smooth",block:"center"});const L=n.querySelector("input, select");L&&L.focus()}}},100);return}const f=`${r.firstName||""} ${r.lastName||""}`.trim()||r.email||"",C=i||X({id:r.roleId})?"ACTIVE":r.status;try{if(I==="add"){const s=await Z({email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",roleId:r.roleId,status:C,targetId:T??null});if(!s){const n=u.createUserError;N?N(n):j(n);return}w({label:f,structureId:s.structureId,entityId:s.id,type:"user"}),v&&v(u.createUserSuccess)}else h&&(await ee({id:h,email:r.email||"",firstName:r.firstName||"",lastName:r.lastName||"",jobTitle:r.jobTitle||"",telephone:r.telephone||"",status:C,roleId:r.roleId}),w({label:f,entityId:h,type:"user"}),v&&v(u.updateUserSuccess))}catch(s){const n=s instanceof Error?s.message:u.saveUserError;N?N(n):j(n)}},isCompanyAdmin:i,generalError:y}}const fe=D(({mode:q,entityId:I,parentStructureId:h,permissions:T,onSaved:w,onCancel:N,onError:v,onSuccess:u})=>{const r=(T==null?void 0:T.canEditUsers)??!1,{roles:U,isLoading:x}=te(),{values:c,errors:m,touched:p,loading:V,setValue:R,onBlur:y,submit:j,isCompanyAdmin:_,generalError:E}=re({mode:q,entityId:I,parentStructureId:h,onSaved:w,onError:v?a=>{v(a),N()}:void 0,onSuccess:u}),[b,k]=d(!1),l=G({addUser:"Company.CompanyStructure.shared.titles.addUser",editUser:"Company.CompanyStructure.shared.titles.editUser",jobTitle:"Company.CompanyStructure.shared.fields.jobTitle",userRole:"Company.CompanyStructure.shared.fields.userRole",firstName:"Company.CompanyStructure.shared.fields.firstName",lastName:"Company.CompanyStructure.shared.fields.lastName",email:"Company.CompanyStructure.shared.fields.email",workPhoneNumber:"Company.CompanyStructure.shared.fields.workPhoneNumber",status:"Company.CompanyStructure.shared.fields.status",selectRole:"Company.CompanyStructure.shared.options.selectRole",active:"Company.CompanyStructure.shared.options.active",inactive:"Company.CompanyStructure.shared.options.inactive",companyAdministrator:"Company.CompanyStructure.shared.options.companyAdministrator",save:"Company.CompanyStructure.shared.buttons.save",cancel:"Company.CompanyStructure.shared.buttons.cancel"});return P("div",{children:[o("h3",{className:"acm-structure-panel__title",children:q==="add"?l.addUser:l.editUser}),P(J,{variant:"secondary",className:`company-user-form__card ${b?"is-working":""}`,children:[!v&&E?o(K,{className:"company-user-form__notification",type:"error",variant:"secondary",heading:E}):null,b?o("div",{className:"company-user-form__overlay","aria-live":"polite",children:o(Q,{size:"small"})}):null,V||x?o(W,{}):P("div",{className:"company-user-form__content",children:[o(S,{label:l.jobTitle,className:"acm-structure-panel__field",error:p.jobTitle&&m.jobTitle?m.jobTitle:void 0,children:o(A,{name:"job_title",type:"text",value:c.jobTitle||"",onBlur:a=>{const i=a.target;y("jobTitle",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.userRole,required:!0,className:"acm-structure-panel__field",error:!_&&p.roleId&&m.roleId?m.roleId:void 0,disabled:_,children:_?o(z,{name:"role",value:"MA==",options:[{value:"MA==",text:l.companyAdministrator}]}):o(z,{name:"role",value:c.roleId||"placeholder",onChange:a=>{var i,B;return R("roleId",String(((i=a==null?void 0:a.target)==null?void 0:i.value)==="placeholder"?"":((B=a==null?void 0:a.target)==null?void 0:B.value)??""))},onBlur:a=>{const i=a.target;y("roleId",i.value==="placeholder"?"":i.value)},options:[{value:"placeholder",text:l.selectRole,disabled:!0},...U.map(a=>({value:a.id,text:a.name}))]})}),o(S,{label:l.firstName,required:!0,className:"acm-structure-panel__field",error:p.firstName&&m.firstName?m.firstName:void 0,children:o(A,{name:"first_name",type:"text",value:c.firstName,onBlur:a=>{const i=a.target;y("firstName",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.lastName,required:!0,className:"acm-structure-panel__field",error:p.lastName&&m.lastName?m.lastName:void 0,children:o(A,{name:"last_name",type:"text",value:c.lastName,onBlur:a=>{const i=a.target;y("lastName",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.email,required:!0,className:"acm-structure-panel__field",error:p.email&&m.email?m.email:void 0,children:o(A,{name:"email",type:"email",value:c.email,onBlur:a=>{const i=a.target;y("email",i.value)},placeholder:"jdoe@example.com",variant:"primary",size:"medium"})}),o(S,{label:l.workPhoneNumber,className:"acm-structure-panel__field",error:p.telephone&&m.telephone?m.telephone:void 0,children:o(A,{name:"telephone",type:"text",value:c.telephone||"",onBlur:a=>{const i=a.target;y("telephone",i.value)},variant:"primary",size:"medium"})}),o(S,{label:l.status,className:"acm-structure-panel__field",disabled:_||!r,children:o(z,{name:"status",value:c.status,onChange:a=>{var i;return R("status",String(((i=a==null?void 0:a.target)==null?void 0:i.value)??"ACTIVE"))},options:[{value:"ACTIVE",text:l.active},{value:"INACTIVE",text:l.inactive}]})})]})]}),V||x?null:P("div",{className:"acm-structure-modal__actions",children:[o(O,{type:"button",variant:"primary",disabled:b||!r,onClick:async()=>{if(!b){k(!0);try{await j()}finally{k(!1)}}},children:l.save}),o(O,{type:"button",variant:"secondary",disabled:b,onClick:N,children:l.cancel})]})]})});export{fe as C};
|
|
4
4
|
//# sourceMappingURL=CompanyUserForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyUserForm.js","sources":["/@dropins/storefront-company-management/src/hooks/useCompanyUserForm.ts","/@dropins/storefront-company-management/src/components/CompanyUserForm/CompanyUserForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { useEffect, useState } from 'preact/hooks';\nimport { createCompanyUser, getCompanyUser, isCompanyUserEmailAvailable, updateCompanyUser } from '@/company-management/api';\nimport { isCompanyAdministrator } from '@/company-management/lib';\nimport { CompanyUserModel } from '@/company-management/data/models';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport type UserStatus = 'ACTIVE' | 'INACTIVE';\n\n\nexport function useCompanyUserForm(opts: {\n mode: 'add' | 'edit';\n entityId?: string;\n parentStructureId?: string | null;\n onSaved: (result: { label: string; structureId?: string; entityId?: string; type: 'user' }) => void;\n onError?: (error: string) => void;\n onSuccess?: (message: string) => void;\n}) {\n const { mode, entityId, parentStructureId, onSaved, onError, onSuccess } = opts;\n \n const translations = useText({\n firstNameRequired: 'Company.CompanyStructure.shared.validation.firstNameRequired',\n lastNameRequired: 'Company.CompanyStructure.shared.validation.lastNameRequired',\n emailRequired: 'Company.CompanyStructure.shared.validation.emailRequired',\n emailInvalid: 'Company.CompanyStructure.shared.validation.emailInvalid',\n jobTitleRequired: 'Company.CompanyStructure.shared.validation.jobTitleRequired',\n workPhoneRequired: 'Company.CompanyStructure.shared.validation.workPhoneRequired',\n selectRole: 'Company.CompanyStructure.shared.validation.selectRole',\n createUserError: 'Company.CompanyStructure.messages.createUserError',\n saveUserError: 'Company.CompanyStructure.messages.saveUserError',\n createUserSuccess: 'Company.CompanyStructure.messages.createUserSuccess',\n updateUserSuccess: 'Company.CompanyStructure.messages.updateUserSuccess',\n });\n const [values, setValues] = useState<Partial<CompanyUserModel> & { roleId: string; status: UserStatus }>({ \n firstName: '', \n lastName: '', \n email: '', \n jobTitle: '', \n telephone: '', \n roleId: '', \n status: 'ACTIVE' \n });\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [touched, setTouched] = useState<Record<string, boolean>>({});\n const [loading, setLoading] = useState(false);\n const [generalError, setGeneralError] = useState<string | null>(null);\n const [emailAvailable, setEmailAvailable] = useState<boolean | null>(null);\n const [emailChecked, setEmailChecked] = useState<string>('');\n const [originalEmail, setOriginalEmail] = useState<string>('');\n const [isCompanyAdmin, setIsCompanyAdmin] = useState<boolean>(false);\n\n useEffect(() => {\n if (mode !== 'edit' || !entityId) return;\n setLoading(true);\n void getCompanyUser(entityId).then((u) => {\n if (!u) return;\n const loadedEmail = u.email || '';\n setValues((v) => ({ ...v, firstName: u.firstName || '', lastName: u.lastName || '', email: loadedEmail, jobTitle: u.jobTitle || '', telephone: u.telephone || '', status: (u.status || 'ACTIVE') as UserStatus }));\n setOriginalEmail(loadedEmail);\n if (u?.role?.id) setValues((v) => ({ ...v, roleId: u.role!.id }));\n setIsCompanyAdmin(u?.isCompanyAdmin ?? false);\n }).finally(() => setLoading(false));\n }, [mode, entityId]);\n\n const isEmailValid = (value: string): boolean => /.+@.+\\..+/.test(value);\n const validateField = (field: keyof CompanyUserModel | 'roleId', value: any): string | null => {\n if (field === 'firstName') return value?.trim() ? null : translations.firstNameRequired;\n if (field === 'lastName') return value?.trim() ? null : translations.lastNameRequired;\n if (field === 'email') {\n if (!value?.trim()) return translations.emailRequired;\n return isEmailValid(value.trim()) ? null : translations.emailInvalid;\n }\n // jobTitle and telephone are now optional fields (USF-3012)\n if (field === 'roleId') return value ? null : translations.selectRole;\n return null;\n };\n\n const setValue = (field: keyof CompanyUserModel | 'roleId', value: any) => {\n setValues((v) => ({ ...v, [field]: value }));\n if (field === 'email') setEmailAvailable(null);\n if (generalError) setGeneralError(null);\n };\n\n const onBlur = async (field: keyof CompanyUserModel | 'roleId', value?: any) => {\n // Update form data if value is provided (this preserves spaces and other characters)\n if (value !== undefined) {\n setValue(field, value);\n }\n \n setTouched((t) => ({ ...t, [field]: true }));\n \n // Use provided value or current state value for validation\n const valueToValidate = value !== undefined ? value : values[field];\n const err = validateField(field, valueToValidate);\n if (err) {\n setErrors((p) => ({ ...p, [field]: err }));\n } else {\n // Clear error if field is now valid\n setErrors((p) => {\n const newErrors = { ...p };\n delete newErrors[field];\n return newErrors;\n });\n }\n \n if (field === 'email') {\n const emailValue = value !== undefined ? value : (values.email || '');\n const trimmed = emailValue.trim();\n if (mode === 'edit' && trimmed.toLowerCase() === (originalEmail || '').trim().toLowerCase()) {\n setEmailAvailable(null);\n return;\n }\n if (isEmailValid(trimmed) && trimmed !== emailChecked) {\n const available = await isCompanyUserEmailAvailable(trimmed);\n setEmailChecked(trimmed);\n setEmailAvailable(available);\n if (available === false) setErrors((p) => ({ ...p, email: 'A user with this email address is already a member of your company.' }));\n }\n }\n };\n\n const submit = async () => {\n // Only validate required fields (USF-3012: jobTitle and telephone are now optional)\n const fields: (keyof CompanyUserModel | 'roleId')[] = ['firstName', 'lastName', 'email', 'roleId'];\n const next: Record<string, string> = {};\n for (const f of fields) {\n const err = validateField(f, values[f]);\n if (err) next[f as string] = err;\n }\n setErrors(next);\n setTouched({ firstName: true, lastName: true, email: true, roleId: true });\n if (Object.keys(next).length || emailAvailable === false) {\n // Scroll to the first error field\n setTimeout(() => {\n const firstErrorField = document.querySelector('.company-user-form__content .dropin-field__hint--error');\n if (firstErrorField) {\n const fieldContainer = firstErrorField.closest('.dropin-field');\n if (fieldContainer) {\n fieldContainer.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const input = fieldContainer.querySelector('input, select') as HTMLElement;\n if (input) {\n input.focus();\n }\n }\n }\n }, 100);\n return;\n }\n\n const label = `${values.firstName || ''} ${values.lastName || ''}`.trim() || values.email || '';\n const adminEffective = isCompanyAdmin || isCompanyAdministrator({ id: values.roleId });\n const effectiveStatus = adminEffective ? 'ACTIVE' : values.status;\n try {\n if (mode === 'add') {\n const res = await createCompanyUser({ email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', roleId: values.roleId, status: effectiveStatus, targetId: parentStructureId ?? null });\n if (!res) {\n const errorMessage = translations.createUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n return;\n }\n onSaved({ label, structureId: res.structureId, entityId: res.id, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.createUserSuccess);\n }\n } else if (entityId) {\n await updateCompanyUser({ id: entityId, email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', status: effectiveStatus, roleId: values.roleId });\n onSaved({ label, entityId, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.updateUserSuccess);\n }\n }\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : translations.saveUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n }\n };\n\n return { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { FunctionComponent } from 'preact';\nimport { memo } from 'preact/compat';\nimport { useState } from 'preact/hooks';\nimport { Field, Input, Button, Card, Picker, ProgressSpinner, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CompanyUserFormLoader } from '@/company-management/components/CompanyLoaders';\nimport { useCompanyUserForm } from '@/company-management/hooks/useCompanyUserForm';\nimport { useCompanyRoles } from '@/company-management/hooks/useCompanyRoles';\nimport { CompanyUserFormProps } from '@/company-management/types/companyForm.types';\nimport './CompanyUserForm.css';\n\n/**\n * CompanyUserForm component for creating and editing company users\n * Provides form fields for user information including name, email, role, and status\n */\nexport const CompanyUserForm: FunctionComponent<CompanyUserFormProps> = memo(({ mode, entityId, parentStructureId, permissions, onSaved, onCancel, onError, onSuccess }) => {\n const canEditUsers = permissions?.canEditUsers ?? false;\n const { roles, isLoading: rolesLoading } = useCompanyRoles();\n const { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError } = useCompanyUserForm({ \n mode, \n entityId, \n parentStructureId, \n onSaved,\n onError: onError ? (error: string) => {\n onError(error);\n onCancel();\n } : undefined,\n onSuccess\n });\n const [saving, setSaving] = useState(false);\n \n const translations = useText({\n addUser: 'Company.CompanyStructure.shared.titles.addUser',\n editUser: 'Company.CompanyStructure.shared.titles.editUser',\n jobTitle: 'Company.CompanyStructure.shared.fields.jobTitle',\n userRole: 'Company.CompanyStructure.shared.fields.userRole',\n firstName: 'Company.CompanyStructure.shared.fields.firstName',\n lastName: 'Company.CompanyStructure.shared.fields.lastName',\n email: 'Company.CompanyStructure.shared.fields.email',\n workPhoneNumber: 'Company.CompanyStructure.shared.fields.workPhoneNumber',\n status: 'Company.CompanyStructure.shared.fields.status',\n selectRole: 'Company.CompanyStructure.shared.options.selectRole',\n active: 'Company.CompanyStructure.shared.options.active',\n inactive: 'Company.CompanyStructure.shared.options.inactive',\n companyAdministrator: 'Company.CompanyStructure.shared.options.companyAdministrator',\n save: 'Company.CompanyStructure.shared.buttons.save',\n cancel: 'Company.CompanyStructure.shared.buttons.cancel',\n });\n\n return (\n <div>\n <h3 className=\"acm-structure-panel__title\">{mode === 'add' ? translations.addUser : translations.editUser}</h3>\n <Card variant=\"secondary\" className={`company-user-form__card ${saving ? 'is-working' : ''}`}>\n {!onError && generalError ? (\n <InLineAlert \n className=\"company-user-form__notification\" \n type=\"error\" \n variant=\"secondary\" \n heading={generalError} \n />\n ) : null}\n {saving ? <div className=\"company-user-form__overlay\" aria-live=\"polite\"><ProgressSpinner size=\"small\" /></div> : null}\n {loading || rolesLoading ? (\n <CompanyUserFormLoader />\n ) : (\n <div className=\"company-user-form__content\">\n\n <Field label={translations.jobTitle} className=\"acm-structure-panel__field\" error={touched.jobTitle && errors.jobTitle ? errors.jobTitle : undefined}>\n <Input name=\"job_title\" type=\"text\" value={values.jobTitle || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('jobTitle', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.userRole} required className=\"acm-structure-panel__field\" error={!isCompanyAdmin && touched.roleId && errors.roleId ? errors.roleId : undefined} disabled={isCompanyAdmin}>\n {isCompanyAdmin ? (\n <Picker name=\"role\" value={'MA=='} options={[{ value: 'MA==', text: translations.companyAdministrator }]} />\n ) : (\n <Picker\n name=\"role\"\n value={values.roleId || 'placeholder'}\n onChange={(e: any) => setValue('roleId', String(e?.target?.value === 'placeholder' ? '' : e?.target?.value ?? ''))}\n onBlur={(e: Event) => { const target = e.target as HTMLSelectElement; void onBlur('roleId', target.value === 'placeholder' ? '' : target.value); }}\n options={[{ value: 'placeholder', text: translations.selectRole, disabled: true }, ...roles.map((r) => ({ value: r.id, text: r.name }))]}\n />\n )}\n </Field>\n\n <Field label={translations.firstName} required className=\"acm-structure-panel__field\" error={touched.firstName && errors.firstName ? errors.firstName : undefined}>\n <Input name=\"first_name\" type=\"text\" value={values.firstName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('firstName', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.lastName} required className=\"acm-structure-panel__field\" error={touched.lastName && errors.lastName ? errors.lastName : undefined}>\n <Input name=\"last_name\" type=\"text\" value={values.lastName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('lastName', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.email} required className=\"acm-structure-panel__field\" error={touched.email && errors.email ? errors.email : undefined}>\n <Input name=\"email\" type=\"email\" value={values.email} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; void onBlur('email', target.value); }} placeholder=\"jdoe@example.com\" variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.workPhoneNumber} className=\"acm-structure-panel__field\" error={touched.telephone && errors.telephone ? errors.telephone : undefined}>\n <Input name=\"telephone\" type=\"text\" value={values.telephone || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('telephone', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.status} className=\"acm-structure-panel__field\" disabled={isCompanyAdmin || !canEditUsers}>\n <Picker\n name=\"status\"\n value={values.status}\n onChange={(e: any) => setValue('status', String(e?.target?.value ?? 'ACTIVE'))}\n options={[{ value: 'ACTIVE', text: translations.active }, { value: 'INACTIVE', text: translations.inactive }]}\n />\n </Field>\n </div>\n )}\n </Card>\n {!(loading || rolesLoading) ? (\n <div className=\"acm-structure-modal__actions\">\n <Button type=\"button\" variant=\"primary\" disabled={saving || !canEditUsers} onClick={async () => { if (saving) return; setSaving(true); try { await submit(); } finally { setSaving(false); } }}>\n {translations.save}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n disabled={saving}\n onClick={onCancel}\n >\n {translations.cancel}\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default CompanyUserForm;\n"],"names":["useCompanyUserForm","opts","mode","entityId","parentStructureId","onSaved","onError","onSuccess","translations","useText","values","setValues","useState","errors","setErrors","touched","setTouched","loading","setLoading","generalError","setGeneralError","emailAvailable","setEmailAvailable","emailChecked","setEmailChecked","originalEmail","setOriginalEmail","isCompanyAdmin","setIsCompanyAdmin","useEffect","getCompanyUser","u","loadedEmail","v","_a","isEmailValid","value","validateField","field","setValue","t","valueToValidate","err","p","newErrors","trimmed","available","isCompanyUserEmailAvailable","fields","next","f","firstErrorField","fieldContainer","input","label","effectiveStatus","isCompanyAdministrator","res","createCompanyUser","errorMessage","updateCompanyUser","error","CompanyUserForm","memo","permissions","onCancel","canEditUsers","roles","rolesLoading","useCompanyRoles","onBlur","submit","saving","setSaving","jsx","jsxs","Card","InLineAlert","ProgressSpinner","CompanyUserFormLoader","Field","Input","e","target","Picker","_b","r","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CompanyUserForm.js","sources":["/@dropins/storefront-company-management/src/hooks/useCompanyUserForm.ts","/@dropins/storefront-company-management/src/components/CompanyUserForm/CompanyUserForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { useEffect, useState } from 'preact/hooks';\nimport { createCompanyUser, getCompanyUser, isCompanyUserEmailAvailable, updateCompanyUser } from '@/company-management/api';\nimport { isCompanyAdministrator } from '@/company-management/lib';\nimport { CompanyUserModel } from '@/company-management/data/models';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport type UserStatus = 'ACTIVE' | 'INACTIVE';\n\n\nexport function useCompanyUserForm(opts: {\n mode: 'add' | 'edit';\n entityId?: string;\n parentStructureId?: string | null;\n onSaved: (result: { label: string; structureId?: string; entityId?: string; type: 'user' }) => void;\n onError?: (error: string) => void;\n onSuccess?: (message: string) => void;\n}) {\n const { mode, entityId, parentStructureId, onSaved, onError, onSuccess } = opts;\n \n const translations = useText({\n firstNameRequired: 'Company.CompanyStructure.shared.validation.firstNameRequired',\n lastNameRequired: 'Company.CompanyStructure.shared.validation.lastNameRequired',\n emailRequired: 'Company.CompanyStructure.shared.validation.emailRequired',\n emailInvalid: 'Company.CompanyStructure.shared.validation.emailInvalid',\n jobTitleRequired: 'Company.CompanyStructure.shared.validation.jobTitleRequired',\n workPhoneRequired: 'Company.CompanyStructure.shared.validation.workPhoneRequired',\n selectRole: 'Company.CompanyStructure.shared.validation.selectRole',\n createUserError: 'Company.CompanyStructure.messages.createUserError',\n saveUserError: 'Company.CompanyStructure.messages.saveUserError',\n createUserSuccess: 'Company.CompanyStructure.messages.createUserSuccess',\n updateUserSuccess: 'Company.CompanyStructure.messages.updateUserSuccess',\n });\n const [values, setValues] = useState<Partial<CompanyUserModel> & { roleId: string; status: UserStatus }>({ \n firstName: '', \n lastName: '', \n email: '', \n jobTitle: '', \n telephone: '', \n roleId: '', \n status: 'ACTIVE' \n });\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [touched, setTouched] = useState<Record<string, boolean>>({});\n const [loading, setLoading] = useState(false);\n const [generalError, setGeneralError] = useState<string | null>(null);\n const [emailAvailable, setEmailAvailable] = useState<boolean | null>(null);\n const [emailChecked, setEmailChecked] = useState<string>('');\n const [originalEmail, setOriginalEmail] = useState<string>('');\n const [isCompanyAdmin, setIsCompanyAdmin] = useState<boolean>(false);\n\n useEffect(() => {\n if (mode !== 'edit' || !entityId) return;\n setLoading(true);\n void getCompanyUser(entityId).then((u) => {\n if (!u) return;\n const loadedEmail = u.email || '';\n setValues((v) => ({ ...v, firstName: u.firstName || '', lastName: u.lastName || '', email: loadedEmail, jobTitle: u.jobTitle || '', telephone: u.telephone || '', status: (u.status || 'ACTIVE') as UserStatus }));\n setOriginalEmail(loadedEmail);\n if (u?.role?.id) setValues((v) => ({ ...v, roleId: u.role!.id }));\n setIsCompanyAdmin(u?.isCompanyAdmin ?? false);\n }).finally(() => setLoading(false));\n }, [mode, entityId]);\n\n const isEmailValid = (value: string): boolean => /.+@.+\\..+/.test(value);\n const validateField = (field: keyof CompanyUserModel | 'roleId', value: any): string | null => {\n if (field === 'firstName') return value?.trim() ? null : translations.firstNameRequired;\n if (field === 'lastName') return value?.trim() ? null : translations.lastNameRequired;\n if (field === 'email') {\n if (!value?.trim()) return translations.emailRequired;\n return isEmailValid(value.trim()) ? null : translations.emailInvalid;\n }\n // jobTitle and telephone are now optional fields (USF-3012)\n if (field === 'roleId') return value ? null : translations.selectRole;\n return null;\n };\n\n const setValue = (field: keyof CompanyUserModel | 'roleId', value: any) => {\n setValues((v) => ({ ...v, [field]: value }));\n if (field === 'email') setEmailAvailable(null);\n if (generalError) setGeneralError(null);\n };\n\n const onBlur = async (field: keyof CompanyUserModel | 'roleId', value?: any) => {\n // Update form data if value is provided (this preserves spaces and other characters)\n if (value !== undefined) {\n setValue(field, value);\n }\n \n setTouched((t) => ({ ...t, [field]: true }));\n \n // Use provided value or current state value for validation\n const valueToValidate = value !== undefined ? value : values[field];\n const err = validateField(field, valueToValidate);\n if (err) {\n setErrors((p) => ({ ...p, [field]: err }));\n } else {\n // Clear error if field is now valid\n setErrors((p) => {\n const newErrors = { ...p };\n delete newErrors[field];\n return newErrors;\n });\n }\n \n if (field === 'email') {\n const emailValue = value !== undefined ? value : (values.email || '');\n const trimmed = emailValue.trim();\n if (mode === 'edit' && trimmed.toLowerCase() === (originalEmail || '').trim().toLowerCase()) {\n setEmailAvailable(null);\n return;\n }\n if (isEmailValid(trimmed) && trimmed !== emailChecked) {\n const available = await isCompanyUserEmailAvailable(trimmed);\n setEmailChecked(trimmed);\n setEmailAvailable(available);\n if (available === false) setErrors((p) => ({ ...p, email: 'A user with this email address is already a member of your company.' }));\n }\n }\n };\n\n const submit = async () => {\n // Only validate required fields (USF-3012: jobTitle and telephone are now optional)\n const fields: (keyof CompanyUserModel | 'roleId')[] = ['firstName', 'lastName', 'email', 'roleId'];\n const next: Record<string, string> = {};\n for (const f of fields) {\n const err = validateField(f, values[f]);\n if (err) next[f as string] = err;\n }\n setErrors(next);\n setTouched({ firstName: true, lastName: true, email: true, roleId: true });\n if (Object.keys(next).length || emailAvailable === false) {\n // Scroll to the first error field\n setTimeout(() => {\n const firstErrorField = document.querySelector('.company-user-form__content .dropin-field__hint--error');\n if (firstErrorField) {\n const fieldContainer = firstErrorField.closest('.dropin-field');\n if (fieldContainer) {\n fieldContainer.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const input = fieldContainer.querySelector('input, select') as HTMLElement;\n if (input) {\n input.focus();\n }\n }\n }\n }, 100);\n return;\n }\n\n const label = `${values.firstName || ''} ${values.lastName || ''}`.trim() || values.email || '';\n const adminEffective = isCompanyAdmin || isCompanyAdministrator({ id: values.roleId });\n const effectiveStatus = adminEffective ? 'ACTIVE' : values.status;\n try {\n if (mode === 'add') {\n const res = await createCompanyUser({ email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', roleId: values.roleId, status: effectiveStatus, targetId: parentStructureId ?? null });\n if (!res) {\n const errorMessage = translations.createUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n return;\n }\n onSaved({ label, structureId: res.structureId, entityId: res.id, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.createUserSuccess);\n }\n } else if (entityId) {\n await updateCompanyUser({ id: entityId, email: values.email || '', firstName: values.firstName || '', lastName: values.lastName || '', jobTitle: values.jobTitle || '', telephone: values.telephone || '', status: effectiveStatus, roleId: values.roleId });\n onSaved({ label, entityId, type: 'user' });\n if (onSuccess) {\n onSuccess(translations.updateUserSuccess);\n }\n }\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : translations.saveUserError;\n if (onError) {\n onError(errorMessage);\n } else {\n setGeneralError(errorMessage);\n }\n }\n };\n\n return { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { FunctionComponent } from 'preact';\nimport { memo } from 'preact/compat';\nimport { useState } from 'preact/hooks';\nimport { Field, Input, Button, Card, Picker, ProgressSpinner, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CompanyUserFormLoader } from '@/company-management/components/CompanyLoaders';\nimport { useCompanyUserForm } from '@/company-management/hooks/useCompanyUserForm';\nimport { useCompanyRoles } from '@/company-management/hooks/useCompanyRoles';\nimport { CompanyUserFormProps } from '@/company-management/types/companyForm.types';\nimport './CompanyUserForm.css';\n\n/**\n * CompanyUserForm component for creating and editing company users\n * Provides form fields for user information including name, email, role, and status\n */\nexport const CompanyUserForm: FunctionComponent<CompanyUserFormProps> = memo(({ mode, entityId, parentStructureId, permissions, onSaved, onCancel, onError, onSuccess }) => {\n const canEditUsers = permissions?.canEditUsers ?? false;\n const { roles, isLoading: rolesLoading } = useCompanyRoles();\n const { values, errors, touched, loading, setValue, onBlur, submit, isCompanyAdmin, generalError } = useCompanyUserForm({ \n mode, \n entityId, \n parentStructureId, \n onSaved,\n onError: onError ? (error: string) => {\n onError(error);\n onCancel();\n } : undefined,\n onSuccess\n });\n const [saving, setSaving] = useState(false);\n \n const translations = useText({\n addUser: 'Company.CompanyStructure.shared.titles.addUser',\n editUser: 'Company.CompanyStructure.shared.titles.editUser',\n jobTitle: 'Company.CompanyStructure.shared.fields.jobTitle',\n userRole: 'Company.CompanyStructure.shared.fields.userRole',\n firstName: 'Company.CompanyStructure.shared.fields.firstName',\n lastName: 'Company.CompanyStructure.shared.fields.lastName',\n email: 'Company.CompanyStructure.shared.fields.email',\n workPhoneNumber: 'Company.CompanyStructure.shared.fields.workPhoneNumber',\n status: 'Company.CompanyStructure.shared.fields.status',\n selectRole: 'Company.CompanyStructure.shared.options.selectRole',\n active: 'Company.CompanyStructure.shared.options.active',\n inactive: 'Company.CompanyStructure.shared.options.inactive',\n companyAdministrator: 'Company.CompanyStructure.shared.options.companyAdministrator',\n save: 'Company.CompanyStructure.shared.buttons.save',\n cancel: 'Company.CompanyStructure.shared.buttons.cancel',\n });\n\n return (\n <div>\n <h3 className=\"acm-structure-panel__title\">{mode === 'add' ? translations.addUser : translations.editUser}</h3>\n <Card variant=\"secondary\" className={`company-user-form__card ${saving ? 'is-working' : ''}`}>\n {!onError && generalError ? (\n <InLineAlert \n className=\"company-user-form__notification\" \n type=\"error\" \n variant=\"secondary\" \n heading={generalError} \n />\n ) : null}\n {saving ? <div className=\"company-user-form__overlay\" aria-live=\"polite\"><ProgressSpinner size=\"small\" /></div> : null}\n {loading || rolesLoading ? (\n <CompanyUserFormLoader />\n ) : (\n <div className=\"company-user-form__content\">\n\n <Field label={translations.jobTitle} className=\"acm-structure-panel__field\" error={touched.jobTitle && errors.jobTitle ? errors.jobTitle : undefined}>\n <Input name=\"job_title\" type=\"text\" value={values.jobTitle || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('jobTitle', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.userRole} required className=\"acm-structure-panel__field\" error={!isCompanyAdmin && touched.roleId && errors.roleId ? errors.roleId : undefined} disabled={isCompanyAdmin}>\n {isCompanyAdmin ? (\n <Picker name=\"role\" value={'MA=='} options={[{ value: 'MA==', text: translations.companyAdministrator }]} />\n ) : (\n <Picker\n name=\"role\"\n value={values.roleId || 'placeholder'}\n onChange={(e: any) => setValue('roleId', String(e?.target?.value === 'placeholder' ? '' : e?.target?.value ?? ''))}\n onBlur={(e: Event) => { const target = e.target as HTMLSelectElement; void onBlur('roleId', target.value === 'placeholder' ? '' : target.value); }}\n options={[{ value: 'placeholder', text: translations.selectRole, disabled: true }, ...roles.map((r) => ({ value: r.id, text: r.name }))]}\n />\n )}\n </Field>\n\n <Field label={translations.firstName} required className=\"acm-structure-panel__field\" error={touched.firstName && errors.firstName ? errors.firstName : undefined}>\n <Input name=\"first_name\" type=\"text\" value={values.firstName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('firstName', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.lastName} required className=\"acm-structure-panel__field\" error={touched.lastName && errors.lastName ? errors.lastName : undefined}>\n <Input name=\"last_name\" type=\"text\" value={values.lastName} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('lastName', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.email} required className=\"acm-structure-panel__field\" error={touched.email && errors.email ? errors.email : undefined}>\n <Input name=\"email\" type=\"email\" value={values.email} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; void onBlur('email', target.value); }} placeholder=\"jdoe@example.com\" variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.workPhoneNumber} className=\"acm-structure-panel__field\" error={touched.telephone && errors.telephone ? errors.telephone : undefined}>\n <Input name=\"telephone\" type=\"text\" value={values.telephone || ''} onBlur={(e: Event) => { const target = e.target as HTMLInputElement; onBlur('telephone', target.value); }} variant=\"primary\" size=\"medium\" />\n </Field>\n\n <Field label={translations.status} className=\"acm-structure-panel__field\" disabled={isCompanyAdmin || !canEditUsers}>\n <Picker\n name=\"status\"\n value={values.status}\n onChange={(e: any) => setValue('status', String(e?.target?.value ?? 'ACTIVE'))}\n options={[{ value: 'ACTIVE', text: translations.active }, { value: 'INACTIVE', text: translations.inactive }]}\n />\n </Field>\n </div>\n )}\n </Card>\n {!(loading || rolesLoading) ? (\n <div className=\"acm-structure-modal__actions\">\n <Button type=\"button\" variant=\"primary\" disabled={saving || !canEditUsers} onClick={async () => { if (saving) return; setSaving(true); try { await submit(); } finally { setSaving(false); } }}>\n {translations.save}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n disabled={saving}\n onClick={onCancel}\n >\n {translations.cancel}\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default CompanyUserForm;\n"],"names":["useCompanyUserForm","opts","mode","entityId","parentStructureId","onSaved","onError","onSuccess","translations","useText","values","setValues","useState","errors","setErrors","touched","setTouched","loading","setLoading","generalError","setGeneralError","emailAvailable","setEmailAvailable","emailChecked","setEmailChecked","originalEmail","setOriginalEmail","isCompanyAdmin","setIsCompanyAdmin","useEffect","getCompanyUser","u","loadedEmail","v","_a","isEmailValid","value","validateField","field","setValue","t","valueToValidate","err","p","newErrors","trimmed","available","isCompanyUserEmailAvailable","fields","next","f","firstErrorField","fieldContainer","input","label","effectiveStatus","isCompanyAdministrator","res","createCompanyUser","errorMessage","updateCompanyUser","error","CompanyUserForm","memo","permissions","onCancel","canEditUsers","roles","rolesLoading","useCompanyRoles","onBlur","submit","saving","setSaving","jsx","jsxs","Card","InLineAlert","ProgressSpinner","CompanyUserFormLoader","Field","Input","e","target","Picker","_b","r","Button"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{f as R,h as z}from"./network-error.js";const G=c=>{var r,n,l,e,u,d,t,a,_,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{credit:{available_credit:{currency:((e=(l=(n=(r=c==null?void 0:c.data)==null?void 0:r.company)==null?void 0:n.credit)==null?void 0:l.available_credit)==null?void 0:e.currency)||"",value:((a=(t=(d=(u=c==null?void 0:c.data)==null?void 0:u.company)==null?void 0:d.credit)==null?void 0:t.available_credit)==null?void 0:a.value)||0},credit_limit:{currency:((g=(o=(y=(_=c==null?void 0:c.data)==null?void 0:_.company)==null?void 0:y.credit)==null?void 0:o.credit_limit)==null?void 0:g.currency)||"",value:((C=(f=(v=(b=c==null?void 0:c.data)==null?void 0:b.company)==null?void 0:v.credit)==null?void 0:f.credit_limit)==null?void 0:C.value)||0},outstanding_balance:{currency:((T=(i=(p=(h=c==null?void 0:c.data)==null?void 0:h.company)==null?void 0:p.credit)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((D=(P=(I=(E=c==null?void 0:c.data)==null?void 0:E.company)==null?void 0:I.credit)==null?void 0:P.outstanding_balance)==null?void 0:D.value)||0}}}},N=c=>{var n,l,e,u,d,t;const r=(l=(n=c==null?void 0:c.data)==null?void 0:n.company)==null?void 0:l.credit_history;return{items:((e=r==null?void 0:r.items)==null?void 0:e.map(a=>{var _,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{amount:{currency:((_=a==null?void 0:a.amount)==null?void 0:_.currency)||"",value:((y=a==null?void 0:a.amount)==null?void 0:y.value)||0},balance:{availableCredit:{currency:((g=(o=a==null?void 0:a.balance)==null?void 0:o.available_credit)==null?void 0:g.currency)||"",value:((v=(b=a==null?void 0:a.balance)==null?void 0:b.available_credit)==null?void 0:v.value)||0},creditLimit:{currency:((C=(f=a==null?void 0:a.balance)==null?void 0:f.credit_limit)==null?void 0:C.currency)||"",value:((p=(h=a==null?void 0:a.balance)==null?void 0:h.credit_limit)==null?void 0:p.value)||0},outstandingBalance:{currency:((T=(i=a==null?void 0:a.balance)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((I=(E=a==null?void 0:a.balance)==null?void 0:E.outstanding_balance)==null?void 0:I.value)||0}},customReferenceNumber:(a==null?void 0:a.custom_reference_number)||void 0,date:(a==null?void 0:a.date)||"",type:(a==null?void 0:a.
|
|
3
|
+
import{f as R,h as z}from"./network-error.js";const G=c=>{var r,n,l,e,u,d,t,a,_,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{credit:{available_credit:{currency:((e=(l=(n=(r=c==null?void 0:c.data)==null?void 0:r.company)==null?void 0:n.credit)==null?void 0:l.available_credit)==null?void 0:e.currency)||"",value:((a=(t=(d=(u=c==null?void 0:c.data)==null?void 0:u.company)==null?void 0:d.credit)==null?void 0:t.available_credit)==null?void 0:a.value)||0},credit_limit:{currency:((g=(o=(y=(_=c==null?void 0:c.data)==null?void 0:_.company)==null?void 0:y.credit)==null?void 0:o.credit_limit)==null?void 0:g.currency)||"",value:((C=(f=(v=(b=c==null?void 0:c.data)==null?void 0:b.company)==null?void 0:v.credit)==null?void 0:f.credit_limit)==null?void 0:C.value)||0},outstanding_balance:{currency:((T=(i=(p=(h=c==null?void 0:c.data)==null?void 0:h.company)==null?void 0:p.credit)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((D=(P=(I=(E=c==null?void 0:c.data)==null?void 0:E.company)==null?void 0:I.credit)==null?void 0:P.outstanding_balance)==null?void 0:D.value)||0}}}},N=c=>{var n,l,e,u,d,t;const r=(l=(n=c==null?void 0:c.data)==null?void 0:n.company)==null?void 0:l.credit_history;return{items:((e=r==null?void 0:r.items)==null?void 0:e.map(a=>{var _,y,o,g,b,v,f,C,h,p,i,T,E,I,P,D;return{amount:{currency:((_=a==null?void 0:a.amount)==null?void 0:_.currency)||"",value:((y=a==null?void 0:a.amount)==null?void 0:y.value)||0},balance:{availableCredit:{currency:((g=(o=a==null?void 0:a.balance)==null?void 0:o.available_credit)==null?void 0:g.currency)||"",value:((v=(b=a==null?void 0:a.balance)==null?void 0:b.available_credit)==null?void 0:v.value)||0},creditLimit:{currency:((C=(f=a==null?void 0:a.balance)==null?void 0:f.credit_limit)==null?void 0:C.currency)||"",value:((p=(h=a==null?void 0:a.balance)==null?void 0:h.credit_limit)==null?void 0:p.value)||0},outstandingBalance:{currency:((T=(i=a==null?void 0:a.balance)==null?void 0:i.outstanding_balance)==null?void 0:T.currency)||"",value:((I=(E=a==null?void 0:a.balance)==null?void 0:E.outstanding_balance)==null?void 0:I.value)||0}},customReferenceNumber:(a==null?void 0:a.custom_reference_number)||void 0,date:(a==null?void 0:a.date)||"",type:(a==null?void 0:a.type)||"",updatedBy:{name:((P=a==null?void 0:a.updated_by)==null?void 0:P.name)||"",type:((D=a==null?void 0:a.updated_by)==null?void 0:D.type)||""}}}))||[],pageInfo:{currentPage:((u=r==null?void 0:r.page_info)==null?void 0:u.current_page)||1,pageSize:((d=r==null?void 0:r.page_info)==null?void 0:d.page_size)||20,totalPages:((t=r==null?void 0:r.page_info)==null?void 0:t.total_pages)||0},totalCount:(r==null?void 0:r.total_count)||0}},S=`
|
|
4
4
|
query GET_COMPANY_CREDIT
|
|
5
5
|
{
|
|
6
6
|
company {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompanyCreditHistory.js","sources":["/@dropins/storefront-company-management/src/data/transforms/transform-company-credit.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-credit-history.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/graphql/getCompanyCredit.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/getCompanyCredit.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/graphql/getCompanyCreditHistory.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/getCompanyCreditHistory.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { CompanyCreditInfo } from '@/company-management/data/models/company-credit-info';\n\nexport const transformCompanyCredit = (\n response: CompanyCreditResponse\n): CompanyCreditInfo => {\n return {\n credit: {\n available_credit: {\n currency: response?.data?.company?.credit?.available_credit?.currency || '',\n value: response?.data?.company?.credit?.available_credit?.value || 0,\n },\n credit_limit: {\n currency: response?.data?.company?.credit?.credit_limit?.currency || '',\n value: response?.data?.company?.credit?.credit_limit?.value || 0,\n },\n outstanding_balance: {\n currency: response?.data?.company?.credit?.outstanding_balance?.currency || '',\n value: response?.data?.company?.credit?.outstanding_balance?.value || 0,\n },\n },\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { CompanyCreditHistory } from '@/company-management/data/models/company-credit-history';\n\nexport const transformCompanyCreditHistory = (\n response: CompanyCreditHistoryResponse\n): CompanyCreditHistory => {\n const creditHistory = response?.data?.company?.credit_history;\n\n return {\n items: creditHistory?.items?.map(item => ({\n amount: {\n currency: item?.amount?.currency || '',\n value: item?.amount?.value || 0,\n },\n balance: {\n availableCredit: {\n currency: item?.balance?.available_credit?.currency || '',\n value: item?.balance?.available_credit?.value || 0,\n },\n creditLimit: {\n currency: item?.balance?.credit_limit?.currency || '',\n value: item?.balance?.credit_limit?.value || 0,\n },\n outstandingBalance: {\n currency: item?.balance?.outstanding_balance?.currency || '',\n value: item?.balance?.outstanding_balance?.value || 0,\n },\n },\n customReferenceNumber: item?.custom_reference_number || undefined,\n date: item?.date || '',\n type: item?.operation_type || '',\n updatedBy: {\n name: item?.updated_by?.name || '',\n type: item?.updated_by?.type || '',\n },\n })) || [],\n pageInfo: {\n currentPage: creditHistory?.page_info?.current_page || 1,\n pageSize: creditHistory?.page_info?.page_size || 20,\n totalPages: creditHistory?.page_info?.total_pages || 0,\n },\n totalCount: creditHistory?.total_count || 0,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_COMPANY_CREDIT = /* GraphQL */ `\n query GET_COMPANY_CREDIT \n {\n company {\n credit {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\n }\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GET_COMPANY_CREDIT } from \"./graphql/getCompanyCredit.graphql\";\nimport { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { transformCompanyCredit } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditInfo } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCredit = async (): Promise<CompanyCreditInfo | null> => {\n\n return await fetchGraphQl(GET_COMPANY_CREDIT, {\n method: 'GET',\n cache: 'no-cache',\n })\n .then((response: CompanyCreditResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCredit(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_COMPANY_CREDIT_HISTORY = /* GraphQL */ `\n query GET_COMPANY_CREDIT_HISTORY($filter: CompanyCreditHistoryFilterInput, $pageSize: Int, $currentPage: Int) {\n company {\n credit_history(\n filter: $filter\n pageSize: $pageSize\n currentPage: $currentPage\n ) {\n items {\n amount {\n currency\n value\n }\n balance {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\n }\n custom_reference_number\n date\n type\n updated_by {\n name\n type\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\n }\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GET_COMPANY_CREDIT_HISTORY } from \"./graphql/getCompanyCreditHistory.graphql\";\nimport { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\nimport { transformCompanyCreditHistory } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditHistory } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCreditHistory = async (params: GetCompanyCreditHistoryParams = {}): Promise<CompanyCreditHistory | null> => {\n const { filter, pageSize = 20, currentPage = 1 } = params;\n\n // Transform camelCase filter to snake_case for GraphQL\n const graphqlFilter = filter ? {\n custom_reference_number: filter.customReferenceNumber,\n operation_type: filter.operationType,\n updated_by: filter.updatedBy,\n } : null;\n\n return await fetchGraphQl(GET_COMPANY_CREDIT_HISTORY, {\n method: 'GET',\n cache: 'no-cache',\n variables: {\n filter: graphqlFilter,\n pageSize,\n currentPage,\n },\n })\n .then((response: CompanyCreditHistoryResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCreditHistory(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};\n"],"names":["transformCompanyCredit","response","_d","_c","_b","_a","_h","_g","_f","_e","_l","_k","_j","_i","_p","_o","_n","_m","_t","_s","_r","_q","_x","_w","_v","_u","transformCompanyCreditHistory","creditHistory","item","GET_COMPANY_CREDIT","getCompanyCredit","fetchGraphQl","handleNetworkError","GET_COMPANY_CREDIT_HISTORY","getCompanyCreditHistory","params","filter","pageSize","currentPage","graphqlFilter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getCompanyCreditHistory.js","sources":["/@dropins/storefront-company-management/src/data/transforms/transform-company-credit.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company-credit-history.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/graphql/getCompanyCredit.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCredit/getCompanyCredit.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/graphql/getCompanyCreditHistory.graphql.ts","/@dropins/storefront-company-management/src/api/getCompanyCreditHistory/getCompanyCreditHistory.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { CompanyCreditInfo } from '@/company-management/data/models/company-credit-info';\n\nexport const transformCompanyCredit = (\n response: CompanyCreditResponse\n): CompanyCreditInfo => {\n return {\n credit: {\n available_credit: {\n currency: response?.data?.company?.credit?.available_credit?.currency || '',\n value: response?.data?.company?.credit?.available_credit?.value || 0,\n },\n credit_limit: {\n currency: response?.data?.company?.credit?.credit_limit?.currency || '',\n value: response?.data?.company?.credit?.credit_limit?.value || 0,\n },\n outstanding_balance: {\n currency: response?.data?.company?.credit?.outstanding_balance?.currency || '',\n value: response?.data?.company?.credit?.outstanding_balance?.value || 0,\n },\n },\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { CompanyCreditHistory } from '@/company-management/data/models/company-credit-history';\n\nexport const transformCompanyCreditHistory = (\n response: CompanyCreditHistoryResponse\n): CompanyCreditHistory => {\n const creditHistory = response?.data?.company?.credit_history;\n\n return {\n items: creditHistory?.items?.map(item => ({\n amount: {\n currency: item?.amount?.currency || '',\n value: item?.amount?.value || 0,\n },\n balance: {\n availableCredit: {\n currency: item?.balance?.available_credit?.currency || '',\n value: item?.balance?.available_credit?.value || 0,\n },\n creditLimit: {\n currency: item?.balance?.credit_limit?.currency || '',\n value: item?.balance?.credit_limit?.value || 0,\n },\n outstandingBalance: {\n currency: item?.balance?.outstanding_balance?.currency || '',\n value: item?.balance?.outstanding_balance?.value || 0,\n },\n },\n customReferenceNumber: item?.custom_reference_number || undefined,\n date: item?.date || '',\n type: item?.type || '',\n updatedBy: {\n name: item?.updated_by?.name || '',\n type: item?.updated_by?.type || '',\n },\n })) || [],\n pageInfo: {\n currentPage: creditHistory?.page_info?.current_page || 1,\n pageSize: creditHistory?.page_info?.page_size || 20,\n totalPages: creditHistory?.page_info?.total_pages || 0,\n },\n totalCount: creditHistory?.total_count || 0,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_COMPANY_CREDIT = /* GraphQL */ `\n query GET_COMPANY_CREDIT \n {\n company {\n credit {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\n }\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GET_COMPANY_CREDIT } from \"./graphql/getCompanyCredit.graphql\";\nimport { CompanyCreditResponse } from '@/company-management/types/api/getCompanyCredit.types';\nimport { transformCompanyCredit } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditInfo } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCredit = async (): Promise<CompanyCreditInfo | null> => {\n\n return await fetchGraphQl(GET_COMPANY_CREDIT, {\n method: 'GET',\n cache: 'no-cache',\n })\n .then((response: CompanyCreditResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCredit(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_COMPANY_CREDIT_HISTORY = /* GraphQL */ `\n query GET_COMPANY_CREDIT_HISTORY($filter: CompanyCreditHistoryFilterInput, $pageSize: Int, $currentPage: Int) {\n company {\n credit_history(\n filter: $filter\n pageSize: $pageSize\n currentPage: $currentPage\n ) {\n items {\n amount {\n currency\n value\n }\n balance {\n available_credit {\n currency\n value\n }\n credit_limit {\n currency\n value\n }\n outstanding_balance {\n currency\n value\n }\n }\n custom_reference_number\n date\n type\n updated_by {\n name\n type\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\n }\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GET_COMPANY_CREDIT_HISTORY } from \"./graphql/getCompanyCreditHistory.graphql\";\nimport { CompanyCreditHistoryResponse } from '@/company-management/types/api/getCompanyCreditHistory.types';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\nimport { transformCompanyCreditHistory } from '@/company-management/data/transforms';\nimport { handleNetworkError } from '@/company-management/lib';\nimport { CompanyCreditHistory } from '@/company-management/data/models';\nimport { fetchGraphQl } from '../fetch-graphql';\n\nexport const getCompanyCreditHistory = async (params: GetCompanyCreditHistoryParams = {}): Promise<CompanyCreditHistory | null> => {\n const { filter, pageSize = 20, currentPage = 1 } = params;\n\n // Transform camelCase filter to snake_case for GraphQL\n const graphqlFilter = filter ? {\n custom_reference_number: filter.customReferenceNumber,\n operation_type: filter.operationType,\n updated_by: filter.updatedBy,\n } : null;\n\n return await fetchGraphQl(GET_COMPANY_CREDIT_HISTORY, {\n method: 'GET',\n cache: 'no-cache',\n variables: {\n filter: graphqlFilter,\n pageSize,\n currentPage,\n },\n })\n .then((response: CompanyCreditHistoryResponse) => {\n if (response.errors?.length) {\n return null;\n }\n\n const transformedData = transformCompanyCreditHistory(response);\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};\n"],"names":["transformCompanyCredit","response","_d","_c","_b","_a","_h","_g","_f","_e","_l","_k","_j","_i","_p","_o","_n","_m","_t","_s","_r","_q","_x","_w","_v","_u","transformCompanyCreditHistory","creditHistory","item","GET_COMPANY_CREDIT","getCompanyCredit","fetchGraphQl","handleNetworkError","GET_COMPANY_CREDIT_HISTORY","getCompanyCreditHistory","params","filter","pageSize","currentPage","graphqlFilter"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as e,jsxs as h,Fragment as O}from"@dropins/tools/preact-jsx-runtime.js";import{useState as g,useRef as _,useMemo as k,useCallback as z,useEffect as F}from"@dropins/tools/preact-hooks.js";/* empty css */import{Card as I,InLineAlert as T,Price as D,Table as Z,Button as w,Picker as U}from"@dropins/tools/components.js";import{events as G}from"@dropins/tools/event-bus.js";import{g as $,a as q}from"../chunks/getCompanyCreditHistory.js";import{e as J,f as K}from"../chunks/CompanyLoaders.js";import{useText as j}from"@dropins/tools/i18n.js";import{classes as Q}from"@dropins/tools/lib.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";const V=20,A=1,W=({initialParams:c={},translations:m})=>{const[i,a]=g([]),[o,d]=g(!1),[t,y]=g(c.currentPage||A),[f,v]=g(c.pageSize||V),[H,p]=g(0),[u,P]=g(1),[N,L]=g(""),b=_(m);b.current=m;const n=_(c),s=k(()=>({...n.current,currentPage:t,pageSize:f}),[t,f]),C=z(async()=>{var r;d(!0);try{const l=await $(s);l?(a(l.items),p(l.totalCount||l.items.length),P(((r=l.pageInfo)==null?void 0:r.totalPages)||1),L(b.current.ariaDataLoaded.replace("{count}",l.items.length.toString()))):(a([]),p(0),P(1),L(b.current.ariaDataError))}catch(l){console.error("Failed to load company credit history:",l),a([]),p(0),P(1),L(b.current.ariaDataError)}finally{d(!1)}},[s]);F(()=>{C()},[C]);const B=z(r=>{let l;if(typeof r=="string")l=r;else if("target"in r&&r.target&&"value"in r.target)l=r.target.value;else return;const R=parseInt(l,10);isNaN(R)||(v(R),y(A))},[]),S=z(()=>{t>1&&y(t-1)},[t]),x=z(()=>{t<u&&y(t+1)},[t,u]),E=z(r=>{r>=1&&r<=u&&r!==t&&y(r)},[t,u]),M=z(async()=>{await C()},[C]);return{items:i,currentPage:t,pageSize:f,totalItems:H,totalPages:u,loading:o,announcement:N,handlePageSizeChange:B,handlePreviousPage:S,handleNextPage:x,handlePageChange:E,refreshCreditHistory:M}},X=({className:c,...m})=>{var u,P,N,L,b,n,s,C,B;const i=j({creditAvailable:"Company.CompanyCredit.creditAvailable",creditLimit:"Company.CompanyCredit.creditLimit",outstandingBalance:"Company.CompanyCredit.outstandingBalance",noData:"Company.shared.messages.noData",loading:"Company.shared.messages.loading",loadError:"Company.CompanyCredit.messages.loadError"}),[a,o]=g(null),[d,t]=g(!1),[y,f]=g(null),v=_(!1),H=_(!1),p=z(async()=>{if(!v.current){v.current=!0,t(!0),f(null);try{const S=await q();o(S)}catch(S){console.error("Failed to load company credit:",S),f(i.loadError),o(null)}finally{t(!1),v.current=!1}}},[i.loadError]);return F(()=>{H.current||(H.current=!0,p())},[p]),F(()=>{const S=()=>{o(null),H.current=!1,p()},x=G.on("companyContext/changed",S,{eager:!0});return()=>{var E;(E=x==null?void 0:x.off)==null||E.call(x)}},[p]),d?e("div",{...m,className:c,children:e(I,{variant:"primary",className:"company-management-company-credit-loading",children:e(J,{testId:"companyCreditLoader"})})}):y?e("div",{...m,className:c,children:e(T,{heading:y,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:y})})}):e("div",{...m,className:c,children:a===null||!a.credit?e(T,{heading:i.noData,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:i.noData})}):h("div",{className:"company-management-company-credit-grid",children:[e(I,{variant:"secondary",className:"company-management-company-credit-outstanding-balance",children:h("p",{children:[i.outstandingBalance,e("br",{}),e(D,{size:"large",amount:((u=a.credit.outstanding_balance)==null?void 0:u.value)??0,currency:((P=a.credit.outstanding_balance)==null?void 0:P.currency)??"",className:(((N=a.credit.outstanding_balance)==null?void 0:N.value)??0)<0?".company-management-company-credit-grid .company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-available-credit",children:h("p",{children:[i.creditAvailable,e("br",{}),e(D,{size:"large",amount:((L=a.credit.available_credit)==null?void 0:L.value)??0,currency:((b=a.credit.available_credit)==null?void 0:b.currency)??"",className:(((n=a.credit.available_credit)==null?void 0:n.value)??0)<0?".company-management-company-credit-grid .company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-credit-limit",children:h("p",{children:[i.creditLimit,e("br",{}),e(D,{size:"large",amount:((s=a.credit.credit_limit)==null?void 0:s.value)??0,currency:((C=a.credit.credit_limit)==null?void 0:C.currency)??"",className:(((B=a.credit.credit_limit)==null?void 0:B.value)??0)<0?".company-management-company-credit-grid .company-management-company-credit-negative":void 0})]})})]})})},Y=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],aa=({className:c,initialParams:m={},...i})=>{const a=j({loading:"Company.shared.messages.loading",noData:"Company.shared.messages.noData",error:"Company.shared.messages.error",dateColumn:"Company.CompanyCreditHistory.columns.date",operationColumn:"Company.CompanyCreditHistory.columns.operation",amountColumn:"Company.CompanyCreditHistory.columns.amount",outstandingBalanceColumn:"Company.CompanyCreditHistory.columns.outstandingBalance",availableCreditColumn:"Company.CompanyCreditHistory.columns.availableCredit",creditLimitColumn:"Company.CompanyCreditHistory.columns.creditLimit",customReferenceColumn:"Company.CompanyCreditHistory.columns.customReference",updatedByColumn:"Company.CompanyCreditHistory.columns.updatedBy",itemsText:"Company.CompanyCreditHistory.pagination.itemsCount",itemsPerPageLabel:"Company.CompanyCreditHistory.pagination.itemsPerPage",showLabel:"Company.CompanyCreditHistory.pagination.show",perPageLabel:"Company.CompanyCreditHistory.pagination.perPage",previousPage:"Company.CompanyCreditHistory.pagination.previous",nextPage:"Company.CompanyCreditHistory.pagination.next",pageInfo:"Company.CompanyCreditHistory.pagination.pageInfo",ariaDataLoaded:"Company.CompanyCreditHistory.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyCreditHistory.ariaLabels.dataError",ariaLoadingHistory:"Company.CompanyCreditHistory.ariaLabels.loadingHistory",ariaHistoryTable:"Company.CompanyCreditHistory.ariaLabels.historyTable",ariaPaginationNav:"Company.CompanyCreditHistory.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyCreditHistory.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyCreditHistory.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyCreditHistory.ariaLabels.nextPageFull",ariaShowingHistory:"Company.CompanyCreditHistory.ariaLabels.showingHistory",ariaPageNavigation:"Company.CompanyCreditHistory.ariaLabels.pageNavigation"}),{items:o,loading:d,currentPage:t,pageSize:y,totalItems:f,totalPages:v,announcement:H,handlePageSizeChange:p,handlePreviousPage:u,handleNextPage:P,refreshCreditHistory:N}=W({initialParams:m,translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}});F(()=>{const n=()=>{N()},s=G.on("companyContext/changed",n,{eager:!0});return()=>{var C;(C=s==null?void 0:s.off)==null||C.call(s)}},[N]);const L=k(()=>[{key:"date",label:a.dateColumn},{key:"operation",label:a.operationColumn},{key:"amount",label:a.amountColumn},{key:"outstandingBalance",label:a.outstandingBalanceColumn},{key:"availableCredit",label:a.availableCreditColumn},{key:"creditLimit",label:a.creditLimitColumn},{key:"customReference",label:a.customReferenceColumn},{key:"updatedBy",label:a.updatedByColumn}],[a.dateColumn,a.operationColumn,a.amountColumn,a.outstandingBalanceColumn,a.availableCreditColumn,a.creditLimitColumn,a.customReferenceColumn,a.updatedByColumn]),b=k(()=>o.map(n=>({date:new Date(n.date).toLocaleDateString(),operation:n.type.replace("_"," "),amount:n.amount.value===0?"":h("span",{className:`company-management-amount ${n.amount.value>=0?"company-management-amount--positive":"company-management-amount--negative"}`,children:[n.amount.value>=0?"+":"",e(D,{amount:Math.abs(n.amount.value),currency:n.amount.currency,size:"small"})]}),outstandingBalance:e(D,{amount:n.balance.outstandingBalance.value,currency:n.balance.outstandingBalance.currency,size:"small"}),availableCredit:e(D,{amount:n.balance.availableCredit.value,currency:n.balance.availableCredit.currency,size:"small"}),creditLimit:e(D,{amount:n.balance.creditLimit.value,currency:n.balance.creditLimit.currency,size:"small"}),customReference:n.customReferenceNumber||"-",updatedBy:n.updatedBy.name})),[o]);return h("section",{...i,className:Q(["company-management-company-credit-history-display",c]),children:[e("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:H}),e("div",{"aria-busy":d,children:d?e("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:e(K,{testId:"companyCreditHistoryLoader"})}):e(O,{children:o.length?e(Z,{className:"company-management-company-credit-history-table",columns:L,rowData:b,mobileLayout:"stacked","aria-label":a.ariaHistoryTable,summary:a.ariaShowingHistory.replace("{count}",o.length.toString())}):e("div",{className:"company-management-company-credit-history-empty",children:e("p",{children:a.noData})})})}),!d&&o.length>0&&h("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[e("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsText.replace("{count}",f.toString())}),v>1&&h("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[e(w,{variant:"secondary",onClick:u,disabled:t===1||d,"aria-label":a.ariaPreviousPageFull.replace("{current}",t.toString()),children:a.previousPage}),e("span",{"aria-current":"page","aria-live":"polite",children:a.pageInfo.replace("{current}",t.toString()).replace("{total}",v.toString())}),e(w,{variant:"secondary",onClick:P,disabled:t===v||d,"aria-label":a.ariaNextPageFull.replace("{current}",t.toString()),children:a.nextPage})]}),h("div",{className:"pageSizeSelector",children:[e("label",{htmlFor:"page-size-select",id:"page-size-label",children:e("span",{children:a.showLabel})}),e(U,{id:"page-size-select",name:"pageSize",value:y.toString(),options:Y,handleSelect:p,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),e("span",{id:"page-size-description",children:a.perPageLabel})]})]})]})},ya=({creditHistoryParams:c={},showCreditHistory:m=!0,className:i,children:a,...o})=>h("section",{...o,className:i,children:[e(X,{}),m&&e(aa,{initialParams:c,style:{marginTop:"24px"}}),a]});export{ya as CompanyCredit,ya as default};
|
|
3
|
+
import{jsx as e,jsxs as v,Fragment as M}from"@dropins/tools/preact-jsx-runtime.js";import{useState as h,useRef as T,useMemo as k,useCallback as D,useEffect as R}from"@dropins/tools/preact-hooks.js";/* empty css */import{Card as I,InLineAlert as w,Price as B,Table as U,Button as _,Picker as Z}from"@dropins/tools/components.js";import{events as G}from"@dropins/tools/event-bus.js";import{e as $,f as q}from"../chunks/CompanyLoaders.js";import{g as J,a as K}from"../chunks/getCompanyCreditHistory.js";import{useText as j}from"@dropins/tools/i18n.js";import{classes as Q}from"@dropins/tools/lib.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";const V=20,F=1,W=({initialParams:l={},translations:c})=>{const[s,a]=h([]),[m,p]=h(!1),[t,d]=h(l.currentPage||F),[u,r]=h(l.pageSize||V),[S,C]=h(0),[g,H]=h(1),[N,b]=h(""),f=T(c);f.current=c;const x=T(l),z=k(()=>({...x.current,currentPage:t,pageSize:u}),[t,u]),P=D(async()=>{var o;p(!0);try{const y=await J(z);y?(a(y.items),C(y.totalCount||y.items.length),H(((o=y.pageInfo)==null?void 0:o.totalPages)||1),b(f.current.ariaDataLoaded.replace("{count}",y.items.length.toString()))):(a([]),C(0),H(1),b(f.current.ariaDataLoaded.replace("{count}","0")))}catch(y){console.error("Failed to load company credit history:",y),a([]),C(0),H(1),b(f.current.ariaDataError)}finally{p(!1)}},[z]);R(()=>{P()},[P]);const E=D(o=>{let y;if(typeof o=="string")y=o;else if("target"in o&&o.target&&"value"in o.target)y=o.target.value;else return;const A=parseInt(y,10);isNaN(A)||(r(A),d(F))},[]),n=D(()=>{t>1&&d(t-1)},[t]),i=D(()=>{t<g&&d(t+1)},[t,g]),L=D(o=>{o>=1&&o<=g&&o!==t&&d(o)},[t,g]),O=D(async()=>{await P()},[P]);return{items:s,currentPage:t,pageSize:u,totalItems:S,totalPages:g,loading:m,announcement:N,handlePageSizeChange:E,handlePreviousPage:n,handleNextPage:i,handlePageChange:L,refreshCreditHistory:O}},X=({className:l,...c})=>{var g,H,N,b,f,x,z,P,E;const s=j({creditAvailable:"Company.CompanyCredit.creditAvailable",creditLimit:"Company.CompanyCredit.creditLimit",outstandingBalance:"Company.CompanyCredit.outstandingBalance",noData:"Company.shared.messages.noData",loading:"Company.shared.messages.loading",loadError:"Company.CompanyCredit.messages.loadError"}),[a,m]=h(null),[p,t]=h(!1),[d,u]=h(null),r=T(!1),S=T(!1),C=D(async()=>{if(!r.current){r.current=!0,t(!0),u(null);try{const n=await K();m(n)}catch(n){console.error("Failed to load company credit:",n),u(s.loadError),m(null)}finally{t(!1),r.current=!1}}},[s.loadError]);return R(()=>{S.current||(S.current=!0,C())},[C]),R(()=>{const n=()=>{m(null),S.current=!1,C()},i=G.on("companyContext/changed",n,{eager:!0});return()=>{var L;(L=i==null?void 0:i.off)==null||L.call(i)}},[C]),p?e("div",{...c,className:l,children:e(I,{variant:"primary",className:"company-management-company-credit-loading",children:e($,{testId:"companyCreditLoader"})})}):d?e("div",{...c,className:l,children:e(w,{heading:d,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:d})})}):e("div",{...c,className:l,children:a===null||!a.credit?e(w,{heading:s.noData,type:"error",icon:void 0,variant:"primary",className:"company-management-company-credit-error",children:e("p",{children:s.noData})}):v("div",{className:"company-management-company-credit-grid",children:[e(I,{variant:"secondary",className:"company-management-company-credit-outstanding-balance",children:v("p",{children:[s.outstandingBalance,e("br",{}),e(B,{size:"large",amount:((g=a.credit.outstanding_balance)==null?void 0:g.value)??0,currency:((H=a.credit.outstanding_balance)==null?void 0:H.currency)??"",className:(((N=a.credit.outstanding_balance)==null?void 0:N.value)??0)<0?"company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-available-credit",children:v("p",{children:[s.creditAvailable,e("br",{}),e(B,{size:"large",amount:((b=a.credit.available_credit)==null?void 0:b.value)??0,currency:((f=a.credit.available_credit)==null?void 0:f.currency)??"",className:(((x=a.credit.available_credit)==null?void 0:x.value)??0)<0?"company-management-company-credit-negative":void 0})]})}),e(I,{variant:"secondary",className:"company-management-company-credit-credit-limit",children:v("p",{children:[s.creditLimit,e("br",{}),e(B,{size:"large",amount:((z=a.credit.credit_limit)==null?void 0:z.value)??0,currency:((P=a.credit.credit_limit)==null?void 0:P.currency)??"",className:(((E=a.credit.credit_limit)==null?void 0:E.value)??0)<0?".company-management-company-credit-grid .company-management-company-credit-negative":void 0})]})})]})})},Y=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],aa=l=>l.split("_").map(c=>c.charAt(0).toUpperCase()+c.slice(1).toLowerCase()).join(" "),ea=({className:l,initialParams:c={},...s})=>{const a=j({noData:"Company.shared.messages.noData",dateColumn:"Company.CompanyCreditHistory.columns.date",operationColumn:"Company.CompanyCreditHistory.columns.operation",amountColumn:"Company.CompanyCreditHistory.columns.amount",outstandingBalanceColumn:"Company.CompanyCreditHistory.columns.outstandingBalance",availableCreditColumn:"Company.CompanyCreditHistory.columns.availableCredit",creditLimitColumn:"Company.CompanyCreditHistory.columns.creditLimit",customReferenceColumn:"Company.CompanyCreditHistory.columns.customReference",updatedByColumn:"Company.CompanyCreditHistory.columns.updatedBy",itemsRangeText:"Company.CompanyCreditHistory.pagination.itemsRange",itemsPerPageLabel:"Company.CompanyCreditHistory.pagination.itemsPerPage",showLabel:"Company.CompanyCreditHistory.pagination.show",perPageLabel:"Company.CompanyCreditHistory.pagination.perPage",ariaDataLoaded:"Company.CompanyCreditHistory.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyCreditHistory.ariaLabels.dataError",ariaLoadingHistory:"Company.CompanyCreditHistory.ariaLabels.loadingHistory",ariaHistoryTable:"Company.CompanyCreditHistory.ariaLabels.historyTable",ariaPaginationNav:"Company.CompanyCreditHistory.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyCreditHistory.ariaLabels.pageSizeSelector",ariaPreviousPage:"Company.CompanyCreditHistory.ariaLabels.previousPage",ariaNextPage:"Company.CompanyCreditHistory.ariaLabels.nextPage",ariaGoToPage:"Company.CompanyCreditHistory.ariaLabels.goToPage",ariaCurrentPage:"Company.CompanyCreditHistory.ariaLabels.currentPage",ariaShowingHistory:"Company.CompanyCreditHistory.ariaLabels.showingHistory",ariaPageNavigation:"Company.CompanyCreditHistory.ariaLabels.pageNavigation"}),{items:m,loading:p,currentPage:t,pageSize:d,totalItems:u,totalPages:r,announcement:S,handlePageSizeChange:C,handlePreviousPage:g,handleNextPage:H,handlePageChange:N,refreshCreditHistory:b}=W({initialParams:c,translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}}),f=u===0?0:(t-1)*d+1,x=Math.min(t*d,u),z=()=>{if(r<=5)return Array.from({length:r},(i,L)=>L+1);const n=[];return t<=3?n.push(1,2,3,4,"...",r):t>=r-2?n.push(1,"...",r-3,r-2,r-1,r):n.push(1,"...",t-1,t,t+1,"...",r),n};R(()=>{const n=()=>{b()},i=G.on("companyContext/changed",n,{eager:!0});return()=>{var L;(L=i==null?void 0:i.off)==null||L.call(i)}},[b]);const P=k(()=>[{key:"date",label:a.dateColumn},{key:"operation",label:a.operationColumn},{key:"amount",label:a.amountColumn},{key:"outstandingBalance",label:a.outstandingBalanceColumn},{key:"availableCredit",label:a.availableCreditColumn},{key:"creditLimit",label:a.creditLimitColumn},{key:"customReference",label:a.customReferenceColumn},{key:"updatedBy",label:a.updatedByColumn}],[a.dateColumn,a.operationColumn,a.amountColumn,a.outstandingBalanceColumn,a.availableCreditColumn,a.creditLimitColumn,a.customReferenceColumn,a.updatedByColumn]),E=k(()=>m.map(n=>({date:new Date(n.date).toLocaleDateString(),operation:aa(n.type),amount:n.amount.value===0?"":e("span",{children:e(B,{amount:n.amount.value,currency:n.amount.currency,size:"small",className:"company-management-price-normal"})}),outstandingBalance:e(B,{amount:n.balance.outstandingBalance.value,currency:n.balance.outstandingBalance.currency,size:"small",className:"company-management-price-normal"}),availableCredit:e(B,{amount:n.balance.availableCredit.value,currency:n.balance.availableCredit.currency,size:"small",className:"company-management-price-normal"}),creditLimit:e(B,{amount:n.balance.creditLimit.value,currency:n.balance.creditLimit.currency,size:"small",className:"company-management-price-normal"}),customReference:n.customReferenceNumber||"",updatedBy:n.updatedBy.name})),[m]);return v("section",{...s,className:Q(["company-management-company-credit-history-display",l]),children:[e("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:S}),e("div",{"aria-busy":p,children:p?e("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:e(q,{testId:"companyCreditHistoryLoader"})}):v(M,{children:[e(U,{className:"company-management-company-credit-history-table",columns:P,rowData:E,mobileLayout:"stacked","aria-label":a.ariaHistoryTable,summary:a.ariaShowingHistory.replace("{count}",m.length.toString())}),!m.length&&e(w,{type:"warning",heading:a.noData,className:"company-management-company-credit-history-no-data-alert"})]})}),!p&&m.length>0&&v("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[e("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsRangeText.replace("{start}",f.toString()).replace("{end}",x.toString()).replace("{total}",u.toString())}),r>1&&v("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[e(_,{variant:"secondary",onClick:g,disabled:t===1||p,"aria-label":a.ariaPreviousPage,className:"paginationButton",children:"<"}),z().map((n,i)=>n==="..."?e("span",{className:"paginationEllipsis",children:"..."},`ellipsis-${i}`):e(_,{variant:t===n?"primary":"secondary",onClick:()=>N==null?void 0:N(n),disabled:p,"aria-label":t===n?a.ariaCurrentPage.replace("{page}",String(n)):a.ariaGoToPage.replace("{page}",String(n)),"aria-current":t===n?"page":void 0,className:"paginationButton",children:n},n)),e(_,{variant:"secondary",onClick:H,disabled:t===r||p,"aria-label":a.ariaNextPage,className:"paginationButton",children:">"})]}),v("div",{className:"pageSizeSelector",children:[e("label",{htmlFor:"page-size-select",id:"page-size-label",children:e("span",{children:a.showLabel})}),e(Z,{id:"page-size-select",name:"pageSize",value:d.toString(),options:Y,handleSelect:C,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),e("span",{id:"page-size-description",children:a.perPageLabel})]})]})]})},pa=({creditHistoryParams:l={},showCreditHistory:c=!0,className:s,children:a,...m})=>v("section",{...m,className:s,children:[e(X,{}),c&&e(ea,{initialParams:l,style:{marginTop:"24px"}}),a]});export{pa as CompanyCredit,pa as default};
|
|
4
4
|
//# sourceMappingURL=CompanyCredit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyCredit.js","sources":["/@dropins/storefront-company-management/src/hooks/containers/useCompanyCreditHistory.tsx","/@dropins/storefront-company-management/src/components/CompanyCreditDisplay/CompanyCreditDisplay.tsx","/@dropins/storefront-company-management/src/components/CompanyCreditHistoryDisplay/CompanyCreditHistoryDisplay.tsx","/@dropins/storefront-company-management/src/containers/CompanyCredit/CompanyCredit.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState, useCallback, useRef, useMemo } from 'preact/hooks';\nimport { getCompanyCreditHistory } from '@/company-management/api';\nimport { CompanyCreditHistoryItem } from '@/company-management/data/models';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\n\n// Constants\nconst DEFAULT_PAGE_SIZE = 20;\nconst FIRST_PAGE = 1;\n\nexport interface UseCompanyCreditHistoryProps {\n /** Initial parameters for the credit history query */\n initialParams?: GetCompanyCreditHistoryParams;\n /** Translations for accessibility announcements */\n translations: {\n ariaDataLoaded: string;\n ariaDataError: string;\n };\n}\n\nexport interface UseCompanyCreditHistoryReturn {\n // Core data\n items: CompanyCreditHistoryItem[];\n \n // Pagination state\n currentPage: number;\n pageSize: number;\n totalItems: number;\n totalPages: number;\n \n // Loading states\n loading: boolean;\n \n // UI state\n announcement: string;\n \n // Actions\n handlePageSizeChange: (event: Event | { target?: { value: string } } | string) => void;\n handlePreviousPage: () => void;\n handleNextPage: () => void;\n handlePageChange: (page: number) => void;\n refreshCreditHistory: () => Promise<void>;\n}\n\nexport const useCompanyCreditHistory = ({ \n initialParams = {}, \n translations \n}: UseCompanyCreditHistoryProps): UseCompanyCreditHistoryReturn => {\n const [items, setItems] = useState<CompanyCreditHistoryItem[]>([]);\n const [loading, setLoading] = useState(false);\n const [currentPage, setCurrentPage] = useState(initialParams.currentPage || FIRST_PAGE);\n const [pageSize, setPageSize] = useState(initialParams.pageSize || DEFAULT_PAGE_SIZE);\n const [totalItems, setTotalItems] = useState(0);\n const [totalPages, setTotalPages] = useState(1);\n const [announcement, setAnnouncement] = useState('');\n\n // Stable reference to translations to prevent unnecessary re-renders\n const translationsRef = useRef(translations);\n translationsRef.current = translations;\n\n // Keep track of initial params\n const initialParamsRef = useRef(initialParams);\n\n // Memoized params for API call\n const apiParams = useMemo((): GetCompanyCreditHistoryParams => ({\n ...initialParamsRef.current,\n currentPage,\n pageSize,\n }), [currentPage, pageSize]);\n\n // Fetch credit history data\n const fetchCreditHistory = useCallback(async () => {\n setLoading(true);\n try {\n const response = await getCompanyCreditHistory(apiParams);\n \n if (response) {\n // Batch state updates for better performance\n setItems(response.items);\n setTotalItems(response.totalCount || response.items.length);\n setTotalPages(response.pageInfo?.totalPages || 1);\n setAnnouncement(\n translationsRef.current.ariaDataLoaded.replace(\n '{count}', \n response.items.length.toString()\n )\n );\n } else {\n // Handle null response\n setItems([]);\n setTotalItems(0);\n setTotalPages(1);\n setAnnouncement(translationsRef.current.ariaDataError);\n }\n } catch (error) {\n console.error('Failed to load company credit history:', error);\n // Batch error state updates\n setItems([]);\n setTotalItems(0);\n setTotalPages(1);\n setAnnouncement(translationsRef.current.ariaDataError);\n } finally {\n setLoading(false);\n }\n }, [apiParams]);\n\n // Fetch credit history when dependencies change\n useEffect(() => {\n fetchCreditHistory();\n }, [fetchCreditHistory]);\n\n // Handle page size change\n const handlePageSizeChange = useCallback((event: Event | { target?: { value: string } } | string) => {\n let value: string;\n if (typeof event === 'string') {\n value = event;\n } else if ('target' in event && event.target && 'value' in event.target) {\n value = event.target.value;\n } else {\n return;\n }\n const newSize = parseInt(value, 10);\n if (!isNaN(newSize)) {\n setPageSize(newSize);\n setCurrentPage(FIRST_PAGE); // Reset to first page when page size changes\n }\n }, []);\n\n // Handle page navigation\n const handlePreviousPage = useCallback(() => {\n if (currentPage > 1) {\n setCurrentPage(currentPage - 1);\n }\n }, [currentPage]);\n\n const handleNextPage = useCallback(() => {\n if (currentPage < totalPages) {\n setCurrentPage(currentPage + 1);\n }\n }, [currentPage, totalPages]);\n\n // Handle direct page change (for pagination buttons like First, Last)\n const handlePageChange = useCallback((page: number) => {\n if (page >= 1 && page <= totalPages && page !== currentPage) {\n setCurrentPage(page);\n }\n }, [currentPage, totalPages]);\n\n // Expose refresh function for external use (e.g., after company context changes)\n const refreshCreditHistory = useCallback(async () => {\n await fetchCreditHistory();\n }, [fetchCreditHistory]);\n\n return {\n // Core data\n items,\n \n // Pagination state\n currentPage,\n pageSize,\n totalItems,\n totalPages,\n \n // Loading states\n loading,\n \n // UI state\n announcement,\n \n // Actions\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n handlePageChange,\n refreshCreditHistory,\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport '@/company-management/components/CompanyCreditDisplay/CompanyCreditDisplay.css';\nimport { Card, InLineAlert, Price } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CompanyCreditInfo } from '@/company-management/data/models';\nimport { getCompanyCredit } from '@/company-management/api/getCompanyCredit';\nimport { CompanyCreditLoader } from '@/company-management/components/CompanyLoaders';\n\nexport interface CompanyCreditDisplayProps extends HTMLAttributes<HTMLDivElement> {\n // No props needed - component manages its own data\n}\n\nexport const CompanyCreditDisplay: FunctionComponent<CompanyCreditDisplayProps> = ({\n className,\n ...props\n}) => {\n const translations = useText({\n creditAvailable: 'Company.CompanyCredit.creditAvailable',\n creditLimit: 'Company.CompanyCredit.creditLimit',\n outstandingBalance: 'Company.CompanyCredit.outstandingBalance',\n noData: 'Company.shared.messages.noData',\n loading: 'Company.shared.messages.loading',\n loadError: 'Company.CompanyCredit.messages.loadError',\n });\n\n const [companyCreditData, setCompanyCreditData] = useState<CompanyCreditInfo | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n \n // Keep stable references to avoid re-creating callbacks/effects\n const inFlightRef = useRef<boolean>(false);\n const didInitialFetchRef = useRef<boolean>(false);\n\n const fetchCompanyCredit = useCallback(async () => {\n if (inFlightRef.current) {\n return;\n }\n inFlightRef.current = true;\n setLoading(true);\n setError(null);\n \n try {\n const companyCreditInfo: CompanyCreditInfo | null = await getCompanyCredit();\n setCompanyCreditData(companyCreditInfo);\n } catch (error) {\n console.error('Failed to load company credit:', error);\n setError(translations.loadError);\n setCompanyCreditData(null);\n } finally {\n setLoading(false);\n inFlightRef.current = false;\n }\n }, [translations.loadError]);\n\n // Initial data fetch\n useEffect(() => {\n if (!didInitialFetchRef.current) {\n didInitialFetchRef.current = true;\n fetchCompanyCredit();\n }\n }, [fetchCompanyCredit]);\n\n // Listen to company context changes\n useEffect(() => {\n const handleCompanyContextChange = () => {\n setCompanyCreditData(null);\n didInitialFetchRef.current = false; // Allow re-fetch on context change\n fetchCompanyCredit();\n };\n\n // Use the same event pattern as other company components\n const subscription = events.on(\n 'companyContext/changed',\n handleCompanyContextChange,\n { eager: true }\n );\n \n return () => {\n subscription?.off?.();\n };\n }, [fetchCompanyCredit]);\n\n if (loading) {\n return (\n <div {...props} className={className}>\n <Card\n variant=\"primary\"\n className=\"company-management-company-credit-loading\"\n >\n <CompanyCreditLoader testId=\"companyCreditLoader\"/>\n </Card>\n </div>\n );\n }\n\n if (error) {\n return (\n <div {...props} className={className}>\n <InLineAlert\n heading={error}\n type=\"error\"\n icon={undefined}\n variant=\"primary\"\n className=\"company-management-company-credit-error\"\n >\n <p>{error}</p>\n </InLineAlert>\n </div>\n );\n }\n return (\n <div {...props} className={className}>\n {companyCreditData === null || !companyCreditData.credit ? (\n <InLineAlert\n heading={translations.noData}\n type=\"error\"\n icon={undefined}\n variant=\"primary\"\n className=\"company-management-company-credit-error\"\n >\n <p>{translations.noData}</p>\n </InLineAlert>\n ) : (\n <div className=\"company-management-company-credit-grid\">\n <Card\n variant=\"secondary\"\n className=\"company-management-company-credit-outstanding-balance\"\n >\n <p>{translations.outstandingBalance}<br/>\n <Price \n size='large'\n amount={companyCreditData.credit.outstanding_balance?.value ?? 0} \n currency={companyCreditData.credit.outstanding_balance?.currency ?? ''} \n className={(companyCreditData.credit.outstanding_balance?.value ?? 0) < 0 ? '.company-management-company-credit-grid .company-management-company-credit-negative' : undefined}\n /></p>\n </Card>\n <Card\n variant=\"secondary\"\n className=\"company-management-company-credit-available-credit\"\n >\n <p>{translations.creditAvailable}<br/>\n <Price\n size='large'\n amount={companyCreditData.credit.available_credit?.value ?? 0} \n currency={companyCreditData.credit.available_credit?.currency ?? ''} \n className={(companyCreditData.credit.available_credit?.value ?? 0) < 0 ? '.company-management-company-credit-grid .company-management-company-credit-negative' : undefined}\n /></p>\n </Card>\n <Card\n variant=\"secondary\"\n className=\"company-management-company-credit-credit-limit\"\n >\n <p>{translations.creditLimit}<br/>\n <Price \n size='large'\n amount={companyCreditData.credit.credit_limit?.value ?? 0} \n currency={companyCreditData.credit.credit_limit?.currency ?? ''} \n className={(companyCreditData.credit.credit_limit?.value ?? 0) < 0 ? '.company-management-company-credit-grid .company-management-company-credit-negative' : undefined}\n /></p>\n </Card>\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { FunctionComponent } from 'preact';\nimport { useMemo, useEffect } from 'preact/hooks';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Button, Picker, Price, Table } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CompanyCreditHistoryLoader } from '@/company-management/components/CompanyLoaders';\nimport { useCompanyCreditHistory } from '@/company-management/hooks/containers';\nimport './CompanyCreditHistoryDisplay.css';\n\nexport interface CompanyCreditHistoryDisplayProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n /**\n * Optional initial parameters for credit history filtering and pagination\n */\n initialParams?: {\n pageSize?: number;\n currentPage?: number;\n filter?: any;\n };\n}\n\n// Constants\nconst PAGE_SIZE_OPTIONS = [\n { text: '20', value: '20' },\n { text: '30', value: '30' },\n { text: '50', value: '50' },\n { text: '100', value: '100' },\n { text: '200', value: '200' }\n];\n\nexport const CompanyCreditHistoryDisplay: FunctionComponent<CompanyCreditHistoryDisplayProps> = ({\n className,\n initialParams = {},\n ...props\n}) => {\n const translations = useText({\n loading: 'Company.shared.messages.loading',\n noData: 'Company.shared.messages.noData',\n error: 'Company.shared.messages.error',\n // Table columns\n dateColumn: 'Company.CompanyCreditHistory.columns.date',\n operationColumn: 'Company.CompanyCreditHistory.columns.operation',\n amountColumn: 'Company.CompanyCreditHistory.columns.amount', \n outstandingBalanceColumn: 'Company.CompanyCreditHistory.columns.outstandingBalance',\n availableCreditColumn: 'Company.CompanyCreditHistory.columns.availableCredit',\n creditLimitColumn: 'Company.CompanyCreditHistory.columns.creditLimit',\n customReferenceColumn: 'Company.CompanyCreditHistory.columns.customReference',\n updatedByColumn: 'Company.CompanyCreditHistory.columns.updatedBy',\n // Pagination\n itemsText: 'Company.CompanyCreditHistory.pagination.itemsCount',\n itemsPerPageLabel: 'Company.CompanyCreditHistory.pagination.itemsPerPage',\n showLabel: 'Company.CompanyCreditHistory.pagination.show',\n perPageLabel: 'Company.CompanyCreditHistory.pagination.perPage',\n previousPage: 'Company.CompanyCreditHistory.pagination.previous',\n nextPage: 'Company.CompanyCreditHistory.pagination.next',\n pageInfo: 'Company.CompanyCreditHistory.pagination.pageInfo',\n // Accessibility labels\n ariaDataLoaded: 'Company.CompanyCreditHistory.ariaLabels.dataLoaded',\n ariaDataError: 'Company.CompanyCreditHistory.ariaLabels.dataError',\n ariaLoadingHistory: 'Company.CompanyCreditHistory.ariaLabels.loadingHistory',\n ariaHistoryTable: 'Company.CompanyCreditHistory.ariaLabels.historyTable',\n ariaPaginationNav: 'Company.CompanyCreditHistory.ariaLabels.paginationNav',\n ariaPageSizeSelector: 'Company.CompanyCreditHistory.ariaLabels.pageSizeSelector',\n ariaPreviousPageFull: 'Company.CompanyCreditHistory.ariaLabels.previousPageFull',\n ariaNextPageFull: 'Company.CompanyCreditHistory.ariaLabels.nextPageFull',\n ariaShowingHistory: 'Company.CompanyCreditHistory.ariaLabels.showingHistory',\n ariaPageNavigation: 'Company.CompanyCreditHistory.ariaLabels.pageNavigation',\n });\n\n // Use the credit history hook - component now manages its own data\n const {\n items,\n loading,\n currentPage,\n pageSize,\n totalItems,\n totalPages,\n announcement,\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n refreshCreditHistory,\n } = useCompanyCreditHistory({\n initialParams,\n translations: {\n ariaDataLoaded: translations.ariaDataLoaded,\n ariaDataError: translations.ariaDataError\n }\n });\n\n // Listen to company context changes\n useEffect(() => {\n const handleCompanyContextChange = () => {\n refreshCreditHistory();\n };\n\n const subscription = events.on(\n 'companyContext/changed',\n handleCompanyContextChange,\n { eager: true }\n );\n \n return () => {\n subscription?.off?.();\n };\n }, [refreshCreditHistory]);\n\n // Prepare table columns - memoized to prevent unnecessary re-renders\n const columns = useMemo(() => [\n { key: 'date', label: translations.dateColumn },\n { key: 'operation', label: translations.operationColumn },\n { key: 'amount', label: translations.amountColumn },\n { key: 'outstandingBalance', label: translations.outstandingBalanceColumn },\n { key: 'availableCredit', label: translations.availableCreditColumn },\n { key: 'creditLimit', label: translations.creditLimitColumn },\n { key: 'customReference', label: translations.customReferenceColumn },\n { key: 'updatedBy', label: translations.updatedByColumn }\n ], [\n translations.dateColumn,\n translations.operationColumn, \n translations.amountColumn,\n translations.outstandingBalanceColumn,\n translations.availableCreditColumn,\n translations.creditLimitColumn,\n translations.customReferenceColumn,\n translations.updatedByColumn\n ]);\n\n // Prepare table row data - memoized for performance\n const rowData = useMemo(() => items.map((item) => ({\n date: new Date(item.date).toLocaleDateString(),\n operation: item.type.replace('_', ' '),\n amount: item.amount.value === 0 ? '' : (\n <span className={`company-management-amount ${item.amount.value >= 0 ? 'company-management-amount--positive' : 'company-management-amount--negative'}`}>\n {item.amount.value >= 0 ? '+' : ''}\n <Price \n amount={Math.abs(item.amount.value)} \n currency={item.amount.currency}\n size=\"small\"\n />\n </span>\n ),\n outstandingBalance: (\n <Price \n amount={item.balance.outstandingBalance.value} \n currency={item.balance.outstandingBalance.currency}\n size=\"small\"\n />\n ),\n availableCredit: (\n <Price \n amount={item.balance.availableCredit.value} \n currency={item.balance.availableCredit.currency}\n size=\"small\"\n />\n ),\n creditLimit: (\n <Price \n amount={item.balance.creditLimit.value} \n currency={item.balance.creditLimit.currency}\n size=\"small\"\n />\n ),\n customReference: item.customReferenceNumber || '-',\n updatedBy: item.updatedBy.name\n })), [items]);\n\n return (\n <section {...props} className={classes(['company-management-company-credit-history-display', className])}>\n {/* Screen reader announcements */}\n <div className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </div>\n\n {/* Table with loading state */}\n <div aria-busy={loading}>\n {loading ? (\n <div className=\"loadingContainer\" role=\"status\" aria-live=\"polite\">\n <CompanyCreditHistoryLoader testId=\"companyCreditHistoryLoader\" />\n </div>\n ) : (\n <>\n {!items.length ? (\n <div className=\"company-management-company-credit-history-empty\">\n <p>{translations.noData}</p>\n </div>\n ) : (\n <Table\n className=\"company-management-company-credit-history-table\"\n columns={columns}\n rowData={rowData}\n mobileLayout=\"stacked\"\n aria-label={translations.ariaHistoryTable}\n summary={translations.ariaShowingHistory.replace('{count}', items.length.toString())}\n />\n )}\n </>\n )}\n </div>\n\n {/* Pagination controls */}\n {!loading && items.length > 0 && (\n <nav aria-label={translations.ariaPaginationNav} className=\"paginationContainer\">\n {/* Items count on the left */}\n <div aria-live=\"polite\" aria-atomic=\"true\">\n {translations.itemsText.replace('{count}', totalItems.toString())}\n </div>\n\n {/* Pagination buttons in the center (only show when multiple pages) */}\n {totalPages > 1 && (\n <div className=\"paginationButtons\" role=\"group\" aria-label={translations.ariaPageNavigation}>\n <Button\n variant=\"secondary\"\n onClick={handlePreviousPage}\n disabled={currentPage === 1 || loading}\n aria-label={translations.ariaPreviousPageFull.replace('{current}', currentPage.toString())}\n >\n {translations.previousPage}\n </Button>\n <span aria-current=\"page\" aria-live=\"polite\">\n {translations.pageInfo.replace('{current}', currentPage.toString()).replace('{total}', totalPages.toString())}\n </span>\n <Button\n variant=\"secondary\"\n onClick={handleNextPage}\n disabled={currentPage === totalPages || loading}\n aria-label={translations.ariaNextPageFull.replace('{current}', currentPage.toString())}\n >\n {translations.nextPage}\n </Button>\n </div>\n )}\n\n {/* Page size picker on the right */}\n <div className=\"pageSizeSelector\">\n <label htmlFor=\"page-size-select\" id=\"page-size-label\">\n <span>{translations.showLabel}</span>\n </label>\n <Picker\n id=\"page-size-select\"\n name=\"pageSize\"\n value={pageSize.toString()}\n options={PAGE_SIZE_OPTIONS}\n handleSelect={handlePageSizeChange}\n aria-labelledby=\"page-size-label\"\n aria-describedby=\"page-size-description\"\n />\n <span id=\"page-size-description\">{translations.perPageLabel}</span>\n </div>\n </nav>\n )}\n </section>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { HTMLAttributes } from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { CompanyCreditDisplay } from '@/company-management/components/CompanyCreditDisplay';\nimport { CompanyCreditHistoryDisplay } from '@/company-management/components/CompanyCreditHistoryDisplay';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\n\nexport interface CompanyCreditProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Optional parameters for credit history filtering and pagination\n */\n creditHistoryParams?: GetCompanyCreditHistoryParams;\n \n /**\n * Whether to show the credit history section\n */\n showCreditHistory?: boolean;\n}\n \nexport const CompanyCredit: Container<CompanyCreditProps> = ({ \n creditHistoryParams = {}, \n showCreditHistory = true,\n className,\n children,\n ...props \n}) => {\n return (\n <section {...props} className={className}>\n <CompanyCreditDisplay />\n \n {showCreditHistory && (\n <CompanyCreditHistoryDisplay\n initialParams={creditHistoryParams}\n style={{ marginTop: '24px' }}\n />\n )}\n\n {children}\n </section>\n );\n};\n"],"names":["DEFAULT_PAGE_SIZE","FIRST_PAGE","useCompanyCreditHistory","initialParams","translations","items","setItems","useState","loading","setLoading","currentPage","setCurrentPage","pageSize","setPageSize","totalItems","setTotalItems","totalPages","setTotalPages","announcement","setAnnouncement","translationsRef","useRef","initialParamsRef","apiParams","useMemo","fetchCreditHistory","useCallback","response","getCompanyCreditHistory","_a","error","useEffect","handlePageSizeChange","event","value","newSize","handlePreviousPage","handleNextPage","handlePageChange","page","refreshCreditHistory","CompanyCreditDisplay","className","props","useText","companyCreditData","setCompanyCreditData","setError","inFlightRef","didInitialFetchRef","fetchCompanyCredit","companyCreditInfo","getCompanyCredit","handleCompanyContextChange","subscription","events","jsx","Card","CompanyCreditLoader","InLineAlert","jsxs","Price","_b","_c","_d","_e","_f","_g","_h","_i","PAGE_SIZE_OPTIONS","CompanyCreditHistoryDisplay","columns","rowData","item","classes","CompanyCreditHistoryLoader","Fragment","Table","Button","Picker","CompanyCredit","creditHistoryParams","showCreditHistory","children"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CompanyCredit.js","sources":["/@dropins/storefront-company-management/src/hooks/containers/useCompanyCreditHistory.tsx","/@dropins/storefront-company-management/src/components/CompanyCreditDisplay/CompanyCreditDisplay.tsx","/@dropins/storefront-company-management/src/components/CompanyCreditHistoryDisplay/CompanyCreditHistoryDisplay.tsx","/@dropins/storefront-company-management/src/containers/CompanyCredit/CompanyCredit.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState, useCallback, useRef, useMemo } from 'preact/hooks';\nimport { getCompanyCreditHistory } from '@/company-management/api';\nimport { CompanyCreditHistoryItem } from '@/company-management/data/models';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\n\n// Constants\nconst DEFAULT_PAGE_SIZE = 20;\nconst FIRST_PAGE = 1;\n\nexport interface UseCompanyCreditHistoryProps {\n /** Initial parameters for the credit history query */\n initialParams?: GetCompanyCreditHistoryParams;\n /** Translations for accessibility announcements */\n translations: {\n ariaDataLoaded: string;\n ariaDataError: string;\n };\n}\n\nexport interface UseCompanyCreditHistoryReturn {\n // Core data\n items: CompanyCreditHistoryItem[];\n \n // Pagination state\n currentPage: number;\n pageSize: number;\n totalItems: number;\n totalPages: number;\n \n // Loading states\n loading: boolean;\n \n // UI state\n announcement: string;\n \n // Actions\n handlePageSizeChange: (event: Event | { target?: { value: string } } | string) => void;\n handlePreviousPage: () => void;\n handleNextPage: () => void;\n handlePageChange: (page: number) => void;\n refreshCreditHistory: () => Promise<void>;\n}\n\nexport const useCompanyCreditHistory = ({ \n initialParams = {}, \n translations \n}: UseCompanyCreditHistoryProps): UseCompanyCreditHistoryReturn => {\n const [items, setItems] = useState<CompanyCreditHistoryItem[]>([]);\n const [loading, setLoading] = useState(false);\n const [currentPage, setCurrentPage] = useState(initialParams.currentPage || FIRST_PAGE);\n const [pageSize, setPageSize] = useState(initialParams.pageSize || DEFAULT_PAGE_SIZE);\n const [totalItems, setTotalItems] = useState(0);\n const [totalPages, setTotalPages] = useState(1);\n const [announcement, setAnnouncement] = useState('');\n\n // Stable reference to translations to prevent unnecessary re-renders\n const translationsRef = useRef(translations);\n translationsRef.current = translations;\n\n // Keep track of initial params\n const initialParamsRef = useRef(initialParams);\n\n // Memoized params for API call\n const apiParams = useMemo((): GetCompanyCreditHistoryParams => ({\n ...initialParamsRef.current,\n currentPage,\n pageSize,\n }), [currentPage, pageSize]);\n\n // Fetch credit history data\n const fetchCreditHistory = useCallback(async () => {\n setLoading(true);\n try {\n const response = await getCompanyCreditHistory(apiParams);\n \n if (response) {\n // Batch state updates for better performance\n setItems(response.items);\n setTotalItems(response.totalCount || response.items.length);\n setTotalPages(response.pageInfo?.totalPages || 1);\n setAnnouncement(\n translationsRef.current.ariaDataLoaded.replace(\n '{count}', \n response.items.length.toString()\n )\n );\n } else {\n // Handle null response (treat as no data, not error)\n setItems([]);\n setTotalItems(0);\n setTotalPages(1);\n setAnnouncement(\n translationsRef.current.ariaDataLoaded.replace('{count}', '0')\n );\n }\n } catch (error) {\n console.error('Failed to load company credit history:', error);\n // Batch error state updates\n setItems([]);\n setTotalItems(0);\n setTotalPages(1);\n setAnnouncement(translationsRef.current.ariaDataError);\n } finally {\n setLoading(false);\n }\n }, [apiParams]);\n\n // Fetch credit history when dependencies change\n useEffect(() => {\n fetchCreditHistory();\n }, [fetchCreditHistory]);\n\n // Handle page size change\n const handlePageSizeChange = useCallback((event: Event | { target?: { value: string } } | string) => {\n let value: string;\n if (typeof event === 'string') {\n value = event;\n } else if ('target' in event && event.target && 'value' in event.target) {\n value = event.target.value;\n } else {\n return;\n }\n const newSize = parseInt(value, 10);\n if (!isNaN(newSize)) {\n setPageSize(newSize);\n setCurrentPage(FIRST_PAGE); // Reset to first page when page size changes\n }\n }, []);\n\n // Handle page navigation\n const handlePreviousPage = useCallback(() => {\n if (currentPage > 1) {\n setCurrentPage(currentPage - 1);\n }\n }, [currentPage]);\n\n const handleNextPage = useCallback(() => {\n if (currentPage < totalPages) {\n setCurrentPage(currentPage + 1);\n }\n }, [currentPage, totalPages]);\n\n // Handle direct page change (for pagination buttons like First, Last)\n const handlePageChange = useCallback((page: number) => {\n if (page >= 1 && page <= totalPages && page !== currentPage) {\n setCurrentPage(page);\n }\n }, [currentPage, totalPages]);\n\n // Expose refresh function for external use (e.g., after company context changes)\n const refreshCreditHistory = useCallback(async () => {\n await fetchCreditHistory();\n }, [fetchCreditHistory]);\n\n return {\n // Core data\n items,\n \n // Pagination state\n currentPage,\n pageSize,\n totalItems,\n totalPages,\n \n // Loading states\n loading,\n \n // UI state\n announcement,\n \n // Actions\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n handlePageChange,\n refreshCreditHistory,\n };\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport '@/company-management/components/CompanyCreditDisplay/CompanyCreditDisplay.css';\nimport { Card, InLineAlert, Price } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CompanyCreditInfo } from '@/company-management/data/models';\nimport { getCompanyCredit } from '@/company-management/api/getCompanyCredit';\nimport { CompanyCreditLoader } from '@/company-management/components/CompanyLoaders';\n\nexport interface CompanyCreditDisplayProps extends HTMLAttributes<HTMLDivElement> {\n // No props needed - component manages its own data\n}\n\nexport const CompanyCreditDisplay: FunctionComponent<CompanyCreditDisplayProps> = ({\n className,\n ...props\n}) => {\n const translations = useText({\n creditAvailable: 'Company.CompanyCredit.creditAvailable',\n creditLimit: 'Company.CompanyCredit.creditLimit',\n outstandingBalance: 'Company.CompanyCredit.outstandingBalance',\n noData: 'Company.shared.messages.noData',\n loading: 'Company.shared.messages.loading',\n loadError: 'Company.CompanyCredit.messages.loadError',\n });\n\n const [companyCreditData, setCompanyCreditData] = useState<CompanyCreditInfo | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n \n // Keep stable references to avoid re-creating callbacks/effects\n const inFlightRef = useRef<boolean>(false);\n const didInitialFetchRef = useRef<boolean>(false);\n\n const fetchCompanyCredit = useCallback(async () => {\n if (inFlightRef.current) {\n return;\n }\n inFlightRef.current = true;\n setLoading(true);\n setError(null);\n \n try {\n const companyCreditInfo: CompanyCreditInfo | null = await getCompanyCredit();\n setCompanyCreditData(companyCreditInfo);\n } catch (error) {\n console.error('Failed to load company credit:', error);\n setError(translations.loadError);\n setCompanyCreditData(null);\n } finally {\n setLoading(false);\n inFlightRef.current = false;\n }\n }, [translations.loadError]);\n\n // Initial data fetch\n useEffect(() => {\n if (!didInitialFetchRef.current) {\n didInitialFetchRef.current = true;\n fetchCompanyCredit();\n }\n }, [fetchCompanyCredit]);\n\n // Listen to company context changes\n useEffect(() => {\n const handleCompanyContextChange = () => {\n setCompanyCreditData(null);\n didInitialFetchRef.current = false; // Allow re-fetch on context change\n fetchCompanyCredit();\n };\n\n // Use the same event pattern as other company components\n const subscription = events.on(\n 'companyContext/changed',\n handleCompanyContextChange,\n { eager: true }\n );\n \n return () => {\n subscription?.off?.();\n };\n }, [fetchCompanyCredit]);\n\n if (loading) {\n return (\n <div {...props} className={className}>\n <Card\n variant=\"primary\"\n className=\"company-management-company-credit-loading\"\n >\n <CompanyCreditLoader testId=\"companyCreditLoader\"/>\n </Card>\n </div>\n );\n }\n\n if (error) {\n return (\n <div {...props} className={className}>\n <InLineAlert\n heading={error}\n type=\"error\"\n icon={undefined}\n variant=\"primary\"\n className=\"company-management-company-credit-error\"\n >\n <p>{error}</p>\n </InLineAlert>\n </div>\n );\n }\n return (\n <div {...props} className={className}>\n {companyCreditData === null || !companyCreditData.credit ? (\n <InLineAlert\n heading={translations.noData}\n type=\"error\"\n icon={undefined}\n variant=\"primary\"\n className=\"company-management-company-credit-error\"\n >\n <p>{translations.noData}</p>\n </InLineAlert>\n ) : (\n <div className=\"company-management-company-credit-grid\">\n <Card\n variant=\"secondary\"\n className=\"company-management-company-credit-outstanding-balance\"\n >\n <p>{translations.outstandingBalance}<br/>\n <Price \n size='large'\n amount={companyCreditData.credit.outstanding_balance?.value ?? 0} \n currency={companyCreditData.credit.outstanding_balance?.currency ?? ''} \n className={(companyCreditData.credit.outstanding_balance?.value ?? 0) < 0 ? 'company-management-company-credit-negative' : undefined}\n /></p>\n </Card>\n <Card\n variant=\"secondary\"\n className=\"company-management-company-credit-available-credit\"\n >\n <p>{translations.creditAvailable}<br/>\n <Price\n size='large'\n amount={companyCreditData.credit.available_credit?.value ?? 0} \n currency={companyCreditData.credit.available_credit?.currency ?? ''} \n className={(companyCreditData.credit.available_credit?.value ?? 0) < 0 ? 'company-management-company-credit-negative' : undefined}\n /></p>\n </Card>\n <Card\n variant=\"secondary\"\n className=\"company-management-company-credit-credit-limit\"\n >\n <p>{translations.creditLimit}<br/>\n <Price \n size='large'\n amount={companyCreditData.credit.credit_limit?.value ?? 0} \n currency={companyCreditData.credit.credit_limit?.currency ?? ''} \n className={(companyCreditData.credit.credit_limit?.value ?? 0) < 0 ? '.company-management-company-credit-grid .company-management-company-credit-negative' : undefined}\n /></p>\n </Card>\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { FunctionComponent } from 'preact';\nimport { useMemo, useEffect } from 'preact/hooks';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Button, InLineAlert, Picker, Price, Table } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CompanyCreditHistoryLoader } from '@/company-management/components/CompanyLoaders';\nimport { useCompanyCreditHistory } from '@/company-management/hooks/containers';\nimport './CompanyCreditHistoryDisplay.css';\n\nexport interface CompanyCreditHistoryDisplayProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n /**\n * Optional initial parameters for credit history filtering and pagination\n */\n initialParams?: {\n pageSize?: number;\n currentPage?: number;\n filter?: any;\n };\n}\n\n// Constants\nconst PAGE_SIZE_OPTIONS = [\n { text: '20', value: '20' },\n { text: '30', value: '30' },\n { text: '50', value: '50' },\n { text: '100', value: '100' },\n { text: '200', value: '200' }\n];\n\n/**\n * Converts operation type from SCREAMING_SNAKE_CASE to Title Case\n * @param operationType - The operation type string (e.g., \"CREDIT_ADJUSTMENT\", \"PURCHASE\")\n * @returns Formatted string in title case (e.g., \"Credit Adjustment\", \"Purchase\")\n */\nconst formatOperationType = (operationType: string): string => {\n return operationType\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n};\n\nexport const CompanyCreditHistoryDisplay: FunctionComponent<CompanyCreditHistoryDisplayProps> = ({\n className,\n initialParams = {},\n ...props\n}) => {\n const translations = useText({\n noData: 'Company.shared.messages.noData',\n // Table columns\n dateColumn: 'Company.CompanyCreditHistory.columns.date',\n operationColumn: 'Company.CompanyCreditHistory.columns.operation',\n amountColumn: 'Company.CompanyCreditHistory.columns.amount', \n outstandingBalanceColumn: 'Company.CompanyCreditHistory.columns.outstandingBalance',\n availableCreditColumn: 'Company.CompanyCreditHistory.columns.availableCredit',\n creditLimitColumn: 'Company.CompanyCreditHistory.columns.creditLimit',\n customReferenceColumn: 'Company.CompanyCreditHistory.columns.customReference',\n updatedByColumn: 'Company.CompanyCreditHistory.columns.updatedBy',\n // Pagination\n itemsRangeText: 'Company.CompanyCreditHistory.pagination.itemsRange',\n itemsPerPageLabel: 'Company.CompanyCreditHistory.pagination.itemsPerPage',\n showLabel: 'Company.CompanyCreditHistory.pagination.show',\n perPageLabel: 'Company.CompanyCreditHistory.pagination.perPage',\n // Accessibility labels\n ariaDataLoaded: 'Company.CompanyCreditHistory.ariaLabels.dataLoaded',\n ariaDataError: 'Company.CompanyCreditHistory.ariaLabels.dataError',\n ariaLoadingHistory: 'Company.CompanyCreditHistory.ariaLabels.loadingHistory',\n ariaHistoryTable: 'Company.CompanyCreditHistory.ariaLabels.historyTable',\n ariaPaginationNav: 'Company.CompanyCreditHistory.ariaLabels.paginationNav',\n ariaPageSizeSelector: 'Company.CompanyCreditHistory.ariaLabels.pageSizeSelector',\n ariaPreviousPage: 'Company.CompanyCreditHistory.ariaLabels.previousPage',\n ariaNextPage: 'Company.CompanyCreditHistory.ariaLabels.nextPage',\n ariaGoToPage: 'Company.CompanyCreditHistory.ariaLabels.goToPage',\n ariaCurrentPage: 'Company.CompanyCreditHistory.ariaLabels.currentPage',\n ariaShowingHistory: 'Company.CompanyCreditHistory.ariaLabels.showingHistory',\n ariaPageNavigation: 'Company.CompanyCreditHistory.ariaLabels.pageNavigation',\n });\n\n // Use the credit history hook - component now manages its own data\n const {\n items,\n loading,\n currentPage,\n pageSize,\n totalItems,\n totalPages,\n announcement,\n handlePageSizeChange,\n handlePreviousPage,\n handleNextPage,\n handlePageChange,\n refreshCreditHistory,\n } = useCompanyCreditHistory({\n initialParams,\n translations: {\n ariaDataLoaded: translations.ariaDataLoaded,\n ariaDataError: translations.ariaDataError\n }\n });\n\n // Calculate item range for display\n const startItem = totalItems === 0 ? 0 : (currentPage - 1) * pageSize + 1;\n const endItem = Math.min(currentPage * pageSize, totalItems);\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= 5) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | string)[] = [];\n \n if (currentPage <= 3) {\n pages.push(1, 2, 3, 4, '...', totalPages);\n } else if (currentPage >= totalPages - 2) {\n pages.push(1, '...', totalPages - 3, totalPages - 2, totalPages - 1, totalPages);\n } else {\n pages.push(1, '...', currentPage - 1, currentPage, currentPage + 1, '...', totalPages);\n }\n\n return pages;\n };\n\n // Listen to company context changes\n useEffect(() => {\n const handleCompanyContextChange = () => {\n refreshCreditHistory();\n };\n\n const subscription = events.on(\n 'companyContext/changed',\n handleCompanyContextChange,\n { eager: true }\n );\n \n return () => {\n subscription?.off?.();\n };\n }, [refreshCreditHistory]);\n\n // Prepare table columns - memoized to prevent unnecessary re-renders\n const columns = useMemo(() => [\n { key: 'date', label: translations.dateColumn },\n { key: 'operation', label: translations.operationColumn },\n { key: 'amount', label: translations.amountColumn },\n { key: 'outstandingBalance', label: translations.outstandingBalanceColumn },\n { key: 'availableCredit', label: translations.availableCreditColumn },\n { key: 'creditLimit', label: translations.creditLimitColumn },\n { key: 'customReference', label: translations.customReferenceColumn },\n { key: 'updatedBy', label: translations.updatedByColumn }\n ], [\n translations.dateColumn,\n translations.operationColumn, \n translations.amountColumn,\n translations.outstandingBalanceColumn,\n translations.availableCreditColumn,\n translations.creditLimitColumn,\n translations.customReferenceColumn,\n translations.updatedByColumn\n ]);\n\n // Prepare table row data - memoized for performance\n const rowData = useMemo(() => items.map((item) => ({\n date: new Date(item.date).toLocaleDateString(),\n operation: formatOperationType(item.type),\n amount: item.amount.value === 0 ? '' : (\n <span>\n <Price \n amount={item.amount.value} \n currency={item.amount.currency}\n size=\"small\"\n className=\"company-management-price-normal\"\n />\n </span>\n ),\n outstandingBalance: (\n <Price \n amount={item.balance.outstandingBalance.value} \n currency={item.balance.outstandingBalance.currency}\n size=\"small\"\n className=\"company-management-price-normal\"\n />\n ),\n availableCredit: (\n <Price \n amount={item.balance.availableCredit.value} \n currency={item.balance.availableCredit.currency}\n size=\"small\"\n className=\"company-management-price-normal\"\n />\n ),\n creditLimit: (\n <Price \n amount={item.balance.creditLimit.value} \n currency={item.balance.creditLimit.currency}\n size=\"small\"\n className=\"company-management-price-normal\"\n />\n ),\n customReference: item.customReferenceNumber || '',\n updatedBy: item.updatedBy.name\n })), [items]);\n\n return (\n <section {...props} className={classes(['company-management-company-credit-history-display', className])}>\n {/* Screen reader announcements */}\n <div className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </div>\n\n {/* Table with loading state */}\n <div aria-busy={loading}>\n {loading ? (\n <div className=\"loadingContainer\" role=\"status\" aria-live=\"polite\">\n <CompanyCreditHistoryLoader testId=\"companyCreditHistoryLoader\" />\n </div>\n ) : (\n <>\n <Table\n className=\"company-management-company-credit-history-table\"\n columns={columns}\n rowData={rowData}\n mobileLayout=\"stacked\"\n aria-label={translations.ariaHistoryTable}\n summary={translations.ariaShowingHistory.replace('{count}', items.length.toString())}\n />\n {!items.length && (\n <InLineAlert\n type=\"warning\"\n heading={translations.noData}\n className=\"company-management-company-credit-history-no-data-alert\"\n />\n )}\n </>\n )}\n </div>\n\n {/* Pagination controls */}\n {!loading && items.length > 0 && (\n <nav aria-label={translations.ariaPaginationNav} className=\"paginationContainer\">\n {/* Items range on the left */}\n <div aria-live=\"polite\" aria-atomic=\"true\">\n {translations.itemsRangeText\n .replace('{start}', startItem.toString())\n .replace('{end}', endItem.toString())\n .replace('{total}', totalItems.toString())}\n </div>\n\n {/* Pagination buttons in the center (only show when multiple pages) */}\n {totalPages > 1 && (\n <div className=\"paginationButtons\" role=\"group\" aria-label={translations.ariaPageNavigation}>\n <Button\n variant=\"secondary\"\n onClick={handlePreviousPage}\n disabled={currentPage === 1 || loading}\n aria-label={translations.ariaPreviousPage}\n className=\"paginationButton\"\n >\n <\n </Button>\n \n {getPageNumbers().map((pageNum, index) => (\n pageNum === '...' ? (\n <span key={`ellipsis-${index}`} className=\"paginationEllipsis\">\n ...\n </span>\n ) : (\n <Button\n key={pageNum}\n variant={currentPage === pageNum ? 'primary' : 'secondary'}\n onClick={() => handlePageChange?.(pageNum as number)}\n disabled={loading}\n aria-label={currentPage === pageNum \n ? translations.ariaCurrentPage.replace('{page}', String(pageNum))\n : translations.ariaGoToPage.replace('{page}', String(pageNum))\n }\n aria-current={currentPage === pageNum ? 'page' : undefined}\n className=\"paginationButton\"\n >\n {pageNum}\n </Button>\n )\n ))}\n\n <Button\n variant=\"secondary\"\n onClick={handleNextPage}\n disabled={currentPage === totalPages || loading}\n aria-label={translations.ariaNextPage}\n className=\"paginationButton\"\n >\n >\n </Button>\n </div>\n )}\n\n {/* Page size picker on the right */}\n <div className=\"pageSizeSelector\">\n <label htmlFor=\"page-size-select\" id=\"page-size-label\">\n <span>{translations.showLabel}</span>\n </label>\n <Picker\n id=\"page-size-select\"\n name=\"pageSize\"\n value={pageSize.toString()}\n options={PAGE_SIZE_OPTIONS}\n handleSelect={handlePageSizeChange}\n aria-labelledby=\"page-size-label\"\n aria-describedby=\"page-size-description\"\n />\n <span id=\"page-size-description\">{translations.perPageLabel}</span>\n </div>\n </nav>\n )}\n </section>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { HTMLAttributes } from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { CompanyCreditDisplay } from '@/company-management/components/CompanyCreditDisplay';\nimport { CompanyCreditHistoryDisplay } from '@/company-management/components/CompanyCreditHistoryDisplay';\nimport { GetCompanyCreditHistoryParams } from '@/company-management/types/api/getCompanyCreditHistoryParams.types';\n\nexport interface CompanyCreditProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Optional parameters for credit history filtering and pagination\n */\n creditHistoryParams?: GetCompanyCreditHistoryParams;\n \n /**\n * Whether to show the credit history section\n */\n showCreditHistory?: boolean;\n}\n \nexport const CompanyCredit: Container<CompanyCreditProps> = ({ \n creditHistoryParams = {}, \n showCreditHistory = true,\n className,\n children,\n ...props \n}) => {\n return (\n <section {...props} className={className}>\n <CompanyCreditDisplay />\n \n {showCreditHistory && (\n <CompanyCreditHistoryDisplay\n initialParams={creditHistoryParams}\n style={{ marginTop: '24px' }}\n />\n )}\n\n {children}\n </section>\n );\n};\n"],"names":["DEFAULT_PAGE_SIZE","FIRST_PAGE","useCompanyCreditHistory","initialParams","translations","items","setItems","useState","loading","setLoading","currentPage","setCurrentPage","pageSize","setPageSize","totalItems","setTotalItems","totalPages","setTotalPages","announcement","setAnnouncement","translationsRef","useRef","initialParamsRef","apiParams","useMemo","fetchCreditHistory","useCallback","response","getCompanyCreditHistory","_a","error","useEffect","handlePageSizeChange","event","value","newSize","handlePreviousPage","handleNextPage","handlePageChange","page","refreshCreditHistory","CompanyCreditDisplay","className","props","useText","companyCreditData","setCompanyCreditData","setError","inFlightRef","didInitialFetchRef","fetchCompanyCredit","companyCreditInfo","getCompanyCredit","handleCompanyContextChange","subscription","events","jsx","Card","CompanyCreditLoader","InLineAlert","jsxs","Price","_b","_c","_d","_e","_f","_g","_h","_i","PAGE_SIZE_OPTIONS","formatOperationType","operationType","word","CompanyCreditHistoryDisplay","startItem","endItem","getPageNumbers","_","i","pages","columns","rowData","item","classes","CompanyCreditHistoryLoader","Fragment","Table","Button","pageNum","index","Picker","CompanyCredit","creditHistoryParams","showCreditHistory","children"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as t,jsxs as h,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{classes as me,Slot as ge}from"@dropins/tools/lib.js";import{Card as Q,Button as X,Field as R,Input as V,Picker as ce,Header as ue,InLineAlert as he,ProgressSpinner as fe}from"@dropins/tools/components.js";import{useState as L,useRef as J,useEffect as H,useCallback as U,useMemo as G}from"@dropins/tools/preact-hooks.js";import{events as ye}from"@dropins/tools/event-bus.js";import{p as ve,E as Ce}from"../chunks/acdl.js";import{u as Ae}from"../chunks/useCompanyContextListener.js";import{g as Ne,u as Ie}from"../chunks/updateCompany.js";import{g as pe,v as _e}from"../chunks/validateCompanyEmail.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ee}from"../chunks/useInLineAlert.js";import{d as be}from"../chunks/CompanyLoaders.js";import"../chunks/fetchUserPermissions.js";import"../chunks/company-permissions.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact-compat.js";const xe=({company:a,slots:e,showEditForm:u,handleShowEditForm:y})=>{const o=j({editButton:"Company.shared.buttons.edit",noDataMessage:"Company.CompanyProfile.companyProfileCard.noDataMessage",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",legalAddress:"Company.shared.fields.legalAddress",contacts:"Company.CompanyProfile.companyProfileCard.contacts",companyAdministrator:"Company.CompanyProfile.companyProfileCard.companyAdministrator",salesRepresentative:"Company.CompanyProfile.companyProfileCard.salesRepresentative",paymentInformation:"Company.CompanyProfile.companyProfileCard.paymentInformation",shippingInformation:"Company.CompanyProfile.companyProfileCard.shippingInformation",availablePaymentMethods:"Company.CompanyProfile.companyProfileCard.availablePaymentMethods",availableShippingMethods:"Company.CompanyProfile.companyProfileCard.availableShippingMethods",noPaymentMethods:"Company.CompanyProfile.companyProfileCard.noPaymentMethods",noShippingMethods:"Company.CompanyProfile.companyProfileCard.noShippingMethods"});if(!a)return t(Q,{variant:"secondary",className:"account-company-profile-card",children:t("div",{className:"account-company-profile-card__wrapper",children:t("div",{className:"account-company-profile-card__content",children:t("div",{className:"account-company-profile-card__no-data",children:t("p",{children:o.noDataMessage})})})})});const i=a.permissionsFlags||{canViewAccount:!0,canViewAddress:!0,canViewContacts:!0,canViewPaymentInformation:!0,canViewShippingInformation:!0},r=[i.canViewAccount?{name:"name",label:o.companyName,value:a.name||"",legalName:a.legalName||""}:null,i.canViewAccount?{name:"email",label:o.email,value:a.email||""}:null,i.canViewAccount?{name:"vatTaxId",label:o.vatTaxId,value:a.vatTaxId||""}:null,i.canViewAccount?{name:"resellerId",label:o.resellerId,value:a.resellerId||""}:null].filter(Boolean);return t(Q,{variant:"secondary",className:me(["account-company-profile-card",["account-company-profile-card-short",u]]),children:h("div",{className:"account-company-profile-card__wrapper",children:[t("div",{className:"account-company-profile-card__actions",children:(a.canEditAccount||a.canEditAddress)&&t(X,{type:"button",variant:"tertiary",onClick:y,children:o.editButton})}),t("div",{className:"account-company-profile-card__content",children:(()=>{var v,p;const N=h(K,{children:[r.map((l,d)=>{if(!l.value)return null;let g;return l.name==="name"&&l.legalName?g=`${l.label}: ${l.value} (${l.legalName})`:g=l.label?`${l.label}: ${l.value}`:l.value,t("p",{"data-testid":`${l.name}_${d}`,children:g},`${l.name}_${d}`)}),i.canViewAddress&&a.legalAddress&&h("div",{className:"company-legal-address",children:[t("p",{children:h("strong",{children:[o.legalAddress,":"]})}),(v=a.legalAddress.street)==null?void 0:v.map((l,d)=>t("p",{children:l},d)),h("p",{children:[a.legalAddress.city,", ",(p=a.legalAddress.region)==null?void 0:p.region," ",a.legalAddress.postcode]}),t("p",{children:a.legalAddress.countryCode}),a.legalAddress.telephone&&h("p",{children:["Phone: ",a.legalAddress.telephone]})]}),i.canViewContacts&&(a.companyAdmin||a.salesRepresentative)&&h("div",{className:"company-contacts",children:[t("p",{children:h("strong",{children:[o.contacts,":"]})}),a.companyAdmin&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.companyAdministrator,":"]})}),h("p",{children:[a.companyAdmin.firstname," ",a.companyAdmin.lastname]}),a.companyAdmin.jobTitle&&t("p",{children:a.companyAdmin.jobTitle}),t("p",{children:a.companyAdmin.email})]}),a.salesRepresentative&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.salesRepresentative,":"]})}),h("p",{children:[a.salesRepresentative.firstname," ",a.salesRepresentative.lastname]}),t("p",{children:a.salesRepresentative.email})]})]}),i.canViewPaymentInformation&&h("div",{className:"company-payment-methods",children:[t("p",{children:h("strong",{children:[o.paymentInformation,":"]})}),a.availablePaymentMethods&&a.availablePaymentMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availablePaymentMethods,":"]})}),t("ul",{className:"payment-methods-list",children:a.availablePaymentMethods.map((l,d)=>t("li",{children:l.title},`payment_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noPaymentMethods})})]}),i.canViewShippingInformation&&h("div",{className:"company-shipping-methods",children:[t("p",{children:h("strong",{children:[o.shippingInformation,":"]})}),a.availableShippingMethods&&a.availableShippingMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availableShippingMethods,":"]})}),t("ul",{className:"shipping-methods-list",children:a.availableShippingMethods.map((l,d)=>t("li",{children:l.title},`shipping_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noShippingMethods})})]})]});return e!=null&&e.CompanyData?t(ge,{name:"CompanyData",slot:e.CompanyData,context:{companyData:r,Default:N}}):N})()})]})})},Te=({handleSetInLineAlert:a,editFormRef:e})=>{const u=j({companySuccess:"Company.CompanyProfile.editCompanyProfile.companySuccess",companyError:"Company.CompanyProfile.editCompanyProfile.companyError",loadError:"Company.CompanyProfile.messages.loadError",updateError:"Company.CompanyProfile.messages.updateError",noDataToUpdate:"Company.CompanyProfile.messages.noDataToUpdate"}),{companySuccess:y,companyError:o,loadError:i,updateError:r,noDataToUpdate:N}=u,[v,p]=L(null),[l,d]=L(!0),[g,C]=L(!1),[_,$]=L(!1),[m,k]=L([]),[D,A]=L({}),z=J(a),w=J(!1),P=J(!1);H(()=>{z.current=a},[a]);const O=U(f=>{A(f)},[]),F=U((f,B)=>{a&&(f==="success"?a({type:"success",text:B??y}):f==="error"?a({type:"error",text:B??o}):a(),C(!1))},[a,y,o]),S=U(async()=>{if(w.current)return null;w.current=!0,d(!0);try{const f=await Ne();return f&&p(f),d(!1),f}catch(f){return console.error("Failed to load company:",f),d(!1),z.current&&z.current({type:"error",text:i}),null}finally{w.current=!1}},[i]);H(()=>{P.current||(P.current=!0,S())},[S]),Ae(U(()=>{d(!0),$(!1),A({}),S()},[S])),H(()=>{pe().then(f=>{k(f.availableCountries)}).catch(f=>{console.error("Failed to load countries:",f)})},[]);const W=U(()=>{$(!0),F("success",""),A({})},[F]);H(()=>{_&&(e!=null&&e.current)&&setTimeout(()=>{var f;(f=e.current)==null||f.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)},[_,e]);const q=U(f=>{f==null||f(),$(!1),A({})},[]),Y=U(async f=>{try{if(C(!0),!f){F("error",N);return}const B=await Ie(f);p(B),$(!1),A({}),F("success"),ve(Ce.EDIT_COMPANY_EVENT,{...f,companyId:v==null?void 0:v.id}),ye.emit("company/updated",{company:B})}catch(B){console.error("Failed to update company:",B),F("error",B.message||r)}finally{C(!1)}},[v,F,r,N]);return{company:v,countries:m,loading:l,submitLoading:g,showEditForm:_,inputChange:D,handleShowEditForm:W,handleHideEditForm:q,handleUpdateCompany:Y,handleInputChange:O,renderAlertMessage:F,saving:g}},$e=a=>{const[e,u]=L(null),[y,o]=L(!0);H(()=>{let p=!0;return pe().then(({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g})=>{p&&(u({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g}),o(!1))}).catch(()=>{p&&o(!1)}),()=>{p=!1}},[]);const i=G(()=>(e==null?void 0:e.availableCountries)||[],[e]),r=G(()=>{if(!a||!e)return[];const p=e.availableCountries.find(l=>l.value===a);return!(p!=null&&p.availableRegions)||p.availableRegions.length===0?[]:p.availableRegions.map(l=>({text:l.name,value:`${l.code},${l.id}`}))},[a,e]),N=G(()=>!a||!e?!1:e.countriesWithRequiredRegion.includes(a),[a,e]),v=G(()=>r.length>0,[r]);return{countryOptions:i,regionOptions:r,isRegionRequired:N,hasRegionOptions:v,loadingCountries:y}},we=({loading:a,value:e,errors:u,touched:y,onBlur:o,namePrefix:i="",fieldPathPrefix:r=""})=>{const N=j({companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId"}),v=i?`${i}_`:"",p=g=>r?`${r}.${g}`:g,l=g=>C=>{const _=C.target;o(p(g),_.value)},d={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__group",children:[t(R,{label:N.companyName,required:!0,className:"account-edit-company-profile-form__field",error:y.name&&u.name?u.name:void 0,children:t(V,{name:`${v}name`,type:"text",value:e.name,onBlur:l("name"),...d,maxLength:40})}),t(R,{label:N.legalName,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}legalName`,type:"text",value:e.legalName,onBlur:l("legalName"),...d,maxLength:80})}),t(R,{label:N.email,required:!0,className:"account-edit-company-profile-form__field",error:y.email&&u.email?u.email:void 0,children:t(V,{name:`${v}email`,type:"email",value:e.email,onBlur:l("email"),...d})}),t(R,{label:N.vatTaxId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}vatTaxId`,type:"text",value:e.vatTaxId,onBlur:l("vatTaxId"),...d,maxLength:40})}),t(R,{label:N.resellerId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}resellerId`,type:"text",value:e.resellerId,onBlur:l("resellerId"),...d,maxLength:40})})]})},Pe=({loading:a,loadingCountries:e,value:u,errors:y,touched:o,onChange:i,onBlur:r,countryOptions:N,regionOptions:v,isRegionRequired:p,hasRegionOptions:l,namePrefix:d="legalAddress",fieldPathPrefix:g="legalAddress",requiredConfig:C})=>{var z;const _=j({legalAddress:"Company.shared.fields.legalAddress",streetAddress:"Company.shared.fields.streetAddress",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",zipPostalCode:"Company.shared.fields.zipPostalCode",phoneNumber:"Company.shared.fields.phoneNumber"}),$={street:`${d}_street`,street2:`${d}_street2`,city:`${d}_city`,countryCode:`${d}_countryCode`,region:`${d}_region`,postcode:`${d}_postcode`,telephone:`${d}_telephone`},m={street:`${g}.street`,street2:`${g}.street2`,city:`${g}.city`,countryCode:`${g}.countryCode`,region:`${g}.region`,regionCode:`${g}.regionCode`,postcode:`${g}.postcode`,telephone:`${g}.telephone`},k={street:(C==null?void 0:C.street)??!0,city:(C==null?void 0:C.city)??!0,postcode:(C==null?void 0:C.postcode)??!0,telephone:(C==null?void 0:C.telephone)??!0},D=w=>P=>{const O=P.target;r(w,O.value)},A={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__section",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:_.legalAddress}),t(R,{label:_.streetAddress,required:k.street,className:"account-edit-company-profile-form__field",error:o[m.street]&&y[m.street]?y[m.street]:void 0,children:t(V,{name:$.street,type:"text",value:u.street,onBlur:D(m.street),...A})}),t(R,{label:`${_.streetAddress} 2`,className:"account-edit-company-profile-form__field",children:t(V,{name:$.street2,type:"text",value:u.street2,onBlur:D(m.street2),...A})}),t(R,{label:_.city,required:k.city,className:"account-edit-company-profile-form__field",error:o[m.city]&&y[m.city]?y[m.city]:void 0,children:t(V,{name:$.city,type:"text",value:u.city,onBlur:D(m.city),...A})}),t(R,{label:_.country,required:!0,className:"account-edit-company-profile-form__field",error:o[m.countryCode]&&y[m.countryCode]?y[m.countryCode]:void 0,children:t(ce,{name:$.countryCode,floatingLabel:`${_.country} *`,placeholder:_.country,options:N,value:u.countryCode,handleSelect:w=>{const P=w.target;i(m.countryCode)(P.value)},onBlur:()=>r(m.countryCode),disabled:!!a||e})}),t(R,{label:_.stateProvince,required:p,className:"account-edit-company-profile-form__field",error:o["legalAddress.region"]&&y["legalAddress.region"]?y["legalAddress.region"]:void 0,children:l?t(ce,{name:"legalAddress_region",floatingLabel:`${_.stateProvince} ${p?"*":""}`,placeholder:_.stateProvince,options:v,value:u.regionCode&&((z=v.find(w=>w.value.split(",")[0]===u.regionCode))==null?void 0:z.value)||"",handleSelect:w=>{var S;const P=w.target,[O]=P.value.split(","),F=((S=v.find(W=>W.value===P.value))==null?void 0:S.text)||"";i(m.region)(F),i(m.regionCode)(O)},onBlur:()=>r(m.region),disabled:!!a||e},`region_picker_${u.countryCode}`):t(V,{name:$.region,type:"text",value:u.region,onBlur:D(m.region),...A,disabled:!!a||e},`region_input_${u.countryCode}`)}),t(R,{label:_.zipPostalCode,required:k.postcode,className:"account-edit-company-profile-form__field",error:o[m.postcode]&&y[m.postcode]?y[m.postcode]:void 0,children:t(V,{name:$.postcode,type:"text",value:u.postcode,onBlur:D(m.postcode),...A})}),t(R,{label:_.phoneNumber,required:k.telephone,className:"account-edit-company-profile-form__field",error:o[m.telephone]&&y[m.telephone]?y[m.telephone]:void 0,children:t(V,{name:$.telephone,type:"tel",value:u.telephone,onBlur:D(m.telephone),...A})})]})},Fe=({inLineAlertProps:a,company:e,loading:u=!1,onSubmit:y,onCancel:o})=>{var S,W,q,Y,f,B,Z,ee,te,ae,re,se,le,ne;const i=j({title:"Company.EditCompanyProfile.title",cancel:"Company.shared.buttons.cancel",save:"Company.shared.buttons.save",saving:"Company.shared.buttons.saving",required:"Company.shared.validation.required",invalidEmail:"Company.shared.validation.invalidEmail",companyNameRequired:"Company.shared.validation.companyNameRequired",emailRequired:"Company.shared.validation.emailRequired",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyNameLengthError:"Company.shared.validation.companyNameLengthError",legalNameLengthError:"Company.shared.validation.legalNameLengthError",vatTaxIdLengthError:"Company.shared.validation.vatTaxIdLengthError",resellerIdLengthError:"Company.shared.validation.resellerIdLengthError"}),[r,N]=L({name:(e==null?void 0:e.name)||"",email:(e==null?void 0:e.email)||"",legalName:(e==null?void 0:e.legalName)||"",vatTaxId:(e==null?void 0:e.vatTaxId)||"",resellerId:(e==null?void 0:e.resellerId)||"",legalAddress:{street:((W=(S=e==null?void 0:e.legalAddress)==null?void 0:S.street)==null?void 0:W[0])||"",street2:((Y=(q=e==null?void 0:e.legalAddress)==null?void 0:q.street)==null?void 0:Y[1])||"",city:((f=e==null?void 0:e.legalAddress)==null?void 0:f.city)||"",region:((Z=(B=e==null?void 0:e.legalAddress)==null?void 0:B.region)==null?void 0:Z.region)||"",regionCode:((te=(ee=e==null?void 0:e.legalAddress)==null?void 0:ee.region)==null?void 0:te.regionCode)||"",countryCode:((ae=e==null?void 0:e.legalAddress)==null?void 0:ae.countryCode)||"",postcode:((re=e==null?void 0:e.legalAddress)==null?void 0:re.postcode)||"",telephone:((se=e==null?void 0:e.legalAddress)==null?void 0:se.telephone)||""}}),[v,p]=L({}),[l,d]=L({}),g=((le=e==null?void 0:e.permissionsFlags)==null?void 0:le.canEditAccount)===!0,C=((ne=e==null?void 0:e.permissionsFlags)==null?void 0:ne.canEditAddress)===!0,{countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k,loadingCountries:D}=$e(r.legalAddress.countryCode),A=(s,n)=>s==="name"?n.trim()?n.length>40?i.companyNameLengthError:null:i.companyNameRequired:s==="email"?n.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)?null:i.invalidEmail:i.emailRequired:s==="legalName"?n.length>80?i.legalNameLengthError:null:s==="vatTaxId"?n.length>40?i.vatTaxIdLengthError:null:s==="resellerId"?n.length>40?i.resellerIdLengthError:null:s==="legalAddress.street"||s==="legalAddress.city"||s==="legalAddress.postcode"||s==="legalAddress.telephone"||s==="legalAddress.countryCode"?n.trim()?null:i.required:s==="legalAddress.region"&&m&&!n.trim()?i.required:null,z=()=>{var T,M;const s={};let n=!0;const x=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,c=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0;if(x){const I=A("name",r.name);I&&(s.name=I,n=!1);const E=A("email",r.email);if(E&&(s.email=E,n=!1),r.legalName){const b=A("legalName",r.legalName);b&&(s.legalName=b,n=!1)}if(r.vatTaxId){const b=A("vatTaxId",r.vatTaxId);b&&(s.vatTaxId=b,n=!1)}if(r.resellerId){const b=A("resellerId",r.resellerId);b&&(s.resellerId=b,n=!1)}}if(c){const I=A("legalAddress.street",r.legalAddress.street);I&&(s["legalAddress.street"]=I,n=!1);const E=A("legalAddress.city",r.legalAddress.city);E&&(s["legalAddress.city"]=E,n=!1);const b=A("legalAddress.postcode",r.legalAddress.postcode);b&&(s["legalAddress.postcode"]=b,n=!1);const oe=A("legalAddress.telephone",r.legalAddress.telephone);oe&&(s["legalAddress.telephone"]=oe,n=!1);const ie=A("legalAddress.countryCode",r.legalAddress.countryCode);ie&&(s["legalAddress.countryCode"]=ie,n=!1);const de=A("legalAddress.region",r.legalAddress.region);de&&(s["legalAddress.region"]=de,n=!1)}return p(s),n},w=async s=>{var T,M;s.preventDefault();const n=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,x=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0,c={};if(n&&(c.name=!0,c.email=!0,c.legalName=!0,c.vatTaxId=!0,c.resellerId=!0),x&&(c["legalAddress.street"]=!0,c["legalAddress.street2"]=!0,c["legalAddress.city"]=!0,c["legalAddress.region"]=!0,c["legalAddress.regionCode"]=!0,c["legalAddress.countryCode"]=!0,c["legalAddress.postcode"]=!0,c["legalAddress.telephone"]=!0),d(c),!!z()){if(n&&r.email!==(e==null?void 0:e.email)){const I=await _e(r.email);if(!I.isValid){p(E=>({...E,email:I.error||i.emailNotAvailable}));return}}if(y){const I={};n&&(I.name=r.name,I.email=r.email,I.legalName=r.legalName,I.vatTaxId=r.vatTaxId,I.resellerId=r.resellerId),x&&(I.legalAddress={street:[r.legalAddress.street,r.legalAddress.street2].filter(Boolean),city:r.legalAddress.city,region:{region:r.legalAddress.region,regionCode:r.legalAddress.regionCode},countryCode:r.legalAddress.countryCode,postcode:r.legalAddress.postcode,telephone:r.legalAddress.telephone}),await y(I)}}},P=(s,n)=>{if(s.startsWith("legalAddress.")){const x=s.split(".")[1];x==="countryCode"?(N(c=>({...c,legalAddress:{...c.legalAddress,[x]:n,region:"",regionCode:""}})),p(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T}),d(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T})):N(x==="region"?c=>({...c,legalAddress:{...c.legalAddress,region:n,regionCode:k?c.legalAddress.regionCode:n}}):c=>({...c,legalAddress:{...c.legalAddress,[x]:n}}))}else N(x=>({...x,[s]:n}))},O=s=>n=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");x.has(s)&&!g||c&&!C||(P(s,n),v[s]&&p(M=>{const I={...M};return delete I[s],I}))},F=(s,n)=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");if(x.has(s)&&!g||c&&!C)return;n!==void 0&&P(s,n),d(E=>({...E,[s]:!0}));let M=n;if(M===void 0)if(s.startsWith("legalAddress.")){const E=s.split(".")[1],b=r.legalAddress[E];M=typeof b=="string"?b:""}else{const E=r[s];M=typeof E=="string"?E:""}const I=A(s,M);p(I?E=>({...E,[s]:I}):E=>{const b={...E};return delete b[s],b})};return h(Q,{variant:"secondary",className:"account-edit-company-profile",children:[t(ue,{title:i.title,divider:!1,className:"account-edit-company-profile__title"}),a!=null&&a.text?t(he,{className:"account-edit-company-profile__notification",type:a.type,variant:"secondary",heading:a.text,icon:a.icon,"data-testid":"editCompanyInLineAlert"}):null,h("form",{className:"account-edit-company-profile-form",onSubmit:w,children:[g&&t(we,{loading:u,value:{name:r.name,email:r.email,legalName:r.legalName,vatTaxId:r.vatTaxId,resellerId:r.resellerId},errors:v,touched:l,onBlur:F}),C&&t(Pe,{loading:u,loadingCountries:D,value:r.legalAddress,errors:v,touched:l,onChange:O,onBlur:F,countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k}),h("div",{className:"account-edit-company-profile__actions",children:[t(X,{disabled:u,type:"button",variant:"secondary",onClick:()=>o==null?void 0:o(),children:i.cancel}),t(X,{disabled:u||!g&&!C,type:"submit",variant:"primary",children:i.save})]})]}),u&&h("div",{className:"account-edit-company-profile__loading-overlay","data-testid":"editCompanyLoadingOverlay",children:[t(fe,{size:"large"}),t("div",{className:"account-edit-company-profile__loading-text",children:i.saving})]})]})},Ke=({className:a,withHeader:e=!0,slots:u})=>{const y=j({containerTitle:"Company.CompanyProfile.containerTitle"}),{inLineAlertProps:o,handleSetInLineAlert:i}=Ee(),r=J(null),{company:N,loading:v,saving:p,showEditForm:l,handleShowEditForm:d,handleHideEditForm:g,handleUpdateCompany:C}=Te({handleSetInLineAlert:i,editFormRef:r});return v?t("div",{"data-testid":"companyProfileLoader",children:t(be,{withCard:!0})}):h("div",{className:me(["account-company-profile",a]),children:[e?t(ue,{title:y.containerTitle,divider:!1,className:"company-profile__title"}):null,t(xe,{company:N,slots:u,showEditForm:l,handleShowEditForm:d}),l?t("div",{ref:r,children:t(Fe,{inLineAlertProps:o,company:N,loading:p,onSubmit:C,onCancel:g})}):null]})};export{Ke as CompanyProfile,Ke as default};
|
|
3
|
+
import{jsx as t,jsxs as h,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{classes as me,Slot as ge}from"@dropins/tools/lib.js";import{Card as Q,Button as X,Field as R,Input as V,Picker as ce,Header as ue,InLineAlert as he,ProgressSpinner as fe}from"@dropins/tools/components.js";import{useState as L,useRef as J,useEffect as H,useCallback as U,useMemo as G}from"@dropins/tools/preact-hooks.js";import{d as ye}from"../chunks/CompanyLoaders.js";import{events as ve}from"@dropins/tools/event-bus.js";import{p as Ce,E as Ae}from"../chunks/acdl.js";import{u as Ne}from"../chunks/useCompanyContextListener.js";import{g as Ie,u as _e}from"../chunks/updateCompany.js";import{g as pe,v as Ee}from"../chunks/validateCompanyEmail.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as be}from"../chunks/useInLineAlert.js";import"../chunks/fetchUserPermissions.js";import"../chunks/company-permissions.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact-compat.js";const xe=({company:a,slots:e,showEditForm:u,handleShowEditForm:y})=>{const o=j({editButton:"Company.shared.buttons.edit",noDataMessage:"Company.CompanyProfile.companyProfileCard.noDataMessage",companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId",legalAddress:"Company.shared.fields.legalAddress",contacts:"Company.CompanyProfile.companyProfileCard.contacts",companyAdministrator:"Company.CompanyProfile.companyProfileCard.companyAdministrator",salesRepresentative:"Company.CompanyProfile.companyProfileCard.salesRepresentative",paymentInformation:"Company.CompanyProfile.companyProfileCard.paymentInformation",shippingInformation:"Company.CompanyProfile.companyProfileCard.shippingInformation",availablePaymentMethods:"Company.CompanyProfile.companyProfileCard.availablePaymentMethods",availableShippingMethods:"Company.CompanyProfile.companyProfileCard.availableShippingMethods",noPaymentMethods:"Company.CompanyProfile.companyProfileCard.noPaymentMethods",noShippingMethods:"Company.CompanyProfile.companyProfileCard.noShippingMethods"});if(!a)return t(Q,{variant:"secondary",className:"account-company-profile-card",children:t("div",{className:"account-company-profile-card__wrapper",children:t("div",{className:"account-company-profile-card__content",children:t("div",{className:"account-company-profile-card__no-data",children:t("p",{children:o.noDataMessage})})})})});const i=a.permissionsFlags||{canViewAccount:!0,canViewAddress:!0,canViewContacts:!0,canViewPaymentInformation:!0,canViewShippingInformation:!0},r=[i.canViewAccount?{name:"name",label:o.companyName,value:a.name||"",legalName:a.legalName||""}:null,i.canViewAccount?{name:"email",label:o.email,value:a.email||""}:null,i.canViewAccount?{name:"vatTaxId",label:o.vatTaxId,value:a.vatTaxId||""}:null,i.canViewAccount?{name:"resellerId",label:o.resellerId,value:a.resellerId||""}:null].filter(Boolean);return t(Q,{variant:"secondary",className:me(["account-company-profile-card",["account-company-profile-card-short",u]]),children:h("div",{className:"account-company-profile-card__wrapper",children:[t("div",{className:"account-company-profile-card__actions",children:(a.canEditAccount||a.canEditAddress)&&t(X,{type:"button",variant:"tertiary",onClick:y,children:o.editButton})}),t("div",{className:"account-company-profile-card__content",children:(()=>{var v,p;const N=h(K,{children:[r.map((l,d)=>{if(!l.value)return null;let g;return l.name==="name"&&l.legalName?g=`${l.label}: ${l.value} (${l.legalName})`:g=l.label?`${l.label}: ${l.value}`:l.value,t("p",{"data-testid":`${l.name}_${d}`,children:g},`${l.name}_${d}`)}),i.canViewAddress&&a.legalAddress&&h("div",{className:"company-legal-address",children:[t("p",{children:h("strong",{children:[o.legalAddress,":"]})}),(v=a.legalAddress.street)==null?void 0:v.map((l,d)=>t("p",{children:l},d)),h("p",{children:[a.legalAddress.city,", ",(p=a.legalAddress.region)==null?void 0:p.region," ",a.legalAddress.postcode]}),t("p",{children:a.legalAddress.countryCode}),a.legalAddress.telephone&&h("p",{children:["Phone: ",a.legalAddress.telephone]})]}),i.canViewContacts&&(a.companyAdmin||a.salesRepresentative)&&h("div",{className:"company-contacts",children:[t("p",{children:h("strong",{children:[o.contacts,":"]})}),a.companyAdmin&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.companyAdministrator,":"]})}),h("p",{children:[a.companyAdmin.firstname," ",a.companyAdmin.lastname]}),a.companyAdmin.jobTitle&&t("p",{children:a.companyAdmin.jobTitle}),t("p",{children:a.companyAdmin.email})]}),a.salesRepresentative&&h("div",{className:"company-contact",children:[t("p",{children:h("strong",{children:[o.salesRepresentative,":"]})}),h("p",{children:[a.salesRepresentative.firstname," ",a.salesRepresentative.lastname]}),t("p",{children:a.salesRepresentative.email})]})]}),i.canViewPaymentInformation&&h("div",{className:"company-payment-methods",children:[t("p",{children:h("strong",{children:[o.paymentInformation,":"]})}),a.availablePaymentMethods&&a.availablePaymentMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availablePaymentMethods,":"]})}),t("ul",{className:"payment-methods-list",children:a.availablePaymentMethods.map((l,d)=>t("li",{children:l.title},`payment_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noPaymentMethods})})]}),i.canViewShippingInformation&&h("div",{className:"company-shipping-methods",children:[t("p",{children:h("strong",{children:[o.shippingInformation,":"]})}),a.availableShippingMethods&&a.availableShippingMethods.length>0?h(K,{children:[t("p",{children:h("strong",{children:[o.availableShippingMethods,":"]})}),t("ul",{className:"shipping-methods-list",children:a.availableShippingMethods.map((l,d)=>t("li",{children:l.title},`shipping_${d}`))})]}):t("div",{className:"message message-notice notice",children:t("div",{children:o.noShippingMethods})})]})]});return e!=null&&e.CompanyData?t(ge,{name:"CompanyData",slot:e.CompanyData,context:{companyData:r,Default:N}}):N})()})]})})},Te=({handleSetInLineAlert:a,editFormRef:e})=>{const u=j({companySuccess:"Company.CompanyProfile.editCompanyProfile.companySuccess",companyError:"Company.CompanyProfile.editCompanyProfile.companyError",loadError:"Company.CompanyProfile.messages.loadError",updateError:"Company.CompanyProfile.messages.updateError",noDataToUpdate:"Company.CompanyProfile.messages.noDataToUpdate"}),{companySuccess:y,companyError:o,loadError:i,updateError:r,noDataToUpdate:N}=u,[v,p]=L(null),[l,d]=L(!0),[g,C]=L(!1),[_,$]=L(!1),[m,k]=L([]),[D,A]=L({}),z=J(a),w=J(!1),P=J(!1);H(()=>{z.current=a},[a]);const O=U(f=>{A(f)},[]),F=U((f,B)=>{a&&(f==="success"?a({type:"success",text:B??y}):f==="error"?a({type:"error",text:B??o}):a(),C(!1))},[a,y,o]),S=U(async()=>{if(w.current)return null;w.current=!0,d(!0);try{const f=await Ie();return f&&p(f),d(!1),f}catch(f){return console.error("Failed to load company:",f),d(!1),z.current&&z.current({type:"error",text:i}),null}finally{w.current=!1}},[i]);H(()=>{P.current||(P.current=!0,S())},[S]),Ne(U(()=>{d(!0),$(!1),A({}),S()},[S])),H(()=>{pe().then(f=>{k(f.availableCountries)}).catch(f=>{console.error("Failed to load countries:",f)})},[]);const W=U(()=>{$(!0),F("success",""),A({})},[F]);H(()=>{_&&(e!=null&&e.current)&&setTimeout(()=>{var f;(f=e.current)==null||f.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"})},100)},[_,e]);const q=U(f=>{f==null||f(),$(!1),A({})},[]),Y=U(async f=>{try{if(C(!0),!f){F("error",N);return}const B=await _e(f);p(B),$(!1),A({}),F("success"),Ce(Ae.EDIT_COMPANY_EVENT,{...f,companyId:v==null?void 0:v.id}),ve.emit("company/updated",{company:B})}catch(B){console.error("Failed to update company:",B),F("error",B.message||r)}finally{C(!1)}},[v,F,r,N]);return{company:v,countries:m,loading:l,submitLoading:g,showEditForm:_,inputChange:D,handleShowEditForm:W,handleHideEditForm:q,handleUpdateCompany:Y,handleInputChange:O,renderAlertMessage:F,saving:g}},$e=a=>{const[e,u]=L(null),[y,o]=L(!0);H(()=>{let p=!0;return pe().then(({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g})=>{p&&(u({availableCountries:l,countriesWithRequiredRegion:d,optionalZipCountries:g}),o(!1))}).catch(()=>{p&&o(!1)}),()=>{p=!1}},[]);const i=G(()=>(e==null?void 0:e.availableCountries)||[],[e]),r=G(()=>{if(!a||!e)return[];const p=e.availableCountries.find(l=>l.value===a);return!(p!=null&&p.availableRegions)||p.availableRegions.length===0?[]:p.availableRegions.map(l=>({text:l.name,value:`${l.code},${l.id}`}))},[a,e]),N=G(()=>!a||!e?!1:e.countriesWithRequiredRegion.includes(a),[a,e]),v=G(()=>r.length>0,[r]);return{countryOptions:i,regionOptions:r,isRegionRequired:N,hasRegionOptions:v,loadingCountries:y}},we=({loading:a,value:e,errors:u,touched:y,onBlur:o,namePrefix:i="",fieldPathPrefix:r=""})=>{const N=j({companyName:"Company.shared.fields.companyName",email:"Company.shared.fields.email",legalName:"Company.shared.fields.legalName",vatTaxId:"Company.shared.fields.vatTaxId",resellerId:"Company.shared.fields.resellerId"}),v=i?`${i}_`:"",p=g=>r?`${r}.${g}`:g,l=g=>C=>{const _=C.target;o(p(g),_.value)},d={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__group",children:[t(R,{label:N.companyName,required:!0,className:"account-edit-company-profile-form__field",error:y.name&&u.name?u.name:void 0,children:t(V,{name:`${v}name`,type:"text",value:e.name,onBlur:l("name"),...d,maxLength:40})}),t(R,{label:N.legalName,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}legalName`,type:"text",value:e.legalName,onBlur:l("legalName"),...d,maxLength:80})}),t(R,{label:N.email,required:!0,className:"account-edit-company-profile-form__field",error:y.email&&u.email?u.email:void 0,children:t(V,{name:`${v}email`,type:"email",value:e.email,onBlur:l("email"),...d})}),t(R,{label:N.vatTaxId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}vatTaxId`,type:"text",value:e.vatTaxId,onBlur:l("vatTaxId"),...d,maxLength:40})}),t(R,{label:N.resellerId,className:"account-edit-company-profile-form__field",children:t(V,{name:`${v}resellerId`,type:"text",value:e.resellerId,onBlur:l("resellerId"),...d,maxLength:40})})]})},Pe=({loading:a,loadingCountries:e,value:u,errors:y,touched:o,onChange:i,onBlur:r,countryOptions:N,regionOptions:v,isRegionRequired:p,hasRegionOptions:l,namePrefix:d="legalAddress",fieldPathPrefix:g="legalAddress",requiredConfig:C})=>{var z;const _=j({legalAddress:"Company.shared.fields.legalAddress",streetAddress:"Company.shared.fields.streetAddress",city:"Company.shared.fields.city",country:"Company.shared.fields.country",stateProvince:"Company.shared.fields.stateProvince",zipPostalCode:"Company.shared.fields.zipPostalCode",phoneNumber:"Company.shared.fields.phoneNumber"}),$={street:`${d}_street`,street2:`${d}_street2`,city:`${d}_city`,countryCode:`${d}_countryCode`,region:`${d}_region`,postcode:`${d}_postcode`,telephone:`${d}_telephone`},m={street:`${g}.street`,street2:`${g}.street2`,city:`${g}.city`,countryCode:`${g}.countryCode`,region:`${g}.region`,regionCode:`${g}.regionCode`,postcode:`${g}.postcode`,telephone:`${g}.telephone`},k={street:(C==null?void 0:C.street)??!0,city:(C==null?void 0:C.city)??!0,postcode:(C==null?void 0:C.postcode)??!0,telephone:(C==null?void 0:C.telephone)??!0},D=w=>P=>{const O=P.target;r(w,O.value)},A={disabled:!!a,variant:"primary",size:"medium"};return h("div",{className:"account-edit-company-profile-form__section",children:[t("h3",{className:"account-edit-company-profile-form__section-title",children:_.legalAddress}),t(R,{label:_.streetAddress,required:k.street,className:"account-edit-company-profile-form__field",error:o[m.street]&&y[m.street]?y[m.street]:void 0,children:t(V,{name:$.street,type:"text",value:u.street,onBlur:D(m.street),...A})}),t(R,{label:`${_.streetAddress} 2`,className:"account-edit-company-profile-form__field",children:t(V,{name:$.street2,type:"text",value:u.street2,onBlur:D(m.street2),...A})}),t(R,{label:_.city,required:k.city,className:"account-edit-company-profile-form__field",error:o[m.city]&&y[m.city]?y[m.city]:void 0,children:t(V,{name:$.city,type:"text",value:u.city,onBlur:D(m.city),...A})}),t(R,{label:_.country,required:!0,className:"account-edit-company-profile-form__field",error:o[m.countryCode]&&y[m.countryCode]?y[m.countryCode]:void 0,children:t(ce,{name:$.countryCode,floatingLabel:`${_.country} *`,placeholder:_.country,options:N,value:u.countryCode,handleSelect:w=>{const P=w.target;i(m.countryCode)(P.value)},onBlur:()=>r(m.countryCode),disabled:!!a||e})}),t(R,{label:_.stateProvince,required:p,className:"account-edit-company-profile-form__field",error:o["legalAddress.region"]&&y["legalAddress.region"]?y["legalAddress.region"]:void 0,children:l?t(ce,{name:"legalAddress_region",floatingLabel:`${_.stateProvince} ${p?"*":""}`,placeholder:_.stateProvince,options:v,value:u.regionCode&&((z=v.find(w=>w.value.split(",")[0]===u.regionCode))==null?void 0:z.value)||"",handleSelect:w=>{var S;const P=w.target,[O]=P.value.split(","),F=((S=v.find(W=>W.value===P.value))==null?void 0:S.text)||"";i(m.region)(F),i(m.regionCode)(O)},onBlur:()=>r(m.region),disabled:!!a||e},`region_picker_${u.countryCode}`):t(V,{name:$.region,type:"text",value:u.region,onBlur:D(m.region),...A,disabled:!!a||e},`region_input_${u.countryCode}`)}),t(R,{label:_.zipPostalCode,required:k.postcode,className:"account-edit-company-profile-form__field",error:o[m.postcode]&&y[m.postcode]?y[m.postcode]:void 0,children:t(V,{name:$.postcode,type:"text",value:u.postcode,onBlur:D(m.postcode),...A})}),t(R,{label:_.phoneNumber,required:k.telephone,className:"account-edit-company-profile-form__field",error:o[m.telephone]&&y[m.telephone]?y[m.telephone]:void 0,children:t(V,{name:$.telephone,type:"tel",value:u.telephone,onBlur:D(m.telephone),...A})})]})},Fe=({inLineAlertProps:a,company:e,loading:u=!1,onSubmit:y,onCancel:o})=>{var S,W,q,Y,f,B,Z,ee,te,ae,re,se,le,ne;const i=j({title:"Company.EditCompanyProfile.title",cancel:"Company.shared.buttons.cancel",save:"Company.shared.buttons.save",saving:"Company.shared.buttons.saving",required:"Company.shared.validation.required",invalidEmail:"Company.shared.validation.invalidEmail",companyNameRequired:"Company.shared.validation.companyNameRequired",emailRequired:"Company.shared.validation.emailRequired",emailNotAvailable:"Company.shared.validation.emailNotAvailable",companyNameLengthError:"Company.shared.validation.companyNameLengthError",legalNameLengthError:"Company.shared.validation.legalNameLengthError",vatTaxIdLengthError:"Company.shared.validation.vatTaxIdLengthError",resellerIdLengthError:"Company.shared.validation.resellerIdLengthError"}),[r,N]=L({name:(e==null?void 0:e.name)||"",email:(e==null?void 0:e.email)||"",legalName:(e==null?void 0:e.legalName)||"",vatTaxId:(e==null?void 0:e.vatTaxId)||"",resellerId:(e==null?void 0:e.resellerId)||"",legalAddress:{street:((W=(S=e==null?void 0:e.legalAddress)==null?void 0:S.street)==null?void 0:W[0])||"",street2:((Y=(q=e==null?void 0:e.legalAddress)==null?void 0:q.street)==null?void 0:Y[1])||"",city:((f=e==null?void 0:e.legalAddress)==null?void 0:f.city)||"",region:((Z=(B=e==null?void 0:e.legalAddress)==null?void 0:B.region)==null?void 0:Z.region)||"",regionCode:((te=(ee=e==null?void 0:e.legalAddress)==null?void 0:ee.region)==null?void 0:te.regionCode)||"",countryCode:((ae=e==null?void 0:e.legalAddress)==null?void 0:ae.countryCode)||"",postcode:((re=e==null?void 0:e.legalAddress)==null?void 0:re.postcode)||"",telephone:((se=e==null?void 0:e.legalAddress)==null?void 0:se.telephone)||""}}),[v,p]=L({}),[l,d]=L({}),g=((le=e==null?void 0:e.permissionsFlags)==null?void 0:le.canEditAccount)===!0,C=((ne=e==null?void 0:e.permissionsFlags)==null?void 0:ne.canEditAddress)===!0,{countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k,loadingCountries:D}=$e(r.legalAddress.countryCode),A=(s,n)=>s==="name"?n.trim()?n.length>40?i.companyNameLengthError:null:i.companyNameRequired:s==="email"?n.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)?null:i.invalidEmail:i.emailRequired:s==="legalName"?n.length>80?i.legalNameLengthError:null:s==="vatTaxId"?n.length>40?i.vatTaxIdLengthError:null:s==="resellerId"?n.length>40?i.resellerIdLengthError:null:s==="legalAddress.street"||s==="legalAddress.city"||s==="legalAddress.postcode"||s==="legalAddress.telephone"||s==="legalAddress.countryCode"?n.trim()?null:i.required:s==="legalAddress.region"&&m&&!n.trim()?i.required:null,z=()=>{var T,M;const s={};let n=!0;const x=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,c=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0;if(x){const I=A("name",r.name);I&&(s.name=I,n=!1);const E=A("email",r.email);if(E&&(s.email=E,n=!1),r.legalName){const b=A("legalName",r.legalName);b&&(s.legalName=b,n=!1)}if(r.vatTaxId){const b=A("vatTaxId",r.vatTaxId);b&&(s.vatTaxId=b,n=!1)}if(r.resellerId){const b=A("resellerId",r.resellerId);b&&(s.resellerId=b,n=!1)}}if(c){const I=A("legalAddress.street",r.legalAddress.street);I&&(s["legalAddress.street"]=I,n=!1);const E=A("legalAddress.city",r.legalAddress.city);E&&(s["legalAddress.city"]=E,n=!1);const b=A("legalAddress.postcode",r.legalAddress.postcode);b&&(s["legalAddress.postcode"]=b,n=!1);const oe=A("legalAddress.telephone",r.legalAddress.telephone);oe&&(s["legalAddress.telephone"]=oe,n=!1);const ie=A("legalAddress.countryCode",r.legalAddress.countryCode);ie&&(s["legalAddress.countryCode"]=ie,n=!1);const de=A("legalAddress.region",r.legalAddress.region);de&&(s["legalAddress.region"]=de,n=!1)}return p(s),n},w=async s=>{var T,M;s.preventDefault();const n=((T=e==null?void 0:e.permissionsFlags)==null?void 0:T.canEditAccount)===!0,x=((M=e==null?void 0:e.permissionsFlags)==null?void 0:M.canEditAddress)===!0,c={};if(n&&(c.name=!0,c.email=!0,c.legalName=!0,c.vatTaxId=!0,c.resellerId=!0),x&&(c["legalAddress.street"]=!0,c["legalAddress.street2"]=!0,c["legalAddress.city"]=!0,c["legalAddress.region"]=!0,c["legalAddress.regionCode"]=!0,c["legalAddress.countryCode"]=!0,c["legalAddress.postcode"]=!0,c["legalAddress.telephone"]=!0),d(c),!!z()){if(n&&r.email!==(e==null?void 0:e.email)){const I=await Ee(r.email);if(!I.isValid){p(E=>({...E,email:I.error||i.emailNotAvailable}));return}}if(y){const I={};n&&(I.name=r.name,I.email=r.email,I.legalName=r.legalName,I.vatTaxId=r.vatTaxId,I.resellerId=r.resellerId),x&&(I.legalAddress={street:[r.legalAddress.street,r.legalAddress.street2].filter(Boolean),city:r.legalAddress.city,region:{region:r.legalAddress.region,regionCode:r.legalAddress.regionCode},countryCode:r.legalAddress.countryCode,postcode:r.legalAddress.postcode,telephone:r.legalAddress.telephone}),await y(I)}}},P=(s,n)=>{if(s.startsWith("legalAddress.")){const x=s.split(".")[1];x==="countryCode"?(N(c=>({...c,legalAddress:{...c.legalAddress,[x]:n,region:"",regionCode:""}})),p(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T}),d(c=>{const T={...c};return delete T["legalAddress.region"],delete T["legalAddress.regionCode"],T})):N(x==="region"?c=>({...c,legalAddress:{...c.legalAddress,region:n,regionCode:k?c.legalAddress.regionCode:n}}):c=>({...c,legalAddress:{...c.legalAddress,[x]:n}}))}else N(x=>({...x,[s]:n}))},O=s=>n=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");x.has(s)&&!g||c&&!C||(P(s,n),v[s]&&p(M=>{const I={...M};return delete I[s],I}))},F=(s,n)=>{const x=new Set(["name","email","legalName","vatTaxId","resellerId"]),c=s.startsWith("legalAddress.");if(x.has(s)&&!g||c&&!C)return;n!==void 0&&P(s,n),d(E=>({...E,[s]:!0}));let M=n;if(M===void 0)if(s.startsWith("legalAddress.")){const E=s.split(".")[1],b=r.legalAddress[E];M=typeof b=="string"?b:""}else{const E=r[s];M=typeof E=="string"?E:""}const I=A(s,M);p(I?E=>({...E,[s]:I}):E=>{const b={...E};return delete b[s],b})};return h(Q,{variant:"secondary",className:"account-edit-company-profile",children:[t(ue,{title:i.title,divider:!1,className:"account-edit-company-profile__title"}),a!=null&&a.text?t(he,{className:"account-edit-company-profile__notification",type:a.type,variant:"secondary",heading:a.text,icon:a.icon,"data-testid":"editCompanyInLineAlert"}):null,h("form",{className:"account-edit-company-profile-form",onSubmit:w,children:[g&&t(we,{loading:u,value:{name:r.name,email:r.email,legalName:r.legalName,vatTaxId:r.vatTaxId,resellerId:r.resellerId},errors:v,touched:l,onBlur:F}),C&&t(Pe,{loading:u,loadingCountries:D,value:r.legalAddress,errors:v,touched:l,onChange:O,onBlur:F,countryOptions:_,regionOptions:$,isRegionRequired:m,hasRegionOptions:k}),h("div",{className:"account-edit-company-profile__actions",children:[t(X,{disabled:u,type:"button",variant:"secondary",onClick:()=>o==null?void 0:o(),children:i.cancel}),t(X,{disabled:u||!g&&!C,type:"submit",variant:"primary",children:i.save})]})]}),u&&h("div",{className:"account-edit-company-profile__loading-overlay","data-testid":"editCompanyLoadingOverlay",children:[t(fe,{size:"large"}),t("div",{className:"account-edit-company-profile__loading-text",children:i.saving})]})]})},Ke=({className:a,withHeader:e=!0,slots:u})=>{const y=j({containerTitle:"Company.CompanyProfile.containerTitle"}),{inLineAlertProps:o,handleSetInLineAlert:i}=be(),r=J(null),{company:N,loading:v,saving:p,showEditForm:l,handleShowEditForm:d,handleHideEditForm:g,handleUpdateCompany:C}=Te({handleSetInLineAlert:i,editFormRef:r});return v?t("div",{"data-testid":"companyProfileLoader",children:t(ye,{withCard:!0})}):h("div",{className:me(["account-company-profile",a]),children:[e?t(ue,{title:y.containerTitle,divider:!1,className:"company-profile__title"}):null,t(xe,{company:N,slots:u,showEditForm:l,handleShowEditForm:d}),l?t("div",{ref:r,children:t(Fe,{inLineAlertProps:o,company:N,loading:p,onSubmit:C,onCancel:g})}):null]})};export{Ke as CompanyProfile,Ke as default};
|
|
4
4
|
//# sourceMappingURL=CompanyProfile.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as D,jsx as t,Fragment as de}from"@dropins/tools/preact-jsx-runtime.js";import{useState as I,useEffect as Z,useRef as oe,useCallback as O}from"@dropins/tools/preact-hooks.js";import{Slot as ve,classes as he}from"@dropins/tools/lib.js";import{Card as ae,InLineAlert as re,ProgressSpinner as le,Field as me,Input as pe,Button as A,Modal as ye,Header as be}from"@dropins/tools/components.js";import{f as fe}from"../chunks/fetchUserPermissions.js";import{b as Ce}from"../chunks/company-permissions.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ie}from"../chunks/useCompanyContextListener.js";import{a as Te,i as we}from"../chunks/isCompanyUser.js";import*as ge from"@dropins/tools/preact-compat.js";import{memo as Se}from"@dropins/tools/preact-compat.js";import{T as Ee}from"../chunks/Tree.js";import{C as Ne}from"../chunks/CompanyUserForm.js";import{events as te}from"@dropins/tools/event-bus.js";import{p as ce,E as ie}from"../chunks/acdl.js";import{g as Ue,c as Me,u as xe,a as _e,b as ke,d as De}from"../chunks/updateCompanyTeam.js";import{d as Ae}from"../chunks/updateCompanyUser.js";import{u as Pe}from"../chunks/useInLineAlert.js";import{a as Le,b as Fe}from"../chunks/CompanyLoaders.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";const Ve=u=>ge.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...u},ge.createElement("path",{vectorEffect:"non-scaling-stroke",fillRule:"evenodd",clipRule:"evenodd",d:"M1 20.8953L12.1922 1.5L23.395 20.8953H1ZM13.0278 13.9638L13.25 10.0377V9H11.25V10.0377L11.4722 13.9638H13.0278ZM11.2994 16V17.7509H13.2253V16H11.2994Z",fill:"currentColor"}));function Re(u){const{mode:E,entityId:m,parentStructureId:d,onSaved:e,onError:g,onSuccess:i}=u,n=j({teamTitleRequired:"Company.CompanyStructure.shared.validation.teamTitleRequired",createTeamError:"Company.CompanyStructure.messages.createTeamError",saveTeamError:"Company.CompanyStructure.messages.saveTeamError",createTeamSuccess:"Company.CompanyStructure.messages.createTeamSuccess",updateTeamSuccess:"Company.CompanyStructure.messages.updateTeamSuccess"}),[p,o]=I({id:"",name:"",description:""}),[h,S]=I({}),[y,k]=I({}),[w,N]=I(!1),[F,P]=I(null);Z(()=>{E!=="edit"||!m||(N(!0),Ue(m).then(f=>{f&&o({id:f.id,name:f.name||"",description:f.description||""})}).finally(()=>N(!1)))},[E,m]);const H=(f,T)=>f==="name"?T.trim()?null:n.teamTitleRequired:null,x=(f,T)=>{o(U=>({...U,[f]:T})),F&&P(null)};return{values:p,errors:h,touched:y,loading:w,setValue:x,onBlur:(f,T)=>{T!==void 0&&x(f,T),k(L=>({...L,[f]:!0}));const U=T!==void 0?T:p[f]||"",v=H(f,U);S(v?L=>({...L,[f]:v}):L=>{const V={...L};return delete V[f],V})},submit:async()=>{const f=H("name",p.name);if(f){S({name:f}),k({name:!0});return}const T=p.name;try{if(E==="add"){const U=await Me({name:p.name,description:p.description||null,targetId:d??null});if(!U){const v=n.createTeamError;g?g(v):P(v);return}e({label:T,structureId:U.structureId,entityId:U.id,type:"team",description:p.description||void 0}),i&&i(n.createTeamSuccess)}else m&&(await xe({id:m,name:p.name,description:p.description||null}),e({label:T,entityId:m,type:"team",description:p.description||void 0}),i&&i(n.updateTeamSuccess))}catch(U){const v=U instanceof Error?U.message:n.saveTeamError;g?g(v):P(v)}},generalError:F}}const ze=Se(({mode:u,entityId:E,parentStructureId:m,permissions:d,onSaved:e,onCancel:g,onError:i,onSuccess:n})=>{const p=(d==null?void 0:d.canEditUsers)??!1,{values:o,errors:h,touched:S,loading:y,onBlur:k,submit:w,generalError:N}=Re({mode:u,entityId:E,parentStructureId:m,onSaved:e,onError:i?x=>{i(x),g()}:void 0,onSuccess:n}),[F,P]=I(!1),H=j({addTeam:"Company.CompanyStructure.shared.titles.addTeam",editTeam:"Company.CompanyStructure.shared.titles.editTeam",teamTitle:"Company.CompanyStructure.shared.fields.teamTitle",description:"Company.CompanyStructure.shared.fields.description"});return D("div",{children:[t("h3",{className:"acm-structure-panel__title",children:u==="add"?H.addTeam:H.editTeam}),D(ae,{variant:"secondary",className:`company-team-form__card ${F?"is-working":""}`,children:[!i&&N?t(re,{className:"company-team-form__notification",type:"error",variant:"secondary",heading:N}):null,F?t("div",{className:"company-team-form__overlay","aria-live":"polite",children:t(le,{size:"small"})}):null,y?t(Le,{}):D("div",{className:"company-team-form__content",children:[t(me,{label:H.teamTitle,required:!0,className:"acm-structure-panel__field",error:S.name&&h.name?h.name:void 0,children:t(pe,{name:"team_title",type:"text",value:o.name,onBlur:x=>{const Y=x.target;k("name",Y.value)},variant:"primary",size:"medium",disabled:!p})}),t(me,{label:H.description,className:"acm-structure-panel__field",children:t(pe,{name:"team_description",type:"textarea",value:o.description||"",onBlur:x=>{const Y=x.target;k("description",Y.value)},variant:"primary",size:"medium",disabled:!p})})]})]}),y?null:D("div",{className:"acm-structure-modal__actions",children:[t(A,{type:"button",variant:"primary",onClick:async()=>{if(!F){P(!0);try{await w()}finally{P(!1)}}},disabled:F||!p,children:"Save"}),t(A,{type:"button",variant:"secondary",disabled:F,onClick:g,children:"Cancel"})]})]})});function Be({handleSetInLineAlert:u,permissions:E}={permissions:null}){const m=(E==null?void 0:E.canViewUsers)??!1,d=j({loadError:"Company.CompanyStructure.messages.loadError",updateError:"Company.CompanyStructure.messages.updateError",failedToMoveItem:"Company.CompanyStructure.messages.failedToMoveItem",removeUserSuccess:"Company.CompanyStructure.messages.removeUserSuccess",deleteTeamSuccess:"Company.CompanyStructure.messages.deleteTeamSuccess",removeMultipleSuccess:"Company.CompanyStructure.messages.removeMultipleSuccess",moveUserSuccess:"Company.CompanyStructure.messages.moveUserSuccess",moveTeamSuccess:"Company.CompanyStructure.messages.moveTeamSuccess"}),{loadError:e,updateError:g}=d,[i,n]=I(null),[p,o]=I(!0),[h,S]=I(!1),[y,k]=I(!1),[w,N]=I(new Set),[F,P]=I(null),[H,x]=I(new Set),[Y,G]=I({}),f=oe(u),T=oe(!1),U=oe(!1);Z(()=>{f.current=u},[u]);const v=O((a,l)=>{u&&(a==="success"?u({type:"success",text:l}):a==="error"?u({type:"error",text:l}):u(),S(!1))},[u]),L=O(async()=>{if(T.current)return null;if(T.current=!0,!m)return o(!1),n(null),N(new Set),P(null),x(new Set),T.current=!1,null;o(!0);try{const l=await _e();return n(l),N(new Set(l.map(_=>_.id))),o(!1),l}catch{return o(!1),f.current&&f.current({type:"error",text:e}),null}finally{T.current=!1}},[m,e]);Z(()=>{m&&!U.current&&(U.current=!0,L())},[m,L]),Z(()=>{const a=()=>{o(!0),N(new Set),P(null),x(new Set),L()},l=te.on("companyContext/changed",a,{eager:!0});return()=>{l==null||l.off()}},[L]);const V=O(async(a,l)=>{try{if(S(!0),!await ke({id:a,parentId:l}))return v("error",d.failedToMoveItem),!1;const b=new Map(i==null?void 0:i.map(c=>[c.id,c])).get(a),r=(b==null?void 0:b.type)==="team"?d.moveTeamSuccess:d.moveUserSuccess;return n(c=>c?c.map(C=>C.id===a?{...C,parentId:l}:C):null),N(c=>new Set([...c,l])),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"move",nodeId:a,newParentId:l}),te.emit("companyStructure/updated",{message:"Structure updated",action:"move",nodeId:a,newParentId:l,nodes:i||[]}),v("success",r),!0}catch(_){const R=_ instanceof Error?_.message:g;return v("error",R),!1}finally{S(!1)}},[i,v,g,d.failedToMoveItem,d.moveUserSuccess,d.moveTeamSuccess]),ne=O(()=>{i&&N(new Set(i.map(a=>a.id)))},[i]),q=O(()=>{if(i){const a=i.filter(l=>l.parentId===null).map(l=>l.id);N(new Set(a))}},[i]),$=O(a=>{n(l=>{const _=l?[...l,{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}]:[{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}];return te.emit("companyStructure/updated",{message:"Structure updated",action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodes:_}),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodeType:a.type}),_}),a.parentId&&N(l=>new Set([...l,a.parentId]))},[]),K=O((a,l,_)=>{l&&n(R=>R?R.map(b=>a.includes(b.id)?{...b,label:l,description:_}:b):null)},[]),Q=O(async a=>{if(a.length)try{S(!0);const l=new Map((i||[]).map(b=>[b.id,b])),_=a.map(b=>l.get(b)).filter(Boolean);for(const b of a){const r=l.get(b);!r||!r.entityId||(r.type==="team"?await De(r.entityId):await Ae({id:r.entityId}))}n(b=>{if(!b)return null;const r=new Set(a);return b.filter(c=>!r.has(c.id))}),P(null),x(new Set),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"remove",nodeIds:a}),te.emit("companyStructure/updated",{message:"Structure updated",action:"remove",nodeIds:a,nodes:i||[]});let R;if(a.length===1){const b=_[0];R=(b==null?void 0:b.type)==="team"?d.deleteTeamSuccess:d.removeUserSuccess}else R=d.removeMultipleSuccess.replace("{count}",a.length.toString());v("success",R)}catch(l){const _=l instanceof Error?l.message:g;v("error",_)}finally{S(!1)}},[i,v,g,d.removeUserSuccess,d.deleteTeamSuccess,d.removeMultipleSuccess]),X=O(a=>{G(a)},[]),W=O(()=>{k(!0),v("success",""),G({})},[v]),ee=O(a=>{a==null||a(),k(!1),G({})},[]);return{nodes:i,loading:p,submitLoading:h,showEditForm:y,inputChange:Y,expanded:w,setExpanded:N,selected:F,setSelected:P,selectedMany:H,setSelectedMany:x,move:V,expandAll:ne,collapseAll:q,insertNode:$,renameNodes:K,removeNodes:Q,handleInputChange:X,handleShowEditForm:W,handleHideEditForm:ee,renderAlertMessage:v,working:h}}const Oe=Se(({permissions:u,slots:E})=>{var b;const m=(u==null?void 0:u.canEditUsers)??!1,d=(u==null?void 0:u.canViewUsers)??!1,e=j({expandAll:"Company.CompanyStructure.shared.buttons.expandAll",collapseAll:"Company.CompanyStructure.shared.buttons.collapseAll",addUser:"Company.CompanyStructure.shared.buttons.addUser",addTeam:"Company.CompanyStructure.shared.buttons.addTeam",editSelected:"Company.CompanyStructure.shared.buttons.editSelected",remove:"Company.CompanyStructure.shared.buttons.remove",ok:"Company.CompanyStructure.shared.buttons.ok",cancel:"Company.CompanyStructure.shared.buttons.cancel",close:"Company.CompanyStructure.shared.buttons.close",deleting:"Company.CompanyStructure.shared.buttons.deleting",removing:"Company.CompanyStructure.shared.buttons.removing",noStructureData:"Company.CompanyStructure.messages.noStructureData",processing:"Company.CompanyStructure.shared.messages.processing",cannotDeleteUser:"Company.CompanyStructure.messages.cannotDeleteUser",cannotDeleteTeam:"Company.CompanyStructure.messages.cannotDeleteTeam",removeUserConfirm:"Company.CompanyStructure.messages.removeUserConfirm",deleteTeamConfirm:"Company.CompanyStructure.messages.deleteTeamConfirm",removeItemsConfirm:"Company.CompanyStructure.messages.removeItemsConfirm",teamDescription:"Company.CompanyStructure.shared.messages.teamDescription",removeUserMessage:"Company.CompanyStructure.messages.removeUserMessage",cannotDeleteUserMessage:"Company.CompanyStructure.messages.cannotDeleteUserMessage",cannotDeleteTeamMessage:"Company.CompanyStructure.messages.cannotDeleteTeamMessage",removeItemsMessage:"Company.CompanyStructure.messages.removeItemsMessage",companyStructureActions:"Company.CompanyStructure.shared.ariaLabels.companyStructureActions",expandAllNodes:"Company.CompanyStructure.shared.ariaLabels.expandAllNodes",collapseAllNodes:"Company.CompanyStructure.shared.ariaLabels.collapseAllNodes",addUserAria:"Company.CompanyStructure.shared.ariaLabels.addUser",addTeamAria:"Company.CompanyStructure.shared.ariaLabels.addTeam",editSelectedAria:"Company.CompanyStructure.shared.ariaLabels.editSelected",removeSelectedAria:"Company.CompanyStructure.shared.ariaLabels.removeSelected",showDescription:"Company.CompanyStructure.shared.ariaLabels.showDescription",delete:"Company.CompanyStructure.shared.options.delete",expand:"Company.CompanyStructure.shared.options.expand",collapse:"Company.CompanyStructure.shared.options.collapse",deleteTeamMessage:"Company.CompanyStructure.messages.deleteTeamMessage"}),{inLineAlertProps:g,handleSetInLineAlert:i}=Pe(),{nodes:n,loading:p,submitLoading:o,expanded:h,setExpanded:S,selected:y,setSelected:k,selectedMany:w,setSelectedMany:N,move:F,expandAll:P,collapseAll:H,insertNode:x,renameNodes:Y,removeNodes:G}=Be({handleSetInLineAlert:i,permissions:u}),[f,T]=I(null),[U,v]=I("add"),[L,V]=I(!1),[ne,q]=I([]),[$,K]=I({title:"",body:"",confirmLabel:e.remove,blocked:!1}),[Q,X]=I(null),W=()=>T(null),ee=((b=n==null?void 0:n.find(r=>r.parentId===null))==null?void 0:b.id)??null,a=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label})),l=(r,c)=>{let C=r;const s=new Map(a.map(z=>[z.id,z])),M=new Set;for(;C&&!M.has(C);){M.add(C);const z=s.get(C);if(!z)break;if(z.parentId===c)return!0;C=z.parentId??null}return!1},_=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label,type:r.type,description:r.description,entityId:r.entityId})),R=D(de,{children:[(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=m&&r.length===1,C=m&&r.length>=1;return t(ae,{variant:"secondary",className:"acm-structure-toolbar-card acm-structure-toolbar-card--spaced",children:D("div",{className:"acm-structure-toolbar",role:"toolbar","aria-label":e.companyStructureActions,children:[t(A,{type:"button",variant:"secondary",onClick:P,"aria-label":e.expandAllNodes,disabled:!d,"aria-disabled":!d,children:e.expandAll}),t(A,{type:"button",variant:"secondary",onClick:H,"aria-label":e.collapseAllNodes,disabled:!d,"aria-disabled":!d,children:e.collapseAll}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("user")},"aria-label":e.addUserAria,disabled:!m,"aria-disabled":!m,children:e.addUser}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("team")},"aria-label":e.addTeamAria,disabled:!m,"aria-disabled":!m,children:e.addTeam}),t(A,{type:"button",variant:"primary",disabled:!c,"aria-disabled":!c,"aria-label":e.editSelectedAria,onClick:()=>{if(!c)return;const s=r,M=n==null?void 0:n.find(z=>z.id===s[0]);(M==null?void 0:M.type)==="user"?(v("edit"),T("user")):(v("edit"),T("team"))},children:e.editSelected}),t(A,{type:"button",variant:"secondary",disabled:!C||o,"aria-disabled":!C||o,"aria-label":e.removeSelectedAria,onClick:()=>{if(!C||o)return;const s=r;if(s.length===1){const M=n==null?void 0:n.find(J=>J.id===s[0]);if(!M)return;(n==null?void 0:n.some(J=>J.parentId===M.id))?(K({title:M.type==="user"?e.cannotDeleteUser:e.cannotDeleteTeam,body:M.type==="user"?e.cannotDeleteUserMessage:e.cannotDeleteTeamMessage,confirmLabel:void 0,blocked:!0}),q([]),V(!0)):(K({title:M.type==="user"?e.removeUserConfirm:e.deleteTeamConfirm,body:M.type==="user"?e.removeUserMessage:e.deleteTeamMessage,confirmLabel:M.type==="user"?e.remove:e.delete,blocked:!1}),q(s),V(!0))}else K({title:e.removeItemsConfirm.replace("{count}",s.length.toString()),body:e.removeItemsMessage,confirmLabel:e.remove,blocked:!1}),q(s),V(!0)},children:e.remove})]})})})(),f?D("div",{className:"acm-structure-panel",children:[o?D("div",{className:"acm-structure-working","aria-live":"polite",children:[t(le,{size:"small"})," ",e.processing]}):null,f==="user"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(Ne,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null,f==="team"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(ze,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId,description:s.description}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label,s.description),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null]}):null,D(ae,{variant:"secondary",className:`acm-structure-tree-card ${o?"is-working":""}`,children:[g&&g.text?t(re,{className:"acm-structure-panel__notification",type:g.type||"success",variant:"secondary",heading:g.text}):null,!p&&!o&&n&&n.length===0?t(re,{className:"acm-structure-panel__notification",type:"warning",variant:"secondary",heading:e.noStructureData}):null,!p&&o?t("div",{className:"acm-structure-tree-overlay","aria-live":"polite",children:t(le,{size:"medium"})}):null,p?t("div",{className:"acm-structure-tree-content",children:t(Fe,{rows:8})}):t("div",{className:"acm-structure-tree-content",children:t(Ee,{rootId:null,items:a,expandedIds:h,selectedId:y,selectedIds:w,onExpandedChange:S,onSelectedChange:k,onSelectedIdsChange:N,renderExpander:({expanded:r,toggle:c})=>t("button",{type:"button",className:`acm-structure-expander acm-structure-expander-button ${r?"is-open":""}`,"aria-label":r?e.collapse:e.expand,onClick:C=>{C.stopPropagation(),c()},children:r?"−":"+"}),renderNode:({item:r,hasChildren:c,select:C,expander:s,checkbox:M,icon:z})=>{var J;return D("div",{className:"acm-structure-row",onClick:C,children:[c?s?t("span",{onClick:B=>B.stopPropagation(),children:s()}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}),t("span",{className:"acm-structure-handle","aria-hidden":!0}),z?t("span",{onClick:B=>B.stopPropagation(),children:z()}):t("span",{className:`acm-structure-icon ${((J=n==null?void 0:n.find(B=>B.id===r.id))==null?void 0:J.type)==="team"?"is-team":"is-user"}`,"aria-hidden":!0}),M?t("span",{onClick:B=>B.stopPropagation(),children:M()}):null,t("span",{className:"acm-structure-label",children:r.label}),(()=>{const B=n==null?void 0:n.find(se=>se.id===r.id),ue=(B==null?void 0:B.type)==="team"&&B.description||"";return ue?t(A,{type:"button",variant:"secondary",onClick:se=>{se.stopPropagation(),X({id:r.id,text:ue})},"aria-label":e.showDescription,className:"acm-structure-description-button",children:"?"}):null})()]})},draggable:()=>!o&&m,canDrop:(r,c)=>{if(!m||r===c)return!1;const C=n==null?void 0:n.find(s=>s.id===r);return C&&C.parentId===c?!1:!l(c,r)},onMove:async({id:r,newParentId:c})=>{m&&await F(r,c)}})})]}),L?t(ye,{open:L,onClose:()=>{o||(V(!1),q([]))},children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:$.title}),t("div",{children:$.body}),t("div",{className:"acm-structure-modal-actions",children:$.blocked?t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.ok}):D(de,{children:[t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.cancel}),t(A,{type:"button",variant:"primary",disabled:o,onClick:async()=>{await G(ne),V(!1),q([])},children:o?$.confirmLabel===e.delete?e.deleting:e.removing:$.confirmLabel||e.remove})]})})]})}):null,Q?t(ye,{open:!!Q,onClose:()=>X(null),children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:e.teamDescription}),t("div",{children:Q.text}),t("div",{className:"acm-structure-modal-actions",children:t(A,{type:"button",variant:"secondary",onClick:()=>X(null),children:e.close})})]})}):null]});return E!=null&&E.StructureData?t(ve,{name:"StructureData",slot:E.StructureData,context:{structureData:_,Default:R}}):R}),He=()=>{const u=j({fetchPermissionsError:"Company.CompanyStructure.messages.fetchPermissionsError"}),[E,m]=I(null),[d,e]=I(!0),[g,i]=I(null),n=O(async()=>{var p,o;try{e(!0),i(null);const{roleResponse:h}=await fe(),S=(o=(p=h==null?void 0:h.data)==null?void 0:p.customer)==null?void 0:o.role,y=Ce(S);m(y)}catch(h){i(h instanceof Error?h:new Error(u.fetchPermissionsError))}finally{e(!1)}},[u.fetchPermissionsError]);return Z(()=>{let p=!0;return(async()=>{var h,S;try{e(!0),i(null);const{roleResponse:y}=await fe();if(!p)return;const k=(S=(h=y==null?void 0:y.data)==null?void 0:h.customer)==null?void 0:S.role,w=Ce(k);m(w)}catch(y){if(!p)return;i(y instanceof Error?y:new Error(u.fetchPermissionsError))}finally{p&&e(!1)}})(),()=>{p=!1}},[]),{permissions:E,loading:d,error:g,refreshPermissions:n}},Ye="/customer/company/create",qe=({className:u,children:E,createCompanyAccountUrl:m=Ye,...d})=>{const e=j({individualUserMessage:"Company.CustomerCompanyInfo.individualUserMessage",createAccountCta:"Company.CustomerCompanyInfo.createAccountCta"}),g=e.individualUserMessage||"You don't have a company account yet.";return t(ae,{variant:"secondary",className:he(["company-management-company-structure-card",u]),...d,children:D("div",{children:[t(re,{type:"warning",variant:"secondary",heading:g,icon:t(Ve,{}),className:"company-management-company-structure-card__alert","data-testid":"company-structure-inline-alert"}),t("div",{className:"company-management-company-structure-card__cta",children:t(A,{as:"a",href:m,variant:"primary","data-testid":"company-structure-create-company-button",children:e.createAccountCta||"Create a Company Account"})})]})})},yt=({className:u,withHeader:E=!1,slots:m,isAuthenticated:d=!1,onRedirectLogin:e,onRedirectAccount:g})=>{const i=j({containerTitle:"Company.CompanyStructure.containerTitle"}),{permissions:n,refreshPermissions:p}=He(),[o,h]=I("loading");return Ie(p),Z(()=>{let S=!0;return(async()=>{try{if(!d){S&&h("redirect-login");return}if(!await Te()){S&&(console.log("Company registration disabled - redirecting to account dashboard"),h("redirect-account"));return}await we()?S&&h("show-structure"):S&&h("show-empty")}catch(y){console.error("Error in CompanyStructure - redirecting to login page:",y),S&&h("redirect-login")}})(),()=>{S=!1}},[d]),Z(()=>{o==="redirect-login"&&e&&e(),o==="redirect-account"&&g&&g()},[o,e,g]),o==="loading"||o==="redirect-login"||o==="redirect-account"?null:o==="show-empty"?t(qe,{className:u}):o==="show-structure"?D("div",{className:he(["account-company-structure",u]),children:[E?t(be,{title:i.containerTitle,divider:!1,className:"company-structure__title"}):null,t(Oe,{slots:m,permissions:n})]}):null};export{yt as CompanyStructure,yt as default};
|
|
3
|
+
import{jsxs as D,jsx as t,Fragment as de}from"@dropins/tools/preact-jsx-runtime.js";import{useState as I,useEffect as Z,useRef as oe,useCallback as O}from"@dropins/tools/preact-hooks.js";import{Slot as ve,classes as he}from"@dropins/tools/lib.js";import{Card as ae,InLineAlert as re,ProgressSpinner as le,Field as me,Input as pe,Button as A,Modal as ye,Header as be}from"@dropins/tools/components.js";import{f as fe}from"../chunks/fetchUserPermissions.js";import{b as Ce}from"../chunks/company-permissions.js";import{useText as j}from"@dropins/tools/i18n.js";import{u as Ie}from"../chunks/useCompanyContextListener.js";import{a as Te,i as we}from"../chunks/isCompanyUser.js";import*as ge from"@dropins/tools/preact-compat.js";import{memo as Se}from"@dropins/tools/preact-compat.js";import{T as Ee}from"../chunks/Tree.js";import{C as Ne}from"../chunks/CompanyUserForm.js";import{a as Ue,b as Me}from"../chunks/CompanyLoaders.js";import{events as te}from"@dropins/tools/event-bus.js";import{p as ce,E as ie}from"../chunks/acdl.js";import{g as xe,c as _e,u as ke,a as De,b as Ae,d as Pe}from"../chunks/updateCompanyTeam.js";import{d as Le}from"../chunks/updateCompanyUser.js";import{u as Fe}from"../chunks/useInLineAlert.js";import"../chunks/fetch-error.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";const Ve=u=>ge.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...u},ge.createElement("path",{vectorEffect:"non-scaling-stroke",fillRule:"evenodd",clipRule:"evenodd",d:"M1 20.8953L12.1922 1.5L23.395 20.8953H1ZM13.0278 13.9638L13.25 10.0377V9H11.25V10.0377L11.4722 13.9638H13.0278ZM11.2994 16V17.7509H13.2253V16H11.2994Z",fill:"currentColor"}));function Re(u){const{mode:E,entityId:m,parentStructureId:d,onSaved:e,onError:g,onSuccess:i}=u,n=j({teamTitleRequired:"Company.CompanyStructure.shared.validation.teamTitleRequired",createTeamError:"Company.CompanyStructure.messages.createTeamError",saveTeamError:"Company.CompanyStructure.messages.saveTeamError",createTeamSuccess:"Company.CompanyStructure.messages.createTeamSuccess",updateTeamSuccess:"Company.CompanyStructure.messages.updateTeamSuccess"}),[p,o]=I({id:"",name:"",description:""}),[h,S]=I({}),[y,k]=I({}),[w,N]=I(!1),[F,P]=I(null);Z(()=>{E!=="edit"||!m||(N(!0),xe(m).then(f=>{f&&o({id:f.id,name:f.name||"",description:f.description||""})}).finally(()=>N(!1)))},[E,m]);const H=(f,T)=>f==="name"?T.trim()?null:n.teamTitleRequired:null,x=(f,T)=>{o(U=>({...U,[f]:T})),F&&P(null)};return{values:p,errors:h,touched:y,loading:w,setValue:x,onBlur:(f,T)=>{T!==void 0&&x(f,T),k(L=>({...L,[f]:!0}));const U=T!==void 0?T:p[f]||"",v=H(f,U);S(v?L=>({...L,[f]:v}):L=>{const V={...L};return delete V[f],V})},submit:async()=>{const f=H("name",p.name);if(f){S({name:f}),k({name:!0});return}const T=p.name;try{if(E==="add"){const U=await _e({name:p.name,description:p.description||null,targetId:d??null});if(!U){const v=n.createTeamError;g?g(v):P(v);return}e({label:T,structureId:U.structureId,entityId:U.id,type:"team",description:p.description||void 0}),i&&i(n.createTeamSuccess)}else m&&(await ke({id:m,name:p.name,description:p.description||null}),e({label:T,entityId:m,type:"team",description:p.description||void 0}),i&&i(n.updateTeamSuccess))}catch(U){const v=U instanceof Error?U.message:n.saveTeamError;g?g(v):P(v)}},generalError:F}}const ze=Se(({mode:u,entityId:E,parentStructureId:m,permissions:d,onSaved:e,onCancel:g,onError:i,onSuccess:n})=>{const p=(d==null?void 0:d.canEditUsers)??!1,{values:o,errors:h,touched:S,loading:y,onBlur:k,submit:w,generalError:N}=Re({mode:u,entityId:E,parentStructureId:m,onSaved:e,onError:i?x=>{i(x),g()}:void 0,onSuccess:n}),[F,P]=I(!1),H=j({addTeam:"Company.CompanyStructure.shared.titles.addTeam",editTeam:"Company.CompanyStructure.shared.titles.editTeam",teamTitle:"Company.CompanyStructure.shared.fields.teamTitle",description:"Company.CompanyStructure.shared.fields.description"});return D("div",{children:[t("h3",{className:"acm-structure-panel__title",children:u==="add"?H.addTeam:H.editTeam}),D(ae,{variant:"secondary",className:`company-team-form__card ${F?"is-working":""}`,children:[!i&&N?t(re,{className:"company-team-form__notification",type:"error",variant:"secondary",heading:N}):null,F?t("div",{className:"company-team-form__overlay","aria-live":"polite",children:t(le,{size:"small"})}):null,y?t(Ue,{}):D("div",{className:"company-team-form__content",children:[t(me,{label:H.teamTitle,required:!0,className:"acm-structure-panel__field",error:S.name&&h.name?h.name:void 0,children:t(pe,{name:"team_title",type:"text",value:o.name,onBlur:x=>{const Y=x.target;k("name",Y.value)},variant:"primary",size:"medium",disabled:!p})}),t(me,{label:H.description,className:"acm-structure-panel__field",children:t(pe,{name:"team_description",type:"textarea",value:o.description||"",onBlur:x=>{const Y=x.target;k("description",Y.value)},variant:"primary",size:"medium",disabled:!p})})]})]}),y?null:D("div",{className:"acm-structure-modal__actions",children:[t(A,{type:"button",variant:"primary",onClick:async()=>{if(!F){P(!0);try{await w()}finally{P(!1)}}},disabled:F||!p,children:"Save"}),t(A,{type:"button",variant:"secondary",disabled:F,onClick:g,children:"Cancel"})]})]})});function Be({handleSetInLineAlert:u,permissions:E}={permissions:null}){const m=(E==null?void 0:E.canViewUsers)??!1,d=j({loadError:"Company.CompanyStructure.messages.loadError",updateError:"Company.CompanyStructure.messages.updateError",failedToMoveItem:"Company.CompanyStructure.messages.failedToMoveItem",removeUserSuccess:"Company.CompanyStructure.messages.removeUserSuccess",deleteTeamSuccess:"Company.CompanyStructure.messages.deleteTeamSuccess",removeMultipleSuccess:"Company.CompanyStructure.messages.removeMultipleSuccess",moveUserSuccess:"Company.CompanyStructure.messages.moveUserSuccess",moveTeamSuccess:"Company.CompanyStructure.messages.moveTeamSuccess"}),{loadError:e,updateError:g}=d,[i,n]=I(null),[p,o]=I(!0),[h,S]=I(!1),[y,k]=I(!1),[w,N]=I(new Set),[F,P]=I(null),[H,x]=I(new Set),[Y,G]=I({}),f=oe(u),T=oe(!1),U=oe(!1);Z(()=>{f.current=u},[u]);const v=O((a,l)=>{u&&(a==="success"?u({type:"success",text:l}):a==="error"?u({type:"error",text:l}):u(),S(!1))},[u]),L=O(async()=>{if(T.current)return null;if(T.current=!0,!m)return o(!1),n(null),N(new Set),P(null),x(new Set),T.current=!1,null;o(!0);try{const l=await De();return n(l),N(new Set(l.map(_=>_.id))),o(!1),l}catch{return o(!1),f.current&&f.current({type:"error",text:e}),null}finally{T.current=!1}},[m,e]);Z(()=>{m&&!U.current&&(U.current=!0,L())},[m,L]),Z(()=>{const a=()=>{o(!0),N(new Set),P(null),x(new Set),L()},l=te.on("companyContext/changed",a,{eager:!0});return()=>{l==null||l.off()}},[L]);const V=O(async(a,l)=>{try{if(S(!0),!await Ae({id:a,parentId:l}))return v("error",d.failedToMoveItem),!1;const b=new Map(i==null?void 0:i.map(c=>[c.id,c])).get(a),r=(b==null?void 0:b.type)==="team"?d.moveTeamSuccess:d.moveUserSuccess;return n(c=>c?c.map(C=>C.id===a?{...C,parentId:l}:C):null),N(c=>new Set([...c,l])),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"move",nodeId:a,newParentId:l}),te.emit("companyStructure/updated",{message:"Structure updated",action:"move",nodeId:a,newParentId:l,nodes:i||[]}),v("success",r),!0}catch(_){const R=_ instanceof Error?_.message:g;return v("error",R),!1}finally{S(!1)}},[i,v,g,d.failedToMoveItem,d.moveUserSuccess,d.moveTeamSuccess]),ne=O(()=>{i&&N(new Set(i.map(a=>a.id)))},[i]),q=O(()=>{if(i){const a=i.filter(l=>l.parentId===null).map(l=>l.id);N(new Set(a))}},[i]),$=O(a=>{n(l=>{const _=l?[...l,{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}]:[{id:a.id,parentId:a.parentId,label:a.label,type:a.type,entityId:a.entityId,description:a.description}];return te.emit("companyStructure/updated",{message:"Structure updated",action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodes:_}),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"add",nodeId:a.id,newParentId:a.parentId||void 0,nodeType:a.type}),_}),a.parentId&&N(l=>new Set([...l,a.parentId]))},[]),K=O((a,l,_)=>{l&&n(R=>R?R.map(b=>a.includes(b.id)?{...b,label:l,description:_}:b):null)},[]),Q=O(async a=>{if(a.length)try{S(!0);const l=new Map((i||[]).map(b=>[b.id,b])),_=a.map(b=>l.get(b)).filter(Boolean);for(const b of a){const r=l.get(b);!r||!r.entityId||(r.type==="team"?await Pe(r.entityId):await Le({id:r.entityId}))}n(b=>{if(!b)return null;const r=new Set(a);return b.filter(c=>!r.has(c.id))}),P(null),x(new Set),ce(ie.EDIT_COMPANY_STRUCTURE_EVENT,{action:"remove",nodeIds:a}),te.emit("companyStructure/updated",{message:"Structure updated",action:"remove",nodeIds:a,nodes:i||[]});let R;if(a.length===1){const b=_[0];R=(b==null?void 0:b.type)==="team"?d.deleteTeamSuccess:d.removeUserSuccess}else R=d.removeMultipleSuccess.replace("{count}",a.length.toString());v("success",R)}catch(l){const _=l instanceof Error?l.message:g;v("error",_)}finally{S(!1)}},[i,v,g,d.removeUserSuccess,d.deleteTeamSuccess,d.removeMultipleSuccess]),X=O(a=>{G(a)},[]),W=O(()=>{k(!0),v("success",""),G({})},[v]),ee=O(a=>{a==null||a(),k(!1),G({})},[]);return{nodes:i,loading:p,submitLoading:h,showEditForm:y,inputChange:Y,expanded:w,setExpanded:N,selected:F,setSelected:P,selectedMany:H,setSelectedMany:x,move:V,expandAll:ne,collapseAll:q,insertNode:$,renameNodes:K,removeNodes:Q,handleInputChange:X,handleShowEditForm:W,handleHideEditForm:ee,renderAlertMessage:v,working:h}}const Oe=Se(({permissions:u,slots:E})=>{var b;const m=(u==null?void 0:u.canEditUsers)??!1,d=(u==null?void 0:u.canViewUsers)??!1,e=j({expandAll:"Company.CompanyStructure.shared.buttons.expandAll",collapseAll:"Company.CompanyStructure.shared.buttons.collapseAll",addUser:"Company.CompanyStructure.shared.buttons.addUser",addTeam:"Company.CompanyStructure.shared.buttons.addTeam",editSelected:"Company.CompanyStructure.shared.buttons.editSelected",remove:"Company.CompanyStructure.shared.buttons.remove",ok:"Company.CompanyStructure.shared.buttons.ok",cancel:"Company.CompanyStructure.shared.buttons.cancel",close:"Company.CompanyStructure.shared.buttons.close",deleting:"Company.CompanyStructure.shared.buttons.deleting",removing:"Company.CompanyStructure.shared.buttons.removing",noStructureData:"Company.CompanyStructure.messages.noStructureData",processing:"Company.CompanyStructure.shared.messages.processing",cannotDeleteUser:"Company.CompanyStructure.messages.cannotDeleteUser",cannotDeleteTeam:"Company.CompanyStructure.messages.cannotDeleteTeam",removeUserConfirm:"Company.CompanyStructure.messages.removeUserConfirm",deleteTeamConfirm:"Company.CompanyStructure.messages.deleteTeamConfirm",removeItemsConfirm:"Company.CompanyStructure.messages.removeItemsConfirm",teamDescription:"Company.CompanyStructure.shared.messages.teamDescription",removeUserMessage:"Company.CompanyStructure.messages.removeUserMessage",cannotDeleteUserMessage:"Company.CompanyStructure.messages.cannotDeleteUserMessage",cannotDeleteTeamMessage:"Company.CompanyStructure.messages.cannotDeleteTeamMessage",removeItemsMessage:"Company.CompanyStructure.messages.removeItemsMessage",companyStructureActions:"Company.CompanyStructure.shared.ariaLabels.companyStructureActions",expandAllNodes:"Company.CompanyStructure.shared.ariaLabels.expandAllNodes",collapseAllNodes:"Company.CompanyStructure.shared.ariaLabels.collapseAllNodes",addUserAria:"Company.CompanyStructure.shared.ariaLabels.addUser",addTeamAria:"Company.CompanyStructure.shared.ariaLabels.addTeam",editSelectedAria:"Company.CompanyStructure.shared.ariaLabels.editSelected",removeSelectedAria:"Company.CompanyStructure.shared.ariaLabels.removeSelected",showDescription:"Company.CompanyStructure.shared.ariaLabels.showDescription",delete:"Company.CompanyStructure.shared.options.delete",expand:"Company.CompanyStructure.shared.options.expand",collapse:"Company.CompanyStructure.shared.options.collapse",deleteTeamMessage:"Company.CompanyStructure.messages.deleteTeamMessage"}),{inLineAlertProps:g,handleSetInLineAlert:i}=Fe(),{nodes:n,loading:p,submitLoading:o,expanded:h,setExpanded:S,selected:y,setSelected:k,selectedMany:w,setSelectedMany:N,move:F,expandAll:P,collapseAll:H,insertNode:x,renameNodes:Y,removeNodes:G}=Be({handleSetInLineAlert:i,permissions:u}),[f,T]=I(null),[U,v]=I("add"),[L,V]=I(!1),[ne,q]=I([]),[$,K]=I({title:"",body:"",confirmLabel:e.remove,blocked:!1}),[Q,X]=I(null),W=()=>T(null),ee=((b=n==null?void 0:n.find(r=>r.parentId===null))==null?void 0:b.id)??null,a=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label})),l=(r,c)=>{let C=r;const s=new Map(a.map(z=>[z.id,z])),M=new Set;for(;C&&!M.has(C);){M.add(C);const z=s.get(C);if(!z)break;if(z.parentId===c)return!0;C=z.parentId??null}return!1},_=(n||[]).map(r=>({id:r.id,parentId:r.parentId,label:r.label,type:r.type,description:r.description,entityId:r.entityId})),R=D(de,{children:[(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=m&&r.length===1,C=m&&r.length>=1;return t(ae,{variant:"secondary",className:"acm-structure-toolbar-card acm-structure-toolbar-card--spaced",children:D("div",{className:"acm-structure-toolbar",role:"toolbar","aria-label":e.companyStructureActions,children:[t(A,{type:"button",variant:"secondary",onClick:P,"aria-label":e.expandAllNodes,disabled:!d,"aria-disabled":!d,children:e.expandAll}),t(A,{type:"button",variant:"secondary",onClick:H,"aria-label":e.collapseAllNodes,disabled:!d,"aria-disabled":!d,children:e.collapseAll}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("user")},"aria-label":e.addUserAria,disabled:!m,"aria-disabled":!m,children:e.addUser}),t(A,{type:"button",variant:"primary",onClick:()=>{v("add"),T("team")},"aria-label":e.addTeamAria,disabled:!m,"aria-disabled":!m,children:e.addTeam}),t(A,{type:"button",variant:"primary",disabled:!c,"aria-disabled":!c,"aria-label":e.editSelectedAria,onClick:()=>{if(!c)return;const s=r,M=n==null?void 0:n.find(z=>z.id===s[0]);(M==null?void 0:M.type)==="user"?(v("edit"),T("user")):(v("edit"),T("team"))},children:e.editSelected}),t(A,{type:"button",variant:"secondary",disabled:!C||o,"aria-disabled":!C||o,"aria-label":e.removeSelectedAria,onClick:()=>{if(!C||o)return;const s=r;if(s.length===1){const M=n==null?void 0:n.find(J=>J.id===s[0]);if(!M)return;(n==null?void 0:n.some(J=>J.parentId===M.id))?(K({title:M.type==="user"?e.cannotDeleteUser:e.cannotDeleteTeam,body:M.type==="user"?e.cannotDeleteUserMessage:e.cannotDeleteTeamMessage,confirmLabel:void 0,blocked:!0}),q([]),V(!0)):(K({title:M.type==="user"?e.removeUserConfirm:e.deleteTeamConfirm,body:M.type==="user"?e.removeUserMessage:e.deleteTeamMessage,confirmLabel:M.type==="user"?e.remove:e.delete,blocked:!1}),q(s),V(!0))}else K({title:e.removeItemsConfirm.replace("{count}",s.length.toString()),body:e.removeItemsMessage,confirmLabel:e.remove,blocked:!1}),q(s),V(!0)},children:e.remove})]})})})(),f?D("div",{className:"acm-structure-panel",children:[o?D("div",{className:"acm-structure-working","aria-live":"polite",children:[t(le,{size:"small"})," ",e.processing]}):null,f==="user"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(Ne,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null,f==="team"?(()=>{const r=w!=null&&w.size?Array.from(w):y?[y]:[],c=r.length?n==null?void 0:n.find(s=>s.id===r[0]):void 0,C=(c==null?void 0:c.id)??ee;return t(ze,{mode:U,entityId:c==null?void 0:c.entityId,parentStructureId:C,permissions:u,onSaved:s=>{U==="add"?s.structureId&&(x({id:s.structureId,parentId:C,label:s.label,type:s.type,entityId:s.entityId,description:s.description}),s.structureId&&(k(s.structureId),N(new Set([s.structureId])))):r.length&&Y(r,s.label,s.description),W()},onCancel:W,onError:s=>{i({text:s,type:"error"})},onSuccess:s=>{i({text:s,type:"success"})}})})():null]}):null,D(ae,{variant:"secondary",className:`acm-structure-tree-card ${o?"is-working":""}`,children:[g&&g.text?t(re,{className:"acm-structure-panel__notification",type:g.type||"success",variant:"secondary",heading:g.text}):null,!p&&!o&&n&&n.length===0?t(re,{className:"acm-structure-panel__notification",type:"warning",variant:"secondary",heading:e.noStructureData}):null,!p&&o?t("div",{className:"acm-structure-tree-overlay","aria-live":"polite",children:t(le,{size:"medium"})}):null,p?t("div",{className:"acm-structure-tree-content",children:t(Me,{rows:8})}):t("div",{className:"acm-structure-tree-content",children:t(Ee,{rootId:null,items:a,expandedIds:h,selectedId:y,selectedIds:w,onExpandedChange:S,onSelectedChange:k,onSelectedIdsChange:N,renderExpander:({expanded:r,toggle:c})=>t("button",{type:"button",className:`acm-structure-expander acm-structure-expander-button ${r?"is-open":""}`,"aria-label":r?e.collapse:e.expand,onClick:C=>{C.stopPropagation(),c()},children:r?"−":"+"}),renderNode:({item:r,hasChildren:c,select:C,expander:s,checkbox:M,icon:z})=>{var J;return D("div",{className:"acm-structure-row",onClick:C,children:[c?s?t("span",{onClick:B=>B.stopPropagation(),children:s()}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}):t("span",{className:"acm-structure-expander acm-structure-expander--placeholder"}),t("span",{className:"acm-structure-handle","aria-hidden":!0}),z?t("span",{onClick:B=>B.stopPropagation(),children:z()}):t("span",{className:`acm-structure-icon ${((J=n==null?void 0:n.find(B=>B.id===r.id))==null?void 0:J.type)==="team"?"is-team":"is-user"}`,"aria-hidden":!0}),M?t("span",{onClick:B=>B.stopPropagation(),children:M()}):null,t("span",{className:"acm-structure-label",children:r.label}),(()=>{const B=n==null?void 0:n.find(se=>se.id===r.id),ue=(B==null?void 0:B.type)==="team"&&B.description||"";return ue?t(A,{type:"button",variant:"secondary",onClick:se=>{se.stopPropagation(),X({id:r.id,text:ue})},"aria-label":e.showDescription,className:"acm-structure-description-button",children:"?"}):null})()]})},draggable:()=>!o&&m,canDrop:(r,c)=>{if(!m||r===c)return!1;const C=n==null?void 0:n.find(s=>s.id===r);return C&&C.parentId===c?!1:!l(c,r)},onMove:async({id:r,newParentId:c})=>{m&&await F(r,c)}})})]}),L?t(ye,{open:L,onClose:()=>{o||(V(!1),q([]))},children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:$.title}),t("div",{children:$.body}),t("div",{className:"acm-structure-modal-actions",children:$.blocked?t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.ok}):D(de,{children:[t(A,{type:"button",variant:"secondary",disabled:o,onClick:()=>{o||(V(!1),q([]))},children:e.cancel}),t(A,{type:"button",variant:"primary",disabled:o,onClick:async()=>{await G(ne),V(!1),q([])},children:o?$.confirmLabel===e.delete?e.deleting:e.removing:$.confirmLabel||e.remove})]})})]})}):null,Q?t(ye,{open:!!Q,onClose:()=>X(null),children:D("div",{className:"acm-structure-modal-content",children:[t("h3",{className:"acm-structure-modal-title",children:e.teamDescription}),t("div",{children:Q.text}),t("div",{className:"acm-structure-modal-actions",children:t(A,{type:"button",variant:"secondary",onClick:()=>X(null),children:e.close})})]})}):null]});return E!=null&&E.StructureData?t(ve,{name:"StructureData",slot:E.StructureData,context:{structureData:_,Default:R}}):R}),He=()=>{const u=j({fetchPermissionsError:"Company.CompanyStructure.messages.fetchPermissionsError"}),[E,m]=I(null),[d,e]=I(!0),[g,i]=I(null),n=O(async()=>{var p,o;try{e(!0),i(null);const{roleResponse:h}=await fe(),S=(o=(p=h==null?void 0:h.data)==null?void 0:p.customer)==null?void 0:o.role,y=Ce(S);m(y)}catch(h){i(h instanceof Error?h:new Error(u.fetchPermissionsError))}finally{e(!1)}},[u.fetchPermissionsError]);return Z(()=>{let p=!0;return(async()=>{var h,S;try{e(!0),i(null);const{roleResponse:y}=await fe();if(!p)return;const k=(S=(h=y==null?void 0:y.data)==null?void 0:h.customer)==null?void 0:S.role,w=Ce(k);m(w)}catch(y){if(!p)return;i(y instanceof Error?y:new Error(u.fetchPermissionsError))}finally{p&&e(!1)}})(),()=>{p=!1}},[]),{permissions:E,loading:d,error:g,refreshPermissions:n}},Ye="/customer/company/create",qe=({className:u,children:E,createCompanyAccountUrl:m=Ye,...d})=>{const e=j({individualUserMessage:"Company.CustomerCompanyInfo.individualUserMessage",createAccountCta:"Company.CustomerCompanyInfo.createAccountCta"}),g=e.individualUserMessage||"You don't have a company account yet.";return t(ae,{variant:"secondary",className:he(["company-management-company-structure-card",u]),...d,children:D("div",{children:[t(re,{type:"warning",variant:"secondary",heading:g,icon:t(Ve,{}),className:"company-management-company-structure-card__alert","data-testid":"company-structure-inline-alert"}),t("div",{className:"company-management-company-structure-card__cta",children:t(A,{as:"a",href:m,variant:"primary","data-testid":"company-structure-create-company-button",children:e.createAccountCta||"Create a Company Account"})})]})})},yt=({className:u,withHeader:E=!1,slots:m,isAuthenticated:d=!1,onRedirectLogin:e,onRedirectAccount:g})=>{const i=j({containerTitle:"Company.CompanyStructure.containerTitle"}),{permissions:n,refreshPermissions:p}=He(),[o,h]=I("loading");return Ie(p),Z(()=>{let S=!0;return(async()=>{try{if(!d){S&&h("redirect-login");return}if(!await Te()){S&&(console.log("Company registration disabled - redirecting to account dashboard"),h("redirect-account"));return}await we()?S&&h("show-structure"):S&&h("show-empty")}catch(y){console.error("Error in CompanyStructure - redirecting to login page:",y),S&&h("redirect-login")}})(),()=>{S=!1}},[d]),Z(()=>{o==="redirect-login"&&e&&e(),o==="redirect-account"&&g&&g()},[o,e,g]),o==="loading"||o==="redirect-login"||o==="redirect-account"?null:o==="show-empty"?t(qe,{className:u}):o==="show-structure"?D("div",{className:he(["account-company-structure",u]),children:[E?t(be,{title:i.containerTitle,divider:!1,className:"company-structure__title"}):null,t(Oe,{slots:m,permissions:n})]}):null};export{yt as CompanyStructure,yt as default};
|
|
4
4
|
//# sourceMappingURL=CompanyStructure.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as n,jsxs as N}from"@dropins/tools/preact-jsx-runtime.js";import{useState as U,useRef as D,useMemo as z,useCallback as u,useEffect as V}from"@dropins/tools/preact-hooks.js";import{Button as L,InLineAlert as j,Picker as Z,Modal as R}from"@dropins/tools/components.js";import{u as H,T as J}from"../chunks/useUserPermissions.js";import{C as $}from"../chunks/CompanyUserForm.js";import{classes as Q}from"@dropins/tools/lib.js";import{u as W}from"../chunks/useCustomerCompanyInfo.js";import{u as q}from"../chunks/useInLineAlert.js";import{g as X,u as Y}from"../chunks/updateCompanyUserStatus.js";import{useText as K}from"@dropins/tools/i18n.js";import{d as ee}from"../chunks/updateCompanyUser.js";import{f as ae}from"../chunks/fetchUserPermissions.js";import{u as te}from"../chunks/useCompanyContextListener.js";import{C as ne}from"../chunks/CompanyLoaders.js";import"@dropins/tools/preact.js";import"../chunks/company-permissions.js";import"@dropins/tools/preact-compat.js";import"../chunks/useCompanyRoles.js";import"../chunks/isCompanyRoleNameAvailable.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";import"../chunks/fetch-error.js";import"../chunks/getCustomerCompany.js";const se=s=>{try{return atob(s)}catch{return s}},re=s=>!s||typeof s!="string"?s:se(s),oe=(s,i)=>!s||typeof s!="string"?"":s==="ACTIVE"&&i.statusActive?i.statusActive:s==="INACTIVE"&&i.statusInactive?i.statusInactive:s.charAt(0).toUpperCase()+s.slice(1).toLowerCase(),ie=(s,i)=>{const l=(s==null?void 0:s.trim())||"",c=(i==null?void 0:i.trim())||"";return`${l} ${c}`.trim()},le=({filterType:s,onFilterChange:i,translations:l})=>{const c=[{type:"all",label:l.showAllUsers,ariaLabel:l.showAllUsers},{type:"active",label:l.showActiveUsers,ariaLabel:l.showActiveUsers},{type:"inactive",label:l.showInactiveUsers,ariaLabel:l.showInactiveUsers}];return n("div",{className:"filterButtons",role:"group","aria-label":l.ariaFilterOptions,children:c.filter(a=>a.type!==s).map(a=>n(L,{variant:"tertiary",onClick:()=>i(a.type),"aria-label":a.ariaLabel,children:a.label},a.type))})},ce=20,G=1,me=({translations:s})=>{const[i,l]=U([]),[c,a]=U(!1),[o,h]=U(G),[d,k]=U(ce),[P,B]=U("all"),[b,I]=U(0),[m,E]=U(1),[_,M]=U(""),[w,A]=U(null),t=D(s);t.current=s;const f=z(()=>{switch(P){case"active":return{status:"ACTIVE"};case"inactive":return{status:"INACTIVE"};default:return}},[P]),C=u(async()=>{a(!0);try{const e=await X({pageSize:d,currentPage:o,filter:f});l(e.users),I(e.totalCount||e.users.length),E(e.pageInfo.totalPages),M(t.current.ariaDataLoaded.replace("{count}",e.users.length.toString()))}catch{l([]),I(0),E(1),M(t.current.ariaDataError)}finally{a(!1)}},[d,o,f]),y=u(async()=>{try{const{allowedIds:e}=await ae();A(e)}catch{A(new Set)}},[]);V(()=>{C()},[C]),V(()=>{y()},[y]);const T=u(e=>{B(e),h(G)},[]),S=u(e=>{let g;if(typeof e=="string")g=e;else if("target"in e&&e.target&&"value"in e.target)g=e.target.value;else return;const v=parseInt(g,10);isNaN(v)||(k(v),h(G))},[]),x=u(()=>{o>1&&h(o-1)},[o]),F=u(()=>{o<m&&h(o+1)},[o,m]),r=(w==null?void 0:w.has("Magento_Company::users_edit"))||!1,p=u(async()=>{await y(),await C()},[y,C]);return{users:i,userPermissions:w,currentPage:o,pageSize:d,totalItems:b,totalPages:m,filterType:P,filter:f,loading:c,announcement:_,canEditUsers:r,handleFilterChange:T,handlePageSizeChange:S,handlePreviousPage:x,handleNextPage:F,refreshUsers:p}},O=s=>{const[i,l]=U(!1),[c,a]=U(null),o=u(d=>{d&&a(d),l(!0)},[]),h=u(()=>{l(!1),a(null),s==null||s()},[s]);return{isOpen:i,selectedId:c,open:o,close:h}},pe=({className:s,userId:i,userStatus:l,onClose:c,isOpen:a=!1,onSuccess:o,...h})=>{const[d,k]=U(!1),[P,B]=U(!1),{inLineAlertProps:b,showError:I,clearAlert:m}=q(),{companyInfo:E}=W(),_=D(null),M=D(null),w=`modal-title-${i}`,A=`modal-desc-${i}`,t=K({title:"Company.CompanyUsers.managementModal.title",setActiveText:"Company.CompanyUsers.managementModal.setActiveText",setInactiveText:"Company.CompanyUsers.managementModal.setInactiveText",deleteText:"Company.CompanyUsers.managementModal.deleteText",setActiveButton:"Company.CompanyUsers.managementModal.setActiveButton",setInactiveButton:"Company.CompanyUsers.managementModal.setInactiveButton",settingActiveButton:"Company.CompanyUsers.managementModal.settingActiveButton",settingInactiveButton:"Company.CompanyUsers.managementModal.settingInactiveButton",deleteButton:"Company.CompanyUsers.managementModal.deleteButton",deletingButton:"Company.CompanyUsers.managementModal.deletingButton",cancelButton:"Company.CompanyUsers.managementModal.cancelButton",setActiveErrorGeneric:"Company.CompanyUsers.managementModal.setActiveErrorGeneric",setActiveErrorSpecific:"Company.CompanyUsers.managementModal.setActiveErrorSpecific",setInactiveErrorGeneric:"Company.CompanyUsers.managementModal.setInactiveErrorGeneric",setInactiveErrorSpecific:"Company.CompanyUsers.managementModal.setInactiveErrorSpecific",deleteErrorGeneric:"Company.CompanyUsers.managementModal.deleteErrorGeneric",deleteErrorSpecific:"Company.CompanyUsers.managementModal.deleteErrorSpecific",setActiveSuccess:"Company.CompanyUsers.managementModal.setActiveSuccess",setInactiveSuccess:"Company.CompanyUsers.managementModal.setInactiveSuccess",deleteSuccess:"Company.CompanyUsers.managementModal.deleteSuccess",ariaCloseModal:"Company.CompanyUsers.managementModal.ariaLabels.closeModal",ariaModalDescription:"Company.CompanyUsers.managementModal.ariaLabels.modalDescription"}),f=u(r=>{const p=(E==null?void 0:E.companyName)||"";return r.replace(/%1/g,p)},[E==null?void 0:E.companyName]),C=u(async()=>{if(P)return;const r=l==="ACTIVE"?"INACTIVE":"ACTIVE",p=r==="ACTIVE";B(!0),m();try{if((await Y({id:i,status:r})).success){const g=p?t.setActiveSuccess:t.setInactiveSuccess;o&&o(g),c()}else{const g=p?t.setActiveErrorSpecific:t.setInactiveErrorSpecific;I(f(g))}}catch(e){const g=e instanceof Error?e.message:p?t.setActiveErrorGeneric:t.setInactiveErrorGeneric;I(f(g))}finally{B(!1)}},[i,l,c,P,m,I,f,t.setActiveErrorSpecific,t.setInactiveErrorSpecific,t.setActiveErrorGeneric,t.setInactiveErrorGeneric,t.setActiveSuccess,t.setInactiveSuccess,o]),y=u(async()=>{if(!d){k(!0),m();try{(await ee({id:i})).success?(o&&o(t.deleteSuccess),c()):I(f(t.deleteErrorSpecific))}catch(r){const p=r instanceof Error?r.message:t.deleteErrorGeneric;I(f(p))}finally{k(!1)}}},[i,c,d,m,I,f,t.deleteErrorSpecific,t.deleteErrorGeneric,t.deleteSuccess,o]),T=u(()=>{m(),c()},[c,m]),S=u(r=>{if(r.key==="Escape"&&(m(),c()),r.key==="Tab"){const p=_.current;if(!p)return;const e=p.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),g=e[0],v=e[e.length-1];r.shiftKey?document.activeElement===g&&(v.focus(),r.preventDefault()):document.activeElement===v&&(g.focus(),r.preventDefault())}},[c,m]),x=u(r=>{r.target===r.currentTarget&&(m(),c())},[c,m]),F=u(()=>{m(),c()},[c,m]);return V(()=>{if(a)return M.current=document.activeElement,document.addEventListener("keydown",S),setTimeout(()=>{const r=_.current;if(r){const p=r.querySelector("button");p?p.focus():r.focus()}},100),()=>{document.removeEventListener("keydown",S)};M.current&&M.current.focus()},[a,S]),a?n("div",{className:Q(["company-management-company-users-management-modal-overlay",s]),onClick:x,...h,children:N("div",{ref:_,className:"company-management-company-users-management-modal",role:"dialog","aria-modal":"true","aria-labelledby":w,"aria-describedby":A,tabIndex:-1,children:[N("div",{className:"company-management-company-users-management-modal__header",children:[n("h2",{id:w,className:"company-management-company-users-management-modal__title",children:t.title}),n("button",{className:"company-management-company-users-management-modal__close",onClick:F,"aria-label":t.ariaCloseModal,children:"×"})]}),N("div",{id:A,className:"company-management-company-users-management-modal__content",children:[n("p",{className:"company-management-company-users-management-modal__text",children:l==="ACTIVE"?t.setInactiveText:t.setActiveText}),n("p",{className:"company-management-company-users-management-modal__text",children:t.deleteText})]}),(b==null?void 0:b.text)&&n("div",{className:"company-management-company-users-management-modal__alert",role:"alert","aria-live":"assertive",children:n(j,{type:"error",heading:b.text,icon:b.icon,"data-testid":"companyUsersManagementModalAlert"})}),N("div",{className:"company-management-company-users-management-modal__actions",children:[n(L,{variant:"primary",onClick:C,disabled:P,className:"company-management-company-users-management-modal__button-primary",children:P?l==="ACTIVE"?t.settingInactiveButton:t.settingActiveButton:l==="ACTIVE"?t.setInactiveButton:t.setActiveButton}),n(L,{variant:"tertiary",onClick:y,disabled:d,className:"company-management-company-users-management-modal__button-delete",children:d?t.deletingButton:t.deleteButton}),n(L,{variant:"secondary",onClick:T,className:"company-management-company-users-management-modal__button-cancel",children:t.cancelButton})]})]})}):null},de=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],De=({children:s,className:i,...l})=>{const{permissions:c}=H(),a=K({showAllUsers:"Company.CompanyUsers.filters.showAll",showActiveUsers:"Company.CompanyUsers.filters.showActive",showInactiveUsers:"Company.CompanyUsers.filters.showInactive",idColumn:"Company.CompanyUsers.columns.id",nameColumn:"Company.CompanyUsers.columns.name",emailColumn:"Company.CompanyUsers.columns.email",roleColumn:"Company.CompanyUsers.columns.role",teamColumn:"Company.CompanyUsers.columns.team",statusColumn:"Company.CompanyUsers.columns.status",actionsColumn:"Company.CompanyUsers.columns.actions",statusActive:"Company.CompanyUsers.status.active",statusInactive:"Company.CompanyUsers.status.inactive",emptyTeam:"Company.CompanyUsers.emptyTeam",emptyActions:"Company.CompanyUsers.emptyActions",itemsText:"Company.CompanyUsers.pagination.itemsCount",itemsPerPageLabel:"Company.CompanyUsers.pagination.itemsPerPage",showLabel:"Company.CompanyUsers.pagination.show",perPageLabel:"Company.CompanyUsers.pagination.perPage",previousPage:"Company.CompanyUsers.pagination.previous",nextPage:"Company.CompanyUsers.pagination.next",pageInfo:"Company.CompanyUsers.pagination.pageInfo",ariaLoadingUsers:"Company.CompanyUsers.ariaLabels.loadingUsers",ariaUsersTable:"Company.CompanyUsers.ariaLabels.usersTable",ariaFilterOptions:"Company.CompanyUsers.ariaLabels.filterOptions",ariaPaginationNav:"Company.CompanyUsers.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyUsers.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyUsers.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyUsers.ariaLabels.nextPageFull",ariaCurrentPage:"Company.CompanyUsers.ariaLabels.currentPage",ariaShowingUsers:"Company.CompanyUsers.ariaLabels.showingUsers",ariaDataLoaded:"Company.CompanyUsers.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyUsers.ariaLabels.dataError",ariaPageNavigation:"Company.CompanyUsers.ariaLabels.pageNavigation",manageUser:"Company.CompanyUsers.actions.manage",editUser:"Company.CompanyUsers.actions.edit",ariaManageUser:"Company.CompanyUsers.ariaLabels.manageUser",ariaEditUser:"Company.CompanyUsers.ariaLabels.editUser",addNewUser:"Company.CompanyUsers.actions.addNewUser"}),{users:o,loading:h,currentPage:d,pageSize:k,filterType:P,totalItems:B,totalPages:b,announcement:I,canEditUsers:m,handleFilterChange:E,handlePageSizeChange:_,handlePreviousPage:M,handleNextPage:w,refreshUsers:A}=me({translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}}),t=D(a);t.current=a;const f=u(()=>{A()},[A]);te(f);const C=O(A),y=O(A),T=O(A),{inLineAlertProps:S,handleSetInLineAlert:x}=q(),F=z(()=>{const e=t.current;return[{key:"id",label:e.idColumn},{key:"name",label:e.nameColumn},{key:"email",label:e.emailColumn},{key:"role",label:e.roleColumn},{key:"team",label:e.teamColumn},{key:"status",label:e.statusColumn},{key:"actions",label:e.actionsColumn}]},[]),r=z(()=>o.map(e=>{const g=ie(e.firstName,e.lastName),v=t.current;return{id:re(e.id),name:g,email:e.email,role:e.role,team:e.team||v.emptyTeam,status:oe(e.status,v),actions:m?N("div",{className:"user-actions",children:[n(L,{variant:"tertiary",onClick:()=>y.open(e.id),"aria-label":v.ariaEditUser.replace("{name}",g),className:"edit-user-button",children:v.editUser}),n(L,{variant:"tertiary",onClick:()=>C.open(e.id),"aria-label":v.ariaManageUser.replace("{name}",g),className:"manage-user-button",children:v.manageUser})]}):n("span",{className:"no-actions",children:v.emptyActions})}}),[o,m,y,C]),p=z(()=>o.find(e=>e.id===C.selectedId),[o,C.selectedId]);return N("section",{className:i,...l,children:[n("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:I}),n(le,{filterType:P,onFilterChange:E,translations:{showAllUsers:a.showAllUsers,showActiveUsers:a.showActiveUsers,showInactiveUsers:a.showInactiveUsers,ariaFilterOptions:a.ariaFilterOptions}}),S&&S.text?n(j,{className:"company-users__alert",type:S.type||"success",variant:"secondary",heading:S.text,icon:S.icon}):null,n("div",{"aria-busy":h,children:h?N("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:[n(ne,{testId:"companyUsersTableLoader"}),n("span",{className:"sr-only",children:a.ariaLoadingUsers})]}):n(J,{className:"companyUsersTable",columns:F,rowData:r,mobileLayout:"stacked","aria-label":a.ariaUsersTable,summary:a.ariaShowingUsers.replace("{count}",o.length.toString())})}),N("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[n("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsText.replace("{count}",B.toString())}),b>1&&N("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[n(L,{variant:"secondary",onClick:M,disabled:d===1,"aria-label":a.ariaPreviousPageFull.replace("{current}",d.toString()),children:a.previousPage}),n("span",{"aria-current":"page","aria-live":"polite",children:a.pageInfo.replace("{current}",d.toString()).replace("{total}",b.toString())}),n(L,{variant:"secondary",onClick:w,disabled:d===b,"aria-label":a.ariaNextPageFull.replace("{current}",d.toString()),children:a.nextPage})]}),N("div",{className:"pageSizeSelector",children:[n("label",{htmlFor:"page-size-select",id:"page-size-label",children:n("span",{children:a.showLabel})}),n(Z,{id:"page-size-select",name:"pageSize",value:k.toString(),options:de,onChange:_,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),n("span",{id:"page-size-description",children:a.perPageLabel})]})]}),m&&n("div",{className:"addUserButtonContainer",children:n(L,{variant:"primary",onClick:()=>T.open(),"aria-label":a.addNewUser,children:a.addNewUser})}),s,T.isOpen&&m&&n(R,{open:T.isOpen,onClose:T.close,size:"medium",children:n($,{mode:"add",entityId:void 0,parentStructureId:void 0,permissions:c,onSaved:T.close,onCancel:T.close,onError:e=>{x({text:e,type:"error"})},onSuccess:e=>{x({text:e,type:"success"})}})}),y.selectedId&&y.isOpen&&m&&n(R,{open:y.isOpen,onClose:y.close,size:"medium",children:n($,{mode:"edit",entityId:y.selectedId,parentStructureId:void 0,permissions:c,onSaved:y.close,onCancel:y.close,onError:e=>{x({text:e,type:"error"})},onSuccess:e=>{x({text:e,type:"success"})}})}),C.selectedId&&m&&p&&n(pe,{isOpen:C.isOpen,userId:C.selectedId,userStatus:p.status||"ACTIVE",onClose:C.close,onSuccess:e=>{x({text:e,type:"success"})}})]})};export{De as CompanyUsers,De as default};
|
|
3
|
+
import{jsx as n,jsxs as N}from"@dropins/tools/preact-jsx-runtime.js";import{useState as U,useRef as D,useMemo as z,useCallback as u,useEffect as V}from"@dropins/tools/preact-hooks.js";import{Button as L,InLineAlert as j,Picker as Z,Modal as R}from"@dropins/tools/components.js";import{u as H,T as J}from"../chunks/useUserPermissions.js";import{C as $}from"../chunks/CompanyUserForm.js";import{classes as Q}from"@dropins/tools/lib.js";import{u as W}from"../chunks/useCustomerCompanyInfo.js";import"@dropins/tools/event-bus.js";import{u as q}from"../chunks/useInLineAlert.js";import{g as X,u as Y}from"../chunks/updateCompanyUserStatus.js";import{useText as K}from"@dropins/tools/i18n.js";import{d as ee}from"../chunks/updateCompanyUser.js";import{C as ae}from"../chunks/CompanyLoaders.js";import{f as te}from"../chunks/fetchUserPermissions.js";import{u as ne}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/getCustomerCompany.js";const se=s=>{try{return atob(s)}catch{return s}},re=s=>!s||typeof s!="string"?s:se(s),oe=(s,i)=>!s||typeof s!="string"?"":s==="ACTIVE"&&i.statusActive?i.statusActive:s==="INACTIVE"&&i.statusInactive?i.statusInactive:s.charAt(0).toUpperCase()+s.slice(1).toLowerCase(),ie=(s,i)=>{const l=(s==null?void 0:s.trim())||"",c=(i==null?void 0:i.trim())||"";return`${l} ${c}`.trim()},le=({filterType:s,onFilterChange:i,translations:l})=>{const c=[{type:"all",label:l.showAllUsers,ariaLabel:l.showAllUsers},{type:"active",label:l.showActiveUsers,ariaLabel:l.showActiveUsers},{type:"inactive",label:l.showInactiveUsers,ariaLabel:l.showInactiveUsers}];return n("div",{className:"filterButtons",role:"group","aria-label":l.ariaFilterOptions,children:c.filter(a=>a.type!==s).map(a=>n(L,{variant:"tertiary",onClick:()=>i(a.type),"aria-label":a.ariaLabel,children:a.label},a.type))})},ce=20,G=1,me=({translations:s})=>{const[i,l]=U([]),[c,a]=U(!1),[o,h]=U(G),[d,k]=U(ce),[P,B]=U("all"),[b,I]=U(0),[m,E]=U(1),[_,M]=U(""),[w,A]=U(null),t=D(s);t.current=s;const f=z(()=>{switch(P){case"active":return{status:"ACTIVE"};case"inactive":return{status:"INACTIVE"};default:return}},[P]),C=u(async()=>{a(!0);try{const e=await X({pageSize:d,currentPage:o,filter:f});l(e.users),I(e.totalCount||e.users.length),E(e.pageInfo.totalPages),M(t.current.ariaDataLoaded.replace("{count}",e.users.length.toString()))}catch{l([]),I(0),E(1),M(t.current.ariaDataError)}finally{a(!1)}},[d,o,f]),y=u(async()=>{try{const{allowedIds:e}=await te();A(e)}catch{A(new Set)}},[]);V(()=>{C()},[C]),V(()=>{y()},[y]);const T=u(e=>{B(e),h(G)},[]),S=u(e=>{let g;if(typeof e=="string")g=e;else if("target"in e&&e.target&&"value"in e.target)g=e.target.value;else return;const v=parseInt(g,10);isNaN(v)||(k(v),h(G))},[]),x=u(()=>{o>1&&h(o-1)},[o]),F=u(()=>{o<m&&h(o+1)},[o,m]),r=(w==null?void 0:w.has("Magento_Company::users_edit"))||!1,p=u(async()=>{await y(),await C()},[y,C]);return{users:i,userPermissions:w,currentPage:o,pageSize:d,totalItems:b,totalPages:m,filterType:P,filter:f,loading:c,announcement:_,canEditUsers:r,handleFilterChange:T,handlePageSizeChange:S,handlePreviousPage:x,handleNextPage:F,refreshUsers:p}},O=s=>{const[i,l]=U(!1),[c,a]=U(null),o=u(d=>{d&&a(d),l(!0)},[]),h=u(()=>{l(!1),a(null),s==null||s()},[s]);return{isOpen:i,selectedId:c,open:o,close:h}},pe=({className:s,userId:i,userStatus:l,onClose:c,isOpen:a=!1,onSuccess:o,...h})=>{const[d,k]=U(!1),[P,B]=U(!1),{inLineAlertProps:b,showError:I,clearAlert:m}=q(),{companyInfo:E}=W(),_=D(null),M=D(null),w=`modal-title-${i}`,A=`modal-desc-${i}`,t=K({title:"Company.CompanyUsers.managementModal.title",setActiveText:"Company.CompanyUsers.managementModal.setActiveText",setInactiveText:"Company.CompanyUsers.managementModal.setInactiveText",deleteText:"Company.CompanyUsers.managementModal.deleteText",setActiveButton:"Company.CompanyUsers.managementModal.setActiveButton",setInactiveButton:"Company.CompanyUsers.managementModal.setInactiveButton",settingActiveButton:"Company.CompanyUsers.managementModal.settingActiveButton",settingInactiveButton:"Company.CompanyUsers.managementModal.settingInactiveButton",deleteButton:"Company.CompanyUsers.managementModal.deleteButton",deletingButton:"Company.CompanyUsers.managementModal.deletingButton",cancelButton:"Company.CompanyUsers.managementModal.cancelButton",setActiveErrorGeneric:"Company.CompanyUsers.managementModal.setActiveErrorGeneric",setActiveErrorSpecific:"Company.CompanyUsers.managementModal.setActiveErrorSpecific",setInactiveErrorGeneric:"Company.CompanyUsers.managementModal.setInactiveErrorGeneric",setInactiveErrorSpecific:"Company.CompanyUsers.managementModal.setInactiveErrorSpecific",deleteErrorGeneric:"Company.CompanyUsers.managementModal.deleteErrorGeneric",deleteErrorSpecific:"Company.CompanyUsers.managementModal.deleteErrorSpecific",setActiveSuccess:"Company.CompanyUsers.managementModal.setActiveSuccess",setInactiveSuccess:"Company.CompanyUsers.managementModal.setInactiveSuccess",deleteSuccess:"Company.CompanyUsers.managementModal.deleteSuccess",ariaCloseModal:"Company.CompanyUsers.managementModal.ariaLabels.closeModal",ariaModalDescription:"Company.CompanyUsers.managementModal.ariaLabels.modalDescription"}),f=u(r=>{const p=(E==null?void 0:E.companyName)||"";return r.replace(/%1/g,p)},[E==null?void 0:E.companyName]),C=u(async()=>{if(P)return;const r=l==="ACTIVE"?"INACTIVE":"ACTIVE",p=r==="ACTIVE";B(!0),m();try{if((await Y({id:i,status:r})).success){const g=p?t.setActiveSuccess:t.setInactiveSuccess;o&&o(g),c()}else{const g=p?t.setActiveErrorSpecific:t.setInactiveErrorSpecific;I(f(g))}}catch(e){const g=e instanceof Error?e.message:p?t.setActiveErrorGeneric:t.setInactiveErrorGeneric;I(f(g))}finally{B(!1)}},[i,l,c,P,m,I,f,t.setActiveErrorSpecific,t.setInactiveErrorSpecific,t.setActiveErrorGeneric,t.setInactiveErrorGeneric,t.setActiveSuccess,t.setInactiveSuccess,o]),y=u(async()=>{if(!d){k(!0),m();try{(await ee({id:i})).success?(o&&o(t.deleteSuccess),c()):I(f(t.deleteErrorSpecific))}catch(r){const p=r instanceof Error?r.message:t.deleteErrorGeneric;I(f(p))}finally{k(!1)}}},[i,c,d,m,I,f,t.deleteErrorSpecific,t.deleteErrorGeneric,t.deleteSuccess,o]),T=u(()=>{m(),c()},[c,m]),S=u(r=>{if(r.key==="Escape"&&(m(),c()),r.key==="Tab"){const p=_.current;if(!p)return;const e=p.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),g=e[0],v=e[e.length-1];r.shiftKey?document.activeElement===g&&(v.focus(),r.preventDefault()):document.activeElement===v&&(g.focus(),r.preventDefault())}},[c,m]),x=u(r=>{r.target===r.currentTarget&&(m(),c())},[c,m]),F=u(()=>{m(),c()},[c,m]);return V(()=>{if(a)return M.current=document.activeElement,document.addEventListener("keydown",S),setTimeout(()=>{const r=_.current;if(r){const p=r.querySelector("button");p?p.focus():r.focus()}},100),()=>{document.removeEventListener("keydown",S)};M.current&&M.current.focus()},[a,S]),a?n("div",{className:Q(["company-management-company-users-management-modal-overlay",s]),onClick:x,...h,children:N("div",{ref:_,className:"company-management-company-users-management-modal",role:"dialog","aria-modal":"true","aria-labelledby":w,"aria-describedby":A,tabIndex:-1,children:[N("div",{className:"company-management-company-users-management-modal__header",children:[n("h2",{id:w,className:"company-management-company-users-management-modal__title",children:t.title}),n("button",{className:"company-management-company-users-management-modal__close",onClick:F,"aria-label":t.ariaCloseModal,children:"×"})]}),N("div",{id:A,className:"company-management-company-users-management-modal__content",children:[n("p",{className:"company-management-company-users-management-modal__text",children:l==="ACTIVE"?t.setInactiveText:t.setActiveText}),n("p",{className:"company-management-company-users-management-modal__text",children:t.deleteText})]}),(b==null?void 0:b.text)&&n("div",{className:"company-management-company-users-management-modal__alert",role:"alert","aria-live":"assertive",children:n(j,{type:"error",heading:b.text,icon:b.icon,"data-testid":"companyUsersManagementModalAlert"})}),N("div",{className:"company-management-company-users-management-modal__actions",children:[n(L,{variant:"primary",onClick:C,disabled:P,className:"company-management-company-users-management-modal__button-primary",children:P?l==="ACTIVE"?t.settingInactiveButton:t.settingActiveButton:l==="ACTIVE"?t.setInactiveButton:t.setActiveButton}),n(L,{variant:"tertiary",onClick:y,disabled:d,className:"company-management-company-users-management-modal__button-delete",children:d?t.deletingButton:t.deleteButton}),n(L,{variant:"secondary",onClick:T,className:"company-management-company-users-management-modal__button-cancel",children:t.cancelButton})]})]})}):null},de=[{text:"20",value:"20"},{text:"30",value:"30"},{text:"50",value:"50"},{text:"100",value:"100"},{text:"200",value:"200"}],De=({children:s,className:i,...l})=>{const{permissions:c}=H(),a=K({showAllUsers:"Company.CompanyUsers.filters.showAll",showActiveUsers:"Company.CompanyUsers.filters.showActive",showInactiveUsers:"Company.CompanyUsers.filters.showInactive",idColumn:"Company.CompanyUsers.columns.id",nameColumn:"Company.CompanyUsers.columns.name",emailColumn:"Company.CompanyUsers.columns.email",roleColumn:"Company.CompanyUsers.columns.role",teamColumn:"Company.CompanyUsers.columns.team",statusColumn:"Company.CompanyUsers.columns.status",actionsColumn:"Company.CompanyUsers.columns.actions",statusActive:"Company.CompanyUsers.status.active",statusInactive:"Company.CompanyUsers.status.inactive",emptyTeam:"Company.CompanyUsers.emptyTeam",emptyActions:"Company.CompanyUsers.emptyActions",itemsText:"Company.CompanyUsers.pagination.itemsCount",itemsPerPageLabel:"Company.CompanyUsers.pagination.itemsPerPage",showLabel:"Company.CompanyUsers.pagination.show",perPageLabel:"Company.CompanyUsers.pagination.perPage",previousPage:"Company.CompanyUsers.pagination.previous",nextPage:"Company.CompanyUsers.pagination.next",pageInfo:"Company.CompanyUsers.pagination.pageInfo",ariaLoadingUsers:"Company.CompanyUsers.ariaLabels.loadingUsers",ariaUsersTable:"Company.CompanyUsers.ariaLabels.usersTable",ariaFilterOptions:"Company.CompanyUsers.ariaLabels.filterOptions",ariaPaginationNav:"Company.CompanyUsers.ariaLabels.paginationNav",ariaPageSizeSelector:"Company.CompanyUsers.ariaLabels.pageSizeSelector",ariaPreviousPageFull:"Company.CompanyUsers.ariaLabels.previousPageFull",ariaNextPageFull:"Company.CompanyUsers.ariaLabels.nextPageFull",ariaCurrentPage:"Company.CompanyUsers.ariaLabels.currentPage",ariaShowingUsers:"Company.CompanyUsers.ariaLabels.showingUsers",ariaDataLoaded:"Company.CompanyUsers.ariaLabels.dataLoaded",ariaDataError:"Company.CompanyUsers.ariaLabels.dataError",ariaPageNavigation:"Company.CompanyUsers.ariaLabels.pageNavigation",manageUser:"Company.CompanyUsers.actions.manage",editUser:"Company.CompanyUsers.actions.edit",ariaManageUser:"Company.CompanyUsers.ariaLabels.manageUser",ariaEditUser:"Company.CompanyUsers.ariaLabels.editUser",addNewUser:"Company.CompanyUsers.actions.addNewUser"}),{users:o,loading:h,currentPage:d,pageSize:k,filterType:P,totalItems:B,totalPages:b,announcement:I,canEditUsers:m,handleFilterChange:E,handlePageSizeChange:_,handlePreviousPage:M,handleNextPage:w,refreshUsers:A}=me({translations:{ariaDataLoaded:a.ariaDataLoaded,ariaDataError:a.ariaDataError}}),t=D(a);t.current=a;const f=u(()=>{A()},[A]);ne(f);const C=O(A),y=O(A),T=O(A),{inLineAlertProps:S,handleSetInLineAlert:x}=q(),F=z(()=>{const e=t.current;return[{key:"id",label:e.idColumn},{key:"name",label:e.nameColumn},{key:"email",label:e.emailColumn},{key:"role",label:e.roleColumn},{key:"team",label:e.teamColumn},{key:"status",label:e.statusColumn},{key:"actions",label:e.actionsColumn}]},[]),r=z(()=>o.map(e=>{const g=ie(e.firstName,e.lastName),v=t.current;return{id:re(e.id),name:g,email:e.email,role:e.role,team:e.team||v.emptyTeam,status:oe(e.status,v),actions:m?N("div",{className:"user-actions",children:[n(L,{variant:"tertiary",onClick:()=>y.open(e.id),"aria-label":v.ariaEditUser.replace("{name}",g),className:"edit-user-button",children:v.editUser}),n(L,{variant:"tertiary",onClick:()=>C.open(e.id),"aria-label":v.ariaManageUser.replace("{name}",g),className:"manage-user-button",children:v.manageUser})]}):n("span",{className:"no-actions",children:v.emptyActions})}}),[o,m,y,C]),p=z(()=>o.find(e=>e.id===C.selectedId),[o,C.selectedId]);return N("section",{className:i,...l,children:[n("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:I}),n(le,{filterType:P,onFilterChange:E,translations:{showAllUsers:a.showAllUsers,showActiveUsers:a.showActiveUsers,showInactiveUsers:a.showInactiveUsers,ariaFilterOptions:a.ariaFilterOptions}}),S&&S.text?n(j,{className:"company-users__alert",type:S.type||"success",variant:"secondary",heading:S.text,icon:S.icon}):null,n("div",{"aria-busy":h,children:h?N("div",{className:"loadingContainer",role:"status","aria-live":"polite",children:[n(ae,{testId:"companyUsersTableLoader"}),n("span",{className:"sr-only",children:a.ariaLoadingUsers})]}):n(J,{className:"companyUsersTable",columns:F,rowData:r,mobileLayout:"stacked","aria-label":a.ariaUsersTable,summary:a.ariaShowingUsers.replace("{count}",o.length.toString())})}),N("nav",{"aria-label":a.ariaPaginationNav,className:"paginationContainer",children:[n("div",{"aria-live":"polite","aria-atomic":"true",children:a.itemsText.replace("{count}",B.toString())}),b>1&&N("div",{className:"paginationButtons",role:"group","aria-label":a.ariaPageNavigation,children:[n(L,{variant:"secondary",onClick:M,disabled:d===1,"aria-label":a.ariaPreviousPageFull.replace("{current}",d.toString()),children:a.previousPage}),n("span",{"aria-current":"page","aria-live":"polite",children:a.pageInfo.replace("{current}",d.toString()).replace("{total}",b.toString())}),n(L,{variant:"secondary",onClick:w,disabled:d===b,"aria-label":a.ariaNextPageFull.replace("{current}",d.toString()),children:a.nextPage})]}),N("div",{className:"pageSizeSelector",children:[n("label",{htmlFor:"page-size-select",id:"page-size-label",children:n("span",{children:a.showLabel})}),n(Z,{id:"page-size-select",name:"pageSize",value:k.toString(),options:de,onChange:_,"aria-labelledby":"page-size-label","aria-describedby":"page-size-description"}),n("span",{id:"page-size-description",children:a.perPageLabel})]})]}),m&&n("div",{className:"addUserButtonContainer",children:n(L,{variant:"primary",onClick:()=>T.open(),"aria-label":a.addNewUser,children:a.addNewUser})}),s,T.isOpen&&m&&n(R,{open:T.isOpen,onClose:T.close,size:"medium",children:n($,{mode:"add",entityId:void 0,parentStructureId:void 0,permissions:c,onSaved:T.close,onCancel:T.close,onError:e=>{x({text:e,type:"error"})},onSuccess:e=>{x({text:e,type:"success"})}})}),y.selectedId&&y.isOpen&&m&&n(R,{open:y.isOpen,onClose:y.close,size:"medium",children:n($,{mode:"edit",entityId:y.selectedId,parentStructureId:void 0,permissions:c,onSaved:y.close,onCancel:y.close,onError:e=>{x({text:e,type:"error"})},onSuccess:e=>{x({text:e,type:"success"})}})}),C.selectedId&&m&&p&&n(pe,{isOpen:C.isOpen,userId:C.selectedId,userStatus:p.status||"ACTIVE",onClose:C.close,onSuccess:e=>{x({text:e,type:"success"})}})]})};export{De as CompanyUsers,De as default};
|
|
4
4
|
//# sourceMappingURL=CompanyUsers.js.map
|
package/i18n/en_US.json.d.ts
CHANGED
|
@@ -299,7 +299,7 @@ declare const _default: {
|
|
|
299
299
|
},
|
|
300
300
|
"CompanyCredit": {
|
|
301
301
|
"title": "Company Credit",
|
|
302
|
-
"creditAvailable": "Credit
|
|
302
|
+
"creditAvailable": "Available Credit",
|
|
303
303
|
"creditLimit": "Credit Limit",
|
|
304
304
|
"outstandingBalance": "Outstanding Balance",
|
|
305
305
|
"messages": {
|
|
@@ -315,17 +315,14 @@ declare const _default: {
|
|
|
315
315
|
"outstandingBalance": "Outstanding Balance",
|
|
316
316
|
"availableCredit": "Available Credit",
|
|
317
317
|
"creditLimit": "Credit Limit",
|
|
318
|
-
"customReference": "Custom Reference",
|
|
318
|
+
"customReference": "Custom Reference Number",
|
|
319
319
|
"updatedBy": "Updated By"
|
|
320
320
|
},
|
|
321
321
|
"pagination": {
|
|
322
|
-
"
|
|
322
|
+
"itemsRange": "Items {start} to {end} of {total}",
|
|
323
323
|
"itemsPerPage": "Items per page:",
|
|
324
324
|
"show": "Show",
|
|
325
|
-
"perPage": "per page"
|
|
326
|
-
"previous": "Previous",
|
|
327
|
-
"next": "Next",
|
|
328
|
-
"pageInfo": "Page {current} of {total}"
|
|
325
|
+
"perPage": "per page"
|
|
329
326
|
},
|
|
330
327
|
"ariaLabels": {
|
|
331
328
|
"dataLoaded": "Loaded {count} credit history entries",
|
|
@@ -335,8 +332,10 @@ declare const _default: {
|
|
|
335
332
|
"paginationNav": "Pagination navigation",
|
|
336
333
|
"pageNavigation": "Page navigation",
|
|
337
334
|
"pageSizeSelector": "Items per page selector",
|
|
338
|
-
"
|
|
339
|
-
"
|
|
335
|
+
"previousPage": "Previous page",
|
|
336
|
+
"nextPage": "Next page",
|
|
337
|
+
"goToPage": "Go to page {page}",
|
|
338
|
+
"currentPage": "Current page {page}",
|
|
340
339
|
"showingHistory": "Showing {count} credit history entries"
|
|
341
340
|
}
|
|
342
341
|
},
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-company-management", "version": "1.0.0-
|
|
1
|
+
{"name": "@dropins/storefront-company-management", "version": "1.0.0-alpha2020", "@dropins/tools": "1.6.0-beta1", "license": "SEE LICENSE IN LICENSE.md"}
|
package/render.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
(function(
|
|
3
|
+
(function(o,t){try{if(typeof document<"u"){const e=document.createElement("style"),r=t.styleId;for(const a in t.attributes)e.setAttribute(a,t.attributes[a]);e.setAttribute("data-dropin",r),e.appendChild(document.createTextNode(o));const n=document.querySelector('style[data-dropin="sdk"]');if(n)n.after(e);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(e):document.head.append(e)}}}catch(e){console.error("dropin-styles (injectCodeFunction)",e)}})(`.company-management-role-and-permission-table{display:flex;flex-direction:column;gap:16px}.roles-table-container{margin-top:0;margin-bottom:20px;overflow-x:auto}.company-management-role-and-permission-table .dropin-table__table{border:none;table-layout:fixed;width:100%}.company-management-role-and-permission-table .dropin-table__header__cell,.company-management-role-and-permission-table .dropin-table__body__cell{border-bottom:1px solid var(--color-neutral-400, #b0b0b0);padding:6px 8px;height:auto;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(1),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(1){width:70px}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(2),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(2){width:auto;min-width:380px}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(3),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(3){width:70px}.company-management-role-and-permission-table .dropin-table__header__cell:nth-child(4),.company-management-role-and-permission-table .dropin-table__body__cell:nth-child(4){width:240px;white-space:normal;padding:6px 4px}.company-management-role-and-permission-table .dropin-table__header__row,.company-management-role-and-permission-table .dropin-table__body__row{border:none;height:40px}.company-management-role-and-permission-table .dropin-table__header__cell{font-weight:600}.roles-and-permissions-page{max-width:1200px;margin:0 auto;padding:24px}.roles-and-permissions-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:24px}.page-header{margin-bottom:24px}.page-header h1{font-weight:600;color:#333;margin:0}.page-content{display:flex;flex-direction:column;gap:16px}.roles-actions{display:flex;align-items:center;gap:2px;justify-content:flex-start}.roles-actions button{padding:0;min-width:auto;text-decoration:none;background:none!important;border:none!important}.roles-actions button:hover{text-decoration:underline}.roles-actions .separator{color:#ccc;margin:0 2px}.role-actions-container{display:flex;gap:8px;align-items:center}.role-action-wrapper{display:inline-flex;align-items:center}.role-action-wrapper .separator{display:inline-flex;align-items:center;height:100%}.role-action-button{padding:0!important;min-height:auto!important}.page-footer,.table-footer{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding:16px 0;border-top:1px solid var(--color-neutral-200, #e5e5e5);position:relative}.pagination-section{display:flex;align-items:center;gap:16px}.page-actions{margin-top:24px}@media (max-width: 768px){.company-management-role-and-permission-table{gap:12px}.roles-table-container{margin-bottom:16px}}@media only screen and (min-width: 768px){.roles-and-permissions-page,.roles-and-permissions-card{padding:32px}}@media only screen and (min-width: 1024px){.page-footer{flex-direction:row;justify-content:space-between}.page-actions{margin-top:0}}@media only screen and (min-width: 1366px){.roles-and-permissions-page{max-width:1400px}}@media only screen and (min-width: 1920px){.roles-and-permissions-page{max-width:1600px}}.table-footer-left{display:flex;align-items:center;flex:1}.table-footer-center{display:flex;align-items:center;justify-content:center;position:absolute;left:50%;transform:translate(-50%)}.table-footer-right{display:flex;align-items:center;justify-content:flex-end;flex:1}.item-count{color:var(--color-neutral-700, #555);font-weight:500}.pagination-controls{display:flex;align-items:center;gap:8px}.pagination-label{color:var(--color-neutral-700, #555)}.page-size-picker{min-width:80px;max-width:100px}.page-size-picker .dropin-picker__button{padding:6px 10px!important;min-height:32px!important;display:flex!important;align-items:center!important;justify-content:space-between!important}.page-size-picker .dropin-picker__option{padding:6px 10px!important}.page-navigation{display:flex;align-items:center;gap:4px}.page-num-button,.page-nav-button{min-width:32px!important;padding:4px 8px!important}.page-num-button.active{font-weight:600;background-color:var(--color-neutral-200, #e5e5e5)!important}.page-ellipsis{padding:4px 8px;color:var(--color-neutral-600, #666)}.page-info{color:var(--color-neutral-700, #555);font-weight:500;white-space:nowrap}@media (max-width: 768px){.table-footer,.page-footer{flex-direction:column;align-items:center;gap:12px}.table-footer-left{align-self:flex-start}.table-footer-center{position:static;transform:none;left:auto}.table-footer-right{align-self:flex-end}.pagination-controls{gap:6px}}.edit-role-and-permission{max-width:800px;margin:0 auto}.edit-role-and-permission__title,.edit-role-and-permission__notification{margin-bottom:1.5rem}.edit-role-and-permission-form{position:relative}.edit-role-and-permission__section{margin-bottom:2rem}.edit-role-and-permission__section-title{margin-bottom:1rem}.edit-role-and-permission__permissions-description,.edit-role-and-permission__permissions-description *{font-weight:400!important}.edit-role-and-permission__validation-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%);z-index:1}.edit-role-and-permission .dropin-field__label:after{content:" *";color:var(--color-neutral-600, #666);font-weight:400}.edit-role-and-permission__tree-controls{display:flex;gap:.5rem;margin-bottom:1rem}.edit-role-and-permission__tree-container{border:1px solid var(--color-neutral-300);border-radius:.375rem;padding:1rem;background-color:var(--color-neutral-50);min-height:200px}.edit-role-and-permission__tree-loading{text-align:center;padding:2rem;color:var(--color-neutral-600)}.edit-role-and-permission__tree-node{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;min-height:2rem}.edit-role-and-permission__tree-expander{width:1.625rem;height:1.625rem;min-width:1.625rem;min-height:1.625rem;border:1px solid var(--color-neutral-400);border-radius:.25rem;background:var(--color-neutral-100);color:var(--color-neutral-700);font-size:1.05rem;font-weight:600;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;padding:0;pointer-events:auto}.edit-role-and-permission__tree-spacer{width:1.625rem;height:1.625rem;min-width:1.625rem;min-height:1.625rem;flex-shrink:0;display:inline-block}.edit-role-and-permission__tree-expander:hover{background:var(--color-neutral-200);border-color:var(--color-neutral-500)}.edit-role-and-permission__tree-expander:focus{outline:2px solid var(--color-primary-600);outline-offset:2px}.edit-role-and-permission__tree-label{color:var(--color-neutral-800);-webkit-user-select:none;user-select:none}.edit-role-and-permission__actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:2rem}.edit-role-and-permission__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#fffc;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;border-radius:inherit}.edit-role-and-permission__loading-text{margin-top:1rem;color:var(--color-neutral-600)}.edit-role-and-permission .acm-tree__item{margin:.125rem 0;padding-left:0!important}.edit-role-and-permission .acm-tree__group{padding-left:3rem!important}@media (max-width: 768px){.edit-role-and-permission{max-width:100%;margin:0}.edit-role-and-permission__tree-container{padding:.75rem}.edit-role-and-permission__actions{flex-direction:column;gap:.75rem}.edit-role-and-permission__tree-controls{flex-wrap:wrap}}.delete-role-modal{min-width:320px!important;max-width:400px!important;width:auto!important}.delete-role-modal__content{margin-bottom:16px}.delete-role-modal__content p{margin:0 0 8px;line-height:1.4}.delete-role-modal__content p:last-child{margin-bottom:0}.delete-role-modal__actions{display:flex;gap:8px;justify-content:flex-end;flex-direction:row;align-items:center;margin-top:12px;flex-wrap:nowrap}.delete-role-modal__confirm-btn,.delete-role-modal__cancel-btn,.delete-role-modal__ok-btn{min-width:70px;flex-shrink:0;padding:8px 16px}.delete-role-modal .delete-role-modal__actions{display:flex!important;flex-direction:row!important;gap:8px!important;justify-content:flex-end!important;flex-wrap:nowrap!important}
|
|
4
4
|
.customer-company-info-card .dropin-card__content{gap:0}.customer-company-info-card__content p{font:var(--type-body-1-default-font);margin:0 0 var(--spacing-xsmall) 0;line-height:var(--spacing-xbig);padding:0}
|
|
5
5
|
.company-management-company-users-management-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.company-management-company-users-management-modal{background:#fff;border-radius:8px;box-shadow:0 8px 32px #0003;max-width:480px;width:90%;max-height:90vh;overflow-y:auto;position:relative;outline:none}.company-management-company-users-management-modal:focus{box-shadow:0 8px 32px #0003,0 0 0 3px #2563eb80}.company-management-company-users-management-modal__header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 16px;border-bottom:1px solid #e5e5e5}.company-management-company-users-management-modal__title{margin:0;font-size:20px;font-weight:600;color:#333;line-height:1.2}.company-management-company-users-management-modal__close{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:4px;line-height:1;border-radius:4px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background-color .2s ease}.company-management-company-users-management-modal__close:hover{background-color:#f5f5f5;color:#333}.company-management-company-users-management-modal__close:focus{outline:2px solid #2563eb;outline-offset:2px;background-color:#f5f5f5}.company-management-company-users-management-modal__content{padding:24px}.company-management-company-users-management-modal__text{margin:0 0 16px;color:#666;line-height:1.5;font-size:14px}.company-management-company-users-management-modal__text:last-child{margin-bottom:0}.company-management-company-users-management-modal__alert{margin:0 24px 16px}.company-management-company-users-management-modal__actions{display:flex;gap:12px;padding:16px 24px 24px;border-top:1px solid #e5e5e5;justify-content:flex-end;flex-wrap:wrap}.company-management-company-users-management-modal__button-primary{order:1}.company-management-company-users-management-modal__button-delete{order:2;background:none;border:none;color:#2563eb;font-size:14px;font-weight:500;cursor:pointer;padding:8px 16px;border-radius:4px;transition:all .2s ease;text-decoration:none;line-height:1.4}.company-management-company-users-management-modal__button-delete:hover{background-color:#eff6ff;text-decoration:underline}.company-management-company-users-management-modal__button-delete:disabled{opacity:.6;cursor:not-allowed}.company-management-company-users-management-modal__button-delete:disabled:hover{background-color:transparent;text-decoration:none}.company-management-company-users-management-modal__button-delete:focus{outline:2px solid #2563eb;outline-offset:2px}.company-management-company-users-management-modal__button-cancel{order:3}@media only screen and (max-width: 768px){.company-management-company-users-management-modal{margin:16px;width:calc(100% - 32px)}.company-management-company-users-management-modal__actions{flex-direction:column;gap:8px}.company-management-company-users-management-modal__actions button{width:100%;order:initial!important}.company-management-company-users-management-modal__button-primary{order:1!important}.company-management-company-users-management-modal__button-delete{order:2!important}.company-management-company-users-management-modal__button-cancel{order:3!important}.company-management-company-users-management-modal__alert{margin:0 16px 16px}}.filterButtons{margin-bottom:16px;display:flex;gap:8px}.loadingContainer{padding:32px;text-align:center}.paginationContainer{margin-top:16px;display:flex;justify-content:space-between;align-items:center}.paginationButtons{display:flex;align-items:center;gap:8px}.pageSizeSelector{display:flex;align-items:center;gap:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.user-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.edit-user-button,.manage-user-button{font-size:14px;padding:4px;min-height:auto}.addUserButtonContainer{margin-top:16px}.companyUsersTable{width:100%;table-layout:auto}.companyUsersTable th,.companyUsersTable td{white-space:normal;word-break:break-word;vertical-align:top}.companyUsersTable th:nth-child(1),.companyUsersTable td:nth-child(1){width:50px}.companyUsersTable th:nth-child(2),.companyUsersTable td:nth-child(2){width:100px}.companyUsersTable th:nth-child(3),.companyUsersTable td:nth-child(3){width:180px;word-break:break-all;overflow-wrap:anywhere}.companyUsersTable th:nth-child(4),.companyUsersTable td:nth-child(4){width:100px}.companyUsersTable th:nth-child(5),.companyUsersTable td:nth-child(5){width:100px}.companyUsersTable th:nth-child(6),.companyUsersTable td:nth-child(6){width:60px}.companyUsersTable th:nth-child(7),.companyUsersTable td:nth-child(7){width:110px}
|
|
6
6
|
.dropin-table{container-type:inline-size;overflow-x:auto;font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-table__table{border-collapse:collapse;width:100%}.dropin-table__caption{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);text-align:left;margin-bottom:var(--spacing-small);caption-side:top}.dropin-table__header__cell{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.dropin-table__header__cell,.dropin-table__body__cell{padding:var(--spacing-xsmall);text-align:left;white-space:nowrap}.dropin-table__header__cell--sortable{cursor:pointer}.dropin-table__header__row{border-bottom:2px solid var(--color-neutral-400)}.dropin-table__body__row{border-bottom:1px solid var(--color-neutral-400)}.dropin-table__header__sort-button{margin-left:var(--spacing-xsmall);vertical-align:middle}.dropin-table__row-details{display:none}.dropin-table__row-details--expanded{display:table-row}.dropin-table__row-details__cell{padding:var(--spacing-small);background-color:var(--color-neutral-100);border-top:1px solid var(--color-neutral-300);border-bottom:1px solid var(--color-neutral-400)}@container (max-width: 600px){.dropin-table--mobile-layout-stacked .dropin-table__header{display:none}.dropin-table--mobile-layout-stacked .dropin-table__body__cell{display:block}.dropin-table--mobile-layout-stacked .dropin-table__body__cell:before{content:attr(data-label);font-weight:700;display:block;margin-bottom:var(--spacing-xxsmall)}.dropin-table--mobile-layout-stacked .dropin-table__row-details__cell{display:block;padding:var(--spacing-small)}}
|
|
@@ -9,7 +9,7 @@ All Rights Reserved. */
|
|
|
9
9
|
.company-user-form__card{position:relative}.company-user-form__card.is-working .company-user-form__content{pointer-events:none}.company-user-form__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff9;display:flex;align-items:center;justify-content:center;z-index:1}.company-user-form__content .dropin-field[required] .dropin-field__label:after{content:" *";color:var(--color-alert-800, #c5281c)}
|
|
10
10
|
.company-form{display:flex;flex-direction:column}.company-registration-form__inputs{display:grid;gap:var(--spacing-medium)}.company-registration-form__section{display:contents}.company-form [class$=-hidden]{position:absolute;opacity:0;height:0;width:0;overflow:hidden;clip:rect(0,0,0,0);display:none}.company-form-loader{display:flex;align-items:center;justify-content:center;padding:2rem;font-size:1rem;color:#666}.dropin-design{--color-brand-500: #454545;--color-brand-600: #383838;--color-brand-700: #2b2b2b;--color-neutral-50: #ffffff;--color-neutral-100: #fafafa;--color-neutral-200: #f5f5f5;--color-neutral-300: #e8e8e8;--color-neutral-400: #d6d6d6;--color-neutral-500: #b8b8b8;--color-neutral-600: #8f8f8f;--color-neutral-700: #666666;--color-neutral-800: #3d3d3d;--color-neutral-900: #292929;--color-positive-200: #eff5ef;--color-positive-500: #7fb078;--color-positive-800: #53824c;--color-informational-200: #eeeffb;--color-informational-500: #6978d9;--color-informational-800: #5d6dd6;--color-warning-200: #fdf3e9;--color-warning-500: #e79f5c;--color-warning-800: #ad5c00;--color-alert-200: #ffebeb;--color-alert-500: #db7070;--color-alert-800: #bf4545;--color-opacity-16: rgba(255, 255, 255, .16);--color-opacity-24: rgba(255, 255, 255, .24);--color-action-button-active: #ffffff;--color-action-button-hover: #e8e8e8;--color-button-active: #2b2b2b;--color-button-focus: #d6d6d6;--color-button-hover: #383838;--grid-1-columns: 4;--grid-1-margins: 0;--grid-1-gutters: 16px;--grid-2-columns: 12;--grid-2-margins: 0;--grid-2-gutters: 16px;--grid-3-columns: 12;--grid-3-margins: 0;--grid-3-gutters: 24px;--grid-4-columns: 12;--grid-4-margins: 0;--grid-4-gutters: 24px;--grid-5-columns: 12;--grid-5-margins: 0;--grid-5-gutters: 24px;--shape-border-radius-1: 3px;--shape-border-radius-2: 8px;--shape-border-radius-3: 24px;--shape-border-width-1: 1px;--shape-border-width-2: 1.5px;--shape-border-width-3: 2px;--shape-border-width-4: 4px;--shape-shadow-1: 0 0 16px 0 rgba(0,0,0,.16);--shape-shadow-2: 0 2px 16px 0 rgba(0,0,0,.16);--shape-shadow-3: 0 2px 3px 0 rgba(0,0,0,.16);--shape-icon-stroke-1: 1px;--shape-icon-stroke-2: 1.5px;--shape-icon-stroke-3: 2px;--shape-icon-stroke-4: 4px;--spacing-xxsmall: 4px;--spacing-xsmall: 8px;--spacing-small: 16px;--spacing-medium: 24px;--spacing-big: 32px;--spacing-xbig: 40px;--spacing-xxbig: 48px;--spacing-large: 64px;--spacing-xlarge: 72px;--spacing-xxlarge: 96px;--spacing-huge: 120px;--spacing-xhuge: 144px;--spacing-xxhuge: 192px;--type-base-font-family: system-ui, sans-serif;--type-display-1-font: normal normal 300 60px/72px var(--type-base-font-family);--type-display-1-letter-spacing: .04em;--type-display-2-font: normal normal 300 48px/56px var(--type-base-font-family);--type-display-2-letter-spacing: .04em;--type-display-3-font: normal normal 300 34px/40px var(--type-base-font-family);--type-display-3-letter-spacing: .04em;--type-headline-1-font: normal normal 400 24px/32px var(--type-base-font-family);--type-headline-1-letter-spacing: .04em;--type-headline-2-default-font: normal normal 300 20px/24px var(--type-base-font-family);--type-headline-2-default-letter-spacing: .04em;--type-headline-2-strong-font: normal normal 400 20px/24px var(--type-base-font-family);--type-headline-2-strong-letter-spacing: .04em;--type-body-1-default-font: normal normal 300 16px/24px var(--type-base-font-family);--type-body-1-default-letter-spacing: .04em;--type-body-1-strong-font: normal normal 400 16px/24px var(--type-base-font-family);--type-body-1-strong-letter-spacing: .04em;--type-body-1-emphasized-font: normal normal 700 16px/24px var(--type-base-font-family);--type-body-1-emphasized-letter-spacing: .04em;--type-body-2-default-font: normal normal 300 14px/20px var(--type-base-font-family);--type-body-2-default-letter-spacing: .04em;--type-body-2-strong-font: normal normal 400 14px/20px var(--type-base-font-family);--type-body-2-strong-letter-spacing: .04em;--type-body-2-emphasized-font: normal normal 700 14px/20px var(--type-base-font-family);--type-body-2-emphasized-letter-spacing: .04em;--type-button-1-font: normal normal 400 20px/26px var(--type-base-font-family);--type-button-1-letter-spacing: .08em;--type-button-2-font: normal normal 400 16px/24px var(--type-base-font-family);--type-button-2-letter-spacing: .08em;--type-details-caption-1-font: normal normal 400 12px/16px var(--type-base-font-family);--type-details-caption-1-letter-spacing: .08em;--type-details-caption-2-font: normal normal 300 12px/16px var(--type-base-font-family);--type-details-caption-2-letter-spacing: .08em;--type-details-overline-font: normal normal 700 12px/20px var(--type-base-font-family);--type-details-overline-letter-spacing: .16em}.company-form-wrapper{display:flex;flex-direction:column;gap:1rem}.company-form-wrapper__errors{padding:1rem;border:1px solid #dc3545;border-radius:4px;background-color:#f8d7da;color:#721c24}.company-form-wrapper__errors .error-message{margin-bottom:.5rem}.company-form-wrapper__errors .error-message:last-child{margin-bottom:0}.company-form-wrapper__buttons{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);grid-column:span 2;margin-top:var(--spacing-medium)}.company-form-wrapper__submit{min-width:120px}.company-form-section{margin:1.5rem 0 1rem}.company-form-section__title{font-size:1.125rem;font-weight:600;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #e5e7eb;color:#374151}.company-registration-success{max-width:600px;margin:0 auto;padding:var(--spacing-big, 24px);background:var(--color-neutral-50, #ffffff);border-radius:var(--shape-border-radius-2, 8px);box-shadow:var(--shadow-2, 0 2px 8px rgba(0, 0, 0, .1))}.company-registration-success__header{text-align:center;margin-bottom:var(--spacing-big, 24px);padding-bottom:var(--spacing-medium, 16px);border-bottom:1px solid var(--color-neutral-300, #e0e0e0)}.company-registration-success__title{color:var(--color-positive-700, #2d7d32);font-size:var(--type-headline-1-font-size, 24px);font-weight:var(--type-headline-1-font-weight, 600);margin:0 0 var(--spacing-small, 12px) 0}.company-registration-success__subtitle{color:var(--color-neutral-800, #333333);font-size:var(--type-body-1-font-size, 16px);margin:0 0 var(--spacing-small, 12px) 0}.company-registration-success__pending{color:var(--color-neutral-600, #666666);font-size:var(--type-body-2-font-size, 14px);margin:0}.company-registration-success__details{background:var(--color-neutral-100, #f5f5f5);padding:var(--spacing-medium, 16px);border-radius:var(--shape-border-radius-1, 4px)}.company-registration-success__details-title{color:var(--color-neutral-800, #333333);font-size:var(--type-headline-2-font-size, 20px);font-weight:var(--type-headline-2-font-weight, 500);margin:0 0 var(--spacing-medium, 16px) 0}.company-registration-success__grid{display:grid;gap:var(--spacing-small, 12px)}.company-registration-success__item{display:grid;grid-template-columns:1fr 2fr;gap:var(--spacing-small, 12px);align-items:start}.company-registration-success__label{color:var(--color-neutral-700, #555555);font-weight:var(--type-body-1-font-weight, 500);font-size:var(--type-body-2-font-size, 14px)}.company-registration-success__value{color:var(--color-neutral-800, #333333);font-size:var(--type-body-2-font-size, 14px)}.company-registration-success__section-header{margin-top:var(--spacing-medium, 16px);margin-bottom:var(--spacing-small, 12px);padding-top:var(--spacing-small, 12px);border-top:1px solid var(--color-neutral-300, #e0e0e0)}.company-registration-success__section-header h3{color:var(--color-neutral-700, #555555);font-size:var(--type-body-1-font-size, 16px);font-weight:var(--type-body-1-font-weight, 600);margin:0}@media (max-width: 768px){.company-registration-success{margin:var(--spacing-small, 12px);padding:var(--spacing-medium, 16px)}.company-registration-success__item{grid-template-columns:1fr;gap:var(--spacing-xsmall, 8px)}.company-registration-success__label{font-weight:var(--type-body-1-font-weight, 600)}}
|
|
11
11
|
.company-profile__title{margin-bottom:var(--spacing-medium)}.account-company-profile-card-short{margin-bottom:var(--spacing-small)}.account-company-profile-card .dropin-card__content{gap:0}.account-company-profile-card__wrapper{display:grid;grid-template-columns:1fr;align-items:start;gap:var(--grid-1-gutters) 0}.account-company-profile-card .account-company-profile-card__actions{margin-left:auto;display:flex;justify-content:space-between;align-items:center;gap:0 var(--grid-2-gutters)}@media (max-width: 300px){.account-company-profile-card .account-company-profile-card__actions{align-items:self-end;flex-direction:column-reverse}}.account-company-profile-card .account-company-profile-card__actions button{cursor:pointer;margin:0;padding:0}.account-company-profile-card__content p{font:var(--type-body-1-default-font);margin:0 var(--spacing-xsmall) 0 0;line-height:var(--spacing-xbig);padding:0}.account-company-profile-card__content p:nth-child(1),.account-company-profile-card__content p:nth-child(2){font:var(--type-body-1-strong-font);font-weight:500;margin:0 var(--spacing-xsmall) var(--spacing-xsmall) 0}.account-company-profile-card__content .company-legal-address{margin-top:var(--spacing-medium)}.account-company-profile-card__content .company-legal-address p{margin-bottom:var(--spacing-xsmall)}.account-company-profile-card__content .company-legal-address p:first-child{font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__no-data{text-align:center;color:var(--color-neutral-600);font:var(--type-body-2-default-font);padding:var(--spacing-medium)}.account-company-profile-card__content .company-contacts{margin-top:var(--spacing-medium);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-company-profile-card__content .company-contacts>p:first-child{font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__content .company-contact{margin-bottom:var(--spacing-medium);padding:var(--spacing-small);background-color:var(--color-neutral-50);border-radius:var(--shape-border-radius-1)}.account-company-profile-card__content .company-contact p{margin-bottom:var(--spacing-xsmall)}.account-company-profile-card__content .company-contact p:first-child{font-weight:500;color:var(--color-neutral-700)}.account-company-profile-card__content .company-payment-methods{margin-top:var(--spacing-medium);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-company-profile-card__content .company-payment-methods>p:first-child,.account-company-profile-card__content .company-payment-methods>p:nth-child(2){font:var(--type-body-1-strong-font);font-weight:500;margin-bottom:var(--spacing-small)}.account-company-profile-card__content .company-payment-methods p{margin-bottom:var(--spacing-xsmall)}.account-edit-company-profile__title{margin-bottom:var(--spacing-medium)}.account-edit-company-profile .dropin-card__content{gap:0}.account-edit-company-profile .account-edit-company-profile__notification{margin-bottom:var(--spacing-medium)}.account-edit-company-profile .account-edit-company-profile-form__field:nth-child(n+3){grid-column:span 2}.account-edit-company-profile .account-edit-company-profile__actions{display:flex;justify-content:end;align-items:center;gap:0 var(--grid-2-gutters);grid-column:span 2;margin-top:var(--spacing-medium)}.account-edit-company-profile .account-edit-company-profile__actions button{min-width:144px}.account-edit-company-profile-form{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-medium) var(--grid-2-gutters)}@media (max-width: 768px){.account-edit-company-profile-form{grid-template-columns:1fr}.account-edit-company-profile .account-edit-company-profile-form__field:nth-child(n+3){grid-column:span 1}.account-edit-company-profile .account-edit-company-profile__actions{grid-column:span 1;flex-direction:column;gap:var(--spacing-small)}.account-edit-company-profile .account-edit-company-profile__actions button{width:100%}}.account-edit-company-profile-form__section{grid-column:span 2;margin-top:var(--spacing-large);padding-top:var(--spacing-medium);border-top:1px solid var(--color-neutral-200)}.account-edit-company-profile-form__section-title{font:var(--type-headline-2-default-font);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-xsmall)}@media (max-width: 768px){.account-edit-company-profile-form__section{grid-column:span 1}}.account-edit-company-profile__loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--spacing-medium);z-index:10;border-radius:var(--border-radius-medium)}.account-edit-company-profile__loading-text{font:var(--type-body-1-default-font);color:var(--color-neutral-700);font-weight:500}.account-edit-company-profile{position:relative}
|
|
12
|
-
.company-management-company-credit-grid{display:grid;grid-template-columns:1fr;gap:16px}@media only screen and (min-width: 768px){.company-management-company-credit-grid{grid-template-columns:1fr 1fr 1fr}}.company-management-company-credit-grid .company-management-company-credit-negative{color
|
|
12
|
+
.company-management-company-credit-grid{display:grid;grid-template-columns:1fr;gap:16px}@media only screen and (min-width: 768px){.company-management-company-credit-grid{grid-template-columns:1fr 1fr 1fr}}.company-management-company-credit-grid .company-management-company-credit-negative{color:#eb550c}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.company-management-company-credit-history-table{font-size:smaller}.company-management-company-credit-history-table thead th{white-space:normal;word-wrap:break-word;overflow-wrap:break-word;min-width:auto}.paginationContainer{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-medium);margin-top:var(--spacing-medium);flex-wrap:wrap}.paginationButtons{display:flex;align-items:center;gap:var(--spacing-xxsmall);flex-wrap:wrap}.paginationButton{min-width:var(--spacing-big);height:var(--spacing-big);padding:var(--spacing-xxsmall) var(--spacing-xsmall)}.paginationEllipsis{padding:var(--spacing-xxsmall) var(--spacing-xsmall);display:inline-flex;align-items:center;justify-content:center;min-width:var(--spacing-big)}.pageSizeSelector{display:flex;align-items:center;gap:var(--spacing-xsmall)}.company-management-price-normal{font-weight:400}.company-management-company-credit-history-no-data-alert{margin-top:var(--spacing-medium);border-color:var(--color-neutral-400)}@media only screen and (max-width: 767px){.paginationContainer{flex-direction:column;align-items:stretch;gap:var(--spacing-small)}.paginationButtons{justify-content:center;order:2}.pageSizeSelector{justify-content:center;order:3}}
|
|
13
13
|
.company-company-loaders--card-loader{margin-bottom:var(--spacing-small)}.company-company-loaders--picker-loader div:first-child{max-width:200px}.company-company-loaders--picker-loader div:nth-child(3){max-width:400px}.company-credit-skeleton-loader{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}`,{styleId:"company-management"});
|
|
14
|
-
import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Render as i}from"@dropins/tools/lib.js";import{useState as n,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as c}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";const m={shared:{fields:{companyName:"Company Name",companyEmail:"Company Email",email:"Email",legalName:"Legal Name",vatTaxId:"VAT/Tax ID",resellerId:"Reseller ID",legalAddress:"Legal Address",streetAddress:"Street Address",city:"City",country:"Country",stateProvince:"State/Province",zipPostalCode:"ZIP/Postal Code",phoneNumber:"Phone Number",status:"Status",region:"Region",postalCode:"Postal Code",jobTitle:"Job Title",workPhoneNumber:"Work Phone Number",userRole:"User Role",title:"New Company",companyInformation:"Company Information",street:"Street Address",streetLine2:"Street Address Line 2",postcode:"ZIP/Postal Code",telephone:"Phone Number",companyAdmin:"Company Administrator",adminJobTitle:"Job Title",adminWorkTelephone:"Work Phone Number",adminEmail:"Email",adminFirstname:"First Name",adminLastname:"Last Name",adminGender:"Gender",address:"Address",submit:"Register Company",submitting:"Registering...",required:"Required",createCompanyError:"Failed to create company. Please try again.",unexpectedError:"An unexpected error occurred. Please try again."},buttons:{edit:"Edit",cancel:"Cancel",save:"Save Changes",saving:"Saving...",close:"Close",confirm:"Confirm"},validation:{required:"This field is required",invalidEmail:"Please enter a valid email address",companyNameRequired:"Company name is required",emailRequired:"Email is required",emailNotAvailable:"This email is already used by another company",phoneInvalid:"Please enter a valid phone number",postalCodeInvalid:"Please enter a valid postal code",companyNameLengthError:"Company name must not exceed 40 characters",legalNameLengthError:"Legal name must not exceed 80 characters",vatTaxIdLengthError:"VAT/Tax ID must not exceed 40 characters",resellerIdLengthError:"Reseller ID must not exceed 40 characters",roleNameRequired:"This is a required field.",roleNameExists:"User role with this name already exists. Enter a different name to save this role."},messages:{loading:"Loading...",noData:"No data available",error:"An error occurred",success:"Operation completed successfully"},loading:"Loading...",ariaLabels:{editButton:"Edit company profile",cancelButton:"Cancel editing",saveButton:"Save company profile changes",closeButton:"Close dialog"}},CompanyProfile:{containerTitle:"Company Profile",editCompanyProfile:{containerTitle:"Edit Company Profile",companySuccess:"Company profile updated successfully",companyError:"Failed to update company profile",buttonSecondary:"Cancel",buttonPrimary:"Save Changes"},companyProfileCard:{noDataMessage:"Company profile not available. Please contact your administrator.",contacts:"Contacts",companyAdministrator:"Company Administrator",salesRepresentative:"Sales Representative",paymentInformation:"Payment Information",availablePaymentMethods:"Available Payment Methods",shippingInformation:"Shipping Information",availableShippingMethods:"Available Shipping Methods",noPaymentMethods:"This company has no payment methods. Please contact store administrator.",noShippingMethods:"This company has no shipping methods. Please contact store administrator.",companyDetails:"Company Details",addressInformation:"Address Information"},messages:{loadError:"Failed to load company profile",updateError:"Failed to update company profile",loadingProfile:"Loading company profile...",savingProfile:"Saving company profile...",noDataToUpdate:"No data to update"}},CompanyStructure:{containerTitle:"Company Structure",shared:{buttons:{addUser:"Add User",addTeam:"Add Team",editSelected:"Edit",remove:"Remove",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",deleting:"Deleting…",removing:"Removing…",expandAll:"Expand All",collapseAll:"Collapse All"},titles:{addUser:"Add User",editUser:"Edit User",addTeam:"Add Team",editTeam:"Edit Team"},fields:{jobTitle:"Job Title",userRole:"User Role",firstName:"First Name",lastName:"Last Name",email:"Email",workPhoneNumber:"Work Phone Number",status:"Status",teamTitle:"Team Title",description:"Description"},options:{selectRole:"Select role…",active:"Active",inactive:"Inactive",companyAdministrator:"Company Administrator",delete:"Delete",expand:"Expand",collapse:"Collapse"},ariaLabels:{addUser:"Add user",addTeam:"Add team",editSelected:"Edit selected",removeSelected:"Remove selected",showDescription:"Show description",companyStructureActions:"Company structure actions",expandAllNodes:"Expand all nodes",collapseAllNodes:"Collapse all nodes"},messages:{processing:"Processing…",teamDescription:"Team description"},validation:{firstNameRequired:"First name is required",lastNameRequired:"Last name is required",emailRequired:"Email is required",emailInvalid:"Enter a valid email",jobTitleRequired:"Job title is required",workPhoneRequired:"Work phone number is required",selectRole:"Select a role",teamTitleRequired:"Team title is required"}},messages:{loadError:"Failed to load company structure",updateError:"Failed to update company structure",noStructureData:"No structure data.",cannotDeleteUser:"Cannot Delete User",cannotDeleteTeam:"Cannot Delete This Team",removeUserConfirm:"Remove this user from Company structure?",deleteTeamConfirm:"Delete this team?",removeItemsConfirm:"Remove {count} item(s)?",removeUserMessage:"Removing a user changes the account status to Inactive. The user's content is still available to the Company administrator, but the user cannot log in.",cannotDeleteUserMessage:"This user has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",cannotDeleteTeamMessage:"This team has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",removeItemsMessage:"This action will remove the selected items from the company structure.",deleteTeamMessage:"This action cannot be undone. Are you sure you want to delete this team?",failedToMoveItem:"Failed to move item",createUserError:"Failed to create user. You may not have permission to perform this action.",createTeamError:"Failed to create team. You may not have permission to perform this action.",saveUserError:"An error occurred while saving the user.",saveTeamError:"An error occurred while saving the team.",createUserSuccess:"The customer was successfully created.",updateUserSuccess:"The customer was successfully updated.",createTeamSuccess:"The team was successfully created.",updateTeamSuccess:"The team was successfully updated.",removeUserSuccess:"User was successfully removed from company structure.",deleteTeamSuccess:"Team was successfully deleted.",removeMultipleSuccess:"{count} item(s) were successfully removed.",moveUserSuccess:"User was successfully moved.",moveTeamSuccess:"Team was successfully moved.",loadRolesError:"Failed to load roles",fetchPermissionsError:"Failed to fetch permissions"}},CompanyUsers:{filters:{showAll:"Show All Users",showActive:"Show Active Users",showInactive:"Show Inactive Users"},columns:{id:"ID",name:"Name",email:"Email",role:"Role",team:"Team",status:"Status",actions:"Actions"},status:{active:"Active",inactive:"Inactive"},emptyTeam:"-",pagination:{itemsCount:"{count} Item(s)",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},emptyActions:"",actions:{manage:"Manage",edit:"Edit",addNewUser:"Add New User"},ariaLabels:{loadingUsers:"Loading company users",usersTable:"Company users table",filterOptions:"User filter options",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",currentPage:"Current page {current} of {total}",showingUsers:"Showing {count} users",dataLoaded:"Loaded {count} users",dataError:"Failed to load users.",manageUser:"Manage user {name}",editUser:"Edit user {name}"},managementModal:{title:"Manage user",setActiveText:`Reactivate the user's account by selecting "Set as Active".`,setInactiveText:`Temporarily lock the user's account by selecting "Set as Inactive".`,deleteText:`Permanently delete the user's account and all associated content by selecting "Delete". This action cannot be reverted.`,setActiveButton:"Set as Active",setInactiveButton:"Set as Inactive",settingActiveButton:"Setting Active...",settingInactiveButton:"Setting Inactive...",deleteButton:"Delete",deletingButton:"Deleting...",cancelButton:"Cancel",setActiveErrorGeneric:"An unexpected error occurred while setting user as active.",setActiveErrorSpecific:"Failed to set user as active.",setInactiveErrorGeneric:"An unexpected error occurred while setting user as inactive.",setInactiveErrorSpecific:"Failed to set user as inactive.",deleteErrorGeneric:"An unexpected error occurred.",deleteErrorSpecific:"Failed to delete user.",setActiveSuccess:"User was successfully activated.",setInactiveSuccess:"User was successfully deactivated.",deleteSuccess:"User was successfully deleted.",ariaLabels:{closeModal:"Close modal",modalDescription:"User management options including setting as inactive or deleting the user account"}}},CompanyRegistration:{success:{pendingApproval:"Thank you! We're reviewing your request and will contact you soon.",companyDetails:"Company Information"}},CustomerCompanyInfo:{individualUserMessage:"You don't have a company account yet.",createAccountCta:"Create a Company Account"},CompanyCredit:{title:"Company Credit",creditAvailable:"Credit Available",creditLimit:"Credit Limit",outstandingBalance:"Outstanding Balance",messages:{loadError:"Failed to load company credit"}},CompanyCreditHistory:{title:"Credit History",columns:{date:"Date",operation:"Operation",amount:"Amount",outstandingBalance:"Outstanding Balance",availableCredit:"Available Credit",creditLimit:"Credit Limit",customReference:"Custom Reference",updatedBy:"Updated By"},pagination:{itemsCount:"{count} Item(s)",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},ariaLabels:{dataLoaded:"Loaded {count} credit history entries",dataError:"Failed to load credit history entries. Please try again.",loadingHistory:"Loading credit history",historyTable:"Credit history table",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",showingHistory:"Showing {count} credit history entries"}},EditRoleAndPermission:{createTitle:"Add New Role",editTitle:"Edit Role",roleInformation:"Role Information",roleName:"Role Name",rolePermissions:"Role Permissions",permissionsDescription:"Granting permissions does not affect which features are available for your company account. The merchant must enable features to make them available for your account.",expandAll:"Expand All",collapseAll:"Collapse All",saveRole:"Save Role"},FormText:{requiredFieldError:"This is a required field.",numericError:"Only numeric values are allowed.",alphaNumWithSpacesError:"Only alphanumeric characters and spaces are allowed.",alphaNumericError:"Only alphanumeric characters are allowed.",alphaError:"Only alphabetic characters are allowed.",emailError:"Please enter a valid email address.",phoneError:"Please enter a valid phone number.",postalCodeError:"Please enter a valid postal code.",lengthTextError:"Text length must be between {min} and {max} characters.",urlError:"Please enter a valid URL",nameError:"Please enter a valid name",selectCountry:"Please select a country",selectRegion:"Please select a region, state or province",selectCountryFirst:"Please select a country first",companyNameLengthError:"Company name must be between {min} and {max} characters."},RolesAndPermissions:{containerTitle:"Company Roles & Permissions",noAccess:{title:"Access Restricted",message:"You do not have permission to view roles and permissions. Please contact your company administrator."},error:{title:"Error Loading Roles",message:"An error occurred while loading roles and permissions. Please try again."},deleteModal:{title:"Delete This Role?",message:"This action cannot be undone. Are you sure you want to delete this role?",confirm:"Delete",cancel:"Cancel"},cannotDeleteModal:{title:"Cannot Delete Role",message:"This role cannot be deleted because users are assigned to it. Reassign the users to another role to continue.",ok:"OK"},alerts:{createSuccess:'Role "{roleName}" created successfully!',createError:"Failed to create role. Please try again.",createErrorPermissions:"Failed to create role. Please check your permissions and try again.",updateSuccess:'Role "{roleName}" updated successfully!',updateError:"Failed to update role. Please try again.",updateErrorPermissions:"Failed to update role. Please check your permissions and try again.",deleteError:"Failed to delete role. Please try again."}},RoleAndPermissionTable:{addNewRole:"Add New Role",columnId:"ID",columnRole:"Role",columnUsers:"Users",columnActions:"Actions",editButton:"Edit",duplicateButton:"Duplicate",deleteButton:"Delete",viewOnlyLabel:"View Only",systemRoleLabel:"System Role",itemCount:"Item(s)",show:"Show",perPage:"per page",deleteRole:{success:'You have deleted role "{roleName}".'}},Table:{sortedAscending:"Sorted ascending by {label}",sortedDescending:"Sorted descending by {label}",sortBy:"Sort by {label}"}},u={Company:m},p={default:u},g=({children:t})=>{const[r,o]=n("en_US");return l(()=>{const e=d.on("locale",s=>{o(s)},{eager:!0});return()=>{e==null||e.off()}},[]),a(c,{lang:r,langDefinitions:p,children:t})},P=new i(a(g,{}));export{P as render};
|
|
14
|
+
import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Render as i}from"@dropins/tools/lib.js";import{useState as n,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as c}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";const m={shared:{fields:{companyName:"Company Name",companyEmail:"Company Email",email:"Email",legalName:"Legal Name",vatTaxId:"VAT/Tax ID",resellerId:"Reseller ID",legalAddress:"Legal Address",streetAddress:"Street Address",city:"City",country:"Country",stateProvince:"State/Province",zipPostalCode:"ZIP/Postal Code",phoneNumber:"Phone Number",status:"Status",region:"Region",postalCode:"Postal Code",jobTitle:"Job Title",workPhoneNumber:"Work Phone Number",userRole:"User Role",title:"New Company",companyInformation:"Company Information",street:"Street Address",streetLine2:"Street Address Line 2",postcode:"ZIP/Postal Code",telephone:"Phone Number",companyAdmin:"Company Administrator",adminJobTitle:"Job Title",adminWorkTelephone:"Work Phone Number",adminEmail:"Email",adminFirstname:"First Name",adminLastname:"Last Name",adminGender:"Gender",address:"Address",submit:"Register Company",submitting:"Registering...",required:"Required",createCompanyError:"Failed to create company. Please try again.",unexpectedError:"An unexpected error occurred. Please try again."},buttons:{edit:"Edit",cancel:"Cancel",save:"Save Changes",saving:"Saving...",close:"Close",confirm:"Confirm"},validation:{required:"This field is required",invalidEmail:"Please enter a valid email address",companyNameRequired:"Company name is required",emailRequired:"Email is required",emailNotAvailable:"This email is already used by another company",phoneInvalid:"Please enter a valid phone number",postalCodeInvalid:"Please enter a valid postal code",companyNameLengthError:"Company name must not exceed 40 characters",legalNameLengthError:"Legal name must not exceed 80 characters",vatTaxIdLengthError:"VAT/Tax ID must not exceed 40 characters",resellerIdLengthError:"Reseller ID must not exceed 40 characters",roleNameRequired:"This is a required field.",roleNameExists:"User role with this name already exists. Enter a different name to save this role."},messages:{loading:"Loading...",noData:"No data available",error:"An error occurred",success:"Operation completed successfully"},loading:"Loading...",ariaLabels:{editButton:"Edit company profile",cancelButton:"Cancel editing",saveButton:"Save company profile changes",closeButton:"Close dialog"}},CompanyProfile:{containerTitle:"Company Profile",editCompanyProfile:{containerTitle:"Edit Company Profile",companySuccess:"Company profile updated successfully",companyError:"Failed to update company profile",buttonSecondary:"Cancel",buttonPrimary:"Save Changes"},companyProfileCard:{noDataMessage:"Company profile not available. Please contact your administrator.",contacts:"Contacts",companyAdministrator:"Company Administrator",salesRepresentative:"Sales Representative",paymentInformation:"Payment Information",availablePaymentMethods:"Available Payment Methods",shippingInformation:"Shipping Information",availableShippingMethods:"Available Shipping Methods",noPaymentMethods:"This company has no payment methods. Please contact store administrator.",noShippingMethods:"This company has no shipping methods. Please contact store administrator.",companyDetails:"Company Details",addressInformation:"Address Information"},messages:{loadError:"Failed to load company profile",updateError:"Failed to update company profile",loadingProfile:"Loading company profile...",savingProfile:"Saving company profile...",noDataToUpdate:"No data to update"}},CompanyStructure:{containerTitle:"Company Structure",shared:{buttons:{addUser:"Add User",addTeam:"Add Team",editSelected:"Edit",remove:"Remove",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",deleting:"Deleting…",removing:"Removing…",expandAll:"Expand All",collapseAll:"Collapse All"},titles:{addUser:"Add User",editUser:"Edit User",addTeam:"Add Team",editTeam:"Edit Team"},fields:{jobTitle:"Job Title",userRole:"User Role",firstName:"First Name",lastName:"Last Name",email:"Email",workPhoneNumber:"Work Phone Number",status:"Status",teamTitle:"Team Title",description:"Description"},options:{selectRole:"Select role…",active:"Active",inactive:"Inactive",companyAdministrator:"Company Administrator",delete:"Delete",expand:"Expand",collapse:"Collapse"},ariaLabels:{addUser:"Add user",addTeam:"Add team",editSelected:"Edit selected",removeSelected:"Remove selected",showDescription:"Show description",companyStructureActions:"Company structure actions",expandAllNodes:"Expand all nodes",collapseAllNodes:"Collapse all nodes"},messages:{processing:"Processing…",teamDescription:"Team description"},validation:{firstNameRequired:"First name is required",lastNameRequired:"Last name is required",emailRequired:"Email is required",emailInvalid:"Enter a valid email",jobTitleRequired:"Job title is required",workPhoneRequired:"Work phone number is required",selectRole:"Select a role",teamTitleRequired:"Team title is required"}},messages:{loadError:"Failed to load company structure",updateError:"Failed to update company structure",noStructureData:"No structure data.",cannotDeleteUser:"Cannot Delete User",cannotDeleteTeam:"Cannot Delete This Team",removeUserConfirm:"Remove this user from Company structure?",deleteTeamConfirm:"Delete this team?",removeItemsConfirm:"Remove {count} item(s)?",removeUserMessage:"Removing a user changes the account status to Inactive. The user's content is still available to the Company administrator, but the user cannot log in.",cannotDeleteUserMessage:"This user has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",cannotDeleteTeamMessage:"This team has active users or teams assigned to it and cannot be deleted. Please unassign the users or teams first.",removeItemsMessage:"This action will remove the selected items from the company structure.",deleteTeamMessage:"This action cannot be undone. Are you sure you want to delete this team?",failedToMoveItem:"Failed to move item",createUserError:"Failed to create user. You may not have permission to perform this action.",createTeamError:"Failed to create team. You may not have permission to perform this action.",saveUserError:"An error occurred while saving the user.",saveTeamError:"An error occurred while saving the team.",createUserSuccess:"The customer was successfully created.",updateUserSuccess:"The customer was successfully updated.",createTeamSuccess:"The team was successfully created.",updateTeamSuccess:"The team was successfully updated.",removeUserSuccess:"User was successfully removed from company structure.",deleteTeamSuccess:"Team was successfully deleted.",removeMultipleSuccess:"{count} item(s) were successfully removed.",moveUserSuccess:"User was successfully moved.",moveTeamSuccess:"Team was successfully moved.",loadRolesError:"Failed to load roles",fetchPermissionsError:"Failed to fetch permissions"}},CompanyUsers:{filters:{showAll:"Show All Users",showActive:"Show Active Users",showInactive:"Show Inactive Users"},columns:{id:"ID",name:"Name",email:"Email",role:"Role",team:"Team",status:"Status",actions:"Actions"},status:{active:"Active",inactive:"Inactive"},emptyTeam:"-",pagination:{itemsCount:"{count} Item(s)",itemsPerPage:"Items per page:",show:"Show",perPage:"per page",previous:"Previous",next:"Next",pageInfo:"Page {current} of {total}"},emptyActions:"",actions:{manage:"Manage",edit:"Edit",addNewUser:"Add New User"},ariaLabels:{loadingUsers:"Loading company users",usersTable:"Company users table",filterOptions:"User filter options",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPageFull:"Go to previous page, current page {current}",nextPageFull:"Go to next page, current page {current}",currentPage:"Current page {current} of {total}",showingUsers:"Showing {count} users",dataLoaded:"Loaded {count} users",dataError:"Failed to load users.",manageUser:"Manage user {name}",editUser:"Edit user {name}"},managementModal:{title:"Manage user",setActiveText:`Reactivate the user's account by selecting "Set as Active".`,setInactiveText:`Temporarily lock the user's account by selecting "Set as Inactive".`,deleteText:`Permanently delete the user's account and all associated content by selecting "Delete". This action cannot be reverted.`,setActiveButton:"Set as Active",setInactiveButton:"Set as Inactive",settingActiveButton:"Setting Active...",settingInactiveButton:"Setting Inactive...",deleteButton:"Delete",deletingButton:"Deleting...",cancelButton:"Cancel",setActiveErrorGeneric:"An unexpected error occurred while setting user as active.",setActiveErrorSpecific:"Failed to set user as active.",setInactiveErrorGeneric:"An unexpected error occurred while setting user as inactive.",setInactiveErrorSpecific:"Failed to set user as inactive.",deleteErrorGeneric:"An unexpected error occurred.",deleteErrorSpecific:"Failed to delete user.",setActiveSuccess:"User was successfully activated.",setInactiveSuccess:"User was successfully deactivated.",deleteSuccess:"User was successfully deleted.",ariaLabels:{closeModal:"Close modal",modalDescription:"User management options including setting as inactive or deleting the user account"}}},CompanyRegistration:{success:{pendingApproval:"Thank you! We're reviewing your request and will contact you soon.",companyDetails:"Company Information"}},CustomerCompanyInfo:{individualUserMessage:"You don't have a company account yet.",createAccountCta:"Create a Company Account"},CompanyCredit:{title:"Company Credit",creditAvailable:"Available Credit",creditLimit:"Credit Limit",outstandingBalance:"Outstanding Balance",messages:{loadError:"Failed to load company credit"}},CompanyCreditHistory:{title:"Credit History",columns:{date:"Date",operation:"Operation",amount:"Amount",outstandingBalance:"Outstanding Balance",availableCredit:"Available Credit",creditLimit:"Credit Limit",customReference:"Custom Reference Number",updatedBy:"Updated By"},pagination:{itemsRange:"Items {start} to {end} of {total}",itemsPerPage:"Items per page:",show:"Show",perPage:"per page"},ariaLabels:{dataLoaded:"Loaded {count} credit history entries",dataError:"Failed to load credit history entries. Please try again.",loadingHistory:"Loading credit history",historyTable:"Credit history table",paginationNav:"Pagination navigation",pageNavigation:"Page navigation",pageSizeSelector:"Items per page selector",previousPage:"Previous page",nextPage:"Next page",goToPage:"Go to page {page}",currentPage:"Current page {page}",showingHistory:"Showing {count} credit history entries"}},EditRoleAndPermission:{createTitle:"Add New Role",editTitle:"Edit Role",roleInformation:"Role Information",roleName:"Role Name",rolePermissions:"Role Permissions",permissionsDescription:"Granting permissions does not affect which features are available for your company account. The merchant must enable features to make them available for your account.",expandAll:"Expand All",collapseAll:"Collapse All",saveRole:"Save Role"},FormText:{requiredFieldError:"This is a required field.",numericError:"Only numeric values are allowed.",alphaNumWithSpacesError:"Only alphanumeric characters and spaces are allowed.",alphaNumericError:"Only alphanumeric characters are allowed.",alphaError:"Only alphabetic characters are allowed.",emailError:"Please enter a valid email address.",phoneError:"Please enter a valid phone number.",postalCodeError:"Please enter a valid postal code.",lengthTextError:"Text length must be between {min} and {max} characters.",urlError:"Please enter a valid URL",nameError:"Please enter a valid name",selectCountry:"Please select a country",selectRegion:"Please select a region, state or province",selectCountryFirst:"Please select a country first",companyNameLengthError:"Company name must be between {min} and {max} characters."},RolesAndPermissions:{containerTitle:"Company Roles & Permissions",noAccess:{title:"Access Restricted",message:"You do not have permission to view roles and permissions. Please contact your company administrator."},error:{title:"Error Loading Roles",message:"An error occurred while loading roles and permissions. Please try again."},deleteModal:{title:"Delete This Role?",message:"This action cannot be undone. Are you sure you want to delete this role?",confirm:"Delete",cancel:"Cancel"},cannotDeleteModal:{title:"Cannot Delete Role",message:"This role cannot be deleted because users are assigned to it. Reassign the users to another role to continue.",ok:"OK"},alerts:{createSuccess:'Role "{roleName}" created successfully!',createError:"Failed to create role. Please try again.",createErrorPermissions:"Failed to create role. Please check your permissions and try again.",updateSuccess:'Role "{roleName}" updated successfully!',updateError:"Failed to update role. Please try again.",updateErrorPermissions:"Failed to update role. Please check your permissions and try again.",deleteError:"Failed to delete role. Please try again."}},RoleAndPermissionTable:{addNewRole:"Add New Role",columnId:"ID",columnRole:"Role",columnUsers:"Users",columnActions:"Actions",editButton:"Edit",duplicateButton:"Duplicate",deleteButton:"Delete",viewOnlyLabel:"View Only",systemRoleLabel:"System Role",itemCount:"Item(s)",show:"Show",perPage:"per page",deleteRole:{success:'You have deleted role "{roleName}".'}},Table:{sortedAscending:"Sorted ascending by {label}",sortedDescending:"Sorted descending by {label}",sortBy:"Sort by {label}"}},u={Company:m},p={default:u},g=({children:t})=>{const[r,o]=n("en_US");return l(()=>{const e=d.on("locale",s=>{o(s)},{eager:!0});return()=>{e==null||e.off()}},[]),a(c,{lang:r,langDefinitions:p,children:t})},P=new i(a(g,{}));export{P as render};
|
|
15
15
|
//# sourceMappingURL=render.js.map
|
package/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["/@dropins/storefront-company-management/src/render/Provider.tsx","/@dropins/storefront-company-management/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CompanyProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CompanyProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.js","sources":["/@dropins/storefront-company-management/src/render/Provider.tsx","/@dropins/storefront-company-management/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CompanyProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CompanyProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"g0aA0BMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAoD,CAAC,CAChE,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
|