@bravura/ui 3.8.1 → 5.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.
- package/CHANGELOG.md +585 -565
- package/LICENSE +6 -6
- package/README.md +3 -1
- package/alert/alert-container.component.d.ts +1 -1
- package/alert/alert-message.component.d.ts +1 -1
- package/behavior/await.directive.d.ts +1 -1
- package/behavior/observe-content-class.directive.d.ts +1 -1
- package/behavior/sizing.directive.d.ts +1 -1
- package/clip-note/clip-note.directive.d.ts +1 -1
- package/currency-input/currency-input.directive.d.ts +1 -1
- package/decimal-input/decimal-input.directive.d.ts +1 -1
- package/discrete-input/discrete-input.component.d.ts +1 -1
- package/esm2022/alert/alert-container.component.mjs +207 -0
- package/esm2022/alert/alert-message.component.mjs +101 -0
- package/esm2022/alert/alert.module.mjs +22 -0
- package/{esm2020 → esm2022}/alert/public-api.mjs +1 -1
- package/esm2022/alert/testing/test-api.mjs +44 -0
- package/esm2022/behavior/await.directive.mjs +133 -0
- package/esm2022/behavior/behavior.module.mjs +37 -0
- package/esm2022/behavior/observe-content-class.directive.mjs +63 -0
- package/{esm2020 → esm2022}/behavior/public-api.mjs +1 -1
- package/esm2022/behavior/sizing-monitor.directive.mjs +31 -0
- package/esm2022/behavior/sizing.directive.mjs +256 -0
- package/esm2022/clip-note/clip-note.component.mjs +216 -0
- package/esm2022/clip-note/clip-note.directive.mjs +141 -0
- package/esm2022/clip-note/clip-note.module.mjs +32 -0
- package/{esm2020 → esm2022}/clip-note/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/common/common-utils.mjs +1 -1
- package/esm2022/common/common.module.mjs +53 -0
- package/{esm2020 → esm2022}/common/public-api.mjs +1 -1
- package/esm2022/currency-input/currency-input.directive.mjs +276 -0
- package/esm2022/currency-input/currency-input.module.mjs +19 -0
- package/{esm2020 → esm2022}/currency-input/public-api.mjs +1 -1
- package/esm2022/decimal-input/decimal-input.directive.mjs +122 -0
- package/{esm2020 → esm2022}/decimal-input/decimal-input.module.mjs +5 -5
- package/esm2022/discrete-input/discrete-input.component.mjs +337 -0
- package/esm2022/discrete-input/discrete-input.module.mjs +21 -0
- package/{esm2020 → esm2022}/discrete-input/public-api.mjs +1 -1
- package/esm2022/file-upload/file-upload.component.mjs +400 -0
- package/esm2022/file-upload/file-upload.module.mjs +44 -0
- package/esm2022/file-upload/file-upload.service.mjs +29 -0
- package/{esm2020 → esm2022}/file-upload/public-api.mjs +1 -1
- package/esm2022/form-field/form-field.component.mjs +82 -0
- package/esm2022/form-field/form-field.module.mjs +33 -0
- package/{esm2020 → esm2022}/form-field/public-api.mjs +1 -1
- package/esm2022/icon-font/icon-font.module.mjs +22 -0
- package/esm2022/icon-font/icon.directive.mjs +102 -0
- package/{esm2020 → esm2022}/icon-font/public-api.mjs +1 -1
- package/esm2022/icon-font/utilities.mjs +51 -0
- package/esm2022/panel/panel-section.component.mjs +41 -0
- package/esm2022/panel/panel.component.mjs +87 -0
- package/esm2022/panel/panel.module.mjs +23 -0
- package/{esm2020 → esm2022}/panel/public-api.mjs +1 -1
- package/esm2022/panel/tinted.directive.mjs +60 -0
- package/esm2022/phone-number/phone-number.directive.mjs +188 -0
- package/{esm2020 → esm2022}/phone-number/phone-number.module.mjs +5 -5
- package/esm2022/phone-number/phone-number.pipe.mjs +47 -0
- package/esm2022/phone-number/phone-number.validator.mjs +64 -0
- package/{esm2020 → esm2022}/phone-number/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/public-api.mjs +1 -1
- package/esm2022/radio-panel/radio-panel-item.component.mjs +93 -0
- package/esm2022/radio-panel/radio-panel.component.mjs +81 -0
- package/{esm2020 → esm2022}/radio-panel/radio-panel.module.mjs +5 -5
- package/esm2022/radio-panel/testing/test-api.mjs +46 -0
- package/{esm2020 → esm2022}/selection-panel/public-api.mjs +1 -1
- package/esm2022/selection-panel/selection-panel-item.component.mjs +166 -0
- package/esm2022/selection-panel/selection-panel.directive.mjs +119 -0
- package/esm2022/selection-panel/selection-panel.module.mjs +23 -0
- package/{esm2020 → esm2022}/skeletons/public-api.mjs +1 -1
- package/esm2022/skeletons/skeleton-loader-presets.directive.mjs +83 -0
- package/esm2022/skeletons/skeleton-loader.component.mjs +76 -0
- package/esm2022/skeletons/skeletons.module.mjs +35 -0
- package/{esm2020 → esm2022}/stepper/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/stepper/stepper-animation.mjs +1 -1
- package/esm2022/stepper/stepper.component.mjs +176 -0
- package/esm2022/stepper/stepper.module.mjs +52 -0
- package/{esm2020 → esm2022}/tooltip/public-api.mjs +1 -1
- package/esm2022/tooltip/tooltip.component.mjs +63 -0
- package/esm2022/tooltip/tooltip.directive.mjs +148 -0
- package/esm2022/tooltip/tooltip.module.mjs +25 -0
- package/{fesm2020 → fesm2022}/bravura-ui-alert-testing.mjs +2 -2
- package/fesm2022/bravura-ui-alert-testing.mjs.map +1 -0
- package/fesm2022/bravura-ui-alert.mjs +327 -0
- package/fesm2022/bravura-ui-alert.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-behavior.mjs +45 -45
- package/fesm2022/bravura-ui-behavior.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-clip-note.mjs +70 -70
- package/fesm2022/bravura-ui-clip-note.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-common.mjs +6 -6
- package/fesm2022/bravura-ui-common.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-currency-input.mjs +11 -11
- package/fesm2022/bravura-ui-currency-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-decimal-input.mjs +12 -12
- package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-discrete-input.mjs +48 -48
- package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -0
- package/fesm2022/bravura-ui-file-upload.mjs +474 -0
- package/fesm2022/bravura-ui-file-upload.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-form-field.mjs +19 -19
- package/fesm2022/bravura-ui-form-field.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-icon-font.mjs +8 -8
- package/fesm2022/bravura-ui-icon-font.mjs.map +1 -0
- package/fesm2022/bravura-ui-panel.mjs +206 -0
- package/fesm2022/bravura-ui-panel.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-phone-number.mjs +30 -30
- package/fesm2022/bravura-ui-phone-number.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-radio-panel-testing.mjs +5 -6
- package/fesm2022/bravura-ui-radio-panel-testing.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-radio-panel.mjs +32 -32
- package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -0
- package/fesm2022/bravura-ui-selection-panel.mjs +306 -0
- package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-skeletons.mjs +43 -43
- package/fesm2022/bravura-ui-skeletons.mjs.map +1 -0
- package/fesm2022/bravura-ui-stepper.mjs +251 -0
- package/fesm2022/bravura-ui-stepper.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-tooltip.mjs +32 -24
- package/fesm2022/bravura-ui-tooltip.mjs.map +1 -0
- package/fesm2022/bravura-ui.mjs.map +1 -0
- package/file-upload/file-upload.component.d.ts +1 -1
- package/form-field/form-field.component.d.ts +1 -1
- package/icon-font/icon.directive.d.ts +1 -1
- package/package.json +88 -132
- package/panel/panel.component.d.ts +1 -1
- package/panel/tinted.directive.d.ts +1 -1
- package/phone-number/phone-number.directive.d.ts +1 -1
- package/phone-number/phone-number.validator.d.ts +2 -2
- package/radio-panel/radio-panel-item.component.d.ts +1 -1
- package/radio-panel/radio-panel.component.d.ts +1 -1
- package/radio-panel/testing/test-api.d.ts +2 -3
- package/selection-panel/selection-panel-item.component.d.ts +1 -1
- package/selection-panel/selection-panel.directive.d.ts +1 -1
- package/skeletons/skeleton-loader-presets.directive.d.ts +3 -3
- package/stepper/stepper.component.d.ts +1 -1
- package/theme/_bui-card.scss +56 -56
- package/theme/_ui-theme.scss +3 -3
- package/theme/global-style-by-bootstrap.scss +3 -3
- package/theme/global-style-by-tailwind.scss +3 -3
- package/theme/scrollbar.scss +40 -40
- package/tooltip/tooltip.component.d.ts +2 -0
- package/tooltip/tooltip.directive.d.ts +3 -5
- package/esm2020/alert/alert-container.component.mjs +0 -207
- package/esm2020/alert/alert-message.component.mjs +0 -102
- package/esm2020/alert/alert.module.mjs +0 -22
- package/esm2020/alert/testing/test-api.mjs +0 -44
- package/esm2020/behavior/await.directive.mjs +0 -133
- package/esm2020/behavior/behavior.module.mjs +0 -37
- package/esm2020/behavior/observe-content-class.directive.mjs +0 -63
- package/esm2020/behavior/sizing-monitor.directive.mjs +0 -31
- package/esm2020/behavior/sizing.directive.mjs +0 -256
- package/esm2020/clip-note/clip-note.component.mjs +0 -216
- package/esm2020/clip-note/clip-note.directive.mjs +0 -141
- package/esm2020/clip-note/clip-note.module.mjs +0 -32
- package/esm2020/common/common.module.mjs +0 -53
- package/esm2020/currency-input/currency-input.directive.mjs +0 -276
- package/esm2020/currency-input/currency-input.module.mjs +0 -19
- package/esm2020/decimal-input/decimal-input.directive.mjs +0 -122
- package/esm2020/discrete-input/discrete-input.component.mjs +0 -337
- package/esm2020/discrete-input/discrete-input.module.mjs +0 -21
- package/esm2020/file-upload/file-upload.component.mjs +0 -400
- package/esm2020/file-upload/file-upload.module.mjs +0 -44
- package/esm2020/file-upload/file-upload.service.mjs +0 -29
- package/esm2020/form-field/form-field.component.mjs +0 -82
- package/esm2020/form-field/form-field.module.mjs +0 -33
- package/esm2020/icon-font/icon-font.module.mjs +0 -22
- package/esm2020/icon-font/icon.directive.mjs +0 -102
- package/esm2020/icon-font/utilities.mjs +0 -51
- package/esm2020/panel/panel-section.component.mjs +0 -41
- package/esm2020/panel/panel.component.mjs +0 -87
- package/esm2020/panel/panel.module.mjs +0 -23
- package/esm2020/panel/tinted.directive.mjs +0 -60
- package/esm2020/phone-number/phone-number.directive.mjs +0 -188
- package/esm2020/phone-number/phone-number.pipe.mjs +0 -47
- package/esm2020/phone-number/phone-number.validator.mjs +0 -64
- package/esm2020/radio-panel/radio-panel-item.component.mjs +0 -93
- package/esm2020/radio-panel/radio-panel.component.mjs +0 -81
- package/esm2020/radio-panel/testing/test-api.mjs +0 -47
- package/esm2020/selection-panel/selection-panel-item.component.mjs +0 -166
- package/esm2020/selection-panel/selection-panel.directive.mjs +0 -119
- package/esm2020/selection-panel/selection-panel.module.mjs +0 -23
- package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +0 -83
- package/esm2020/skeletons/skeleton-loader.component.mjs +0 -76
- package/esm2020/skeletons/skeletons.module.mjs +0 -35
- package/esm2020/stepper/stepper.component.mjs +0 -176
- package/esm2020/stepper/stepper.module.mjs +0 -52
- package/esm2020/tooltip/tooltip.component.mjs +0 -54
- package/esm2020/tooltip/tooltip.directive.mjs +0 -149
- package/esm2020/tooltip/tooltip.module.mjs +0 -25
- package/fesm2015/bravura-ui-alert-testing.mjs +0 -64
- package/fesm2015/bravura-ui-alert-testing.mjs.map +0 -1
- package/fesm2015/bravura-ui-alert.mjs +0 -340
- package/fesm2015/bravura-ui-alert.mjs.map +0 -1
- package/fesm2015/bravura-ui-behavior.mjs +0 -515
- package/fesm2015/bravura-ui-behavior.mjs.map +0 -1
- package/fesm2015/bravura-ui-clip-note.mjs +0 -393
- package/fesm2015/bravura-ui-clip-note.mjs.map +0 -1
- package/fesm2015/bravura-ui-common.mjs +0 -96
- package/fesm2015/bravura-ui-common.mjs.map +0 -1
- package/fesm2015/bravura-ui-currency-input.mjs +0 -300
- package/fesm2015/bravura-ui-currency-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-decimal-input.mjs +0 -145
- package/fesm2015/bravura-ui-decimal-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-discrete-input.mjs +0 -365
- package/fesm2015/bravura-ui-discrete-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-file-upload.mjs +0 -478
- package/fesm2015/bravura-ui-file-upload.mjs.map +0 -1
- package/fesm2015/bravura-ui-form-field.mjs +0 -120
- package/fesm2015/bravura-ui-form-field.mjs.map +0 -1
- package/fesm2015/bravura-ui-icon-font.mjs +0 -178
- package/fesm2015/bravura-ui-icon-font.mjs.map +0 -1
- package/fesm2015/bravura-ui-panel.mjs +0 -210
- package/fesm2015/bravura-ui-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-phone-number.mjs +0 -327
- package/fesm2015/bravura-ui-phone-number.mjs.map +0 -1
- package/fesm2015/bravura-ui-radio-panel-testing.mjs +0 -63
- package/fesm2015/bravura-ui-radio-panel-testing.mjs.map +0 -1
- package/fesm2015/bravura-ui-radio-panel.mjs +0 -200
- package/fesm2015/bravura-ui-radio-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-selection-panel.mjs +0 -311
- package/fesm2015/bravura-ui-selection-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-skeletons.mjs +0 -195
- package/fesm2015/bravura-ui-skeletons.mjs.map +0 -1
- package/fesm2015/bravura-ui-stepper.mjs +0 -253
- package/fesm2015/bravura-ui-stepper.mjs.map +0 -1
- package/fesm2015/bravura-ui-tooltip.mjs +0 -229
- package/fesm2015/bravura-ui-tooltip.mjs.map +0 -1
- package/fesm2015/bravura-ui.mjs.map +0 -1
- package/fesm2020/bravura-ui-alert-testing.mjs.map +0 -1
- package/fesm2020/bravura-ui-alert.mjs +0 -328
- package/fesm2020/bravura-ui-alert.mjs.map +0 -1
- package/fesm2020/bravura-ui-behavior.mjs.map +0 -1
- package/fesm2020/bravura-ui-clip-note.mjs.map +0 -1
- package/fesm2020/bravura-ui-common.mjs.map +0 -1
- package/fesm2020/bravura-ui-currency-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-decimal-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-discrete-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-file-upload.mjs +0 -474
- package/fesm2020/bravura-ui-file-upload.mjs.map +0 -1
- package/fesm2020/bravura-ui-form-field.mjs.map +0 -1
- package/fesm2020/bravura-ui-icon-font.mjs.map +0 -1
- package/fesm2020/bravura-ui-panel.mjs +0 -206
- package/fesm2020/bravura-ui-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-phone-number.mjs.map +0 -1
- package/fesm2020/bravura-ui-radio-panel-testing.mjs.map +0 -1
- package/fesm2020/bravura-ui-radio-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-selection-panel.mjs +0 -306
- package/fesm2020/bravura-ui-selection-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-skeletons.mjs.map +0 -1
- package/fesm2020/bravura-ui-stepper.mjs +0 -251
- package/fesm2020/bravura-ui-stepper.mjs.map +0 -1
- package/fesm2020/bravura-ui-tooltip.mjs.map +0 -1
- package/fesm2020/bravura-ui.mjs +0 -8
- package/fesm2020/bravura-ui.mjs.map +0 -1
- /package/{esm2020 → esm2022}/alert/bravura-ui-alert.mjs +0 -0
- /package/{esm2020 → esm2022}/alert/testing/bravura-ui-alert-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/behavior/bravura-ui-behavior.mjs +0 -0
- /package/{esm2020 → esm2022}/bravura-ui.mjs +0 -0
- /package/{esm2020 → esm2022}/clip-note/bravura-ui-clip-note.mjs +0 -0
- /package/{esm2020 → esm2022}/common/bravura-ui-common.mjs +0 -0
- /package/{esm2020 → esm2022}/currency-input/bravura-ui-currency-input.mjs +0 -0
- /package/{esm2020 → esm2022}/decimal-input/bravura-ui-decimal-input.mjs +0 -0
- /package/{esm2020 → esm2022}/decimal-input/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/discrete-input/bravura-ui-discrete-input.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/bravura-ui-file-upload.mjs +0 -0
- /package/{esm2020 → esm2022}/form-field/bravura-ui-form-field.mjs +0 -0
- /package/{esm2020 → esm2022}/icon-font/bravura-ui-icon-font.mjs +0 -0
- /package/{esm2020 → esm2022}/panel/bravura-ui-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/phone-number/bravura-ui-phone-number.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/bravura-ui-radio-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/testing/bravura-ui-radio-panel-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/selection-panel/bravura-ui-selection-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/skeletons/bravura-ui-skeletons.mjs +0 -0
- /package/{esm2020 → esm2022}/stepper/bravura-ui-stepper.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/bravura-ui-tooltip.mjs +0 -0
- /package/{fesm2015 → fesm2022}/bravura-ui.mjs +0 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import * as i2 from '@angular/common';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, HostBinding, NgModule } from '@angular/core';
|
|
5
|
+
import * as i4 from '@angular/material/button';
|
|
6
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
+
import * as i3 from '@bravura/ui/icon-font';
|
|
8
|
+
import { IconFontModule } from '@bravura/ui/icon-font';
|
|
9
|
+
import { trigger, transition, style, animate, state } from '@angular/animations';
|
|
10
|
+
import { generateID, isElementInViewport } from '@bravura/ui/common';
|
|
11
|
+
import { Subject, timer } from 'rxjs';
|
|
12
|
+
import { takeUntil, take, tap, delay } from 'rxjs/operators';
|
|
13
|
+
import * as i1 from '@angular/cdk/scrolling';
|
|
14
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
15
|
+
import * as i2$1 from '@angular/material/icon';
|
|
16
|
+
|
|
17
|
+
/** @ignore */
|
|
18
|
+
const ICONS = {
|
|
19
|
+
success: 'check_circle',
|
|
20
|
+
info: 'info',
|
|
21
|
+
warn: 'report_problem',
|
|
22
|
+
error: 'cancel'
|
|
23
|
+
};
|
|
24
|
+
/** @ignore */
|
|
25
|
+
const DEFAULT_POLITENESS = {
|
|
26
|
+
success: 'polite',
|
|
27
|
+
info: 'polite',
|
|
28
|
+
warn: 'assertive',
|
|
29
|
+
error: 'assertive'
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* An alert style message usually appears in a global notification area.
|
|
33
|
+
*
|
|
34
|
+
* The base color of the message is determined by the `type` of the message and a list of predefined
|
|
35
|
+
* CSS custom properties.
|
|
36
|
+
*
|
|
37
|
+
* ```scss
|
|
38
|
+
* --bui-color-success: #519602;
|
|
39
|
+
* --bui-color-info: #0dcaf0;
|
|
40
|
+
* --bui-color-warning: #ffc107;
|
|
41
|
+
* --bui-color-error: #dc3545;
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
class AlertMessageComponent {
|
|
47
|
+
/** Whether to display the button to fire the `dismissed` event. */
|
|
48
|
+
get dismissible() {
|
|
49
|
+
return this._dismissible;
|
|
50
|
+
}
|
|
51
|
+
set dismissible(value) {
|
|
52
|
+
this._dismissible = coerceBooleanProperty(value);
|
|
53
|
+
}
|
|
54
|
+
constructor() {
|
|
55
|
+
/** The type of the message, used to derive the icon and base color. */
|
|
56
|
+
this.type = 'error';
|
|
57
|
+
/** The message to be displayed, HTML supported. */
|
|
58
|
+
this.message = '';
|
|
59
|
+
/** To be emitted when the user choose to dismiss the message. The event object is the ID of the element. */
|
|
60
|
+
this.dismissed = new EventEmitter();
|
|
61
|
+
/** To be emitted when the component finishes initialisation. The event object is the ID of the element. */
|
|
62
|
+
this.initialised = new EventEmitter();
|
|
63
|
+
this._id = `bui-alert-${generateID()}`;
|
|
64
|
+
this._dismissible = false;
|
|
65
|
+
}
|
|
66
|
+
ngOnInit() {
|
|
67
|
+
this.politeness = this.politeness || DEFAULT_POLITENESS[this.type];
|
|
68
|
+
this.initialised.emit(this._id);
|
|
69
|
+
}
|
|
70
|
+
/** @ignore */
|
|
71
|
+
get iconName() {
|
|
72
|
+
return ICONS[this.type];
|
|
73
|
+
}
|
|
74
|
+
/** @ignore */
|
|
75
|
+
_dismiss() {
|
|
76
|
+
this.dismissed.emit(this._id);
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AlertMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: AlertMessageComponent, 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 }); }
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AlertMessageComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ selector: 'bui-alert', host: {
|
|
84
|
+
'[class]': `'bui-alert bui-host bui-alert-' + (type === 'warn' ? 'warning' : type) + (dismissible ? ' bui-alert-dismissible' : '')`,
|
|
85
|
+
'[role]': `politeness === 'off' ? 'region' : 'alert'`,
|
|
86
|
+
'[attr.aria-live]': `politeness === 'assertive' ? undefined : politeness`
|
|
87
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, 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"] }]
|
|
88
|
+
}], ctorParameters: () => [], propDecorators: { type: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], message: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], politeness: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], dismissible: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], dismissed: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}], initialised: [{
|
|
99
|
+
type: Output
|
|
100
|
+
}],
|
|
101
|
+
/** @ignore */
|
|
102
|
+
_id: [{
|
|
103
|
+
type: Input,
|
|
104
|
+
args: ['id']
|
|
105
|
+
}, {
|
|
106
|
+
type: HostBinding,
|
|
107
|
+
args: ['id']
|
|
108
|
+
}] } });
|
|
109
|
+
|
|
110
|
+
/**@internal */
|
|
111
|
+
class InternalAlertOject {
|
|
112
|
+
constructor(type, message) {
|
|
113
|
+
this.type = type;
|
|
114
|
+
this.message = message;
|
|
115
|
+
this.deleted = false;
|
|
116
|
+
this.id = `bui-alert-cont-alert-${generateID()}`;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Use this component in a designated area of a page for displaying notification messages
|
|
121
|
+
*
|
|
122
|
+
*/
|
|
123
|
+
class AlertContainerComponent {
|
|
124
|
+
constructor(zone, cdRef, _elementRef, scroll) {
|
|
125
|
+
this.zone = zone;
|
|
126
|
+
this.cdRef = cdRef;
|
|
127
|
+
this._elementRef = _elementRef;
|
|
128
|
+
this.scroll = scroll;
|
|
129
|
+
/** The maximum number of messages displayed in the container area. */
|
|
130
|
+
this.max = 5;
|
|
131
|
+
/**
|
|
132
|
+
* This property determines the behavior for displaying the notifications when the container is outside the viewport.
|
|
133
|
+
*
|
|
134
|
+
* `scroll`: The component will try to scroll to reveal the new notifications.
|
|
135
|
+
* `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.
|
|
136
|
+
*/
|
|
137
|
+
this.outsideViewportBehavior = 'float';
|
|
138
|
+
/**
|
|
139
|
+
* The number of milliseconds for which the alert container will be floated when new notification arrives.
|
|
140
|
+
*
|
|
141
|
+
* This will only take effect when `outsideViewportBehavior` is set to `float` and the container is outside the viewport.
|
|
142
|
+
*/
|
|
143
|
+
this.floatDuration = 2000;
|
|
144
|
+
/**@internal */
|
|
145
|
+
this._alerts = [];
|
|
146
|
+
/**@internal */
|
|
147
|
+
this._floated = false;
|
|
148
|
+
/**@internal */
|
|
149
|
+
this._floatPanelHidden = true;
|
|
150
|
+
/** @ignore Emits whenever the animation is started. */
|
|
151
|
+
this._animationStarted = new Subject();
|
|
152
|
+
/** @ignore Emits whenever the animation is done. */
|
|
153
|
+
this._animationEnded = new Subject();
|
|
154
|
+
this._destroyed$ = new Subject();
|
|
155
|
+
/** Emits the component instance after initialisation. */
|
|
156
|
+
this.init = new EventEmitter();
|
|
157
|
+
}
|
|
158
|
+
ngOnInit() {
|
|
159
|
+
const checkScroll = () => {
|
|
160
|
+
if (isElementInViewport(this._elementRef.nativeElement)) {
|
|
161
|
+
this._endFloating();
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
this.scroll
|
|
165
|
+
.ancestorScrolled(this._elementRef.nativeElement)
|
|
166
|
+
.pipe(takeUntil(this._destroyed$))
|
|
167
|
+
.subscribe(checkScroll);
|
|
168
|
+
checkScroll();
|
|
169
|
+
this.init.emit(this);
|
|
170
|
+
this.init.complete();
|
|
171
|
+
}
|
|
172
|
+
ngOnDestroy() {
|
|
173
|
+
this._destroyed$.next();
|
|
174
|
+
this._destroyed$.complete();
|
|
175
|
+
this._endFloatingSub?.unsubscribe();
|
|
176
|
+
}
|
|
177
|
+
/**@internal */
|
|
178
|
+
get _remaining() {
|
|
179
|
+
return this._alerts.filter(a => !a.deleted);
|
|
180
|
+
}
|
|
181
|
+
/**@internal */
|
|
182
|
+
get _width() {
|
|
183
|
+
return this._elementRef.nativeElement.clientWidth;
|
|
184
|
+
}
|
|
185
|
+
/** Add a message to the notification area */
|
|
186
|
+
async notify(type, message) {
|
|
187
|
+
this._endFloatingSub?.unsubscribe();
|
|
188
|
+
const duplicate = this._remaining.find(_a => message === _a.message);
|
|
189
|
+
if (duplicate) {
|
|
190
|
+
this._dismiss(duplicate);
|
|
191
|
+
}
|
|
192
|
+
const remaining = this._remaining;
|
|
193
|
+
if (remaining.length >= this.max) {
|
|
194
|
+
this._dismiss(remaining[0]);
|
|
195
|
+
}
|
|
196
|
+
const a = new InternalAlertOject(type, message);
|
|
197
|
+
await this._checkViewport();
|
|
198
|
+
this.zone.run(() => {
|
|
199
|
+
this._alerts.push(a);
|
|
200
|
+
this.cdRef.markForCheck();
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
/**@ignore */
|
|
204
|
+
async _checkViewport() {
|
|
205
|
+
if (!isElementInViewport(this._elementRef.nativeElement)) {
|
|
206
|
+
if (this.outsideViewportBehavior === 'float') {
|
|
207
|
+
const d = this._floated ? 0 : 100;
|
|
208
|
+
this._floated = true;
|
|
209
|
+
this._floatPanelHidden = false;
|
|
210
|
+
this._endFloating(this.floatDuration);
|
|
211
|
+
this.cdRef.markForCheck();
|
|
212
|
+
await timer(d).toPromise();
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this._elementRef.nativeElement.scrollIntoView({ block: 'start', behavior: 'smooth' });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**@ignore */
|
|
220
|
+
async _dismiss(a) {
|
|
221
|
+
const id = a.id;
|
|
222
|
+
a.deleted = true;
|
|
223
|
+
this.cdRef.markForCheck();
|
|
224
|
+
await this._animationEnded.pipe(take(1)).toPromise();
|
|
225
|
+
this.zone.run(() => {
|
|
226
|
+
this._alerts = this._alerts.filter(_a => _a.id !== id);
|
|
227
|
+
this.cdRef.markForCheck();
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/** Remove all messages currently displayed. */
|
|
231
|
+
async clear() {
|
|
232
|
+
await Promise.all(this._remaining.map(a => this._dismiss(a)));
|
|
233
|
+
this._endFloating();
|
|
234
|
+
}
|
|
235
|
+
_endFloating(_delay = 0) {
|
|
236
|
+
if (!this._floated) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this._endFloatingSub?.unsubscribe();
|
|
240
|
+
this._endFloatingSub = timer(_delay)
|
|
241
|
+
.pipe(tap(() => {
|
|
242
|
+
this._floated = false;
|
|
243
|
+
this.zone.run(() => this.cdRef.markForCheck());
|
|
244
|
+
}), delay(400))
|
|
245
|
+
.subscribe(() => {
|
|
246
|
+
this._floatPanelHidden = true;
|
|
247
|
+
this.zone.run(() => this.cdRef.markForCheck());
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", 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: "18.2.2", 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\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: [
|
|
252
|
+
trigger('floatTransition', [
|
|
253
|
+
transition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),
|
|
254
|
+
transition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])
|
|
255
|
+
]),
|
|
256
|
+
trigger('alertTransition', [
|
|
257
|
+
state('visible', style({})),
|
|
258
|
+
state('hidden', style({
|
|
259
|
+
height: 0,
|
|
260
|
+
overflow: 'hidden',
|
|
261
|
+
transform: 'scaleY(0)',
|
|
262
|
+
opacity: 0,
|
|
263
|
+
'margin-top': '-1rem'
|
|
264
|
+
})),
|
|
265
|
+
transition('void => visible', [
|
|
266
|
+
style({ transform: 'translateY(100%)', height: 0, opacity: '0', overflow: 'hidden' }),
|
|
267
|
+
animate('250ms cubic-bezier(0.42, 0.0, 0.58, 1.0)')
|
|
268
|
+
]),
|
|
269
|
+
transition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])
|
|
270
|
+
])
|
|
271
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
272
|
+
}
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AlertContainerComponent, decorators: [{
|
|
274
|
+
type: Component,
|
|
275
|
+
args: [{ selector: 'bui-alert-container', host: {
|
|
276
|
+
'[class]': `'bui-alert-container bui-host bui-alert-container-' + (_remaining.length ? 'not-empty': 'empty')`
|
|
277
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
278
|
+
trigger('floatTransition', [
|
|
279
|
+
transition(':enter', [style({ opacity: '0', transform: 'translateY(-10vh)' }), animate('.3s ease-in')]),
|
|
280
|
+
transition(':leave', [animate('.4s ease-out', style({ transform: 'translateY(-10vh)', opacity: '0' }))])
|
|
281
|
+
]),
|
|
282
|
+
trigger('alertTransition', [
|
|
283
|
+
state('visible', style({})),
|
|
284
|
+
state('hidden', style({
|
|
285
|
+
height: 0,
|
|
286
|
+
overflow: 'hidden',
|
|
287
|
+
transform: 'scaleY(0)',
|
|
288
|
+
opacity: 0,
|
|
289
|
+
'margin-top': '-1rem'
|
|
290
|
+
})),
|
|
291
|
+
transition('void => visible', [
|
|
292
|
+
style({ transform: 'translateY(100%)', height: 0, opacity: '0', overflow: 'hidden' }),
|
|
293
|
+
animate('250ms cubic-bezier(0.42, 0.0, 0.58, 1.0)')
|
|
294
|
+
]),
|
|
295
|
+
transition('visible => hidden', [animate('250ms cubic-bezier(0.25, 0, 0.3, 1.0)')])
|
|
296
|
+
])
|
|
297
|
+
], 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: [{
|
|
299
|
+
type: Input
|
|
300
|
+
}], outsideViewportBehavior: [{
|
|
301
|
+
type: Input
|
|
302
|
+
}], floatDuration: [{
|
|
303
|
+
type: Input
|
|
304
|
+
}], init: [{
|
|
305
|
+
type: Output
|
|
306
|
+
}] } });
|
|
307
|
+
|
|
308
|
+
class AlertModule {
|
|
309
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
310
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", 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: "18.2.2", ngImport: i0, type: AlertModule, imports: [CommonModule, IconFontModule, MatButtonModule] }); }
|
|
312
|
+
}
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AlertModule, decorators: [{
|
|
314
|
+
type: NgModule,
|
|
315
|
+
args: [{
|
|
316
|
+
declarations: [AlertMessageComponent, AlertContainerComponent],
|
|
317
|
+
imports: [CommonModule, IconFontModule, MatButtonModule],
|
|
318
|
+
exports: [AlertMessageComponent, AlertContainerComponent]
|
|
319
|
+
}]
|
|
320
|
+
}] });
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Generated bundle index. Do not edit.
|
|
324
|
+
*/
|
|
325
|
+
|
|
326
|
+
export { AlertContainerComponent, AlertMessageComponent, AlertModule };
|
|
327
|
+
//# sourceMappingURL=bravura-ui-alert.mjs.map
|
|
@@ -0,0 +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})\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(public readonly type: 'success' | 'info' | 'warn' | 'error', public readonly message: string) {\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})\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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"}
|
|
@@ -28,15 +28,15 @@ class SizingMonitorDirective {
|
|
|
28
28
|
constructor(element) {
|
|
29
29
|
this.element = element;
|
|
30
30
|
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SizingMonitorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
32
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: SizingMonitorDirective, selector: "[buiSizingMonitor]", ngImport: i0 }); }
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
SizingMonitorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: SizingMonitorDirective, selector: "[buiSizingMonitor]", ngImport: i0 });
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: SizingMonitorDirective, decorators: [{
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SizingMonitorDirective, decorators: [{
|
|
35
35
|
type: Directive,
|
|
36
36
|
args: [{
|
|
37
37
|
selector: '[buiSizingMonitor]'
|
|
38
38
|
}]
|
|
39
|
-
}], ctorParameters:
|
|
39
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* This directive monitors the changes in the width of the `sizingBy` target, and apply specified style
|
|
@@ -60,6 +60,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
60
60
|
* ```
|
|
61
61
|
*/
|
|
62
62
|
class SizingDirective {
|
|
63
|
+
/**
|
|
64
|
+
* @ignore
|
|
65
|
+
*/
|
|
66
|
+
static { this.defaultSizingBreakpoints = ['400', '800', '~']; }
|
|
67
|
+
/**
|
|
68
|
+
* Designate an element to be monitored for recalculating the style classes of the current element.
|
|
69
|
+
*
|
|
70
|
+
* - `root` specifies the document root or the enclosing shadow host. This is the default value.
|
|
71
|
+
* - `parent` specifies the parent element.
|
|
72
|
+
*
|
|
73
|
+
* @default 'root'
|
|
74
|
+
* @alias sizingBy
|
|
75
|
+
*/
|
|
76
|
+
get buiSizingBy() {
|
|
77
|
+
return this.sizingBy;
|
|
78
|
+
}
|
|
79
|
+
set buiSizingBy(target) {
|
|
80
|
+
this.sizingBy = target;
|
|
81
|
+
}
|
|
63
82
|
constructor(_doc, _defaultTarget, elemRef, _zone) {
|
|
64
83
|
this._doc = _doc;
|
|
65
84
|
this._defaultTarget = _defaultTarget;
|
|
@@ -99,21 +118,6 @@ class SizingDirective {
|
|
|
99
118
|
this._element = elemRef.nativeElement;
|
|
100
119
|
this._monitorTarget = this._element;
|
|
101
120
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Designate an element to be monitored for recalculating the style classes of the current element.
|
|
104
|
-
*
|
|
105
|
-
* - `root` specifies the document root or the enclosing shadow host. This is the default value.
|
|
106
|
-
* - `parent` specifies the parent element.
|
|
107
|
-
*
|
|
108
|
-
* @default 'root'
|
|
109
|
-
* @alias sizingBy
|
|
110
|
-
*/
|
|
111
|
-
get buiSizingBy() {
|
|
112
|
-
return this.sizingBy;
|
|
113
|
-
}
|
|
114
|
-
set buiSizingBy(target) {
|
|
115
|
-
this.sizingBy = target;
|
|
116
|
-
}
|
|
117
121
|
ngOnChanges(_) {
|
|
118
122
|
const disconnected = this._element.getRootNode() instanceof HTMLElement;
|
|
119
123
|
if (disconnected) {
|
|
@@ -259,24 +263,20 @@ class SizingDirective {
|
|
|
259
263
|
_toNumber(s) {
|
|
260
264
|
return (s === '~' ? Infinity : Number(s)) || -Infinity;
|
|
261
265
|
}
|
|
266
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SizingDirective, deps: [{ token: DOCUMENT }, { token: SizingMonitorDirective, optional: true }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
267
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: SizingDirective, selector: "[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]", inputs: { buiSizing: "buiSizing", sizingBy: "sizingBy", buiSizingBy: "buiSizingBy", buiFixedHeight: "buiFixedHeight" }, outputs: { buiResized: "buiResized" }, usesOnChanges: true, ngImport: i0 }); }
|
|
262
268
|
}
|
|
263
|
-
|
|
264
|
-
* @ignore
|
|
265
|
-
*/
|
|
266
|
-
SizingDirective.defaultSizingBreakpoints = ['400', '800', '~'];
|
|
267
|
-
SizingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: SizingDirective, deps: [{ token: DOCUMENT }, { token: SizingMonitorDirective, optional: true }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
268
|
-
SizingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: SizingDirective, selector: "[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]", inputs: { buiSizing: "buiSizing", sizingBy: "sizingBy", buiSizingBy: "buiSizingBy", buiFixedHeight: "buiFixedHeight" }, outputs: { buiResized: "buiResized" }, usesOnChanges: true, ngImport: i0 });
|
|
269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: SizingDirective, decorators: [{
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SizingDirective, decorators: [{
|
|
270
270
|
type: Directive,
|
|
271
271
|
args: [{
|
|
272
272
|
selector: '[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]'
|
|
273
273
|
}]
|
|
274
|
-
}], ctorParameters:
|
|
274
|
+
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
275
275
|
type: Inject,
|
|
276
276
|
args: [DOCUMENT]
|
|
277
277
|
}] }, { type: SizingMonitorDirective, decorators: [{
|
|
278
278
|
type: Optional
|
|
279
|
-
}] }, { type: i0.ElementRef }, { type: i0.NgZone }]
|
|
279
|
+
}] }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { buiSizing: [{
|
|
280
280
|
type: Input
|
|
281
281
|
}], sizingBy: [{
|
|
282
282
|
type: Input
|
|
@@ -383,15 +383,15 @@ class AwaitDirective {
|
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AwaitDirective, deps: [{ token: i0.ElementRef }, { token: i1.MatButton, optional: true }, { token: i1.MatIconButton, optional: true }, { token: i1.MatIconAnchor, optional: true }, { token: i1.MatFabButton, optional: true }, { token: i1.MatFabAnchor, optional: true }, { token: i1.MatMiniFabButton, optional: true }, { token: i1.MatMiniFabAnchor, optional: true }, { token: DOCUMENT }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
387
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: AwaitDirective, selector: "[buiAwait]", inputs: { buiAwait: "buiAwait", buiAwaitAriaLabel: "buiAwaitAriaLabel", buiAwaitDiameter: "buiAwaitDiameter" }, ngImport: i0 }); }
|
|
386
388
|
}
|
|
387
|
-
|
|
388
|
-
AwaitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: AwaitDirective, selector: "[buiAwait]", inputs: { buiAwait: "buiAwait", buiAwaitAriaLabel: "buiAwaitAriaLabel", buiAwaitDiameter: "buiAwaitDiameter" }, ngImport: i0 });
|
|
389
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: AwaitDirective, decorators: [{
|
|
389
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: AwaitDirective, decorators: [{
|
|
390
390
|
type: Directive,
|
|
391
391
|
args: [{
|
|
392
392
|
selector: '[buiAwait]'
|
|
393
393
|
}]
|
|
394
|
-
}], ctorParameters:
|
|
394
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatButton, decorators: [{
|
|
395
395
|
type: Optional
|
|
396
396
|
}] }, { type: i1.MatIconButton, decorators: [{
|
|
397
397
|
type: Optional
|
|
@@ -408,7 +408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
408
408
|
}] }, { type: Document, decorators: [{
|
|
409
409
|
type: Inject,
|
|
410
410
|
args: [DOCUMENT]
|
|
411
|
-
}] }, { type: i0.ViewContainerRef }]
|
|
411
|
+
}] }, { type: i0.ViewContainerRef }], propDecorators: { buiAwait: [{
|
|
412
412
|
type: Input
|
|
413
413
|
}], buiAwaitAriaLabel: [{
|
|
414
414
|
type: Input
|
|
@@ -454,15 +454,15 @@ class ObserveContentClassDirective {
|
|
|
454
454
|
this.classToRemove.push(...classes);
|
|
455
455
|
}
|
|
456
456
|
}
|
|
457
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ObserveContentClassDirective, deps: [{ token: i1$1.ContentObserver }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
458
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ObserveContentClassDirective, selector: "[bui-class.empty],[bui-class.not-empty],[bui-class.no-text],[bui-class.has-text]", inputs: { classEmpty: ["bui-class.empty", "classEmpty"], classNotEmpty: ["bui-class.not-empty", "classNotEmpty"], classNoText: ["bui-class.no-text", "classNoText"], classHasText: ["bui-class.has-text", "classHasText"] }, ngImport: i0 }); }
|
|
457
459
|
}
|
|
458
|
-
|
|
459
|
-
ObserveContentClassDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: ObserveContentClassDirective, selector: "[bui-class.empty],[bui-class.not-empty],[bui-class.no-text],[bui-class.has-text]", inputs: { classEmpty: ["bui-class.empty", "classEmpty"], classNotEmpty: ["bui-class.not-empty", "classNotEmpty"], classNoText: ["bui-class.no-text", "classNoText"], classHasText: ["bui-class.has-text", "classHasText"] }, ngImport: i0 });
|
|
460
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ObserveContentClassDirective, decorators: [{
|
|
460
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ObserveContentClassDirective, decorators: [{
|
|
461
461
|
type: Directive,
|
|
462
462
|
args: [{
|
|
463
463
|
selector: '[bui-class.empty],[bui-class.not-empty],[bui-class.no-text],[bui-class.has-text]'
|
|
464
464
|
}]
|
|
465
|
-
}], ctorParameters:
|
|
465
|
+
}], ctorParameters: () => [{ type: i1$1.ContentObserver }, { type: i0.ElementRef }], propDecorators: { classEmpty: [{
|
|
466
466
|
type: Input,
|
|
467
467
|
args: ['bui-class.empty']
|
|
468
468
|
}], classNotEmpty: [{
|
|
@@ -480,15 +480,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
480
480
|
* For functionality that cannot be easily achieved via CSS.
|
|
481
481
|
*/
|
|
482
482
|
class BehaviorModule {
|
|
483
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BehaviorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
484
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: BehaviorModule, declarations: [SizingDirective, SizingMonitorDirective, AwaitDirective, ObserveContentClassDirective], imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, ObserversModule], exports: [SizingDirective,
|
|
485
|
+
SizingMonitorDirective,
|
|
486
|
+
AwaitDirective,
|
|
487
|
+
MatProgressSpinnerModule,
|
|
488
|
+
ObserveContentClassDirective] }); }
|
|
489
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BehaviorModule, imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, ObserversModule, MatProgressSpinnerModule] }); }
|
|
483
490
|
}
|
|
484
|
-
|
|
485
|
-
BehaviorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: BehaviorModule, declarations: [SizingDirective, SizingMonitorDirective, AwaitDirective, ObserveContentClassDirective], imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, ObserversModule], exports: [SizingDirective,
|
|
486
|
-
SizingMonitorDirective,
|
|
487
|
-
AwaitDirective,
|
|
488
|
-
MatProgressSpinnerModule,
|
|
489
|
-
ObserveContentClassDirective] });
|
|
490
|
-
BehaviorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BehaviorModule, imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, ObserversModule, MatProgressSpinnerModule] });
|
|
491
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BehaviorModule, decorators: [{
|
|
491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BehaviorModule, decorators: [{
|
|
492
492
|
type: NgModule,
|
|
493
493
|
args: [{
|
|
494
494
|
declarations: [SizingDirective, SizingMonitorDirective, AwaitDirective, ObserveContentClassDirective],
|