@bravura/ui 6.0.1 → 7.0.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.
Files changed (128) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +1 -0
  3. package/alert/index.d.ts +126 -3
  4. package/alert/testing/index.d.ts +28 -5
  5. package/behavior/index.d.ts +231 -3
  6. package/clip-note/index.d.ts +125 -3
  7. package/common/index.d.ts +24 -3
  8. package/currency-input/index.d.ts +69 -3
  9. package/decimal-input/index.d.ts +39 -3
  10. package/discrete-input/index.d.ts +139 -3
  11. package/fesm2022/bravura-ui-alert.mjs +18 -21
  12. package/fesm2022/bravura-ui-alert.mjs.map +1 -1
  13. package/fesm2022/bravura-ui-behavior.mjs +18 -18
  14. package/fesm2022/bravura-ui-behavior.mjs.map +1 -1
  15. package/fesm2022/bravura-ui-clip-note.mjs +10 -10
  16. package/fesm2022/bravura-ui-clip-note.mjs.map +1 -1
  17. package/fesm2022/bravura-ui-common.mjs +5 -6
  18. package/fesm2022/bravura-ui-common.mjs.map +1 -1
  19. package/fesm2022/bravura-ui-currency-input.mjs +7 -7
  20. package/fesm2022/bravura-ui-currency-input.mjs.map +1 -1
  21. package/fesm2022/bravura-ui-decimal-input.mjs +7 -7
  22. package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -1
  23. package/fesm2022/bravura-ui-discrete-input.mjs +14 -39
  24. package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -1
  25. package/fesm2022/bravura-ui-file-upload.mjs +18 -18
  26. package/fesm2022/bravura-ui-file-upload.mjs.map +1 -1
  27. package/fesm2022/bravura-ui-form-field.mjs +10 -10
  28. package/fesm2022/bravura-ui-form-field.mjs.map +1 -1
  29. package/fesm2022/bravura-ui-icon-font.mjs +7 -7
  30. package/fesm2022/bravura-ui-icon-font.mjs.map +1 -1
  31. package/fesm2022/bravura-ui-panel.mjs +16 -16
  32. package/fesm2022/bravura-ui-panel.mjs.map +1 -1
  33. package/fesm2022/bravura-ui-phone-number.mjs +13 -13
  34. package/fesm2022/bravura-ui-phone-number.mjs.map +1 -1
  35. package/fesm2022/bravura-ui-radio-panel.mjs +12 -14
  36. package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -1
  37. package/fesm2022/bravura-ui-selection-panel.mjs +11 -11
  38. package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -1
  39. package/fesm2022/bravura-ui-skeletons.mjs +10 -10
  40. package/fesm2022/bravura-ui-skeletons.mjs.map +1 -1
  41. package/fesm2022/bravura-ui-stepper.mjs +18 -18
  42. package/fesm2022/bravura-ui-stepper.mjs.map +1 -1
  43. package/fesm2022/bravura-ui-tooltip.mjs +13 -13
  44. package/fesm2022/bravura-ui-tooltip.mjs.map +1 -1
  45. package/file-upload/index.d.ts +200 -3
  46. package/form-field/index.d.ts +49 -3
  47. package/icon-font/index.d.ts +79 -3
  48. package/index.d.ts +3 -5
  49. package/package.json +20 -20
  50. package/panel/index.d.ts +107 -3
  51. package/phone-number/index.d.ts +108 -3
  52. package/radio-panel/index.d.ts +71 -3
  53. package/radio-panel/testing/index.d.ts +32 -5
  54. package/selection-panel/index.d.ts +149 -3
  55. package/skeletons/index.d.ts +79 -3
  56. package/stepper/index.d.ts +106 -3
  57. package/tooltip/index.d.ts +83 -3
  58. package/alert/alert-container.component.d.ts +0 -71
  59. package/alert/alert-message.component.d.ts +0 -47
  60. package/alert/alert.module.d.ts +0 -14
  61. package/alert/public-api.d.ts +0 -1
  62. package/alert/testing/test-api.d.ts +0 -24
  63. package/behavior/await.directive.d.ts +0 -71
  64. package/behavior/behavior.module.d.ts +0 -17
  65. package/behavior/observe-content-class.directive.d.ts +0 -29
  66. package/behavior/public-api.d.ts +0 -5
  67. package/behavior/sizing-monitor.directive.d.ts +0 -23
  68. package/behavior/sizing.directive.d.ts +0 -98
  69. package/clip-note/clip-note.component.d.ts +0 -45
  70. package/clip-note/clip-note.directive.d.ts +0 -69
  71. package/clip-note/clip-note.module.d.ts +0 -19
  72. package/clip-note/public-api.d.ts +0 -1
  73. package/common/common-utils.d.ts +0 -11
  74. package/common/common.module.d.ts +0 -11
  75. package/common/public-api.d.ts +0 -2
  76. package/currency-input/currency-input.directive.d.ts +0 -62
  77. package/currency-input/currency-input.module.d.ts +0 -10
  78. package/currency-input/public-api.d.ts +0 -1
  79. package/decimal-input/decimal-input.directive.d.ts +0 -32
  80. package/decimal-input/decimal-input.module.d.ts +0 -10
  81. package/decimal-input/public-api.d.ts +0 -1
  82. package/discrete-input/discrete-input.component.d.ts +0 -141
  83. package/discrete-input/discrete-input.module.d.ts +0 -11
  84. package/discrete-input/public-api.d.ts +0 -2
  85. package/file-upload/file-upload.component.d.ts +0 -148
  86. package/file-upload/file-upload.module.d.ts +0 -14
  87. package/file-upload/file-upload.service.d.ts +0 -42
  88. package/file-upload/public-api.d.ts +0 -6
  89. package/form-field/form-field.component.d.ts +0 -39
  90. package/form-field/form-field.module.d.ts +0 -13
  91. package/form-field/public-api.d.ts +0 -2
  92. package/icon-font/icon-font.module.d.ts +0 -12
  93. package/icon-font/icon.directive.d.ts +0 -46
  94. package/icon-font/public-api.d.ts +0 -3
  95. package/icon-font/utilities.d.ts +0 -20
  96. package/panel/panel-section.component.d.ts +0 -15
  97. package/panel/panel.component.d.ts +0 -60
  98. package/panel/panel.module.d.ts +0 -16
  99. package/panel/public-api.d.ts +0 -1
  100. package/panel/tinted.directive.d.ts +0 -26
  101. package/phone-number/phone-number.directive.d.ts +0 -66
  102. package/phone-number/phone-number.module.d.ts +0 -17
  103. package/phone-number/phone-number.pipe.d.ts +0 -13
  104. package/phone-number/phone-number.validator.d.ts +0 -31
  105. package/phone-number/public-api.d.ts +0 -1
  106. package/public-api.d.ts +0 -1
  107. package/radio-panel/public-api.d.ts +0 -3
  108. package/radio-panel/radio-panel-item.component.d.ts +0 -22
  109. package/radio-panel/radio-panel.component.d.ts +0 -38
  110. package/radio-panel/radio-panel.module.d.ts +0 -15
  111. package/radio-panel/testing/test-api.d.ts +0 -27
  112. package/selection-panel/public-api.d.ts +0 -3
  113. package/selection-panel/selection-panel-item.component.d.ts +0 -77
  114. package/selection-panel/selection-panel.directive.d.ts +0 -67
  115. package/selection-panel/selection-panel.module.d.ts +0 -13
  116. package/skeletons/public-api.d.ts +0 -3
  117. package/skeletons/skeleton-loader-presets.directive.d.ts +0 -23
  118. package/skeletons/skeleton-loader.component.d.ts +0 -44
  119. package/skeletons/skeletons.module.d.ts +0 -16
  120. package/stepper/public-api.d.ts +0 -3
  121. package/stepper/step-label-top.directive.d.ts +0 -17
  122. package/stepper/stepper-animation.d.ts +0 -6
  123. package/stepper/stepper.component.d.ts +0 -75
  124. package/stepper/stepper.module.d.ts +0 -17
  125. package/tooltip/public-api.d.ts +0 -3
  126. package/tooltip/tooltip.component.d.ts +0 -26
  127. package/tooltip/tooltip.directive.d.ts +0 -48
  128. package/tooltip/tooltip.module.d.ts +0 -13
@@ -1,5 +1,71 @@
1
+ import * as i0 from '@angular/core';
2
+ import { OnInit, OnChanges, ElementRef, Renderer2 } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { MatFormField } from '@angular/material/form-field';
5
+ import * as i2 from '@angular/common';
6
+
1
7
  /**
2
- * Generated bundle index. Do not edit.
8
+ * This directive will enhance an input element to format the numbers entered to a currency amount.
3
9
  */
