diff --git a/packages/lib/src/components/internal/UIElement/UIElement.tsx b/packages/lib/src/components/internal/UIElement/UIElement.tsx index 5def86c1c6..15684b56d9 100644 --- a/packages/lib/src/components/internal/UIElement/UIElement.tsx +++ b/packages/lib/src/components/internal/UIElement/UIElement.tsx @@ -83,7 +83,11 @@ export abstract class UIElement

exten ...componentProps }; - this.props = this.formatProps({ ...this.constructor['defaultProps'], ...finalProps }); + this.props = this.formatProps({ + ...this.constructor['defaultProps'], // component defaults + ...this.core.getRegulatoryDefaults(), // regulatory defaults + ...finalProps // the rest (inc. merchant defined config) + }); } protected storeElementRefOnCore(props?: P) { diff --git a/packages/lib/src/core/core.ts b/packages/lib/src/core/core.ts index 0c3b6f8ad6..492b7bbf94 100644 --- a/packages/lib/src/core/core.ts +++ b/packages/lib/src/core/core.ts @@ -7,7 +7,7 @@ import { resolveEnvironment, resolveCDNEnvironment, resolveAnalyticsEnvironment import Analytics from './Analytics'; import { AdditionalDetailsStateData, PaymentAction, PaymentResponseData } from '../types/global-types'; import { CoreConfiguration, ICore } from './types'; -import { processGlobalOptions } from './utils'; +import { getDefaultPropsByCountryCode, processGlobalOptions } from './utils'; import Session from './CheckoutSession'; import { hasOwnProperty } from '../utils/hasOwnProperty'; import { Resources } from './Context/Resources'; @@ -264,6 +264,10 @@ class Core implements ICore { }; } + public getRegulatoryDefaults(): Record { + return getDefaultPropsByCountryCode(this.options.countryCode); + } + public storeElementReference(element: UIElement) { if (element) { this.components.push(element); diff --git a/packages/lib/src/core/types.ts b/packages/lib/src/core/types.ts index 6fdb80c4de..707fa2bec3 100644 --- a/packages/lib/src/core/types.ts +++ b/packages/lib/src/core/types.ts @@ -40,6 +40,8 @@ export interface ICore { storeElementReference(element: UIElement): void; + getRegulatoryDefaults(): Record; + options: CoreConfiguration; paymentMethodsResponse: PaymentMethods; session?: Session; diff --git a/packages/lib/src/core/utils.ts b/packages/lib/src/core/utils.ts index 79ab575eb1..d484c8d5c2 100644 --- a/packages/lib/src/core/utils.ts +++ b/packages/lib/src/core/utils.ts @@ -11,3 +11,16 @@ export function processGlobalOptions(globalOptions) { return r; }, {}); } + +export function getDefaultPropsByCountryCode(countryCode: string): Record { + switch (countryCode) { + // Finnish regulations state that no payment method can be open by default + case 'FI': + return { + openFirstPaymentMethod: false, + openFirstStoredPaymentMethod: false + }; + default: + return {}; + } +}