UNPKG

@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
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 };