ang-alert-bar
Version:
Angular Message component with different severity types and predefined styles
197 lines (147 loc) • 5.43 kB
Markdown
<p align="center">
<a href="https://github.com/npm-lahsiv/alert-bar-library">
<img width="550" height="200" src="https://i.sstatic.net/TObFVaJj.png">
</a>
<br>
<br>
<a href="https://www.npmjs.com/package/ang-alert-bar">
<img src="https://img.shields.io/npm/dm/ang-alert-bar.svg?style=flat" alt="downloads">
</a>
<a href="https://badge.fury.io/for/js/ang-alert-bar">
<img src="https://badge.fury.io/js/ang-alert-bar.svg" alt="npm version" height="18">
</a>
<a href="https://img.shields.io/npm/l/ang-alert-bar">
<img src="https://img.shields.io/npm/l/ang-alert-bar.svg" alt="license" height="18">
</a>
</p>
- Display contextual messages (success, info, warning, error) with clean, accessible styles that match modern web apps.
- Just plug-and-play with simple Angular inputs—customize appearance, overflow, and alert variants (filled, outlined, text) to suit your needs.
- Includes SVG icons, full ARIA support, theming options, and responsive design for consistent user feedback across all devices.
- Works seamlessly in any Angular project (standalone or monorepo) with minimal dependencies.
## Examples/Demo
Live Demo [Example](https://stackblitz.com/edit/ang-alert-bar)
Severities

Paginated

Filled

Outlined

Custom Template

## Installation
`npm i ang-alert-bar`
## API
`import { AngAlertBarComponent } from 'ang-alert-bar'`<br>
`selector: alert-bar`
| Input | Type | Required | Description |
| -------------------- | -------------------- | ------------------------ | -------------------------------------------- |
| messages | AlertMessage[] | **YES** | array of AlertMessage |
| paginated | boolean | Optional, default: false | enable pagination |
| truncateTextOverflow | boolean | Optional, default: true | message will be truncated to fit in one line |
| variant | AlertMessageVariants | Optional, default: Text | variant style - Text, Filled or Outlined |
| severityIcon | boolean | Optional, default: true | show severity icon |
| closeIcon | boolean | Optional, default: true | show close icon |
| Input | Type | Description |
| ---------- | ------------ | -------------- |
| closeEvent | AlertMessage | event on close |
1. Model - AlertMessage
```typescript
alertType: AlertMessageTypes;
alertMessage: string | TemplateRef<any>;
```
2. Enum - AlertMessageVariants
```typescript
Text,
Outlined,
Filled,
```
3. Enum - AlertMessageTypes
```typescript
Success,
Info,
Warning,
Error,
```
Use of component via selector 'ang-alert-bar'.
```typescript
@Component({
imports: [AngAlertBarComponent],
selector: "app-root",
template: `
<alert-bar
[]="messages1"
[]="paginated"
[]="truncateTextOverflow"
[]="variant"
[]="closeIcon"
[]="severityIcon"
(closeEvent)="onCloseEvent($event)"
/>
<h3>Custom Template Example</h3>
<alert-bar [messages]="message2" severityIcon closeIcon />
<ng-template
<div class="content">
<div class="title">Merged pull request</div>
<div class="description">
Pull request
</div>
<div class="actions">
<a>View commit</a>
<a>Dismiss</a>
</div>
</div>
</ng-template>
`,
styleUrl: "app.component.scss",
})
export class AppComponent implements OnInit {
customTpl = viewChild.required<TemplateRef<any>>("customTpl");
messages1: AlertMessage[] = [
{
alertType: AlertMessageTypes.Info,
alertMessage: "Please read the comments carefully",
},
{
alertType: AlertMessageTypes.Success,
alertMessage: "Your message has been sent successfully",
},
{
alertType: AlertMessageTypes.Warning,
alertMessage: "There was a problem with your network connection",
},
{
alertType: AlertMessageTypes.Error,
alertMessage: "A problem occurred while submitting your data",
},
];
message2: AlertMessage[] = [];
AlertMessageVariants = AlertMessageVariants;
truncateTextOverflow = true;
paginated = false;
severityIcon = true;
closeIcon = true;
variant: AlertMessageVariants = AlertMessageVariants.Text;
ngOnInit() {
this.message2 = [
{
alertType: AlertMessageTypes.Success,
alertMessage: this.customTpl(),
},
];
}
onCloseEvent(message: AlertMessage) {
this.messages1 = this.messages1.filter((x) => x != message);
}
}
```
[](https://tldrlegal.com/license/mit-license) © [lahsiv](https://github.com/npm-lahsiv/alert-bar-library)
**Thanks for Installing**
> Contact me for any suggestion/issues -> hasnanivishal@gmail.com