From d8c670eeb1a3942711923887de161a0a9caf5be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Boro=C5=84?= Date: Mon, 25 May 2026 10:03:37 +0200 Subject: [PATCH 01/16] Define fitToContents for public API --- .../gamma/modals/form-sheet/FormSheet.tsx | 6 ++++-- .../gamma/modals/form-sheet/FormSheet.types.ts | 3 ++- .../gamma/modals/form-sheet/FormSheetUtils.ts | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/components/gamma/modals/form-sheet/FormSheet.tsx b/src/components/gamma/modals/form-sheet/FormSheet.tsx index 140f872507..24fe102c51 100644 --- a/src/components/gamma/modals/form-sheet/FormSheet.tsx +++ b/src/components/gamma/modals/form-sheet/FormSheet.tsx @@ -6,6 +6,7 @@ import { resolveInitialDetentIndex, resolveLargestUndimmedDetentIndex, resolveNativeCornerRadius, + resolveNativeDetents, } from './FormSheetUtils'; export function FormSheet(props: FormSheetProps) { @@ -18,8 +19,9 @@ export function FormSheet(props: FormSheetProps) { } = props; const nativeCornerRadius = resolveNativeCornerRadius(preferredCornerRadius); + const nativeDetents = resolveNativeDetents(detents); - const detentsCount = detents?.length ?? 0; + const detentsCount = nativeDetents?.length ?? 0; const resolvedInitialDetentIndex = resolveInitialDetentIndex( initialDetentIndex, @@ -34,7 +36,7 @@ export function FormSheet(props: FormSheetProps) { return ( Date: Mon, 25 May 2026 10:13:38 +0200 Subject: [PATCH 02/16] Prepare SFT --- .../single-feature-tests/form-sheet/index.ts | 2 + .../index.tsx | 68 +++++++++++++++++++ .../scenario-description.ts | 10 +++ .../scenario.md | 45 ++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 apps/src/tests/single-feature-tests/form-sheet/test-form-sheet-fit-to-contents-ios/index.tsx create mode 100644 apps/src/tests/single-feature-tests/form-sheet/test-form-sheet-fit-to-contents-ios/scenario-description.ts create mode 100644 apps/src/tests/single-feature-tests/form-sheet/test-form-sheet-fit-to-contents-ios/scenario.md diff --git a/apps/src/tests/single-feature-tests/form-sheet/index.ts b/apps/src/tests/single-feature-tests/form-sheet/index.ts index 35eff57f39..9f545bfbac 100644 --- a/apps/src/tests/single-feature-tests/form-sheet/index.ts +++ b/apps/src/tests/single-feature-tests/form-sheet/index.ts @@ -1,6 +1,7 @@ import type { ScenarioGroup } from '@apps/tests/shared/helpers'; import TestFormSheetBase from './test-form-sheet-base-ios'; import TestFormSheetExpandScrollView from './test-form-sheet-expand-scroll-view-ios'; +import TestFormSheetFitToContents from './test-form-sheet-fit-to-contents-ios'; import TestFormSheetGrabberVisible from './test-form-sheet-grabber-visible-ios'; import TestFormSheetInitialDetentIndex from './test-form-sheet-initial-detent-index-ios'; import TestFormSheetLargestUndimmedDetentIndex from './test-form-sheet-largest-undimmed-detent-index-ios'; @@ -11,6 +12,7 @@ import TestFormSheetPresentationState from './test-form-sheet-presentation-state const scenarios = { TestFormSheetBase, TestFormSheetExpandScrollView, + TestFormSheetFitToContents, TestFormSheetGrabberVisible, TestFormSheetInitialDetentIndex, TestFormSheetLargestUndimmedDetentIndex, diff --git a/apps/src/tests/single-feature-tests/form-sheet/test-form-sheet-fit-to-contents-ios/index.tsx b/apps/src/tests/single-feature-tests/form-sheet/test-form-sheet-fit-to-contents-ios/index.tsx new file mode 100644 index 0000000000..9ab36c3392 --- /dev/null +++ b/apps/src/tests/single-feature-tests/form-sheet/test-form-sheet-fit-to-contents-ios/index.tsx @@ -0,0 +1,68 @@ +import React, { useState } from 'react'; +import { Button, StyleSheet, Text, View } from 'react-native'; +import { FormSheet } from 'react-native-screens/experimental'; +import { scenarioDescription } from './scenario-description'; +import { createScenario } from '@apps/tests/shared/helpers'; +import { Colors } from '@apps/shared/styling'; + +export function App() { + const [isOpen, setIsOpen] = useState(false); + + return ( + + FormSheet Test +