@primer-io/primer-js 0.7.3 → 0.8.1

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.
@@ -138,7 +138,8 @@ export type CollapsableComponentProps = {
138
138
  ariaLabel?: string;
139
139
  /** The button variant to use */
140
140
  buttonVariant?: ButtonVariant;
141
-
141
+ /** Internal state to track expanded state */
142
+ isExpanded?: boolean;
142
143
  /** */
143
144
  "onexpanded-changed"?: (e: CustomEvent<CustomEvent>) => void;
144
145
  };
@@ -457,6 +458,10 @@ export type RedirectPaymentComponentProps = {
457
458
  export type ShowOtherPaymentsComponentProps = {
458
459
  /** Consume the vault manager context to interact with vault state */
459
460
  vaultManager?: VaultManagerContextType;
461
+ /** Consume the events context for external control */
462
+ contextEventsController?: EventsContextType;
463
+ /** */
464
+ "onshow-other-payments-toggled"?: (e: CustomEvent<CustomEvent>) => void;
460
465
  };
461
466
 
462
467
  export type VaultManagerComponentProps = {
@@ -480,6 +485,10 @@ export type VaultManagerComponentProps = {
480
485
  vaultItemContext?: VaultItemContextType;
481
486
  /** */
482
487
  headlessUtils?: HeadlessUtilsContextType;
488
+ /** */
489
+ contextEventsController?: EventsContextType;
490
+ /** */
491
+ "onprimer-vault-payment-error"?: (e: CustomEvent<CustomEvent>) => void;
483
492
  };
484
493
 
485
494
  export type CardFormSubmitComponentProps = {
@@ -1053,8 +1062,16 @@ export type CustomElements = {
1053
1062
  /**
1054
1063
  * Component for showing/hiding other payment methods when vault is present
1055
1064
  * Utilizes the collapsable component for smooth transitions
1065
+ * Supports custom toggle buttons via slots and external control via events
1056
1066
  * ---
1057
1067
  *
1068
+ *
1069
+ * ### **Events:**
1070
+ * - **show-other-payments-toggled**
1071
+ *
1072
+ * ### **Methods:**
1073
+ * - **expand(): _void_** - Public API: Expand the accordion programmatically
1074
+ * - **collapse(): _void_** - Public API: Collapse the accordion programmatically
1058
1075
  */
1059
1076
  "primer-show-other-payments": Partial<ShowOtherPaymentsComponentProps & BaseProps & BaseEvents>;
1060
1077
 
@@ -1062,6 +1079,9 @@ export type CustomElements = {
1062
1079
  * VaultManagerComponent - displays and manages saved payment methods
1063
1080
  * ---
1064
1081
  *
1082
+ *
1083
+ * ### **Events:**
1084
+ * - **primer-vault-payment-error**
1065
1085
  */
1066
1086
  "primer-vault-manager": Partial<VaultManagerComponentProps & BaseProps & BaseEvents>;
1067
1087
 
@@ -111,6 +111,8 @@ declare const PaymentInstrumentType: {
111
111
  readonly KLARNA_CUSTOMER_TOKEN: "KLARNA_CUSTOMER_TOKEN";
112
112
  readonly DLOCAL_PIX: "DLOCAL_PIX";
113
113
  readonly ALMA: "ALMA";
114
+ readonly ADYEN_CASHAPP: "ADYEN_CASHAPP";
115
+ readonly ADYEN_AFFIRM: "ADYEN_AFFIRM";
114
116
  };
115
117
  export type PaymentInstrumentType = (typeof PaymentInstrumentType)[keyof typeof PaymentInstrumentType];
116
118
  declare const PaymentMethodType: {
@@ -255,6 +257,8 @@ declare const PaymentMethodType$1 = {
255
257
  ADYEN_ALIPAY: "ADYEN_ALIPAY",
256
258
  ADYEN_TWINT: "ADYEN_TWINT",
257
259
  ADYEN_BANK_TRANSFER: "ADYEN_BANK_TRANSFER",
260
+ ADYEN_CASHAPP: "ADYEN_CASHAPP",
261
+ ADYEN_AFFIRM: "ADYEN_AFFIRM",
258
262
  MOLLIE_BANCONTACT: "MOLLIE_BANCONTACT",
259
263
  MOLLIE_IDEAL: "MOLLIE_IDEAL",
260
264
  BUCKAROO_GIROPAY: "BUCKAROO_GIROPAY",
@@ -342,6 +346,8 @@ declare const PaymentInstrumentType$1 = {
342
346
  KLARNA_CUSTOMER_TOKEN: "KLARNA_CUSTOMER_TOKEN",
343
347
  DLOCAL_PIX: "DLOCAL_PIX",
344
348
  ALMA: "ALMA",
349
+ ADYEN_CASHAPP: "ADYEN_CASHAPP",
350
+ ADYEN_AFFIRM: "ADYEN_AFFIRM",
345
351
  } as const;
346
352
  type PaymentInstrumentType$1 = (typeof PaymentInstrumentType$1)[keyof typeof PaymentInstrumentType$1];
347
353
  /**
@@ -1974,6 +1980,13 @@ export interface CardSubmitPayload {
1974
1980
  export interface PrimeAchErrorPayload {
1975
1981
  error: Error;
1976
1982
  }
1983
+ export interface VaultSubmitPayload {
1984
+ source?: string;
1985
+ }
1986
+ export interface ShowOtherPaymentsTogglePayload {
1987
+ action?: "toggle" | "expand" | "collapse";
1988
+ source?: string;
1989
+ }
1977
1990
  export interface PrimerEvents {
1978
1991
  "primer:state-change": CustomEvent<SdkStateContextType>;
1979
1992
  "primer:methods-update": CustomEvent<InitializedPayments>;
@@ -2007,6 +2020,8 @@ export interface PrimerEvents {
2007
2020
  vaultedPayments: InitializedVaultedPayments;
2008
2021
  timestamp: number;
2009
2022
  }>;
2023
+ "primer:vault-submit": CustomEvent<VaultSubmitPayload>;
2024
+ "primer:show-other-payments-toggle": CustomEvent<ShowOtherPaymentsTogglePayload>;
2010
2025
  }
2011
2026
  declare class PrimerEventsController implements ReactiveController {
2012
2027
  host: ReactiveControllerHost & LitElement;
@@ -2062,6 +2077,32 @@ declare class PrimerEventsController implements ReactiveController {
2062
2077
  * @param vaultedPayments - Wrapper containing filtered vaulted payment methods
2063
2078
  */
2064
2079
  dispatchVaultMethodsUpdate(vaultedPayments: InitializedVaultedPayments): void;
2080
+ /**
2081
+ * Dispatch vault submit event.
2082
+ * Called when a vault payment submission is triggered.
2083
+ */
2084
+ dispatchVaultSubmit(source?: string): void;
2085
+ /**
2086
+ * Handle external vault submit events and forward them through the event system.
2087
+ * This method provides a centralized way to process external vault submission events
2088
+ * that come from custom buttons or external triggers.
2089
+ *
2090
+ * @param eventDetails - The event details to forward, including source information
2091
+ */
2092
+ handleExternalVaultSubmit(eventDetails: VaultSubmitPayload): void;
2093
+ /**
2094
+ * Dispatch show other payments toggle event.
2095
+ * Called when the "Show other ways to pay" accordion should be toggled.
2096
+ */
2097
+ dispatchShowOtherPaymentsToggle(action?: "toggle" | "expand" | "collapse", source?: string): void;
2098
+ /**
2099
+ * Handle external show other payments toggle events and forward them through the event system.
2100
+ * This method provides a centralized way to process external toggle events
2101
+ * that come from custom buttons or external triggers.
2102
+ *
2103
+ * @param eventDetails - The event details to forward, including action and source information
2104
+ */
2105
+ handleExternalShowOtherPaymentsToggle(eventDetails: ShowOtherPaymentsTogglePayload): void;
2065
2106
  }
2066
2107
  export type AnalyticsContextType = AnalyticsUtils | null;
2067
2108
  export type EventsContextType = PrimerEventsController | null;
@@ -2564,6 +2605,16 @@ export declare class PrimerCheckoutComponent extends LitElement implements Prime
2564
2605
  * Uses AbortController signal to prevent circular event loops more safely
2565
2606
  */
2566
2607
  private handleExternalCardSubmit;
2608
+ /**
2609
+ * Handle external primer:vault-submit events by forwarding them through the events controller
2610
+ * Uses AbortController signal to prevent circular event loops more safely
2611
+ */
2612
+ private handleExternalVaultSubmit;
2613
+ /**
2614
+ * Handle external primer:show-other-payments-toggle events by forwarding them through the events controller
2615
+ * Uses AbortController signal to prevent circular event loops more safely
2616
+ */
2617
+ private handleExternalShowOtherPaymentsToggle;
2567
2618
  /**
2568
2619
  * Check if the loading state has changed and update the CSS loader visibility accordingly.
2569
2620
  * This method is called after each update cycle to detect when loading is complete.
@@ -3012,7 +3063,7 @@ declare class CollapsableComponent extends LitElement {
3012
3063
  /**
3013
3064
  * Internal state to track expanded state
3014
3065
  */
3015
- private isExpanded;
3066
+ isExpanded: boolean;
3016
3067
  /**
3017
3068
  * Hook into the component lifecycle to set the initial expanded state
3018
3069
  */
@@ -3718,6 +3769,7 @@ export interface VaultManagerEvents {
3718
3769
  vaultPaymentError: CustomEvent<{
3719
3770
  error: unknown;
3720
3771
  }>;
3772
+ vaultSubmit: CustomEvent<void>;
3721
3773
  }
3722
3774
  /**
3723
3775
  * Declare the event map for strict typing of events
@@ -3729,6 +3781,7 @@ export interface VaultManagerEventMap {
3729
3781
  "toggle-edit-mode": VaultManagerEvents["toggleEditMode"];
3730
3782
  "close-error": VaultManagerEvents["closeError"];
3731
3783
  "primer-vault-payment-error": VaultManagerEvents["vaultPaymentError"];
3784
+ "primer:vault-submit": VaultManagerEvents["vaultSubmit"];
3732
3785
  }
3733
3786
  /**
3734
3787
  * VaultManagerComponent - displays and manages saved payment methods
@@ -3741,6 +3794,11 @@ declare class VaultManagerComponent extends LitElement {
3741
3794
  vaultManagerContext: VaultManagerContextType;
3742
3795
  vaultItemContext: VaultItemContextType;
3743
3796
  headlessUtils: HeadlessUtilsContextType;
3797
+ contextEventsController: EventsContextType;
3798
+ /**
3799
+ * State to track if slot has content (triggers re-render)
3800
+ */
3801
+ private hasSlottedSubmit;
3744
3802
  /**
3745
3803
  * Whether we're in edit mode
3746
3804
  */
@@ -3761,6 +3819,14 @@ declare class VaultManagerComponent extends LitElement {
3761
3819
  * Animation duration override
3762
3820
  */
3763
3821
  animationDuration: number;
3822
+ /**
3823
+ * Flag to prevent circular event handling
3824
+ */
3825
+ private _isHandlingContextEvent;
3826
+ /**
3827
+ * Context event listener reference
3828
+ */
3829
+ private _contextVaultSubmitListener;
3764
3830
  /**
3765
3831
  * Asset config for the payment method being deleted
3766
3832
  */
@@ -3769,6 +3835,10 @@ declare class VaultManagerComponent extends LitElement {
3769
3835
  * Get base animation configuration with current settings
3770
3836
  */
3771
3837
  private getAnimationConfig;
3838
+ /**
3839
+ * Handle slot change to update hasSlottedSubmit state
3840
+ */
3841
+ private handleSubmitSlotChange;
3772
3842
  /**
3773
3843
  * Toggle edit mode handler
3774
3844
  */
@@ -3793,10 +3863,47 @@ declare class VaultManagerComponent extends LitElement {
3793
3863
  * Handle closing error message
3794
3864
  */
3795
3865
  private handleCloseError;
3866
+ /**
3867
+ * Determines if a button is a submit button based on its attributes
3868
+ */
3869
+ private isSubmitButton;
3870
+ /**
3871
+ * Handles click events from slotted content.
3872
+ * Supports both native <button> and custom <primer-button> elements.
3873
+ */
3874
+ private handleSlotButtonClick;
3875
+ /**
3876
+ * Handles direct primer:vault-submit events
3877
+ */
3878
+ private handleDirectSubmit;
3879
+ /**
3880
+ * Submits the vault payment
3881
+ */
3882
+ private submitVaultPayment;
3796
3883
  /**
3797
3884
  * Get payment method display name for the given ID
3798
3885
  */
3799
3886
  private getPaymentMethodName;
3887
+ /**
3888
+ * Sets up event listeners for context-forwarded events
3889
+ */
3890
+ private setupContextEventListeners;
3891
+ /**
3892
+ * Cleans up context event listeners
3893
+ */
3894
+ private cleanupContextEventListeners;
3895
+ /**
3896
+ * Handles primer:vault-submit events received from the events context
3897
+ */
3898
+ private handleContextVaultSubmit;
3899
+ /**
3900
+ * Lifecycle method called when component is added to the DOM
3901
+ */
3902
+ connectedCallback(): void;
3903
+ /**
3904
+ * Lifecycle method called when component is removed from the DOM
3905
+ */
3906
+ disconnectedCallback(): void;
3800
3907
  /**
3801
3908
  * Render loading overlay with spinner when isUpdating is true
3802
3909
  */
@@ -4760,6 +4867,7 @@ declare global {
4760
4867
  /**
4761
4868
  * Component for showing/hiding other payment methods when vault is present
4762
4869
  * Utilizes the collapsable component for smooth transitions
4870
+ * Supports custom toggle buttons via slots and external control via events
4763
4871
  */
4764
4872
  declare class ShowOtherPaymentsComponent extends LitElement {
4765
4873
  static styles: import("lit").CSSResult[];
@@ -4767,6 +4875,82 @@ declare class ShowOtherPaymentsComponent extends LitElement {
4767
4875
  * Consume the vault manager context to interact with vault state
4768
4876
  */
4769
4877
  vaultManager: VaultManagerContextType;
4878
+ /**
4879
+ * Consume the events context for external control
4880
+ */
4881
+ contextEventsController: EventsContextType;
4882
+ /**
4883
+ * Reference to the collapsable component
4884
+ */
4885
+ protected collapsableElement?: CollapsableComponent;
4886
+ /**
4887
+ * State to track if slot has content (triggers re-render)
4888
+ */
4889
+ private hasSlottedToggle;
4890
+ /**
4891
+ * State to track expanded state when using slotted toggle button
4892
+ */
4893
+ private isExpanded;
4894
+ /**
4895
+ * Flag to prevent circular event handling
4896
+ */
4897
+ private _isHandlingContextEvent;
4898
+ /**
4899
+ * Context event listener reference
4900
+ */
4901
+ private _contextToggleListener;
4902
+ /**
4903
+ * Handle slot change to update hasSlottedToggle state
4904
+ */
4905
+ private handleToggleSlotChange;
4906
+ /**
4907
+ * Determines if a button is a toggle button based on its attributes
4908
+ */
4909
+ private isToggleButton;
4910
+ /**
4911
+ * Handles click events from slotted toggle buttons
4912
+ */
4913
+ private handleSlotButtonClick;
4914
+ /**
4915
+ * Handles direct primer:show-other-payments-toggle events
4916
+ */
4917
+ private handleDirectToggle;
4918
+ /**
4919
+ * Handles primer:show-other-payments-toggle events received from the events context
4920
+ */
4921
+ private handleContextToggle;
4922
+ /**
4923
+ * Toggle the accordion state
4924
+ */
4925
+ private toggleAccordion;
4926
+ /**
4927
+ * Dispatch expanded state changed event
4928
+ */
4929
+ private dispatchExpandedEvent;
4930
+ /**
4931
+ * Public API: Expand the accordion programmatically
4932
+ */
4933
+ expand(): void;
4934
+ /**
4935
+ * Public API: Collapse the accordion programmatically
4936
+ */
4937
+ collapse(): void;
4938
+ /**
4939
+ * Sets up event listeners for context-forwarded events
4940
+ */
4941
+ private setupContextEventListeners;
4942
+ /**
4943
+ * Cleans up context event listeners
4944
+ */
4945
+ private cleanupContextEventListeners;
4946
+ /**
4947
+ * Lifecycle method called when component is added to the DOM
4948
+ */
4949
+ connectedCallback(): void;
4950
+ /**
4951
+ * Lifecycle method called when component is removed from the DOM
4952
+ */
4953
+ disconnectedCallback(): void;
4770
4954
  render(): typeof nothing | import("lit-html").TemplateResult<1>;
4771
4955
  }
4772
4956
  declare global {