npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

raven-slide-menu

v0.4.0

Published

An Angular component for making menus that slide in from one of the four sides of the browser.

Downloads

12

Readme

Raven Slide Menu for Angular

An Angular component for making menus that slide in from one of the four sides of the browser.

Demo

Features

  • Fully stylable with CSS
  • Menu can remain visible on small/large viewports (controlled by media query)
  • Menu can push or overlay content

Installation

Install into your Angular project using NPM.

npm install raven-slide-menu --save

Import the SlideMenuModule into your module.

import { SlideMenuModule } from 'raven-slide-menu';

@NgModule({
  imports: [
    SlideMenuModule,
    // ...
  ],
  // ...
})
export class AppModule { }

Usage

Add a <raven-slide-menu> element to your template, and add menu content inside it.

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    <raven-slide-menu [(open)]="isOpened">
      <!-- Content to appear in menu -->
    </raven-slide-menu>
  `,
  styles: []
})
export class AppComponent { }

Options

| Option | Type | Description | Default Value | :-------------- | :------ | :---------------------------------------------------------------- | :------------ | open | boolean | Whether the menu is open or closed. | false | position | string | Set to "top", "right", "bottom" or "left". | "left" | pushContainer | string | A CSS selector for an element that will be "pushed" by the menu. | "" | pushPercent | number | The percentage amount an element will be "pushed" by the menu. | 100 | deactivateQuery | string | A CSS query that when matched will deactivate the slide menu. | ""

FAQ

Why is the pushContainer not being pushed?

The element used as the push container needs to use relative or absolute positioning. It also needs to have its transition properties set appropriately. Because the push container exists outside of the component, and we don't want to risk overriding your styles, we leave it to you to apply the following styles.

.rsm-push-container {
  position: relative;
  transition-property: top, right, bottom, left;
  transition-timing-function: ease-out;
  transition-duration: 200ms;
}

Can I remove or customize the hamburger menu button?

Yes, you can hide or style the button using CSS.

.rsm-button-wrapper {
  display: none;
}

If you hide the button, you can create your own, fully customizable button anywhere you like. Just set your custom button's (click) handler so that it opens/closes the menu and stops the event from propagating.

<button (click)="toggleMenu($event)">Toggle Menu</button>
toggleMenu(e) {
  this.isOpened = !this.isOpened;
  e.stopPropagation();
}

How can I reset the menu when it has dynamic content?

If the content inside the menu changes, it can affect the calculations that determine how it is positioned, causing it to be partly visible when it should be closed.

To fix this, close the menu after the content changes are complete. For example:

import { Component, ViewChild } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    <raven-slide-menu #slideMenu [(open)]="isOpened">
      <div>{{ someDynamicContent }}</div>
    </raven-slide-menu>
  `,
  styles: []
})
export class AppComponent {
  @ViewChild('slideMenu')
  slideMenu: SlideMenuComponent;

  someFuncThatUpdatesContent() {
    // Update content in menu
    // ...

    // Reset menu
    setTimeout(() => this.slideMenu.closeMenuWithoutTransition());
  }
}

Development

To contribute to the development of this component, clone its repository and run npm install. Then run ng serve -o to start a development server and to open a sample page in your browser.

License.

MIT license.