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,31 @@
1
+ @if(isProductBox){
2
+ <div class="position-relative h-100">
3
+ <div class="marcas position-absolute w-100">
4
+ <span>20 %OFF</span>
5
+ </div>
6
+ <div>
7
+ @if(product.picturesdefault){
8
+ <img [src]="mediaUrl+product.picturesdefault[0]" class="img-fluid mx-auto" />
9
+ }
10
+ </div>
11
+ <div class="d-flex flex-column justify-center align-items-center">
12
+ <h6 class="productName text-center">{{product.name}}aa</h6>
13
+ <p class="productID">{{product.id}}</p>
14
+ @if(product.shortdetails){
15
+ <div class="shortdetails" [innerHTML]="product.shortdetails"></div>
16
+ }
17
+ @if(product.currentOption && product.currentOption.name){
18
+ <p class="currentOption" >{{product.currentOption.name}}</p>
19
+ }
20
+ </div>
21
+ <div class="d-flex flex-column justify-center alig-items-center">
22
+ @if(true){
23
+ <!--Servicio de auth para controlar si esta logueado o no-->
24
+ <app-price-ec [price]="product.price" [saleprice]="product.saleprice" class="" />
25
+ }
26
+ <button class="btn btn-primary" routerLink="{{'/product/' + product.id}}">Ver Producto</button>
27
+ </div>
28
+ </div>
29
+ } @else {
30
+
31
+ }
@@ -0,0 +1,46 @@
1
+ import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';
2
+ import { Product } from '../../interfaces';
3
+ import { CoreConstantsService } from '../../constants';
4
+ import { AnalyticsService } from '../../ec-services';
5
+ import { Router, RouterLink } from '@angular/router';
6
+ import { CommonModule } from '@angular/common';
7
+ import { PriceEcComponent } from "../widgets-ec/price-ec/price-ec.component";
8
+ /**
9
+ * Componente que se encarga de manejar un producto.
10
+ * @class ProductEcComponent
11
+ */
12
+ @Component({
13
+ selector: 'app-product-ec',
14
+ standalone: true,
15
+ imports: [CommonModule, PriceEcComponent, RouterLink],
16
+ templateUrl: './product-ec.component.html',
17
+ styleUrl: './product-ec.component.scss'
18
+ })
19
+ export class ProductEcComponent implements OnInit {
20
+ /**
21
+ * Datos del producto.
22
+ */
23
+ @Input({
24
+ required: true
25
+ })
26
+ product!: Product;
27
+ /**
28
+ * Se usa para saber si el producto es de tipo Box o no y definir la vista adecuada.
29
+ */
30
+ @Input() isProductBox:boolean = true;
31
+ /**
32
+ * Constantes del core
33
+ */
34
+ @Output() loaded = new EventEmitter<number>();
35
+
36
+ ngOnInit() {
37
+ this.loaded.emit(this.product.id);
38
+ }
39
+ private consts:CoreConstantsService = inject(CoreConstantsService)
40
+ private analyticsService: AnalyticsService = inject(AnalyticsService)
41
+ private router:Router = inject(Router)
42
+ /**
43
+ * URL para las imagenes del producto.
44
+ */
45
+ public mediaUrl:string = this.consts.mediaUrl()
46
+ }
@@ -0,0 +1,65 @@
1
+ @if(options$ | async; as options){
2
+ @if(options && options.length){
3
+ @for(option of options; track $index){
4
+ @switch (option.type) {
5
+ @case ('color') {
6
+ <h5>Colores disponibles</h5>
7
+ <div class="row w-100 mx-auto pb-3 mb-3">
8
+ @for(value of option.values; track $index; let x = $index){
9
+ <a role="button" [title]="value.description" (click)="setOption(option.code, value.name)"
10
+ [class]="'item m-1 circle ' + (value.selected ? 'shadow' : '')" [id]="x + value.name"
11
+ [style.background]="'#' + value.name" [style.box-shadow]="(value.selected ? '0px 0px 0px 2px #000' : 'none')">
12
+ </a>
13
+ }
14
+ </div>
15
+ }
16
+ @case ('size') {
17
+
18
+ }
19
+ @default {
20
+
21
+ }
22
+ }
23
+ }
24
+ } @else {
25
+ <p>loading</p>
26
+ }
27
+ }
28
+
29
+ <!-- <div *ngIf="(options$ | async) as options">
30
+ <div *ngIf="options && options.length; else loading">
31
+ <div *ngFor="let option of options; let i = index">
32
+
33
+ <div [ngSwitch]="option.type">
34
+ <div *ngSwitchCase="'color'">
35
+ <h5>Colores disponibles</h5>
36
+ <div class="row w-100 mx-auto pb-3 mb-3">
37
+ <a *ngFor="let value of option.values; let x = index" role="button"
38
+ (click)="setOption(option.code, value.name)" [class]="'item m-1 ' + (value.selected ? 'shadow' : '')"
39
+ [id]="x + value.name"
40
+ [style.background]="'#' + value.name"
41
+ [style.box-shadow]="(value.selected ? '0px 0px 0px 2px #000' : 'none')">
42
+ </a>
43
+ </div>
44
+ </div>
45
+ <div *ngSwitchCase="'size'">
46
+ <h5>Talles displonibles</h5>
47
+ <div class="row w-100 mx-auto pb-3">
48
+ <a *ngFor="let value of option.values; let x = index" role="buttom"
49
+ (click)="setOption(option.code, value.name)"
50
+ [id]="x + value.name"
51
+ [class]="'btn item m-1 ' + (value.selected ? 'selected-size' : 'unselected-size')">
52
+ {{ value.name }}
53
+ </a>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <ng-template #loading>
62
+ <div class="loading-container">
63
+ <div id="loading"></div>
64
+ </div>
65
+ </ng-template> -->
@@ -0,0 +1,8 @@
1
+ .circle{
2
+ width: 32px;
3
+ height: 32px;
4
+ border-radius: 50%;
5
+ }
6
+ .shadow{
7
+ border: 1px solid #000;
8
+ }
@@ -0,0 +1,20 @@
1
+ import { Component, inject, Input } from '@angular/core';
2
+ import { ProductDetailService } from '../../ec-services';
3
+ import { AsyncPipe } from '@angular/common';
4
+
5
+ @Component({
6
+ selector: 'app-variants-ec',
7
+ standalone: true,
8
+ imports: [AsyncPipe],
9
+ templateUrl: './variants-ec.component.html',
10
+ styleUrl: './variants-ec.component.scss'
11
+ })
12
+ export class VariantsEcComponent {
13
+ private _productDetailsService: ProductDetailService = inject(ProductDetailService);
14
+ public options$ = this._productDetailsService.options$;
15
+
16
+ setOption(optionCode:any, optionValue:any) {
17
+ this._productDetailsService.setOption(optionCode, optionValue);
18
+ }
19
+
20
+ }
@@ -0,0 +1,4 @@
1
+ export * from './loading';
2
+ export * from './price-ec/price-ec.component';
3
+ export * from './re-captcha-ec/re-captcha-ec.component';
4
+ export * from './magnizoom-ec/magnizoom-ec.component';
@@ -0,0 +1,3 @@
1
+ export * from './loading-full-ec/loading-full-ec.component';
2
+ export * from './loading-section-ec/loading-section-ec.component';
3
+ export * from './loading-inline-ec/loading-inline-ec.component';
@@ -0,0 +1,7 @@
1
+ <div [class]="'d-flex w-100'">
2
+ <div class="w-100 h-100 d-flex flex-row justify-content-center align-items-center">
3
+ <div class="spinner-border text-dark spinner-color" id="loading" role="status">
4
+ <span class="visually-hidden">{{ 'loading' }}</span><!-- | translate -->
5
+ </div>
6
+ </div>
7
+ </div>
@@ -0,0 +1,13 @@
1
+ import { Component } from '@angular/core';
2
+ import { TranslatePipe } from '@ngx-translate/core';
3
+
4
+ @Component({
5
+ selector: 'app-loading-full-ec',
6
+ standalone: true,
7
+ imports: [],
8
+ templateUrl: './loading-full-ec.component.html',
9
+ styleUrl: './loading-full-ec.component.scss'
10
+ })
11
+ export class LoadingFullEcComponent {
12
+
13
+ }
@@ -0,0 +1,5 @@
1
+ <div class="loading-inline-container">
2
+ <div [class]="'spinner-'+type+' text-dark spinner-colo'" id="loading" role="status">
3
+ <span class="visually-hidden">{{ 'loading' | translate }}</span>
4
+ </div>
5
+ </div>
@@ -0,0 +1,13 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+
4
+ @Component({
5
+ selector: 'app-loading-inline-ec',
6
+ standalone: true,
7
+ imports: [TranslateModule],
8
+ templateUrl: './loading-inline-ec.component.html',
9
+ styleUrl: './loading-inline-ec.component.scss'
10
+ })
11
+ export class LoadingInlineEcComponent {
12
+ @Input() type:'border' | 'grow' = 'border';
13
+ }
@@ -0,0 +1,3 @@
1
+ <div id="sectionLoading" class="d-flex flex-column position-absolute top-0 opacity-75 bg-white w-100 h-100 justify-content-center align-items-center">
2
+ <app-loading-full-ec></app-loading-full-ec>
3
+ </div>
@@ -0,0 +1,13 @@
1
+ import { Component } from '@angular/core';
2
+ import { LoadingFullEcComponent } from '../loading-full-ec/loading-full-ec.component';
3
+
4
+ @Component({
5
+ selector: 'app-loading-section-ec',
6
+ standalone: true,
7
+ imports: [LoadingFullEcComponent],
8
+ templateUrl: './loading-section-ec.component.html',
9
+ styleUrl: './loading-section-ec.component.scss'
10
+ })
11
+ export class LoadingSectionEcComponent {
12
+
13
+ }
@@ -0,0 +1,11 @@
1
+ <canvas #mainCanvas
2
+ class="main-canvas"
3
+ [ngClass]="imageClass"
4
+ [ngStyle]="imageStyle"
5
+ [width]="canvasWidth"
6
+ [height]="canvasHeight"
7
+ (mouseleave)="onMouseLeave($event)"
8
+ (mouseenter)="onMouseEnterOrMove($event)"
9
+ (mousemove)="onMouseEnterOrMove($event)"
10
+ (wheel)="onMouseScroll($event)">
11
+ </canvas>
@@ -0,0 +1,177 @@
1
+ import { CommonModule, DOCUMENT } from '@angular/common';
2
+ import { afterNextRender, afterRender, Component, ElementRef, inject, Input, OnInit, ViewChild } from '@angular/core';
3
+
4
+ interface Size2D { width: number; height: number; }
5
+ type Point2D = { x: number, y: number } | null;
6
+
7
+ @Component({
8
+ selector: '[app-magnizoom-ec]',
9
+ standalone: true,
10
+ imports: [CommonModule],
11
+ templateUrl: './magnizoom-ec.component.html',
12
+ styleUrl: './magnizoom-ec.component.scss'
13
+ })
14
+ export class MagnizoomEcComponent implements OnInit {
15
+ private document:Document = inject(DOCUMENT);
16
+
17
+ private imageSrc:string='';
18
+ @Input() set ImageSrc(value:string) {
19
+ this.imageSrc = value;
20
+ this.loadImage(this.imageSrc);
21
+ }
22
+ @Input() zoomMode: 'LENS' | 'COVER' = 'COVER';
23
+ @Input() minZoomFactor = 1.2;
24
+ @Input() maxZoomFactor = 3;
25
+
26
+ @Input()
27
+ imageStyle!: { [x: string]: any; };
28
+ @Input() imageClass: any;
29
+
30
+ @ViewChild('mainCanvas', { static: true }) mainCanvasRef!: ElementRef;
31
+
32
+ canvas!: HTMLCanvasElement;
33
+ context!: CanvasRenderingContext2D | null;
34
+ image!: HTMLImageElement;
35
+
36
+ mousePosition: Point2D = null;
37
+ lensSize: Size2D = { width: 400, height: 300 };
38
+ zoomFactor = 2;
39
+
40
+ get canvasWidth() { return this.image && this.image.width || 800; }
41
+ get canvasHeight() { return this.image && this.image.height || 600; }
42
+
43
+ constructor() {
44
+ afterRender(()=> {
45
+ this.initContext();
46
+ this.loadImage(this.imageSrc);
47
+ })
48
+ }
49
+
50
+ ngOnInit() {
51
+ /* this.initContext();
52
+ this.loadImage(this.imageSrc); */
53
+ }
54
+
55
+ initContext() {
56
+
57
+ this.canvas = (this.mainCanvasRef.nativeElement as HTMLCanvasElement);
58
+ this.context = this.canvas.getContext('2d');
59
+ }
60
+
61
+ loadImage(src: string) {
62
+ if(this.document){
63
+ this.image = this.document.createElement('img');
64
+ this.image.onload = () => {
65
+ this.lensSize = { width: this.image.width / 2, height: this.image.height / 2 };
66
+ setTimeout(() => this.render());
67
+ };
68
+ this.image.src = src;
69
+ }
70
+ }
71
+
72
+ render() {
73
+ if(this.context){
74
+ this.context.clearRect(0, 0, this.canvasWidth, this.canvasHeight); // clear canvas
75
+ this.context.lineWidth = 1; // border width
76
+ this.context.drawImage(this.image, 0, 0); // bg image
77
+
78
+ if (this.mousePosition) {
79
+ switch (this.zoomMode) {
80
+ case 'LENS': this.renderLensMode(); break;
81
+ case 'COVER': this.renderCoverMode(); break;
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ renderLensMode() {
88
+ if(this.context){
89
+ this.context.lineWidth = 5; // border width
90
+ const zoomRect = this.getZoomRect();
91
+ this.context.fillRect(zoomRect.x, zoomRect.y, zoomRect.w, zoomRect.h); // bg (clear)
92
+ const clippingRect = this.getClippingRect();
93
+ // zoom image
94
+ this.context.drawImage(
95
+ this.image,
96
+ clippingRect.x, clippingRect.y, clippingRect.w, clippingRect.h,
97
+ zoomRect.x, zoomRect.y, zoomRect.w, zoomRect.h
98
+ );
99
+ this.context.strokeRect(zoomRect.x, zoomRect.y, zoomRect.w, zoomRect.h); // border
100
+ }
101
+ }
102
+
103
+ renderCoverMode() {
104
+ const covertRect = this.getCoverRect();
105
+ this.context && this.context.drawImage(
106
+ this.image,
107
+ covertRect.x, covertRect.y, covertRect.w, covertRect.h,
108
+ 0, 0, this.canvasWidth, this.canvasHeight
109
+ ); // cover image
110
+ }
111
+
112
+ getZoomRect() {
113
+ const w = this.lensSize.width;
114
+ const h = this.lensSize.height;
115
+ const x = this.mousePosition!.x - (w / 2);
116
+ const y = this.mousePosition!.y - (h / 2);
117
+ return this.clampRect(x, y, w, h);
118
+ }
119
+
120
+ getClippingRect() {
121
+ const w = this.lensSize.width / this.zoomFactor;
122
+ const h = this.lensSize.height / this.zoomFactor;
123
+ const x = this.mousePosition!.x - (w / 2);
124
+ const y = this.mousePosition!.y - (h / 2);
125
+ return this.clampRect(x, y, w, h);
126
+ }
127
+
128
+ getCoverRect() {
129
+ const w = this.canvasWidth / this.zoomFactor;
130
+ const h = this.canvasHeight / this.zoomFactor;
131
+ // const x = this.mousePosition.x - (w / 2);
132
+ // const y = this.mousePosition.y - (h / 2);
133
+ const x = this.mousePosition!.x - this.mousePosition!.x / this.zoomFactor;
134
+ const y = this.mousePosition!.y - this.mousePosition!.y / this.zoomFactor;
135
+ return this.clampRect(x, y, w, h);
136
+ }
137
+
138
+ clampRect(x: number, y: number, w: number, h: number) {
139
+ if (x <= 0) { x = 0; }
140
+ if (x + w >= this.canvasWidth) { x = this.canvasWidth - w; }
141
+ if (y < 0) { y = 0; }
142
+ if (y + h >= this.canvasHeight) { y = this.canvasHeight - h; }
143
+ return { x, y, w, h };
144
+ }
145
+
146
+ calculateMousePosition(clientX: number, clientY: number) {
147
+ const boundingRect = this.canvas.getBoundingClientRect();
148
+ const viewToModelX = this.canvasWidth / boundingRect.width;
149
+ const viewToModelY = this.canvasHeight / boundingRect.height;
150
+ const x = (clientX - boundingRect.left) * viewToModelX;
151
+ const y = (clientY - boundingRect.top) * viewToModelY;
152
+ this.mousePosition = { x, y };
153
+ }
154
+
155
+ onMouseLeave(event: MouseEvent) {
156
+ this.mousePosition = null;
157
+ this.render();
158
+ }
159
+
160
+ onMouseEnterOrMove(event: MouseEvent) {
161
+ this.calculateMousePosition(event.clientX, event.clientY);
162
+ this.render();
163
+ }
164
+
165
+ onMouseScroll(event: WheelEvent) {
166
+ let newZoomFactor = this.zoomFactor;
167
+ newZoomFactor -= event.deltaY / 1000;
168
+ if (newZoomFactor < this.minZoomFactor) { newZoomFactor = this.minZoomFactor; }
169
+ if (newZoomFactor > this.maxZoomFactor) { newZoomFactor = this.maxZoomFactor; }
170
+ if (this.zoomFactor !== newZoomFactor) {
171
+ this.zoomFactor = newZoomFactor;
172
+ this.render();
173
+ }
174
+ event.preventDefault();
175
+ event.stopPropagation();
176
+ }
177
+ }
@@ -0,0 +1,47 @@
1
+ @if(saleprice){
2
+ <!--With saleprice-->
3
+ <div class="">
4
+ @if(price && price.split(' - ').length > 1){
5
+ <div class="price text-center p-0 mx-0 mx-md-3">
6
+ <del class="text-center price">
7
+ {{ price.split(' - ')[0] | ecCurrencySymbol }}
8
+ {{ price.split(' - ')[1] | ecCurrencySymbol }}
9
+ </del>
10
+ </div>
11
+ }@else {
12
+ <!--Simple Price Del-->
13
+ <div class=" text-center delete p-0 mx-0 mx-md-3">
14
+ <del class=" text-center delete">
15
+ {{ price | ecCurrencySymbol }}</del>
16
+ </div>
17
+ }
18
+ @if(saleprice && saleprice.split(' - ').length > 1){
19
+ <div class="">
20
+ {{
21
+ saleprice.split(' - ')[0] | ecCurrencySymbol
22
+ }}
23
+ {{
24
+ saleprice.split(' - ')[1] | ecCurrencySymbol
25
+ }}
26
+ </div>
27
+ } @else {
28
+ <!--Simple saleprice-->
29
+ <div class="text-center price p-0 mx-0 mx-md-3">
30
+ {{ saleprice | ecCurrencySymbol }}
31
+ </div>
32
+ }
33
+ </div>
34
+ }@else {
35
+ <!--Only Price-->
36
+ @if(price && price.split(' - ').length > 1){
37
+ <div class="price">
38
+ {{ price.split(' - ')[0] | ecCurrencySymbol }} -
39
+ {{ price.split(' - ')[1] | ecCurrencySymbol }}
40
+ </div>
41
+ } @else {
42
+ <!--Simple price-->
43
+ <div class="text-center price p-0 mx-0 mx-md-3">
44
+ {{ price | ecCurrencySymbol }}
45
+ </div>
46
+ }
47
+ }
@@ -0,0 +1,22 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { EcCurrencySymbolPipe } from "../../../ec-pipe/ec-currency-symbol.pipe";
3
+ /**
4
+ * Componente para manejar la vista del precio de un producto.
5
+ */
6
+ @Component({
7
+ selector: 'app-price-ec',
8
+ standalone: true,
9
+ imports: [EcCurrencySymbolPipe],
10
+ templateUrl: './price-ec.component.html',
11
+ styleUrl: './price-ec.component.scss'
12
+ })
13
+ export class PriceEcComponent {
14
+ /**
15
+ * Precio de un producto.
16
+ */
17
+ @Input() price: any;
18
+ /**
19
+ * Precio de venta de un producto.
20
+ */
21
+ @Input() saleprice: any;
22
+ }
@@ -0,0 +1,6 @@
1
+ @if(captcha.siteKey){
2
+ <re-captcha (resolved)="resolved($event)" siteKey="{{captcha.siteKey}}">
3
+ </re-captcha>
4
+ }@else {
5
+ <app-loading-full-ec></app-loading-full-ec>
6
+ }
@@ -0,0 +1,70 @@
1
+ import { Component, forwardRef, inject, Input, OnInit, Signal } from '@angular/core';
2
+ import { LoadingFullEcComponent } from "../loading/loading-full-ec/loading-full-ec.component";
3
+ import { RecaptchaModule} from "ng-recaptcha-2";
4
+ import { ReCaptchaService } from '../../../ec-services';
5
+ import { ControlValueAccessor, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
6
+
7
+ @Component({
8
+ selector: 're-captcha-ec',
9
+ standalone: true,
10
+ imports: [LoadingFullEcComponent, RecaptchaModule, ReactiveFormsModule],
11
+ templateUrl: './re-captcha-ec.component.html',
12
+ styleUrl: './re-captcha-ec.component.scss',
13
+ providers:[
14
+ {
15
+ provide:NG_VALUE_ACCESSOR,
16
+ useExisting: forwardRef(() => ReCaptchaEcComponent),
17
+ multi: true
18
+ }
19
+ ]
20
+
21
+ })
22
+ export class ReCaptchaEcComponent implements OnInit, ControlValueAccessor {
23
+ /**
24
+ * Formulario que contiene al captcha.
25
+
26
+ @Input({required: true}) form!:any;*/
27
+ /**
28
+ * Clave para el captcha.
29
+ */
30
+ @Input() siteKey:string | undefined;
31
+
32
+ private _recaptchaService: ReCaptchaService = inject(ReCaptchaService);
33
+
34
+ public captcha:any;
35
+
36
+ private onChange!:(value:string) => void;
37
+ private onTouched!:() => void;
38
+
39
+ ngOnInit():void {
40
+ this._recaptchaService.recaptcha$.subscribe( res => {
41
+ console.log('recaptcha', res);
42
+ this.captcha = res;
43
+ this.updateSiteKey();
44
+ })
45
+ }
46
+
47
+ updateSiteKey() {
48
+ if(this.siteKey) this.captcha.siteKey = this.siteKey;;
49
+ }
50
+
51
+ resolved(captchaResponse:any){
52
+ //this.form['recaptcha'] = captchaResponse;
53
+ this.onChange(captchaResponse);
54
+ this.onTouched();
55
+ }
56
+
57
+ writeValue(obj: any): void {
58
+ //throw new Error('Method not implemented.');
59
+ }
60
+ registerOnChange(fn: any): void {
61
+ this.onChange = fn;
62
+ }
63
+ registerOnTouched(fn: any): void {
64
+ this.onTouched = fn;
65
+ }
66
+ setDisabledState?(isDisabled: boolean): void {
67
+ //throw new Error('Method not implemented.');
68
+ }
69
+
70
+ }
@@ -0,0 +1,19 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';
3
+ import { AuthService } from '../ec-services';
4
+ /**
5
+ * Guarda que controla que el usuario este logueado a no.
6
+ * @param route
7
+ * @param state
8
+ * @returns
9
+ */
10
+ export const authGuard: CanActivateFn = (route:ActivatedRouteSnapshot, state) => {
11
+ const authService = inject(AuthService)
12
+ const router = inject(Router);
13
+ const redirectTo = route.data["redirectTo"] || '/'
14
+
15
+ if(!authService.isAuthenticated())
16
+ router.navigateByUrl(redirectTo)
17
+
18
+ return authService.isAuthenticated();
19
+ };
@@ -0,0 +1 @@
1
+ export * from './auth.guard';