@primer-io/primer-js 0.7.3 → 0.8.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.
@@ -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
 
@@ -1974,6 +1974,13 @@ export interface CardSubmitPayload {
1974
1974
  export interface PrimeAchErrorPayload {
1975
1975
  error: Error;
1976
1976
  }
1977
+ export interface VaultSubmitPayload {
1978
+ source?: string;
1979
+ }
1980
+ export interface ShowOtherPaymentsTogglePayload {
1981
+ action?: "toggle" | "expand" | "collapse";
1982
+ source?: string;
1983
+ }
1977
1984
  export interface PrimerEvents {
1978
1985
  "primer:state-change": CustomEvent<SdkStateContextType>;
1979
1986
  "primer:methods-update": CustomEvent<InitializedPayments>;
@@ -2007,6 +2014,8 @@ export interface PrimerEvents {
2007
2014
  vaultedPayments: InitializedVaultedPayments;
2008
2015
  timestamp: number;
2009
2016
  }>;
2017
+ "primer:vault-submit": CustomEvent<VaultSubmitPayload>;
2018
+ "primer:show-other-payments-toggle": CustomEvent<ShowOtherPaymentsTogglePayload>;
2010
2019
  }
2011
2020
  declare class PrimerEventsController implements ReactiveController {
2012
2021
  host: ReactiveControllerHost & LitElement;
@@ -2062,6 +2071,32 @@ declare class PrimerEventsController implements ReactiveController {
2062
2071
  * @param vaultedPayments - Wrapper containing filtered vaulted payment methods
2063
2072
  */
2064
2073
  dispatchVaultMethodsUpdate(vaultedPayments: InitializedVaultedPayments): void;
2074
+ /**
2075
+ * Dispatch vault submit event.
2076
+ * Called when a vault payment submission is triggered.
2077
+ */
2078
+ dispatchVaultSubmit(source?: string): void;
2079
+ /**
2080
+ * Handle external vault submit events and forward them through the event system.
2081
+ * This method provides a centralized way to process external vault submission events
2082
+ * that come from custom buttons or external triggers.
2083
+ *
2084
+ * @param eventDetails - The event details to forward, including source information
2085
+ */
2086
+ handleExternalVaultSubmit(eventDetails: VaultSubmitPayload): void;
2087
+ /**
2088
+ * Dispatch show other payments toggle event.
2089
+ * Called when the "Show other ways to pay" accordion should be toggled.
2090
+ */
2091
+ dispatchShowOtherPaymentsToggle(action?: "toggle" | "expand" | "collapse", source?: string): void;
2092
+ /**
2093
+ * Handle external show other payments toggle events and forward them through the event system.
2094
+ * This method provides a centralized way to process external toggle events
2095
+ * that come from custom buttons or external triggers.
2096
+ *
2097
+ * @param eventDetails - The event details to forward, including action and source information
2098
+ */
2099
+ handleExternalShowOtherPaymentsToggle(eventDetails: ShowOtherPaymentsTogglePayload): void;
2065
2100
  }
2066
2101
  export type AnalyticsContextType = AnalyticsUtils | null;
2067
2102
  export type EventsContextType = PrimerEventsController | null;
@@ -2564,6 +2599,16 @@ export declare class PrimerCheckoutComponent extends LitElement implements Prime
2564
2599
  * Uses AbortController signal to prevent circular event loops more safely
2565
2600
  */
2566
2601
  private handleExternalCardSubmit;
2602
+ /**
2603
+ * Handle external primer:vault-submit events by forwarding them through the events controller
2604
+ * Uses AbortController signal to prevent circular event loops more safely
2605
+ */
2606
+ private handleExternalVaultSubmit;
2607
+ /**
2608
+ * Handle external primer:show-other-payments-toggle events by forwarding them through the events controller
2609
+ * Uses AbortController signal to prevent circular event loops more safely
2610
+ */
2611
+ private handleExternalShowOtherPaymentsToggle;
2567
2612
  /**
2568
2613
  * Check if the loading state has changed and update the CSS loader visibility accordingly.
2569
2614
  * This method is called after each update cycle to detect when loading is complete.
@@ -3012,7 +3057,7 @@ declare class CollapsableComponent extends LitElement {
3012
3057
  /**
3013
3058
  * Internal state to track expanded state
3014
3059
  */
3015
- private isExpanded;
3060
+ isExpanded: boolean;
3016
3061
  /**
3017
3062
  * Hook into the component lifecycle to set the initial expanded state
3018
3063
  */
@@ -3718,6 +3763,7 @@ export interface VaultManagerEvents {
3718
3763
  vaultPaymentError: CustomEvent<{
3719
3764
  error: unknown;
3720
3765
  }>;
3766
+ vaultSubmit: CustomEvent<void>;
3721
3767
  }
3722
3768
  /**
3723
3769
  * Declare the event map for strict typing of events
@@ -3729,6 +3775,7 @@ export interface VaultManagerEventMap {
3729
3775
  "toggle-edit-mode": VaultManagerEvents["toggleEditMode"];
3730
3776
  "close-error": VaultManagerEvents["closeError"];
3731
3777
  "primer-vault-payment-error": VaultManagerEvents["vaultPaymentError"];
3778
+ "primer:vault-submit": VaultManagerEvents["vaultSubmit"];
3732
3779
  }
3733
3780
  /**
3734
3781
  * VaultManagerComponent - displays and manages saved payment methods
@@ -3741,6 +3788,11 @@ declare class VaultManagerComponent extends LitElement {
3741
3788
  vaultManagerContext: VaultManagerContextType;
3742
3789
  vaultItemContext: VaultItemContextType;
3743
3790
  headlessUtils: HeadlessUtilsContextType;
3791
+ contextEventsController: EventsContextType;
3792
+ /**
3793
+ * State to track if slot has content (triggers re-render)
3794
+ */
3795
+ private hasSlottedSubmit;
3744
3796
  /**
3745
3797
  * Whether we're in edit mode
3746
3798
  */
@@ -3761,6 +3813,14 @@ declare class VaultManagerComponent extends LitElement {
3761
3813
  * Animation duration override
3762
3814
  */
3763
3815
  animationDuration: number;
3816
+ /**
3817
+ * Flag to prevent circular event handling
3818
+ */
3819
+ private _isHandlingContextEvent;
3820
+ /**
3821
+ * Context event listener reference
3822
+ */
3823
+ private _contextVaultSubmitListener;
3764
3824
  /**
3765
3825
  * Asset config for the payment method being deleted
3766
3826
  */
@@ -3769,6 +3829,10 @@ declare class VaultManagerComponent extends LitElement {
3769
3829
  * Get base animation configuration with current settings
3770
3830
  */
3771
3831
  private getAnimationConfig;
3832
+ /**
3833
+ * Handle slot change to update hasSlottedSubmit state
3834
+ */
3835
+ private handleSubmitSlotChange;
3772
3836
  /**
3773
3837
  * Toggle edit mode handler
3774
3838
  */
@@ -3793,10 +3857,47 @@ declare class VaultManagerComponent extends LitElement {
3793
3857
  * Handle closing error message
3794
3858
  */
3795
3859
  private handleCloseError;
3860
+ /**
3861
+ * Determines if a button is a submit button based on its attributes
3862
+ */
3863
+ private isSubmitButton;
3864
+ /**
3865
+ * Handles click events from slotted content.
3866
+ * Supports both native <button> and custom <primer-button> elements.
3867
+ */
3868
+ private handleSlotButtonClick;
3869
+ /**
3870
+ * Handles direct primer:vault-submit events
3871
+ */
3872
+ private handleDirectSubmit;
3873
+ /**
3874
+ * Submits the vault payment
3875
+ */
3876
+ private submitVaultPayment;
3796
3877
  /**
3797
3878
  * Get payment method display name for the given ID
3798
3879
  */
3799
3880
  private getPaymentMethodName;
3881
+ /**
3882
+ * Sets up event listeners for context-forwarded events
3883
+ */
3884
+ private setupContextEventListeners;
3885
+ /**
3886
+ * Cleans up context event listeners
3887
+ */
3888
+ private cleanupContextEventListeners;
3889
+ /**
3890
+ * Handles primer:vault-submit events received from the events context
3891
+ */
3892
+ private handleContextVaultSubmit;
3893
+ /**
3894
+ * Lifecycle method called when component is added to the DOM
3895
+ */
3896
+ connectedCallback(): void;
3897
+ /**
3898
+ * Lifecycle method called when component is removed from the DOM
3899
+ */
3900
+ disconnectedCallback(): void;
3800
3901
  /**
3801
3902
  * Render loading overlay with spinner when isUpdating is true
3802
3903
  */
@@ -4760,6 +4861,7 @@ declare global {
4760
4861
  /**
4761
4862
  * Component for showing/hiding other payment methods when vault is present
4762
4863
  * Utilizes the collapsable component for smooth transitions
4864
+ * Supports custom toggle buttons via slots and external control via events
4763
4865
  */
4764
4866
  declare class ShowOtherPaymentsComponent extends LitElement {
4765
4867
  static styles: import("lit").CSSResult[];
@@ -4767,6 +4869,82 @@ declare class ShowOtherPaymentsComponent extends LitElement {
4767
4869
  * Consume the vault manager context to interact with vault state
4768
4870
  */
4769
4871
  vaultManager: VaultManagerContextType;
4872
+ /**
4873
+ * Consume the events context for external control
4874
+ */
4875
+ contextEventsController: EventsContextType;
4876
+ /**
4877
+ * Reference to the collapsable component
4878
+ */
4879
+ protected collapsableElement?: CollapsableComponent;
4880
+ /**
4881
+ * State to track if slot has content (triggers re-render)
4882
+ */
4883
+ private hasSlottedToggle;
4884
+ /**
4885
+ * State to track expanded state when using slotted toggle button
4886
+ */
4887
+ private isExpanded;
4888
+ /**
4889
+ * Flag to prevent circular event handling
4890
+ */
4891
+ private _isHandlingContextEvent;
4892
+ /**
4893
+ * Context event listener reference
4894
+ */
4895
+ private _contextToggleListener;
4896
+ /**
4897
+ * Handle slot change to update hasSlottedToggle state
4898
+ */
4899
+ private handleToggleSlotChange;
4900
+ /**
4901
+ * Determines if a button is a toggle button based on its attributes
4902
+ */
4903
+ private isToggleButton;
4904
+ /**
4905
+ * Handles click events from slotted toggle buttons
4906
+ */
4907
+ private handleSlotButtonClick;
4908
+ /**
4909
+ * Handles direct primer:show-other-payments-toggle events
4910
+ */
4911
+ private handleDirectToggle;
4912
+ /**
4913
+ * Handles primer:show-other-payments-toggle events received from the events context
4914
+ */
4915
+ private handleContextToggle;
4916
+ /**
4917
+ * Toggle the accordion state
4918
+ */
4919
+ private toggleAccordion;
4920
+ /**
4921
+ * Dispatch expanded state changed event
4922
+ */
4923
+ private dispatchExpandedEvent;
4924
+ /**
4925
+ * Public API: Expand the accordion programmatically
4926
+ */
4927
+ expand(): void;
4928
+ /**
4929
+ * Public API: Collapse the accordion programmatically
4930
+ */
4931
+ collapse(): void;
4932
+ /**
4933
+ * Sets up event listeners for context-forwarded events
4934
+ */
4935
+ private setupContextEventListeners;
4936
+ /**
4937
+ * Cleans up context event listeners
4938
+ */
4939
+ private cleanupContextEventListeners;
4940
+ /**
4941
+ * Lifecycle method called when component is added to the DOM
4942
+ */
4943
+ connectedCallback(): void;
4944
+ /**
4945
+ * Lifecycle method called when component is removed from the DOM
4946
+ */
4947
+ disconnectedCallback(): void;
4770
4948
  render(): typeof nothing | import("lit-html").TemplateResult<1>;
4771
4949
  }
4772
4950
  declare global {