4
- /// <amd-module name="@bravura/ui/currency-input" />
5
- export * from './public-api';
10
+ declare class CurrencyInputDirective implements OnInit, OnChanges, ControlValueAccessor {
11
+ private _el;
12
+ private _renderer;
13
+ private _locale;
14
+ private _defaultCurrencyCode;
15
+ private _field?;
16
+ /**
17
+ * true to allow negative input, otherwise false
18
+ * Default to false.
19
+ */
20
+ allowNegative: boolean;
21
+ /**
22
+ * Provide the currency code to format the entered amount.
23
+ * Uses angular token DEFAULT_CURRENCY_CODE by default.
24
+ */
25
+ currencyCode: string;
26
+ /**
27
+ * true if no decimal digits allowed, otherwise false.
28
+ * Default to false.
29
+ */
30
+ baseUnitOnly: boolean;
31
+ /**
32
+ * The format the of the amount either in wide or narrow.
33
+ */
34
+ format: 'narrow' | 'wide';
35
+ private placeholder;
36
+ private autocomplete;
37
+ private type;
38
+ private inputMode;
39
+ private change;
40
+ private onTouch;
41
+ private _safari;
42
+ private _symbol;
43
+ private _decimalPipe;
44
+ private _ds;
45
+ private _trailing;
46
+ constructor(_el: ElementRef<HTMLInputElement>, _renderer: Renderer2, _locale: string, _defaultCurrencyCode: string, _field?: MatFormField | undefined);
47
+ ngOnInit(): void;
48
+ ngOnChanges(): void;
49
+ onInput(): void;
50
+ onFocus(): void;
51
+ onblur(): void;
52
+ writeValue(value: any): void;
53
+ registerOnChange(fn: any): void;
54
+ registerOnTouched(fn: any): void;
55
+ private _updatePlaceholder;
56
+ private _currencyUpdated;
57
+ private _formatCurrency;
58
+ private _formatNumber;
59
+ private _convert;
60
+ private get _0Text();
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<CurrencyInputDirective, [{ self: true; }, null, null, null, { optional: true; }]>;
62
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CurrencyInputDirective, "input[buiCurrencyInput],input[currencyCode],input[data-type=currency]", never, { "allowNegative": { "alias": "allowNegative"; "required": false; }; "currencyCode": { "alias": "currencyCode"; "required": false; }; "baseUnitOnly": { "alias": "baseUnitOnly"; "required": false; }; "format": { "alias": "format"; "required": false; }; }, {}, never, never, false, never>;
63
+ }
64
+
65
+ declare class CurrencyInputModule {
66
+ static ɵfac: i0.ɵɵFactoryDeclaration<CurrencyInputModule, never>;
67
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CurrencyInputModule, [typeof CurrencyInputDirective], [typeof i2.CommonModule], [typeof CurrencyInputDirective]>;
68
+ static ɵinj: i0.ɵɵInjectorDeclaration<CurrencyInputModule>;
69
+ }
70
+
71
+ export { CurrencyInputDirective, CurrencyInputModule };
@@ -1,5 +1,41 @@
1
+ import * as i0 from '@angular/core';
2
+ import { OnChanges, ElementRef, Renderer2 } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import * as i2 from '@angular/common';
5
+
1
6
  /**
2
- * Generated bundle index. Do not edit.
7
+ * This directive will enhance an input element to format the numbers entered to a decimal amount.
3
8
  */
4
- /// <amd-module name="@bravura/ui/decimal-input" />
5
- export * from './public-api';
9
+ declare class DecimalInputDirective implements OnChanges, ControlValueAccessor {
10
+ private _el;
11
+ private _renderer;
12
+ /**
13
+ * number of decimal places allowed
14
+ */
15
+ buiDecimalInput: number;
16
+ private placeholder;
17
+ private autocomplete;
18
+ private type;
19
+ private inputMode;
20
+ private change;
21
+ private onTouch;
22
+ constructor(_el: ElementRef<HTMLInputElement>, _renderer: Renderer2);
23
+ ngOnChanges(): void;
24
+ onInput(): void;
25
+ onKeypress(evt: KeyboardEvent): void;
26
+ onblur(): void;
27
+ writeValue(value: any): void;
28
+ registerOnChange(fn: any): void;
29
+ registerOnTouched(fn: any): void;
30
+ private _resetDecimalPlaces;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<DecimalInputDirective, [{ self: true; }, null]>;
32
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DecimalInputDirective, "input[buiDecimalInput]", never, { "buiDecimalInput": { "alias": "buiDecimalInput"; "required": false; }; }, {}, never, never, false, never>;
33
+ }
34
+
35
+ declare class DecimalInputModule {
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<DecimalInputModule, never>;
37
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DecimalInputModule, [typeof DecimalInputDirective], [typeof i2.CommonModule], [typeof DecimalInputDirective]>;
38
+ static ɵinj: i0.ɵɵInjectorDeclaration<DecimalInputModule>;
39
+ }
40
+
41
+ export { DecimalInputDirective, DecimalInputModule };
@@ -1,5 +1,141 @@
1
+ import * as i0 from '@angular/core';
2
+ import { OnDestroy, ElementRef } from '@angular/core';
3
+ import * as i5 from '@angular/cdk/a11y';
4
+ import { FocusMonitor } from '@angular/cdk/a11y';
5
+ import * as i4 from '@angular/forms';
6
+ import { ControlValueAccessor, UntypedFormArray, UntypedFormGroup, NgControl, NgForm, FormGroupDirective, AbstractControl } from '@angular/forms';
7
+ import { ErrorStateMatcher } from '@angular/material/core';
8
+ import * as i3 from '@angular/material/form-field';
9
+ import { MatFormFieldControl, MatFormField } from '@angular/material/form-field';
10
+ import { Subject } from 'rxjs';
11
+ import * as i2 from '@angular/common';
12
+
1
13
  /**
2
- * Generated bundle index. Do not edit.
14
+ * Custom `MatFormFieldControl` with an individual input box for each character, suitable for fixed-length fields,
15
+ * such as secondary PIN inputs, TFNs, or BSB code etc.
16
+ *
17
+ * Accessibility features are not yet fully implemented.
18
+ *
19
+ * Example:
20
+ *
21
+ * ```html
22
+ * <mat-form-field>
23
+ * <bui-discrete-input></bui-discrete-input>
24
+ * </mat-form-field>
25
+ * ```
26
+ *
3
27
  */
