fix(a11y): improve focus restoration with timing fixes, validation, and error handling
Core improvements: - Fix focus restoration timing by using queueMicrotask only (removed double-layer async) - Add comprehensive error handling with dev-mode logging for all failure scenarios - Validate element visibility (display: none, visibility: hidden) before restoring focus - Check disabled state and implement fallback to nearest focusable ancestor - Add findNearestFocusableElement() helper for robust fallback strategy - Add tabindex="-1" to focusable selectors for better focus management - Use preventScroll option when calling focus() to prevent scroll jumps Additional fixes: - Remove unnecessary type conversion in Modal.tsx - Fix TypeScript unused variable errors in main process - Clean up unused imports in bip-users-dao.ts - Add ARIA attributes and focus management to LoginDialog - Add triggerRef support to UserSelectionDialog and ExecutionReportDialog - Refactor ExecutionReportDialog to use Modal component - Improve MaterialTypeManagementDialog with focus management Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,9 +59,11 @@ export function withErrorHandling<T>(
|
||||
const code = getErrorCode(error)
|
||||
|
||||
// Serialize error with full details
|
||||
const serializedError = serializeError(error)
|
||||
const errorToLog =
|
||||
process.env.NODE_ENV === 'production' ? sanitizeError(serializedError) : serializedError
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
sanitizeError(serializeError(error))
|
||||
} else {
|
||||
serializeError(error)
|
||||
}
|
||||
|
||||
if (isBaseError(error)) {
|
||||
logError(log, `[${context}] ${error.name}`, error, {
|
||||
|
||||
@@ -14,7 +14,6 @@ import { ConfigManager } from '../config/config-manager'
|
||||
import sql from 'mssql'
|
||||
import type { UserInfo } from '../../types/user.types'
|
||||
import { createLogger, logError } from '../logger'
|
||||
import { serializeError } from '../logger/error-utils'
|
||||
|
||||
const log = createLogger('BipUsersDao')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user