Files
GarminHealthLab/client
ericwyuan 67a7c4b87e fix(ui): 自动同步开关不可点、返回键热区过小、路由卡死
开关
- 我的 .toggle 类名和 Framework7 自带的 .toggle 组件撞了,元素被压成 0×0;
  另外 F7 全局给 input[type=checkbox] 加了 display:none,胜过我的 opacity:0,
  所以那个开关根本点不到。改名 set-switch 并显式恢复 input 的 display。
- 设置项改为乐观更新:先动控件,再发请求,失败回滚并报错。
  经隧道一个来回约半秒,开关在那半秒里纹丝不动会被当成坏了,
  用户再按一次,两个写入就打架了。

返回键
- 去掉导航栏毛玻璃背景时也把尺寸一起去掉了,链接缩成 44×16,
  手机上很难点中,按下也没有反馈。恢复 44px 高的热区并加按下态。

路由卡死
- F7 启动时给根节点加 framework7-initializing 来抑制动画,靠下一帧移除。
  这一帧在后台标签页或被节流的 webview 里不会到来,于是该类一直挂着,
  它的 transition-duration: 0ms !important 让过渡永远不发 transitionend,
  路由等的就是这个事件——allowPageChange 置 false 后再也没恢复,
  之后每一次导航(包括每一次返回)都被静默丢弃,只能刷新页面。
- 启动后主动清掉该类,并加一个看门狗:过渡类存活超过 1.6 秒即视为卡住,
  清理残留状态并放行路由。

进度条改用 portal 挂到 document.body。它原本是 F7 根节点的第一个子元素,
就这一个多余的节点会干扰 F7 的初始化。

部署脚本改为原子替换 static:原先 rm -rf 后再解包,中间有一段时间
文件是缺的,正好撞上就是 502。

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-24 07:32:35 +08:00
..