4
- /// <amd-module name="@bravura/ui/discrete-input" />
5
- export * from './public-api';
28
+ declare class DiscreteInputComponent implements MatFormFieldControl<string>, ControlValueAccessor, OnDestroy {
29
+ private _focusMonitor;
30
+ private _elementRef;
31
+ /** @ignore */
32
+ static nextId: number;
33
+ /** @ignore */
34
+ static ngAcceptInputType_disabled: boolean | string | null | undefined;
35
+ /** @ignore */
36
+ static ngAcceptInputType_required: boolean | string | null | undefined;
37
+ /** @ignore */ parts: UntypedFormArray;
38
+ /** @ignore */ group: UntypedFormGroup;
39
+ /** Emits whenever the component state changes. */
40
+ stateChanges: Subject<void>;
41
+ /** Whether the control is focused. */
42
+ focused: boolean;
43
+ /** The type of input boxes */
44
+ type: 'text' | 'number' | 'password';
45
+ /** Input boxes are separated in groups. This specifies the characters displayed between two groups. */
46
+ separator: string;
47
+ /**
48
+ * A list of characters accepted in the inputs, for example `0-9`, `a-zA-Z0-9`
49
+ * @example '0-9'
50
+ */
51
+ accept?: string;
52
+ /** @ignore */ id: string;
53
+ /** Value of aria-describedby that should be merged with the described-by ids which are set by the form-field. */
54
+ userAriaDescribedBy?: string;
55
+ private inputParts;
56
+ /**@ignore */
57
+ _formField: MatFormField;
58
+ /**@ignore */
59
+ ngControl: NgControl;
60
+ autocomplete?: string;
61
+ private _sizeSpec;
62
+ private _required;
63
+ private _placeholder?;
64
+ private _disabled;
65
+ private _separatorPos;
66
+ /** @ignore */ onChange: (_: any) => void;
67
+ /** @ignore */ onTouched: () => void;
68
+ /** @ignore */
69
+ get shouldLabelFloat(): boolean;
70
+ /** @ignore */
71
+ get empty(): boolean;
72
+ /**
73
+ * Defines the length and grouping of the input.
74
+ * @default [2, 2, 2]
75
+ */
76
+ get sizeSpec(): number[];
77
+ set sizeSpec(spec: number[]);
78
+ /** The placeholder for this control. */
79
+ get placeholder(): string;
80
+ set placeholder(value: string);
81
+ /** Whether the control is required. */
82
+ get required(): boolean;
83
+ set required(value: boolean);
84
+ /** Whether the control is disabled. */
85
+ get disabled(): boolean;
86
+ set disabled(value: boolean);
87
+ /** The value of the control. */
88
+ get value(): string;
89
+ set value(v: string);
90
+ /** @ignore */
91
+ get _colorSuffix(): string;
92
+ constructor(_focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>, formField: MatFormField, control: NgControl, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _defaultErrorStateMatcher: ErrorStateMatcher);
93
+ /** @ignore */ errorState: boolean;
94
+ /** @ignore */ controlType?: string | undefined;
95
+ /** @ignore */ autofilled?: boolean | undefined;
96
+ /** @ignore */
97
+ ngOnDestroy(): void;
98
+ /** @ignore */
99
+ setDescribedByIds(ids: string[]): void;
100
+ /** @ignore */
101
+ onContainerClick(): void;
102
+ /** @ignore */
103
+ writeValue(v: string): void;
104
+ /** @ignore */
105
+ registerOnChange(fn: any): void;
106
+ /** @ignore */
107
+ registerOnTouched(fn: any): void;
108
+ /** @ignore */
109
+ setDisabledState(isDisabled: boolean): void;
110
+ /** @ignore */
111
+ _handleInput(control: AbstractControl, index: number, event: Event): void;
112
+ /** @ignore */
113
+ _handleBeforeInput(index: number, event: InputEvent): void;
114
+ /** @ignore */
115
+ _focusPart(elemRef: ElementRef<HTMLInputElement>): void;
116
+ /** @ignore */
117
+ _consumeKey(event: Event): void;
118
+ /** @ignore */
119
+ _leftArrow(index: number, event: Event): void;
120
+ /** @ignore */
121
+ _rightArrow(index: number, event: Event): void;
122
+ /** @ignore */
123
+ _handleBackspace(control: AbstractControl, index: number): void;
124
+ /** @ignore */
125
+ _onPaste(event: ClipboardEvent): void;
126
+ /** @ignore */
127
+ _separatorRequired(index: number): boolean;
128
+ /** @ignore */
129
+ _placeholderAt(index: number): string | undefined;
130
+ private _replaceText;
131
+ static ɵfac: i0.ɵɵFactoryDeclaration<DiscreteInputComponent, [null, null, { optional: true; }, { optional: true; self: true; }, { optional: true; }, { optional: true; }, null]>;
132
+ static ɵcmp: i0.ɵɵComponentDeclaration<DiscreteInputComponent, "bui-discrete-input", never, { "type": { "alias": "type"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "userAriaDescribedBy": { "alias": "aria-describedby"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "sizeSpec": { "alias": "sizeSpec"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, false, never>;
133
+ }
134
+
135
+ declare class DiscreteInputModule {
136
+ static ɵfac: i0.ɵɵFactoryDeclaration<DiscreteInputModule, never>;
137
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DiscreteInputModule, [typeof DiscreteInputComponent], [typeof i2.CommonModule, typeof i3.MatFormFieldModule, typeof i4.ReactiveFormsModule, typeof i5.A11yModule], [typeof DiscreteInputComponent]>;
138
+ static ɵinj: i0.ɵɵInjectorDeclaration<DiscreteInputModule>;
139
+ }
140
+
141
+ export { DiscreteInputComponent, DiscreteInputModule };
@@ -1,18 +1,17 @@
1
- import * as i2 from '@angular/common';
2
1
  import { CommonModule } from '@angular/common';
3
2
  import * as i0 from '@angular/core';
4
3
  import { EventEmitter, Input, HostBinding, Output, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
5
- import * as i4 from '@angular/material/button';
4
+ import * as i3 from '@angular/material/button';
6
5
  import { MatButtonModule } from '@angular/material/button';
7
- import * as i3 from '@bravura/ui/icon-font';
6
+ import * as i2 from '@bravura/ui/icon-font';
8
7
  import { IconFontModule } from '@bravura/ui/icon-font';
9
8
  import { trigger, transition, style, animate, state } from '@angular/animations';
10
9
  import { generateID, isElementInViewport } from '@bravura/ui/common';
11
10
  import { Subject, timer } from 'rxjs';
12
11
  import { takeUntil, take, tap, delay } from 'rxjs/operators';
13
- import * as i1 from '@angular/cdk/scrolling';
12
+ import * as i1$1 from '@angular/cdk/scrolling';
14
13
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
15
- import * as i2$1 from '@angular/material/icon';
14
+ import * as i1 from '@angular/material/icon';
16
15
 
17
16
  /** @ignore */
18
17
  const ICONS = {
@@ -75,16 +74,16 @@ class AlertMessageComponent {
75
74
  _dismiss() {
76
75
  this.dismissed.emit(this._id);
77
76
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: AlertMessageComponent, isStandalone: false, selector: "bui-alert", inputs: { type: "type", message: "message", politeness: "politeness", dismissible: "dismissible", _id: ["id", "_id"] }, outputs: { dismissed: "dismissed", initialised: "initialised" }, host: { properties: { "class": "'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')", "role": "politeness === 'off' ? 'region' : 'alert'", "attr.aria-live": "politeness === 'assertive' ? undefined : politeness", "id": "this._id" } }, ngImport: i0, template: "<div class=\"bui-alert-backdrop\"></div>\r\n<div class=\"bui-alert-frame\"></div>\r\n\r\n<div class=\"bui-alert-wrapper\">\r\n\t<div class=\"bui-alert-icon-area\">\r\n\t\t<mat-icon [buiIcon]=\"iconName\" variant=\"outlined\"></mat-icon>\r\n\t</div>\r\n\t<div class=\"bui-alert-content\">\r\n\t\t<div [innerHTML]=\"message\" *ngIf=\"message\"></div>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n</div>\r\n\r\n<div class=\"bui-alert-button-area\" *ngIf=\"dismissible\">\r\n\t<div class=\"bui-alert-button-backdrop\"></div>\r\n\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\" aria-label=\"dismiss alert\">\r\n\t\t<mat-icon>cancel</mat-icon>\r\n\t</button>\r\n</div>\r\n", styles: [":host(:not([hidden])){display:block;padding:12px 14px 12px 19px;position:relative;border-radius:5px}:host-context([dir=rtl]) :host(:not([hidden])){padding:12px 19px 12px 14px}:host(:not([hidden])),:host(:not([hidden])) *{box-sizing:border-box}.bui-alert-backdrop,.bui-alert-frame{position:absolute;inset:0}.bui-alert-backdrop{opacity:.1}:host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 18.75px) 18.75px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0,18.75px 18.75px)}.bui-alert-frame{border-radius:5px;border-width:1px 1px 1px 5px;border-style:solid}:host-context([dir=rtl]) .bui-alert-frame{border-width:1px 5px 1px 1px}:host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 25px) 25px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0)}.bui-alert-button-area{position:absolute;right:-15px;top:-15px;width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center}:host-context([dir=rtl]) .bui-alert-button-area{right:unset;left:-15px}.bui-alert-button-backdrop{position:absolute;border-radius:20px;width:100%;height:100%;clip-path:polygon(0 15px,25px 15px,25px 100%,0% 100%)}:host-context([dir=rtl]) .bui-alert-button-backdrop{clip-path:polygon(15px 15px,15px 100%,100% 100%,100% 15px)}.bui-alert-wrapper{display:flex;align-items:stretch}.bui-alert-icon-area{flex-shrink:0;display:flex;justify-content:center;align-items:center;border-radius:5px;width:30px;height:30px;margin-right:14px;color:var(--bui-bg-card)}:host-context([dir=rtl]) .bui-alert-icon-area{margin-right:unset;margin-left:14px}.bui-alert-content{z-index:1;flex-grow:1;display:flex;flex-direction:column;justify-content:center;gap:1rem}:host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 0,calc(100% - 11px) 0,100% 13px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 13px,0 100%,100% 100%,100% 0,11px 0)}:host(.bui-alert-success) .bui-alert-frame{border-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-backdrop,:host(.bui-alert-success) .bui-alert-icon-area{background-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-button-backdrop{border:1px var(--bui-color-success) solid}:host(.bui-alert-success) .bui-alert-button{color:var(--bui-color-success)}:host(.bui-alert-info) .bui-alert-frame{border-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-backdrop,:host(.bui-alert-info) .bui-alert-icon-area{background-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-button-backdrop{border:1px var(--bui-color-info) solid}:host(.bui-alert-info) .bui-alert-button{color:var(--bui-color-info)}:host(.bui-alert-warning) .bui-alert-frame{border-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-backdrop,:host(.bui-alert-warning) .bui-alert-icon-area{background-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-button-backdrop{border:1px var(--bui-color-warning) solid}:host(.bui-alert-warning) .bui-alert-button{color:var(--bui-color-warning)}:host(.bui-alert-error) .bui-alert-frame{border-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-backdrop,:host(.bui-alert-error) .bui-alert-icon-area{background-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-button-backdrop{border:1px var(--bui-color-error) solid}:host(.bui-alert-error) .bui-alert-button{color:var(--bui-color-error)}.bui-alert-button{width:40px;height:40px;padding:8px;overflow:hidden}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:last-child\"; margin-bottom: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:last-child\"; margin-bottom: 0;}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.IconDirective, selector: "[buiIcon]", inputs: ["buiIcon", "size", "variant"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AlertMessageComponent, isStandalone: false, selector: "bui-alert", inputs: { type: "type", message: "message", politeness: "politeness", dismissible: "dismissible", _id: ["id", "_id"] }, outputs: { dismissed: "dismissed", initialised: "initialised" }, host: { properties: { "class": "'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')", "role": "politeness === 'off' ? 'region' : 'alert'", "attr.aria-live": "politeness === 'assertive' ? undefined : politeness", "id": "this._id" } }, ngImport: i0, template: "<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\">\n\t\t@if (message) {\n\t\t\t<div [innerHTML]=\"message\"></div>\n\t\t}\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n\n@if (dismissible) {\n\t<div class=\"bui-alert-button-area\">\n\t\t<div class=\"bui-alert-button-backdrop\"></div>\n\t\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\" aria-label=\"dismiss alert\">\n\t\t\t<mat-icon>cancel</mat-icon>\n\t\t</button>\n\t</div>\n}\n", styles: [":host(:not([hidden])){display:block;padding:12px 14px 12px 19px;position:relative;border-radius:5px}:host-context([dir=rtl]) :host(:not([hidden])){padding:12px 19px 12px 14px}:host(:not([hidden])),:host(:not([hidden])) *{box-sizing:border-box}.bui-alert-backdrop,.bui-alert-frame{position:absolute;inset:0}.bui-alert-backdrop{opacity:.1}:host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 18.75px) 18.75px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0,18.75px 18.75px)}.bui-alert-frame{border-radius:5px;border-width:1px 1px 1px 5px;border-style:solid}:host-context([dir=rtl]) .bui-alert-frame{border-width:1px 5px 1px 1px}:host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 25px) 25px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0)}.bui-alert-button-area{position:absolute;right:-15px;top:-15px;width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center}:host-context([dir=rtl]) .bui-alert-button-area{right:unset;left:-15px}.bui-alert-button-backdrop{position:absolute;border-radius:20px;width:100%;height:100%;clip-path:polygon(0 15px,25px 15px,25px 100%,0% 100%)}:host-context([dir=rtl]) .bui-alert-button-backdrop{clip-path:polygon(15px 15px,15px 100%,100% 100%,100% 15px)}.bui-alert-wrapper{display:flex;align-items:stretch}.bui-alert-icon-area{flex-shrink:0;display:flex;justify-content:center;align-items:center;border-radius:5px;width:30px;height:30px;margin-right:14px;color:var(--bui-bg-card)}:host-context([dir=rtl]) .bui-alert-icon-area{margin-right:unset;margin-left:14px}.bui-alert-content{z-index:1;flex-grow:1;display:flex;flex-direction:column;justify-content:center;gap:1rem}:host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 0,calc(100% - 11px) 0,100% 13px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 13px,0 100%,100% 100%,100% 0,11px 0)}:host(.bui-alert-success) .bui-alert-frame{border-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-backdrop,:host(.bui-alert-success) .bui-alert-icon-area{background-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-button-backdrop{border:1px var(--bui-color-success) solid}:host(.bui-alert-success) .bui-alert-button{color:var(--bui-color-success)}:host(.bui-alert-info) .bui-alert-frame{border-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-backdrop,:host(.bui-alert-info) .bui-alert-icon-area{background-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-button-backdrop{border:1px var(--bui-color-info) solid}:host(.bui-alert-info) .bui-alert-button{color:var(--bui-color-info)}:host(.bui-alert-warning) .bui-alert-frame{border-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-backdrop,:host(.bui-alert-warning) .bui-alert-icon-area{background-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-button-backdrop{border:1px var(--bui-color-warning) solid}:host(.bui-alert-warning) .bui-alert-button{color:var(--bui-color-warning)}:host(.bui-alert-error) .bui-alert-frame{border-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-backdrop,:host(.bui-alert-error) .bui-alert-icon-area{background-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-button-backdrop{border:1px var(--bui-color-error) solid}:host(.bui-alert-error) .bui-alert-button{color:var(--bui-color-error)}.bui-alert-button{width:40px;height:40px;padding:8px;overflow:hidden}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:last-child\"; margin-bottom: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:last-child\"; margin-bottom: 0;}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2.IconDirective, selector: "[buiIcon]", inputs: ["buiIcon", "size", "variant"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
79
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertMessageComponent, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertMessageComponent, decorators: [{
82
81
  type: Component,
83
82
  args: [{ selector: 'bui-alert', host: {
84
83
  '[class]': `'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')`,
85
84
  '[role]': `politeness === 'off' ? 'region' : 'alert'`,
86
85
  '[attr.aria-live]': `politeness === 'assertive' ? undefined : politeness`
87
- }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"bui-alert-backdrop\"></div>\r\n<div class=\"bui-alert-frame\"></div>\r\n\r\n<div class=\"bui-alert-wrapper\">\r\n\t<div class=\"bui-alert-icon-area\">\r\n\t\t<mat-icon [buiIcon]=\"iconName\" variant=\"outlined\"></mat-icon>\r\n\t</div>\r\n\t<div class=\"bui-alert-content\">\r\n\t\t<div [innerHTML]=\"message\" *ngIf=\"message\"></div>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n</div>\r\n\r\n<div class=\"bui-alert-button-area\" *ngIf=\"dismissible\">\r\n\t<div class=\"bui-alert-button-backdrop\"></div>\r\n\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\" aria-label=\"dismiss alert\">\r\n\t\t<mat-icon>cancel</mat-icon>\r\n\t</button>\r\n</div>\r\n", styles: [":host(:not([hidden])){display:block;padding:12px 14px 12px 19px;position:relative;border-radius:5px}:host-context([dir=rtl]) :host(:not([hidden])){padding:12px 19px 12px 14px}:host(:not([hidden])),:host(:not([hidden])) *{box-sizing:border-box}.bui-alert-backdrop,.bui-alert-frame{position:absolute;inset:0}.bui-alert-backdrop{opacity:.1}:host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 18.75px) 18.75px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0,18.75px 18.75px)}.bui-alert-frame{border-radius:5px;border-width:1px 1px 1px 5px;border-style:solid}:host-context([dir=rtl]) .bui-alert-frame{border-width:1px 5px 1px 1px}:host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 25px) 25px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0)}.bui-alert-button-area{position:absolute;right:-15px;top:-15px;width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center}:host-context([dir=rtl]) .bui-alert-button-area{right:unset;left:-15px}.bui-alert-button-backdrop{position:absolute;border-radius:20px;width:100%;height:100%;clip-path:polygon(0 15px,25px 15px,25px 100%,0% 100%)}:host-context([dir=rtl]) .bui-alert-button-backdrop{clip-path:polygon(15px 15px,15px 100%,100% 100%,100% 15px)}.bui-alert-wrapper{display:flex;align-items:stretch}.bui-alert-icon-area{flex-shrink:0;display:flex;justify-content:center;align-items:center;border-radius:5px;width:30px;height:30px;margin-right:14px;color:var(--bui-bg-card)}:host-context([dir=rtl]) .bui-alert-icon-area{margin-right:unset;margin-left:14px}.bui-alert-content{z-index:1;flex-grow:1;display:flex;flex-direction:column;justify-content:center;gap:1rem}:host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 0,calc(100% - 11px) 0,100% 13px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 13px,0 100%,100% 100%,100% 0,11px 0)}:host(.bui-alert-success) .bui-alert-frame{border-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-backdrop,:host(.bui-alert-success) .bui-alert-icon-area{background-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-button-backdrop{border:1px var(--bui-color-success) solid}:host(.bui-alert-success) .bui-alert-button{color:var(--bui-color-success)}:host(.bui-alert-info) .bui-alert-frame{border-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-backdrop,:host(.bui-alert-info) .bui-alert-icon-area{background-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-button-backdrop{border:1px var(--bui-color-info) solid}:host(.bui-alert-info) .bui-alert-button{color:var(--bui-color-info)}:host(.bui-alert-warning) .bui-alert-frame{border-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-backdrop,:host(.bui-alert-warning) .bui-alert-icon-area{background-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-button-backdrop{border:1px var(--bui-color-warning) solid}:host(.bui-alert-warning) .bui-alert-button{color:var(--bui-color-warning)}:host(.bui-alert-error) .bui-alert-frame{border-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-backdrop,:host(.bui-alert-error) .bui-alert-icon-area{background-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-button-backdrop{border:1px var(--bui-color-error) solid}:host(.bui-alert-error) .bui-alert-button{color:var(--bui-color-error)}.bui-alert-button{width:40px;height:40px;padding:8px;overflow:hidden}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:last-child\"; margin-bottom: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:last-child\"; margin-bottom: 0;}\n"] }]
86
+ }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<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\">\n\t\t@if (message) {\n\t\t\t<div [innerHTML]=\"message\"></div>\n\t\t}\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n\n@if (dismissible) {\n\t<div class=\"bui-alert-button-area\">\n\t\t<div class=\"bui-alert-button-backdrop\"></div>\n\t\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\" aria-label=\"dismiss alert\">\n\t\t\t<mat-icon>cancel</mat-icon>\n\t\t</button>\n\t</div>\n}\n", styles: [":host(:not([hidden])){display:block;padding:12px 14px 12px 19px;position:relative;border-radius:5px}:host-context([dir=rtl]) :host(:not([hidden])){padding:12px 19px 12px 14px}:host(:not([hidden])),:host(:not([hidden])) *{box-sizing:border-box}.bui-alert-backdrop,.bui-alert-frame{position:absolute;inset:0}.bui-alert-backdrop{opacity:.1}:host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 18.75px) 18.75px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-backdrop{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0,18.75px 18.75px)}.bui-alert-frame{border-radius:5px;border-width:1px 1px 1px 5px;border-style:solid}:host-context([dir=rtl]) .bui-alert-frame{border-width:1px 5px 1px 1px}:host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 0,calc(100% - 25px) 0,calc(100% - 25px) 25px,100% 25px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-frame{clip-path:polygon(0 25px,0 100%,100% 100%,100% 0,25px 0)}.bui-alert-button-area{position:absolute;right:-15px;top:-15px;width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center}:host-context([dir=rtl]) .bui-alert-button-area{right:unset;left:-15px}.bui-alert-button-backdrop{position:absolute;border-radius:20px;width:100%;height:100%;clip-path:polygon(0 15px,25px 15px,25px 100%,0% 100%)}:host-context([dir=rtl]) .bui-alert-button-backdrop{clip-path:polygon(15px 15px,15px 100%,100% 100%,100% 15px)}.bui-alert-wrapper{display:flex;align-items:stretch}.bui-alert-icon-area{flex-shrink:0;display:flex;justify-content:center;align-items:center;border-radius:5px;width:30px;height:30px;margin-right:14px;color:var(--bui-bg-card)}:host-context([dir=rtl]) .bui-alert-icon-area{margin-right:unset;margin-left:14px}.bui-alert-content{z-index:1;flex-grow:1;display:flex;flex-direction:column;justify-content:center;gap:1rem}:host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 0,calc(100% - 11px) 0,100% 13px,100% 100%,0 100%)}:host-context([dir=rtl]) :host(.bui-alert-dismissible) .bui-alert-content{clip-path:polygon(0 13px,0 100%,100% 100%,100% 0,11px 0)}:host(.bui-alert-success) .bui-alert-frame{border-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-backdrop,:host(.bui-alert-success) .bui-alert-icon-area{background-color:var(--bui-color-success)}:host(.bui-alert-success) .bui-alert-button-backdrop{border:1px var(--bui-color-success) solid}:host(.bui-alert-success) .bui-alert-button{color:var(--bui-color-success)}:host(.bui-alert-info) .bui-alert-frame{border-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-backdrop,:host(.bui-alert-info) .bui-alert-icon-area{background-color:var(--bui-color-info)}:host(.bui-alert-info) .bui-alert-button-backdrop{border:1px var(--bui-color-info) solid}:host(.bui-alert-info) .bui-alert-button{color:var(--bui-color-info)}:host(.bui-alert-warning) .bui-alert-frame{border-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-backdrop,:host(.bui-alert-warning) .bui-alert-icon-area{background-color:var(--bui-color-warning)}:host(.bui-alert-warning) .bui-alert-button-backdrop{border:1px var(--bui-color-warning) solid}:host(.bui-alert-warning) .bui-alert-button{color:var(--bui-color-warning)}:host(.bui-alert-error) .bui-alert-frame{border-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-backdrop,:host(.bui-alert-error) .bui-alert-icon-area{background-color:var(--bui-color-error)}:host(.bui-alert-error) .bui-alert-button-backdrop{border:1px var(--bui-color-error) solid}:host(.bui-alert-error) .bui-alert-button{color:var(--bui-color-error)}.bui-alert-button{width:40px;height:40px;padding:8px;overflow:hidden}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > div > *:last-child\"; margin-bottom: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:first-child\"; margin-top: 0;}@polyfill-unscoped-rule{content: \".bui-alert .bui-alert-content > *:last-child\"; margin-bottom: 0;}\n"] }]
88
87
  }], ctorParameters: () => [], propDecorators: { type: [{
89
88
  type: Input
90
89
  }], message: [{
@@ -97,9 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
97
96
  type: Output
98
97
  }], initialised: [{
99
98
  type: Output
100
- }],
101
- /** @ignore */
102
- _id: [{
99
+ }], _id: [{
103
100
  type: Input,
104
101
  args: ['id']
105
102
  }, {
@@ -247,8 +244,8 @@ class AlertContainerComponent {
247
244
  this.zone.run(() => this.cdRef.markForCheck());
248
245
  });
249
246
  }
250
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertContainerComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }], target: i0.ɵɵFactoryTarget.Component }); }
251
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: AlertContainerComponent, isStandalone: false, 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\r\n\tclass=\"bui-alert-fixed-panel\"\r\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\r\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\r\n>\r\n\t<bui-alert\r\n\t\t*ngFor=\"let a of _alerts\"\r\n\t\t[id]=\"a.id\"\r\n\t\t[type]=\"a.type\"\r\n\t\t[message]=\"a.message\"\r\n\t\tdismissible\r\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\r\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\r\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\r\n\t\t(dismissed)=\"_dismiss(a)\"\r\n\t></bui-alert>\r\n</div>\r\n\r\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\r\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\r\n\t\t<bui-alert\r\n\t\t\t*ngFor=\"let a of _alerts\"\r\n\t\t\t[id]=\"a.id\"\r\n\t\t\t[type]=\"a.type\"\r\n\t\t\t[message]=\"a.message\"\r\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\r\n\t\t></bui-alert>\r\n\t</div>\r\n</div>\r\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;inset: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", "politeness", "dismissible", "id"], outputs: ["dismissed", "initialised"] }], animations: [
247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertContainerComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$1.ScrollDispatcher }], target: i0.ɵɵFactoryTarget.Component }); }
248
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AlertContainerComponent, isStandalone: false, 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@for (a of _alerts; track a) {\n\t\t<bui-alert\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\tdismissible\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t\t(dismissed)=\"_dismiss(a)\"\n\t\t></bui-alert>\n\t}\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t@if (_floated) {\n\t\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\">\n\t\t\t@for (a of _alerts; track a) {\n\t\t\t\t<bui-alert\n\t\t\t\t\t[id]=\"a.id\"\n\t\t\t\t\t[type]=\"a.type\"\n\t\t\t\t\t[message]=\"a.message\"\n\t\t\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t\t\t></bui-alert>\n\t\t\t}\n\t\t</div>\n\t}\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;inset: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: "component", type: AlertMessageComponent, selector: "bui-alert", inputs: ["type", "message", "politeness", "dismissible", "id"], outputs: ["dismissed", "initialised"] }], animations: [
252
249
  trigger('floatTransition', [
253
250
  transition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),
254
251
  transition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])
