ng-easycommerce-v18 0.6.11 → 0.6.12

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 (220) hide show
  1. package/README.md +299 -277
  2. package/assets/decidirFormEc.html +535 -535
  3. package/assets/ec-i18n/ct.json +321 -312
  4. package/assets/ec-i18n/en.json +438 -429
  5. package/assets/ec-i18n/es.json +475 -470
  6. package/assets/ec-i18n/fr.json +313 -304
  7. package/assets/ec-i18n/gl.json +321 -312
  8. package/assets/ec-i18n/pr.json +321 -312
  9. package/assets/images/cards-occasional.svg +21 -21
  10. package/assets/recaptcha/recaptcha-site-keys.json +3 -3
  11. package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
  12. package/assets/recaptcha/recaptcha-sites.json +52 -52
  13. package/esm2022/lib/api/connection.service.mjs +21 -15
  14. package/esm2022/lib/classes/checkout/steps.mjs +1 -1
  15. package/esm2022/lib/classes/component-helper.mjs +1 -1
  16. package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
  17. package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
  20. package/esm2022/lib/classes/filters/filter.mjs +1 -1
  21. package/esm2022/lib/classes/filters/index.mjs +1 -1
  22. package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
  23. package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
  24. package/esm2022/lib/classes/index.mjs +1 -1
  25. package/esm2022/lib/classes/user.mjs +1 -1
  26. package/esm2022/lib/constants/api.constants.service.mjs +1 -1
  27. package/esm2022/lib/constants/core.constants.service.mjs +1 -1
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +5 -3
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
  43. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
  44. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
  45. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +5 -5
  46. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
  47. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
  48. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -3
  50. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
  51. package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
  52. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
  53. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -3
  54. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +98 -27
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec-single/dataform-ec-single.component.mjs +3 -3
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  60. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  64. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
  65. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
  66. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec-single/shipment-ec-single.component.mjs +3 -3
  67. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
  68. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
  69. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -3
  70. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
  71. package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
  72. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
  73. package/esm2022/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.mjs +3 -3
  74. package/esm2022/lib/ec-components/embla-carousel-ec/embla-carousel-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/embla-carousel-ec/embla-carousel-ec.shared.mjs +1 -1
  76. package/esm2022/lib/ec-components/embla-carousel-ec/index.mjs +1 -1
  77. package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
  78. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +3 -3
  79. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  80. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  81. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +3 -3
  82. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/index.mjs +1 -1
  84. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +145 -8
  86. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
  87. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +8 -8
  88. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +5 -6
  91. package/esm2022/lib/ec-components/seller-dashboard-container-ec/seller-dashboard-container-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  93. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  94. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  96. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  97. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  98. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  99. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +91 -4
  102. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
  103. package/esm2022/lib/ec-components/widgets-ec/index.mjs +2 -1
  104. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  105. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  106. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  107. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  108. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
  109. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
  110. package/esm2022/lib/ec-components/widgets-ec/product-comment-ec/product-comment-ec.component.mjs +35 -0
  111. package/esm2022/lib/ec-components/widgets-ec/product-image-experience-ec/product-image-experience-ec.component.mjs +3 -3
  112. package/esm2022/lib/ec-components/widgets-ec/product-image-zoom-ec/product-image-zoom-ec.component.mjs +3 -3
  113. package/esm2022/lib/ec-components/widgets-ec/product-image-zoom-ec/product-image-zoom-ec.geometry.mjs +1 -1
  114. package/esm2022/lib/ec-components/widgets-ec/product-mobile-image-viewer-ec/product-mobile-image-viewer-ec.component.mjs +3 -3
  115. package/esm2022/lib/ec-components/widgets-ec/product-mobile-image-viewer-ec/product-mobile-image-viewer-ec.environment.mjs +1 -1
  116. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  117. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  118. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
  119. package/esm2022/lib/ec-directive/index.mjs +4 -1
  120. package/esm2022/lib/ec-directive/lowercase-email.directive.mjs +36 -0
  121. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  122. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  123. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  124. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +6 -4
  125. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  126. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  127. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  128. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
  132. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
  133. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  134. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  135. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/base-api.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/cart.service.mjs +43 -21
  141. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  142. package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
  143. package/esm2022/lib/ec-services/currency.service.mjs +28 -6
  144. package/esm2022/lib/ec-services/filters.service.mjs +29 -1
  145. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/index.mjs +2 -1
  147. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  148. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  149. package/esm2022/lib/ec-services/options.service.mjs +1 -1
  150. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  151. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  152. package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
  153. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  154. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  155. package/esm2022/lib/ec-services/price-visibility.service.mjs +1 -1
  156. package/esm2022/lib/ec-services/product-detail.service.mjs +51 -16
  157. package/esm2022/lib/ec-services/products.service.mjs +63 -13
  158. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  159. package/esm2022/lib/ec-services/recently-viewed.service.mjs +94 -0
  160. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  161. package/esm2022/lib/ec-services/runtime-config.service.mjs +1 -1
  162. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  163. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  164. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  165. package/esm2022/lib/ec-services/toast.service.mjs +21 -4
  166. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  167. package/esm2022/lib/interceptors/index.mjs +1 -1
  168. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +1 -1
  169. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  170. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  171. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  172. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  173. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  174. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  175. package/esm2022/lib/interfaces/connection.mjs +1 -1
  176. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  177. package/esm2022/lib/interfaces/currency.mjs +1 -1
  178. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  179. package/esm2022/lib/interfaces/environment.mjs +1 -1
  180. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  181. package/esm2022/lib/interfaces/filter.mjs +1 -1
  182. package/esm2022/lib/interfaces/index.mjs +1 -1
  183. package/esm2022/lib/interfaces/options.mjs +1 -1
  184. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  185. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  186. package/esm2022/lib/interfaces/product.mjs +1 -1
  187. package/esm2022/lib/interfaces/runtime-config.mjs +1 -1
  188. package/esm2022/lib/interfaces/step.mjs +1 -1
  189. package/esm2022/lib/interfaces/storage.mjs +1 -1
  190. package/esm2022/lib/interfaces/store.mjs +1 -1
  191. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  192. package/esm2022/lib/providers/index.mjs +1 -1
  193. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  194. package/esm2022/lib/providers/provideRuntimeConfig.mjs +1 -1
  195. package/esm2022/lib/stores/currency.store.mjs +1 -1
  196. package/esm2022/public-api.mjs +1 -1
  197. package/fesm2022/ng-easycommerce-v18.mjs +893 -261
  198. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  199. package/lib/api/connection.service.d.ts +1 -6
  200. package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +1 -0
  201. package/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.d.ts +1 -1
  202. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +12 -0
  203. package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +1 -1
  204. package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +19 -0
  205. package/lib/ec-components/related-products-ec/related-products-ec.component.d.ts +2 -2
  206. package/lib/ec-components/variants-ec/variants-ec.component.d.ts +10 -0
  207. package/lib/ec-components/widgets-ec/index.d.ts +1 -0
  208. package/lib/ec-components/widgets-ec/product-comment-ec/product-comment-ec.component.d.ts +12 -0
  209. package/lib/ec-directive/index.d.ts +1 -0
  210. package/lib/ec-directive/lowercase-email.directive.d.ts +8 -0
  211. package/lib/ec-services/cart.service.d.ts +4 -4
  212. package/lib/ec-services/currency.service.d.ts +1 -1
  213. package/lib/ec-services/filters.service.d.ts +4 -0
  214. package/lib/ec-services/index.d.ts +1 -0
  215. package/lib/ec-services/product-detail.service.d.ts +5 -1
  216. package/lib/ec-services/products.service.d.ts +5 -0
  217. package/lib/ec-services/recently-viewed.service.d.ts +17 -0
  218. package/lib/ec-services/toast.service.d.ts +6 -0
  219. package/lib/interfaces/product.d.ts +2 -1
  220. package/package.json +1 -1
