@bravura/ui 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,141 @@
1
+ import { Directive, EventEmitter, Host, Inject, InjectionToken, Input, Output } from '@angular/core';
2
+ import { ClipNoteComponent } from './clip-note.component';
3
+ import * as i0 from "@angular/core";
4
+ /** Used to provide default config for clip notes. */
5
+ export const CLIP_NOTE_DEFAULT_CONFIG = new InjectionToken('bui-clip-note.default-config', {
6
+ factory: () => ({ color: 'primary', caption: 'More info' })
7
+ });
8
+ /**
9
+ * A clip note consists of a toggle button and a floating 'notepad' element, attached to the top end of the host element's
10
+ * viewable area. The 'notepad' normally collapses away and only reveals itself when the toggle button is active.
11
+ *
12
+ * The toggle button clips on the edge of the host element and expands to display the full caption when hovered. It hides itself
13
+ * automatically when there is no content provided via the `buiClipNote` property of the directive.
14
+ *
15
+ * The clip note component is suitable for large page container elements with visible boundaries. It can present contextual
16
+ * information regarding and in addition to the content displayed in the main view area.
17
+ *
18
+ * The properties `buiClipNoteColor` and `buiClipNoteCaption` customise the appearance of the clip note, the default values of which
19
+ * can optionally be provided by the `ClipNoteModule.forConfig()` method.
20
+ *
21
+ */
22
+ export class ClipNoteDirective {
23
+ constructor(_elementRef, _vc, _config) {
24
+ this._elementRef = _elementRef;
25
+ this._vc = _vc;
26
+ /** Emits when the panel opens */
27
+ this.buiClipNoteOpened = new EventEmitter();
28
+ /** Emits when the panel closes */
29
+ this.buiClipNoteClosed = new EventEmitter();
30
+ this._color = 'primary';
31
+ this._caption = _config.caption;
32
+ this._color = _config.color;
33
+ }
34
+ /**
35
+ * Provide content to the clip note's floating notepad element.
36
+ * It accepts a `string` of HTML content or a `TemplateRef` object.
37
+ */
38
+ get buiClipNote() {
39
+ return this._content;
40
+ }
41
+ set buiClipNote(note) {
42
+ this._content = note;
43
+ if (this._compRef) {
44
+ this._processContent();
45
+ }
46
+ }
47
+ /**
48
+ * Customise the theme color alias.
49
+ * @default 'primary'
50
+ */
51
+ get buiClipNoteColor() {
52
+ return this._color;
53
+ }
54
+ set buiClipNoteColor(color) {
55
+ this._color = color;
56
+ if (this._compRef) {
57
+ this._compRef.instance._assignColor(this._color);
58
+ }
59
+ }
60
+ /**
61
+ * Customise the icon on the toggle button. With this property specified, the animation on the icon
62
+ * will not be active.
63
+ */
64
+ get buiClipNoteIcon() {
65
+ return this._icon;
66
+ }
67
+ set buiClipNoteIcon(icon) {
68
+ this._icon = icon;
69
+ if (this._compRef) {
70
+ this._compRef.instance._assignButtonIcon(this._icon);
71
+ }
72
+ }
73
+ /**
74
+ * The caption of the toggle button when expanded.
75
+ */
76
+ get buiClipNoteCaption() {
77
+ return this._caption;
78
+ }
79
+ set buiClipNoteCaption(text) {
80
+ this._caption = text;
81
+ if (this._compRef) {
82
+ this._compRef.instance._assignButtonText(this._caption);
83
+ }
84
+ }
85
+ ngAfterViewInit() {
86
+ setTimeout(() => {
87
+ this._compRef = this._vc.createComponent(ClipNoteComponent);
88
+ const childElement = this._compRef.location.nativeElement;
89
+ const element = this._elementRef.nativeElement;
90
+ element.style.position = 'relative';
91
+ element.appendChild(childElement);
92
+ this._compRef.instance._assignColor(this._color);
93
+ this._compRef.instance._assignButtonText(this._caption);
94
+ this._compRef.instance._assignButtonIcon(this._icon);
95
+ this._compRef.instance.opened.subscribe(this.buiClipNoteOpened.next.bind(this.buiClipNoteOpened));
96
+ this._compRef.instance.closed.subscribe(this.buiClipNoteClosed.next.bind(this.buiClipNoteClosed));
97
+ this._processContent();
98
+ });
99
+ }
100
+ ngOnDestroy() {
101
+ this._compRef.destroy();
102
+ }
103
+ /** Open the note panel */
104
+ open() {
105
+ this._compRef.instance.open();
106
+ }
107
+ /** Close the note panel */
108
+ close() {
109
+ this._compRef.instance.close();
110
+ }
111
+ _processContent() {
112
+ this._compRef.instance._contentChanged(this._content);
113
+ }
114
+ }
115
+ ClipNoteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ClipNoteDirective, deps: [{ token: i0.ElementRef, host: true }, { token: i0.ViewContainerRef }, { token: CLIP_NOTE_DEFAULT_CONFIG }], target: i0.ɵɵFactoryTarget.Directive });
116
+ ClipNoteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.3", type: ClipNoteDirective, selector: "[buiClipNote]", inputs: { buiClipNote: "buiClipNote", buiClipNoteColor: "buiClipNoteColor", buiClipNoteIcon: "buiClipNoteIcon", buiClipNoteCaption: "buiClipNoteCaption" }, outputs: { buiClipNoteOpened: "buiClipNoteOpened", buiClipNoteClosed: "buiClipNoteClosed" }, exportAs: ["buiClipNote"], ngImport: i0 });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ClipNoteDirective, decorators: [{
118
+ type: Directive,
119
+ args: [{
120
+ selector: '[buiClipNote]',
121
+ exportAs: 'buiClipNote'
122
+ }]
123
+ }], ctorParameters: function () { return [{ type: i0.ElementRef, decorators: [{
124
+ type: Host
125
+ }] }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
126
+ type: Inject,
127
+ args: [CLIP_NOTE_DEFAULT_CONFIG]
128
+ }] }]; }, propDecorators: { buiClipNote: [{
129
+ type: Input
130
+ }], buiClipNoteColor: [{
131
+ type: Input
132
+ }], buiClipNoteIcon: [{
133
+ type: Input
134
+ }], buiClipNoteCaption: [{
135
+ type: Input
136
+ }], buiClipNoteOpened: [{
137
+ type: Output
138
+ }], buiClipNoteClosed: [{
139
+ type: Output
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcC1ub3RlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL2NsaXAtbm90ZS9jbGlwLW5vdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTixTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTzFELHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsOEJBQThCLEVBQUU7SUFDakgsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztDQUMzRCxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7Ozs7OztHQWFHO0FBS0gsTUFBTSxPQUFPLGlCQUFpQjtJQTBFN0IsWUFDaUIsV0FBb0MsRUFDNUMsR0FBcUIsRUFDSyxPQUE4QjtRQUZoRCxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDNUMsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFoQjlCLGlDQUFpQztRQUV4QixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRELGtDQUFrQztRQUV6QixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzlDLFdBQU0sR0FBaUIsU0FBUyxDQUFDO1FBVXhDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQWhGRDs7O09BR0c7SUFDSCxJQUNJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxR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QUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLElBQUk7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLEtBQUs7UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sZUFBZTtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OzhHQW5IVyxpQkFBaUIsd0ZBNkVwQix3QkFBd0I7a0dBN0VyQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLGFBQWE7aUJBQ3ZCOzswQkE0RUUsSUFBSTs7MEJBRUosTUFBTTsyQkFBQyx3QkFBd0I7NENBdkU3QixXQUFXO3NCQURkLEtBQUs7Z0JBZ0JGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFnQkYsZUFBZTtzQkFEbEIsS0FBSztnQkFlRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBYUcsaUJBQWlCO3NCQUR6QixNQUFNO2dCQUtFLGlCQUFpQjtzQkFEekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyVmlld0luaXQsXG5cdENvbXBvbmVudFJlZixcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRFdmVudEVtaXR0ZXIsXG5cdEhvc3QsXG5cdEluamVjdCxcblx0SW5qZWN0aW9uVG9rZW4sXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBDbGlwTm90ZUNvbXBvbmVudCB9IGZyb20gJy4vY2xpcC1ub3RlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpcE5vdGVEZWZhdWx0Q29uZmlnIHtcblx0Y29sb3I6IFRoZW1lUGFsZXR0ZTtcblx0Y2FwdGlvbjogc3RyaW5nO1xufVxuXG4vKiogVXNlZCB0byBwcm92aWRlIGRlZmF1bHQgY29uZmlnIGZvciBjbGlwIG5vdGVzLiAqL1xuZXhwb3J0IGNvbnN0IENMSVBfTk9URV9ERUZBVUxUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDbGlwTm90ZURlZmF1bHRDb25maWc+KCdidWktY2xpcC1ub3RlLmRlZmF1bHQtY29uZmlnJywge1xuXHRmYWN0b3J5OiAoKSA9PiAoeyBjb2xvcjogJ3ByaW1hcnknLCBjYXB0aW9uOiAnTW9yZSBpbmZvJyB9KVxufSk7XG5cbi8qKlxuICogQSBjbGlwIG5vdGUgY29uc2lzdHMgb2YgYSB0b2dnbGUgYnV0dG9uIGFuZCBhIGZsb2F0aW5nICdub3RlcGFkJyBlbGVtZW50LCBhdHRhY2hlZCB0byB0aGUgdG9wIGVuZCBvZiB0aGUgaG9zdCBlbGVtZW50J3NcbiAqIHZpZXdhYmxlIGFyZWEuIFRoZSAnbm90ZXBhZCcgbm9ybWFsbHkgY29sbGFwc2VzIGF3YXkgYW5kIG9ubHkgcmV2ZWFscyBpdHNlbGYgd2hlbiB0aGUgdG9nZ2xlIGJ1dHRvbiBpcyBhY3RpdmUuXG4gKlxuICogVGhlIHRvZ2dsZSBidXR0b24gY2xpcHMgb24gdGhlIGVkZ2Ugb2YgdGhlIGhvc3QgZWxlbWVudCBhbmQgZXhwYW5kcyB0byBkaXNwbGF5IHRoZSBmdWxsIGNhcHRpb24gd2hlbiBob3ZlcmVkLiBJdCBoaWRlcyBpdHNlbGZcbiAqIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGVyZSBpcyBubyBjb250ZW50IHByb3ZpZGVkIHZpYSB0aGUgYGJ1aUNsaXBOb3RlYCBwcm9wZXJ0eSBvZiB0aGUgZGlyZWN0aXZlLlxuICpcbiAqIFRoZSBjbGlwIG5vdGUgY29tcG9uZW50IGlzIHN1aXRhYmxlIGZvciBsYXJnZSBwYWdlIGNvbnRhaW5lciBlbGVtZW50cyB3aXRoIHZpc2libGUgYm91bmRhcmllcy4gSXQgY2FuIHByZXNlbnQgY29udGV4dHVhbFxuICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFuZCBpbiBhZGRpdGlvbiB0byB0aGUgY29udGVudCBkaXNwbGF5ZWQgaW4gdGhlIG1haW4gdmlldyBhcmVhLlxuICpcbiAqIFRoZSBwcm9wZXJ0aWVzIGBidWlDbGlwTm90ZUNvbG9yYCBhbmQgYGJ1aUNsaXBOb3RlQ2FwdGlvbmAgY3VzdG9taXNlIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjbGlwIG5vdGUsIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB3aGljaFxuICogY2FuIG9wdGlvbmFsbHkgYmUgcHJvdmlkZWQgYnkgdGhlIGBDbGlwTm90ZU1vZHVsZS5mb3JDb25maWcoKWAgbWV0aG9kLlxuICpcbiAqL1xuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2J1aUNsaXBOb3RlXScsXG5cdGV4cG9ydEFzOiAnYnVpQ2xpcE5vdGUnXG59KVxuZXhwb3J0IGNsYXNzIENsaXBOb3RlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdC8qKlxuXHQgKiBQcm92aWRlIGNvbnRlbnQgdG8gdGhlIGNsaXAgbm90ZSdzIGZsb2F0aW5nIG5vdGVwYWQgZWxlbWVudC5cblx0ICogSXQgYWNjZXB0cyBhIGBzdHJpbmdgIG9mIEhUTUwgY29udGVudCBvciBhIGBUZW1wbGF0ZVJlZmAgb2JqZWN0LlxuXHQgKi9cblx0QElucHV0KClcblx0Z2V0IGJ1aUNsaXBOb3RlKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9jb250ZW50O1xuXHR9XG5cdHNldCBidWlDbGlwTm90ZShub3RlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKSB7XG5cdFx0dGhpcy5fY29udGVudCA9IG5vdGU7XG5cdFx0aWYgKHRoaXMuX2NvbXBSZWYpIHtcblx0XHRcdHRoaXMuX3Byb2Nlc3NDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEN1c3RvbWlzZSB0aGUgdGhlbWUgY29sb3IgYWxpYXMuXG5cdCAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuXHQgKi9cblx0QElucHV0KClcblx0Z2V0IGJ1aUNsaXBOb3RlQ29sb3IoKTogVGhlbWVQYWxldHRlIHtcblx0XHRyZXR1cm4gdGhpcy5fY29sb3I7XG5cdH1cblx0c2V0IGJ1aUNsaXBOb3RlQ29sb3IoY29sb3I6IFRoZW1lUGFsZXR0ZSkge1xuXHRcdHRoaXMuX2NvbG9yID0gY29sb3I7XG5cdFx0aWYgKHRoaXMuX2NvbXBSZWYpIHtcblx0XHRcdHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UuX2Fzc2lnbkNvbG9yKHRoaXMuX2NvbG9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3VzdG9taXNlIHRoZSBpY29uIG9uIHRoZSB0b2dnbGUgYnV0dG9uLiBXaXRoIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVkLCB0aGUgYW5pbWF0aW9uIG9uIHRoZSBpY29uXG5cdCAqIHdpbGwgbm90IGJlIGFjdGl2ZS5cblx0ICovXG5cdEBJbnB1dCgpXG5cdGdldCBidWlDbGlwTm90ZUljb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5faWNvbjtcblx0fVxuXHRzZXQgYnVpQ2xpcE5vdGVJY29uKGljb246IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX2ljb24gPSBpY29uO1xuXHRcdGlmICh0aGlzLl9jb21wUmVmKSB7XG5cdFx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLl9hc3NpZ25CdXR0b25JY29uKHRoaXMuX2ljb24pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgY2FwdGlvbiBvZiB0aGUgdG9nZ2xlIGJ1dHRvbiB3aGVuIGV4cGFuZGVkLlxuXHQgKi9cblx0QElucHV0KClcblx0Z2V0IGJ1aUNsaXBOb3RlQ2FwdGlvbigpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9jYXB0aW9uO1xuXHR9XG5cdHNldCBidWlDbGlwTm90ZUNhcHRpb24odGV4dDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fY2FwdGlvbiA9IHRleHQ7XG5cdFx0aWYgKHRoaXMuX2NvbXBSZWYpIHtcblx0XHRcdHRoaXMuX2NvbXBSZWYuaW5zdGFuY2UuX2Fzc2lnbkJ1dHRvblRleHQodGhpcy5fY2FwdGlvbik7XG5cdFx0fVxuXHR9XG5cblx0LyoqIEVtaXRzIHdoZW4gdGhlIHBhbmVsIG9wZW5zICovXG5cdEBPdXRwdXQoKVxuXHRyZWFkb25seSBidWlDbGlwTm90ZU9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHQvKiogRW1pdHMgd2hlbiB0aGUgcGFuZWwgY2xvc2VzICovXG5cdEBPdXRwdXQoKVxuXHRyZWFkb25seSBidWlDbGlwTm90ZUNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHRwcml2YXRlIF9jb250ZW50Pzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0cHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5Jztcblx0cHJpdmF0ZSBfY29tcFJlZiE6IENvbXBvbmVudFJlZjxDbGlwTm90ZUNvbXBvbmVudD47XG5cdHByaXZhdGUgX2NhcHRpb246IHN0cmluZztcblx0cHJpdmF0ZSBfaWNvbj86IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASG9zdCgpIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuXHRcdHByaXZhdGUgX3ZjOiBWaWV3Q29udGFpbmVyUmVmLFxuXHRcdEBJbmplY3QoQ0xJUF9OT1RFX0RFRkFVTFRfQ09ORklHKSBfY29uZmlnOiBDbGlwTm90ZURlZmF1bHRDb25maWdcblx0KSB7XG5cdFx0dGhpcy5fY2FwdGlvbiA9IF9jb25maWcuY2FwdGlvbjtcblx0XHR0aGlzLl9jb2xvciA9IF9jb25maWcuY29sb3I7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9jb21wUmVmID0gdGhpcy5fdmMuY3JlYXRlQ29tcG9uZW50KENsaXBOb3RlQ29tcG9uZW50KTtcblx0XHRcdGNvbnN0IGNoaWxkRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLl9jb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0ZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG5cdFx0XHRlbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkRWxlbWVudCk7XG5cdFx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLl9hc3NpZ25Db2xvcih0aGlzLl9jb2xvcik7XG5cdFx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLl9hc3NpZ25CdXR0b25UZXh0KHRoaXMuX2NhcHRpb24pO1xuXHRcdFx0dGhpcy5fY29tcFJlZi5pbnN0YW5jZS5fYXNzaWduQnV0dG9uSWNvbih0aGlzLl9pY29uKTtcblx0XHRcdHRoaXMuX2NvbXBSZWYuaW5zdGFuY2Uub3BlbmVkLnN1YnNjcmliZSh0aGlzLmJ1aUNsaXBOb3RlT3BlbmVkLm5leHQuYmluZCh0aGlzLmJ1aUNsaXBOb3RlT3BlbmVkKSk7XG5cdFx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUodGhpcy5idWlDbGlwTm90ZUNsb3NlZC5uZXh0LmJpbmQodGhpcy5idWlDbGlwTm90ZUNsb3NlZCkpO1xuXHRcdFx0dGhpcy5fcHJvY2Vzc0NvbnRlbnQoKTtcblx0XHR9KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbXBSZWYuZGVzdHJveSgpO1xuXHR9XG5cblx0LyoqIE9wZW4gdGhlIG5vdGUgcGFuZWwgKi9cblx0b3BlbigpIHtcblx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLm9wZW4oKTtcblx0fVxuXG5cdC8qKiBDbG9zZSB0aGUgbm90ZSBwYW5lbCAqL1xuXHRjbG9zZSgpIHtcblx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLmNsb3NlKCk7XG5cdH1cblxuXHRwcml2YXRlIF9wcm9jZXNzQ29udGVudCgpIHtcblx0XHR0aGlzLl9jb21wUmVmLmluc3RhbmNlLl9jb250ZW50Q2hhbmdlZCh0aGlzLl9jb250ZW50KTtcblx0fVxufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { BidiModule } from '@angular/cdk/bidi';
2
+ import { ObserversModule } from '@angular/cdk/observers';
3
+ import { CommonModule } from '@angular/common';
4
+ import { NgModule } from '@angular/core';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { BuiCommonModule } from '@bravura/ui/common';
8
+ import { IconFontModule } from '@bravura/ui/icon-font';
9
+ import { ClipNoteComponent } from './clip-note.component';
10
+ import { ClipNoteDirective, CLIP_NOTE_DEFAULT_CONFIG } from './clip-note.directive';
11
+ import * as i0 from "@angular/core";
12
+ export class ClipNoteModule {
13
+ static forConfig(config) {
14
+ return {
15
+ ngModule: ClipNoteModule,
16
+ providers: [{ provide: CLIP_NOTE_DEFAULT_CONFIG, useValue: config }]
17
+ };
18
+ }
19
+ }
20
+ ClipNoteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ClipNoteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
+ ClipNoteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: ClipNoteModule, declarations: [ClipNoteComponent, ClipNoteDirective], imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule], exports: [ClipNoteDirective] });
22
+ ClipNoteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ClipNoteModule, imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ClipNoteModule, decorators: [{
24
+ type: NgModule,
25
+ args: [{
26
+ declarations: [ClipNoteComponent, ClipNoteDirective],
27
+ imports: [CommonModule, MatButtonModule, MatIconModule, BidiModule, BuiCommonModule, ObserversModule, IconFontModule],
28
+ exports: [ClipNoteDirective]
29
+ }]
30
+ }] });
31
+ export { ClipNoteDirective };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcC1ub3RlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL2NsaXAtbm90ZS9jbGlwLW5vdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQXlCLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTzNHLE1BQU0sT0FBTyxjQUFjO0lBQzFCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBNkI7UUFDN0MsT0FBTztZQUNOLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUNwRSxDQUFDO0lBQ0gsQ0FBQzs7MkdBTlcsY0FBYzs0R0FBZCxjQUFjLGlCQUpYLGlCQUFpQixFQUFFLGlCQUFpQixhQUN6QyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLGFBQzFHLGlCQUFpQjs0R0FFZixjQUFjLFlBSGhCLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWM7MkZBR3hHLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQztvQkFDckgsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzVCOztBQVVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmlkaU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE9ic2VydmVyc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vYnNlcnZlcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQnVpQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGJyYXZ1cmEvdWkvY29tbW9uJztcbmltcG9ydCB7IEljb25Gb250TW9kdWxlIH0gZnJvbSAnQGJyYXZ1cmEvdWkvaWNvbi1mb250JztcbmltcG9ydCB7IENsaXBOb3RlQ29tcG9uZW50IH0gZnJvbSAnLi9jbGlwLW5vdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENsaXBOb3RlRGVmYXVsdENvbmZpZywgQ2xpcE5vdGVEaXJlY3RpdmUsIENMSVBfTk9URV9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vY2xpcC1ub3RlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG5cdGRlY2xhcmF0aW9uczogW0NsaXBOb3RlQ29tcG9uZW50LCBDbGlwTm90ZURpcmVjdGl2ZV0sXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgQmlkaU1vZHVsZSwgQnVpQ29tbW9uTW9kdWxlLCBPYnNlcnZlcnNNb2R1bGUsIEljb25Gb250TW9kdWxlXSxcblx0ZXhwb3J0czogW0NsaXBOb3RlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBDbGlwTm90ZU1vZHVsZSB7XG5cdHN0YXRpYyBmb3JDb25maWcoY29uZmlnOiBDbGlwTm90ZURlZmF1bHRDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENsaXBOb3RlTW9kdWxlPiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBDbGlwTm90ZU1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ0xJUF9OT1RFX0RFRkFVTFRfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH1dXG5cdFx0fTtcblx0fVxufVxuXG5leHBvcnQgeyBDbGlwTm90ZURpcmVjdGl2ZSB9O1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './clip-note.module';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL2NsaXAtbm90ZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsaXAtbm90ZS5tb2R1bGUnO1xuIl19
@@ -144,6 +144,8 @@ class AlertContainerComponent {
144
144
  /** @ignore Emits whenever the animation is done. */
145
145
  this._animationEnded = new Subject();
146
146
  this._destroyed$ = new Subject();
147
+ /** Emits the component instance after initialisation. */
148
+ this.init = new EventEmitter();
147
149
  }
