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,92 @@
1
+ import { Component, EventEmitter, inject, Input, Output, signal } from '@angular/core';
2
+ import { LoadingSectionEcComponent } from '../../widgets-ec';
3
+ import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
4
+ import { Router, RouterLink } from '@angular/router';
5
+ import { AuthService, ToastService } from '../../../ec-services';
6
+ import { UserRoleType } from '../../../interfaces';
7
+ import { firstValueFrom } from 'rxjs';
8
+ import { JsonPipe } from '@angular/common';
9
+
10
+ @Component({
11
+ selector: 'app-login-form-ec',
12
+ standalone: true,
13
+ imports: [LoadingSectionEcComponent, ReactiveFormsModule, RouterLink, JsonPipe],
14
+ templateUrl: './login-form-ec.component.html',
15
+ styleUrl: './login-form-ec.component.scss'
16
+ })
17
+ export class LoginFormEcComponent {
18
+ private _authService:AuthService = inject(AuthService);
19
+ private _formBuilder:FormBuilder = inject(FormBuilder);
20
+ private _toastService:ToastService = inject(ToastService);
21
+ private _router:Router = inject(Router);
22
+ /**
23
+ * Parametro para indicar si tras loguear
24
+ * debe redireccionar o no.
25
+ */
26
+ @Input() redirect:boolean = true;
27
+ /**
28
+ * Parametro para indicar a donde redireccionar.
29
+ */
30
+ @Input() redirectTo:string = '/';
31
+ @Output() ready = new EventEmitter();
32
+ /**
33
+ * Muestra si esta cargando o no.
34
+ */
35
+ public loading: boolean = false;
36
+ public loggedIn: boolean = false;
37
+ /**
38
+ * Signal que guarda el formulario de login.
39
+ */
40
+ public loginForm: any = signal<FormGroup>(
41
+ this._formBuilder.group({
42
+ username: ['', Validators.required],
43
+ password: ['', Validators.required]
44
+ })
45
+ );
46
+ /**
47
+ * Loguea al usuario en la plataforma.
48
+ * @param $event
49
+ * @param withRoles
50
+ * @returns
51
+ */
52
+ public login($event: Event, withRoles: UserRoleType[] = []){
53
+ $event.preventDefault();
54
+ this.loading = true;
55
+ if(!this.loginForm().valid){
56
+ this._toastService.show('login-form-incomplete')
57
+ this.loading = false;
58
+ return;
59
+ }
60
+ firstValueFrom(this._authService.login(this.loginForm().value, withRoles)).then(
61
+ (res:any) => {
62
+ console.log(res);
63
+ if(res == 'ok'){
64
+ this.ready.emit(this.loginForm().value.username);
65
+ this.loggedIn = true;
66
+ this.redirect && this.redirectHome();
67
+
68
+ }
69
+ else {
70
+ if(res == 'error'){
71
+ this._toastService.error('invalid-credentials')
72
+ }
73
+ }
74
+ this.loading = false;
75
+ },
76
+ (err:any) => {
77
+ this.loading = false;
78
+ }
79
+ )
80
+ }
81
+ /**
82
+ * Si el servicio de auth tiene configurado a donde volver, se ejecutar ese caso.
83
+ * De lo contrario redirige al contenido de la variable `redirectTo`.
84
+ */
85
+ redirectHome(){
86
+ const resolverFunction = this._authService.getHomeResolver()
87
+ resolverFunction
88
+ ? resolverFunction()
89
+ : this._router.navigateByUrl(this.redirectTo)
90
+ }
91
+
92
+ }
@@ -0,0 +1,55 @@
1
+ <div class="w-100 pl-md-5 position-relative" id="register">
2
+ <div class="py-2">
3
+ <h5>CREAR CUENTA</h5>
4
+ </div>
5
+ <form id="registro" [formGroup]="form" (submit)="register($event)">
6
+ <div class="form-group">
7
+ <label for="" class="form-label">NOMBRE</label>
8
+ <input formControlName="firstName" class="form-control rounded-0" type="text" placeholder="Nombre">
9
+ </div>
10
+ <div class="form-group">
11
+ <label for="" class="form-label">APELLIDO</label>
12
+ <input formControlName="lastName" class="form-control rounded-0" type="text" placeholder="Apellido">
13
+ </div>
14
+ <div class="form-group">
15
+ <label for="" class="">CORREO ELECTRONICO</label>
16
+ <input formControlName="email" email required class="form-control rounded-0" type="email"
17
+ placeholder="Correo electrónico">
18
+ </div>
19
+ <div class="form-group">
20
+ <label for="" class="form-label">CONTRASEÑA</label>
21
+ <input formControlName="plainPassword" required class="form-control rounded-0" type="password"
22
+ placeholder="Contraseña">
23
+ </div>
24
+ <div class="form-group">
25
+ <label for="" class="form-label">REPETIR CONTRASEÑA</label>
26
+ <input formControlName="plainPassword2" required class="form-control rounded-0" type="password"
27
+ placeholder="Repetir contraseña">
28
+ </div>
29
+
30
+ <div class="custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2">
31
+ <input type="checkbox" formControlName="terms" required class="custom-control-input form-check-input" name="Color2"
32
+ id="Color2">
33
+ <label class="custom-control-label ff-ubuntu-light font-sm form-check-label" for="Color2"> He
34
+ leído y acepto las políticas de privacidad y los términos y
35
+ condiciones</label>
36
+ </div>
37
+
38
+ <div class="custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4">
39
+ <input type="checkbox" formControlName="newsletter" class="custom-control-input form-check-input" name="Color3" id="Color3">
40
+ <label class="custom-control-label form-check-label ff-ubuntu-light font-sm" for="Color3">
41
+ Suscripción al Newsletter</label>
42
+ </div>
43
+
44
+ <div class="row">
45
+ <div class="col-12">
46
+ <button [disabled]="form.invalid" type="submit"
47
+ class="btn btn-primary px-5 py-2 h-fit">CREAR</button>
48
+ </div>
49
+ </div>
50
+ </form>
51
+ @if(loading){
52
+ <app-loading-section-ec />
53
+ }
54
+
55
+ </div>
@@ -0,0 +1,102 @@
1
+ import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';
2
+ import { AnalyticsService, AuthService, ToastService } from '../../../ec-services';
3
+ import { Router } from '@angular/router';
4
+ import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
5
+ import { LoadingSectionEcComponent } from "../../widgets-ec/loading";
6
+ import { firstValueFrom } from 'rxjs';
7
+
8
+ @Component({
9
+ selector: 'app-register-form-ec',
10
+ standalone: true,
11
+ imports: [ReactiveFormsModule, LoadingSectionEcComponent],
12
+ templateUrl: './register-form-ec.component.html',
13
+ styleUrls: ['./register-form-ec.component.scss']
14
+ })
15
+ export class RegisterFormEcComponent {
16
+ private _authService: AuthService = inject(AuthService);
17
+ private _toastService: ToastService = inject(ToastService);
18
+ private _router: Router = inject(Router);
19
+ private _analyticsService: AnalyticsService = inject(AnalyticsService);
20
+ private _formBuilder: FormBuilder = inject(FormBuilder);
21
+ /**
22
+ * Indica si debe redireccionar o se queda en la misma pantalla
23
+ */
24
+ @Input() redirect:boolean = true;
25
+ /**
26
+ * Para que se puede capturar el estado de la petición de registro.
27
+ */
28
+ @Output() ready = new EventEmitter();
29
+ /**
30
+ * Contiene el formulario de registro.
31
+ */
32
+ public form: FormGroup;
33
+ /**
34
+ * Para indicar que se esta procesando la solicitud de registro.
35
+ */
36
+ public loading: boolean = false;
37
+ /**
38
+ * Para indicar el exito de la solicitud de registro.
39
+ */
40
+ public success: boolean = false;
41
+
42
+ constructor() {
43
+ this.form = this._formBuilder.group({
44
+ firstName: ['', Validators.required],
45
+ lastName: ['', Validators.required],
46
+ email: ['', [Validators.required, Validators.email]],
47
+ plainPassword: ['', Validators.required],
48
+ plainPassword2: ['', Validators.required],
49
+ newsletter: [false],
50
+ terms: ['', Validators.required],
51
+ });
52
+ }
53
+ /**
54
+ * Registra un usuario.
55
+ * @param event
56
+ * @returns
57
+ */
58
+ register(event: Event){
59
+ event.preventDefault();
60
+ this.loading = true;
61
+ if (!this.form.valid) {
62
+ this._toastService.show('fields-incomplete');
63
+ this.loading = false
64
+ return;
65
+ };
66
+ if (this.form.value.plainPassword != this.form.value.plainPassword2) {
67
+ this._toastService.show('mismatched-password');
68
+ this.loading = false
69
+ return;
70
+ }
71
+ if(this.form.valid){
72
+ firstValueFrom(this._authService.singUp(this.form.value)).then(
73
+ res => {
74
+ this.loading = false
75
+ this._toastService.success('register-ok')
76
+ this._analyticsService.callEvent('sign_up', {
77
+ firstName: this.form.value.firstName,
78
+ lastName: this.form.value.lastName,
79
+ email: this.form.value.email
80
+ })
81
+ this.success = true
82
+ this.ready.emit(true)
83
+ if(this.redirect){
84
+ this._router.navigateByUrl('home')
85
+ }
86
+ },
87
+ err => {
88
+ this.loading = false
89
+ if(err.status == 400){
90
+ this._toastService.show('email-already-registered')
91
+ } else {
92
+ this._toastService.error('email-register-error')
93
+ }
94
+ }
95
+ )
96
+ } else {
97
+ this._toastService.show('invalid-form')
98
+ this.loading = false
99
+ }
100
+ }
101
+
102
+ }
@@ -0,0 +1,233 @@
1
+ <div class="container">
2
+ <div class="row">
3
+ <div class="col-12">
4
+ <div class="">
5
+ <div class="pt-5 pb-3 border-bottom">
6
+ <h3 class="my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap">CREAR CUENTA
7
+ MAYORISTA</h3>
8
+ </div>
9
+ <div class=" py-3">
10
+ <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate
11
+ ingresando estos
12
+ datos:</p>
13
+ </div>
14
+ <form [formGroup]="form" (submit)="register($event)" class="position-relative">
15
+ <div class="row w-100 mx-auto d-flex justify-content-center px-0 py-3">
16
+
17
+ <div class="col-12 col-md-6 px-0 pr-md-1">
18
+ <div class="form-group">
19
+ <label for="">Nombre</label>
20
+ <input type="text" id="" placeholder="Nombre" required name="firstName"
21
+ formControlName="firstName"
22
+ [class]="form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
23
+ <span class="invalid-feedback">El nombre es un campo obligatorio.</span>
24
+ </div>
25
+ </div>
26
+ <div class="col-12 col-md-6 px-0 pl-md-1">
27
+ <div class="form-group">
28
+ <label for="">Apellidos</label>
29
+ <input type="text" id="" placeholder="Apellido" required name="lastName"
30
+ formControlName="lastName"
31
+ [class]="form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
32
+ <span class="invalid-feedback">El apellido es un campo obligatorio.</span>
33
+ </div>
34
+ </div>
35
+
36
+ <div class="col-12 col-md-6 px-0 pr-md-1">
37
+ <div class="form-group">
38
+ <label for="">Email</label>
39
+ <input type="email" id="" placeholder="Email" email required name="email"
40
+ formControlName="email"
41
+ [class]="form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
42
+ <span class="invalid-feedback">El email no posee un formato correcto.</span>
43
+ </div>
44
+ </div>
45
+ <div class="col-12 col-md-6 px-0 pl-md-1">
46
+ <div class="form-group">
47
+ <label for="">Contraseña</label>
48
+ <input type="password" id="" placeholder="Contraseña" required name="plainPassword"
49
+ formControlName="plainPassword"
50
+ [class]="form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
51
+ <span class="invalid-feedback">La contraseña es un campo obligatorio.</span>
52
+ </div>
53
+ </div>
54
+ @if(documentTypes$ | async; as documentTypes){
55
+ <div class="col-12 col-md-6 px-0 pl-md-1">
56
+ <div class="form-group">
57
+ <label for="">{{'document-type'|translate}}</label>
58
+ <select name="documentType" formControlName="documentType" required
59
+ [class]="form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
60
+ <option [value]="null" id="selectDocumentType" disabled>Seleccione un tipo</option>
61
+ @for (type of documentTypes; track $index) {
62
+ <option [value]="type.code">{{ type.name }}</option>
63
+ }
64
+ </select>
65
+ <span class="invalid-feedback">{{'document-type-help'|translate}}</span>
66
+ </div>
67
+ </div>
68
+ }
69
+
70
+ <div class="col-12 col-md-6 px-0 pl-md-1">
71
+ <div class="form-group">
72
+ <label for="">{{'document-number'|translate}}</label>
73
+ <input type="text" id="" placeholder="{{'document-number'|translate}}" required
74
+ name="documentNumber" formControlName="documentNumber"
75
+ [class]="form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
76
+ <span class="invalid-feedback">{{'document-type-help'|translate}}</span>
77
+ </div>
78
+ </div>
79
+
80
+ @if(countries$ | async; as countries ){
81
+ <div class="col-12 col-md-6 px-0 pl-md-1">
82
+ <div class="form-group">
83
+ <label for="">{{'country'|translate}}</label>
84
+ <select name="countryCode" formControlName="countryCode" required (change)="onCountrySelected($event)"
85
+ [class]="form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
86
+ <option [value]="null" id="selectOpPais" disabled>Seleccione un pais</option>
87
+ @for (country of countries; track $index) {
88
+ <option [value]="country.code"> {{ country.name }}</option>
89
+ }
90
+ </select>
91
+ <span class="invalid-feedback">{{'country-help'|translate}}</span>
92
+ </div>
93
+ </div>
94
+ }
95
+ @if(provinces$ |async ; as provinces){
96
+ <div class="col-12 col-md-6 px-0 pl-md-1">
97
+ <div class="form-group">
98
+ <label for="">{{'state'|translate}}</label>
99
+ <select name="provinceCode" formControlName="provinceCode" required (change)="onProvincesSelected($event, provinces)"
100
+ [class]="form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
101
+ <option [value]="null" id="selectOpProvincia" disabled>Seleccione una provincia
102
+ </option>
103
+ @for (province of provinces; track $index) {
104
+ <option [value]="province.code">{{ province.name }}</option>
105
+ }
106
+ </select>
107
+ <span class="invalid-feedback">{{'state-help'|translate}}</span>
108
+ </div>
109
+ </div>
110
+ }
111
+
112
+ <div class="col-12 col-md-6 px-0 pl-md-1">
113
+ <div class="form-group">
114
+ <label for="">{{'address'|translate}}</label>
115
+ <input placeholder="{{'address'|translate}}" required type="text" name="street"
116
+ formControlName="street"
117
+ [class]="form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
118
+ <span class="invalid-feedback">{{'address-help1'|translate}}</span>
119
+ </div>
120
+ </div>
121
+
122
+ <div class="col-12 col-md-6 px-0 pl-md-1">
123
+ <div class="form-group">
124
+ <label for="">{{'town-city'|translate}}</label>
125
+ <input placeholder="{{'town-city'|translate}}" required type="text" name="city"
126
+ formControlName="city"
127
+ [class]="form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
128
+ <span class="invalid-feedback">{{'town-city-help'|translate}}</span>
129
+ </div>
130
+ </div>
131
+
132
+ <div class="col-12 col-md-6 px-0 pl-md-1">
133
+ <div class="form-group">
134
+ <label for="">{{'postal-code'|translate}}</label>
135
+ <input placeholder="{{'postal-code'|translate}}" required type="text" name="postcode"
136
+ formControlName="postcode"
137
+ [class]="form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
138
+ <span class="invalid-feedback">{{'postal-code-help'|translate}}</span>
139
+ </div>
140
+ </div>
141
+
142
+ <div class="col-12 col-md-6 px-0 pr-md-1">
143
+ <div class="form-group">
144
+ <label for="">Nombre compañía</label>
145
+ <input type="text" id="" placeholder="Nombre compañía" required name="companyName"
146
+ formControlName="companyName"
147
+ [class]="form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
148
+ <span class="invalid-feedback">El nombre compañía es un campo obligatorio.</span>
149
+ </div>
150
+ </div>
151
+
152
+ <div class="col-12 col-md-6 px-0 pr-md-1">
153
+ <div class="form-group">
154
+ <label for="">{{'phone'|translate}}</label>
155
+ <input type="text" id="" placeholder="{{'phone'|translate}}" required name="phoneNumber"
156
+ formControlName="phoneNumber"
157
+ [class]="form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
158
+ <span class="invalid-feedback">El numero de telefono es un campo obligatorio.</span>
159
+ </div>
160
+ </div>
161
+
162
+ <div class="col-12 col-md-6 px-0 pr-md-1">
163
+ <div class="form-group">
164
+ <label for="">Sexo</label>
165
+ <select required name="gender" formControlName="gender"
166
+ [class]="form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
167
+ <option value="null" id="selectOpSexo">Sexo</option>
168
+ <option value="u">Desconocido</option>
169
+ <option value="s">Femenino</option>
170
+ <option value="m">Masculino</option>
171
+ </select>
172
+ <span class="invalid-feedback">El sexo es un campo obligatorio.</span>
173
+ </div>
174
+ </div>
175
+
176
+ <div class="col-12 col-md-6 px-0 pr-md-1">
177
+ <div class="form-group">
178
+ <label for="">Fecha creacion</label>
179
+ <input type="date" id="" placeholder="Fecha creacion" required name="birthday"
180
+ formControlName="birthday"
181
+ [class]="form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
182
+ <span class="invalid-feedback">La fecha de creacion es un campo obligatorio.</span>
183
+ </div>
184
+ </div>
185
+
186
+ <div class="col-12 col-md-6 px-0 pr-md-1">
187
+ <div class="form-group">
188
+ <label for="">Identificacion</label>
189
+ <input type="text" id="" placeholder="Identificacion" required name="taxIdentification"
190
+ formControlName="taxIdentification"
191
+ [class]="form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'">
192
+ <span class="invalid-feedback">La identificacion de la compañía es un campo
193
+ obligatorio.</span>
194
+ </div>
195
+ </div>
196
+ <div class="col-12 col-md-6 px-0 py-4 pl-md-1 ">
197
+ <div class="form-check py-2">
198
+ <input class="form-check-input" type="checkbox" value="" id="terms" name="terms"
199
+ formControlName="terms" type="checkbox">
200
+ <label for="terms" class="form-check-label">Acepto los <a
201
+ [routerLink]="['/section/terminos-y-condiciones']"
202
+ routerLinkActive="router-link-active" class="text-primary">términos y
203
+ condiciones *</a></label>
204
+ </div>
205
+ </div>
206
+ <div class="col-12 col-md-6 px-0 py-4 pl-md-1">
207
+ <div class="form-check py-2">
208
+ <input class="form-check-input" type="checkbox" value="" id="defaultCheck2"
209
+ name="subscribedToNewsletter" formControlName="subscribedToNewsletter"
210
+ type="checkbox">
211
+ <label class="form-check-label" for="defaultCheck2">
212
+ Suscripción al newsletter
213
+ </label>
214
+ </div>
215
+ </div>
216
+
217
+ <div
218
+ class="col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1">
219
+
220
+ <button type="submit" role="button" [disabled]="form.invalid"
221
+ class="btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit">REGISTRATE</button>
222
+ </div>
223
+
224
+ </div>
225
+ <pre>{{form.value | json}}</pre>
226
+ @if(loading){
227
+ <app-loading-section-ec />
228
+ }
229
+ </form>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ </div>
@@ -0,0 +1,149 @@
1
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
+ import { LoadingSectionEcComponent } from "../../widgets-ec/loading";
3
+ import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
4
+ import { TranslateModule } from '@ngx-translate/core';
5
+ import { AuthService, FormService, ToastService } from '../../../ec-services';
6
+ import { AsyncPipe, JsonPipe } from '@angular/common';
7
+ import { Router, RouterLink } from '@angular/router';
8
+ import { firstValueFrom } from 'rxjs';
9
+
10
+ @Component({
11
+ selector: 'app-register-wholesaler-form-ec',
12
+ standalone: true,
13
+ imports: [LoadingSectionEcComponent, ReactiveFormsModule, TranslateModule, AsyncPipe, JsonPipe, RouterLink],
14
+ templateUrl: './register-wholesaler-form-ec.component.html',
15
+ styleUrl: './register-wholesaler-form-ec.component.scss'
16
+ })
17
+ export class RegisterWholesalerFormEcComponent {
18
+ private _formBuilder: FormBuilder = inject(FormBuilder)
19
+ private _formService: FormService = inject(FormService)
20
+ private _toastService: ToastService = inject(ToastService)
21
+ private _authService: AuthService = inject(AuthService)
22
+ private _router: Router = inject(Router)
23
+ /**
24
+ * Indica si debe redireccionar o se queda en la misma pantalla
25
+ */
26
+ @Input() redirect: boolean = true;
27
+ /**
28
+ * Para que se puede capturar el estado de la petición de registro.
29
+ */
30
+ @Output() ready = new EventEmitter();
31
+ /**
32
+ * Contiene los paises y sus datos
33
+ */
34
+ public countries$ = this._formService.getCountriesData();
35
+ /**
36
+ * Contiene las provincias
37
+ */
38
+ public provinces$ = this._formService.provinces$;
39
+ /**
40
+ * Contiene los tipos de documentos.
41
+ */
42
+ public documentTypes$ = this._formService.documentTypes$;
43
+ /**
44
+ * Contiene el formulario de registro.
45
+ */
46
+ public form: FormGroup;
47
+ /**
48
+ * Para indicar cuando se esta procesando el registro.
49
+ */
50
+ public loading: boolean = false;
51
+ /**
52
+ * Para indicar cuando se proceso con exito el registro.
53
+ */
54
+ public success: boolean = false;
55
+
56
+ constructor() {
57
+ this.form = this._formBuilder.group({
58
+ firstName: ['', [Validators.required]],
59
+ lastName: ['', [Validators.required]],
60
+ documentType: [null, [Validators.required]],
61
+ documentNumber: ['', [Validators.required]],
62
+ email: ['', [Validators.required, Validators.email]],
63
+ plainPassword: [''],
64
+ plainPassword2: ['', []],
65
+ countryCode: [null, Validators.required],
66
+ street: [null, [Validators.maxLength(50)]],
67
+ city: ['', Validators.required],
68
+ postcode: ['', Validators.required],
69
+ provinceName: ['', Validators.required],
70
+ provinceCode: [null, Validators.required],
71
+ companyName: ['', [Validators.required]],
72
+ phoneNumber: ['', [Validators.required, Validators.pattern('[0-9]+')]],
73
+ gender: [null, []],
74
+ birthday: [null, [Validators.maxLength(11)]],
75
+ taxIdentification: ['', Validators.required],
76
+ comments: ['', []],
77
+ contactFirstName: ['', []],
78
+ contactLastName: ['', []],
79
+ contactCompanyPosition: ['', []],
80
+ contactEmail: ['', []],
81
+ contactDocumentType: ['', []],
82
+ contactDocumentNumber: ['', []],
83
+ subscribedToNewsletter: [false],
84
+ terms: [true, Validators.required],
85
+ });
86
+ }
87
+ /**
88
+ * Registra un usuario.
89
+ * @param event
90
+ * @returns
91
+ */
92
+ register(event: Event) {
93
+ event.preventDefault()
94
+ this.loading = true;
95
+ if (!this.form.valid) {
96
+ this._toastService.show('fields-incomplete');
97
+ this.loading = false
98
+ return;
99
+ };
100
+ if (this.form.valid) {
101
+ firstValueFrom(this._authService.signUpWholesaler(this.form.value)).then(
102
+ (res: any) => {
103
+ this.loading = false;
104
+ this._toastService.show('register-ok');
105
+ this.success = true;
106
+ this.ready.emit(true);
107
+ if (this.redirect) {
108
+ this._router.navigateByUrl('home')
109
+ }
110
+ },
111
+ (error: any) => {
112
+ this.loading = false;
113
+ if (error.status == 400) {
114
+ this._toastService.show('email-already-registered');
115
+ } else {
116
+ this._toastService.show('email-register-error');
117
+ }
118
+ }
119
+ )
120
+ } else {
121
+ this._toastService.show('invalid-form');
122
+ this.loading = false;
123
+ }
124
+ }
125
+ /**
126
+ * Captura el evento de cuando cambia un pais en el `<select>`
127
+ * @param event
128
+ */
129
+ onCountrySelected = (event: any) => {
130
+ const { value } = event.target;
131
+ //$('#selectOpPais').attr('disabled', true);
132
+ this.form.controls['countryCode'].setValue(value);
133
+ this.form.controls['provinceCode'].setValue('null');
134
+ //value != '' && this.provincesSubject.next(this.countriesSubject.value.find(country => country.code == value).provinces);
135
+ if (value != '' || value != 'null') {
136
+ this._formService.onCountrySelected(value);
137
+ }
138
+ }
139
+ /**
140
+ * Captura el evento de cuando cambia una provincia/estado en el `<select>`
141
+ * @param event
142
+ * @param provinces lista de provincias para obtener el nombre de la seleccionada.
143
+ */
144
+ onProvincesSelected = (event: any, provinces: any) => {
145
+ const { value } = event.target;
146
+ this.form.controls['provinceName'].setValue(provinces.find((province: any) => province.code == value).name);
147
+ }
148
+
149
+ }