@adyen/kyc-components 3.17.0 → 3.18.0

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.
Files changed (55) hide show
  1. package/dist/es/adyen-kyc-components.es.js +236 -325
  2. package/dist/style.css +76 -195
  3. package/dist/types/components/BusinessTypeSelection/utils.d.ts +2 -2
  4. package/dist/types/components/CompanyBasics/component/CompanyBasicsComponent.d.ts +1 -1
  5. package/dist/types/components/CompanyOtherDetails/component/CompanyOtherDetailsComponent.d.ts +1 -1
  6. package/dist/types/components/EventEmitter.d.ts +3 -3
  7. package/dist/types/components/internal/Accordion/Accordion.d.ts +11 -3
  8. package/dist/types/components/internal/ContextGuidance/ContextGuidance.d.ts +1 -1
  9. package/dist/types/components/internal/FormFields/Field/Field.d.ts +1 -1
  10. package/dist/types/components/internal/FormFields/Field/types.d.ts +1 -0
  11. package/dist/types/components/internal/FormFields/InputRadio/InputRadio.d.ts +1 -1
  12. package/dist/types/components/internal/FormFields/MaskedInputText/MaskedInputText.d.ts +2 -1
  13. package/dist/types/components/internal/IdFieldTypeSelector/countryIdNumberTypes.d.ts +1 -1
  14. package/dist/types/components/internal/IdFieldTypeSelector/inferCompanyRegistrationNumberType.d.ts +1 -1
  15. package/dist/types/core/Context/ExperimentContext/types.d.ts +3 -1
  16. package/dist/types/core/Context/SettingsContext/useSetting.d.ts +2 -2
  17. package/dist/types/core/SDKValidation/index.d.ts +2 -2
  18. package/dist/types/core/Services/componentApi/delete-transferInstrument.d.ts +1 -1
  19. package/dist/types/core/Services/session.d.ts +1 -1
  20. package/dist/types/core/core.d.ts +4 -4
  21. package/dist/types/core/hooks/useAsyncValidator.d.ts +1 -1
  22. package/dist/types/core/hooks/useBankConfigurationHandlers.d.ts +1 -1
  23. package/dist/types/core/hooks/useForm/reducer.d.ts +5 -3
  24. package/dist/types/core/hooks/useForm/types.d.ts +3 -0
  25. package/dist/types/core/hooks/useIdVerificationToken.d.ts +2 -2
  26. package/dist/types/core/hooks/useInterval.d.ts +0 -1
  27. package/dist/types/core/hooks/useLocalStorage.d.ts +1 -5
  28. package/dist/types/core/hooks/useStaticValidator/useStaticValidator.d.ts +2 -2
  29. package/dist/types/core/models/errors/validation-error.d.ts +2 -1
  30. package/dist/types/core/models/field-configurations.d.ts +1 -1
  31. package/dist/types/utils/api/documentUtils.d.ts +1 -1
  32. package/dist/types/utils/company-util.d.ts +1 -1
  33. package/dist/types/utils/entriesOf.d.ts +2 -2
  34. package/dist/types/utils/mapping/mapping.d.ts +2 -2
  35. package/dist/types/utils/omitObscuredFieldsIfUnchanged.d.ts +1 -1
  36. package/dist/types/utils/regex/patternValidators.d.ts +1 -1
  37. package/dist/types/utils/trustMembers/handlers/addOrUpdateAssociatedTrustMember.d.ts +2 -2
  38. package/dist/types/utils/trustMembers/handlers/addOrUpdateUndefinedBeneficiary.d.ts +1 -1
  39. package/dist/types/utils/trustMembers/handlers/createExemptSettlor.d.ts +2 -2
  40. package/dist/types/utils/trustMembers/handlers/deleteAssociatedTrustMember.d.ts +1 -1
  41. package/dist/types/utils/trustMembers/handlers/deleteUndefinedBeneficiary.d.ts +1 -1
  42. package/dist/types/utils/trustMembers/handlers/updateExemptSettlorName.d.ts +2 -2
  43. package/dist/types/utils/validatorUtils.d.ts +3 -3
  44. package/dist/types/utils/verification/verificationUtils.d.ts +1 -1
  45. package/package.json +2 -2
  46. package/dist/types/components/internal/Accordion/AccordionContext.d.ts +0 -2
  47. package/dist/types/components/internal/Accordion/index.d.ts +0 -1
  48. package/dist/types/components/internal/Accordion/types.d.ts +0 -22
  49. package/dist/types/components/internal/AccordionItem/AccordionItem.d.ts +0 -3
  50. package/dist/types/components/internal/AccordionItem/index.d.ts +0 -1
  51. package/dist/types/components/internal/AccordionItem/types.d.ts +0 -15
  52. package/dist/types/components/internal/AccordionItem/useAccordionContext.d.ts +0 -1
  53. package/dist/types/components/internal/CollapsibleContainer/CollapsibleContainer.d.ts +0 -3
  54. package/dist/types/components/internal/CollapsibleContainer/index.d.ts +0 -1
  55. package/dist/types/components/internal/CollapsibleContainer/types.d.ts +0 -6
@@ -75,6 +75,7 @@ const SINFormatCA = "XXXXXXXXX";
75
75
  const invalidFormat = "Invalid format";
76
76
  const formatIsCorrect = "Format is correct";
77
77
  const fieldIsRequired = "Field is required";
78
+ const optional = "(optional)";
78
79
  const tooManyFiles = "Too many files";
79
80
  const duplicatedFiles = "Duplicated files";
80
81
  const unsupportedFiletype = "Unsupported filetype";
@@ -427,7 +428,8 @@ const invalidDateOfBirth = "Please enter a valid date of birth";
427
428
  const invalidDateOfIncorporation = "Please enter a valid date of incorporation";
428
429
  const successfullyUpdatedDetails = "Successfully updated details";
429
430
  const failedToUpdateDetails = "Failed to update details";
430
- const documentUploadfailed = "Document upload failed. Please ensure the document is not a duplicate and its size is 4MBs or less.";
431
+ const idDocumentAlreadyUploaded = "Identity document has already been uploaded or is too large; try another";
432
+ const bankStatementAlreadyUploaded = "Bank statement has already been uploaded, is too large, or the the account has already been added; try another";
431
433
  const successfullyVerifiedIdNumber = "Successfully verified %{idNumber}";
432
434
  const failedFetchingDecisionMaker = "Failed to get decision maker details";
433
435
  const fileUpload = "File upload";
@@ -1383,6 +1385,7 @@ const defaultTrans = {
1383
1385
  invalidFormat,
1384
1386
  formatIsCorrect,
1385
1387
  fieldIsRequired,
1388
+ optional,
1386
1389
  tooManyFiles,
1387
1390
  duplicatedFiles,
1388
1391
  unsupportedFiletype,
@@ -1735,7 +1738,8 @@ const defaultTrans = {
1735
1738
  invalidDateOfIncorporation,
1736
1739
  successfullyUpdatedDetails,
1737
1740
  failedToUpdateDetails,
1738
- documentUploadfailed,
1741
+ idDocumentAlreadyUploaded,
1742
+ bankStatementAlreadyUploaded,
1739
1743
  successfullyVerifiedIdNumber,
1740
1744
  failedFetchingDecisionMaker,
1741
1745
  fileUpload,
@@ -3666,12 +3670,32 @@ const useAllowedCountries = () => {
3666
3670
  }, [acceptedCountries]);
3667
3671
  return allowedCountries;
3668
3672
  };
