diff --git a/packages/pluggableWidgets/bottom-sheet-native/CHANGELOG.md b/packages/pluggableWidgets/bottom-sheet-native/CHANGELOG.md index a3dd5af6e..6bc0a5348 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/CHANGELOG.md +++ b/packages/pluggableWidgets/bottom-sheet-native/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Fixed + +- Fixed bottomsheet issue to close when the trigger attribute changes. + ## [5.3.1] - 2026-7-3 ### Fixed diff --git a/packages/pluggableWidgets/bottom-sheet-native/package.json b/packages/pluggableWidgets/bottom-sheet-native/package.json index ce8f2f345..195ae09e3 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/package.json +++ b/packages/pluggableWidgets/bottom-sheet-native/package.json @@ -1,7 +1,7 @@ { "name": "bottom-sheet-native", "widgetName": "BottomSheet", - "version": "5.3.1", + "version": "5.3.2", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx index c999cc9a1..c5d77cab1 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx +++ b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx @@ -154,4 +154,21 @@ describe("Bottom sheet", () => { expect(component.toJSON()).toMatchSnapshot(); }); + + it("closes custom modal when triggerAttribute is set to false", () => { + const triggerAttribute = new EditableValueBuilder().withValue(true).build(); + const props = { + ...defaultProps, + modalRendering: "custom" as const, + largeContent: Content, + triggerAttribute + }; + + const { rerender } = render(); + + triggerAttribute.setValue(false); + rerender(); + + expect(triggerAttribute.value).toBe(false); + }); }); diff --git a/packages/pluggableWidgets/bottom-sheet-native/src/components/CustomModalSheet.tsx b/packages/pluggableWidgets/bottom-sheet-native/src/components/CustomModalSheet.tsx index 9d0d6ba28..2f0fccea2 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/components/CustomModalSheet.tsx +++ b/packages/pluggableWidgets/bottom-sheet-native/src/components/CustomModalSheet.tsx @@ -1,4 +1,4 @@ -import { ReactElement, ReactNode, useCallback, useRef, useState } from "react"; +import { ReactElement, ReactNode, useCallback, useEffect, useRef, useState } from "react"; import { Modal, Pressable, useWindowDimensions } from "react-native"; import BottomSheet, { BottomSheetBackdrop, @@ -33,6 +33,12 @@ export const CustomModalSheet = (props: CustomModalSheetProps): ReactElement => bottomSheetRef.current?.close(); }, []); + useEffect(() => { + if (!externalOpen && mounted && didOpenRef.current) { + close(); + } + }, [externalOpen, mounted, close]); + const handleModalShow = useCallback(() => { setReady(true); }, []); diff --git a/packages/pluggableWidgets/bottom-sheet-native/src/components/NativeBottomSheet.tsx b/packages/pluggableWidgets/bottom-sheet-native/src/components/NativeBottomSheet.tsx index 71e8f9868..434ecdd81 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/components/NativeBottomSheet.tsx +++ b/packages/pluggableWidgets/bottom-sheet-native/src/components/NativeBottomSheet.tsx @@ -82,6 +82,12 @@ export const NativeBottomSheet = (props: NativeBottomSheetProps): ReactElement = bottomSheetRef.current?.close(); }, []); + useEffect(() => { + if (!externalOpen && mounted && didOpenRef.current) { + close(); + } + }, [externalOpen, mounted, close]); + const handleChange = useCallback( (index: number) => { if (index === 0) { diff --git a/packages/pluggableWidgets/bottom-sheet-native/src/package.xml b/packages/pluggableWidgets/bottom-sheet-native/src/package.xml index 0bd9676f9..ad216156a 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/package.xml +++ b/packages/pluggableWidgets/bottom-sheet-native/src/package.xml @@ -1,6 +1,6 @@ - +