@adyen/kyc-components
Version:
This guide assumes that you have already an account with Adyen. A legalEntity needs to be created, and you need to have a `legalEntityId` to instatiate a Component.
351 lines (350 loc) • 15.9 kB
JavaScript
try {
let e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "076832f0-28d9-4e5e-a2fc-f3efe797b1ac", e._sentryDebugIdIdentifier = "sentry-dbid-076832f0-28d9-4e5e-a2fc-f3efe797b1ac");
} catch (e) {}
import { n as addResourceBundles, r as useTranslation, t as Trans } from "./translation-BFxyJ1c5.js";
import { r as Loader, t as Button } from "./Button-oj6H8OrC.js";
import { r as useLegalEntity, t as ROOT_LE } from "./useLegalEntity-yxi9XhLi.js";
import { t as LegalEntityTypes } from "./legal-entity-type-VIfNYnJP.js";
import { t as useToggleContext } from "./useToggleContext-DaQUBF8O.js";
import { t as _rolldown_dynamic_import_helper_default } from "./_rolldown_dynamic_import_helper-rq_tsyLP.js";
import { t as StackLayout } from "./StackLayout-Bhbj68nx.js";
import { r as TaskStatuses } from "./taskStatus-C7XU4UIF.js";
import { t as Header } from "./Header-CPmJyuoP.js";
import { t as CountryCodes } from "./country-code-CX5KqMBr.js";
import { t as Alert } from "./Alert-C6gL3JIt.js";
import { t as DropinLayout } from "./DropinLayout-Ce8IeTl4.js";
import { p as TaskTypes, s as getOwnEntityAssociations } from "./entityAssociationUtil-BEzUdPbm.js";
import { r as useGetTaskStatus } from "./globalStore-BjMds47R.js";
import { r as TrustMemberTypes } from "./trustMemberGuidance-B3VWjXzg.js";
import { s as DEFAULT_TRUST_MEMBER_REQUIREMENTS } from "./trustUtil-BTHvlo55.js";
import { t as useToastContext } from "./useToastContext-CYgfHjSb.js";
import { t as useAssociatedLegalEntity } from "./useAssociatedLegalEntity-zrU8J6iw.js";
import { t as useTrustMembers } from "./useTrustMembers-NwUmFfVc.js";
import { t as useUpdateLegalEntity } from "./useUpdateLegalEntity-CtaRaKZ6.js";
import { t as ContextGuidance } from "./ContextGuidance-DdoORtLt.js";
import { t as ActionBar } from "./ActionBar-Doac020y.js";
import { t as EntityAssociation } from "./EntityAssociation-DjHI99AZ.js";
import { n as iconStatus, t as EntityGuidanceStatus } from "./EntityGuidanceStatus-F9oxfzj4.js";
import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
//#region src/components/Trust/utils/deleteAssociatedTrustMember.ts
var deleteAssociatedTrustMember = async ({ associatedTrustMember, trust, asyncMutation }) => {
const ownEntityAssociations = getOwnEntityAssociations(trust);
await asyncMutation({
id: trust.id,
entityAssociations: ownEntityAssociations.filter((entityAssociation) => entityAssociation.legalEntityId !== associatedTrustMember.legalEntityId)
});
};
//#endregion
//#region src/components/Trust/utils/deleteUndefinedBeneficiary.ts
/**
* Undefined Beneficiaries are not entity associations,
* therefore their deletion and updation are different from that of a usual trust member
*/
var deleteUndefinedBeneficiary = async ({ undefinedBeneficiary, trust, asyncMutation }) => {
const existingUndefinedBeneficiaries = trust.trust?.undefinedBeneficiaryInfo ?? [];
await asyncMutation({
id: trust.id,
trust: { undefinedBeneficiaryInfo: existingUndefinedBeneficiaries.filter((ub) => ub.reference !== undefinedBeneficiary.reference) }
});
};
//#endregion
//#region src/components/Trust/tasks/TrustMembers/CompanyTrustMemberTaskItem.tsx
var CompanyTrustMemberTaskItem = ({ companyTrustMember, taskStatus, onEditOwner, onAddOwner, onEdit, onDelete }) => {
const { t } = useTranslation(["trust", "common"]);
const actions = [
{
icon: "edit",
onSelect: onEdit,
label: t(($) => $["editTrustMember"], { trustMember: companyTrustMember.name })
},
companyTrustMember.ownerId ? {
icon: "edit",
onSelect: onEditOwner,
label: t(($) => $["editOwnerOfTrustMember"], { trustMember: companyTrustMember.name })
} : {
icon: "plus",
onSelect: onAddOwner,
label: t(($) => $["addOwnerToTrustMember"], { trustMember: companyTrustMember.name })
},
{
icon: "bin",
onSelect: onDelete,
label: t(($) => $["removeTrustMember"], { trustMember: companyTrustMember.name })
}
];
const infoContent = companyTrustMember.ownerId ? void 0 : /* @__PURE__ */ jsx(Alert, {
title: /* @__PURE__ */ jsxs(Fragment, { children: [
t(($) => $["helpUsVerifyCompany"], { ns: "common" }),
" ",
/* @__PURE__ */ jsx(Button, {
onClick: onAddOwner,
variant: "link",
children: t(($) => $["providePersonalDetailsOfOwner"])
})
] }),
className: "add-owner-alert"
});
return /* @__PURE__ */ jsx(EntityAssociation, {
types: companyTrustMember.roles,
name: companyTrustMember.name,
status: taskStatus,
actions,
infoContent,
onNavigateToEntity: onEdit
}, companyTrustMember.legalEntityId);
};
//#endregion
//#region src/components/Trust/tasks/TrustMembers/ExemptSettlorTaskItem.tsx
var ExemptSettlorTaskItem = ({ exemptSettlor, taskStatus, onEdit, onDelete }) => {
const { t } = useTranslation("trust");
const settlorName = exemptSettlor.legalEntityType === LegalEntityTypes.INDIVIDUAL ? `${exemptSettlor.exemptSettlorName?.firstName} ${exemptSettlor.exemptSettlorName?.lastName}` : exemptSettlor.name ?? "";
const actions = [{
icon: "edit",
onSelect: onEdit,
label: t(($) => $["editTrustMember"], { trustMember: settlorName })
}, {
icon: "bin",
onSelect: onDelete,
label: t(($) => $["removeTrustMember"], { trustMember: settlorName })
}];
return /* @__PURE__ */ jsx(EntityAssociation, {
types: exemptSettlor.roles,
name: settlorName,
status: taskStatus,
actions,
onNavigateToEntity: onEdit
}, exemptSettlor.legalEntityId);
};
//#endregion
//#region src/components/Trust/tasks/TrustMembers/RegularTrustMemberTaskItem.tsx
var RegularTrustMemberTaskItem = ({ trustMember, taskStatus, onEdit, onDelete }) => {
const { t } = useTranslation("trust");
const actions = [{
icon: "edit",
onSelect: onEdit,
label: t(($) => $["editTrustMember"], { trustMember: trustMember.name })
}, {
icon: "bin",
onSelect: onDelete,
label: t(($) => $["removeTrustMember"], { trustMember: trustMember.name })
}];
return /* @__PURE__ */ jsx(EntityAssociation, {
types: trustMember.roles,
name: trustMember.name,
status: taskStatus,
actions,
onNavigateToEntity: onEdit
}, trustMember.legalEntityId);
};
//#endregion
//#region src/components/Trust/tasks/TrustMembers/RootTrusteeTaskItem.tsx
var RootTrusteeTaskItem = ({ rootTrustee, taskStatus, onEdit }) => {
const { t } = useTranslation("trust");
const actions = [{
icon: "edit",
onSelect: onEdit,
label: t(($) => $["editTrustMember"], { trustMember: rootTrustee.name })
}];
const { isFeatureEnabled } = useToggleContext();
const isAllowMoreRolesForMainRootTrustee = isFeatureEnabled("AllowMoreRolesForMainRootTrustee");
return /* @__PURE__ */ jsx(EntityAssociation, {
types: isFeatureEnabled("AllowMoreRolesForMainRootTrustee") ? rootTrustee.roles : [TrustMemberTypes.TRUSTEE],
name: rootTrustee.name,
status: taskStatus,
actions: isAllowMoreRolesForMainRootTrustee ? actions : void 0
});
};
//#endregion
//#region src/components/Trust/tasks/TrustMembers/UndefinedBeneficiaryTaskItem.tsx
var UndefinedBeneficiaryTaskItem = ({ undefinedBeneficiary, onEdit, onDelete }) => {
const { t } = useTranslation("trust");
const actions = [{
icon: "edit",
onSelect: onEdit,
label: t(($) => $["editTrustMember"], { trustMember: t(($) => $["undefinedBeneficiary"]) })
}, {
icon: "bin",
onSelect: onDelete,
label: t(($) => $["removeTrustMember"], { trustMember: t(($) => $["undefinedBeneficiary"]) })
}];
return /* @__PURE__ */ jsx(EntityAssociation, {
name: undefinedBeneficiary.description,
types: [TrustMemberTypes.UNDEFINED_BENEFICIARY],
status: TaskStatuses.FINISHED,
actions,
onNavigateToEntity: onEdit
}, undefinedBeneficiary.reference);
};
//#endregion
//#region src/components/Trust/tasks/TrustMembers/TrustMembersOverview.tsx
var TrustMembersOverview = ({ navigateBackToTaskList, navigateToEditTrustMember, navigateToEditTrustMemberOwner }) => {
const { t, i18n } = useTranslation("trust");
const { data: rootLe, isLoading } = useLegalEntity(ROOT_LE);
const { data: trustLe, refetch: refetchTrust } = useAssociatedLegalEntity(rootLe, LegalEntityTypes.TRUST);
const trustMembers = useTrustMembers();
const { mutateAsync: updateLegalEntity } = useUpdateLegalEntity();
const { showToast } = useToastContext();
addResourceBundles(i18n, [{
ns: "trust",
importFn: (lang) => _rolldown_dynamic_import_helper_default(/* @__PURE__ */ Object.assign({
"../../language/bg-BG.json": () => import("./bg-BG-Doq5SqNZ.js"),
"../../language/cs-CZ.json": () => import("./cs-CZ-CNCOzk0z.js"),
"../../language/da-DK.json": () => import("./da-DK-Dq9DBbxy.js"),
"../../language/de-DE.json": () => import("./de-DE-BnAkTJpS.js"),
"../../language/el-GR.json": () => import("./el-GR-WE5RvoaZ.js"),
"../../language/en-US.json": () => import("./en-US-Y8C6Dmuq.js"),
"../../language/es-ES.json": () => import("./es-ES-DyrLbt2G.js"),
"../../language/et-EE.json": () => import("./et-EE-CjKIw3AU.js"),
"../../language/fi-FI.json": () => import("./fi-FI-YpLcMuZy.js"),
"../../language/fr-FR.json": () => import("./fr-FR-CWBeJe7e.js"),
"../../language/hr-HR.json": () => import("./hr-HR-B0eeXkQr.js"),
"../../language/hu-HU.json": () => import("./hu-HU-DmlhDBmZ.js"),
"../../language/it-IT.json": () => import("./it-IT-C3AVk1uR.js"),
"../../language/ja-JP.json": () => import("./ja-JP-ogtt9tGy.js"),
"../../language/lt-LT.json": () => import("./lt-LT-948HQZhZ.js"),
"../../language/lv-LV.json": () => import("./lv-LV-CrfpEaoB.js"),
"../../language/nl-NL.json": () => import("./nl-NL-CQYif340.js"),
"../../language/no-NO.json": () => import("./no-NO-DKzoUIzk.js"),
"../../language/pl-PL.json": () => import("./pl-PL-CWLfHfaM.js"),
"../../language/pt-BR.json": () => import("./pt-BR-BWN_WzRl.js"),
"../../language/pt-PT.json": () => import("./pt-PT-wBADnHVq.js"),
"../../language/ro-RO.json": () => import("./ro-RO-C2tZmDar.js"),
"../../language/sk-SK.json": () => import("./sk-SK-BsanrSCF.js"),
"../../language/sl-SI.json": () => import("./sl-SI-BsiDU3hz.js"),
"../../language/sv-SE.json": () => import("./sv-SE-DDCAUQsX.js")
}), `../../language/${lang}.json`, 4)
}]);
if (isLoading || !rootLe || !trustLe) return /* @__PURE__ */ jsx(Loader, { size: "large" });
const deleteTrustMember = async (trustMember) => {
try {
switch (trustMember.trustMemberType) {
case "regular":
case "exemptSettlor":
case "company":
await deleteAssociatedTrustMember({
associatedTrustMember: trustMember,
trust: trustLe,
asyncMutation: updateLegalEntity
});
break;
case "undefinedBeneficiary":
await deleteUndefinedBeneficiary({
undefinedBeneficiary: trustMember,
trust: trustLe,
asyncMutation: updateLegalEntity
});
break;
case "rootTrustee": throw new Error("Cannot delete root trustee");
}
await refetchTrust();
showToast({
variant: "success",
label: t(($) => $["successFullyRemovedTrustMember"])
});
} catch {
showToast({
variant: "error",
label: t(($) => $["failedToRemoveTrustMember"])
});
}
};
return /* @__PURE__ */ jsx(TrustMembersOverviewInner, {
trustMembers,
deleteTrustMember,
navigateBackToTaskList,
navigateToEditTrustMember,
navigateToEditTrustMemberOwner
});
};
var TrustMembersOverviewInner = ({ trustMembers, deleteTrustMember, navigateBackToTaskList, navigateToEditTrustMember, navigateToEditTrustMemberOwner }) => {
const { t } = useTranslation(["trust", "common"]);
const trustMemberRequirements = DEFAULT_TRUST_MEMBER_REQUIREMENTS;
const trustMembersWithOneOfGivenRoles = (roleTypes) => trustMembers.filter(({ roles }) => roleTypes.some((label) => roles.includes(label)));
const { isFeatureEnabled } = useToggleContext();
const allowMoreRolesForMainRootTrustee = isFeatureEnabled("AllowMoreRolesForMainRootTrustee");
const getTaskStatus = useGetTaskStatus();
return /* @__PURE__ */ jsx(DropinLayout, { content: /* @__PURE__ */ jsxs("div", {
className: "adyen-kyc-trust-members adyen-kyc-u-width-full",
children: [
/* @__PURE__ */ jsx(Header, {
title: t(($) => $["trustMembers"]),
description: t(($) => $["trustMembersDescription"])
}),
/* @__PURE__ */ jsx("div", {
className: "adyen-kyc-trust-members__container",
children: trustMemberRequirements.map(({ roleTypes, min, label }) => /* @__PURE__ */ jsx(EntityGuidanceStatus, {
country: CountryCodes.Australia,
currentTask: TaskTypes.TRUST_MEMBER_OVERVIEW,
entityLabel: label,
status: iconStatus(trustMembersWithOneOfGivenRoles(roleTypes).length, min)
}, label))
}),
/* @__PURE__ */ jsx(ContextGuidance, {
title: t(($) => $["whatIsTheDifferenceBetweenTheseRoles"]),
content: /* @__PURE__ */ jsx("ul", {
className: "adyen-kyc-guidance-list",
children: trustMemberRequirements.map(({ label }) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Trans, {
t,
ns: "trust",
i18nKey: ($) => $[`${label}GuideDescription`]
}) }, label))
}),
titleId: "whatIsTheDifferenceBetweenTheseRoles",
contentId: "differenceBetweenTrustMemberRoles"
}),
/* @__PURE__ */ jsx(StackLayout, {
gap: "small",
children: trustMembers.map((trustMember) => {
switch (trustMember.trustMemberType) {
case "rootTrustee": return /* @__PURE__ */ jsx(RootTrusteeTaskItem, {
rootTrustee: trustMember,
taskStatus: getTaskStatus(trustMember.legalEntityType == "organization" ? TaskTypes.TRUST_MEMBER_COMPANY : TaskTypes.TRUST_MEMBER_INDIVIDUAL, String(trustMember.legalEntityId)),
onEdit: allowMoreRolesForMainRootTrustee ? () => navigateToEditTrustMember(trustMember) : () => {}
}, trustMember.legalEntityId);
case "regular": return /* @__PURE__ */ jsx(RegularTrustMemberTaskItem, {
trustMember,
taskStatus: getTaskStatus(TaskTypes.TRUST_MEMBER_INDIVIDUAL, String(trustMember.legalEntityId)),
onEdit: () => navigateToEditTrustMember(trustMember),
onDelete: () => deleteTrustMember(trustMember)
}, trustMember.legalEntityId);
case "company": return /* @__PURE__ */ jsx(CompanyTrustMemberTaskItem, {
companyTrustMember: trustMember,
taskStatus: getTaskStatus(TaskTypes.TRUST_MEMBER_COMPANY, String(trustMember.legalEntityId)),
onEdit: () => navigateToEditTrustMember(trustMember),
onDelete: () => deleteTrustMember(trustMember),
onEditOwner: () => navigateToEditTrustMemberOwner(trustMember.ownerId, trustMember.legalEntityId),
onAddOwner: () => navigateToEditTrustMemberOwner("", trustMember.legalEntityId)
}, trustMember.legalEntityId);
case "exemptSettlor": return /* @__PURE__ */ jsx(ExemptSettlorTaskItem, {
exemptSettlor: trustMember,
taskStatus: getTaskStatus(TaskTypes.TRUST_MEMBER_INDIVIDUAL, String(trustMember.legalEntityId)),
onEdit: () => navigateToEditTrustMember(trustMember),
onDelete: () => deleteTrustMember(trustMember)
}, trustMember.legalEntityId);
case "undefinedBeneficiary": return /* @__PURE__ */ jsx(UndefinedBeneficiaryTaskItem, {
undefinedBeneficiary: trustMember,
onEdit: () => navigateToEditTrustMember(trustMember),
onDelete: () => deleteTrustMember(trustMember)
}, trustMember.reference);
}
})
}),
/* @__PURE__ */ jsx(Button, {
variant: "secondary",
icon: "plus",
onClick: (e) => {
e.stopPropagation();
navigateToEditTrustMember("new");
},
children: t(($) => $["addTrustMember"])
}),
/* @__PURE__ */ jsx(ActionBar, {
onHome: navigateBackToTaskList,
homeButtonLabel: t(($) => $["saveAndGoToOverview"], { ns: "common" })
})
]
}) });
};
//#endregion
export { TrustMembersOverview };