Pārlūkot izejas kodu

refactor(miniprogram): reuse safe-area CSS builder in applySafeAreaCssVars

Co-authored-by: Cursor <cursoragent@cursor.com>
wuzilong 1 mēnesi atpakaļ
vecāks
revīzija
49ec2418a2

+ 9 - 0
miniprogram/utils/__tests__/safeArea.style.test.mjs

@@ -12,4 +12,13 @@ assert.equal(style['--sq-safe-top'], '44px')
 assert.equal(style['--sq-nav-height'], '40px')
 assert.equal(style['--sq-header-height'], '84px')
 assert.equal(style['--sq-capsule-right-safe'], '96px')
+
+const noCapsuleStyle = buildSafeAreaCssVarsStyle({
+  topSafeHeight: 20,
+  navContentHeight: 44,
+  headerHeight: 64,
+  capsuleRightSafeWidth: 0,
+})
+
+assert.equal(noCapsuleStyle['--sq-capsule-right-safe'], '0px')
 console.log('ok')

+ 4 - 4
miniprogram/utils/safeArea.js

@@ -62,10 +62,10 @@ export function computeSafeAreaMetrics() {
 export function applySafeAreaCssVars(metrics) {
   if (typeof document === 'undefined' || !document?.documentElement) return
   const root = document.documentElement.style
-  root.setProperty('--sq-safe-top', `${metrics.topSafeHeight}px`)
-  root.setProperty('--sq-nav-height', `${metrics.navContentHeight}px`)
-  root.setProperty('--sq-header-height', `${metrics.headerHeight}px`)
-  root.setProperty('--sq-capsule-right-safe', `${metrics.capsuleRightSafeWidth}px`)
+  const style = buildSafeAreaCssVarsStyle(metrics)
+  Object.entries(style).forEach(([key, value]) => {
+    root.setProperty(key, value)
+  })
 }
 
 export function initGlobalSafeArea() {