costimize-mat-progress-buttons
v12.0.0
Published
Costimize material Design Progress Buttons
Downloads
425
Maintainers
Readme
Costimize Material Design Progress Buttons
Demo
Download the project and run ng serve
Dependencies
- Angular (requires Angular 15 or higher, tested with 15.2.8)
- Angular Material
Installation
Install above dependencies via npm.
Now install costimize-mat-progress-buttons
via:
npm install --save costimize-mat-progress-buttons
Once installed you need to import the main module:
import { MatProgressButtonsModule } from 'costimize-mat-progress-buttons';
The only remaining part is to list the imported module in your application module. The exact method will be slightly
different for the root (top-level) module for which you should end up with the code similar to (notice MatProgressButtonsModule .forRoot()
):
import { MatProgressButtonsModule } from 'costimize-mat-progress-buttons';
@NgModule({
declarations: [AppComponent, ...],
imports: [MatProgressButtonsModule.forRoot(), ...],
bootstrap: [AppComponent]
})
export class AppModule {
}
Other modules in your application can simply import MatProgressButtonsModule
:
import { MatProgressButtonsModule } from 'mat-progress-buttons';
@NgModule({
declarations: [OtherComponent, ...],
imports: [MatProgressButtonsModule, ...],
})
export class OtherModule {
}
Usage
Spinner Button
import { Component } from '@angular/core';
import { MatProgressButtonOptions } from 'costimize-mat-progress-buttons';
@Component({
selector: 'app-home',
template: '<mat-spinner-button (btnClick)="btnClick()" [options]="btnOpts"></mat-spinner-button>'
})
export class SomeComponent {
// Button Options
btnOpts: MatProgressButtonOptions = {
active: false,
text: 'Stroked Button',
spinnerSize: 19,
raised: false,
stroked: true,
flat: false,
fab: false,
buttonColor: 'accent',
spinnerColor: 'accent',
fullWidth: false,
disabled: false,
mode: 'indeterminate',
customClass: 'some-class',
// add an icon to the button
buttonIcon: {
fontSet: 'fa',
fontIcon: 'fa-heart',
inline: true
}
};
// Click handler
btnClick(): void {
this.btnOpts.active = true;
setTimeout(() => {
this.btnOpts.active = false;
}, 3350);
}
};
Spinner button FAB
You can use the spinner button with a mat-fab
with an icon. Both mat-icon
and font awesome
are supported.
To set up fontawesome to work with mat-icon
you can see instructions here
Use the icon
property on the options
object
btnOpts: MatProgressButtonOptions = {
active: false,
text: 'Stroked Button',
spinnerSize: 19,
raised: false,
stroked: true,
flat: false,
fab: true, // set fab to true
buttonColor: 'accent',
spinnerColor: 'accent',
fullWidth: false,
disabled: false,
mode: 'indeterminate',
icon: {
color: primary,
fontSet: 'fa',
fontIcon: 'fa-save',
inline: true
},
};
Icon API
interface MatProgressButtonIcon {
color?: ThemePalette; // icon color (primary or accent)
fontIcon?: string; // name of the icon (for fontawsome, use 'fa-[icon_name])'
fontSet?: string; // if using fontawesome, use 'fa' (omit for material icons)
inline?: boolean; // automatically size the icon
svgIcon?: string; // name of the icon in the SVG icon set.
}
More info in Angular Material Docs
Bar Button
import { Component } from '@angular/core';
import { MatProgressButtonOptions } from 'costimize-mat-progress-buttons';
@Component({
selector: 'app-home',
template: '<mat-bar-button (btnClick)="btnClick()" [options]="btnOpts"></mat-bar-button>'
})
export class SomeComponent {
// Button Options
btnOpts: MatProgressButtonOptions = {
active: false,
text: 'Stroked Button',
buttonColor: 'accent',
barColor: 'accent',
raised: false,
stroked: true,
flat: false,
mode: 'indeterminate',
value: 0,
disabled: false,
customClass: 'some-class',
// add an icon to the button
buttonIcon: {
fontSet: 'fa',
fontIcon: 'fa-heart',
inline: true
}
};
// Click handler
btnClick(): void {
this.btnOpts.active = true;
setTimeout(() => {
this.btnOpts.active = false;
}, 3350);
}
};
Overriding default CSS
To override CSS (color and background color of spinner buttons), you can write CSS for particular component and use ViewEncapsulation.None
Example:
CSS:
.class_name {
background-color: red; // etc.
}
TS:
@Component({
...,
encapsulation : ViewEncapsulation.None // Here
})
Note: Bar Button does not support the fab
style, currently. Hope to have something like this soon.
Development
- Install the dependencies by running
npm i
- build the library
ng buld
- Link the library
npm link
- Navigate to the demo app's directory
cd demo
_npm i
_npm start
- Works with the legacy components
Distributor
Copyright (c) 2018 Michael Doye. Licensed under the MIT License (MIT)