package/README.md CHANGED
@@ -1,277 +1,299 @@
1
- # Version 0.6.11
2
- - Collection: se agrega `PaginationService.refreshCurrentQuery()` para forzar recarga del listado al reingresar a la misma ruta/filtros, incluso cuando la URL final no cambió.
3
- - `collection-ec`: luego de `hydrateFromRoute(...)` dispara `refreshCurrentQuery()` para evitar reutilización de resultados previos entre navegaciones `collection -> home -> collection`.
4
- - `PaginationService.paginationData$`: se incorpora `refreshNonce` al pipeline (`combineLatest`) para invalidar el `distinctUntilChanged` cuando se requiere refresh explícito.
5
- - `PaginationService.paginationData$`: `shareReplay` pasa a `shareReplay({ bufferSize: 1, refCount: true })` para mejorar el ciclo de suscripción de consumidores activos.
6
- # Version 0.6.10
7
- - Checkout: se centraliza el manejo de errores de stock agotado (`450` / `out_of_stock`) para mostrar al usuario el mensaje devuelto por backend.
8
- - Checkout single: al seleccionar método de envío con `/shipping-option`, si backend responde falta de stock, se muestra feedback y no se avanza al siguiente paso.
9
- - Checkout single: al seleccionar método de pago con `/payment/{method}`, si backend responde falta de stock, se notifica al usuario y no queda persistido el método seleccionado.
10
- - Checkout legacy: selección de envío y contrato ahora notifican errores de stock en lugar de fallar silenciosamente.
11
- - Finalización de checkout: `/complete` queda preparado para mostrar el mensaje de falta de stock cuando backend devuelva `out_of_stock`, evitando duplicar toasts en los componentes.
12
- - `PaymentService.putPayment` vuelve a propagar el error HTTP original para que los componentes puedan interpretar correctamente el payload del backend.
13
- - Se agregan tests focalizados para el manejo de `out_of_stock` en checkout service, envío y pago.
14
- # Version 0.6.9
15
- - Categorías: `OptionsService.getCategories()` ahora expone solo taxons visibles (`isVisible !== false`) para menús, footer y filtros, filtrando recursivamente hijos ocultos.
16
- - Categorías ocultas: se conserva internamente el árbol completo de taxons para que los deep links a `/collection/categories/{slug}` sigan resolviendo el `code` y consultando productos al backend.
17
- - `CategoryFilter`: cuando una categoría oculta llega por URL directa o por `?category=CODE`, mantiene el filtro interno aunque no se muestre como opción seleccionable en la UI.
18
- # Version 0.6.8
19
- - Checkout legacy: se refuerza el avance real por pasos para que envío y pago no queden visualmente listos antes de que respondan los endpoints del backend.
20
- - Envío legacy: `Siguiente` ahora puede mostrar feedback al usuario cuando el paso sigue incompleto y falta seleccionar una opción válida de envío.
21
- - `ShipmentService` vuelve segura la autoselección: sólo persiste contrato automáticamente cuando backend devuelve una única alternativa real; si hay varias, exige selección explícita.
22
- - Envío y pago distinguen estado de carga vs estado vacío, mostrando loaders mientras esperan `/shipping`, costos/contratos de envío, `/payment` y la validación de `/payment/{metodo}`.
23
- - Se agrega `no-payment-methods` a i18n y se actualizan tests focalizados de checkout para cubrir estos estados.
24
- # Version 0.6.7
25
- - `credit-account-banner-ec`: los montos de cuenta corriente ahora se formatean con el locale configurado en el canal, corrigiendo separadores de miles y decimales.
26
- - Filtros dinámicos: se vuelve a soportar la carga desde `options` en `product-search`, preservando selección e hidratación desde `optionCodes`.
27
- - Cuenta corriente: `cart.service` y `product-detail.service` ahora respetan `allowExceedBalance` también al sumar cantidades en carrito y al reintentar agregar desde detalle/listado.
28
- - Checkout single mobile: se aumenta la prioridad visual de la barra flotante de resumen/finalización para que quede por encima de widgets flotantes externos como WhatsApp.
29
- - `checkout-ec.component.scss`: la barra `summary-mobile-bar` ahora usa la variable CSS `--ec-checkout-summary-mobile-z-index` con fallback `10040`.
30
- - `checkout-ec.component.scss`: el overlay de carga ahora usa la variable CSS `--ec-checkout-overlay-z-index` con fallback `10050` para mantenerse por encima del resumen.
31
- - Checkout single mobile: cuando hay un modal abierto (`.modal-open`), la barra de resumen baja a `--ec-checkout-summary-mobile-z-index-modal-open` con fallback `1030` para no interferir con overlays/modales.
32
- - `cart.service`: el reset de carrito ahora marca la inicialización cuando llega la nueva respuesta y el logout limpia siempre en transición real `logueado -> deslogueado`, incluso si antes hubo cambio de cliente en seller-dashboard.
33
- - `auth.service`: al cerrar sesión se limpia también el cliente impersonado en memoria (`_customer`), evitando que queden rastros de seller impersonation en header, permisos y requests posteriores.
34
- - `menu-ec`: el logout deja de recargar la página completa y navega por router a `/home`, evitando que seller-dashboard permanezca visible mientras resuelve un reload duro.
35
- - `auth.service`: agrega `resolveHomeNavigation()` para centralizar la resolución del home configurado por cada frontend y reutilizarla en login/logout sin hardcodes por componente.
36
- - `menu-ec` y `account-ec`: el logout delega en `resolveHomeNavigation()` con fallback a `/home`, respetando frontends que configuren un resolver propio y manteniendo compatibilidad con paths explícitos en cuenta.
37
- - `seller-dashboard-container-ec`: al cambiar de cliente desde el dashboard de vendedor ahora se ejecuta `clearAndResetCustomerCart()` para recargar carrito y `balanceCustomer` (cuenta corriente) con el cliente activo.
38
- - `header-ec`: `getGreetingName` prioriza el cliente impersonado (`AuthService.getCustomer()`), mostrando su `username/email` (o nombre/apellido como fallback) en lugar del usuario vendedor cuando corresponde.
39
- # Version 0.6.6
40
- - Se corrige bug en registro que lanzaba mensaje erroneo si no llegaba la info desde el endpoint de channel.
41
- - Se agregan traducciones de register-success.
42
- - Se corrige bug que no permite avanzar al retroceder desde metodo de envio a direcciones y volver a avanzar.
43
- - Ajuste para que no salte mensaje el monto minimo aleatorio.
44
- - Checkout legacy: al cambiar de método de envío se invalida la selección anterior y `Siguiente` vuelve a quedar deshabilitado hasta confirmar un nuevo contrato.
45
- - `ShipmentService.setMethod` deja de persistir automáticamente el primer contrato disponible y espera una selección explícita del usuario antes de marcar el paso como válido.
46
- - `shipment-ec` agrega una guarda en TS para impedir el avance si el paso de envío no quedó realmente listo, aunque el botón sea forzado desde el HTML.
47
- - En el listado de contratos de envío se elimina el marcado visual automático de la primera opción para evitar que parezca seleccionada sin confirmación real.
48
- # Version 0.6.5
49
- - Eliminación de overrides redundantes en `BlockBannerBox`, `BlockBannerFull`, `RelatedProducts` y `ProductDetail`.
50
- - Corrección de accesos a propiedades `private` en subclases del core.
51
- - Checkout (legacy y single): las opciones de métodos de envío ahora muestran siempre decimales, sin respetar `currency.withoutDecimal`.
52
- - `shipment-ec.component.html` y `shipment-ec-single.component.html`: se fuerza `ecCurrencySymbol:'alwaysShowDecimals'` para mantener consistencia con el resumen del checkout.
53
- # Version 0.6.4
54
- - Checkout legacy: se evita avanzar de paso antes de que termine la sincronización del contrato de envío con `/shipping-contract`.
55
- - `ShipmentService.setContract` ahora espera la respuesta del backend antes de actualizar el estado del checkout, evitando errores de navegación y condiciones de carrera.
56
- - `dataform-ec`, `shipment-ec` y `payment-ec` sincronizan sus botones con los estados de carga globales y locales para bloquear reintentos y navegación durante requests asíncronas.
57
- - En envío se mantienen visibles las opciones mientras carga, se bloquean radio buttons y botón `Anterior`, y el spinner pasa a mostrarse dentro de `Siguiente`.
58
- - En pago se bloquean acciones sensibles (`Anterior` y botones de confirmación) mientras hay carga para evitar peticiones duplicadas en el flujo legacy.
59
- # Version 0.6.3
60
- - Formularios: `block-newsletter-ec` y `block-form-contact-ec` incorporan el honeypot `hp_email_verification` (prefijo `hp_`) y lo envían al backend para que pueda bloquear/bypassear solicitudes de bots.
61
- # Version 0.6.2
62
- - Checkout: `dataform-ec` ahora toma `checkoutRequiredFields.postalCode` desde `/shop-api/{canal}/countries` para definir la visibilidad y obligatoriedad del campo `postcode`.
63
- - Si `checkoutRequiredFields.postalCode` viene en `true`, el campo código postal se muestra y se valida como obligatorio.
64
- - Si `checkoutRequiredFields.postalCode` viene en `false`, el campo se oculta y se eliminan sus validaciones del formulario.
65
- - Se mantiene compatibilidad con backends legacy: si `checkoutRequiredFields.postalCode` no viene en la respuesta, se conserva el comportamiento anterior basado en `viewForms.postcode`.
66
- - Se agregan tests unitarios para cubrir el override del backend nuevo y el fallback legacy.
67
- # Version 0.6.1
68
- - Checkout single: soporte estable de dirección de facturación independiente, con selección de dirección guardada o carga de una nueva, alineado al flujo legacy.
69
- - Facturación: visualización completa de la dirección seleccionada y compatibilidad con provincias y zonas de países no AR mediante `provinceCode`.
70
- - Envíos (single): payload completo en `/shipping-option` para compatibilidad con contrato y sucursal del flujo legacy.
71
- - Productos, filtros y collection: mejoras en sincronización de atributos dinámicos, rango de precios, navegación por categoría y estados de carga del listado.
72
- - Servicios base (`ChannelService`, `OptionsService`, `ParametersService`, `ProductsService`): mejoras de estabilidad para evitar requests duplicados, concurrencia innecesaria y estados bloqueados.
73
- - Precios y cantidades: unificación de visibilidad de precios y validación de configuraciones inválidas de múltiplos en producto.
74
- - Formularios y UX: prevención de doble submit en registro y reset de contraseña, mejoras en el buscador/header, scroll automático al listado y ajustes visuales en cart, order detail y block products.
75
- - Traducciones y validaciones: textos de ordenamiento unificados y validación ampliada de `phoneNumber` en registro mayorista.
76
- # Version 0.6.0
77
- - Se incorpora `embla-carousel-ec` como componente base reutilizable para carruseles (navegación, paginación, estado y autoplay).
78
- - Se migra el HTML de carrusel de `block-products-ec`, `block-banner-full-ec` y `block-banner-box-ec` a Embla.
79
- - Se mantiene compatibilidad legacy para frontends que heredan y aún usan lógica de Swiper en TS (hooks, `swiperOptions` y bridges de inicialización).
80
- - Se agregan utilidades compartidas para mapear configuración legacy (`SwiperOptions`) a Embla, incluyendo breakpoints y estilo responsive de slides.
81
- - Se exporta el nuevo módulo `embla-carousel-ec` desde `ec-components/index.ts`.
82
- - Se ajustan manifiestos de paquete para incluir dependencias de Embla y permitir su empaquetado en la librería.
83
- - `block-products-ec`, `block-banner-full-ec` y `block-banner-box-ec` ahora preservan overrides de frontend en Embla (`emblaOptions`, `emblaPlugins`, `emblaSlideStyle`) y evitan que el core los pise al recalcular configuración.
84
- - Se agregan referencias internas de valores por defecto y último estado core para diferenciar entre configuración base y personalizaciones aplicadas desde frontends heredados.
85
- - Se incorporan guards (`hasFrontendEmblaOptionsOverride`, `hasFrontendEmblaPluginsOverride`, `hasFrontendEmblaSlideStyleOverride`) para aplicar configuración de core sólo cuando no existe override externo.
86
- # Version 0.5.9
87
- - Se incorporan `ProductImageZoomEcComponent`, `ProductMobileImageViewerEcComponent` y `ProductImageExperienceEcComponent`.
88
- - `widgets-ec/index.ts` ahora exporta estos tres componentes para su uso desde la librería.
89
- - `ProductImageExperienceEcComponent` centraliza el flujo de imagen (zoom desktop con panel externo + visor mobile fullscreen) y sincroniza índice activo con `activeIndexChange`.
90
- - Se agrega Input de configuración por objetos: `zoomConfig` y `mobileViewerConfig`, manteniendo compatibilidad con inputs legacy.
91
- - `ProductMobileImageViewerEcComponent` suma `attachToBody`, `activeIndex`/`activeIndexChange`, cierre por historial/escape/backdrop y flechas desktop configurables.
92
- - `product-detail-ec.component.ts` mejora `sanitizedHtml` filtrando `web-share` en `allow` de iframes y agrega utilidades para control de `swiper` e interacciones hover.
93
- # Version 0.5.8
94
- - Checkout: al confirmar dirección (`/headquarter` y `/address`) se actualiza inmediatamente el resumen asociado para reflejar impuestos y totales sin esperar el paso de envío.
95
- - Legacy con envío y pago omitidos: se separa sincronización de dirección y finalización. Primer click sincroniza con backend y actualiza resumen; segundo click habilita/ejecuta `finish-checkout`.
96
- - En legacy de un solo paso, si cambian los totales tras sincronizar dirección, se fuerza scroll al inicio para que el usuario vea el resumen actualizado antes de finalizar.
97
- - `ChannelService` aplica la configuración completa del canal (incluye `checkoutView`) al recibir `/channel`.
98
- - Checkout: ajuste de `checkoutView` (sin persistencia) y sincronización con la config del canal.
99
- - Implementación del nuevo diseño del checkout single (UI/UX y lógica de flujo).
100
- - Envíos (single): payload incluye contrato/sucursal, y el precio se muestra tachado cuando el envío es gratis.
101
- - Se agregan tests unitarios para checkout y servicios relacionados.
102
- # Version 0.5.7
103
- - Al agregar nueva direccion de facturación se deja setteado el email para los usuarios ya autenticados.
104
- - En el checkout se agrega la posibilidad de usar una dirección de facturación ya creada o crearlas desde cero.
105
- - Se modifica la forma de enviar la info de direcciones en el endpoint para que backend reciba las dos opciones.
106
- # Version 0.5.6
107
- - fix(filters): improve selection handling and breadcrumb display for attributes
108
- # Version 0.5.5
109
- - `decidirFormEc.html` agrega guard para evitar doble submit (`isSubmitting`) y bloqueo de reintentos mientras se procesa el pago.
110
- - En éxito se mantiene el spinner para evitar reintentos hasta que se cierre la modal.
111
- - En error se libera el bloqueo y se oculta el spinner para permitir reintentar.
112
- # Version 0.5.4
113
- - `block-newsletter-ec` evita envíos duplicados del formulario de newsletter mientras la request está en curso (`loading` guard).
114
- - Se refactoriza `sendForm` a `async/await` con `try/catch/finally` para centralizar manejo de errores y asegurar el reset de `loading`.
115
- - Limpieza menor del componente: se elimina import no utilizado y se ajustan llamadas async con `void`.
116
- # Version 0.5.3
117
- - Se modifica servicio de producto y paginacion porque el collection lanza endpoint de pagina 2 pero no la muestra y el resto si.
118
- # Version 0.5.2
119
- - Se agrega descrption2 al observable Product para recibirlo del endpoint.
120
- - Se modifica la funcion para limpiar la descripcion sin html ni css.
121
- # Version 0.5.1
122
- - `dataform-ec` prioriza el email del cliente activo cuando hay impersonación de vendedor.
123
- - `auth.interceptor` agrega el header `customer` en requests autenticadas para sostener la selección de cliente en checkout (address-book).
124
- # Version 0.5.0
125
- - Se modifica servicio de productos ya que en el collection solo mostraba los primeros traidos en el endpoint y no los que cargaban con la paginación.
126
- - Se agrega funcion en servicio de product-detail para vaciar el observable y que al entrar a la vista no cargue el producto que vimos anteriormente durante 2 segundos.
127
- - Runtime levanta bien los entornos tomando la configuracion de kubernetes.
128
- # Version 0.4.10
129
- - Se agrega `addAllToCart` en `CartService` y `bulkAddEnabled` en `CoreConstantsService` para habilitar agregado masivo, con selección y sincronización en `collection-ec` y `product-ec`.
130
- - `product-ec` y `cart-item-ec` unifican validación y clamp de cantidades (stock, `maximumItemsQuantity`, mínimos, máximos y múltiplos), actualizan el input final y muestran toasts cuando se exceden límites.
131
- - `CartService.validateQuantity` valida sobre la nueva cantidad del ítem para actualizaciones.
132
- - `collection-ec` valida stock acumulado en agregado masivo y muestra un toast con productos afectados; se agrega i18n `bulk-stock-insufficient` (es/en).
133
- - `ProductsService` centraliza el append de productos y escucha `nextProducts$` para paginación; `PaginationService` deja de reinyectar `nextProducts$` desde `getData` para evitar duplicados en la collection.
134
- - `auth.interceptor` ahora maneja 401/403 con logout y redirección a `/auth/login`.
135
- # Version 0.4.9
136
- - Se agrega el header `customer` al interceptor de auth para sostener la impersonación en checkout.
137
- - Se evita la dependencia directa de `AuthService` en el interceptor para prevenir ciclos DI en SSR.
138
- - Se agrega el dashboard de vendedores con búsqueda, ordenamiento e impersonación de clientes.
139
- - Se endurece el ordenamiento de clientes para evitar errores con datos incompletos.
140
- - Se normaliza el uso de storage para `CHANNELSELLER` al cambiar de cliente.
141
- - Se agrega `fuse.js` como peer dependency.
142
- # Version 0.4.8
143
- - se cambio las variables platformId, de privadas a protected
144
- # Version 0.4.7
145
- - AddressingService ahora escucha el canal activo y ajusta `modeSelectAddress` según `headquarterSelectionOnly`.
146
- - DataformEcComponent expone `modeSelectAddress` vía getter para reflejar cambios de canal en el formulario.
147
- - Limpieza de código comentado en ChannelService tras mover la configuración del modo de selección.
148
- # Version 0.4.6
149
- - Primera direccion en checkout predeterminada por defecto
150
- # Version 0.4.2
151
- - Se añade platformID en contact para comprobacion ssr.
152
- # Version 0.4.1
153
- - Se agrega `PriceVisibilityService` para centralizar la visibilidad global de precios (canal + login + cuenta corriente).
154
- - Se refactorizan componentes para evitar condiciones largas de precios y reutilizar el gate global.
155
- - Se agrega `CreditAccountBannerEcComponent` (standalone) para mostrar créditos/límite con barra de progreso.
156
- - Se agregan keys de i18n para el banner: `credit-account-banner.*` (es/en/fr/pr/ct/gl).
157
- - Cuenta corriente: mejoras en validaciones de crédito y selección de método de pago (bloqueo cuando no corresponde y mensaje en success para `balance_in_account`).
158
- - Ajustes en `CartService` y `ProductDetailService` para validar stock/cantidad y créditos antes de agregar al carrito.
159
- # Version 0.4.0
160
- - Ajuste en `verifyValidate`: los métodos de pago manuales (transferencia/offline) vuelven a finalizar el checkout aunque no emitan evento, manteniendo el flujo de Mercado Pago sin cambios.
161
- - eliminar logs
162
- - Ajuste adicional en el flujo de Mercado Pago para móviles: se ejecutan los eventos de estado dentro de NgZone para asegurar la correcta detección de cambios y avanzar al siguiente paso del checkout.
163
- - Mejora en el flujo de pago con Mercado Pago en dispositivos móviles: se agrega fallback de redirección cuando `window.close()` es ignorado, asegurando que la pantalla de resultado no quede bloqueada en el catch.
164
- - Se modifica runtimeconfig ya que toma un canal por defecto.
165
- - Se mergea con la rama de deployment_ssr
166
- - Se añade en carrito sidebar product detail y producto las validaciones necesarias para que compruebe si hay un maximo , un minimo o multiplo.
167
- - Se optimizar y comenta codigo para que el runtime no sea un bucle y se haga antes de la primera carga
168
- - Se modifican servicios y componentes para que funcione el deploy SSR.
169
- - Se elimina uso de DOM ya que en SSR tira error.
170
- - Se agrega if platformID en mas archivos para que no de error al navegar elden.
171
- - Ya estaba contemplado isVisible en el componente `menu-ec.component`, pero se adapto para que devuelva solo las categorias, atributos y secciones visibles y no tener que filtrarlos en el frontend.
172
- - Se agrego el isVisible de las categorias a su interfaz
173
- # Version 0.3.22
174
- - Limpieza de importaciones innecesarias en `header-ec.component` para reducir peso y evitar dependencias sin uso.
175
- - Se reactiva la inicialización de herramientas de analytics (Facebook Pixel, Google Analytics, GTM, Metricool y Doppler) en el core Angular 18 a partir de los parámetros del endpoint `/parameters`.
176
- - Se respeta la nomenclatura de glosario `facebook_<canal>_id`, `google_<canal>_id`, `gtm_<canal>_id`, `metricool_<canal>_id`, `doppler_<canal>_id`, usando como fallback los códigos genéricos `<servicio>_id` cuando no exista el específico por canal.
177
- - Se agrega `IS_PRODUCTION` en `ApiConstantsService` y se limita la inicialización de analytics sólo a entornos productivos.
178
- # Version 0.3.20
179
- - Refactor completo de filtros, paginación y productos para soportar correctamente SSR (Server-Side Rendering).
180
- - Unificación del flujo de filtrado: ahora toda la lógica se basa en URL (params + queryParams) y se hidrata desde `FiltersService.hydrateFromRoute()`.
181
- - Se optimiza el runtime inicial para evitar ciclos innecesarios y cargar filtros antes del primer render.
182
- - Se centraliza la sincronización de rangos de precio (filters pagination products).
183
- # Version 0.3.17
184
- - En el `header-ec.component.ts` se hacen public algunos injectores para poder usarlo en el `header.component.ts` de los frontends.
185
- # Version 0.3.16
186
- - Se añaden traducciones al core
187
- # Version 0.3.15
188
- - Refactor del flujo de pago con Mercado Pago (redirect/popup unificado).
189
- - Compatibilidad completa con mobile y desktop: cierre automático de pestaña o redirección según navegador.
190
- - Nuevo control de estado visual (idle / pagando / finalizando) para evitar repeticiones o confusión del usuario.
191
- - Simplificación de `catch` (RedsysCatchEcComponent) y limpieza de código legacy.
192
- # Version 0.3.13
193
- - Se hace estable 0.3.12-beta.1.
194
- - Se hace estable feature/pop-up-inicial.
195
- - Se hace estable feature/add-product-block.
196
- - Se hace estable feature/logged,showpassword,otros.
197
- # Version 0.3.12-beta.1
198
- - Se añade ruta por si falla MP redirija y de error.
199
- # Version 0.3.11
200
- - se añade funcionalidad para ocultar categorias en header footer y filtros
201
- # Version 0.3.10
202
- - se añade funcionalidades para excluir paises en el formulario del proceso de compra
203
- # Version 0.3.9
204
- - mejorar la función hasParams para buscar primero el parametro con codigo exacto, sino parcial.
205
- # Version 0.3.8
206
- - Se cambia construccion de etiquetas META
207
- # Version 0.3.7
208
- - Se cambia construccion de etiquetas META
209
- # Version 0.3.6
210
- - Se cambia construccion de etiquetas META
211
- # Version 0.3.5
212
- - Se cambia construccion de etiquetas META
213
- # Version 0.3.4
214
- - Se cambia construccion de etiquetas META
215
- # Version 0.3.3
216
- - Se cambia construccion de etiquetas META
217
- # Version 0.3.2
218
- - Se cambia construccion de etiquetas META
219
- # Version 0.3.1
220
- - Se cambia construccion de etiquetas META
221
- # Version 0.3.0
222
- - HideTaxes en carrito (ocultar impuestos)
223
- - se fuerza a numero en las funciones pluss y less (+/-) para evitar que se concatene el 1 al darle al mas
224
- - en cart.service y order-utility.service se cambia para que el subtotal se guarde correctamente
225
- - se cambia la funcion updateAsociatedData del checkout.service para mostrar impuestos en el checkout
226
- # Version 0.2.29
227
- - Cambios en dataform para que no se autoseleccione la provincia ya que daba error.
228
- # Version 0.2.28
229
- - `product-detail-ec.component`: se incorpora resetReviewModal() para resetear el estado del modal de reseñas al cambiar de producto.
230
- # Version 0.2.27
231
- - traducciones y hideprice en `filters-ec` para ocultar rango de precio.
232
- # Version 0.2.26
233
- - Se implementa la funcionalidad de repetir pedido
234
- # Version 0.2.25
235
- - Se implementa una funcion que me devuelove si el producto tiene stock o no
236
- # Version 0.2.24
237
- - Se implementa funcionalidades para el recargo de pagina al hacer click en algun producto relacionado
238
- # Version 0.2.23
239
- - Ajustes en funcionalidad filtro atributos y cambios en variantes y vista producto en carrito.
240
- # Version 0.2.22
241
- - Ajustes de estilos y funcionalidad.
242
- # Version 0.2.21
243
- - No se enviaba info de metodo de envio en endpoint shipping-contract
244
- # Version 0.2.20
245
- - No permitia agregar cosas al carrito despues de hacer pedido.
246
- - Checkout se quedaba con los datos guardados al hacer 2 pedidos seguidos.
247
- # Version 0.2.19
248
- - Campo notas que respete check de backoffice.
249
- - Se corrije que carrito lanzaba endpoint duplicado y al recargar se perdia.
250
- # Version 0.2.18
251
- - Se implementa el check de ocultar precios para usuarios no logueados en el filter para el rango de precio
252
- - Se implementa en el metodo de envio la clase .active para el que el metodo seleccionado quede diferenciado
253
- # Version 0.2.17
254
- - Se implementa pipe safe url.
255
- - Se comentan console.log
256
- # Version 0.2.16
257
- - Se modifica funcionamiento del carrito con login y logout
258
- # Version 0.2.15
259
- - Se implementa decidir
260
- # Version 0.2.14
261
- - Se agrega hidePrice en product y en price en html
262
- # Version 0.2.13
263
- - Se agrega en los metodos de envio la descripcion
264
- - check ocultar precios en usuarios no logueados
265
- - check ocultar precios (hidePrice)
266
- # Version 0.2.12
267
- - Se agrega logia al app-price para funcion de mostrar precios logeados o no
268
- # Version 0.2.11
269
- - se cambia el block-banner-full para personalizar las flechas
270
- # Version 0.2.10
271
- - Se modifica las constantes de apiURL para probar.
272
- # Version 0.2.5
273
- - Se prueba el apiURL
274
- # Version 0.2.4
275
- - Se cambia para que en environment no sea obligatorio el apiURL
276
- # Version 0.2.3
277
- - Actualiza el manejo de precios y tasas en el servicio de detalles del producto para soportar la nueva estructura del backend.
1
+ # Version 0.6.12
2
+ - Collection: `ProductsService` aplica la separación de productos por variante también en la carga inicial, no sólo al paginar.
3
+ - Collection: la deduplicación de productos ahora usa una clave sensible a variante (`variant_id`/`currentOption.variantCode`), evitando que variantes del mismo producto se colapsen en una sola tarjeta.
4
+ - Variantes en listado: cuando `productWithUniqueVariant` está activo, cada tarjeta usa la imagen, stock, precio, precio tachado y variante seleccionada correspondientes a la variante materializada.
5
+ - Filtros dinámicos: al filtrar por opciones de variante (`optionCodes`), el listado conserva sólo las variantes que coinciden con los filtros seleccionados.
6
+ - Stock: si una variante filtrada no tiene stock o no puede materializarse, ya no se reemplaza por otra variante disponible del mismo producto.
7
+ - Bulk add: las tarjetas materializadas por variante mantienen la variante seleccionada como primera opción del producto para que el agregado masivo valide stock y agregue el SKU correcto.
8
+ - Filtros: `FiltersService.hydrateFromRoute()` preserva opciones dinámicas ya cargadas al volver desde detalle a la misma collection, evitando que desaparezcan filtros como color o talle cuando la URL no cambia.
9
+ - Tests: se agrega cobertura para la preservación de filtros dinámicos al rehidratar la misma ruta.
10
+ - Variantes: `variants-ec` ahora muestra las opciones como selector desplegable, con selección única, sin deselección y con estados visuales para opciones sin stock.
11
+ - Product detail: se soporta `?variant=CODIGO` para precargar la variante seleccionada, actualizar imágenes/precio/stock y mantener el estado al recargar o compartir la URL.
12
+ - Product detail: el botón de agregar al carrito queda deshabilitado y muestra loading mientras espera la respuesta del carrito.
13
+ - Carrito/sidebar: los links de items con variante apuntan al producto base con `?variant`, y el detalle de variantes usa la variante correcta del item.
14
+ - Carrito: al sumar un producto existente se usa la variante exacta y se evita que el loading quede activo si falla la validación.
15
+ - Productos visitados: se agrega `RecentlyViewedService` para guardar hasta 5 productos vistos junto con su variante opcional en browser storage.
16
+ - Formularios: se agrega `LowercaseEmailDirective` para normalizar inputs de email a minúsculas.
17
+ - Moneda: el pipe de moneda reacciona a cambios de moneda activa y respeta metadatos actualizados de posición y decimales.
18
+ - API: `ConnectionService` normaliza URLs relativas/absolutas para evitar rutas mal concatenadas.
19
+ - Alertas: `ToastService` muestra botón de cierre y barra de progreso por defecto en todos los mensajes.
20
+ - Product detail: se agrega el componente `ProductCommentEcComponent` para capturar notas por producto cuando `enableFieldNotesInArticleFile` está activo.
21
+ - Carrito/sidebar/pedidos: las notas del item se muestran de forma truncada y se preservan al actualizar cantidades.
22
+ - Carrito: `CartService` envía y mantiene `comments` al agregar, repetir o actualizar items del carrito.
23
+ # Version 0.6.11
24
+ - Collection: se agrega `PaginationService.refreshCurrentQuery()` para forzar recarga del listado al reingresar a la misma ruta/filtros, incluso cuando la URL final no cambió.
25
+ - `collection-ec`: luego de `hydrateFromRoute(...)` dispara `refreshCurrentQuery()` para evitar reutilización de resultados previos entre navegaciones `collection -> home -> collection`.
26
+ - `PaginationService.paginationData$`: se incorpora `refreshNonce` al pipeline (`combineLatest`) para invalidar el `distinctUntilChanged` cuando se requiere refresh explícito.
27
+ - `PaginationService.paginationData$`: `shareReplay` pasa a `shareReplay({ bufferSize: 1, refCount: true })` para mejorar el ciclo de suscripción de consumidores activos.
28
+ # Version 0.6.10
29
+ - Checkout: se centraliza el manejo de errores de stock agotado (`450` / `out_of_stock`) para mostrar al usuario el mensaje devuelto por backend.
30
+ - Checkout single: al seleccionar método de envío con `/shipping-option`, si backend responde falta de stock, se muestra feedback y no se avanza al siguiente paso.
31
+ - Checkout single: al seleccionar método de pago con `/payment/{method}`, si backend responde falta de stock, se notifica al usuario y no queda persistido el método seleccionado.
32
+ - Checkout legacy: selección de envío y contrato ahora notifican errores de stock en lugar de fallar silenciosamente.
33
+ - Finalización de checkout: `/complete` queda preparado para mostrar el mensaje de falta de stock cuando backend devuelva `out_of_stock`, evitando duplicar toasts en los componentes.
34
+ - `PaymentService.putPayment` vuelve a propagar el error HTTP original para que los componentes puedan interpretar correctamente el payload del backend.
35
+ - Se agregan tests focalizados para el manejo de `out_of_stock` en checkout service, envío y pago.
36
+ # Version 0.6.9
37
+ - Categorías: `OptionsService.getCategories()` ahora expone solo taxons visibles (`isVisible !== false`) para menús, footer y filtros, filtrando recursivamente hijos ocultos.
38
+ - Categorías ocultas: se conserva internamente el árbol completo de taxons para que los deep links a `/collection/categories/{slug}` sigan resolviendo el `code` y consultando productos al backend.
39
+ - `CategoryFilter`: cuando una categoría oculta llega por URL directa o por `?category=CODE`, mantiene el filtro interno aunque no se muestre como opción seleccionable en la UI.
40
+ # Version 0.6.8
41
+ - Checkout legacy: se refuerza el avance real por pasos para que envío y pago no queden visualmente listos antes de que respondan los endpoints del backend.
42
+ - Envío legacy: `Siguiente` ahora puede mostrar feedback al usuario cuando el paso sigue incompleto y falta seleccionar una opción válida de envío.
43
+ - `ShipmentService` vuelve segura la autoselección: sólo persiste contrato automáticamente cuando backend devuelve una única alternativa real; si hay varias, exige selección explícita.
44
+ - Envío y pago distinguen estado de carga vs estado vacío, mostrando loaders mientras esperan `/shipping`, costos/contratos de envío, `/payment` y la validación de `/payment/{metodo}`.
45
+ - Se agrega `no-payment-methods` a i18n y se actualizan tests focalizados de checkout para cubrir estos estados.
46
+ # Version 0.6.7
47
+ - `credit-account-banner-ec`: los montos de cuenta corriente ahora se formatean con el locale configurado en el canal, corrigiendo separadores de miles y decimales.
48
+ - Filtros dinámicos: se vuelve a soportar la carga desde `options` en `product-search`, preservando selección e hidratación desde `optionCodes`.
49
+ - Cuenta corriente: `cart.service` y `product-detail.service` ahora respetan `allowExceedBalance` también al sumar cantidades en carrito y al reintentar agregar desde detalle/listado.
50
+ - Checkout single mobile: se aumenta la prioridad visual de la barra flotante de resumen/finalización para que quede por encima de widgets flotantes externos como WhatsApp.
51
+ - `checkout-ec.component.scss`: la barra `summary-mobile-bar` ahora usa la variable CSS `--ec-checkout-summary-mobile-z-index` con fallback `10040`.
52
+ - `checkout-ec.component.scss`: el overlay de carga ahora usa la variable CSS `--ec-checkout-overlay-z-index` con fallback `10050` para mantenerse por encima del resumen.
53
+ - Checkout single mobile: cuando hay un modal abierto (`.modal-open`), la barra de resumen baja a `--ec-checkout-summary-mobile-z-index-modal-open` con fallback `1030` para no interferir con overlays/modales.
54
+ - `cart.service`: el reset de carrito ahora marca la inicialización cuando llega la nueva respuesta y el logout limpia siempre en transición real `logueado -> deslogueado`, incluso si antes hubo cambio de cliente en seller-dashboard.
55
+ - `auth.service`: al cerrar sesión se limpia también el cliente impersonado en memoria (`_customer`), evitando que queden rastros de seller impersonation en header, permisos y requests posteriores.
56
+ - `menu-ec`: el logout deja de recargar la página completa y navega por router a `/home`, evitando que seller-dashboard permanezca visible mientras resuelve un reload duro.
57
+ - `auth.service`: agrega `resolveHomeNavigation()` para centralizar la resolución del home configurado por cada frontend y reutilizarla en login/logout sin hardcodes por componente.
58
+ - `menu-ec` y `account-ec`: el logout delega en `resolveHomeNavigation()` con fallback a `/home`, respetando frontends que configuren un resolver propio y manteniendo compatibilidad con paths explícitos en cuenta.
59
+ - `seller-dashboard-container-ec`: al cambiar de cliente desde el dashboard de vendedor ahora se ejecuta `clearAndResetCustomerCart()` para recargar carrito y `balanceCustomer` (cuenta corriente) con el cliente activo.
60
+ - `header-ec`: `getGreetingName` prioriza el cliente impersonado (`AuthService.getCustomer()`), mostrando su `username/email` (o nombre/apellido como fallback) en lugar del usuario vendedor cuando corresponde.
61
+ # Version 0.6.6
62
+ - Se corrige bug en registro que lanzaba mensaje erroneo si no llegaba la info desde el endpoint de channel.
63
+ - Se agregan traducciones de register-success.
64
+ - Se corrige bug que no permite avanzar al retroceder desde metodo de envio a direcciones y volver a avanzar.
65
+ - Ajuste para que no salte mensaje el monto minimo aleatorio.
66
+ - Checkout legacy: al cambiar de método de envío se invalida la selección anterior y `Siguiente` vuelve a quedar deshabilitado hasta confirmar un nuevo contrato.
67
+ - `ShipmentService.setMethod` deja de persistir automáticamente el primer contrato disponible y espera una selección explícita del usuario antes de marcar el paso como válido.
68
+ - `shipment-ec` agrega una guarda en TS para impedir el avance si el paso de envío no quedó realmente listo, aunque el botón sea forzado desde el HTML.
69
+ - En el listado de contratos de envío se elimina el marcado visual automático de la primera opción para evitar que parezca seleccionada sin confirmación real.
70
+ # Version 0.6.5
71
+ - Eliminación de overrides redundantes en `BlockBannerBox`, `BlockBannerFull`, `RelatedProducts` y `ProductDetail`.
72
+ - Corrección de accesos a propiedades `private` en subclases del core.
73
+ - Checkout (legacy y single): las opciones de métodos de envío ahora muestran siempre decimales, sin respetar `currency.withoutDecimal`.
74
+ - `shipment-ec.component.html` y `shipment-ec-single.component.html`: se fuerza `ecCurrencySymbol:'alwaysShowDecimals'` para mantener consistencia con el resumen del checkout.
75
+ # Version 0.6.4
76
+ - Checkout legacy: se evita avanzar de paso antes de que termine la sincronización del contrato de envío con `/shipping-contract`.
77
+ - `ShipmentService.setContract` ahora espera la respuesta del backend antes de actualizar el estado del checkout, evitando errores de navegación y condiciones de carrera.
78
+ - `dataform-ec`, `shipment-ec` y `payment-ec` sincronizan sus botones con los estados de carga globales y locales para bloquear reintentos y navegación durante requests asíncronas.
79
+ - En envío se mantienen visibles las opciones mientras carga, se bloquean radio buttons y botón `Anterior`, y el spinner pasa a mostrarse dentro de `Siguiente`.
80
+ - En pago se bloquean acciones sensibles (`Anterior` y botones de confirmación) mientras hay carga para evitar peticiones duplicadas en el flujo legacy.
81
+ # Version 0.6.3
82
+ - Formularios: `block-newsletter-ec` y `block-form-contact-ec` incorporan el honeypot `hp_email_verification` (prefijo `hp_`) y lo envían al backend para que pueda bloquear/bypassear solicitudes de bots.
83
+ # Version 0.6.2
84
+ - Checkout: `dataform-ec` ahora toma `checkoutRequiredFields.postalCode` desde `/shop-api/{canal}/countries` para definir la visibilidad y obligatoriedad del campo `postcode`.
85
+ - Si `checkoutRequiredFields.postalCode` viene en `true`, el campo código postal se muestra y se valida como obligatorio.
86
+ - Si `checkoutRequiredFields.postalCode` viene en `false`, el campo se oculta y se eliminan sus validaciones del formulario.
87
+ - Se mantiene compatibilidad con backends legacy: si `checkoutRequiredFields.postalCode` no viene en la respuesta, se conserva el comportamiento anterior basado en `viewForms.postcode`.
88
+ - Se agregan tests unitarios para cubrir el override del backend nuevo y el fallback legacy.
89
+ # Version 0.6.1
90
+ - Checkout single: soporte estable de dirección de facturación independiente, con selección de dirección guardada o carga de una nueva, alineado al flujo legacy.
91
+ - Facturación: visualización completa de la dirección seleccionada y compatibilidad con provincias y zonas de países no AR mediante `provinceCode`.
92
+ - Envíos (single): payload completo en `/shipping-option` para compatibilidad con contrato y sucursal del flujo legacy.
93
+ - Productos, filtros y collection: mejoras en sincronización de atributos dinámicos, rango de precios, navegación por categoría y estados de carga del listado.
94
+ - Servicios base (`ChannelService`, `OptionsService`, `ParametersService`, `ProductsService`): mejoras de estabilidad para evitar requests duplicados, concurrencia innecesaria y estados bloqueados.
95
+ - Precios y cantidades: unificación de visibilidad de precios y validación de configuraciones inválidas de múltiplos en producto.
96
+ - Formularios y UX: prevención de doble submit en registro y reset de contraseña, mejoras en el buscador/header, scroll automático al listado y ajustes visuales en cart, order detail y block products.
97
+ - Traducciones y validaciones: textos de ordenamiento unificados y validación ampliada de `phoneNumber` en registro mayorista.
98
+ # Version 0.6.0
99
+ - Se incorpora `embla-carousel-ec` como componente base reutilizable para carruseles (navegación, paginación, estado y autoplay).
100
+ - Se migra el HTML de carrusel de `block-products-ec`, `block-banner-full-ec` y `block-banner-box-ec` a Embla.
101
+ - Se mantiene compatibilidad legacy para frontends que heredan y aún usan lógica de Swiper en TS (hooks, `swiperOptions` y bridges de inicialización).
102
+ - Se agregan utilidades compartidas para mapear configuración legacy (`SwiperOptions`) a Embla, incluyendo breakpoints y estilo responsive de slides.
103
+ - Se exporta el nuevo módulo `embla-carousel-ec` desde `ec-components/index.ts`.
104
+ - Se ajustan manifiestos de paquete para incluir dependencias de Embla y permitir su empaquetado en la librería.
105
+ - `block-products-ec`, `block-banner-full-ec` y `block-banner-box-ec` ahora preservan overrides de frontend en Embla (`emblaOptions`, `emblaPlugins`, `emblaSlideStyle`) y evitan que el core los pise al recalcular configuración.
106
+ - Se agregan referencias internas de valores por defecto y último estado core para diferenciar entre configuración base y personalizaciones aplicadas desde frontends heredados.
107
+ - Se incorporan guards (`hasFrontendEmblaOptionsOverride`, `hasFrontendEmblaPluginsOverride`, `hasFrontendEmblaSlideStyleOverride`) para aplicar configuración de core sólo cuando no existe override externo.
108
+ # Version 0.5.9
109
+ - Se incorporan `ProductImageZoomEcComponent`, `ProductMobileImageViewerEcComponent` y `ProductImageExperienceEcComponent`.
110
+ - `widgets-ec/index.ts` ahora exporta estos tres componentes para su uso desde la librería.
111
+ - `ProductImageExperienceEcComponent` centraliza el flujo de imagen (zoom desktop con panel externo + visor mobile fullscreen) y sincroniza índice activo con `activeIndexChange`.
112
+ - Se agrega Input de configuración por objetos: `zoomConfig` y `mobileViewerConfig`, manteniendo compatibilidad con inputs legacy.
113
+ - `ProductMobileImageViewerEcComponent` suma `attachToBody`, `activeIndex`/`activeIndexChange`, cierre por historial/escape/backdrop y flechas desktop configurables.
114
+ - `product-detail-ec.component.ts` mejora `sanitizedHtml` filtrando `web-share` en `allow` de iframes y agrega utilidades para control de `swiper` e interacciones hover.
115
+ # Version 0.5.8
116
+ - Checkout: al confirmar dirección (`/headquarter` y `/address`) se actualiza inmediatamente el resumen asociado para reflejar impuestos y totales sin esperar el paso de envío.
117
+ - Legacy con envío y pago omitidos: se separa sincronización de dirección y finalización. Primer click sincroniza con backend y actualiza resumen; segundo click habilita/ejecuta `finish-checkout`.
118
+ - En legacy de un solo paso, si cambian los totales tras sincronizar dirección, se fuerza scroll al inicio para que el usuario vea el resumen actualizado antes de finalizar.
119
+ - `ChannelService` aplica la configuración completa del canal (incluye `checkoutView`) al recibir `/channel`.
120
+ - Checkout: ajuste de `checkoutView` (sin persistencia) y sincronización con la config del canal.
121
+ - Implementación del nuevo diseño del checkout single (UI/UX y lógica de flujo).
122
+ - Envíos (single): payload incluye contrato/sucursal, y el precio se muestra tachado cuando el envío es gratis.
123
+ - Se agregan tests unitarios para checkout y servicios relacionados.
124
+ # Version 0.5.7
125
+ - Al agregar nueva direccion de facturación se deja setteado el email para los usuarios ya autenticados.
126
+ - En el checkout se agrega la posibilidad de usar una dirección de facturación ya creada o crearlas desde cero.
127
+ - Se modifica la forma de enviar la info de direcciones en el endpoint para que backend reciba las dos opciones.
128
+ # Version 0.5.6
129
+ - fix(filters): improve selection handling and breadcrumb display for attributes
130
+ # Version 0.5.5
131
+ - `decidirFormEc.html` agrega guard para evitar doble submit (`isSubmitting`) y bloqueo de reintentos mientras se procesa el pago.
132
+ - En éxito se mantiene el spinner para evitar reintentos hasta que se cierre la modal.
133
+ - En error se libera el bloqueo y se oculta el spinner para permitir reintentar.
134
+ # Version 0.5.4
135
+ - `block-newsletter-ec` evita envíos duplicados del formulario de newsletter mientras la request está en curso (`loading` guard).
136
+ - Se refactoriza `sendForm` a `async/await` con `try/catch/finally` para centralizar manejo de errores y asegurar el reset de `loading`.
137
+ - Limpieza menor del componente: se elimina import no utilizado y se ajustan llamadas async con `void`.
138
+ # Version 0.5.3
139
+ - Se modifica servicio de producto y paginacion porque el collection lanza endpoint de pagina 2 pero no la muestra y el resto si.
140
+ # Version 0.5.2
141
+ - Se agrega descrption2 al observable Product para recibirlo del endpoint.
142
+ - Se modifica la funcion para limpiar la descripcion sin html ni css.
143
+ # Version 0.5.1
144
+ - `dataform-ec` prioriza el email del cliente activo cuando hay impersonación de vendedor.
145
+ - `auth.interceptor` agrega el header `customer` en requests autenticadas para sostener la selección de cliente en checkout (address-book).
146
+ # Version 0.5.0
147
+ - Se modifica servicio de productos ya que en el collection solo mostraba los primeros traidos en el endpoint y no los que cargaban con la paginación.
148
+ - Se agrega funcion en servicio de product-detail para vaciar el observable y que al entrar a la vista no cargue el producto que vimos anteriormente durante 2 segundos.
149
+ - Runtime levanta bien los entornos tomando la configuracion de kubernetes.
150
+ # Version 0.4.10
151
+ - Se agrega `addAllToCart` en `CartService` y `bulkAddEnabled` en `CoreConstantsService` para habilitar agregado masivo, con selección y sincronización en `collection-ec` y `product-ec`.
152
+ - `product-ec` y `cart-item-ec` unifican validación y clamp de cantidades (stock, `maximumItemsQuantity`, mínimos, máximos y múltiplos), actualizan el input final y muestran toasts cuando se exceden límites.
153
+ - `CartService.validateQuantity` valida sobre la nueva cantidad del ítem para actualizaciones.
154
+ - `collection-ec` valida stock acumulado en agregado masivo y muestra un toast con productos afectados; se agrega i18n `bulk-stock-insufficient` (es/en).
155
+ - `ProductsService` centraliza el append de productos y escucha `nextProducts$` para paginación; `PaginationService` deja de reinyectar `nextProducts$` desde `getData` para evitar duplicados en la collection.
156
+ - `auth.interceptor` ahora maneja 401/403 con logout y redirección a `/auth/login`.
157
+ # Version 0.4.9
158
+ - Se agrega el header `customer` al interceptor de auth para sostener la impersonación en checkout.
159
+ - Se evita la dependencia directa de `AuthService` en el interceptor para prevenir ciclos DI en SSR.
160
+ - Se agrega el dashboard de vendedores con búsqueda, ordenamiento e impersonación de clientes.
161
+ - Se endurece el ordenamiento de clientes para evitar errores con datos incompletos.
162
+ - Se normaliza el uso de storage para `CHANNELSELLER` al cambiar de cliente.
163
+ - Se agrega `fuse.js` como peer dependency.
164
+ # Version 0.4.8
165
+ - se cambio las variables platformId, de privadas a protected
166
+ # Version 0.4.7
167
+ - AddressingService ahora escucha el canal activo y ajusta `modeSelectAddress` según `headquarterSelectionOnly`.
168
+ - DataformEcComponent expone `modeSelectAddress` vía getter para reflejar cambios de canal en el formulario.
169
+ - Limpieza de código comentado en ChannelService tras mover la configuración del modo de selección.
170
+ # Version 0.4.6
171
+ - Primera direccion en checkout predeterminada por defecto
172
+ # Version 0.4.2
173
+ - Se añade platformID en contact para comprobacion ssr.
174
+ # Version 0.4.1
175
+ - Se agrega `PriceVisibilityService` para centralizar la visibilidad global de precios (canal + login + cuenta corriente).
176
+ - Se refactorizan componentes para evitar condiciones largas de precios y reutilizar el gate global.
177
+ - Se agrega `CreditAccountBannerEcComponent` (standalone) para mostrar créditos/límite con barra de progreso.
178
+ - Se agregan keys de i18n para el banner: `credit-account-banner.*` (es/en/fr/pr/ct/gl).
179
+ - Cuenta corriente: mejoras en validaciones de crédito y selección de método de pago (bloqueo cuando no corresponde y mensaje en success para `balance_in_account`).
180
+ - Ajustes en `CartService` y `ProductDetailService` para validar stock/cantidad y créditos antes de agregar al carrito.
181
+ # Version 0.4.0
182
+ - Ajuste en `verifyValidate`: los métodos de pago manuales (transferencia/offline) vuelven a finalizar el checkout aunque no emitan evento, manteniendo el flujo de Mercado Pago sin cambios.
183
+ - eliminar logs
184
+ - Ajuste adicional en el flujo de Mercado Pago para móviles: se ejecutan los eventos de estado dentro de NgZone para asegurar la correcta detección de cambios y avanzar al siguiente paso del checkout.
185
+ - Mejora en el flujo de pago con Mercado Pago en dispositivos móviles: se agrega fallback de redirección cuando `window.close()` es ignorado, asegurando que la pantalla de resultado no quede bloqueada en el catch.
186
+ - Se modifica runtimeconfig ya que toma un canal por defecto.
187
+ - Se mergea con la rama de deployment_ssr
188
+ - Se añade en carrito sidebar product detail y producto las validaciones necesarias para que compruebe si hay un maximo , un minimo o multiplo.
189
+ - Se optimizar y comenta codigo para que el runtime no sea un bucle y se haga antes de la primera carga
190
+ - Se modifican servicios y componentes para que funcione el deploy SSR.
191
+ - Se elimina uso de DOM ya que en SSR tira error.
192
+ - Se agrega if platformID en mas archivos para que no de error al navegar elden.
193
+ - Ya estaba contemplado isVisible en el componente `menu-ec.component`, pero se adapto para que devuelva solo las categorias, atributos y secciones visibles y no tener que filtrarlos en el frontend.
194
+ - Se agrego el isVisible de las categorias a su interfaz
195
+ # Version 0.3.22
196
+ - Limpieza de importaciones innecesarias en `header-ec.component` para reducir peso y evitar dependencias sin uso.
197
+ - Se reactiva la inicialización de herramientas de analytics (Facebook Pixel, Google Analytics, GTM, Metricool y Doppler) en el core Angular 18 a partir de los parámetros del endpoint `/parameters`.
198
+ - Se respeta la nomenclatura de glosario `facebook_<canal>_id`, `google_<canal>_id`, `gtm_<canal>_id`, `metricool_<canal>_id`, `doppler_<canal>_id`, usando como fallback los códigos genéricos `<servicio>_id` cuando no exista el específico por canal.
199
+ - Se agrega `IS_PRODUCTION` en `ApiConstantsService` y se limita la inicialización de analytics sólo a entornos productivos.
200
+ # Version 0.3.20
201
+ - Refactor completo de filtros, paginación y productos para soportar correctamente SSR (Server-Side Rendering).
202
+ - Unificación del flujo de filtrado: ahora toda la lógica se basa en URL (params + queryParams) y se hidrata desde `FiltersService.hydrateFromRoute()`.
203
+ - Se optimiza el runtime inicial para evitar ciclos innecesarios y cargar filtros antes del primer render.
204
+ - Se centraliza la sincronización de rangos de precio (filters pagination products).
205
+ # Version 0.3.17
206
+ - En el `header-ec.component.ts` se hacen public algunos injectores para poder usarlo en el `header.component.ts` de los frontends.
207
+ # Version 0.3.16
208
+ - Se añaden traducciones al core
209
+ # Version 0.3.15
210
+ - Refactor del flujo de pago con Mercado Pago (redirect/popup unificado).
211
+ - Compatibilidad completa con mobile y desktop: cierre automático de pestaña o redirección según navegador.
212
+ - Nuevo control de estado visual (idle / pagando / finalizando) para evitar repeticiones o confusión del usuario.
213
+ - Simplificación de `catch` (RedsysCatchEcComponent) y limpieza de código legacy.
214
+ # Version 0.3.13
215
+ - Se hace estable 0.3.12-beta.1.
216
+ - Se hace estable feature/pop-up-inicial.
217
+ - Se hace estable feature/add-product-block.
218
+ - Se hace estable feature/logged,showpassword,otros.
219
+ # Version 0.3.12-beta.1
220
+ - Se añade ruta por si falla MP redirija y de error.
221
+ # Version 0.3.11
222
+ - se añade funcionalidad para ocultar categorias en header footer y filtros
223
+ # Version 0.3.10
224
+ - se añade funcionalidades para excluir paises en el formulario del proceso de compra
225
+ # Version 0.3.9
226
+ - mejorar la función hasParams para buscar primero el parametro con codigo exacto, sino parcial.
227
+ # Version 0.3.8
228
+ - Se cambia construccion de etiquetas META
229
+ # Version 0.3.7
230
+ - Se cambia construccion de etiquetas META
231
+ # Version 0.3.6
232
+ - Se cambia construccion de etiquetas META
233
+ # Version 0.3.5
234
+ - Se cambia construccion de etiquetas META
235
+ # Version 0.3.4
236
+ - Se cambia construccion de etiquetas META
237
+ # Version 0.3.3
238
+ - Se cambia construccion de etiquetas META
239
+ # Version 0.3.2
240
+ - Se cambia construccion de etiquetas META
241
+ # Version 0.3.1
242
+ - Se cambia construccion de etiquetas META
243
+ # Version 0.3.0
244
+ - HideTaxes en carrito (ocultar impuestos)
245
+ - se fuerza a numero en las funciones pluss y less (+/-) para evitar que se concatene el 1 al darle al mas
246
+ - en cart.service y order-utility.service se cambia para que el subtotal se guarde correctamente
247
+ - se cambia la funcion updateAsociatedData del checkout.service para mostrar impuestos en el checkout
248
+ # Version 0.2.29
249
+ - Cambios en dataform para que no se autoseleccione la provincia ya que daba error.
250
+ # Version 0.2.28
251
+ - `product-detail-ec.component`: se incorpora resetReviewModal() para resetear el estado del modal de reseñas al cambiar de producto.
252
+ # Version 0.2.27
253
+ - traducciones y hideprice en `filters-ec` para ocultar rango de precio.
254
+ # Version 0.2.26
255
+ - Se implementa la funcionalidad de repetir pedido
256
+ # Version 0.2.25
257
+ - Se implementa una funcion que me devuelove si el producto tiene stock o no
258
+ # Version 0.2.24
259
+ - Se implementa funcionalidades para el recargo de pagina al hacer click en algun producto relacionado
260
+ # Version 0.2.23
261
+ - Ajustes en funcionalidad filtro atributos y cambios en variantes y vista producto en carrito.
262
+ # Version 0.2.22
263
+ - Ajustes de estilos y funcionalidad.
264
+ # Version 0.2.21
265
+ - No se enviaba info de metodo de envio en endpoint shipping-contract
266
+ # Version 0.2.20
267
+ - No permitia agregar cosas al carrito despues de hacer pedido.
268
+ - Checkout se quedaba con los datos guardados al hacer 2 pedidos seguidos.
269
+ # Version 0.2.19
270
+ - Campo notas que respete check de backoffice.
271
+ - Se corrije que carrito lanzaba endpoint duplicado y al recargar se perdia.
272
+ # Version 0.2.18
273
+ - Se implementa el check de ocultar precios para usuarios no logueados en el filter para el rango de precio
274
+ - Se implementa en el metodo de envio la clase .active para el que el metodo seleccionado quede diferenciado
275
+ # Version 0.2.17
276
+ - Se implementa pipe safe url.
277
+ - Se comentan console.log
278
+ # Version 0.2.16
279
+ - Se modifica funcionamiento del carrito con login y logout
280
+ # Version 0.2.15
281
+ - Se implementa decidir
282
+ # Version 0.2.14
283
+ - Se agrega hidePrice en product y en price en html
284
+ # Version 0.2.13
285
+ - Se agrega en los metodos de envio la descripcion
286
+ - check ocultar precios en usuarios no logueados
287
+ - check ocultar precios (hidePrice)
288
+ # Version 0.2.12
289
+ - Se agrega logia al app-price para funcion de mostrar precios logeados o no
290
+ # Version 0.2.11
291
+ - se cambia el block-banner-full para personalizar las flechas
292
+ # Version 0.2.10
293
+ - Se modifica las constantes de apiURL para probar.
294
+ # Version 0.2.5
295
+ - Se prueba el apiURL
296
+ # Version 0.2.4
297
+ - Se cambia para que en environment no sea obligatorio el apiURL
298
+ # Version 0.2.3
299
+ - Actualiza el manejo de precios y tasas en el servicio de detalles del producto para soportar la nueva estructura del backend.