UNPKG

ang-alert-bar

Version:

Angular Message component with different severity types and predefined styles

1 lines 27.5 kB
{"version":3,"file":"ang-alert-bar.mjs","sources":["../../../libs/src/lib/enums/AlertMessageTypes.ts","../../../libs/src/lib/enums/AlertMessageVariants.ts","../../../libs/src/lib/i18n/translate.ts","../../../libs/src/lib/icons/success.icon.ts","../../../libs/src/lib/icons/error.icon.ts","../../../libs/src/lib/icons/warning.icon.ts","../../../libs/src/lib/icons/info.icon.ts","../../../libs/src/lib/icons/close.icon.ts","../../../libs/src/lib/ang-alert-bar/ang-alert-bar.component.ts","../../../libs/src/lib/ang-alert-bar/ang-alert-bar.component.html","../../../libs/src/ang-alert-bar.ts"],"sourcesContent":["export enum AlertMessageTypes {\r\n Success = \"Success\",\r\n Info = \"Info\",\r\n Warning = \"Warning\",\r\n Error = \"Error\",\r\n}\r\n","export enum AlertMessageVariants {\r\n Text = \"Text\",\r\n Outlined = \"Outlined\",\r\n Filled = \"Filled\",\r\n}\r\n","export const OF_TRANSLATIONS: Record<string, string> = {\r\n af: \"van\", // Afrikaans\r\n am: \"\", // Amharic\r\n ar: \"من\", // Arabic\r\n az: \"dən\", // Azerbaijani\r\n bg: \"на\", // Bulgarian\r\n bn: \"এর\", // Bengali\r\n ca: \"de\", // Catalan\r\n cs: \"z\", // Czech\r\n cy: \"o\", // Welsh\r\n da: \"af\", // Danish\r\n de: \"von\", // German\r\n el: \"του\", // Greek\r\n en: \"of\", // English\r\n es: \"de\", // Spanish\r\n et: \"le\", // Estonian\r\n eu: \"of\", // Basque (uses English 'of' often)\r\n fa: \"از\", // Persian\r\n fi: \"of\", // Finnish\r\n fr: \"de\", // French\r\n ga: \"de\", // Irish\r\n gl: \"de\", // Galician\r\n gu: \"નુ\", // Gujarati\r\n he: \"של\", // Hebrew\r\n hi: \"का\", // Hindi\r\n hr: \"od\", // Croatian\r\n hu: \"-ból\", // Hungarian (suffix)\r\n id: \"dari\", // Indonesian\r\n is: \"af\", // Icelandic\r\n it: \"di\", // Italian\r\n ja: \"\", // Japanese\r\n ka: \"დან\", // Georgian\r\n kk: \"нің\", // Kazakh\r\n km: \"នៃ\", // Khmer\r\n ko: \"\", // Korean\r\n lo: \"ຂອງ\", // Lao\r\n lt: \"\", // Lithuanian\r\n lv: \"no\", // Latvian\r\n mk: \"на\", // Macedonian\r\n ml: \"അവയോട്\", // Malayalam\r\n mr: \"च्या\", // Marathi\r\n ms: \"daripada\", // Malay\r\n nl: \"van\", // Dutch\r\n no: \"av\", // Norwegian\r\n pl: \"z\", // Polish\r\n pt: \"de\", // Portuguese\r\n ro: \"din\", // Romanian\r\n ru: \"из\", // Russian\r\n sk: \"z\", // Slovak\r\n sl: \"od\", // Slovenian\r\n sq: \"i\", // Albanian\r\n sr: \"од\", // Serbian\r\n sv: \"av\", // Swedish\r\n ta: \"இன்\", // Tamil\r\n te: \"కు\", // Telugu\r\n th: \"ของ\", // Thai\r\n tr: \"den\", // Turkish\r\n uk: \"з\", // Ukrainian\r\n ur: \"کا\", // Urdu\r\n vi: \"của\", // Vietnamese\r\n zh: \"\", // Chinese\r\n};\r\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"lib-success-icon, success-icon\",\r\n standalone: true,\r\n styles: [\r\n `\r\n :host {\r\n svg {\r\n display: inline-flex;\r\n height: 20px;\r\n width: 20px;\r\n transform: scaleY(-1);\r\n }\r\n .success__svg {\r\n color: #4f9e70;\r\n }\r\n }\r\n\r\n :host-context(.filled) .success__svg {\r\n color: white;\r\n }\r\n `,\r\n ],\r\n template: `\r\n <svg\r\n viewBox=\"0 -64 1024 960\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"success__svg\"\r\n >\r\n <path\r\n d=\"M512 877.714c-241.371 0-438.857-197.486-438.857-438.857s197.486-438.857 438.857-438.857 438.857 197.486 438.857 438.857-197.486 438.857-438.857 438.857zM789.943 544.914l-296.229-296.229c-29.257-29.257-73.143-29.257-102.4 0l-153.6 153.6c-21.943 21.943-21.943 54.857 0 76.8 10.971 10.971 25.6 14.629 40.229 14.629s29.257-3.657 40.229-14.629l124.343-128 270.629 270.629c18.286 21.943 54.857 21.943 76.8 0s21.943-54.857 0-76.8z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SuccessIconComponent {}\r\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"lib-error-icon, error-icon\",\r\n standalone: true,\r\n styles: [\r\n `\r\n :host {\r\n svg {\r\n display: inline-flex;\r\n height: 20px;\r\n width: 20px;\r\n transform: scaleY(-1);\r\n }\r\n .error__svg {\r\n color: #bd432d;\r\n }\r\n }\r\n\r\n :host-context(.filled) .error__svg {\r\n color: white;\r\n }\r\n `,\r\n ],\r\n template: `\r\n <svg\r\n focusable=\"false\"\r\n viewBox=\"0 -64 1024 960\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"error__svg\"\r\n >\r\n <path\r\n d=\"M512 877.714c-241.371 0-438.857-197.486-438.857-438.857s197.486-438.857 438.857-438.857 438.857 197.486 438.857 438.857-197.486 438.857-438.857 438.857zM512 73.143c-201.143 0-365.714 164.571-365.714 365.714s164.571 365.714 365.714 365.714 365.714-164.571 365.714-365.714-164.571-365.714-365.714-365.714zM563.2 438.857l128 128c7.314 7.314 10.971 18.286 10.971 25.6 0 10.971-3.657 18.286-10.971 25.6-14.629 14.629-36.571 14.629-51.2 0l-128-128-128 131.657c-7.314 3.657-18.286 7.314-25.6 7.314-10.971 0-21.943-3.657-29.257-7.314-14.629-14.629-14.629-36.571 0-51.2l128-128-128-131.657c-7.314-7.314-10.971-18.286-10.971-25.6 0-10.971 3.657-18.286 10.971-25.6 14.629-14.629 36.571-14.629 51.2 0l128 128 128-128c7.314-7.314 18.286-10.971 25.6-10.971 10.971 0 18.286 3.657 25.6 10.971 14.629 14.629 14.629 36.571 0 51.2l-124.343 128z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ErrorIconComponent {}\r\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"lib-warning-icon, warning-icon\",\r\n standalone: true,\r\n styles: [\r\n `\r\n :host {\r\n svg {\r\n display: inline-flex;\r\n height: 20px;\r\n width: 20px;\r\n transform: scaleY(-1);\r\n }\r\n .warning__svg {\r\n color: #cf8a23;\r\n }\r\n }\r\n\r\n :host-context(.filled) .warning__svg {\r\n color: white;\r\n }\r\n `,\r\n ],\r\n template: `\r\n <svg\r\n focusable=\"false\"\r\n viewBox=\"0 -64 1024 960\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"warning__svg\"\r\n >\r\n <path\r\n d=\"M943.543 106.057l-365.714 731.429c-25.6 54.857-102.4 54.857-131.657 0l-365.714-731.429c-25.6-47.543 10.971-106.057 65.829-106.057h731.429c54.857 0 91.429 58.514 65.829 106.057zM512 621.714c25.6 0 43.886-25.6 43.886-58.514l-18.286-241.371c0-18.286-10.971-29.257-25.6-29.257s-25.6 10.971-25.6 29.257l-18.286 241.371c0 32.914 18.286 58.514 43.886 58.514zM512 146.286c-29.257 0-54.857 25.6-54.857 54.857s25.6 54.857 54.857 54.857 54.857-25.6 54.857-54.857-25.6-54.857-54.857-54.857z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class WarningIconComponent {}\r\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'lib-info-icon, info-icon, i.alert-bar-icon',\r\n standalone: true,\r\n styles: [\r\n `\r\n :host {\r\n svg {\r\n display: inline-flex;\r\n height: 20px;\r\n width: 20px;\r\n transform: scaleY(-1);\r\n }\r\n .info__svg {\r\n color: #3884ff;\r\n }\r\n }\r\n\r\n :host-context(.filled) .info__svg {\r\n color: white;\r\n }\r\n `,\r\n ],\r\n template: `\r\n <svg\r\n focusable=\"false\"\r\n viewBox=\"0 -64 1024 960\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"info__svg\"\r\n >\r\n <path\r\n d=\"M510.647 566.747v0c-29.477 0-53.358 23.881-53.358 53.358s23.881 53.358 53.358 53.358c29.477 0 53.358-23.881 53.358-53.358s-23.881-53.358-53.358-53.358zM512 241.371c-24.137 0-43.886 19.749-43.886 43.886v175.543c0 24.137 19.749 43.886 43.886 43.886s43.886-19.749 43.886-43.886v-175.543c0-24.137-19.749-43.886-43.886-43.886zM512 899.657c-242.249 0-438.857-196.608-438.857-438.857s196.608-438.857 438.857-438.857 438.857 196.608 438.857 438.857c0 242.249-196.608 438.857-438.857 438.857z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InfoIconComponent {}\r\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"lib-close-icon, close-icon\",\r\n standalone: true,\r\n styles: [\r\n `\r\n :host {\r\n svg {\r\n display: inline-flex;\r\n height: 20px;\r\n width: 20px;\r\n transform: scaleY(-1);\r\n }\r\n }\r\n\r\n :host-context(.filled) svg {\r\n color: white;\r\n }\r\n `,\r\n ],\r\n template: `\r\n <svg\r\n focusable=\"false\"\r\n viewBox=\"0 -64 1024 960\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M822.857 179.2c14.629-14.629 14.629-36.571 0-51.2s-36.571-14.629-51.2 0l-259.657 259.657-259.657-259.657c-14.629-14.629-36.571-14.629-51.2 0s-14.629 36.571 0 51.2l259.657 259.657-259.657 259.657c-14.629 14.629-14.629 36.571 0 51.2s36.571 14.629 51.2 0l259.657-259.657 259.657 259.657c14.629 14.629 36.571 14.629 51.2 0s14.629-36.571 0-51.2l-259.657-259.657 259.657-259.657z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CloseIconComponent {}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n linkedSignal,\r\n output,\r\n signal,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport { NgTemplateOutlet } from \"@angular/common\";\r\nimport { AlertMessageTypes } from \"../enums/AlertMessageTypes\";\r\nimport { AlertMessageVariants } from \"../enums/AlertMessageVariants\";\r\nimport { AlertMessage } from \"../contracts/AlertMessage\";\r\nimport { OF_TRANSLATIONS } from \"../i18n/translate\";\r\nimport { SuccessIconComponent } from \"../icons/success.icon\";\r\nimport { ErrorIconComponent } from \"../icons/error.icon\";\r\nimport { WarningIconComponent } from \"../icons/warning.icon\";\r\nimport { InfoIconComponent } from \"../icons/info.icon\";\r\nimport { CloseIconComponent } from \"../icons/close.icon\";\r\n\r\n@Component({\r\n selector: \"lib-ang-alert-bar, ang-alert-bar, alert-bar\",\r\n imports: [\r\n NgTemplateOutlet,\r\n SuccessIconComponent,\r\n ErrorIconComponent,\r\n WarningIconComponent,\r\n InfoIconComponent,\r\n CloseIconComponent,\r\n ],\r\n templateUrl: \"ang-alert-bar.component.html\",\r\n styleUrl: \"ang-alert-bar.component.scss\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AngAlertBarComponent {\r\n AlertMessageTypes = AlertMessageTypes;\r\n AlertMessageVariants = AlertMessageVariants;\r\n\r\n /* Input Signals */\r\n readonly messages = input.required<Array<AlertMessage>>();\r\n\r\n readonly variant = input<AlertMessageVariants>(AlertMessageVariants.Text);\r\n readonly truncateTextOverflow = input(true, { transform: booleanAttribute });\r\n readonly severityIcon = input(true, { transform: booleanAttribute });\r\n readonly closeIcon = input(false, { transform: booleanAttribute });\r\n readonly paginated = input(false, { transform: booleanAttribute });\r\n\r\n readonly closeEvent = output<AlertMessage>();\r\n\r\n /* Linked Signals */\r\n message = linkedSignal(() => this.messages()[0]);\r\n\r\n /* Writable Signals */\r\n currentIndex = signal(0);\r\n\r\n /* Computed Signals */\r\n messageLength = computed(() => this.messages().length);\r\n messageClass = computed(() => this.getMessageClass(this.message().alertType));\r\n disableLeftArrow = computed(() => this.currentIndex() === 0);\r\n disableRightArrow = computed(\r\n () => this.currentIndex() === this.messageLength() - 1\r\n );\r\n pagination = computed(() => this.messageLength() > 1);\r\n\r\n showPrev(): void {\r\n if (this.messageLength() > 1 && this.currentIndex() > 0) {\r\n this.currentIndex.update((n) => n - 1);\r\n this.updateMessage();\r\n }\r\n }\r\n\r\n showNext(): void {\r\n if (\r\n this.messageLength() > 1 &&\r\n this.currentIndex() < this.messageLength() - 1\r\n ) {\r\n this.currentIndex.update((n) => n + 1);\r\n this.updateMessage();\r\n }\r\n }\r\n\r\n updateMessage(): void {\r\n this.message.set(this.messages()[this.currentIndex()]);\r\n }\r\n\r\n getMessageClass(alertType: AlertMessageTypes): string {\r\n switch (alertType) {\r\n case AlertMessageTypes.Success:\r\n return \"alert-bar-success\";\r\n case AlertMessageTypes.Warning:\r\n return \"alert-bar-warning\";\r\n case AlertMessageTypes.Error:\r\n return \"alert-bar-error\";\r\n case AlertMessageTypes.Info:\r\n return \"alert-bar-info\";\r\n default:\r\n // eslint-disable-next-line no-case-declarations\r\n const _exhaustiveCheck: never = alertType;\r\n return _exhaustiveCheck;\r\n }\r\n }\r\n\r\n getMessageType(message: any): message is TemplateRef<any> {\r\n return message instanceof TemplateRef;\r\n }\r\n\r\n getMessageTemplateRef(message: AlertMessage): TemplateRef<any> {\r\n return message.alertMessage as TemplateRef<any>;\r\n }\r\n\r\n getOfText(): string {\r\n const lang = navigator.language?.split(\"-\")[0] || \"en\";\r\n return OF_TRANSLATIONS[lang] || OF_TRANSLATIONS[\"en\"];\r\n }\r\n}\r\n","@if(paginated()) {\n<div class=\"alert-bar {{ messageClass() }} \" [class.maximized]=\"!truncateTextOverflow()\"\n [class.outlined]=\"variant() === AlertMessageVariants.Outlined\"\n [class.filled]=\"variant() === AlertMessageVariants.Filled\">\n <div class=\"alert-message-wrap\">\n @if(severityIcon()) {\n <ng-container>\n @switch (message().alertType) { @case (AlertMessageTypes.Success) {\n <success-icon class=\"alert-bar-icon\" />\n } @case (AlertMessageTypes.Error) {\n <error-icon class=\"alert-bar-icon\" />\n } @case (AlertMessageTypes.Warning) {\n <warning-icon class=\"alert-bar-icon\" />\n } @case (AlertMessageTypes.Info) {\n <info-icon class=\"alert-bar-icon\" />\n } }\n </ng-container>\n }\n\n <div class=\"alert-bar-message\">\n @let messageType = getMessageType(message().alertMessage);\n @if (messageType) {\n <ng-container [ngTemplateOutlet]=\"getMessageTemplateRef(message())\"\n [ngTemplateOutletContext]=\"{ $implicit: message() }\" />\n } @else {\n <span>{{ message().alertMessage }}</span>\n }\n </div>\n </div>\n\n <div class=\"alert-pagination\">\n <div class=\"arrow\" #leftArrow [class.arrow-disabled]=\"disableLeftArrow()\" (click)=\"showPrev()\">\n <svg focusable=\"false\" viewBox=\"0 -64 1024 960\" xmlns=\"http://www.w3.org/2000/svg\" class=\"left__svg\">\n <path\n d=\"M464.457 705.829c14.629-14.629 14.629-36.571 0-51.2l-157.257-157.257h497.371c18.286 0 36.571-18.286 36.571-36.571s-18.286-36.571-36.571-36.571h-497.371l157.257-157.257c14.629-14.629 14.629-36.571 0-51.2-7.314-7.314-18.286-10.971-25.6-10.971-10.971 0-18.286 3.657-25.6 10.971l-219.429 219.429c-14.629 14.629-14.629 36.571 0 51.2l219.429 219.429c14.629 14.629 36.571 14.629 51.2 0z\"\n fill=\"currentColor\"></path>\n </svg>\n </div>\n <div class=\"count\">\n <span class=\"current\">{{ currentIndex() + 1 }}</span>\n <span class=\"preposition\"> {{ getOfText() }} </span>\n <span class=\"total\">{{ messages().length }}</span>\n </div>\n <div class=\"arrow right\" #rightArrow [class.arrow-disabled]=\"disableRightArrow()\" (click)=\"showNext()\">\n <svg focusable=\"false\" viewBox=\"0 -64 1024 960\" xmlns=\"http://www.w3.org/2000/svg\" class=\"left__svg\">\n <path\n d=\"M464.457 705.829c14.629-14.629 14.629-36.571 0-51.2l-157.257-157.257h497.371c18.286 0 36.571-18.286 36.571-36.571s-18.286-36.571-36.571-36.571h-497.371l157.257-157.257c14.629-14.629 14.629-36.571 0-51.2-7.314-7.314-18.286-10.971-25.6-10.971-10.971 0-18.286 3.657-25.6 10.971l-219.429 219.429c-14.629 14.629-14.629 36.571 0 51.2l219.429 219.429c14.629 14.629 36.571 14.629 51.2 0z\"\n fill=\"currentColor\"></path>\n </svg>\n </div>\n </div>\n</div>\n} @else { @for(message of messages(); track message.alertType) {\n<div class=\"alert-bar {{ getMessageClass(message.alertType) }} \" [class.maximized]=\"!truncateTextOverflow()\"\n [class.outlined]=\"variant() === AlertMessageVariants.Outlined\"\n [class.filled]=\"variant() === AlertMessageVariants.Filled\" style=\"margin-bottom: 10px\">\n <div class=\"alert-message-wrap\">\n @if(severityIcon()) {\n <ng-container>\n @switch (message.alertType) { @case (AlertMessageTypes.Success) {\n <success-icon class=\"alert-bar-icon\" />\n } @case (AlertMessageTypes.Error) {\n <error-icon class=\"alert-bar-icon\" />\n } @case (AlertMessageTypes.Warning) {\n <warning-icon class=\"alert-bar-icon\" />\n } @case (AlertMessageTypes.Info) {\n <i class=\"alert-bar-icon\"></i>\n } }\n </ng-container>\n }\n\n <div class=\"alert-bar-message\">\n @let messageType = getMessageType(message.alertMessage);\n @if (messageType) {\n <ng-container [ngTemplateOutlet]=\"getMessageTemplateRef(message)\"\n [ngTemplateOutletContext]=\"{ $implicit: message }\" />\n } @else {\n <span>{{ message.alertMessage }}</span>\n }\n </div>\n </div>\n @if(closeIcon()) {\n <div class=\"alert-pagination close\" (click)=\"closeEvent.emit(message)\">\n <close-icon class=\"arrow right\" />\n </div>\n }\n</div>\n} }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}