 
   
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:
View all the directives and components in action at https://angular-material-extensions.github.io/fab-menu
<mat-fab-menu> used to display the main component8.xIf 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-menuNow install @angular-material-extensions/fab-menu via:
npm install --save @angular-material-extensions/fab-menuIf 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:
<mat-fab-menu>  used to display the main component - see the demo examples| option | bind | type | default | description | 
|---|---|---|---|---|
| fabButtons | Input() | MatFabMenu[] | - | array of floating actions button as menu to render | 
| icon | Input() | string | add | material icon string e.g: home, mail, phone see more | 
| direction | Input() | MatFabMenuDirection | top | the direction of buttons: `'top' | 
| color | Input() | ThemePalette | accent | the color of the main fab: primary, accent or warn | 
| isActive | Input() | boolean | falase | Whether the component is active | 
| disabled | Input() | boolean | false | Whether the component is disabled | 
| closeAfterSelection | Input() | boolean | true | Close after selecting a fab menu item | 
| onFabMenuItemSelected | Output() | EventEmitter<string | number> | - | emits the selected button by id | 
@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';<mat-fab-menu color="primary"
              [fabButtons]="fabButtonsRandom">
</mat-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>
   
<mat-fab-menu color="primary"
              direction="bottom"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
   
<mat-fab-menu color="primary"
              direction="left"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
   
<mat-fab-menu color="primary"
              direction="right"
              [fabButtons]="fabButtonsRandom">
</mat-fab-menu>
   
Build the library
after installing the dependencies with npm i
$ npm run build:libServe the demo app
$ npm startDrop an email to: Anthony Nahas
or open an appropriate issue
let us chat on Gitter
Built by and for developers :heart: we will help you :punch:

This project is supported by jetbrains with 1 ALL PRODUCTS PACK OS LICENSE incl. webstorm
Copyright (c) 2019-2020 Anthony Nahas. Licensed under the MIT License (MIT)