From 567277e7a4d9776abb02241a7486131c517c6ab2 Mon Sep 17 00:00:00 2001 From: gayablau Date: Sun, 29 Mar 2026 16:06:13 +0300 Subject: [PATCH] Add accessibility focus feature to TabController component - Introduced `accessibilityFocusOnSelected` state to manage focus for screen-reader users. - Added toggle button for enabling/disabling accessibility focus on selected tab. - Updated TabController and TabBarItem components to support accessibility focus behavior. - Enhanced documentation for `TabControllerProps` to include new accessibility prop. --- .../TabControllerScreen/index.tsx | 17 ++++++++++++++++- .../components/tabController/TabBarContext.ts | 1 + .../components/tabController/TabBarItem.tsx | 18 ++++++++++++++++-- .../src/components/tabController/index.tsx | 14 ++++++++++++-- 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/demo/src/screens/componentScreens/TabControllerScreen/index.tsx b/demo/src/screens/componentScreens/TabControllerScreen/index.tsx index b302337202..24a8f838b6 100644 --- a/demo/src/screens/componentScreens/TabControllerScreen/index.tsx +++ b/demo/src/screens/componentScreens/TabControllerScreen/index.tsx @@ -22,6 +22,7 @@ interface State { asCarousel: boolean; centerSelected: boolean; fewItems: boolean; + accessibilityFocusOnSelected: boolean; initialIndex: number; selectedIndex: number; key: string | number; @@ -35,6 +36,7 @@ class TabControllerScreen extends Component<{}, State> { asCarousel: true, centerSelected: false, fewItems: false, + accessibilityFocusOnSelected: false, initialIndex: 0, selectedIndex: 0, key: Date.now(), @@ -105,6 +107,10 @@ class TabControllerScreen extends Component<{}, State> { }); }; + toggleAccessibilityFocusOnSelected = () => { + this.setState({accessibilityFocusOnSelected: !this.state.accessibilityFocusOnSelected}); + }; + toggleCenterSelected = () => { const {fewItems, centerSelected} = this.state; this.setState({ @@ -160,7 +166,7 @@ class TabControllerScreen extends Component<{}, State> { } render() { - const {key, initialIndex, asCarousel, centerSelected, fewItems, items} = this.state; + const {key, initialIndex, asCarousel, centerSelected, fewItems, accessibilityFocusOnSelected, items} = this.state; return ( { initialIndex={initialIndex} onChangeIndex={this.onChangeIndex} items={items} + accessibilityFocusOnSelected={accessibilityFocusOnSelected} > { marginB-12 onPress={this.toggleCenterSelected} /> +