@gem-sdk/components 2.1.13-staging.2 → 2.1.13-staging.20

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 (146) hide show
  1. package/dist/cjs/article/components/ArticleImage.js +2 -1
  2. package/dist/cjs/article/components/ArticleList.js +1 -1
  3. package/dist/cjs/banner/components/hero-banner/index.liquid.js +12 -10
  4. package/dist/cjs/banner/components/hero-banner/utils/index.js +5 -3
  5. package/dist/cjs/builder.js +21 -1
  6. package/dist/cjs/collection/components/CollectionDescription.js +101 -7
  7. package/dist/cjs/collection/components/CollectionDescription.liquid.js +102 -9
  8. package/dist/cjs/collection/setting/CollectionDescription.js +128 -0
  9. package/dist/cjs/common/const.js +1 -1
  10. package/dist/cjs/form/components/textarea/TextArea.liquid.js +2 -2
  11. package/dist/cjs/image/components/AdaptiveImage.liquid.js +6 -5
  12. package/dist/cjs/image/components/Image.js +22 -3
  13. package/dist/cjs/image/components/Image.liquid.js +6 -5
  14. package/dist/cjs/image/components/NextImage.liquid.js +4 -3
  15. package/dist/cjs/image/components/NoDataImage.js +133 -0
  16. package/dist/cjs/image-comparison/components/CompareImage.liquid.js +7 -3
  17. package/dist/cjs/index.js +20 -0
  18. package/dist/cjs/index.liquid.js +22 -2
  19. package/dist/cjs/marquee/components/MarqueeBase.liquid.js +7 -26
  20. package/dist/cjs/product/components/ProductImagesV2/jsx/ProductImages.js +2 -9
  21. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductFeaturedImageCarousel.liquid.js +4 -4
  22. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductGalleryCarousel.liquid.js +2 -2
  23. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductGalleryGrid.liquid.js +4 -4
  24. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductImages.liquid.js +4 -4
  25. package/dist/cjs/tab/hooks/useTabInteraction.js +13 -9
  26. package/dist/cjs/text/components/Text.js +0 -1
  27. package/dist/cjs/third-party/components/AlsoBoughtCbb.js +32 -0
  28. package/dist/cjs/third-party/components/AlsoBoughtCbb.liquid.js +21 -0
  29. package/dist/cjs/third-party/components/BfSizeChartSizeGuide.js +32 -0
  30. package/dist/cjs/third-party/components/BfSizeChartSizeGuide.liquid.js +12 -0
  31. package/dist/cjs/third-party/components/EssentialAnnouncementBar.js +32 -0
  32. package/dist/cjs/third-party/components/EssentialAnnouncementBar.liquid.js +12 -0
  33. package/dist/cjs/third-party/components/EssentialCountdownTimerBar.js +32 -0
  34. package/dist/cjs/third-party/components/EssentialCountdownTimerBar.liquid.js +12 -0
  35. package/dist/cjs/third-party/components/EstimatedDeliveryDatePlus.js +32 -0
  36. package/dist/cjs/third-party/components/EstimatedDeliveryDatePlus.liquid.js +12 -0
  37. package/dist/cjs/third-party/components/GloColorSwatchvariantImage.js +32 -0
  38. package/dist/cjs/third-party/components/GloColorSwatchvariantImage.liquid.js +12 -0
  39. package/dist/cjs/third-party/components/HextomFreeShippingBar.js +32 -0
  40. package/dist/cjs/third-party/components/HextomFreeShippingBar.liquid.js +12 -0
  41. package/dist/cjs/third-party/components/OkendoReviewsLoyalty.js +32 -0
  42. package/dist/cjs/third-party/components/OkendoReviewsLoyalty.liquid.js +12 -0
  43. package/dist/cjs/third-party/components/StellarDeliveryDatePickup.js +32 -0
  44. package/dist/cjs/third-party/components/StellarDeliveryDatePickup.liquid.js +21 -0
  45. package/dist/cjs/third-party/components/TrustedsiteTrustBadges.js +32 -0
  46. package/dist/cjs/third-party/components/TrustedsiteTrustBadges.liquid.js +12 -0
  47. package/dist/cjs/third-party/configs/AlsoBoughtCbb.js +12 -0
  48. package/dist/cjs/third-party/configs/BfSizeChartSizeGuide.js +12 -0
  49. package/dist/cjs/third-party/configs/EssentialAnnouncementBar.js +12 -0
  50. package/dist/cjs/third-party/configs/EssentialCountdownTimerBar.js +12 -0
  51. package/dist/cjs/third-party/configs/EstimatedDeliveryDatePlus.js +12 -0
  52. package/dist/cjs/third-party/configs/GloColorSwatchvariantImage.js +12 -0
  53. package/dist/cjs/third-party/configs/HextomFreeShippingBar.js +12 -0
  54. package/dist/cjs/third-party/configs/OkendoReviewsLoyalty.js +12 -0
  55. package/dist/cjs/third-party/configs/StellarDeliveryDatePickup.js +12 -0
  56. package/dist/cjs/third-party/configs/TrustedsiteTrustBadges.js +12 -0
  57. package/dist/cjs/third-party/helpers/thirdParty.js +1 -1
  58. package/dist/cjs/third-party/next.js +51 -1
  59. package/dist/cjs/third-party/setting/AlsoBoughtCbb.js +127 -0
  60. package/dist/cjs/third-party/setting/BfSizeChartSizeGuide.js +131 -0
  61. package/dist/cjs/third-party/setting/EssentialAnnouncementBar.js +142 -0
  62. package/dist/cjs/third-party/setting/EssentialCountdownTimerBar.js +142 -0
  63. package/dist/cjs/third-party/setting/EstimatedDeliveryDatePlus.js +128 -0
  64. package/dist/cjs/third-party/setting/GloColorSwatchvariantImage.js +152 -0
  65. package/dist/cjs/third-party/setting/HextomFreeShippingBar.js +128 -0
  66. package/dist/cjs/third-party/setting/OkendoReviewsLoyalty.js +171 -0
  67. package/dist/cjs/third-party/setting/StellarDeliveryDatePickup.js +127 -0
  68. package/dist/cjs/third-party/setting/TrustedsiteTrustBadges.js +177 -0
  69. package/dist/cjs/third-party/setting/index.js +21 -1
  70. package/dist/cjs/video/components/HTML5Embed.js +2 -2
  71. package/dist/cjs/video/components/HTML5Embed.liquid.js +6 -3
  72. package/dist/cjs/video/components/LiteYouTubeEmbed.liquid.js +5 -3
  73. package/dist/esm/article/components/ArticleImage.js +2 -1
  74. package/dist/esm/article/components/ArticleList.js +1 -1
  75. package/dist/esm/banner/components/hero-banner/index.liquid.js +12 -10
  76. package/dist/esm/banner/components/hero-banner/utils/index.js +5 -3
  77. package/dist/esm/builder.js +21 -1
  78. package/dist/esm/collection/components/CollectionDescription.js +103 -9
  79. package/dist/esm/collection/components/CollectionDescription.liquid.js +103 -10
  80. package/dist/esm/collection/setting/CollectionDescription.js +128 -0
  81. package/dist/esm/common/const.js +1 -1
  82. package/dist/esm/form/components/textarea/TextArea.liquid.js +2 -2
  83. package/dist/esm/image/components/AdaptiveImage.liquid.js +6 -5
  84. package/dist/esm/image/components/Image.js +23 -4
  85. package/dist/esm/image/components/Image.liquid.js +6 -5
  86. package/dist/esm/image/components/NextImage.liquid.js +4 -3
  87. package/dist/esm/image/components/NoDataImage.js +129 -0
  88. package/dist/esm/image-comparison/components/CompareImage.liquid.js +7 -3
  89. package/dist/esm/index.js +10 -0
  90. package/dist/esm/index.liquid.js +11 -1
  91. package/dist/esm/marquee/components/MarqueeBase.liquid.js +7 -26
  92. package/dist/esm/product/components/ProductImagesV2/jsx/ProductImages.js +2 -9
  93. package/dist/esm/product/components/ProductImagesV2/liquid/ProductFeaturedImageCarousel.liquid.js +4 -4
  94. package/dist/esm/product/components/ProductImagesV2/liquid/ProductGalleryCarousel.liquid.js +2 -2
  95. package/dist/esm/product/components/ProductImagesV2/liquid/ProductGalleryGrid.liquid.js +4 -4
  96. package/dist/esm/product/components/ProductImagesV2/liquid/ProductImages.liquid.js +4 -4
  97. package/dist/esm/tab/hooks/useTabInteraction.js +14 -10
  98. package/dist/esm/text/components/Text.js +0 -1
  99. package/dist/esm/third-party/components/AlsoBoughtCbb.js +28 -0
  100. package/dist/esm/third-party/components/AlsoBoughtCbb.liquid.js +17 -0
  101. package/dist/esm/third-party/components/BfSizeChartSizeGuide.js +28 -0
  102. package/dist/esm/third-party/components/BfSizeChartSizeGuide.liquid.js +8 -0
  103. package/dist/esm/third-party/components/EssentialAnnouncementBar.js +28 -0
  104. package/dist/esm/third-party/components/EssentialAnnouncementBar.liquid.js +8 -0
  105. package/dist/esm/third-party/components/EssentialCountdownTimerBar.js +28 -0
  106. package/dist/esm/third-party/components/EssentialCountdownTimerBar.liquid.js +8 -0
  107. package/dist/esm/third-party/components/EstimatedDeliveryDatePlus.js +28 -0
  108. package/dist/esm/third-party/components/EstimatedDeliveryDatePlus.liquid.js +8 -0
  109. package/dist/esm/third-party/components/GloColorSwatchvariantImage.js +28 -0
  110. package/dist/esm/third-party/components/GloColorSwatchvariantImage.liquid.js +8 -0
  111. package/dist/esm/third-party/components/HextomFreeShippingBar.js +28 -0
  112. package/dist/esm/third-party/components/HextomFreeShippingBar.liquid.js +8 -0
  113. package/dist/esm/third-party/components/OkendoReviewsLoyalty.js +28 -0
  114. package/dist/esm/third-party/components/OkendoReviewsLoyalty.liquid.js +8 -0
  115. package/dist/esm/third-party/components/StellarDeliveryDatePickup.js +28 -0
  116. package/dist/esm/third-party/components/StellarDeliveryDatePickup.liquid.js +17 -0
  117. package/dist/esm/third-party/components/TrustedsiteTrustBadges.js +28 -0
  118. package/dist/esm/third-party/components/TrustedsiteTrustBadges.liquid.js +8 -0
  119. package/dist/esm/third-party/configs/AlsoBoughtCbb.js +8 -0
  120. package/dist/esm/third-party/configs/BfSizeChartSizeGuide.js +8 -0
  121. package/dist/esm/third-party/configs/EssentialAnnouncementBar.js +8 -0
  122. package/dist/esm/third-party/configs/EssentialCountdownTimerBar.js +8 -0
  123. package/dist/esm/third-party/configs/EstimatedDeliveryDatePlus.js +8 -0
  124. package/dist/esm/third-party/configs/GloColorSwatchvariantImage.js +8 -0
  125. package/dist/esm/third-party/configs/HextomFreeShippingBar.js +8 -0
  126. package/dist/esm/third-party/configs/OkendoReviewsLoyalty.js +8 -0
  127. package/dist/esm/third-party/configs/StellarDeliveryDatePickup.js +8 -0
  128. package/dist/esm/third-party/configs/TrustedsiteTrustBadges.js +8 -0
  129. package/dist/esm/third-party/helpers/thirdParty.js +1 -1
  130. package/dist/esm/third-party/next.js +51 -1
  131. package/dist/esm/third-party/setting/AlsoBoughtCbb.js +123 -0
  132. package/dist/esm/third-party/setting/BfSizeChartSizeGuide.js +127 -0
  133. package/dist/esm/third-party/setting/EssentialAnnouncementBar.js +138 -0
  134. package/dist/esm/third-party/setting/EssentialCountdownTimerBar.js +138 -0
  135. package/dist/esm/third-party/setting/EstimatedDeliveryDatePlus.js +124 -0
  136. package/dist/esm/third-party/setting/GloColorSwatchvariantImage.js +148 -0
  137. package/dist/esm/third-party/setting/HextomFreeShippingBar.js +124 -0
  138. package/dist/esm/third-party/setting/OkendoReviewsLoyalty.js +167 -0
  139. package/dist/esm/third-party/setting/StellarDeliveryDatePickup.js +123 -0
  140. package/dist/esm/third-party/setting/TrustedsiteTrustBadges.js +173 -0
  141. package/dist/esm/third-party/setting/index.js +224 -204
  142. package/dist/esm/video/components/HTML5Embed.js +2 -2
  143. package/dist/esm/video/components/HTML5Embed.liquid.js +6 -3
  144. package/dist/esm/video/components/LiteYouTubeEmbed.liquid.js +5 -3
  145. package/dist/types/index.d.ts +182 -8
  146. package/package.json +2 -2
