Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/AlwaysLoveme/capacitor-plugin-safe-area

capacitor plugin to get safeArea info on Android and IOS, support Capacitor6
https://github.com/AlwaysLoveme/capacitor-plugin-safe-area

capacitor capacitor-plugin typescript

Last synced: 24 days ago
JSON representation

capacitor plugin to get safeArea info on Android and IOS, support Capacitor6

Awesome Lists containing this project

README

        

# capacitor-plugin-safe-area

















#### a capacitor plugin to get SafeArea info on Android and IOS, latest version is support for Capacitor v6.

### Version Support
- [x] v3.0.0 support Capacitor v6
- [x] v2.0.0 support Capacitor v5
- [x] v1.0.0 support Capacitor v4
- [x] v0.0.1 support Capacitor v3

> I'm very glad if the plugin helped you, please give it a star

## Install

```bash
npm install capacitor-plugin-safe-area@latest
npx cap sync
```

## Useage

```typescript
import { SafeArea } from 'capacitor-plugin-safe-area';

SafeArea.getSafeAreaInsets().then(({ insets }) => {
console.log(insets);
});

SafeArea.getStatusBarHeight().then(({ statusBarHeight }) => {
console.log(statusBarHeight, 'statusbarHeight');
});

await SafeArea.removeAllListeners();

// when safe-area changed
await SafeArea.addListener('safeAreaChanged', data => {
const { insets } = data;
for (const [key, value] of Object.entries(insets)) {
document.documentElement.style.setProperty(
`--safe-area-inset-${key}`,
`${value}px`,
);
}
});
```

## Use with TailwindCSS
Use `TailwindCSS` with the `plugin`: [https://github.com/mahyarmirrashed/tailwindcss-safe-area-capacitor](https://github.com/mahyarmirrashed/tailwindcss-safe-area-capacitor)

For more usage, please refer to the plugin repo

```tsx
import {useEffect} from 'react';
import { SafeArea } from 'capacitor-plugin-safe-area';

import type {FC} from 'react';

const App = () => {
useEffect(() => {
(async function(){
const safeAreaData = await SafeArea.getSafeAreaInsets();
const {insets} = safeAreaData;
for (const [key, value] of Object.entries(insets)) {
document.documentElement.style.setProperty(
`--safe-area-inset-${key}`,
`${value}px`,
);
}
})()
}, []);
return (


....


)
}
export default App;
```

## API

* [`getSafeAreaInsets()`](#getsafeareainsets)
* [`getStatusBarHeight()`](#getstatusbarheight)
* [`setImmersiveNavigationBar()`](#setimmersivenavigationbar)
* [`addListener('safeAreaChanged', ...)`](#addlistenersafeareachanged-)
* [`removeAllListeners()`](#removealllisteners)
* [Interfaces](#interfaces)

### getSafeAreaInsets()

```typescript
getSafeAreaInsets() => Promise
```

Get mobile SafeArea info

**Returns:** Promise<SafeAreaInsets>

--------------------

### getStatusBarHeight()

```typescript
getStatusBarHeight() => Promise
```

Get mobile statusbar height

**Returns:** Promise<StatusBarInfo>

--------------------

### setImmersiveNavigationBar()

```typescript
setImmersiveNavigationBar() => Promise
```

Set navigation bar immersive on Android , not implemented on IOS

--------------------

### addListener('safeAreaChanged', ...)

```typescript
addListener(event: 'safeAreaChanged', listenerFunc: (data: SafeAreaInsets) => void) => Promise
```

Event listener when safe-area changed

| Param | Type |
| ------------------ | ---------------------------------------------------------------------------- |
| **`event`** | 'safeAreaChanged' |
| **`listenerFunc`** | (data: SafeAreaInsets) => void |

**Returns:** Promise<PluginListenerHandle>

--------------------

### removeAllListeners()

```typescript
removeAllListeners() => Promise
```

Remove all native listeners for this plugin

--------------------

### Interfaces

#### SafeAreaInsets

| Prop | Type |
| ------------ | --------------------------------------------- |
| **`insets`** | SafeArea |

#### SafeArea

| Prop | Type |
| ------------ | ------------------- |
| **`top`** | number |
| **`right`** | number |
| **`bottom`** | number |
| **`left`** | number |

#### StatusBarInfo

| Prop | Type |
| --------------------- | ------------------- |
| **`statusBarHeight`** | number |

#### PluginListenerHandle

| Prop | Type |
| ------------ | ----------------------------------------- |
| **`remove`** | () => Promise<void> |