From 07b5802ee5e87c490f5401f6b788a08ec28ef365 Mon Sep 17 00:00:00 2001 From: Devan Buggay Date: Thu, 18 Sep 2025 00:36:55 -0700 Subject: [PATCH] focus/blur event emission (#53826) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53826 Wires up focus/blur events to the base event emitter, gated by enabledImperativeFocus feature flag. https://docs.google.com/document/d/1L4ViBnXq5hw858VoecZPmJE2llOB97Tjs2VtJ7RHlNI/edit?tab=t.0 Changelog: [Internal] Reviewed By: rozele Differential Revision: D82146275 fbshipit-source-id: 4b7bb1336f74bb0de2d7ecf0737dd63067bd558f --- .../renderer/components/view/BaseViewEventEmitter.cpp | 9 +++++++++ .../renderer/components/view/BaseViewEventEmitter.h | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.cpp index 506041daf32..4e981efd3f8 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.cpp @@ -112,4 +112,13 @@ void BaseViewEventEmitter::onLayout(const LayoutMetrics& layoutMetrics) const { }); } +#pragma mark - Focus +void BaseViewEventEmitter::onFocus() const { + dispatchEvent("focus"); +} + +void BaseViewEventEmitter::onBlur() const { + dispatchEvent("blur"); +} + } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.h b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.h index 584bc01239c..4b3c59b95bf 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.h @@ -32,6 +32,10 @@ class BaseViewEventEmitter : public TouchEventEmitter { void onLayout(const LayoutMetrics& layoutMetrics) const; +#pragma mark - Focus + void onFocus() const; + void onBlur() const; + private: /* * Contains the most recent `frame` and a `mutex` protecting access to it.