diff --git a/change/react-native-windows-aca77b5b-e0c0-4051-bb1d-70c3e69bec86.json b/change/react-native-windows-aca77b5b-e0c0-4051-bb1d-70c3e69bec86.json new file mode 100644 index 00000000000..50bd6d1cbf5 --- /dev/null +++ b/change/react-native-windows-aca77b5b-e0c0-4051-bb1d-70c3e69bec86.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "[Fabric] Fixing Clipped Property for Modal Component", + "packageName": "react-native-windows", + "email": "kvineeth@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp index d67f6d9ca29..5d66f5f1efe 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp @@ -561,7 +561,18 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPropertyValue(PROPERT } case UIA_IsOffscreenPropertyId: { pRetVal->vt = VT_BOOL; - pRetVal->boolVal = (compositionView->getClipState() == ClipState::FullyClipped) ? VARIANT_TRUE : VARIANT_FALSE; + + // Check if element is offscreen - consider modal content special case + bool isOffscreen = (compositionView->getClipState() == ClipState::FullyClipped); + + // Modal content may appear clipped but is visible in its own window + if (isOffscreen) { + if (const auto hwnd = compositionView->GetHwndForParenting()) { + isOffscreen = !(IsWindowVisible(hwnd) && !IsIconic(hwnd)); + } + } + + pRetVal->boolVal = isOffscreen ? VARIANT_TRUE : VARIANT_FALSE; break; } case UIA_HelpTextPropertyId: {