@@ -29,7 +29,8 @@ const ArticleImage = ({ className, setting = {}, styles = {}, advanced, builderP
29
29
  setting: {
30
30
  ...setting,
31
31
  alt: image.alt,
32
- image
32
+ image,
33
+ disableNoDataState: true
33
34
  },
34
35
  styles: styles,
35
36
  advanced: advanced
@@ -14,7 +14,7 @@ const ArticleList = ({ styles, setting, className, children, builderProps })=>{
14
14
  const { articleSetting, numberOfArticle } = setting ?? {};
15
15
  const { articleIds, articlePickType } = articleSetting ?? {};
16
16
  const articlesQuery = {
17
- first: 10,
17
+ first: articleIds?.length ?? 50,
18
18
  where: {
19
19
  baseIDIn: [
20
20
  ...articleSetting?.articleIds ?? []
@@ -14,7 +14,7 @@ var NextImage_liquid = require('../../../image/components/NextImage.liquid.js');
14
14
  var getSrcSet = require('../../../image/helpers/getSrcSet.js');
15
15
  var helpers$1 = require('../../../image/components/helpers.js');
16
16
 
17
- const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, children, rawChildren, advanced, enableLazyloadImage = true })=>{
17
+ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, children, rawChildren, advanced, enableLazyLoadImage = true })=>{
18
18
  const { link, layout, verticalAlign, order, alignBanner, alt, title } = setting ?? {};
19
19
  const { background, overlayEnable, overlayColor, overlayOpacity, verticalGutter, contentWidth, hoverEffect, hoverEffectDuration, hoverEffectScale, cornerBg, borderBg, hasActiveShadow, shadowBg, sizeSetting, contentPadding } = styles ?? {};
20
20
  const enableParallax = setting?.enableParallax || false;
@@ -134,6 +134,7 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
134
134
  tablet: helpers$1.createBlurDataURL(srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.tablet?.height ?? srcSet?.desktop?.width ?? 0),
135
135
  mobile: helpers$1.createBlurDataURL(srcSet?.mobile?.width ?? srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.mobile?.height ?? srcSet?.tablet?.height ?? srcSet?.desktop?.width ?? 0)
136
136
  };
137
+ const enableLazyLoad = !setting?.preload && enableLazyLoadImage;
137
138
  const renderInnerHeroBanner = ()=>{
138
139
  return core.template /* liquid */ `
139
140
  <div
@@ -183,7 +184,7 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
183
184
  alt,
184
185
  title,
185
186
  imagePlaceholder,
186
- enableLazyloadImage
187
+ enableLazyLoadImage
187
188
  })}
188
189
  <div class="${core.cls('gp-absolute gp-w-full gp-h-full')}">
189
190
  <div
@@ -197,9 +198,10 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
197
198
  'clip-path': index.getClipPath(borderBg?.width, cornerBg)
198
199
  }}"
199
200
  >
200
- <div class="${core.cls('hero-banner-bg-parallax gp-hero-banner-image-background gp_lazybg', {
201
+ <div class="${core.cls('hero-banner-bg-parallax gp-hero-banner-image-background', {
201
202
  'gp-duration-[var(--duration)] group-hover/hero:gp-scale-[var(--scale)]': hoverEffect,
202
- 'gp-transition-transform': hoverEffect
203
+ 'gp-transition-transform': hoverEffect,
204
+ gp_lazybg: enableLazyLoad
203
205
  })}"
204
206
  style="${{
205
207
  ...core.getStyleBackgroundByDevice(background, {
@@ -208,9 +210,9 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
208
210
  liquid: true
209
211
  }),
210
212
  ...core.makeStyleResponsive('bgi', {
211
- desktop: `url('${bgiEnableByDevice['desktop'] ? setting?.preload || !enableLazyloadImage ? getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, 'desktop'), 'desktop') : imagePlaceholder['desktop'] : ''}')`,
212
- tablet: `url('${bgiEnableByDevice['tablet'] ? setting?.preload || !enableLazyloadImage ? getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, 'tablet'), 'tablet') : imagePlaceholder['tablet'] : ''}')`,
213
- mobile: `url('${bgiEnableByDevice['mobile'] ? setting?.preload || !enableLazyloadImage ? getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, 'mobile'), 'mobile') : imagePlaceholder['mobile'] : ''}')`
213
+ desktop: `url('${bgiEnableByDevice['desktop'] ? !enableLazyLoad ? getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, 'desktop'), 'desktop') : imagePlaceholder['desktop'] : ''}')`,
214
+ tablet: `url('${bgiEnableByDevice['tablet'] ? !enableLazyLoad ? getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, 'tablet'), 'tablet') : imagePlaceholder['tablet'] : ''}')`,
215
+ mobile: `url('${bgiEnableByDevice['mobile'] ? !enableLazyLoad ? getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, 'mobile'), 'mobile') : imagePlaceholder['mobile'] : ''}')`
214
216
  }),
215
217
  '--duration': `${hoverEffectDuration ?? 0}s`,
216
218
  '--scale': hoverEffectScale ?? 1,
@@ -218,17 +220,17 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
218
220
  ...index.getStyleHeroBannerBg(backgroundResponsive || {}, enableParallax)
219
221
  }}"
220
222
  >
223
+ ${embed()}
221
224
  ${!setting?.preload ? getSrcSet.DEVICES.map((device)=>{
222
225
  return core.RenderIf(getEnableBgImageByDevice(device), NextImage_liquid.default({
223
226
  src: getSrcSet.getImageSrc(core.getResponsiveValueByScreen(srcSet, device), device),
224
227
  alt: `lazy image ${device}`,
225
228
  className: `gp-absolute gp-top-0 gp-invisible gp-w-full gp_lazyload gp-h-full gp_lazyforbg ${device === 'tablet' ? 'gp_lazybg_tl' : ''} ${device === 'mobile' ? 'gp_lazybg_mb' : ''}`,
226
229
  isDisableAspectStyle: true,
227
- enableLazyloadImage
230
+ enableLazyLoadImage
228
231
  }));
229
232
  }).join('') : ''}
230
- </div>
231
- ${embed()} </div>
233
+ </div></div>
232
234
  </div>
233
235
  ${core.RenderIf(overlayEnable, core.template`<div
234
236
  aria-label="Overlay"
@@ -27,13 +27,14 @@ const getHeightHeroBanner = (background, enableParallax)=>{
27
27
  'tablet'
28
28
  ];
29
29
  DEVICES.forEach((device)=>{
30
+ const enableParallaxDevice = background?.[device]?.type === 'image' ? enableParallax : false;
30
31
  const isScale = isScaleImage({
31
- enableParallax,
32
+ enableParallax: enableParallaxDevice,
32
33
  attachment: background[device]?.attachment
33
34
  });
34
35
  result = {
35
36
  ...result,
36
- [device]: enableParallax ? '150%' : isScale ? '100vh' : '100%'
37
+ [device]: enableParallaxDevice ? '150%' : isScale ? '100vh' : '100%'
37
38
  };
38
39
  });
39
40
  return core.makeStyleResponsive('h', result);
@@ -46,8 +47,9 @@ const getWidthHeroBanner = (background, enableParallax)=>{
46
47
  'tablet'
47
48
  ];
48
49
  DEVICES.forEach((device)=>{
50
+ const enableParallaxDevice = background?.[device]?.type === 'image' ? enableParallax : false;
49
51
  const isScale = isScaleImage({
50
- enableParallax,
52
+ enableParallax: enableParallaxDevice,
51
53
  attachment: background[device]?.attachment
52
54
  });
53
55
  result = {
@@ -111,8 +111,18 @@ var TrustreviewsProductReviews = require('./third-party/components/TrustreviewsP
111
111
  var MyappgurusProductReviews = require('./third-party/components/MyappgurusProductReviews.js');
112
112
  var HulkProductOptions = require('./third-party/components/HulkProductOptions.js');
113
113
  var TrustshopProductReviews = require('./third-party/components/TrustshopProductReviews.js');
114
+ var StellarDeliveryDatePickup = require('./third-party/components/StellarDeliveryDatePickup.js');
115
+ var EssentialCountdownTimerBar = require('./third-party/components/EssentialCountdownTimerBar.js');
116
+ var EssentialAnnouncementBar = require('./third-party/components/EssentialAnnouncementBar.js');
117
+ var OkendoReviewsLoyalty = require('./third-party/components/OkendoReviewsLoyalty.js');
118
+ var EstimatedDeliveryDatePlus = require('./third-party/components/EstimatedDeliveryDatePlus.js');
114
119
  var HextomCountdownTimerBar = require('./third-party/components/HextomCountdownTimerBar.js');
115
120
  var TrustBadgesBear = require('./third-party/components/TrustBadgesBear.js');
121
+ var TrustedsiteTrustBadges = require('./third-party/components/TrustedsiteTrustBadges.js');
122
+ var GloColorSwatchvariantImage = require('./third-party/components/GloColorSwatchvariantImage.js');
123
+ var BfSizeChartSizeGuide = require('./third-party/components/BfSizeChartSizeGuide.js');
124
+ var AlsoBoughtCbb = require('./third-party/components/AlsoBoughtCbb.js');
125
+ var HextomFreeShippingBar = require('./third-party/components/HextomFreeShippingBar.js');
116
126
  var CartLineVariant = require('./cart/components/CartLineVariant.js');
117
127
  var Cart = require('./cart/components/Cart.js');
118
128
  var CartList = require('./cart/components/CartList.js');
@@ -247,6 +257,11 @@ var PostPurchaseCountdownTimer = require('./post-purchase/countdown-timer/compon
247
257
  var Text$1 = require('./post-purchase/text/Text.js');
248
258
 
249
259
  var builder = {
260
+ EstimatedDeliveryDatePlus: EstimatedDeliveryDatePlus.default,
261
+ OkendoReviewsLoyalty: OkendoReviewsLoyalty.default,
262
+ EssentialAnnouncementBar: EssentialAnnouncementBar.default,
263
+ EssentialCountdownTimerBar: EssentialCountdownTimerBar.default,
264
+ StellarDeliveryDatePickup: StellarDeliveryDatePickup.default,
250
265
  TrustshopProductReviews: TrustshopProductReviews.default,
251
266
  HulkProductOptions: HulkProductOptions.default,
252
267
  TrustreviewsProductReviews: TrustreviewsProductReviews.default,
@@ -483,7 +498,12 @@ var builder = {
483
498
  MarqueeItem: MarqueeItem.default,
484
499
  ProductBadge: index$8.default,
485
500
  HextomCountdownTimerBar: HextomCountdownTimerBar.default,
486
- TrustBadgesBear: TrustBadgesBear.default
501
+ TrustBadgesBear: TrustBadgesBear.default,
502
+ TrustedsiteTrustBadges: TrustedsiteTrustBadges.default,
503
+ GloColorSwatchvariantImage: GloColorSwatchvariantImage.default,
504
+ BfSizeChartSizeGuide: BfSizeChartSizeGuide.default,
505
+ AlsoBoughtCbb: AlsoBoughtCbb.default,
506
+ HextomFreeShippingBar: HextomFreeShippingBar.default
487
507
  };
488
508
 
489
509
  exports.default = builder;
@@ -4,16 +4,110 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var core = require('@gem-sdk/core');
7
- var Text = require('../../text/components/Text.js');
7
+ var React = require('react');
8
8
 
9
- const CollectionDescription = ({ setting })=>{
9
+ const CollectionDescription = ({ setting, builderProps })=>{
10
+ const [open, setOpen] = React.useState(false);
11
+ const [isShowViewMore, allowShowViewMore] = React.useState(false);
12
+ const ref = React.useRef(null);
13
+ const currentDevice = core.useCurrentDevice();
10
14
  const collection = core.useCollection();
11
- return /*#__PURE__*/ jsxRuntime.jsx(Text.default, {
12
- styles: setting,
13
- setting: {
14
- text: collection?.descriptionHtml ?? 'Collection description',
15
- excludeFlex: true
15
+ const hasLineClamp = core.getResponsiveValueByScreen(setting?.hasLineClamp, currentDevice);
16
+ const lineClamp = core.getResponsiveValueByScreen(setting?.lineClamp, currentDevice);
17
+ const appendTypoClass = core.composeTypographyClassName(setting?.typo, setting?.typography);
18
+ const appendTypoStyle = core.composeTypographyStyle(setting?.typo, setting?.typography);
19
+ React.useEffect(()=>{
20
+ const dom = ref.current;
21
+ setOpen(false);
22
+ if (dom && hasLineClamp && collection?.description) {
23
+ const value = lineClamp;
24
+ setTimeout(()=>{
25
+ const scrollHeight = dom?.scrollHeight ?? 0;
26
+ const clientHeight = dom?.clientHeight ?? 0;
27
+ const lineHeight = window.getComputedStyle(dom).getPropertyValue('line-height');
28
+ const lineText = Math.round((scrollHeight ?? 0) / parseInt(lineHeight));
29
+ const conditionCheckLine = core.isSafari() ? value && value < lineText : clientHeight < scrollHeight;
30
+ if (value && conditionCheckLine) {
31
+ allowShowViewMore(()=>true);
32
+ } else {
33
+ allowShowViewMore(()=>false);
34
+ }
35
+ }, 100);
16
36
  }
37
+ }, [
38
+ hasLineClamp,
39
+ lineClamp,
40
+ collection?.description
41
+ ]);
42
+ const css = `
43
+ .gp-p-description-text > *:not(ol):not(ul):not(table):not(div) {
44
+ display: inline !important;
45
+ }
46
+ .gp-p-description-text > *:not(ol):not(ul):not(table):not(div)::after {
47
+ content: "\\A";
48
+ white-space: pre;
49
+ }
50
+ .gp-p-description-text > table {
51
+ box-shadow: none;
52
+ }
53
+ `;
54
+ const hasDescription = collection?.description && collection.description?.trim() != '';
55
+ return /*#__PURE__*/ jsxRuntime.jsxs("div", {
56
+ "data-id": builderProps?.uid,
57
+ children: [
58
+ !core.isSafari() && /*#__PURE__*/ jsxRuntime.jsx("style", {
59
+ children: css
60
+ }),
61
+ /*#__PURE__*/ jsxRuntime.jsx("div", {
62
+ ref: ref,
63
+ "data-gp-text": true,
64
+ className: core.cls('gp-p-description-text gp-break-words safari:[&_p]:gp-inline safari:[&_p]:after:gp-whitespace-pre', appendTypoClass, !hasDescription ? 'gp-p-2 gp-text-center gp-text-sm gp-font-semibold gp-text-gray-500 gp-py-2 !gp-text-center' : '', core.getGlobalColorClass('text', setting?.color)),
65
+ style: {
66
+ ...core.getStyleShadow({
67
+ styleAppliedFor: 'text-shadow'
68
+ }),
69
+ ...core.makeStyleResponsive('ta', setting?.textAlign),
70
+ ...hasLineClamp && !open ? core.makeStyleResponsive('line-clamp', setting?.lineClamp) : {},
71
+ ...core.makeStyle({
72
+ tt: setting?.transform
73
+ }),
74
+ ...appendTypoStyle
75
+ },
76
+ dangerouslySetInnerHTML: {
77
+ __html: collection?.descriptionHtml && hasDescription ? collection.descriptionHtml : ``
78
+ }
79
+ }),
80
+ hasLineClamp && isShowViewMore && /*#__PURE__*/ jsxRuntime.jsxs("button", {
81
+ className: core.cls(appendTypoClass, core.getGlobalColorClass('text', setting?.showMoreColor), 'gp-mt-4 gp-w-full gp-transition-all hover:gp-opacity-80'),
82
+ style: {
83
+ ...core.makeStyleResponsive('ta', setting?.textAlign),
84
+ ...core.makeStyle({
85
+ tt: setting?.transform
86
+ }),
87
+ ...appendTypoStyle,
88
+ ...core.getGlobalColorStyle(setting?.showMoreColor)
89
+ },
90
+ onClick: ()=>setOpen((prev)=>!prev),
91
+ children: [
92
+ !open ? setting?.viewMoreText : setting?.viewLessText,
93
+ setting?.enableViewMoreIcon && /*#__PURE__*/ jsxRuntime.jsx("svg", {
94
+ className: "gp-ml-1 gp-inline-block",
95
+ height: "1em",
96
+ width: "1em",
97
+ viewBox: "0 0 22 12",
98
+ fill: "none",
99
+ xmlns: "http://www.w3.org/2000/svg",
100
+ children: !open ? /*#__PURE__*/ jsxRuntime.jsx("path", {
101
+ d: "M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L1.70711 0.292893ZM11 11L10.2929 11.7071C10.6834 12.0976 11.3166 12.0976 11.7071 11.7071L11 11ZM21.7071 1.70711C22.0976 1.31658 22.0976 0.683417 21.7071 0.292893C21.3166 -0.0976311 20.6834 -0.0976311 20.2929 0.292893L21.7071 1.70711ZM0.292893 1.70711L10.2929 11.7071L11.7071 10.2929L1.70711 0.292893L0.292893 1.70711ZM11.7071 11.7071L21.7071 1.70711L20.2929 0.292893L10.2929 10.2929L11.7071 11.7071Z",
102
+ fill: "currentColor"
103
+ }) : /*#__PURE__*/ jsxRuntime.jsx("path", {
104
+ d: "M0.292893 10.2929C-0.0976311 10.6834 -0.0976311 11.3166 0.292893 11.7071C0.683417 12.0976 1.31658 12.0976 1.70711 11.7071L0.292893 10.2929ZM11 1L11.7071 0.292893C11.3166 -0.0976311 10.6834 -0.0976311 10.2929 0.292893L11 1ZM20.2929 11.7071C20.6834 12.0976 21.3166 12.0976 21.7071 11.7071C22.0976 11.3166 22.0976 10.6834 21.7071 10.2929L20.2929 11.7071ZM1.70711 11.7071L11.7071 1.70711L10.2929 0.292893L0.292893 10.2929L1.70711 11.7071ZM10.2929 1.70711L20.2929 11.7071L21.7071 10.2929L11.7071 0.292893L10.2929 1.70711Z",
105
+ fill: "currentColor"
106
+ })
107
+ })
108
+ ]
109
+ })
110
+ ]
17
111
  });
18
112
  };
19
113
 
@@ -3,18 +3,111 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var core = require('@gem-sdk/core');
6
- var Text_liquid = require('../../text/components/Text.liquid.js');
6
+ var helpers = require('../../helpers.js');
7
+ var common = require('../../product/components/ProductImages/common/common.js');
7
8
 
8
- const CollectionDescription = ({ setting })=>{
9
+ const CollectionDescription = ({ setting, advanced, builderProps, pageContext })=>{
10
+ const appendTypoStyle = core.composeTypographyStyle(setting?.typo, setting?.typography);
11
+ const appendTypoClass = core.composeTypographyClassName(setting?.typo, setting?.typography);
12
+ const defaultStyle = {
13
+ ...core.getStyleShadow({
14
+ styleAppliedFor: 'text-shadow'
15
+ }),
16
+ ...core.makeStyleResponsive('ta', setting?.textAlign),
17
+ ...core.getGlobalColorStyle(setting?.color),
18
+ ...core.makeStyle({
19
+ tt: setting?.transform
20
+ }),
21
+ ...appendTypoStyle
22
+ };
23
+ const collapseStyle = {
24
+ ...defaultStyle,
25
+ ...core.makeStyleResponsive('line-clamp', core.makeLineClamp(setting?.lineClamp, setting?.hasLineClamp))
26
+ };
27
+ const getDisplayCollapse = ()=>{
28
+ return common.getDisplayStyle((device)=>!!setting?.hasLineClamp && setting.hasLineClamp[device] !== undefined && !setting.hasLineClamp[device], 'block');
29
+ };
30
+ const moreIcon = `<svg
31
+ class="gp-ml-1 gp-inline-block"
32
+ style="display: inline-block; margin-left: 1px;"
33
+ height="1em"
34
+ width="1em"
35
+ viewBox="0 0 22 12"
36
+ fill="none"
37
+ xmlns="http://www.w3.org/2000/svg"
38
+ >
39
+ <path
40
+ d="M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L1.70711 0.292893ZM11 11L10.2929 11.7071C10.6834 12.0976 11.3166 12.0976 11.7071 11.7071L11 11ZM21.7071 1.70711C22.0976 1.31658 22.0976 0.683417 21.7071 0.292893C21.3166 -0.0976311 20.6834 -0.0976311 20.2929 0.292893L21.7071 1.70711ZM0.292893 1.70711L10.2929 11.7071L11.7071 10.2929L1.70711 0.292893L0.292893 1.70711ZM11.7071 11.7071L21.7071 1.70711L20.2929 0.292893L10.2929 10.2929L11.7071 11.7071Z"
41
+ fill="currentColor"
42
+ />
43
+ </svg>`;
44
+ const viewMoreTextTranslate = helpers.getDynamicSourceLocales({
45
+ val: setting?.viewMoreText,
46
+ uid: builderProps?.uid,
47
+ settingId: 'viewMoreText',
48
+ isLiquid: true,
49
+ pageContext,
50
+ translate: setting?.translate
51
+ });
52
+ const viewLessTextTranslate = helpers.getDynamicSourceLocales({
53
+ val: setting?.viewLessText,
54
+ uid: builderProps?.uid,
55
+ settingId: 'viewLessText',
56
+ isLiquid: true,
57
+ pageContext,
58
+ translate: setting?.translate
59
+ });
9
60
  return core.template`
10
- ${Text_liquid.default({
11
- styles: setting,
61
+ <gp-collection-description data-id="${builderProps?.uid}" class="${advanced?.cssClass} gp-collection-description" gp-data='${JSON.stringify({
12
62
  setting: {
13
- ...setting,
14
- text: '{{ collection.description }}',
15
- excludeFlex: true
16
- }
17
- })}
63
+ lineClamp: setting?.lineClamp,
64
+ hasLineClamp: setting?.hasLineClamp,
65
+ viewMoreText: viewMoreTextTranslate,
66
+ viewLessText: viewLessTextTranslate,
67
+ enableViewMoreIcon: setting?.enableViewMoreIcon
68
+ },
69
+ defaultStyle,
70
+ collapseStyle
71
+ }).replaceAll("'", '&#039;')}'
72
+ view-more-text="${pageContext?.isPreviewing ? viewMoreTextTranslate : `{{${viewMoreTextTranslate}}}`}"
73
+ view-less-text="${pageContext?.isPreviewing ? viewLessTextTranslate : `{{${viewLessTextTranslate}}}`}"
74
+ >
75
+ <div></div>
76
+ <div
77
+ data-gp-text
78
+ class="${core.cls('gp-relative p-description-wrapper gp-p-description-text gp-break-words safari:[&_p]:gp-inline safari:[&_p]:after:gp-whitespace-pre', appendTypoClass, core.getGlobalColorClass('text', setting?.color), "data-[browser=safari]:after:gp-content-[' '] data-[browser=safari]:after:gp-absolute data-[browser=safari]:after:gp-left-0 data-[browser=safari]:after:gp-right-0 data-[browser=safari]:after:gp-bottom-0 data-[browser=safari]:after:gp-w-full data-[browser=safari]:after:gp-h-1/2 data-[browser=safari]:after:gp-bg-gradient-to-t data-[browser=safari]:after:gp-from-white")}"
79
+ data-gp-text
80
+ style="${collapseStyle}"
81
+ >
82
+ {{collection.description}}
83
+ </div>
84
+ {% if collection.description != blank -%}
85
+ <button
86
+ type="button"
87
+ class="p-description-show-more ${core.cls(appendTypoClass, core.getGlobalColorClass('text', setting?.showMoreColor), 'gp-mt-4 hover:gp-opacity-80 gp-transition-all gp-w-full')}"
88
+ style="${{
89
+ ...core.makeStyle({
90
+ tt: setting?.transform
91
+ }),
92
+ ...core.makeStyleResponsive('ta', setting?.textAlign),
93
+ ...appendTypoStyle,
94
+ ...core.getGlobalColorStyle(setting?.showMoreColor),
95
+ ...getDisplayCollapse(),
96
+ position: 'absolute',
97
+ visibility: 'hidden'
98
+ }}"
99
+ >
100
+ ${pageContext?.isPreviewing ? viewMoreTextTranslate : `{{${viewMoreTextTranslate}}}`}
101
+ ${setting?.enableViewMoreIcon ? moreIcon : ''}
102
+ </button>
103
+ {%- endif -%}
104
+ {% style %}
105
+ .p-description-wrapper.gp-p-description-text * {
106
+ color: inherit
107
+ }
108
+ {% endstyle %}
109
+ </gp-collection-description>
110
+ ${core.RenderIf(core.isLocalEnv, `<script ${helpers.getSettingPreloadData('class="gps-link" delay', 'src')}="{{ 'gp-collection-description.js' | asset_url }}" defer="defer"></script>`, `<script ${helpers.getSettingPreloadData('class="gps-link" delay', 'src')}="${core.baseAssetURL}/assets-v2/gp-collection-description.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`)}
18
111
  `;
19
112
  };
20
113
 
@@ -39,6 +39,59 @@ const config = {
39
39
  }
40
40
  ]
41
41
  },
42
+ {
43
+ id: 'hasLineClamp',
44
+ label: 'Enable View More',
45
+ type: 'toggle',
46
+ devices: {
47
+ desktop: {
48
+ default: true
49
+ }
50
+ }
51
+ },
52
+ {
53
+ id: 'lineClamp',
54
+ label: 'Maximum Row(s) To Show',
55
+ type: 'input:number',
56
+ min: 1,
57
+ hide: true,
58
+ devices: {
59
+ desktop: {
60
+ default: 12
61
+ }
62
+ }
63
+ },
64
+ {
65
+ id: 'viewMoreText',
66
+ label: 'View More Text',
67
+ type: 'input',
68
+ default: 'Show more',
69
+ hide: true
70
+ },
71
+ {
72
+ id: 'showMoreColor',
73
+ type: 'colorpicker',
74
+ default: 'text-1'
75
+ },
76
+ {
77
+ id: 'viewLessText',
78
+ label: 'View Less Text',
79
+ type: 'input',
80
+ default: 'Show less',
81
+ hide: true
82
+ },
83
+ {
84
+ id: 'enableViewMoreIcon',
85
+ label: 'Enable Icon',
86
+ type: 'toggle',
87
+ default: true,
88
+ hide: true
89
+ },
90
+ {
91
+ id: 'translate',
92
+ type: 'input',
93
+ default: 'viewLessText,viewMoreText'
94
+ },
42
95
  {
43
96
  id: 'textAlign',
44
97
  label: 'Align',
@@ -74,11 +127,86 @@ const config = {
74
127
  default: 'center'
75
128
  }
76
129
  }
130
+ },
131
+ {
132
+ id: 'color',
133
+ type: 'colorpicker',
134
+ default: 'text-1'
77
135
  }
78
136
  ]
79
137
  }
80
138
  ],
81
139
  ui: [
140
+ {
141
+ type: 'group',
142
+ label: {
143
+ en: ''
144
+ },
145
+ controls: [
146
+ {
147
+ type: 'control',
148
+ label: {
149
+ en: 'Show more'
150
+ },
151
+ options: {
152
+ label: 'large'
153
+ },
154
+ setting: {
155
+ id: 'hasLineClamp'
156
+ }
157
+ },
158
+ {
159
+ type: 'control',
160
+ label: {
161
+ en: 'Text color'
162
+ },
163
+ setting: {
164
+ id: 'showMoreColor'
165
+ },
166
+ condition: 'hasLineClamp == true'
167
+ },
168
+ {
169
+ type: 'control',
170
+ label: {
171
+ en: 'Max lines'
172
+ },
173
+ setting: {
174
+ id: 'lineClamp'
175
+ },
176
+ condition: 'hasLineClamp == true'
177
+ },
178
+ {
179
+ type: 'control',
180
+ label: {
181
+ en: 'Show more label'
182
+ },
183
+ setting: {
184
+ id: 'viewMoreText'
185
+ },
186
+ condition: 'hasLineClamp == true'
187
+ },
188
+ {
189
+ type: 'control',
190
+ label: {
191
+ en: 'Show less label'
192
+ },
193
+ setting: {
194
+ id: 'viewLessText'
195
+ },
196
+ condition: 'hasLineClamp == true'
197
+ },
198
+ {
199
+ type: 'control',
200
+ label: {
201
+ en: 'Icon'
202
+ },
203
+ setting: {
204
+ id: 'enableViewMoreIcon'
205
+ },
206
+ condition: 'hasLineClamp == true'
207
+ }
208
+ ]
209
+ },
82
210
  {
83
211
  label: {
84
212
  en: 'Text'
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const ELEMENT_Z_INDEX = {
4
- STICKY: 100000,
4
+ STICKY: 1000,
5
5
  DIALOG: 100001,
6
6
  CART_DRAWER: 100002,
7
7
  CART_DRAWER_CONFIRM_MODAL: 100003
@@ -6,10 +6,10 @@ var core = require('@gem-sdk/core');
6
6
  var helpers = require('../../../helpers.js');
7
7
 
8
8
  const FormTextarea = ({ setting, builderProps, className, builderAttrs, advanced, pageContext })=>{
9
- const { text, name, placeholder, required, width, fullWidth, typography } = setting ?? {};
9
+ const { text, name, placeholder, required, width, fullWidth, typography, translate } = setting ?? {};
10
10
  const textAreaWidth = core.makeStyleResponsive('w', core.makeWidth(width, fullWidth));
11
11
  const defaultName = name === '' || name === undefined ? 'contact[note]' : name;
12
- const { border, rounded, hasBoxShadow, boxShadow, pos, d, op, right, top, left, bottom, z, margin, padding, translate } = advanced ?? {};
12
+ const { border, rounded, hasBoxShadow, boxShadow, pos, d, op, right, top, left, bottom, z, margin, padding } = advanced ?? {};
13
13
  const spacingSetting = advanced?.['spacing-setting'];
14
14
  const inputStyle = core.composeAdvanceStyle({
15
15
  border,
@@ -6,7 +6,7 @@ var core = require('@gem-sdk/core');
6
6
  var getSrcSet = require('../helpers/getSrcSet.js');
7
7
  var helpers = require('./helpers.js');
8
8
 
9
- const AdaptiveImage = ({ srcSet, priority, alt, aspectRatio, layout, className, pictureClass, style, imagePlaceholder, enableLazyloadImage = true, ...props })=>{
9
+ const AdaptiveImage = ({ srcSet, priority, alt, aspectRatio, layout, className, pictureClass, style, imagePlaceholder, enableLazyLoadImage = true, pageContext, ...props })=>{
10
10
  const fallBackImage = 'https://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_large.gif';
11
11
  const srcDesktop = getSrcSet.getImageSrc(srcSet?.desktop, 'desktop') || fallBackImage;
12
12
  const srcTablet = (getSrcSet.getImageSrc(srcSet?.tablet, 'tablet') ?? getSrcSet.getImageSrc(srcSet?.desktop, 'tablet')) || fallBackImage;
@@ -31,16 +31,17 @@ const AdaptiveImage = ({ srcSet, priority, alt, aspectRatio, layout, className,
31
31
  }}"
32
32
  />
33
33
  `, core.template`
34
- ${srcMobile ? `<source media="(max-width: 767px)" data-srcSet="${srcMobile}" srcset="${enableLazyloadImage ? imagePlaceholder?.['mobile'] ?? helpers.createBlurDataURL(srcSet?.mobile?.width ?? srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.mobile?.height ?? srcSet?.tablet?.height ?? srcSet?.desktop?.height ?? 0) : srcMobile}" />` : ''}
35
- ${srcTablet ? `<source media="(max-width: 1024px)" data-srcSet="${srcTablet}" srcset="${enableLazyloadImage ? imagePlaceholder?.['tablet'] ?? helpers.createBlurDataURL(srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.tablet?.height ?? srcSet?.desktop?.height ?? 0) : srcTablet}" />` : ''}
34
+ ${srcMobile ? `<source media="(max-width: 767px)" data-srcSet="${srcMobile}" srcset="${enableLazyLoadImage ? imagePlaceholder?.['mobile'] ?? helpers.createBlurDataURL(srcSet?.mobile?.width ?? srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.mobile?.height ?? srcSet?.tablet?.height ?? srcSet?.desktop?.height ?? 0) : srcMobile}" />` : ''}
35
+ ${srcTablet ? `<source media="(max-width: 1024px)" data-srcSet="${srcTablet}" srcset="${enableLazyLoadImage ? imagePlaceholder?.['tablet'] ?? helpers.createBlurDataURL(srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.tablet?.height ?? srcSet?.desktop?.height ?? 0) : srcTablet}" />` : ''}
36
36
  <img
37
37
  ${{
38
38
  ...props
39
39
  }}
40
40
  class="${core.cls(className, {
41
- gp_lazyload: enableLazyloadImage
41
+ gp_lazyload: enableLazyLoadImage,
42
+ gp_force_load: pageContext?.isOptimizePlan
42
43
  })}"
43
- src="${enableLazyloadImage ? imagePlaceholder?.['desktop'] ?? helpers.createBlurDataURL(srcSet?.desktop?.width ?? 0, srcSet?.desktop?.height ?? 0) : srcDesktop}"
44
+ src="${enableLazyLoadImage ? imagePlaceholder?.['desktop'] ?? helpers.createBlurDataURL(srcSet?.desktop?.width ?? 0, srcSet?.desktop?.height ?? 0) : srcDesktop}"
44
45
  data-src="${srcDesktop}"
45
46
  width="100%"
46
47
  alt="${alt}"