@bravobit/bb-foundation 0.20.1 → 0.21.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/auth/{bravobit-bb-foundation-auth.d.ts → index.d.ts} +0 -0
- package/auth/lib/directives/authenticated.directive.d.ts +1 -1
- package/auth/lib/directives/permission.directive.d.ts +1 -1
- package/auth/lib/directives/role.directive.d.ts +1 -1
- package/collections/{bravobit-bb-foundation-collections.d.ts → index.d.ts} +0 -0
- package/collections/lib/collection.d.ts +6 -6
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +1 -1
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +1 -1
- package/collections/lib/components/collections.directive.d.ts +4 -4
- package/collections/lib/providers/api-collection.provider.d.ts +3 -3
- package/controls/{bravobit-bb-foundation-controls.d.ts → index.d.ts} +0 -0
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +10 -10
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +9 -5
- package/dashboard/{bravobit-bb-foundation-dashboard.d.ts → index.d.ts} +0 -0
- package/dashboard/lib/dashboard/dashboard.component.d.ts +1 -1
- package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +1 -1
- package/dialog/{bravobit-bb-foundation-dialog.d.ts → index.d.ts} +0 -0
- package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +1 -1
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +1 -1
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -1
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -1
- package/dialog/lib/dialog-link/dialog-link.component.d.ts +1 -1
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -1
- package/dialog/lib/dialog.insertion.d.ts +1 -1
- package/elements/{bravobit-bb-foundation-elements.d.ts → index.d.ts} +0 -0
- package/elements/lib/avatar/avatar.component.d.ts +1 -1
- package/elements/lib/button/button.component.d.ts +2 -2
- package/elements/lib/checkbox/checkbox.component.d.ts +1 -1
- package/elements/lib/date-picker/date-picker.component.d.ts +2 -2
- package/elements/lib/directives/addon.directive.d.ts +2 -2
- package/elements/lib/directives/autosize.directive.d.ts +1 -1
- package/elements/lib/directives/focus-trap.directive.d.ts +1 -1
- package/elements/lib/directives/focus.directive.d.ts +1 -1
- package/elements/lib/directives/form-submit.directive.d.ts +1 -1
- package/elements/lib/directives/input.directive.d.ts +2 -2
- package/elements/lib/directives/template.directive.d.ts +1 -1
- package/elements/lib/dropdown/dropdown.component.d.ts +2 -2
- package/elements/lib/file-picker/file-picker.component.d.ts +2 -2
- package/elements/lib/form-control/form-control.component.d.ts +1 -1
- package/elements/lib/form-error/form-error.component.d.ts +1 -1
- package/elements/lib/form-group/form-group.component.d.ts +1 -1
- package/elements/lib/icon/icon.component.d.ts +1 -1
- package/elements/lib/image-picker/image-picker.component.d.ts +1 -1
- package/elements/lib/pipes/file-image.pipe.d.ts +1 -1
- package/elements/lib/pipes/file-size.pipe.d.ts +1 -1
- package/elements/lib/pipes/relative-time.pipe.d.ts +1 -1
- package/elements/lib/spinner/spinner.component.d.ts +1 -1
- package/elements/lib/tag/tag.component.d.ts +1 -1
- package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
- package/esm2020/auth/lib/auth.module.mjs +6 -6
- package/esm2020/auth/lib/auth.service.mjs +5 -5
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
- package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
- package/esm2020/auth/lib/directives/role.directive.mjs +3 -3
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +3 -3
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
- package/esm2020/auth/lib/helpers/mapper.helper.mjs +3 -3
- package/esm2020/auth/lib/permissions.service.mjs +3 -3
- package/esm2020/collections/lib/collection.mjs +5 -5
- package/esm2020/collections/lib/collections.module.mjs +5 -5
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
- package/esm2020/collections/lib/providers/api-collection.provider.mjs +6 -6
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +6 -6
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +19 -6
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2020/controls/lib/controls.module.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard.module.mjs +5 -5
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +8 -8
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
- package/esm2020/dialog/lib/dialog.module.mjs +7 -9
- package/esm2020/dialog/lib/dialog.service.mjs +3 -3
- package/esm2020/elements/lib/avatar/avatar.component.mjs +3 -3
- package/esm2020/elements/lib/button/button.component.mjs +6 -6
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +5 -5
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +12 -12
- package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/autosize.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/focus-trap.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/focus.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/template.directive.mjs +3 -3
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +7 -7
- package/esm2020/elements/lib/elements.module.mjs +5 -5
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +10 -10
- package/esm2020/elements/lib/form-control/form-control.component.mjs +6 -6
- package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
- package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
- package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +5 -5
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
- package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
- package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
- package/esm2020/http/lib/http.module.mjs +5 -5
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
- package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
- package/esm2020/lib/core/services/exif.service.mjs +3 -3
- package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
- package/esm2020/lib/core/services/languages.service.mjs +3 -3
- package/esm2020/lib/core/services/network.service.mjs +3 -3
- package/esm2020/lib/core/services/patch.service.mjs +3 -3
- package/esm2020/lib/core/services/platform.service.mjs +3 -3
- package/esm2020/localize/lib/localize.module.mjs +5 -5
- package/esm2020/localize/lib/localize.pipe.mjs +3 -3
- package/esm2020/localize/lib/localize.service.mjs +9 -7
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
- package/esm2020/masking/bravobit-bb-foundation-masking.mjs +5 -0
- package/esm2020/masking/lib/input-mask.directive.mjs +110 -0
- package/esm2020/masking/lib/input-mask.interface.mjs +2 -0
- package/esm2020/masking/lib/masking.module.mjs +16 -0
- package/esm2020/masking/lib/masking.service.mjs +94 -0
- package/esm2020/masking/public_api.mjs +5 -0
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +6 -6
- package/esm2020/notifications/lib/notifications.module.mjs +5 -5
- package/esm2020/notifications/lib/notifications.service.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2020/storage/lib/storage.service.mjs +8 -8
- package/esm2020/table/lib/components/table/table.component.mjs +15 -15
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +4 -4
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +6 -6
- package/esm2020/table/lib/table.module.mjs +5 -5
- package/esm2020/theming/bravobit-bb-foundation-theming.mjs +5 -0
- package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +2 -0
- package/esm2020/theming/lib/themes/checkbox.theme.mjs +2 -0
- package/esm2020/theming/lib/theming.interface.mjs +3 -0
- package/esm2020/theming/lib/theming.module.mjs +38 -0
- package/esm2020/theming/lib/theming.service.mjs +100 -0
- package/esm2020/theming/public_api.mjs +4 -0
- package/fesm2015/bravobit-bb-foundation-auth.mjs +33 -33
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +31 -31
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +31 -18
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +26 -26
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +34 -36
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +143 -143
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +26 -24
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +235 -0
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -0
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +14 -14
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-storage.mjs +7 -7
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +28 -28
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-theming.mjs +153 -0
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -0
- package/fesm2015/bravobit-bb-foundation.mjs +24 -24
- package/fesm2020/bravobit-bb-foundation-auth.mjs +33 -33
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +31 -31
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +31 -18
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +26 -26
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +34 -36
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +143 -143
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-localize.mjs +24 -22
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +223 -0
- package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -0
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +14 -14
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-storage.mjs +7 -7
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +28 -28
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-theming.mjs +143 -0
- package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -0
- package/fesm2020/bravobit-bb-foundation.mjs +24 -24
- package/http/{bravobit-bb-foundation-http.d.ts → index.d.ts} +0 -0
- package/{bravobit-bb-foundation.d.ts → index.d.ts} +0 -0
- package/localize/{bravobit-bb-foundation-localize.d.ts → index.d.ts} +0 -0
- package/localize/lib/localize.pipe.d.ts +1 -1
- package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
- package/localize/lib/views/localize-template-or-string.directive.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/index.d.ts +5 -0
- package/masking/lib/input-mask.directive.d.ts +36 -0
- package/masking/lib/input-mask.interface.d.ts +20 -0
- package/masking/lib/masking.module.d.ts +7 -0
- package/masking/lib/masking.service.d.ts +12 -0
- package/masking/public_api.d.ts +4 -0
- package/notifications/{bravobit-bb-foundation-notifications.d.ts → index.d.ts} +0 -0
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
- package/package.json +36 -19
- package/recaptcha/{bravobit-bb-foundation-recaptcha.d.ts → index.d.ts} +0 -0
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
- package/rxjs/{bravobit-bb-foundation-rxjs.d.ts → index.d.ts} +0 -0
- package/storage/{bravobit-bb-foundation-storage.d.ts → index.d.ts} +0 -0
- package/table/{bravobit-bb-foundation-table.d.ts → index.d.ts} +0 -0
- package/table/lib/components/table/table.component.d.ts +7 -7
- package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +1 -1
- package/table/lib/components/table-pager/table-pager.component.d.ts +1 -1
- package/theming/index.d.ts +5 -0
- package/theming/lib/themes/checkbox-group.theme.d.ts +5 -0
- package/theming/lib/themes/checkbox.theme.d.ts +19 -0
- package/theming/lib/theming.interface.d.ts +14 -0
- package/theming/lib/theming.module.d.ts +13 -0
- package/theming/lib/theming.service.d.ts +24 -0
- package/theming/public_api.d.ts +3 -0
- package/auth/package.json +0 -10
- package/collections/package.json +0 -10
- package/controls/package.json +0 -10
- package/dashboard/package.json +0 -10
- package/dialog/package.json +0 -10
- package/elements/package.json +0 -10
- package/http/package.json +0 -10
- package/localize/package.json +0 -10
- package/notifications/package.json +0 -10
- package/recaptcha/package.json +0 -10
- package/rxjs/package.json +0 -10
- package/storage/package.json +0 -10
- package/table/package.json +0 -10
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Directive, Optional, Self, Input, HostListener, Injectable, NgModule } from '@angular/core';
|
|
4
|
+
import _Inputmask from 'inputmask';
|
|
5
|
+
import * as i1 from '@angular/cdk/platform';
|
|
6
|
+
import * as i2 from '@angular/forms';
|
|
7
|
+
import { formatDate, getCurrencySymbol, getLocaleNumberSymbol, NumberSymbol, getNumberOfCurrencyDigits } from '@angular/common';
|
|
8
|
+
import * as i1$1 from '@bravobit/bb-foundation/localize';
|
|
9
|
+
|
|
10
|
+
const createMask = (options) => typeof options === 'string' ? { mask: options } : options;
|
|
11
|
+
|
|
12
|
+
const InputmaskConstructor = _Inputmask.default || _Inputmask;
|
|
13
|
+
class BbInputMask {
|
|
14
|
+
constructor(_ngZone, _platform, _renderer, _elementRef, _control) {
|
|
15
|
+
this._ngZone = _ngZone;
|
|
16
|
+
this._platform = _platform;
|
|
17
|
+
this._renderer = _renderer;
|
|
18
|
+
this._elementRef = _elementRef;
|
|
19
|
+
this._control = _control;
|
|
20
|
+
// State.
|
|
21
|
+
this.inputMaskPlugin = null;
|
|
22
|
+
this.nativeInputElement = null;
|
|
23
|
+
this._inputMaskOptions = null;
|
|
24
|
+
this._onChange = () => ({});
|
|
25
|
+
this.onInput = (_) => ({});
|
|
26
|
+
this.onTouched = () => ({});
|
|
27
|
+
this.validate = (control) => {
|
|
28
|
+
var _a;
|
|
29
|
+
return !control.value || !this.inputMaskPlugin || ((_a = this.inputMaskPlugin) === null || _a === void 0 ? void 0 : _a.isValid())
|
|
30
|
+
? null
|
|
31
|
+
: { inputMask: true };
|
|
32
|
+
};
|
|
33
|
+
this.nativeInputElement = this._elementRef.nativeElement;
|
|
34
|
+
if (this._control != null) {
|
|
35
|
+
this._control.valueAccessor = this;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
set bbInputMask(mask) {
|
|
39
|
+
if (!mask) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this._inputMaskOptions = mask;
|
|
43
|
+
this.updateMask();
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
const control = this._control.control;
|
|
47
|
+
if (!control) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
control.setValidators(control.validator ? [control.validator, this.validate] : [this.validate]);
|
|
51
|
+
control.updateValueAndValidity();
|
|
52
|
+
}
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
this.destroyMask();
|
|
55
|
+
}
|
|
56
|
+
writeValue(value) {
|
|
57
|
+
if (!this.nativeInputElement) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this._renderer.setProperty(this.nativeInputElement, 'value', value !== null && value !== void 0 ? value : '');
|
|
61
|
+
}
|
|
62
|
+
registerOnChange(fn) {
|
|
63
|
+
var _a;
|
|
64
|
+
this._onChange = fn;
|
|
65
|
+
const parser = (_a = this._inputMaskOptions) === null || _a === void 0 ? void 0 : _a.parser;
|
|
66
|
+
this.onInput = value => this._onChange(parser && value ? parser(value) : value);
|
|
67
|
+
}
|
|
68
|
+
registerOnTouched(fn) {
|
|
69
|
+
this.onTouched = fn;
|
|
70
|
+
}
|
|
71
|
+
setDisabledState(isDisabled) {
|
|
72
|
+
if (!this.nativeInputElement) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
this._renderer.setProperty(this.nativeInputElement, 'disabled', isDisabled);
|
|
76
|
+
}
|
|
77
|
+
updateMask() {
|
|
78
|
+
this.destroyMask();
|
|
79
|
+
this.createMask();
|
|
80
|
+
this.registerOnChange(this._onChange);
|
|
81
|
+
}
|
|
82
|
+
createMask() {
|
|
83
|
+
const element = this._elementRef.nativeElement;
|
|
84
|
+
if (!this._platform.isBrowser || !element || this._inputMaskOptions === null || Object.keys(this._inputMaskOptions).length === 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const _a = this._inputMaskOptions, { parser } = _a, options = __rest(_a, ["parser"]);
|
|
88
|
+
this.inputMaskPlugin = this._ngZone.runOutsideAngular(() => new InputmaskConstructor(options).mask(element));
|
|
89
|
+
const control = this._control.control;
|
|
90
|
+
if (!control) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
setTimeout(() => control.updateValueAndValidity());
|
|
94
|
+
}
|
|
95
|
+
destroyMask() {
|
|
96
|
+
var _a;
|
|
97
|
+
(_a = this.inputMaskPlugin) === null || _a === void 0 ? void 0 : _a.remove();
|
|
98
|
+
this.inputMaskPlugin = null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
BbInputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbInputMask, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
102
|
+
BbInputMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: BbInputMask, selector: "input[bbInputMask]", inputs: { bbInputMask: "bbInputMask" }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)" } }, ngImport: i0 });
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbInputMask, decorators: [{
|
|
104
|
+
type: Directive,
|
|
105
|
+
args: [{
|
|
106
|
+
selector: 'input[bbInputMask]'
|
|
107
|
+
}]
|
|
108
|
+
}], ctorParameters: function () {
|
|
109
|
+
return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.NgControl, decorators: [{
|
|
110
|
+
type: Optional
|
|
111
|
+
}, {
|
|
112
|
+
type: Self
|
|
113
|
+
}] }];
|
|
114
|
+
}, propDecorators: { bbInputMask: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], onInput: [{
|
|
117
|
+
type: HostListener,
|
|
118
|
+
args: ['input', ['$event.target.value']]
|
|
119
|
+
}], onTouched: [{
|
|
120
|
+
type: HostListener,
|
|
121
|
+
args: ['blur', ['$event.target.value']]
|
|
122
|
+
}] } });
|
|
123
|
+
|
|
124
|
+
class Masking {
|
|
125
|
+
constructor(_localize) {
|
|
126
|
+
this._localize = _localize;
|
|
127
|
+
}
|
|
128
|
+
date(format = 2 /* DateMaskFormat.YearMonthDay */, separator = '-') {
|
|
129
|
+
const dateParts = this.getDateParts(format);
|
|
130
|
+
const inputFormat = dateParts.join(separator);
|
|
131
|
+
const outputFormat = 'yyyy-MM-dd';
|
|
132
|
+
const escape = /[.*+?^${}()\/|[\]\\]/g;
|
|
133
|
+
const escapedSeparator = separator.replace(escape, '\\$&');
|
|
134
|
+
const inputFormatRegexString = dateParts
|
|
135
|
+
.map(item => `(?<${item}>[0-9]{${item === null || item === void 0 ? void 0 : item.length}})`)
|
|
136
|
+
.join(escapedSeparator);
|
|
137
|
+
const inputFormatRegex = new RegExp(`^${inputFormatRegexString}$`);
|
|
138
|
+
return createMask({
|
|
139
|
+
alias: 'datetime',
|
|
140
|
+
inputFormat: inputFormat.toLowerCase(),
|
|
141
|
+
outputFormat: outputFormat.toLowerCase(),
|
|
142
|
+
nullable: false,
|
|
143
|
+
inputmode: 'numeric',
|
|
144
|
+
onBeforeMask: (initialValue) => {
|
|
145
|
+
return initialValue ? formatDate(initialValue, inputFormat, 'en-US') : null;
|
|
146
|
+
},
|
|
147
|
+
onBeforePaste: (value) => {
|
|
148
|
+
return value;
|
|
149
|
+
},
|
|
150
|
+
parser: (value) => {
|
|
151
|
+
var _a, _b, _c;
|
|
152
|
+
if (!value || typeof value !== 'string' || !inputFormatRegex.test(value)) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
const matches = value.match(inputFormatRegex);
|
|
156
|
+
const year = +((_a = matches === null || matches === void 0 ? void 0 : matches.groups) === null || _a === void 0 ? void 0 : _a['yyyy']);
|
|
157
|
+
const month = +((_b = matches === null || matches === void 0 ? void 0 : matches.groups) === null || _b === void 0 ? void 0 : _b['MM']) - 1;
|
|
158
|
+
const day = +((_c = matches === null || matches === void 0 ? void 0 : matches.groups) === null || _c === void 0 ? void 0 : _c['dd']);
|
|
159
|
+
const date = new Date(year, month, day);
|
|
160
|
+
return date instanceof Date && !isNaN(date)
|
|
161
|
+
? formatDate(date, outputFormat, 'en-US')
|
|
162
|
+
: null;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
currency(code, options) {
|
|
167
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
168
|
+
const locale = (_c = (_b = (_a = this._localize) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.locale) !== null && _c !== void 0 ? _c : 'en';
|
|
169
|
+
const symbol = (_d = options === null || options === void 0 ? void 0 : options.symbol) !== null && _d !== void 0 ? _d : getCurrencySymbol(code, (_e = options === null || options === void 0 ? void 0 : options.symbolFormat) !== null && _e !== void 0 ? _e : 'narrow', locale);
|
|
170
|
+
const decimal = (_f = options === null || options === void 0 ? void 0 : options.decimalCharacter) !== null && _f !== void 0 ? _f : getLocaleNumberSymbol(locale, NumberSymbol.CurrencyDecimal);
|
|
171
|
+
const group = (_g = options === null || options === void 0 ? void 0 : options.groupCharacter) !== null && _g !== void 0 ? _g : getLocaleNumberSymbol(locale, NumberSymbol.CurrencyGroup);
|
|
172
|
+
const digits = (_h = options === null || options === void 0 ? void 0 : options.digits) !== null && _h !== void 0 ? _h : getNumberOfCurrencyDigits(code);
|
|
173
|
+
const spacer = (_j = options === null || options === void 0 ? void 0 : options.spacer) !== null && _j !== void 0 ? _j : ' ';
|
|
174
|
+
return createMask({
|
|
175
|
+
alias: 'numeric',
|
|
176
|
+
digits: digits,
|
|
177
|
+
prefix: `${symbol}${spacer}`,
|
|
178
|
+
radixPoint: decimal !== null && decimal !== void 0 ? decimal : '.',
|
|
179
|
+
groupSeparator: group !== null && group !== void 0 ? group : ',',
|
|
180
|
+
digitsOptional: (_k = options === null || options === void 0 ? void 0 : options.digitsOptional) !== null && _k !== void 0 ? _k : false,
|
|
181
|
+
autoUnmask: true,
|
|
182
|
+
unmaskAsNumber: true,
|
|
183
|
+
nullable: false,
|
|
184
|
+
rightAlign: false,
|
|
185
|
+
showMaskOnHover: false,
|
|
186
|
+
showMaskOnFocus: false,
|
|
187
|
+
inputmode: digits > 0 ? 'decimal' : 'numeric'
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
getDateParts(format) {
|
|
191
|
+
switch (format) {
|
|
192
|
+
case 0 /* DateMaskFormat.DayMonthYear */:
|
|
193
|
+
return ['dd', 'MM', 'yyyy'];
|
|
194
|
+
case 1 /* DateMaskFormat.MonthDayYear */:
|
|
195
|
+
return ['MM', 'dd', 'yyyy'];
|
|
196
|
+
case 3 /* DateMaskFormat.YearDayMonth */:
|
|
197
|
+
return ['yyyy', 'dd', 'MM'];
|
|
198
|
+
case 2 /* DateMaskFormat.YearMonthDay */:
|
|
199
|
+
default:
|
|
200
|
+
return ['yyyy', 'MM', 'dd'];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
Masking.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Masking, deps: [{ token: i1$1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
205
|
+
Masking.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Masking, providedIn: 'root' });
|
|
206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Masking, decorators: [{
|
|
207
|
+
type: Injectable,
|
|
208
|
+
args: [{
|
|
209
|
+
providedIn: 'root'
|
|
210
|
+
}]
|
|
211
|
+
}], ctorParameters: function () {
|
|
212
|
+
return [{ type: i1$1.Localize, decorators: [{
|
|
213
|
+
type: Optional
|
|
214
|
+
}] }];
|
|
215
|
+
} });
|
|
216
|
+
|
|
217
|
+
class MaskingModule {
|
|
218
|
+
}
|
|
219
|
+
MaskingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MaskingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
220
|
+
MaskingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: MaskingModule, declarations: [BbInputMask], exports: [BbInputMask] });
|
|
221
|
+
MaskingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MaskingModule });
|
|
222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MaskingModule, decorators: [{
|
|
223
|
+
type: NgModule,
|
|
224
|
+
args: [{
|
|
225
|
+
declarations: [BbInputMask],
|
|
226
|
+
exports: [BbInputMask]
|
|
227
|
+
}]
|
|
228
|
+
}] });
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Generated bundle index. Do not edit.
|
|
232
|
+
*/
|
|
233
|
+
|
|
234
|
+
export { BbInputMask, Masking, MaskingModule, createMask };
|
|
235
|
+
//# sourceMappingURL=bravobit-bb-foundation-masking.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-masking.mjs","sources":["../../../projects/bb-foundation/masking/src/lib/input-mask.interface.ts","../../../projects/bb-foundation/masking/src/lib/input-mask.directive.ts","../../../projects/bb-foundation/masking/src/lib/masking.service.ts","../../../projects/bb-foundation/masking/src/lib/masking.module.ts","../../../projects/bb-foundation/masking/src/bravobit-bb-foundation-masking.ts"],"sourcesContent":["import type Inputmask from 'inputmask';\r\n\r\nexport type InputMaskOptions<T> = Inputmask.Options & {\r\n parser?: (value: any) => T;\r\n};\r\n\r\nexport type CurrencyMaskOptions = {\r\n symbol: string;\r\n symbolFormat: 'wide' | 'narrow';\r\n spacer: string;\r\n digits: number;\r\n digitsOptional: boolean;\r\n decimalCharacter: string;\r\n groupCharacter: string;\r\n}\r\n\r\nexport const enum DateMaskFormat {\r\n DayMonthYear,\r\n MonthDayYear,\r\n YearMonthDay,\r\n YearDayMonth\r\n}\r\n\r\nexport const createMask = <T>(options: string | InputMaskOptions<T>) => typeof options === 'string' ? {mask: options} : options;","import {Directive, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, Optional, Renderer2, Self} from '@angular/core';\r\nimport {AbstractControl, ControlValueAccessor, NgControl, Validator} from '@angular/forms';\r\nimport {InputMaskOptions} from './input-mask.interface';\r\nimport {Platform} from '@angular/cdk/platform';\r\nimport type Inputmask from 'inputmask';\r\nimport _Inputmask from 'inputmask';\r\n\r\nconst InputmaskConstructor = (_Inputmask as unknown as { default?: Inputmask.Static }).default || _Inputmask;\r\n\r\n@Directive({\r\n selector: 'input[bbInputMask]'\r\n})\r\nexport class BbInputMask<T = any> implements OnInit, OnDestroy, ControlValueAccessor, Validator {\r\n\r\n @Input()\r\n set bbInputMask(mask: InputMaskOptions<T> | null | undefined) {\r\n if (!mask) {\r\n return;\r\n }\r\n\r\n this._inputMaskOptions = mask;\r\n this.updateMask();\r\n }\r\n\r\n // State.\r\n inputMaskPlugin: Inputmask.Instance | null = null;\r\n nativeInputElement: HTMLInputElement | null = null;\r\n\r\n private _inputMaskOptions: InputMaskOptions<T> | null = null;\r\n private _onChange: (value: T | null) => void = () => ({});\r\n\r\n constructor(private _ngZone: NgZone,\r\n private _platform: Platform,\r\n private _renderer: Renderer2,\r\n private _elementRef: ElementRef,\r\n @Optional() @Self() private _control?: NgControl) {\r\n this.nativeInputElement = this._elementRef.nativeElement;\r\n if (this._control != null) {\r\n this._control.valueAccessor = this;\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n onInput: (value: any) => void = (_: any) => ({});\r\n\r\n @HostListener('blur', ['$event.target.value'])\r\n onTouched: () => void = () => ({});\r\n\r\n ngOnInit() {\r\n const control = this._control.control;\r\n if (!control) {\r\n return;\r\n }\r\n\r\n control.setValidators(control.validator ? [control.validator, this.validate] : [this.validate]);\r\n control.updateValueAndValidity();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyMask();\r\n }\r\n\r\n writeValue(value: string) {\r\n if (!this.nativeInputElement) {\r\n return;\r\n }\r\n this._renderer.setProperty(this.nativeInputElement, 'value', value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void) {\r\n this._onChange = fn;\r\n const parser = this._inputMaskOptions?.parser;\r\n this.onInput = value => this._onChange(parser && value ? parser(value) : value);\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (!this.nativeInputElement) {\r\n return;\r\n }\r\n this._renderer.setProperty(this.nativeInputElement, 'disabled', isDisabled);\r\n }\r\n\r\n validate = (control: AbstractControl) => !control.value || !this.inputMaskPlugin || this.inputMaskPlugin?.isValid()\r\n ? null\r\n : {inputMask: true};\r\n\r\n private updateMask() {\r\n this.destroyMask();\r\n this.createMask();\r\n this.registerOnChange(this._onChange);\r\n }\r\n\r\n private createMask() {\r\n const element = this._elementRef.nativeElement;\r\n if (!this._platform.isBrowser || !element || this._inputMaskOptions === null || Object.keys(this._inputMaskOptions).length === 0) {\r\n return;\r\n }\r\n\r\n const {parser, ...options} = this._inputMaskOptions;\r\n this.inputMaskPlugin = this._ngZone.runOutsideAngular(() => new InputmaskConstructor(options).mask(element));\r\n\r\n const control = this._control.control;\r\n if (!control) {\r\n return;\r\n }\r\n setTimeout(() => control.updateValueAndValidity());\r\n }\r\n\r\n private destroyMask() {\r\n this.inputMaskPlugin?.remove();\r\n this.inputMaskPlugin = null;\r\n }\r\n\r\n // Required so that the template type checker can infer the type of the coerced inputs.\r\n static ngAcceptInputType_bbInputMask: InputMaskOptions<any> | null | undefined;\r\n\r\n}","import {formatDate, getCurrencySymbol, getLocaleNumberSymbol, getNumberOfCurrencyDigits, NumberSymbol} from '@angular/common';\r\nimport {createMask, CurrencyMaskOptions, DateMaskFormat} from './input-mask.interface';\r\nimport {Localize} from '@bravobit/bb-foundation/localize';\r\nimport {Injectable, Optional} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Masking {\r\n\r\n constructor(@Optional() private _localize?: Localize) {\r\n }\r\n\r\n date(format: DateMaskFormat = DateMaskFormat.YearMonthDay, separator: string = '-') {\r\n const dateParts = this.getDateParts(format);\r\n const inputFormat = dateParts.join(separator);\r\n const outputFormat = 'yyyy-MM-dd';\r\n\r\n const escape = /[.*+?^${}()\\/|[\\]\\\\]/g;\r\n const escapedSeparator = separator.replace(escape, '\\\\$&');\r\n\r\n const inputFormatRegexString = dateParts\r\n .map(item => `(?<${item}>[0-9]{${item?.length}})`)\r\n .join(escapedSeparator);\r\n const inputFormatRegex = new RegExp(`^${inputFormatRegexString}$`);\r\n\r\n return createMask({\r\n alias: 'datetime',\r\n inputFormat: inputFormat.toLowerCase(),\r\n outputFormat: outputFormat.toLowerCase(),\r\n nullable: false,\r\n inputmode: 'numeric',\r\n onBeforeMask: (initialValue: string) => {\r\n return initialValue ? formatDate(initialValue, inputFormat, 'en-US') : null;\r\n },\r\n onBeforePaste: (value: string) => {\r\n return value;\r\n },\r\n parser: (value: string) => {\r\n if (!value || typeof value !== 'string' || !inputFormatRegex.test(value)) {\r\n return null;\r\n }\r\n const matches = value.match(inputFormatRegex);\r\n const year = +matches?.groups?.['yyyy'];\r\n const month = +matches?.groups?.['MM'] - 1;\r\n const day = +matches?.groups?.['dd'];\r\n const date = new Date(year, month, day);\r\n\r\n return date instanceof Date && !isNaN(<any>date)\r\n ? formatDate(date, outputFormat, 'en-US')\r\n : null;\r\n }\r\n });\r\n }\r\n\r\n currency(code: string, options?: Partial<CurrencyMaskOptions>) {\r\n const locale = this._localize?.current?.locale ?? 'en';\r\n const symbol = options?.symbol ?? getCurrencySymbol(code, options?.symbolFormat ?? 'narrow', locale);\r\n\r\n const decimal = options?.decimalCharacter ?? getLocaleNumberSymbol(locale, NumberSymbol.CurrencyDecimal);\r\n const group = options?.groupCharacter ?? getLocaleNumberSymbol(locale, NumberSymbol.CurrencyGroup);\r\n const digits = options?.digits ?? getNumberOfCurrencyDigits(code);\r\n const spacer = options?.spacer ?? ' ';\r\n\r\n return createMask({\r\n alias: 'numeric',\r\n digits: digits,\r\n prefix: `${symbol}${spacer}`,\r\n radixPoint: decimal ?? '.',\r\n groupSeparator: group ?? ',',\r\n digitsOptional: options?.digitsOptional ?? false,\r\n autoUnmask: true,\r\n unmaskAsNumber: true,\r\n nullable: false,\r\n rightAlign: false,\r\n showMaskOnHover: false,\r\n showMaskOnFocus: false,\r\n inputmode: digits > 0 ? 'decimal' : 'numeric'\r\n });\r\n }\r\n\r\n private getDateParts(format: DateMaskFormat) {\r\n switch (format) {\r\n case DateMaskFormat.DayMonthYear:\r\n return ['dd', 'MM', 'yyyy'];\r\n case DateMaskFormat.MonthDayYear:\r\n return ['MM', 'dd', 'yyyy'];\r\n case DateMaskFormat.YearDayMonth:\r\n return ['yyyy', 'dd', 'MM'];\r\n case DateMaskFormat.YearMonthDay:\r\n default:\r\n return ['yyyy', 'MM', 'dd'];\r\n }\r\n }\r\n\r\n}\r\n","import {BbInputMask} from './input-mask.directive';\r\nimport {NgModule} from '@angular/core';\r\n\r\n@NgModule({\r\n declarations: [BbInputMask],\r\n exports: [BbInputMask]\r\n})\r\nexport class MaskingModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, HostBinding, Injectable, Optional, NgModule } from '@angular/core';
|
|
3
3
|
import { trigger, transition, query, group, style, stagger, animate } from '@angular/animations';
|
|
4
|
-
import * as i1 from '@bravobit/bb-foundation';
|
|
5
4
|
import * as i2 from '@angular/common';
|
|
6
5
|
import { CommonModule } from '@angular/common';
|
|
6
|
+
import * as i1 from '@bravobit/bb-foundation';
|
|
7
7
|
import * as i2$1 from '@bravobit/bb-foundation/localize';
|
|
8
8
|
import { LocalizeModule } from '@bravobit/bb-foundation/localize';
|
|
9
9
|
import { BehaviorSubject } from 'rxjs';
|
|
@@ -132,9 +132,9 @@ class BbNotificationsItem {
|
|
|
132
132
|
this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
136
|
-
BbNotificationsItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
+
BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsItem, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
BbNotificationsItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: { notification: "notification", dismissButtonText: "dismissButtonText" }, host: { attributes: { "role": "alert" }, properties: { "class": "this.getClass" } }, viewQueries: [{ propertyName: "progressElementRef", first: true, predicate: ["progress"], descendants: true }], ngImport: i0, template: "<div class=\"notification-content-wrapper\">\r\n <!--\r\n The icon for the notification.\r\n\r\n The icon is reflected by the type of the\r\n notification. Same goes for the color and\r\n background-color.\r\n -->\r\n <div [style.color]=\"notification?.color\"\r\n [style.background-color]=\"notification?.backgroundColor\"\r\n class=\"notification-icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 16 19.5\"\r\n class=\"notification-icon\">\r\n <path\r\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\r\n </path>\r\n </svg>\r\n\r\n <!--\r\n The circular progress for the notification.\r\n\r\n The progress is only visible when a timeout is\r\n set. The progress adapts to the time remaining\r\n for the notification.\r\n -->\r\n <svg *ngIf=\"notification?.timeout > 0\"\r\n class=\"notification-progress-ring\"\r\n viewBox=\"0 0 40 40\"\r\n role=\"progressbar\">\r\n <circle #progress\r\n [attr.stroke-dasharray]=\"progressStrokeArray\"\r\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\r\n [style.stroke]=\"notification?.color\"\r\n class=\"notification-progress-circle\"\r\n stroke-width=\"2\"\r\n fill=\"transparent\"\r\n r=\"19\"\r\n cx=\"20\"\r\n cy=\"20\">\r\n </circle>\r\n </svg>\r\n </div>\r\n\r\n <!--\r\n The content for the notification.\r\n\r\n This displays a string or a template based\r\n on the given parameter by the user.\r\n -->\r\n <div class=\"notification-content\">\r\n <ng-container *ngIf=\"isContentString; else templateContent\"\r\n [ngSwitch]=\"notification?.localize\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ notification?.content }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--\r\n The actions of the notification.\r\n\r\n All actions are displayed here and are\r\n based on the actions array the user provided.\r\n-->\r\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\r\n class=\"notification-actions\">\r\n <button *ngFor=\"let action of notification?.actions\"\r\n (click)=\"callActionAndDestroy(notification, action)\"\r\n type=\"button\"\r\n [class.destructive]=\"action?.type === 'cancel'\"\r\n class=\"notification-actions-button\">\r\n <span [ngSwitch]=\"notification?.localize\"\r\n class=\"notification-actions-button-highlight\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ action?.title | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ action?.title }}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button *ngIf=\"notification?.dismiss\"\r\n (click)=\"notification?.destroy()\"\r\n class=\"notification-actions-button destructive\"\r\n type=\"button\">\r\n <span class=\"notification-actions-button-highlight\">\r\n {{ notification?.dismissText || dismissButtonText }}\r\n </span>\r\n </button>\r\n</div>\r\n\r\n<!--\r\n The outlet for the notification content template ref.\r\n-->\r\n<ng-template #templateContent>\r\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\r\n</ng-template>\r\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\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: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i2$1.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsItem, decorators: [{
|
|
138
138
|
type: Component,
|
|
139
139
|
args: [{ selector: 'bb-notifications-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
|
|
140
140
|
'role': 'alert'
|
|
@@ -176,9 +176,9 @@ class BbNotificationsList {
|
|
|
176
176
|
return { vertical: y || null, horizontal: x || null };
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
180
|
-
BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
179
|
+
BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
|
|
180
|
+
BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: BbNotificationsList, selector: "bb-notifications-list", host: { attributes: { "role": "list" }, properties: { "style.justify-content": "this.horizontalPosition", "style.align-items": "this.verticalPosition" }, classAttribute: "bb-notifications-list" }, ngImport: i0, template: "<!--\r\n The notifications list.\r\n\r\n The list provides the animation effect for the\r\n incoming notifications.\r\n-->\r\n<div *ngIf=\"data?.data | async as notifications\"\r\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\r\n class=\"notifications-list-wrapper\">\r\n <!--\r\n The loop for the notifications.\r\n\r\n All notifications will be displayed here. They\r\n are wrapped within a wrapper which separates them.\r\n -->\r\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\r\n class=\"notifications-item-wrapper\">\r\n <bb-notifications-item [notification]=\"notification\"\r\n [dismissButtonText]=\"data?.dismissText\">\r\n </bb-notifications-item>\r\n </div>\r\n</div>\r\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\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: BbNotificationsItem, selector: "bb-notifications-item", inputs: ["notification", "dismissButtonText"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [notificationAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsList, decorators: [{
|
|
182
182
|
type: Component,
|
|
183
183
|
args: [{ selector: 'bb-notifications-list', animations: [notificationAnimation], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
|
|
184
184
|
'class': 'bb-notifications-list',
|
|
@@ -335,9 +335,9 @@ class Notifications {
|
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
|
-
Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
339
|
-
Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
340
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
338
|
+
Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Notifications, deps: [{ token: i0.Injector }, { token: i1.Platform }, { token: i0.ApplicationRef }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
339
|
+
Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Notifications });
|
|
340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Notifications, decorators: [{
|
|
341
341
|
type: Injectable
|
|
342
342
|
}], ctorParameters: function () {
|
|
343
343
|
return [{ type: i0.Injector }, { type: i1.Platform }, { type: i0.ApplicationRef }, { type: i2$1.Localize, decorators: [{
|
|
@@ -358,10 +358,10 @@ class NotificationsModule {
|
|
|
358
358
|
};
|
|
359
359
|
}
|
|
360
360
|
}
|
|
361
|
-
NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
362
|
-
NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
363
|
-
NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
364
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
361
|
+
NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
362
|
+
NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
|
|
363
|
+
NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, imports: [CommonModule, LocalizeModule] });
|
|
364
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, decorators: [{
|
|
365
365
|
type: NgModule,
|
|
366
366
|
args: [{
|
|
367
367
|
imports: [CommonModule, LocalizeModule],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-notifications.mjs","sources":["../../../projects/bb-foundation/notifications/src/lib/notifications.interfaces.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.animations.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-item/notifications-item.component.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-item/notifications-item.component.html","../../../projects/bb-foundation/notifications/src/lib/notifications-list/notifications-list.component.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-list/notifications-list.component.html","../../../projects/bb-foundation/notifications/src/lib/notifications.injector.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.service.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.module.ts","../../../projects/bb-foundation/notifications/src/bravobit-bb-foundation-notifications.ts"],"sourcesContent":["import {TemplateRef} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\n\r\nexport interface Notification {\r\n content: string | TemplateRef<any>;\r\n\r\n id?: string;\r\n\r\n timeout?: number;\r\n localize?: boolean;\r\n dismiss?: boolean;\r\n dismissText?: string;\r\n data?: { [key: string]: any };\r\n type?: NotificationType;\r\n actions?: NotificationAction[];\r\n\r\n color?: string;\r\n backgroundColor?: string;\r\n\r\n destroy?: () => void;\r\n}\r\n\r\nexport interface NotificationAction {\r\n title: string;\r\n callback?: () => any;\r\n type?: 'default' | 'cancel';\r\n}\r\n\r\nexport enum NotificationType {\r\n Success = 'success',\r\n Error = 'error',\r\n Warning = 'warning',\r\n Info = 'info',\r\n Custom = 'custom'\r\n}\r\n\r\nexport class NotificationsConfig {\r\n mode?: 'append' | 'prepend';\r\n position?: NotificationsPosition;\r\n timeout?: number;\r\n dismiss?: boolean;\r\n localize?: boolean;\r\n dismissText?: string;\r\n}\r\n\r\nexport enum NotificationsPosition {\r\n TopRight = 'flex-start|flex-end',\r\n BottomRight = 'flex-end|flex-end',\r\n TopLeft = 'flex-start|flex-start',\r\n BottomLeft = 'flex-end|flex-start'\r\n}\r\n\r\nexport class NotificationsData {\r\n data: Observable<Notification[]>;\r\n dismissText: string;\r\n position: NotificationsPosition;\r\n}\r\n","import {animate, group, query, stagger, style, transition, trigger} from '@angular/animations';\r\n\r\nconst s = '250ms cubic-bezier(0, 0, .2, 1)';\r\nconst l = '400ms cubic-bezier(0, 0, .2, 1)';\r\n\r\nexport const notificationAnimation = trigger('notificationListAnimation', [\r\n transition('* => *', [\r\n query(':enter', group([\r\n // 1. Set the initial state.\r\n style({height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'}),\r\n // 2. Start the animation to show the item.\r\n stagger(0, [\r\n animate(s, style({height: '*'})),\r\n animate(l, style({opacity: 1, transform: 'translateX(0) scale(0.95)'})),\r\n animate(s, style({transform: 'translateX(0) scale(1)'}))\r\n ])\r\n ]), {optional: true}),\r\n\r\n query(':leave', group([\r\n // 1. Set the initial state.\r\n style({height: '*', opacity: 1, transform: 'translateX(0) scale(1)'}),\r\n // 2. Start the animation to hide the item.\r\n stagger(0, [\r\n animate(s, style({transform: 'translateX(0) scale(0.95)'})),\r\n animate(l, style({opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'})),\r\n animate(s, style({height: 0}))\r\n ])\r\n ]), {optional: true})\r\n ])\r\n]);\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {Notification, NotificationAction} from '../notifications.interfaces';\r\nimport {Platform} from '@bravobit/bb-foundation';\r\n\r\n@Component({\r\n selector: 'bb-notifications-item',\r\n templateUrl: './notifications-item.component.html',\r\n styleUrls: ['./notifications-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n host: {\r\n 'role': 'alert'\r\n }\r\n})\r\nexport class BbNotificationsItem implements OnInit, OnDestroy {\r\n\r\n // Inputs.\r\n @Input() notification: Notification;\r\n @Input() dismissButtonText: string | null;\r\n\r\n // Elements.\r\n @ViewChild('progress') progressElementRef: ElementRef;\r\n\r\n // Data.\r\n private _progress = 0;\r\n private _count = 0;\r\n\r\n // Helper variables.\r\n private _steps: number;\r\n private _speed: number;\r\n private _timer: number;\r\n private _startTime: number;\r\n private _difference: number;\r\n\r\n // Data.\r\n private readonly _radius = 19;\r\n private readonly _circumference = this._radius * 2 * Math.PI;\r\n\r\n @HostBinding('class') get getClass() {\r\n return `bb-notifications-item ${this.notification.type}`;\r\n }\r\n\r\n constructor(private _zone: NgZone,\r\n private _platform: Platform,\r\n private _changeDetection: ChangeDetectorRef) {\r\n }\r\n\r\n get progressStrokeArray() {\r\n const value = Math.floor(this._circumference);\r\n return `${value}, ${value}`;\r\n }\r\n\r\n get progressStrokeOffset() {\r\n return Math.floor(this._circumference - this._progress / 100 * this._circumference);\r\n }\r\n\r\n get isContentString() {\r\n return typeof this.notification.content === 'string';\r\n }\r\n\r\n ngOnInit() {\r\n // Check if the notification timeout is not 0 and the platform is a browser.\r\n if (this.notification.timeout <= 0 || !this._platform.isBrowser) {\r\n this.notification.dismiss = true;\r\n return;\r\n }\r\n\r\n // Start the timeout.\r\n this.startTimeout();\r\n }\r\n\r\n ngOnDestroy() {\r\n // Clear the timeout if it was set.\r\n this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);\r\n }\r\n\r\n callActionAndDestroy = (notification: Notification, action: NotificationAction) => {\r\n // Perform the callback (if it exists).\r\n action && action.callback && action.callback();\r\n\r\n // Call the destroy method (if it exists).\r\n notification && notification.destroy && notification.destroy();\r\n };\r\n\r\n private startTimeout() {\r\n // Calculate the steps of the timeout.\r\n this._steps = this.notification.timeout / 10;\r\n\r\n // Calculate the speed of the timeout.\r\n this._speed = this.notification.timeout / this._steps;\r\n\r\n // Get the start time.\r\n this._startTime = Date.now();\r\n\r\n // Set a new timer outside of Angular.\r\n this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));\r\n }\r\n\r\n private instance = () => {\r\n // Calculate the difference.\r\n this._difference = (Date.now() - this._startTime) - (this._count * this._speed);\r\n\r\n // Add up the count.\r\n if (this._count++ === this._steps) {\r\n this.notification.destroy();\r\n }\r\n\r\n // Add the steps to the progress.\r\n this._progress += 100 / this._steps;\r\n\r\n // Set a new timer.\r\n this._timer = this.setTimeout(this.instance, this._speed - this._difference);\r\n\r\n // Run a new change detection cycle.\r\n this._zone.run(() => this._changeDetection.detectChanges());\r\n };\r\n\r\n private setTimeout = (method: () => void, timeout: number) => {\r\n // Check if the window and method exist.\r\n if (!window || !window.setTimeout) {\r\n return null;\r\n }\r\n\r\n return window.setTimeout(method, timeout);\r\n };\r\n\r\n}\r\n","<div class=\"notification-content-wrapper\">\r\n <!--\r\n The icon for the notification.\r\n\r\n The icon is reflected by the type of the\r\n notification. Same goes for the color and\r\n background-color.\r\n -->\r\n <div [style.color]=\"notification?.color\"\r\n [style.background-color]=\"notification?.backgroundColor\"\r\n class=\"notification-icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 16 19.5\"\r\n class=\"notification-icon\">\r\n <path\r\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\r\n </path>\r\n </svg>\r\n\r\n <!--\r\n The circular progress for the notification.\r\n\r\n The progress is only visible when a timeout is\r\n set. The progress adapts to the time remaining\r\n for the notification.\r\n -->\r\n <svg *ngIf=\"notification?.timeout > 0\"\r\n class=\"notification-progress-ring\"\r\n viewBox=\"0 0 40 40\"\r\n role=\"progressbar\">\r\n <circle #progress\r\n [attr.stroke-dasharray]=\"progressStrokeArray\"\r\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\r\n [style.stroke]=\"notification?.color\"\r\n class=\"notification-progress-circle\"\r\n stroke-width=\"2\"\r\n fill=\"transparent\"\r\n r=\"19\"\r\n cx=\"20\"\r\n cy=\"20\">\r\n </circle>\r\n </svg>\r\n </div>\r\n\r\n <!--\r\n The content for the notification.\r\n\r\n This displays a string or a template based\r\n on the given parameter by the user.\r\n -->\r\n <div class=\"notification-content\">\r\n <ng-container *ngIf=\"isContentString; else templateContent\"\r\n [ngSwitch]=\"notification?.localize\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ notification?.content }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--\r\n The actions of the notification.\r\n\r\n All actions are displayed here and are\r\n based on the actions array the user provided.\r\n-->\r\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\r\n class=\"notification-actions\">\r\n <button *ngFor=\"let action of notification?.actions\"\r\n (click)=\"callActionAndDestroy(notification, action)\"\r\n type=\"button\"\r\n [class.destructive]=\"action?.type === 'cancel'\"\r\n class=\"notification-actions-button\">\r\n <span [ngSwitch]=\"notification?.localize\"\r\n class=\"notification-actions-button-highlight\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ action?.title | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ action?.title }}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button *ngIf=\"notification?.dismiss\"\r\n (click)=\"notification?.destroy()\"\r\n class=\"notification-actions-button destructive\"\r\n type=\"button\">\r\n <span class=\"notification-actions-button-highlight\">\r\n {{ notification?.dismissText || dismissButtonText }}\r\n </span>\r\n </button>\r\n</div>\r\n\r\n<!--\r\n The outlet for the notification content template ref.\r\n-->\r\n<ng-template #templateContent>\r\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\r\n</ng-template>\r\n","import {Notification, NotificationsData, NotificationsPosition} from '../notifications.interfaces';\r\nimport {ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation} from '@angular/core';\r\nimport {notificationAnimation} from '../notifications.animations';\r\n\r\n@Component({\r\n selector: 'bb-notifications-list',\r\n templateUrl: './notifications-list.component.html',\r\n styleUrls: ['./notifications-list.component.scss'],\r\n animations: [notificationAnimation],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n host: {\r\n 'class': 'bb-notifications-list',\r\n 'role': 'list'\r\n }\r\n})\r\nexport class BbNotificationsList {\r\n\r\n // Data.\r\n position: NotificationsPosition | null = null;\r\n\r\n // Track by function.\r\n trackByFn = (_, item: Notification) => item.id;\r\n\r\n constructor(public data: NotificationsData) {\r\n }\r\n\r\n @HostBinding('style.justify-content')\r\n get horizontalPosition() {\r\n return this.location.horizontal;\r\n }\r\n\r\n @HostBinding('style.align-items')\r\n get verticalPosition() {\r\n return this.location.vertical;\r\n }\r\n\r\n get animation() {\r\n const to = this.horizontalPosition === 'flex-start'\r\n ? -50\r\n : 50;\r\n\r\n return {to};\r\n }\r\n\r\n private get location() {\r\n const [y, x] = (this.data.position || '').split('|');\r\n\r\n return {vertical: y || null, horizontal: x || null};\r\n }\r\n\r\n}\r\n","<!--\r\n The notifications list.\r\n\r\n The list provides the animation effect for the\r\n incoming notifications.\r\n-->\r\n<div *ngIf=\"data?.data | async as notifications\"\r\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\r\n class=\"notifications-list-wrapper\">\r\n <!--\r\n The loop for the notifications.\r\n\r\n All notifications will be displayed here. They\r\n are wrapped within a wrapper which separates them.\r\n -->\r\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\r\n class=\"notifications-item-wrapper\">\r\n <bb-notifications-item [notification]=\"notification\"\r\n [dismissButtonText]=\"data?.dismissText\">\r\n </bb-notifications-item>\r\n </div>\r\n</div>\r\n","import {InjectionToken, Injector, Type} from '@angular/core';\r\n\r\nexport class NotificationsInjector implements Injector {\r\n\r\n constructor(private _parentInjector: Injector,\r\n private _additionalTokens: WeakMap<any, any>) {\r\n }\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T;\r\n get(token: any, notFoundValue?: any);\r\n get(token: any, notFoundValue?: any) {\r\n // First check if the additional token\r\n // contains the token.\r\n const value = this._additionalTokens.get(token);\r\n\r\n // If that value exists return it.\r\n if (value) {\r\n return value;\r\n }\r\n\r\n // Else query the parent injector.\r\n return this._parentInjector.get<any>(token, notFoundValue);\r\n }\r\n\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Injectable,\r\n Injector,\r\n Optional,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport {\r\n Notification,\r\n NotificationAction,\r\n NotificationsPosition,\r\n NotificationsConfig,\r\n NotificationType,\r\n NotificationsData\r\n} from './notifications.interfaces';\r\nimport {BbNotificationsList} from './notifications-list/notifications-list.component';\r\nimport {NotificationsInjector} from './notifications.injector';\r\nimport {Localize} from '@bravobit/bb-foundation/localize';\r\nimport {Platform} from '@bravobit/bb-foundation';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {share} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class Notifications {\r\n\r\n // Reference to the list.\r\n private _ref: ComponentRef<BbNotificationsList>;\r\n\r\n // The default settings for the notifications.\r\n private readonly _defaultMode: 'prepend' | 'append';\r\n private readonly _defaultTimeout: number;\r\n private readonly _defaultLocalize: boolean;\r\n private readonly _defaultDismiss: boolean;\r\n private readonly _defaultDismissText: string;\r\n private readonly _defaultPosition: NotificationsPosition;\r\n\r\n // The data containing the notifications.\r\n private _notifications$ = new BehaviorSubject<Notification[]>([]);\r\n\r\n constructor(private _injector: Injector,\r\n private _platform: Platform,\r\n private _applicationRef: ApplicationRef,\r\n @Optional() private _localize: Localize,\r\n @Optional() private _config: NotificationsConfig,\r\n private _componentFactoryResolver: ComponentFactoryResolver) {\r\n // Get the config.\r\n const config = this._config || {};\r\n\r\n // Set the config.\r\n this._defaultMode = this.getProperty(config.mode, 'prepend');\r\n this._defaultTimeout = this.getProperty(config.timeout, 8000);\r\n this._defaultLocalize = this.getProperty(config.localize, false);\r\n this._defaultDismiss = this.getProperty(config.dismiss, true);\r\n this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');\r\n this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);\r\n\r\n // Create the element that holds all notifications.\r\n this.createElement();\r\n }\r\n\r\n success(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Success});\r\n }\r\n\r\n error(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Error});\r\n }\r\n\r\n warn(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Warning});\r\n }\r\n\r\n info(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Info});\r\n }\r\n\r\n create(notification: Notification) {\r\n // Compose a new notification item.\r\n const item = this.compose(notification);\r\n\r\n // Add the destroy function to the notification.\r\n item.destroy = () => this.pull(item);\r\n\r\n // Add the notification to the list\r\n // and return the item.\r\n return this.push(item);\r\n }\r\n\r\n private push(notification: Notification) {\r\n // Get the current list.\r\n const oldList = this._notifications$.getValue();\r\n\r\n // Check which mode is activated.\r\n let newList: Notification[];\r\n switch (this._defaultMode) {\r\n case 'append':\r\n newList = [...oldList, notification];\r\n break;\r\n case 'prepend':\r\n default:\r\n newList = [notification, ...oldList];\r\n }\r\n\r\n // Push the new notifications.\r\n this._notifications$.next(newList);\r\n\r\n // Return the notification for further use.\r\n return notification;\r\n }\r\n\r\n private pull(notification: Notification) {\r\n // Get the current list.\r\n const newList = this._notifications$\r\n .getValue()\r\n .filter(item => item.id !== notification.id);\r\n\r\n // Push a new list.\r\n this._notifications$.next(newList);\r\n }\r\n\r\n private compose(notification: Notification) {\r\n // Attach a random id to the notification.\r\n notification.id = Math.random().toString(36).substr(2, 10);\r\n\r\n // Set all properties.\r\n notification.type = this.getProperty(notification.type, NotificationType.Custom);\r\n notification.content = this.getProperty(notification.content, null);\r\n notification.data = this.getProperty(notification.data, {});\r\n notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);\r\n notification.localize = this.getProperty(notification.localize, this._defaultLocalize);\r\n notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);\r\n\r\n // Dismiss text localization.\r\n const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);\r\n notification.dismissText = this._defaultLocalize && this._localize\r\n ? this._localize.translate(dismissText)\r\n : dismissText;\r\n\r\n // Return the composed notification.\r\n return notification;\r\n }\r\n\r\n private createElement() {\r\n // Create a map with the config.\r\n const map = new WeakMap();\r\n map.set(NotificationsData, {\r\n data: this._notifications$.pipe(share()),\r\n dismissText: this._defaultDismissText,\r\n position: this._defaultPosition\r\n });\r\n\r\n // Create a custom injector.\r\n const notificationsInjector = new NotificationsInjector(this._injector, map);\r\n\r\n // Create the notification list and\r\n // get a reference to the component.\r\n this._ref = this._componentFactoryResolver\r\n .resolveComponentFactory(BbNotificationsList)\r\n .create(notificationsInjector);\r\n\r\n // Detect the changes.\r\n this._ref.changeDetectorRef.detectChanges();\r\n\r\n // Attach the component's view to the application\r\n // so that the change detection will run properly.\r\n this._applicationRef.attachView(this._ref.hostView);\r\n\r\n // If the platform is not a browser return.\r\n if (!this._platform.isBrowser) {\r\n return;\r\n }\r\n\r\n try {\r\n // Append the element to the DOM.\r\n document.body.appendChild(this._ref.location.nativeElement);\r\n } catch {\r\n // Don't do anything, because it must've failed.\r\n }\r\n }\r\n\r\n private getProperty = (property: any, defaultValue: any) => {\r\n return typeof property === 'undefined'\r\n ? defaultValue\r\n : property;\r\n };\r\n\r\n}\r\n","import {BbNotificationsList} from './notifications-list/notifications-list.component';\r\nimport {BbNotificationsItem} from './notifications-item/notifications-item.component';\r\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\r\nimport {NotificationsConfig} from './notifications.interfaces';\r\nimport {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {Notifications} from './notifications.service';\r\nimport {CommonModule} from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule, LocalizeModule],\r\n declarations: [BbNotificationsList, BbNotificationsItem]\r\n})\r\nexport class NotificationsModule {\r\n\r\n static forRoot(config?: NotificationsConfig): ModuleWithProviders<NotificationsModule> {\r\n return {\r\n ngModule: NotificationsModule,\r\n providers: [\r\n {provide: NotificationsConfig, useValue: config},\r\n Notifications\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1.NotificationsData","i2.BbNotificationsItem","i2","i3.NotificationsConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-notifications.mjs","sources":["../../../projects/bb-foundation/notifications/src/lib/notifications.interfaces.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.animations.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-item/notifications-item.component.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-item/notifications-item.component.html","../../../projects/bb-foundation/notifications/src/lib/notifications-list/notifications-list.component.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-list/notifications-list.component.html","../../../projects/bb-foundation/notifications/src/lib/notifications.injector.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.service.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.module.ts","../../../projects/bb-foundation/notifications/src/bravobit-bb-foundation-notifications.ts"],"sourcesContent":["import {TemplateRef} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\n\r\nexport interface Notification {\r\n content: string | TemplateRef<any>;\r\n\r\n id?: string;\r\n\r\n timeout?: number;\r\n localize?: boolean;\r\n dismiss?: boolean;\r\n dismissText?: string;\r\n data?: { [key: string]: any };\r\n type?: NotificationType;\r\n actions?: NotificationAction[];\r\n\r\n color?: string;\r\n backgroundColor?: string;\r\n\r\n destroy?: () => void;\r\n}\r\n\r\nexport interface NotificationAction {\r\n title: string;\r\n callback?: () => any;\r\n type?: 'default' | 'cancel';\r\n}\r\n\r\nexport enum NotificationType {\r\n Success = 'success',\r\n Error = 'error',\r\n Warning = 'warning',\r\n Info = 'info',\r\n Custom = 'custom'\r\n}\r\n\r\nexport class NotificationsConfig {\r\n mode?: 'append' | 'prepend';\r\n position?: NotificationsPosition;\r\n timeout?: number;\r\n dismiss?: boolean;\r\n localize?: boolean;\r\n dismissText?: string;\r\n}\r\n\r\nexport enum NotificationsPosition {\r\n TopRight = 'flex-start|flex-end',\r\n BottomRight = 'flex-end|flex-end',\r\n TopLeft = 'flex-start|flex-start',\r\n BottomLeft = 'flex-end|flex-start'\r\n}\r\n\r\nexport class NotificationsData {\r\n data: Observable<Notification[]>;\r\n dismissText: string;\r\n position: NotificationsPosition;\r\n}\r\n","import {animate, group, query, stagger, style, transition, trigger} from '@angular/animations';\r\n\r\nconst s = '250ms cubic-bezier(0, 0, .2, 1)';\r\nconst l = '400ms cubic-bezier(0, 0, .2, 1)';\r\n\r\nexport const notificationAnimation = trigger('notificationListAnimation', [\r\n transition('* => *', [\r\n query(':enter', group([\r\n // 1. Set the initial state.\r\n style({height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'}),\r\n // 2. Start the animation to show the item.\r\n stagger(0, [\r\n animate(s, style({height: '*'})),\r\n animate(l, style({opacity: 1, transform: 'translateX(0) scale(0.95)'})),\r\n animate(s, style({transform: 'translateX(0) scale(1)'}))\r\n ])\r\n ]), {optional: true}),\r\n\r\n query(':leave', group([\r\n // 1. Set the initial state.\r\n style({height: '*', opacity: 1, transform: 'translateX(0) scale(1)'}),\r\n // 2. Start the animation to hide the item.\r\n stagger(0, [\r\n animate(s, style({transform: 'translateX(0) scale(0.95)'})),\r\n animate(l, style({opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'})),\r\n animate(s, style({height: 0}))\r\n ])\r\n ]), {optional: true})\r\n ])\r\n]);\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {Notification, NotificationAction} from '../notifications.interfaces';\r\nimport {Platform} from '@bravobit/bb-foundation';\r\n\r\n@Component({\r\n selector: 'bb-notifications-item',\r\n templateUrl: './notifications-item.component.html',\r\n styleUrls: ['./notifications-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n host: {\r\n 'role': 'alert'\r\n }\r\n})\r\nexport class BbNotificationsItem implements OnInit, OnDestroy {\r\n\r\n // Inputs.\r\n @Input() notification: Notification;\r\n @Input() dismissButtonText: string | null;\r\n\r\n // Elements.\r\n @ViewChild('progress') progressElementRef: ElementRef;\r\n\r\n // Data.\r\n private _progress = 0;\r\n private _count = 0;\r\n\r\n // Helper variables.\r\n private _steps: number;\r\n private _speed: number;\r\n private _timer: number;\r\n private _startTime: number;\r\n private _difference: number;\r\n\r\n // Data.\r\n private readonly _radius = 19;\r\n private readonly _circumference = this._radius * 2 * Math.PI;\r\n\r\n @HostBinding('class') get getClass() {\r\n return `bb-notifications-item ${this.notification.type}`;\r\n }\r\n\r\n constructor(private _zone: NgZone,\r\n private _platform: Platform,\r\n private _changeDetection: ChangeDetectorRef) {\r\n }\r\n\r\n get progressStrokeArray() {\r\n const value = Math.floor(this._circumference);\r\n return `${value}, ${value}`;\r\n }\r\n\r\n get progressStrokeOffset() {\r\n return Math.floor(this._circumference - this._progress / 100 * this._circumference);\r\n }\r\n\r\n get isContentString() {\r\n return typeof this.notification.content === 'string';\r\n }\r\n\r\n ngOnInit() {\r\n // Check if the notification timeout is not 0 and the platform is a browser.\r\n if (this.notification.timeout <= 0 || !this._platform.isBrowser) {\r\n this.notification.dismiss = true;\r\n return;\r\n }\r\n\r\n // Start the timeout.\r\n this.startTimeout();\r\n }\r\n\r\n ngOnDestroy() {\r\n // Clear the timeout if it was set.\r\n this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);\r\n }\r\n\r\n callActionAndDestroy = (notification: Notification, action: NotificationAction) => {\r\n // Perform the callback (if it exists).\r\n action && action.callback && action.callback();\r\n\r\n // Call the destroy method (if it exists).\r\n notification && notification.destroy && notification.destroy();\r\n };\r\n\r\n private startTimeout() {\r\n // Calculate the steps of the timeout.\r\n this._steps = this.notification.timeout / 10;\r\n\r\n // Calculate the speed of the timeout.\r\n this._speed = this.notification.timeout / this._steps;\r\n\r\n // Get the start time.\r\n this._startTime = Date.now();\r\n\r\n // Set a new timer outside of Angular.\r\n this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));\r\n }\r\n\r\n private instance = () => {\r\n // Calculate the difference.\r\n this._difference = (Date.now() - this._startTime) - (this._count * this._speed);\r\n\r\n // Add up the count.\r\n if (this._count++ === this._steps) {\r\n this.notification.destroy();\r\n }\r\n\r\n // Add the steps to the progress.\r\n this._progress += 100 / this._steps;\r\n\r\n // Set a new timer.\r\n this._timer = this.setTimeout(this.instance, this._speed - this._difference);\r\n\r\n // Run a new change detection cycle.\r\n this._zone.run(() => this._changeDetection.detectChanges());\r\n };\r\n\r\n private setTimeout = (method: () => void, timeout: number) => {\r\n // Check if the window and method exist.\r\n if (!window || !window.setTimeout) {\r\n return null;\r\n }\r\n\r\n return window.setTimeout(method, timeout);\r\n };\r\n\r\n}\r\n","<div class=\"notification-content-wrapper\">\r\n <!--\r\n The icon for the notification.\r\n\r\n The icon is reflected by the type of the\r\n notification. Same goes for the color and\r\n background-color.\r\n -->\r\n <div [style.color]=\"notification?.color\"\r\n [style.background-color]=\"notification?.backgroundColor\"\r\n class=\"notification-icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 16 19.5\"\r\n class=\"notification-icon\">\r\n <path\r\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\r\n </path>\r\n </svg>\r\n\r\n <!--\r\n The circular progress for the notification.\r\n\r\n The progress is only visible when a timeout is\r\n set. The progress adapts to the time remaining\r\n for the notification.\r\n -->\r\n <svg *ngIf=\"notification?.timeout > 0\"\r\n class=\"notification-progress-ring\"\r\n viewBox=\"0 0 40 40\"\r\n role=\"progressbar\">\r\n <circle #progress\r\n [attr.stroke-dasharray]=\"progressStrokeArray\"\r\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\r\n [style.stroke]=\"notification?.color\"\r\n class=\"notification-progress-circle\"\r\n stroke-width=\"2\"\r\n fill=\"transparent\"\r\n r=\"19\"\r\n cx=\"20\"\r\n cy=\"20\">\r\n </circle>\r\n </svg>\r\n </div>\r\n\r\n <!--\r\n The content for the notification.\r\n\r\n This displays a string or a template based\r\n on the given parameter by the user.\r\n -->\r\n <div class=\"notification-content\">\r\n <ng-container *ngIf=\"isContentString; else templateContent\"\r\n [ngSwitch]=\"notification?.localize\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ notification?.content }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--\r\n The actions of the notification.\r\n\r\n All actions are displayed here and are\r\n based on the actions array the user provided.\r\n-->\r\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\r\n class=\"notification-actions\">\r\n <button *ngFor=\"let action of notification?.actions\"\r\n (click)=\"callActionAndDestroy(notification, action)\"\r\n type=\"button\"\r\n [class.destructive]=\"action?.type === 'cancel'\"\r\n class=\"notification-actions-button\">\r\n <span [ngSwitch]=\"notification?.localize\"\r\n class=\"notification-actions-button-highlight\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ action?.title | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ action?.title }}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button *ngIf=\"notification?.dismiss\"\r\n (click)=\"notification?.destroy()\"\r\n class=\"notification-actions-button destructive\"\r\n type=\"button\">\r\n <span class=\"notification-actions-button-highlight\">\r\n {{ notification?.dismissText || dismissButtonText }}\r\n </span>\r\n </button>\r\n</div>\r\n\r\n<!--\r\n The outlet for the notification content template ref.\r\n-->\r\n<ng-template #templateContent>\r\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\r\n</ng-template>\r\n","import {Notification, NotificationsData, NotificationsPosition} from '../notifications.interfaces';\r\nimport {ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation} from '@angular/core';\r\nimport {notificationAnimation} from '../notifications.animations';\r\n\r\n@Component({\r\n selector: 'bb-notifications-list',\r\n templateUrl: './notifications-list.component.html',\r\n styleUrls: ['./notifications-list.component.scss'],\r\n animations: [notificationAnimation],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n host: {\r\n 'class': 'bb-notifications-list',\r\n 'role': 'list'\r\n }\r\n})\r\nexport class BbNotificationsList {\r\n\r\n // Data.\r\n position: NotificationsPosition | null = null;\r\n\r\n // Track by function.\r\n trackByFn = (_, item: Notification) => item.id;\r\n\r\n constructor(public data: NotificationsData) {\r\n }\r\n\r\n @HostBinding('style.justify-content')\r\n get horizontalPosition() {\r\n return this.location.horizontal;\r\n }\r\n\r\n @HostBinding('style.align-items')\r\n get verticalPosition() {\r\n return this.location.vertical;\r\n }\r\n\r\n get animation() {\r\n const to = this.horizontalPosition === 'flex-start'\r\n ? -50\r\n : 50;\r\n\r\n return {to};\r\n }\r\n\r\n private get location() {\r\n const [y, x] = (this.data.position || '').split('|');\r\n\r\n return {vertical: y || null, horizontal: x || null};\r\n }\r\n\r\n}\r\n","<!--\r\n The notifications list.\r\n\r\n The list provides the animation effect for the\r\n incoming notifications.\r\n-->\r\n<div *ngIf=\"data?.data | async as notifications\"\r\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\r\n class=\"notifications-list-wrapper\">\r\n <!--\r\n The loop for the notifications.\r\n\r\n All notifications will be displayed here. They\r\n are wrapped within a wrapper which separates them.\r\n -->\r\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\r\n class=\"notifications-item-wrapper\">\r\n <bb-notifications-item [notification]=\"notification\"\r\n [dismissButtonText]=\"data?.dismissText\">\r\n </bb-notifications-item>\r\n </div>\r\n</div>\r\n","import {InjectionToken, Injector, Type} from '@angular/core';\r\n\r\nexport class NotificationsInjector implements Injector {\r\n\r\n constructor(private _parentInjector: Injector,\r\n private _additionalTokens: WeakMap<any, any>) {\r\n }\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T;\r\n get(token: any, notFoundValue?: any);\r\n get(token: any, notFoundValue?: any) {\r\n // First check if the additional token\r\n // contains the token.\r\n const value = this._additionalTokens.get(token);\r\n\r\n // If that value exists return it.\r\n if (value) {\r\n return value;\r\n }\r\n\r\n // Else query the parent injector.\r\n return this._parentInjector.get<any>(token, notFoundValue);\r\n }\r\n\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Injectable,\r\n Injector,\r\n Optional,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport {\r\n Notification,\r\n NotificationAction,\r\n NotificationsPosition,\r\n NotificationsConfig,\r\n NotificationType,\r\n NotificationsData\r\n} from './notifications.interfaces';\r\nimport {BbNotificationsList} from './notifications-list/notifications-list.component';\r\nimport {NotificationsInjector} from './notifications.injector';\r\nimport {Localize} from '@bravobit/bb-foundation/localize';\r\nimport {Platform} from '@bravobit/bb-foundation';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {share} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class Notifications {\r\n\r\n // Reference to the list.\r\n private _ref: ComponentRef<BbNotificationsList>;\r\n\r\n // The default settings for the notifications.\r\n private readonly _defaultMode: 'prepend' | 'append';\r\n private readonly _defaultTimeout: number;\r\n private readonly _defaultLocalize: boolean;\r\n private readonly _defaultDismiss: boolean;\r\n private readonly _defaultDismissText: string;\r\n private readonly _defaultPosition: NotificationsPosition;\r\n\r\n // The data containing the notifications.\r\n private _notifications$ = new BehaviorSubject<Notification[]>([]);\r\n\r\n constructor(private _injector: Injector,\r\n private _platform: Platform,\r\n private _applicationRef: ApplicationRef,\r\n @Optional() private _localize: Localize,\r\n @Optional() private _config: NotificationsConfig,\r\n private _componentFactoryResolver: ComponentFactoryResolver) {\r\n // Get the config.\r\n const config = this._config || {};\r\n\r\n // Set the config.\r\n this._defaultMode = this.getProperty(config.mode, 'prepend');\r\n this._defaultTimeout = this.getProperty(config.timeout, 8000);\r\n this._defaultLocalize = this.getProperty(config.localize, false);\r\n this._defaultDismiss = this.getProperty(config.dismiss, true);\r\n this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');\r\n this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);\r\n\r\n // Create the element that holds all notifications.\r\n this.createElement();\r\n }\r\n\r\n success(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Success});\r\n }\r\n\r\n error(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Error});\r\n }\r\n\r\n warn(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Warning});\r\n }\r\n\r\n info(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\r\n return this.create({content, timeout, actions, type: NotificationType.Info});\r\n }\r\n\r\n create(notification: Notification) {\r\n // Compose a new notification item.\r\n const item = this.compose(notification);\r\n\r\n // Add the destroy function to the notification.\r\n item.destroy = () => this.pull(item);\r\n\r\n // Add the notification to the list\r\n // and return the item.\r\n return this.push(item);\r\n }\r\n\r\n private push(notification: Notification) {\r\n // Get the current list.\r\n const oldList = this._notifications$.getValue();\r\n\r\n // Check which mode is activated.\r\n let newList: Notification[];\r\n switch (this._defaultMode) {\r\n case 'append':\r\n newList = [...oldList, notification];\r\n break;\r\n case 'prepend':\r\n default:\r\n newList = [notification, ...oldList];\r\n }\r\n\r\n // Push the new notifications.\r\n this._notifications$.next(newList);\r\n\r\n // Return the notification for further use.\r\n return notification;\r\n }\r\n\r\n private pull(notification: Notification) {\r\n // Get the current list.\r\n const newList = this._notifications$\r\n .getValue()\r\n .filter(item => item.id !== notification.id);\r\n\r\n // Push a new list.\r\n this._notifications$.next(newList);\r\n }\r\n\r\n private compose(notification: Notification) {\r\n // Attach a random id to the notification.\r\n notification.id = Math.random().toString(36).substr(2, 10);\r\n\r\n // Set all properties.\r\n notification.type = this.getProperty(notification.type, NotificationType.Custom);\r\n notification.content = this.getProperty(notification.content, null);\r\n notification.data = this.getProperty(notification.data, {});\r\n notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);\r\n notification.localize = this.getProperty(notification.localize, this._defaultLocalize);\r\n notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);\r\n\r\n // Dismiss text localization.\r\n const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);\r\n notification.dismissText = this._defaultLocalize && this._localize\r\n ? this._localize.translate(dismissText)\r\n : dismissText;\r\n\r\n // Return the composed notification.\r\n return notification;\r\n }\r\n\r\n private createElement() {\r\n // Create a map with the config.\r\n const map = new WeakMap();\r\n map.set(NotificationsData, {\r\n data: this._notifications$.pipe(share()),\r\n dismissText: this._defaultDismissText,\r\n position: this._defaultPosition\r\n });\r\n\r\n // Create a custom injector.\r\n const notificationsInjector = new NotificationsInjector(this._injector, map);\r\n\r\n // Create the notification list and\r\n // get a reference to the component.\r\n this._ref = this._componentFactoryResolver\r\n .resolveComponentFactory(BbNotificationsList)\r\n .create(notificationsInjector);\r\n\r\n // Detect the changes.\r\n this._ref.changeDetectorRef.detectChanges();\r\n\r\n // Attach the component's view to the application\r\n // so that the change detection will run properly.\r\n this._applicationRef.attachView(this._ref.hostView);\r\n\r\n // If the platform is not a browser return.\r\n if (!this._platform.isBrowser) {\r\n return;\r\n }\r\n\r\n try {\r\n // Append the element to the DOM.\r\n document.body.appendChild(this._ref.location.nativeElement);\r\n } catch {\r\n // Don't do anything, because it must've failed.\r\n }\r\n }\r\n\r\n private getProperty = (property: any, defaultValue: any) => {\r\n return typeof property === 'undefined'\r\n ? defaultValue\r\n : property;\r\n };\r\n\r\n}\r\n","import {BbNotificationsList} from './notifications-list/notifications-list.component';\r\nimport {BbNotificationsItem} from './notifications-item/notifications-item.component';\r\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\r\nimport {NotificationsConfig} from './notifications.interfaces';\r\nimport {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {Notifications} from './notifications.service';\r\nimport {CommonModule} from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule, LocalizeModule],\r\n declarations: [BbNotificationsList, BbNotificationsItem]\r\n})\r\nexport class NotificationsModule {\r\n\r\n static forRoot(config?: NotificationsConfig): ModuleWithProviders<NotificationsModule> {\r\n return {\r\n ngModule: NotificationsModule,\r\n providers: [\r\n {provide: NotificationsConfig, useValue: config},\r\n Notifications\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1.NotificationsData","i3.BbNotificationsItem","i2","i3.NotificationsConfig"],"mappings":"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"}
|