@@ -270,7 +267,7 @@ class AlertContainerComponent {
270
267
  ])
271
268
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
272
269
  }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertContainerComponent, decorators: [{
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertContainerComponent, decorators: [{
274
271
  type: Component,
275
272
  args: [{ selector: 'bui-alert-container', host: {
276
273
  '[class]': `'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')`
@@ -294,8 +291,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
294
291
  ]),
295
292
  transition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])
296
293
  ])
297
- ], standalone: false, template: "<div\r\n\tclass=\"bui-alert-fixed-panel\"\r\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\r\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\r\n>\r\n\t<bui-alert\r\n\t\t*ngFor=\"let a of _alerts\"\r\n\t\t[id]=\"a.id\"\r\n\t\t[type]=\"a.type\"\r\n\t\t[message]=\"a.message\"\r\n\t\tdismissible\r\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\r\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\r\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\r\n\t\t(dismissed)=\"_dismiss(a)\"\r\n\t></bui-alert>\r\n</div>\r\n\r\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\r\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\r\n\t\t<bui-alert\r\n\t\t\t*ngFor=\"let a of _alerts\"\r\n\t\t\t[id]=\"a.id\"\r\n\t\t\t[type]=\"a.type\"\r\n\t\t\t[message]=\"a.message\"\r\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\r\n\t\t></bui-alert>\r\n\t</div>\r\n</div>\r\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;inset: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"] }]
298
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.ScrollDispatcher }], propDecorators: { max: [{
294
+ ], standalone: false, 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@for (a of _alerts; track a) {\n\t\t<bui-alert\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\tdismissible\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t\t(dismissed)=\"_dismiss(a)\"\n\t\t></bui-alert>\n\t}\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t@if (_floated) {\n\t\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\">\n\t\t\t@for (a of _alerts; track a) {\n\t\t\t\t<bui-alert\n\t\t\t\t\t[id]=\"a.id\"\n\t\t\t\t\t[type]=\"a.type\"\n\t\t\t\t\t[message]=\"a.message\"\n\t\t\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t\t\t></bui-alert>\n\t\t\t}\n\t\t</div>\n\t}\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;inset: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"] }]
295
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.ScrollDispatcher }], propDecorators: { max: [{
299
296
  type: Input
300
297
  }], outsideViewportBehavior: [{
301
298
  type: Input
@@ -306,11 +303,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
306
303
  }] } });
