@bravobit/bb-foundation 0.24.0 → 0.25.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/lib/directives/authenticated.directive.d.ts +1 -1
- 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/controls/lib/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/controls/lib/control-error/control-error/control-error.component.d.ts +1 -1
- package/controls/lib/control-error/control-error-submit.directive.d.ts +1 -1
- package/controls/lib/form-control/form-control/form-control.component.d.ts +1 -1
- package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +1 -1
- package/controls/lib/form-control/form-control-input.directive.d.ts +1 -1
- package/controls/lib/radio/radio-button/radio-button.component.d.ts +1 -1
- package/controls/lib/radio/radio-group/radio-group.component.d.ts +1 -1
- package/controls/lib/toggle/toggle/toggle.component.d.ts +1 -1
- package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +1 -1
- 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/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/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 +1 -1
- package/elements/lib/directives/addon.directive.d.ts +2 -2
- package/elements/lib/directives/form-submit.directive.d.ts +1 -1
- package/elements/lib/directives/form-submitter.directive.d.ts +1 -1
- package/elements/lib/directives/input.directive.d.ts +2 -2
- package/elements/lib/dropdown/dropdown.component.d.ts +2 -2
- package/elements/lib/file-picker/file-picker.component.d.ts +1 -1
- 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/spinner/spinner.component.d.ts +1 -1
- package/elements/lib/tag/tag.component.d.ts +1 -1
- package/esm2020/auth/lib/auth.interceptor.mjs +4 -4
- package/esm2020/auth/lib/auth.module.mjs +5 -5
- package/esm2020/auth/lib/auth.service.mjs +4 -4
- package/esm2020/auth/lib/auth.session.mjs +2 -2
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +4 -4
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +4 -4
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +4 -4
- package/esm2020/collections/lib/collections.module.mjs +5 -5
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +4 -4
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +4 -4
- package/esm2020/collections/lib/components/collections.directive.mjs +13 -13
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +4 -4
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +4 -4
- package/esm2020/controls/lib/control-error/control-error.module.mjs +5 -5
- package/esm2020/controls/lib/controls.module.mjs +5 -5
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control.module.mjs +5 -5
- package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +4 -4
- package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +4 -4
- package/esm2020/controls/lib/radio/radio.module.mjs +5 -5
- package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +4 -4
- package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +4 -4
- package/esm2020/controls/lib/toggle/toggle.module.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard.module.mjs +5 -5
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +5 -5
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +5 -5
- package/esm2020/dialog/lib/dialog.insertion.mjs +4 -4
- package/esm2020/dialog/lib/dialog.module.mjs +5 -5
- package/esm2020/dialog/lib/dialog.service.mjs +4 -4
- package/esm2020/elements/lib/avatar/avatar.component.mjs +4 -4
- package/esm2020/elements/lib/button/button.component.mjs +7 -7
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +4 -4
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +4 -4
- package/esm2020/elements/lib/directives/addon.directive.mjs +7 -7
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +5 -5
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +4 -4
- package/esm2020/elements/lib/directives/input.directive.mjs +7 -7
- 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 +4 -4
- package/esm2020/elements/lib/form-control/form-control.component.mjs +4 -4
- package/esm2020/elements/lib/form-error/form-error.component.mjs +4 -4
- package/esm2020/elements/lib/form-group/form-group.component.mjs +4 -4
- package/esm2020/elements/lib/icon/icon.component.mjs +4 -4
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +4 -4
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +4 -4
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +4 -4
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +4 -4
- package/esm2020/elements/lib/spinner/spinner.component.mjs +4 -4
- package/esm2020/elements/lib/tag/tag.component.mjs +4 -4
- package/esm2020/http/lib/http.module.mjs +5 -5
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +4 -4
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +4 -4
- package/esm2020/lib/core/services/clipboard.service.mjs +4 -4
- package/esm2020/lib/core/services/exif.service.mjs +4 -4
- package/esm2020/lib/core/services/file-loader.service.mjs +4 -4
- package/esm2020/lib/core/services/image-converter.service.mjs +4 -4
- package/esm2020/lib/core/services/languages.service.mjs +4 -4
- package/esm2020/lib/core/services/network.service.mjs +5 -5
- package/esm2020/lib/core/services/patch.service.mjs +4 -4
- package/esm2020/localize/lib/localize.module.mjs +5 -5
- package/esm2020/localize/lib/localize.pipe.mjs +4 -4
- package/esm2020/localize/lib/localize.service.mjs +4 -4
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +4 -4
- package/esm2020/localize/lib/views/localize-template.directive.mjs +4 -4
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +4 -4
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +4 -4
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +4 -4
- package/esm2020/masking/lib/masking.module.mjs +5 -5
- package/esm2020/masking/lib/masking.service.mjs +4 -4
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +5 -5
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +5 -5
- package/esm2020/notifications/lib/notifications.module.mjs +5 -5
- package/esm2020/notifications/lib/notifications.service.mjs +4 -4
- package/esm2020/permissions/lib/directives/permission.directive.mjs +4 -4
- package/esm2020/permissions/lib/guards/permission.guard.mjs +4 -5
- package/esm2020/permissions/lib/handlers/local.handler.mjs +27 -0
- package/esm2020/permissions/lib/permissions.interface.mjs +1 -1
- package/esm2020/permissions/lib/permissions.module.mjs +7 -7
- package/esm2020/permissions/lib/permissions.service.mjs +14 -4
- package/esm2020/permissions/public_api.mjs +2 -2
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +4 -4
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +4 -4
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +5 -5
- package/esm2020/rxjs/lib/observables/get-control-value.observable.mjs +2 -2
- package/esm2020/storage/lib/storage.service.mjs +4 -4
- package/esm2020/table/lib/components/table/table.component.mjs +10 -10
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +4 -4
- 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 +4 -4
- package/esm2020/table/lib/table.module.mjs +5 -5
- package/esm2020/theming/lib/theming.directive.mjs +4 -4
- package/esm2020/theming/lib/theming.module.mjs +5 -5
- package/esm2020/utils/lib/directives/autosize.directive.mjs +4 -4
- package/esm2020/utils/lib/directives/focus-trap.directive.mjs +4 -4
- package/esm2020/utils/lib/directives/focus.directive.mjs +4 -4
- package/esm2020/utils/lib/directives/template.directive.mjs +4 -4
- package/esm2020/utils/lib/utils.module.mjs +5 -5
- package/fesm2015/bravobit-bb-foundation-auth.mjs +20 -20
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +57 -57
- 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 +33 -33
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +77 -77
- 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 +16 -16
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +15 -15
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-permissions.mjs +26 -17
- package/fesm2015/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs +1 -1
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-auth.mjs +20 -20
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +57 -57
- 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 +33 -33
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +77 -77
- 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 +16 -16
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +15 -15
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-permissions.mjs +26 -17
- package/fesm2020/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-rxjs.mjs +1 -1
- package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
- package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
- package/masking/lib/directives/date-mask.directive.d.ts +1 -1
- package/masking/lib/directives/input-mask.directive.d.ts +1 -1
- 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 +4 -4
- package/permissions/lib/directives/permission.directive.d.ts +4 -4
- package/permissions/lib/handlers/local.handler.d.ts +10 -0
- package/permissions/lib/permissions.interface.d.ts +5 -4
- package/permissions/lib/permissions.service.d.ts +4 -3
- package/permissions/public_api.d.ts +1 -1
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
- package/table/lib/components/table/table.component.d.ts +3 -3
- 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/lib/theming.directive.d.ts +1 -1
- package/utils/lib/directives/autosize.directive.d.ts +1 -1
- package/utils/lib/directives/focus-trap.directive.d.ts +1 -1
- package/utils/lib/directives/focus.directive.d.ts +1 -1
- package/utils/lib/directives/template.directive.d.ts +1 -1
- package/esm2020/permissions/lib/handlers/role.handler.mjs +0 -27
- package/permissions/lib/handlers/role.handler.d.ts +0 -9
|
@@ -107,9 +107,9 @@ class BbInputMask {
|
|
|
107
107
|
this.inputMaskPlugin = null;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
BbInputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
111
|
-
BbInputMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
110
|
+
BbInputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.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 });
|
|
111
|
+
BbInputMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: BbInputMask, selector: "input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]", inputs: { mask: ["bbInputMask", "mask"] }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)" } }, ngImport: i0 });
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbInputMask, decorators: [{
|
|
113
113
|
type: Directive,
|
|
114
114
|
args: [{
|
|
115
115
|
selector: 'input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]'
|
|
@@ -220,9 +220,9 @@ class Masking {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
|
-
Masking.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
224
|
-
Masking.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
225
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
223
|
+
Masking.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: Masking, deps: [{ token: i1$1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
224
|
+
Masking.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: Masking, providedIn: 'root' });
|
|
225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: Masking, decorators: [{
|
|
226
226
|
type: Injectable,
|
|
227
227
|
args: [{
|
|
228
228
|
providedIn: 'root'
|
|
@@ -248,9 +248,9 @@ class BbCurrencyMask {
|
|
|
248
248
|
this._inputMask.mask = this._masking.currency(currencyCode, options);
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
BbCurrencyMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
252
|
-
BbCurrencyMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
251
|
+
BbCurrencyMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbCurrencyMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
252
|
+
BbCurrencyMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: BbCurrencyMask, selector: "input[bbCurrencyMask]", inputs: { currencyCode: ["bbCurrencyMask", "currencyCode"], options: ["bbCurrencyMaskOptions", "options"] }, usesOnChanges: true, ngImport: i0 });
|
|
253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbCurrencyMask, decorators: [{
|
|
254
254
|
type: Directive,
|
|
255
255
|
args: [{
|
|
256
256
|
selector: 'input[bbCurrencyMask]'
|
|
@@ -282,9 +282,9 @@ class BbDateMask {
|
|
|
282
282
|
this._inputMask.mask = this._masking.date(format, separator);
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
|
-
BbDateMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
286
|
-
BbDateMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
285
|
+
BbDateMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbDateMask, deps: [{ token: Masking }, { token: BbInputMask, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
286
|
+
BbDateMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: BbDateMask, selector: "input[bbDateMask]", inputs: { format: ["bbDateMask", "format"], separator: ["bbDateMaskSeparator", "separator"] }, usesOnChanges: true, ngImport: i0 });
|
|
287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbDateMask, decorators: [{
|
|
288
288
|
type: Directive,
|
|
289
289
|
args: [{
|
|
290
290
|
selector: 'input[bbDateMask]'
|
|
@@ -303,14 +303,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
|
|
|
303
303
|
|
|
304
304
|
class MaskingModule {
|
|
305
305
|
}
|
|
306
|
-
MaskingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
307
|
-
MaskingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
306
|
+
MaskingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: MaskingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
307
|
+
MaskingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: MaskingModule, declarations: [BbInputMask,
|
|
308
308
|
BbCurrencyMask,
|
|
309
309
|
BbDateMask], exports: [BbInputMask,
|
|
310
310
|
BbCurrencyMask,
|
|
311
311
|
BbDateMask] });
|
|
312
|
-
MaskingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
313
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
312
|
+
MaskingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: MaskingModule });
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: MaskingModule, decorators: [{
|
|
314
314
|
type: NgModule,
|
|
315
315
|
args: [{
|
|
316
316
|
declarations: [
|
|
@@ -1 +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/directives/input-mask.directive.ts","../../../projects/bb-foundation/masking/src/lib/masking.service.ts","../../../projects/bb-foundation/masking/src/lib/directives/currency-mask.directive.ts","../../../projects/bb-foundation/masking/src/lib/directives/date-mask.directive.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';\n\nexport type InputMaskOptions<T> = Inputmask.Options & {\n parser?: (value: any) => T;\n};\n\nexport type CurrencyMaskOptions = {\n symbol: string;\n symbolFormat: 'wide' | 'narrow';\n spacer: string;\n digits: number;\n digitsOptional: boolean;\n decimalCharacter: string;\n groupCharacter: string;\n min: number;\n max: number;\n allowMinus: boolean;\n nullable: boolean;\n}\n\nexport type DateMaskFormat =\n 'day-month-year' |\n 'month-day-year' |\n 'year-month-day' |\n 'year-day-month';\n\nexport const createMask = <T>(options: string | InputMaskOptions<T>) => typeof options === 'string' ? {mask: options} : options;\n","import {Directive, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, Optional, Renderer2, Self} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, NgControl, Validator} from '@angular/forms';\nimport {InputMaskOptions} from '../input-mask.interface';\nimport {fromEvent, merge, Subscription} from 'rxjs';\nimport {Platform} from '@angular/cdk/platform';\nimport type Inputmask from 'inputmask';\nimport _Inputmask from 'inputmask';\n\nconst InputmaskConstructor = (_Inputmask as unknown as { default?: Inputmask.Static }).default || _Inputmask;\n\n@Directive({\n selector: 'input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]'\n})\nexport class BbInputMask<T = any> implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n\n @Input('bbInputMask')\n set mask(mask: InputMaskOptions<T> | string | null | undefined) {\n if (!mask || typeof mask === 'string') {\n return;\n }\n\n this._inputMaskOptions = mask;\n this.updateMask();\n }\n\n // State.\n inputMaskPlugin: Inputmask.Instance | null = null;\n nativeInputElement: HTMLInputElement | null = null;\n eventsSubscription: Subscription | null = null;\n\n private _inputMaskOptions: InputMaskOptions<T> | null = null;\n private _onChange: (value: T | null) => void = () => ({});\n\n constructor(private _ngZone: NgZone,\n private _platform: Platform,\n private _renderer: Renderer2,\n private _elementRef: ElementRef<HTMLInputElement>,\n @Optional() @Self() private _control?: NgControl) {\n this.nativeInputElement = this._elementRef.nativeElement;\n if (this._control != null) {\n this._control.valueAccessor = this;\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n onInput: (value: any) => void = (_: any) => ({});\n\n @HostListener('blur', ['$event.target.value'])\n onTouched: () => void = () => ({});\n\n ngOnInit() {\n const control = this._control?.control;\n if (!control) {\n return;\n }\n\n control?.setValidators(control.validator ? [control.validator, this.validate] : [this.validate]);\n control?.updateValueAndValidity();\n }\n\n ngOnDestroy() {\n this.destroyMask();\n }\n\n writeValue(value: string) {\n if (!this.nativeInputElement) {\n return;\n }\n this._renderer.setProperty(this.nativeInputElement, 'value', value ?? '');\n }\n\n registerOnChange(fn: (value: T | null) => void) {\n this._onChange = fn;\n const parser = this._inputMaskOptions?.parser;\n this.onInput = value => this._onChange(parser ? parser(value) : value);\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (!this.nativeInputElement) {\n return;\n }\n this._renderer.setProperty(this.nativeInputElement, 'disabled', isDisabled);\n }\n\n validate = (control: AbstractControl) => !control.value || !this.inputMaskPlugin || this.inputMaskPlugin?.isValid()\n ? null\n : {inputMask: true};\n\n private updateMask() {\n this.destroyMask();\n this.createMask();\n this.registerOnChange(this._onChange);\n }\n\n private createMask() {\n if (!this._platform.isBrowser || !this.nativeInputElement || this._inputMaskOptions === null || Object.keys(this._inputMaskOptions).length === 0) {\n return;\n }\n\n const {parser, ...options} = this._inputMaskOptions;\n this.inputMaskPlugin = this._ngZone.runOutsideAngular(() => new InputmaskConstructor(options).mask(this.nativeInputElement));\n\n const setValue$ = fromEvent(this.nativeInputElement, 'setvalue');\n const cleared$ = fromEvent(this.nativeInputElement, 'cleared');\n\n this.eventsSubscription = merge(setValue$, cleared$)\n .subscribe(event => this.onInput(event?.target?.['value']));\n\n const control = this._control?.control;\n if (!control) {\n return;\n }\n setTimeout(() => control?.updateValueAndValidity());\n }\n\n private destroyMask() {\n this.eventsSubscription?.unsubscribe();\n this.eventsSubscription = null;\n this.inputMaskPlugin?.remove();\n this.inputMaskPlugin = null;\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbInputMask: InputMaskOptions<any> | string | null | undefined;\n\n}\n","import {formatDate, getCurrencySymbol, getLocaleNumberSymbol, getNumberOfCurrencyDigits, NumberSymbol} from '@angular/common';\nimport {createMask, CurrencyMaskOptions, DateMaskFormat} from './input-mask.interface';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {Injectable, Optional} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Masking {\n\n constructor(@Optional() private _localize?: Localize) {\n }\n\n date(format: DateMaskFormat, separator: string = '-') {\n const dateParts = this.getDateParts(format);\n const inputFormat = dateParts.join(separator);\n const outputFormat = 'yyyy-MM-dd';\n\n const escape = /[.*+?^${}()\\/|[\\]\\\\]/g;\n const escapedSeparator = separator.replace(escape, '\\\\$&');\n\n const inputFormatRegexString = dateParts\n .map(item => `(?<${item}>[0-9]{${item?.length}})`)\n .join(escapedSeparator);\n const inputFormatRegex = new RegExp(`^${inputFormatRegexString}$`);\n\n return createMask({\n alias: 'datetime',\n inputFormat: inputFormat.toLowerCase(),\n outputFormat: outputFormat.toLowerCase(),\n nullable: false,\n inputmode: 'numeric',\n onBeforeMask: (initialValue: string) => {\n return initialValue ? formatDate(initialValue, inputFormat, 'en-US') : null;\n },\n onBeforePaste: (value: string) => {\n return value;\n },\n parser: (value: string) => {\n if (!value || typeof value !== 'string' || !inputFormatRegex.test(value)) {\n return null;\n }\n const matches = value.match(inputFormatRegex);\n const year = +matches?.groups?.['yyyy'];\n const month = +matches?.groups?.['MM'] - 1;\n const day = +matches?.groups?.['dd'];\n const date = new Date(year, month, day);\n\n return date instanceof Date && !isNaN(<any>date)\n ? formatDate(date, outputFormat, 'en-US')\n : null;\n }\n });\n }\n\n currency(code: string, options?: Partial<CurrencyMaskOptions>) {\n const locale = this._localize?.current?.locale ?? 'en';\n const symbol = options?.symbol ?? getCurrencySymbol(code, options?.symbolFormat ?? 'narrow', locale);\n\n const decimal = options?.decimalCharacter ?? getLocaleNumberSymbol(locale, NumberSymbol.CurrencyDecimal);\n const group = options?.groupCharacter ?? getLocaleNumberSymbol(locale, NumberSymbol.CurrencyGroup);\n const digits = options?.digits ?? getNumberOfCurrencyDigits(code);\n const spacer = options?.spacer ?? ' ';\n\n return createMask({\n alias: 'numeric',\n digits: digits,\n allowMinus: options?.allowMinus ?? false,\n min: options?.min ?? 0,\n max: options?.max ?? Number.MAX_SAFE_INTEGER,\n prefix: `${symbol}${spacer}`,\n radixPoint: decimal ?? '.',\n groupSeparator: group ?? ',',\n digitsOptional: options?.digitsOptional ?? false,\n nullable: options?.nullable ?? true,\n autoUnmask: true,\n unmaskAsNumber: true,\n rightAlign: false,\n showMaskOnHover: false,\n showMaskOnFocus: false,\n inputmode: digits > 0 ? 'decimal' : 'numeric',\n parser: (value: string | number) => {\n if (value === '') {\n return null;\n }\n return value;\n }\n });\n }\n\n private getDateParts(format: DateMaskFormat) {\n switch (format) {\n case 'day-month-year':\n return ['dd', 'MM', 'yyyy'];\n case 'month-day-year':\n return ['MM', 'dd', 'yyyy'];\n case 'year-day-month':\n return ['yyyy', 'dd', 'MM'];\n case 'year-month-day':\n default:\n return ['yyyy', 'MM', 'dd'];\n }\n }\n\n}\n","import {Directive, Input, OnChanges, Self, SimpleChanges} from '@angular/core';\nimport {CurrencyMaskOptions} from '../input-mask.interface';\nimport {BbInputMask} from './input-mask.directive';\nimport {Masking} from '../masking.service';\n\n@Directive({\n selector: 'input[bbCurrencyMask]'\n})\nexport class BbCurrencyMask implements OnChanges {\n\n // Inputs.\n @Input('bbCurrencyMask') currencyCode: string | null = null;\n @Input('bbCurrencyMaskOptions') options: Partial<CurrencyMaskOptions> | null = null;\n\n constructor(private _masking: Masking,\n @Self() private _inputMask: BbInputMask) {\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const currencyCode = changes?.['currencyCode']?.currentValue ?? this.currencyCode ?? 'USD';\n const options = changes?.['options']?.currentValue ?? this.options ?? {};\n\n this._inputMask.mask = this._masking.currency(currencyCode, options);\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbCurrencyMask: string | null | undefined;\n static ngAcceptInputType_bbCurrencyMaskOptions: Partial<CurrencyMaskOptions> | null | undefined;\n\n}\n","import {Directive, Input, OnChanges, Self, SimpleChanges} from '@angular/core';\nimport {DateMaskFormat} from '../input-mask.interface';\nimport {BbInputMask} from './input-mask.directive';\nimport {Masking} from '../masking.service';\n\n@Directive({\n selector: 'input[bbDateMask]'\n})\nexport class BbDateMask implements OnChanges {\n\n // Inputs.\n @Input('bbDateMask') format: DateMaskFormat | null = null;\n @Input('bbDateMaskSeparator') separator: string | null = null;\n\n constructor(private _masking: Masking,\n @Self() private _inputMask: BbInputMask) {\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const format = changes?.['format']?.currentValue ?? this.format ?? null;\n const separator = changes?.['separator']?.currentValue ?? this.separator ?? '-s';\n this._inputMask.mask = this._masking.date(format, separator);\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbDateMask: DateMaskFormat | null | undefined;\n static ngAcceptInputType_bbDateMaskSeparator: string | null | undefined;\n\n}\n","import {BbCurrencyMask} from './directives/currency-mask.directive';\nimport {BbInputMask} from './directives/input-mask.directive';\nimport {BbDateMask} from './directives/date-mask.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n declarations: [\n BbInputMask,\n BbCurrencyMask,\n BbDateMask\n ],\n exports: [\n BbInputMask,\n BbCurrencyMask,\n BbDateMask\n ]\n})\nexport class MaskingModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i1.Masking","i2.BbInputMask"],"mappings":"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"}
|
|
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/directives/input-mask.directive.ts","../../../projects/bb-foundation/masking/src/lib/masking.service.ts","../../../projects/bb-foundation/masking/src/lib/directives/currency-mask.directive.ts","../../../projects/bb-foundation/masking/src/lib/directives/date-mask.directive.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';\n\nexport type InputMaskOptions<T> = Inputmask.Options & {\n parser?: (value: any) => T;\n};\n\nexport type CurrencyMaskOptions = {\n symbol: string;\n symbolFormat: 'wide' | 'narrow';\n spacer: string;\n digits: number;\n digitsOptional: boolean;\n decimalCharacter: string;\n groupCharacter: string;\n min: number;\n max: number;\n allowMinus: boolean;\n nullable: boolean;\n}\n\nexport type DateMaskFormat =\n 'day-month-year' |\n 'month-day-year' |\n 'year-month-day' |\n 'year-day-month';\n\nexport const createMask = <T>(options: string | InputMaskOptions<T>) => typeof options === 'string' ? {mask: options} : options;\n","import {Directive, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, Optional, Renderer2, Self} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, NgControl, Validator} from '@angular/forms';\nimport {InputMaskOptions} from '../input-mask.interface';\nimport {fromEvent, merge, Subscription} from 'rxjs';\nimport {Platform} from '@angular/cdk/platform';\nimport type Inputmask from 'inputmask';\nimport _Inputmask from 'inputmask';\n\nconst InputmaskConstructor = (_Inputmask as unknown as { default?: Inputmask.Static }).default || _Inputmask;\n\n@Directive({\n selector: 'input[bbInputMask],input[bbCurrencyMask],input[bbDateMask]'\n})\nexport class BbInputMask<T = any> implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n\n @Input('bbInputMask')\n set mask(mask: InputMaskOptions<T> | string | null | undefined) {\n if (!mask || typeof mask === 'string') {\n return;\n }\n\n this._inputMaskOptions = mask;\n this.updateMask();\n }\n\n // State.\n inputMaskPlugin: Inputmask.Instance | null = null;\n nativeInputElement: HTMLInputElement | null = null;\n eventsSubscription: Subscription | null = null;\n\n private _inputMaskOptions: InputMaskOptions<T> | null = null;\n private _onChange: (value: T | null) => void = () => ({});\n\n constructor(private _ngZone: NgZone,\n private _platform: Platform,\n private _renderer: Renderer2,\n private _elementRef: ElementRef<HTMLInputElement>,\n @Optional() @Self() private _control?: NgControl) {\n this.nativeInputElement = this._elementRef.nativeElement;\n if (this._control != null) {\n this._control.valueAccessor = this;\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n onInput: (value: any) => void = (_: any) => ({});\n\n @HostListener('blur', ['$event.target.value'])\n onTouched: () => void = () => ({});\n\n ngOnInit() {\n const control = this._control?.control;\n if (!control) {\n return;\n }\n\n control?.setValidators(control.validator ? [control.validator, this.validate] : [this.validate]);\n control?.updateValueAndValidity();\n }\n\n ngOnDestroy() {\n this.destroyMask();\n }\n\n writeValue(value: string) {\n if (!this.nativeInputElement) {\n return;\n }\n this._renderer.setProperty(this.nativeInputElement, 'value', value ?? '');\n }\n\n registerOnChange(fn: (value: T | null) => void) {\n this._onChange = fn;\n const parser = this._inputMaskOptions?.parser;\n this.onInput = value => this._onChange(parser ? parser(value) : value);\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (!this.nativeInputElement) {\n return;\n }\n this._renderer.setProperty(this.nativeInputElement, 'disabled', isDisabled);\n }\n\n validate = (control: AbstractControl) => !control.value || !this.inputMaskPlugin || this.inputMaskPlugin?.isValid()\n ? null\n : {inputMask: true};\n\n private updateMask() {\n this.destroyMask();\n this.createMask();\n this.registerOnChange(this._onChange);\n }\n\n private createMask() {\n if (!this._platform.isBrowser || !this.nativeInputElement || this._inputMaskOptions === null || Object.keys(this._inputMaskOptions).length === 0) {\n return;\n }\n\n const {parser, ...options} = this._inputMaskOptions;\n this.inputMaskPlugin = this._ngZone.runOutsideAngular(() => new InputmaskConstructor(options).mask(this.nativeInputElement));\n\n const setValue$ = fromEvent(this.nativeInputElement, 'setvalue');\n const cleared$ = fromEvent(this.nativeInputElement, 'cleared');\n\n this.eventsSubscription = merge(setValue$, cleared$)\n .subscribe(event => this.onInput(event?.target?.['value']));\n\n const control = this._control?.control;\n if (!control) {\n return;\n }\n setTimeout(() => control?.updateValueAndValidity());\n }\n\n private destroyMask() {\n this.eventsSubscription?.unsubscribe();\n this.eventsSubscription = null;\n this.inputMaskPlugin?.remove();\n this.inputMaskPlugin = null;\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbInputMask: InputMaskOptions<any> | string | null | undefined;\n\n}\n","import {formatDate, getCurrencySymbol, getLocaleNumberSymbol, getNumberOfCurrencyDigits, NumberSymbol} from '@angular/common';\nimport {createMask, CurrencyMaskOptions, DateMaskFormat} from './input-mask.interface';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {Injectable, Optional} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Masking {\n\n constructor(@Optional() private _localize?: Localize) {\n }\n\n date(format: DateMaskFormat, separator: string = '-') {\n const dateParts = this.getDateParts(format);\n const inputFormat = dateParts.join(separator);\n const outputFormat = 'yyyy-MM-dd';\n\n const escape = /[.*+?^${}()\\/|[\\]\\\\]/g;\n const escapedSeparator = separator.replace(escape, '\\\\$&');\n\n const inputFormatRegexString = dateParts\n .map(item => `(?<${item}>[0-9]{${item?.length}})`)\n .join(escapedSeparator);\n const inputFormatRegex = new RegExp(`^${inputFormatRegexString}$`);\n\n return createMask({\n alias: 'datetime',\n inputFormat: inputFormat.toLowerCase(),\n outputFormat: outputFormat.toLowerCase(),\n nullable: false,\n inputmode: 'numeric',\n onBeforeMask: (initialValue: string) => {\n return initialValue ? formatDate(initialValue, inputFormat, 'en-US') : null;\n },\n onBeforePaste: (value: string) => {\n return value;\n },\n parser: (value: string) => {\n if (!value || typeof value !== 'string' || !inputFormatRegex.test(value)) {\n return null;\n }\n const matches = value.match(inputFormatRegex);\n const year = +matches?.groups?.['yyyy'];\n const month = +matches?.groups?.['MM'] - 1;\n const day = +matches?.groups?.['dd'];\n const date = new Date(year, month, day);\n\n return date instanceof Date && !isNaN(<any>date)\n ? formatDate(date, outputFormat, 'en-US')\n : null;\n }\n });\n }\n\n currency(code: string, options?: Partial<CurrencyMaskOptions>) {\n const locale = this._localize?.current?.locale ?? 'en';\n const symbol = options?.symbol ?? getCurrencySymbol(code, options?.symbolFormat ?? 'narrow', locale);\n\n const decimal = options?.decimalCharacter ?? getLocaleNumberSymbol(locale, NumberSymbol.CurrencyDecimal);\n const group = options?.groupCharacter ?? getLocaleNumberSymbol(locale, NumberSymbol.CurrencyGroup);\n const digits = options?.digits ?? getNumberOfCurrencyDigits(code);\n const spacer = options?.spacer ?? ' ';\n\n return createMask({\n alias: 'numeric',\n digits: digits,\n allowMinus: options?.allowMinus ?? false,\n min: options?.min ?? 0,\n max: options?.max ?? Number.MAX_SAFE_INTEGER,\n prefix: `${symbol}${spacer}`,\n radixPoint: decimal ?? '.',\n groupSeparator: group ?? ',',\n digitsOptional: options?.digitsOptional ?? false,\n nullable: options?.nullable ?? true,\n autoUnmask: true,\n unmaskAsNumber: true,\n rightAlign: false,\n showMaskOnHover: false,\n showMaskOnFocus: false,\n inputmode: digits > 0 ? 'decimal' : 'numeric',\n parser: (value: string | number) => {\n if (value === '') {\n return null;\n }\n return value;\n }\n });\n }\n\n private getDateParts(format: DateMaskFormat) {\n switch (format) {\n case 'day-month-year':\n return ['dd', 'MM', 'yyyy'];\n case 'month-day-year':\n return ['MM', 'dd', 'yyyy'];\n case 'year-day-month':\n return ['yyyy', 'dd', 'MM'];\n case 'year-month-day':\n default:\n return ['yyyy', 'MM', 'dd'];\n }\n }\n\n}\n","import {Directive, Input, OnChanges, Self, SimpleChanges} from '@angular/core';\nimport {CurrencyMaskOptions} from '../input-mask.interface';\nimport {BbInputMask} from './input-mask.directive';\nimport {Masking} from '../masking.service';\n\n@Directive({\n selector: 'input[bbCurrencyMask]'\n})\nexport class BbCurrencyMask implements OnChanges {\n\n // Inputs.\n @Input('bbCurrencyMask') currencyCode: string | null = null;\n @Input('bbCurrencyMaskOptions') options: Partial<CurrencyMaskOptions> | null = null;\n\n constructor(private _masking: Masking,\n @Self() private _inputMask: BbInputMask) {\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const currencyCode = changes?.['currencyCode']?.currentValue ?? this.currencyCode ?? 'USD';\n const options = changes?.['options']?.currentValue ?? this.options ?? {};\n\n this._inputMask.mask = this._masking.currency(currencyCode, options);\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbCurrencyMask: string | null | undefined;\n static ngAcceptInputType_bbCurrencyMaskOptions: Partial<CurrencyMaskOptions> | null | undefined;\n\n}\n","import {Directive, Input, OnChanges, Self, SimpleChanges} from '@angular/core';\nimport {DateMaskFormat} from '../input-mask.interface';\nimport {BbInputMask} from './input-mask.directive';\nimport {Masking} from '../masking.service';\n\n@Directive({\n selector: 'input[bbDateMask]'\n})\nexport class BbDateMask implements OnChanges {\n\n // Inputs.\n @Input('bbDateMask') format: DateMaskFormat | null = null;\n @Input('bbDateMaskSeparator') separator: string | null = null;\n\n constructor(private _masking: Masking,\n @Self() private _inputMask: BbInputMask) {\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const format = changes?.['format']?.currentValue ?? this.format ?? null;\n const separator = changes?.['separator']?.currentValue ?? this.separator ?? '-s';\n this._inputMask.mask = this._masking.date(format, separator);\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbDateMask: DateMaskFormat | null | undefined;\n static ngAcceptInputType_bbDateMaskSeparator: string | null | undefined;\n\n}\n","import {BbCurrencyMask} from './directives/currency-mask.directive';\nimport {BbInputMask} from './directives/input-mask.directive';\nimport {BbDateMask} from './directives/date-mask.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n declarations: [\n BbInputMask,\n BbCurrencyMask,\n BbDateMask\n ],\n exports: [\n BbInputMask,\n BbCurrencyMask,\n BbDateMask\n ]\n})\nexport class MaskingModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i1.Masking","i2.BbInputMask"],"mappings":"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"}
|
|
@@ -132,13 +132,13 @@ 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: "14.0.0", version: "
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
+
BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.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: "15.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\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\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\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\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{inset: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: "15.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'
|
|
141
|
-
}, template: "<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\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\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\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{
|
|
141
|
+
}, template: "<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\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\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\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{inset:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"] }]
|
|
142
142
|
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { notification: [{
|
|
143
143
|
type: Input
|
|
144
144
|
}], dismissButtonText: [{
|
|
@@ -177,14 +177,14 @@ class BbNotificationsList {
|
|
|
177
177
|
return { vertical: y !== null && y !== void 0 ? y : null, horizontal: x !== null && x !== void 0 ? x : null };
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
-
BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
181
|
-
BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
182
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
180
|
+
BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
|
|
181
|
+
BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.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: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{inset: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 });
|
|
182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: BbNotificationsList, decorators: [{
|
|
183
183
|
type: Component,
|
|
184
184
|
args: [{ selector: 'bb-notifications-list', animations: [notificationAnimation], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
|
|
185
185
|
'class': 'bb-notifications-list',
|
|
186
186
|
'role': 'list'
|
|
187
|
-
}, template: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{
|
|
187
|
+
}, template: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{inset: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"] }]
|
|
188
188
|
}], ctorParameters: function () { return [{ type: NotificationsData }]; }, propDecorators: { horizontalPosition: [{
|
|
189
189
|
type: HostBinding,
|
|
190
190
|
args: ['style.justify-content']
|
|
@@ -315,9 +315,9 @@ class Notifications {
|
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
317
|
}
|
|
318
|
-
Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
319
|
-
Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
320
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
318
|
+
Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: Notifications, deps: [{ token: i1.Platform }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
319
|
+
Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: Notifications });
|
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: Notifications, decorators: [{
|
|
321
321
|
type: Injectable
|
|
322
322
|
}], ctorParameters: function () {
|
|
323
323
|
return [{ type: i1.Platform }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i2$1.Localize, decorators: [{
|
|
@@ -338,10 +338,10 @@ class NotificationsModule {
|
|
|
338
338
|
};
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
|
-
NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
342
|
-
NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
343
|
-
NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
341
|
+
NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
342
|
+
NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
|
|
343
|
+
NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NotificationsModule, imports: [CommonModule, LocalizeModule] });
|
|
344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NotificationsModule, decorators: [{
|
|
345
345
|
type: NgModule,
|
|
346
346
|
args: [{
|
|
347
347
|
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.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';\nimport {Observable} from 'rxjs';\n\nexport interface Notification {\n content: string | TemplateRef<any>;\n\n id?: string;\n\n timeout?: number;\n localize?: boolean;\n dismiss?: boolean;\n dismissText?: string;\n data?: { [key: string]: any };\n type?: NotificationType;\n actions?: NotificationAction[];\n\n color?: string;\n backgroundColor?: string;\n\n destroy?: () => void;\n}\n\nexport interface NotificationAction {\n title: string;\n callback?: () => any;\n type?: 'default' | 'cancel';\n}\n\nexport enum NotificationType {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Info = 'info',\n Custom = 'custom'\n}\n\nexport class NotificationsConfig {\n mode?: 'append' | 'prepend';\n position?: NotificationsPosition;\n timeout?: number;\n dismiss?: boolean;\n localize?: boolean;\n dismissText?: string;\n}\n\nexport enum NotificationsPosition {\n TopRight = 'flex-start|flex-end',\n BottomRight = 'flex-end|flex-end',\n TopLeft = 'flex-start|flex-start',\n BottomLeft = 'flex-end|flex-start'\n}\n\nexport class NotificationsData {\n data: Observable<Notification[]>;\n dismissText: string;\n position: NotificationsPosition;\n}\n","import {animate, group, query, stagger, style, transition, trigger} from '@angular/animations';\n\nconst s = '250ms cubic-bezier(0, 0, .2, 1)';\nconst l = '400ms cubic-bezier(0, 0, .2, 1)';\n\nexport const notificationAnimation = trigger('notificationListAnimation', [\n transition('* => *', [\n query(':enter', group([\n // 1. Set the initial state.\n style({height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'}),\n // 2. Start the animation to show the item.\n stagger(0, [\n animate(s, style({height: '*'})),\n animate(l, style({opacity: 1, transform: 'translateX(0) scale(0.95)'})),\n animate(s, style({transform: 'translateX(0) scale(1)'}))\n ])\n ]), {optional: true}),\n\n query(':leave', group([\n // 1. Set the initial state.\n style({height: '*', opacity: 1, transform: 'translateX(0) scale(1)'}),\n // 2. Start the animation to hide the item.\n stagger(0, [\n animate(s, style({transform: 'translateX(0) scale(0.95)'})),\n animate(l, style({opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'})),\n animate(s, style({height: 0}))\n ])\n ]), {optional: true})\n ])\n]);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Notification, NotificationAction} from '../notifications.interfaces';\nimport {Platform} from '@angular/cdk/platform';\n\n@Component({\n selector: 'bb-notifications-item',\n templateUrl: './notifications-item.component.html',\n styleUrls: ['./notifications-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'role': 'alert'\n }\n})\nexport class BbNotificationsItem implements OnInit, OnDestroy {\n\n // Inputs.\n @Input() notification: Notification;\n @Input() dismissButtonText: string | null;\n\n // Elements.\n @ViewChild('progress') progressElementRef: ElementRef;\n\n // Data.\n private _progress = 0;\n private _count = 0;\n\n // Helper variables.\n private _steps: number;\n private _speed: number;\n private _timer: number;\n private _startTime: number;\n private _difference: number;\n\n // Data.\n private readonly _radius = 19;\n private readonly _circumference = this._radius * 2 * Math.PI;\n\n @HostBinding('class') get getClass() {\n return `bb-notifications-item ${this.notification.type}`;\n }\n\n constructor(private _zone: NgZone,\n private _platform: Platform,\n private _changeDetection: ChangeDetectorRef) {\n }\n\n get progressStrokeArray() {\n const value = Math.floor(this._circumference);\n return `${value}, ${value}`;\n }\n\n get progressStrokeOffset() {\n return Math.floor(this._circumference - this._progress / 100 * this._circumference);\n }\n\n get isContentString() {\n return typeof this.notification.content === 'string';\n }\n\n ngOnInit() {\n // Check if the notification timeout is not 0 and the platform is a browser.\n if (this.notification.timeout <= 0 || !this._platform.isBrowser) {\n this.notification.dismiss = true;\n return;\n }\n\n // Start the timeout.\n this.startTimeout();\n }\n\n ngOnDestroy() {\n // Clear the timeout if it was set.\n this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);\n }\n\n callActionAndDestroy = (notification: Notification, action: NotificationAction) => {\n // Perform the callback (if it exists).\n action && action.callback && action.callback();\n\n // Call the destroy method (if it exists).\n notification && notification.destroy && notification.destroy();\n };\n\n private startTimeout() {\n // Calculate the steps of the timeout.\n this._steps = this.notification.timeout / 10;\n\n // Calculate the speed of the timeout.\n this._speed = this.notification.timeout / this._steps;\n\n // Get the start time.\n this._startTime = Date.now();\n\n // Set a new timer outside of Angular.\n this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));\n }\n\n private instance = () => {\n // Calculate the difference.\n this._difference = (Date.now() - this._startTime) - (this._count * this._speed);\n\n // Add up the count.\n if (this._count++ === this._steps) {\n this.notification.destroy();\n }\n\n // Add the steps to the progress.\n this._progress += 100 / this._steps;\n\n // Set a new timer.\n this._timer = this.setTimeout(this.instance, this._speed - this._difference);\n\n // Run a new change detection cycle.\n this._zone.run(() => this._changeDetection.detectChanges());\n };\n\n private setTimeout = (method: () => void, timeout: number) => {\n // Check if the window and method exist.\n if (!window || !window.setTimeout) {\n return null;\n }\n\n return window.setTimeout(method, timeout);\n };\n\n}\n","<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\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\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\n","import {Notification, NotificationsData, NotificationsPosition} from '../notifications.interfaces';\nimport {ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation} from '@angular/core';\nimport {notificationAnimation} from '../notifications.animations';\n\n@Component({\n selector: 'bb-notifications-list',\n templateUrl: './notifications-list.component.html',\n styleUrls: ['./notifications-list.component.scss'],\n animations: [notificationAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'class': 'bb-notifications-list',\n 'role': 'list'\n }\n})\nexport class BbNotificationsList {\n\n // Data.\n position: NotificationsPosition | null = null;\n\n // Track by function.\n trackByFn = (_, item: Notification) => item?.id;\n\n constructor(public data: NotificationsData) {\n }\n\n @HostBinding('style.justify-content')\n get horizontalPosition() {\n return this.location.horizontal;\n }\n\n @HostBinding('style.align-items')\n get verticalPosition() {\n return this.location.vertical;\n }\n\n get animation() {\n const to = this.horizontalPosition === 'flex-start'\n ? -50\n : 50;\n\n return {to};\n }\n\n private get location() {\n const [y, x] = (this.data.position ?? '').split('|');\n\n return {vertical: y ?? null, horizontal: x ?? null};\n }\n\n}\n","<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n","import {Notification, NotificationAction, NotificationsPosition, NotificationsConfig, NotificationType, NotificationsData} from './notifications.interfaces';\nimport {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, Injectable, Optional, TemplateRef} from '@angular/core';\nimport {BbNotificationsList} from './notifications-list/notifications-list.component';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {Platform} from '@angular/cdk/platform';\nimport {BehaviorSubject} from 'rxjs';\nimport {share} from 'rxjs/operators';\n\n@Injectable()\nexport class Notifications {\n\n // Reference to the list.\n private _ref: ComponentRef<BbNotificationsList>;\n\n // The default settings for the notifications.\n private readonly _defaultMode: 'prepend' | 'append';\n private readonly _defaultTimeout: number;\n private readonly _defaultLocalize: boolean;\n private readonly _defaultDismiss: boolean;\n private readonly _defaultDismissText: string;\n private readonly _defaultPosition: NotificationsPosition;\n\n // The data containing the notifications.\n private _notifications$ = new BehaviorSubject<Notification[]>([]);\n\n constructor(private _platform: Platform,\n private _applicationRef: ApplicationRef,\n private _environmentInjector: EnvironmentInjector,\n @Optional() private _localize?: Localize,\n @Optional() private _config?: NotificationsConfig) {\n // Get the config.\n const config = this._config || {};\n\n // Set the config.\n this._defaultMode = this.getProperty(config.mode, 'prepend');\n this._defaultTimeout = this.getProperty(config.timeout, 8000);\n this._defaultLocalize = this.getProperty(config.localize, false);\n this._defaultDismiss = this.getProperty(config.dismiss, true);\n this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');\n this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);\n\n // Create the element that holds all notifications.\n this.createElement();\n }\n\n success(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Success});\n }\n\n error(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Error});\n }\n\n warn(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Warning});\n }\n\n info(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Info});\n }\n\n create(notification: Notification) {\n // Compose a new notification item.\n const item = this.compose(notification);\n\n // Add the destroy function to the notification.\n item.destroy = () => this.pull(item);\n\n // Add the notification to the list\n // and return the item.\n return this.push(item);\n }\n\n private push(notification: Notification) {\n // Get the current list.\n const oldList = this._notifications$.getValue();\n\n // Check which mode is activated.\n let newList: Notification[];\n switch (this._defaultMode) {\n case 'append':\n newList = [...oldList, notification];\n break;\n case 'prepend':\n default:\n newList = [notification, ...oldList];\n }\n\n // Push the new notifications.\n this._notifications$.next(newList);\n\n // Return the notification for further use.\n return notification;\n }\n\n private pull(notification: Notification) {\n // Get the current list.\n const newList = this._notifications$\n .getValue()\n .filter(item => item.id !== notification.id);\n\n // Push a new list.\n this._notifications$.next(newList);\n }\n\n private compose(notification: Notification) {\n // Attach a random id to the notification.\n notification.id = Math.random().toString(36).substring(2, 12);\n\n // Set all properties.\n notification.type = this.getProperty(notification.type, NotificationType.Custom);\n notification.content = this.getProperty(notification.content, null);\n notification.data = this.getProperty(notification.data, {});\n notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);\n notification.localize = this.getProperty(notification.localize, this._defaultLocalize);\n notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);\n\n // Dismiss text localization.\n const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);\n notification.dismissText = this._defaultLocalize && this._localize\n ? this._localize.translate(dismissText)\n : dismissText;\n\n // Return the composed notification.\n return notification;\n }\n\n private createElement() {\n const environmentInjector = createEnvironmentInjector([\n {\n provide: NotificationsData,\n useValue: {\n data: this._notifications$.pipe(share()),\n dismissText: this._defaultDismissText,\n position: this._defaultPosition\n }\n }\n ], this._environmentInjector);\n\n // Create the component.\n this._ref = createComponent(BbNotificationsList, {environmentInjector});\n\n // Detect the changes.\n this._ref.changeDetectorRef.detectChanges();\n\n // Attach the component's view to the application\n // so that the change detection will run properly.\n this._applicationRef.attachView(this._ref.hostView);\n\n // If the platform is not a browser return.\n if (!this._platform.isBrowser) {\n return;\n }\n\n try {\n // Append the element to the DOM.\n document.body.appendChild(this._ref.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n }\n\n private getProperty = (property: any, defaultValue: any) => {\n return typeof property === 'undefined'\n ? defaultValue\n : property;\n };\n\n}\n","import {BbNotificationsList} from './notifications-list/notifications-list.component';\nimport {BbNotificationsItem} from './notifications-item/notifications-item.component';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {NotificationsConfig} from './notifications.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {Notifications} from './notifications.service';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n imports: [CommonModule, LocalizeModule],\n declarations: [BbNotificationsList, BbNotificationsItem]\n})\nexport class NotificationsModule {\n\n static forRoot(config?: NotificationsConfig): ModuleWithProviders<NotificationsModule> {\n return {\n ngModule: NotificationsModule,\n providers: [\n {provide: NotificationsConfig, useValue: config},\n Notifications\n ]\n };\n }\n\n}\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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"}
|
|
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.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';\nimport {Observable} from 'rxjs';\n\nexport interface Notification {\n content: string | TemplateRef<any>;\n\n id?: string;\n\n timeout?: number;\n localize?: boolean;\n dismiss?: boolean;\n dismissText?: string;\n data?: { [key: string]: any };\n type?: NotificationType;\n actions?: NotificationAction[];\n\n color?: string;\n backgroundColor?: string;\n\n destroy?: () => void;\n}\n\nexport interface NotificationAction {\n title: string;\n callback?: () => any;\n type?: 'default' | 'cancel';\n}\n\nexport enum NotificationType {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Info = 'info',\n Custom = 'custom'\n}\n\nexport class NotificationsConfig {\n mode?: 'append' | 'prepend';\n position?: NotificationsPosition;\n timeout?: number;\n dismiss?: boolean;\n localize?: boolean;\n dismissText?: string;\n}\n\nexport enum NotificationsPosition {\n TopRight = 'flex-start|flex-end',\n BottomRight = 'flex-end|flex-end',\n TopLeft = 'flex-start|flex-start',\n BottomLeft = 'flex-end|flex-start'\n}\n\nexport class NotificationsData {\n data: Observable<Notification[]>;\n dismissText: string;\n position: NotificationsPosition;\n}\n","import {animate, group, query, stagger, style, transition, trigger} from '@angular/animations';\n\nconst s = '250ms cubic-bezier(0, 0, .2, 1)';\nconst l = '400ms cubic-bezier(0, 0, .2, 1)';\n\nexport const notificationAnimation = trigger('notificationListAnimation', [\n transition('* => *', [\n query(':enter', group([\n // 1. Set the initial state.\n style({height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'}),\n // 2. Start the animation to show the item.\n stagger(0, [\n animate(s, style({height: '*'})),\n animate(l, style({opacity: 1, transform: 'translateX(0) scale(0.95)'})),\n animate(s, style({transform: 'translateX(0) scale(1)'}))\n ])\n ]), {optional: true}),\n\n query(':leave', group([\n // 1. Set the initial state.\n style({height: '*', opacity: 1, transform: 'translateX(0) scale(1)'}),\n // 2. Start the animation to hide the item.\n stagger(0, [\n animate(s, style({transform: 'translateX(0) scale(0.95)'})),\n animate(l, style({opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'})),\n animate(s, style({height: 0}))\n ])\n ]), {optional: true})\n ])\n]);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Notification, NotificationAction} from '../notifications.interfaces';\nimport {Platform} from '@angular/cdk/platform';\n\n@Component({\n selector: 'bb-notifications-item',\n templateUrl: './notifications-item.component.html',\n styleUrls: ['./notifications-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'role': 'alert'\n }\n})\nexport class BbNotificationsItem implements OnInit, OnDestroy {\n\n // Inputs.\n @Input() notification: Notification;\n @Input() dismissButtonText: string | null;\n\n // Elements.\n @ViewChild('progress') progressElementRef: ElementRef;\n\n // Data.\n private _progress = 0;\n private _count = 0;\n\n // Helper variables.\n private _steps: number;\n private _speed: number;\n private _timer: number;\n private _startTime: number;\n private _difference: number;\n\n // Data.\n private readonly _radius = 19;\n private readonly _circumference = this._radius * 2 * Math.PI;\n\n @HostBinding('class') get getClass() {\n return `bb-notifications-item ${this.notification.type}`;\n }\n\n constructor(private _zone: NgZone,\n private _platform: Platform,\n private _changeDetection: ChangeDetectorRef) {\n }\n\n get progressStrokeArray() {\n const value = Math.floor(this._circumference);\n return `${value}, ${value}`;\n }\n\n get progressStrokeOffset() {\n return Math.floor(this._circumference - this._progress / 100 * this._circumference);\n }\n\n get isContentString() {\n return typeof this.notification.content === 'string';\n }\n\n ngOnInit() {\n // Check if the notification timeout is not 0 and the platform is a browser.\n if (this.notification.timeout <= 0 || !this._platform.isBrowser) {\n this.notification.dismiss = true;\n return;\n }\n\n // Start the timeout.\n this.startTimeout();\n }\n\n ngOnDestroy() {\n // Clear the timeout if it was set.\n this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);\n }\n\n callActionAndDestroy = (notification: Notification, action: NotificationAction) => {\n // Perform the callback (if it exists).\n action && action.callback && action.callback();\n\n // Call the destroy method (if it exists).\n notification && notification.destroy && notification.destroy();\n };\n\n private startTimeout() {\n // Calculate the steps of the timeout.\n this._steps = this.notification.timeout / 10;\n\n // Calculate the speed of the timeout.\n this._speed = this.notification.timeout / this._steps;\n\n // Get the start time.\n this._startTime = Date.now();\n\n // Set a new timer outside of Angular.\n this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));\n }\n\n private instance = () => {\n // Calculate the difference.\n this._difference = (Date.now() - this._startTime) - (this._count * this._speed);\n\n // Add up the count.\n if (this._count++ === this._steps) {\n this.notification.destroy();\n }\n\n // Add the steps to the progress.\n this._progress += 100 / this._steps;\n\n // Set a new timer.\n this._timer = this.setTimeout(this.instance, this._speed - this._difference);\n\n // Run a new change detection cycle.\n this._zone.run(() => this._changeDetection.detectChanges());\n };\n\n private setTimeout = (method: () => void, timeout: number) => {\n // Check if the window and method exist.\n if (!window || !window.setTimeout) {\n return null;\n }\n\n return window.setTimeout(method, timeout);\n };\n\n}\n","<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\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\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\n","import {Notification, NotificationsData, NotificationsPosition} from '../notifications.interfaces';\nimport {ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation} from '@angular/core';\nimport {notificationAnimation} from '../notifications.animations';\n\n@Component({\n selector: 'bb-notifications-list',\n templateUrl: './notifications-list.component.html',\n styleUrls: ['./notifications-list.component.scss'],\n animations: [notificationAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'class': 'bb-notifications-list',\n 'role': 'list'\n }\n})\nexport class BbNotificationsList {\n\n // Data.\n position: NotificationsPosition | null = null;\n\n // Track by function.\n trackByFn = (_, item: Notification) => item?.id;\n\n constructor(public data: NotificationsData) {\n }\n\n @HostBinding('style.justify-content')\n get horizontalPosition() {\n return this.location.horizontal;\n }\n\n @HostBinding('style.align-items')\n get verticalPosition() {\n return this.location.vertical;\n }\n\n get animation() {\n const to = this.horizontalPosition === 'flex-start'\n ? -50\n : 50;\n\n return {to};\n }\n\n private get location() {\n const [y, x] = (this.data.position ?? '').split('|');\n\n return {vertical: y ?? null, horizontal: x ?? null};\n }\n\n}\n","<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n","import {Notification, NotificationAction, NotificationsPosition, NotificationsConfig, NotificationType, NotificationsData} from './notifications.interfaces';\nimport {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, Injectable, Optional, TemplateRef} from '@angular/core';\nimport {BbNotificationsList} from './notifications-list/notifications-list.component';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {Platform} from '@angular/cdk/platform';\nimport {BehaviorSubject} from 'rxjs';\nimport {share} from 'rxjs/operators';\n\n@Injectable()\nexport class Notifications {\n\n // Reference to the list.\n private _ref: ComponentRef<BbNotificationsList>;\n\n // The default settings for the notifications.\n private readonly _defaultMode: 'prepend' | 'append';\n private readonly _defaultTimeout: number;\n private readonly _defaultLocalize: boolean;\n private readonly _defaultDismiss: boolean;\n private readonly _defaultDismissText: string;\n private readonly _defaultPosition: NotificationsPosition;\n\n // The data containing the notifications.\n private _notifications$ = new BehaviorSubject<Notification[]>([]);\n\n constructor(private _platform: Platform,\n private _applicationRef: ApplicationRef,\n private _environmentInjector: EnvironmentInjector,\n @Optional() private _localize?: Localize,\n @Optional() private _config?: NotificationsConfig) {\n // Get the config.\n const config = this._config || {};\n\n // Set the config.\n this._defaultMode = this.getProperty(config.mode, 'prepend');\n this._defaultTimeout = this.getProperty(config.timeout, 8000);\n this._defaultLocalize = this.getProperty(config.localize, false);\n this._defaultDismiss = this.getProperty(config.dismiss, true);\n this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');\n this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);\n\n // Create the element that holds all notifications.\n this.createElement();\n }\n\n success(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Success});\n }\n\n error(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Error});\n }\n\n warn(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Warning});\n }\n\n info(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Info});\n }\n\n create(notification: Notification) {\n // Compose a new notification item.\n const item = this.compose(notification);\n\n // Add the destroy function to the notification.\n item.destroy = () => this.pull(item);\n\n // Add the notification to the list\n // and return the item.\n return this.push(item);\n }\n\n private push(notification: Notification) {\n // Get the current list.\n const oldList = this._notifications$.getValue();\n\n // Check which mode is activated.\n let newList: Notification[];\n switch (this._defaultMode) {\n case 'append':\n newList = [...oldList, notification];\n break;\n case 'prepend':\n default:\n newList = [notification, ...oldList];\n }\n\n // Push the new notifications.\n this._notifications$.next(newList);\n\n // Return the notification for further use.\n return notification;\n }\n\n private pull(notification: Notification) {\n // Get the current list.\n const newList = this._notifications$\n .getValue()\n .filter(item => item.id !== notification.id);\n\n // Push a new list.\n this._notifications$.next(newList);\n }\n\n private compose(notification: Notification) {\n // Attach a random id to the notification.\n notification.id = Math.random().toString(36).substring(2, 12);\n\n // Set all properties.\n notification.type = this.getProperty(notification.type, NotificationType.Custom);\n notification.content = this.getProperty(notification.content, null);\n notification.data = this.getProperty(notification.data, {});\n notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);\n notification.localize = this.getProperty(notification.localize, this._defaultLocalize);\n notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);\n\n // Dismiss text localization.\n const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);\n notification.dismissText = this._defaultLocalize && this._localize\n ? this._localize.translate(dismissText)\n : dismissText;\n\n // Return the composed notification.\n return notification;\n }\n\n private createElement() {\n const environmentInjector = createEnvironmentInjector([\n {\n provide: NotificationsData,\n useValue: {\n data: this._notifications$.pipe(share()),\n dismissText: this._defaultDismissText,\n position: this._defaultPosition\n }\n }\n ], this._environmentInjector);\n\n // Create the component.\n this._ref = createComponent(BbNotificationsList, {environmentInjector});\n\n // Detect the changes.\n this._ref.changeDetectorRef.detectChanges();\n\n // Attach the component's view to the application\n // so that the change detection will run properly.\n this._applicationRef.attachView(this._ref.hostView);\n\n // If the platform is not a browser return.\n if (!this._platform.isBrowser) {\n return;\n }\n\n try {\n // Append the element to the DOM.\n document.body.appendChild(this._ref.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n }\n\n private getProperty = (property: any, defaultValue: any) => {\n return typeof property === 'undefined'\n ? defaultValue\n : property;\n };\n\n}\n","import {BbNotificationsList} from './notifications-list/notifications-list.component';\nimport {BbNotificationsItem} from './notifications-item/notifications-item.component';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {NotificationsConfig} from './notifications.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {Notifications} from './notifications.service';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n imports: [CommonModule, LocalizeModule],\n declarations: [BbNotificationsList, BbNotificationsItem]\n})\nexport class NotificationsModule {\n\n static forRoot(config?: NotificationsConfig): ModuleWithProviders<NotificationsModule> {\n return {\n ngModule: NotificationsModule,\n providers: [\n {provide: NotificationsConfig, useValue: config},\n Notifications\n ]\n };\n }\n\n}\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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"}
|