rebill-web-components-sdk 1.10.5 → 1.10.7-beta.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 (77) hide show
  1. package/dist/cjs/card-fields-wrapper.card-identification.card-iframe.card-skeleton.rebill-address-form.rebill-address-search.rebill-input-combo.rebill-input-phone.rebill-installments.selectable-card.single-payment-method.entry.cjs.js.map +1 -1
  2. package/dist/cjs/card-fields-wrapper_11.cjs.entry.js +9 -12
  3. package/dist/cjs/index-C-VTnc0I.js.map +1 -1
  4. package/dist/cjs/rebill-change-card.cjs.entry.js +1 -2
  5. package/dist/cjs/rebill-change-card.entry.cjs.js.map +1 -1
  6. package/dist/cjs/rebill-checkout.cjs.entry.js +10 -3
  7. package/dist/cjs/rebill-checkout.entry.cjs.js.map +1 -1
  8. package/dist/cjs/rebill-form.cjs.entry.js +5 -2
  9. package/dist/cjs/rebill-form.entry.cjs.js.map +1 -1
  10. package/dist/cjs/rebill-renewal.cjs.entry.js +26 -2
  11. package/dist/cjs/rebill-renewal.entry.cjs.js.map +1 -1
  12. package/dist/collection/components/change-card/rebill-change-card.js +1 -2
  13. package/dist/collection/components/change-card/rebill-change-card.js.map +1 -1
  14. package/dist/collection/components/checkout/rebill-checkout.js +10 -3
  15. package/dist/collection/components/checkout/rebill-checkout.js.map +1 -1
  16. package/dist/collection/components/renewal/rebill-renewal.js +27 -2
  17. package/dist/collection/components/renewal/rebill-renewal.js.map +1 -1
  18. package/dist/collection/components/shared/form/form.js +5 -2
  19. package/dist/collection/components/shared/form/form.js.map +1 -1
  20. package/dist/collection/components/shared/inputs/input-phone/input-phone.js +9 -12
  21. package/dist/collection/components/shared/inputs/input-phone/input-phone.js.map +1 -1
  22. package/dist/components/p-8BpuJ_V5.js.map +1 -1
  23. package/dist/components/{p-0y1EkPsV.js → p-CRMAYXj0.js} +3 -3
  24. package/dist/components/{p-0y1EkPsV.js.map → p-CRMAYXj0.js.map} +1 -1
  25. package/dist/components/{p-BFqhozQ0.js → p-DKPrueOT.js} +3 -3
  26. package/dist/components/{p-BFqhozQ0.js.map → p-DKPrueOT.js.map} +1 -1
  27. package/dist/components/{p-Cs-pA3OO.js → p-DVaxhIJe.js} +7 -4
  28. package/dist/components/p-DVaxhIJe.js.map +1 -0
  29. package/dist/components/{p-RbKsk0NK.js → p-Dsv10JVE.js} +11 -14
  30. package/dist/components/p-Dsv10JVE.js.map +1 -0
  31. package/dist/components/rebill-change-card.js +5 -6
  32. package/dist/components/rebill-change-card.js.map +1 -1
  33. package/dist/components/rebill-checkout-form.js +1 -1
  34. package/dist/components/rebill-checkout.js +14 -7
  35. package/dist/components/rebill-checkout.js.map +1 -1
  36. package/dist/components/rebill-form.js +1 -1
  37. package/dist/components/rebill-input-phone.js +1 -1
  38. package/dist/components/rebill-renewal.js +31 -7
  39. package/dist/components/rebill-renewal.js.map +1 -1
  40. package/dist/components/root-component.js +1 -1
  41. package/dist/components/user-information-phone.js +1 -1
  42. package/dist/esm/card-fields-wrapper.card-identification.card-iframe.card-skeleton.rebill-address-form.rebill-address-search.rebill-input-combo.rebill-input-phone.rebill-installments.selectable-card.single-payment-method.entry.js.map +1 -1
  43. package/dist/esm/card-fields-wrapper_11.entry.js +9 -12
  44. package/dist/esm/index-BTZ7D7jU.js.map +1 -1
  45. package/dist/esm/rebill-change-card.entry.js +1 -2
  46. package/dist/esm/rebill-change-card.entry.js.map +1 -1
  47. package/dist/esm/rebill-checkout.entry.js +10 -3
  48. package/dist/esm/rebill-checkout.entry.js.map +1 -1
  49. package/dist/esm/rebill-form.entry.js +5 -2
  50. package/dist/esm/rebill-form.entry.js.map +1 -1
  51. package/dist/esm/rebill-renewal.entry.js +27 -3
  52. package/dist/esm/rebill-renewal.entry.js.map +1 -1
  53. package/dist/rebill-web-components-sdk/card-fields-wrapper.card-identification.card-iframe.card-skeleton.rebill-address-form.rebill-address-search.rebill-input-combo.rebill-input-phone.rebill-installments.selectable-card.single-payment-method.entry.esm.js.map +1 -1
  54. package/dist/rebill-web-components-sdk/{p-a8726b6d.entry.js → p-85e7cd6f.entry.js} +2 -2
  55. package/dist/rebill-web-components-sdk/{p-a8726b6d.entry.js.map → p-85e7cd6f.entry.js.map} +1 -1
  56. package/dist/rebill-web-components-sdk/{p-d827e221.entry.js → p-90c50e5b.entry.js} +2 -2
  57. package/dist/rebill-web-components-sdk/p-90c50e5b.entry.js.map +1 -0
  58. package/dist/rebill-web-components-sdk/p-BTZ7D7jU.js.map +1 -1
  59. package/dist/rebill-web-components-sdk/{p-14fb1c5c.entry.js → p-ae158592.entry.js} +2 -2
  60. package/dist/rebill-web-components-sdk/p-ae158592.entry.js.map +1 -0
  61. package/dist/rebill-web-components-sdk/p-d2d7500e.entry.js +2 -0
  62. package/dist/rebill-web-components-sdk/p-d2d7500e.entry.js.map +1 -0
  63. package/dist/rebill-web-components-sdk/{p-1a99d53d.entry.js → p-e6df1fe2.entry.js} +2 -2
  64. package/dist/rebill-web-components-sdk/{p-1a99d53d.entry.js.map → p-e6df1fe2.entry.js.map} +1 -1
  65. package/dist/rebill-web-components-sdk/rebill-change-card.entry.esm.js.map +1 -1
  66. package/dist/rebill-web-components-sdk/rebill-checkout.entry.esm.js.map +1 -1
  67. package/dist/rebill-web-components-sdk/rebill-form.entry.esm.js.map +1 -1
  68. package/dist/rebill-web-components-sdk/rebill-renewal.entry.esm.js.map +1 -1
  69. package/dist/rebill-web-components-sdk/rebill-web-components-sdk.esm.js +1 -1
  70. package/dist/types/components/renewal/rebill-renewal.d.ts +5 -0
  71. package/package.json +1 -1
  72. package/dist/components/p-Cs-pA3OO.js.map +0 -1
  73. package/dist/components/p-RbKsk0NK.js.map +0 -1
  74. package/dist/rebill-web-components-sdk/p-14fb1c5c.entry.js.map +0 -1
  75. package/dist/rebill-web-components-sdk/p-84a8160a.entry.js +0 -2
  76. package/dist/rebill-web-components-sdk/p-84a8160a.entry.js.map +0 -1
  77. package/dist/rebill-web-components-sdk/p-d827e221.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rebill-renewal.js","sourceRoot":"","sources":["../../../src/components/renewal/rebill-renewal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\nimport * as yup from 'yup';\nimport { api, Country } from '../../api';\nimport { SavedCard } from '../../api/entities/cards/types';\nimport {\n CheckoutStatusE,\n CreateAPMCheckoutRequest,\n CreateAPMCheckoutResponse,\n CreateCardCheckoutRequest,\n} from '../../api/entities/checkout/types';\nimport '../../components/checkout/apm/apm-checkout/apm-checkout';\nimport '../../components/checkout/processing-payment/processing-payment';\nimport { I18nService } from '../../i18n/i18n.service';\n\nimport { PaymentMethodNameE } from '../../models/enums/payment-method-name.enum';\nimport { PAYMENT_METHOD_ENUM } from '../../models/enums/payment-methods.enum';\nimport { PaymentMessageE } from '../../models/enums/payment-status.enum';\nimport { STATUS_REQ_CHECKOUT_APM } from '../../models/enums/status-req-checkout-apm.enum';\nimport { onChange as renewalOnChange, renewalState, RenewalStore } from '../../store/renewal.store';\nimport { BREAKPOINT_ENUM, getBreakpoint, isBreakpointBelow } from '../../utils/breakpoint';\nimport { COLORS_ENUM } from '../../utils/color-class-mapper';\nimport { generateIdempotencyKey } from '../../utils/generate-idempotency-key';\nimport { GoogleMapsService } from '../../utils/google-maps.service';\nimport { AlertErrorKeys, PaymentErrorMapper } from '../../utils/payment-error-mapper';\nimport { PaymentMethodMapper } from '../../utils/payment-method-mapper';\nimport { getFieldValues, isFieldRequired } from '../../utils/required-fields-mappers';\nimport {\n AllRequiredFieldsMap,\n getAllRequiredFieldsRenewal,\n getRequiredFieldsForMethod,\n} from './utils/getRequiredFieldsRenewal';\n\n@Component({\n tag: 'rebill-renewal',\n styleUrl: 'rebill-renewal.css',\n shadow: false,\n})\nexport class RebillRenewal {\n @Prop() renewalData!: string;\n @Prop() renewalToken!: string;\n\n @State() currentPaymentMethod: PAYMENT_METHOD_ENUM = PAYMENT_METHOD_ENUM.CARD;\n @State() isSubmitting: boolean = false;\n @State() isCardSubmitting: boolean = false;\n @State() isCardSuccess: boolean = false;\n @State() errorMessage: AlertErrorKeys | null = null;\n @State() breakpoint: BREAKPOINT_ENUM = BREAKPOINT_ENUM.DESKTOP;\n @State() errorPaymentCard: boolean = false;\n @State() errorPaymentAPM: boolean = false;\n @State() initialData: any = {};\n @State() checkoutResponse: CreateAPMCheckoutResponse | null = null;\n @State() currentApmPaymentMethod: PaymentMethodNameE | null = null;\n @State() countries: Country[] = [];\n @State() allRequiredFields: AllRequiredFieldsMap = {};\n @State() currentRequiredFields: string[] = [];\n @State() errorCardInvalid: boolean = false;\n @State() cardMode: 'input' | 'select' | null = 'select';\n\n @Event() success: EventEmitter<any>;\n @Event() paymentError: EventEmitter<any>;\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n private validationSchema = {\n 'phoneNumber': yup.string().when([], {\n is: () =>\n isFieldRequired('phoneNumber', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.phoneRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-country': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-country', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.countryRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-state': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-state', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.stateRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-address': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-address', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.addressRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-city': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-city', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.cityRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-zip': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-zip', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.zipRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'bankId': yup.string().when([], {\n is: () => isFieldRequired('bankId', this.currentRequiredFields),\n then: schema => schema.required('validation.bankRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentType': yup.string().when([], {\n is: () =>\n isFieldRequired('documentType', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.documentTypeRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentNumber': yup.string().when([], {\n is: () =>\n isFieldRequired('documentNumber', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => {\n const baseSchema = schema.required('validation.documentNumberRequired').min(7, 'validation.documentInvalid');\n\n // For BR checkout, validate that document number contains only digits\n if (renewalState.data?.price?.country === 'BR') {\n return baseSchema.test(\n 'numeric-only',\n 'validation.documentNumberNumericOnly',\n value => {\n if (!value) return true; // Let required validation handle empty values\n return /^\\d+$/.test(value);\n }\n );\n }\n\n return baseSchema;\n },\n otherwise: schema => schema.notRequired(),\n }),\n };\n\n private resizeHandler = () => {\n this.breakpoint = getBreakpoint(window.innerWidth);\n };\n\n async componentWillLoad() {\n this.resizeHandler();\n window.addEventListener('resize', this.resizeHandler);\n\n const renewalProps =\n typeof this.renewalData === 'string' ? JSON.parse(this.renewalData) : this.renewalData;\n\n RenewalStore.initializeRenewal({\n ...renewalProps,\n token: this.renewalToken,\n });\n\n // Load Google Maps script for address autocomplete\n GoogleMapsService.loadGoogleMapsScript();\n\n // Load countries data\n try {\n const response = await api.data.getCountries();\n this.countries = response.data;\n } catch (error) {\n console.error('Error loading countries:', error);\n }\n\n // Load required fields data\n try {\n this.allRequiredFields = await getAllRequiredFieldsRenewal();\n } catch (error) {\n console.error('Error loading required fields:', error);\n }\n\n if (renewalState.data.paymentMethods.length > 0) {\n let defaultPaymentMethod: PAYMENT_METHOD_ENUM | null = null;\n\n if (renewalState.data.subscription?.paymentMethod) {\n const subscriptionPaymentMethod =\n renewalState.data.subscription.paymentMethod.toLowerCase();\n const mappedMethod =\n subscriptionPaymentMethod === 'card'\n ? PAYMENT_METHOD_ENUM.CARD\n : subscriptionPaymentMethod === 'bank_transfer'\n ? PAYMENT_METHOD_ENUM.BANK_TRANSFER\n : null;\n\n if (mappedMethod) {\n const isAvailable = renewalState.data.paymentMethods.some(pm => pm.type === mappedMethod);\n if (isAvailable) {\n defaultPaymentMethod = mappedMethod;\n }\n }\n }\n\n if (!defaultPaymentMethod) {\n defaultPaymentMethod = renewalState.data.paymentMethods[0].type as PAYMENT_METHOD_ENUM;\n }\n\n this.currentPaymentMethod = defaultPaymentMethod;\n RenewalStore.setSelectedPaymentMethod(defaultPaymentMethod);\n\n if (defaultPaymentMethod !== PAYMENT_METHOD_ENUM.CARD) {\n this.cardMode = 'input';\n RenewalStore.setCardMode('input');\n }\n\n try {\n this.currentRequiredFields = getRequiredFieldsForMethod(\n defaultPaymentMethod,\n this.allRequiredFields,\n ).fields;\n } catch (error) {\n console.error('Error getting required fields for method:', error);\n }\n\n await this.initializeFingerprint(defaultPaymentMethod);\n }\n\n this.initialData = this.getInitialData();\n\n renewalOnChange('cardMode', () => {\n this.cardMode = renewalState.cardMode;\n });\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.resizeHandler);\n }\n\n @Listen('paymentMethodSelected')\n async handlePaymentMethodSelected(event: CustomEvent<PAYMENT_METHOD_ENUM>) {\n event.stopPropagation();\n\n if (this.currentPaymentMethod === event.detail) {\n return;\n }\n\n this.currentPaymentMethod = event.detail;\n RenewalStore.setSelectedPaymentMethod(this.currentPaymentMethod);\n\n // Change cardMode to 'input' if payment method is not CARD\n if (this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.CARD) {\n this.cardMode = 'input';\n RenewalStore.setCardMode('input');\n }\n\n // Update required fields for the new payment method\n try {\n this.currentRequiredFields = getRequiredFieldsForMethod(\n this.currentPaymentMethod,\n this.allRequiredFields,\n ).fields;\n } catch (error) {\n console.error('Error getting required fields for method:', error);\n }\n\n // Note: Fingerprint is handled in componentWillLoad\n\n // Initialize fingerprint for the new payment method\n await this.initializeFingerprint(this.currentPaymentMethod);\n\n this.paymentMethodSelected.emit(event.detail);\n }\n\n private async initializeFingerprint(paymentMethod: PAYMENT_METHOD_ENUM) {\n // Only initialize fingerprint for card payments and if not already generated\n if (paymentMethod === PAYMENT_METHOD_ENUM.CARD && !renewalState.deviceId) {\n try {\n const uuid = crypto.randomUUID();\n const fingerprintResponse = await api.fingerPrint.getFingerPrint(uuid);\n RenewalStore.setDeviceId(uuid);\n const script = fingerprintResponse.result.script;\n const scriptElement = document.createElement('script');\n scriptElement.innerHTML = script;\n document.body.appendChild(scriptElement);\n } catch (error) {\n console.error('Failed to initialize fingerprint:', error);\n }\n }\n }\n\n @Listen('bankSelected')\n handleBankSelected(event: CustomEvent<string>) {\n event.stopPropagation();\n RenewalStore.setSelectedBankId(event.detail);\n }\n\n @Listen('cardSelected')\n handleCardSelected(event: CustomEvent<{ card: SavedCard; cvv?: string }>) {\n const { card, cvv } = event.detail;\n RenewalStore.setSelectedCard(card);\n RenewalStore.setCvv(cvv || '');\n }\n\n private get currentPaymentError(): boolean {\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n return this.errorPaymentCard;\n } else if (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n return this.errorPaymentAPM;\n }\n return false;\n }\n\n private async handleSubmit(event?: CustomEvent) {\n if (this.isSubmitting) {\n return;\n }\n\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n await this.handleCardRenewal(event);\n } else {\n await this.handleAPMRenewal(event);\n }\n }\n\n private async handleCardRenewal(event?: CustomEvent) {\n const formData = event?.detail || this.getInitialData();\n\n if (!renewalState.data.cardId && !renewalState.data.cardTokenId) {\n this.errorCardInvalid = true;\n return;\n }\n if (!renewalState.data.cardInformation && !renewalState.data.cardId) {\n this.errorCardInvalid = true;\n return;\n }\n this.errorCardInvalid = false;\n this.isSubmitting = true;\n this.isCardSubmitting = true;\n RenewalStore.setLoading(true);\n\n try {\n const renewalRequest: CreateCardCheckoutRequest = {\n transaction: {\n quantity: 1,\n },\n ...(renewalState.data.cardId && { cardId: renewalState.data.cardId }),\n ...(renewalState.data.cardTokenId && { cardTokenId: renewalState.data.cardTokenId }),\n customAttributes: {\n ...(renewalState.deviceId && { deviceId: renewalState.deviceId }),\n },\n ...(this.cardMode === 'input' && {\n customer: {\n firstName:\n formData.fullName?.split(' ')[0] ||\n renewalState.data.subscription.customerName?.split(' ')[0],\n lastName:\n formData.fullName?.split(' ').slice(1).join(' ') ||\n renewalState.data.subscription.customerName?.split(' ').slice(1).join(' '),\n email: formData.email || renewalState.data.subscription.customerEmail,\n phone: {\n countryCode: formData.countryCodePhoneNumber || '',\n number: formData.phoneNumber || '',\n },\n },\n billingDetails: {\n address: {\n lineOne: formData['billing-address'] || '',\n city: formData['billing-city'] || '',\n state: formData['billing-state'] || '',\n country: formData['billing-country'] || '',\n zipCode: formData['billing-zip'] || '',\n },\n identification: {\n type: formData.documentType || '',\n value: formData.documentNumber || '',\n },\n },\n }),\n };\n\n const idempotencyKey = generateIdempotencyKey();\n const response = await api.checkout.createCardCheckoutRequest(\n renewalState.data.id,\n idempotencyKey,\n renewalRequest,\n renewalState.token,\n );\n\n this.isSubmitting = false;\n this.isCardSubmitting = false;\n RenewalStore.setLoading(false);\n RenewalStore.setCheckoutResponse(response.data);\n\n if (response.data.result?.status.toUpperCase() === CheckoutStatusE.APPROVED) {\n this.isCardSuccess = true;\n } else {\n this.isCardSuccess = false;\n this.errorPaymentCard = true;\n this.errorMessage = {\n message: response.data.error?.error?.message as PaymentMessageE,\n };\n }\n } catch (error: any) {\n this.isSubmitting = false;\n this.isCardSubmitting = false;\n RenewalStore.setLoading(false);\n\n this.errorPaymentCard = true;\n this.errorMessage = {\n message: error.data?.error?.message as PaymentMessageE,\n };\n }\n }\n\n private async handleAPMRenewal(event?: CustomEvent) {\n this.isSubmitting = true;\n RenewalStore.setLoading(true);\n\n try {\n const apmPaymentMethod = PaymentMethodMapper.mapToAPMPaymentMethod(\n this.currentPaymentMethod,\n renewalState.data.price.country,\n );\n\n // Get form data for billing details and customer info\n const formData = event?.detail || this.getFormData();\n\n // Transform form data to match CreateAPMCheckoutRequest structure\n const billingDetails = {\n address: {\n country: formData['billing-country'],\n state: formData['billing-state'] || '',\n city: formData['billing-city'] || '',\n zipCode: formData['billing-zip'] || '',\n lineOne: formData['billing-address'] || '',\n },\n identification: {\n type: formData.documentType || 'dni',\n value: formData.documentNumber || '',\n },\n };\n\n const renewalRequest: CreateAPMCheckoutRequest = {\n transaction: {\n quantity: 1,\n },\n method: apmPaymentMethod,\n billingDetails,\n redirect: {\n approved: window.location.origin + '/renewal/success',\n rejected: window.location.origin + '/renewal/failure',\n },\n paymentMetadata: {\n orderId: renewalState.data.id,\n source: 'renewal-web',\n },\n customAttributes: {\n bank: formData.bankId || '',\n },\n };\n\n // Add customer data for renewal\n renewalRequest.customer = {\n firstName:\n formData.fullName?.split(' ')[0] ||\n renewalState.data.subscription.customerName.split(' ')[0] ||\n '',\n lastName:\n formData.fullName?.split(' ').slice(1).join(' ') ||\n renewalState.data.subscription.customerName.split(' ').slice(1).join(' ') ||\n '',\n email: formData.email || renewalState.data.subscription.customerEmail,\n phone: {\n countryCode: formData.countryCodePhoneNumber || '',\n number: formData.phoneNumber || '',\n },\n };\n\n const idempotencyKey = generateIdempotencyKey();\n const response = await api.checkout.createAPMCheckoutRequest(\n renewalState.data.id,\n idempotencyKey,\n renewalRequest,\n );\n\n this.isSubmitting = false;\n RenewalStore.setLoading(false);\n RenewalStore.setCheckoutResponse(response.data);\n this.checkoutResponse = response.data;\n const status = response.data.result?.status?.toString().toLowerCase();\n const isApproved = status === CheckoutStatusE.APPROVED.toLowerCase();\n const isPendingCustomerCharge = status === STATUS_REQ_CHECKOUT_APM.PENDING_CUSTOMER_CHARGE;\n\n if (isApproved) {\n this.isCardSuccess = true;\n this.errorPaymentAPM = false;\n this.errorMessage = null;\n } else if (isPendingCustomerCharge) {\n // Keep showing the QR/URL without showing an error for pending Pix payments\n this.isCardSuccess = false;\n this.errorPaymentAPM = false;\n this.errorMessage = null;\n } else {\n this.paymentError.emit(response.data);\n RenewalStore.setCheckoutResponse(response.data);\n this.errorPaymentAPM = true;\n\n this.errorMessage = {\n alertTitle: response.data?.error?.message as PaymentMessageE,\n message: response.data.error?.message as PaymentMessageE,\n };\n }\n } catch (error: any) {\n this.isSubmitting = false;\n RenewalStore.setLoading(false);\n this.paymentError.emit(error);\n this.errorPaymentAPM = true;\n\n this.errorMessage = {\n alertTitle: error.data?.error?.message as PaymentMessageE,\n message: error.data?.error?.message,\n };\n }\n }\n\n private getFormData = () => {\n return this.initialData;\n };\n\n private getInitialData = () => {\n return {\n 'email': renewalState.data.subscription.customerEmail,\n 'fullName': renewalState.data.subscription.customerName,\n 'card': '',\n 'billing-country': '',\n 'billing-state': '',\n 'billing-address': '',\n 'billing-city': '',\n 'billing-zip': '',\n 'bankId': '',\n 'phoneNumber': '',\n 'countryCodePhoneNumber': '',\n 'documentType': '',\n 'documentNumber': '',\n };\n };\n\n private hasPrefilledAddress = () => {\n const billingFields = [\n 'billing-country',\n 'billing-state',\n 'billing-address',\n 'billing-city',\n 'billing-zip',\n ];\n return billingFields.some(key => {\n const value = this.initialData[key];\n return value && value.trim() !== '';\n });\n };\n\n private getPaymentDate = (): string => {\n const payment = renewalState.form.checkoutResponse;\n if (!payment) return '';\n\n if ('date' in payment) {\n return payment.date as string;\n }\n\n return '';\n };\n\n private getReferenceNumber = (): string => {\n const payment = renewalState.form.checkoutResponse;\n if (!payment) return '';\n if ('traceId' in payment) {\n return payment.traceId as string;\n }\n\n return '';\n };\n\n private get isAPMCheckoutVisible(): boolean {\n return (\n !this.isCardSuccess &&\n !this.errorPaymentAPM &&\n !!this.checkoutResponse?.result &&\n (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER)\n );\n }\n\n render() {\n if (!renewalState.isInitialized) {\n return <div class=\"loading\">{I18nService.translate('renewal.loading')}</div>;\n }\n\n const renderRenewalSummary = props => (\n <renewal-summary\n totalAmount={renewalState.data.price.amount}\n subTotalAmount={renewalState.data.subscription.subTotalAmount}\n currency={renewalState.data.price.currency}\n subscriptionTitle={renewalState.data.subscription.name[0]?.text || 'Subscription'}\n subscriptionAmount={renewalState.data.subscription.amount}\n nextChargeDate={renewalState.data.subscription.nextChargeDate}\n frequency={renewalState.data.subscription.frequency}\n couponCode={renewalState.data.price.couponCode}\n discountAmount={renewalState.data.price.discountedAmount}\n discountPercentage={renewalState.data.price.discountPercentage}\n {...props}\n />\n );\n\n return (\n <>\n <rebill-processing-payment style={{ display: this.isCardSubmitting ? 'block' : 'none' }} />\n {this.isCardSuccess ? (\n <renewal-success-page\n typePaymentMethod={this.currentPaymentMethod}\n paymentDate={this.getPaymentDate()}\n referenceNumber={this.getReferenceNumber()}\n cardLastFour={renewalState.data.subscription.cardLastFour}\n country={renewalState.data.price.country}\n paymentMethodName={PaymentMethodMapper.mapToAPMPaymentMethod(\n this.currentPaymentMethod,\n renewalState.data?.price?.country,\n )}\n bank={renewalState.form?.selectedBankId || ''}\n />\n ) : (\n <rebill-checkout-form\n style={{ display: this.isCardSubmitting || this.isCardSuccess ? 'none' : 'block' }}\n validationSchema={this.validationSchema}\n initialData={this.initialData}\n onSubmit={(args: any) => this.handleSubmit(args)}\n renderForm={({ submit, formData, errors }) => (\n <div class=\"rebill-checkout-renewal\">\n <div class=\"left-section\">\n <div class=\"left-section-container\">\n <organization-logo organization={renewalState.data.organization} />\n\n <div class=\"checkout-form-section\">\n {/* Customer Information - Readonly */}\n <user-information-static\n userInfo={{\n customerName: renewalState.data.subscription.customerName,\n customerEmail: renewalState.data.subscription.customerEmail,\n }}\n />\n\n {isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) &&\n renderRenewalSummary({\n displayedComponents: 'header',\n })}\n\n {isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) &&\n renderRenewalSummary({\n displayedComponents: 'details',\n })}\n\n {/* Payment Method Selection */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '32px' }}>\n <payment-method-selector\n enabledPaymentMethods={[\n ...new Set(\n renewalState.data.paymentMethods.map(\n pm => pm.type as PAYMENT_METHOD_ENUM,\n ),\n ),\n ]}\n defaultSelected={this.currentPaymentMethod}\n errorComponent={{\n showErrorComponent: this.currentPaymentError,\n alertTitle: PaymentErrorMapper.getErrorTitle(\n this.currentPaymentMethod,\n renewalState.data.price.country,\n this.errorMessage?.alertTitle,\n ),\n message: PaymentErrorMapper.getErrorMessage(\n this.errorMessage?.message,\n this.currentPaymentMethod,\n renewalState.data.price.country,\n ),\n }}\n cardError={{\n showCardInvalid: this.errorCardInvalid,\n type: null,\n }}\n country={renewalState.data.price.country}\n documentTypeError={errors?.documentType}\n documentNumberError={errors?.documentNumber}\n showDocument={\n !this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n (isFieldRequired('documentType', this.currentRequiredFields) ||\n isFieldRequired('documentNumber', this.currentRequiredFields))\n }\n />\n {/* Alert for non-card payment methods */}\n {this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.CARD &&\n renewalState.data.subscription?.paymentMethod ===\n PAYMENT_METHOD_ENUM.CARD && (\n <rebill-alert\n type=\"info\"\n message={I18nService.translate('renewal.paymentMethodAlert', {\n cardLastFour:\n renewalState.data?.subscription?.cardLastFour || '****',\n })}\n icon=\"calendar-edit\"\n variant=\"outlined\"\n colorIcon={COLORS_ENUM.PRIMARY}\n />\n )}\n {!this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n isFieldRequired('bankId', this.currentRequiredFields) && (\n <div class=\"animated-component fade-in\">\n <rebill-bank-selector\n banks={\n getFieldValues(\n 'bank',\n this.allRequiredFields[this.currentPaymentMethod]?.original,\n ) || []\n }\n defaultSelectedBankId={formData.bankId || ''}\n error={errors?.bankId}\n />\n </div>\n )}\n </div>\n {!this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n (isFieldRequired('billing-country', this.currentRequiredFields) ||\n isFieldRequired('billing-state', this.currentRequiredFields) ||\n isFieldRequired('billing-address', this.currentRequiredFields) ||\n isFieldRequired('billing-city', this.currentRequiredFields) ||\n isFieldRequired('billing-zip', this.currentRequiredFields)) && (\n <div class=\"animated-component slide-in\">\n <rebill-address\n countryOptions={this.countries.map(country => ({\n label: country.country,\n value: country.isoCountryCode,\n }))}\n billingView={this.hasPrefilledAddress() ? 'form' : 'search'}\n errors={{\n 'billing-country': errors['billing-country'],\n 'billing-state': errors['billing-state'],\n 'billing-address': errors['billing-address'],\n 'billing-city': errors['billing-city'],\n 'billing-zip': errors['billing-zip'],\n }}\n />\n </div>\n )}\n {!this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n isFieldRequired('phoneNumber', this.currentRequiredFields) && (\n <div class=\"animated-component fade-in\">\n <user-information-phone error={errors?.phoneNumber} />\n </div>\n )}\n\n {/* Show APM checkout response after successful payment submission */}\n {this.isAPMCheckoutVisible && (\n <apm-checkout\n paymentMethod={this.currentPaymentMethod}\n referenceId={\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH\n ? this.checkoutResponse.result.data.referenceId\n : undefined\n }\n qrCodeData={\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ? this.checkoutResponse.result.data.qrCode\n : undefined\n }\n providerName={renewalState.data.organization?.name || ''}\n expirationDate={(() => {\n const expirationDate = new Date();\n expirationDate.setDate(expirationDate.getDate() + 30);\n return expirationDate.toISOString();\n })()}\n country={renewalState.data.price.country}\n redirectUrl={this.checkoutResponse.result.data.url}\n />\n )}\n\n {isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) &&\n renderRenewalSummary({\n displayedComponents: 'summary',\n })}\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n {/* Payment Button */}\n {!this.isAPMCheckoutVisible && (\n <payment-button\n paymentMethod={this.currentPaymentMethod}\n isLoading={this.isSubmitting}\n isRenewal={true}\n trialPeriodDays={renewalState.data.subscription.trialPeriodDays}\n redirectUrl={!!this.checkoutResponse?.result?.data?.url}\n timeToRedirect={5000}\n country={renewalState.data.price.country}\n isDisabled={renewalState.fetchingInstallments}\n onSubmit={() => submit()}\n />\n )}\n\n {/* Disabled Button Below */}\n <rebill-alert\n type=\"secure\"\n variant=\"variant-secure\"\n icon=\"lock-outline\"\n message={I18nService.translate('otp.secureMessage')}\n />\n </div>\n </div>\n <rebill-footer\n style={{\n marginTop: isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP)\n ? '24px'\n : 'auto',\n }}\n />\n </div>\n </div>\n\n {/* Desktop Summary */}\n {!isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) && (\n <div class=\"right-section\">\n <div class=\"checkout-summary-section\">\n {renderRenewalSummary({\n displayedComponents: ['header', 'details', 'summary'],\n })}\n </div>\n </div>\n )}\n </div>\n )}\n />\n )}\n </>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"rebill-renewal.js","sourceRoot":"","sources":["../../../src/components/renewal/rebill-renewal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\nimport * as yup from 'yup';\nimport { api, Country } from '../../api';\nimport { SavedCard } from '../../api/entities/cards/types';\nimport {\n CheckoutStatusE,\n CreateAPMCheckoutRequest,\n CreateAPMCheckoutResponse,\n CreateCardCheckoutRequest,\n} from '../../api/entities/checkout/types';\nimport '../../components/checkout/apm/apm-checkout/apm-checkout';\nimport '../../components/checkout/processing-payment/processing-payment';\nimport { I18nService } from '../../i18n/i18n.service';\n\nimport { PaymentMethodNameE } from '../../models/enums/payment-method-name.enum';\nimport { PAYMENT_METHOD_ENUM } from '../../models/enums/payment-methods.enum';\nimport { PaymentMessageE } from '../../models/enums/payment-status.enum';\nimport { STATUS_REQ_CHECKOUT_APM } from '../../models/enums/status-req-checkout-apm.enum';\nimport { onChange as renewalOnChange, renewalState, RenewalStore } from '../../store/renewal.store';\nimport { BREAKPOINT_ENUM, getBreakpoint, isBreakpointBelow } from '../../utils/breakpoint';\nimport { COLORS_ENUM } from '../../utils/color-class-mapper';\nimport { generateIdempotencyKey } from '../../utils/generate-idempotency-key';\nimport { GoogleMapsService } from '../../utils/google-maps.service';\nimport { AlertErrorKeys, PaymentErrorMapper } from '../../utils/payment-error-mapper';\nimport { PaymentMethodMapper } from '../../utils/payment-method-mapper';\nimport { getFieldValues, isFieldRequired } from '../../utils/required-fields-mappers';\nimport {\n AllRequiredFieldsMap,\n getAllRequiredFieldsRenewal,\n getRequiredFieldsForMethod,\n} from './utils/getRequiredFieldsRenewal';\n\n@Component({\n tag: 'rebill-renewal',\n styleUrl: 'rebill-renewal.css',\n shadow: false,\n})\nexport class RebillRenewal {\n @Prop() renewalData!: string;\n @Prop() renewalToken!: string;\n\n @State() currentPaymentMethod: PAYMENT_METHOD_ENUM = PAYMENT_METHOD_ENUM.CARD;\n @State() isSubmitting: boolean = false;\n @State() isCardSubmitting: boolean = false;\n @State() isCardSuccess: boolean = false;\n @State() errorMessage: AlertErrorKeys | null = null;\n @State() breakpoint: BREAKPOINT_ENUM = BREAKPOINT_ENUM.DESKTOP;\n @State() errorPaymentCard: boolean = false;\n @State() errorPaymentAPM: boolean = false;\n @State() initialData: any = {};\n @State() checkoutResponse: CreateAPMCheckoutResponse | null = null;\n @State() currentApmPaymentMethod: PaymentMethodNameE | null = null;\n @State() countries: Country[] = [];\n @State() allRequiredFields: AllRequiredFieldsMap = {};\n @State() currentRequiredFields: string[] = [];\n @State() errorCardInvalid: boolean = false;\n @State() cardMode: 'input' | 'select' | null = 'select';\n\n @Event() success: EventEmitter<any>;\n @Event() paymentError: EventEmitter<any>;\n @Event() paymentMethodSelected: EventEmitter<PAYMENT_METHOD_ENUM>;\n\n private validationSchema = {\n 'phoneNumber': yup.string().when([], {\n is: () =>\n isFieldRequired('phoneNumber', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.phoneRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-country': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-country', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.countryRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-state': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-state', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.stateRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-address': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-address', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.addressRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-city': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-city', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.cityRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'billing-zip': yup.string().when([], {\n is: () =>\n isFieldRequired('billing-zip', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.zipRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'bankId': yup.string().when([], {\n is: () => isFieldRequired('bankId', this.currentRequiredFields),\n then: schema => schema.required('validation.bankRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentType': yup.string().when([], {\n is: () =>\n isFieldRequired('documentType', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => schema.required('validation.documentTypeRequired'),\n otherwise: schema => schema.notRequired(),\n }),\n 'documentNumber': yup.string().when([], {\n is: () =>\n isFieldRequired('documentNumber', this.currentRequiredFields) && this.cardMode === 'input',\n then: schema => {\n const baseSchema = schema.required('validation.documentNumberRequired').min(7, 'validation.documentInvalid');\n\n // For BR checkout, validate that document number contains only digits\n if (renewalState.data?.price?.country === 'BR') {\n return baseSchema.test(\n 'numeric-only',\n 'validation.documentNumberNumericOnly',\n value => {\n if (!value) return true; // Let required validation handle empty values\n return /^\\d+$/.test(value);\n }\n );\n }\n\n return baseSchema;\n },\n otherwise: schema => schema.notRequired(),\n }),\n };\n\n private resizeHandler = () => {\n this.breakpoint = getBreakpoint(window.innerWidth);\n };\n\n async componentWillLoad() {\n this.resizeHandler();\n window.addEventListener('resize', this.resizeHandler);\n\n const renewalProps =\n typeof this.renewalData === 'string' ? JSON.parse(this.renewalData) : this.renewalData;\n\n RenewalStore.initializeRenewal({\n ...renewalProps,\n token: this.renewalToken,\n });\n\n // Load Google Maps script for address autocomplete\n GoogleMapsService.loadGoogleMapsScript();\n\n // Load countries data\n try {\n const response = await api.data.getCountries();\n this.countries = response.data;\n } catch (error) {\n console.error('Error loading countries:', error);\n }\n\n // Load required fields data\n try {\n this.allRequiredFields = await getAllRequiredFieldsRenewal();\n } catch (error) {\n console.error('Error loading required fields:', error);\n }\n\n if (renewalState.data.paymentMethods.length > 0) {\n let defaultPaymentMethod: PAYMENT_METHOD_ENUM | null = null;\n\n if (renewalState.data.subscription?.paymentMethod) {\n const subscriptionPaymentMethod =\n renewalState.data.subscription.paymentMethod.toLowerCase();\n const mappedMethod =\n subscriptionPaymentMethod === 'card'\n ? PAYMENT_METHOD_ENUM.CARD\n : subscriptionPaymentMethod === 'bank_transfer'\n ? PAYMENT_METHOD_ENUM.BANK_TRANSFER\n : null;\n\n if (mappedMethod) {\n const isAvailable = renewalState.data.paymentMethods.some(pm => pm.type === mappedMethod);\n if (isAvailable) {\n defaultPaymentMethod = mappedMethod;\n }\n }\n }\n\n if (!defaultPaymentMethod) {\n defaultPaymentMethod = renewalState.data.paymentMethods[0].type as PAYMENT_METHOD_ENUM;\n }\n\n this.currentPaymentMethod = defaultPaymentMethod;\n RenewalStore.setSelectedPaymentMethod(defaultPaymentMethod);\n\n if (defaultPaymentMethod !== PAYMENT_METHOD_ENUM.CARD) {\n this.cardMode = 'input';\n RenewalStore.setCardMode('input');\n }\n\n try {\n this.currentRequiredFields = getRequiredFieldsForMethod(\n defaultPaymentMethod,\n this.allRequiredFields,\n ).fields;\n } catch (error) {\n console.error('Error getting required fields for method:', error);\n }\n\n await this.initializeFingerprint(defaultPaymentMethod);\n }\n\n this.initialData = this.getInitialData();\n\n renewalOnChange('cardMode', () => {\n this.cardMode = renewalState.cardMode;\n });\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.resizeHandler);\n }\n\n @Listen('paymentMethodSelected')\n async handlePaymentMethodSelected(event: CustomEvent<PAYMENT_METHOD_ENUM>) {\n event.stopPropagation();\n\n if (this.currentPaymentMethod === event.detail) {\n return;\n }\n\n this.currentPaymentMethod = event.detail;\n RenewalStore.setSelectedPaymentMethod(this.currentPaymentMethod);\n\n // Change cardMode to 'input' if payment method is not CARD\n if (this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.CARD) {\n this.cardMode = 'input';\n RenewalStore.setCardMode('input');\n }\n\n // Update required fields for the new payment method\n try {\n this.currentRequiredFields = getRequiredFieldsForMethod(\n this.currentPaymentMethod,\n this.allRequiredFields,\n ).fields;\n } catch (error) {\n console.error('Error getting required fields for method:', error);\n }\n\n // Note: Fingerprint is handled in componentWillLoad\n\n // Initialize fingerprint for the new payment method\n await this.initializeFingerprint(this.currentPaymentMethod);\n\n this.paymentMethodSelected.emit(event.detail);\n }\n\n private async initializeFingerprint(paymentMethod: PAYMENT_METHOD_ENUM) {\n // Only initialize fingerprint for card payments and if not already generated\n if (paymentMethod === PAYMENT_METHOD_ENUM.CARD && !renewalState.deviceId) {\n try {\n const uuid = crypto.randomUUID();\n const fingerprintResponse = await api.fingerPrint.getFingerPrint(uuid);\n RenewalStore.setDeviceId(uuid);\n const script = fingerprintResponse.result.script;\n const scriptElement = document.createElement('script');\n scriptElement.innerHTML = script;\n document.body.appendChild(scriptElement);\n } catch (error) {\n console.error('Failed to initialize fingerprint:', error);\n }\n }\n }\n\n @Listen('bankSelected')\n handleBankSelected(event: CustomEvent<string>) {\n event.stopPropagation();\n RenewalStore.setSelectedBankId(event.detail);\n }\n\n @Listen('cardSelected')\n handleCardSelected(event: CustomEvent<{ card: SavedCard; cvv?: string }>) {\n const { card, cvv } = event.detail;\n RenewalStore.setSelectedCard(card);\n RenewalStore.setCvv(cvv || '');\n }\n\n private get currentPaymentError(): boolean {\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n return this.errorPaymentCard;\n } else if (\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ) {\n return this.errorPaymentAPM;\n }\n return false;\n }\n\n private async handleSubmit(event?: CustomEvent) {\n if (this.isSubmitting) {\n return;\n }\n\n if (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CARD) {\n await this.handleCardRenewal(event);\n } else {\n await this.handleAPMRenewal(event);\n }\n }\n\n private async handleCardRenewal(event?: CustomEvent) {\n const formData = event?.detail || this.getInitialData();\n\n if (!renewalState.data.cardId && !renewalState.data.cardTokenId) {\n this.errorCardInvalid = true;\n return;\n }\n if (!renewalState.data.cardInformation && !renewalState.data.cardId) {\n this.errorCardInvalid = true;\n return;\n }\n this.errorCardInvalid = false;\n this.isSubmitting = true;\n this.isCardSubmitting = true;\n RenewalStore.setLoading(true);\n\n try {\n const renewalRequest: CreateCardCheckoutRequest = {\n transaction: {\n quantity: 1,\n },\n ...(renewalState.data.cardId && { cardId: renewalState.data.cardId }),\n ...(renewalState.data.cardTokenId && { cardTokenId: renewalState.data.cardTokenId }),\n customAttributes: {\n ...(renewalState.deviceId && { deviceId: renewalState.deviceId }),\n },\n ...(this.cardMode === 'input' && {\n customer: {\n firstName:\n formData.fullName?.split(' ')[0] ||\n renewalState.data.subscription.customerName?.split(' ')[0],\n lastName:\n formData.fullName?.split(' ').slice(1).join(' ') ||\n renewalState.data.subscription.customerName?.split(' ').slice(1).join(' '),\n email: formData.email || renewalState.data.subscription.customerEmail,\n phone: {\n countryCode: formData.countryCodePhoneNumber || '',\n number: formData.phoneNumber || '',\n },\n },\n billingDetails: {\n address: {\n lineOne: formData['billing-address'] || '',\n city: formData['billing-city'] || '',\n state: formData['billing-state'] || '',\n country: formData['billing-country'] || '',\n zipCode: formData['billing-zip'] || '',\n },\n identification: {\n type: formData.documentType || '',\n value: formData.documentNumber || '',\n },\n },\n }),\n };\n\n const idempotencyKey = generateIdempotencyKey();\n const response = await api.checkout.createCardCheckoutRequest(\n renewalState.data.id,\n idempotencyKey,\n renewalRequest,\n renewalState.token,\n );\n\n this.isSubmitting = false;\n this.isCardSubmitting = false;\n RenewalStore.setLoading(false);\n RenewalStore.setCheckoutResponse(response.data);\n\n if (response.data.result?.status.toUpperCase() === CheckoutStatusE.APPROVED) {\n this.isCardSuccess = true;\n } else {\n this.isCardSuccess = false;\n this.errorPaymentCard = true;\n this.errorMessage = {\n message: response.data.error?.error?.message as PaymentMessageE,\n };\n }\n } catch (error: any) {\n this.isSubmitting = false;\n this.isCardSubmitting = false;\n RenewalStore.setLoading(false);\n\n this.errorPaymentCard = true;\n this.errorMessage = {\n message: error.data?.error?.message as PaymentMessageE,\n };\n }\n }\n\n private async handleAPMRenewal(event?: CustomEvent) {\n this.isSubmitting = true;\n RenewalStore.setLoading(true);\n\n try {\n const apmPaymentMethod = PaymentMethodMapper.mapToAPMPaymentMethod(\n this.currentPaymentMethod,\n renewalState.data.price.country,\n );\n\n // Get form data for billing details and customer info\n const formData = event?.detail || this.getFormData();\n\n // Transform form data to match CreateAPMCheckoutRequest structure\n const billingDetails = {\n address: {\n country: formData['billing-country'],\n state: formData['billing-state'] || '',\n city: formData['billing-city'] || '',\n zipCode: formData['billing-zip'] || '',\n lineOne: formData['billing-address'] || '',\n },\n identification: {\n type: formData.documentType || 'dni',\n value: formData.documentNumber || '',\n },\n };\n\n const renewalRequest: CreateAPMCheckoutRequest = {\n transaction: {\n quantity: 1,\n },\n method: apmPaymentMethod,\n billingDetails,\n redirect: {\n approved: window.location.origin + '/renewal/success',\n rejected: window.location.origin + '/renewal/failure',\n },\n paymentMetadata: {\n orderId: renewalState.data.id,\n source: 'renewal-web',\n },\n customAttributes: {\n bank: formData.bankId || '',\n },\n };\n\n // Add customer data for renewal\n renewalRequest.customer = {\n firstName:\n formData.fullName?.split(' ')[0] ||\n renewalState.data.subscription.customerName.split(' ')[0] ||\n '',\n lastName:\n formData.fullName?.split(' ').slice(1).join(' ') ||\n renewalState.data.subscription.customerName.split(' ').slice(1).join(' ') ||\n '',\n email: formData.email || renewalState.data.subscription.customerEmail,\n phone: {\n countryCode: formData.countryCodePhoneNumber || '',\n number: formData.phoneNumber || '',\n },\n };\n\n const idempotencyKey = generateIdempotencyKey();\n const response = await api.checkout.createAPMCheckoutRequest(\n renewalState.data.id,\n idempotencyKey,\n renewalRequest,\n );\n\n this.isSubmitting = false;\n RenewalStore.setLoading(false);\n RenewalStore.setCheckoutResponse(response.data);\n this.checkoutResponse = response.data;\n const status = response.data.result?.status?.toString().toLowerCase();\n const isApproved = status === CheckoutStatusE.APPROVED.toLowerCase();\n const isPendingCustomerCharge = status === STATUS_REQ_CHECKOUT_APM.PENDING_CUSTOMER_CHARGE;\n\n if (isApproved) {\n this.isCardSuccess = true;\n this.errorPaymentAPM = false;\n this.errorMessage = null;\n } else if (isPendingCustomerCharge) {\n // Keep showing the QR/URL without showing an error for pending Pix payments\n this.isCardSuccess = false;\n this.errorPaymentAPM = false;\n this.errorMessage = null;\n } else {\n this.paymentError.emit(response.data);\n RenewalStore.setCheckoutResponse(response.data);\n this.errorPaymentAPM = true;\n\n this.errorMessage = {\n alertTitle: response.data?.error?.message as PaymentMessageE,\n message: response.data.error?.message as PaymentMessageE,\n };\n }\n } catch (error: any) {\n this.isSubmitting = false;\n RenewalStore.setLoading(false);\n this.paymentError.emit(error);\n this.errorPaymentAPM = true;\n\n this.errorMessage = {\n alertTitle: error.data?.error?.message as PaymentMessageE,\n message: error.data?.error?.message,\n };\n }\n }\n\n private getFormData = () => {\n return this.initialData;\n };\n\n private getInitialData = () => {\n return {\n 'email': renewalState.data.subscription.customerEmail,\n 'fullName': renewalState.data.subscription.customerName,\n 'card': '',\n 'billing-country': '',\n 'billing-state': '',\n 'billing-address': '',\n 'billing-city': '',\n 'billing-zip': '',\n 'bankId': '',\n 'phoneNumber': '',\n 'countryCodePhoneNumber': '',\n 'documentType': '',\n 'documentNumber': '',\n };\n };\n\n private hasPrefilledAddress = () => {\n const billingFields = [\n 'billing-country',\n 'billing-state',\n 'billing-address',\n 'billing-city',\n 'billing-zip',\n ];\n return billingFields.some(key => {\n const value = this.initialData[key];\n return value && value.trim() !== '';\n });\n };\n\n private getPaymentDate = (): string => {\n const payment = renewalState.form.checkoutResponse;\n if (!payment) return '';\n\n if ('date' in payment) {\n return payment.date as string;\n }\n\n return '';\n };\n\n private getReferenceNumber = (): string => {\n const payment = renewalState.form.checkoutResponse;\n if (!payment) return '';\n if ('traceId' in payment) {\n return payment.traceId as string;\n }\n\n return '';\n };\n\n private get isAPMCheckoutVisible(): boolean {\n return (\n !this.isCardSuccess &&\n !this.errorPaymentAPM &&\n !!this.checkoutResponse?.result &&\n (this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH ||\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER)\n );\n }\n\n /**\n * Listen for payment status changes emitted by the APM checkout component (polling).\n * Mirrors the behavior in the main checkout flow so Pix/transfer renewals update when approved/rejected.\n */\n private handlePaymentStatusChange = (statusData: {\n status: STATUS_REQ_CHECKOUT_APM;\n isCompleted: boolean;\n data: any;\n }) => {\n if (statusData.isCompleted) {\n if (statusData.status === STATUS_REQ_CHECKOUT_APM.APPROVED) {\n this.isCardSuccess = true;\n this.errorPaymentAPM = false;\n this.errorMessage = null;\n this.success.emit({\n paymentMethod: this.currentPaymentMethod,\n data: this.checkoutResponse,\n });\n } else if (statusData.status === STATUS_REQ_CHECKOUT_APM.REJECTED) {\n this.errorPaymentAPM = true;\n this.errorMessage = {\n alertTitle: PaymentMessageE.APM_ERROR_GENERIC,\n message: PaymentMessageE.APM_MESSAGE_ERROR,\n };\n }\n }\n };\n\n render() {\n if (!renewalState.isInitialized) {\n return <div class=\"loading\">{I18nService.translate('renewal.loading')}</div>;\n }\n\n const renderRenewalSummary = props => (\n <renewal-summary\n totalAmount={renewalState.data.price.amount}\n subTotalAmount={renewalState.data.subscription.subTotalAmount}\n currency={renewalState.data.price.currency}\n subscriptionTitle={renewalState.data.subscription.name[0]?.text || 'Subscription'}\n subscriptionAmount={renewalState.data.subscription.amount}\n nextChargeDate={renewalState.data.subscription.nextChargeDate}\n frequency={renewalState.data.subscription.frequency}\n couponCode={renewalState.data.price.couponCode}\n discountAmount={renewalState.data.price.discountedAmount}\n discountPercentage={renewalState.data.price.discountPercentage}\n {...props}\n />\n );\n\n return (\n <>\n <rebill-processing-payment style={{ display: this.isCardSubmitting ? 'block' : 'none' }} />\n {this.isCardSuccess ? (\n <renewal-success-page\n typePaymentMethod={this.currentPaymentMethod}\n paymentDate={this.getPaymentDate()}\n referenceNumber={this.getReferenceNumber()}\n cardLastFour={renewalState.data.subscription.cardLastFour}\n country={renewalState.data.price.country}\n paymentMethodName={PaymentMethodMapper.mapToAPMPaymentMethod(\n this.currentPaymentMethod,\n renewalState.data?.price?.country,\n )}\n bank={renewalState.form?.selectedBankId || ''}\n />\n ) : (\n <rebill-checkout-form\n style={{ display: this.isCardSubmitting || this.isCardSuccess ? 'none' : 'block' }}\n validationSchema={this.validationSchema}\n initialData={this.initialData}\n onSubmit={(args: any) => this.handleSubmit(args)}\n renderForm={({ submit, formData, errors }) => (\n <div class=\"rebill-checkout-renewal\">\n <div class=\"left-section\">\n <div class=\"left-section-container\">\n <organization-logo organization={renewalState.data.organization} />\n\n <div class=\"checkout-form-section\">\n {/* Customer Information - Readonly */}\n <user-information-static\n userInfo={{\n customerName: renewalState.data.subscription.customerName,\n customerEmail: renewalState.data.subscription.customerEmail,\n }}\n />\n\n {isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) &&\n renderRenewalSummary({\n displayedComponents: 'header',\n })}\n\n {isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) &&\n renderRenewalSummary({\n displayedComponents: 'details',\n })}\n\n {/* Payment Method Selection */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '32px' }}>\n <payment-method-selector\n enabledPaymentMethods={[\n ...new Set(\n renewalState.data.paymentMethods.map(\n pm => pm.type as PAYMENT_METHOD_ENUM,\n ),\n ),\n ]}\n defaultSelected={this.currentPaymentMethod}\n errorComponent={{\n showErrorComponent: this.currentPaymentError,\n alertTitle: PaymentErrorMapper.getErrorTitle(\n this.currentPaymentMethod,\n renewalState.data.price.country,\n this.errorMessage?.alertTitle,\n ),\n message: PaymentErrorMapper.getErrorMessage(\n this.errorMessage?.message,\n this.currentPaymentMethod,\n renewalState.data.price.country,\n ),\n }}\n cardError={{\n showCardInvalid: this.errorCardInvalid,\n type: null,\n }}\n country={renewalState.data.price.country}\n documentTypeError={errors?.documentType}\n documentNumberError={errors?.documentNumber}\n showDocument={\n !this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n (isFieldRequired('documentType', this.currentRequiredFields) ||\n isFieldRequired('documentNumber', this.currentRequiredFields))\n }\n />\n {/* Alert for non-card payment methods */}\n {this.currentPaymentMethod !== PAYMENT_METHOD_ENUM.CARD &&\n renewalState.data.subscription?.paymentMethod ===\n PAYMENT_METHOD_ENUM.CARD && (\n <rebill-alert\n type=\"info\"\n message={I18nService.translate('renewal.paymentMethodAlert', {\n cardLastFour:\n renewalState.data?.subscription?.cardLastFour || '****',\n })}\n icon=\"calendar-edit\"\n variant=\"outlined\"\n colorIcon={COLORS_ENUM.PRIMARY}\n />\n )}\n {!this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n isFieldRequired('bankId', this.currentRequiredFields) && (\n <div class=\"animated-component fade-in\">\n <rebill-bank-selector\n banks={\n getFieldValues(\n 'bank',\n this.allRequiredFields[this.currentPaymentMethod]?.original,\n ) || []\n }\n defaultSelectedBankId={formData.bankId || ''}\n error={errors?.bankId}\n />\n </div>\n )}\n </div>\n {!this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n (isFieldRequired('billing-country', this.currentRequiredFields) ||\n isFieldRequired('billing-state', this.currentRequiredFields) ||\n isFieldRequired('billing-address', this.currentRequiredFields) ||\n isFieldRequired('billing-city', this.currentRequiredFields) ||\n isFieldRequired('billing-zip', this.currentRequiredFields)) && (\n <div class=\"animated-component slide-in\">\n <rebill-address\n countryOptions={this.countries.map(country => ({\n label: country.country,\n value: country.isoCountryCode,\n }))}\n billingView={this.hasPrefilledAddress() ? 'form' : 'search'}\n errors={{\n 'billing-country': errors['billing-country'],\n 'billing-state': errors['billing-state'],\n 'billing-address': errors['billing-address'],\n 'billing-city': errors['billing-city'],\n 'billing-zip': errors['billing-zip'],\n }}\n />\n </div>\n )}\n {!this.isAPMCheckoutVisible &&\n this.cardMode === 'input' &&\n isFieldRequired('phoneNumber', this.currentRequiredFields) && (\n <div class=\"animated-component fade-in\">\n <user-information-phone error={errors?.phoneNumber} />\n </div>\n )}\n\n {/* Show APM checkout response after successful payment submission */}\n {this.isAPMCheckoutVisible && (\n <apm-checkout\n paymentMethod={this.currentPaymentMethod}\n referenceId={\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.CASH\n ? this.checkoutResponse.result.data.referenceId\n : undefined\n }\n qrCodeData={\n this.currentPaymentMethod === PAYMENT_METHOD_ENUM.BANK_TRANSFER\n ? this.checkoutResponse.result.data.qrCode\n : undefined\n }\n code={this.checkoutResponse?.result?.data?.code}\n providerName={renewalState.data.organization?.name || ''}\n expirationDate={(() => {\n const expirationDate = new Date();\n expirationDate.setDate(expirationDate.getDate() + 30);\n return expirationDate.toISOString();\n })()}\n country={renewalState.data.price.country}\n redirectUrl={this.checkoutResponse.result.data.url}\n checkoutRequestId={this.checkoutResponse?.result?.checkoutRequestId}\n bearerToken={this.checkoutResponse?.result?.data?.bearerToken}\n onPaymentStatusChange={event =>\n this.handlePaymentStatusChange(event.detail)\n }\n />\n )}\n\n {isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) &&\n renderRenewalSummary({\n displayedComponents: 'summary',\n })}\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n {/* Payment Button */}\n {!this.isAPMCheckoutVisible && (\n <payment-button\n paymentMethod={this.currentPaymentMethod}\n isLoading={this.isSubmitting}\n isRenewal={true}\n trialPeriodDays={renewalState.data.subscription.trialPeriodDays}\n redirectUrl={!!this.checkoutResponse?.result?.data?.url}\n timeToRedirect={5000}\n country={renewalState.data.price.country}\n isDisabled={renewalState.fetchingInstallments}\n onSubmit={() => submit()}\n />\n )}\n\n {/* Disabled Button Below */}\n <rebill-alert\n type=\"secure\"\n variant=\"variant-secure\"\n icon=\"lock-outline\"\n message={I18nService.translate('otp.secureMessage')}\n />\n </div>\n </div>\n <rebill-footer\n style={{\n marginTop: isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP)\n ? '24px'\n : 'auto',\n }}\n />\n </div>\n </div>\n\n {/* Desktop Summary */}\n {!isBreakpointBelow(this.breakpoint, BREAKPOINT_ENUM.DESKTOP) && (\n <div class=\"right-section\">\n <div class=\"checkout-summary-section\">\n {renderRenewalSummary({\n displayedComponents: ['header', 'details', 'summary'],\n })}\n </div>\n </div>\n )}\n </div>\n )}\n />\n )}\n </>\n );\n }\n}\n"]}
@@ -78,7 +78,10 @@ export class Form {
78
78
  async handleBlur(event) {
79
79
  if (!event.detail || !event.detail.id)
80
80
  return;
81
- const { id, disabled } = event.detail;
81
+ const { id, value, disabled } = event.detail;
82
+ if (value !== undefined) {
83
+ this.setFieldValue(id, value);
84
+ }
82
85
  if (!disabled) {
83
86
  const error = await this.validator.validateField(id, this.formData);
84
87
  this.setFieldError(id, error);
@@ -105,7 +108,7 @@ export class Form {
105
108
  await this.submitForm();
106
109
  };
107
110
  render() {
108
- return (h("form", { key: '52bbd73020352379d4d196e1fa6ea32dbb5bf8cc', onSubmit: e => this.handleSubmit(e), noValidate: true }, this.renderForm ? (this.renderForm({
111
+ return (h("form", { key: '16a2a9b5f7a45b4fb4a00ab9177bc61680272da8', onSubmit: e => this.handleSubmit(e), noValidate: true }, this.renderForm ? (this.renderForm({
109
112
  submit: () => this.submitForm(),
110
113
  formData: this.formData,
111
114
  errors: this.errors,
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../../src/components/shared/form/form.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { FormData, FormErrors, FormValidator } from '../../../utils/form-validation';\n\n@Component({\n tag: 'rebill-form',\n shadow: false,\n})\nexport class Form {\n /** Esquema de validación del formulario */\n @Prop() validationSchema: any;\n /** Datos iniciales del formulario */\n @Prop() initialData: FormData = {};\n /** Evento cuando el formulario es válido y se envía */\n @Event() submit: EventEmitter<FormData>;\n /** Evento cuando hay cambios en el formulario */\n @Event() change: EventEmitter<FormData>;\n /** Función render prop para controlar el formulario */\n @Prop() renderForm?: (props: {\n submit: () => void;\n formData: FormData;\n errors: FormErrors;\n }) => any;\n\n @State() formData: FormData = {};\n @State() errors: FormErrors = {};\n private validator: FormValidator;\n private hasSubmitted: boolean = false;\n\n @Watch('initialData')\n handleInitialDataChange(newValue: FormData) {\n const updatedFormData = { ...this.formData };\n Object.keys(newValue).forEach(key => {\n if (updatedFormData[key] === undefined || updatedFormData[key] === '') {\n updatedFormData[key] = newValue[key];\n }\n });\n this.formData = updatedFormData;\n this.change.emit(this.formData);\n }\n\n @Watch('validationSchema')\n handleValidationSchemaChange(newSchema: any) {\n this.validator = new FormValidator(newSchema);\n }\n\n componentWillLoad() {\n this.formData = { ...this.initialData };\n this.validator = new FormValidator(this.validationSchema);\n setTimeout(() => {\n this.change.emit(this.formData);\n }, 100);\n }\n\n private setFieldValue(id: string, value: any) {\n if (this.formData[id] !== value) {\n this.formData = {\n ...this.formData,\n [id]: value,\n };\n }\n }\n\n private setFieldError(id: string, error: string) {\n if (this.errors[id] !== error) {\n this.errors = {\n ...this.errors,\n [id]: error,\n };\n }\n }\n\n private clearFieldError(id: string) {\n if (this.hasFieldError(id)) {\n this.setFieldError(id, '');\n }\n }\n\n private hasFieldError(id: string) {\n return this.errors[id] !== '';\n }\n\n @Listen('input')\n async handleInputChange(event: CustomEvent) {\n if (!event.detail || !event.detail.id) return;\n const { id, value, disabled } = event.detail;\n\n this.setFieldValue(id, value);\n\n if (this.hasSubmitted && !disabled) {\n const error = await this.validator.validateField(id, this.formData);\n this.setFieldError(id, error);\n } else {\n if (this.hasFieldError(id)) {\n this.clearFieldError(id);\n }\n }\n this.change.emit(this.formData);\n }\n @Listen('blur')\n async handleBlur(event: CustomEvent) {\n if (!event.detail || !event.detail.id) return;\n const { id, disabled } = event.detail;\n\n if (!disabled) {\n const error = await this.validator.validateField(id, this.formData);\n this.setFieldError(id, error);\n }\n }\n\n @Method()\n async submitForm() {\n this.hasSubmitted = true;\n this.errors = {};\n\n const errors = await this.validator.validateForm(this.formData);\n this.errors = errors;\n\n if (Object.values(this.errors).filter(value => !!value).length === 0) {\n this.submit.emit(this.formData);\n }\n }\n\n @Method()\n async resetValidation() {\n this.hasSubmitted = false;\n this.errors = {};\n }\n\n @Method()\n async clearError(fieldId: string) {\n this.clearFieldError(fieldId);\n }\n private handleSubmit = async (event: Event) => {\n event.preventDefault();\n await this.submitForm();\n };\n\n render() {\n return (\n <form onSubmit={e => this.handleSubmit(e)} noValidate>\n {this.renderForm ? (\n this.renderForm({\n submit: () => this.submitForm(),\n formData: this.formData,\n errors: this.errors,\n })\n ) : (\n <slot></slot>\n )}\n </form>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../../src/components/shared/form/form.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { FormData, FormErrors, FormValidator } from '../../../utils/form-validation';\n\n@Component({\n tag: 'rebill-form',\n shadow: false,\n})\nexport class Form {\n /** Esquema de validación del formulario */\n @Prop() validationSchema: any;\n /** Datos iniciales del formulario */\n @Prop() initialData: FormData = {};\n /** Evento cuando el formulario es válido y se envía */\n @Event() submit: EventEmitter<FormData>;\n /** Evento cuando hay cambios en el formulario */\n @Event() change: EventEmitter<FormData>;\n /** Función render prop para controlar el formulario */\n @Prop() renderForm?: (props: {\n submit: () => void;\n formData: FormData;\n errors: FormErrors;\n }) => any;\n\n @State() formData: FormData = {};\n @State() errors: FormErrors = {};\n private validator: FormValidator;\n private hasSubmitted: boolean = false;\n\n @Watch('initialData')\n handleInitialDataChange(newValue: FormData) {\n const updatedFormData = { ...this.formData };\n Object.keys(newValue).forEach(key => {\n if (updatedFormData[key] === undefined || updatedFormData[key] === '') {\n updatedFormData[key] = newValue[key];\n }\n });\n this.formData = updatedFormData;\n this.change.emit(this.formData);\n }\n\n @Watch('validationSchema')\n handleValidationSchemaChange(newSchema: any) {\n this.validator = new FormValidator(newSchema);\n }\n\n componentWillLoad() {\n this.formData = { ...this.initialData };\n this.validator = new FormValidator(this.validationSchema);\n setTimeout(() => {\n this.change.emit(this.formData);\n }, 100);\n }\n\n private setFieldValue(id: string, value: any) {\n if (this.formData[id] !== value) {\n this.formData = {\n ...this.formData,\n [id]: value,\n };\n }\n }\n\n private setFieldError(id: string, error: string) {\n if (this.errors[id] !== error) {\n this.errors = {\n ...this.errors,\n [id]: error,\n };\n }\n }\n\n private clearFieldError(id: string) {\n if (this.hasFieldError(id)) {\n this.setFieldError(id, '');\n }\n }\n\n private hasFieldError(id: string) {\n return this.errors[id] !== '';\n }\n\n @Listen('input')\n async handleInputChange(event: CustomEvent) {\n if (!event.detail || !event.detail.id) return;\n const { id, value, disabled } = event.detail;\n\n this.setFieldValue(id, value);\n\n if (this.hasSubmitted && !disabled) {\n const error = await this.validator.validateField(id, this.formData);\n this.setFieldError(id, error);\n } else {\n if (this.hasFieldError(id)) {\n this.clearFieldError(id);\n }\n }\n this.change.emit(this.formData);\n }\n @Listen('blur')\n async handleBlur(event: CustomEvent) {\n if (!event.detail || !event.detail.id) return;\n const { id, value, disabled } = event.detail as { id: string; value?: any; disabled?: boolean };\n\n if (value !== undefined) {\n this.setFieldValue(id, value);\n }\n\n if (!disabled) {\n const error = await this.validator.validateField(id, this.formData);\n this.setFieldError(id, error);\n }\n }\n\n @Method()\n async submitForm() {\n this.hasSubmitted = true;\n this.errors = {};\n\n const errors = await this.validator.validateForm(this.formData);\n this.errors = errors;\n\n if (Object.values(this.errors).filter(value => !!value).length === 0) {\n this.submit.emit(this.formData);\n }\n }\n\n @Method()\n async resetValidation() {\n this.hasSubmitted = false;\n this.errors = {};\n }\n\n @Method()\n async clearError(fieldId: string) {\n this.clearFieldError(fieldId);\n }\n private handleSubmit = async (event: Event) => {\n event.preventDefault();\n await this.submitForm();\n };\n\n render() {\n return (\n <form onSubmit={e => this.handleSubmit(e)} noValidate>\n {this.renderForm ? (\n this.renderForm({\n submit: () => this.submitForm(),\n formData: this.formData,\n errors: this.errors,\n })\n ) : (\n <slot></slot>\n )}\n </form>\n );\n }\n}\n"]}
@@ -185,20 +185,17 @@ export class InputPhone {
185
185
  this.input.emit({ id: this.validationErrorId, value: validationResult.isValid.toString() });
186
186
  };
187
187
  emitBlurPhone = async () => {
188
- await PhoneValidator.validate(this.value, {
188
+ const validation = await PhoneValidator.validate(this.value, {
189
189
  required: this.required,
190
190
  country: this.selectedCountry,
191
191
  });
192
- // this.blurPhone.emit({
193
- // id: this.phoneNumberId,
194
- // value: this.value,
195
- // });
196
- // this.blurPhone.emit({
197
- // id: this.countryCodeId,
198
- // value: this.selectedCountry.dialCode,
199
- // });
200
192
  this.blur.emit({ id: this.phoneNumberId, value: this.value });
201
193
  this.blur.emit({ id: this.countryCodeId, value: this.selectedCountry.dialCode });
194
+ // Emit also the validation flag so the form can validate the correct schema field on blur
195
+ this.blur.emit({
196
+ id: this.validationErrorId,
197
+ value: validation.isValid.toString(),
198
+ });
202
199
  };
203
200
  handleClickOutside = (event) => {
204
201
  const target = event.target;
@@ -232,11 +229,11 @@ export class InputPhone {
232
229
  // Usar translateError para ambos tipos de errores
233
230
  const translatedError = this.translateError(this.error);
234
231
  const translatedValidationError = this.translateError(this.validationError);
235
- const displayError = translatedError || translatedValidationError;
236
- return (h("div", { key: '9bfb1a075b9ea338d062f260ca89e3036ad489ae', class: "input-container" }, h("div", { key: '60af8d6684ef5c3b576de699ba522ec0d8147bf0', class: inputClasses }, h("div", { key: 'f48255f3bb5fdea49bd3a6d8617939f89e111465', class: "input-combo-select country-selector", onClick: this.toggleDropdown }, h("span", { key: 'c824bbb3c4c14ad31f45aaf5414b4000f3364a18', class: "flag" }, this.selectedCountry.flag), h("span", { key: '0a1f614c791c4bd3490fb9b259d7aba5fb179210', class: "dial-code" }, this.selectedCountry.dialCode), h("span", { key: 'f9eb3ac4c2675afc7445dcfbc0cf0f0a70c8e721', class: `dropdown-arrow ${this.isDropdownOpen ? 'open' : ''}` }, "\u25BC")), this.isDropdownOpen && (h("div", { key: 'e0ef26d1fa03ccadf93955f4775f7e965f2e8988', class: "country-dropdown" }, this.searchable && (h("div", { key: '18bb6464cd28a58137cedbf62c5487f43daf62a8', class: "search-container", onClick: this.handleSearchClick }, h("div", { key: '844c66e1899ba58ce199fcb7f76a056629c8a887', class: "search-input-wrapper" }, h("rebill-icon", { key: '35d725f71c63307f2f62a528919723469c4584b7', name: "search", size: "16px", class: "search-icon" }), h("input", { key: '9b0abbc8b57424841a611dc76892979b7ae29955', ref: el => (this.searchInputRef = el), type: "text", class: "search-input", placeholder: this.searchPlaceholder, value: this.searchTerm, onInput: this.handleSearchInput, onClick: this.handleSearchClick }), this.searchTerm && (h("button", { key: 'c9426b67a6121cfa453d43ffe1ca83a257303f86', type: "button", class: "clear-search", onClick: event => {
232
+ const displayError = translatedValidationError || translatedError;
233
+ return (h("div", { key: '8ba4b3763fed5beaa63d3c03997a5d3225bdac2b', class: "input-container" }, h("div", { key: '4d8a081c6818b007a66e749ade19ed2a03bcbfa2', class: inputClasses }, h("div", { key: 'b99f8c73cb689ecf8b6b23c99dfea1fbc8d7679a', class: "input-combo-select country-selector", onClick: this.toggleDropdown }, h("span", { key: '579c92643304fb84edffd02eaafa0c8d053dea67', class: "flag" }, this.selectedCountry.flag), h("span", { key: '87323ab9edab7a9716b3f25526d343faa5789d22', class: "dial-code" }, this.selectedCountry.dialCode), h("span", { key: 'abe6273a9664575c362ee793412baca2a2128810', class: `dropdown-arrow ${this.isDropdownOpen ? 'open' : ''}` }, "\u25BC")), this.isDropdownOpen && (h("div", { key: 'cf8da028b705288941dad87e277cbccf6a4a6830', class: "country-dropdown" }, this.searchable && (h("div", { key: 'c803f6f2b353618554edfa51204e9ec4cf3331d3', class: "search-container", onClick: this.handleSearchClick }, h("div", { key: '128a73017eee1f7d4e1ee5dcf4a20f09bc45889e', class: "search-input-wrapper" }, h("rebill-icon", { key: '9fdd3b1c87db54bb16c97ea895c548ed548a9677', name: "search", size: "16px", class: "search-icon" }), h("input", { key: 'a87ef75600838f3a9f4196fd66574eac53ef342e', ref: el => (this.searchInputRef = el), type: "text", class: "search-input", placeholder: this.searchPlaceholder, value: this.searchTerm, onInput: this.handleSearchInput, onClick: this.handleSearchClick }), this.searchTerm && (h("button", { key: 'c0c46bad64ec034a954d9714568ff95ee39f88b4', type: "button", class: "clear-search", onClick: event => {
237
234
  event.stopPropagation();
238
235
  this.clearSearch();
239
- }, "aria-label": "Clear search" }, h("rebill-icon", { key: '0c6c770adc4587627336ad73d5740931d2fc35d7', name: "x", size: "16px" })))))), this.filteredCountries.length > 0 ? (this.filteredCountries.map(country => (h("div", { key: country.code, class: "country-option", onClick: e => this.selectCountry(country, e) }, h("span", { class: "flag" }, country.flag), h("span", { class: "country-name" }, country.name), h("span", { class: "dial-code" }, country.dialCode))))) : (h("div", { class: "no-results" }, "No se encontraron resultados")))), h("input", { key: '7a1a13857f138578f13a8c3430f1f41afc115d96', id: this.phoneNumberId, type: "tel", class: "input-combo-element phone-number-input", placeholder: this.placeholder, value: this.value, onInput: this.onInput, onBlur: this.onPhoneBlurPhone, disabled: this.disabled, required: this.required })), displayError && h("span", { key: 'cb53860dcc25c54579ac45c7a785bb3e540b3c3a', class: "error-message" }, displayError)));
236
+ }, "aria-label": "Clear search" }, h("rebill-icon", { key: '2c37884a69bdc23cee3d2c02f45c066e6bebc835', name: "x", size: "16px" })))))), this.filteredCountries.length > 0 ? (this.filteredCountries.map(country => (h("div", { key: country.code, class: "country-option", onClick: e => this.selectCountry(country, e) }, h("span", { class: "flag" }, country.flag), h("span", { class: "country-name" }, country.name), h("span", { class: "dial-code" }, country.dialCode))))) : (h("div", { class: "no-results" }, "No se encontraron resultados")))), h("input", { key: '18afad61f393316cb5128d64de384c3873921685', id: this.phoneNumberId, type: "tel", class: "input-combo-element phone-number-input", placeholder: this.placeholder, value: this.value, onInput: this.onInput, onBlur: this.onPhoneBlurPhone, disabled: this.disabled, required: this.required })), displayError && h("span", { key: '7c1cedfe0647fd05df06229d36784b5d6340f84f', class: "error-message" }, displayError)));
240
237
  }
241
238
  static get is() { return "rebill-input-phone"; }
242
239
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"input-phone.js","sourceRoot":"","sources":["../../../../../src/components/shared/inputs/input-phone/input-phone.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Listen, Prop, State, h } from '@stencil/core';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { COUNTRIES, CountryOption } from '../../../../models';\nimport { SessionStore } from '../../../../store/session.store';\nimport { PhoneValidator } from './phone-validation';\n\n@Component({\n tag: 'rebill-input-phone',\n styleUrl: 'input-phone.css',\n shadow: false,\n})\nexport class InputPhone {\n @Element() el: HTMLElement;\n private searchInputRef?: HTMLInputElement;\n private unsubscribeCurrentLocaleStore?: () => void;\n\n /** Placeholder del input */\n @Prop() placeholder: string = '';\n /** Valor del input */\n @Prop({ mutable: true, reflect: true }) value: string = '';\n /** Mensaje de error */\n @Prop() error: string = '';\n /** ID del input */\n @Prop() phoneNumberId: string = '';\n @Prop() countryCodeId: string = '';\n @Prop() validationErrorId: string = '';\n\n /** Estado deshabilitado */\n @Prop() disabled: boolean = false;\n /** País inicial por defecto */\n @Prop() initialCountry: string = 'ar';\n /** Validación requerida */\n @Prop() required: boolean = false;\n /** Habilitar funcionalidad de búsqueda en el selector de países */\n @Prop() searchable: boolean = false;\n /** Placeholder del campo de búsqueda de países */\n @Prop() searchPlaceholder: string = 'Search for countries...';\n\n @Event() input: EventEmitter<{ id: string; value: string }>;\n @Event() blur: EventEmitter<{ id: string; value: string }>;\n\n @State() selectedCountry: CountryOption = COUNTRIES.find(c => c.code === this.initialCountry);\n @State() isDropdownOpen: boolean = false;\n @State() validationError: string = '';\n @State() searchTerm: string = '';\n @State() filteredCountries: CountryOption[] = [];\n @State() componentId: string = '';\n @State() languageUpdateTrigger: number = 0;\n\n @Listen('change', { target: 'document' })\n handleFormChange(event: CustomEvent) {\n const formData = event.detail;\n if (formData && this.phoneNumberId in formData) {\n this.value = formData[this.phoneNumberId];\n }\n }\n\n @Listen('closeAllSelects', { target: 'document' })\n handleCloseAllSelects(event: CustomEvent) {\n if (event.detail !== this.componentId && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: Event) {\n const target = event.target as Element;\n\n const isClickOnThisComponent = target.closest('rebill-input-phone');\n\n if (!isClickOnThisComponent && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n }\n }\n\n // All countries with their data\n private countries: CountryOption[] = COUNTRIES;\n\n private translateError(errorKey: string | undefined): string {\n if (!errorKey) return '';\n if (errorKey.includes('validation.') || errorKey.includes('paymentErrors.')) {\n return I18nService.translate(errorKey);\n }\n return errorKey;\n }\n\n componentWillLoad() {\n this.selectedCountry = this.countries.find(c => c.code === this.initialCountry);\n this.filteredCountries = [...this.countries];\n this.componentId = this.countryCodeId || `phone-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n componentWillUpdate() {\n if (this.searchable) {\n this.filterCountries();\n }\n }\n\n componentDidUpdate() {\n if (this.isDropdownOpen && this.searchable && this.searchInputRef) {\n requestAnimationFrame(() => {\n this.searchInputRef?.focus();\n });\n }\n }\n\n private onInput = async (event: Event) => {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n let inputValue = input.value;\n\n inputValue = PhoneValidator.filterInput(inputValue, this.selectedCountry);\n\n input.value = inputValue;\n this.value = inputValue;\n this.validationError = '';\n\n this.emitChange();\n };\n\n private onPhoneBlurPhone = async () => {\n const trimmedValue = this.value.trim();\n\n if (trimmedValue !== this.value) {\n this.value = trimmedValue;\n this.emitChange();\n }\n\n await this.validatePhoneNumber();\n this.emitBlurPhone();\n };\n\n private validatePhoneNumber = async () => {\n const validationResult = await PhoneValidator.validate(this.value, {\n required: this.required,\n country: this.selectedCountry,\n });\n\n this.validationError = validationResult.error;\n };\n\n private toggleDropdown = (event: Event) => {\n if (this.disabled) return;\n event.stopPropagation();\n\n const wasOpen = this.isDropdownOpen;\n this.isDropdownOpen = !this.isDropdownOpen;\n\n if (!this.isDropdownOpen) {\n this.searchTerm = '';\n this.filterCountries();\n } else {\n if (!wasOpen) {\n document.dispatchEvent(new CustomEvent('closeAllSelects', { detail: this.componentId }));\n }\n\n if (this.searchable) {\n requestAnimationFrame(() => {\n this.searchInputRef?.focus();\n });\n }\n }\n };\n\n private selectCountry = async (country: CountryOption, event: Event) => {\n event.stopPropagation();\n this.selectedCountry = country;\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n this.validationError = '';\n\n this.emitChange();\n };\n\n private filterCountries = () => {\n if (!this.searchTerm.trim()) {\n this.filteredCountries = [...this.countries];\n } else {\n this.filteredCountries = this.countries.filter(\n country =>\n country.name.toLowerCase().includes(this.searchTerm.toLowerCase()) ||\n country.dialCode.includes(this.searchTerm),\n );\n }\n };\n\n private handleSearchInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.searchTerm = target.value;\n this.filterCountries();\n };\n\n private clearSearch = () => {\n this.searchTerm = '';\n this.filterCountries();\n };\n\n private handleSearchClick = (event: Event) => {\n event.stopPropagation();\n };\n\n private emitChange = async () => {\n const validationResult = await PhoneValidator.validate(this.value, {\n required: this.required,\n country: this.selectedCountry,\n });\n\n // this.phoneInput.emit({\n // id: this.phoneNumberId,\n // value: this.value,\n // });\n // this.phoneInput.emit({\n // id: this.countryCodeId,\n // value: this.selectedCountry.dialCode,\n // });\n // this.phoneInput.emit({\n // id: this.validationErrorId,\n // value: validationResult.isValid.toString(),\n // });\n\n this.input.emit({ id: this.phoneNumberId, value: this.value });\n this.input.emit({ id: this.countryCodeId, value: this.selectedCountry.dialCode });\n this.input.emit({ id: this.validationErrorId, value: validationResult.isValid.toString() });\n };\n\n private emitBlurPhone = async () => {\n await PhoneValidator.validate(this.value, {\n required: this.required,\n country: this.selectedCountry,\n });\n\n // this.blurPhone.emit({\n // id: this.phoneNumberId,\n // value: this.value,\n // });\n // this.blurPhone.emit({\n // id: this.countryCodeId,\n // value: this.selectedCountry.dialCode,\n // });\n\n this.blur.emit({ id: this.phoneNumberId, value: this.value });\n this.blur.emit({ id: this.countryCodeId, value: this.selectedCountry.dialCode });\n };\n\n private handleClickOutside = (event: Event) => {\n const target = event.target as Node;\n if (this.el && !this.el.contains(target)) {\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n }\n };\n\n componentDidLoad() {\n setTimeout(() => {\n document.addEventListener('click', this.handleClickOutside);\n }, 0);\n\n this.unsubscribeCurrentLocaleStore = SessionStore.onChange('currentLocale', () => {\n this.languageUpdateTrigger++;\n });\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside);\n if (this.unsubscribeCurrentLocaleStore) {\n this.unsubscribeCurrentLocaleStore();\n }\n }\n\n render() {\n const inputClasses = {\n 'phone-input-container': true,\n 'input-error': !!(this.error || this.validationError),\n 'disabled': this.disabled,\n 'input-combo-wrapper': true,\n };\n\n // Usar translateError para ambos tipos de errores\n const translatedError = this.translateError(this.error);\n const translatedValidationError = this.translateError(this.validationError);\n const displayError = translatedError || translatedValidationError;\n\n return (\n <div class=\"input-container\">\n <div class={inputClasses}>\n <div class=\"input-combo-select country-selector\" onClick={this.toggleDropdown}>\n <span class=\"flag\">{this.selectedCountry.flag}</span>\n <span class=\"dial-code\">{this.selectedCountry.dialCode}</span>\n <span class={`dropdown-arrow ${this.isDropdownOpen ? 'open' : ''}`}>▼</span>\n </div>\n\n {this.isDropdownOpen && (\n <div class=\"country-dropdown\">\n {this.searchable && (\n <div class=\"search-container\" onClick={this.handleSearchClick}>\n <div class=\"search-input-wrapper\">\n <rebill-icon name=\"search\" size=\"16px\" class=\"search-icon\" />\n <input\n ref={el => (this.searchInputRef = el)}\n type=\"text\"\n class=\"search-input\"\n placeholder={this.searchPlaceholder}\n value={this.searchTerm}\n onInput={this.handleSearchInput}\n onClick={this.handleSearchClick}\n />\n {this.searchTerm && (\n <button\n type=\"button\"\n class=\"clear-search\"\n onClick={event => {\n event.stopPropagation();\n this.clearSearch();\n }}\n aria-label=\"Clear search\"\n >\n <rebill-icon name=\"x\" size=\"16px\" />\n </button>\n )}\n </div>\n </div>\n )}\n {this.filteredCountries.length > 0 ? (\n this.filteredCountries.map(country => (\n <div\n key={country.code}\n class=\"country-option\"\n onClick={e => this.selectCountry(country, e)}\n >\n <span class=\"flag\">{country.flag}</span>\n <span class=\"country-name\">{country.name}</span>\n <span class=\"dial-code\">{country.dialCode}</span>\n </div>\n ))\n ) : (\n <div class=\"no-results\">No se encontraron resultados</div>\n )}\n </div>\n )}\n\n <input\n id={this.phoneNumberId}\n type=\"tel\"\n class=\"input-combo-element phone-number-input\"\n placeholder={this.placeholder}\n value={this.value}\n onInput={this.onInput}\n onBlur={this.onPhoneBlurPhone}\n disabled={this.disabled}\n required={this.required}\n />\n </div>\n {displayError && <span class=\"error-message\">{displayError}</span>}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"input-phone.js","sourceRoot":"","sources":["../../../../../src/components/shared/inputs/input-phone/input-phone.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Listen, Prop, State, h } from '@stencil/core';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { COUNTRIES, CountryOption } from '../../../../models';\nimport { SessionStore } from '../../../../store/session.store';\nimport { PhoneValidator } from './phone-validation';\n\n@Component({\n tag: 'rebill-input-phone',\n styleUrl: 'input-phone.css',\n shadow: false,\n})\nexport class InputPhone {\n @Element() el: HTMLElement;\n private searchInputRef?: HTMLInputElement;\n private unsubscribeCurrentLocaleStore?: () => void;\n\n /** Placeholder del input */\n @Prop() placeholder: string = '';\n /** Valor del input */\n @Prop({ mutable: true, reflect: true }) value: string = '';\n /** Mensaje de error */\n @Prop() error: string = '';\n /** ID del input */\n @Prop() phoneNumberId: string = '';\n @Prop() countryCodeId: string = '';\n @Prop() validationErrorId: string = '';\n\n /** Estado deshabilitado */\n @Prop() disabled: boolean = false;\n /** País inicial por defecto */\n @Prop() initialCountry: string = 'ar';\n /** Validación requerida */\n @Prop() required: boolean = false;\n /** Habilitar funcionalidad de búsqueda en el selector de países */\n @Prop() searchable: boolean = false;\n /** Placeholder del campo de búsqueda de países */\n @Prop() searchPlaceholder: string = 'Search for countries...';\n\n @Event() input: EventEmitter<{ id: string; value: string }>;\n @Event() blur: EventEmitter<{ id: string; value: string }>;\n\n @State() selectedCountry: CountryOption = COUNTRIES.find(c => c.code === this.initialCountry);\n @State() isDropdownOpen: boolean = false;\n @State() validationError: string = '';\n @State() searchTerm: string = '';\n @State() filteredCountries: CountryOption[] = [];\n @State() componentId: string = '';\n @State() languageUpdateTrigger: number = 0;\n\n @Listen('change', { target: 'document' })\n handleFormChange(event: CustomEvent) {\n const formData = event.detail;\n if (formData && this.phoneNumberId in formData) {\n this.value = formData[this.phoneNumberId];\n }\n }\n\n @Listen('closeAllSelects', { target: 'document' })\n handleCloseAllSelects(event: CustomEvent) {\n if (event.detail !== this.componentId && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: Event) {\n const target = event.target as Element;\n\n const isClickOnThisComponent = target.closest('rebill-input-phone');\n\n if (!isClickOnThisComponent && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n }\n }\n\n // All countries with their data\n private countries: CountryOption[] = COUNTRIES;\n\n private translateError(errorKey: string | undefined): string {\n if (!errorKey) return '';\n if (errorKey.includes('validation.') || errorKey.includes('paymentErrors.')) {\n return I18nService.translate(errorKey);\n }\n return errorKey;\n }\n\n componentWillLoad() {\n this.selectedCountry = this.countries.find(c => c.code === this.initialCountry);\n this.filteredCountries = [...this.countries];\n this.componentId = this.countryCodeId || `phone-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n componentWillUpdate() {\n if (this.searchable) {\n this.filterCountries();\n }\n }\n\n componentDidUpdate() {\n if (this.isDropdownOpen && this.searchable && this.searchInputRef) {\n requestAnimationFrame(() => {\n this.searchInputRef?.focus();\n });\n }\n }\n\n private onInput = async (event: Event) => {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n let inputValue = input.value;\n\n inputValue = PhoneValidator.filterInput(inputValue, this.selectedCountry);\n\n input.value = inputValue;\n this.value = inputValue;\n this.validationError = '';\n\n this.emitChange();\n };\n\n private onPhoneBlurPhone = async () => {\n const trimmedValue = this.value.trim();\n\n if (trimmedValue !== this.value) {\n this.value = trimmedValue;\n this.emitChange();\n }\n\n await this.validatePhoneNumber();\n this.emitBlurPhone();\n };\n\n private validatePhoneNumber = async () => {\n const validationResult = await PhoneValidator.validate(this.value, {\n required: this.required,\n country: this.selectedCountry,\n });\n\n this.validationError = validationResult.error;\n };\n\n private toggleDropdown = (event: Event) => {\n if (this.disabled) return;\n event.stopPropagation();\n\n const wasOpen = this.isDropdownOpen;\n this.isDropdownOpen = !this.isDropdownOpen;\n\n if (!this.isDropdownOpen) {\n this.searchTerm = '';\n this.filterCountries();\n } else {\n if (!wasOpen) {\n document.dispatchEvent(new CustomEvent('closeAllSelects', { detail: this.componentId }));\n }\n\n if (this.searchable) {\n requestAnimationFrame(() => {\n this.searchInputRef?.focus();\n });\n }\n }\n };\n\n private selectCountry = async (country: CountryOption, event: Event) => {\n event.stopPropagation();\n this.selectedCountry = country;\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n this.validationError = '';\n\n this.emitChange();\n };\n\n private filterCountries = () => {\n if (!this.searchTerm.trim()) {\n this.filteredCountries = [...this.countries];\n } else {\n this.filteredCountries = this.countries.filter(\n country =>\n country.name.toLowerCase().includes(this.searchTerm.toLowerCase()) ||\n country.dialCode.includes(this.searchTerm),\n );\n }\n };\n\n private handleSearchInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.searchTerm = target.value;\n this.filterCountries();\n };\n\n private clearSearch = () => {\n this.searchTerm = '';\n this.filterCountries();\n };\n\n private handleSearchClick = (event: Event) => {\n event.stopPropagation();\n };\n\n private emitChange = async () => {\n const validationResult = await PhoneValidator.validate(this.value, {\n required: this.required,\n country: this.selectedCountry,\n });\n\n // this.phoneInput.emit({\n // id: this.phoneNumberId,\n // value: this.value,\n // });\n // this.phoneInput.emit({\n // id: this.countryCodeId,\n // value: this.selectedCountry.dialCode,\n // });\n // this.phoneInput.emit({\n // id: this.validationErrorId,\n // value: validationResult.isValid.toString(),\n // });\n\n this.input.emit({ id: this.phoneNumberId, value: this.value });\n this.input.emit({ id: this.countryCodeId, value: this.selectedCountry.dialCode });\n this.input.emit({ id: this.validationErrorId, value: validationResult.isValid.toString() });\n };\n\n private emitBlurPhone = async () => {\n const validation = await PhoneValidator.validate(this.value, {\n required: this.required,\n country: this.selectedCountry,\n });\n\n this.blur.emit({ id: this.phoneNumberId, value: this.value });\n this.blur.emit({ id: this.countryCodeId, value: this.selectedCountry.dialCode });\n // Emit also the validation flag so the form can validate the correct schema field on blur\n this.blur.emit({\n id: this.validationErrorId,\n value: validation.isValid.toString(),\n });\n };\n\n private handleClickOutside = (event: Event) => {\n const target = event.target as Node;\n if (this.el && !this.el.contains(target)) {\n this.isDropdownOpen = false;\n this.searchTerm = '';\n this.filterCountries();\n }\n };\n\n componentDidLoad() {\n setTimeout(() => {\n document.addEventListener('click', this.handleClickOutside);\n }, 0);\n\n this.unsubscribeCurrentLocaleStore = SessionStore.onChange('currentLocale', () => {\n this.languageUpdateTrigger++;\n });\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside);\n if (this.unsubscribeCurrentLocaleStore) {\n this.unsubscribeCurrentLocaleStore();\n }\n }\n\n render() {\n const inputClasses = {\n 'phone-input-container': true,\n 'input-error': !!(this.error || this.validationError),\n 'disabled': this.disabled,\n 'input-combo-wrapper': true,\n };\n\n // Usar translateError para ambos tipos de errores\n const translatedError = this.translateError(this.error);\n const translatedValidationError = this.translateError(this.validationError);\n const displayError = translatedValidationError || translatedError;\n\n return (\n <div class=\"input-container\">\n <div class={inputClasses}>\n <div class=\"input-combo-select country-selector\" onClick={this.toggleDropdown}>\n <span class=\"flag\">{this.selectedCountry.flag}</span>\n <span class=\"dial-code\">{this.selectedCountry.dialCode}</span>\n <span class={`dropdown-arrow ${this.isDropdownOpen ? 'open' : ''}`}>▼</span>\n </div>\n\n {this.isDropdownOpen && (\n <div class=\"country-dropdown\">\n {this.searchable && (\n <div class=\"search-container\" onClick={this.handleSearchClick}>\n <div class=\"search-input-wrapper\">\n <rebill-icon name=\"search\" size=\"16px\" class=\"search-icon\" />\n <input\n ref={el => (this.searchInputRef = el)}\n type=\"text\"\n class=\"search-input\"\n placeholder={this.searchPlaceholder}\n value={this.searchTerm}\n onInput={this.handleSearchInput}\n onClick={this.handleSearchClick}\n />\n {this.searchTerm && (\n <button\n type=\"button\"\n class=\"clear-search\"\n onClick={event => {\n event.stopPropagation();\n this.clearSearch();\n }}\n aria-label=\"Clear search\"\n >\n <rebill-icon name=\"x\" size=\"16px\" />\n </button>\n )}\n </div>\n </div>\n )}\n {this.filteredCountries.length > 0 ? (\n this.filteredCountries.map(country => (\n <div\n key={country.code}\n class=\"country-option\"\n onClick={e => this.selectCountry(country, e)}\n >\n <span class=\"flag\">{country.flag}</span>\n <span class=\"country-name\">{country.name}</span>\n <span class=\"dial-code\">{country.dialCode}</span>\n </div>\n ))\n ) : (\n <div class=\"no-results\">No se encontraron resultados</div>\n )}\n </div>\n )}\n\n <input\n id={this.phoneNumberId}\n type=\"tel\"\n class=\"input-combo-element phone-number-input\"\n placeholder={this.placeholder}\n value={this.value}\n onInput={this.onInput}\n onBlur={this.onPhoneBlurPhone}\n disabled={this.disabled}\n required={this.required}\n />\n </div>\n {displayError && <span class=\"error-message\">{displayError}</span>}\n </div>\n );\n }\n}\n"]}