feat(mp): Phase 1 测试覆盖 + UX 无障碍 — 106 tests PASS + ARIA + focus ring
测试: - secure-storage: 26 tests (AES 加解密/明文 fallback/迁移/Base64 边界) - request.ts: 16 tests (扩展 ResponseCache/patientId 隔离/requestUnlimited) - mock-api: 修复 getCachedPatientId 缺失导致 health 测试失败 UX 无障碍 (10 组件): - SegmentTabs/DoctorTabBar: role=tablist/tab + aria-selected - PrimaryButton/SecondaryButton: role=button + aria-disabled/aria-busy - Loading/LoadingCard: role=status + aria-live=polite - EmptyState: role=status + aria-live=polite - ErrorState: role=alert + aria-live=assertive - TrendChart tooltip: role=tooltip + aria-live=polite - FormInput: aria-invalid + aria-label 焦点管理: - 新增 _focus-ring.scss mixin (focus + focus-visible) - 5 组件 SCSS 应用 focus-ring
This commit is contained in:
15
apps/miniprogram/src/styles/_focus-ring.scss
Normal file
15
apps/miniprogram/src/styles/_focus-ring.scss
Normal file
@@ -0,0 +1,15 @@
|
||||
// Focus ring mixin for keyboard accessibility
|
||||
$focus-ring-color: #1890ff;
|
||||
$focus-ring-width: 2px;
|
||||
$focus-ring-offset: 2px;
|
||||
|
||||
@mixin focus-ring {
|
||||
&:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 $focus-ring-offset $focus-ring-color;
|
||||
}
|
||||
&:focus-visible {
|
||||
outline: $focus-ring-width solid $focus-ring-color;
|
||||
outline-offset: $focus-ring-offset;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user