@yatoday/astro-ui 0.17.27 → 0.17.29

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.
@@ -122,9 +122,9 @@ const isHtmlImage = typeof image === 'string' && !Array.isArray(image);
122
122
  3/4: pb-[133%]
123
123
  9/16: pb-[177%]
124
124
  -->
125
- <div class={cn("relative w-full h-auto", aspectClass)}>
125
+ <div class={cn("relative w-full h-auto min-h-full", aspectClass)}>
126
126
  {image && (
127
- <Fragment>
127
+ <div class="absolute inset-0">
128
128
  {isHtmlImage ? (
129
129
  <Fragment set:html={image}/>
130
130
  ) : (
@@ -139,7 +139,7 @@ const isHtmlImage = typeof image === 'string' && !Array.isArray(image);
139
139
  hoverEffect={false}
140
140
  />
141
141
  )}
142
- </Fragment>
142
+ </div>
143
143
  )}
144
144
  </div>
145
145
  </div>
@@ -235,6 +235,23 @@ const { container: containerClass = '', swiper: swiperClass = '', swiperThumb: s
235
235
 
236
236
  // Mark as initialized to show content and hide loader
237
237
  elem.setAttribute('data-initialized', 'true');
238
+
239
+ // Force Swiper to re-measure once layout settles and again as images
240
+ // resolve. Without this, Swiper can measure slides while their
241
+ // <img> children still have no intrinsic size (loading="lazy" /
242
+ // cache-cold) and then lock itself via watchOverflow — silently
243
+ // swallowing every slideTo() and click handler on user machines
244
+ // where the images aren't already cached.
245
+ const scheduleUpdate = () => {
246
+ const s = (mainSwiperEl as any)?.swiper;
247
+ if (s && !s.destroyed) s.update();
248
+ };
249
+ requestAnimationFrame(scheduleUpdate);
250
+ mainSwiperEl.querySelectorAll('img').forEach((img) => {
251
+ if (img.complete && img.naturalWidth > 0) return;
252
+ img.addEventListener('load', scheduleUpdate, { once: true });
253
+ img.addEventListener('error', scheduleUpdate, { once: true });
254
+ });
238
255
  });
239
256
  };
240
257
 
@@ -76,6 +76,23 @@
76
76
 
77
77
  // Mark as initialized to show content and hide loader
78
78
  elem.setAttribute('data-initialized', 'true');
79
+
80
+ // Force Swiper to re-measure once layout settles and again as images
81
+ // resolve. Without this, Swiper can measure slides while their
82
+ // <img> children still have no intrinsic size (loading="lazy" /
83
+ // cache-cold) and then lock itself via watchOverflow — silently
84
+ // swallowing every slideTo() and click handler on user machines
85
+ // where the images aren't already cached.
86
+ const scheduleUpdate = () => {
87
+ const s = (mainSwiperEl as any)?.swiper;
88
+ if (s && !s.destroyed) s.update();
89
+ };
90
+ requestAnimationFrame(scheduleUpdate);
91
+ mainSwiperEl.querySelectorAll('img').forEach((img) => {
92
+ if (img.complete && img.naturalWidth > 0) return;
93
+ img.addEventListener('load', scheduleUpdate, { once: true });
94
+ img.addEventListener('error', scheduleUpdate, { once: true });
95
+ });
79
96
  };
80
97
 
81
98
  init();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yatoday/astro-ui",
3
3
  "type": "module",
4
- "version": "0.17.27",
4
+ "version": "0.17.29",
5
5
  "scripts": {
6
6
  "prepare": "husky",
7
7
  "pre-commit": "lint-staged",