NativeScript plugin that allows you to easily add a side drawer (side menu) to your projects. This can be used as an Open Source alternative to RadSideDrawer.
iOS Demo | Android Demo |
- Installation
- Configuration
- API
- Usage in Angular
- Usage in Vue
- Usage in Svelte
- Usage in React
- Demos and Development
ns plugin add @nativescript-community/ui-drawer
For gestures to work, make sure to add the following code block inside the main application file (e.g. app.ts):
import { install } from '@nativescript-community/ui-drawer';
install();
Property | Default | Type | Description |
---|---|---|---|
leftDrawer | undefined |
View |
View containing the content for the left side drawer |
rightDrawer | undefined |
View |
View containing the content for the right side drawer |
topDrawer | undefined |
View |
View containing the content for the top side drawer |
bottomDrawer | undefined |
View |
View containing the content for the bottom side drawer |
mainContent | undefined |
View |
View containing the main content of the app |
gestureEnabled | true |
boolean |
Boolean setting if swipe gestures are enabled |
backdropColor | new Color('rgba(0, 0, 0, 0.7)') |
Color |
The color of the backdrop behind the drawer |
leftDrawerMode | slide |
Mode ('under' or 'slide') |
The color of the backdrop behind the drawer |
rightDrawerMode | slide |
Mode ('under' or 'slide') |
The color of the backdrop behind the drawer |
gestureMinDist | 10 |
number | The min "swipe" distance to trigger the menu gesture |
leftSwipeDistance | 40 |
number | The "left" zone size from where the gesture is recognized |
rightSwipeDistance | 40 |
number | The "right" zone size from where the gesture is recognized |
topSwipeDistance | 40 |
number | The "top" zone size from where the gesture is recognized |
bottomSwipeDistance | 40 |
number | The "bottom" zone size from where the gesture is recognized |
leftOpenedDrawerAllowDraging | true |
boolean | Allow dragging the opened menu |
rightOpenedDrawerAllowDraging | true |
boolean | Allow dragging the opened menu |
topOpenedDrawerAllowDraging | true |
boolean | Allow dragging the opened menu |
bottomOpenedDrawerAllowDraging | true |
boolean | Allow dragging the opened menu |
Name | Return | Description |
---|---|---|
open() | void |
Programatically open the drawer |
close() | void |
Programatically close the drawer |
toggle() | void |
Programatically toggle the state of the drawer |
install() | void |
Install gestures |
Name | Event Data | Description |
---|---|---|
open | side , duration |
Drawer opens |
close | side , duration |
Drawer closes |
Import the module into your project.
import { DrawerModule } from "@nativescript-community/ui-drawer/angular";
@NgModule({
imports: [
DrawerModule
]
schemas: [
NO_ERRORS_SCHEMA
]
})
export class AppModule { }
- Basic Drawer
- A basic sliding drawer.
- All Sides
- An example of drawers on all sides: left, right, top, bottom.
Register the plugin in your app.ts
.
import DrawerElement from '@nativescript-community/ui-drawer/react';
DrawerElement.register();
- Basic Drawer
- A basic sliding drawer.
- All Sides
- An example of drawers on all sides: left, right, top, bottom.
Register the plugin in your app.ts
.
import DrawerElement from '@nativescript-community/ui-drawer/svelte';
DrawerElement.register();
- Basic Drawer
- A basic sliding drawer.
- All Sides
- An example of drawers on all sides: left, right, top, bottom.
Register the plugin in your app.js
.
import DrawerPlugin from '@nativescript-community/ui-drawer/vue'
Vue.use(DrawerPlugin);
- Basic Drawer
- A basic sliding drawer.
- All Sides
- An example of drawers on all sides: left, right, top, bottom.
To run the demos, you must clone this repo recursively.
git clone https://github.com/nativescript-community/ui-drawer.git --recursive
npm i # or 'yarn install' or 'pnpm install'
To start the interactive menu, run npm start
(or yarn start
or pnpm start
). This will list all of the commonly used scripts.
npm run build
# or for Angular
npm run build.angular
npm run demo.[ng|react|svelte|vue].[ios|android]
# Example:
npm run demo.svelte.ios