148
150
  ngOnInit() {
149
151
  const checkScroll = () => {
@@ -156,6 +158,8 @@ class AlertContainerComponent {
156
158
  .pipe(takeUntil(this._destroyed$))
157
159
  .subscribe(checkScroll);
158
160
  checkScroll();
161
+ this.init.emit(this);
162
+ this.init.complete();
159
163
  }
160
164
  ngOnDestroy() {
161
165
  var _b;
@@ -248,7 +252,7 @@ class AlertContainerComponent {
248
252
  }
249
253
  }
250
254
  AlertContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AlertContainerComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }], target: i0.ɵɵFactoryTarget.Component });
251
- AlertContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: AlertContainerComponent, selector: "bui-alert-container", inputs: { max: "max", outsideViewportBehavior: "outsideViewportBehavior", floatDuration: "floatDuration" }, host: { properties: { "class": "'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')" } }, ngImport: i0, template: "<div\n\tclass=\"bui-alert-fixed-panel\"\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\n>\n\t<bui-alert\n\t\t*ngFor=\"let a of _alerts\"\n\t\t[id]=\"a.id\"\n\t\t[type]=\"a.type\"\n\t\t[message]=\"a.message\"\n\t\tdismissible\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t(dismissed)=\"_dismiss(a)\"\n\t></bui-alert>\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\n\t\t<bui-alert\n\t\t\t*ngFor=\"let a of _alerts\"\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t></bui-alert>\n\t</div>\n</div>\n", styles: [".bui-alert:not(:first-of-type){margin-top:.5rem}:host(:not([hidden])){display:block}.bui-alert-fixed-panel{transition:opacity .2s ease-in}.bui-alert-fixed-panel.bui-alert-fixed-panel-blink .bui-alert:last-of-type{animation:blink 1s ease-in forwards}.bui-alert-float-panel-frame{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;justify-content:center;align-items:center;flex-direction:column;transition:background-color .4s cubic-bezier(.25,0,.55,.2)}.bui-alert-float-panel-frame:not([hidden]){display:flex}.bui-alert-float-panel-frame.bui-alert-float-panel-shaded{background-color:#00000080}.bui-alert-float-panel-frame .bui-alert{background-color:var(--bui-bg-card)}@keyframes blink{60%{opacity:1}70%{opacity:0}80%{opacity:1}90%{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AlertMessageComponent, selector: "bui-alert", inputs: ["type", "message", "dismissible", "id"], outputs: ["dismissed", "initialised"] }], animations: [
255
+ AlertContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: AlertContainerComponent, selector: "bui-alert-container", inputs: { max: "max", outsideViewportBehavior: "outsideViewportBehavior", floatDuration: "floatDuration" }, outputs: { init: "init" }, host: { properties: { "class": "'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')" } }, ngImport: i0, template: "<div\n\tclass=\"bui-alert-fixed-panel\"\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\n>\n\t<bui-alert\n\t\t*ngFor=\"let a of _alerts\"\n\t\t[id]=\"a.id\"\n\t\t[type]=\"a.type\"\n\t\t[message]=\"a.message\"\n\t\tdismissible\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t(dismissed)=\"_dismiss(a)\"\n\t></bui-alert>\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\n\t\t<bui-alert\n\t\t\t*ngFor=\"let a of _alerts\"\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t></bui-alert>\n\t</div>\n</div>\n", styles: [".bui-alert:not(:first-of-type){margin-top:.5rem}:host(:not([hidden])){display:block}.bui-alert-fixed-panel{transition:opacity .2s ease-in}.bui-alert-fixed-panel.bui-alert-fixed-panel-blink .bui-alert:last-of-type{animation:blink 1s ease-in forwards}.bui-alert-float-panel-frame{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;justify-content:center;align-items:center;flex-direction:column;transition:background-color .4s cubic-bezier(.25,0,.55,.2)}.bui-alert-float-panel-frame:not([hidden]){display:flex}.bui-alert-float-panel-frame.bui-alert-float-panel-shaded{background-color:#00000080}.bui-alert-float-panel-frame .bui-alert{background-color:var(--bui-bg-card)}@keyframes blink{60%{opacity:1}70%{opacity:0}80%{opacity:1}90%{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AlertMessageComponent, selector: "bui-alert", inputs: ["type", "message", "dismissible", "id"], outputs: ["dismissed", "initialised"] }], animations: [
252
256
  trigger('floatTransition', [
253
257
  transition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),
254
258
  transition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])
@@ -300,6 +304,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
300
304
  type: Input
301
305
  }], floatDuration: [{
302
306
  type: Input
307
+ }], init: [{
308
+ type: Output
303
309
  }] } });
