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,81 @@
1
+ import { Component, inject, Input, signal } from '@angular/core';
2
+ import { FormService, ToastService } from '../../../ec-services';
3
+ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
4
+ import { firstValueFrom } from 'rxjs';
5
+
6
+ @Component({
7
+ selector: 'app-block-newsletter-ec',
8
+ standalone: true,
9
+ imports: [],
10
+ templateUrl: './block-newsletter-ec.component.html',
11
+ styleUrl: './block-newsletter-ec.component.scss'
12
+ })
13
+ export class BlockNewsletterEcComponent {
14
+ @Input({ required:true }) block:any;
15
+ @Input() success_message:string | undefined;
16
+ @Input() subject:string | undefined;
17
+
18
+ private _contactFormService: FormService = inject(FormService)
19
+ private _toastService:ToastService = inject(ToastService)
20
+ private _formBuilder:FormBuilder = inject(FormBuilder)
21
+
22
+ public loading:boolean = false;
23
+
24
+ public form = signal<FormGroup>(
25
+ this._formBuilder.group({
26
+ name: ['', []],
27
+ email: ['', Validators.required],
28
+ telephone: ['', []],
29
+ subject: ['', []],
30
+ body: ['', []],
31
+ attachment: [''],
32
+ captcha:['',[]],
33
+ terms: ['', Validators.required]
34
+ })
35
+ )
36
+
37
+ onSubmit(e:any):void{
38
+ this.loading = true;
39
+ e.preventDefault();
40
+ this.sendForm(this.form(), 'inquiry-sent');
41
+ }
42
+
43
+ sendForm(form:any, success_message:string){
44
+ if (form.valid && (form.value.email.includes('@'))) {
45
+ const formData = new FormData();
46
+ formData.append('mailText', form.value.body)
47
+ formData.append('form_code', this.block.code)
48
+ this.sendValue('name') && formData.append('name', this.form().get('name')?.value)
49
+ this.sendValue('email') && formData.append('email', this.form().get('email')?.value)
50
+ this.sendValue('telephone') && formData.append('telephone', this.form().get('telephone')?.value)
51
+ this.sendValue('subject') && formData.append('subject', this.form().get('subject')?.value)
52
+ this.sendValue('body') && formData.append('body', this.form().get('body')?.value)
53
+ this.sendValue('attachments') && formData.append('attachment', this.form().get('attachment')?.value)
54
+ firstValueFrom(this._contactFormService.sendResponse(formData)).then(
55
+ (res:any) => {
56
+ this.form().reset()
57
+ this._toastService.show(this.success_message || success_message);
58
+ this.loading = false
59
+
60
+ },
61
+ (err:any) => {
62
+ this._toastService.error('inquiry-error');
63
+ this.loading = false
64
+ }
65
+ );
66
+ } else {
67
+ this._toastService.error('invalid-form');
68
+ this.loading = false
69
+ }
70
+ }
71
+
72
+ sendValue(key:any){
73
+ try {
74
+ let keysearch = key[0].toUpperCase() + key.slice(1).toLowerCase();
75
+ return this.block && this.block['send' + keysearch] || false
76
+ } catch (error) {
77
+ console.error(error);
78
+ return false
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,40 @@
1
+ <section [ngClass]="trimClassBlock(meta.code) + ' container-fluid'">
2
+
3
+ <div class="blockProduct block-product">
4
+ @if(meta.name){
5
+ <div class="row">
6
+ <div class="col-12 mt-4">
7
+ <h2 class="font-weight-normal font-gd">
8
+ <span>{{meta.name}}</span>
9
+ </h2>
10
+ </div>
11
+ </div>
12
+ }
13
+
14
+
15
+ @if(meta.styles && meta.styles.carrousel == false){
16
+ <div class="row ">
17
+ @for (product of products; track $index) {
18
+ <div [class]="'item '+ ' col-'+ (meta.styles.items?.sm) + ' col-md-' + (meta.styles.items?.md) + ' col-lg-' + (meta.styles.items?.lg) + ' px-2'" [id]="$index">
19
+ <!-- verifica que si vienen un template para un custom appProduct llamado "appProduct" con un objeto "product"- sino usa por defecto el del core -->
20
+ <ng-container *ngTemplateOutlet="appProduct ? appProduct : defaultAppProduct; context: {product:product}"></ng-container>
21
+ </div>
22
+ }
23
+ </div>
24
+ } @else {
25
+ <swiper-container init="false" [id]="meta?.code">
26
+ @for (product of products; track $index) {
27
+ <swiper-slide>
28
+ <ng-container *ngTemplateOutlet="appProduct ? appProduct : defaultAppProduct; context: {product:product}"></ng-container>
29
+ </swiper-slide>
30
+ }
31
+ </swiper-container>
32
+ }
33
+ </div>
34
+ </section>
35
+
36
+
37
+ <!-- componente por defecto (tomara como producto el contexto pasado como "product") -->
38
+ <ng-template #defaultAppProduct let-product="product" >
39
+ <app-product-ec [product]="product"></app-product-ec>
40
+ </ng-template>
@@ -0,0 +1,97 @@
1
+ import { afterNextRender, Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, signal, TemplateRef } from '@angular/core';
2
+ import { BlockEcComponent } from '../../abstractions-components';
3
+ import { SwiperOptions } from 'swiper/types';
4
+ import { AnalyticsService } from '../../../ec-services';
5
+ import { CommonModule } from '@angular/common';
6
+ // import function to register Swiper custom elements
7
+ import { register, SwiperContainer } from 'swiper/element/bundle';
8
+ import { ProductEcComponent } from "../../product-ec/product-ec.component";
9
+
10
+ register()
11
+ /**
12
+ * Componen para manejar los bloques de productos.
13
+ * @extends {BlockEcComponent}
14
+ * @class BlockProductsEcComponent
15
+ */
16
+ @Component({
17
+ selector: 'app-block-products-ec',
18
+ standalone: true,
19
+ imports: [CommonModule, ProductEcComponent],
20
+ templateUrl: './block-products-ec.component.html',
21
+ styleUrl: './block-products-ec.component.scss',
22
+ schemas:[CUSTOM_ELEMENTS_SCHEMA]
23
+ })
24
+ export class BlockProductsEcComponent extends BlockEcComponent {
25
+ /**
26
+ * Servicio de Analytics
27
+ */
28
+ private analyticsService: AnalyticsService = inject(AnalyticsService)
29
+ /**
30
+ * Signal utlizado para guarda el contenedor del carrusel
31
+ */
32
+ swiperElement = signal<SwiperContainer | null>(null)
33
+ /**
34
+ * Input que recibe un template para el producto.
35
+ */
36
+ @Input() appProduct:TemplateRef<any> | undefined;
37
+ /**
38
+ * Colección de productos.
39
+ */
40
+ @Input({
41
+ required:true
42
+ }) products: any; // Product[];
43
+ /**
44
+ * Bloque principal que contiene los productos
45
+ */
46
+ @Input({
47
+ required: true
48
+ }) meta: any;
49
+ /**
50
+ * Método original en: {@link BlockEcComponent}
51
+ */
52
+ override swiperOptions = (): SwiperOptions => {
53
+ return{
54
+ navigation: true,
55
+ breakpoints: {
56
+ 0: {
57
+ slidesPerView: 1
58
+ },
59
+ 576:{
60
+ slidesPerView: 2
61
+ },
62
+ 768: {
63
+ slidesPerView: 4,
64
+ },
65
+ 992: {
66
+ slidesPerView: 4,
67
+ },
68
+ 1200: {
69
+ slidesPerView: 4,
70
+ }
71
+ }
72
+ }
73
+ }
74
+ /**
75
+ * Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
76
+ * para el carrusel del banners. Esto debe ser asi debido a que ya debe estar presente
77
+ * en el Dom el element `<swiper-container>` para poder configurarlo.
78
+ */
79
+ constructor(){
80
+ super()
81
+ afterNextRender(() => {
82
+ const swiperElemConstructor = document.querySelector('#'+this.meta?.code)
83
+ if(swiperElemConstructor){
84
+ Object.assign(swiperElemConstructor!,this.swiperOptions())
85
+ this.swiperElement.set(swiperElemConstructor as SwiperContainer)
86
+ this.swiperElement()?.initialize();
87
+ }
88
+ })
89
+ }
90
+ /**
91
+ * Aplica el evento `select_promotion` junto con el banner que interactua.
92
+ * @param banner
93
+ */
94
+ selectPromotion(item:any):void {
95
+ this.analyticsService.callEvent('select_promotion', item)
96
+ }
97
+ }
@@ -0,0 +1,41 @@
1
+ @if(blocks$ | async; as blocks){
2
+ @if(blocks.length > 0){
3
+ <div class="container-fluid px-0">
4
+ <div class="row">
5
+ @for (block of blocks; track $index) {
6
+ @switch (block.contentType) {
7
+ @case ('banner') {
8
+ @switch(block.design){
9
+ @case ('full') {
10
+ <app-block-banner-full-ec [banners]="block.banners" [meta]="block" />
11
+ }
12
+ @case ('boxes') {
13
+ <app-block-banner-box-ec [banners]="block.banners" [meta]="block"/>
14
+ }
15
+ }
16
+ }
17
+ @case ('html') {
18
+ @if(showBlock(block)){
19
+ <app-block-html-ec [html_content]="getHTMLContent(block)" />
20
+ }
21
+ }
22
+ @case ('products') {
23
+ <app-block-products-ec [products]="block.products?.items" [meta]="block" />
24
+ }
25
+ @case ('contact_form') {
26
+ @if(isNewsletter(block)){
27
+ <app-block-newsletter-ec [block]="block.contactForm" />
28
+ } @else {
29
+ <app-block-form-contact-ec [block]="block.contactForm" />
30
+ }
31
+ }
32
+ }
33
+ }
34
+ </div>
35
+ </div>
36
+ }@else {
37
+ <p>Loading... 2</p>
38
+ }
39
+ }@else {
40
+ <p>Loading...</p>
41
+ }
@@ -0,0 +1,86 @@
1
+ import { Component, inject, Input, OnInit, TemplateRef } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { BlocksService } from '../../ec-services';
4
+ import { AsyncPipe, JsonPipe } from '@angular/common';
5
+ import { IBlock } from '../../interfaces';
6
+ import { BlockBannerFullEcComponent } from './block-banner-full-ec/block-banner-full-ec.component';
7
+ import { BlockBannerBoxEcComponent } from "./block-banner-box-ec/block-banner-box-ec.component";
8
+ import { BlockHtmlEcComponent } from "./block-html-ec/block-html-ec.component";
9
+ import { ApiConstantsService } from '../../constants';
10
+ import { BlockProductsEcComponent } from "./block-products-ec/block-products-ec.component";
11
+ import { BlockNewsletterEcComponent } from "./block-newsletter-ec/block-newsletter-ec.component";
12
+ import { BlockFormContactEcComponent } from "./block-form-contact-ec/block-form-contact-ec.component";
13
+ /**
14
+ * Componente que es utilizado para manejar los distintos tipos
15
+ * de bloques y distribuirlos por la aplicación.
16
+ * @implements {OnInit}
17
+ * @class BlocksEcComponent
18
+ */
19
+ @Component({
20
+ selector: 'app-blocks-ec',
21
+ standalone: true,
22
+ imports: [
23
+ AsyncPipe,
24
+ JsonPipe,
25
+ BlockBannerFullEcComponent,
26
+ BlockBannerBoxEcComponent,
27
+ BlockHtmlEcComponent,
28
+ BlockProductsEcComponent,
29
+ BlockNewsletterEcComponent,
30
+ BlockFormContactEcComponent
31
+ ],
32
+ templateUrl: './blocks-ec.component.html',
33
+ styleUrl: './blocks-ec.component.scss'
34
+ })
35
+ export class BlocksEcComponent implements OnInit {
36
+ /**
37
+ * Servicio de Bloques
38
+ */
39
+ private _blocksService = inject(BlocksService);
40
+ /**
41
+ * Constantes de la API
42
+ */
43
+ private _apiConstants = inject(ApiConstantsService);
44
+ /**
45
+ * Observable de bloques
46
+ */
47
+ public blocks$: Observable<IBlock[]> | undefined;
48
+ /**
49
+ * Nombre de la sección que alberga a los bloques.
50
+ */
51
+ private _strsection: string | null = null;
52
+ /**
53
+ * Colección de Templates para reemplazar en los distintos tipos
54
+ * de bloque por bloques locales generados en el frontend.
55
+ */
56
+ @Input() templates!: TemplateRef<any>;
57
+ /**
58
+ * Indicador para cuando se esten cargando los bloques.
59
+ */
60
+ @Input() show_loading:boolean = false;
61
+ /**
62
+ * Nombre de la sección del bloque.
63
+ */
64
+ @Input({
65
+ required: true,
66
+ }) set section(value:string | null) {
67
+ this._strsection = value;
68
+ if(this._strsection){
69
+ this.blocks$ = this._blocksService.getBlocks(this._strsection)
70
+ }
71
+ }
72
+ @Input() blockFilters: string[] | null = null;
73
+ constructor(){}
74
+
75
+ ngOnInit(): void {}
76
+ /**
77
+ * Obtiene el contenido html de un bloque, este método es usado cuando el bloque es de tipo **HTML**
78
+ * @param block
79
+ * @returns
80
+ */
81
+ getHTMLContent = (block: IBlock) => block.translations && block.translations[this._apiConstants.LOCALE].content;
82
+
83
+ isNewsletter(block: any): boolean { return block.contactForm.code.includes('news') };
84
+
85
+ showBlock = (block: IBlock) => this.blockFilters ? this.blockFilters.includes(block.code) : true
86
+ }
@@ -0,0 +1,4 @@
1
+ export * from './blocks-ec.component';
2
+ export * from './block-banner-full-ec/block-banner-full-ec.component';
3
+ export * from './block-banner-box-ec/block-banner-box-ec.component';
4
+ export * from './block-html-ec/block-html-ec.component';
@@ -0,0 +1,20 @@
1
+ <nav aria-label="breadcrumb">
2
+ <ol class="breadcrumb">
3
+ <li class="breadcrumb-item"><a routerLink="/home">Home</a></li>
4
+ @for (crumb of breadcrumb; track $index) {
5
+ @if(breadcrumb.length === $index+1){
6
+ <li class="breadcrumb-item active" aria-current="page">
7
+ {{
8
+ crumb.title | translate | titlecase
9
+ }}
10
+ </li>
11
+ }@else {
12
+ <li class="breadcrumb-item">
13
+ <a [routerLink]="'/'+crumb.path">{{
14
+ crumb.title | translate | titlecase
15
+ }}</a>
16
+ </li>
17
+ }
18
+ }
19
+ </ol>
20
+ </nav>
@@ -0,0 +1,30 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { FiltersService, OptionsService } from '../../ec-services';
3
+ import { Filter } from '../../classes';
4
+ import { RouterLink, RouterLinkActive } from '@angular/router';
5
+ import { TitleCasePipe } from '@angular/common';
6
+ import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
7
+
8
+ @Component({
9
+ selector: 'app-breadcrumb-ec',
10
+ standalone: true,
11
+ imports: [RouterLink, RouterLinkActive, TitleCasePipe, TranslateModule],
12
+ templateUrl: './breadcrumb-ec.component.html',
13
+ styleUrl: './breadcrumb-ec.component.scss'
14
+ })
15
+ export class BreadcrumbEcComponent {
16
+ private _filtersService: FiltersService = inject(FiltersService);
17
+ private _optionsService: OptionsService = inject(OptionsService);
18
+ public breadcrumb:any [] = [];
19
+
20
+ constructor(){
21
+ this._filtersService.filters$.subscribe(res => {
22
+ this.breadcrumb = this.generateBreadcrumb(res);
23
+ })
24
+ }
25
+
26
+ generateBreadcrumb(filters:Filter[]){
27
+ return this._optionsService.getBreadcrumbByFilters(filters);
28
+ }
29
+
30
+ }
@@ -0,0 +1,24 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { CartService, ToastService } from '../../ec-services';
3
+ import { CoreConstantsService } from '../../constants';
4
+
5
+ @Component({
6
+ selector: 'lib-cart-ec',
7
+ standalone: true,
8
+ imports: [],
9
+ templateUrl: './cart-ec.component.html',
10
+ styleUrl: './cart-ec.component.scss'
11
+ })
12
+ export class CartEcComponent {
13
+ private _cartService: CartService = inject(CartService);
14
+
15
+ public cartItems$ = this._cartService.cartItems$;
16
+ public subTotalAmount$ = this._cartService.getSubTotalAmount();
17
+ public totalPromotionAmount$ = this._cartService.getTotalPromotionAmount();
18
+ public taxesAmount$ = this._cartService.getTaxesAmount();
19
+ public totalAmount$ = this._cartService.getTotalAmount();
20
+ removeCoupon(){
21
+ this._cartService.removeCoupon()
22
+ }
23
+
24
+ }
@@ -0,0 +1,51 @@
1
+ import { Component, inject, Input, OnInit } from '@angular/core';
2
+ import { CoreConstantsService } from '../../../constants';
3
+ import { CartService, ToastService } from '../../../ec-services';
4
+
5
+ @Component({
6
+ selector: 'lib-cart-item-ec',
7
+ standalone: true,
8
+ imports: [],
9
+ templateUrl: './cart-item-ec.component.html',
10
+ styleUrl: './cart-item-ec.component.scss'
11
+ })
12
+ export class CartItemEcComponent implements OnInit {
13
+ @Input({
14
+ required: true
15
+ }) item: any;
16
+
17
+ private _cartService: CartService = inject(CartService);
18
+ private _toastService: ToastService = inject(ToastService);
19
+
20
+ private _constants: CoreConstantsService = inject(CoreConstantsService);
21
+ public mediaUrl = this._constants.mediaUrl();
22
+ public quantity = 0;
23
+
24
+ ngOnInit() {
25
+ this.quantity = this.item.quantity
26
+ }
27
+
28
+ updateQuantity(stock: number) {
29
+ if (this.quantity > 0 && this.quantity <= stock) {
30
+ this._cartService.updateItemQuantity(this.item, this.quantity)
31
+ } else {
32
+ this.quantity = this.item.quantity
33
+ this._toastService.show('out-of-stock-actually');
34
+ }
35
+ }
36
+
37
+ less(stock: number, value: number = 1) {
38
+ let quantity = this.item.quantity - value;
39
+ quantity > 0 && quantity <= stock ? this._cartService.updateItemQuantity(this.item, quantity) : this._toastService.show('out-of-stock-actually');
40
+
41
+ }
42
+
43
+ plus(stock: number, value: number = 1) {
44
+ let quantity = this.item.quantity + value;
45
+ quantity > 0 && quantity <= stock ? this._cartService.updateItemQuantity(this.item, quantity) : this._toastService.show('out-of-stock-actually');
46
+ }
47
+
48
+ deleteCartItem(){
49
+ this._cartService.deleteCartItem(this.item)
50
+ }
51
+ }
@@ -0,0 +1,2 @@
1
+ export * from './cart-ec.component';
2
+ export * from './cart-item-ec/cart-item-ec.component';
@@ -0,0 +1,56 @@
1
+ <main class="py-4" id="appCheckoutEc">
2
+ @if(canCheckout){
3
+ <app-detail-checkout-block-ec></app-detail-checkout-block-ec>
4
+ <div class="container">
5
+ <div class="row">
6
+ <div class="col-md-12 col-12">
7
+ @if(state$ | async; as steps){
8
+ <div id="stepper" class="bs-stepper">
9
+ <div class="mb-3 row d-flex justify-content-center position-relative stepperContainer">
10
+ @for(step of steps; track $index; let x=$index){
11
+ <div [class]="'d-flex flex-column justify-content-center align-items-center px-0 col-2'">
12
+ <div [class]="'step d-inline-flex align-items-center'" [attr.data-target]="'#test-l-'+step.step">
13
+ <span
14
+ [class]="'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') ">{{x+1}}</span>
15
+ <span class="bs-stepper-label">{{ step.label |translate}}</span>
16
+ </div>
17
+
18
+ </div>
19
+ @if(x < steps.length-1){
20
+ <div class="col-3 d-flex align-items-center"><hr [class]="'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')" ></div>
21
+ }
22
+ }
23
+ </div>
24
+ <!-- CONTENT -->
25
+ <div class="bs-stepper-content margin-bottom-i">
26
+ <app-step-container-ec [steps]="steps" />
27
+ </div>
28
+ </div>
29
+ }
30
+ </div>
31
+ <!--@if(loading$ | async; as load){
32
+ <div class="col-md-12 col-12">
33
+ <div *ngIf="load" class="d-flex flex-column jusitfy-content-center align-items-center mt-2">
34
+ <app-loading-full-ec></app-loading-full-ec>
35
+ <h5>{{ 'processing-payment' | translate }}</h5>
36
+ </div>
37
+ </div>
38
+ }-->
39
+ </div>
40
+ </div>
41
+ } @else {
42
+ <div class="wrap">
43
+ <!-- <div *ngIf="(loading$ | async) as load">
44
+ <app-loading-full-ec *ngIf="canCheckout"></app-loading-full-ec>
45
+ </div>
46
+ <section id="cart" *ngIf="!canCheckout">
47
+ <section id="cart bg-white h-50">
48
+ <div class="d-flex flex-column justify-content-center align-items-center text-center">
49
+ <h4>{{ 'empty-cart' | translate }}</h4>
50
+ <h5>{{ 'empty-cart-detail' | translate }}</h5>
51
+ </div>
52
+ </section>
53
+ </section> -->
54
+ </div>
55
+ }
56
+ </main>
@@ -0,0 +1,38 @@
1
+ .bs-stepper-label {
2
+ font-size: 10px;
3
+ padding-left: 0.5rem;
4
+ font-weight: bold;
5
+ }
6
+
7
+ .bs-stepper-number {
8
+ font-size: 10px;
9
+ font-weight: bold;
10
+ padding-top: 0.2rem;
11
+ padding-bottom: 0.2rem;
12
+ }
13
+
14
+ .line {
15
+ height: 1px;
16
+ border: none;
17
+ background-color: var(--bs-secondary);
18
+ position: relative;
19
+ overflow: hidden;
20
+ margin: 0;
21
+ opacity: 0.75 !important;
22
+ }
23
+
24
+ .line::before {
25
+ content: '';
26
+ position: absolute;
27
+ top: 0;
28
+ left: 0;
29
+ width: 0;
30
+ height: 100%;
31
+ background-color: var(--bs-primary);
32
+ transition: width 0.5s;
33
+ }
34
+
35
+ .line-active::before {
36
+ width: 100%;
37
+ left: 0;
38
+ }
@@ -0,0 +1,67 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, OnInit } from '@angular/core';
2
+ import { ChannelService, CheckoutService } from '../../ec-services';
3
+ import { IStep, Step, StepType } from '../../interfaces';
4
+ import { take } from 'rxjs';
5
+ import { AsyncPipe, JsonPipe } from '@angular/common';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+ import { StepContainerEcComponent } from './step-container-ec/step-container-ec.component';
8
+ import { DetailCheckoutBlockEcComponent } from './detail-checkout-block-ec/detail-checkout-block-ec.component';
9
+
10
+ @Component({
11
+ selector: 'lib-checkout-ec',
12
+ standalone: true,
13
+ imports: [AsyncPipe, TranslateModule, StepContainerEcComponent, DetailCheckoutBlockEcComponent],
14
+ templateUrl: './checkout-ec.component.html',
15
+ styleUrl: './checkout-ec.component.scss',
16
+ schemas:[CUSTOM_ELEMENTS_SCHEMA]
17
+ })
18
+ export class CheckoutEcComponent implements OnInit {
19
+ private _channelService: ChannelService = inject(ChannelService);
20
+ private _checkoutService: CheckoutService = inject(CheckoutService);
21
+
22
+ public readonly ADDRESS: StepType = 'address';
23
+ public readonly SHIPMENT: StepType = 'shipment';
24
+ public readonly PAYMENT: StepType = 'payment';
25
+
26
+ //public loading$ = this._checkoutService
27
+ //public canCheckout$ = this._checkoutService.canCheckout$
28
+ public state$ = this._checkoutService.state$;
29
+
30
+ public channel: any;
31
+ //public steps: Step[] = [];
32
+ public subCan:any;
33
+ public canCheckout: boolean = false;
34
+
35
+ constructor() {
36
+ //console.log("constructo.....");
37
+ this._channelService.channel$.subscribe(
38
+ (res: any) => {
39
+ //console.log("construct")
40
+ this.channel = res;
41
+ //this.initializeSteps();
42
+ }
43
+ )
44
+ }
45
+ ngOnInit(): void {
46
+ this.subCan = this._checkoutService.canCheckout$.pipe(take(1)).subscribe(contain_items => {
47
+ if (contain_items) this.initializeCheckout();
48
+ else this.canCheckout = false;
49
+ })
50
+ }
51
+ initializeCheckout() {
52
+ this.canCheckout = true;
53
+ this.initializeSteps();
54
+
55
+ }
56
+ initializeSteps() {
57
+ let steps: IStep[] = [];
58
+ //El paso de elegir dirección siempre esta
59
+ steps.push({ name: this.ADDRESS, label: 'billing-details', state:'ready' })
60
+ //El paso de elegir metodo de envio
61
+ this.channel?.isSkippingShippingStepAllowed ? null : steps.push({ name: this.SHIPMENT, label:'shipment-method' });
62
+ //El paso de elegir metodo de pago
63
+ this.channel?.isSkippingPaymentStepAllowed ? null : steps.push({ name: this.PAYMENT, label: 'payment'});
64
+ this._checkoutService.setSteps(steps)
65
+ }
66
+
67
+ }