Home

Awesome

<p align="center"> <img alt="angular-material-extensions's logo" height="256px" width="256px" style="text-align: center;" src="https://cdn.jsdelivr.net/gh/angular-material-extensions/fab-menu@master/assets/angular-material-extensions-logo.svg"> </p>

@angular-material-extensions/fab-menu - Angular Material component that allow users to select a country or nationality with an autocomplete feature

npm version npm demo docs: typedoc Join the chat at https://gitter.im/angular-material-extensions/Lobby Build Status codecov license

<p align="center"> <img alt="@angular-material-extensions/fab-menu demonstration" style="text-align: center;" src="https://raw.githubusercontent.com/angular-material-extensions/fab-menu/HEAD/assets/v1/ex1.gif"> </p> <p align="center"> <img alt="@angular-material-extensions/fab-menu demonstration" style="text-align: center;" src="https://raw.githubusercontent.com/angular-material-extensions/fab-menu/HEAD/assets/v1/ex2.gif"> </p>

Built by and for developers :heart:

Do you have any question or suggestion ? Please do not hesitate to contact us! Alternatively, provide a PR | open an appropriate issue here

If you like this project, support angular-material-extensions by starring :star: and sharing it :loudspeaker:

Table of Contents

<a name="demo"/>

Demo

View all the directives and components in action at https://angular-material-extensions.github.io/fab-menu

<a name="components"/>

Library's components


<a name="dependencies"/>

Dependencies


<a name="installation"/>

Installation

1. Install via ng add. (Recommended)

If Angular Material Design is not setup, just run ng add @angular/material learn more

Now add the library via the angular schematics

ng add @angular-material-extensions/fab-menu

2. Install via npm. (Alternative)

Now install @angular-material-extensions/fab-menu via:

npm install --save @angular-material-extensions/fab-menu

Import the library

If you installed the library via angular schematics, you can skip this step

Once installed you need to import the main module:

import { MatFabMenuModule } from '@angular-material-extensions/fab-menu';
import { MatFabMenuModule } from '@angular-material-extensions/fab-menu';

@NgModule({
  declarations: [AppComponent, ...],
  imports: [MatFabMenuModule, ...],  
  bootstrap: [AppComponent]
})
export class AppModule {
}

Other modules in your application like for lazy loading import MatSelectCountryModule into your feature module:

<a name="api"/>

API

<mat-fab-menu> used to display the main component - see the demo examples

<mat-mini-fab-menu> used to display a mini version of the fab menu - see the demo examples

optionbindtypedefaultdescription
fabButtonsInput()MatFabMenu[]-array of floating actions button as menu to render
iconInput()stringaddmaterial icon string e.g: home, mail, phone see more
directionInput()MatFabMenuDirectiontopthe direction of buttons: `'top'
colorInput()ThemePaletteaccentthe color of the main fab: primary, accent or warn
isActiveInput()booleanfalseWhether the component is active
disabledInput()booleanfalseWhether the component is disabled
closeAfterSelectionInput()booleantrueClose after selecting a fab menu item
onFabMenuItemSelectedOutput()EventEmitter<string | number>-emits the selected button by id

Methods

@ViewChild('matFabMenu', { static: false }) matFabMenu: MatFabMenu;

toggle() will toggle the isActive property

Important interfaces or type


import {ThemePalette, TooltipPosition} from '@angular/material';

interface MatFabMenu {
  id: string | number;
  icon?: string; // please use either icon or imgUrl
  iconColor?: ThemePalette;
  imgUrl?: string; // please use either icon or imgUrl
  tooltip?: string;
  tooltipPosition?: TooltipPosition;
  color?: ThemePalette;
}

type MatFabMenuDirection = 'top' | 'bottom' | 'left' | 'right';
<a name="usage"/>

Usage

<mat-fab-menu color="primary"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>

<!-- or if you prefer the mini version -->

<mat-mini-fab-menu color="primary"
                   [fabButtons]="fabButtonsRandom">
</mat-mini-fab-menu>

import {MatFabMenu} from '@angular-material-extensions/fab-menu';

fabButtonsRandom: MatFabMenu[] = [
    {
      id: 1,
      icon: 'create'
    },
    {
      id: 2,
      icon: 'mail'
    },
    {
      id: 3,
      icon: 'file_copy'
    },
    {
      id: 4,
      icon: 'phone'
    },
  ];

try to use your own svg instead of material icons:

import {MatFabMenu} from '@angular-material-extensions/fab-menu';

fabCountries: MatFabMenu[] = [
    {
      id: 1,
      imgUrl: 'assets/countrys-flags/svg/canada.svg'
    },
    {
      id: 2,
      imgUrl: 'assets/countrys-flags/svg/germany.svg'
    },
    {
      id: 3,
      imgUrl: 'assets/countrys-flags/svg/france.svg'
    },
    {
      id: 4,
      imgUrl: 'assets/countrys-flags/svg/lebanon.svg'
    },
  ];
<mat-fab-menu color="primary"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
<p align="center"> <img alt="@angular-material-extensions/fab-menu demonstration" style="text-align: center;" src="https://raw.githubusercontent.com/angular-material-extensions/fab-menu/HEAD/assets/v1/top.png"> </p>
<mat-fab-menu color="primary"
              direction="bottom"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
<p align="center"> <img alt="@angular-material-extensions/fab-menu demonstration" style="text-align: center;" src="https://raw.githubusercontent.com/angular-material-extensions/fab-menu/HEAD/assets/v1/bottom.png"> </p>
<mat-fab-menu color="primary"
              direction="left"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
<p align="center"> <img alt="@angular-material-extensions/fab-menu demonstration" style="text-align: center;" src="https://raw.githubusercontent.com/angular-material-extensions/fab-menu/HEAD/assets/v1/left.png"> </p>
<mat-fab-menu color="primary"
              direction="right"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
<p align="center"> <img alt="@angular-material-extensions/fab-menu demonstration" style="text-align: center;" src="https://raw.githubusercontent.com/angular-material-extensions/fab-menu/HEAD/assets/v1/right.png"> </p> <a name="run-demo-app-locally"/>

Run Demo App Locally

Build the library

after installing the dependencies with npm i

$ npm run build:lib

Serve the demo app

$ npm start

Other Angular Libraries


<a name="support"/>

Support

Built by and for developers :heart: we will help you :punch:


Who is using ngx-mailto? Awesome apps?

  1. Nahaus.de

Are you missing your project or you app? PR me to publish it on the README

jetbrains logo

This project is supported by jetbrains with 1 ALL PRODUCTS PACK OS LICENSE incl. webstorm


<a name="license"/>

License

Copyright (c) 2019-2022 Anthony Nahas. Licensed under the MIT License (MIT)