diff --git a/packages/pluggableWidgets/bottom-sheet-native/CHANGELOG.md b/packages/pluggableWidgets/bottom-sheet-native/CHANGELOG.md index 6ae644cae..4d5194493 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.0.5] - 2026-7-2 ### Fixed diff --git a/packages/pluggableWidgets/bottom-sheet-native/package.json b/packages/pluggableWidgets/bottom-sheet-native/package.json index ac07f41b5..e563bae79 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.0.5", + "version": "5.0.6", "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 de61be9e7..27d598fd7 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx +++ b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx @@ -135,4 +135,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 dcf20353d..abb57f3e3 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/package.xml +++ b/packages/pluggableWidgets/bottom-sheet-native/src/package.xml @@ -1,6 +1,6 @@ - +