ng-easycommerce 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/.editorconfig +16 -0
  2. package/README.md +27 -0
  3. package/angular.json +48 -0
  4. package/package.json +57 -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,59 @@
1
+ <div id="container" class="flex-center generalContainer container-xl">
2
+ @if(payments && payments[0].method.code){
3
+ <div class="Main card my-2">
4
+ @if(this.blocks && this.blocks.length > 0){
5
+ @if(containsBlock(this.payments[0].method.code); as bloque) {
6
+ <div class="wrap my-4 card-body" [id]="bloque.code">
7
+ <div class="row">
8
+ <div class="col-md-12 col-12">
9
+ <h5 [class]="bloque.code+'-title'">{{ (bloque?.translations[locale]?.name ?
10
+ bloque.translations[locale].name :
11
+ 'thanks-for-buying') | translate
12
+ | uppercase }}</h5>
13
+ </div>
14
+ </div>
15
+ <div class="row">
16
+ <div class="col-md-12 col-12 text-start">
17
+ <app-blocks-ec [section]="'info_metodo_pago'" [blockFilters]="payments[0].method.code">
18
+ </app-blocks-ec>
19
+ <div class="d-flex flex-column details">
20
+ <p class="card-text">{{ ('number' | translate) + ': ' + params.external_reference }}</p>
21
+ <p class="card-text">{{((params.payment_status || 'pending') | translate)}}</p>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ }@else {
27
+ <ng-container *ngTemplateOutlet="notInfoToMethodTemplate ? notInfoToMethodTemplate : notInfoToMethod; context: { $implicit: params }"></ng-container>
28
+ }
29
+ } @else{
30
+ <ng-container *ngTemplateOutlet="notInfoToMethodTemplate ? notInfoToMethodTemplate : notInfoToMethod; context: { $implicit: params }"></ng-container>
31
+ }
32
+ </div>
33
+ } @else {
34
+ <app-loading-full-ec></app-loading-full-ec>
35
+ }
36
+ </div>
37
+
38
+ <ng-template #notInfoToMethod let-params>
39
+
40
+ <div class="wrap my-4 card-body">
41
+ <div class="row">
42
+ <div class="col-md-12 col-12">
43
+ <h5 class="card-title titpage center-block text-center">
44
+ {{ 'thanks-for-buying' | translate | uppercase }}
45
+ </h5>
46
+ </div>
47
+ </div>
48
+ <div class="row">
49
+ <div class="col-md-12 col-12 text-center py-3">
50
+ <h4 class="thanks-details">{{ 'thanks-details' | translate }}</h4>
51
+ <h5 class="number">{{ ('number' | translate) + ': ' + params.external_reference }}</h5>
52
+ <h5 class="pending">{{ ((params.payment_status || 'pending') | translate) }}</h5>
53
+ <!-- <h5 *ngIf="!from_mp">{{ ('will_contact' | translate) }}</h5> -->
54
+
55
+ <!-- <a routerLink="/collection"><button class="comprar">{{ 'continue-shopping' | translate }}</button></a> -->
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </ng-template>
@@ -0,0 +1,65 @@
1
+ import { Component, inject, OnInit, TemplateRef } from '@angular/core';
2
+ import { LoadingFullEcComponent } from '../../widgets-ec';
3
+ import { BlocksEcComponent } from '../../blocks-ec';
4
+ import { ApiConstantsService } from '../../../constants';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ import { CommonModule, UpperCasePipe } from '@angular/common';
7
+ import { BlocksService, CartService, CheckoutService } from '../../../ec-services';
8
+ import { ActivatedRoute, Router } from '@angular/router';
9
+
10
+
11
+ @Component({
12
+ selector: 'app-order-success-ec',
13
+ standalone: true,
14
+ templateUrl: './success-ec.component.html',
15
+ styleUrls: ['./success-ec.component.scss'],
16
+ imports: [BlocksEcComponent, LoadingFullEcComponent, TranslateModule, UpperCasePipe, CommonModule]
17
+ })
18
+ export class SuccessEcComponent implements OnInit {
19
+ private _apiConsts: ApiConstantsService = inject(ApiConstantsService)
20
+ private _cartService: CartService = inject(CartService)
21
+ private _router: Router = inject(Router)
22
+ private _activatedRoute: ActivatedRoute = inject(ActivatedRoute)
23
+ private _checkoutService: CheckoutService = inject(CheckoutService)
24
+ private _blocksService: BlocksService = inject(BlocksService);
25
+
26
+
27
+ public locale = this._apiConsts.LOCALE;
28
+
29
+ public orderDetails = {};
30
+ public params: any = {};
31
+ public from_mp = true;
32
+ public payments: any;
33
+ public blocks: any;
34
+
35
+ /**
36
+ * @description variable para recibir un template en caso de que se quiera cambiar la informacion por defecto.
37
+ */
38
+ public notInfoToMethodTemplate:TemplateRef<any> | null = null;
39
+
40
+ constructor() { }
41
+
42
+ ngOnInit() {
43
+ this._checkoutService.order$.subscribe(
44
+ res => {
45
+ //console.log('LO QUE LLEGA EN ORDEN', res);
46
+ res?.number ? this.params = {
47
+ external_reference: res.number,
48
+ } : null
49
+ //this.payments = [{method:{code:'bank_transsfer'}}]
50
+ this.payments = res?.payments ? res.payments : null
51
+ },
52
+ );
53
+
54
+ this._blocksService.getBlocks('info_metodo_pago')
55
+ this._blocksService.blocks$.subscribe(res => this.blocks = res)
56
+ }
57
+
58
+ /**
59
+ * @description Chequea si existe un bloque recibido por parametro.
60
+ * @param codeBlock codigo del bloque.
61
+ * @returns el bloque si lo encontro.
62
+ */
63
+ containsBlock(codeBlock: string): any { return this.blocks.find((block:any) => block.code == codeBlock) }
64
+
65
+ }
@@ -0,0 +1,16 @@
1
+ <section class="container-xl mb-5">
2
+ <div class="row m-0 p-0">
3
+ <div class="d-none d-lg-block col-3">
4
+ <!--Filtros-->
5
+ </div>
6
+
7
+ <div class="col-12 col-lg-9 mt-2 p-0">
8
+ <div class="container">
9
+ <!-- @for(['a', 'b', 'c', 'd'] as product){
10
+
11
+ } -->
12
+ </div>
13
+ </div>
14
+
15
+ </div>
16
+ </section>
@@ -0,0 +1,83 @@
1
+ import { afterNextRender, Component, HostListener, inject, Input, OnInit, signal } from '@angular/core';
2
+ import { DefaultFilter, FilterType, PaginationSettings, Product } from '../../interfaces';
3
+ import { AuthService, FiltersService, OptionsService, ProductsService } from '../../ec-services';
4
+ import { ActivatedRoute } from '@angular/router';
5
+ import { CoreConstantsService } from '../../constants';
6
+ import { combineLatest, forkJoin, map, Observable, take } from 'rxjs';
7
+ import { Filter } from '../../classes';
8
+ import { InfiniteScrollDirective } from "ngx-infinite-scroll";
9
+ @Component({
10
+ selector: 'lib-collection-ec',
11
+ standalone: true,
12
+ imports: [InfiniteScrollDirective],
13
+ templateUrl: './collection-ec.component.html',
14
+ styleUrl: './collection-ec.component.scss'
15
+ })
16
+ export class CollectionEcComponent implements OnInit {
17
+
18
+ protected _productsService: ProductsService = inject(ProductsService)
19
+ protected _activeRoute: ActivatedRoute = inject(ActivatedRoute)
20
+ protected _optionsService: OptionsService = inject(OptionsService)
21
+
22
+ public params$ = this._activeRoute.params
23
+ //public ready = this._optionsService.ready
24
+ public queryParams$ = this._activeRoute.queryParams
25
+ public products$ = this._productsService.products$
26
+ //public products$ = []
27
+
28
+ public authService: AuthService = inject(AuthService)
29
+ public constanst: CoreConstantsService = inject(CoreConstantsService)
30
+
31
+ public products: Product[] = [];
32
+ public defaultFilters: DefaultFilter[] = [];
33
+ public loading:Boolean = false;
34
+ public countProducts = signal<number>(0)
35
+ private loaded = false;
36
+
37
+ @Input() optionsFilters: FilterType[] = ['all'];
38
+
39
+ filters_sort:Filter[] = [];
40
+
41
+ private _filtersService: FiltersService = inject(FiltersService)
42
+ public filters$: Observable<Filter[]> = this._filtersService.filters$;
43
+ public ready$: Observable<boolean> = this._filtersService.ready$;
44
+
45
+ private window:any;
46
+
47
+ ngOnInit(): void {
48
+ this.getProducts();
49
+ }
50
+
51
+ //protected readonly questions = signal<Question[]>([]);
52
+ private total = 0;
53
+
54
+ constructor() {
55
+ afterNextRender(()=> {
56
+ this.window = window;
57
+ this.window?.scroll(0,0)
58
+ })
59
+ }
60
+
61
+ getProducts(): void {
62
+ combineLatest([this.params$, this.queryParams$]).subscribe({
63
+ next: ([params, queryParams]) => {
64
+ const paginationSettings:PaginationSettings = {
65
+ latest:true,
66
+ limit:10,
67
+ type: params['type'] || null,
68
+ value: params['value'] || null
69
+ }
70
+ //console.log(ready,"actualizar")
71
+ console.log(params['type'], params['value'])
72
+ /* console.log(paginationSettings) */
73
+ this._productsService.getProductsForFilter(paginationSettings, queryParams["search"]);
74
+ }
75
+ })
76
+ }
77
+
78
+ onScroll() {
79
+ this.loading = true;
80
+ this._productsService.updateProducts()
81
+ }
82
+
83
+ }
@@ -0,0 +1,32 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { CartService } from '../../ec-services';
3
+ import { Observable } from 'rxjs';
4
+
5
+ @Component({
6
+ selector: 'app-coupon-ec',
7
+ standalone: true,
8
+ imports: [],
9
+ templateUrl: './coupon-ec.component.html',
10
+ styleUrl: './coupon-ec.component.scss'
11
+ })
12
+ export class CouponEcComponent {
13
+ private _cartService: CartService = inject(CartService);
14
+ public coupon$: Observable<any> = this._cartService.coupon$
15
+ public couponValue: string = "";
16
+
17
+ addCoupon(){
18
+ this.validCoupon() && this._cartService.addCoupon(this.couponValue)
19
+ }
20
+
21
+ validCoupon(): boolean {
22
+ if(this.couponValue){
23
+ return /^([A-Za-z\-0-9]*)\w+$/.test(this.couponValue);
24
+ } else {
25
+ return false;
26
+ }
27
+ }
28
+
29
+ removeCoupon(){
30
+ this._cartService.removeCoupon()
31
+ }
32
+ }
@@ -0,0 +1,45 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { FiltersService } from '../../ec-services';
3
+ import { Filter } from '../../classes';
4
+ import { FilterElement, FilterType } from '../../interfaces';
5
+
6
+ @Component({
7
+ selector: 'lib-filters-ec',
8
+ standalone: true,
9
+ imports: [],
10
+ templateUrl: './filters-ec.component.html',
11
+ styleUrl: './filters-ec.component.scss'
12
+ })
13
+ export class FiltersEcComponent {
14
+ private _filtersService: FiltersService = inject(FiltersService);
15
+ public filters: Filter[] = [];
16
+ public filter$ = this._filtersService.filters$;
17
+
18
+ constructor() {
19
+ this.filter$.subscribe( res => {
20
+ this.filters = this._filtersService.getSpecificFilters(['attributes', 'categories', 'dynamics'])
21
+ })
22
+ }
23
+
24
+ getSpecificFilter(type:FilterType): Filter | null{
25
+ const filter = this.filters.find(filter => filter.type() === type)
26
+ return filter || null;
27
+ }
28
+
29
+ /*Obtiene el filtro elegido en el select, lo pasa al setSelect
30
+ para que se marque seleccionado*/
31
+ onSelect(event:any,filter:FilterElement[] | null){
32
+ console.log(filter)
33
+ /* const selectedOption = filter
34
+ .flatMap(category => category.children)
35
+ .filter(option => option?.code === event.target.value)
36
+ .pop()
37
+ selectedOption && this._filtersService.setFilterSelected(this.filters[0], selectedOption) */
38
+ }
39
+
40
+ setSelected(filter:Filter | null, selected:FilterElement){
41
+ console.log("set",filter);
42
+ filter && this._filtersService.setFilterSelected(filter, selected)
43
+ }
44
+
45
+ }
@@ -0,0 +1,49 @@
1
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
+ import { FiltersService } from '../../ec-services';
3
+ import { Filter } from '../../classes';
4
+ import { FilterElement } from '../../interfaces';
5
+ //import { FilterElement } from ';
6
+
7
+ @Component({
8
+ selector: 'app-filters-sort-ec',
9
+ standalone: true,
10
+ imports: [],
11
+ templateUrl: './filters-sort-ec.component.html',
12
+ styleUrl: './filters-sort-ec.component.scss'
13
+ })
14
+ export class FiltersSortEcComponent {
15
+ private _filtersService: FiltersService = inject(FiltersService);
16
+ public filters: Filter[] = [];
17
+ public filter$ = this._filtersService.filters$;
18
+ //@Input() filters: Filter[] = [];
19
+ @Output() changeFilter = new EventEmitter();
20
+
21
+ constructor() {
22
+ this.filter$.subscribe( res => {
23
+ this.filters = this._filtersService.getSpecificFilters(['sort'])
24
+ //console.log(this.filters);
25
+ })
26
+ }
27
+
28
+ /*Obtiene el filtro elegido en el select, lo pasa al setSelect
29
+ para que se marque seleccionado*/
30
+ onSelect(event:any,filter:FilterElement[]){
31
+ //console.log(filter)
32
+ const selectedOption = filter
33
+ .flatMap(category => category.children)
34
+ .filter(option => option?.code === event.target.value)
35
+ .pop()
36
+ selectedOption && this._filtersService.setFilterSelected(this.filters[0], selectedOption)
37
+ }
38
+
39
+ /* Retornar los filtros autorizados para el usuario logueado */
40
+ /* filtersNotAuth = (filters, ...code) => {
41
+ //console.log(this.filters)
42
+ if (!this.authService.isAuthenticated()) {
43
+ filters = filters.filter(attr => code.indexOf(attr['code']) >= 0)
44
+ this.filters[0].data = filters
45
+ }
46
+ return filters
47
+ } */
48
+
49
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { FooterEcComponent } from './footer-ec.component';
4
+
5
+ describe('FooterEcComponent', () => {
6
+ let component: FooterEcComponent;
7
+ let fixture: ComponentFixture<FooterEcComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [FooterEcComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(FooterEcComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,18 @@
1
+ import { Component} from '@angular/core';
2
+ import { AsyncPipe } from '@angular/common';
3
+ import { MenuEcComponent } from '../abstractions-components';
4
+ /**
5
+ * Componente que se encarga de manejar la funcionalidad del Footer.
6
+ * @extends {MenuEcComponent}
7
+ */
8
+ @Component({
9
+ selector: 'lib-footer-ec',
10
+ standalone: true,
11
+ imports: [AsyncPipe],
12
+ templateUrl: './footer-ec.component.html',
13
+ styleUrl: './footer-ec.component.scss'
14
+ })
15
+ export class FooterEcComponent extends MenuEcComponent{
16
+
17
+ }
18
+
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { HeaderEcComponent } from './header-ec.component';
4
+
5
+ describe('HeaderEcComponent', () => {
6
+ let component: HeaderEcComponent;
7
+ let fixture: ComponentFixture<HeaderEcComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [HeaderEcComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(HeaderEcComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,22 @@
1
+ import { afterNextRender, Component, inject } from '@angular/core';
2
+ import { TitleCasePipe } from '@angular/common';
3
+ import { MenuEcComponent } from '../abstractions-components';
4
+ import { CartService, ToastService } from '../../ec-services';
5
+ import { Observable } from 'rxjs';
6
+ import { AuthService } from '../../ec-services';
7
+ /**
8
+ * Componente que se encarga de manejar la funcionalidad del Header.
9
+ */
10
+ @Component({
11
+ selector: 'lib-header-ec',
12
+ standalone: true,
13
+ imports: [TitleCasePipe],
14
+ templateUrl: './header-ec.component.html',
15
+ styleUrl: './header-ec.component.scss'
16
+ })
17
+ export class HeaderEcComponent extends MenuEcComponent {
18
+ public _cartService: CartService = inject(CartService);
19
+ public authService: AuthService = inject(AuthService);
20
+ public count$: Observable<number> = this._cartService.getCountCartItems();
21
+
22
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { HomeEcComponent } from './home-ec.component';
4
+
5
+ describe('HomeEcComponent', () => {
6
+ let component: HomeEcComponent;
7
+ let fixture: ComponentFixture<HomeEcComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [HomeEcComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(HomeEcComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,16 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { CoreConstantsService } from '../../constants';
3
+ import { BlocksService } from '../../ec-services';
4
+ /**
5
+ * Componente que se encarga de manejar el Home de la aplicación.
6
+ */
7
+ @Component({
8
+ selector: 'lib-home-ec',
9
+ standalone: true,
10
+ imports: [],
11
+ templateUrl: './home-ec.component.html',
12
+ styleUrl: './home-ec.component.scss'
13
+ })
14
+ export class HomeEcComponent {
15
+
16
+ }
@@ -0,0 +1,17 @@
1
+ export * from './footer-ec/footer-ec.component';
2
+ export * from './header-ec/header-ec.component';
3
+ export * from './home-ec/home-ec.component';
4
+ export * from './blocks-ec/blocks-ec.component';
5
+ export * from './product-ec/product-ec.component';
6
+ export * from './collection-ec/collection-ec.component';
7
+ export * from './filters-sort-ec/filters-sort-ec.component';
8
+ export * from './widgets-ec';
9
+ export * from './auth-ec';
10
+ export * from './filters-ec/filters-ec.component';
11
+ export * from './product-detail-ec/product-detail-ec.component';
12
+ export * from './variants-ec/variants-ec.component';
13
+ export * from './breadcrumb-ec/breadcrumb-ec.component';
14
+ export * from './cart-ec';
15
+ export * from './coupon-ec/coupon-ec.component';
16
+ export * from './checkout-ec/checkout-ec.component';
17
+ export * from './checkout-ec/success-ec/success-ec.component';
@@ -0,0 +1,82 @@
1
+ import { Component, computed, inject, signal, WritableSignal } from '@angular/core';
2
+ import { ProductDetailService, ProductsService, ToastService } from '../../ec-services';
3
+ import { Observable } from 'rxjs';
4
+ import { Product } from '../../interfaces';
5
+ import { ActivatedRoute } from '@angular/router';
6
+ import { DomSanitizer } from '@angular/platform-browser';
7
+ import { CoreConstantsService } from '../../constants';
8
+
9
+ @Component({
10
+ selector: 'app-product-detail-ec',
11
+ standalone: true,
12
+ imports: [],
13
+ templateUrl: './product-detail-ec.component.html',
14
+ styleUrl: './product-detail-ec.component.scss'
15
+ })
16
+ export class ProductDetailEcComponent {
17
+ private _productDetailService: ProductDetailService = inject(ProductDetailService);
18
+ private _productService: ProductsService = inject(ProductsService);
19
+ private _activedRoute: ActivatedRoute = inject(ActivatedRoute);
20
+ private _domSanitizer: DomSanitizer = inject(DomSanitizer);
21
+ private _consts:CoreConstantsService = inject(CoreConstantsService);
22
+ private _toastService: ToastService = inject(ToastService);
23
+
24
+ public product$: Observable<Product | null> = this._productDetailService.product$;
25
+ public options$: Observable<any> = this._productDetailService.options$;
26
+ public data$: Observable<any> = this._productDetailService.associatedData$;
27
+ public mediaUrl = this._consts.mediaUrl();
28
+ public code:string = '';
29
+
30
+ public quantity:WritableSignal<number> = signal(1);
31
+
32
+ constructor(){
33
+ this._activedRoute.params.subscribe( queryParams => {
34
+ this.code = queryParams["id"];
35
+ this._productDetailService.loadProduct(this.code);
36
+ })
37
+ }
38
+
39
+ sanitizedHtml(html: string){
40
+ return this._domSanitizer.bypassSecurityTrustHtml(html);
41
+ }
42
+
43
+ addToCart(){
44
+ this.quantity() > 0 && this._productDetailService.addToCart(this.quantity());
45
+ }
46
+
47
+ /**
48
+ * @description actualiza la variable quantity sumandole 'x' contenido.
49
+ * @param stock debe recibir un number que contenga el stock disponible.
50
+ * @param multipleQuantity debe recibir el multiplo de cantidad que se quiera incrementar.
51
+ */
52
+ plus(stock?:number, multipleQuantity?:number){
53
+ if(multipleQuantity && multipleQuantity > 0) {
54
+ stock ? ( this.quantity() < stock
55
+ ? this.quantity.update(value => value + multipleQuantity)
56
+ : this._toastService.show('out-of-stock-actually'))
57
+ : this.quantity.update(value => value + multipleQuantity)
58
+ } else {
59
+ stock ? ( this.quantity() < stock
60
+ ? this.quantity.update(value => value + 1)
61
+ : this._toastService.show('out-of-stock-actually'))
62
+ : this.quantity.update(value => value + 1)
63
+ }
64
+ }
65
+
66
+ /**
67
+ * @description actualiza la varible quantity restandole 'x' contenido.
68
+ * @param multipleQuantity debe recibir el multiplo de cantidad que se quiera decrementar.
69
+ */
70
+ less(multipleQuantity?:any){
71
+ if(multipleQuantity && multipleQuantity > 0 ){
72
+ this.quantity() > multipleQuantity ? this.quantity.update(value => value - multipleQuantity) : null;
73
+ } else {
74
+ this.quantity() > 1 ? this.quantity.update(value => value - 1) : null;
75
+ }
76
+ }
77
+
78
+ checkStock(stock: number){
79
+ if(this.quantity() >= stock)
80
+ this.quantity.set(stock);
81
+ }
82
+ }