@klodd/ds 3.14.4 → 3.14.5

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.
@@ -443,6 +443,7 @@
443
443
  --safe-right: env(safe-area-inset-right, 0px);
444
444
 
445
445
  --viewport-height: 100vh;
446
+ --vv-offset: 0px; /* JS-driven (pwa-register.js syncNavBottom): visual viewport-offset vs layout viewport */
446
447
 
447
448
  --touch-min: 44px;
448
449
 
@@ -30,7 +30,7 @@
30
30
  ================================================================ */
31
31
  .bottom-nav {
32
32
  position: fixed;
33
- bottom: calc(var(--safe-bottom) + var(--space-12));
33
+ bottom: calc(var(--safe-bottom) + var(--space-12) + var(--vv-offset));
34
34
  left: var(--space-16);
35
35
  right: var(--space-16);
36
36
  z-index: var(--z-nav);
@@ -62,22 +62,21 @@
62
62
  }
63
63
 
64
64
  /*------------------------------------------------------------
65
- Cold-start scroll-guarantee (iOS PWA)
66
- Om dokumentet inte ar scrollbart vid initial load triggar iOS
67
- Safari aldrig en full viewport-stabilisering, vilket bl.a.
68
- resulterar i felresolvad env(safe-area-inset-bottom). Fix: lagg
69
- tillfaligt en padding-bottom som gor sidan scrollbar med 1px.
70
- iOS stabiliserar sin viewport. Padding tas bort vid forsta
71
- scroll-event sa layouten ar tillbaka till normal.
65
+ Visual viewport-sync for .bottom-nav (iOS PWA cold-start)
66
+ iOS Safari beraknar layout viewport (window.innerHeight) fel
67
+ vid cold start - skiljer sig fran visual viewport (faktiskt
68
+ synlig area). Skriver skillnaden till --vv-offset sa
69
+ .bottom-nav kan kompensera via bottom: calc(... + var(--vv-offset)).
70
+
71
+ Vid normal anvandning ar offset 0px. Vid iOS cold-start eller
72
+ on-screen-keyboard ar offset > 0 och pillen hoppar uppat dar
73
+ visual viewport faktiskt slutar.
72
74
  ------------------------------------------------------------*/
73
- function ensureScrollable() {
74
- if (doc.documentElement.scrollHeight <= root.innerHeight) {
75
- doc.documentElement.style.paddingBottom = (root.innerHeight + 1) + 'px';
76
- root.addEventListener('scroll', function cleanup() {
77
- doc.documentElement.style.paddingBottom = '';
78
- root.removeEventListener('scroll', cleanup);
79
- }, { once: true });
80
- }
75
+ function syncNavBottom() {
76
+ const vv = root.visualViewport;
77
+ if (!vv) return;
78
+ const offset = root.innerHeight - vv.height - vv.offsetTop;
79
+ doc.documentElement.style.setProperty('--vv-offset', offset + 'px');
81
80
  }
82
81
 
83
82
  /*------------------------------------------------------------
@@ -91,5 +90,10 @@
91
90
 
92
91
  registerSW(cfg);
93
92
 
94
- doc.addEventListener('DOMContentLoaded', ensureScrollable);
93
+ if (root.visualViewport) {
94
+ root.visualViewport.addEventListener('resize', syncNavBottom);
95
+ root.visualViewport.addEventListener('scroll', syncNavBottom);
96
+ }
97
+ doc.addEventListener('DOMContentLoaded', syncNavBottom);
98
+ root.addEventListener('load', syncNavBottom);
95
99
  })(typeof window !== 'undefined' ? window : globalThis, document);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@klodd/ds",
3
- "version": "3.14.4",
3
+ "version": "3.14.5",
4
4
  "description": "Klodd shared design system - tokens, components, JS",
5
5
  "main": "css/index.css",
6
6
  "bin": {