ng-easycommerce-v18 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/.editorconfig +16 -0
  2. package/README.md +27 -0
  3. package/angular.json +48 -0
  4. package/package.json +58 -0
  5. package/projects/ng-easycommerce/README.md +24 -0
  6. package/projects/ng-easycommerce/ng-package.json +7 -0
  7. package/projects/ng-easycommerce/package.json +12 -0
  8. package/projects/ng-easycommerce/src/lib/api/connection.service.ts +79 -0
  9. package/projects/ng-easycommerce/src/lib/api/index.ts +1 -0
  10. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/ct.json +274 -0
  11. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/en.json +380 -0
  12. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/es.json +387 -0
  13. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/fr.json +266 -0
  14. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/gl.json +274 -0
  15. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/pr.json +274 -0
  16. package/projects/ng-easycommerce/src/lib/assets/recaptcha/recaptcha-site-keys.json +4 -0
  17. package/projects/ng-easycommerce/src/lib/assets/recaptcha/recaptcha-sites-prod.json +39 -0
  18. package/projects/ng-easycommerce/src/lib/assets/recaptcha/recaptcha-sites.json +53 -0
  19. package/projects/ng-easycommerce/src/lib/classes/checkout/index.ts +1 -0
  20. package/projects/ng-easycommerce/src/lib/classes/checkout/steps.ts +37 -0
  21. package/projects/ng-easycommerce/src/lib/classes/filters/attributes-filter.ts +74 -0
  22. package/projects/ng-easycommerce/src/lib/classes/filters/category-filter.ts +57 -0
  23. package/projects/ng-easycommerce/src/lib/classes/filters/dynamics-filter.ts +57 -0
  24. package/projects/ng-easycommerce/src/lib/classes/filters/filter-factory.ts +23 -0
  25. package/projects/ng-easycommerce/src/lib/classes/filters/filter.ts +89 -0
  26. package/projects/ng-easycommerce/src/lib/classes/filters/index.ts +6 -0
  27. package/projects/ng-easycommerce/src/lib/classes/filters/sort-filter.ts +93 -0
  28. package/projects/ng-easycommerce/src/lib/classes/index.ts +3 -0
  29. package/projects/ng-easycommerce/src/lib/classes/user.ts +68 -0
  30. package/projects/ng-easycommerce/src/lib/constants/api.constants.service.ts +69 -0
  31. package/projects/ng-easycommerce/src/lib/constants/core.constants.service.ts +210 -0
  32. package/projects/ng-easycommerce/src/lib/constants/index.ts +2 -0
  33. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/block-ec.component.ts +107 -0
  34. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/index.ts +2 -0
  35. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/menu-ec.component.ts +102 -0
  36. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.html +10 -0
  37. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.scss +0 -0
  38. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.ts +13 -0
  39. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.html +19 -0
  40. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.scss +0 -0
  41. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.ts +34 -0
  42. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.html +31 -0
  43. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.scss +0 -0
  44. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.ts +55 -0
  45. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/index.ts +6 -0
  46. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.html +30 -0
  47. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.scss +0 -0
  48. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.ts +92 -0
  49. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.html +55 -0
  50. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.scss +0 -0
  51. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.ts +102 -0
  52. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.html +233 -0
  53. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.scss +0 -0
  54. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.ts +149 -0
  55. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.html +113 -0
  56. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.scss +12 -0
  57. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.ts +100 -0
  58. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.html +111 -0
  59. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.scss +0 -0
  60. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.ts +77 -0
  61. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.html +62 -0
  62. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.scss +0 -0
  63. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.ts +89 -0
  64. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.html +1 -0
  65. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.scss +0 -0
  66. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.ts +33 -0
  67. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.html +1 -0
  68. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.scss +0 -0
  69. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.ts +81 -0
  70. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.html +40 -0
  71. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.scss +0 -0
  72. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.ts +97 -0
  73. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.html +41 -0
  74. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.scss +0 -0
  75. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.ts +86 -0
  76. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/index.ts +4 -0
  77. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.html +20 -0
  78. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.scss +0 -0
  79. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.ts +30 -0
  80. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.html +1 -0
  81. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.scss +0 -0
  82. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.ts +24 -0
  83. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.html +1 -0
  84. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.scss +0 -0
  85. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.ts +51 -0
  86. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/index.ts +2 -0
  87. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.html +56 -0
  88. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.scss +38 -0
  89. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.ts +67 -0
  90. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.html +836 -0
  91. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.scss +0 -0
  92. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.ts +302 -0
  93. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.html +32 -0
  94. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.scss +0 -0
  95. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.ts +52 -0
  96. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.html +12 -0
  97. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.scss +0 -0
  98. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.ts +48 -0
  99. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.html +195 -0
  100. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.scss +0 -0
  101. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.ts +103 -0
  102. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.html +28 -0
  103. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.scss +0 -0
  104. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.ts +26 -0
  105. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.ts +3 -0
  106. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.html +33 -0
  107. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.scss +0 -0
  108. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.ts +116 -0
  109. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.html +13 -0
  110. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.scss +0 -0
  111. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.ts +26 -0
  112. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.html +111 -0
  113. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.scss +0 -0
  114. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.ts +111 -0
  115. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.html +33 -0
  116. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.scss +0 -0
  117. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.ts +39 -0
  118. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.html +59 -0
  119. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.scss +0 -0
  120. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.ts +65 -0
  121. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.html +16 -0
  122. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.scss +0 -0
  123. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.ts +83 -0
  124. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.html +1 -0
  125. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.scss +0 -0
  126. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.ts +32 -0
  127. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.html +1 -0
  128. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.scss +0 -0
  129. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.ts +45 -0
  130. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.html +1 -0
  131. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.scss +0 -0
  132. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.ts +49 -0
  133. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.html +1 -0
  134. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.scss +0 -0
  135. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.spec.ts +23 -0
  136. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.ts +18 -0
  137. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.html +1 -0
  138. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.scss +0 -0
  139. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.spec.ts +23 -0
  140. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.ts +22 -0
  141. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.html +1 -0
  142. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.scss +0 -0
  143. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.spec.ts +23 -0
  144. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.ts +16 -0
  145. package/projects/ng-easycommerce/src/lib/ec-components/index.ts +17 -0
  146. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.html +0 -0
  147. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.scss +0 -0
  148. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.ts +82 -0
  149. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.html +31 -0
  150. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.scss +0 -0
  151. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.ts +46 -0
  152. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.html +65 -0
  153. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.scss +8 -0
  154. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.ts +20 -0
  155. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/index.ts +4 -0
  156. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/index.ts +3 -0
  157. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.html +7 -0
  158. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.scss +0 -0
  159. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.ts +13 -0
  160. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.html +5 -0
  161. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.scss +0 -0
  162. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.ts +13 -0
  163. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.html +3 -0
  164. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.scss +0 -0
  165. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.ts +13 -0
  166. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.html +11 -0
  167. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.scss +0 -0
  168. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.ts +177 -0
  169. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.html +47 -0
  170. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.scss +0 -0
  171. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.ts +22 -0
  172. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.html +6 -0
  173. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.scss +0 -0
  174. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.ts +70 -0
  175. package/projects/ng-easycommerce/src/lib/ec-guards/auth.guard.ts +19 -0
  176. package/projects/ng-easycommerce/src/lib/ec-guards/index.ts +1 -0
  177. package/projects/ng-easycommerce/src/lib/ec-pipe/ec-currency-symbol.pipe.ts +99 -0
  178. package/projects/ng-easycommerce/src/lib/ec-pipe/index.ts +1 -0
  179. package/projects/ng-easycommerce/src/lib/ec-services/addressing.service.ts +199 -0
  180. package/projects/ng-easycommerce/src/lib/ec-services/analytics/analytics.service.ts +76 -0
  181. package/projects/ng-easycommerce/src/lib/ec-services/analytics/doppler.service.ts +38 -0
  182. package/projects/ng-easycommerce/src/lib/ec-services/analytics/facebook-pixel.service.ts +214 -0
  183. package/projects/ng-easycommerce/src/lib/ec-services/analytics/google-analytics.service.ts +284 -0
  184. package/projects/ng-easycommerce/src/lib/ec-services/analytics/gtm.service.ts +413 -0
  185. package/projects/ng-easycommerce/src/lib/ec-services/analytics/index.ts +6 -0
  186. package/projects/ng-easycommerce/src/lib/ec-services/analytics/metricool-pixel.service.ts +46 -0
  187. package/projects/ng-easycommerce/src/lib/ec-services/auth.service.ts +438 -0
  188. package/projects/ng-easycommerce/src/lib/ec-services/auth.storage.service.ts +54 -0
  189. package/projects/ng-easycommerce/src/lib/ec-services/blocks-repository.service.ts +67 -0
  190. package/projects/ng-easycommerce/src/lib/ec-services/blocks.service.ts +48 -0
  191. package/projects/ng-easycommerce/src/lib/ec-services/cart.service.ts +492 -0
  192. package/projects/ng-easycommerce/src/lib/ec-services/channel.service.ts +81 -0
  193. package/projects/ng-easycommerce/src/lib/ec-services/checkout.service.ts +196 -0
  194. package/projects/ng-easycommerce/src/lib/ec-services/currency.service.ts +179 -0
  195. package/projects/ng-easycommerce/src/lib/ec-services/filters.service.ts +133 -0
  196. package/projects/ng-easycommerce/src/lib/ec-services/form.service.ts +82 -0
  197. package/projects/ng-easycommerce/src/lib/ec-services/index.ts +24 -0
  198. package/projects/ng-easycommerce/src/lib/ec-services/local-storage.service.ts +54 -0
  199. package/projects/ng-easycommerce/src/lib/ec-services/ngx-local-storage.service.ts +66 -0
  200. package/projects/ng-easycommerce/src/lib/ec-services/options.service.ts +274 -0
  201. package/projects/ng-easycommerce/src/lib/ec-services/order-utility.service.ts +52 -0
  202. package/projects/ng-easycommerce/src/lib/ec-services/pagination.service.ts +172 -0
  203. package/projects/ng-easycommerce/src/lib/ec-services/parameters.service.ts +67 -0
  204. package/projects/ng-easycommerce/src/lib/ec-services/payment.service.ts +63 -0
  205. package/projects/ng-easycommerce/src/lib/ec-services/product-detail.service.ts +288 -0
  206. package/projects/ng-easycommerce/src/lib/ec-services/products.service.ts +162 -0
  207. package/projects/ng-easycommerce/src/lib/ec-services/re-captcha.service.ts +126 -0
  208. package/projects/ng-easycommerce/src/lib/ec-services/shipment.service.ts +174 -0
  209. package/projects/ng-easycommerce/src/lib/ec-services/stores.service.ts +27 -0
  210. package/projects/ng-easycommerce/src/lib/ec-services/toast.service.ts +84 -0
  211. package/projects/ng-easycommerce/src/lib/interceptors/auth.interceptor.ts +43 -0
  212. package/projects/ng-easycommerce/src/lib/interceptors/index.ts +1 -0
  213. package/projects/ng-easycommerce/src/lib/interfaces/analytics/event-key.ts +14 -0
  214. package/projects/ng-easycommerce/src/lib/interfaces/analytics/facebook-pixel-data.ts +5 -0
  215. package/projects/ng-easycommerce/src/lib/interfaces/analytics/gtm-config.ts +6 -0
  216. package/projects/ng-easycommerce/src/lib/interfaces/analytics/index.ts +3 -0
  217. package/projects/ng-easycommerce/src/lib/interfaces/blocks.ts +56 -0
  218. package/projects/ng-easycommerce/src/lib/interfaces/checkout.ts +14 -0
  219. package/projects/ng-easycommerce/src/lib/interfaces/connection.ts +8 -0
  220. package/projects/ng-easycommerce/src/lib/interfaces/coupon.ts +5 -0
  221. package/projects/ng-easycommerce/src/lib/interfaces/currency.ts +10 -0
  222. package/projects/ng-easycommerce/src/lib/interfaces/deserializable.ts +3 -0
  223. package/projects/ng-easycommerce/src/lib/interfaces/environment.ts +6 -0
  224. package/projects/ng-easycommerce/src/lib/interfaces/filter.ts +59 -0
  225. package/projects/ng-easycommerce/src/lib/interfaces/index.ts +18 -0
  226. package/projects/ng-easycommerce/src/lib/interfaces/options.ts +28 -0
  227. package/projects/ng-easycommerce/src/lib/interfaces/pagination.ts +27 -0
  228. package/projects/ng-easycommerce/src/lib/interfaces/parameter.ts +15 -0
  229. package/projects/ng-easycommerce/src/lib/interfaces/product.ts +81 -0
  230. package/projects/ng-easycommerce/src/lib/interfaces/step.ts +19 -0
  231. package/projects/ng-easycommerce/src/lib/interfaces/storage.ts +7 -0
  232. package/projects/ng-easycommerce/src/lib/interfaces/store.ts +17 -0
  233. package/projects/ng-easycommerce/src/lib/interfaces/types/index.ts +1 -0
  234. package/projects/ng-easycommerce/src/lib/interfaces/types/user.type.ts +5 -0
  235. package/projects/ng-easycommerce/src/lib/providers/index.ts +1 -0
  236. package/projects/ng-easycommerce/src/lib/providers/provideEnvironment.ts +24 -0
  237. package/projects/ng-easycommerce/src/lib/stores/currency.store.ts +20 -0
  238. package/projects/ng-easycommerce/src/lib/stores/index.ts +1 -0
  239. package/projects/ng-easycommerce/src/public-api.ts +24 -0
  240. package/projects/ng-easycommerce/tsconfig.lib.json +15 -0
  241. package/projects/ng-easycommerce/tsconfig.lib.prod.json +11 -0
  242. package/projects/ng-easycommerce/tsconfig.spec.json +15 -0
  243. package/tsconfig.doc.json +4 -0
  244. package/tsconfig.json +37 -0
