rebill-web-components-sdk 1.8.22 → 1.8.24
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.
- package/dist/cjs/apm-checkout_19.cjs.entry.js +11 -5
- package/dist/cjs/card-identification.card-iframe.card-skeleton.rebill-input-combo.rebill-installments.entry.cjs.js.map +1 -1
- package/dist/cjs/card-identification_5.cjs.entry.js +1 -1
- package/dist/cjs/index-C-VTnc0I.js.map +1 -1
- package/dist/cjs/otp-component.rebill-modal-overlay.rebill-mode-sandbox.rebill-mode-sandbox-mobile.rebill-summary.success-page.user-information.entry.cjs.js.map +1 -1
- package/dist/cjs/otp-component_7.cjs.entry.js +1 -1
- package/dist/cjs/rebill-container.rebill-input-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/rebill-container_2.cjs.entry.js +1 -1
- package/dist/cjs/rebill-input-select.cjs.entry.js +1 -1
- package/dist/cjs/rebill-input-select.entry.cjs.js.map +1 -1
- package/dist/cjs/rebill-input-text.cjs.entry.js +1 -1
- package/dist/cjs/rebill-input-text.entry.cjs.js.map +1 -1
- package/dist/collection/components/checkout/address/address.js +10 -4
- package/dist/collection/components/checkout/address/address.js.map +1 -1
- package/dist/collection/components/shared/inputs/input-checkbox/input-checkbox.css +11 -0
- package/dist/collection/components/shared/inputs/input-combo/input-combo.css +30 -0
- package/dist/collection/components/shared/inputs/input-phone/input-phone.css +39 -1
- package/dist/collection/components/shared/inputs/input-select/input-select.css +42 -0
- package/dist/collection/components/shared/inputs/input-text/input-text.css +11 -0
- package/dist/collection/components/shared/modal-overlay/modal-overlay.css +11 -4
- package/dist/components/card-fields-wrapper.js +1 -1
- package/dist/components/card-identification.js +1 -1
- package/dist/components/discount-coupon.js +1 -1
- package/dist/components/{p-Mgbx0b10.js → p--RloWBLk.js} +3 -3
- package/dist/components/{p-Mgbx0b10.js.map → p--RloWBLk.js.map} +1 -1
- package/dist/components/{p-B8GIr65u.js → p--gCxFWo3.js} +7 -7
- package/dist/components/{p-B8GIr65u.js.map → p--gCxFWo3.js.map} +1 -1
- package/dist/components/p-8BpuJ_V5.js.map +1 -1
- package/dist/components/{p-DVmistTq.js → p-BIHeH7ht.js} +3 -3
- package/dist/components/{p-DVmistTq.js.map → p-BIHeH7ht.js.map} +1 -1
- package/dist/components/{p-DStRg6vz.js → p-BJHx0OQj.js} +3 -3
- package/dist/components/{p-DStRg6vz.js.map → p-BJHx0OQj.js.map} +1 -1
- package/dist/components/{p-BgJ9ZORq.js → p-BZj9nSOY.js} +3 -3
- package/dist/components/{p-BgJ9ZORq.js.map → p-BZj9nSOY.js.map} +1 -1
- package/dist/components/{p-c9SkZ__E.js → p-Bb1L1oJK.js} +3 -3
- package/dist/components/{p-c9SkZ__E.js.map → p-Bb1L1oJK.js.map} +1 -1
- package/dist/components/{p-zU9a56AF.js → p-BeNxLLvH.js} +3 -3
- package/dist/components/{p-zU9a56AF.js.map → p-BeNxLLvH.js.map} +1 -1
- package/dist/components/{p-D9Eow84L.js → p-BnUMlZY9.js} +4 -4
- package/dist/components/{p-D9Eow84L.js.map → p-BnUMlZY9.js.map} +1 -1
- package/dist/components/{p-CWdTbodL.js → p-Bw7Jq0SL.js} +3 -3
- package/dist/components/{p-CWdTbodL.js.map → p-Bw7Jq0SL.js.map} +1 -1
- package/dist/components/{p-DTjDV-2m.js → p-BxXWkB7L.js} +6 -6
- package/dist/components/{p-DTjDV-2m.js.map → p-BxXWkB7L.js.map} +1 -1
- package/dist/components/{p-8eukGNL9.js → p-C2gtk16s.js} +3 -3
- package/dist/components/{p-8eukGNL9.js.map → p-C2gtk16s.js.map} +1 -1
- package/dist/components/{p-D2wX2Bnk.js → p-C4TcKKa8.js} +4 -4
- package/dist/components/{p-D2wX2Bnk.js.map → p-C4TcKKa8.js.map} +1 -1
- package/dist/components/{p-CHUzEc6D.js → p-C8lHS2ZV.js} +5 -5
- package/dist/components/{p-CHUzEc6D.js.map → p-C8lHS2ZV.js.map} +1 -1
- package/dist/components/{p-DQIG3sUQ.js → p-CH8Qt-7B.js} +3 -3
- package/dist/components/{p-DQIG3sUQ.js.map → p-CH8Qt-7B.js.map} +1 -1
- package/dist/components/{p-CN4bVlrI.js → p-CK6dlS5z.js} +5 -5
- package/dist/components/{p-CN4bVlrI.js.map → p-CK6dlS5z.js.map} +1 -1
- package/dist/components/{p-s8WhwKwq.js → p-CVQ9SnQp.js} +16 -10
- package/dist/components/p-CVQ9SnQp.js.map +1 -0
- package/dist/components/{p-6aqJA2NI.js → p-CYC_SbCo.js} +3 -3
- package/dist/components/{p-6aqJA2NI.js.map → p-CYC_SbCo.js.map} +1 -1
- package/dist/components/{p-y5rBN7LS.js → p-Coc_KFqp.js} +4 -4
- package/dist/components/{p-y5rBN7LS.js.map → p-Coc_KFqp.js.map} +1 -1
- package/dist/components/{p-ti0gvUO5.js → p-CpCPsj5Y.js} +3 -3
- package/dist/components/{p-ti0gvUO5.js.map → p-CpCPsj5Y.js.map} +1 -1
- package/dist/components/{p-DuW9_9Co.js → p-Cqrdj1mj.js} +3 -3
- package/dist/components/{p-DuW9_9Co.js.map → p-Cqrdj1mj.js.map} +1 -1
- package/dist/components/{p-B9fIqz0z.js → p-DSnJHRr3.js} +3 -3
- package/dist/components/{p-B9fIqz0z.js.map → p-DSnJHRr3.js.map} +1 -1
- package/dist/components/{p-BpkqlhjE.js → p-DUxs56Lj.js} +3 -3
- package/dist/components/{p-BpkqlhjE.js.map → p-DUxs56Lj.js.map} +1 -1
- package/dist/components/{p-DLh7v0Ng.js → p-Dzeq5BdH.js} +5 -5
- package/dist/components/{p-DLh7v0Ng.js.map → p-Dzeq5BdH.js.map} +1 -1
- package/dist/components/payment-method-selector.js +1 -1
- package/dist/components/rebill-address-form.js +1 -1
- package/dist/components/rebill-address-search.js +1 -1
- package/dist/components/rebill-address.js +1 -1
- package/dist/components/rebill-bank-selector.js +1 -1
- package/dist/components/rebill-checkout-single-column.js +1 -1
- package/dist/components/rebill-checkout.js +21 -21
- package/dist/components/rebill-footer.js +1 -1
- package/dist/components/rebill-input-checkbox.js +1 -1
- package/dist/components/rebill-input-combo.js +1 -1
- package/dist/components/rebill-input-phone.js +1 -1
- package/dist/components/rebill-input-select.js +1 -1
- package/dist/components/rebill-input-text.js +1 -1
- package/dist/components/rebill-installments.js +1 -1
- package/dist/components/rebill-modal-overlay.js +1 -1
- package/dist/components/rebill-processing-payment.js +1 -1
- package/dist/components/rebill-renewal.js +17 -17
- package/dist/components/rebill-summary.js +1 -1
- package/dist/components/renewal-success-page.js +1 -1
- package/dist/components/root-component.js +3 -3
- package/dist/components/success-page.js +1 -1
- package/dist/components/user-information-phone.js +1 -1
- package/dist/components/user-information.js +1 -1
- package/dist/esm/apm-checkout_19.entry.js +11 -5
- package/dist/esm/card-identification.card-iframe.card-skeleton.rebill-input-combo.rebill-installments.entry.js.map +1 -1
- package/dist/esm/card-identification_5.entry.js +1 -1
- package/dist/esm/index-D8cwEAmw.js.map +1 -1
- package/dist/esm/otp-component.rebill-modal-overlay.rebill-mode-sandbox.rebill-mode-sandbox-mobile.rebill-summary.success-page.user-information.entry.js.map +1 -1
- package/dist/esm/otp-component_7.entry.js +1 -1
- package/dist/esm/rebill-container.rebill-input-checkbox.entry.js.map +1 -1
- package/dist/esm/rebill-container_2.entry.js +1 -1
- package/dist/esm/rebill-input-select.entry.js +1 -1
- package/dist/esm/rebill-input-select.entry.js.map +1 -1
- package/dist/esm/rebill-input-text.entry.js +1 -1
- package/dist/esm/rebill-input-text.entry.js.map +1 -1
- package/dist/rebill-web-components-sdk/card-identification.card-iframe.card-skeleton.rebill-input-combo.rebill-installments.entry.esm.js.map +1 -1
- package/dist/rebill-web-components-sdk/otp-component.rebill-modal-overlay.rebill-mode-sandbox.rebill-mode-sandbox-mobile.rebill-summary.success-page.user-information.entry.esm.js.map +1 -1
- package/dist/rebill-web-components-sdk/{p-fc6b9d89.entry.js → p-1bbc702a.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/{p-fc6b9d89.entry.js.map → p-1bbc702a.entry.js.map} +1 -1
- package/dist/rebill-web-components-sdk/p-2354c848.entry.js +2 -0
- package/dist/rebill-web-components-sdk/{p-33238246.entry.js.map → p-2354c848.entry.js.map} +1 -1
- package/dist/rebill-web-components-sdk/p-61e86126.entry.js +2 -0
- package/dist/rebill-web-components-sdk/{p-c7c48b15.entry.js.map → p-61e86126.entry.js.map} +1 -1
- package/dist/rebill-web-components-sdk/p-7b33865e.entry.js +2 -0
- package/dist/rebill-web-components-sdk/p-7b33865e.entry.js.map +1 -0
- package/dist/rebill-web-components-sdk/p-D8cwEAmw.js.map +1 -1
- package/dist/rebill-web-components-sdk/p-ca2882ea.entry.js +2 -0
- package/dist/rebill-web-components-sdk/{p-a758a555.entry.js.map → p-ca2882ea.entry.js.map} +1 -1
- package/dist/rebill-web-components-sdk/{p-d7eaf879.entry.js → p-f3afcd86.entry.js} +2 -2
- package/dist/rebill-web-components-sdk/{p-d7eaf879.entry.js.map → p-f3afcd86.entry.js.map} +1 -1
- package/dist/rebill-web-components-sdk/rebill-container.rebill-input-checkbox.entry.esm.js.map +1 -1
- package/dist/rebill-web-components-sdk/rebill-input-select.entry.esm.js.map +1 -1
- package/dist/rebill-web-components-sdk/rebill-input-text.entry.esm.js.map +1 -1
- package/dist/rebill-web-components-sdk/rebill-web-components-sdk.esm.js +1 -1
- package/package.json +1 -1
- package/dist/components/p-s8WhwKwq.js.map +0 -1
- package/dist/rebill-web-components-sdk/p-33238246.entry.js +0 -2
- package/dist/rebill-web-components-sdk/p-6bcff3c5.entry.js +0 -2
- package/dist/rebill-web-components-sdk/p-6bcff3c5.entry.js.map +0 -1
- package/dist/rebill-web-components-sdk/p-a758a555.entry.js +0 -2
- package/dist/rebill-web-components-sdk/p-c7c48b15.entry.js +0 -2
|
@@ -73,6 +73,17 @@ select.input-element:disabled {
|
|
|
73
73
|
margin-top: 0.375rem;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
/* Fix para evitar zoom en dispositivos móviles */
|
|
77
|
+
@media screen and (max-width: 768px) {
|
|
78
|
+
.input-element {
|
|
79
|
+
font-size: 1rem;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.input-element::placeholder {
|
|
83
|
+
font-size: 1rem;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
76
87
|
|
|
77
88
|
:host {
|
|
78
89
|
display: block;
|
|
@@ -401,3 +412,34 @@ select.input-element:disabled {
|
|
|
401
412
|
transform: rotate(360deg);
|
|
402
413
|
}
|
|
403
414
|
}
|
|
415
|
+
|
|
416
|
+
/* Fix para evitar zoom en dispositivos móviles */
|
|
417
|
+
@media screen and (max-width: 768px) {
|
|
418
|
+
.select-trigger {
|
|
419
|
+
font-size: 1rem;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
.select-trigger.placeholder .select-value {
|
|
423
|
+
font-size: 1rem;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.select-option {
|
|
427
|
+
font-size: 1rem;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.search-input {
|
|
431
|
+
font-size: 1rem;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.search-input::placeholder {
|
|
435
|
+
font-size: 1rem;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
.loading-message {
|
|
439
|
+
font-size: 1rem;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
.no-results {
|
|
443
|
+
font-size: 1rem;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
@@ -73,6 +73,17 @@ select.input-element:disabled {
|
|
|
73
73
|
margin-top: 0.375rem;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
/* Fix para evitar zoom en dispositivos móviles */
|
|
77
|
+
@media screen and (max-width: 768px) {
|
|
78
|
+
.input-element {
|
|
79
|
+
font-size: 1rem;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.input-element::placeholder {
|
|
83
|
+
font-size: 1rem;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
76
87
|
|
|
77
88
|
.input-wrapper {
|
|
78
89
|
position: relative;
|
|
@@ -92,12 +92,19 @@
|
|
|
92
92
|
|
|
93
93
|
.modal-content {
|
|
94
94
|
padding: 12px 16px;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
width: 100%;
|
|
96
|
+
max-width: 350px;
|
|
97
|
+
flex-direction: row;
|
|
98
|
+
gap: 12px;
|
|
99
|
+
text-align: left;
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
.modal-content .close-button {
|
|
101
|
-
|
|
103
|
+
position: absolute;
|
|
104
|
+
top: 8px;
|
|
105
|
+
right: 8px;
|
|
106
|
+
width: 20px;
|
|
107
|
+
height: 20px;
|
|
108
|
+
flex-shrink: 0;
|
|
102
109
|
}
|
|
103
110
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as CardFieldsWrapper$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { C as CardFieldsWrapper$1, d as defineCustomElement$1 } from './p-BxXWkB7L.js';
|
|
2
2
|
|
|
3
3
|
const CardFieldsWrapper = CardFieldsWrapper$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -2,7 +2,7 @@ import { proxyCustomElement, H, createEvent, h } from './p-8BpuJ_V5.js';
|
|
|
2
2
|
import { s as state, a as SessionStore, I as I18nService } from './p-DEZl2gyc.js';
|
|
3
3
|
import { C as COLORS_ENUM } from './p-DA598vBj.js';
|
|
4
4
|
import { d as defineCustomElement$3 } from './p-BSay3C61.js';
|
|
5
|
-
import { d as defineCustomElement$2 } from './p-
|
|
5
|
+
import { d as defineCustomElement$2 } from './p-BJHx0OQj.js';
|
|
6
6
|
import { d as defineCustomElement$1 } from './p-C_txMekS.js';
|
|
7
7
|
|
|
8
8
|
class GoogleMapsService {
|
|
@@ -232,6 +232,6 @@ function defineCustomElement() {
|
|
|
232
232
|
defineCustomElement();
|
|
233
233
|
|
|
234
234
|
export { AddressSearch as A, GoogleMapsService as G, defineCustomElement as d };
|
|
235
|
-
//# sourceMappingURL=p
|
|
235
|
+
//# sourceMappingURL=p--RloWBLk.js.map
|
|
236
236
|
|
|
237
|
-
//# sourceMappingURL=p
|
|
237
|
+
//# sourceMappingURL=p--RloWBLk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-Mgbx0b10.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/utils/google-maps.service.ts","src/components/checkout/address/address-search/address-search.css?tag=rebill-address-search","src/components/checkout/address/address-search/address-search.tsx"],"sourcesContent":["export interface AddressComponents {\n address: string;\n city: string;\n state: string;\n country: string;\n zip: string;\n}\n\nexport class GoogleMapsService {\n private static instance: GoogleMapsService;\n private isLoaded: boolean = false;\n private loadPromise: Promise<boolean> | null = null;\n\n static getInstance(): GoogleMapsService {\n if (!GoogleMapsService.instance) {\n GoogleMapsService.instance = new GoogleMapsService();\n }\n return GoogleMapsService.instance;\n }\n\n async waitForAPI(): Promise<boolean> {\n if (this.isLoaded && window.google?.maps?.places) {\n return true;\n }\n\n if (this.loadPromise) {\n return this.loadPromise;\n }\n\n this.loadPromise = new Promise(resolve => {\n let attempts = 0;\n const maxAttempts = 100; // 10 seconds max wait\n\n const checkAPI = () => {\n attempts++;\n\n if (window.google?.maps?.places) {\n this.isLoaded = true;\n resolve(true);\n } else if (attempts >= maxAttempts) {\n console.error('Google Maps API failed to load within timeout');\n resolve(false);\n } else {\n setTimeout(checkAPI, 100);\n }\n };\n checkAPI();\n });\n\n return this.loadPromise;\n }\n\n async createAutocomplete(\n inputElement: HTMLInputElement,\n onPlaceSelected: (address: AddressComponents) => void,\n ): Promise<google.maps.places.Autocomplete | null> {\n const isReady = await this.waitForAPI();\n if (!isReady) {\n console.error('Google Maps API not available');\n return null;\n }\n\n try {\n const autocomplete = new google.maps.places.Autocomplete(inputElement, {\n types: ['address'],\n fields: ['address_components', 'formatted_address', 'geometry'],\n });\n\n autocomplete.addListener('place_changed', () => {\n const place = autocomplete.getPlace();\n\n if (place?.address_components) {\n const address = this.parseAddressComponents(place.address_components);\n onPlaceSelected(address);\n }\n });\n\n return autocomplete;\n } catch (error) {\n console.error('Failed to create Google Maps autocomplete:', error);\n return null;\n }\n }\n\n private parseAddressComponents(\n components: google.maps.GeocoderAddressComponent[],\n ): AddressComponents {\n const getComponent = (type: string, useShortName = false) => {\n const component = components.find(c => c.types.includes(type));\n return component ? (useShortName ? component.short_name : component.long_name) : '';\n };\n\n const streetNumber = getComponent('street_number');\n const route = getComponent('route');\n\n return {\n address: `${streetNumber} ${route}`.trim(),\n city: getComponent('locality'),\n state: getComponent('administrative_area_level_1'),\n country: getComponent('country', true),\n zip: getComponent('postal_code'),\n };\n }\n\n static loadGoogleMapsScript(googleMapsApiKey?: string) {\n // Use hardcoded API key for SDK\n const apiKey = googleMapsApiKey || 'AIzaSyCViTfaoMntRf7oYbAfPZv8hbrNnOWHjQM';\n\n if (!apiKey) {\n console.warn('Google Maps API key not provided. Address autocomplete will not be available.');\n return;\n }\n\n // Check if script is already loaded\n if (document.querySelector('script[src*=\"maps.googleapis.com\"]')) {\n return;\n }\n\n const script = document.createElement('script');\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&loading=async&callback=initGoogleMaps`;\n script.async = true;\n script.defer = true;\n\n // Add global callback for when Google Maps is ready\n (window as any).initGoogleMaps = () => {\n delete (window as any).initGoogleMaps; // Clean up\n };\n\n script.onerror = () => {\n console.error(\n 'Failed to load Google Maps script. Please check your API key and network connection.',\n );\n };\n\n document.head.appendChild(script);\n }\n}\n",":host {\n display: block;\n}\n\n.address-search-container {\n width: 100%;\n margin-bottom: 24px;\n}\n\n.search-input-container {\n margin-bottom: 8px;\n}\n\n.manual-entry-link-wrapper {\n display: flex;\n justify-content: flex-start;\n}\n\n.manual-entry-link {\n background: none;\n border: none;\n color: var(--rebill-color-text-secondary);\n cursor: pointer;\n font-size: 14px;\n padding: 4px 0;\n text-decoration: underline;\n}\n\n.manual-entry-link:hover {\n text-decoration-color: var(--rebill-color-text-secondary);\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { sessionState, SessionStore } from '../../../../store/session.store';\nimport { AddressComponents, GoogleMapsService } from '../../../../utils';\nimport { COLORS_ENUM } from '../../../../utils/color-class-mapper';\n\n@Component({\n tag: 'rebill-address-search',\n styleUrl: 'address-search.css',\n shadow: false,\n})\nexport class AddressSearch {\n @Element() el: HTMLElement;\n @State() isInitialized = false;\n @State() currentLocale: string = sessionState.currentLocale;\n\n @Prop() addressType: 'billing' | 'shipping' = 'billing';\n @Prop() placeholder?: string;\n @Prop() error?: string;\n @Prop() disabled: boolean = false;\n\n @Event() addressSelected: EventEmitter<AddressComponents>;\n @Event() manualEntryRequested: EventEmitter<void>;\n\n private googleMapsService = GoogleMapsService.getInstance();\n private autocomplete: google.maps.places.Autocomplete | null = null;\n private unsubscribeCurrentLocaleStore?: () => void;\n\n async componentDidLoad() {\n await this.initializeAutocomplete();\n\n // Listen for language changes\n this.unsubscribeCurrentLocaleStore = SessionStore.onChange('currentLocale', () => {\n this.currentLocale = sessionState.currentLocale;\n });\n }\n\n disconnectedCallback() {\n this.cleanup();\n\n if (this.unsubscribeCurrentLocaleStore) {\n this.unsubscribeCurrentLocaleStore();\n }\n }\n\n private async initializeAutocomplete() {\n if (this.isInitialized) return;\n\n try {\n const inputElement = await this.getInputElement();\n if (!inputElement) return;\n\n this.autocomplete = await this.googleMapsService.createAutocomplete(\n inputElement,\n (address: AddressComponents) => this.handleAddressSelected(address),\n );\n if (this.autocomplete) {\n this.isInitialized = true;\n }\n } catch (error) {\n console.error(`Failed to initialize ${this.addressType} autocomplete:`, error);\n }\n }\n\n private async getInputElement(): Promise<HTMLInputElement | null> {\n const inputComponent = this.el?.querySelector('rebill-input-text') as any;\n if (!inputComponent) {\n console.error(`Input component not found for ${this.addressType}-search`);\n return null;\n }\n\n try {\n return await inputComponent.getInputElement();\n } catch (error) {\n console.error(`Failed to get input element:`, error);\n return null;\n }\n }\n\n private handleAddressSelected(address: AddressComponents) {\n this.addressSelected.emit(address);\n }\n\n private handleManualEntry = () => {\n this.manualEntryRequested.emit();\n };\n\n private cleanup() {\n if (this.autocomplete) {\n this.autocomplete = null;\n }\n this.isInitialized = false;\n }\n\n render() {\n const translationKey = this.addressType === 'shipping' ? 'shippingAddress' : 'billingAddress';\n const defaultPlaceholder = I18nService.translate(\n `${translationKey}.searchPlaceholder`,\n 'Search for an address...',\n );\n\n return (\n <div class=\"address-search-container\">\n <div class=\"search-input-container\">\n <rebill-input-text\n id={`${this.addressType}-search`}\n placeholder={this.placeholder || defaultPlaceholder}\n rightIcon=\"search\"\n error={this.error}\n disabled={this.disabled}\n />\n </div>\n <div class=\"manual-entry-link-wrapper\">\n <button class=\"manual-entry-link\" type=\"button\" onClick={this.handleManualEntry}>\n <rebill-typography\n variant=\"subtitle2\"\n color={COLORS_ENUM.SECONDARY}\n class=\"footer-link\"\n >\n {I18nService.translate(`${translationKey}.manualEntry`, 'Enter address manually')}\n </rebill-typography>\n </button>\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p--RloWBLk.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/utils/google-maps.service.ts","src/components/checkout/address/address-search/address-search.css?tag=rebill-address-search","src/components/checkout/address/address-search/address-search.tsx"],"sourcesContent":["export interface AddressComponents {\n address: string;\n city: string;\n state: string;\n country: string;\n zip: string;\n}\n\nexport class GoogleMapsService {\n private static instance: GoogleMapsService;\n private isLoaded: boolean = false;\n private loadPromise: Promise<boolean> | null = null;\n\n static getInstance(): GoogleMapsService {\n if (!GoogleMapsService.instance) {\n GoogleMapsService.instance = new GoogleMapsService();\n }\n return GoogleMapsService.instance;\n }\n\n async waitForAPI(): Promise<boolean> {\n if (this.isLoaded && window.google?.maps?.places) {\n return true;\n }\n\n if (this.loadPromise) {\n return this.loadPromise;\n }\n\n this.loadPromise = new Promise(resolve => {\n let attempts = 0;\n const maxAttempts = 100; // 10 seconds max wait\n\n const checkAPI = () => {\n attempts++;\n\n if (window.google?.maps?.places) {\n this.isLoaded = true;\n resolve(true);\n } else if (attempts >= maxAttempts) {\n console.error('Google Maps API failed to load within timeout');\n resolve(false);\n } else {\n setTimeout(checkAPI, 100);\n }\n };\n checkAPI();\n });\n\n return this.loadPromise;\n }\n\n async createAutocomplete(\n inputElement: HTMLInputElement,\n onPlaceSelected: (address: AddressComponents) => void,\n ): Promise<google.maps.places.Autocomplete | null> {\n const isReady = await this.waitForAPI();\n if (!isReady) {\n console.error('Google Maps API not available');\n return null;\n }\n\n try {\n const autocomplete = new google.maps.places.Autocomplete(inputElement, {\n types: ['address'],\n fields: ['address_components', 'formatted_address', 'geometry'],\n });\n\n autocomplete.addListener('place_changed', () => {\n const place = autocomplete.getPlace();\n\n if (place?.address_components) {\n const address = this.parseAddressComponents(place.address_components);\n onPlaceSelected(address);\n }\n });\n\n return autocomplete;\n } catch (error) {\n console.error('Failed to create Google Maps autocomplete:', error);\n return null;\n }\n }\n\n private parseAddressComponents(\n components: google.maps.GeocoderAddressComponent[],\n ): AddressComponents {\n const getComponent = (type: string, useShortName = false) => {\n const component = components.find(c => c.types.includes(type));\n return component ? (useShortName ? component.short_name : component.long_name) : '';\n };\n\n const streetNumber = getComponent('street_number');\n const route = getComponent('route');\n\n return {\n address: `${streetNumber} ${route}`.trim(),\n city: getComponent('locality'),\n state: getComponent('administrative_area_level_1'),\n country: getComponent('country', true),\n zip: getComponent('postal_code'),\n };\n }\n\n static loadGoogleMapsScript(googleMapsApiKey?: string) {\n // Use hardcoded API key for SDK\n const apiKey = googleMapsApiKey || 'AIzaSyCViTfaoMntRf7oYbAfPZv8hbrNnOWHjQM';\n\n if (!apiKey) {\n console.warn('Google Maps API key not provided. Address autocomplete will not be available.');\n return;\n }\n\n // Check if script is already loaded\n if (document.querySelector('script[src*=\"maps.googleapis.com\"]')) {\n return;\n }\n\n const script = document.createElement('script');\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&loading=async&callback=initGoogleMaps`;\n script.async = true;\n script.defer = true;\n\n // Add global callback for when Google Maps is ready\n (window as any).initGoogleMaps = () => {\n delete (window as any).initGoogleMaps; // Clean up\n };\n\n script.onerror = () => {\n console.error(\n 'Failed to load Google Maps script. Please check your API key and network connection.',\n );\n };\n\n document.head.appendChild(script);\n }\n}\n",":host {\n display: block;\n}\n\n.address-search-container {\n width: 100%;\n margin-bottom: 24px;\n}\n\n.search-input-container {\n margin-bottom: 8px;\n}\n\n.manual-entry-link-wrapper {\n display: flex;\n justify-content: flex-start;\n}\n\n.manual-entry-link {\n background: none;\n border: none;\n color: var(--rebill-color-text-secondary);\n cursor: pointer;\n font-size: 14px;\n padding: 4px 0;\n text-decoration: underline;\n}\n\n.manual-entry-link:hover {\n text-decoration-color: var(--rebill-color-text-secondary);\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { sessionState, SessionStore } from '../../../../store/session.store';\nimport { AddressComponents, GoogleMapsService } from '../../../../utils';\nimport { COLORS_ENUM } from '../../../../utils/color-class-mapper';\n\n@Component({\n tag: 'rebill-address-search',\n styleUrl: 'address-search.css',\n shadow: false,\n})\nexport class AddressSearch {\n @Element() el: HTMLElement;\n @State() isInitialized = false;\n @State() currentLocale: string = sessionState.currentLocale;\n\n @Prop() addressType: 'billing' | 'shipping' = 'billing';\n @Prop() placeholder?: string;\n @Prop() error?: string;\n @Prop() disabled: boolean = false;\n\n @Event() addressSelected: EventEmitter<AddressComponents>;\n @Event() manualEntryRequested: EventEmitter<void>;\n\n private googleMapsService = GoogleMapsService.getInstance();\n private autocomplete: google.maps.places.Autocomplete | null = null;\n private unsubscribeCurrentLocaleStore?: () => void;\n\n async componentDidLoad() {\n await this.initializeAutocomplete();\n\n // Listen for language changes\n this.unsubscribeCurrentLocaleStore = SessionStore.onChange('currentLocale', () => {\n this.currentLocale = sessionState.currentLocale;\n });\n }\n\n disconnectedCallback() {\n this.cleanup();\n\n if (this.unsubscribeCurrentLocaleStore) {\n this.unsubscribeCurrentLocaleStore();\n }\n }\n\n private async initializeAutocomplete() {\n if (this.isInitialized) return;\n\n try {\n const inputElement = await this.getInputElement();\n if (!inputElement) return;\n\n this.autocomplete = await this.googleMapsService.createAutocomplete(\n inputElement,\n (address: AddressComponents) => this.handleAddressSelected(address),\n );\n if (this.autocomplete) {\n this.isInitialized = true;\n }\n } catch (error) {\n console.error(`Failed to initialize ${this.addressType} autocomplete:`, error);\n }\n }\n\n private async getInputElement(): Promise<HTMLInputElement | null> {\n const inputComponent = this.el?.querySelector('rebill-input-text') as any;\n if (!inputComponent) {\n console.error(`Input component not found for ${this.addressType}-search`);\n return null;\n }\n\n try {\n return await inputComponent.getInputElement();\n } catch (error) {\n console.error(`Failed to get input element:`, error);\n return null;\n }\n }\n\n private handleAddressSelected(address: AddressComponents) {\n this.addressSelected.emit(address);\n }\n\n private handleManualEntry = () => {\n this.manualEntryRequested.emit();\n };\n\n private cleanup() {\n if (this.autocomplete) {\n this.autocomplete = null;\n }\n this.isInitialized = false;\n }\n\n render() {\n const translationKey = this.addressType === 'shipping' ? 'shippingAddress' : 'billingAddress';\n const defaultPlaceholder = I18nService.translate(\n `${translationKey}.searchPlaceholder`,\n 'Search for an address...',\n );\n\n return (\n <div class=\"address-search-container\">\n <div class=\"search-input-container\">\n <rebill-input-text\n id={`${this.addressType}-search`}\n placeholder={this.placeholder || defaultPlaceholder}\n rightIcon=\"search\"\n error={this.error}\n disabled={this.disabled}\n />\n </div>\n <div class=\"manual-entry-link-wrapper\">\n <button class=\"manual-entry-link\" type=\"button\" onClick={this.handleManualEntry}>\n <rebill-typography\n variant=\"subtitle2\"\n color={COLORS_ENUM.SECONDARY}\n class=\"footer-link\"\n >\n {I18nService.translate(`${translationKey}.manualEntry`, 'Enter address manually')}\n </rebill-typography>\n </button>\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -3,15 +3,15 @@ import { P as PAYMENT_METHOD_ENUM, I as I18nService, s as state, b as SESSION_IT
|
|
|
3
3
|
import { C as COLORS_ENUM } from './p-DA598vBj.js';
|
|
4
4
|
import { g as getCountryPaymentMethods } from './p-CigJLS-H.js';
|
|
5
5
|
import { g as getPaymentMethodDisplayName } from './p-BHZvqXvV.js';
|
|
6
|
-
import { d as defineCustomElement$c } from './p-
|
|
7
|
-
import { d as defineCustomElement$b } from './p-
|
|
6
|
+
import { d as defineCustomElement$c } from './p-BxXWkB7L.js';
|
|
7
|
+
import { d as defineCustomElement$b } from './p-CH8Qt-7B.js';
|
|
8
8
|
import { d as defineCustomElement$a } from './p-BKlWxPzb.js';
|
|
9
9
|
import { d as defineCustomElement$9 } from './p-C1PdnVhw.js';
|
|
10
10
|
import { d as defineCustomElement$8 } from './p-DaYZxslj.js';
|
|
11
11
|
import { d as defineCustomElement$7 } from './p-BSay3C61.js';
|
|
12
|
-
import { d as defineCustomElement$6 } from './p-
|
|
13
|
-
import { d as defineCustomElement$5 } from './p-
|
|
14
|
-
import { d as defineCustomElement$4 } from './p-
|
|
12
|
+
import { d as defineCustomElement$6 } from './p-DSnJHRr3.js';
|
|
13
|
+
import { d as defineCustomElement$5 } from './p-Bw7Jq0SL.js';
|
|
14
|
+
import { d as defineCustomElement$4 } from './p-BZj9nSOY.js';
|
|
15
15
|
import { d as defineCustomElement$3 } from './p-C_txMekS.js';
|
|
16
16
|
import { d as defineCustomElement$2 } from './p-xpOb67FC.js';
|
|
17
17
|
import { d as defineCustomElement$1 } from './p-DHqT8Dlg.js';
|
|
@@ -244,6 +244,6 @@ function defineCustomElement() {
|
|
|
244
244
|
defineCustomElement();
|
|
245
245
|
|
|
246
246
|
export { PaymentMethodSelector as P, defineCustomElement as d };
|
|
247
|
-
//# sourceMappingURL=p
|
|
247
|
+
//# sourceMappingURL=p--gCxFWo3.js.map
|
|
248
248
|
|
|
249
|
-
//# sourceMappingURL=p
|
|
249
|
+
//# sourceMappingURL=p--gCxFWo3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-B8GIr65u.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/payment-method-selector/payment-method-selector.css?tag=payment-method-selector","src/components/checkout/payment-method-selector/payment-method-selector.tsx"],"sourcesContent":[".payment-method-selector {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.card-description-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n width: 100%;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { SESSION_ITEM_TYPE_ENUM } from '../../../models';\nimport { PAYMENT_METHOD_ENUM } from '../../../models/enums/payment-methods.enum';\nimport { sessionState } from '../../../store/session.store';\nimport { COLORS_ENUM } from '../../../utils/color-class-mapper';\nimport { getCountryPaymentMethods } from '../../../utils/countries-payment-methods';\nimport { getPaymentMethodDisplayName } from '../../../utils/get-payment-method-display-name';\n\nexport interface CardError {\n showCardInvalid: boolean;\n type: 'tokenization_error' | 'card_error' | null;\n}\n@Component({\n tag: 'payment-method-selector',\n styleUrl: 'payment-method-selector.css',\n shadow: false,\n})\nexport class PaymentMethodSelector {\n @Prop() enabledPaymentMethods: PAYMENT_METHOD_ENUM[] = [];\n\n @Prop() defaultSelected?: PAYMENT_METHOD_ENUM;\n @Prop() showErrorComponent: boolean = false;\n @Prop() cardError: CardError;\n // currency country\n @Prop() country?: string;\n @Prop() installmentsError?: string;\n @Prop() documentTypeError?: string;\n @Prop() showDocument?: boolean;\n @Prop() documentNumberError?: string;\n @Prop() customCSS?: string;\n @Prop() errorComponent?: {\n showErrorComponent: boolean;\n alertTitle?: string;\n message: string;\n };\n @Prop() disabled?: boolean = false;\n @State() icon: string = '';\n\n @State() selectedPaymentMethod: PAYMENT_METHOD_ENUM;\n @State() saveCard: boolean = false;\n\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n componentWillLoad() {\n if (this.enabledPaymentMethods.length > 0) {\n this.selectedPaymentMethod = this.defaultSelected || this.enabledPaymentMethods[0];\n\n if (this.enabledPaymentMethods.length === 1) {\n this.paymentMethodSelected.emit(this.selectedPaymentMethod);\n }\n }\n this.getPaymentMethodIcon(this.selectedPaymentMethod);\n }\n\n componentWillUpdate() {\n // Update selected payment method when defaultSelected prop changes\n if (this.defaultSelected && this.selectedPaymentMethod !== this.defaultSelected) {\n this.selectedPaymentMethod = this.defaultSelected;\n }\n }\n\n private getPaymentMethodConfig(method: PAYMENT_METHOD_ENUM) {\n const countryPaymentMethods = this.country ? getCountryPaymentMethods(this.country) : null;\n\n const countrySpecificMethod = countryPaymentMethods?.find(pm => pm.type === method);\n\n // Default configurations (fallback)\n const defaultConfigs = {\n [PAYMENT_METHOD_ENUM.CARD]: {\n key: PAYMENT_METHOD_ENUM.CARD,\n label: I18nService.translate('paymentMethods.card'),\n icons: ['doblecard'],\n },\n [PAYMENT_METHOD_ENUM.CASH]: {\n key: PAYMENT_METHOD_ENUM.CASH,\n label: I18nService.translate('paymentMethods.cash'),\n icons: ['pago-facil'],\n },\n [PAYMENT_METHOD_ENUM.BANK_TRANSFER]: {\n key: PAYMENT_METHOD_ENUM.BANK_TRANSFER,\n label:\n this.country === 'AR'\n ? I18nService.translate('paymentMethods.bank_transfer_qr')\n : I18nService.translate('paymentMethods.bank_transfer'),\n icons: ['plus'],\n },\n };\n\n const defaultConfig = defaultConfigs[method];\n\n // If we have country-specific icons, use them; otherwise use defaults\n return {\n ...defaultConfig,\n icons: countrySpecificMethod?.icons || defaultConfig.icons,\n };\n }\n\n private getPaymentMethodIcon(paymentMethod: PAYMENT_METHOD_ENUM) {\n this.icon = getPaymentMethodDisplayName(paymentMethod, this.country)?.toLowerCase() || 'card';\n return this.icon;\n }\n\n handlePaymentMethodSelected(paymentMethod: PAYMENT_METHOD_ENUM) {\n if (this.disabled) {\n return;\n }\n this.selectedPaymentMethod = paymentMethod;\n this.paymentMethodSelected.emit(paymentMethod);\n }\n\n // handleSaveCardChange(event: any) {\n // this.saveCard = event?.target?.checked;\n // SessionStore.setSaveCard(this.saveCard);\n // }\n\n @Listen('selectableCardClick')\n handleSelectableCardClick(event: CustomEvent<string>) {\n if (this.disabled) {\n return;\n }\n const paymentMethodKey = event.detail as PAYMENT_METHOD_ENUM;\n this.handlePaymentMethodSelected(paymentMethodKey);\n }\n\n render() {\n if (this.enabledPaymentMethods.length === 0) {\n return null;\n }\n\n return (\n <div class=\"payment-method-selector\">\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between',\n }}\n >\n {this.enabledPaymentMethods.length === 1 &&\n (() => {\n const config = this.getPaymentMethodConfig(this.enabledPaymentMethods[0]);\n return (\n <single-payment-method\n paymentMethod={this.enabledPaymentMethods[0]}\n currencyCountry={this.country}\n paymentMethodDetails={[]}\n icons={config.icons}\n style={{\n display: 'flex',\n flex: '1 1 0',\n }}\n />\n );\n })()}\n {this.enabledPaymentMethods.length > 1 &&\n this.enabledPaymentMethods.map(paymentMethod => {\n const config = this.getPaymentMethodConfig(paymentMethod);\n return (\n <selectable-card\n style={{ flex: '1 1 0' }}\n selected={this.selectedPaymentMethod === paymentMethod}\n card-key={config.key}\n label={config.label}\n disabled={this.disabled}\n >\n <span slot=\"icon\">\n <div\n style={{ display: 'flex', alignItems: 'center', gap: '8px', height: '24px' }}\n >\n {config.icons.map(iconName => {\n return (\n <rebill-icon\n name={iconName}\n color={\n this.disabled && paymentMethod === PAYMENT_METHOD_ENUM.CARD\n ? COLORS_ENUM.NEUTRALS_500\n : 'currentColor'\n }\n />\n );\n })}\n </div>\n </span>\n </selectable-card>\n );\n })}\n </div>\n <div>\n {this.cardError.showCardInvalid &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD ? (\n <rebill-alert\n type=\"error\"\n alertTitle={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenError')\n : I18nService.translate('validation.cardInvalid')\n }\n variant=\"outlined\"\n message={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenErrorDescription')\n : I18nService.translate('validation.cardInvalidDescription')\n }\n icon=\"error\"\n />\n ) : this.errorComponent.showErrorComponent ? (\n <rebill-alert\n type=\"error\"\n alertTitle={this.errorComponent.alertTitle}\n message={this.errorComponent.message}\n variant=\"outlined\"\n icon=\"error\"\n />\n ) : null}\n </div>\n {this.enabledPaymentMethods.length > 1 &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD &&\n sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n }}\n >\n {/* <rebill-input-checkbox\n id=\"saveCard\"\n checked={this.saveCard}\n label={I18nService.translate('paymentMethods.saveCard')}\n onInput={event => this.handleSaveCardChange(event)}\n /> */}\n </div>\n )}\n {this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD && (\n <>\n {/* {this.enabledPaymentMethods.length > 1 && (\n <div class=\"card-description-container\">\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.TEXT_PRIMARY}>\n {I18nService.translate('paymentMethods.cardDescription')}\n </rebill-typography>\n <rebill-card-carousel\n size=\"24px\"\n color=\"currentColor\"\n show-all-cards=\"false\"\n ></rebill-card-carousel>\n </div>\n </div>\n )} */}\n <div>\n <card-fields-wrapper\n installmentsError={this.installmentsError}\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n showDocument={this.showDocument}\n customCSS={this.customCSS}\n />\n </div>\n </>\n )}\n {/* Mostrar campos de documento para BANK_TRANSFER y CASH cuando showDocument es true */}\n {(this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER ||\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CASH) &&\n this.showDocument && (\n <div>\n <card-identification\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n disabled={this.disabled}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p--gCxFWo3.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","sessionState"],"sources":["src/components/checkout/payment-method-selector/payment-method-selector.css?tag=payment-method-selector","src/components/checkout/payment-method-selector/payment-method-selector.tsx"],"sourcesContent":[".payment-method-selector {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.card-description-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n width: 100%;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { SESSION_ITEM_TYPE_ENUM } from '../../../models';\nimport { PAYMENT_METHOD_ENUM } from '../../../models/enums/payment-methods.enum';\nimport { sessionState } from '../../../store/session.store';\nimport { COLORS_ENUM } from '../../../utils/color-class-mapper';\nimport { getCountryPaymentMethods } from '../../../utils/countries-payment-methods';\nimport { getPaymentMethodDisplayName } from '../../../utils/get-payment-method-display-name';\n\nexport interface CardError {\n showCardInvalid: boolean;\n type: 'tokenization_error' | 'card_error' | null;\n}\n@Component({\n tag: 'payment-method-selector',\n styleUrl: 'payment-method-selector.css',\n shadow: false,\n})\nexport class PaymentMethodSelector {\n @Prop() enabledPaymentMethods: PAYMENT_METHOD_ENUM[] = [];\n\n @Prop() defaultSelected?: PAYMENT_METHOD_ENUM;\n @Prop() showErrorComponent: boolean = false;\n @Prop() cardError: CardError;\n // currency country\n @Prop() country?: string;\n @Prop() installmentsError?: string;\n @Prop() documentTypeError?: string;\n @Prop() showDocument?: boolean;\n @Prop() documentNumberError?: string;\n @Prop() customCSS?: string;\n @Prop() errorComponent?: {\n showErrorComponent: boolean;\n alertTitle?: string;\n message: string;\n };\n @Prop() disabled?: boolean = false;\n @State() icon: string = '';\n\n @State() selectedPaymentMethod: PAYMENT_METHOD_ENUM;\n @State() saveCard: boolean = false;\n\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n componentWillLoad() {\n if (this.enabledPaymentMethods.length > 0) {\n this.selectedPaymentMethod = this.defaultSelected || this.enabledPaymentMethods[0];\n\n if (this.enabledPaymentMethods.length === 1) {\n this.paymentMethodSelected.emit(this.selectedPaymentMethod);\n }\n }\n this.getPaymentMethodIcon(this.selectedPaymentMethod);\n }\n\n componentWillUpdate() {\n // Update selected payment method when defaultSelected prop changes\n if (this.defaultSelected && this.selectedPaymentMethod !== this.defaultSelected) {\n this.selectedPaymentMethod = this.defaultSelected;\n }\n }\n\n private getPaymentMethodConfig(method: PAYMENT_METHOD_ENUM) {\n const countryPaymentMethods = this.country ? getCountryPaymentMethods(this.country) : null;\n\n const countrySpecificMethod = countryPaymentMethods?.find(pm => pm.type === method);\n\n // Default configurations (fallback)\n const defaultConfigs = {\n [PAYMENT_METHOD_ENUM.CARD]: {\n key: PAYMENT_METHOD_ENUM.CARD,\n label: I18nService.translate('paymentMethods.card'),\n icons: ['doblecard'],\n },\n [PAYMENT_METHOD_ENUM.CASH]: {\n key: PAYMENT_METHOD_ENUM.CASH,\n label: I18nService.translate('paymentMethods.cash'),\n icons: ['pago-facil'],\n },\n [PAYMENT_METHOD_ENUM.BANK_TRANSFER]: {\n key: PAYMENT_METHOD_ENUM.BANK_TRANSFER,\n label:\n this.country === 'AR'\n ? I18nService.translate('paymentMethods.bank_transfer_qr')\n : I18nService.translate('paymentMethods.bank_transfer'),\n icons: ['plus'],\n },\n };\n\n const defaultConfig = defaultConfigs[method];\n\n // If we have country-specific icons, use them; otherwise use defaults\n return {\n ...defaultConfig,\n icons: countrySpecificMethod?.icons || defaultConfig.icons,\n };\n }\n\n private getPaymentMethodIcon(paymentMethod: PAYMENT_METHOD_ENUM) {\n this.icon = getPaymentMethodDisplayName(paymentMethod, this.country)?.toLowerCase() || 'card';\n return this.icon;\n }\n\n handlePaymentMethodSelected(paymentMethod: PAYMENT_METHOD_ENUM) {\n if (this.disabled) {\n return;\n }\n this.selectedPaymentMethod = paymentMethod;\n this.paymentMethodSelected.emit(paymentMethod);\n }\n\n // handleSaveCardChange(event: any) {\n // this.saveCard = event?.target?.checked;\n // SessionStore.setSaveCard(this.saveCard);\n // }\n\n @Listen('selectableCardClick')\n handleSelectableCardClick(event: CustomEvent<string>) {\n if (this.disabled) {\n return;\n }\n const paymentMethodKey = event.detail as PAYMENT_METHOD_ENUM;\n this.handlePaymentMethodSelected(paymentMethodKey);\n }\n\n render() {\n if (this.enabledPaymentMethods.length === 0) {\n return null;\n }\n\n return (\n <div class=\"payment-method-selector\">\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between',\n }}\n >\n {this.enabledPaymentMethods.length === 1 &&\n (() => {\n const config = this.getPaymentMethodConfig(this.enabledPaymentMethods[0]);\n return (\n <single-payment-method\n paymentMethod={this.enabledPaymentMethods[0]}\n currencyCountry={this.country}\n paymentMethodDetails={[]}\n icons={config.icons}\n style={{\n display: 'flex',\n flex: '1 1 0',\n }}\n />\n );\n })()}\n {this.enabledPaymentMethods.length > 1 &&\n this.enabledPaymentMethods.map(paymentMethod => {\n const config = this.getPaymentMethodConfig(paymentMethod);\n return (\n <selectable-card\n style={{ flex: '1 1 0' }}\n selected={this.selectedPaymentMethod === paymentMethod}\n card-key={config.key}\n label={config.label}\n disabled={this.disabled}\n >\n <span slot=\"icon\">\n <div\n style={{ display: 'flex', alignItems: 'center', gap: '8px', height: '24px' }}\n >\n {config.icons.map(iconName => {\n return (\n <rebill-icon\n name={iconName}\n color={\n this.disabled && paymentMethod === PAYMENT_METHOD_ENUM.CARD\n ? COLORS_ENUM.NEUTRALS_500\n : 'currentColor'\n }\n />\n );\n })}\n </div>\n </span>\n </selectable-card>\n );\n })}\n </div>\n <div>\n {this.cardError.showCardInvalid &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD ? (\n <rebill-alert\n type=\"error\"\n alertTitle={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenError')\n : I18nService.translate('validation.cardInvalid')\n }\n variant=\"outlined\"\n message={\n this.cardError.type === 'tokenization_error'\n ? I18nService.translate('validation.tokenErrorDescription')\n : I18nService.translate('validation.cardInvalidDescription')\n }\n icon=\"error\"\n />\n ) : this.errorComponent.showErrorComponent ? (\n <rebill-alert\n type=\"error\"\n alertTitle={this.errorComponent.alertTitle}\n message={this.errorComponent.message}\n variant=\"outlined\"\n icon=\"error\"\n />\n ) : null}\n </div>\n {this.enabledPaymentMethods.length > 1 &&\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD &&\n sessionState.data?.itemInformation?.type !== SESSION_ITEM_TYPE_ENUM.PLAN && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n }}\n >\n {/* <rebill-input-checkbox\n id=\"saveCard\"\n checked={this.saveCard}\n label={I18nService.translate('paymentMethods.saveCard')}\n onInput={event => this.handleSaveCardChange(event)}\n /> */}\n </div>\n )}\n {this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CARD && (\n <>\n {/* {this.enabledPaymentMethods.length > 1 && (\n <div class=\"card-description-container\">\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <rebill-typography variant=\"body2\" color={COLORS_ENUM.TEXT_PRIMARY}>\n {I18nService.translate('paymentMethods.cardDescription')}\n </rebill-typography>\n <rebill-card-carousel\n size=\"24px\"\n color=\"currentColor\"\n show-all-cards=\"false\"\n ></rebill-card-carousel>\n </div>\n </div>\n )} */}\n <div>\n <card-fields-wrapper\n installmentsError={this.installmentsError}\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n showDocument={this.showDocument}\n customCSS={this.customCSS}\n />\n </div>\n </>\n )}\n {/* Mostrar campos de documento para BANK_TRANSFER y CASH cuando showDocument es true */}\n {(this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER ||\n this.selectedPaymentMethod === PAYMENT_METHOD_ENUM.CASH) &&\n this.showDocument && (\n <div>\n <card-identification\n documentTypeError={this.documentTypeError}\n documentNumberError={this.documentNumberError}\n disabled={this.disabled}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
|