3673
+ class ValidationResult {
3674
+ constructor(results) {
3675
+ this.validationResults = results;
3676
+ }
3677
+ /** Checks if all validation rules have passed */
3678
+ get isValid() {
3679
+ return this.validationResults.reduce((acc, result) => acc && result.isValid, true);
3680
+ }
3681
+ /** Checks if any validation rule returned an error */
3682
+ hasError() {
3683
+ return Boolean(this.getError());
3684
+ }
3685
+ /** Returns the first validation result that returned an error */
3686
+ getError() {
3687
+ return this.validationResults.find((result) => result.hasError);
3688
+ }
3689
+ /** Returns all validation results that returned an error */
3690
+ getAllErrors() {
3691
+ return this.validationResults.filter((result) => result.hasError);
3692
+ }
3693
+ }
3669
3694
  const processField = ({
3670
3695
  key,
3671
3696
  value = null,
3672
3697
  mode,
3673
3698
  defaultData,
3674
- obscuredFields,
3675
3699
  fieldContext,
3676
3700
  formatters,
3677
3701
  staticValidate,
@@ -3680,7 +3704,7 @@ const processField = ({
3680
3704
  var _a, _b;
3681
3705
  const formatterFn = ((_a = formatters == null ? void 0 : formatters[key]) == null ? void 0 : _a.formatter) ? (_b = formatters[key]) == null ? void 0 : _b.formatter : formatters == null ? void 0 : formatters[key];
3682
3706
  const formattedValue = formatterFn && typeof formatterFn === "function" ? formatterFn(value, fieldContext) : value;
3683
- const shouldValidateField = !((obscuredFields == null ? void 0 : obscuredFields.includes(key)) && (defaultData == null ? void 0 : defaultData[key]) === value && !!(defaultData == null ? void 0 : defaultData[key]));
3707
+ const shouldValidateField = !((defaultData == null ? void 0 : defaultData[key]) === value && !!(defaultData == null ? void 0 : defaultData[key]));
3684
3708
  if (shouldValidateField && value) {
3685
3709
  asyncValidate(key, fieldContext.state, mode);
3686
3710
  }
@@ -3688,11 +3712,10 @@ const processField = ({
3688
3712
  key,
3689
3713
  value: formattedValue,
3690
3714
  mode
3691
- }, fieldContext) : {
3715
+ }, fieldContext) : new ValidationResult([{
3692
3716
  isValid: true,
3693
- hasError: () => null,
3694
- getError: () => null
3695
- };
3717
+ hasError: false
3718
+ }]);
3696
3719
  return [formattedValue, validationResult];
3697
3720
  };
3698
3721
  function init({
@@ -3700,6 +3723,7 @@ function init({
3700
3723
  defaultData,
3701
3724
  fieldProblems,
3702
3725
  obscuredFields,
3726
+ optionalFields,
3703
3727
  formatters,
3704
3728
  staticValidate,
3705
3729
  asyncValidate
@@ -3711,10 +3735,11 @@ function init({
3711
3735
  mode: "blur",
3712
3736
  formatters,
3713
3737
  defaultData,
3714
- obscuredFields,
3715
3738
  fieldContext: {
3716
3739
  state: {
3717
- data: defaultData
3740
+ data: defaultData,
3741
+ obscuredFields,
3742
+ optionalFields
3718
3743
  }
3719
3744
  },
3720
3745
  staticValidate,
@@ -3735,7 +3760,8 @@ function init({
3735
3760
  fieldProblems: (fieldProblems == null ? void 0 : fieldProblems[fieldKey]) ?? false
3736
3761
  };
3737
3762
  };
3738
- const formData = schema.reduce((acc, field) => {
3763
+ const formFields = optionalFields ? [...schema, ...optionalFields] : schema;
3764
+ const formData = formFields.reduce((acc, field) => {
3739
3765
  const {
3740
3766
  valid,
3741
3767
  errors,
@@ -3767,13 +3793,16 @@ function init({
3767
3793
  valid: {},
3768
3794
  errors: {},
3769
3795
  fieldProblems: {},
3770
- obscuredFields
3796
+ obscuredFields,
3797
+ optionalFields
3771
3798
  });
3772
3799
  return formData;
3773
3800
  }
3774
3801
  function reducer({
3775
3802
  staticValidate,
3776
3803
  asyncValidate,
3804
+ obscuredFields,
3805
+ optionalFields,
3777
3806
  formatters
3778
3807
  }) {
3779
3808
  return (state2, {
@@ -3784,7 +3813,6 @@ function reducer({
3784
3813
  schema,
3785
3814
  selectedSchema,
3786
3815
  formValue,
3787
- obscuredFields,
3788
3816
  fieldProblems,
3789
3817
  defaultData
3790
3818
  }) => {
@@ -3841,27 +3869,35 @@ function reducer({
3841
3869
  if (!schema) return state2;
3842
3870
  const defaultState = init({
3843
3871
  schema,
3872
+ // requiredFields
3844
3873
  defaultData,
3845
3874
  fieldProblems,
3846
3875
  obscuredFields,
3876
+ optionalFields,
3847
3877
  staticValidate,
3848
3878
  asyncValidate
3849
3879
  });
3850
- const removedSchemaFields = (_b = state2.schema) == null ? void 0 : _b.filter((field) => !schema.includes(field));
3851
- const newSchemaFields = schema.filter((field) => {
3880
+ const removedFields = ((_b = state2.optionalFields) == null ? void 0 : _b.length) ? [...state2.schema.filter((field) => !schema.includes(field)), ...state2.optionalFields.filter((field) => !(optionalFields == null ? void 0 : optionalFields.includes(field)))] : state2.schema.filter((field) => !schema.includes(field));
3881
+ const newFields = (optionalFields == null ? void 0 : optionalFields.length) ? [...schema.filter((field) => {
3882
+ var _a2;
3883
+ return !((_a2 = state2.schema) == null ? void 0 : _a2.includes(field));
3884
+ }), ...optionalFields.filter((field) => {
3885
+ var _a2;
3886
+ return !((_a2 = state2.optionalFields) == null ? void 0 : _a2.includes(field));
3887
+ })] : schema.filter((field) => {
3852
3888
  var _a2;
3853
3889
  return !((_a2 = state2.schema) == null ? void 0 : _a2.includes(field));
3854
3890
  });
3855
3891
  const local = {
3856
- data: omitKeys(state2.data, newSchemaFields),
3857
- errors: omitKeys(state2.errors, newSchemaFields),
3858
- valid: omitKeys(state2.valid, newSchemaFields),
3859
- fieldProblems: omitKeys(state2.fieldProblems, newSchemaFields)
3892
+ data: omitKeys(state2.data, newFields),
3893
+ errors: omitKeys(state2.errors, newFields),
3894
+ valid: omitKeys(state2.valid, newFields),
3895
+ fieldProblems: omitKeys(state2.fieldProblems, newFields)
3860
3896
  };
3861
- const updatedData = addKeys(omitKeys(state2.data, removedSchemaFields), newSchemaFields, null, defaultState.data, (_c = state2.local) == null ? void 0 : _c.data);
3862
- const updatedValid = addKeys(omitKeys(state2.valid, removedSchemaFields), newSchemaFields, false, defaultState.valid, (_d = state2.local) == null ? void 0 : _d.valid);
3863
- const updatedErrors = addKeys(omitKeys(state2.errors, removedSchemaFields), newSchemaFields, null, defaultState.errors, (_e = state2.local) == null ? void 0 : _e.errors);
3864
- const updatedFieldProblems = addKeys(omitKeys(state2.fieldProblems, removedSchemaFields), newSchemaFields, false, defaultState.fieldProblems, (_f = state2.local) == null ? void 0 : _f.fieldProblems);
3897
+ const updatedData = addKeys(omitKeys(state2.data, removedFields), newFields, null, defaultState.data, (_c = state2.local) == null ? void 0 : _c.data);
3898
+ const updatedValid = addKeys(omitKeys(state2.valid, removedFields), newFields, false, defaultState.valid, (_d = state2.local) == null ? void 0 : _d.valid);
3899
+ const updatedErrors = addKeys(omitKeys(state2.errors, removedFields), newFields, null, defaultState.errors, (_e = state2.local) == null ? void 0 : _e.errors);
3900
+ const updatedFieldProblems = addKeys(omitKeys(state2.fieldProblems, removedFields), newFields, false, defaultState.fieldProblems, (_f = state2.local) == null ? void 0 : _f.fieldProblems);
3865
3901
  return {
3866
3902
  ...state2,
3867
3903
  schema,
@@ -3869,6 +3905,8 @@ function reducer({
3869
3905
  valid: updatedValid,
3870
3906
  errors: updatedErrors,
3871
3907
  fieldProblems: updatedFieldProblems,
3908
+ obscuredFields,
3909
+ optionalFields,
3872
3910
  local
3873
3911
  };
3874
3912
  }
@@ -3879,7 +3917,6 @@ function reducer({
3879
3917
  value,
3880
3918
  mode,
3881
3919
  defaultData,
3882
- obscuredFields,
3883
3920
  formatters,
3884
3921
  fieldContext: {
3885
3922
  state: state2
@@ -3936,13 +3973,12 @@ function reducer({
3936
3973
  }
3937
3974
  case "validateForm": {
3938
3975
  const formValidation = validationSchema == null ? void 0 : validationSchema.reduce((acc, cur) => {
3939
- var _a2;
3940
- const [, validation] = processField({
3976
+ var _a2, _b2;
3977
+ const [formattedValue, validation] = processField({
3941
3978
  key: cur,
3942
3979
  value: state2.data[cur],
3943
3980
  mode: "blur",
3944
3981
  defaultData,
3945
- obscuredFields,
3946
3982
  formatters,
3947
3983
  fieldContext: {
3948
3984
  state: state2
@@ -3950,6 +3986,8 @@ function reducer({
3950
3986
  staticValidate,
3951
3987
  asyncValidate
3952
3988
  });
3989
+ const oldValue = state2.data[cur];
3990
+ const clearFieldProblems = oldValue !== formattedValue;
3953
3991
  return {
3954
3992
  valid: {
3955
3993
  ...acc.valid,
@@ -3958,16 +3996,22 @@ function reducer({
3958
3996
  errors: {
3959
3997
  ...acc.errors,
3960
3998
  [cur]: validation.getError() ?? null
3999
+ },
4000
+ fieldProblems: {
4001
+ ...acc.fieldProblems,
4002
+ [cur]: clearFieldProblems ? false : ((_b2 = state2.fieldProblems) == null ? void 0 : _b2[cur]) ?? false
3961
4003
  }
3962
4004
  };
3963
4005
  }, {
3964
4006
  valid: state2.valid,
3965
- errors: state2.errors
4007
+ errors: state2.errors,
4008
+ fieldProblems: state2.fieldProblems
3966
4009
  });
3967
4010
  return {
3968
4011
  ...state2,
3969
4012
  valid: formValidation == null ? void 0 : formValidation.valid,
3970
- errors: formValidation == null ? void 0 : formValidation.errors
4013
+ errors: formValidation == null ? void 0 : formValidation.errors,
4014
+ fieldProblems: formValidation == null ? void 0 : formValidation.fieldProblems
3971
4015
  };
3972
4016
  }
3973
4017
  default:
@@ -3975,27 +4019,6 @@ function reducer({
3975
4019
  }
3976
4020
  };
3977
4021
  }
3978
- class ValidationResult {
3979
- constructor(results) {
3980
- this.validationResults = results;
3981
- }
3982
- /** Checks if all validation rules have passed */
3983
- get isValid() {
3984
- return this.validationResults.reduce((acc, result) => acc && result.isValid, true);
3985
- }
3986
- /** Checks if any validation rule returned an error */
3987
- hasError() {
3988
- return Boolean(this.getError());
3989
- }
3990
- /** Returns the first validation result that returned an error */
3991
- getError() {
3992
- return this.validationResults.find((result) => result.hasError);
3993
- }
3994
- /** Returns all validation results that returned an error */
3995
- getAllErrors() {
3996
- return this.validationResults.filter((result) => result.hasError);
3997
- }
3998
- }
3999
4022
  const logger$v = createLogger("useAsyncValidator");
4000
4023
  const useAsyncValidator = (asyncRules) => {
4001
4024
  const [asyncValidationResults, setAsyncValidationResults] = useState({});
@@ -4039,10 +4062,13 @@ const useStaticValidator = (rules2) => {
4039
4062
  value,
4040
4063
  mode = "blur"
4041
4064
  }, context) => {
4065
+ var _a, _b;
4042
4066
  const fieldRules = getRulesForField(key);
4067
+ const isFieldOptional = !!((_a = context == null ? void 0 : context.state.optionalFields) == null ? void 0 : _a.includes(key));
4068
+ const isFieldObscured = !!((_b = context == null ? void 0 : context.state.obscuredFields) == null ? void 0 : _b.includes(key));
4043
4069
  const validationRulesResult = fieldRules.map((rule) => {
4044
- const isValid = rule.validate(value, context);
4045
- const shouldValidate = rule.modes.includes(mode);
4070
+ const shouldValidate = rule.modes.includes(mode) && !isFieldObscured;
4071
+ const isValid = isFieldOptional && isEmpty(value) ? true : rule.validate(value, context);
4046
4072
  return {
4047
4073
  isValid,
4048
4074
  errorMessage: typeof rule.errorMessage === "function" ? rule.errorMessage(value, context) : rule.errorMessage,
@@ -4055,9 +4081,10 @@ const useStaticValidator = (rules2) => {
4055
4081
  triggerStaticValidation
4056
4082
  };
4057
4083
  };
4058
- const mergeStaticAndAsyncErrorsState = (staticValidationErrors, asyncValidationErrors, schema) => {
4059
- if (!schema.length) return staticValidationErrors;
4060
- return schema.reduce((acc, field) => {
4084
+ const mergeStaticAndAsyncErrorsState = (staticValidationErrors, asyncValidationErrors, schema, optionalFields) => {
4085
+ const fields = optionalFields ? [...schema, ...optionalFields] : schema;
4086
+ if (!fields.length) return staticValidationErrors;
4087
+ return fields.reduce((acc, field) => {
4061
4088
  var _a;
4062
4089
  return {
4063
4090
  ...acc,
@@ -4084,27 +4111,25 @@ function useForm({
4084
4111
  asyncValidationResults
4085
4112
  } = useAsyncValidator(asyncRules);
4086
4113
  const getRequiredFields = useMemo(() => typeof schema === "function" ? schema : () => schema, [schema]);
4087
- const getSchema = useMemo(() => {
4088
- if (optionalFields) {
4089
- return defaultData ? [...getRequiredFields(defaultData), ...optionalFields] : [];
4090
- }
4091
- return defaultData ? getRequiredFields(defaultData) : [];
4092
- }, [optionalFields, defaultData, getRequiredFields]);
4114
+ const getSchema = useMemo(() => defaultData ? getRequiredFields(defaultData) : [], [defaultData, getRequiredFields]);
4093
4115
  const getReducer = useCallback(() => reducer({
4094
4116
  staticValidate: triggerStaticValidation,
4095
4117
  asyncValidate: triggerAsyncValidation,
4118
+ obscuredFields,
4119
+ optionalFields,
4096
4120
  formatters
4097
- }), [triggerStaticValidation, triggerAsyncValidation, formatters]);
4098
- const getInitialData = useCallback(() => ({
4121
+ }), [triggerStaticValidation, triggerAsyncValidation, obscuredFields, optionalFields, formatters]);
4122
+ const initialData = useMemo(() => ({
4099
4123
  schema: getSchema,
4100
4124
  defaultData,
4101
4125
  fieldProblems,
4102
4126
  obscuredFields,
4127
+ optionalFields,
4103
4128
  formatters,
4104
4129
  staticValidate: triggerStaticValidation,
4105
4130
  asyncValidate: triggerAsyncValidation
4106
- }), [getSchema, defaultData, fieldProblems, obscuredFields, formatters, triggerStaticValidation, triggerAsyncValidation]);
4107
- const [state2, dispatch] = useReducer(getReducer(), getInitialData(), init);
4131
+ }), [getSchema, defaultData, fieldProblems, obscuredFields, optionalFields, formatters, triggerStaticValidation, triggerAsyncValidation]);
4132
+ const [state2, dispatch] = useReducer(getReducer(), initialData, init);
4108
4133
  const isValid = useMemo(() => {
4109
4134
  var _a;
4110
4135
  return (_a = state2.schema) == null ? void 0 : _a.every((key) => state2.valid[key]);
@@ -4151,18 +4176,16 @@ function useForm({
4151
4176
  key,
4152
4177
  value,
4153
4178
  mode,
4154
- defaultData,
4155
- obscuredFields
4179
+ defaultData
4156
4180
  });
4157
- }, [defaultData, obscuredFields, getTargetValue]);
4181
+ }, [defaultData, getTargetValue]);
4158
4182
  const triggerValidation = useCallback((selectedSchema) => {
4159
4183
  dispatch({
4160
4184
  type: "validateForm",
4161
4185
  selectedSchema,
4162
- defaultData,
4163
- obscuredFields
4186
+ defaultData
4164
4187
  });
4165
- }, [defaultData, obscuredFields]);
4188
+ }, [defaultData]);
4166
4189
  useEffect(() => {
4167
4190
  const newSchema = getRequiredFields(state2.data);
4168
4191
  if (!doArraysMatch(state2.schema, newSchema)) {
@@ -4179,7 +4202,7 @@ function useForm({
4179
4202
  setFieldProblems(fieldProblems);
4180
4203
  }
4181
4204
  }, [JSON.stringify(fieldProblems), setFieldProblems]);
4182
- const formErrors = useMemo(() => mergeStaticAndAsyncErrorsState(state2.errors, asyncValidationResults, state2.schema), [asyncValidationResults, state2.errors]);
4205
+ const formErrors = useMemo(() => mergeStaticAndAsyncErrorsState(state2.errors, asyncValidationResults, state2.schema, state2.optionalFields), [asyncValidationResults, state2.errors, state2.optionalFields, state2.schema]);
4183
4206
  return {
4184
4207
  mergeForm,
4185
4208
  setData,
@@ -4308,6 +4331,7 @@ const Field = ({
4308
4331
  children,
4309
4332
  dataPlaceholder,
4310
4333
  disabled,
4334
+ optional: optional2,
4311
4335
  errorMessage,
4312
4336
  filled,
4313
4337
  focused,
@@ -4327,6 +4351,9 @@ const Field = ({
4327
4351
  wrapperRef
4328
4352
  }) => {
4329
4353
  const uniqueId = useId();
4354
+ const {
4355
+ i18n
4356
+ } = useI18nContext();
4330
4357
  const [isFilled] = useStateFromProp({
4331
4358
  passedValue: filled,
4332
4359
  skipUpdate: filled === void 0
@@ -4354,11 +4381,14 @@ const Field = ({
4354
4381
  name,
4355
4382
  onClick: onFocusField,
4356
4383
  useLabelElement,
4357
- children: [jsx("span", {
4384
+ children: [jsxs("span", {
4358
4385
  className: cx("adyen-kyc-label__text", {
4359
4386
  "adyen-kyc-label__text--error": !!errorMessage
4360
4387
  }),
4361
- children: label
4388
+ children: [label, optional2 && jsxs("span", {
4389
+ className: "adyen-kyc-optional-label",
4390
+ children: [" ", i18n.get("optional")]
4391
+ })]
4362
4392
  }), helper && helperPosition === "above" && jsx("span", {
4363
4393
  className: "adyen-kyc-helper-text adyen-kyc-helper-text__above",
4364
4394
  children: helper
@@ -5721,8 +5751,8 @@ const findPossibleShifts = (mask) => {
5721
5751
  const inputOnlyMask = mask.filter((t) => t.type === "input");
5722
5752
  const optionals = inputOnlyMask.filter((t) => t.optional);
5723
5753
  const possibleShifts = [];
5724
- for (const optional of optionals) {
5725
- const index = inputOnlyMask.indexOf(optional);
5754
+ for (const optional2 of optionals) {
5755
+ const index = inputOnlyMask.indexOf(optional2);
5726
5756
  for (let i = index + 1; i < inputOnlyMask.length; i += 1) {
5727
5757
  const laterToken = inputOnlyMask[i];
5728
5758
  if (laterToken.type === "input") {
@@ -5904,10 +5934,15 @@ const matchAgainstMask = (pureValue, mask, acceptObscuredValue = false) => {
5904
5934
  }
5905
5935
  }
5906
5936
  };
5907
- const deriveInputState = (isValid, isFocused, hasBlurred, isDisabled, errorMessage, shouldValidate, potentiallyMoreOptionalCharacters, formatGuidance, i18n) => {
5937
+ const deriveInputState = (isValid, isFocused, isDisabled, isOptional, hasNullishValue, hasBlurred, errorMessage, shouldValidate, potentiallyMoreOptionalCharacters, formatGuidance, i18n) => {
5908
5938
  if (isDisabled) return {
5909
5939
  isError: false
5910
5940
  };
5941
+ if (isOptional && hasNullishValue) {
5942
+ return {
5943
+ isError: false
5944
+ };
5945
+ }
5911
5946
  if (isValid && (!potentiallyMoreOptionalCharacters || !isFocused)) return {
5912
5947
  isError: false,
5913
5948
  text: jsxs(Fragment, {
@@ -5946,6 +5981,7 @@ const MaskedInputText = ({
5946
5981
  transformOnType,
5947
5982
  readonly = false,
5948
5983
  disabled = false,
5984
+ optional: optional2 = false,
5949
5985
  formatGuidance,
5950
5986
  classNameModifiers,
5951
5987
  acceptObscuredValue = false
@@ -5986,7 +6022,7 @@ const MaskedInputText = ({
5986
6022
  }, [mask]);
5987
6023
  const maskResult = useMemo(() => getMaskResult(value), [getMaskResult, value]);
5988
6024
  const displayValue = maskResult.outcome === "mismatch" ? maskResult.partialDisplayValue : maskResult.displayValue;
5989
- const inputState = deriveInputState(validationIsValid && maskResult.outcome !== "mismatch", isFocused, hasBlurred, disabled, errorMessage, shouldValidate, maskResult.outcome === "correct" && !!maskResult.potentialForMoreOptionalInput, formatGuidance, i18n);
6025
+ const inputState = deriveInputState(validationIsValid && maskResult.outcome !== "mismatch", isFocused, disabled, optional2, !displayValue, hasBlurred, errorMessage, shouldValidate, maskResult.outcome === "correct" && !!maskResult.potentialForMoreOptionalInput, formatGuidance, i18n);
5990
6026
  useEffect(() => {
5991
6027
  if (mask && maskResult.outcome === "mismatch") {
5992
6028
  const strippedValue = displayValueToPure(value);
@@ -6040,6 +6076,7 @@ Falling back to partially valid value "${fallback}"`);
6040
6076
  helperPosition: "below",
6041
6077
  classNameModifiers: classNameModifiers == null ? void 0 : classNameModifiers.field,
6042
6078
  disabled,
6079
+ optional: optional2,
6043
6080
  children: ({
6044
6081
  onBlurHandler: fieldOnBlur,
6045
6082
  onFocusHandler: fieldOnFocus,
@@ -6344,25 +6381,25 @@ const nonInputs = (str, options) => Array.from(str).map((char) => ({
6344
6381
  displayEagerly: (options == null ? void 0 : options.displayEagerly) ?? true
6345
6382
  }));
6346
6383
  const spacer = nonInputs(" ")[0];
6347
- const alphaInputs = (length, optional = false) => makeArrayOfRepeatedObjects(length, {
6384
+ const alphaInputs = (length, optional2 = false) => makeArrayOfRepeatedObjects(length, {
6348
6385
  type: "input",
6349
6386
  allow: /[A-Za-z]/,
6350
- optional
6387
+ optional: optional2
6351
6388
  });
6352
- const numericInputs = (length, optional = false) => makeArrayOfRepeatedObjects(length, {
6389
+ const numericInputs = (length, optional2 = false) => makeArrayOfRepeatedObjects(length, {
6353
6390
  type: "input",
6354
6391
  allow: /\d/,
6355
- optional
6392
+ optional: optional2
6356
6393
  });
6357
- const alphanumericInputs = (length, optional = false) => makeArrayOfRepeatedObjects(length, {
6394
+ const alphanumericInputs = (length, optional2 = false) => makeArrayOfRepeatedObjects(length, {
6358
6395
  type: "input",
6359
6396
  allow: /[\dA-Za-z]/,
6360
- optional
6397
+ optional: optional2
6361
6398
  });
6362
- const customInputs = (length, regex, optional = false) => makeArrayOfRepeatedObjects(length, {
6399
+ const customInputs = (length, regex, optional2 = false) => makeArrayOfRepeatedObjects(length, {
6363
6400
  type: "input",
6364
6401
  allow: regex,
6365
- optional
6402
+ optional: optional2
6366
6403
  });
6367
6404
  const makeMask = (...tokens) => ({
6368
6405
  tokens,
@@ -7740,208 +7777,62 @@ class UserEvents {
7740
7777
  }
7741
7778
  }
7742
7779
  const userEvents = new UserEvents();
7743
- const AccordionContext = createContext(null);
7744
- function Accordion({
7745
- children,
7746
- className,
7747
- expand = false,
7748
- type,
7749
- onExpandSection
7750
- }) {
7751
- const [items, setItems] = useState([]);
7752
- const classNames = cx("adyen-kyc-accordion", className, {
7753
- "adyen-kyc-accordion--container": type === "container",
7754
- "adyen-kyc-accordion--guide": type === "guide"
7755
- });
7756
- const contextValue = useMemo(() => ({
7757
- expand,
7758
- items,
7759
- setItems,
7760
- onExpandSection
7761
- }), [expand, items, onExpandSection]);
7762
- return jsx(AccordionContext.Provider, {
7763
- value: contextValue,
7764
- children: jsx("div", {
7765
- className: classNames,
7766
- children
7767
- })
7768
- });
7769
- }
7770
- var Placement = /* @__PURE__ */ ((Placement2) => {
7771
- Placement2[Placement2["Left"] = 0] = "Left";
7772
- Placement2[Placement2["Right"] = 1] = "Right";
7773
- return Placement2;
7774
- })(Placement || {});
7775
- function CollapsibleContainer({
7776
- children,
7777
- collapsed = false,
7778
- animationDuration = 0
7779
- }) {
7780
- const collapsibleContainerEl = useRef(null);
7781
- const [height, setHeight] = useState(collapsed ? 0 : void 0);
7782
- useEffect(() => {
7783
- var _a;
7784
- setHeight(collapsed ? 0 : (_a = collapsibleContainerEl.current) == null ? void 0 : _a.scrollHeight);
7785
- setTimeout(() => {
7786
- setHeight(collapsed ? 0 : "auto");
7787
- }, animationDuration * 1e3);
7788
- }, [collapsed]);
7789
- return jsx("div", {
7790
- className: "adyen-collapsible-container",
7791
- "aria-hidden": collapsed,
7792
- ref: collapsibleContainerEl,
7793
- style: {
7794
- height,
7795
- transitionDuration: `${animationDuration}s`
7796
- },
7797
- children
7798
- });
7799
- }
7800
- const useAccordionContext = () => {
7801
- const accordionContext = useContext(AccordionContext);
7802
- if (!accordionContext) {
7803
- throw new Error("Cannot use useAccordionContext without AccordionContext");
7804
- }
7805
- return accordionContext;
7806
- };
7807
- function AccordionItem({
7780
+ const ChevronDownIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2015%2015'%3e%3cdefs%3e%3cpath%20id='chevron-down_svg__a'%20d='M2%205a1%201%200%200%201%201.74-.67L7.5%208.51l3.76-4.18a1%201%200%200%201%201.48%201.34l-4.5%205a1%201%200%200%201-1.48%200l-4.5-5A1%201%200%200%201%202%205'/%3e%3c/defs%3e%3cuse%20xlink:href='%23chevron-down_svg__a'%20fill-rule='evenodd'/%3e%3c/svg%3e";
7781
+ const Accordion = ({
7782
+ title,
7808
7783
  children,
7809
- className,
7810
- open = false,
7811
- title = "",
7812
- subTitle = "",
7813
- expandIconPlacement = Placement.Left,
7814
- iconPlacement = Placement.Left,
7815
7784
  icon,
7816
- onOpen = noop,
7817
- onClose = noop
7818
- }) {
7819
- const {
7820
- expand,
7821
- items,
7822
- setItems,
7823
- onExpandSection
7824
- } = useAccordionContext();
7825
- const [isOpen, setIsOpen] = useState(open);
7826
- const [id2] = useState(getUniqueId);
7827
- const toggle = () => {
7828
- const newValue = !isOpen;
7829
- const newItems = [...items];
7830
- if (!expand) {
7831
- setItems(newItems.map((item) => ({
7832
- ...item,
7833
- isOpen: item.id === id2 ? newValue : false
7834
- })));
7835
- } else {
7836
- const currentItem = newItems.find((item) => item.id === id2);
7837
- if (currentItem) {
7838
- currentItem.isOpen = newValue;
7839
- }
7840
- setItems(newItems);
7841
- }
7785
+ expandOnLeft = false,
7786
+ onToggle,
7787
+ className
7788
+ }) => {
7789
+ const handleToggle = (e) => {
7790
+ onToggle(e.newState === "closed" ? "close" : "open");
7842
7791
  };
7843
- useEffect(() => {
7844
- setItems((items2) => [...items2, {
7845
- id: id2,
7846
- isOpen
7847
- }]);
7848
- }, []);
7849
- useEffect(() => {
7850
- setIsOpen(open);
7851
- }, [open]);
7852
- useEffect(() => {
7853
- const currentItem = items.find((item) => item.id === id2);
7854
- if (currentItem) {
7855
- setIsOpen(currentItem.isOpen);
7856
- }
7857
- }, [items]);
7858
- useEffect(() => {
7859
- if (isOpen) {
7860
- onExpandSection == null ? void 0 : onExpandSection(typeof title === "string" ? title : "");
7861
- onOpen();
7862
- } else {
7863
- onClose();
7864
- }
7865
- }, [isOpen]);
7866
- return jsxs("div", {
7867
- className: cx("adyen-kyc-accordion__item", className),
7868
- children: [jsxs("div", {
7792
+ return jsxs("details", {
7793
+ onToggle: handleToggle,
7794
+ className,
7795
+ children: [jsxs("summary", {
7869
7796
  role: "button",
7870
- className: "adyen-kyc-accordion__header",
7871
- tabIndex: 0,
7872
- onClick: toggle,
7873
- "aria-expanded": isOpen,
7874
- children: [expandIconPlacement === Placement.Left ? jsx(Icon, {
7875
- name: isOpen ? "chevron-up" : "chevron-down",
7876
- className: "adyen-kyc-accordion__toggle"
7877
- }) : null, icon && iconPlacement === Placement.Left ? jsx(Icon, {
7878
- name: icon,
7879
- className: "adyen-kyc-accordion__toggle"
7880
- }) : null, jsxs("div", {
7881
- className: "adyen-kyc-accordion__title-wrapper",
7882
- children: [jsx("div", {
7883
- className: "adyen-kyc-accordion__title",
7884
- children: title
7885
- }), subTitle && jsx("div", {
7886
- className: "adyen-kyc-accordion__subtitle",
7887
- children: subTitle
7888
- })]
7889
- }), expandIconPlacement === Placement.Right ? jsx(Icon, {
7890
- name: isOpen ? "chevron-up" : "chevron-down",
7891
- className: "adyen-kyc-accordion__toggle"
7892
- }) : null, icon && iconPlacement === Placement.Right ? jsx(Icon, {
7893
- name: icon,
7894
- className: "adyen-kyc-accordion__toggle"
7895
- }) : null]
7896
- }), jsx(CollapsibleContainer, {
7897
- collapsed: !isOpen,
7898
- animationDuration: 0.1,
7899
- children: jsx("div", {
7900
- className: "adyen-kyc-accordion__content",
7901
- children
7902
- })
7797
+ children: [expandOnLeft && jsx("img", {
7798
+ className: "arrow",
7799
+ src: ChevronDownIcon,
7800
+ alt: ""
7801
+ }), icon, title, !expandOnLeft && jsx("img", {
7802
+ className: "arrow arrow-right",
7803
+ src: ChevronDownIcon,
7804
+ alt: ""
7805
+ })]
7806
+ }), jsx("section", {
7807
+ className: "content",
7808
+ children
7903
7809
  })]
7904
7810
  });
7905
- }
7811
+ };
7906
7812
  function ContextGuidance({
7907
7813
  page,
7908
7814
  title,
7909
7815
  content,
7910
7816
  titleId,
7911
- contentId,
7912
- onOpen = noop,
7913
- onClose = noop
7817
+ contentId
7914
7818
  }) {
7915
- const onGuidanceOpen = () => {
7916
- userEvents.addEvent("Open contextual guidance information", {
7917
- segmentation: {
7918
- guidancePage: page,
7919
- guidanceTitleId: titleId,
7920
- guidanceContentId: contentId
7921
- }
7922
- });
7923
- onOpen();
7924
- };
7925
- const onGuidanceClose = () => {
7926
- userEvents.addEvent("Close contextual guidance information", {
7819
+ const onGuidanceToggle = (status) => {
7820
+ const eventAction = status === "open" ? "Open" : "Close";
7821
+ userEvents.addEvent(`${eventAction} contextual guidance information`, {
7927
7822
  segmentation: {
7928
7823
  guidancePage: page,
7929
7824
  guidanceTitleId: titleId,
7930
7825
  guidanceContentId: contentId
7931
7826
  }
7932
7827
  });
7933
- onClose();
7934
7828
  };
7935
7829
  return jsx(Accordion, {
7936
- type: "guide",
7937
- children: jsx(AccordionItem, {
7938
- icon: "light-bulb",
7939
- expandIconPlacement: Placement.Right,
7940
- title,
7941
- onOpen: onGuidanceOpen,
7942
- onClose: onGuidanceClose,
7943
- children: content
7944
- })
7830
+ title,
7831
+ icon: jsx(Icon, {
7832
+ name: "light-bulb"
7833
+ }),
7834
+ onToggle: onGuidanceToggle,
7835
+ children: content
7945
7836
  });
7946
7837
  }
7947
7838
  const checkDateInputSupport = () => {
@@ -9050,6 +8941,8 @@ var ExperimentNames = /* @__PURE__ */ ((ExperimentNames2) => {
9050
8941
  ExperimentNames2["ShowSingPassButtonForCompanies"] = "ShowSingPassButtonForCompanies";
9051
8942
  ExperimentNames2["ShowExtraTaxExemptionReasons"] = "ShowExtraTaxExemptionReasons";
9052
8943
  ExperimentNames2["EnableCountryOfGoverningLawForUKCompanies"] = "EnableCountryOfGoverningLawForUKCompanies";
8944
+ ExperimentNames2["HidePayoutAccountTask"] = "HidePayoutAccountTask";
8945
+ ExperimentNames2["HidePciTask"] = "HidePciTask";
9053
8946
  return ExperimentNames2;
9054
8947
  })(ExperimentNames || {});
9055
8948
  var VatAbsenceReason = /* @__PURE__ */ ((VatAbsenceReason2) => {
@@ -12310,10 +12203,7 @@ function Address(props) {
12310
12203
  }) => {
12311
12204
  const isHouseNumberFirst = COUNTRIES_WITH_HOUSE_NUMBER_FIRST.includes(data.country);
12312
12205
  const needsComma = COUNTRIES_WITH_COMMA_SEPARATED.includes(data.country);
12313
- let formattedAddress = isHouseNumberFirst ? `${houseNumberOrName} ${street2}` : `${street2} ${houseNumberOrName}`;
12314
- if (needsComma) {
12315
- formattedAddress = formattedAddress.replace(" ", ", ");
12316
- }
12206
+ const formattedAddress = isHouseNumberFirst ? `${houseNumberOrName}${needsComma ? ", " : " "}${street2}` : `${street2}${needsComma ? ", " : " "}${houseNumberOrName}`;
12317
12207
  handleChangeFor("address", "input")(formattedAddress);
12318
12208
  };
12319
12209
  const setFieldsData = (address2, field) => {
@@ -14021,7 +13911,8 @@ const mapLegalEntityToSoleProp = (legalEntity) => {
14021
13911
  }
14022
13912
  return solePropCompData;
14023
13913
  };
14024
- const mapSolePropToLegalEntity = (data) => {
13914
+ const mapSolePropToLegalEntity = (data, isCountryOfGoverningLawEnabled = false) => {
13915
+ var _a;
14025
13916
  const requestObj = {
14026
13917
  ...formatObject(data, solePropApiKeyMapping)
14027
13918
  };
@@ -14040,6 +13931,9 @@ const mapSolePropToLegalEntity = (data) => {
14040
13931
  if (data.solePropRegistrationDetails.exemptedFromRegistrationNumber) {
14041
13932
  requestObj.soleProprietorship.registrationNumber = "";
14042
13933
  }
13934
+ if (!isCountryOfGoverningLawEnabled && ((_a = data.solePropNameAndCountry) == null ? void 0 : _a.country)) {
13935
+ requestObj.soleProprietorship.countryOfGoverningLaw = data.solePropNameAndCountry.country;
13936
+ }
14043
13937
  requestObj.type = LegalEntityType.SOLE_PROPRIETORSHIP;
14044
13938
  return requestObj;
14045
13939
  };
@@ -24278,9 +24172,12 @@ var BusinessDetailsEvents = /* @__PURE__ */ ((BusinessDetailsEvents2) => {
24278
24172
  })(BusinessDetailsEvents || {});
24279
24173
  const isMaintenanceModeError = (error) => error && "messageCode" in error && error.messageCode === "maintenanceMode";
24280
24174
  const API_VALIDATION_ERROR_CODE = "30_102";
24281
- const DOCUMENT_UPLOAD_ERROR_CODE = ["30_105", "30_106"];
24282
- const isValidationError = (error) => error && "errorCode" in error && error.errorCode === API_VALIDATION_ERROR_CODE;
24283
- const isDocumentUploadError = (error) => error && "errorCode" in error && typeof error.errorCode === "string" && DOCUMENT_UPLOAD_ERROR_CODE.includes(error.errorCode);
24175
+ const ID_DOCUMENT_UPLOAD_ERROR_CODE = "30_105";
24176
+ const BANK_STATEMENT_UPLOAD_ERROR_CODE = "30_106";
24177
+ const validateErrorCode = (error, errorCode) => error && "errorCode" in error && error.errorCode === errorCode;
24178
+ const isValidationError = (error) => validateErrorCode(error, API_VALIDATION_ERROR_CODE);
24179
+ const isIdDocumentUploadError = (error) => validateErrorCode(error, ID_DOCUMENT_UPLOAD_ERROR_CODE);
24180
+ const isBankStatementUploadError = (error) => validateErrorCode(error, BANK_STATEMENT_UPLOAD_ERROR_CODE);
24284
24181
  const processValidationErrors = (validationError, dropinTask) => {
24285
24182
  if ((validationError == null ? void 0 : validationError.invalidFields) && (validationError == null ? void 0 : validationError.invalidFields.length) > 0) {
24286
24183
  return validationError == null ? void 0 : validationError.invalidFields.reduce((acc, invalidField) => {
@@ -25935,6 +25832,7 @@ function CompanyBasics({
25935
25832
  shouldValidate,
25936
25833
  formVerificationErrors,
25937
25834
  fieldValidationErrors,
25835
+ allFields,
25938
25836
  requiredFields,
25939
25837
  obscuredFields,
25940
25838
  optionalFields,
@@ -25968,6 +25866,7 @@ function CompanyBasics({
25968
25866
  const defaultTaxIdNumberType = existingTaxId ? inferTaxIdNumberType(existingTaxId, country2) : (_c = getTaxIdNumberOptions(country2, companyType2)) == null ? void 0 : _c[0].id;
25969
25867
  const [taxIdNumberType, setTaxIdNumberType] = useState$1(defaultTaxIdNumberType);
25970
25868
  const initialFormUtilsProps = useMemo$1(() => ({
25869
+ allFields,
25971
25870
  labels: labels2,
25972
25871
  placeholders,
25973
25872
  helperText,
@@ -25977,10 +25876,10 @@ function CompanyBasics({
25977
25876
  optionalFields,
25978
25877
  obscuredFields,
25979
25878
  shouldValidate
25980
- }), [helperText, labels2, obscuredFields, optionalFields, placeholders, readOnly, readOnlyFields, requiredFields, shouldValidate]);
25879
+ }), [allFields, helperText, labels2, obscuredFields, optionalFields, placeholders, readOnly, readOnlyFields, requiredFields, shouldValidate]);
25981
25880
  const mergedFieldProps = useMemo$1(() => {
25982
25881
  var _a2;
25983
- return (_a2 = initialFormUtilsProps.requiredFields) == null ? void 0 : _a2.reduce((acc, field) => {
25882
+ return (_a2 = initialFormUtilsProps.allFields) == null ? void 0 : _a2.reduce((acc, field) => {
25984
25883
  switch (field) {
25985
25884
  case "legalCompanyName":
25986
25885
  return {
@@ -26167,14 +26066,14 @@ function CompanyOtherDetails({
26167
26066
  shouldValidate,
26168
26067
  formVerificationErrors,
26169
26068
  fieldValidationErrors,
26069
+ allFields,
26170
26070
  requiredFields,
26171
26071
  obscuredFields,
26172
26072
  optionalFields,
26173
26073
  readOnlyFields,
26174
26074
  country: country2,
26175
26075
  legalCompanyName: legalCompanyName2,
26176
- companyType: companyType2,
26177
- kompanyVerifiedData
26076
+ companyType: companyType2
26178
26077
  }) {
26179
26078
  var _a, _b, _c, _d;
26180
26079
  const {
@@ -26193,6 +26092,7 @@ function CompanyOtherDetails({
26193
26092
  const [taxIdNumberType, setTaxIdNumberType] = useState$1(defaultTaxIdNumberType);
26194
26093
  const directChildFields = companyOtherDetailsFields.filter((field) => ["tradingName", "sameNameAsLegalName", "stockExchangeMIC", "stockISIN", "dateOfIncorporation"].includes(field));
26195
26094
  const initialFormUtilsProps = useMemo$1(() => ({
26095
+ allFields,
26196
26096
  labels: labels2,
26197
26097
  placeholders,
26198
26098
  helperText,
@@ -26202,10 +26102,10 @@ function CompanyOtherDetails({
26202
26102
  optionalFields,
26203
26103
  obscuredFields,
26204
26104
  shouldValidate
26205
- }), [helperText, labels2, obscuredFields, optionalFields, placeholders, readOnly, readOnlyFields, requiredFields, shouldValidate]);
26105
+ }), [allFields, helperText, labels2, obscuredFields, optionalFields, placeholders, readOnly, readOnlyFields, requiredFields, shouldValidate]);
26206
26106
  const mergedFieldProps = useMemo$1(() => {
26207
26107
  var _a2;
26208
- return (_a2 = initialFormUtilsProps.requiredFields) == null ? void 0 : _a2.reduce((acc, field) => {
26108
+ return (_a2 = initialFormUtilsProps.allFields) == null ? void 0 : _a2.reduce((acc, field) => {
26209
26109
  switch (field) {
26210
26110
  case "tradingName":
26211
26111
  return {
@@ -26262,8 +26162,6 @@ function CompanyOtherDetails({
26262
26162
  shouldValidate
26263
26163
  });
26264
26164
  const formUtils = formUtilities(mergedFieldProps ?? initialFormUtilsProps, i18n);
26265
- useEffect$1(() => {
26266
- }, [kompanyVerifiedData]);
26267
26165
  useEffect$1(() => {
26268
26166
  updateStateSlice({
26269
26167
  schema: formSchema,
@@ -29637,6 +29535,8 @@ function TaskListComponent({
29637
29535
  }
29638
29536
  }, [isCompany, isExperimentEnabled]);
29639
29537
  const hasSoleProprietorship = accountHolder2 === "mySoleProprietorName" || hasSolePropInLegalEntity(legalEntityResponse);
29538
+ const hidePayoutAccountTaskExperiment = isExperimentEnabled(ExperimentNames.HidePayoutAccountTask);
29539
+ const hidePciTaskExperiment = isExperimentEnabled(ExperimentNames.HidePciTask);
29640
29540
  const transferInstruments = (legalEntityResponse == null ? void 0 : legalEntityResponse.transferInstruments) || [];
29641
29541
  const canAddPayoutAccount = ((_a = legalEntityResponse == null ? void 0 : legalEntityResponse.organization) == null ? void 0 : _a.legalName) || ((_b = legalEntityResponse == null ? void 0 : legalEntityResponse.individual) == null ? void 0 : _b.name);
29642
29542
  const hasPayinTaskNotPayout = tasks.includes(TaskTypes.PAYIN) && !tasks.includes(TaskTypes.PAYOUT);
@@ -29645,7 +29545,7 @@ function TaskListComponent({
29645
29545
  const isSigningRequired = (pciStatus == null ? void 0 : pciStatus.signingRequired) === "true" || (pciStatus == null ? void 0 : pciStatus.signingRequired) === true;
29646
29546
  const canDownloadPci = !isSigningRequired && (pciStatus == null ? void 0 : pciStatus.hasDocuments);
29647
29547
  const isPciTaskDisabled = !canSignPci || !isSigningRequired && !(pciStatus == null ? void 0 : pciStatus.hasDocuments) || canDownloadPci;
29648
- const showPciTask = canDownloadPci || isSigningRequired;
29548
+ const showPciTask = (canDownloadPci || isSigningRequired) && !hidePciTaskExperiment;
29649
29549
  const showServiceAgreementTask = tasks.includes(TaskTypes.SERVICE_AGREEMENT) && ((serviceAgreementTypes == null ? void 0 : serviceAgreementTypes.length) > 0 || (serviceAgreementAcceptanceInfos == null ? void 0 : serviceAgreementAcceptanceInfos.length) > 0);
29650
29550
  const hasServiceAgreementSigners = legalEntityResponse.type === LegalEntityType.ORGANIZATION && getOwnSignatories(legalEntityResponse).length || legalEntityResponse.type === LegalEntityType.INDIVIDUAL && !!(legalEntityResponse == null ? void 0 : legalEntityResponse.individual);
29651
29551
  const areServiceAgreementTasksDisabled = !hasServiceAgreementSigners;
@@ -29770,7 +29670,7 @@ function TaskListComponent({
29770
29670
  title: i18n.get("trustMembers"),
29771
29671
  status: hasRequiredTrustMemberCount2 ? getTaskStatus(EntityType.LEGAL_ENTITY, capabilityProblems, legalEntityResponse, getOwnTrustMembersLegalEntityIds(legalEntityResponse)) : TaskStatus.DETAILS_REQUIRED
29772
29672
  })]
29773
- }), (tasks.includes(TaskTypes.PAYOUT) || tasks.includes(TaskTypes.PAYIN)) && jsx(TaskListGroup, {
29673
+ }), (tasks.includes(TaskTypes.PAYOUT) || tasks.includes(TaskTypes.PAYIN)) && !hidePayoutAccountTaskExperiment && jsx(TaskListGroup, {
29774
29674
  title: isEnableNewEntryFlowEnabled ? i18n.get("letUsKnowTheBankAccountToSendReceiveFunds") : i18n.get(hasPayinTaskNotPayout ? "payinAccountsDescription" : payoutTaskDescriptionKey),
29775
29675
  children: transferInstruments.length > 0 ? jsxs(Fragment, {
29776
29676
  children: [transferInstruments.map((transferInstrument) => jsx(PayoutAccountTaskListItem, {
@@ -31013,9 +30913,14 @@ function PayoutDetailsDropinComponent({
31013
30913
  ...problems,
31014
30914
  validationErrors
31015
30915
  });
31016
- } else if (isDocumentUploadError(e)) {
30916
+ } else if (isIdDocumentUploadError(e)) {
30917
+ showToast({
30918
+ label: i18n.get("idDocumentAlreadyUploaded"),
30919
+ type: ToastType.ERROR
30920
+ });
30921
+ } else if (isBankStatementUploadError(e)) {
31017
30922
  showToast({
31018
- label: i18n.get("documentUploadfailed"),
30923
+ label: i18n.get("bankStatementAlreadyUploaded"),
31019
30924
  type: ToastType.ERROR
31020
30925
  });
31021
30926
  } else if (isMaintenanceModeError(e)) {
@@ -32598,7 +32503,7 @@ function SolePropDropinComponent({
32598
32503
  const dataSubmitted = data;
32599
32504
  setLoadingStatus("loading");
32600
32505
  try {
32601
- const legalEntity = await handleSubmitLegalEntity(mapSolePropToLegalEntity(dataSubmitted));
32506
+ const legalEntity = await handleSubmitLegalEntity(mapSolePropToLegalEntity(dataSubmitted, isCountryOfGoverningLawEnabled));
32602
32507
  await submitDocuments2({
32603
32508
  forms: forms2,
32604
32509
  legalEntity,
@@ -35042,47 +34947,50 @@ function ManageTransferInstrumentOverviewItem({
35042
34947
  size: "large",
35043
34948
  showText: false
35044
34949
  }) : null;
35045
- const title = jsxs("div", {
35046
- className: "adyen-kyc-manage-ti-overview-item__heading",
35047
- children: [status, jsx(Heading, {
35048
- level: 1,
35049
- children: transferInstrumentReference.transferInstrument.accountIdentifier
35050
- })]
35051
- });
35052
- const actions = jsx("div", {
34950
+ const actions = jsxs("div", {
35053
34951
  className: "adyen-kyc-manage-ti-overview-item__action",
35054
- children: needMoreDetails && jsx(Button, {
34952
+ children: [needMoreDetails && jsx(Button, {
35055
34953
  label: i18n.get("completeAddingAccount"),
35056
34954
  onClick: (e) => {
35057
34955
  e.stopPropagation();
35058
34956
  onEdit(transferInstrumentReference.transferInstrument.id);
35059
34957
  },
35060
34958
  secondary: true
35061
- })
35062
- });
35063
- const subTitle = jsxs(Fragment, {
35064
- children: [description2 && jsx("span", {
35065
- children: i18n.get(description2)
35066
- }), actions]
35067
- });
35068
- return jsxs(AccordionItem, {
35069
- className: "adyen-kyc-manage-ti-overview-item",
35070
- expandIconPlacement: Placement.Right,
35071
- title,
35072
- subTitle,
35073
- onOpen: () => onOpen(transferInstrumentReference.transferInstrument.id),
35074
- children: [!transferInstrument ? jsx(LoaderWrapper, {
35075
- className: "adyen-kyc-manage-ti-overview-item__loader",
35076
- status: "loading"
35077
- }) : jsx(ManageTransferInstrumentOverviewItemSummary, {
35078
- transferInstrument,
35079
- accountHolderName,
35080
- onEdit: () => onEdit(transferInstrument.id)
35081
34959
  }), jsx(Remove, {
35082
34960
  label: isRemoving ? "removing" : "removeThisBankAccount",
35083
34961
  onRemove: async () => onRemove(transferInstrumentReference.transferInstrument.id),
35084
34962
  onRemoveStatusChange: setIsRemoving
35085
34963
  })]
34964
+ });
34965
+ const title = jsxs("div", {
34966
+ className: "adyen-kyc-manage-ti-overview-item__header",
34967
+ children: [jsxs("div", {
34968
+ className: "adyen-kyc-manage-ti-overview-item__title",
34969
+ children: [status, jsx(Heading, {
34970
+ level: 2,
34971
+ children: transferInstrumentReference.transferInstrument.accountIdentifier
34972
+ })]
34973
+ }), jsx("p", {
34974
+ className: "adyen-kyc-manage-ti-overview-item__subtitle",
34975
+ children: description2 && i18n.get(description2)
34976
+ })]
34977
+ });
34978
+ return jsx(Accordion, {
34979
+ className: "adyen-kyc-manage-ti-overview-item",
34980
+ title,
34981
+ onToggle: (state2) => {
34982
+ if (state2 === "open") onOpen(transferInstrumentReference.transferInstrument.id);
34983
+ },
34984
+ children: jsxs(Fragment, {
34985
+ children: [!transferInstrument ? jsx(LoaderWrapper, {
34986
+ className: "adyen-kyc-manage-ti-overview-item__loader",
34987
+ status: "loading"
34988
+ }) : jsx(ManageTransferInstrumentOverviewItemSummary, {
34989
+ transferInstrument,
34990
+ accountHolderName,
34991
+ onEdit: () => onEdit(transferInstrument.id)
34992
+ }), actions]
34993
+ })
35086
34994
  }, transferInstrumentReference.transferInstrument.id);
35087
34995
  }
35088
34996
  const logger$8 = createLogger("ManageTransferInstrumentOverview");
@@ -35130,7 +35038,7 @@ function ManageTransferInstrumentOverview({
35130
35038
  onOpen: onShowBankDetails
35131
35039
  }, transferInstrumentRef.transferInstrument.id));
35132
35040
  return jsxs(Fragment, {
35133
- children: [jsx(Accordion, {
35041
+ children: [jsx("section", {
35134
35042
  className: "adyen-kyc-manage-ti-overview",
35135
35043
  children: transferInstrumentListEle
35136
35044
  }), jsx("div", {
@@ -35932,7 +35840,7 @@ const ConfigurationApiProvider = ({
35932
35840
  isEmbeddedDropin,
35933
35841
  loadingContext
35934
35842
  } = authContext;
35935
- const sdkVersion = "3.17.0";
35843
+ const sdkVersion = "3.18.0";
35936
35844
  useAnalytics({
35937
35845
  onUserEvent,
35938
35846
  legalEntityId: rootLegalEntityId,
@@ -36473,12 +36381,15 @@ class UIElement extends BaseElement {
36473
36381
  refreshExpiry: this.props.refreshExpiry,
36474
36382
  eventEmitter: this.eventEmitter,
36475
36383
  children: jsx("div", {
36476
- className: "adyen-kyc-dropin-container adyen-kyc-u-position-relative",
36384
+ className: "adyen-kyc-u-width-full",
36477
36385
  children: jsx(AutoResizer, {
36478
- children: jsx(ToastContextProvider, {
36479
- children: jsx(StateProvider, {
36480
- children: jsx(Component, {
36481
- ...this.props.componentProps
36386
+ children: jsx("div", {
36387
+ className: "adyen-kyc-dropin-container adyen-kyc-u-position-relative",
36388
+ children: jsx(ToastContextProvider, {
36389
+ children: jsx(StateProvider, {
36390
+ children: jsx(Component, {
36391
+ ...this.props.componentProps
36392
+ })
36482
36393
  })
36483
36394
  })
36484
36395
  })