@@ -0,0 +1,836 @@
1
+ @if(channel$ | async; as channelConfig){
2
+ @if(channelConfig.channelType != 'b2b' || (channelConfig.channelType == 'b2b' && isAuthenticated())){
3
+ @if( modeSelectAddress == 'LOAD_ADDRESS_AND_SELECTION' && isAuthenticated() && this.addressBook != null){
4
+ <!--Selector de modos-->
5
+ <div class="container card p-4 mb-3">
6
+ <div class="row justify-content-center">
7
+ <div class="col-12 col-md-10 col-lg-8 text-center">
8
+ <div class="btn-group btn-group-toggle" data-bs-toggle="buttons">
9
+ <label [class]="'btn btn-outline-secondary ' + (!getMode() ? 'active' : '')">
10
+ <input type="radio" name="options" id="option1" autocomplete="off" checked
11
+ (change)="setMode('seleccion')"> {{'select-address' | translate | titlecase}}
12
+ </label>
13
+ @if(!getParamByChannelAndLanguage('btn_new_address_')){
14
+ <label [class]="'btn btn-outline-secondary ' + (getMode() ? 'active' : '')">
15
+ <input type="radio" name="options" id="option2" autocomplete="off" (change)="setMode('carga')">
16
+ {{ 'new-address' | translate | titlecase}}
17
+ </label>
18
+ }
19
+ @if(getParamByChannelAndLanguage('btn_new_address_'); as param){
20
+ <label [class]="'btn btn-outline-secondary ' + (selectAddress ? 'active' : '')">
21
+ <input type="radio" name="options" id="option2" autocomplete="off" (change)="setMode('carga')">
22
+ {{ param.value}}
23
+ </label>
24
+ }
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ }
30
+
31
+ @if(getMode()){
32
+ @if(!require_login){
33
+ <div>
34
+ @if(modeSelectAddress == 'ONLY_LOAD_ADDRESS'){
35
+ <div class="checkout-title my-2">
36
+ <h3>{{'billing-details'|translate}}</h3>
37
+ </div>
38
+ }
39
+ <!--Formulario-->
40
+ <form [formGroup]="checkoutForm" (submit)="verifyValidate($event)"> <!-- //this.cartService.items -->
41
+ <div class="row mt-2"><!--Fila 1-->
42
+
43
+ @if(getTypeForm().viewForms.firstName.enabled){
44
+ <div class="form-group col-12 col-md-6">
45
+ <!--Si es required-->
46
+ <label class="form-label">{{'first-name'|translate}}
47
+ @if(getTypeForm().viewForms.firstName.required){
48
+ <span class="required">*</span>
49
+ }
50
+ </label>
51
+ <!--Input-->
52
+ <input class="form-control" type="text" name="firstName" formControlName="firstName" value=""
53
+ placeholder="" autocomplete="off">
54
+ @if(checkoutForm.controls['firstName'].touched &&
55
+ checkoutForm.controls['firstName'].errors?.['required']){
56
+ <div class="text-danger-container">
57
+ <span class="text-danger">{{'first-name-help1'|translate}}</span>
58
+ </div>
59
+ }
60
+ <!--Error info-->
61
+ @if(checkoutForm.controls['firstName'].touched &&
62
+ checkoutForm.controls['firstName'].errors?.['pattern']){
63
+ <div class="text-danger-container">
64
+ <span class="text-danger">
65
+ {{'first-name-help2'|translate}}
66
+ </span>
67
+ </div>
68
+ }
69
+ </div>
70
+ }
71
+ @if(getTypeForm().viewForms.lastName.enabled){
72
+ <div class="form-group col-12 col-md-6">
73
+ <label class="form-label">{{'last-name'|translate}}
74
+ @if(getTypeForm().viewForms.lastName.required){
75
+ <span class="required">*</span>
76
+ }
77
+ </label>
78
+ <input class="form-control" type="text" name="lastName" formControlName="lastName" value=""
79
+ placeholder="" autocomplete="off">
80
+ @if(checkoutForm.controls['lastName'].touched &&
81
+ checkoutForm.controls['lastName'].errors?.['required']){
82
+ <div class="text-danger-container">
83
+ <span class="text-danger">{{'last-name-help1'|translate}}</span>
84
+ </div>
85
+ }
86
+ @if(checkoutForm.controls['lastName'].touched && checkoutForm.controls['lastName'].errors?.['pattern']){
87
+ <div class="text-danger-container">
88
+ <span class="text-danger">{{'last-name-help2'|translate}}</span>
89
+ </div>
90
+ }
91
+ </div>
92
+ }
93
+ </div>
94
+ <div class="row mt-2"><!--Fila 2-->
95
+ @if(getTypeForm().viewForms.phoneNumber.enabled){
96
+ <div class="form-group col-12 col-md-6">
97
+ <label class="form-label">{{'phone'|translate}}
98
+ @if(getTypeForm().viewForms.phoneNumber.required){
99
+ <span class="required">*</span>
100
+ }
101
+ </label>
102
+ <input (change)="onInputChange()" class="form-control" type="text" name="phoneNumber"
103
+ formControlName='phoneNumber' value="" placeholder="" autocomplete="off">
104
+ @if(checkoutForm.controls['phoneNumber'].touched &&
105
+ checkoutForm.controls['phoneNumber'].errors?.['required']){
106
+ <div class="text-danger-container">
107
+ <span class="text-danger">
108
+ {{'phone-help1'|translate}}
109
+ </span>
110
+ </div>
111
+ }
112
+ @if(checkoutForm.controls['phoneNumber'].touched &&
113
+ checkoutForm.controls['phoneNumber'].errors?.['pattern']){
114
+ <div class="text-danger-container">
115
+ <span class="text-danger">
116
+ {{'phone-help2'|translate}}
117
+ </span>
118
+ </div>
119
+ }
120
+ </div>
121
+ }
122
+ @if(getTypeForm().viewForms.email.enabled){
123
+ <div class="form-group col-12 col-md-6">
124
+ <label class="form-label">{{'email-address'|translate}}
125
+ @if(getTypeForm().viewForms.email.required){
126
+ <span class="required">*</span>
127
+ }</label>
128
+ <input class="form-control" type="email" name="email" formControlName='email' value="" placeholder=""
129
+ autocomplete="off">
130
+ @if(checkoutForm.controls['email'].touched && checkoutForm.controls['email'].errors?.['required']){
131
+ <div class="text-danger-container">
132
+ <span class="text-danger">
133
+ {{'email-address-help1'|translate}}
134
+ </span>
135
+ </div>
136
+ }
137
+ @if(checkoutForm.controls['email'].touched && checkoutForm.controls['email'].errors?.['email']){
138
+ <div class="text-danger-container">
139
+ <span class="text-danger">
140
+ {{'email-address-help2'|translate}}
141
+ </span>
142
+ </div>
143
+ }
144
+ </div>
145
+ }
146
+ </div>
147
+ <div class="row mt-2"><!--Fila 3-->
148
+ @if(getTypeForm().viewForms.countryCode.enabled){
149
+ @if(countries$ | async; as countries){
150
+ <div class="form-group col-12 col-md-4">
151
+ <label class="form-label">{{'country'|translate}}
152
+ @if(getTypeForm().viewForms.countryCode.required){
153
+ <span class="required">*</span>
154
+ }</label>
155
+ <select class="form-select" name="countryCode" formControlName='countryCode'
156
+ (change)="onCountrySelected($event)">
157
+ @for(country of countries; track $index){
158
+ <option [value]="country.code">{{ country.name }}</option>
159
+ }
160
+ </select>
161
+ @if(checkoutForm.controls['countryCode'].touched &&
162
+ checkoutForm.controls['countryCode'].errors?.['required']){
163
+ <div class="text text-danger">
164
+ {{'country-help'|translate}}
165
+ </div>
166
+ }
167
+ </div>
168
+ }
169
+ }
170
+ @if(getTypeForm().viewForms.provinceCode.enabled){
171
+ @if(provinces$ | async; as provinces){
172
+ <div class="form-group col-12 col-md-4">
173
+ <label class="form-label">{{'state'|translate}}
174
+ @if(getTypeForm().viewForms.provinceCode.required){
175
+ <span class="required">*</span>
176
+ }</label>
177
+ <select class="form-select" name="provinceCode" (change)="onProvincesSelected($event, provinces)"
178
+ formControlName='provinceCode'>
179
+ @for(province of provinces; track $index){
180
+ <option [value]="province.code">{{ province.name }}
181
+ </option>
182
+ }
183
+ </select>
184
+ @if(checkoutForm.controls['provinceCode'].touched &&
185
+ checkoutForm.controls['provinceCode'].errors?.['required']){
186
+ <div class="text text-danger">
187
+ {{'state-help'|translate}}
188
+ </div>
189
+ }
190
+ </div>
191
+ }
192
+ }
193
+ @if(getTypeForm().viewForms.city.enabled){
194
+ <div class="form-group col-12 col-md-4">
195
+ <label class="form-label">{{'town-city'|translate}}
196
+ @if(getTypeForm().viewForms.city.required){
197
+ <span class="required">*</span>
198
+ }</label>
199
+ <input (change)="onInputChange()" class="form-control" type="text" name="city" formControlName='city'
200
+ value="" placeholder="" autocomplete="off">
201
+ @if(checkoutForm.controls['city'].touched && checkoutForm.controls['city'].errors?.['required']){
202
+ <div class="text-danger-container">
203
+ <span class="text-danger">{{'town-city-help'|translate}}</span>
204
+ </div>
205
+ }
206
+ </div>
207
+ }
208
+ </div>
209
+ <div class="row mt-df"><!--Fila 4-->
210
+ @if(getTypeForm().viewForms.street.enabled){
211
+ <div class="form-group col-12 col-md-8">
212
+ <label class="field-label">{{'address'|translate}}
213
+ @if(getTypeForm().viewForms.street.required){
214
+ <span class="required">*</span>
215
+ }
216
+ </label>
217
+ <input (change)="onInputChange()" class="form-control" type="text" name="street"
218
+ formControlName='street' value="" placeholder="" autocomplete="off">
219
+ @if(checkoutForm.controls['street'].touched && checkoutForm.controls['street'].errors?.['required']){
220
+ <div class="text-danger-container">
221
+ <span class="text-danger">{{'address-help1'|translate}}</span>
222
+ </div>
223
+ }
224
+ @if(checkoutForm.controls['street'].touched && checkoutForm.controls['street'].errors?.['maxlength']){
225
+ <div class="text-danger-container">
226
+ <span class="text-danger">{{'address-help2'|translate}}</span>
227
+ </div>
228
+ }
229
+ </div>
230
+ }
231
+
232
+ <!-- form dirección -->
233
+ @if(getTypeForm().viewForms.postcode.enabled){
234
+ <div class="form-group col-12 col-md-4">
235
+ <label class="field-label">{{'postal-code'|translate}}
236
+ @if(getTypeForm().viewForms.postcode.required){
237
+ <span class="required">*</span>
238
+ }</label>
239
+ <input (change)="onInputChange()" class="form-control" type="text" name="postcode"
240
+ formControlName='postcode' value="" placeholder="" autocomplete="off">
241
+ @if(checkoutForm.controls['postcode'].touched &&
242
+ checkoutForm.controls['postcode'].errors?.['required']){
243
+ <div class="text-danger-container">
244
+ <span class="text-danger">{{'postal-code-help'|translate}}</span>
245
+ </div>
246
+ }
247
+ @if(checkoutForm.controls['postcode'].touched && checkoutForm.controls['postcode'].errors?.['pattern']){
248
+ <div class="text-danger-container">
249
+ <span class="text-danger"> {{'postal-code-pattern-error' | translate}} </span>
250
+ </div>
251
+ }
252
+ </div>
253
+ }
254
+ </div>
255
+ <div class="row mt-df"><!--Fila 5-->
256
+ @if(getTypeForm().viewForms.documentType.enabled){
257
+ @if(documentTypes$ | async; as documentTypes){
258
+ <div class="form-group col-12 col-md-4">
259
+ <label class="field-label">{{'document-type'|translate}}
260
+ @if(getTypeForm().viewForms.documentType.required){
261
+ <span class="required">*</span>
262
+ }</label>
263
+ <select name="documentType" class="form-select" (change)="onDocumentTypesSelected($event)"
264
+ formControlName='documentType'>
265
+ <!-- <option [value]="''" selected>{{'document-type'|translate}}</option>
266
+ --> @for(item of documentTypes; track $index){
267
+ <option [value]="item.code">{{item.name}}</option>
268
+ }
269
+ </select>
270
+ @if(checkoutForm.controls['documentType'].touched &&
271
+ checkoutForm.controls['documentType'].errors?.['required']){
272
+ <div class="text-danger-container">
273
+ <span class="text-danger">
274
+ {{'type-document-help'|translate}}
275
+ </span>
276
+ </div>
277
+ }
278
+ </div>
279
+ }
280
+ }
281
+ @if(getTypeForm().viewForms.documentNumber.enabled){
282
+ <div class="form-group col-12 col-md-4">
283
+ <label class="field-label">{{'document-number'|translate}}
284
+ @if(getTypeForm().viewForms.documentNumber.required){
285
+ <span class="required">*</span>
286
+ }
287
+ </label>
288
+ <input (change)="onInputChange()" class="form-control" [type]="'text'" name="documentNumber"
289
+ formControlName='documentNumber' min="1" max="99999999999" value="" placeholder=""
290
+ autocomplete="off">
291
+ @if(checkoutForm.controls['documentNumber'].touched &&
292
+ checkoutForm.controls['documentNumber'].errors?.['required']){
293
+ <div class="text-danger-container">
294
+ <span class="text-danger">
295
+ {{'document-number-help'|translate}}
296
+ </span>
297
+ </div>
298
+ }
299
+ </div>
300
+ }
301
+ </div>
302
+ <div class="row mt-df"><!--Fila 6-->
303
+ @if(getTypeForm().viewForms.notes.enabled){
304
+ <div class="form-group col-12 col-md-12">
305
+ @if(!getLabelNotesParam()){
306
+ <label class="field-label">{{'notes'|translate}}
307
+ @if(getTypeForm().viewForms.notes.required){
308
+ <span class="required">*</span>
309
+ }
310
+ </label>
311
+ }
312
+ @if(getLabelNotesParam(); as labelnotes){
313
+ <label class="field-label" [innerHTML]="labelnotes.value">
314
+ @if(getTypeForm().viewForms.notes.required){
315
+ <span class="required">*</span>
316
+ }
317
+ </label>
318
+ }
319
+
320
+ <input (change)="onInputChange()" class="form-control" type="text" name="notes" formControlName='notes'
321
+ value="" placeholder="" autocomplete="off">
322
+ </div>
323
+ }
324
+ </div>
325
+ <div class="row mt-df"><!--Fila 7-->
326
+ <div class="form-group col-12 col-md-12">
327
+ <label for="formFact"><b>{{ 'same-billing-address' | translate }}</b> <input type="checkbox"
328
+ class="ms-2" [checked]="viewDataFacturacion" (change)="showFormFacturacion()"
329
+ id="formFact"></label>
330
+ </div>
331
+ </div>
332
+ <div class="row mt-df">
333
+ <div class="col-12">
334
+ <p>
335
+ <label class="required text-underline text-danger">* {{ 'required-fields' | translate }}</label>
336
+ </p>
337
+ </div>
338
+ </div>
339
+ <div class="row mt-df">
340
+ @if(getTypeForm().viewForms.terms.enabled){
341
+ <div class="form-group col-12 col-md-12">
342
+ @if(getTypeForm().viewForms.terms.required){
343
+ <span class="required">*</span>
344
+ }
345
+ <label class="" for=""> {{ 'accept-terms' | translate }} <input class="ms-2" name="terms"
346
+ formControlName='terms' type="checkbox" required (change)="onInputChange()" /> </label><br />
347
+ <button type="button" class="btn btn-primary" data-bs-toggle="modal"
348
+ data-bs-target="#terminos-y-condiciones">
349
+ {{ 'whats-this' | translate }}
350
+ </button>
351
+ @if(checkoutForm.controls['terms'].touched && !checkoutForm.controls['terms'].value){
352
+ <div class="text-danger-container">
353
+ <span class="text-danger">{{ 'must-accept-terms' | translate }}</span>
354
+ </div>
355
+ }
356
+ </div>
357
+ }
358
+ </div>
359
+ @if(!viewDataFacturacion){
360
+ <!--Formulario de Facturación-->
361
+ <div class="card">
362
+ <div class="card-header text-center">
363
+ <h2>{{ 'billing-data' | translate }}</h2>
364
+ </div>
365
+ <div class="card-body">
366
+ <form [formGroup]="checkoutFormFacturacion">
367
+ <div class="row mt-2"><!--Fila 1-->
368
+
369
+ @if(getTypeForm().viewForms.firstName.enabled){
370
+ <div class="form-group col-12 col-md-6">
371
+ <!--Si es required-->
372
+ <label class="form-label">{{'first-name'|translate}}
373
+ @if(getTypeForm().viewForms.firstName.required){
374
+ <span class="required">*</span>
375
+ }
376
+ </label>
377
+ <!--Input-->
378
+ <input class="form-control" type="text" name="firstName" formControlName="firstName"
379
+ value="" placeholder="" autocomplete="off">
380
+ @if(checkoutFormFacturacion.controls['firstName'].touched &&
381
+ checkoutFormFacturacion.controls['firstName'].errors?.['required']){
382
+ <div class="text-danger-container">
383
+ <span class="text-danger">{{'first-name-help1'|translate}}</span>
384
+ </div>
385
+ }
386
+ <!--Error info-->
387
+ @if(checkoutFormFacturacion.controls['firstName'].touched &&
388
+ checkoutFormFacturacion.controls['firstName'].errors?.['pattern']){
389
+ <div class="text-danger-container">
390
+ <span class="text-danger">
391
+ {{'first-name-help2'|translate}}
392
+ </span>
393
+ </div>
394
+ }
395
+ </div>
396
+ }
397
+ @if(getTypeForm().viewForms.lastName.enabled){
398
+ <div class="form-group col-12 col-md-6">
399
+ <label class="form-label">{{'last-name'|translate}}
400
+ @if(getTypeForm().viewForms.lastName.required){
401
+ <span class="required">*</span>
402
+ }
403
+ </label>
404
+ <input class="form-control" type="text" name="lastName" formControlName="lastName" value=""
405
+ placeholder="" autocomplete="off">
406
+ @if(checkoutFormFacturacion.controls['lastName'].touched &&
407
+ checkoutFormFacturacion.controls['lastName'].errors?.['required']){
408
+ <div class="text-danger-container">
409
+ <span class="text-danger">{{'last-name-help1'|translate}}</span>
410
+ </div>
411
+ }
412
+ @if(checkoutFormFacturacion.controls['lastName'].touched &&
413
+ checkoutFormFacturacion.controls['lastName'].errors?.['pattern']){
414
+ <div class="text-danger-container">
415
+ <span class="text-danger">{{'last-name-help2'|translate}}</span>
416
+ </div>
417
+ }
418
+ </div>
419
+ }
420
+ </div>
421
+ <div class="row mt-2"><!--Fila 2-->
422
+ @if(getTypeForm().viewForms.phoneNumber.enabled){
423
+ <div class="form-group col-12 col-md-6">
424
+ <label class="form-label">{{'phone'|translate}}
425
+ @if(getTypeForm().viewForms.phoneNumber.required){
426
+ <span class="required">*</span>
427
+ }
428
+ </label>
429
+ <input (change)="onInputChange()" class="form-control" type="text" name="phoneNumber"
430
+ formControlName='phoneNumber' value="" placeholder="" autocomplete="off">
431
+ @if(checkoutFormFacturacion.controls['phoneNumber'].touched &&
432
+ checkoutFormFacturacion.controls['phoneNumber'].errors?.['required']){
433
+ <div class="text-danger-container">
434
+ <span class="text-danger">
435
+ {{'phone-help1'|translate}}
436
+ </span>
437
+ </div>
438
+ }
439
+ @if(checkoutFormFacturacion.controls['phoneNumber'].touched &&
440
+ checkoutFormFacturacion.controls['phoneNumber'].errors?.['pattern']){
441
+ <div class="text-danger-container">
442
+ <span class="text-danger">
443
+ {{'phone-help2'|translate}}
444
+ </span>
445
+ </div>
446
+ }
447
+ </div>
448
+ }
449
+ @if(getTypeForm().viewForms.email.enabled){
450
+ <div class="form-group col-12 col-md-6">
451
+ <label class="form-label">{{'email-address'|translate}}
452
+ @if(getTypeForm().viewForms.email.required){
453
+ <span class="required">*</span>
454
+ }</label>
455
+ <input class="form-control" type="email" name="email" formControlName='email' value=""
456
+ placeholder="" autocomplete="off">
457
+ @if(checkoutFormFacturacion.controls['email'].touched &&
458
+ checkoutFormFacturacion.controls['email'].errors?.['required']){
459
+ <div class="text-danger-container">
460
+ <span class="text-danger">
461
+ {{'email-address-help1'|translate}}
462
+ </span>
463
+ </div>
464
+ }
465
+ @if(checkoutFormFacturacion.controls['email'].touched &&
466
+ checkoutFormFacturacion.controls['email'].errors?.['email']){
467
+ <div class="text-danger-container">
468
+ <span class="text-danger">
469
+ {{'email-address-help2'|translate}}
470
+ </span>
471
+ </div>
472
+ }
473
+ </div>
474
+ }
475
+ </div>
476
+ <div class="row mt-2"><!--Fila 3-->
477
+ @if(getTypeForm().viewForms.countryCode.enabled){
478
+ @if(countries$ | async; as countries){
479
+ <div class="form-group col-12 col-md-4">
480
+ <label class="form-label">{{'country'|translate}}
481
+ @if(getTypeForm().viewForms.countryCode.required){
482
+ <span class="required">*</span>
483
+ }</label>
484
+ <select class="form-select" name="countryCode" formControlName='countryCode'
485
+ (change)="onCountrySelected($event, true)">
486
+ @for(country of countries; track $index){
487
+ <option [value]="country.code">{{ country.name }}</option>
488
+ }
489
+ </select>
490
+ @if(checkoutFormFacturacion.controls['countryCode'].touched &&
491
+ checkoutFormFacturacion.controls['countryCode'].errors?.['required']){
492
+ <div class="text text-danger">
493
+ {{'country-help'|translate}}
494
+ </div>
495
+ }
496
+ </div>
497
+ }
498
+ }
499
+ @if(getTypeForm().viewForms.provinceCode.enabled){
500
+ @if(provinces$ | async; as provinces){
501
+ <div class="form-group col-12 col-md-4">
502
+ <label class="form-label">{{'state'|translate}}
503
+ @if(getTypeForm().viewForms.provinceCode.required){
504
+ <span class="required">*</span>
505
+ }</label>
506
+ <select class="form-select" name="provinceCode"
507
+ (change)="onProvincesSelected($event, provinces, true)" formControlName='provinceCode'>
508
+ @for(province of provinces; track $index){
509
+ <option [value]="province.code">{{ province.name }}
510
+ </option>
511
+ }
512
+ </select>
513
+ @if(checkoutFormFacturacion.controls['provinceCode'].touched &&
514
+ checkoutFormFacturacion.controls['provinceCode'].errors?.['required']){
515
+ <div class="text text-danger">
516
+ {{'state-help'|translate}}
517
+ </div>
518
+ }
519
+ </div>
520
+ }
521
+ }
522
+ @if(getTypeForm().viewForms.city.enabled){
523
+ <div class="form-group col-12 col-md-4">
524
+ <label class="form-label">{{'town-city'|translate}}
525
+ @if(getTypeForm().viewForms.city.required){
526
+ <span class="required">*</span>
527
+ }</label>
528
+ <input (change)="onInputChange()" class="form-control" type="text" name="city"
529
+ formControlName='city' value="" placeholder="" autocomplete="off">
530
+ @if(checkoutFormFacturacion.controls['city'].touched &&
531
+ checkoutFormFacturacion.controls['city'].errors?.['required']){
532
+ <div class="text-danger-container">
533
+ <span class="text-danger">{{'town-city-help'|translate}}</span>
534
+ </div>
535
+ }
536
+ </div>
537
+ }
538
+ </div>
539
+ <div class="row mt-df"><!--Fila 4-->
540
+ @if(getTypeForm().viewForms.street.enabled){
541
+ <div class="form-group col-12 col-md-8">
542
+ <label class="field-label">{{'address'|translate}}
543
+ @if(getTypeForm().viewForms.street.required){
544
+ <span class="required">*</span>
545
+ }
546
+ </label>
547
+ <input (change)="onInputChange()" class="form-control" type="text" name="street"
548
+ formControlName='street' value="" placeholder="" autocomplete="off">
549
+ @if(checkoutFormFacturacion.controls['street'].touched &&
550
+ checkoutFormFacturacion.controls['street'].errors?.['required']){
551
+ <div class="text-danger-container">
552
+ <span class="text-danger">{{'address-help1'|translate}}</span>
553
+ </div>
554
+ }
555
+ @if(checkoutFormFacturacion.controls['street'].touched &&
556
+ checkoutFormFacturacion.controls['street'].errors?.['maxlength']){
557
+ <div class="text-danger-container">
558
+ <span class="text-danger">{{'address-help2'|translate}}</span>
559
+ </div>
560
+ }
561
+ </div>
562
+ }
563
+
564
+ <!-- form dirección -->
565
+ @if(getTypeForm().viewForms.postcode.enabled){
566
+ <div class="form-group col-12 col-md-4">
567
+ <label class="field-label">{{'postal-code'|translate}}
568
+ @if(getTypeForm().viewForms.postcode.required){
569
+ <span class="required">*</span>
570
+ }</label>
571
+ <input (change)="onInputChange()" class="form-control" type="text" name="postcode"
572
+ formControlName='postcode' value="" placeholder="" autocomplete="off">
573
+ @if(checkoutFormFacturacion.controls['postcode'].touched &&
574
+ checkoutFormFacturacion.controls['postcode'].errors?.['required']){
575
+ <div class="text-danger-container">
576
+ <span class="text-danger">{{'postal-code-help'|translate}}</span>
577
+ </div>
578
+ }
579
+ @if(checkoutFormFacturacion.controls['postcode'].touched &&
580
+ checkoutFormFacturacion.controls['postcode'].errors?.['pattern']){
581
+ <div class="text-danger-container">
582
+ <span class="text-danger"> {{'postal-code-pattern-error' | translate}} </span>
583
+ </div>
584
+ }
585
+ </div>
586
+ }
587
+ </div>
588
+ <div class="row mt-df"><!--Fila 5-->
589
+ @if(getTypeForm().viewForms.documentType.enabled){
590
+ @if(documentTypes$ | async; as documentTypes){
591
+ <div class="form-group col-12 col-md-4">
592
+ <label class="field-label">{{'document-type'|translate}}
593
+ @if(getTypeForm().viewForms.documentType.required){
594
+ <span class="required">*</span>
595
+ }</label>
596
+ <select name="documentType" class="form-select" (change)="onDocumentTypesSelected($event, true)"
597
+ formControlName='documentType'>
598
+ <!-- <option [value]="''" selected>{{'document-type'|translate}}</option>
599
+ --> @for(item of documentTypes; track $index){
600
+ <option [value]="item.code">{{item.name}}</option>
601
+ }
602
+ </select>
603
+ @if(checkoutFormFacturacion.controls['documentType'].touched &&
604
+ checkoutFormFacturacion.controls['documentType'].errors?.['required']){
605
+ <div class="text-danger-container">
606
+ <span class="text-danger">
607
+ {{'type-document-help'|translate}}
608
+ </span>
609
+ </div>
610
+ }
611
+ </div>
612
+ }
613
+ }
614
+ @if(getTypeForm().viewForms.documentNumber.enabled){
615
+ <div class="form-group col-12 col-md-4">
616
+ <label class="field-label">{{'document-number'|translate}}
617
+ @if(getTypeForm().viewForms.documentNumber.required){
618
+ <span class="required">*</span>
619
+ }
620
+ </label>
621
+ <input (change)="onInputChange()" class="form-control" [type]="'text'" name="documentNumber"
622
+ formControlName='documentNumber' min="1" max="99999999999" value="" placeholder=""
623
+ autocomplete="off">
624
+ @if(checkoutFormFacturacion.controls['documentNumber'].touched &&
625
+ checkoutFormFacturacion.controls['documentNumber'].errors?.['required']){
626
+ <div class="text-danger-container">
627
+ <span class="text-danger">
628
+ {{'document-number-help'|translate}}
629
+ </span>
630
+ </div>
631
+ }
632
+ </div>
633
+ }
634
+ </div>
635
+ <div class="row mt-df"><!--Fila 6-->
636
+ @if(getTypeForm().viewForms.notes.enabled){
637
+ <div class="form-group col-12 col-md-12">
638
+ @if(!getLabelNotesParam()){
639
+ <label class="field-label">{{'notes'|translate}}
640
+ @if(getTypeForm().viewForms.notes.required){
641
+ <span class="required">*</span>
642
+ }
643
+ </label>
644
+ }
645
+ @if(getLabelNotesParam(); as labelnotes){
646
+ <label class="field-label" [innerHTML]="labelnotes.value">
647
+ @if(getTypeForm().viewForms.notes.required){
648
+ <span class="required">*</span>
649
+ }
650
+ </label>
651
+ }
652
+
653
+ <input (change)="onInputChange()" class="form-control" type="text" name="notes"
654
+ formControlName='notes' value="" placeholder="" autocomplete="off">
655
+ </div>
656
+ }
657
+ </div>
658
+ </form>
659
+ </div>
660
+ </div>
661
+ }
662
+ <div class="row d-flex flex-row">
663
+ <div class="col-12 d-flex justify-content-end">
664
+ <button type="submit" class="btn btn-primary text-white" [disabled]="checkoutForm.invalid">{{(isLastOne
665
+ ? 'finish-checkout' : (allready_data ? 'update' :
666
+ 'ready-form')) | translate}}
667
+ <!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->
668
+ </button>
669
+ </div>
670
+ </div>
671
+ @if(loading){
672
+ <div class="d-flex flex-column justify-content-center align-items-center">
673
+ <app-loading-full-ec></app-loading-full-ec>
674
+ </div>
675
+ }
676
+
677
+ </form>
678
+ </div>
679
+ } @else {
680
+ <div id="loginCheckout">
681
+ @if(require_login){
682
+ <div class="d-flex flex-column justify-content-center align-items-center">
683
+ <div class="col-12">
684
+ <app-login-form-ec (ready)="verifyValidate($event)" [redirect]="false" [title]="'need-login'">
685
+ </app-login-form-ec>
686
+ </div>
687
+ </div>
688
+ }
689
+ </div>
690
+ }
691
+ } @else {
692
+ @if(modeSelectAddress == 'ONLY_ADDRESS_SELECTION'){
693
+ <div class="checkout-title my-2">
694
+ <h3>{{'address-selection'|translate}}</h3>
695
+ </div>
696
+ }
697
+
698
+ @if(this.addressBook){
699
+ @if(this.addressBook?.length){
700
+ <div class="container">
701
+ <div class="row">
702
+ @for(item of addressBook; track $index; let i = $index){
703
+ <div class="col-sm-6 col-12 my-3">
704
+ <div class="card p-3">
705
+ <input class="ms-1 mt-3 form-check-input input-size-lg" type="radio" [name]="'n-'+i" [id]="i"
706
+ [checked]="item.selected" (click)="setSelectAddress(item)" (change)="onInputChange()">
707
+ <div class="ms-5">
708
+ <h4 class="card-title">
709
+ <strong>{{'address'|translate}}</strong><br>
710
+ <span class="text-uppercase h3">{{item.street}}</span>
711
+ </h4>
712
+ <div class="row">
713
+ <h5 class="card-subtitle mb-2 text-muted col-auto">
714
+ <strong>{{'country'|translate}}</strong> {{getCountry(item.countryCode)}}
715
+ </h5>
716
+ <h5 class="card-subtitle mb-2 text-muted col-auto">
717
+ <strong>{{'state'|translate}}</strong> {{getProvince(item.provinceCode)}}
718
+ </h5>
719
+ <h5 class="card-subtitle mb-2 text-muted col-auto">
720
+ <strong>{{'town-city'|translate}}</strong> {{item.city}}
721
+ </h5>
722
+ <h5 class="card-subtitle mb-2 text-muted col-auto">
723
+ <strong>{{'postal-code'|translate}}</strong> {{item.postcode}}
724
+ </h5>
725
+ </div>
726
+ <div class="row px-3">
727
+ <div class="card p-2 bg-light w-100">
728
+ <div class="card-body">
729
+ <h5 class="card-title">{{'address-contact'|translate}}</h5>
730
+ <h6 class="card-subtitle mb-2 text-muted">
731
+ <strong>{{'first-name'|translate}}</strong>
732
+ {{item.addressContact.firstName}}
733
+ </h6>
734
+ <h6 class="card-subtitle mb-2 text-muted">
735
+ <strong>{{'last-name'|translate}}</strong>
736
+ {{item.addressContact.lastName}}
737
+ </h6>
738
+ <h6 class="card-subtitle mb-2 text-muted">
739
+ <strong>{{'document-type'|translate}}</strong>
740
+ {{getDocumentType(item.addressContact.documentType)}}
741
+ </h6>
742
+ <h6 class="card-subtitle mb-2 text-muted">
743
+ <strong>{{'document-number'|translate}}</strong>
744
+ {{item.addressContact.documentNumber}}
745
+ </h6>
746
+ <h6 class="card-subtitle mb-2 text-muted">
747
+ <strong>{{'email-address'|translate}}</strong>
748
+ {{item.addressContact.email}}
749
+ </h6>
750
+ </div>
751
+ </div>
752
+ </div>
753
+ </div>
754
+ </div>
755
+ </div>
756
+ }
757
+
758
+ </div>
759
+
760
+ <div class="w-100">
761
+ <div class="row mt-df">
762
+ <div class="form-group col-12 col-md-12">
763
+ @if(!getLabelNotesParam()){
764
+ <label class="form-label">{{'notes'|translate}}</label>
765
+ }
766
+ @if(getLabelNotesParam(); as labelnotes){
767
+ <label class="form-label" [innerHTML]="labelnotes.value"></label>
768
+ <input (change)="onInputChange()" class="form-control" type="text" name="notes"
769
+ [(ngModel)]="this.addressBookSelected.notes" #ctrl="ngModel" value="" placeholder=""
770
+ autocomplete="off">
771
+ }
772
+
773
+ </div>
774
+ </div>
775
+ </div>
776
+ <div class="row d-flex flex-row">
777
+ <div class="col-12 d-flex justify-content-end">
778
+ <button (click)="onSelectAddress(cartItems)" class="btn btn-primary text-white" [disabled]="loadingStep">{{(isLastOne
779
+ ? 'finish-checkout' : (allready_data ? 'update' :
780
+ 'ready-form')) | translate}}
781
+ <!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->
782
+ </button>
783
+
784
+ </div>
785
+ </div>
786
+ @if(loading){
787
+ <div class="d-flex flex-column jusitfy-content-center align-items-center">
788
+ <app-loading-full-ec></app-loading-full-ec>
789
+ </div>
790
+ }
791
+ </div>
792
+ } @else {
793
+ <div class="container">
794
+ <div class="row">
795
+ <div class="col-12 text-center my-2">
796
+ <div class="d-flex flex-column justify-content-center align-items-center">
797
+ <app-loading-full-ec></app-loading-full-ec>
798
+ </div>
799
+ </div>
800
+ </div>
801
+ </div>
802
+ }
803
+ } @else {
804
+ <div class="container">
805
+ <div class="row">
806
+ <div class="col-12 text-center my-2">
807
+ <h4> {{'address-book-not-result' | translate }} </h4>
808
+ </div>
809
+ </div>
810
+ </div>
811
+ }
812
+
813
+ }
814
+
815
+ }
816
+ @else {
817
+ <div class="container">
818
+ <p>Por favor <a [routerLink]="['/auth/login']"> Inicie Sesión</a></p>
819
+ </div>
820
+ }
821
+ }
822
+ @if(getTypeForm().viewForms.terms.enabled){
823
+ <div class="modal fade" id="terminos-y-condiciones" tabindex="-1" aria-labelledby="modalLabel" aria-hidden="true">
824
+ <div class="modal-dialog modal-xl modal-dialog-scrollable">
825
+ <div class="modal-content">
826
+ <div class="modal-header">
827
+ <h5 class="modal-title" id="modalLabel">Términos y condiciones</h5>
828
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
829
+ </div>
830
+ <div class="modal-body">
831
+ <app-blocks-ec [section]="'terminos-y-condiciones'" />
832
+ </div>
833
+ </div>
834
+ </div>
835
+ </div>
836
+ }