react-native-safe-area-context#SafeAreaProvider JavaScript Examples
The following examples show how to use
react-native-safe-area-context#SafeAreaProvider.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: App.js From Legacy with Mozilla Public License 2.0 | 6 votes |
export default function () { // Setup Providers
React.useEffect(() => {
const subscription = Notifications.addNotificationResponseReceivedListener(response => {
const link = response.notification.request.content.data?.body?.link;
if(link) Linking.openURL(link);
});
return () => subscription.remove();
}, []);
return <SafeAreaProvider>
<ReduxProvider store={store}>
<ThemeWrapper />
</ReduxProvider>
</SafeAreaProvider>
}
Example #2
Source File: HomeDrawer.js From guardioes-app with Apache License 2.0 | 6 votes |
HomeDrawer = () => {
return (
<SafeAreaProvider>
<Drawer.Navigator
drawerContent={({ navigation }) => (
<LeftMenu navigation={navigation} />
)}
drawerStyle={{
backgroundColor: 'transparent',
width: scale(290),
}}
>
<Drawer.Screen name='TabBar' component={TabBar} />
</Drawer.Navigator>
</SafeAreaProvider>
)
}
Example #3
Source File: app.js From turkce-sozluk with MIT License | 6 votes |
function App() {
return (
<ThemeProvider theme={theme}>
<SafeAreaProvider>
<Navigation />
</SafeAreaProvider>
</ThemeProvider>
)
}
Example #4
Source File: App.js From hero with MIT License | 6 votes |
export default function App() {
let [fontsLoaded] = useFonts({
"FlameSans-Regular": require("./app/assets/fonts/FlameSans-Regular.ttf"),
"Flame-Regular": require("./app/assets/fonts/Flame-Regular.ttf"),
"Flame-Bold": require("./app/assets/fonts/Flame-Bold.ttf"),
Nunito_400Regular,
Nunito_700Bold,
Nunito_900Black,
Righteous_400Regular,
});
if (!fontsLoaded) {
return <AppLoading />;
} else {
return (
<SafeAreaProvider>
<HeroesProvider>
<NavigationContainer>
<HomeNavigation />
</NavigationContainer>
</HeroesProvider>
</SafeAreaProvider>
);
}
}
Example #5
Source File: App.js From react-native-big-list with Apache License 2.0 | 6 votes |
export default function App() {
return (
<PaperProvider>
<SafeAreaProvider>
<Home />
</SafeAreaProvider>
</PaperProvider>
);
}
Example #6
Source File: App.js From juken with MIT License | 6 votes |
render() {
return (
<SafeAreaProvider>
<StoreProvider store={store}>
<AppearanceProvider>
<ActionSheetProvider>
<>
{!this.state.hasError && <Main/>}
{this.state.hasError && (
<Message
error
title="ごめんなさい!"
errorMessage={this.state.errorMessage}
description={
"Something went wrong and Juken has crashed. Reporting " +
"this error along with the screenshot of this screen and " +
"steps of reproduction would be very much appreciated!"
}
/>
)}
</>
</ActionSheetProvider>
</AppearanceProvider>
</StoreProvider>
</SafeAreaProvider>
);
}
Example #7
Source File: App.js From playground with MIT License | 6 votes |
function App() {
return (
<SafeAreaInsetsContext.Provider>
<SafeAreaProvider>
<style type="text/css">{`
@font-face {
font-family: 'MaterialIcons';
src: url(${require("react-native-vector-icons/Fonts/MaterialIcons.ttf")}) format('truetype');
}
@font-face {
font-family: 'FontAwesome';
src: url(${require("react-native-vector-icons/Fonts/FontAwesome.ttf")}) format('truetype');
}
@font-face {
font-family: 'MaterialCommunityIcons';
src: url(${require("react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf")}) format('truetype');
}
`}</style>
<Root />
</SafeAreaProvider>
</SafeAreaInsetsContext.Provider>
);
}
Example #8
Source File: app.js From reddit-clone with MIT License | 6 votes |
App = () => {
return (
<SafeAreaProvider>
<AuthProvider>
<ThemeProvider>
<Navigation />
</ThemeProvider>
</AuthProvider>
</SafeAreaProvider>
)
}
Example #9
Source File: App.js From intentional-walk with MIT License | 6 votes |
App: () => React$Node = () => {
return (
<SafeAreaProvider>
<NavigationContainer
ref={navigationRef}
onStateChange={state => onStateChange(state)}>
<RootStack.Navigator mode="modal">
<RootStack.Screen
name="MainStack"
component={MainStack}
options={{headerShown: false}}
/>
<RootStack.Screen
name="OnboardingStack"
component={OnboardingStack}
options={{headerShown: false, gestureEnabled: false}}
/>
</RootStack.Navigator>
</NavigationContainer>
</SafeAreaProvider>
);
}
Example #10
Source File: App.js From tcap-mobile with GNU General Public License v3.0 | 6 votes |
export default function App() {
return (
<Provider store={reduxStore}>
<SafeAreaProvider>
<StatusBarColor
backgroundColor={Colors.primaryBg}
barStyle="light-content"
/>
<NavigationContainer>
<AppRouter />
</NavigationContainer>
</SafeAreaProvider>
</Provider>
);
}
Example #11
Source File: App.js From actual with MIT License | 5 votes |
render() {
let { loadingText } = this.props;
let { initializing } = this.state;
let content;
let showBackground = true;
if (!initializing) {
if (!this.props.budgetId) {
content = <ManagementApp />;
} else {
content = <FinancesApp />;
showBackground = false;
}
}
return (
<SafeAreaProvider initialMetrics={initialWindowMetrics}>
<View style={{ flex: 1 }}>
<StatusBar translucent backgroundColor="transparent" />
{showBackground && (
<>
<View
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
backgroundColor: colors.n3,
justifyContent: 'center',
alignItems: 'center'
}}
>
{(initializing || loadingText != null) && (
<Image style={{ width: 64, height: 64 }} source={logo} />
)}
</View>
<View
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
justifyContent: 'center',
alignItems: 'center'
}}
>
{(initializing || loadingText != null) && (
<View style={{ paddingTop: 125, alignItems: 'center' }}>
{loadingText !== '' && loadingText !== null && (
<Text
style={{
color: 'white',
fontSize: 16,
marginVertical: 10
}}
>
{loadingText}
</Text>
)}
<AnimatedLoading width={30} height={30} color="white" />
</View>
)}
</View>
</>
)}
{content}
</View>
</SafeAreaProvider>
);
}
Example #12
Source File: index.js From stayaway-app with European Union Public License 1.2 | 5 votes |
export default function Root () {
const dispatch = useDispatch();
const appLaunched = useSelector(isAppLaunched);
const storedTheme = useSelector(getTheme);
const systemTheme = useColorScheme();
const theme = THEMES[storedTheme] || THEMES[systemTheme || LIGHT];
// Set navigationr reference
const ref = useRef(null);
NavigationService.setNavigationRef(ref);
// Startup app
useEffect(() => {
if (appLaunched) {
setTimeout(() => {
// Set status bar
if (Platform.OS === 'android') {
StatusBar.setBackgroundColor('transparent');
StatusBar.setTranslucent(true);
}
// Hide splash screen on resume
SplashScreen.hide();
}, 1500);
} else {
// Dispatch startup action
dispatch(startupActions.startup());
}
}, [appLaunched]);
// Re-render when theme changes
useEffect(() => {}, [storedTheme]);
if (! appLaunched) {
return null;
}
return (
<ThemeProvider value={theme}>
<SafeAreaProvider initialMetrics={initialWindowMetrics}>
<NavigationContainer ref={ref}>
<RootNavigator />
</NavigationContainer>
<Modals />
</SafeAreaProvider>
</ThemeProvider>
);
}
Example #13
Source File: App.js From filen-mobile with GNU Affero General Public License v3.0 | 4 votes |
App = memo(() => {
const [isLoggedIn, setIsLoggedIn] = useMMKVBoolean("isLoggedIn", storage)
const setDimensions = useStore(useCallback(state => state.setDimensions))
const [darkMode, setDarkMode] = useMMKVBoolean("darkMode", storage)
const [setupDone, setSetupDone] = useState(false)
const [currentScreenName, setCurrentScreenName] = useState("MainScreen")
const setCurrentRoutes = useStore(useCallback(state => state.setCurrentRoutes))
const toastBottomOffset = useStore(useCallback(state => state.toastBottomOffset))
const toastTopOffset = useStore(useCallback(state => state.toastTopOffset))
const setNetInfo = useStore(useCallback(state => state.setNetInfo))
const showNavigationAnimation = useStore(useCallback(state => state.showNavigationAnimation))
const [userId, setUserId] = useMMKVNumber("userId", storage)
const [cameraUploadEnabled, setCameraUploadEnabled] = useMMKVBoolean("cameraUploadEnabled:" + userId, storage)
const setBiometricAuthScreenState = useStore(useCallback(state => state.setBiometricAuthScreenState))
const setCurrentShareItems = useStore(useCallback(state => state.setCurrentShareItems))
const setAppState = useStore(useCallback(state => state.setAppState))
const [lang, setLang] = useMMKVString("lang", storage)
const [nodeJSAlive, setNodeJSAlive] = useState(true)
const setContentHeight = useStore(useCallback(state => state.setContentHeight))
const isDeviceReady = useStore(useCallback(state => state.isDeviceReady))
const [startOnCloudScreen, setStartOnCloudScreen] = useMMKVBoolean("startOnCloudScreen:" + userId, storage)
const [userSelectedTheme, setUserSelectedTheme] = useMMKVString("userSelectedTheme", storage)
const [currentDimensions, setCurrentDimensions] = useState({ window: Dimensions.get("window"), screen: Dimensions.get("screen") })
const handleShare = useCallback(async (items) => {
if(!items){
return false
}
if(typeof items !== "undefined"){
if(typeof items.data !== "undefined"){
if(items.data !== null){
if(items.data.length > 0){
await new Promise((resolve) => {
const wait = BackgroundTimer.setInterval(() => {
if(typeof navigationRef !== "undefined"){
const navState = navigationRef.getState()
if(typeof navState !== "undefined"){
if(typeof navState.routes !== "undefined"){
if(navState.routes.filter(route => route.name == "SetupScreen" || route.name == "BiometricAuthScreen" || route.name == "LoginScreen").length == 0){
if(storage.getBoolean("isLoggedIn")){
BackgroundTimer.clearInterval(wait)
return resolve()
}
}
}
}
}
}, 250)
})
let containsValidItems = true
if(Platform.OS == "android"){
if(Array.isArray(items.data)){
for(let i = 0; i < items.data.length; i++){
if(items.data[i].indexOf("file://") == -1 && items.data[i].indexOf("content://") == -1){
containsValidItems = false
}
}
}
else{
if(items.data.indexOf("file://") == -1 && items.data.indexOf("content://") == -1){
containsValidItems = false
}
}
}
else{
for(let i = 0; i < items.data.length; i++){
if(items.data[i].data.indexOf("file://") == -1 && items.data[i].data.indexOf("content://") == -1){
containsValidItems = false
}
}
}
if(containsValidItems){
setCurrentShareItems(items)
showToast({ type: "upload" })
}
else{
showToast({ message: i18n(lang, "shareMenuInvalidType") })
}
}
}
}
}
})
const initBackgroundFetch = useCallback(() => {
BackgroundFetch.configure({
minimumFetchInterval: 15,
requiredNetworkType: BackgroundFetch.NETWORK_TYPE_ANY,
stopOnTerminate: false,
startOnBoot: true,
enableHeadless: false
}, (taskId) => {
console.log("[" + Platform.OS + "] BG fetch running:", taskId)
const waitForInit = (callback) => {
const timeout = (+new Date() + 15000)
const wait = BackgroundTimer.setInterval(() => {
if(timeout > (+new Date())){
if(isLoggedIn && cameraUploadEnabled && setupDone && isDeviceReady){
BackgroundTimer.clearInterval(wait)
return callback(false)
}
}
else{
BackgroundTimer.clearInterval(wait)
return callback(true)
}
}, 10)
}
waitForInit((timedOut) => {
if(timedOut){
console.log("[" + Platform.OS + "] BG fetch timed out:", taskId)
BackgroundFetch.finish(taskId)
}
else{
runCameraUpload({
runOnce: true,
maxQueue: 1,
callback: () => {
console.log("[" + Platform.OS + "] BG fetch done:", taskId)
BackgroundFetch.finish(taskId)
}
})
}
})
}, (taskId) => {
console.log("[" + Platform.OS + "] BG fetch timeout:", taskId)
BackgroundFetch.finish(taskId)
}).then((status) => {
console.log("[" + Platform.OS + "] BG fetch init status:", status)
}).catch((err) => {
console.log("[" + Platform.OS + "] BG fetch init error:", err)
})
})
const setAppearance = useCallback(() => {
BackgroundTimer.setTimeout(() => {
if(typeof userSelectedTheme == "string" && userSelectedTheme.length > 1){
if(userSelectedTheme == "dark"){
setDarkMode(true)
setStatusBarStyle(true)
}
else{
setDarkMode(false)
setStatusBarStyle(false)
}
}
else{
if(Appearance.getColorScheme() == "dark"){
setDarkMode(true)
setStatusBarStyle(true)
}
else{
setDarkMode(false)
setStatusBarStyle(false)
}
}
}, 1000) // We use a timeout due to the RN appearance event listener firing both "dark" and "light" on app resume which causes the screen to flash for a second
})
useEffect(() => {
if(isLoggedIn && cameraUploadEnabled && setupDone){
runCameraUpload({
maxQueue: 10,
runOnce: false,
callback: undefined
})
}
}, [isLoggedIn, cameraUploadEnabled, setupDone])
useEffect(() => {
initBackgroundFetch()
//global.nodeThread.pingPong(() => {
// setNodeJSAlive(false)
//})
NetInfo.fetch().then((state) => {
setNetInfo(state)
}).catch((err) => {
console.log(err)
})
//BackgroundTimer.start()
const appStateListener = AppState.addEventListener("change", (nextAppState) => {
setAppState(nextAppState)
if(nextAppState == "background"){
if(Math.floor(+new Date()) > storage.getNumber("biometricPinAuthTimeout:" + userId) && storage.getBoolean("biometricPinAuth:" + userId)){
setBiometricAuthScreenState("auth")
storage.set("biometricPinAuthTimeout:" + userId, (Math.floor(+new Date()) + 500000))
navigationRef.current.dispatch(StackActions.push("BiometricAuthScreen"))
}
}
if(nextAppState == "active"){
checkAppVersion({ navigation: navigationRef })
}
})
const netInfoListener = NetInfo.addEventListener((state) => {
setNetInfo(state)
})
const dimensionsListener = Dimensions.addEventListener("change", ({ window, screen }) => {
setDimensions({ window, screen })
setCurrentDimensions({ window, screen })
})
const navigationRefListener = navigationRef.addListener("state", (event) => {
if(typeof event.data !== "undefined"){
if(typeof event.data.state !== "undefined"){
if(typeof event.data.state.routes !== "undefined"){
//console.log("Current Screen:", event.data.state.routes[event.data.state.routes.length - 1].name, event.data.state.routes[event.data.state.routes.length - 1].params)
setCurrentScreenName(event.data.state.routes[event.data.state.routes.length - 1].name)
setCurrentRoutes(event.data.state.routes)
}
}
}
})
ShareMenu.getInitialShare(handleShare)
const shareMenuListener = ShareMenu.addNewShareListener(handleShare)
setAppearance()
const appearanceListener = Appearance.addChangeListener(() => {
setAppearance()
})
if(isLoggedIn && !setupDone){
setup({ navigation: navigationRef }).then(() => {
setSetupDone(true)
if(storage.getBoolean("biometricPinAuth:" + userId)){
setBiometricAuthScreenState("auth")
storage.set("biometricPinAuthTimeout:" + userId, (Math.floor(+new Date()) + 500000))
navigationRef.current.dispatch(StackActions.push("BiometricAuthScreen"))
}
else{
navigationRef.current.dispatch(CommonActions.reset({
index: 0,
routes: [
{
name: "MainScreen",
params: {
parent: startOnCloudScreen ? (storage.getBoolean("defaultDriveOnly:" + userId) ? storage.getString("defaultDriveUUID:" + userId) : "base") : "recents"
}
}
]
}))
}
}).catch((err) => {
console.log(err)
if(typeof storage.getString("masterKeys") == "string" && typeof storage.getString("apiKey") == "string" && typeof storage.getString("privateKey") == "string" && typeof storage.getString("publicKey") == "string" && typeof storage.getNumber("userId") == "number"){
if(storage.getString("masterKeys").length > 16 && storage.getString("apiKey").length > 16 && storage.getString("privateKey").length > 16 && storage.getString("publicKey").length > 16 && storage.getNumber("userId") !== 0){
setSetupDone(true)
if(storage.getBoolean("biometricPinAuth:" + userId)){
setBiometricAuthScreenState("auth")
storage.set("biometricPinAuthTimeout:" + userId, (Math.floor(+new Date()) + 500000))
navigationRef.current.dispatch(StackActions.push("BiometricAuthScreen"))
}
else{
navigationRef.current.dispatch(CommonActions.reset({
index: 0,
routes: [
{
name: "MainScreen",
params: {
parent: startOnCloudScreen ? (storage.getBoolean("defaultDriveOnly:" + userId) ? storage.getString("defaultDriveUUID:" + userId) : "base") : "recents"
}
}
]
}))
}
}
else{
setSetupDone(false)
showToast({ message: i18n(lang, "appSetupNotPossible") })
}
}
else{
setSetupDone(false)
showToast({ message: i18n(lang, "appSetupNotPossible") })
}
})
}
// Reset on app launch
storage.set("cameraUploadRunning", false)
return () => {
dimensionsListener.remove()
shareMenuListener.remove()
navigationRef.removeListener(navigationRefListener)
navigationRefListener()
appearanceListener.remove()
netInfoListener()
appStateListener.remove()
}
}, [])
return (
<>
<NavigationContainer ref={navigationRef}>
<Fragment>
<SafeAreaProvider style={{
backgroundColor: darkMode ? "black" : "white",
}}>
<SafeAreaView mode="padding" style={{
backgroundColor: currentScreenName == "ImageViewerScreen" ? "black" : (darkMode ? "black" : "white"),
paddingTop: Platform.OS == "android" ? 5 : 5,
height: "100%",
width: "100%"
}}>
<View style={{
width: currentScreenName == "ImageViewerScreen" ? currentDimensions.screen.width : "100%",
height: currentScreenName == "ImageViewerScreen" ? currentDimensions.screen.height : "100%",
backgroundColor: darkMode ? "black" : "white"
}} onLayout={(e) => setContentHeight(e.nativeEvent.layout.height)}>
{
nodeJSAlive ? (
<>
<Stack.Navigator initialRouteName={isLoggedIn ? (setupDone ? "MainScreen" : "SetupScreen") : "LoginScreen"} screenOptions={{
contentStyle: {
backgroundColor: darkMode ? "black" : "white"
},
headerStyle: {
backgroundColor: darkMode ? "black" : "white"
},
headerShown: false,
animation: showNavigationAnimation ? "default" : "none"
}}>
<Stack.Screen name="SetupScreen" component={SetupScreen} options={{
title: "SetupScreen"
}}></Stack.Screen>
<Stack.Screen name="LoginScreen" options={{
title: "LoginScreen"
}}>{(props) => <LoginScreen {...props} setSetupDone={setSetupDone} />}</Stack.Screen>
<Stack.Screen name="RegisterScreen" component={RegisterScreen} options={{
title: "RegisterScreen"
}}></Stack.Screen>
<Stack.Screen name="ForgotPasswordScreen" component={ForgotPasswordScreen} options={{
title: "ForgotPasswordScreen"
}}></Stack.Screen>
<Stack.Screen name="ResendConfirmationScreen" component={ResendConfirmationScreen} options={{
title: "ResendConfirmationScreen"
}}></Stack.Screen>
<Stack.Screen name="MainScreen" initialParams={{ parent: startOnCloudScreen ? (storage.getBoolean("defaultDriveOnly:" + userId) ? storage.getString("defaultDriveUUID:" + userId) : "base") : "recents" }} component={MainScreen} options={{
title: "MainScreen"
}}></Stack.Screen>
<Stack.Screen name="SettingsScreen" component={SettingsScreen} options={{
title: "SettingsScreen"
}}></Stack.Screen>
<Stack.Screen name="TransfersScreen" component={TransfersScreen} options={{
title: "TransfersScreen"
}}></Stack.Screen>
<Stack.Screen name="CameraUploadScreen" component={CameraUploadScreen} options={{
title: "CameraUploadScreen"
}}></Stack.Screen>
<Stack.Screen name="BiometricAuthScreen" component={BiometricAuthScreen} options={{
title: "BiometricAuthScreen"
}}></Stack.Screen>
<Stack.Screen name="LanguageScreen" component={LanguageScreen} options={{
title: "LanguageScreen"
}}></Stack.Screen>
<Stack.Screen name="SettingsAdvancedScreen" component={SettingsAdvancedScreen} options={{
title: "SettingsAdvancedScreen"
}}></Stack.Screen>
<Stack.Screen name="SettingsAccountScreen" component={SettingsAccountScreen} options={{
title: "SettingsAccountScreen"
}}></Stack.Screen>
<Stack.Screen name="EventsScreen" component={EventsScreen} options={{
title: "EventsScreen"
}}></Stack.Screen>
<Stack.Screen name="EventsInfoScreen" component={EventsInfoScreen} options={{
title: "EventsInfoScreen"
}}></Stack.Screen>
<Stack.Screen name="GDPRScreen" component={GDPRScreen} options={{
title: "GDPRScreen"
}}></Stack.Screen>
<Stack.Screen name="InviteScreen" component={InviteScreen} options={{
title: "InviteScreen"
}}></Stack.Screen>
<Stack.Screen name="TwoFactorScreen" component={TwoFactorScreen} options={{
title: "TwoFactorScreen"
}}></Stack.Screen>
<Stack.Screen name="ChangeEmailPasswordScreen" component={ChangeEmailPasswordScreen} options={{
title: "ChangeEmailPasswordScreen"
}}></Stack.Screen>
<Stack.Screen name="TextEditorScreen" component={TextEditorScreen} options={{
title: "TextEditorScreen"
}}></Stack.Screen>
<Stack.Screen name="UpdateScreen" component={UpdateScreen} options={{
title: "UpdateScreen"
}}></Stack.Screen>
<Stack.Screen name="ImageViewerScreen" component={ImageViewerScreen} options={{
title: "ImageViewerScreen",
presentation: "fullScreenModal"
}}></Stack.Screen>
</Stack.Navigator>
<>
{
setupDone && isLoggedIn && ["MainScreen", "SettingsScreen", "TransfersScreen", "CameraUploadScreen", "EventsScreen", "EventsInfoScreen", "SettingsAdvancedScreen", "SettingsAccountScreen", "LanguageScreen", "GDPRScreen", "InviteScreen", "TwoFactorScreen", "ChangeEmailPasswordScreen"].includes(currentScreenName) && (
<View style={{
position: "relative",
width: "100%",
bottom: 0,
height: 50
}}>
<BottomBar navigation={navigationRef} currentScreenName={currentScreenName} />
</View>
)
}
</>
</>
) : (
<View style={{
width: "100%",
height: "100%",
justifyContent: "center",
alignItems: "center"
}}>
<Ionicon name="information-circle-outline" size={70} color={darkMode ? "white" : "black"} />
<Text style={{
color: darkMode ? "white" : "black",
marginTop: 5,
width: "70%",
textAlign: "center"
}}>
{i18n(lang, "nodeJSProcessDied")}
</Text>
</View>
)
}
{
nodeJSAlive && (
<>
<TransfersIndicator navigation={navigationRef} />
<TopBarActionSheet navigation={navigationRef} />
<BottomBarAddActionSheet navigation={navigationRef} />
<ItemActionSheet navigation={navigationRef} />
<FolderColorActionSheet navigation={navigationRef} />
<PublicLinkActionSheet navigation={navigationRef} />
<ShareActionSheet navigation={navigationRef} />
<FileVersionsActionSheet navigation={navigationRef} />
<ProfilePictureActionSheet navigation={navigationRef} />
<SortByActionSheet navigation={navigationRef} />
</>
)
}
</View>
</SafeAreaView>
</SafeAreaProvider>
{
nodeJSAlive && (
<>
<Disable2FATwoFactorDialog navigation={navigationRef} />
<DeleteAccountTwoFactorDialog navigation={navigationRef} />
<RedeemCodeDialog navigation={navigationRef} />
<ConfirmStopSharingDialog navigation={navigationRef} />
<ConfirmRemoveFromSharedInDialog navigation={navigationRef} />
<ConfirmPermanentDeleteDialog navigation={navigationRef} />
<RenameDialog navigation={navigationRef} />
<CreateFolderDialog navigation={navigationRef} />
<CreateTextFileDialog navigation={navigationRef} />
<BulkShareDialog navigation={navigationRef} />
<FullscreenLoadingModal navigation={navigationRef} />
</>
)
}
</Fragment>
</NavigationContainer>
<Toast
ref={(ref) => global.toast = ref}
offsetBottom={toastBottomOffset}
offsetTop={toastTopOffset}
pointerEvents="box-none"
style={{
zIndex: 99999
}}
/>
</>
)
})
Example #14
Source File: header.playground.jsx From playground with MIT License | 4 votes |
HeaderPlayground = () => {
const params = useView({
componentName: "Header",
props: {
backgroundColor: {
type: PropTypes.String,
value: null,
},
backgroundImage: {
type: PropTypes.Object,
value: null,
},
backgroundImageStyle: {
type: PropTypes.Object,
value: `{}`,
},
barStyle: {
type: PropTypes.Enum,
options: {
default: "default",
"light-content": "light-content",
"dark-content": "dark-content",
},
value: "default",
},
centerComponent: {
type: PropTypes.Object,
value: `{ text: 'MY TITLE', style: { color: '#fff' } }`,
description:
"{ text: string, ...Text props} OR { icon: string, ...Icon props} OR React element or component",
},
centerContainerStyle: {
type: PropTypes.Object,
value: `{}`,
},
containerStyle: {
type: PropTypes.Object,
value: `{width:350}`,
},
leftComponent: {
type: PropTypes.Object,
value: `{ icon: 'menu', color: '#fff' }`,
},
leftContainerStyle: {
type: PropTypes.Object,
value: `{}`,
description: `{...Gradient props}`,
},
linearGradientProps: {
type: PropTypes.Object,
value: `{}`,
},
placement: {
type: PropTypes.Enum,
options: {
center: "center",
left: "left",
right: "right",
},
value: "center",
},
rightComponent: {
type: PropTypes.Object,
value: `{ icon: 'home', color: '#fff' }`,
},
rightContainerStyle: {
type: PropTypes.Object,
value: `{}`,
},
statusBarProps: {
type: PropTypes.Object,
value: `{}`,
},
ViewComponent: {
type: PropTypes.ReactNode,
value: null,
},
},
scope: {
Header,
Icon,
},
imports: {
"react-native-elements": {
named: ["Header", "Icon"],
},
"react-native-safe-area-context": {
named: ["SafeAreaProvider"],
},
},
});
return (
<React.Fragment>
<SafeAreaProvider>
<Playground params={params} />
</SafeAreaProvider>
</React.Fragment>
);
}