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,113 @@
1
+ @if(banners.length){
2
+ <section [ngClass]="trimClassBlock(meta.code) + ' container-fluid'"
3
+ [style.background-color]="meta.styles?.backgroundColor"
4
+ [style.background-image]="meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'">
5
+
6
+ <div class="block-boxes" style="background-color: white;">
7
+ @if(meta.name){
8
+ <div class="row">
9
+ a
10
+ <div class="col-12 mt-4">
11
+ <h2 class="font-weight-normal font-gd">
12
+ <span>{{meta.name}}</span>
13
+ </h2>
14
+ </div>
15
+ </div>
16
+ }
17
+
18
+ @if(meta.styles && meta.styles.carrousel == false){
19
+ <!-- Si es formato fijo -->
20
+ <div class="banner-content">
21
+ <div class="row g-0">
22
+ @for (banner of banners; track $index) {
23
+ <div [ngClass]="'item '+'col-md-6 '+'col-lg-'+(12/banners.length) " [id]="$index">
24
+ <img class="img-fluid" [src]=" mediaBannerUrl+getImage(banner)" alt="" />
25
+ <div class="position-absolute w-100 top-0 start-0 h-100">
26
+ <h2 [ngClass]="'item-title px-2 item-position-vertical-'+ (banner.styles?.description?.position)"
27
+ [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000'">
28
+ {{banner.title}}
29
+ </h2>
30
+ @if(banner.subtitle){
31
+ <p [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' "
32
+ [class]="'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)">
33
+ {{banner.subtitle}}
34
+ </p>
35
+ }
36
+ </div>
37
+ <div [class]="'item-position-vertical-' + (banner.styles?.button?.position)">
38
+ @if(banner.styles?.button?.text){
39
+ <a href="{{banner.url}}" [class]="'item-button btn btn-light'">
40
+ {{banner.styles.button.text}}
41
+ </a>
42
+ }
43
+ </div>
44
+ </div>
45
+ }
46
+ </div>
47
+ </div>
48
+ }@else {
49
+ <!-- Si es Carrousel -->
50
+ <swiper-container init="false" [id]="meta?.code">
51
+ @for (banner of banners; track $index) {
52
+ <!-- Si es de Categorias -->
53
+ @if (banner.taxons[0]) {
54
+ <swiper-slide>
55
+
56
+ <a class="banner-content carrousel item" (click)='redirectRoute(banner.taxons[0].slug)' [routerLink]="['/collection/categories/', banner.taxons[0].slug]" routerLinkActive="router-link-active" style="text-decoration: none; cursor: pointer; background-color: white;">
57
+ <div class="image-container">
58
+ <img [src]="mediaBannerUrl+getImage(banner)" alt="Banner Image" class="banner-image">
59
+ </div>
60
+ @if(banner.title){
61
+ <h2 [class]="'box-text item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)"
62
+ style="color:#fff">
63
+ {{banner.title}}
64
+ </h2>
65
+ }
66
+ @if(banner.taxons && banner.taxons.length){
67
+ <h5 class="item-subtitle-full item-position-vertical-center text-center box-text">
68
+ {{banner.translations.es_AR.title}}
69
+ </h5>
70
+ }
71
+ @if(banner.subtitle){
72
+ <p [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' "
73
+ [class]="'box-text px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)">
74
+ {{banner.subtitle}}
75
+ </p>
76
+ }
77
+ </a>
78
+ </swiper-slide>
79
+ } @else {
80
+ <swiper-slide>
81
+
82
+ <a class="banner-content carrousel item" style="cursor: pointer;">
83
+ <div class="image-container">
84
+ <img [src]="mediaBannerUrl+getImage(banner)" alt="Banner Image" class="banner-image">
85
+ </div>
86
+ @if(banner.title){
87
+ <h2 [class]="'box-text item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)"
88
+ style="color:#fff">
89
+ {{banner.title}}
90
+ </h2>
91
+ }
92
+ @if(banner.taxons && banner.taxons.length){
93
+ <h5 class="item-subtitle-full item-position-vertical-center text-center box-text">
94
+ {{banner.translations.es_AR.title}}
95
+ </h5>
96
+ }
97
+ @if(banner.subtitle){
98
+ <p [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' "
99
+ [class]="'box-text px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)">
100
+ {{banner.subtitle}}
101
+ </p>
102
+ }
103
+ </a>
104
+ </swiper-slide>
105
+ }
106
+
107
+ }
108
+ </swiper-container>
109
+ }
110
+ </div>
111
+
112
+ </section>
113
+ }
@@ -0,0 +1,12 @@
1
+ .banner-container {
2
+ text-align: center;
3
+ }
4
+
5
+ .banner-image {
6
+ display: block;
7
+ margin: 0 auto;
8
+ }
9
+
10
+ .item-subtitle-full {
11
+ margin-top: 10px; /* Ajusta el margen según sea necesario */
12
+ }
@@ -0,0 +1,100 @@
1
+ import { AsyncPipe, CommonModule } from '@angular/common';
2
+ import { afterNextRender, Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, signal } from '@angular/core';
3
+ import { BlockEcComponent } from '../../abstractions-components';
4
+ import { AnalyticsService } from '../../../ec-services';
5
+ import { register, SwiperContainer } from 'swiper/element';
6
+ import { SwiperOptions } from 'swiper/types';
7
+ import { RouterModule } from '@angular/router';
8
+
9
+ register()
10
+ /**
11
+ * Componente para manejar los banner de tipo box.
12
+ * @class BlockBannerBoxEcComponent
13
+ * @extends {BlockEcComponent}
14
+ */
15
+ @Component({
16
+ selector: 'app-block-banner-box-ec',
17
+ standalone: true,
18
+ imports: [CommonModule, RouterModule],
19
+ templateUrl: './block-banner-box-ec.component.html',
20
+ styleUrl: './block-banner-box-ec.component.scss',
21
+ schemas:[CUSTOM_ELEMENTS_SCHEMA]
22
+ })
23
+ export class BlockBannerBoxEcComponent extends BlockEcComponent {
24
+ /**
25
+ * Banners de tipo Box.
26
+ */
27
+ @Input({
28
+ required: true
29
+ }) banners: any;
30
+ /**
31
+ * Datos del bloque que contiene a los banners
32
+ */
33
+ @Input({ required: true }) meta: any;
34
+ /**
35
+ * Servicio para Analytics
36
+ */
37
+ private analyticsService = inject(AnalyticsService)
38
+ /**
39
+ * Signal utlizado para guarda el contenedor del carrusel
40
+ */
41
+ swiperElement = signal<SwiperContainer | null>(null)
42
+
43
+ /**
44
+ * Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
45
+ * para el carrusel del banners. Esto debe ser asi debido a que ya debe estar presente
46
+ * en el Dom el element `<swiper-container>` para poder configurarlo.
47
+ */
48
+ constructor() {
49
+ super()
50
+ afterNextRender(() => {
51
+ const swiperElemConstructor = document.querySelector('#'+this.meta?.code)
52
+ Object.assign(swiperElemConstructor!, this.swiperOptions())
53
+ this.swiperElement.set(swiperElemConstructor as SwiperContainer)
54
+ //swiperElemConstructor?.initialize();
55
+ this.swiperElement()?.initialize();
56
+ })
57
+ }
58
+ /**
59
+ * Método original en: {@link BlockEcComponent}
60
+ */
61
+ override swiperOptions ():SwiperOptions {
62
+ return {
63
+ slidesPerView: 1,
64
+ autoplay: true,
65
+ loop: true,
66
+ speed: 1050,
67
+ pagination: false,
68
+ navigation: true,
69
+ autoHeight: true,
70
+ breakpoints: {
71
+ 0: {
72
+ slidesPerView: 1
73
+ },
74
+ 576:{
75
+ slidesPerView: 2
76
+ },
77
+ 768: {
78
+ slidesPerView: 4,
79
+ },
80
+ 992: {
81
+ slidesPerView: 5,
82
+ },
83
+ 1200: {
84
+ slidesPerView: 5,
85
+ }
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Aplica el evento `select_promotion` junto con el banner que interactua.
91
+ * @param banner
92
+ */
93
+ selectPromotion(banner: any): void {
94
+ this.analyticsService.callEvent('select_promotion', banner)
95
+ }
96
+
97
+ redirectRoute(url: string): void {
98
+ // this.router.navigate(['/collection/categories'])
99
+ }
100
+ }
@@ -0,0 +1,111 @@
1
+ @if(banners.length > 0) {
2
+ <section [ngClass]="trimClassBlock(meta?.code)+' container-fluid px-0'"
3
+ [style.background-color]="meta.styles?.backgroundColor"
4
+ [style.background-image]="meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'">
5
+
6
+ @if (banners.length == 1) {
7
+ <!-- si es formato fijo -->
8
+ <div class="row justify-content-center">
9
+ @let banner = banners[0];
10
+ @if(!banners.styles?.button?.text){
11
+ <!-- banner sin boton -->
12
+ <a [href]="banner.url" >
13
+ <div class="item col-12">
14
+ <img class="img-fluid" [src]="mediaBannerUrl + getImage(banner)" alt="">
15
+ <div class="position-absolute w-100 h-100 start-0 top-0">
16
+ @if(banner.title){
17
+ <h2 [class]="'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)"
18
+ [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' ">
19
+ {{banner.title}}
20
+ </h2>
21
+ }
22
+ @if(banner.subtitle){
23
+ <p [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' "
24
+ [class]="'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)">
25
+ {{banner.subtitle}}
26
+ </p>
27
+ }
28
+ </div>
29
+ </div>
30
+ </a>
31
+ }@else {
32
+ <!-- banner fijo con boton -->
33
+ <div class="item col-12">
34
+ <img class="img-fluid" [src]="mediaBannerUrl + getImage(banner)" alt="">
35
+ <div class="position-absolute w-100 h-100 start-0 top-0">
36
+ @if(banner.title){
37
+ <h2 [class]="'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)"
38
+ [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' ">
39
+ {{banner.title}}
40
+ </h2>
41
+ }
42
+ @if(banner.subtitle){
43
+ <p
44
+ [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' "
45
+ [class]="'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)">
46
+ {{banner.subtitle}}
47
+ </p>
48
+ <div [class]="'item-position-vertical-' + (banner.styles?.button?.position)">
49
+ @if(banner.styles?.button?.text){
50
+ <a href="{{banner.url}}"
51
+ [class]="'item-button-full btn btn-light '">
52
+ {{banner.styles.button.text}}
53
+ </a>
54
+ }
55
+
56
+ </div>
57
+ }
58
+ </div>
59
+ </div>
60
+ }
61
+ </div>
62
+ }@else {
63
+ <!-- si es carrousel -->
64
+ <!-- @if(swiperElement() != null){ -->
65
+ <swiper-container init="false" [id]="meta?.code">
66
+ @for (banner of banners; track $index) {
67
+ <swiper-slide>
68
+ <div class="item">
69
+ @if (!banner.styles?.button?.text) {
70
+ <!-- banner sin boton -->
71
+ @if(banner.url){
72
+ <a [href]="banner.url" class="">
73
+ <img [src]="mediaBannerUrl + getImage(banner)" alt="" class="img-fluid w-100" />
74
+ </a>
75
+ }@else {
76
+ <img [src]="mediaBannerUrl + getImage(banner)" alt="" class="img-fluid w-100" />
77
+ }
78
+ }@else {
79
+ <!-- banner con boton -->
80
+ <img [src]="mediaBannerUrl + getImage(banner)" alt="" />
81
+ <div class="position-absolute w-100 h-100 start-0 top-0">
82
+ @if(banner.title){
83
+ <h2 [class]="'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)"
84
+ [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' ">
85
+ {{banner.title}}
86
+ </h2>
87
+ }
88
+ @if(banner.subtitle){
89
+ <p [style.color]="(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' "
90
+ [class]="'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)">
91
+ {{banner.subtitle}}
92
+ </p>
93
+ }
94
+ <div [class]="'item-position-vertical-' + (banner.styles?.button?.position)">
95
+ @if(banner.styles?.button?.text){
96
+ <a href="{{banner.url}}" [class]="'item-button-full btn btn-light'">
97
+ {{banner.styles.button.text}}
98
+ </a>
99
+ }
100
+ </div>
101
+ </div>
102
+ }
103
+ </div>
104
+ </swiper-slide>
105
+ }
106
+ </swiper-container>
107
+ <!-- } -->
108
+
109
+ }
110
+ </section>
111
+ }
@@ -0,0 +1,77 @@
1
+ import { afterNextRender, afterRender, Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, OnInit, signal } from '@angular/core';
2
+ import { IBlock } from '../../../interfaces';
3
+ import { BlockEcComponent } from '../../abstractions-components';
4
+ import { register, SwiperContainer } from 'swiper/element/bundle';
5
+ import { CommonModule } from '@angular/common';
6
+ import { RouterLink } from '@angular/router';
7
+ import { AnalyticsService } from '../../../ec-services';
8
+
9
+ register();
10
+ /**
11
+ * Componente para manejar los banners de tipo full
12
+ * @extends {BlockEcComponent}
13
+ * @implements {OnInit}
14
+ * @class BlockBannerFullEcComponent
15
+ */
16
+ @Component({
17
+ selector: 'app-block-banner-full-ec',
18
+ standalone: true,
19
+ imports: [CommonModule,RouterLink],
20
+ schemas:[CUSTOM_ELEMENTS_SCHEMA],
21
+ templateUrl: './block-banner-full-ec.component.html',
22
+ styleUrl: './block-banner-full-ec.component.scss'
23
+ })
24
+ export class BlockBannerFullEcComponent extends BlockEcComponent implements OnInit {
25
+ /**
26
+ * Banners tipo full
27
+ */
28
+ @Input({
29
+ required: true
30
+ }) banners: any;
31
+ /**
32
+ * Datos del bloque que contiene a los banners
33
+ */
34
+ @Input({ required: true }) meta: any;
35
+ /**
36
+ * Servicio para Analytics
37
+ */
38
+ private analyticsService = inject(AnalyticsService)
39
+ /**
40
+ * Signal utlizado para guarda el contenedor del carrusel
41
+ */
42
+ swiperElement = signal<SwiperContainer | null>(null)
43
+ /**
44
+ * Método original en: {@link BlockEcComponent}
45
+ * @param banner
46
+ * @returns
47
+ */
48
+ public override getImage = (banner: any) => this.getBannerImage(banner);
49
+ /**
50
+ * Se mappea los banners para sumarle el objeto de translations y que
51
+ * sean mas amigables para su uso.
52
+ */
53
+ ngOnInit(): void {
54
+ this.banners = this.banners.map((banner: any) => { return { ...banner, ...banner.translations[this.apiConsts.LOCALE] } })
55
+ }
56
+ /**
57
+ * Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
58
+ * para el carrusel del banners. Esto debe ser asi debido a que ya debe estar presente
59
+ * en el Dom el element `<swiper-container>` para poder configurarlo.
60
+ */
61
+ constructor(){
62
+ super()
63
+ afterNextRender(() => {
64
+ const swiperElemConstructor = document.querySelector('#'+this.meta?.code)
65
+ Object.assign(swiperElemConstructor!,this.swiperOptions())
66
+ this.swiperElement.set(swiperElemConstructor as SwiperContainer)
67
+ this.swiperElement()?.initialize();
68
+ })
69
+ }
70
+ /**
71
+ * Aplica el evento `select_promotion` junto con el banner que interactua.
72
+ * @param banner
73
+ */
74
+ selectPromotion(banner:any):void {
75
+ this.analyticsService.callEvent('select_promotion', banner)
76
+ }
77
+ }
@@ -0,0 +1,62 @@
1
+ @if(block){
2
+ <div [class]="trimClassBlock(block.code) + ' container-fluid'">
3
+ <div class="row justify-content-center">
4
+ <div class="col-12 col-md-12">
5
+ <div class="row w-100 m-auto">
6
+ <h5>{{block.name || 'Dejanos tu consulta'}}</h5>
7
+ <p class="w-100">{{ block.description || 'Completa el siguiente formulario y responderemos tu consulta a la brevedad' }}</p>
8
+ </div>
9
+ <form [formGroup]="form()" (submit)="onSubmit($event)" class="position-relative" ><!-- (submit)="toastCompleteForm($event)" -->
10
+ @if(block.sendName){
11
+ <div class="form-group">
12
+ <label class="sr-only" for="nombre">Nombre</label>
13
+ <input formControlName="name" type="text"
14
+ class="form-control form-control-sm required" id="nombre" placeholder="Nombre">
15
+ </div>
16
+ }
17
+ @if(block.sendEmail){
18
+ <div class="form-group">
19
+ <label class="sr-only" for="mail">Email</label>
20
+ <input formControlName="email" type="email"
21
+ class="form-control form-control-sm required" id="mail" placeholder="Email">
22
+ </div>
23
+ }
24
+ @if(block.sendTelephone){
25
+ <div class="form-group">
26
+ <label class="sr-only" for="telefono">Teléfono</label>
27
+ <input formControlName="telephone" type="text"
28
+ class="form-control form-control-sm required" id="telefono" placeholder="Teléfono">
29
+ </div>
30
+ }
31
+ @if(block.sendSubject){
32
+ <div class="form-group">
33
+ <label class="sr-only" for="subject">Asunto</label>
34
+ <input formControlName="subject" type="text"
35
+ class="form-control form-control-sm required" id="subject" placeholder="Asunto">
36
+ </div>
37
+ }
38
+ @if(block.sendBody){
39
+ <div class="form-group">
40
+ <label class="sr-only" for="mensaje">Mensaje</label>
41
+ <textarea formControlName="body" name="mensaje" id="mensaje " cols="30"
42
+ rows="5" placeholder="Dejanos tu mensaje"
43
+ class="form-control form-control-sm required"></textarea>
44
+ </div>
45
+ }
46
+ <div class="boxContenidoCapcha mb-3">
47
+ <div class="contenedorCaptcha">
48
+ <re-captcha-ec formControlName="recaptcha"></re-captcha-ec>
49
+ </div>
50
+ </div>
51
+
52
+ <button type="submit" class="btn btn-dark text-uppercase px-5"
53
+ [disabled]="form().invalid">ENVIAR</button>
54
+ @if(loading){
55
+ <app-loading-section-ec />
56
+ }
57
+ </form>
58
+ </div>
59
+
60
+ </div>
61
+ </div>
62
+ }
@@ -0,0 +1,89 @@
1
+ import { Component, inject, Input, signal } from '@angular/core';
2
+ import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';
3
+ import { BlocksService, FormService, ToastService } from '../../../ec-services';
4
+ import { Router } from '@angular/router';
5
+ import { BlockEcComponent } from '../../abstractions-components';
6
+ import { LoadingSectionEcComponent, ReCaptchaEcComponent } from '../../widgets-ec';
7
+ import { JsonPipe } from '@angular/common';
8
+ import { firstValueFrom } from 'rxjs';
9
+
10
+ @Component({
11
+ selector: 'app-block-form-contact-ec',
12
+ standalone: true,
13
+ imports: [ReactiveFormsModule, LoadingSectionEcComponent, ReCaptchaEcComponent],
14
+ templateUrl: './block-form-contact-ec.component.html',
15
+ styleUrl: './block-form-contact-ec.component.scss'
16
+ })
17
+ export class BlockFormContactEcComponent extends BlockEcComponent {
18
+ @Input({ required:true }) block:any;
19
+ @Input() success_message:string | undefined;
20
+ @Input() redirect:boolean = true;
21
+ @Input() subject:string | undefined;
22
+
23
+ private _contactFormService: FormService = inject(FormService)
24
+ private _toastService:ToastService = inject(ToastService)
25
+ private _formBuilder:FormBuilder = inject(FormBuilder)
26
+ private _router:Router = inject(Router)
27
+
28
+ protected form_data:any = new FormData();
29
+
30
+ public loading:boolean = false;
31
+
32
+ public form = signal<FormGroup>(
33
+ this._formBuilder.group({
34
+ name: ['', []],
35
+ email: ['', Validators.required],
36
+ telephone: ['', []],
37
+ subject: ['', []],
38
+ body: ['', []],
39
+ attachment: [''],
40
+ recaptcha: [null, Validators.required], //testear este cambio de nombre
41
+ })
42
+ )
43
+
44
+ onSubmit(e:any):void{
45
+ this.loading = true;
46
+ e.preventDefault();
47
+ this.sendForm(this.form(), 'inquiry-sent');
48
+ }
49
+
50
+ sendForm(form:any, success_message:string){
51
+ if (form.valid && (form.value.email.includes('@'))) {
52
+ const formData = new FormData();
53
+ formData.append('mailText', form.value.body)
54
+ formData.append('form_code', this.block.code)
55
+ this.sendValue('name') && formData.append('name', this.form().get('name')?.value)
56
+ this.sendValue('email') && formData.append('email', this.form().get('email')?.value)
57
+ this.sendValue('telephone') && formData.append('telephone', this.form().get('telephone')?.value)
58
+ this.sendValue('subject') && formData.append('subject', this.form().get('subject')?.value)
59
+ this.sendValue('body') && formData.append('body', this.form().get('body')?.value)
60
+ this.sendValue('attachments') && formData.append('attachment', this.form().get('attachment')?.value)
61
+ firstValueFrom(this._contactFormService.sendResponse(formData)).then(
62
+ (res:any) => {
63
+ this.form().reset()
64
+ this._toastService.show(this.success_message || success_message);
65
+ this.loading = false
66
+ this.redirect && this._router.navigateByUrl('/home');
67
+
68
+ },
69
+ (err:any) => {
70
+ this._toastService.error('inquiry-error');
71
+ this.loading = false
72
+ }
73
+ );
74
+ } else {
75
+ this._toastService.error('invalid-form');
76
+ this.loading = false
77
+ }
78
+ }
79
+
80
+ sendValue(key:any){
81
+ try {
82
+ let keysearch = key[0].toUpperCase() + key.slice(1).toLowerCase();
83
+ return this.block && this.block['send' + keysearch] || false
84
+ } catch (error) {
85
+ console.error(error);
86
+ return false
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,33 @@
1
+ import { Component, inject, Input, OnInit } from '@angular/core';
2
+ import { BlockEcComponent } from '../../abstractions-components';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ /**
5
+ * Componente para manejar los Bloques de tipo HTML
6
+ * @extends {BlockEcComponent}
7
+ * @implements {OnInit}
8
+ */
9
+ @Component({
10
+ selector: 'app-block-html-ec',
11
+ standalone: true,
12
+ imports: [],
13
+ templateUrl: './block-html-ec.component.html',
14
+ styleUrl: './block-html-ec.component.scss'
15
+ })
16
+ export class BlockHtmlEcComponent extends BlockEcComponent implements OnInit {
17
+ /**
18
+ * Contenido html para sanitizar.
19
+ */
20
+ @Input({
21
+ required: true,
22
+ }) html_content: any;
23
+ /**
24
+ * Sanitizador de Dom elements
25
+ */
26
+ protected sanitizer: DomSanitizer = inject(DomSanitizer)
27
+ /**
28
+ * Se pasa el contenido de html por es sanitizador.
29
+ */
30
+ ngOnInit(): void {
31
+ this.html_content = this.sanitizer.bypassSecurityTrustHtml(this.html_content);
32
+ }
33
+ }