304
310
 
305
311
  class AlertModule {
@@ -1 +1 @@
1
- {"version":3,"file":"bravura-ui-alert.mjs","sources":["../../../projects/ui/alert/alert-message.component.ts","../../../projects/ui/alert/alert-message.component.html","../../../projects/ui/alert/alert-container.component.ts","../../../projects/ui/alert/alert-container.component.html","../../../projects/ui/alert/alert.module.ts","../../../projects/ui/alert/bravura-ui-alert.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { generateID } from '@bravura/ui/common';\n\n/** @ignore */\nconst ICONS: any = {\n\tsuccess: 'check_circle',\n\tinfo: 'info',\n\twarn: 'report_problem',\n\terror: 'cancel'\n};\n\n/**\n * An alert style message usually appears in a global notification area.\n *\n * The base color of the message is determined by the `type` of the message and a list of predefined\n * CSS custom properties.\n *\n * ```scss\n * --bui-color-success: #519602;\n * --bui-color-info: #0dcaf0;\n * --bui-color-warning: #ffc107;\n * --bui-color-error: #dc3545;\n * ```\n *\n *\n */\n@Component({\n\tselector: 'bui-alert',\n\ttemplateUrl: './alert-message.component.html',\n\tstyleUrls: ['./alert-message.component.scss'],\n\thost: {\n\t\t'[class]': `'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')`,\n\t\trole: 'alert'\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AlertMessageComponent implements OnInit {\n\t/** @ignore */\n\tstatic ngAcceptInputType_dismissible: boolean | string | null | undefined;\n\t/** @ignore */\n\tstatic ngAcceptInputType_blink: boolean | string | null | undefined;\n\n\t/** The type of the message, used to derive the icon and base color. */\n\t@Input()\n\ttype: 'success' | 'info' | 'warn' | 'error' = 'error';\n\n\t/** The message to be displayed, HTML supported. */\n\t@Input()\n\tmessage = '';\n\n\t/** Whether to display the button to fire the `dismissed` event. */\n\t@Input()\n\tget dismissible() {\n\t\treturn this._dismissible;\n\t}\n\tset dismissible(value: any) {\n\t\tthis._dismissible = coerceBooleanProperty(value);\n\t}\n\n\t/** To be emitted when the user choose to dismiss the message. The event object is the ID of the element. */\n\t@Output()\n\tdismissed = new EventEmitter<string>();\n\n\t/** To be emitted when the component finishes initialisation. The event object is the ID of the element. */\n\t@Output()\n\tinitialised = new EventEmitter<string>();\n\n\t@Input('id')\n\t@HostBinding('id')\n\t/** @ignore */\n\t_id = `bui-alert-${generateID()}`;\n\n\tprivate _dismissible = false;\n\tprivate _blink = false;\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.initialised.emit(this._id);\n\t}\n\n\t/** @ignore */\n\tget iconName(): string {\n\t\treturn ICONS[this.type];\n\t}\n\n\t/** @ignore */\n\t_dismiss() {\n\t\tthis.dismissed.emit(this._id);\n\t}\n}\n","<div class=\"bui-alert-backdrop\"></div>\n<div class=\"bui-alert-frame\"></div>\n\n<div class=\"bui-alert-wrapper\">\n\t<div class=\"bui-alert-icon-area\">\n\t\t<mat-icon [buiIcon]=\"iconName\" variant=\"outlined\"></mat-icon>\n\t</div>\n\t<div class=\"bui-alert-content\"><div [innerHTML]=\"message\"></div></div>\n</div>\n\n<div class=\"bui-alert-button-area\" *ngIf=\"dismissible\">\n\t<div class=\"bui-alert-button-backdrop\"></div>\n\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\"><mat-icon>cancel</mat-icon></button>\n</div>\n","import { animate, state, style, transition, trigger, AnimationEvent } from '@angular/animations';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit\n} from '@angular/core';\nimport { generateID, isElementInViewport } from '@bravura/ui/common';\nimport { Subject, Subscription, timer } from 'rxjs';\nimport { delay, take, takeUntil, tap } from 'rxjs/operators';\n\n/**@internal */\nclass InternalAlertOject {\n\tid: string;\n\tdeleted = false;\n\tconstructor(public readonly type: 'success' | 'info' | 'warn' | 'error', public readonly message: string) {\n\t\tthis.id = `bui-alert-cont-alert-${generateID()}`;\n\t}\n}\n\n/**\n * Use this component in a designated area of a page for displaying notification messages\n *\n */\n@Component({\n\tselector: 'bui-alert-container',\n\ttemplateUrl: './alert-container.component.html',\n\tstyleUrls: ['./alert-container.component.scss'],\n\thost: {\n\t\t'[class]': `'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')`\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tanimations: [\n\t\ttrigger('floatTransition', [\n\t\t\ttransition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),\n\t\t\ttransition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])\n\t\t]),\n\t\ttrigger('alertTransition', [\n\t\t\tstate('visible', style({})),\n\t\t\tstate(\n\t\t\t\t'hidden',\n\t\t\t\tstyle({\n\t\t\t\t\theight: 0,\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\ttransform: 'scaleY(0)',\n\t\t\t\t\topacity: 0,\n\t\t\t\t\t'margin-top': '-1rem'\n\t\t\t\t})\n\t\t\t),\n\t\t\ttransition('void => visible', [\n\t\t\t\tstyle({ transform: 'translateY(100%)', height: 0, opacity: '0' }),\n\t\t\t\tanimate('250ms cubic-bezier(0.42, 0.0, 0.58, 1.0)')\n\t\t\t]),\n\t\t\ttransition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])\n\t\t])\n\t]\n})\nexport class AlertContainerComponent implements OnInit, OnDestroy {\n\t/** The maximum number of messages displayed in the container area. */\n\t@Input()\n\tmax = 5;\n\n\t/**\n\t * This property determines the behavior for displaying the notifications when the container is outside the viewport.\n\t *\n\t * `scroll`: The component will try to scroll to reveal the new notifications.\n\t * `float`: The component will float the alert panel to the center of the screen for a couple of seconds and move it back to the original position.\n\t */\n\t@Input()\n\toutsideViewportBehavior: 'scroll' | 'float' = 'float';\n\n\t/**\n\t * The number of milliseconds for which the alert container will be floated when new notification arrives.\n\t *\n\t * This will only take effect when `outsideViewportBehavior` is set to `float` and the container is outside the viewport.\n\t */\n\t@Input()\n\tfloatDuration = 2000;\n\n\t/**@internal */\n\t_alerts: InternalAlertOject[] = [];\n\t/**@internal */\n\t_floated = false;\n\t/**@internal */\n\t_floatPanelHidden = true;\n\n\t/** @ignore Emits whenever the animation is started. */\n\treadonly _animationStarted = new Subject<AnimationEvent>();\n\t/** @ignore Emits whenever the animation is done. */\n\treadonly _animationEnded = new Subject<AnimationEvent>();\n\n\tprivate _destroyed$ = new Subject<void>();\n\tprivate _endFloatingSub?: Subscription;\n\n\tconstructor(\n\t\tprivate zone: NgZone,\n\t\tprivate cdRef: ChangeDetectorRef,\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\n\t\tprivate scroll: ScrollDispatcher\n\t) {}\n\n\tngOnInit(): void {\n\t\tconst checkScroll = () => {\n\t\t\tif (isElementInViewport(this._elementRef.nativeElement)) {\n\t\t\t\tthis._endFloating();\n\t\t\t}\n\t\t};\n\t\tthis.scroll\n\t\t\t.ancestorScrolled(this._elementRef.nativeElement)\n\t\t\t.pipe(takeUntil(this._destroyed$))\n\t\t\t.subscribe(checkScroll);\n\t\tcheckScroll();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._endFloatingSub?.unsubscribe();\n\t}\n\n\t/**@internal */\n\tget _remaining() {\n\t\treturn this._alerts.filter(a => !a.deleted);\n\t}\n\n\t/**@internal */\n\tget _width() {\n\t\treturn this._elementRef.nativeElement.clientWidth;\n\t}\n\n\t/** Add a message to the notification area */\n\tasync notify(type: 'success' | 'info' | 'warn' | 'error', message: string) {\n\t\tthis._endFloatingSub?.unsubscribe();\n\t\tconst duplicate = this._remaining.find(_a => message === _a.message);\n\t\tif (duplicate) {\n\t\t\tthis._dismiss(duplicate);\n\t\t}\n\n\t\tconst remaining = this._remaining;\n\t\tif (remaining.length >= this.max) {\n\t\t\tthis._dismiss(remaining[0]);\n\t\t}\n\n\t\tconst a = new InternalAlertOject(type, message);\n\t\tawait this._checkViewport();\n\t\tthis.zone.run(() => {\n\t\t\tthis._alerts.push(a);\n\t\t\tthis.cdRef.markForCheck();\n\t\t});\n\t}\n\n\t/**@ignore */\n\tasync _checkViewport() {\n\t\tif (!isElementInViewport(this._elementRef.nativeElement)) {\n\t\t\tif (this.outsideViewportBehavior === 'float') {\n\t\t\t\tconst d = this._floated ? 0 : 100;\n\t\t\t\tthis._floated = true;\n\t\t\t\tthis._floatPanelHidden = false;\n\t\t\t\tthis._endFloating(this.floatDuration);\n\t\t\t\tthis.cdRef.markForCheck();\n\t\t\t\tawait timer(d).toPromise();\n\t\t\t} else {\n\t\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'start', behavior: 'smooth' });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**@ignore */\n\tasync _dismiss(a: InternalAlertOject) {\n\t\tconst id = a.id;\n\t\ta.deleted = true;\n\t\tthis.cdRef.markForCheck();\n\t\tawait this._animationEnded.pipe(take(1)).toPromise();\n\t\tthis.zone.run(() => {\n\t\t\tthis._alerts = this._alerts.filter(_a => _a.id !== id);\n\t\t\tthis.cdRef.markForCheck();\n\t\t});\n\t}\n\n\t/** Remove all messages currently displayed. */\n\tasync clear() {\n\t\tawait Promise.all(this._remaining.map(a => this._dismiss(a)));\n\t\tthis._endFloating();\n\t}\n\n\tprivate _endFloating(_delay = 0) {\n\t\tif (!this._floated) {\n\t\t\treturn;\n\t\t}\n\t\tthis._endFloatingSub?.unsubscribe();\n\t\tthis._endFloatingSub = timer(_delay)\n\t\t\t.pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis._floated = false;\n\t\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\n\t\t\t\t}),\n\t\t\t\tdelay(400)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._floatPanelHidden = true;\n\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\n\t\t\t});\n\t}\n}\n","<div\n\tclass=\"bui-alert-fixed-panel\"\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\n>\n\t<bui-alert\n\t\t*ngFor=\"let a of _alerts\"\n\t\t[id]=\"a.id\"\n\t\t[type]=\"a.type\"\n\t\t[message]=\"a.message\"\n\t\tdismissible\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t(dismissed)=\"_dismiss(a)\"\n\t></bui-alert>\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\n\t\t<bui-alert\n\t\t\t*ngFor=\"let a of _alerts\"\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t></bui-alert>\n\t</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconFontModule } from '@bravura/ui/icon-font';\nimport { AlertContainerComponent } from './alert-container.component';\nimport { AlertMessageComponent } from './alert-message.component';\n\n@NgModule({\n\tdeclarations: [AlertMessageComponent, AlertContainerComponent],\n\timports: [CommonModule, IconFontModule, MatButtonModule],\n\texports: [AlertMessageComponent, AlertContainerComponent]\n})\nexport class AlertModule {}\n\nexport { AlertMessageComponent, AlertContainerComponent };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.AlertMessageComponent"],"mappings":"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"}
1
+ {"version":3,"file":"bravura-ui-alert.mjs","sources":["../../../projects/ui/alert/alert-message.component.ts","../../../projects/ui/alert/alert-message.component.html","../../../projects/ui/alert/alert-container.component.ts","../../../projects/ui/alert/alert-container.component.html","../../../projects/ui/alert/alert.module.ts","../../../projects/ui/alert/bravura-ui-alert.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { generateID } from '@bravura/ui/common';\n\n/** @ignore */\nconst ICONS: any = {\n\tsuccess: 'check_circle',\n\tinfo: 'info',\n\twarn: 'report_problem',\n\terror: 'cancel'\n};\n\n/**\n * An alert style message usually appears in a global notification area.\n *\n * The base color of the message is determined by the `type` of the message and a list of predefined\n * CSS custom properties.\n *\n * ```scss\n * --bui-color-success: #519602;\n * --bui-color-info: #0dcaf0;\n * --bui-color-warning: #ffc107;\n * --bui-color-error: #dc3545;\n * ```\n *\n *\n */\n@Component({\n\tselector: 'bui-alert',\n\ttemplateUrl: './alert-message.component.html',\n\tstyleUrls: ['./alert-message.component.scss'],\n\thost: {\n\t\t'[class]': `'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')`,\n\t\trole: 'alert'\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AlertMessageComponent implements OnInit {\n\t/** @ignore */\n\tstatic ngAcceptInputType_dismissible: boolean | string | null | undefined;\n\t/** @ignore */\n\tstatic ngAcceptInputType_blink: boolean | string | null | undefined;\n\n\t/** The type of the message, used to derive the icon and base color. */\n\t@Input()\n\ttype: 'success' | 'info' | 'warn' | 'error' = 'error';\n\n\t/** The message to be displayed, HTML supported. */\n\t@Input()\n\tmessage = '';\n\n\t/** Whether to display the button to fire the `dismissed` event. */\n\t@Input()\n\tget dismissible() {\n\t\treturn this._dismissible;\n\t}\n\tset dismissible(value: any) {\n\t\tthis._dismissible = coerceBooleanProperty(value);\n\t}\n\n\t/** To be emitted when the user choose to dismiss the message. The event object is the ID of the element. */\n\t@Output()\n\tdismissed = new EventEmitter<string>();\n\n\t/** To be emitted when the component finishes initialisation. The event object is the ID of the element. */\n\t@Output()\n\tinitialised = new EventEmitter<string>();\n\n\t@Input('id')\n\t@HostBinding('id')\n\t/** @ignore */\n\t_id = `bui-alert-${generateID()}`;\n\n\tprivate _dismissible = false;\n\tprivate _blink = false;\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.initialised.emit(this._id);\n\t}\n\n\t/** @ignore */\n\tget iconName(): string {\n\t\treturn ICONS[this.type];\n\t}\n\n\t/** @ignore */\n\t_dismiss() {\n\t\tthis.dismissed.emit(this._id);\n\t}\n}\n","<div class=\"bui-alert-backdrop\"></div>\n<div class=\"bui-alert-frame\"></div>\n\n<div class=\"bui-alert-wrapper\">\n\t<div class=\"bui-alert-icon-area\">\n\t\t<mat-icon [buiIcon]=\"iconName\" variant=\"outlined\"></mat-icon>\n\t</div>\n\t<div class=\"bui-alert-content\"><div [innerHTML]=\"message\"></div></div>\n</div>\n\n<div class=\"bui-alert-button-area\" *ngIf=\"dismissible\">\n\t<div class=\"bui-alert-button-backdrop\"></div>\n\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\"><mat-icon>cancel</mat-icon></button>\n</div>\n","import { animate, state, style, transition, trigger, AnimationEvent } from '@angular/animations';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tOutput\n} from '@angular/core';\nimport { generateID, isElementInViewport } from '@bravura/ui/common';\nimport { Subject, Subscription, timer } from 'rxjs';\nimport { delay, take, takeUntil, tap } from 'rxjs/operators';\n\n/**@internal */\nclass InternalAlertOject {\n\tid: string;\n\tdeleted = false;\n\tconstructor(public readonly type: 'success' | 'info' | 'warn' | 'error', public readonly message: string) {\n\t\tthis.id = `bui-alert-cont-alert-${generateID()}`;\n\t}\n}\n\n/**\n * Use this component in a designated area of a page for displaying notification messages\n *\n */\n@Component({\n\tselector: 'bui-alert-container',\n\ttemplateUrl: './alert-container.component.html',\n\tstyleUrls: ['./alert-container.component.scss'],\n\thost: {\n\t\t'[class]': `'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')`\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tanimations: [\n\t\ttrigger('floatTransition', [\n\t\t\ttransition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),\n\t\t\ttransition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])\n\t\t]),\n\t\ttrigger('alertTransition', [\n\t\t\tstate('visible', style({})),\n\t\t\tstate(\n\t\t\t\t'hidden',\n\t\t\t\tstyle({\n\t\t\t\t\theight: 0,\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\ttransform: 'scaleY(0)',\n\t\t\t\t\topacity: 0,\n\t\t\t\t\t'margin-top': '-1rem'\n\t\t\t\t})\n\t\t\t),\n\t\t\ttransition('void => visible', [\n\t\t\t\tstyle({ transform: 'translateY(100%)', height: 0, opacity: '0' }),\n\t\t\t\tanimate('250ms cubic-bezier(0.42, 0.0, 0.58, 1.0)')\n\t\t\t]),\n\t\t\ttransition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])\n\t\t])\n\t]\n})\nexport class AlertContainerComponent implements OnInit, OnDestroy {\n\t/** The maximum number of messages displayed in the container area. */\n\t@Input()\n\tmax = 5;\n\n\t/**\n\t * This property determines the behavior for displaying the notifications when the container is outside the viewport.\n\t *\n\t * `scroll`: The component will try to scroll to reveal the new notifications.\n\t * `float`: The component will float the alert panel to the center of the screen for a couple of seconds and move it back to the original position.\n\t */\n\t@Input()\n\toutsideViewportBehavior: 'scroll' | 'float' = 'float';\n\n\t/**\n\t * The number of milliseconds for which the alert container will be floated when new notification arrives.\n\t *\n\t * This will only take effect when `outsideViewportBehavior` is set to `float` and the container is outside the viewport.\n\t */\n\t@Input()\n\tfloatDuration = 2000;\n\n\t/**@internal */\n\t_alerts: InternalAlertOject[] = [];\n\t/**@internal */\n\t_floated = false;\n\t/**@internal */\n\t_floatPanelHidden = true;\n\n\t/** @ignore Emits whenever the animation is started. */\n\treadonly _animationStarted = new Subject<AnimationEvent>();\n\t/** @ignore Emits whenever the animation is done. */\n\treadonly _animationEnded = new Subject<AnimationEvent>();\n\n\tprivate _destroyed$ = new Subject<void>();\n\tprivate _endFloatingSub?: Subscription;\n\n\t/** Emits the component instance after initialisation. */\n\t@Output()\n\tprivate init = new EventEmitter<AlertContainerComponent>();\n\n\tconstructor(\n\t\tprivate zone: NgZone,\n\t\tprivate cdRef: ChangeDetectorRef,\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\n\t\tprivate scroll: ScrollDispatcher\n\t) {}\n\n\tngOnInit(): void {\n\t\tconst checkScroll = () => {\n\t\t\tif (isElementInViewport(this._elementRef.nativeElement)) {\n\t\t\t\tthis._endFloating();\n\t\t\t}\n\t\t};\n\t\tthis.scroll\n\t\t\t.ancestorScrolled(this._elementRef.nativeElement)\n\t\t\t.pipe(takeUntil(this._destroyed$))\n\t\t\t.subscribe(checkScroll);\n\t\tcheckScroll();\n\t\tthis.init.emit(this);\n\t\tthis.init.complete();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._endFloatingSub?.unsubscribe();\n\t}\n\n\t/**@internal */\n\tget _remaining() {\n\t\treturn this._alerts.filter(a => !a.deleted);\n\t}\n\n\t/**@internal */\n\tget _width() {\n\t\treturn this._elementRef.nativeElement.clientWidth;\n\t}\n\n\t/** Add a message to the notification area */\n\tasync notify(type: 'success' | 'info' | 'warn' | 'error', message: string) {\n\t\tthis._endFloatingSub?.unsubscribe();\n\t\tconst duplicate = this._remaining.find(_a => message === _a.message);\n\t\tif (duplicate) {\n\t\t\tthis._dismiss(duplicate);\n\t\t}\n\n\t\tconst remaining = this._remaining;\n\t\tif (remaining.length >= this.max) {\n\t\t\tthis._dismiss(remaining[0]);\n\t\t}\n\n\t\tconst a = new InternalAlertOject(type, message);\n\t\tawait this._checkViewport();\n\t\tthis.zone.run(() => {\n\t\t\tthis._alerts.push(a);\n\t\t\tthis.cdRef.markForCheck();\n\t\t});\n\t}\n\n\t/**@ignore */\n\tasync _checkViewport() {\n\t\tif (!isElementInViewport(this._elementRef.nativeElement)) {\n\t\t\tif (this.outsideViewportBehavior === 'float') {\n\t\t\t\tconst d = this._floated ? 0 : 100;\n\t\t\t\tthis._floated = true;\n\t\t\t\tthis._floatPanelHidden = false;\n\t\t\t\tthis._endFloating(this.floatDuration);\n\t\t\t\tthis.cdRef.markForCheck();\n\t\t\t\tawait timer(d).toPromise();\n\t\t\t} else {\n\t\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'start', behavior: 'smooth' });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**@ignore */\n\tasync _dismiss(a: InternalAlertOject) {\n\t\tconst id = a.id;\n\t\ta.deleted = true;\n\t\tthis.cdRef.markForCheck();\n\t\tawait this._animationEnded.pipe(take(1)).toPromise();\n\t\tthis.zone.run(() => {\n\t\t\tthis._alerts = this._alerts.filter(_a => _a.id !== id);\n\t\t\tthis.cdRef.markForCheck();\n\t\t});\n\t}\n\n\t/** Remove all messages currently displayed. */\n\tasync clear() {\n\t\tawait Promise.all(this._remaining.map(a => this._dismiss(a)));\n\t\tthis._endFloating();\n\t}\n\n\tprivate _endFloating(_delay = 0) {\n\t\tif (!this._floated) {\n\t\t\treturn;\n\t\t}\n\t\tthis._endFloatingSub?.unsubscribe();\n\t\tthis._endFloatingSub = timer(_delay)\n\t\t\t.pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis._floated = false;\n\t\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\n\t\t\t\t}),\n\t\t\t\tdelay(400)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._floatPanelHidden = true;\n\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\n\t\t\t});\n\t}\n}\n","<div\n\tclass=\"bui-alert-fixed-panel\"\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\n>\n\t<bui-alert\n\t\t*ngFor=\"let a of _alerts\"\n\t\t[id]=\"a.id\"\n\t\t[type]=\"a.type\"\n\t\t[message]=\"a.message\"\n\t\tdismissible\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t(dismissed)=\"_dismiss(a)\"\n\t></bui-alert>\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\n\t\t<bui-alert\n\t\t\t*ngFor=\"let a of _alerts\"\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t></bui-alert>\n\t</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconFontModule } from '@bravura/ui/icon-font';\nimport { AlertContainerComponent } from './alert-container.component';\nimport { AlertMessageComponent } from './alert-message.component';\n\n@NgModule({\n\tdeclarations: [AlertMessageComponent, AlertContainerComponent],\n\timports: [CommonModule, IconFontModule, MatButtonModule],\n\texports: [AlertMessageComponent, AlertContainerComponent]\n})\nexport class AlertModule {}\n\nexport { AlertMessageComponent, AlertContainerComponent };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.AlertMessageComponent"],"mappings":"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"}