From a393c48e2eece73043385a60f4de44b699dec739 Mon Sep 17 00:00:00 2001 From: JesseCol <50150435+JesseCol@users.noreply.github.com> Date: Fri, 10 Jan 2025 14:48:02 -0800 Subject: [PATCH 01/10] Enable basic XamlIsland in rntester within playground app when UseExperimentalWinUI3 is true --- .../FabricXamlCalendarViewNativeComponent.js | 36 +++++ .../js/examples-win/XAML/FabricXamlExample.js | 67 ++++++++ .../src/js/utils/RNTesterList.windows.js | 5 + .../CustomComponent.cpp | 145 ++++++++++++++++++ .../Playground-Composition.cpp | 9 +- vnext/Microsoft.ReactNative.Cxx/XamlUtils.h | 12 ++ .../Fabric/Composition/Theme.cpp | 2 +- .../renderer/graphics/PlatformColorUtils.cpp | 2 +- .../Modules/AlertModule.cpp | 3 +- .../Modules/AppStateModule.cpp | 2 +- .../Modules/AppThemeModuleUwp.cpp | 4 +- .../Modules/AppearanceModule.cpp | 4 +- .../Modules/DeviceInfoModule.cpp | 6 +- .../Modules/I18nManagerModule.cpp | 2 +- .../Microsoft.ReactNative/Modules/Timing.cpp | 4 +- vnext/Microsoft.ReactNative/Views/DevMenu.cpp | 2 +- 16 files changed, 286 insertions(+), 19 deletions(-) create mode 100644 packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlCalendarViewNativeComponent.js create mode 100644 packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlExample.js diff --git a/packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlCalendarViewNativeComponent.js b/packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlCalendarViewNativeComponent.js new file mode 100644 index 00000000000..9de666f9ea2 --- /dev/null +++ b/packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlCalendarViewNativeComponent.js @@ -0,0 +1,36 @@ +/** + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * @format + * @flow + */ + +'use strict'; + +// Temporary test example for UseExperimentalWinUI3=true +// Remove when we get react-native-xaml working well for Fabric + +import type {HostComponent} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes'; +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; + +type SelectedDatesChangedEvent = $ReadOnly<{| + value: boolean, + target: Int32, + startDate: string, +|}>; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + + // Props + label: string, + + // Events + onSelectedDatesChanged?: ?DirectEventHandler, +|}>; + +type ComponentType = HostComponent; + +export default (codegenNativeComponent( + 'CalendarView', +): ComponentType); diff --git a/packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlExample.js b/packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlExample.js new file mode 100644 index 00000000000..4a79cc56a3d --- /dev/null +++ b/packages/@react-native-windows/tester/src/js/examples-win/XAML/FabricXamlExample.js @@ -0,0 +1,67 @@ +/** + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * @format + * @flow + */ + +'use strict'; + +// Temporary test example for UseExperimentalWinUI3=true +// Remove when we get react-native-xaml working well for Fabric + +import React, {useState} from 'react'; +import {Alert, Button, Text, View, ScrollView} from 'react-native'; +import CalendarView from './FabricXamlCalendarViewNativeComponent'; + +const XamlContentExample = () => { + const [selectedDate, setSelectedDate] = useState(true); + + return ( + + +