@ng-bootstrap/ng-bootstrap
Version:
Angular powered Bootstrap
1 lines • 14.7 kB
Source Map (JSON)
{"version":3,"file":"ng-bootstrap-ng-bootstrap-toast.mjs","sources":["../../../src/toast/toast-config.ts","../../../src/toast/toast-transition.ts","../../../src/toast/toast.ts","../../../src/toast/toast.module.ts","../../../src/toast/ng-bootstrap-ng-bootstrap-toast.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { NgbConfig } from '@ng-bootstrap/ng-bootstrap/config';\n\n/**\n * Interface used to type all toast config options. See `NgbToastConfig`.\n *\n * @since 5.0.0\n */\nexport interface NgbToastOptions {\n\t/**\n\t * Specify if the toast component should emit the `hide()` output\n\t * after a certain `delay` in ms.\n\t */\n\tautohide?: boolean;\n\n\t/**\n\t * Delay in ms after which the `hide()` output should be emitted.\n\t */\n\tdelay?: number;\n\n\t/**\n\t * Type of aria-live attribute to be used.\n\t *\n\t * Could be one of these 2 values (as string):\n\t * - `polite` (default)\n\t * - `assertive`\n\t */\n\tariaLive?: 'polite' | 'assertive';\n}\n\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * @since 5.0.0\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbToastConfig implements NgbToastOptions {\n\tprivate _ngbConfig = inject(NgbConfig);\n\tprivate _animation: boolean;\n\n\tautohide = true;\n\tdelay = 5000;\n\tariaLive: 'polite' | 'assertive' = 'polite';\n\n\tget animation(): boolean {\n\t\treturn this._animation ?? this._ngbConfig.animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { reflow, NgbTransitionStartFn } from './_ngb-ngbootstrap-utilities.mjs';\n\nexport const ngbToastFadeInTransition: NgbTransitionStartFn = (element: HTMLElement, animation: true) => {\n\tconst { classList } = element;\n\n\tif (animation) {\n\t\tclassList.add('fade');\n\t} else {\n\t\tclassList.add('show');\n\t\treturn;\n\t}\n\n\treflow(element);\n\tclassList.add('show', 'showing');\n\n\treturn () => {\n\t\tclassList.remove('showing');\n\t};\n};\n\nexport const ngbToastFadeOutTransition: NgbTransitionStartFn = ({ classList }: HTMLElement) => {\n\tclassList.add('showing');\n\treturn () => {\n\t\tclassList.remove('show', 'showing');\n\t};\n};\n","import {\n\tAfterContentInit,\n\tafterNextRender,\n\tAttribute,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewEncapsulation,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { NgbToastConfig } from './toast-config';\nimport { ngbRunTransition } from './_ngb-ngbootstrap-utilities.mjs';\nimport { ngbToastFadeInTransition, ngbToastFadeOutTransition } from './toast-transition';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * @since 5.0.0\n */\n@Directive({ selector: '[ngbToastHeader]' })\nexport class NgbToastHeader {}\n\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * @since 5.0.0\n */\n@Component({\n\tselector: 'ngb-toast',\n\texportAs: 'ngbToast',\n\timports: [NgTemplateOutlet],\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\trole: 'alert',\n\t\t'[attr.aria-live]': 'ariaLive',\n\t\t'aria-atomic': 'true',\n\t\tclass: 'toast',\n\t\t'[class.fade]': 'animation',\n\t},\n\ttemplate: `\n\t\t<ng-template #headerTpl>\n\t\t\t<strong class=\"me-auto\">{{ header }}</strong>\n\t\t</ng-template>\n\t\t@if (contentHeaderTpl || header) {\n\t\t\t<div class=\"toast-header\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"contentHeaderTpl || headerTpl\" />\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"btn-close\"\n\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\ti18n-aria-label=\"@@ngb.toast.close-aria\"\n\t\t\t\t\t(click)=\"hide()\"\n\t\t\t\t>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"toast-body\">\n\t\t\t<ng-content />\n\t\t</div>\n\t`,\n\tstyleUrl: './toast.scss',\n})\nexport class NgbToast implements AfterContentInit, OnChanges {\n\tprivate _config = inject(NgbToastConfig);\n\tprivate _zone = inject(NgZone);\n\tprivate _injector = inject(Injector);\n\tprivate _element = inject(ElementRef);\n\n\tprivate _timeoutID;\n\t/**\n\t * If `true`, toast opening and closing will be animated.\n\t *\n\t * Animation is triggered only when the `.hide()` or `.show()` functions are called\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation = this._config.animation;\n\n\t/**\n\t * Delay after which the toast will hide (ms).\n\t * default: `500` (ms) (inherited from NgbToastConfig)\n\t */\n\t@Input() delay = this._config.delay;\n\n\t/**\n\t * Auto hide the toast after a delay in ms.\n\t * default: `true` (inherited from NgbToastConfig)\n\t */\n\t@Input() autohide = this._config.autohide;\n\n\t/**\n\t * Text to be used as toast's header.\n\t * Ignored if a ContentChild template is specified at the same time.\n\t */\n\t@Input() header: string;\n\n\t/**\n\t * A template like `<ng-template ngbToastHeader></ng-template>` can be\n\t * used in the projected content to allow markup usage.\n\t */\n\t@ContentChild(NgbToastHeader, { read: TemplateRef, static: true }) contentHeaderTpl: TemplateRef<any> | null = null;\n\n\t/**\n\t * An event fired after the animation triggered by calling `.show()` method has finished.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter<void>();\n\n\t/**\n\t * An event fired after the animation triggered by calling `.hide()` method has finished.\n\t *\n\t * It can only occur in 2 different scenarios:\n\t * - `autohide` timeout fires\n\t * - user clicks on a closing cross\n\t *\n\t * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n\t * to the user to take care of that.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter<void>();\n\n\tconstructor(@Attribute('aria-live') public ariaLive: string) {\n\t\tthis.ariaLive ??= this._config.ariaLive;\n\t}\n\n\tngAfterContentInit() {\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\tmixedReadWrite: () => {\n\t\t\t\t\tthis._init();\n\t\t\t\t\tthis.show();\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif ('autohide' in changes) {\n\t\t\tthis._clearTimeout();\n\t\t\tthis._init();\n\t\t}\n\t}\n\n\t/**\n\t * Triggers toast closing programmatically.\n\t *\n\t * The returned observable will emit and be completed once the closing transition has finished.\n\t * If the animations are turned off this happens synchronously.\n\t *\n\t * Alternatively you could listen or subscribe to the `(hidden)` output\n\t *\n\t * @since 8.0.0\n\t */\n\thide(): Observable<void> {\n\t\tthis._clearTimeout();\n\t\tconst transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'stop',\n\t\t});\n\t\ttransition.subscribe(() => {\n\t\t\tthis.hidden.emit();\n\t\t});\n\t\treturn transition;\n\t}\n\n\t/**\n\t * Triggers toast opening programmatically.\n\t *\n\t * The returned observable will emit and be completed once the opening transition has finished.\n\t * If the animations are turned off this happens synchronously.\n\t *\n\t * Alternatively you could listen or subscribe to the `(shown)` output\n\t *\n\t * @since 8.0.0\n\t */\n\tshow(): Observable<void> {\n\t\tconst transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'continue',\n\t\t});\n\t\ttransition.subscribe(() => {\n\t\t\tthis.shown.emit();\n\t\t});\n\t\treturn transition;\n\t}\n\n\tprivate _init() {\n\t\tif (this.autohide && !this._timeoutID) {\n\t\t\tthis._timeoutID = setTimeout(() => this.hide(), this.delay);\n\t\t}\n\t}\n\n\tprivate _clearTimeout() {\n\t\tif (this._timeoutID) {\n\t\t\tclearTimeout(this._timeoutID);\n\t\t\tthis._timeoutID = null;\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbToast, NgbToastHeader } from './toast';\n\nexport { NgbToast, NgbToastHeader } from './toast';\nexport { NgbToastConfig, NgbToastOptions } from './toast-config';\n\n@NgModule({\n\timports: [NgbToast, NgbToastHeader],\n\texports: [NgbToast, NgbToastHeader],\n})\nexport class NgbToastModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}