307
304
 
308
305
  class AlertModule {
309
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
310
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: AlertModule, declarations: [AlertMessageComponent, AlertContainerComponent], imports: [CommonModule, IconFontModule, MatButtonModule], exports: [AlertMessageComponent, AlertContainerComponent] }); }
311
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertModule, imports: [CommonModule, IconFontModule, MatButtonModule] }); }
306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
307
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AlertModule, declarations: [AlertMessageComponent, AlertContainerComponent], imports: [CommonModule, IconFontModule, MatButtonModule], exports: [AlertMessageComponent, AlertContainerComponent] }); }
308
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertModule, imports: [CommonModule, IconFontModule, MatButtonModule] }); }
312
309
  }
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AlertModule, decorators: [{
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AlertModule, decorators: [{
314
311
  type: NgModule,
315
312
  args: [{
316
313
  declarations: [AlertMessageComponent, AlertContainerComponent],
@@ -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';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\r\nimport { generateID } from '@bravura/ui/common';\r\n\r\n/** @ignore */\r\nconst ICONS: any = {\r\n\tsuccess: 'check_circle',\r\n\tinfo: 'info',\r\n\twarn: 'report_problem',\r\n\terror: 'cancel'\r\n};\r\n\r\n/** @ignore */\r\nconst DEFAULT_POLITENESS = {\r\n\tsuccess: 'polite',\r\n\tinfo: 'polite',\r\n\twarn: 'assertive',\r\n\terror: 'assertive'\r\n};\r\n\r\n/**\r\n * An alert style message usually appears in a global notification area.\r\n *\r\n * The base color of the message is determined by the `type` of the message and a list of predefined\r\n * CSS custom properties.\r\n *\r\n * ```scss\r\n * --bui-color-success: #519602;\r\n * --bui-color-info: #0dcaf0;\r\n * --bui-color-warning: #ffc107;\r\n * --bui-color-error: #dc3545;\r\n * ```\r\n *\r\n *\r\n */\r\n@Component({\r\n\tselector: 'bui-alert',\r\n\ttemplateUrl: './alert-message.component.html',\r\n\tstyleUrls: ['./alert-message.component.scss'],\r\n\thost: {\r\n\t\t'[class]': `'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')`,\r\n\t\t'[role]': `politeness === 'off' ? 'region' : 'alert'`,\r\n\t\t'[attr.aria-live]': `politeness === 'assertive' ? undefined : politeness`\r\n\t},\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tstandalone: false\r\n})\r\nexport class AlertMessageComponent implements OnInit {\r\n\t/** @ignore */\r\n\tstatic ngAcceptInputType_dismissible: boolean | string | null | undefined;\r\n\t/** @ignore */\r\n\tstatic ngAcceptInputType_blink: boolean | string | null | undefined;\r\n\r\n\t/** The type of the message, used to derive the icon and base color. */\r\n\t@Input()\r\n\ttype: 'success' | 'info' | 'warn' | 'error' = 'error';\r\n\r\n\t/** The message to be displayed, HTML supported. */\r\n\t@Input()\r\n\tmessage = '';\r\n\r\n\t/** Specifies the ARIA live region politeness. */\r\n\t@Input()\r\n\tpoliteness!: 'off' | 'polite' | 'assertive';\r\n\r\n\t/** Whether to display the button to fire the `dismissed` event. */\r\n\t@Input()\r\n\tget dismissible() {\r\n\t\treturn this._dismissible;\r\n\t}\r\n\tset dismissible(value: any) {\r\n\t\tthis._dismissible = coerceBooleanProperty(value);\r\n\t}\r\n\r\n\t/** To be emitted when the user choose to dismiss the message. The event object is the ID of the element. */\r\n\t@Output()\r\n\tdismissed = new EventEmitter<string>();\r\n\r\n\t/** To be emitted when the component finishes initialisation. The event object is the ID of the element. */\r\n\t@Output()\r\n\tinitialised = new EventEmitter<string>();\r\n\r\n\t@Input('id')\r\n\t@HostBinding('id')\r\n\t/** @ignore */\r\n\t_id = `bui-alert-${generateID()}`;\r\n\r\n\tprivate _dismissible = false;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.politeness = this.politeness || DEFAULT_POLITENESS[this.type];\r\n\t\tthis.initialised.emit(this._id);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget iconName(): string {\r\n\t\treturn ICONS[this.type];\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_dismiss() {\r\n\t\tthis.dismissed.emit(this._id);\r\n\t}\r\n}\r\n","<div class=\"bui-alert-backdrop\"></div>\r\n<div class=\"bui-alert-frame\"></div>\r\n\r\n<div class=\"bui-alert-wrapper\">\r\n\t<div class=\"bui-alert-icon-area\">\r\n\t\t<mat-icon [buiIcon]=\"iconName\" variant=\"outlined\"></mat-icon>\r\n\t</div>\r\n\t<div class=\"bui-alert-content\">\r\n\t\t<div [innerHTML]=\"message\" *ngIf=\"message\"></div>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n</div>\r\n\r\n<div class=\"bui-alert-button-area\" *ngIf=\"dismissible\">\r\n\t<div class=\"bui-alert-button-backdrop\"></div>\r\n\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\" aria-label=\"dismiss alert\">\r\n\t\t<mat-icon>cancel</mat-icon>\r\n\t</button>\r\n</div>\r\n","import { animate, state, style, transition, trigger, AnimationEvent } from '@angular/animations';\r\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\r\nimport {\r\n\tChangeDetectionStrategy,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tNgZone,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport { generateID, isElementInViewport } from '@bravura/ui/common';\r\nimport { Subject, Subscription, timer } from 'rxjs';\r\nimport { delay, take, takeUntil, tap } from 'rxjs/operators';\r\n\r\n/**@internal */\r\nclass InternalAlertOject {\r\n\tid: string;\r\n\tdeleted = false;\r\n\tconstructor(\r\n\t\tpublic readonly type: 'success' | 'info' | 'warn' | 'error',\r\n\t\tpublic readonly message: string\r\n\t) {\r\n\t\tthis.id = `bui-alert-cont-alert-${generateID()}`;\r\n\t}\r\n}\r\n\r\n/**\r\n * Use this component in a designated area of a page for displaying notification messages\r\n *\r\n */\r\n@Component({\r\n\tselector: 'bui-alert-container',\r\n\ttemplateUrl: './alert-container.component.html',\r\n\tstyleUrls: ['./alert-container.component.scss'],\r\n\thost: {\r\n\t\t'[class]': `'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')`\r\n\t},\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tanimations: [\r\n\t\ttrigger('floatTransition', [\r\n\t\t\ttransition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),\r\n\t\t\ttransition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])\r\n\t\t]),\r\n\t\ttrigger('alertTransition', [\r\n\t\t\tstate('visible', style({})),\r\n\t\t\tstate(\r\n\t\t\t\t'hidden',\r\n\t\t\t\tstyle({\r\n\t\t\t\t\theight: 0,\r\n\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\ttransform: 'scaleY(0)',\r\n\t\t\t\t\topacity: 0,\r\n\t\t\t\t\t'margin-top': '-1rem'\r\n\t\t\t\t})\r\n\t\t\t),\r\n\t\t\ttransition('void => visible', [\r\n\t\t\t\tstyle({ transform: 'translateY(100%)', height: 0, opacity: '0', overflow: 'hidden' }),\r\n\t\t\t\tanimate('250ms cubic-bezier(0.42, 0.0, 0.58, 1.0)')\r\n\t\t\t]),\r\n\t\t\ttransition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])\r\n\t\t])\r\n\t],\r\n\tstandalone: false\r\n})\r\nexport class AlertContainerComponent implements OnInit, OnDestroy {\r\n\t/** The maximum number of messages displayed in the container area. */\r\n\t@Input()\r\n\tmax = 5;\r\n\r\n\t/**\r\n\t * This property determines the behavior for displaying the notifications when the container is outside the viewport.\r\n\t *\r\n\t * `scroll`: The component will try to scroll to reveal the new notifications.\r\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.\r\n\t */\r\n\t@Input()\r\n\toutsideViewportBehavior: 'scroll' | 'float' = 'float';\r\n\r\n\t/**\r\n\t * The number of milliseconds for which the alert container will be floated when new notification arrives.\r\n\t *\r\n\t * This will only take effect when `outsideViewportBehavior` is set to `float` and the container is outside the viewport.\r\n\t */\r\n\t@Input()\r\n\tfloatDuration = 2000;\r\n\r\n\t/**@internal */\r\n\t_alerts: InternalAlertOject[] = [];\r\n\t/**@internal */\r\n\t_floated = false;\r\n\t/**@internal */\r\n\t_floatPanelHidden = true;\r\n\r\n\t/** @ignore Emits whenever the animation is started. */\r\n\treadonly _animationStarted = new Subject<AnimationEvent>();\r\n\t/** @ignore Emits whenever the animation is done. */\r\n\treadonly _animationEnded = new Subject<AnimationEvent>();\r\n\r\n\tprivate _destroyed$ = new Subject<void>();\r\n\tprivate _endFloatingSub?: Subscription;\r\n\r\n\t/** Emits the component instance after initialisation. */\r\n\t@Output()\r\n\tprivate init = new EventEmitter<AlertContainerComponent>();\r\n\r\n\tconstructor(\r\n\t\tprivate zone: NgZone,\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\r\n\t\tprivate scroll: ScrollDispatcher\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tconst checkScroll = () => {\r\n\t\t\tif (isElementInViewport(this._elementRef.nativeElement)) {\r\n\t\t\t\tthis._endFloating();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.scroll\r\n\t\t\t.ancestorScrolled(this._elementRef.nativeElement)\r\n\t\t\t.pipe(takeUntil(this._destroyed$))\r\n\t\t\t.subscribe(checkScroll);\r\n\t\tcheckScroll();\r\n\t\tthis.init.emit(this);\r\n\t\tthis.init.complete();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._destroyed$.next();\r\n\t\tthis._destroyed$.complete();\r\n\t\tthis._endFloatingSub?.unsubscribe();\r\n\t}\r\n\r\n\t/**@internal */\r\n\tget _remaining() {\r\n\t\treturn this._alerts.filter(a => !a.deleted);\r\n\t}\r\n\r\n\t/**@internal */\r\n\tget _width() {\r\n\t\treturn this._elementRef.nativeElement.clientWidth;\r\n\t}\r\n\r\n\t/** Add a message to the notification area */\r\n\tasync notify(type: 'success' | 'info' | 'warn' | 'error', message: string) {\r\n\t\tthis._endFloatingSub?.unsubscribe();\r\n\t\tconst duplicate = this._remaining.find(_a => message === _a.message);\r\n\t\tif (duplicate) {\r\n\t\t\tthis._dismiss(duplicate);\r\n\t\t}\r\n\r\n\t\tconst remaining = this._remaining;\r\n\t\tif (remaining.length >= this.max) {\r\n\t\t\tthis._dismiss(remaining[0]);\r\n\t\t}\r\n\r\n\t\tconst a = new InternalAlertOject(type, message);\r\n\t\tawait this._checkViewport();\r\n\t\tthis.zone.run(() => {\r\n\t\t\tthis._alerts.push(a);\r\n\t\t\tthis.cdRef.markForCheck();\r\n\t\t});\r\n\t}\r\n\r\n\t/**@ignore */\r\n\tasync _checkViewport() {\r\n\t\tif (!isElementInViewport(this._elementRef.nativeElement)) {\r\n\t\t\tif (this.outsideViewportBehavior === 'float') {\r\n\t\t\t\tconst d = this._floated ? 0 : 100;\r\n\t\t\t\tthis._floated = true;\r\n\t\t\t\tthis._floatPanelHidden = false;\r\n\t\t\t\tthis._endFloating(this.floatDuration);\r\n\t\t\t\tthis.cdRef.markForCheck();\r\n\t\t\t\tawait timer(d).toPromise();\r\n\t\t\t} else {\r\n\t\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'start', behavior: 'smooth' });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**@ignore */\r\n\tasync _dismiss(a: InternalAlertOject) {\r\n\t\tconst id = a.id;\r\n\t\ta.deleted = true;\r\n\t\tthis.cdRef.markForCheck();\r\n\t\tawait this._animationEnded.pipe(take(1)).toPromise();\r\n\t\tthis.zone.run(() => {\r\n\t\t\tthis._alerts = this._alerts.filter(_a => _a.id !== id);\r\n\t\t\tthis.cdRef.markForCheck();\r\n\t\t});\r\n\t}\r\n\r\n\t/** Remove all messages currently displayed. */\r\n\tasync clear() {\r\n\t\tawait Promise.all(this._remaining.map(a => this._dismiss(a)));\r\n\t\tthis._endFloating();\r\n\t}\r\n\r\n\tprivate _endFloating(_delay = 0) {\r\n\t\tif (!this._floated) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._endFloatingSub?.unsubscribe();\r\n\t\tthis._endFloatingSub = timer(_delay)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(() => {\r\n\t\t\t\t\tthis._floated = false;\r\n\t\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\r\n\t\t\t\t}),\r\n\t\t\t\tdelay(400)\r\n\t\t\t)\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tthis._floatPanelHidden = true;\r\n\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\r\n\t\t\t});\r\n\t}\r\n}\r\n","<div\r\n\tclass=\"bui-alert-fixed-panel\"\r\n\t[style.opacity]=\"_floatPanelHidden ? 1 : 0\"\r\n\t[class.bui-alert-fixed-panel-blink]=\"outsideViewportBehavior === 'scroll'\"\r\n>\r\n\t<bui-alert\r\n\t\t*ngFor=\"let a of _alerts\"\r\n\t\t[id]=\"a.id\"\r\n\t\t[type]=\"a.type\"\r\n\t\t[message]=\"a.message\"\r\n\t\tdismissible\r\n\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\r\n\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\r\n\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\r\n\t\t(dismissed)=\"_dismiss(a)\"\r\n\t></bui-alert>\r\n</div>\r\n\r\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\r\n\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\" *ngIf=\"_floated\">\r\n\t\t<bui-alert\r\n\t\t\t*ngFor=\"let a of _alerts\"\r\n\t\t\t[id]=\"a.id\"\r\n\t\t\t[type]=\"a.type\"\r\n\t\t\t[message]=\"a.message\"\r\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\r\n\t\t></bui-alert>\r\n\t</div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { AlertContainerComponent } from './alert-container.component';\r\nimport { AlertMessageComponent } from './alert-message.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [AlertMessageComponent, AlertContainerComponent],\r\n\timports: [CommonModule, IconFontModule, MatButtonModule],\r\n\texports: [AlertMessageComponent, AlertContainerComponent]\r\n})\r\nexport class AlertModule {}\r\n\r\nexport { AlertMessageComponent, AlertContainerComponent };\r\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';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\r\nimport { generateID } from '@bravura/ui/common';\r\n\r\n/** @ignore */\r\nconst ICONS: any = {\r\n\tsuccess: 'check_circle',\r\n\tinfo: 'info',\r\n\twarn: 'report_problem',\r\n\terror: 'cancel'\r\n};\r\n\r\n/** @ignore */\r\nconst DEFAULT_POLITENESS = {\r\n\tsuccess: 'polite',\r\n\tinfo: 'polite',\r\n\twarn: 'assertive',\r\n\terror: 'assertive'\r\n};\r\n\r\n/**\r\n * An alert style message usually appears in a global notification area.\r\n *\r\n * The base color of the message is determined by the `type` of the message and a list of predefined\r\n * CSS custom properties.\r\n *\r\n * ```scss\r\n * --bui-color-success: #519602;\r\n * --bui-color-info: #0dcaf0;\r\n * --bui-color-warning: #ffc107;\r\n * --bui-color-error: #dc3545;\r\n * ```\r\n *\r\n *\r\n */\r\n@Component({\r\n\tselector: 'bui-alert',\r\n\ttemplateUrl: './alert-message.component.html',\r\n\tstyleUrls: ['./alert-message.component.scss'],\r\n\thost: {\r\n\t\t'[class]': `'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')`,\r\n\t\t'[role]': `politeness === 'off' ? 'region' : 'alert'`,\r\n\t\t'[attr.aria-live]': `politeness === 'assertive' ? undefined : politeness`\r\n\t},\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tstandalone: false\r\n})\r\nexport class AlertMessageComponent implements OnInit {\r\n\t/** @ignore */\r\n\tstatic ngAcceptInputType_dismissible: boolean | string | null | undefined;\r\n\t/** @ignore */\r\n\tstatic ngAcceptInputType_blink: boolean | string | null | undefined;\r\n\r\n\t/** The type of the message, used to derive the icon and base color. */\r\n\t@Input()\r\n\ttype: 'success' | 'info' | 'warn' | 'error' = 'error';\r\n\r\n\t/** The message to be displayed, HTML supported. */\r\n\t@Input()\r\n\tmessage = '';\r\n\r\n\t/** Specifies the ARIA live region politeness. */\r\n\t@Input()\r\n\tpoliteness!: 'off' | 'polite' | 'assertive';\r\n\r\n\t/** Whether to display the button to fire the `dismissed` event. */\r\n\t@Input()\r\n\tget dismissible() {\r\n\t\treturn this._dismissible;\r\n\t}\r\n\tset dismissible(value: any) {\r\n\t\tthis._dismissible = coerceBooleanProperty(value);\r\n\t}\r\n\r\n\t/** To be emitted when the user choose to dismiss the message. The event object is the ID of the element. */\r\n\t@Output()\r\n\tdismissed = new EventEmitter<string>();\r\n\r\n\t/** To be emitted when the component finishes initialisation. The event object is the ID of the element. */\r\n\t@Output()\r\n\tinitialised = new EventEmitter<string>();\r\n\r\n\t@Input('id')\r\n\t@HostBinding('id')\r\n\t/** @ignore */\r\n\t_id = `bui-alert-${generateID()}`;\r\n\r\n\tprivate _dismissible = false;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.politeness = this.politeness || DEFAULT_POLITENESS[this.type];\r\n\t\tthis.initialised.emit(this._id);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget iconName(): string {\r\n\t\treturn ICONS[this.type];\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_dismiss() {\r\n\t\tthis.dismissed.emit(this._id);\r\n\t}\r\n}\r\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\">\n\t\t@if (message) {\n\t\t\t<div [innerHTML]=\"message\"></div>\n\t\t}\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n\n@if (dismissible) {\n\t<div class=\"bui-alert-button-area\">\n\t\t<div class=\"bui-alert-button-backdrop\"></div>\n\t\t<button mat-icon-button class=\"bui-alert-button\" (click)=\"_dismiss()\" aria-label=\"dismiss alert\">\n\t\t\t<mat-icon>cancel</mat-icon>\n\t\t</button>\n\t</div>\n}\n","import { animate, state, style, transition, trigger, AnimationEvent } from '@angular/animations';\r\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\r\nimport {\r\n\tChangeDetectionStrategy,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tNgZone,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport { generateID, isElementInViewport } from '@bravura/ui/common';\r\nimport { Subject, Subscription, timer } from 'rxjs';\r\nimport { delay, take, takeUntil, tap } from 'rxjs/operators';\r\n\r\n/**@internal */\r\nclass InternalAlertOject {\r\n\tid: string;\r\n\tdeleted = false;\r\n\tconstructor(\r\n\t\tpublic readonly type: 'success' | 'info' | 'warn' | 'error',\r\n\t\tpublic readonly message: string\r\n\t) {\r\n\t\tthis.id = `bui-alert-cont-alert-${generateID()}`;\r\n\t}\r\n}\r\n\r\n/**\r\n * Use this component in a designated area of a page for displaying notification messages\r\n *\r\n */\r\n@Component({\r\n\tselector: 'bui-alert-container',\r\n\ttemplateUrl: './alert-container.component.html',\r\n\tstyleUrls: ['./alert-container.component.scss'],\r\n\thost: {\r\n\t\t'[class]': `'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')`\r\n\t},\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tanimations: [\r\n\t\ttrigger('floatTransition', [\r\n\t\t\ttransition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),\r\n\t\t\ttransition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])\r\n\t\t]),\r\n\t\ttrigger('alertTransition', [\r\n\t\t\tstate('visible', style({})),\r\n\t\t\tstate(\r\n\t\t\t\t'hidden',\r\n\t\t\t\tstyle({\r\n\t\t\t\t\theight: 0,\r\n\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\ttransform: 'scaleY(0)',\r\n\t\t\t\t\topacity: 0,\r\n\t\t\t\t\t'margin-top': '-1rem'\r\n\t\t\t\t})\r\n\t\t\t),\r\n\t\t\ttransition('void => visible', [\r\n\t\t\t\tstyle({ transform: 'translateY(100%)', height: 0, opacity: '0', overflow: 'hidden' }),\r\n\t\t\t\tanimate('250ms cubic-bezier(0.42, 0.0, 0.58, 1.0)')\r\n\t\t\t]),\r\n\t\t\ttransition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])\r\n\t\t])\r\n\t],\r\n\tstandalone: false\r\n})\r\nexport class AlertContainerComponent implements OnInit, OnDestroy {\r\n\t/** The maximum number of messages displayed in the container area. */\r\n\t@Input()\r\n\tmax = 5;\r\n\r\n\t/**\r\n\t * This property determines the behavior for displaying the notifications when the container is outside the viewport.\r\n\t *\r\n\t * `scroll`: The component will try to scroll to reveal the new notifications.\r\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.\r\n\t */\r\n\t@Input()\r\n\toutsideViewportBehavior: 'scroll' | 'float' = 'float';\r\n\r\n\t/**\r\n\t * The number of milliseconds for which the alert container will be floated when new notification arrives.\r\n\t *\r\n\t * This will only take effect when `outsideViewportBehavior` is set to `float` and the container is outside the viewport.\r\n\t */\r\n\t@Input()\r\n\tfloatDuration = 2000;\r\n\r\n\t/**@internal */\r\n\t_alerts: InternalAlertOject[] = [];\r\n\t/**@internal */\r\n\t_floated = false;\r\n\t/**@internal */\r\n\t_floatPanelHidden = true;\r\n\r\n\t/** @ignore Emits whenever the animation is started. */\r\n\treadonly _animationStarted = new Subject<AnimationEvent>();\r\n\t/** @ignore Emits whenever the animation is done. */\r\n\treadonly _animationEnded = new Subject<AnimationEvent>();\r\n\r\n\tprivate _destroyed$ = new Subject<void>();\r\n\tprivate _endFloatingSub?: Subscription;\r\n\r\n\t/** Emits the component instance after initialisation. */\r\n\t@Output()\r\n\tprivate init = new EventEmitter<AlertContainerComponent>();\r\n\r\n\tconstructor(\r\n\t\tprivate zone: NgZone,\r\n\t\tprivate cdRef: ChangeDetectorRef,\r\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\r\n\t\tprivate scroll: ScrollDispatcher\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tconst checkScroll = () => {\r\n\t\t\tif (isElementInViewport(this._elementRef.nativeElement)) {\r\n\t\t\t\tthis._endFloating();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.scroll\r\n\t\t\t.ancestorScrolled(this._elementRef.nativeElement)\r\n\t\t\t.pipe(takeUntil(this._destroyed$))\r\n\t\t\t.subscribe(checkScroll);\r\n\t\tcheckScroll();\r\n\t\tthis.init.emit(this);\r\n\t\tthis.init.complete();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._destroyed$.next();\r\n\t\tthis._destroyed$.complete();\r\n\t\tthis._endFloatingSub?.unsubscribe();\r\n\t}\r\n\r\n\t/**@internal */\r\n\tget _remaining() {\r\n\t\treturn this._alerts.filter(a => !a.deleted);\r\n\t}\r\n\r\n\t/**@internal */\r\n\tget _width() {\r\n\t\treturn this._elementRef.nativeElement.clientWidth;\r\n\t}\r\n\r\n\t/** Add a message to the notification area */\r\n\tasync notify(type: 'success' | 'info' | 'warn' | 'error', message: string) {\r\n\t\tthis._endFloatingSub?.unsubscribe();\r\n\t\tconst duplicate = this._remaining.find(_a => message === _a.message);\r\n\t\tif (duplicate) {\r\n\t\t\tthis._dismiss(duplicate);\r\n\t\t}\r\n\r\n\t\tconst remaining = this._remaining;\r\n\t\tif (remaining.length >= this.max) {\r\n\t\t\tthis._dismiss(remaining[0]);\r\n\t\t}\r\n\r\n\t\tconst a = new InternalAlertOject(type, message);\r\n\t\tawait this._checkViewport();\r\n\t\tthis.zone.run(() => {\r\n\t\t\tthis._alerts.push(a);\r\n\t\t\tthis.cdRef.markForCheck();\r\n\t\t});\r\n\t}\r\n\r\n\t/**@ignore */\r\n\tasync _checkViewport() {\r\n\t\tif (!isElementInViewport(this._elementRef.nativeElement)) {\r\n\t\t\tif (this.outsideViewportBehavior === 'float') {\r\n\t\t\t\tconst d = this._floated ? 0 : 100;\r\n\t\t\t\tthis._floated = true;\r\n\t\t\t\tthis._floatPanelHidden = false;\r\n\t\t\t\tthis._endFloating(this.floatDuration);\r\n\t\t\t\tthis.cdRef.markForCheck();\r\n\t\t\t\tawait timer(d).toPromise();\r\n\t\t\t} else {\r\n\t\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'start', behavior: 'smooth' });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**@ignore */\r\n\tasync _dismiss(a: InternalAlertOject) {\r\n\t\tconst id = a.id;\r\n\t\ta.deleted = true;\r\n\t\tthis.cdRef.markForCheck();\r\n\t\tawait this._animationEnded.pipe(take(1)).toPromise();\r\n\t\tthis.zone.run(() => {\r\n\t\t\tthis._alerts = this._alerts.filter(_a => _a.id !== id);\r\n\t\t\tthis.cdRef.markForCheck();\r\n\t\t});\r\n\t}\r\n\r\n\t/** Remove all messages currently displayed. */\r\n\tasync clear() {\r\n\t\tawait Promise.all(this._remaining.map(a => this._dismiss(a)));\r\n\t\tthis._endFloating();\r\n\t}\r\n\r\n\tprivate _endFloating(_delay = 0) {\r\n\t\tif (!this._floated) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._endFloatingSub?.unsubscribe();\r\n\t\tthis._endFloatingSub = timer(_delay)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(() => {\r\n\t\t\t\t\tthis._floated = false;\r\n\t\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\r\n\t\t\t\t}),\r\n\t\t\t\tdelay(400)\r\n\t\t\t)\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tthis._floatPanelHidden = true;\r\n\t\t\t\tthis.zone.run(() => this.cdRef.markForCheck());\r\n\t\t\t});\r\n\t}\r\n}\r\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@for (a of _alerts; track a) {\n\t\t<bui-alert\n\t\t\t[id]=\"a.id\"\n\t\t\t[type]=\"a.type\"\n\t\t\t[message]=\"a.message\"\n\t\t\tdismissible\n\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t\t(@alertTransition.start)=\"_animationStarted.next($event)\"\n\t\t\t(@alertTransition.done)=\"_animationEnded.next($event)\"\n\t\t\t(dismissed)=\"_dismiss(a)\"\n\t\t></bui-alert>\n\t}\n</div>\n\n<div class=\"bui-alert-float-panel-frame\" [hidden]=\"_floatPanelHidden\" [class.bui-alert-float-panel-shaded]=\"_floated\">\n\t@if (_floated) {\n\t\t<div class=\"bui-alert-float-panel\" [style.max-width]=\"_width + 'px'\" [@floatTransition]=\"'visible'\">\n\t\t\t@for (a of _alerts; track a) {\n\t\t\t\t<bui-alert\n\t\t\t\t\t[id]=\"a.id\"\n\t\t\t\t\t[type]=\"a.type\"\n\t\t\t\t\t[message]=\"a.message\"\n\t\t\t\t\t[@alertTransition]=\"a.deleted ? 'hidden' : 'visible'\"\n\t\t\t\t></bui-alert>\n\t\t\t}\n\t\t</div>\n\t}\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { AlertContainerComponent } from './alert-container.component';\r\nimport { AlertMessageComponent } from './alert-message.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [AlertMessageComponent, AlertContainerComponent],\r\n\timports: [CommonModule, IconFontModule, MatButtonModule],\r\n\texports: [AlertMessageComponent, AlertContainerComponent]\r\n})\r\nexport class AlertModule {}\r\n\r\nexport { AlertMessageComponent, AlertContainerComponent };\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.AlertMessageComponent"],"mappings":"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"}