tiaguinho / material-community-components

:panda_face: Angular Material Components created from the community
https://tiaguinho.github.io/material-community-components
MIT License
324 stars 50 forks source link
angular angular-components angular-material2 colorpicker community material scrollspy speed-dial timerpicker typescript

Material Community Components

Angular Material components that are not implemented in official package.

npm version Travis CI Coverage Status patreon

The idea of the [Material Community Components]() is to provide components that aren't available in the Angular Material2 yet.

All the components are created using Angular, Material 2 and CDK. Since version 7.1.0 only Angular 9+ is supported.

The color-picker component has an additional peer-dependency to @thebespokepixel/es-tinycolor to help with color calculations.

Check out our documentation & live demo

Components

All the components have the prefix mcc followed by the package name.

Component Package Screenshot
Color Picker mcc-color-picker alt text
Scrollspy mcc-scrollspy alt text
Speed Dial mcc-speed-dial alt text
Timer Picker mcc-timer-picker alt text

If you miss any component, please follow the CONTRIBUTION GUIDELINE to open an issue or file your idea here.

Install

step: 1

We use some components from Angular Material. To be able to use this components, you have to install the @angular/animations. If you follow all the steps in Material Guide, you already have this step done.

    npm install --save @angular/animations

Note: @angular/animations uses the WebAnimation API that isn't supported by all browsers yet. If you want to support Material component animations in these browsers, you'll have to include a polyfill.

import {BrowserAnimationsModule} from '@angular/platform-browser/animations';

@NgModule({
  ...
  imports: [BrowserAnimationsModule],
  ...
})
export class PizzaPartyAppModule { }

If you don't want to add another dependency to your project, you can use the NoopAnimationsModule.

import {NoopAnimationsModule} from '@angular/platform-browser/animations';

@NgModule({
  ...
  imports: [NoopAnimationsModule],
  ...
})
export class PizzaPartyAppModule { }

step: 2

Install material community components package:

    npm install material-community-components

or

  yarn add material-community-components

Theming

To use the same theme of Angular Material add the following code to your style.scss.

@use '~@angular/material' as mat;
@use '~material-community-components/theming' as mcc;

@include mat.core();

// Define the palettes for your theme using the Material Design palettes available in palette.scss
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
// hue. Available color palettes: https://material.io/design/color/
$demo-primary: mat.define-palette(mat.$green-palette);
$demo-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);

// The warn palette is optional (defaults to red).
$demo-warn: mat.define-palette(mat.$red-palette);

// Create the theme object (a Sass map containing all of the palettes).
$demo-theme: mat.define-light-theme($demo-primary, $demo-accent, $demo-warn);

// build angular material theme
@include mat.all-component-themes($demo-theme);

// pass angular material theme to material community components
@include mcc.mcc-theme($demo-theme); 

Right now only timer-picker and speed-dial do support the theme (see ISSUE-172).

Upgrading from 7.x.x

Since version 9.0.0 the lib only provides secondary entry-points for import. To migrate change your imports like that:

Before:

import { MccColorPickerModule} from 'material-community-components';
import { MccTimerPickerModule} from 'material-community-components';
import { MccSpeedDialModule} from 'material-community-components';
import { MccScrollspyModule} from 'material-community-components';

After:

import { MccColorPickerModule} from 'material-community-components/color-picker';
import { MccTimerPickerModule} from 'material-community-components/timer-picker';
import { MccSpeedDialModule} from 'material-community-components/speed-dial';
import { MccScrollspyModule} from 'material-community-components/scrollspy';

How to use

For more examples, you can see our demo folder or read the documentation

License

The MIT License (MIT) Copyright (c) 2018

Sponsors

alt text